{"version":3,"file":"app.db1ef74afcfe7f462e62.js","mappings":"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,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,GAAIf,IAAK,IAC3B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,GAAIf,IAAK,IAC3B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,GAAIf,IAAK,IAC3B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,IAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAAK,EAAGf,IAAK,GAC1B,CAACmkc,KAAM,KAAMpjc,IAA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AAK4rG,aAAe,GACpB5rG,KAAKm1N,cAAgB,EACtB,EAGA,GADC,EAAA/+J,sCAID,GADC,EAAAA,yCAID,GADC,EAAAA,gDAID,GADC,EAAAA,wCAID,GADC,EAAAA,0CAID,GADC,EAAAA,4CAID,GADC,EAAAA,8CAID,GADC,EAAAA,oDAID,GADC,EAAAA,wDAID,GADC,EAAAA,8CAID,GADC,EAAAA,8CAID,GADC,EAAAA,8CAIE,GADF,EAAAA,4CAIE,GADC,EAAAA,6CAIJ,GADC,EAAAA,+CAID,GADC,EAAAA,gDAID,GADC,EAAAA,8CAID,GADC,EAAAA,gDAID,GADC,EAAAA,8CAID,GADC,EAAAA,oDAID,GADC,EAAAA,sDAID,GADC,EAAAA,gDAID,GADC,EAAAA,mDAID,IADC,IAAAtW,eAAcm2d,yCAIf,GADC,EAAA7/c,8CAID,GADC,EAAAA,mDAID,GADC,EAAAA,6CAID,GADC,EAAAA,gDAID,GADC,EAAAA,kDAIE,GADC,EAAAA,wCAIJ,GADI,EAAAA,wCAID,GADC,EAAAA,+CAIJ,GADI,EAAAA,iDAIJ,GADI,EAAAA,uDAID,GADC,EAAAA,oDAIJ,GADI,EAAAA,6CAIJ,GADI,EAAAA,2DAIJ,GADI,EAAAA,8CAID,GADC,EAAAA,6CAID,GADC,EAAAA,6CAIJ,GADC,EAAAA,iDAID,GADC,EAAAA,uXC5IK,MAAMggd,GAET,GADC,EAAAhgd,sCAID,GADC,EAAAA,2CAID,GADC,EAAAA,6CAID,GADC,EAAAA,iDAID,GADC,EAAAA,iDAID,GADC,EAAAA,mDAID,GADC,EAAAA,iDAID,GADC,EAAAA,6XCnBE,MAAMigd,GAET,GADC,EAAAjgd,sCAID,GADC,EAAAA,wCAID,GADC,EAAAA,kDAID,GADC,EAAAA,0CAID,GADC,EAAAA,4CAID,GADC,EAAAA,gDAID,GADC,EAAAA,kDAID,GADC,EAAAA,yCAIE,MAAMkgd,GAET,GADC,EAAAlgd,+CAID,GADC,EAAAA,4CAID,GADC,EAAAA,2CAID,GADC,EAAAA,8CAID,GADC,EAAAA,4DAID,GADC,EAAAA,uDAID,GADC,E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","sources":["webpack://spheeres/./js/Auth/UI/AuthForm/Templates/AuthForm.html","webpack://spheeres/./js/Auth/UI/AuthForm/Templates/LanguageSelector.html","webpack://spheeres/./js/Auth/UI/LicenseExpiredSoonForm/Templates/LicenseExpiredSoonForm.html","webpack://spheeres/./js/Auth/UI/LicenseForm/Templates/LicenseForm.html","webpack://spheeres/./js/Auth/UI/PasswordExpiredForm/Templates/PasswordExpiredForm.html","webpack://spheeres/./js/Auth/UI/PasswordResetForm/Templates/PasswordResetForm.html","webpack://spheeres/./js/Auth/UI/TotpPasswordForm/Templates/TotpPasswordForm.html","webpack://spheeres/./js/Auth/UI/TwoFaConfigurationForm/Templates/TwoFaConfigurationForm.html","webpack://spheeres/./js/Auth/UI/UnreportedTimeForm/Templates/UnreportedTimeForm.html","webpack://spheeres/./js/Core/Components/BarcodeScanner/Templates/BarcodeScanner.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Templates/PriceList.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Templates/ProductPart.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Templates/Template.html","webpack://spheeres/./js/Core/Components/Dialogs/ConfirmationDialog/Templates/View.html","webpack://spheeres/./js/Core/Components/Paginator/Templates/NextPrevPaginator.html","webpack://spheeres/./js/Core/Components/Paginator/Templates/Paginator.html","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Templates/LifeStatuses.html","webpack://spheeres/./js/Core/Controls/FunctionDesigner/Templates/CodeEditor.html","webpack://spheeres/./js/Core/Controls/MultiSelect/Templates/DropDownContent.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate.html","webpack://spheeres/./js/Core/Icon/Templates/Icon.html","webpack://spheeres/./js/Core/Icon/Templates/PortletIcon.html","webpack://spheeres/./js/Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationCell.html","webpack://spheeres/./js/Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationGrid.html","webpack://spheeres/./js/Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationGridPopUp.html","webpack://spheeres/./js/Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationRow.html","webpack://spheeres/./js/Core/Screens/SearchScreen/SearchResultGrid/Templates/SearchResultGrid.html","webpack://spheeres/./js/Core/Screens/SearchScreen/Templates/IconTemplate.html","webpack://spheeres/./js/Core/Screens/SearchScreen/Templates/SearchScreen.html","webpack://spheeres/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://spheeres/./js/Core/X-EditableExtensions/BootstrapDateTime.js","webpack://spheeres/./js/Core/X-EditableExtensions/BootstrapTime.js","webpack://spheeres/./js/Core/X-EditableExtensions/Memo.js","webpack://spheeres/./js/Core/X-EditableExtensions/Percentage.js","webpack://spheeres/./js/Core/X-EditableExtensions/TouchSpin.js","webpack://spheeres/./js/Core/X-EditableExtensions/TouchSpinDecimal.js","webpack://spheeres/./js/Metronic/bootstrap-switch.min.js","webpack://spheeres/./js/Metronic/bootstrap.min.js","webpack://spheeres/./js/Metronic/demo.js","webpack://spheeres/./js/Metronic/dropzone.js","webpack://spheeres/./js/Metronic/jquery.backstretch.min.js","webpack://spheeres/./js/Metronic/jquery.blockui.min.js","webpack://spheeres/./js/Metronic/jquery.cokie.min.js","webpack://spheeres/./js/Metronic/jquery.slimscroll.js","webpack://spheeres/./js/Metronic/jquery.uniform.min.js","webpack://spheeres/./js/Metronic/layout.js","webpack://spheeres/./js/Metronic/metronic.js","webpack://spheeres/./js/Metronic/quick-sidebar.js","webpack://spheeres/./js/Metronic/touch-spin.js","webpack://spheeres/./js/AdminDashboard/KnockoutExtensions/PrismExtension.ts","webpack://spheeres/./js/Index.ts","webpack://spheeres/./js/MenuManager/SecurityProfileMenu/Models/SecurityProfileModel.ts","webpack://spheeres/./js/MenuManager/SecurityProfileMenu/SecurityProfileMenu.ts","webpack://spheeres/./js/MenuManager/SecurityProfileMenu/Templates/SecurityProfileMenu.html","webpack://spheeres/./js/MenuManager/LanguageMenu/Models/LanguageModel.ts","webpack://spheeres/./js/MenuManager/LanguageMenu/Models/SwitchLanguageResult.ts","webpack://spheeres/./js/MenuManager/LanguageMenu/Stores/LanguageSwitcherStore.ts","webpack://spheeres/./js/MenuManager/LanguageMenu/Models/SwitchLanguageModel.ts","webpack://spheeres/./js/MenuManager/LanguageMenu/LanguageMenu.ts","webpack://spheeres/./js/MenuManager/LanguageMenu/Templates/Template.html","webpack://spheeres/./js/MenuManager/MainMenuButton/MainMenuButton.ts","webpack://spheeres/./js/MenuManager/MainMenuButton/Templates/Template.html","webpack://spheeres/./js/MenuManager/MainMenuButtonResponsive/MainMenuButtonResponsive.ts","webpack://spheeres/./js/MenuManager/MainMenuButtonResponsive/Templates/Template.html","webpack://spheeres/./js/MenuManager/Header/Header.ts","webpack://spheeres/./js/MenuManager/Header/Templates/Header.html","webpack://spheeres/./js/MenuManager/TimersMenu/TimersMenu.ts","webpack://spheeres/./js/MenuManager/TimersMenu/Templates/Template.html","webpack://spheeres/./js/App.ts","webpack://spheeres/./js/Auth/AuthManager.ts","webpack://spheeres/./js/Auth/Enums/AuthResults.ts","webpack://spheeres/./js/Auth/Enums/Events.ts","webpack://spheeres/./js/Auth/Enums/FormTitles.ts","webpack://spheeres/./js/Auth/Models/RequestResetPasswordModel.ts","webpack://spheeres/./js/Auth/Models/ResetPasswordModel.ts","webpack://spheeres/./js/Auth/Models/SavePasswordLessCredentialsDto.ts","webpack://spheeres/./js/Auth/Models/SignInModel.ts","webpack://spheeres/./js/Auth/Models/SignInResultModel.ts","webpack://spheeres/./js/Auth/Models/UpdatePasswordModel.ts","webpack://spheeres/./js/Auth/Models/UpdateTotpSecretModel.ts","webpack://spheeres/./js/Auth/Stores/AuthStore.ts","webpack://spheeres/./js/Auth/Stores/WebAuthnStore.ts","webpack://spheeres/./js/Auth/UI/AuthForm/AuthForm.ts","webpack://spheeres/./js/Auth/UI/AuthForm/LanguageSelector.ts","webpack://spheeres/./js/Auth/UI/AuthForm/Models/AuthFormModel.ts","webpack://spheeres/./js/Auth/UI/AuthForm/Models/LanguageModel.ts","webpack://spheeres/./js/Auth/UI/LicenseExpiredSoonForm/LicenseExpiredSoonForm.ts","webpack://spheeres/./js/Auth/UI/LicenseForm/LicenseForm.ts","webpack://spheeres/./js/Auth/UI/PasswordExpiredForm/Model/PasswordExpiredModel.ts","webpack://spheeres/./js/Auth/UI/PasswordExpiredForm/PasswordExpiredForm.ts","webpack://spheeres/./js/Auth/UI/PasswordLessConfigurationForm.ts","webpack://spheeres/./js/Auth/UI/PasswordResetForm/Model/PasswordResetModel.ts","webpack://spheeres/./js/Auth/UI/PasswordResetForm/PasswordResetForm.ts","webpack://spheeres/./js/Auth/UI/TotpPasswordForm/TotpPasswordForm.ts","webpack://spheeres/./js/Auth/UI/TwoFaConfigurationForm/TwoFaConfigurationForm.ts","webpack://spheeres/./js/Auth/UI/UnreportedTimeForm/Model/UnreportedModel.ts","webpack://spheeres/./js/Auth/UI/UnreportedTimeForm/UnreportedTimeForm.ts","webpack://spheeres/./js/Core/Common/BinaryUtils.ts","webpack://spheeres/./js/Core/Common/BlockUi.ts","webpack://spheeres/./js/Core/Common/Brand.ts","webpack://spheeres/./js/Core/Common/CookieManager.ts","webpack://spheeres/./js/Core/Common/Counter.ts","webpack://spheeres/./js/Core/Common/Decorators/EnumerableDecorator.ts","webpack://spheeres/./js/Core/Common/Enums/FeatureTypes.ts","webpack://spheeres/./js/Core/Common/Enums/FieldFlags.ts","webpack://spheeres/./js/Core/Common/Enums/LifeStatusGroups.ts","webpack://spheeres/./js/Core/Common/Enums/LocalStorageItems.ts","webpack://spheeres/./js/Core/Common/Enums/ModelState.ts","webpack://spheeres/./js/Core/Common/Enums/NotificationTypes.ts","webpack://spheeres/./js/Core/Common/Enums/RecordSecurityRights.ts","webpack://spheeres/./js/Core/Common/Enums/ScreenTypes.ts","webpack://spheeres/./js/Core/Common/Enums/ServerRequestErrors.ts","webpack://spheeres/./js/Core/Common/Event.ts","webpack://spheeres/./js/Core/Common/EventBus/EventHandler.ts","webpack://spheeres/./js/Core/Common/EventBus/EventBus.ts","webpack://spheeres/./js/Core/Common/EventBus/EventBusConsumer.ts","webpack://spheeres/./js/Core/Common/EventTracker.ts","webpack://spheeres/./js/Core/Common/FieldFormat.ts","webpack://spheeres/./js/Core/Common/FlagResolver.ts","webpack://spheeres/./js/Core/Common/Guid.ts","webpack://spheeres/./js/Core/Common/Image.ts","webpack://spheeres/./js/Core/Common/MobileChecker.ts","webpack://spheeres/./js/Core/Common/Modal.ts","webpack://spheeres/./js/Core/Common/NetworkMonitor.ts","webpack://spheeres/./js/Core/Common/Notifier.ts","webpack://spheeres/./js/Core/Common/Promise.ts","webpack://spheeres/./js/Core/Common/RepositionModalObserver.ts","webpack://spheeres/./js/Core/Common/Request.ts","webpack://spheeres/./js/Core/Common/ResizeObserver.ts","webpack://spheeres/./js/Core/Common/Security/SecurityProfile/Stores/SecurityProfileStore.ts","webpack://spheeres/./js/Core/Common/Stores/RecordStore.ts","webpack://spheeres/./js/Core/Common/Stores/TableStore.ts","webpack://spheeres/./js/Core/Common/Themes/CustomThemeDescriptor.ts","webpack://spheeres/./js/Core/Common/Themes/CustomThemeSetting.ts","webpack://spheeres/./js/Core/Common/Themes/MainThemeDescriptor.ts","webpack://spheeres/./js/Core/Common/Themes/UISettings.ts","webpack://spheeres/./js/Core/Common/Timer.ts","webpack://spheeres/./js/Core/Common/Tooltip.ts","webpack://spheeres/./js/Core/Common/TruncateFileName.ts","webpack://spheeres/./js/Core/Common/Url.ts","webpack://spheeres/./js/Core/Common/ZIndexManager.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/Models/Dto/ActionsCheckListsDto.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/Models/Dto/CurrentLifeStatusDto.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/Stores/ActionCheckListStore.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/Models/View/ActionsCheckListsViewModel.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/Models/View/ActionCheckListViewModel.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/CheckItems/BaseCheckItem.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/CheckItems/Text/TextCheckItem.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/CheckItems/Text/Templates/Template.html","webpack://spheeres/./js/Core/Components/ActionCheckList/CheckItems/Integer/IntegerCheckItem.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/CheckItems/Integer/Templates/Template.html","webpack://spheeres/./js/Core/Components/ActionCheckList/CheckItems/YesNo/YesNoCheckItem.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/CheckItems/YesNo/Templates/Template.html","webpack://spheeres/./js/Core/Components/ActionCheckList/CheckItems/Lookup/Stores/LookupCheckItemStore.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/CheckItems/Lookup/LookupCheckItem.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/CheckItems/Lookup/Templates/Template.html","webpack://spheeres/./js/Core/Components/ActionCheckList/CheckItems/CheckItemFactory.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/Mappings/ActionCheckListMappingProfile.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/Models/View/CurrentLifeStatusViewModel.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/Mappings/CurrentLifeStatusMappingProfile.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/Mappings/ActionsCheckListsMappingProfile.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/ActionCheckList.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/Templates/Template.html","webpack://spheeres/./js/Core/Components/ActionCheckList/Templates/KanbanModeTemplate.html","webpack://spheeres/./js/Core/Components/BarcodeScanner/BarcodeScanner.ts","webpack://spheeres/./js/Core/Components/ColorSelector/ColorConverter.ts","webpack://spheeres/./js/Core/Components/ColorSelector/ColorDescription.ts","webpack://spheeres/./js/Core/Components/ColorSelector/ColorModels/ColorModel.ts","webpack://spheeres/./js/Core/Components/ColorSelector/ColorModels/Hex/HexColorModel.ts","webpack://spheeres/./js/Core/Components/ColorSelector/ColorModels/Hex/Template.html","webpack://spheeres/./js/Core/Components/ColorSelector/ColorModels/Palette/ColorPaletteItem.ts","webpack://spheeres/./js/Core/Components/ColorSelector/ColorModels/Palette/Enums/ColorPalettes.ts","webpack://spheeres/./js/Core/Components/ColorSelector/ColorModels/Palette/PaletteColorModel.ts","webpack://spheeres/./js/Core/Components/ColorSelector/ColorModels/Palette/Templates/Palette.html","webpack://spheeres/./js/Core/Components/ColorSelector/ColorModels/Palette/Templates/Template.html","webpack://spheeres/./js/Core/Components/ColorSelector/Templates/Template.html","webpack://spheeres/./js/Core/Components/ColorSelector/ColorSelector.ts","webpack://spheeres/./js/Core/Components/ColorSelector/Templates/ColumnTemplate.html","webpack://spheeres/./js/Core/Components/ColorSelector/Templates/DropdownTemplate.html","webpack://spheeres/./js/Core/Components/Controls/DocumentManager/DocumentViewer/DocumentViewer.ts","webpack://spheeres/./js/Core/Components/Controls/DocumentManager/DocumentViewer/Templates/DocumentViewer.html","webpack://spheeres/./js/Core/Components/Controls/DocumentManager/DocumentViewer/FileExtentions.ts","webpack://spheeres/./js/Core/Components/Controls/DocumentManager/DocumentManager.ts","webpack://spheeres/./js/Core/Common/Utils.ts","webpack://spheeres/./js/Core/Components/Controls/DocumentManager/Templates/DocumentManager.html","webpack://spheeres/./js/Core/Components/Controls/DocumentManager/Events.ts","webpack://spheeres/./js/Core/Components/Controls/DocumentManager/Models/DestinationMailModel.ts","webpack://spheeres/./js/Core/Components/Controls/DocumentManager/Models/ParentAssemblyModel.ts","webpack://spheeres/./js/Core/Components/Controls/DocumentManager/Models/PreviewDocumentModel.ts","webpack://spheeres/./js/Core/Components/Controls/DocumentManager/Stores/DocumentManagerStore.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Components/ProductImageViewer/Enums/ImageTableTypes.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Components/ProductImageViewer/ProductImageViewer.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Components/ProductImageViewer/Templates/ProductImageViewer.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/ConfiguratorLevels.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Models/ProductDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/ConfigurationPageStore.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Models/ConfigurationPageVariable.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/ConfigurationPageVariablesStore.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/BaseProductGroup.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/BreadCrumbsItem.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Templates/RootGroup.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Models/ConversionDropdownView.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Params/SearchByConversionDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Templates/ConversionDropdown.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/ConversionDropdown.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Templates/ConversionDropdownView.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/RootGroup.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/ProductGroup.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Templates/ProductGroup.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Product.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Templates/Product.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/ProductPrice.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/PcfGroup.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/ProductPartDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/PropertyValueDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/ProductPropertyGroupDescription.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/ProductPropertyDescription.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/ProductCustomFieldDescription.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/CustomFieldValueDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CachedProduct.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Mappings/ConfigurationPageMappings.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/SelectedProduct.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/SelectedProducts.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CachedProducts.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/ViewModel.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/ExtraGroup.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Templates/ExtraGroup.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/CreateConfigurationDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/UpdateConfigurationDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/OrderDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/ProductDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/AlteredProductDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Modals/InexConfirmationPopup/InexConfirmationPopup.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Modals/InexConfirmationPopup/Templates/View.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/InexItem.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Templates/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/UpdateConfigurationByLevelsDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/ConfigurationLevelDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CachedLevel.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/UndefinedGroup.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Templates/UndefinedGroup.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/ConfigurationPage.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Enums/PropertyEvaluationContext.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Events/ConfigurationPageEvents.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/AlternativePriceModel.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/BaseProduct.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/ConfigurationLEvel.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/ConfigurationRole.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFieldValue.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/CustomFieldControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Lookup/CustomLookupOptionModel.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Lookup/CustomLookupControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Lookup/Templates/CustomLookupControl.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Lookup/Templates/Dropdown.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Lookup/Templates/Search.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/CustomFieldsGroup.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Integer/CustomIntegerControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Integer/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Decimal/CustomDecimalControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Decimal/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/DateTime/CustomDateTimeControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/DateTime/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Checkbox/CustomCheckboxControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Checkbox/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Text/CustomTextControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Text/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Factory/ProductCustomFieldControlFactory.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/MainProductPriceGroup.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/PriceGroup.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/PriceItem.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/PriceList.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/ProductPart.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Image/Stores/ImagePropertyControlStore.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Lookup/Stores/LookupPropertyControlStore.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Lookup/Models/LookupModel.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Lookup/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Lookup/LookupPropertyControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/PropertyControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Text/TextPropertyControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Text/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Decimal/DecimalPropertyControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Decimal/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Checkbox/CheckboxPropertyControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Checkbox/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/ColorPropertyControl/Models/ColorModel.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/ColorPropertyControl/Stores/ColorPropertyControlStore.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Modals/ColorPalettePopup/ColorPalettePopup.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Modals/ColorPalettePopup/Templates/ColorPalettePopupView.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/ColorPropertyControl/ColorPropertyControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/ColorPropertyControl/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Integer/IntegerPropertyControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Integer/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Image/Models/ImageModel.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Image/ImagePropertyControl.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Image/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Factory/ProductPropertyControlFactory.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/ProductPropertyGroup.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/PropertyEvaluationExpression.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/PropertyValue.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/GetActionDependsOnValuesDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Components/BackButton/BackButton.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Components/BackButton/Templates/BackButton.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/ProductConfiguratorPage.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/RootProducts/Events/RootProductsPageEvents.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/RootProducts/Stores/RootProductsPageStore.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/RootProducts/Models/Product.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/RootProducts/Templates/Product.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/RootProducts/Mappings/RootProductsPageMappings.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/RootProducts/Models/ViewModel.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/RootProducts/RootProductsPage.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/RootProducts/Templates/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Events/StartPageEvents.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/Models/ConfigurationDescription.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/Models/ProductResponse.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/StartPageStore.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Components/ConfigurationImageGallery/Models/UpdateAnnotationsDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Components/ConfigurationImageGallery/ConfigurationImageGallery.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Components/ConfigurationImageGallery/Templates/ConfigurationImageGallery.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Models/Product.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Templates/Product.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Mappings/StartPageMappings.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Models/ViewModel.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/Params/SaveConfigurationDataDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/Params/SaveAllConfigurationDataDto.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/StartPage.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Templates/Template.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Pages/StartPage/Templates/NewProduct.html","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/ProductConfigurator.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Stores/NavigationStack/NavigationItem.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Stores/NavigationStack/NavigationStack.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Stores/NavigationStack/NavigationStackEvents.ts","webpack://spheeres/./js/Core/Components/Controls/ProductConfigurator/Stores/ProductConfiguratorStore.ts","webpack://spheeres/./js/Core/Components/CustomFunctions/Facades/ControlFacade.ts","webpack://spheeres/./js/Core/Components/CustomFunctions/Facades/GridFacade.ts","webpack://spheeres/./js/Core/Components/CustomFunctions/Facades/ScreenFacade.ts","webpack://spheeres/./js/Core/Components/CustomFunctions/FunctionBuilder.ts","webpack://spheeres/./js/Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog.ts","webpack://spheeres/./js/Core/Components/Dialogs/DecisionDialog/DecisionDialog.ts","webpack://spheeres/./js/Core/Components/Dialogs/DecisionDialog/Templates/View.html","webpack://spheeres/./js/Core/Components/Dialogs/DeletionModeDialog/DeletionModeDialog.ts","webpack://spheeres/./js/Core/Components/Dialogs/DeletionModeDialog/Templates/View.html","webpack://spheeres/./js/Core/Components/Dialogs/PromptDialog/PromptDialog.ts","webpack://spheeres/./js/Core/Components/Dialogs/PromptDialog/Templates/View.html","webpack://spheeres/./js/Core/Components/Dialogs/SelectDialog/SelectDialog.ts","webpack://spheeres/./js/Core/Components/Dialogs/SelectDialog/Templates/View.html","webpack://spheeres/./js/Core/Components/FileDownloader/FileDownloader.ts","webpack://spheeres/./js/Core/Components/FormatManager/FormatTemplates/SQLView.html","webpack://spheeres/./js/Core/Components/FormatManager/FormatTemplates/SocialLinkView.html","webpack://spheeres/./js/Core/Components/FormatManager/FormatTemplates/SkypeView.html","webpack://spheeres/./js/Core/Components/FormatManager/FormatTemplates/LinkedinView.html","webpack://spheeres/./js/Core/Components/FormatManager/FormatTemplates/MailView.html","webpack://spheeres/./js/Core/Components/FormatManager/FormatTemplates/UrlView.html","webpack://spheeres/./js/Core/Components/FormatManager/FormatTemplates/LocalUrlView.html","webpack://spheeres/./js/Core/Components/FormatManager/FormatManager.ts","webpack://spheeres/./js/Core/Components/FormatManager/Stores/FormatManagerStore.ts","webpack://spheeres/./js/Core/Components/JBoxDropdown/DropDown.ts","webpack://spheeres/./js/Core/Components/Locker/State/LockChain.ts","webpack://spheeres/./js/Core/Components/Locker/State/PulseDateTracker.ts","webpack://spheeres/./js/Core/Components/Locker/Store/Models/RegisteredLock.ts","webpack://spheeres/./js/Core/Components/Locker/Store/Models/RegisteredLocks.ts","webpack://spheeres/./js/Core/Components/Locker/Store/Models/ContinuedLock.ts","webpack://spheeres/./js/Core/Components/Locker/Store/LockStore.ts","webpack://spheeres/./js/Core/Components/Locker/Store/Models/NewLock.ts","webpack://spheeres/./js/Core/Components/Locker/Store/Models/NewLocks.ts","webpack://spheeres/./js/Core/Components/Locker/Store/Models/Lock.ts","webpack://spheeres/./js/Core/Components/Locker/Modals/ContinueConfirmation/ContinueLockConfirmation.ts","webpack://spheeres/./js/Core/Components/Locker/LockManager.ts","webpack://spheeres/./js/Core/Components/Paginator/Constants.ts","webpack://spheeres/./js/Core/Components/Paginator/Paginator.ts","webpack://spheeres/./js/Core/Components/PathRunner/Stores/PathRunnerStore.ts","webpack://spheeres/./js/Core/Components/PathRunner/Models/View/PathRunnerViewModel.ts","webpack://spheeres/./js/Core/Components/PathRunner/Templates/ItemNameTemplate.html","webpack://spheeres/./js/Core/Components/PathRunner/Models/View/PathRunnerNodeViewModel.ts","webpack://spheeres/./js/Core/Components/PathRunner/Mappings/PathRunnerNodeViewModelMapping.ts","webpack://spheeres/./js/Core/Components/PathRunner/Mappings/PathRunnerViewModelMapping.ts","webpack://spheeres/./js/Core/Components/PathRunner/PathRunnerUnit.ts","webpack://spheeres/./js/Core/Components/PathRunner/Templates/Template.html","webpack://spheeres/./js/Core/Components/PathRunner/Templates/ItemTemplate.html","webpack://spheeres/./js/Core/Components/PathRunner/Templates/SpecialScreenIconTemplate.html","webpack://spheeres/./js/Core/Components/PathRunner/PathRunner.ts","webpack://spheeres/./js/Core/Components/ProgressBar/Models/Response/FlowFolderMemosModel.ts","webpack://spheeres/./js/Core/Components/ProgressBar/Models/Response/FlowItemModel.ts","webpack://spheeres/./js/Core/Components/ProgressBar/Models/Response/FlowOperationModel.ts","webpack://spheeres/./js/Core/Components/ProgressBar/Models/Response/FlowFolderModel.ts","webpack://spheeres/./js/Core/Components/ProgressBar/Models/Response/ProgressBarInfoModel.ts","webpack://spheeres/./js/Core/Components/ProgressBar/Stores/FlowFolderStore.ts","webpack://spheeres/./js/Core/Components/QueryDropdowns/Templates/QueryDropdowns.html","webpack://spheeres/./js/Core/Components/QueryDropdowns/QueryDropdowns.ts","webpack://spheeres/./js/Core/Components/QueryDropdowns/Templates/ViewListDropdown.html","webpack://spheeres/./js/Core/Components/RecordLinker/Stores/RecordLinkerStore.ts","webpack://spheeres/./js/Core/Components/RecordLinker/RecordLinker.ts","webpack://spheeres/./js/Core/Components/ReportIssueModal/Models/SupportInfoModel.ts","webpack://spheeres/./js/Core/Components/ReportIssueModal/Stores/SupportStore.ts","webpack://spheeres/./js/Core/Components/ReportIssueModal/ReportIssueModal.ts","webpack://spheeres/./js/Core/Components/ReportIssueModal/Templates/ReportIssueModal.html","webpack://spheeres/./js/Core/Components/SignalR/SignalRNotificationManager.ts","webpack://spheeres/./js/Core/Components/TranslationFieldEditor/TranslationFieldEditor.ts","webpack://spheeres/./js/Core/Components/TranslationFieldEditor/TranslationEditorDropdownTemplate.html","webpack://spheeres/./js/Core/Components/TranslationFieldEditor/TranslationItem.ts","webpack://spheeres/./js/Core/Components/Translation/Locales.ts","webpack://spheeres/./js/Core/Components/Translation/Models/LanguageInfoModel.ts","webpack://spheeres/./js/Core/Components/Translation/Stores/TranslationStore/TranslationStore.ts","webpack://spheeres/./js/Core/Components/Translation/Models/LanguageModel.ts","webpack://spheeres/./js/Core/Components/Translation/TranslationManager.ts","webpack://spheeres/./js/Core/Components/Triggers/TriggerManager.ts","webpack://spheeres/./js/Core/Components/Triggers/Triggers.ts","webpack://spheeres/./js/Core/Components/Triggers/TriggerStore.ts","webpack://spheeres/./js/Core/Constant.ts","webpack://spheeres/./js/Core/Constants/AgendaTypes.ts","webpack://spheeres/./js/Core/Constants/ClusterModes.ts","webpack://spheeres/./js/Core/Constants/DateTimeFormats.ts","webpack://spheeres/./js/Core/Constants/FollowupModes.ts","webpack://spheeres/./js/Core/Constants/RecordSecurityWords.ts","webpack://spheeres/./js/Core/Constants/SecurityLevels.ts","webpack://spheeres/./js/Core/Constants/TableSecurityWords.ts","webpack://spheeres/./js/Core/Constants/TriggerActions.ts","webpack://spheeres/./js/Core/Constants/UserAllowance.ts","webpack://spheeres/./js/Core/Controls/Agenda/Stores/AgendaDataStore.ts","webpack://spheeres/./js/Core/GeneralProperties/Models/ConfigStructModel.ts","webpack://spheeres/./js/Core/GeneralProperties/GeneralProperties.ts","webpack://spheeres/./js/Core/Controls/BaseControl/BaseControlStore.ts","webpack://spheeres/./js/Core/Controls/BaseControl/Templates/PredefinedDesignWrapper.html","webpack://spheeres/./js/Core/Controls/BaseControl/BaseControl.ts","webpack://spheeres/./js/Core/Controls/BaseControl/Templates/DesignWrapper.html","webpack://spheeres/./js/Core/Controls/BaseControl/Templates/StaticDesignWrapper.html","webpack://spheeres/./js/Core/Controls/BaseControl/Templates/DataLoadTemplate.html","webpack://spheeres/./js/Core/Controls/BaseControl/Models/AttachedFieldModel.ts","webpack://spheeres/./js/Core/Controls/BaseControl/Models/ControlModel.ts","webpack://spheeres/./js/Core/Controls/BaseControl/Models/IconModel.ts","webpack://spheeres/./js/Core/Controls/BaseControl/Models/LanguageModel.ts","webpack://spheeres/./js/Core/Controls/BaseControl/Models/TranslationModel.ts","webpack://spheeres/./js/Core/Controls/BaseControl/Models/TriggerModel.ts","webpack://spheeres/./js/Core/Controls/BaseControl/Models/TriggerParamModel.ts","webpack://spheeres/./js/Core/Controls/Basket/Models/BasketDataModel.ts","webpack://spheeres/./js/Core/Controls/Basket/Stores/BasketStore.ts","webpack://spheeres/./js/Core/Controls/Basket/BasketRecord.ts","webpack://spheeres/./js/Core/Controls/Basket/Templates/View.html","webpack://spheeres/./js/Core/Controls/Basket/Basket.ts","webpack://spheeres/./js/Core/Controls/Basket/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Basket/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Basket/Events.ts","webpack://spheeres/./js/Core/Controls/ButtonAdd/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonAdd/ButtonAdd.ts","webpack://spheeres/./js/Core/Controls/ButtonAdd/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonAdd/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonAdd/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonCopy/Models/MenuItemModel.ts","webpack://spheeres/./js/Core/Controls/ButtonCopy/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonCopy/Stores/ButtonCopyApi.ts","webpack://spheeres/./js/Core/Controls/ButtonCopy/ButtonCopy.ts","webpack://spheeres/./js/Core/Controls/ButtonCopy/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonCopy/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonCopy/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonCopy/Constants/Behavior.ts","webpack://spheeres/./js/Core/Controls/ButtonDashboardScreen/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonDashboardScreen/ButtonDashboardScreen.ts","webpack://spheeres/./js/Core/Controls/ButtonDashboardScreen/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonDashboardScreen/Templates/Toolbar.html","webpack://spheeres/./js/Core/Controls/ButtonDashboardScreen/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonDelete/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonDelete/ButtonDelete.ts","webpack://spheeres/./js/Core/Controls/ButtonDelete/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonDelete/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonDelete/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonEdit/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonEdit/ButtonEdit.ts","webpack://spheeres/./js/Core/Controls/ButtonEdit/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonEdit/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonEdit/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonFavorite/ButtonFavorite.ts","webpack://spheeres/./js/Core/Controls/ButtonFavorite/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonFavorite/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonFavorite/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonFavorite/Templates/ToolBar.html","webpack://spheeres/./js/Core/Components/ProgressBar/Models/View/FlowRecordModel.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/FlowFolder.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Templates/FlowFolderView.html","webpack://spheeres/./js/Core/Components/ProgressBar/Models/View/MemoRecordModel.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Templates/MemoItems.html","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/FlowFolderMemos.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Templates/AddMemo.html","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/FollowUpLifeStatuses.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Models/FollowUpBaseRecordModel.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Models/FollowUpOptionModel.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Models/FollowUpParentRecordModel .ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Models/SubjectActionModel.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/Models/Dto/ActionCheckListItemDto.ts","webpack://spheeres/./js/Core/Components/ActionCheckList/Models/Dto/ActionCheckListDto.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Models/LifeStatusesModel.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Stores/FollowUpStore.ts","webpack://spheeres/./js/Core/Controls/ButtonListScreen/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonListScreen/ButtonListScreen.ts","webpack://spheeres/./js/Core/Controls/ButtonListScreen/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonListScreen/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonListScreen/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonPlan/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonPlan/ButtonPlan.ts","webpack://spheeres/./js/Core/Controls/ButtonPlan/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonPlan/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonPlan/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonSpecialScreen/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonSpecialScreen/ButtonSpecialScreen.ts","webpack://spheeres/./js/Core/Controls/ButtonSpecialScreen/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonSpecialScreen/Templates/Toolbar.html","webpack://spheeres/./js/Core/Controls/ButtonSpecialScreen/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonTemplate/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonTemplate/ButtonTemplate.ts","webpack://spheeres/./js/Core/Controls/ButtonTemplate/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonTemplate/Templates/GridRow.html","webpack://spheeres/./js/Core/Controls/ButtonTemplate/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonTemplate/Templates/Dropdown.html","webpack://spheeres/./js/Core/Controls/ButtonTemplate/Templates/DropdownSubMenu.html","webpack://spheeres/./js/Core/Controls/ButtonTemplate/Models/TemplateModel.ts","webpack://spheeres/./js/Core/Controls/ButtonTemplate/Stores/ButtonTemplateStore.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/ParamView/Events.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Views/MethodsList.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Templates/MethodsList.html","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Models/Arrow.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Models/DecoratedRect.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Models/DataSelector.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Models/Table.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Models/Trigger.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Models/JSFunction.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Models/APIMethod.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Models/CSharpFunction.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Models/Param.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Models/Source.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Models/Destination.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Models/Group.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/DecoratedRectView.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/TableView.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/TriggerView.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/JSFunctionView.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/APIMethodView.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/CSharpFunctionView.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Enums/TextColour.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Enums/FontSize.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Enums/BackgroundColour.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Enums/BorderColour.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Enums/CanvasShapeWidth.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/BasicCanvasItemViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Utils.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/SourceViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/DestinationViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/TableViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Constants/PortAttributes.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Constants/Sides.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/ParamViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Constants/Shapes.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/JSFunctionViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/TriggerViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/CSharpFunctionViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Enums/CanvasModelState.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/ArrowViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/APIMethodViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/GroupViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/GridLayout.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Views/ShapeFactory.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/ParamView/ParamView.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Constants/DataTypes.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/SourceView.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/DestinationView.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Events.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/TriggerGroupViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/DataSelector.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Templates/DataSelectorTemplate.html","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/DataSelectorView.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Templates/DataSelectorViewTemplate.html","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Shapes/Views/GroupView.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/CanvasViewModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Inspector/FunctionParamInspector.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Inspector/InspectorFactory.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Views/CanvasManager.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Templates/View.html","webpack://spheeres/./js/Core/Controls/CanvasDesigner/CanvasDesigner.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Templates/AdditionalSettingsDropDown.html","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Constants/CanvasTypes.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/CanvasModel.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/Dto/MsAccessColumnDto.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/Dto/MsAccessTableDto.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/Dto/MsAccessSchemaDto.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/Dto/DesktopFolderDto.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Models/Dto/TriggerDto.ts","webpack://spheeres/./js/Core/Controls/CanvasDesigner/Stores/CanvasDesignerStore.ts","webpack://spheeres/./js/Core/Controls/Chart/Constants.ts","webpack://spheeres/./js/Core/Controls/ComplexControl/ComplexControl.ts","webpack://spheeres/./js/Core/Controls/ComplexControl/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ComplexControl/Models/RequiredFieldModel.ts","webpack://spheeres/./js/Core/Controls/RecordSharing/Models/RecordSharingViewModel.ts","webpack://spheeres/./js/Core/Controls/RecordSharing/Models/RecordSharingSerializedModel.ts","webpack://spheeres/./js/Core/Controls/RecordSharing/RecordSharing.ts","webpack://spheeres/./js/Core/Controls/RecordSharing/Stores/RecordSharingStore.ts","webpack://spheeres/./js/Core/Controls/RecordSharing/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/RecordSharing/Templates/View.html","webpack://spheeres/./js/Core/Controls/RecordSharing/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/RecordSharing/Templates/Design.html","webpack://spheeres/./js/Core/Controls/UserSecurity/Templates/View.html","webpack://spheeres/./js/Core/Controls/UserSecurity/UserSecurity.ts","webpack://spheeres/./js/Core/Controls/UserSecurity/Models/UserSecurityViewModel.ts","webpack://spheeres/./js/Core/Controls/UserSecurity/Models/UserSecuritySerializedModel.ts","webpack://spheeres/./js/Core/Controls/UserSecurity/Stores/UserSecurityStore.ts","webpack://spheeres/./js/Core/Controls/UserSecurity/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/UserSecurity/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/UserSecurity/Templates/Design.html","webpack://spheeres/./js/Core/Controls/UserAllowance/Templates/View.html","webpack://spheeres/./js/Core/Controls/UserAllowance/UserAllowance.ts","webpack://spheeres/./js/Core/Controls/UserAllowance/Models/UserAllowanceViewModel.ts","webpack://spheeres/./js/Core/Controls/UserAllowance/Models/UserAllowanceSerializedModel.ts","webpack://spheeres/./js/Core/Controls/UserAllowance/Stores/UserAllowanceStore.ts","webpack://spheeres/./js/Core/Controls/UserAllowance/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/UserAllowance/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/UserAllowance/Templates/Design.html","webpack://spheeres/./js/Core/Controls/TableSecurity/Templates/View.html","webpack://spheeres/./js/Core/Controls/TableSecurity/Models/TableSecurityModel.ts","webpack://spheeres/./js/Core/Controls/TableSecurity/TableSecurity.ts","webpack://spheeres/./js/Core/Controls/TableSecurity/Models/TableSecurityViewModel.ts","webpack://spheeres/./js/Core/Controls/TableSecurity/Models/TableSecuritySerializedModel.ts","webpack://spheeres/./js/Core/Controls/TableSecurity/Stores/TableSecurityStore.ts","webpack://spheeres/./js/Core/Controls/TableSecurity/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/TableSecurity/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/TableSecurity/Templates/Design.html","webpack://spheeres/./js/Core/Controls/TypeSecurity/Stores/TypeSecurityStore.ts","webpack://spheeres/./js/Core/Controls/TypeSecurity/Models/TypeSecurityViewModel.ts","webpack://spheeres/./js/Core/Controls/TypeSecurity/Models/TypeSecuritySerializedModel.ts","webpack://spheeres/./js/Core/Controls/TypeSecurity/TypeSecurity.ts","webpack://spheeres/./js/Core/Controls/TypeSecurity/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/TypeSecurity/Templates/View.html","webpack://spheeres/./js/Core/Controls/TypeSecurity/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/TypeSecurity/Templates/Design.html","webpack://spheeres/./js/Core/Controls/TypeSecurity/Templates/TypeSecurityDropdownTemplate.html","webpack://spheeres/./js/Core/Controls/RecordSecurity/Templates/View.html","webpack://spheeres/./js/Core/Controls/RecordSecurity/Models/RecordSecurityViewModel.ts","webpack://spheeres/./js/Core/Controls/RecordSecurity/Models/RecordSecuritySerializedModel.ts","webpack://spheeres/./js/Core/Controls/RecordSecurity/RecordSecurity.ts","webpack://spheeres/./js/Core/Controls/RecordSecurity/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/RecordSecurity/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/RecordSecurity/Templates/Design.html","webpack://spheeres/./js/Core/Controls/LifestatusDesigner/LifestatusDesigner.ts","webpack://spheeres/./js/Core/Controls/LifestatusDesigner/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/LifestatusDesigner/Templates/View.html","webpack://spheeres/./js/Core/Controls/LifestatusDesigner/Templates/Design.html","webpack://spheeres/./js/Core/Controls/DatabaseDesigner/DatabaseDesigner.ts","webpack://spheeres/./js/Core/Controls/DatabaseDesigner/Templates/View.html","webpack://spheeres/./js/Core/Controls/DatabaseDesigner/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Mail/Enums/MailFolder.ts","webpack://spheeres/./js/Core/Controls/Mail/MailList.ts","webpack://spheeres/./js/Core/Controls/Mail/Templates/MailListTemplate.html","webpack://spheeres/./js/Core/Controls/Mail/Templates/DetailTemplate.html","webpack://spheeres/./js/Core/Controls/Mail/Detail.ts","webpack://spheeres/./js/Core/Controls/Mail/Mail.ts","webpack://spheeres/./js/Core/Controls/Mail/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Mail/Templates/View.html","webpack://spheeres/./js/Core/Controls/Mail/Templates/Edit.html","webpack://spheeres/./js/Core/FullCalendar/FullCalendarCultures.ts","webpack://spheeres/./js/Core/Controls/SelectUser/Models/SelectUserModel.ts","webpack://spheeres/./js/Core/Controls/SelectUser/Models/SelectUserFormModel.ts","webpack://spheeres/./js/Core/Controls/Agenda/Templates/View.html","webpack://spheeres/./js/Core/Controls/Agenda/Templates/EventTemplate.html","webpack://spheeres/./js/Core/Controls/Agenda/Templates/EventMonthTemplate.html","webpack://spheeres/./js/Core/Controls/Agenda/Templates/PlanningTemplate.html","webpack://spheeres/./js/Core/Controls/Agenda/Templates/LinksTooltip.html","webpack://spheeres/./js/Core/Controls/Agenda/Templates/EventListTemplate.html","webpack://spheeres/./js/Core/Controls/Agenda/Templates/EventTimeTemplate.html","webpack://spheeres/./js/Core/Controls/Agenda/Agenda.ts","webpack://spheeres/./js/Core/Controls/Agenda/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Agenda/Constants.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Models/View/SchedulerViewModel.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Mappings/PeriodsMappings.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Mappings/HeaderColumnMapping.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Utils/CellEditor.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Utils/ColumnEditor.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Utils/ColumnFirstEditor.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Utils/GroupEditor.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Utils/SubGroupEditor.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Mappings/SubGroupsMapping.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Mappings/GroupsMapping.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Mappings/SchedulerMappingProfile.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Stores/SchedulerStore.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Utils/ButtonCellEditor.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Utils/ColumnButtonsEditor.ts","webpack://spheeres/./js/Core/Controls/Scheduler/Constants.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Templates/Scheduler.html","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Views/SchedulerView.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Scheduler.ts","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Templates/GlobalNotValid.html","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Templates/ReadingData.html","webpack://spheeres/./js/Core/Components/Controls/Scheduler/Templates/AgendaConnection.html","webpack://spheeres/./js/Core/Controls/Scheduler/Templates/View.html","webpack://spheeres/./js/Core/Controls/Scheduler/Scheduler.ts","webpack://spheeres/./js/Core/Controls/Scheduler/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ColorSelector/ColorSelector.ts","webpack://spheeres/./js/Core/Controls/ColorSelector/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ColorSelector/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ColorSelector/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ColorSelector/Templates/View.html","webpack://spheeres/./js/Core/Controls/ColorSelector/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/ButtonGoogleMaps/ButtonGoogleMaps.ts","webpack://spheeres/./js/Core/Controls/ButtonGoogleMaps/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonGoogleMaps/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonGoogleMaps/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonGoogleMaps/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonPrint/ButtonPrint.ts","webpack://spheeres/./js/Core/Controls/ButtonPrint/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonPrint/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonPrint/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonPrint/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonLinkedIn/ButtonLinkedIn.ts","webpack://spheeres/./js/Core/Controls/ButtonLinkedIn/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonLinkedIn/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonLinkedIn/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonLinkedIn/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonTree/ButtonTree.ts","webpack://spheeres/./js/Core/Controls/ButtonTree/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonTree/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonTree/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonTree/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonCancel/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonCancel/ButtonCancel.ts","webpack://spheeres/./js/Core/Controls/ButtonCancel/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonCancel/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonCancel/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonSave/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonSave/ButtonSave.ts","webpack://spheeres/./js/Core/Controls/ButtonSave/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonSave/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonSave/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonSecurityReset/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonSecurityReset/ButtonSecurityReset.ts","webpack://spheeres/./js/Core/Controls/ButtonSecurityReset/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ButtonSecurityReset/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonSecurityReset/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/ButtonFollowUp.ts","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonFollowUp/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Dropdown/Constants.ts","webpack://spheeres/./js/Core/Controls/Dropdown/Dropdown.ts","webpack://spheeres/./js/Core/Controls/Dropdown/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Dropdown/Templates/View.html","webpack://spheeres/./js/Core/Controls/Dropdown/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Dropdown/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Dropdown/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Dropdown/Templates/Dropdown.html","webpack://spheeres/./js/Core/Controls/Dropdown/Templates/Search.html","webpack://spheeres/./js/Core/Controls/MultiSelect/Stores/MultiSelectDataStore.ts","webpack://spheeres/./js/Core/Controls/MultiSelect/Templates/View.html","webpack://spheeres/./js/Core/Controls/MultiSelect/MultiSelect.ts","webpack://spheeres/./js/Core/Controls/MultiSelect/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/MultiSelect/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/MultiSelect/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/MultiSelect/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Checkbox/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Checkbox/Checkbox.ts","webpack://spheeres/./js/Core/Controls/Checkbox/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Checkbox/Templates/View.html","webpack://spheeres/./js/Core/Controls/Checkbox/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Checkbox/Templates/Design.html","webpack://spheeres/./js/Core/Controls/DateTime/DateTime.ts","webpack://spheeres/./js/Core/Controls/DateTime/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/DateTime/Templates/View.html","webpack://spheeres/./js/Core/Controls/DateTime/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/DateTime/Templates/Design.html","webpack://spheeres/./js/Core/Controls/DateTime/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/RadioButton/Models/Data/RadioButtonOptionsModel.ts","webpack://spheeres/./js/Core/Controls/RadioButton/Stores/RadioButtonDataStore.ts","webpack://spheeres/./js/Core/Controls/RadioButton/Models/View/RadioButtonOptionViewModel.ts","webpack://spheeres/./js/Core/Controls/RadioButton/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/RadioButton/Templates/Search.html","webpack://spheeres/./js/Core/Controls/RadioButton/Templates/RadioButton.html","webpack://spheeres/./js/Core/Controls/RadioButton/RadioButton.ts","webpack://spheeres/./js/Core/Controls/RadioButton/Templates/View.html","webpack://spheeres/./js/Core/Controls/RadioButton/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/RadioButton/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/RadioButton/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Group/Group.ts","webpack://spheeres/./js/Core/Controls/Group/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Group/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Group/Templates/View.html","webpack://spheeres/./js/Core/Controls/Group/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Group/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Group/Constants.ts","webpack://spheeres/./js/Core/Controls/Label/Templates/View.html","webpack://spheeres/./js/Core/Controls/Label/Label.ts","webpack://spheeres/./js/Core/Controls/Label/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Label/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Label/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Memo/Constants.ts","webpack://spheeres/./js/Core/Controls/Memo/Memo.ts","webpack://spheeres/./js/Core/Controls/Memo/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Memo/Templates/View.html","webpack://spheeres/./js/Core/Controls/Memo/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Memo/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Memo/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Document/Document.ts","webpack://spheeres/./js/Core/Controls/Document/Templates/View.html","webpack://spheeres/./js/Core/Controls/Document/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Document/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Document/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Document/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonReturn/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonReturn/ButtonReturn.ts","webpack://spheeres/./js/Core/Controls/ButtonReturn/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/ButtonReturn/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Password/Password.ts","webpack://spheeres/./js/Core/Controls/Password/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Password/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Password/Templates/View.html","webpack://spheeres/./js/Core/Controls/Password/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Password/Templates/Design.html","webpack://spheeres/./js/Core/Controls/SelectUser/Models/SelectUserFormViewModel.ts","webpack://spheeres/./js/Core/Controls/SelectUser/Form/SelectUserForm.ts","webpack://spheeres/./js/Core/Controls/SelectUser/Form/Template/Form.html","webpack://spheeres/./js/Core/Controls/SelectUser/Templates/View.html","webpack://spheeres/./js/Core/Controls/SelectUser/Templates/SelectUserPopUp.html","webpack://spheeres/./js/Core/Controls/SelectUser/SelectUser.ts","webpack://spheeres/./js/Core/Controls/SelectUser/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/SelectUser/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/SelectUser/Templates/Design.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Models/EditTemplateModel.ts","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Models/TemplateLanguageModel.ts","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Stores/TemplateDesignerStore.ts","webpack://spheeres/./js/Desktop/Toolbar/ToolbarQueryColumn/ToolbarQueryColumn.ts","webpack://spheeres/./js/Desktop/Toolbar/ToolbarQueryColumn/Templates/Template.html","webpack://spheeres/./js/Desktop/Toolbar/SpheeresLink.ts","webpack://spheeres/./js/Desktop/Toolbar/OpenRecordLink.ts","webpack://spheeres/./js/Desktop/Toolbar/ToolbarQueryEntity/ToolbarQueryEntity.ts","webpack://spheeres/./js/Desktop/Toolbar/ToolbarQueryEntity/Templates/Template.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/QueryToolbar/Events.ts","webpack://spheeres/./js/Desktop/Toolbar/ToolbarQueryEntityJoin/ToolbarQueryEntityJoin.ts","webpack://spheeres/./js/Desktop/Toolbar/ToolbarQueryEntityJoin/Templates/Template.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/QueryToolbar/QueryToolbar.ts","webpack://spheeres/./js/Core/Controls/TemplateDesigner/QueryToolbar/Templates/QueryToolbar.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Templates/View.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Templates/Variables/Field.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Templates/Variables/EmailSubject.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Templates/Variables/NextStatusURLCommand.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/TemplateDesigner.ts","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Templates/Variables/Table.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Templates/Variables/Script.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Templates/Variables/Variable.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Templates/Variables/OpenRecordLink.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Templates/Variables/StepsNextStatusURLCommand.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Templates/Variables/ConfirmedOptinURLCommand.html","webpack://spheeres/./js/Core/Controls/TemplateDesigner/Templates/Variables/LoginURLCommand.html","webpack://spheeres/./js/Core/Controls/RssFeed/Models/Post.ts","webpack://spheeres/./js/Core/Controls/RssFeed/Models/RssFeedModel.ts","webpack://spheeres/./js/Core/Controls/RssFeed/Stores/RssFeedStore.ts","webpack://spheeres/./js/Core/Controls/RssFeed/Templates/View.html","webpack://spheeres/./js/Core/Controls/RssFeed/RssFeed.ts","webpack://spheeres/./js/Core/Controls/RssFeed/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/RssFeed/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Alias/Alias.ts","webpack://spheeres/./js/Core/Controls/Alias/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Alias/Templates/View.html","webpack://spheeres/./js/Core/Controls/Alias/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Alias/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Alias/Templates/Design.html","webpack://spheeres/./js/Core/Controls/CrystalViewer/Stores/CrystalReportViewerStore.ts","webpack://spheeres/./js/Core/Controls/CrystalViewer/Templates/View.html","webpack://spheeres/./js/Core/Controls/CrystalViewer/CrystalReportViewer.ts","webpack://spheeres/./js/Core/Controls/CrystalViewer/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/CrystalViewer/Templates/Design.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Enums/ViewModes.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Enums/DataRoles.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Stores/FieldSecurityStore.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Mappings/AssigneeMappings.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Mappings/FieldCollectionMappings.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Models/DTO/Post/NewDataRoleDTOModel.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Mappings/DataRoleMappings.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Models/DTO/Post/PostDataRolesRequestModel.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Models/DTO/Post/NewDeputyDTOModel.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Models/DTO/Post/DeletedRoleDTOModel.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Mappings/FieldSecurityMappings.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/Base/FieldSecurityComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/Header/View.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/Header/Edit.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/Header/HeaderComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/Header/View.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/Header/Edit.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/Header/HeaderComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/FieldCollection/View.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/FieldCollection/FieldCollectionComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/FieldCollection/Edit.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDataRoleComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Models/Business/NewThirdPartyDataRoleModel.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewThirdPartyDataRoleComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Templates/NewDataRole/NewThirdPartyDataRole.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDORole/NewDORoleComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewPORole/NewPORoleComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Models/Business/NewPersonalDataRoleModel.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewPersonalDataRoleComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Templates/NewDataRole/NewPersonalDataRole.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewSORole/NewSORoleComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewVORole/NewVORoleComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDPORole/NewDPORoleComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDEPRole/NewDEPRoleModel.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDEPRole/NewDEPRole.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDEPRole/NewDEPRoleComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/View.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Components/DataRole/DataRoleComponent.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Shared/Models/State/FieldSecurityChangesModel.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/FieldSecurity.ts","webpack://spheeres/./js/Core/Controls/FieldSecurity/Templates/View.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/FieldSecurity/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonConsultScreen/Templates/View.html","webpack://spheeres/./js/Core/Controls/ButtonConsultScreen/ButtonConsultScreen.ts","webpack://spheeres/./js/Core/Controls/ButtonConsultScreen/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ButtonConsultScreen/Templates/Toolbar.html","webpack://spheeres/./js/Core/Controls/ButtonConsultScreen/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/QueryResult/QueryResult.ts","webpack://spheeres/./js/Core/Controls/QueryResult/Templates/View.html","webpack://spheeres/./js/Core/Controls/QueryResult/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/QueryResult/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/QueryResult/Templates/Design.html","webpack://spheeres/./js/Core/Controls/QueryResult/Templates/Edit.html","webpack://spheeres/./js/Core/Components/Controls/GanttChart/AssignmentsPopup/Models/AssignmentModel.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/AssignmentsPopup/Models/AssignmentsPopupModel.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/AssignmentsPopup/AssignmentsPopup.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/AssignmentsPopup/Templates/Template.html","webpack://spheeres/./js/Core/Components/Controls/GanttChart/Stores/GanttChartStore.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/Stores/Models/SaveGanttChartInfoDto.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/Mappings/OnViewModelMappings.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/Stores/Models/TaskDto.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/Stores/Models/AssignmentDto.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/Stores/Models/DependencyDto.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/Stores/Models/TaskParentDto.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/Mappings/OnDtoModelMappings.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/Mappings/GanttChartMappings.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/GanttChartComponent.ts","webpack://spheeres/./js/Core/Components/Controls/GanttChart/Templates/Templates.html","webpack://spheeres/./js/Core/Controls/GanttChart/GanttChart.ts","webpack://spheeres/./js/Core/Controls/GanttChart/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/GanttChart/Templates/View.html","webpack://spheeres/./js/Core/Controls/Maps/Stores/MapsStore.ts","webpack://spheeres/./js/Core/Controls/Maps/Templates/View.html","webpack://spheeres/./js/Core/Controls/Maps/Maps.ts","webpack://spheeres/./js/Core/Controls/Maps/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Maps/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Maps/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/PortletSpace/PortletSpace.ts","webpack://spheeres/./js/Core/Controls/PortletSpace/Templates/View.html","webpack://spheeres/./js/Core/Controls/PortletSpace/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/PortletSpace/Templates/Design.html","webpack://spheeres/./js/Core/Controls/BulkEmail/Store/BulkEmailStore.ts","webpack://spheeres/./js/Core/Controls/BulkEmail/Store/Models/ConfigureBulkEmailDto.ts","webpack://spheeres/./js/Core/Controls/BulkEmail/Store/Models/CreateNewGroupDto.ts","webpack://spheeres/./js/Core/Controls/BulkEmail/Models/BulkEmailConfig.ts","webpack://spheeres/./js/Core/Controls/BulkEmail/Models/BulkEmailEntity.ts","webpack://spheeres/./js/Core/Controls/BulkEmail/Models/BulkEmailTemplate.ts","webpack://spheeres/./js/Core/Controls/BulkEmail/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/BulkEmail/Templates/View.html","webpack://spheeres/./js/Core/Controls/BulkEmail/BulkEmail.ts","webpack://spheeres/./js/Core/Controls/BulkEmail/Templates/HelpView.html","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Enums/JournalsState.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Enums/AccountsState.ts","webpack://spheeres/./js/Core/Controls/Invoicing/Stores/InvoicingStore.ts","webpack://spheeres/./js/Core/Controls/Invoicing/InvoicingControl.ts","webpack://spheeres/./js/Core/Controls/Invoicing/Templates/Toolbar.html","webpack://spheeres/./js/Core/Controls/Invoicing/Templates/View.html","webpack://spheeres/./js/Core/Controls/Invoicing/Templates/HelpView.html","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/View/SourceTableViewModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/View/SourceTableTypeViewModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/View/InvoicingControlViewModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/View/FinancialProcessorRunnerViewModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/View/InvoicingResultsViewModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/View/LedgerViewModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/View/AccountsViewModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/View/SubAdministrationViewModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/View/FinancialProcessorViewModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Mappings/FinancialDashboardMappings.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicing/ReadyForInvoicing.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicing/Templates/NoControlsTemplate.html","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicing/Templates/Template.html","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/ReadyForProcessing/ReadyForProcessing.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/ReadyForProcessing/Templates/Template.html","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/Ledger/Ledger.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/Ledger/Templates/Template.html","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/FinancialAPI/FinancialAPI.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/FinancialAPI/Templates/DesignTemplate.html","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/FinancialAPI/Templates/Template.html","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/FinancialAPI/Templates/NoControlsTemplate.html","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/InvoicingResults/InvoicingResults.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/InvoicingResults/Templates/Template.html","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/ReadyForProcessingData/ReadyForProcessingData.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/ReadyForProcessingData/Templates/Template.html","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicingData/ReadyForInvoicingData.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicingData/Templates/Template.html","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/FinancialDashboardDtoModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/SourceTableDtoModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/SourceTableTypeDtoModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/InvoicingControlDtoModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/InvoicingResultsDtoModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/FinancialProcessorRunnerDtoModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/LedgerDtoModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/AccountsDtoModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/SubAdministrationDtoModel.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Stores/FinancialDashboardMockStore.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Stores/FinancialDashboardStore.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Factories/StoreFactory.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/FinancialDashboard.ts","webpack://spheeres/./js/Core/Components/Dashboards/FinancialDashboard/Templates/Template.html","webpack://spheeres/./js/Core/Controls/FinancialDashboard/FinancialDashboard.ts","webpack://spheeres/./js/Core/Controls/FinancialDashboard/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/FinancialDashboard/Templates/Design.html","webpack://spheeres/./js/Core/Controls/FinancialDashboard/Templates/View.html","webpack://spheeres/./js/Core/Controls/Currency/Stores/CurrencyStore.ts","webpack://spheeres/./js/Core/Controls/Currency/Currency.ts","webpack://spheeres/./js/Core/Controls/Currency/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Currency/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Currency/Templates/View.html","webpack://spheeres/./js/Core/Controls/Currency/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Currency/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/IFrame/Templates/View.html","webpack://spheeres/./js/Core/Controls/IFrame/IFrame.ts","webpack://spheeres/./js/Core/Controls/IFrame/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/IFrame/Templates/Design.html","webpack://spheeres/./js/Core/Controls/ProductConfigurator/ProductConfigurator.ts","webpack://spheeres/./js/Core/Controls/ProductConfigurator/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/ProductConfigurator/Templates/View.html","webpack://spheeres/./js/Core/Controls/ProductConfigurator/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Spim/Store/SpimStore.ts","webpack://spheeres/./js/Core/Controls/Spim/Model/SpimValueViewModel.ts","webpack://spheeres/./js/Core/Controls/Spim/Model/NumericValueViewModel.ts","webpack://spheeres/./js/Core/Controls/Spim/Templates/FeatureTypes/Numeric.html","webpack://spheeres/./js/Core/Controls/Spim/Model/RangeValueViewModel.ts","webpack://spheeres/./js/Core/Controls/Spim/Templates/FeatureTypes/Range.html","webpack://spheeres/./js/Core/Controls/Spim/Model/LogicValueViewModel.ts","webpack://spheeres/./js/Core/Controls/Spim/Templates/FeatureTypes/Logic.html","webpack://spheeres/./js/Core/Controls/Spim/Model/AlphaNumericValueViewModel.ts","webpack://spheeres/./js/Core/Controls/Spim/Templates/FeatureTypes/AlphaNumeric.html","webpack://spheeres/./js/Core/Controls/Spim/Spim.ts","webpack://spheeres/./js/Core/Controls/Spim/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Book/Store/Models/PageResponse.ts","webpack://spheeres/./js/Core/Controls/Book/Store/BookStore.ts","webpack://spheeres/./js/Core/Controls/Book/Book.ts","webpack://spheeres/./js/Core/Controls/Book/Templates/View.html","webpack://spheeres/./js/Core/Controls/Book/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Book/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Book/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Signature/SignatureEditScreen/SignatureEditScreen.ts","webpack://spheeres/./js/Core/Controls/Signature/SignatureEditScreen/Templates/SignatureEditScreen.html","webpack://spheeres/./js/Core/Controls/Signature/Store/SignatureStore.ts","webpack://spheeres/./js/Core/Controls/Signature/Signature.ts","webpack://spheeres/./js/Core/Controls/Signature/Templates/View.html","webpack://spheeres/./js/Core/Controls/Signature/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Signature/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Signature/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Signature/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Chart/Stores/ChartStore.ts","webpack://spheeres/./js/Core/Components/Controls/Chart/Enums/ChartTypeEnum.ts","webpack://spheeres/./js/Core/Controls/Chart/Templates/View.html","webpack://spheeres/./js/Core/Components/Controls/Chart/Builders/ChartBuilder.ts","webpack://spheeres/./js/Core/Components/Controls/Chart/Builders/AreaChartBuilder.ts","webpack://spheeres/./js/Core/Components/Controls/Chart/Builders/LineChartBuilder.ts","webpack://spheeres/./js/Core/Components/Controls/Chart/Builders/PieChartBuilder.ts","webpack://spheeres/./js/Core/Components/Controls/Chart/Builders/StackedAreaBuilder.ts","webpack://spheeres/./js/Core/Components/Controls/Chart/Builders/Funnel3DBuilder.ts","webpack://spheeres/./js/Core/Components/Controls/Chart/Factory/ChartBuilderFactory.ts","webpack://spheeres/./js/Core/Controls/Chart/ChartControl.ts","webpack://spheeres/./js/Core/Controls/Chart/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Chart/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Chart/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/IFrameExtension/Templates/View.html","webpack://spheeres/./js/Core/Controls/IFrameExtension/IFrameExtension.ts","webpack://spheeres/./js/Core/Controls/IFrameExtension/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/IFrameExtension/Templates/Design.html","webpack://spheeres/./js/Core/Components/CustomFunctions/Facades/IFrameExtensionFacade.ts","webpack://spheeres/./js/Core/Controls/ControlFactory.ts","webpack://spheeres/./js/Core/Controls/DateTime/Icons.ts","webpack://spheeres/./js/Core/Controls/DateTime/WeekFormatUtils.ts","webpack://spheeres/./js/Core/Controls/Document/DocumentDataModel.ts","webpack://spheeres/./js/Core/Controls/Document/Stores/DocumentStore.ts","webpack://spheeres/./js/Core/Controls/Drop/Models/DropFileModel.ts","webpack://spheeres/./js/Core/Controls/Drop/Models/DropDataModel.ts","webpack://spheeres/./js/Core/Controls/Drop/DropFilesModal.ts","webpack://spheeres/./js/Core/Controls/Drop/Templates/DropFilesModal.html","webpack://spheeres/./js/Core/Controls/Drop/Drop.ts","webpack://spheeres/./js/Core/Controls/Drop/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Drop/Templates/View.html","webpack://spheeres/./js/Core/Controls/Drop/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Drop/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Drop/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Drop/Events.ts","webpack://spheeres/./js/Core/Controls/Drop/Models/UploadChunkModel.ts","webpack://spheeres/./js/Core/Controls/Drop/Models/MissingFieldsDto.ts","webpack://spheeres/./js/Core/Controls/Drop/Stores/DropDataStore.ts","webpack://spheeres/./js/Core/Controls/Dropdown/Models/DropdownListModel.ts","webpack://spheeres/./js/Core/Controls/Dropdown/Stores/DropDownDataStore.ts","webpack://spheeres/./js/Core/Controls/FormDesigner/ToolBar/ControlToolBar/ControlToolBar.ts","webpack://spheeres/./js/Core/Controls/FormDesigner/ToolBar/ControlToolBar/Templates/ControlToolBar.html","webpack://spheeres/./js/Core/Controls/FormDesigner/ToolBar/EntityToolBar/EntityToolBar.ts","webpack://spheeres/./js/Core/Controls/FormDesigner/ToolBar/EntityToolBar/Templates/EntityToolBar.html","webpack://spheeres/./js/Core/Controls/FormDesigner/ToolBar/ToolBar.ts","webpack://spheeres/./js/Core/Controls/FormDesigner/ToolBar/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/FormDesigner/Stores/FormDesignerStore.ts","webpack://spheeres/./js/Core/Controls/FormDesigner/Models/CreateNewFormRequestModel.ts","webpack://spheeres/./js/Core/Controls/FormDesigner/SettingsModal/SettingsModal.ts","webpack://spheeres/./js/Core/Controls/FormDesigner/SettingsModal/Templates/CardScreenSettingsModal.html","webpack://spheeres/./js/Core/Controls/FormDesigner/SettingsModal/Templates/SettingsModal.html","webpack://spheeres/./js/Core/Controls/FormDesigner/Models/ResetFormRequestModel.ts","webpack://spheeres/./js/Core/Controls/FormDesigner/Templates/View.html","webpack://spheeres/./js/Core/Controls/FormDesigner/Templates/FieldCollectionDropdownTemplate.html","webpack://spheeres/./js/Core/Controls/FormDesigner/Templates/TypedScreenDropDownTemplate.html","webpack://spheeres/./js/Core/Controls/FormDesigner/FormDesigner.ts","webpack://spheeres/./js/Core/Controls/FormDesigner/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/FormDesigner/ToolBar/ControlToolBar/ControlGroup.ts","webpack://spheeres/./js/Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlGroupModel.ts","webpack://spheeres/./js/Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlToolBarModel.ts","webpack://spheeres/./js/Core/Controls/FunctionDesigner/CodeEditor.ts","webpack://spheeres/./js/Core/Controls/FunctionDesigner/FunctionResult.ts","webpack://spheeres/./js/Core/Controls/FunctionDesigner/Templates/FunctionResult.html","webpack://spheeres/./js/Core/Controls/FunctionDesigner/Templates/View.html","webpack://spheeres/./js/Core/Controls/FunctionDesigner/FunctionDesigner.ts","webpack://spheeres/./js/Core/Controls/FunctionDesigner/FunctionTypes.ts","webpack://spheeres/./js/Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodParamModel.ts","webpack://spheeres/./js/Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodModel.ts","webpack://spheeres/./js/Core/Controls/FunctionDesigner/Models/FunctionDesignerPackageModel.ts","webpack://spheeres/./js/Core/Controls/FunctionDesigner/Models/FunctionExecutionModel.ts","webpack://spheeres/./js/Core/Controls/FunctionDesigner/Models/SyntaxErrorModel.ts","webpack://spheeres/./js/Core/Controls/FunctionDesigner/Models/CompileErrorModel.ts","webpack://spheeres/./js/Core/Controls/FunctionDesigner/Models/FunctionValidationModel.ts","webpack://spheeres/./js/Core/Controls/FunctionDesigner/Stores/FunctionDesignerStore.ts","webpack://spheeres/./js/Core/Controls/GenericButton/Templates/View.html","webpack://spheeres/./js/Core/Controls/GenericButton/GenericButton.ts","webpack://spheeres/./js/Core/Controls/GenericButton/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/GenericButton/Templates/Design.html","webpack://spheeres/./js/Core/Controls/GenericButton/Templates/ToolBar.html","webpack://spheeres/./js/Core/Components/CustomFunctions/Facades/GenericButtonFacade.ts","webpack://spheeres/./js/Core/Constants/TriggerParams.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridRow/GridCountRow.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/BaseGrid.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/Enums/EntityTypes.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/Enums/RelationshipTypes.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/Enums/ViewModes.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/Events.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/MemoValueModal.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/MemoValueModal.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/DataCellTemplates.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/General.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/GeneralEdit.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/Memo.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/SortDescription.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/Image.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/Reference.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/YesNo.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/Color.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/MultiSelect.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/Password.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/Document.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/NoAccess.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/Sort.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/PhoneNumber.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/Clustered.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/Format.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/HyperLink.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/Currency.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/Spim.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/Empty.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/DataCell.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/TotalCell.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/TotalCell.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/ProcessCardsDropdown/Templates/ProcessCardsDropdown.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/ProcessCardsDropdown/ProcessCardsDropdown.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/ActionCell.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/ActionCell.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/BasketButton.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/FavoriteCell.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/FavoriteCell.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GroupDetailsDropdown/Templates/GroupDetailsDropdown.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GroupDetailsDropdown/GroupDetailsDropdown.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/SelectRowCell.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridCell/Templates/SelectRow.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridRow/GridRow.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridRow/Templates/GridRow.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridRow/Templates/SortDescriptionRow.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridRow/States.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridRow/GridScreenRow.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridRow/Templates/GridScreenRow.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridRow/GridAverageRow.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridColumn/GroupColumn.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Search/FastFilterSearch.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Search/FastFilterSearch.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/FastFilter.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Decimal/DecimalFilter.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Decimal/DecimalFilter.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Integer/IntegerFilter.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Integer/IntegerFilter.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/Templates/TextFilter.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/Templates/TextFilterPopUp.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/TextFilter.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Date/DateFilter.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Date/DateFilter.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Lookup/LookupFilter.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Lookup/LookupFilter.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Yesno/YesnoFilter.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Yesno/YesnoFilter.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Timespan/TimespanFilter.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Timespan/TimespanFilter.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Time/TimeFilter.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/Time/TimeFilter.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/DateTime/DateTimeFilter.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/FastFilter/Filters/DateTime/DateTimeFilter.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridColumn/HeaderColumn.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/GridRow/GridTotalRow.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/UpdateDataModel/UpdateDataModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/UpdateDataModel/UpdateLifestatusModel.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/Index.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/Templates/BaseGrid.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/Templates/DefaultTemplate.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/Templates/ScreenTemplate.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/PivotDetaillsDropdown/Templates/PivotDetailsDropdown.html","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/PivotDetaillsDropdown/PivotDetailsDropdown.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/QueryResultPage/Events.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/QueryResultPage/QueryResultPage.ts","webpack://spheeres/./js/Core/Controls/Grid/BaseGrid/QueryResultPage/Templates/QueryResultPage.html","webpack://spheeres/./js/Core/Controls/Grid/Constants.ts","webpack://spheeres/./js/Core/Controls/Grid/Stores/LinkRecordsStore.ts","webpack://spheeres/./js/Core/Controls/Grid/Templates/View.html","webpack://spheeres/./js/Core/Components/BackLinking/Popup/FillLookup/Stores/Store.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/FillLookup/Models/Dto/LookupOptionDto.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/FillLookup/Models/View/ViewModel.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/FillLookup/Models/View/LookupField.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/FillLookup/Models/View/LookupFieldTable.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/FillLookup/Mappings/Mappings.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/FillLookup/FillLookupPopup.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/FillLookup/Templates/Template.html","webpack://spheeres/./js/Core/Components/BackLinking/Popup/MakeBackLink/Stores/Store.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/MakeBackLink/Models/View/ViewModel.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/MakeBackLink/Models/View/OptionsGroup.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/MakeBackLink/Models/View/Option.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/MakeBackLink/Models/View/LinkTable.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/MakeBackLink/Models/View/Table.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/MakeBackLink/Mappings/Mappings.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/MakeBackLink/MakeBackLinkPopup.ts","webpack://spheeres/./js/Core/Components/BackLinking/Popup/MakeBackLink/Templates/Template.html","webpack://spheeres/./js/Core/Components/BackLinking/BackLinking.ts","webpack://spheeres/./js/Core/Components/BackLinking/Constants/Intentions.ts","webpack://spheeres/./js/Core/Controls/Grid/Grid.ts","webpack://spheeres/./js/Core/Controls/Grid/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Grid/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Grid/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/GridCellValueModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/GridColumnModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/GridTotalCellValueModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/GridTotalRowModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/GridCountCellValueModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/GridCountRowModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/GridAverageCellValueModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/GridAverageRowModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/GridDataModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/GridRowModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasPositionModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasSizeModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/QueryExpression/GenericButtonConfigModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GridDataModel/QueryExpression/QuerySortModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/SortModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/ViewGridModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/PivotDetailModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/GroupDetailModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Stores/GridStore.ts","webpack://spheeres/./js/Core/Controls/Grid/Models/ViewGridResponseModel.ts","webpack://spheeres/./js/Core/Controls/Grid/Stores/ViewGridListStore.ts","webpack://spheeres/./js/Core/Controls/Grid/Toolbar/Constants.ts","webpack://spheeres/./js/Core/Controls/Grid/Toolbar/Toolbar.ts","webpack://spheeres/./js/Core/Controls/Grid/Toolbar/Templates/Toolbar.html","webpack://spheeres/./js/Core/Common/Enums/FileTypes.ts","webpack://spheeres/./js/Core/Controls/History/Stores/HistoryLogsStore.ts","webpack://spheeres/./js/Core/Controls/History/Templates/HistoryContent.html","webpack://spheeres/./js/Core/Controls/History/HistoryLogs.ts","webpack://spheeres/./js/Core/Controls/History/Templates/View.html","webpack://spheeres/./js/Core/Controls/History/History.ts","webpack://spheeres/./js/Core/Controls/History/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/History/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/History/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Image/Image.ts","webpack://spheeres/./js/Core/Controls/Image/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Image/Templates/View.html","webpack://spheeres/./js/Core/Controls/Image/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Image/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Image/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Image/ImageCropperScreen/ImageCropperScreen.ts","webpack://spheeres/./js/Core/Controls/Image/ImageCropperScreen/Templates/ImageCropperScreen.html","webpack://spheeres/./js/Core/Controls/Image/ImageFromCamera/ImageFromCamera.ts","webpack://spheeres/./js/Core/Controls/Image/Templates/CameraTemplate.html","webpack://spheeres/./js/Core/Controls/Image/Models/AttachmentModel.ts","webpack://spheeres/./js/Core/Controls/Image/Models/ImageDataModel.ts","webpack://spheeres/./js/Core/Controls/Image/Stores/ImageDataStore.ts","webpack://spheeres/./js/Core/Controls/Kanban/Models/KanbanParentTypeModel.ts","webpack://spheeres/./js/Core/Controls/Kanban/Models/EntityTypeModel.ts","webpack://spheeres/./js/Core/Controls/Kanban/Models/TagModel.ts","webpack://spheeres/./js/Core/Controls/Kanban/Models/StatusModel.ts","webpack://spheeres/./js/Core/Controls/Kanban/Models/KanbanViewModel.ts","webpack://spheeres/./js/Core/Controls/Kanban/Models/ViewListResponseModel.ts","webpack://spheeres/./js/Core/Controls/Kanban/Stores/KanbanStore.ts","webpack://spheeres/./js/Core/Controls/Kanban/Models/KanbanTypeViewModel.ts","webpack://spheeres/./js/Core/Controls/Kanban/Step.ts","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Default/NoMainLinksTemplate.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Default/MainLinksListTemplate.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/View.html","webpack://spheeres/./js/Core/Controls/Kanban/Constants.ts","webpack://spheeres/./js/Core/Controls/Kanban/KanbanCard.ts","webpack://spheeres/./js/Core/Controls/Kanban/Templates/KanbanCard.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Default/DesignCardName.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Default/DefaultCardName.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Default/DefaultCardAlias.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Default/DesignCardAlias.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Default/DesignCardInfo.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Default/DefaultCardInfo.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Todo/TodoCardName.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Todo/TodoCardInfo.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Todo/TodoCardAlias.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Default/TimerInCard.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Default/DefaultParentOrChildRecordTemplate.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Todo/TodoActionItemsTemplate.html","webpack://spheeres/./js/Core/Controls/Kanban/DefaultKanban.ts","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Default/DefaultKanban.html","webpack://spheeres/./js/Core/Common/Enums/ActionTypes.ts","webpack://spheeres/./js/Core/Controls/Kanban/TodoKanban.ts","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Todo/TodoKanban.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Todo/TodoParentOrChildRecordTemplate.html","webpack://spheeres/./js/Core/Controls/Kanban/KanbanBoard.ts","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Toolbar.html","webpack://spheeres/./js/Core/Controls/Kanban/Templates/Design.html","webpack://spheeres/./js/Core/Controls/LinkList/Models/AutoLinkModel.ts","webpack://spheeres/./js/Core/Controls/LinkList/Models/AutoLinkedRecordModel.ts","webpack://spheeres/./js/Core/Controls/LinkList/Models/LinklistRelationsModel.ts","webpack://spheeres/./js/Core/Controls/LinkList/Stores/LinkListStore.ts","webpack://spheeres/./js/Core/Controls/LinkList/Models/LinkListRelationsViewModel.ts","webpack://spheeres/./js/Core/Controls/LinkList/Templates/UsersNormalMode.html","webpack://spheeres/./js/Core/Controls/LinkList/Templates/UsersSingleMode.html","webpack://spheeres/./js/Core/Controls/LinkList/Stores/NewRelationStore.ts","webpack://spheeres/./js/Core/Controls/LinkList/Templates/View.html","webpack://spheeres/./js/Core/Controls/LinkList/LinkList.ts","webpack://spheeres/./js/Core/Controls/LinkList/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/LinkList/Templates/Design.html","webpack://spheeres/./js/Core/Controls/LinkList/Models/NewRelationModel.ts","webpack://spheeres/./js/Core/Controls/LinkList/Models/UpdateDataModel.ts","webpack://spheeres/./js/Core/Controls/Mail/Models/MailAddressModel.ts","webpack://spheeres/./js/Core/Controls/Mail/AddEmailAddress.ts","webpack://spheeres/./js/Core/Controls/Mail/Templates/AddMailAddress.html","webpack://spheeres/./js/Core/Controls/Mail/Models/ScreenshotAttachmentModel.ts","webpack://spheeres/./js/Core/Controls/Mail/Templates/ComposeMailTemplate.html","webpack://spheeres/./js/Core/Controls/Mail/ComposeMail.ts","webpack://spheeres/./js/Core/Controls/Mail/Templates/SelectOptionRecepientTemplate.html","webpack://spheeres/./js/Core/Controls/Mail/Templates/SelectedRecepientTemplate.html","webpack://spheeres/./js/Core/Controls/Mail/Events.ts","webpack://spheeres/./js/Core/Controls/Mail/Models/MailAttachmentModel.ts","webpack://spheeres/./js/Core/Controls/Mail/Models/MailTabModel.ts","webpack://spheeres/./js/Core/Controls/Mail/Models/MailItemExtendedModel.ts","webpack://spheeres/./js/Core/Controls/Mail/Models/MailItemModel.ts","webpack://spheeres/./js/Core/Controls/Mail/Models/GetMailsResponseModel.ts","webpack://spheeres/./js/Core/Controls/Mail/Models/TagModel.ts","webpack://spheeres/./js/Core/Controls/Mail/Models/LinkFromMailBody.ts","webpack://spheeres/./js/Core/Controls/Mail/Stores/MailStore.ts","webpack://spheeres/./js/Core/Controls/MultiSelect/Models/MultiSelectListModel.ts","webpack://spheeres/./js/Core/Controls/PlannerLevel/Models/CustomColumnValueModel.ts","webpack://spheeres/./js/Core/Controls/PlannerLevel/Models/PlannerLevelRowModel.ts","webpack://spheeres/./js/Core/Controls/PlannerLevel/Store/PlannerLevelStore.ts","webpack://spheeres/./js/Core/Controls/PlannerLevel/Events.ts","webpack://spheeres/./js/Core/Controls/PlannerLevel/RightBarCell/Templates/QueryButtons.html","webpack://spheeres/./js/Core/Controls/PlannerLevel/RightBarCell/QueryButtons.ts","webpack://spheeres/./js/Core/Controls/PlannerLevel/RightBarCell/RightBarCell.ts","webpack://spheeres/./js/Core/Controls/PlannerLevel/RightBarCell/Templates/View.html","webpack://spheeres/./js/Core/Controls/PlannerLevel/RightBarCell/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/PlannerLevel/RightBarCell/Templates/Query.html","webpack://spheeres/./js/Core/Controls/PlannerLevel/KeyCodes.ts","webpack://spheeres/./js/Core/Controls/PlannerLevel/RightBarRow/RightBarRow.ts","webpack://spheeres/./js/Core/Controls/PlannerLevel/RightBarRow/Templates/RightBarRow.html","webpack://spheeres/./js/Core/Controls/PlannerLevel/HigherResolutionPlanning/Events.ts","webpack://spheeres/./js/Core/Controls/PlannerLevel/HigherResolutionPlanning/HigherResolutionPlanning.ts","webpack://spheeres/./js/Core/Controls/PlannerLevel/HigherResolutionPlanning/Templates/HigherResolutionPlanning.html","webpack://spheeres/./js/Core/Controls/PlannerLevel/PlannerLevel.ts","webpack://spheeres/./js/Core/Controls/PlannerLevel/Templates/Design.html","webpack://spheeres/./js/Core/Controls/PlannerLevel/Templates/LeftBarView.html","webpack://spheeres/./js/Core/Controls/PlannerLevel/Templates/RightBarView.html","webpack://spheeres/./js/Core/Controls/PlannerPage/Models/CustomColumnHeaderModel.ts","webpack://spheeres/./js/Core/Controls/PlannerPage/Models/ProjectManagerModel.ts","webpack://spheeres/./js/Core/Controls/PlannerPage/Models/PlannerPageModel.ts","webpack://spheeres/./js/Core/Controls/PlannerPage/Store/PlannerPageStore.ts","webpack://spheeres/./js/Core/Controls/PlannerPage/CopyQueryButtonConfirmationDialog.ts","webpack://spheeres/./js/Core/Controls/PlannerPage/Dialogs/CopyQueryButtonConfirmationDialog.html","webpack://spheeres/./js/Core/Controls/PlannerPage/PlannerPage.ts","webpack://spheeres/./js/Core/Controls/PlannerPage/Templates/Design.html","webpack://spheeres/./js/Core/Controls/PlannerPage/Templates/View.html","webpack://spheeres/./js/Core/Controls/Planner/Planner.ts","webpack://spheeres/./js/Core/Controls/Planner/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Planner/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Planner/Templates/View.html","webpack://spheeres/./js/Core/Controls/PortletBar/Managers/Buttons/PortletBarButton.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Models/Buttons/RemoveButtonViewModel.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Buttons/Remove/Button.html","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Buttons/Remove/Design.html","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Buttons/Remove/Props.html","webpack://spheeres/./js/Core/Controls/PortletBar/Managers/Buttons/RemoveButton.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Models/Buttons/SettingsButtonViewModel.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Buttons/Settings/Button.html","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Buttons/Settings/Design.html","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Buttons/Settings/Props.html","webpack://spheeres/./js/Core/Controls/PortletBar/Managers/Buttons/SettingsButton.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Models/Buttons/ButtonViewModel.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Defaults/DefaultPortletProps.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Buttons/Collapse/Button.html","webpack://spheeres/./js/Core/Controls/PortletBar/Models/Buttons/CollapseButtonViewModel.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Buttons/Collapse/Props.html","webpack://spheeres/./js/Core/Controls/PortletBar/Managers/Buttons/CollapseButton.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Buttons/Expand/Button.html","webpack://spheeres/./js/Core/Controls/PortletBar/Models/Buttons/ExpandButtonViewModel.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Buttons/Expand/Props.html","webpack://spheeres/./js/Core/Controls/PortletBar/Managers/Buttons/ExpandButton.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Buttons/Reload/Button.html","webpack://spheeres/./js/Core/Controls/PortletBar/Models/Buttons/ReloadButtonViewModel.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Buttons/Reload/Props.html","webpack://spheeres/./js/Core/Controls/PortletBar/Managers/Buttons/ReloadButton.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Utils/ButtonsFactory.ts","webpack://spheeres/./js/Core/Controls/PortletBar/PortletBar.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/View.html","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/Design.html","webpack://spheeres/./js/Core/Controls/PortletBar/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/QueryBuilder/Templates/View.html","webpack://spheeres/./js/Core/Controls/QueryBuilder/QueryBuilder.ts","webpack://spheeres/./js/Core/Controls/QueryBuilder/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/RecipeEditor/Stores/RecipeEditorStore.ts","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorTree/Response/RecipeRecordModel.ts","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorTree/Response/RecipeResponseModel.ts","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorTree/Models/View/RecipeViewModel.ts","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorTree/Templates/ItemNameTemplate.html","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorTree/Models/View/RecipeNodeViewModel.ts","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorTree/Mappings/RecipeEditorTreeNodeViewModelMapping.ts","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorTree/Mappings/RecipeEditorTreeViewModelMapping.ts","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorTree/RecipeEditorTreeUnit.ts","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorTree/Templates/Template.html","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorTree/Templates/ItemTemplate.html","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorTree/RecipeEditorTree.ts","webpack://spheeres/./js/Core/Controls/RecipeEditor/Templates/RecipeVersionDropdownTemplate.html","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorEdit.ts","webpack://spheeres/./js/Core/Controls/RecipeEditor/Templates/RecipeEdit.html","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditorCreate.ts","webpack://spheeres/./js/Core/Controls/RecipeEditor/Templates/RecipeCreate.html","webpack://spheeres/./js/Core/Controls/RecipeEditor/RecipeEditor.ts","webpack://spheeres/./js/Core/Controls/RecipeEditor/Templates/View.html","webpack://spheeres/./js/Core/Controls/RecipeEditor/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/RecipeEditor/Templates/Design.html","webpack://spheeres/./js/Core/Controls/RecipeEditor/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/RecipeEditor/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/RecipeEditor/Constants.ts","webpack://spheeres/./js/Core/Controls/RecordSecurity/Stores/RecordSecurityStore.ts","webpack://spheeres/./js/Core/Controls/Search/Templates/View.html","webpack://spheeres/./js/Core/Controls/Search/Search.ts","webpack://spheeres/./js/Core/Controls/Search/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Search/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Search/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/SelectUser/Stores/SelectUserStore.ts","webpack://spheeres/./js/Core/Controls/SpimCopy/Stores/SPIMCopyStore.ts","webpack://spheeres/./js/Core/Controls/SpimCopy/Models/SPIMCopyControlModel.ts","webpack://spheeres/./js/Core/Controls/SpimCopy/SpimCopy.ts","webpack://spheeres/./js/Core/Controls/SpimCopy/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/SpimCopy/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/SpimCopy/Templates/View.html","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetFieldDescriptorDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetCellPositionDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetDimensionDescriptorDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetDescriptorDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetCellDataDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetPageDescriptorDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetPageDataDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Enums/SpreadsheetDimensionDirections.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetDataDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Store/SpreadsheetStore.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetSaveDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetPageRemoveDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetNewPageDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetRecordDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/Dto/SpreadsheetRecordFieldDto.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/View/SpreadsheetDescriptor.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/View/SpreadsheetFieldDescriptor.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/View/SpreadsheetDimensionDescriptor.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/View/SpreadsheetCellPosition.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/View/SpreadsheetPageDescriptor.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/View/SpreadsheetPageData.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/View/SpreadsheetCellData.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Mappings/SpreadsheetViewMappingProfile.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/View/SpreadsheetData.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Models/View/SpreadsheetCellRange.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Components/RenamePagePopup/Models/State/RenamePageState.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Components/RenamePagePopup/Models/View/PageName.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Components/RenamePagePopup/RenamePagePopup.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Components/RenamePagePopup/Templates/Template.html","webpack://spheeres/./js/Core/Controls/Spreadsheet/Components/RenamePagePopup/Templates/SearchTemplate.html","webpack://spheeres/./js/Core/Controls/Spreadsheet/Components/RenamePagePopup/Templates/DropdownTemplate.html","webpack://spheeres/./js/Core/Controls/Spreadsheet/SpreadsheetControl.ts","webpack://spheeres/./js/Core/Controls/Spreadsheet/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Spreadsheet/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Spreadsheet/Templates/View.html","webpack://spheeres/./js/Core/Controls/Spreadsheet/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Spreadsheet/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Spreadsheet/Templates/Legend.html","webpack://spheeres/./js/Core/Controls/StaticControlsProvider.ts","webpack://spheeres/./js/Core/Controls/StepPage/Templates/View.html","webpack://spheeres/./js/Core/Controls/Step/Models/StepRecordDto.ts","webpack://spheeres/./js/Core/Controls/Step/Stores/StepApi.ts","webpack://spheeres/./js/Core/Controls/StepPage/StepPage.ts","webpack://spheeres/./js/Core/Controls/StepPage/Templates/Design.html","webpack://spheeres/./js/Core/Controls/StepPage/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Step/Templates/View.html","webpack://spheeres/./js/Core/Controls/Step/Stores/TransactionApi.ts","webpack://spheeres/./js/Core/Controls/Step/Step.ts","webpack://spheeres/./js/Core/Controls/Step/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Step/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Step/Templates/Design.html","webpack://spheeres/./js/Core/Controls/TabPage/Templates/View.html","webpack://spheeres/./js/Core/Controls/TabPage/TabPage.ts","webpack://spheeres/./js/Core/Controls/TabPage/Templates/Design.html","webpack://spheeres/./js/Core/Controls/TabPage/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Tab/Templates/View.html","webpack://spheeres/./js/Core/Controls/Tab/Tab.ts","webpack://spheeres/./js/Core/Controls/Tab/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Tab/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Tab/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Tag/Models/TagsScreenDataModel.ts","webpack://spheeres/./js/Core/Controls/Tag/Stores/TagStore.ts","webpack://spheeres/./js/Core/Controls/Tag/Models/TagListChanges.ts","webpack://spheeres/./js/Core/Controls/Tag/ViewModels/TagGroupViewModel.ts","webpack://spheeres/./js/Core/Controls/Tag/ViewModels/TagViewModel.ts","webpack://spheeres/./js/Core/Controls/Tag/Tagbook/TagbookTemplate.html","webpack://spheeres/./js/Core/Controls/Tag/Tagbook/TagbookList/TagbookList.ts","webpack://spheeres/./js/Core/Controls/Tag/Tagbook/TagbookList/TagbookListTemplate.html","webpack://spheeres/./js/Core/Controls/Tag/Tagbook/ChangeModel.ts","webpack://spheeres/./js/Core/Controls/Tag/Tagbook/Tagbook.ts","webpack://spheeres/./js/Core/Controls/Tag/Tag.ts","webpack://spheeres/./js/Core/Controls/Tag/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Tag/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Tag/Templates/View.html","webpack://spheeres/./js/Core/Controls/Tag/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Tag/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Tag/Templates/List.html","webpack://spheeres/./js/Core/Controls/Text/Constants.ts","webpack://spheeres/./js/Core/Controls/Text/PhoneNumberLengths.ts","webpack://spheeres/./js/Core/Controls/Text/Text.ts","webpack://spheeres/./js/Core/Controls/Text/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Text/Templates/View.html","webpack://spheeres/./js/Core/Controls/Text/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Text/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Text/Templates/Edit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Utils/DateTime.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Views/TimeWritingView.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Views/Year/State.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Stores/TimeWritingStore.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Models/View/YearDataViewModel.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Year/WeekMappings.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Year/YearMappingProfile.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/YearTemplate.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Models/View/UsersViewModel.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Day/UserMappings.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Day/UsersMappingProfile.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Views/Year/YearView.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Constants/DaysOfWeek.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Constants/TimeStatus.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/RowEditorTemplate.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Utils/RowEditor.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Views/Day/ViewState.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Views/Day/State.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Day/SubjectMappings.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Common/LookupValueMappings.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Day/ReservationMappings.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Day/RequestedDateMappings.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Day/DayMappings.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Day/EntityMappings.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Common/LookupFieldMappings.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Day/DayMappingProfile.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/DayTemplate.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/Edit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/Edit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/Edit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/Edit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/SelectableSubjectEdit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/SelectedSubjectEdit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/Edit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Multiselect/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Multiselect/Edit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/Edit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/Edit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/Edit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Dash/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Views/Day/DayView.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Actions/Day/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Actions/Day/Edit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Models/View/WeekDataViewModel.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Week/WeekMappingProfile.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Views/Week/WeekView.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/WeekTemplate.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Utils/DisapprovedEditor.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Models/View/DisapprovedDataViewModel.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Disapproved/DisapprovedReservationMappings.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Disapproved/DisapprovedRequestedDateMappings.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Mappings/Disapproved/DisapprovedMappingProfile.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Views/Day/DisapprovedView.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/DisapprovedTemplate.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Actions/Disapproved/View.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Actions/Disapproved/Edit.html","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/TimeWriting.ts","webpack://spheeres/./js/Core/Components/Controls/TimeWriting/Templates/TimeWriting.html","webpack://spheeres/./js/Core/Controls/TimeWriting/Templates/View.html","webpack://spheeres/./js/Core/Controls/TimeWriting/TimeWriting.ts","webpack://spheeres/./js/Core/Controls/TimeWriting/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/TimeWriting/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Timer/ActiveTimersModal/ActiveTimersModal.ts","webpack://spheeres/./js/Core/Controls/Timer/ActiveTimersModal/Templates/ActiveTimersModal.html","webpack://spheeres/./js/Core/Controls/Timer/Models/TimerModel.ts","webpack://spheeres/./js/Core/Controls/Timer/Stores/TimerStore.ts","webpack://spheeres/./js/Core/Controls/Timer/Constants/ActiveTimers.ts","webpack://spheeres/./js/Core/Controls/Timer/LiveTimer.ts","webpack://spheeres/./js/Core/Controls/Timer/Timer.ts","webpack://spheeres/./js/Core/Controls/Timer/Templates/View.html","webpack://spheeres/./js/Core/Controls/Timer/Templates/Edit.html","webpack://spheeres/./js/Core/Controls/Timer/Templates/Design.html","webpack://spheeres/./js/Core/Controls/Timer/Templates/ToolBar.html","webpack://spheeres/./js/Core/Controls/Timer/Templates/HelpView.html","webpack://spheeres/./js/Core/Controls/Timer/Templates/LiveTimerForKanban.html","webpack://spheeres/./js/Core/Enums/DataModes.ts","webpack://spheeres/./js/Core/Enums/LifeStatuses.ts","webpack://spheeres/./js/Core/Enums/SearchGroups.ts","webpack://spheeres/./js/Core/ErrorHolder/ErrorHolder.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/BaseProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/CheckboxProperty/Constants.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/ColorPicker/ColorPicker.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/ColorPicker/Templates/ColorPicker.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/Constants.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/SelectProperty/SelectProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/SelectProperty/Templates/SelectProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/SelectProperty/Templates/SelectPropertySource.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/TabSecurity/Enums/BusinessRoleRestrictions.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/TabSecurity/Stores/TabSecurityStore.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/WebSizeProperty/WebSizeProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/WebSizeProperty/Templates/WebSizeProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/SubFlowProperty/SubFlowDto.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/SubFlowProperty/SubFlowStore.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/SubFlowProperty/SubFlowProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/SubFlowProperty/Template.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/CheckboxProperty/CheckboxProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/CheckboxProperty/Templates/CheckboxProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/InputNumberProperty/InputNumberProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/InputNumberProperty/Templates/InputNumberProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/InputTextProperty/InputTextProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/InputTextProperty/Templates/InputTextProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/SelectEntityTypeProperty/SelectEntityTypeProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/SelectEntityTypeProperty/Templates/SelectEntityTypeProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/SelectLockedLinkEntityProperty/SelectLockedLinkEntityProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/SelectLockedLinkEntityProperty/Templates/SelectLockedLinkEntityProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/MultiSelectProperty/MultiSelectProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/MultiSelectProperty/Templates/MultiSelectProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/MultiSelectProperty/Templates/DropDownContent.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/InputUrlProperty/InputUrlProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/InputUrlProperty/Templates/InputUrlProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/FileUploadProperty/Templates/FileUploadPropertyTemplate.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/FileUploadProperty/FileUploadProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/QueryConditionProperty/QueryConditionProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/QueryConditionProperty/Templates/QueryConditionPropertyTemplate.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/QueryBuilderProperty/QueryBuilderProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/QueryBuilderProperty/Template.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/AlternativeEntitiesProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Stores/AlternativeEntitiesPropertyStore.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/AlternativeEntitiesProperty/AlternativeEntitiesProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/TypesProperty/Templates/TypesProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/TypesProperty/Templates/TypePropertyColorDropdown.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/TypesProperty/TypesProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/BackLinkingProperty/Store/Store.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/BackLinkingProperty/Models/ViewModel.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/BackLinkingProperty/BackLinkingProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/BackLinkingProperty/Templates/BackLinkingProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/QuerySortProperty/QuerySortProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/QuerySortProperty/Templates/QuerySortProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/QuerySelectorProperty/QuerySelectorProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/QuerySelectorProperty/Templates/QuerySelectorProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/ConsultScreenLayout/ConsultScreenLayout.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/ConsultScreenLayout/Templates/ConsultScreenLayoutProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/TabSecurity/Views/DisplayView/Models/BusinessRolesDisplaySettings.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/TabSecurity/Views/DisplayView/TabSecurityDisplayView.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/TabSecurity/Views/DisplayView/Templates/Template.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/TabSecurity/Views/EditView/Models/BusinessRolesEditSettings.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/TabSecurity/Views/EditView/TabSecurityEditView.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/TabSecurity/Views/EditView/Templates/Template.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/TabSecurity/Models/BusinessRole.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/TabSecurity/TabSecurity.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/TabSecurity/Templates/Template.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/DWPackageProperty/Stores/DWPackagePropertyStore.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/DWPackageProperty/DWPackageProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/DWPackageProperty/Templates/DWPackageProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/DimensionalTableProperty/Models/Dimension.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/DimensionalTableProperty/Models/DimensionField.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/DimensionalTableProperty/Models/DimensionalTablePropertyValue.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/DimensionalTableProperty/DimensionalTableProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/DimensionalTableProperty/Templates/DimensionalTableProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/CardScreenProperty/CardScreenProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/CardScreenProperty/Templates/Template.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/TemplateTypeProperty/TemplateTypeProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/TemplateTypeProperty/TemplateTypePropertyTemplate.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/DocumentTemplateProperty/DocumentTemplateProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/DocumentTemplateProperty/DocumentTemplatePropertyTemplate.html","webpack://spheeres/./js/Core/GeneralProperties/Managers/ExampleAppointmentProperty/Stores/Models/ExampleAppointmentResponseModel.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/ExampleAppointmentProperty/Stores/ExampleAppointmentStore.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/ExampleAppointmentProperty/ExampleAppointmentProperty.ts","webpack://spheeres/./js/Core/GeneralProperties/Managers/ExampleAppointmentProperty/Templates/ExampleAppointmentProperty.html","webpack://spheeres/./js/Core/GeneralProperties/Utils/PropertyManagersFactory.ts","webpack://spheeres/./js/Core/GeneralProperties/Models/ConfigModel.ts","webpack://spheeres/./js/Core/GlobalManager/Stores/GlobalStore.ts","webpack://spheeres/./js/Core/Constants/CultureCodes.ts","webpack://spheeres/./js/Core/GlobalManager/GlobalManager.ts","webpack://spheeres/./js/Core/GlobalManager/Models/GlobalModel.ts","webpack://spheeres/./js/Core/Icon/Icon.ts","webpack://spheeres/./js/Core/Icon/IconStore.ts","webpack://spheeres/./js/Core/KnockoutExtentions/AddCssForAllExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/AlignDropdown.ts","webpack://spheeres/./js/Core/KnockoutExtentions/AllowBindingsExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/AnimateExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/AutoComplete.ts","webpack://spheeres/./js/Core/KnockoutExtentions/BlockElement.ts","webpack://spheeres/./js/Core/KnockoutExtentions/BootstrapCollapseExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/BootstrapMultiselect.ts","webpack://spheeres/./js/Core/KnockoutExtentions/BootstrapPopoverExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/BootstrapSwitchExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/Canvas.ts","webpack://spheeres/./js/Core/KnockoutExtentions/ContextMenu.ts","webpack://spheeres/./js/Core/KnockoutExtentions/CropperExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/CustomScrollbarExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/CustomTableExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/DatetimepickerExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/DebugExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/DirtyFlagExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/DragulaExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/DropdownExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/DropzoneExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/EllipsisTooltipExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/EnableAttrExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/EnterKeyExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/ErrorHandlingBindingProvider.ts","webpack://spheeres/./js/Core/KnockoutExtentions/EscKeyExtension.ts","webpack://spheeres/./js/Core/KnockoutExtentions/Extentions.ts","webpack://spheeres/./js/Core/KnockoutExtentions/ForEachPropExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/FreezeTableExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/FullCalendarExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/GroupedCheckboxExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/HasScrollBarExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/IframeContentExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/InputMaskExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/InputMask/AdditionalAliases.ts","webpack://spheeres/./js/Core/KnockoutExtentions/InputMask/DecimalInputMask.ts","webpack://spheeres/./js/Core/KnockoutExtentions/InputMask/IntegerInputMask.ts","webpack://spheeres/./js/Core/KnockoutExtentions/IntlTelInputExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/JsBarcodeExtension.ts","webpack://spheeres/./js/Core/KnockoutExtentions/KnobExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/KnockoutValidationExtensions.ts","webpack://spheeres/./js/Core/KnockoutExtentions/MiniColorsExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/MultilineEllipsis.ts","webpack://spheeres/./js/Core/KnockoutExtentions/NiceScrollExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/OptionExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/PreventBubbleExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/RenderTemplateXExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/ResizableExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/ScreenHeightExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/ScrollFixerExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/ScrollSynchronizingExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/SearchExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/SlimScrollExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/SmoothHeightExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/SubformResizeExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/TabNavigationExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/TextAreAutogrowExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/TinymceExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/TippyExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/ToggleExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/TooltipExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/UniformExtention.ts","webpack://spheeres/./js/Core/KnockoutExtentions/ViewerJsExtention.ts","webpack://spheeres/./js/Core/LifecycleDesigner/Constants/Constants.ts","webpack://spheeres/./js/Core/LifecycleDesigner/Models/DTO/DwPackageDto.ts","webpack://spheeres/./js/Core/LifecycleDesigner/Models/DTO/FollowupModeDto.ts","webpack://spheeres/./js/Core/LifecycleDesigner/Models/DTO/NodeTypeDto.ts","webpack://spheeres/./js/Core/LifecycleDesigner/Models/DTO/LifecycleStepDto.ts","webpack://spheeres/./js/Core/LifecycleDesigner/Models/DTO/TriggerDto.ts","webpack://spheeres/./js/Core/Models/OperationResultModel.ts","webpack://spheeres/./js/Core/Models/Screens/ScreenModel.ts","webpack://spheeres/./js/Core/Models/Screens/SubFormModel.ts","webpack://spheeres/./js/Core/Portlets/Enums/PortletStates.ts","webpack://spheeres/./js/Core/Portlets/Utils/PortletManagerEventHandlersFactory.ts","webpack://spheeres/./js/Core/Portlets/Managers/Base/BasePortletManager.ts","webpack://spheeres/./js/Core/Portlets/Models/Store/DesignedPortlet.ts","webpack://spheeres/./js/Core/Portlets/Models/Store/DesignedPortletSpace.ts","webpack://spheeres/./js/Core/Portlets/Models/Runtime/PortletSpace.ts","webpack://spheeres/./js/Core/Portlets/Utils/PortletBarEventHandlersFactory.ts","webpack://spheeres/./js/Core/Controls/PortletBar/Utils/RuntimeSettingsReader.ts","webpack://spheeres/./js/Core/Portlets/Managers/Runtime/PortletManager.ts","webpack://spheeres/./js/Core/Portlets/Templates/PortletManager.html","webpack://spheeres/./js/Core/Portlets/Models/Design/Explorer/PortletsExplorer.ts","webpack://spheeres/./js/Core/Portlets/Templates/PortletExplorer.html","webpack://spheeres/./js/Core/Portlets/Models/Design/Explorer/EntityPortlet.ts","webpack://spheeres/./js/Core/Portlets/Utils/GuidToPortletInfoMap.ts","webpack://spheeres/./js/Core/Portlets/Managers/Design/PortletDesignManager.ts","webpack://spheeres/./js/Core/Portlets/Models/Design/Explorer/PortletsCollection.ts","webpack://spheeres/./js/Core/Portlets/Stores/PortletSpaceStore.ts","webpack://spheeres/./js/Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModel.ts","webpack://spheeres/./js/Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModal.ts","webpack://spheeres/./js/Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModal.html","webpack://spheeres/./js/Core/Portlets/Managers/Runtime/PortletSpaceManager.ts","webpack://spheeres/./js/Core/Portlets/Templates/PortletSpace.html","webpack://spheeres/./js/Core/Portlets/Models/Runtime/Portlet.ts","webpack://spheeres/./js/Core/Portlets/Templates/Portlet.html","webpack://spheeres/./js/Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationCell.ts","webpack://spheeres/./js/Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationGrid.ts","webpack://spheeres/./js/Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationHeader.ts","webpack://spheeres/./js/Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationRow.ts","webpack://spheeres/./js/Core/ProfilePage/Deduplication/Stores/DeduplicationStore.ts","webpack://spheeres/./js/Core/ProfilePage/LicenseHolder/Models/LicenseHolderModel.ts","webpack://spheeres/./js/Core/ProfilePage/LicenseHolder/Stores/LicenseHolderStore.ts","webpack://spheeres/./js/Core/Results/Exceptions/Base/Exception.ts","webpack://spheeres/./js/Core/Results/ResultModels/OperationResult.ts","webpack://spheeres/./js/Core/ScreenManager/Models/ActionSubjectRecordModel.ts","webpack://spheeres/./js/Core/ScreenManager/Models/ControlDataModel.ts","webpack://spheeres/./js/Core/ScreenManager/Models/LifeStatusInfo.ts","webpack://spheeres/./js/Core/ScreenManager/Models/RecordExampleModel.ts","webpack://spheeres/./js/Core/ScreenManager/Models/RecordPersonalizationModel.ts","webpack://spheeres/./js/Core/ScreenManager/Models/RecordSpecsModel.ts","webpack://spheeres/./js/Core/ScreenManager/Models/ReferenceModel.ts","webpack://spheeres/./js/Core/ScreenManager/Models/ReferenceTableModel.ts","webpack://spheeres/./js/Core/ScreenManager/Models/RightsModel.ts","webpack://spheeres/./js/Core/ScreenManager/Models/ScreenDataModel.ts","webpack://spheeres/./js/Core/ScreenManager/Models/SelectedEntityModel.ts","webpack://spheeres/./js/Core/ScreenManager/Models/SelectedEntityRecordModel.ts","webpack://spheeres/./js/Core/ScreenManager/Models/SelectedRecordModel.ts","webpack://spheeres/./js/Core/ScreenManager/Models/TranslationModel.ts","webpack://spheeres/./js/Core/ScreenManager/ScreenManager.ts","webpack://spheeres/./js/Core/ScreenManager/Stores/ScreenStore.ts","webpack://spheeres/./js/Core/Controls/StaticControlsInitializer.ts","webpack://spheeres/./js/Core/Components/ScreenSwitcher/Models/MenuItemModel.ts","webpack://spheeres/./js/Core/Components/ScreenSwitcher/ScreenSwitcher.ts","webpack://spheeres/./js/Core/Components/ScreenSwitcher/Templates/View.html","webpack://spheeres/./js/Core/Screens/BaseScreen.ts","webpack://spheeres/./js/Core/Screens/CardScreen/CardScreenUtils.ts","webpack://spheeres/./js/Core/Common/SoftColorsProvider.ts","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Components/TabGrid/Stores/TabGridStore.ts","webpack://spheeres/./js/Core/Components/CustomFunctions/Facades/LinkEditorFacade.ts","webpack://spheeres/./js/Core/Components/CustomFunctions/Facades/LinkEditorTabGridFacade.ts","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Components/TabGrid/TabGrid.ts","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Components/TabGrid/Templates/TabGrid.html","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Components/TabTables/Models/TabTableData.ts","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Components/TabTables/TabTables.ts","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Components/TabTables/Templates/TabTables.html","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/LinkEditor.ts","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Templates/LinkEditor.html","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Models/DataModel.ts","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Models/PropertyFieldConfigModel.ts","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Models/LinkedFieldValueModel.ts","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Models/LinkEditorTabSettingsModel.ts","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Models/LinkEditorModel.ts","webpack://spheeres/./js/Core/Screens/Common/LinkEditor/Stores/LinkEditorStore.ts","webpack://spheeres/./js/Core/Screens/ConsultScreen/Events.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Models/EntityTypeModel.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Models/FieldModel.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Models/TranslationModel.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Models/EntityModel.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Models/PlannerLevelEntityModel.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Models/ImageFieldModel.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Models/TableWithImagesModel.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Stores/EntitiesStore.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/Models/FormProperties.ts","webpack://spheeres/./js/Core/Screens/EditScreen/Events.ts","webpack://spheeres/./js/Core/Screens/EditScreen/Models/DataModel.ts","webpack://spheeres/./js/Core/Screens/EditScreen/Stores/InsertOrUpdateRecordStore.ts","webpack://spheeres/./js/Core/Screens/Events.ts","webpack://spheeres/./js/Core/Screens/Forms/ActionBar/ActionBar.ts","webpack://spheeres/./js/Core/Screens/Forms/Base/BaseForm.ts","webpack://spheeres/./js/Core/Screens/Forms/BottomBar/BottomBar.ts","webpack://spheeres/./js/Core/Screens/Forms/SubForm/SubForm.ts","webpack://spheeres/./js/Core/Screens/Forms/SubForm/Templates/View.html","webpack://spheeres/./js/Core/Screens/Forms/SubForm/Templates/Design.html","webpack://spheeres/./js/Core/Screens/ProfileSelectorScreen/Stores/ProfileSelectorStore.ts","webpack://spheeres/./js/Core/Screens/ProfileSelectorScreen/Templates/Template.html","webpack://spheeres/./js/Core/Screens/ProfileSelectorScreen/ProfileSelectorScreen.ts","webpack://spheeres/./js/Core/Components/ProgressBar/Models/View/LifeStatusViewModel.ts","webpack://spheeres/./js/Core/Components/ProgressBar/ActionDropdown/Templates/ActionDropdown.html","webpack://spheeres/./js/Core/Components/ProgressBar/ActionDropdown/ActionDropdown.ts","webpack://spheeres/./js/Core/Components/ProgressBar/ProgressBar.ts","webpack://spheeres/./js/Core/Components/ProgressBar/Templates/View.html","webpack://spheeres/./js/Core/Components/ProgressBar/Templates/Edit.html","webpack://spheeres/./js/Core/Screens/ConsultScreen/Models/FollowUpRecordRequestModel.ts","webpack://spheeres/./js/Core/Screens/ConsultScreen/Stores/ScreenDataStore.ts","webpack://spheeres/./js/Core/Screens/ConsultScreen/Models/UpdateRecordLifestatusRequestModel.ts","webpack://spheeres/./js/Core/Screens/ConsultScreen/ConsultScreen.ts","webpack://spheeres/./js/Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ConsultScreen.html","webpack://spheeres/./js/Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ReferenceConsultScreen.html","webpack://spheeres/./js/Core/Screens/ListScreen/ListScreen.ts","webpack://spheeres/./js/Core/Screens/Templates/AdditionalConsultScreen/ListScreen/ListScreen.html","webpack://spheeres/./js/Core/Screens/SpecialScreen/SpecialScreen.ts","webpack://spheeres/./js/Core/Screens/Templates/AdditionalConsultScreen/SpecialScreen/SpecialScreen.html","webpack://spheeres/./js/Core/Screens/DesignScreen/Models/UpdateScreenModel.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/Stores/UpdateScreenStore.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Models/ControlEditorModel.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/BaseControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/BaseControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Models/BlobFieldModel.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Stores/BlobFieldsStore.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Models/LookupFieldModel.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Stores/LookupFieldsStore.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Enums/LabelPositions.ts","webpack://spheeres/./js/Core/Components/IconManager/IconManager.ts","webpack://spheeres/./js/Core/Components/IconManager/Templates/IconManager.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/ControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/ControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/FieldControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/FieldControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/GridControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/GridControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/InvoicingControl/Models/InvoicingControlConfigOptions.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Stores/Controls/FinancialControlStore.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/InvoicingControl/InvoicingControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/FinancialControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/GenericButtonControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/GenericButtonControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/CurrencyControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/EntityControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/EntityControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/BasketControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/PLannerLevelControl/PlannerLevelControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/PlannerLevelControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/GanttChartControl/Stores/GanttChartControlEditorStore.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/GanttChartControl/GanttChartControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/GanttChartControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/ProductConfigurator/Stores/ProductConfiguratorControlEditorStore.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/ProductConfigurator/ProductConfiguratorControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/ProductConfiguratorControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/SignatureControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/SignatureControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/BookControl/BookControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/BookControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/TabPageControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/TabPageControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/SpreadsheetControl/SpreadsheetControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/SpreadsheetControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/Image/ImageControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/ImageControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/KanbanControl/Stores/KanbanControlEditorStore.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/KanbanControl/KanbanControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/KanbanControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/ChartControl/Stores/ChartControlEditorStore.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/ChartControl/ChartControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/ChartControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/RecipeEditorControl/RecipeEditorControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/RecipeEditorControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/MapsControl/MapsControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Templates/StepPageControlEditor.html","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Models/ProcessCardPageModel.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Stores/StepPageStore.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/StepPageControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Editors/ButtonCopyControl/ButtonCopyControlEditor.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/ControlEditor/Factory/ControlEditorFactory.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/AfterDropValidation/AfterDropValidation.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/AfterDropValidation/PortletAfterDropValidation.ts","webpack://spheeres/./js/Core/Screens/DesignScreen/AfterDropValidation/ScreenTypeToAfterDropValidation.ts","webpack://spheeres/./js/Core/Screens/Dashboard/DashboardUtils.ts","webpack://spheeres/./js/Core/Screens/Templates/DesignScreen/BaseDesignScreen.html","webpack://spheeres/./js/Core/Screens/DesignScreen/DesignScreen.ts","webpack://spheeres/./js/Core/Screens/Templates/DesignScreen/DashboardDesignScreen.html","webpack://spheeres/./js/Core/Screens/Templates/DesignScreen/ProcessCardDesignScreen.html","webpack://spheeres/./js/Core/Components/Controls/MakePersonal/Models/RecordPersonalizationModel.ts","webpack://spheeres/./js/Core/Components/Controls/MakePersonal/MakePersonal.ts","webpack://spheeres/./js/Core/Components/Controls/MakePersonal/Templates/MakePersonal.html","webpack://spheeres/./js/Core/Components/Controls/MakeExample/Models/RecordExampleInfoModel.ts","webpack://spheeres/./js/Core/Components/Controls/MakeExample/Events.ts","webpack://spheeres/./js/Core/Components/Controls/MakeExample/MakeExample.ts","webpack://spheeres/./js/Core/Components/Controls/MakeExample/Templates/MakeExample.html","webpack://spheeres/./js/Core/Components/SecurityEditor/Models/SecurityEditorModel.ts","webpack://spheeres/./js/Core/Components/SecurityEditor/Form/SecurityEditorForm.ts","webpack://spheeres/./js/Core/Components/SecurityEditor/Form/Templates/SecurityEditorForm.html","webpack://spheeres/./js/Core/Components/SecurityEditor/Form/Models/SecurityEditorFormModel.ts","webpack://spheeres/./js/Core/Components/SecurityEditor/Stores/SecurityEditorStore.ts","webpack://spheeres/./js/Core/Components/SecurityEditor/Templates/SecurityEditor.html","webpack://spheeres/./js/Core/Components/SecurityEditor/Form/Models/SecurityDataModel.ts","webpack://spheeres/./js/Core/Components/SecurityEditor/SecurityEditor.ts","webpack://spheeres/./js/Core/Controls/LinkList/Models/UserModel.ts","webpack://spheeres/./js/Core/Screens/EditScreen/EditScreen.ts","webpack://spheeres/./js/Core/Screens/Templates/AdditionalConsultScreen/EditScreen/EditScreen.html","webpack://spheeres/./js/Core/Screens/QueryScreen/QueryScreen.ts","webpack://spheeres/./js/Core/Screens/Templates/AdditionalConsultScreen/QueryScreen/QueryScreen.html","webpack://spheeres/./js/Core/Screens/Templates/AdditionalConsultScreen/CardScreen/CardScreen.html","webpack://spheeres/./js/Core/Screens/CardScreen/CardScreen.ts","webpack://spheeres/./js/Core/Screens/StepsScreen/StepsScreen.ts","webpack://spheeres/./js/Core/Screens/Templates/AdditionalConsultScreen/StepsScreen/StepsScreen.html","webpack://spheeres/./js/Core/Screens/EmptyScreen/EmptyScreen.ts","webpack://spheeres/./js/Core/Screens/Templates/AdditionalConsultScreen/EmptyScreen/EmptyScreen.html","webpack://spheeres/./js/Core/Screens/Dashboard/Dashboard.ts","webpack://spheeres/./js/Core/Screens/Templates/AdditionalConsultScreen/Dashboard/DashboardTemplate.html","webpack://spheeres/./js/Core/Screens/ProcessCardPage/ProcessCardPage.ts","webpack://spheeres/./js/Core/Screens/Templates/AdditionalConsultScreen/ProcessCardScreen/ProcessCardScreen.html","webpack://spheeres/./js/Core/Screens/ScreenFactory.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/Enums/Enums.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/Events.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/Models/GroupNameToRecordsModel.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/Models/SearchFieldModel.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/Models/SearchModeModel.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/Models/SearchResultModel.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/Models/SearchScreenModel.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/Models/SearchTypeModel.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/Models/UserVarsRecordModel.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/SearchResultGrid/SearchResultCell.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/SearchResultGrid/SearchResultGrid.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/SearchResultGrid/SearchResultRow.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/SearchScreen.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/Stores/SearchScreenStore.ts","webpack://spheeres/./js/Core/Screens/SearchScreen/Stores/SearchStore.ts","webpack://spheeres/./js/Core/Screens/Stores/RecordStore.ts","webpack://spheeres/./js/Core/Screens/TypeScreen/Events.ts","webpack://spheeres/./js/Core/Screens/TypeScreen/Models/ExampleRecordModel.ts","webpack://spheeres/./js/Core/Screens/TypeScreen/Models/KindModel.ts","webpack://spheeres/./js/Core/Screens/TypeScreen/Models/TableTypeModel.ts","webpack://spheeres/./js/Core/Screens/TypeScreen/Models/TableTypesModel.ts","webpack://spheeres/./js/Core/Screens/TypeScreen/Stores/EntityTypesStore.ts","webpack://spheeres/./js/Core/Screens/TypeScreen/TypeScreen.ts","webpack://spheeres/./js/Core/Screens/TypeScreen/Templates/TypeScreen.html","webpack://spheeres/./js/Core/UserVarsManager/UserVarsManager.ts","webpack://spheeres/./js/Core/UserVarsManager/UserVarsStores/UserVarsStore.ts","webpack://spheeres/./js/DatabaseDesigner/Components/Assistant/Models/MessageDto.ts","webpack://spheeres/./js/DatabaseDesigner/Components/Assistant/Models/PromptDto.ts","webpack://spheeres/./js/DatabaseDesigner/Components/Assistant/AssistantApi.ts","webpack://spheeres/./js/DatabaseDesigner/Components/Assistant/AssistantTemplate.html","webpack://spheeres/./js/DatabaseDesigner/Components/Assistant/GeneratedTables.ts","webpack://spheeres/./js/DatabaseDesigner/Components/Assistant/GeneratedTablesTemplate.html","webpack://spheeres/./js/DatabaseDesigner/Components/Assistant/Models/AIDBStructure.ts","webpack://spheeres/./js/DatabaseDesigner/Components/Assistant/Models/AITableDefinition.ts","webpack://spheeres/./js/DatabaseDesigner/Components/Assistant/Models/AIFieldDefinition.ts","webpack://spheeres/./js/DatabaseDesigner/Components/Assistant/Assistant.ts","webpack://spheeres/./js/DatabaseDesigner/Models/BaseModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/ClusterSettingsModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/CollectionModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/DatabaseDesignerModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/FieldModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/KindModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/LanguageModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/LifestatusModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/LinkEditorTabSettingsModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/LinkEditorVisibilityModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/LinkTableModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/RelationTypeFiltersModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/RelationTypeValueModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/TableBaseModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/TableFielModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/ScreenModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/TableModel.ts","webpack://spheeres/./js/Core/LifecycleDesigner/Models/DTO/LifecycleLinkDto.ts","webpack://spheeres/./js/Core/LifecycleDesigner/Models/DTO/LifecycleDto.ts","webpack://spheeres/./js/DatabaseDesigner/Models/TableTypeModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/TranslationModel.ts","webpack://spheeres/./js/DatabaseDesigner/Models/TypeRestrictionModel.ts","webpack://spheeres/./js/FormatEditor/FormatConverter.ts","webpack://spheeres/./js/HelpBook/Store/HelpBookStore.ts","webpack://spheeres/./js/HelpBook/HelpDescription/HelpDescription.ts","webpack://spheeres/./js/HelpBook/HelpDescription/Templates/HelpDescription.html","webpack://spheeres/./js/HelpBook/HelpStatusFlow/HelpStatusFlow.ts","webpack://spheeres/./js/HelpBook/HelpStatusFlow/Templates/HelpStatusFlow.html","webpack://spheeres/./js/HelpBook/HelpEntity/Templates/HelpEntity.html","webpack://spheeres/./js/HelpBook/HelpEntity/HelpEntity.ts","webpack://spheeres/./js/HelpBook/HelpScreen/HelpScreen.ts","webpack://spheeres/./js/HelpBook/HelpScreen/Templates/HelpScreen.html","webpack://spheeres/./js/HelpBook/HelpForm/Templates/HelpForm.html","webpack://spheeres/./js/HelpBook/HelpForm/HelpForm.ts","webpack://spheeres/./js/HelpBook/HelpControl/HelpControl.ts","webpack://spheeres/./js/HelpBook/HelpControl/Templates/HelpControl.html","webpack://spheeres/./js/HelpBook/HelpType/HelpType.ts","webpack://spheeres/./js/HelpBook/HelpType/Templates/HelpType.html","webpack://spheeres/./js/HelpBook/Store/Models/HelpBookModel.ts","webpack://spheeres/./js/HelpBook/Templates/HelpBook.html","webpack://spheeres/./js/Core/LifecycleDesigner/LifecycleDesignerStore.ts","webpack://spheeres/./js/Core/LifecycleDesigner/LifecycleDesignerFlow.ts","webpack://spheeres/./js/HelpBook/HelpBook.ts","webpack://spheeres/./js/HelpBook/Templates/HelpIconTemplate.html","webpack://spheeres/./js/LockScreen/Stores/LockScreenStore.ts","webpack://spheeres/./js/LockScreen/Models/LockScreenModel.ts","webpack://spheeres/./js/LockScreen/LockScreen.ts","webpack://spheeres/./js/LockScreen/Templates/LockScreen.html","webpack://spheeres/./js/LookupEditor/Enums/ColumnTypes.ts","webpack://spheeres/./js/LookupEditor/NewRecord/Models/NewRecordModel.ts","webpack://spheeres/./js/LookupEditor/NewRecord/NewRecordScreen.ts","webpack://spheeres/./js/LookupEditor/NewRecord/Templates/NewRecord.html","webpack://spheeres/./js/LookupEditor/Store/LookupEditorStore.ts","webpack://spheeres/./js/LookupEditor/Store/Models/LookupModel.ts","webpack://spheeres/./js/LookupEditor/Store/TablesStore.ts","webpack://spheeres/./js/MenuManager/Breadcrumbs/Breadcrumbs.ts","webpack://spheeres/./js/MenuManager/Breadcrumbs/Templates/Breadcrumbs.html","webpack://spheeres/./js/LookupEditor/Models/TreeNodeModel.ts","webpack://spheeres/./js/LookupEditor/Models/TreeModel.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Base/ColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/Common.html","webpack://spheeres/./js/LookupEditor/Templates/Columns/DateTime.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/DateColumnEditor.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/DateTimeColumnEditor.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/BinaryColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/Time.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/TimeColumnEditor.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/TimeSpanColumnEditor.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/GuidColumnEditor.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/CurrencyColumnEditor.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/DocumentColumnEditor.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/FlagCheckColumnEditor.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/ImageColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/Image.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/IntegerColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/Integer.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/PKeyColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/PKey.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/MultiSelectColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/MultiSelect.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/ColorColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/Color.html","webpack://spheeres/./js/Core/Common/ValueConverter.ts","webpack://spheeres/./js/LookupEditor/Models/EditableRowModel.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/LookupColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/Lookup.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/IconColumnEditor.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/SortColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/Sort.html","webpack://spheeres/./js/LookupEditor/Enums/SystemFields.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/TextColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/Text.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/TypeColumnEditor.ts","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/YesNoColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/YesNo.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/MemoColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/Memo.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/NonEditableColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/NonEditable.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/NonEditableImageColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/NonEditableImage.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/DecimalColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/Decimal.html","webpack://spheeres/./js/LookupEditor/ColumnEditors/Concrete/PasswordColumnEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Columns/Password.html","webpack://spheeres/./js/LookupEditor/Utils/ColumnEditorFactory.ts","webpack://spheeres/./js/LookupEditor/Models/EditableColumnModel.ts","webpack://spheeres/./js/LookupEditor/Models/LookupGridModel.ts","webpack://spheeres/./js/LookupEditor/LookupEditor.ts","webpack://spheeres/./js/LookupEditor/Templates/Editor.html","webpack://spheeres/./js/LookupEditor/Templates/Tree.html","webpack://spheeres/./js/FieldCollection/Stores/FieldCollectionStore.ts","webpack://spheeres/./js/FieldCollection/PriorityManager/PriorityManagerConstants.ts","webpack://spheeres/./js/FieldCollection/PriorityManager/PriorityManager.ts","webpack://spheeres/./js/FieldCollection/FieldTableRow/FieldTableRow.ts","webpack://spheeres/./js/FieldCollection/FieldTableRow/FieldTableRow.html","webpack://spheeres/./js/FieldCollection/FieldTable/FieldTable.ts","webpack://spheeres/./js/FieldCollection/FieldTable/FieldTable.html","webpack://spheeres/./js/FieldCollection/Enums/FCRequiredFields.ts","webpack://spheeres/./js/FieldCollection/FieldCollection.ts","webpack://spheeres/./js/FieldCollection/Templates/FieldCollection.html","webpack://spheeres/./js/MenuManager/MenuAreas/Models/TableModel.ts","webpack://spheeres/./js/MenuManager/MenuAreas/Models/DesignedScreenModel.ts","webpack://spheeres/./js/MenuManager/MenuAreas/Models/MenuAreaModel.ts","webpack://spheeres/./js/MenuManager/MenuAreas/Stores/MenuAreasStore.ts","webpack://spheeres/./js/Core/Components/RecentAndFavorites/RecentAndFavorites.ts","webpack://spheeres/./js/Core/Components/RecentAndFavorites/RecentAndFavorites.html","webpack://spheeres/./js/Core/Components/MenuQueries/Stores/MenuQueriesStore.ts","webpack://spheeres/./js/Core/Components/MenuQueries/MenuQueries.ts","webpack://spheeres/./js/Core/Components/MenuQueries/Templates/MenuQueries.html","webpack://spheeres/./js/MenuManager/MenuAreas/MenuAreas.ts","webpack://spheeres/./js/MenuManager/MenuAreas/Templates/MenuAreas.html","webpack://spheeres/./js/MenuManager/MenuAreas/Templates/IconTemplate.html","webpack://spheeres/./js/Pages/CanvasDesignerPage.ts","webpack://spheeres/./js/Pages/Templates/CanvasDesigner.html","webpack://spheeres/./js/Pages/FunctionDesignerPage.ts","webpack://spheeres/./js/Pages/Templates/FunctionDesigner.html","webpack://spheeres/./js/Core/CyberConfigManager/Models/DatabaseModel.ts","webpack://spheeres/./js/Core/CyberConfigManager/ViewModels/CyberConfigManagerViewModel.ts","webpack://spheeres/./js/Core/CyberConfigManager/UI/CyberConfigValidateForm.ts","webpack://spheeres/./js/Core/CyberConfigManager/Store/CyberConfigStore.ts","webpack://spheeres/./js/Core/CyberConfigManager/Templates/CyberConfig.html","webpack://spheeres/./js/AdminDashboard/Pages/AdminPage.ts","webpack://spheeres/./js/Core/CyberConfigManager/Components/CyberConfig.ts","webpack://spheeres/./js/Core/CyberConfigManager/Templates/ErrorPage.html","webpack://spheeres/./js/Core/CyberConfigManager/Templates/CyberConfigForm.html","webpack://spheeres/./js/Core/CyberConfigManager/Templates/CyberConfigManager.html","webpack://spheeres/./js/Core/CyberConfigManager/Store/GuestPageStore.ts","webpack://spheeres/./js/Core/CyberConfigManager/Components/GuestPage.ts","webpack://spheeres/./js/Core/CyberConfigManager/Templates/GuestPage.html","webpack://spheeres/./js/Core/CyberConfigManager/Store/EnvironmentsPageStore.ts","webpack://spheeres/./js/Core/CyberConfigManager/Models/CreateEnvironmentModel.ts","webpack://spheeres/./js/Core/CyberConfigManager/Components/EnvironmentsPage.ts","webpack://spheeres/./js/Core/CyberConfigManager/Templates/EnvironmentsPage.html","webpack://spheeres/./js/Core/CyberConfigManager/CyberConfigManager.ts","webpack://spheeres/./js/Pages/TransaltionEditorPage/Models/TranslationModel.ts","webpack://spheeres/./js/Pages/TransaltionEditorPage/Stores/TranslationEditorStore.ts","webpack://spheeres/./js/Pages/TransaltionEditorPage/TranslationEditor/TranslationCell.ts","webpack://spheeres/./js/Pages/TransaltionEditorPage/TranslationEditor/Templates/TranslationCell.html","webpack://spheeres/./js/Pages/TransaltionEditorPage/TranslationEditor/Events.ts","webpack://spheeres/./js/Pages/TransaltionEditorPage/TranslationEditor/TranslationActionCell.ts","webpack://spheeres/./js/Pages/TransaltionEditorPage/TranslationEditor/Templates/TranslationActionCell.html","webpack://spheeres/./js/Pages/TransaltionEditorPage/Models/UpdateTranslationModel.ts","webpack://spheeres/./js/Pages/TransaltionEditorPage/TranslationEditor/TranslationRow.ts","webpack://spheeres/./js/Pages/TransaltionEditorPage/TranslationEditor/Templates/TranslationRow.html","webpack://spheeres/./js/Pages/TransaltionEditorPage/TranslationEditor/TranslationHeader.ts","webpack://spheeres/./js/Pages/TransaltionEditorPage/TranslationEditor/TranslationGrid.ts","webpack://spheeres/./js/Pages/TransaltionEditorPage/TranslationEditor/Templates/TranslationGrid.html","webpack://spheeres/./js/Pages/TransaltionEditorPage/Templates/Dropdown.html","webpack://spheeres/./js/Pages/TransaltionEditorPage/TranslationEditorPage.ts","webpack://spheeres/./js/Pages/TransaltionEditorPage/Templates/TranslationEditor.html","webpack://spheeres/./js/Core/Portlets/PortletsPage.ts","webpack://spheeres/./js/Core/Portlets/Templates/PortletsPage.html","webpack://spheeres/./js/GuestHomePage/GuestHomePage.ts","webpack://spheeres/./js/GuestHomePage/Template.html","webpack://spheeres/./js/GuestHomePage/iFrame.html","webpack://spheeres/./js/Core/Common/Stores/RecordSecurityStore.ts","webpack://spheeres/./js/Core/NetworkDesigner/Events/NetworkDesignerEvents.ts","webpack://spheeres/./js/Core/NetworkDesigner/Stores/NetworkDesignerStore.ts","webpack://spheeres/./js/Core/NetworkDesigner/Stores/Models/UpdateRemoteDatabaseAccessDto.ts","webpack://spheeres/./js/Core/NetworkDesigner/Stores/Models/CreateRemoteDatabaseAccessDto.ts","webpack://spheeres/./js/Core/NetworkDesigner/Models/RemoteAccessUser.ts","webpack://spheeres/./js/Core/NetworkDesigner/Components/RemoteDatabaseAccess.ts","webpack://spheeres/./js/Core/NetworkDesigner/Templates/AccessTemplate.html","webpack://spheeres/./js/Core/NetworkDesigner/Models/RemoteDatabaseAccessData.ts","webpack://spheeres/./js/Core/NetworkDesigner/Components/RemoteDatabase.ts","webpack://spheeres/./js/Core/NetworkDesigner/Mappings/NetworkDesignerMappings.ts","webpack://spheeres/./js/Core/NetworkDesigner/NetworkDesigner.ts","webpack://spheeres/./js/Core/NetworkDesigner/Templates/Template.html","webpack://spheeres/./js/Pages/BI/Models/BISettings.ts","webpack://spheeres/./js/Pages/BI/Models/Dashboard.ts","webpack://spheeres/./js/Pages/BI/Stores/BIStore.ts","webpack://spheeres/./js/Pages/BI/BIDesignerPage.ts","webpack://spheeres/./js/Pages/Templates/BoldBIDesigner.html","webpack://spheeres/./js/Pages/Templates/EmbedDesigner.html","webpack://spheeres/./js/Pages/AdministrationPage/AdministrationPageTemplate.html","webpack://spheeres/./js/Pages/AdministrationPage/Tabs/SpaceStatusDto.ts","webpack://spheeres/./js/Pages/AdministrationPage/Tabs/ServiceStatusDto.ts","webpack://spheeres/./js/Pages/AdministrationPage/Tabs/EnvironmentDto.ts","webpack://spheeres/./js/Pages/AdministrationPage/AdministrationStore.ts","webpack://spheeres/./js/Pages/AdministrationPage/Tabs/SpaceStatus.ts","webpack://spheeres/./js/Pages/AdministrationPage/Tabs/SpeceStatus.html","webpack://spheeres/./js/Pages/AdministrationPage/Tabs/ServiceStatus.ts","webpack://spheeres/./js/Pages/AdministrationPage/Tabs/ServiceStatus.html","webpack://spheeres/./js/Pages/AdministrationPage/Tabs/Environment.ts","webpack://spheeres/./js/Pages/AdministrationPage/Tabs/Environment.html","webpack://spheeres/./js/Pages/AdministrationPage/AdministrationPage.ts","webpack://spheeres/./js/MenuManager/MenuManager.ts","webpack://spheeres/./js/Pages/DictionaryComparison/DictionaryComparisonStore.ts","webpack://spheeres/./js/Pages/DictionaryComparison/DictionaryComparisonPage.ts","webpack://spheeres/./js/Pages/DictionaryComparison/DictionaryComparisonTemplate.html","webpack://spheeres/./js/MenuManager/Templates/MenuManager.html","webpack://spheeres/./js/MenuManager/PubSubEvents.ts","webpack://spheeres/./js/MenuManager/UserMenu/Events.ts","webpack://spheeres/./js/Core/ProfilePage/Events/Events.ts","webpack://spheeres/./js/Core/ProfilePage/ThemeBuilder/Stores/ThemeBuilderStore.ts","webpack://spheeres/./js/Core/ProfilePage/ThemeBuilder/ThemeBuilder.ts","webpack://spheeres/./js/Core/ProfilePage/ThemeBuilder/Templates/ThemeBuilder.html","webpack://spheeres/./js/Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/Text/Text.ts","webpack://spheeres/./js/Core/ProfilePage/LicenseHolder/LicenseHolder.ts","webpack://spheeres/./js/Core/ProfilePage/LicenseHolder/Templates/LicenseHolder.html","webpack://spheeres/./js/Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/YesNo/YesNo.ts","webpack://spheeres/./js/Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/YesNo/Templates/YesNo.html","webpack://spheeres/./js/Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/Text/Templates/Text.html","webpack://spheeres/./js/Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/Time/Time.ts","webpack://spheeres/./js/Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/Time/Templates/Time.html","webpack://spheeres/./js/Core/ProfilePage/PersonalSettings/Models/PersonalSettingsModel.ts","webpack://spheeres/./js/Core/ProfilePage/PersonalSettings/Stores/PersonalSettingsStore.ts","webpack://spheeres/./js/Core/ProfilePage/PersonalSettings/Templates/PersonalSettings.html","webpack://spheeres/./js/Core/ProfilePage/PersonalSettings/PersonalSettings.ts","webpack://spheeres/./js/Core/ProfilePage/NotificationDesigner/Stores/NotificationDesignerStore.ts","webpack://spheeres/./js/Core/ProfilePage/NotificationDesigner/Constants/Constants.ts","webpack://spheeres/./js/Core/ProfilePage/NotificationDesigner/NotificationDesigner.ts","webpack://spheeres/./js/Core/ProfilePage/NotificationDesigner/Templates/NotificationDesigner.html","webpack://spheeres/./js/Core/ProfilePage/ProfileCard/Models/ProfilePasswordModel.ts","webpack://spheeres/./js/Core/ProfilePage/ProfileCard/Models/ProfileCardViewModel.ts","webpack://spheeres/./js/Core/ProfilePage/ProfileCard/Models/ProfileCardModel.ts","webpack://spheeres/./js/Core/ProfilePage/ProfileCard/Stores/ProfileCardStore.ts","webpack://spheeres/./js/Core/ProfilePage/ProfileCard/ProfileCard.ts","webpack://spheeres/./js/Core/ProfilePage/ProfileCard/Templates/ProfileCard.html","webpack://spheeres/./js/Core/ProfilePage/ProfileCard/Events/Events.ts","webpack://spheeres/./js/Core/ProfilePage/NetworkDatabases/Models/RemoteDatabaseConnection.ts","webpack://spheeres/./js/Core/ProfilePage/NetworkDatabases/Mappings/RemoteDatabaseConnectionMappings.ts","webpack://spheeres/./js/Core/ProfilePage/NetworkDatabases/Stores/RemoteDatabasesStore.ts","webpack://spheeres/./js/Core/ProfilePage/NetworkDatabases/Stores/Models/GetRemoteDatabaseConnectionUrlDto.ts","webpack://spheeres/./js/Core/ProfilePage/NetworkDatabases/Stores/Models/SetConnectedDto.ts","webpack://spheeres/./js/Core/ProfilePage/NetworkDatabases/Stores/Models/DisconnectDto.ts","webpack://spheeres/./js/Core/ProfilePage/NetworkDatabases/RemoteDatabases.ts","webpack://spheeres/./js/Core/ProfilePage/NetworkDatabases/Templates/Template.html","webpack://spheeres/./js/Core/ProfilePage/ProfilePage.ts","webpack://spheeres/./js/Core/ProfilePage/Templates/ProfilePage.html","webpack://spheeres/./js/Core/ProfilePage/AboutPage/AboutPage.ts","webpack://spheeres/./js/Core/ProfilePage/AboutPage/Templates/AboutPage.html","webpack://spheeres/./js/Core/ProfilePage/Deduplication/Deduplication.ts","webpack://spheeres/./js/Core/ProfilePage/Deduplication/Templates/Deduplication.html","webpack://spheeres/./js/Core/ProfilePage/Downloads/Downloads.ts","webpack://spheeres/./js/Core/ProfilePage/Downloads/Templates/Downloads.html","webpack://spheeres/./js/MenuManager/Stores/UserMenuStore.ts","webpack://spheeres/./js/MenuManager/Wiki/Wiki.ts","webpack://spheeres/./js/MenuManager/Wiki/Wiki.html","webpack://spheeres/./js/MenuManager/UserMenu/UserMenu.ts","webpack://spheeres/./js/MenuManager/UserMenu/Templates/UserMenu.html","webpack://spheeres/./js/Pages/FormDesignerPage.ts","webpack://spheeres/./js/Pages/Templates/FormDesigner.html","webpack://spheeres/./js/QueryBuilder/Constants.ts","webpack://spheeres/./js/QueryBuilder/Enums.ts","webpack://spheeres/./js/QueryBuilder/Events.ts","webpack://spheeres/./js/QueryBuilder/Models/ConcreteEntityModel.ts","webpack://spheeres/./js/QueryBuilder/Models/EditQueryModel.ts","webpack://spheeres/./js/QueryBuilder/Models/EntityModel.ts","webpack://spheeres/./js/QueryBuilder/Models/FieldModel.ts","webpack://spheeres/./js/QueryBuilder/Models/RelatedEntitiesModel.ts","webpack://spheeres/./js/QueryBuilder/Models/RelatedSubEntitiesModel.ts","webpack://spheeres/./js/QueryBuilder/Models/TableSecurityUnitModel.ts","webpack://spheeres/./js/QueryBuilder/Models/NewQueryDto.ts","webpack://spheeres/./js/QueryBuilder/Stores/NewQueryStore.ts","webpack://spheeres/./js/QueryBuilder/Stores/UpdateQueryStore.ts","webpack://spheeres/./js/QueryBuilder/TableViewConfig/PriorityList.ts","webpack://spheeres/./js/QueryBuilder/TableViewConfig/FieldInfo.ts","webpack://spheeres/./js/QueryBuilder/TableViewConfig/EntityGroup.ts","webpack://spheeres/./js/QueryBuilder/TableViewConfig/Templates/TableViewFieldConfig.html","webpack://spheeres/./js/QueryBuilder/TableViewConfig/TableViewConfig.ts","webpack://spheeres/./js/QueryBuilder/TableViewConfig/Templates/TableViewConfig.html","webpack://spheeres/./js/QueryBuilder/FieldListMenu/FieldListMenu.ts","webpack://spheeres/./js/QueryBuilder/FieldListMenu/Templates/FieldListMenu.html","webpack://spheeres/./js/QueryBuilder/FieldListMenu/FieldListItem.ts","webpack://spheeres/./js/QueryBuilder/EntityListMenu/EntityListMenu.ts","webpack://spheeres/./js/QueryBuilder/EntityListMenu/Templates/EntityListMenu.html","webpack://spheeres/./js/QueryBuilder/EntityListMenu/EntityListItem.ts","webpack://spheeres/./js/QueryBuilder/ElementZIndexManager.ts","webpack://spheeres/./js/QueryBuilder/QueryEntityJoin/QueryLinkEntity/JoinTypesImages.ts","webpack://spheeres/./js/QueryBuilder/QueryEntityJoin/JoinOptionsMenu/Events.ts","webpack://spheeres/./js/QueryBuilder/QueryEntityJoin/JoinOptionsMenu/JoinOptionsMenu.ts","webpack://spheeres/./js/QueryBuilder/QueryEntityJoin/JoinOptionsMenu/Templates/JoinOptionsMenu.html","webpack://spheeres/./js/QueryBuilder/QueryEntity/Templates/QueryEntity.html","webpack://spheeres/./js/QueryBuilder/QueryEntity/QueryEntity.ts","webpack://spheeres/./js/QueryBuilder/QueryEntity/Templates/QuerySubEntity.html","webpack://spheeres/./js/QueryBuilder/QueryEntityJoin/QueryLinkEntity/Events.ts","webpack://spheeres/./js/QueryBuilder/QueryEntityJoin/QueryLinkEntity/UseMainImages.ts","webpack://spheeres/./js/QueryBuilder/QueryEntityJoin/QueryLinkEntity/QueryLinkEntity.ts","webpack://spheeres/./js/QueryBuilder/QueryEntityJoin/QueryLinkEntity/Templates/QueryLinkEntity.html","webpack://spheeres/./js/QueryBuilder/QueryEntityJoin/Templates/QueryEntityJoin.html","webpack://spheeres/./js/QueryBuilder/QueryEntityJoin/Templates/SubQueryEntityJoin.html","webpack://spheeres/./js/QueryBuilder/QueryEntityJoin/QueryEntityJoin.ts","webpack://spheeres/./js/QueryBuilder/QueryExpression/QueryExpression.ts","webpack://spheeres/./js/QueryBuilder/QueryExpression/Templates/QueryExpression.html","webpack://spheeres/./js/QueryBuilder/QuerySorting/SortItem/Templates/SortItem.html","webpack://spheeres/./js/QueryBuilder/QuerySorting/SortItem/SortItem.ts","webpack://spheeres/./js/QueryBuilder/QuerySorting/QuerySorting.ts","webpack://spheeres/./js/QueryBuilder/QuerySorting/Templates/QuerySorting.html","webpack://spheeres/./js/QueryBuilder/QueryResultGrid/QueryResultGrid.ts","webpack://spheeres/./js/QueryBuilder/QueryBootstrap/Events.ts","webpack://spheeres/./js/QueryBuilder/QueryBootstrap/QueryBootstrap.ts","webpack://spheeres/./js/QueryBuilder/QueryBootstrap/Templates/QueryBootstrap.html","webpack://spheeres/./js/QueryBuilder/CrossTableConfig/DisplayField.ts","webpack://spheeres/./js/QueryBuilder/CrossTableConfig/FieldInfo.ts","webpack://spheeres/./js/QueryBuilder/CrossTableConfig/Templates/CrossTableConfig.html","webpack://spheeres/./js/QueryBuilder/CrossTableConfig/ClusteredConfig.ts","webpack://spheeres/./js/QueryBuilder/CrossTableConfig/CrossTableConfig.ts","webpack://spheeres/./js/QueryBuilder/QueryScreen/PrimaryKeyField.ts","webpack://spheeres/./js/QueryBuilder/QueryScreen/Templates/QueryScreen.html","webpack://spheeres/./js/QueryBuilder/QueryScreen/QueryScreen.ts","webpack://spheeres/./js/QueryBuilder/TemplateScreen/TemplateScreen.ts","webpack://spheeres/./js/QueryBuilder/TemplateScreen/Templates/TemplateScreen.html","webpack://spheeres/./js/QueryBuilder/Templates/QueryBuilder.html","webpack://spheeres/./js/QueryBuilder/QueryBuilder.ts","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder.ts","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionBuilder/Templates/ConditionBuilder.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionGroup/ConditionGroup.ts","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionGroup/Templates/ConditionGroup.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/Text/Text.ts","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/Text/Templates/Text.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/YesNo/YesNo.ts","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/YesNo/Templates/YesNo.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/Spim/Spim.ts","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/Spim/Templates/Spim.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/Date/Date.ts","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/Date/Templates/Date.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/Lookup/Lookup.ts","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/Lookup/Templates/Lookup.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/DocumentStatusLookup/DocumentStatusLookup.ts","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/DocumentStatusLookup/Templates/DocumentStatusLookup.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionItem/ConditionItemField.ts","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/QueryBuilder/QueryBuilder.ts","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionEditors/QueryBuilder/Templates/QueryBuilder.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionItem/Templates/PasteVariableDropdownTemplate.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionItem/ConditionItem.ts","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionItem/Templates/ConditionItem.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionItem/Templates/ConditionItemSimple.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionItem/Templates/ConditionItemSPIM.html","webpack://spheeres/./js/QueryBuilder/QueryCondition/ConditionItem/ConditionItemConfig.ts","webpack://spheeres/./js/QueryBuilder/QueryParamsPage/Events.ts","webpack://spheeres/./js/QueryBuilder/QueryParamsPage/QueryParamsPage.ts","webpack://spheeres/./js/QueryBuilder/QueryParamsPage/Templates/QueryParamsPage.html","webpack://spheeres/./js/QueryBuilder/Stores/DeleteQueryStore.ts","webpack://spheeres/./js/QueryBuilder/Stores/EntityMetadataStore.ts","webpack://spheeres/./js/QueryBuilder/Stores/GetQueryStore.ts","webpack://spheeres/./js/QueryBuilder/Stores/LockQueryStore.ts","webpack://spheeres/./js/QueryBuilder/Models/GenericButtonModel.ts","webpack://spheeres/./js/QueryBuilder/Models/QueryScreenModel.ts","webpack://spheeres/./js/QueryBuilder/Models/CardScreenModel.ts","webpack://spheeres/./js/QueryBuilder/Models/RelationTypeValueModel.ts","webpack://spheeres/./js/QueryBuilder/Stores/QueryBuilderStore.ts","webpack://spheeres/./js/QueryBuilder/Util.ts","webpack://spheeres/./js/Session/SessionRecorder.ts","webpack://spheeres/./js/Session/SessionStore.ts","webpack://spheeres/./js/User/Store/Models/UserModel.ts","webpack://spheeres/./js/User/Store/UserStore.ts","webpack://spheeres/./js/User/UserManager.ts","webpack://spheeres/./js/common/life-status-enum.ts"],"sourcesContent":["// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\\"\\\"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
LicenseForm
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
Please, create a new one
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"


\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
1}\\\" class=\\\"product__info__price notCompareBox\\\">
1}\\\" class=\\\"product__info__price compareBox\\\">
:
1}\\\">
1}\\\">
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\\\"no :(

No products found

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

\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
:
:
\";\n// Exports\nexport default code;","// Module\nvar code = \"
No errors
(,)
:
` }, attr: { src: 'data:image/png;base64,' + $data.image }\\\">
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" ; \";\n// Exports\nexport default code;","// Module\nvar code = \" \\\"\\\" \\\"\\\" \";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"

\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
No Recent records
No Favorites selected
1,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'open-AltEntities': _searchAlternativeEntitiesShow()}\\\">
\";\n// Exports\nexport default code;","var map = {\n\t\"./af\": 19183,\n\t\"./af.js\": 19183,\n\t\"./ar\": 31035,\n\t\"./ar-dz\": 47214,\n\t\"./ar-dz.js\": 47214,\n\t\"./ar-kw\": 40830,\n\t\"./ar-kw.js\": 40830,\n\t\"./ar-ly\": 68899,\n\t\"./ar-ly.js\": 68899,\n\t\"./ar-ma\": 77258,\n\t\"./ar-ma.js\": 77258,\n\t\"./ar-sa\": 64096,\n\t\"./ar-sa.js\": 64096,\n\t\"./ar-tn\": 97826,\n\t\"./ar-tn.js\": 97826,\n\t\"./ar.js\": 31035,\n\t\"./az\": 20051,\n\t\"./az.js\": 20051,\n\t\"./be\": 23813,\n\t\"./be.js\": 23813,\n\t\"./bg\": 64323,\n\t\"./bg.js\": 64323,\n\t\"./bm\": 57837,\n\t\"./bm.js\": 57837,\n\t\"./bn\": 75780,\n\t\"./bn-bd\": 25959,\n\t\"./bn-bd.js\": 25959,\n\t\"./bn.js\": 75780,\n\t\"./bo\": 81451,\n\t\"./bo.js\": 81451,\n\t\"./br\": 76480,\n\t\"./br.js\": 76480,\n\t\"./bs\": 91607,\n\t\"./bs.js\": 91607,\n\t\"./ca\": 23232,\n\t\"./ca.js\": 23232,\n\t\"./cs\": 91034,\n\t\"./cs.js\": 91034,\n\t\"./cv\": 54213,\n\t\"./cv.js\": 54213,\n\t\"./cy\": 95800,\n\t\"./cy.js\": 95800,\n\t\"./da\": 40739,\n\t\"./da.js\": 40739,\n\t\"./de\": 66951,\n\t\"./de-at\": 82181,\n\t\"./de-at.js\": 82181,\n\t\"./de-ch\": 61339,\n\t\"./de-ch.js\": 61339,\n\t\"./de.js\": 66951,\n\t\"./dv\": 16938,\n\t\"./dv.js\": 16938,\n\t\"./el\": 59573,\n\t\"./el.js\": 59573,\n\t\"./en-au\": 62458,\n\t\"./en-au.js\": 62458,\n\t\"./en-ca\": 51816,\n\t\"./en-ca.js\": 51816,\n\t\"./en-gb\": 8069,\n\t\"./en-gb.js\": 8069,\n\t\"./en-ie\": 15586,\n\t\"./en-ie.js\": 15586,\n\t\"./en-il\": 60009,\n\t\"./en-il.js\": 60009,\n\t\"./en-in\": 51207,\n\t\"./en-in.js\": 51207,\n\t\"./en-nz\": 83724,\n\t\"./en-nz.js\": 83724,\n\t\"./en-sg\": 24334,\n\t\"./en-sg.js\": 24334,\n\t\"./eo\": 1292,\n\t\"./eo.js\": 1292,\n\t\"./es\": 66328,\n\t\"./es-do\": 61452,\n\t\"./es-do.js\": 61452,\n\t\"./es-mx\": 94444,\n\t\"./es-mx.js\": 94444,\n\t\"./es-us\": 81285,\n\t\"./es-us.js\": 81285,\n\t\"./es.js\": 66328,\n\t\"./et\": 7181,\n\t\"./et.js\": 7181,\n\t\"./eu\": 62830,\n\t\"./eu.js\": 62830,\n\t\"./fa\": 19565,\n\t\"./fa.js\": 19565,\n\t\"./fi\": 85541,\n\t\"./fi.js\": 85541,\n\t\"./fil\": 65661,\n\t\"./fil.js\": 65661,\n\t\"./fo\": 26087,\n\t\"./fo.js\": 26087,\n\t\"./fr\": 25396,\n\t\"./fr-ca\": 96581,\n\t\"./fr-ca.js\": 96581,\n\t\"./fr-ch\": 81294,\n\t\"./fr-ch.js\": 81294,\n\t\"./fr.js\": 25396,\n\t\"./fy\": 12533,\n\t\"./fy.js\": 12533,\n\t\"./ga\": 55796,\n\t\"./ga.js\": 55796,\n\t\"./gd\": 50847,\n\t\"./gd.js\": 50847,\n\t\"./gl\": 60439,\n\t\"./gl.js\": 60439,\n\t\"./gom-deva\": 46514,\n\t\"./gom-deva.js\": 46514,\n\t\"./gom-latn\": 66525,\n\t\"./gom-latn.js\": 66525,\n\t\"./gu\": 34232,\n\t\"./gu.js\": 34232,\n\t\"./he\": 50915,\n\t\"./he.js\": 50915,\n\t\"./hi\": 22095,\n\t\"./hi.js\": 22095,\n\t\"./hr\": 10762,\n\t\"./hr.js\": 10762,\n\t\"./hu\": 88275,\n\t\"./hu.js\": 88275,\n\t\"./hy-am\": 73094,\n\t\"./hy-am.js\": 73094,\n\t\"./id\": 27769,\n\t\"./id.js\": 27769,\n\t\"./is\": 99676,\n\t\"./is.js\": 99676,\n\t\"./it\": 74313,\n\t\"./it-ch\": 25141,\n\t\"./it-ch.js\": 25141,\n\t\"./it.js\": 74313,\n\t\"./ja\": 11985,\n\t\"./ja.js\": 11985,\n\t\"./jv\": 53908,\n\t\"./jv.js\": 53908,\n\t\"./ka\": 32808,\n\t\"./ka.js\": 32808,\n\t\"./kk\": 33930,\n\t\"./kk.js\": 33930,\n\t\"./km\": 71532,\n\t\"./km.js\": 71532,\n\t\"./kn\": 69461,\n\t\"./kn.js\": 69461,\n\t\"./ko\": 60502,\n\t\"./ko.js\": 60502,\n\t\"./ku\": 18660,\n\t\"./ku.js\": 18660,\n\t\"./ky\": 83088,\n\t\"./ky.js\": 83088,\n\t\"./lb\": 65742,\n\t\"./lb.js\": 65742,\n\t\"./lo\": 25417,\n\t\"./lo.js\": 25417,\n\t\"./lt\": 64968,\n\t\"./lt.js\": 64968,\n\t\"./lv\": 41202,\n\t\"./lv.js\": 41202,\n\t\"./me\": 34438,\n\t\"./me.js\": 34438,\n\t\"./mi\": 18498,\n\t\"./mi.js\": 18498,\n\t\"./mk\": 6744,\n\t\"./mk.js\": 6744,\n\t\"./ml\": 63949,\n\t\"./ml.js\": 63949,\n\t\"./mn\": 4459,\n\t\"./mn.js\": 4459,\n\t\"./mr\": 46679,\n\t\"./mr.js\": 46679,\n\t\"./ms\": 56960,\n\t\"./ms-my\": 47483,\n\t\"./ms-my.js\": 47483,\n\t\"./ms.js\": 56960,\n\t\"./mt\": 99989,\n\t\"./mt.js\": 99989,\n\t\"./my\": 64978,\n\t\"./my.js\": 64978,\n\t\"./nb\": 88460,\n\t\"./nb.js\": 88460,\n\t\"./ne\": 23993,\n\t\"./ne.js\": 23993,\n\t\"./nl\": 95378,\n\t\"./nl-be\": 62678,\n\t\"./nl-be.js\": 62678,\n\t\"./nl.js\": 95378,\n\t\"./nn\": 67560,\n\t\"./nn.js\": 67560,\n\t\"./oc-lnc\": 87060,\n\t\"./oc-lnc.js\": 87060,\n\t\"./pa-in\": 62187,\n\t\"./pa-in.js\": 62187,\n\t\"./pl\": 93532,\n\t\"./pl.js\": 93532,\n\t\"./pt\": 49396,\n\t\"./pt-br\": 92485,\n\t\"./pt-br.js\": 92485,\n\t\"./pt.js\": 49396,\n\t\"./ro\": 33179,\n\t\"./ro.js\": 33179,\n\t\"./ru\": 93797,\n\t\"./ru.js\": 93797,\n\t\"./sd\": 40675,\n\t\"./sd.js\": 40675,\n\t\"./se\": 59036,\n\t\"./se.js\": 59036,\n\t\"./si\": 59160,\n\t\"./si.js\": 59160,\n\t\"./sk\": 31266,\n\t\"./sk.js\": 31266,\n\t\"./sl\": 74699,\n\t\"./sl.js\": 74699,\n\t\"./sq\": 69728,\n\t\"./sq.js\": 69728,\n\t\"./sr\": 87129,\n\t\"./sr-cyrl\": 55000,\n\t\"./sr-cyrl.js\": 55000,\n\t\"./sr.js\": 87129,\n\t\"./ss\": 74346,\n\t\"./ss.js\": 74346,\n\t\"./sv\": 9877,\n\t\"./sv.js\": 9877,\n\t\"./sw\": 918,\n\t\"./sw.js\": 918,\n\t\"./ta\": 24787,\n\t\"./ta.js\": 24787,\n\t\"./te\": 6199,\n\t\"./te.js\": 6199,\n\t\"./tet\": 91851,\n\t\"./tet.js\": 91851,\n\t\"./tg\": 33881,\n\t\"./tg.js\": 33881,\n\t\"./th\": 87828,\n\t\"./th.js\": 87828,\n\t\"./tk\": 99677,\n\t\"./tk.js\": 99677,\n\t\"./tl-ph\": 29253,\n\t\"./tl-ph.js\": 29253,\n\t\"./tlh\": 95586,\n\t\"./tlh.js\": 95586,\n\t\"./tr\": 17254,\n\t\"./tr.js\": 17254,\n\t\"./tzl\": 61192,\n\t\"./tzl.js\": 61192,\n\t\"./tzm\": 69631,\n\t\"./tzm-latn\": 72841,\n\t\"./tzm-latn.js\": 72841,\n\t\"./tzm.js\": 69631,\n\t\"./ug-cn\": 71720,\n\t\"./ug-cn.js\": 71720,\n\t\"./uk\": 28048,\n\t\"./uk.js\": 28048,\n\t\"./ur\": 86751,\n\t\"./ur.js\": 86751,\n\t\"./uz\": 96343,\n\t\"./uz-latn\": 60513,\n\t\"./uz-latn.js\": 60513,\n\t\"./uz.js\": 96343,\n\t\"./vi\": 44821,\n\t\"./vi.js\": 44821,\n\t\"./x-pseudo\": 23973,\n\t\"./x-pseudo.js\": 23973,\n\t\"./yo\": 15000,\n\t\"./yo.js\": 15000,\n\t\"./zh-cn\": 43762,\n\t\"./zh-cn.js\": 43762,\n\t\"./zh-hk\": 9246,\n\t\"./zh-hk.js\": 9246,\n\t\"./zh-mo\": 41107,\n\t\"./zh-mo.js\": 41107,\n\t\"./zh-tw\": 79014,\n\t\"./zh-tw.js\": 79014\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;","define(['jquery', 'moment', 'Core/Controls/DateTime/WeekFormatUtils'], function ($, moment, weekFormatUtils) {\r\n\r\n const WeekFormatUtils = weekFormatUtils.WeekFormatUtils;\r\n\r\n (function ($) {\r\n \"use strict\";\r\n\r\n function getEscapedFormat(format) {\r\n return format === WeekFormatUtils.GetLocalizedWeekFormat() ? 'L' : format;\r\n }\r\n\r\n var DateTimePickerBootstrap = function (options) {\r\n this.init('dateTimePickerBootstrap', options, DateTimePickerBootstrap.defaults);\r\n this.initPicker(options, DateTimePickerBootstrap.defaults);\r\n };\r\n\r\n $.fn.editableutils.inherit(DateTimePickerBootstrap, $.fn.editabletypes.abstractinput);\r\n\r\n $.extend(DateTimePickerBootstrap.prototype, {\r\n initPicker: function(options, defaults) {\r\n options.dateTimePickerBootstrap = $.fn.editableutils.tryParseJson(options.dateTimePickerBootstrap, true);\r\n },\r\n\r\n render: function () {\r\n const isWeekFormat = this.options.dateTimePickerBootstrap.format === WeekFormatUtils.GetLocalizedWeekFormat();\r\n\r\n this.$input = this.$tpl;\r\n\r\n if (isWeekFormat) {\r\n WeekFormatUtils.PatchWeekFormatInput(this.$input.get(0), this.options.dateTimePickerBootstrap.format);\r\n }\r\n\r\n const pickerOptions = isWeekFormat\r\n ? WeekFormatUtils.PatchWeekFormatOptions(this.options.dateTimePickerBootstrap)\r\n : this.options.dateTimePickerBootstrap;\r\n\r\n this.$input.datetimepicker(pickerOptions);\r\n },\r\n value2html: function (value, element) {\r\n if (!value) {\r\n $(element).empty();\r\n return;\r\n }\r\n var textValue = '';\r\n if (value.current != undefined && value.current != null) {\r\n textValue = value.current;\r\n }\r\n if (value.default != undefined && value.default != null) {\r\n textValue = value.default;\r\n }\r\n $(element).html(textValue && moment(textValue).format(this.options.dateTimePickerBootstrap.format));\r\n },\r\n value2input: function (value) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n const format = getEscapedFormat(this.options.dateTimePickerBootstrap.format);\r\n\r\n if (value.current != undefined && value.current != null) {\r\n this.$input.val(moment(value.current).format(format));\r\n return;\r\n }\r\n if (value.default != undefined && value.default != null) {\r\n this.$input.val(moment(value.default).format(format));\r\n return;\r\n }\r\n },\r\n input2value: function () {\r\n const value = this.$input.val();\r\n const format = getEscapedFormat(this.options.dateTimePickerBootstrap.format);\r\n\r\n return {\r\n current: value ? moment(value, format).format() : undefined\r\n }\r\n },\r\n activate: function () {\r\n this.$input.focus();\r\n }\r\n });\r\n\r\n DateTimePickerBootstrap.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\r\n tpl: '',\r\n emptytext: 'Empty',\r\n dateTimePickerBootstrap: {\r\n locale: 'nl',\r\n format:'YYYY-MM-DD',\r\n widgetPositioning: {\r\n horizontal: 'right',\r\n vertical: 'bottom',\r\n forceParse: false\r\n }\r\n }\r\n });\r\n\r\n $.fn.editabletypes.dateTimePickerBootstrap = DateTimePickerBootstrap;\r\n\r\n }($));\r\n});","(function ($) {\r\n\t\"use strict\";\r\n\r\n\tvar TimePickerBootstrap = function (options) {\r\n\t\tthis.init('timePickerBootstrap', options, TimePickerBootstrap.defaults);\r\n\t\tthis.initPicker(options, TimePickerBootstrap.defaults);\r\n\t};\r\n\r\n\t$.fn.editableutils.inherit(TimePickerBootstrap, $.fn.editabletypes.abstractinput);\r\n\r\n\t$.extend(TimePickerBootstrap.prototype, {\r\n\t\tinitPicker: function(options, defaults) {\r\n\t\t\toptions.timePickerBootstrap = $.fn.editableutils.tryParseJson(options.timePickerBootstrap, true);\r\n\t\t},\r\n\r\n\t\trender: function () {\r\n\t\t\tthis.$input = this.$tpl;\r\n\t\t\tthis.$input.datetimepicker(this.options.timePickerBootstrap);\r\n\t\t},\r\n\t\tvalue2html: function (value, element) {\r\n\t\t\tif (!value) {\r\n\t\t\t\t$(element).empty();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar textValue = '';\r\n\t\t\tif (value.current != undefined && value.current != null) {\r\n\t\t\t\ttextValue = value.current;\r\n\t\t\t}\r\n\t\t\tif (value.default != undefined && value.default != null) {\r\n\t\t\t\ttextValue = value.default;\r\n\t\t\t}\r\n\t\t\t$(element).html(textValue);\r\n\t\t},\r\n\t\tvalue2input: function (value) {\r\n\t\t\tif (!value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (value.current != undefined && value.current != null) {\r\n\t\t\t\tthis.$input.val(value.current);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (value.default != undefined && value.default != null) {\r\n\t\t\t\tthis.$input.val(value.default);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t},\r\n\t\tinput2value: function () {\r\n\t\t\treturn {\r\n\t\t\t\tcurrent: this.$input.val()\r\n\t\t\t}\r\n\t\t},\r\n\t\tactivate: function () {\r\n\t\t\tthis.$input.focus();\r\n\t\t}\r\n\t});\r\n\r\n\tTimePickerBootstrap.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\r\n\t\ttpl: '',\r\n\t\temptytext: 'Empty',\r\n\t\ttimePickerBootstrap: {\r\n\t\t\tlocale: 'nl',\r\n\t\t\tformat:'YYYY-MM-DD',\r\n\t\t\twidgetPositioning: {\r\n\t\t\t\thorizontal: 'right',\r\n\t\t\t\tvertical: 'bottom',\r\n\t\t\t\tforceParse: false\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\t$.fn.editabletypes.timePickerBootstrap = TimePickerBootstrap;\r\n\r\n}(window.jQuery));\r\n","define([\"jquery\", \"Core/Common/Guid\"], function (jQuery, guid) {\r\n\t(function ($) {\r\n\t\"use strict\";\r\n\r\n\tvar MemoExtension = function (options) {\r\n\t\tthis.init('memo', options, MemoExtension.defaults);\r\n\t\tthis.editor = null;\r\n\t};\r\n\r\n\t$.fn.editableutils.inherit(MemoExtension, $.fn.editabletypes.abstractinput);\r\n\t$.extend(MemoExtension.prototype, {\r\n\t\trender: function () {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tvar uniqueId = guid.Guid.NewGuid();\r\n\t\t\tthis.$input = this.$tpl;\r\n\t\t\tthis.$input.attr('id', uniqueId);\r\n\t\t\ttinymce.baseURL = `${__webpack_public_path__}tinymce`;\r\n\r\n\t\t\tvar tinymceOptions = {\r\n\t\t\t\tselector: '#' + uniqueId,\r\n\t\t\t\tplugins: [\r\n\t\t\t\t\t'advlist autolink lists link charmap print preview anchor',\r\n\t\t\t\t\t'searchreplace visualblocks code fullscreen'\r\n\t\t\t\t],\r\n\t\t\t\ttoolbar: 'insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link | translations',\r\n\t\t\t\tcontent_css: [\r\n\t\t\t\t\t`${__webpack_public_path__}codepen.css`\r\n\t\t\t\t]\r\n\t\t\t};\r\n\r\n\t\t\tif (self.options.translations.length > 0) {\r\n\t\t\t\tself.options.newTranslations = [];\r\n\r\n\t\t\t\tself.options.translations.forEach(function (item, index) {\r\n\t\t\t\t\tself.options.newTranslations[index] = _.clone(item);\r\n\t\t\t\t});\r\n\t\t\t\ttinymceOptions.setup = function (editor) {\r\n\t\t\t\t\tvar languages = [];\r\n\t\t\t\t\tself.options.newTranslations.forEach(function (item, index) {\r\n\t\t\t\t\t\tlanguages.push({\r\n\t\t\t\t\t\t\ttype: 'menuitem',\r\n\t\t\t\t\t\t\ttext: _.unescape(item.LanguageShortName),\r\n\t\t\t\t\t\t\tonAction: function () {\r\n\r\n\t\t\t\t\t\t\t\tvar langObject = $(editor.editorContainer)\r\n\t\t\t\t\t\t\t\t\t.find('.tox-toolbar')\r\n\t\t\t\t\t\t\t\t\t.find('.tox-toolbar__group')\r\n\t\t\t\t\t\t\t\t\t.last()\r\n\t\t\t\t\t\t\t\t\t.find('.tox-tbtn__select-label');\r\n\r\n\t\t\t\t\t\t\t\tself.options.newTranslations[self.options.activeLangIndex].Value = self.editor.getContent();\r\n\r\n\t\t\t\t\t\t\t\tself.options.activeLangIndex = index;\r\n\r\n\t\t\t\t\t\t\t\tself.editor.setContent(_.unescape(self.options.newTranslations[self.options.activeLangIndex].Value));\r\n\r\n\t\t\t\t\t\t\t\tlangObject.text(item.LanguageShortName);\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 languageActive = languages[0].text;\r\n\t\t\t\t\teditor.ui.registry.addMenuButton('translations', {\r\n\t\t\t\t\t\ttext: languageActive,\r\n\t\t\t\t\t\tfetch: function (callback) {\r\n\t\t\t\t\t\t\tvar items = languages;\r\n\t\t\t\t\t\t\tcallback(items);\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\ttinymce.init(tinymceOptions);\r\n\r\n\t\t\tthis.editor = tinyMCE.get(uniqueId);\r\n\r\n\t\t},\r\n\t\tvalue2html: function (value, element) {\r\n\t\t},\r\n\t\tvalue2input: function (value) {\r\n\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tif (!value) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.options.translations.length > 0) {\r\n\t\t\t\tthis.options.activeLangIndex = 0;\r\n\t\t\t}\r\n\r\n\t\t\tif (value.current != undefined && value.current != null) {\r\n\t\t\t\tvar currentUnescaped = _.unescape(value.current);\r\n\t\t\t\tsetTimeout( function() {\r\n\t\t\t\t\tself.editor.setContent(currentUnescaped);\r\n\t\t\t\t}, 100);\r\n\t\t\t\treturn currentUnescaped;\r\n\t\t\t}\r\n\r\n\t\t\tif (value.default != undefined && value.default != null) {\r\n\t\t\t\tvar defaultUnescaped = _.unescape(value.default);\r\n\t\t\t\tthis.editor.setContent(defaultUnescaped);\r\n\t\t\t}\r\n\t\t},\r\n\t\tinput2value: function () {\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tvar content = self.editor.getContent();\r\n\r\n\t\t\tif (self.options.translations.length > 0) {\r\n\t\t\t\tself.options.newTranslations[self.options.activeLangIndex].Value = content;\r\n\r\n\t\t\t\tcontent = self.options.newTranslations[0].Value;\r\n\r\n\t\t\t\tself.options.newTranslations.forEach(function (item, index) {\r\n\t\t\t\t\tself.options.translations[index] = _.clone(item);\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tcurrent: _.escape(content),\r\n\t\t\t\t\ttranslates: self.options.newTranslations\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tcurrent: _.escape(content)\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t});\r\n\r\n\tMemoExtension.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\r\n\t\ttpl: '',\r\n\t\tnewTranslations: null,\r\n\t\ttranslations: null,\r\n\t\tvalue: {\r\n\t\t\tdefault: '',\r\n\t\t\tcurrent: ''\r\n\t\t},\r\n\t\tactiveLangIndex: 0\r\n\t});\r\n\r\n\t$.fn.editabletypes.memo = MemoExtension;\r\n}(jQuery))});","define(['require', 'module', 'exports', 'jquery', 'FormatEditor/FormatConverter'], function (\r\n require,\r\n module,\r\n exports,\r\n $,\r\n formatConverterModule\r\n) {\r\n var FormatConverter = formatConverterModule.FormatConverter;\r\n (function ($) {\r\n 'use strict';\r\n\r\n var PercentageExtantion = function (options) {\r\n this.init('percentage', options, PercentageExtantion.defaults);\r\n };\r\n\r\n $.fn.editableutils.inherit(PercentageExtantion, $.fn.editabletypes.abstractinput);\r\n\r\n $.extend(PercentageExtantion.prototype, {\r\n render: function () {\r\n var decimals = this.$input.editableutils.getConfigData($(this.options.scope)).decimals;\r\n const digits = Math.max(decimals - 2, 0);\r\n this.$input = this.$tpl;\r\n this.$input.inputmask('patchedDecimal', {\r\n radixPoint: FormatConverter.GetSeparator(),\r\n digits: digits,\r\n integerDigits: 38 - digits,\r\n autoGroup: true,\r\n groupSeparator: FormatConverter.GetGroupSeparator(),\r\n autoUnmask: true,\r\n rightAlign: false\r\n });\r\n },\r\n\r\n value2html: function (value, element) {\r\n\r\n if (!value) {\r\n $(element).empty();\r\n return;\r\n }\r\n\r\n var textValue = '';\r\n\r\n if (value.current != undefined && value.current != null) {\r\n textValue = value.current;\r\n }\r\n\r\n if (value.default != undefined && value.default != null) {\r\n textValue = value.default;\r\n }\r\n\r\n $(element).html(FormatConverter.LocalizeDecimalOrInteger(textValue.toString()));\r\n },\r\n value2input: function (value) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n if (value.current != undefined && value.current != null) {\r\n this.$input.val(value.current);\r\n return;\r\n }\r\n\r\n if (value.default != undefined && value.default != null) {\r\n this.$input.val(value.default);\r\n return;\r\n }\r\n this.$input.val(value);\r\n },\r\n input2value: function () {\r\n return {\r\n current: this.$input.val()\r\n }\r\n },\r\n\r\n activate: function () {\r\n this.$input.focus();\r\n }\r\n });\r\n\r\n PercentageExtantion.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\r\n tpl: ''\r\n });\r\n\r\n $.fn.editabletypes.percentage = PercentageExtantion;\r\n }($));\r\n});\r\n","define(['FormatEditor/FormatConverter', 'jquery' ,'touchSpin'], function (formatConverterModule, $) {\r\n\tvar FormatConverter = formatConverterModule.FormatConverter;\r\n\t(function ($) {\r\n\t\t'use strict';\r\n\r\n\t\tvar TouchSpinExtension = function (options) {\r\n\t\t\tthis.init('touchSpin', options, TouchSpinExtension.defaults);\r\n\t\t};\r\n\r\n\t\t$.fn.editableutils.inherit(TouchSpinExtension, $.fn.editabletypes.abstractinput);\r\n\t\t$.extend(TouchSpinExtension.prototype, {\r\n\t\t\trender: function () {\r\n\t\t\t\tthis.$input = this.$tpl;\r\n\t\t\t\tthis.$input.TouchSpin({\r\n\t\t\t\t\tmin: -Infinity,\r\n\t\t\t\t\tmax: Infinity,\r\n\t\t\t\t\tstepinterval: 50,\r\n\t\t\t\t\tmaxboostedstep: 10000000,\r\n\t\t\t\t\tcallback_before_calculation: function (value) {\r\n\t\t\t\t\t\treturn value.replace(new RegExp('[' + FormatConverter.GetGroupSeparator() + ']', 'g'), '');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.$input.inputmask('integer', {\r\n\t\t\t\t\tintegerDigits: 10,\r\n\t\t\t\t\tautoGroup: true,\r\n\t\t\t\t\tgroupSeparator: FormatConverter.GetGroupSeparator(),\r\n\t\t\t\t\tautoUnmask: true,\r\n\t\t\t\t\trightAlign: false\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tvalue2html: function (value, element) {\r\n\t\t\t\tif (!value) {\r\n\t\t\t\t\t$(element).empty();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar textValue = '';\r\n\r\n\t\t\t\tif (value.current != undefined && value.current != null) {\r\n\t\t\t\t\ttextValue = value.current;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (value.default != undefined && value.default != null) {\r\n\t\t\t\t\ttextValue = value.default;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$(element).html(FormatConverter.LocalizeDecimalOrInteger(textValue.toString()));\r\n\t\t\t},\r\n\t\t\tvalue2input: function (value) {\r\n\t\t\t\tif (!value) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (value.current != undefined && value.current != null) {\r\n\t\t\t\t\tthis.$input.val(value.current);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (value.default != undefined && value.default != null) {\r\n\t\t\t\t\tthis.$input.val(value.default);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tinput2value: function () {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tcurrent: this.$input.val()\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tactivate: function () {\r\n\t\t\t\tthis.$input.focus();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tTouchSpinExtension.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\r\n\t\t\ttpl: ''\r\n\t\t});\r\n\r\n\t\t$.fn.editabletypes.touchSpin = TouchSpinExtension;\r\n\r\n\t}($));\r\n});","define(['FormatEditor/FormatConverter', 'jquery' ,'touchSpin'], function (formatConverterModule, $) {\r\n var FormatConverter = formatConverterModule.FormatConverter;\r\n (function ($) {\r\n 'use strict';\r\n\r\n var TouchSpinDecimalExtension = function (options) {\r\n this.init('touchSpinDecimal', options, TouchSpinDecimalExtension.defaults);\r\n };\r\n\r\n $.fn.editableutils.inherit(TouchSpinDecimalExtension, $.fn.editabletypes.abstractinput);\r\n\r\n $.extend(TouchSpinDecimalExtension.prototype, {\r\n\r\n render: function () {\r\n var decimals = this.$input.editableutils.getConfigData($(this.options.scope)).decimals;\r\n\r\n this.$input = this.$tpl;\r\n this.$input.TouchSpin({\r\n min: -Infinity,\r\n max: Infinity,\r\n step: 1 / Math.pow(10, decimals),\r\n decimals: decimals,\r\n callback_before_calculation: function (value) {\r\n return value\r\n .replace(new RegExp('[' + FormatConverter.GetGroupSeparator() + ']', 'g'), '')\r\n .replace(new RegExp('[' + FormatConverter.GetSeparator() + ']', 'g'), '.');\r\n }\r\n });\r\n this.$input.inputmask('patchedDecimal', {\r\n radixPoint: FormatConverter.GetSeparator(),\r\n digits: decimals,\r\n integerDigits: 38 - decimals,\r\n autoGroup: true,\r\n groupSeparator: FormatConverter.GetGroupSeparator(),\r\n autoUnmask: true,\r\n rightAlign: false\r\n });\r\n },\r\n value2html: function (value, element) {\r\n\r\n if (!value) {\r\n $(element).empty();\r\n return;\r\n }\r\n\r\n var textValue = '';\r\n\r\n if (value.current != undefined && value.current != null) {\r\n textValue = value.current;\r\n }\r\n\r\n if (value.default != undefined && value.default != null) {\r\n textValue = value.default;\r\n }\r\n\r\n $(element).html(FormatConverter.LocalizeDecimalOrInteger(textValue.toString()));\r\n },\r\n value2input: function (value) {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n if (value.current != undefined && value.current != null) {\r\n this.$input.val(value.current);\r\n return;\r\n }\r\n\r\n if (value.default != undefined && value.default != null) {\r\n this.$input.val(value.default);\r\n return;\r\n }\r\n this.$input.val(value);\r\n },\r\n input2value: function () {\r\n return {\r\n current: this.$input.val()\r\n }\r\n },\r\n activate: function () {\r\n this.$input.focus();\r\n }\r\n });\r\n\r\n TouchSpinDecimalExtension.defaults = $.extend({}, $.fn.editabletypes.abstractinput.defaults, {\r\n tpl: ''\r\n });\r\n\r\n $.fn.editabletypes.touchSpinDecimal = TouchSpinDecimalExtension;\r\n }($));\r\n});","/**\r\n * bootstrap-switch - Turn checkboxes and radio buttons into toggle switches.\r\n *\r\n * @version v3.3.4\r\n * @homepage https://bttstrp.github.io/bootstrap-switch\r\n * @author Mattia Larentis (http://larentis.eu)\r\n * @license Apache-2.0\r\n */\r\n\r\n(function (a, b) { if ('function' == typeof define && define.amd) define(['jquery'], b); else if ('undefined' != typeof exports) b(require('jquery')); else { b(a.jquery), a.bootstrapSwitch = { exports: {} }.exports } })(this, function (a) { 'use strict'; function c(j, k) { if (!(j instanceof k)) throw new TypeError('Cannot call a class as a function') } var d = function (j) { return j && j.__esModule ? j : { default: j } }(a), e = Object.assign || function (j) { for (var l, k = 1; k < arguments.length; k++)for (var m in l = arguments[k], l) Object.prototype.hasOwnProperty.call(l, m) && (j[m] = l[m]); return j }, f = function () { function j(k, l) { for (var n, m = 0; m < l.length; m++)n = l[m], n.enumerable = n.enumerable || !1, n.configurable = !0, 'value' in n && (n.writable = !0), Object.defineProperty(k, n.key, n) } return function (k, l, m) { return l && j(k.prototype, l), m && j(k, m), k } }(), g = d.default || window.jQuery || window.$, h = function () { function j(k) { var l = this, m = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {}; c(this, j), this.$element = g(k), this.options = g.extend({}, g.fn.bootstrapSwitch.defaults, this._getElementOptions(), m), this.prevOptions = {}, this.$wrapper = g('
', { class: function () { var o = []; return o.push(l.options.state ? 'on' : 'off'), l.options.size && o.push(l.options.size), l.options.disabled && o.push('disabled'), l.options.readonly && o.push('readonly'), l.options.indeterminate && o.push('indeterminate'), l.options.inverse && o.push('inverse'), l.$element.attr('id') && o.push('id-' + l.$element.attr('id')), o.map(l._getClass.bind(l)).concat([l.options.baseClass], l._getClasses(l.options.wrapperClass)).join(' ') } }), this.$container = g('
', { class: this._getClass('container') }), this.$on = g('', { html: this.options.onText, class: this._getClass('handle-on') + ' ' + this._getClass(this.options.onColor) }), this.$off = g('', { html: this.options.offText, class: this._getClass('handle-off') + ' ' + this._getClass(this.options.offColor) }), this.$label = g('', { html: this.options.labelText, class: this._getClass('label') }), this.$element.on('init.bootstrapSwitch', this.options.onInit.bind(this, k)), this.$element.on('switchChange.bootstrapSwitch', function () { for (var n = arguments.length, o = Array(n), p = 0; p < n; p++)o[p] = arguments[p]; !1 === l.options.onSwitchChange.apply(k, o) && (l.$element.is(':radio') ? g('[name=\"' + l.$element.attr('name') + '\"]').trigger('previousState.bootstrapSwitch', !0) : l.$element.trigger('previousState.bootstrapSwitch', !0)) }), this.$container = this.$element.wrap(this.$container).parent(), this.$wrapper = this.$container.wrap(this.$wrapper).parent(), this.$element.before(this.options.inverse ? this.$off : this.$on).before(this.$label).before(this.options.inverse ? this.$on : this.$off), this.options.indeterminate && this.$element.prop('indeterminate', !0), this._init(), this._elementHandlers(), this._handleHandlers(), this._labelHandlers(), this._formHandler(), this._externalLabelHandler(), this.$element.trigger('init.bootstrapSwitch', this.options.state) } return f(j, [{ key: 'setPrevOptions', value: function () { this.prevOptions = e({}, this.options) } }, { key: 'state', value: function (l, m) { return 'undefined' == typeof l ? this.options.state : this.options.disabled || this.options.readonly || this.options.state && !this.options.radioAllOff && this.$element.is(':radio') ? this.$element : (this.$element.is(':radio') ? g('[name=\"' + this.$element.attr('name') + '\"]').trigger('setPreviousOptions.bootstrapSwitch') : this.$element.trigger('setPreviousOptions.bootstrapSwitch'), this.options.indeterminate && this.indeterminate(!1), this.$element.prop('checked', !!l).trigger('change.bootstrapSwitch', m), this.$element) } }, { key: 'toggleState', value: function (l) { return this.options.disabled || this.options.readonly ? this.$element : this.options.indeterminate ? (this.indeterminate(!1), this.state(!0)) : this.$element.prop('checked', !this.options.state).trigger('change.bootstrapSwitch', l) } }, { key: 'size', value: function (l) { return 'undefined' == typeof l ? this.options.size : (null != this.options.size && this.$wrapper.removeClass(this._getClass(this.options.size)), l && this.$wrapper.addClass(this._getClass(l)), this._width(), this._containerPosition(), this.options.size = l, this.$element) } }, { key: 'animate', value: function (l) { return 'undefined' == typeof l ? this.options.animate : this.options.animate === !!l ? this.$element : this.toggleAnimate() } }, { key: 'toggleAnimate', value: function () { return this.options.animate = !this.options.animate, this.$wrapper.toggleClass(this._getClass('animate')), this.$element } }, { key: 'disabled', value: function (l) { return 'undefined' == typeof l ? this.options.disabled : this.options.disabled === !!l ? this.$element : this.toggleDisabled() } }, { key: 'toggleDisabled', value: function () { return this.options.disabled = !this.options.disabled, this.$element.prop('disabled', this.options.disabled), this.$wrapper.toggleClass(this._getClass('disabled')), this.$element } }, { key: 'readonly', value: function (l) { return 'undefined' == typeof l ? this.options.readonly : this.options.readonly === !!l ? this.$element : this.toggleReadonly() } }, { key: 'toggleReadonly', value: function () { return this.options.readonly = !this.options.readonly, this.$element.prop('readonly', this.options.readonly), this.$wrapper.toggleClass(this._getClass('readonly')), this.$element } }, { key: 'indeterminate', value: function (l) { return 'undefined' == typeof l ? this.options.indeterminate : this.options.indeterminate === !!l ? this.$element : this.toggleIndeterminate() } }, { key: 'toggleIndeterminate', value: function () { return this.options.indeterminate = !this.options.indeterminate, this.$element.prop('indeterminate', this.options.indeterminate), this.$wrapper.toggleClass(this._getClass('indeterminate')), this._containerPosition(), this.$element } }, { key: 'inverse', value: function (l) { return 'undefined' == typeof l ? this.options.inverse : this.options.inverse === !!l ? this.$element : this.toggleInverse() } }, { key: 'toggleInverse', value: function () { this.$wrapper.toggleClass(this._getClass('inverse')); var l = this.$on.clone(!0), m = this.$off.clone(!0); return this.$on.replaceWith(m), this.$off.replaceWith(l), this.$on = m, this.$off = l, this.options.inverse = !this.options.inverse, this.$element } }, { key: 'onColor', value: function (l) { return 'undefined' == typeof l ? this.options.onColor : (this.options.onColor && this.$on.removeClass(this._getClass(this.options.onColor)), this.$on.addClass(this._getClass(l)), this.options.onColor = l, this.$element) } }, { key: 'offColor', value: function (l) { return 'undefined' == typeof l ? this.options.offColor : (this.options.offColor && this.$off.removeClass(this._getClass(this.options.offColor)), this.$off.addClass(this._getClass(l)), this.options.offColor = l, this.$element) } }, { key: 'onText', value: function (l) { return 'undefined' == typeof l ? this.options.onText : (this.$on.html(l), this._width(), this._containerPosition(), this.options.onText = l, this.$element) } }, { key: 'offText', value: function (l) { return 'undefined' == typeof l ? this.options.offText : (this.$off.html(l), this._width(), this._containerPosition(), this.options.offText = l, this.$element) } }, { key: 'labelText', value: function (l) { return 'undefined' == typeof l ? this.options.labelText : (this.$label.html(l), this._width(), this.options.labelText = l, this.$element) } }, { key: 'handleWidth', value: function (l) { return 'undefined' == typeof l ? this.options.handleWidth : (this.options.handleWidth = l, this._width(), this._containerPosition(), this.$element) } }, { key: 'labelWidth', value: function (l) { return 'undefined' == typeof l ? this.options.labelWidth : (this.options.labelWidth = l, this._width(), this._containerPosition(), this.$element) } }, { key: 'baseClass', value: function () { return this.options.baseClass } }, { key: 'wrapperClass', value: function (l) { return 'undefined' == typeof l ? this.options.wrapperClass : (l || (l = g.fn.bootstrapSwitch.defaults.wrapperClass), this.$wrapper.removeClass(this._getClasses(this.options.wrapperClass).join(' ')), this.$wrapper.addClass(this._getClasses(l).join(' ')), this.options.wrapperClass = l, this.$element) } }, { key: 'radioAllOff', value: function (l) { if ('undefined' == typeof l) return this.options.radioAllOff; var m = !!l; return this.options.radioAllOff === m ? this.$element : (this.options.radioAllOff = m, this.$element) } }, { key: 'onInit', value: function (l) { return 'undefined' == typeof l ? this.options.onInit : (l || (l = g.fn.bootstrapSwitch.defaults.onInit), this.options.onInit = l, this.$element) } }, { key: 'onSwitchChange', value: function (l) { return 'undefined' == typeof l ? this.options.onSwitchChange : (l || (l = g.fn.bootstrapSwitch.defaults.onSwitchChange), this.options.onSwitchChange = l, this.$element) } }, { key: 'destroy', value: function () { var l = this.$element.closest('form'); return l.length && l.off('reset.bootstrapSwitch').removeData('bootstrap-switch'), this.$container.children().not(this.$element).remove(), this.$element.unwrap().unwrap().off('.bootstrapSwitch').removeData('bootstrap-switch'), this.$element } }, { key: '_getElementOptions', value: function () { return { state: this.$element.is(':checked'), size: this.$element.data('size'), animate: this.$element.data('animate'), disabled: this.$element.is(':disabled'), readonly: this.$element.is('[readonly]'), indeterminate: this.$element.data('indeterminate'), inverse: this.$element.data('inverse'), radioAllOff: this.$element.data('radio-all-off'), onColor: this.$element.data('on-color'), offColor: this.$element.data('off-color'), onText: this.$element.data('on-text'), offText: this.$element.data('off-text'), labelText: this.$element.data('label-text'), handleWidth: this.$element.data('handle-width'), labelWidth: this.$element.data('label-width'), baseClass: this.$element.data('base-class'), wrapperClass: this.$element.data('wrapper-class') } } }, { key: '_width', value: function () { var l = this, m = this.$on.add(this.$off).add(this.$label).css('width', ''), n = 'auto' === this.options.handleWidth ? Math.round(Math.max(this.$on.width(), this.$off.width())) : this.options.handleWidth; return m.width(n), this.$label.width(function (o, p) { return 'auto' === l.options.labelWidth ? p < n ? n : p : l.options.labelWidth }), this._handleWidth = this.$on.outerWidth(), this._labelWidth = this.$label.outerWidth(), this.$container.width(2 * this._handleWidth + this._labelWidth), this.$wrapper.width(this._handleWidth + this._labelWidth) } }, { key: '_containerPosition', value: function () { var l = this, m = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : this.options.state, n = arguments[1]; this.$container.css('margin-left', function () { var o = [0, '-' + l._handleWidth + 'px']; return l.options.indeterminate ? '-' + l._handleWidth / 2 + 'px' : m ? l.options.inverse ? o[1] : o[0] : l.options.inverse ? o[0] : o[1] }) } }, { key: '_init', value: function () { var l = this, m = function () { l.setPrevOptions(), l._width(), l._containerPosition(), setTimeout(function () { if (l.options.animate) return l.$wrapper.addClass(l._getClass('animate')) }, 50) }; if (this.$wrapper.is(':visible')) return void m(); var n = window.setInterval(function () { if (l.$wrapper.is(':visible')) return m(), window.clearInterval(n) }, 50) } }, { key: '_elementHandlers', value: function () { var l = this; return this.$element.on({ 'setPreviousOptions.bootstrapSwitch': this.setPrevOptions.bind(this), 'previousState.bootstrapSwitch': function () { l.options = l.prevOptions, l.options.indeterminate && l.$wrapper.addClass(l._getClass('indeterminate')), l.$element.prop('checked', l.options.state).trigger('change.bootstrapSwitch', !0) }, 'change.bootstrapSwitch': function (n, o) { n.preventDefault(), n.stopImmediatePropagation(); var p = l.$element.is(':checked'); l._containerPosition(p), p === l.options.state || (l.options.state = p, l.$wrapper.toggleClass(l._getClass('off')).toggleClass(l._getClass('on')), !o && (l.$element.is(':radio') && g('[name=\"' + l.$element.attr('name') + '\"]').not(l.$element).prop('checked', !1).trigger('change.bootstrapSwitch', !0), l.$element.trigger('switchChange.bootstrapSwitch', [p]))) }, 'focus.bootstrapSwitch': function (n) { n.preventDefault(), l.$wrapper.addClass(l._getClass('focused')) }, 'blur.bootstrapSwitch': function (n) { n.preventDefault(), l.$wrapper.removeClass(l._getClass('focused')) }, 'keydown.bootstrapSwitch': function (n) { !n.which || l.options.disabled || l.options.readonly || (37 === n.which || 39 === n.which) && (n.preventDefault(), n.stopImmediatePropagation(), l.state(39 === n.which)) } }) } }, { key: '_handleHandlers', value: function () { var l = this; return this.$on.on('click.bootstrapSwitch', function (m) { return m.preventDefault(), m.stopPropagation(), l.state(!1), l.$element.trigger('focus.bootstrapSwitch') }), this.$off.on('click.bootstrapSwitch', function (m) { return m.preventDefault(), m.stopPropagation(), l.state(!0), l.$element.trigger('focus.bootstrapSwitch') }) } }, { key: '_labelHandlers', value: function () { var l = this; this.$label.on({ click: function (o) { o.stopPropagation() }, 'mousedown.bootstrapSwitch touchstart.bootstrapSwitch': function (o) { l._dragStart || l.options.disabled || l.options.readonly || (o.preventDefault(), o.stopPropagation(), l._dragStart = (o.pageX || o.originalEvent.touches[0].pageX) - parseInt(l.$container.css('margin-left'), 10), l.options.animate && l.$wrapper.removeClass(l._getClass('animate')), l.$element.trigger('focus.bootstrapSwitch')) }, 'mousemove.bootstrapSwitch touchmove.bootstrapSwitch': function (o) { if (null != l._dragStart) { var p = (o.pageX || o.originalEvent.touches[0].pageX) - l._dragStart; o.preventDefault(), p < -l._handleWidth || 0 < p || (l._dragEnd = p, l.$container.css('margin-left', l._dragEnd + 'px')) } }, 'mouseup.bootstrapSwitch touchend.bootstrapSwitch': function (o) { if (l._dragStart) { if (o.preventDefault(), l.options.animate && l.$wrapper.addClass(l._getClass('animate')), l._dragEnd) { var p = l._dragEnd > -(l._handleWidth / 2); l._dragEnd = !1, l.state(l.options.inverse ? !p : p) } else l.state(!l.options.state); l._dragStart = !1 } }, 'mouseleave.bootstrapSwitch': function () { l.$label.trigger('mouseup.bootstrapSwitch') } }) } }, { key: '_externalLabelHandler', value: function () { var l = this, m = this.$element.closest('label'); m.on('click', function (n) { n.preventDefault(), n.stopImmediatePropagation(), n.target === m[0] && l.toggleState() }) } }, { key: '_formHandler', value: function () { var l = this.$element.closest('form'); l.data('bootstrap-switch') || l.on('reset.bootstrapSwitch', function () { window.setTimeout(function () { l.find('input').filter(function () { return g(this).data('bootstrap-switch') }).each(function () { return g(this).bootstrapSwitch('state', this.checked) }) }, 1) }).data('bootstrap-switch', !0) } }, { key: '_getClass', value: function (l) { return this.options.baseClass + '-' + l } }, { key: '_getClasses', value: function (l) { return g.isArray(l) ? l.map(this._getClass.bind(this)) : [this._getClass(l)] } }]), j }(); g.fn.bootstrapSwitch = function (j) { for (var l = arguments.length, m = Array(1 < l ? l - 1 : 0), n = 1; n < l; n++)m[n - 1] = arguments[n]; return Array.prototype.reduce.call(this, function (o, p) { var q = g(p), r = q.data('bootstrap-switch'), s = r || new h(p, j); return r || q.data('bootstrap-switch', s), 'string' == typeof j ? s[j].apply(s, m) : o }, this) }, g.fn.bootstrapSwitch.Constructor = h, g.fn.bootstrapSwitch.defaults = { state: !0, size: null, animate: !0, disabled: !1, readonly: !1, indeterminate: !1, inverse: !1, radioAllOff: !1, onColor: 'primary', offColor: 'default', onText: 'ON', offText: 'OFF', labelText: ' ', handleWidth: 'auto', labelWidth: 'auto', baseClass: 'bootstrap-switch', wrapperClass: 'wrapper', onInit: function () { }, onSwitchChange: function () { } } });\r\n","/*!\r\n * Bootstrap v3.3.7 (http://getbootstrap.com)\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under the MIT license\r\n */\r\nif (\"undefined\" == typeof jQuery) throw new Error(\"Bootstrap's JavaScript requires jQuery\"); +function (a) { \"use strict\"; var b = a.fn.jquery.split(\" \")[0].split(\".\"); if (b[0] < 2 && b[1] < 9 || 1 == b[0] && 9 == b[1] && b[2] < 1 || b[0] > 3) throw new Error(\"Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4\") }(jQuery), +function (a) { \"use strict\"; function b() { var a = document.createElement(\"bootstrap\"), b = { WebkitTransition: \"webkitTransitionEnd\", MozTransition: \"transitionend\", OTransition: \"oTransitionEnd otransitionend\", transition: \"transitionend\" }; for (var c in b) if (void 0 !== a.style[c]) return { end: b[c] }; return !1 } a.fn.emulateTransitionEnd = function (b) { var c = !1, d = this; a(this).one(\"bsTransitionEnd\", function () { c = !0 }); var e = function () { c || a(d).trigger(a.support.transition.end) }; return setTimeout(e, b), this }, a(function () { a.support.transition = b(), a.support.transition && (a.event.special.bsTransitionEnd = { bindType: a.support.transition.end, delegateType: a.support.transition.end, handle: function (b) { if (a(b.target).is(this)) return b.handleObj.handler.apply(this, arguments) } }) }) }(jQuery), +function (a) { \"use strict\"; function b(b) { return this.each(function () { var c = a(this), e = c.data(\"bs.alert\"); e || c.data(\"bs.alert\", e = new d(this)), \"string\" == typeof b && e[b].call(c) }) } var c = '[data-dismiss=\"alert\"]', d = function (b) { a(b).on(\"click\", c, this.close) }; d.VERSION = \"3.3.7\", d.TRANSITION_DURATION = 150, d.prototype.close = function (b) { function c() { g.detach().trigger(\"closed.bs.alert\").remove() } var e = a(this), f = e.attr(\"data-target\"); f || (f = e.attr(\"href\"), f = f && f.replace(/.*(?=#[^\\s]*$)/, \"\")); var g = a(\"#\" === f ? [] : f); b && b.preventDefault(), g.length || (g = e.closest(\".alert\")), g.trigger(b = a.Event(\"close.bs.alert\")), b.isDefaultPrevented() || (g.removeClass(\"in\"), a.support.transition && g.hasClass(\"fade\") ? g.one(\"bsTransitionEnd\", c).emulateTransitionEnd(d.TRANSITION_DURATION) : c()) }; var e = a.fn.alert; a.fn.alert = b, a.fn.alert.Constructor = d, a.fn.alert.noConflict = function () { return a.fn.alert = e, this }, a(document).on(\"click.bs.alert.data-api\", c, d.prototype.close) }(jQuery), +function (a) { \"use strict\"; function b(b) { return this.each(function () { var d = a(this), e = d.data(\"bs.button\"), f = \"object\" == typeof b && b; e || d.data(\"bs.button\", e = new c(this, f)), \"toggle\" == b ? e.toggle() : b && e.setState(b) }) } var c = function (b, d) { this.$element = a(b), this.options = a.extend({}, c.DEFAULTS, d), this.isLoading = !1 }; c.VERSION = \"3.3.7\", c.DEFAULTS = { loadingText: \"loading...\" }, c.prototype.setState = function (b) { var c = \"disabled\", d = this.$element, e = d.is(\"input\") ? \"val\" : \"html\", f = d.data(); b += \"Text\", null == f.resetText && d.data(\"resetText\", d[e]()), setTimeout(a.proxy(function () { d[e](null == f[b] ? this.options[b] : f[b]), \"loadingText\" == b ? (this.isLoading = !0, d.addClass(c).attr(c, c).prop(c, !0)) : this.isLoading && (this.isLoading = !1, d.removeClass(c).removeAttr(c).prop(c, !1)) }, this), 0) }, c.prototype.toggle = function () { var a = !0, b = this.$element.closest('[data-toggle=\"buttons\"]'); if (b.length) { var c = this.$element.find(\"input\"); \"radio\" == c.prop(\"type\") ? (c.prop(\"checked\") && (a = !1), b.find(\".active\").removeClass(\"active\"), this.$element.addClass(\"active\")) : \"checkbox\" == c.prop(\"type\") && (c.prop(\"checked\") !== this.$element.hasClass(\"active\") && (a = !1), this.$element.toggleClass(\"active\")), c.prop(\"checked\", this.$element.hasClass(\"active\")), a && c.trigger(\"change\") } else this.$element.attr(\"aria-pressed\", !this.$element.hasClass(\"active\")), this.$element.toggleClass(\"active\") }; var d = a.fn.button; a.fn.button = b, a.fn.button.Constructor = c, a.fn.button.noConflict = function () { return a.fn.button = d, this }, a(document).on(\"click.bs.button.data-api\", '[data-toggle^=\"button\"]', function (c) { var d = a(c.target).closest(\".btn\"); b.call(d, \"toggle\"), a(c.target).is('input[type=\"radio\"], input[type=\"checkbox\"]') || (c.preventDefault(), d.is(\"input,button\") ? d.trigger(\"focus\") : d.find(\"input:visible,button:visible\").first().trigger(\"focus\")) }).on(\"focus.bs.button.data-api blur.bs.button.data-api\", '[data-toggle^=\"button\"]', function (b) { a(b.target).closest(\".btn\").toggleClass(\"focus\", /^focus(in)?$/.test(b.type)) }) }(jQuery), +function (a) { \"use strict\"; function b(b) { return this.each(function () { var d = a(this), e = d.data(\"bs.carousel\"), f = a.extend({}, c.DEFAULTS, d.data(), \"object\" == typeof b && b), g = \"string\" == typeof b ? b : f.slide; e || d.data(\"bs.carousel\", e = new c(this, f)), \"number\" == typeof b ? e.to(b) : g ? e[g]() : f.interval && e.pause().cycle() }) } var c = function (b, c) { this.$element = a(b), this.$indicators = this.$element.find(\".carousel-indicators\"), this.options = c, this.paused = null, this.sliding = null, this.interval = null, this.$active = null, this.$items = null, this.options.keyboard && this.$element.on(\"keydown.bs.carousel\", a.proxy(this.keydown, this)), \"hover\" == this.options.pause && !(\"ontouchstart\" in document.documentElement) && this.$element.on(\"mouseenter.bs.carousel\", a.proxy(this.pause, this)).on(\"mouseleave.bs.carousel\", a.proxy(this.cycle, this)) }; c.VERSION = \"3.3.7\", c.TRANSITION_DURATION = 600, c.DEFAULTS = { interval: 5e3, pause: \"hover\", wrap: !0, keyboard: !0 }, c.prototype.keydown = function (a) { if (!/input|textarea/i.test(a.target.tagName)) { switch (a.which) { case 37: this.prev(); break; case 39: this.next(); break; default: return }a.preventDefault() } }, c.prototype.cycle = function (b) { return b || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this }, c.prototype.getItemIndex = function (a) { return this.$items = a.parent().children(\".item\"), this.$items.index(a || this.$active) }, c.prototype.getItemForDirection = function (a, b) { var c = this.getItemIndex(b), d = \"prev\" == a && 0 === c || \"next\" == a && c == this.$items.length - 1; if (d && !this.options.wrap) return b; var e = \"prev\" == a ? -1 : 1, f = (c + e) % this.$items.length; return this.$items.eq(f) }, c.prototype.to = function (a) { var b = this, c = this.getItemIndex(this.$active = this.$element.find(\".item.active\")); if (!(a > this.$items.length - 1 || a < 0)) return this.sliding ? this.$element.one(\"slid.bs.carousel\", function () { b.to(a) }) : c == a ? this.pause().cycle() : this.slide(a > c ? \"next\" : \"prev\", this.$items.eq(a)) }, c.prototype.pause = function (b) { return b || (this.paused = !0), this.$element.find(\".next, .prev\").length && a.support.transition && (this.$element.trigger(a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this }, c.prototype.next = function () { if (!this.sliding) return this.slide(\"next\") }, c.prototype.prev = function () { if (!this.sliding) return this.slide(\"prev\") }, c.prototype.slide = function (b, d) { var e = this.$element.find(\".item.active\"), f = d || this.getItemForDirection(b, e), g = this.interval, h = \"next\" == b ? \"left\" : \"right\", i = this; if (f.hasClass(\"active\")) return this.sliding = !1; var j = f[0], k = a.Event(\"slide.bs.carousel\", { relatedTarget: j, direction: h }); if (this.$element.trigger(k), !k.isDefaultPrevented()) { if (this.sliding = !0, g && this.pause(), this.$indicators.length) { this.$indicators.find(\".active\").removeClass(\"active\"); var l = a(this.$indicators.children()[this.getItemIndex(f)]); l && l.addClass(\"active\") } var m = a.Event(\"slid.bs.carousel\", { relatedTarget: j, direction: h }); return a.support.transition && this.$element.hasClass(\"slide\") ? (f.addClass(b), f[0].offsetWidth, e.addClass(h), f.addClass(h), e.one(\"bsTransitionEnd\", function () { f.removeClass([b, h].join(\" \")).addClass(\"active\"), e.removeClass([\"active\", h].join(\" \")), i.sliding = !1, setTimeout(function () { i.$element.trigger(m) }, 0) }).emulateTransitionEnd(c.TRANSITION_DURATION)) : (e.removeClass(\"active\"), f.addClass(\"active\"), this.sliding = !1, this.$element.trigger(m)), g && this.cycle(), this } }; var d = a.fn.carousel; a.fn.carousel = b, a.fn.carousel.Constructor = c, a.fn.carousel.noConflict = function () { return a.fn.carousel = d, this }; var e = function (c) { var d, e = a(this), f = a(e.attr(\"data-target\") || (d = e.attr(\"href\")) && d.replace(/.*(?=#[^\\s]+$)/, \"\")); if (f.hasClass(\"carousel\")) { var g = a.extend({}, f.data(), e.data()), h = e.attr(\"data-slide-to\"); h && (g.interval = !1), b.call(f, g), h && f.data(\"bs.carousel\").to(h), c.preventDefault() } }; a(document).on(\"click.bs.carousel.data-api\", \"[data-slide]\", e).on(\"click.bs.carousel.data-api\", \"[data-slide-to]\", e), a(window).on(\"load\", function () { a('[data-ride=\"carousel\"]').each(function () { var c = a(this); b.call(c, c.data()) }) }) }(jQuery), +function (a) { \"use strict\"; function b(b) { var c, d = b.attr(\"data-target\") || (c = b.attr(\"href\")) && c.replace(/.*(?=#[^\\s]+$)/, \"\"); return a(d) } function c(b) { return this.each(function () { var c = a(this), e = c.data(\"bs.collapse\"), f = a.extend({}, d.DEFAULTS, c.data(), \"object\" == typeof b && b); !e && f.toggle && /show|hide/.test(b) && (f.toggle = !1), e || c.data(\"bs.collapse\", e = new d(this, f)), \"string\" == typeof b && e[b]() }) } var d = function (b, c) { this.$element = a(b), this.options = a.extend({}, d.DEFAULTS, c), this.$trigger = a('[data-toggle=\"collapse\"][href=\"#' + b.id + '\"],[data-toggle=\"collapse\"][data-target=\"#' + b.id + '\"]'), this.transitioning = null, this.options.parent ? this.$parent = this.getParent() : this.addAriaAndCollapsedClass(this.$element, this.$trigger), this.options.toggle && this.toggle() }; d.VERSION = \"3.3.7\", d.TRANSITION_DURATION = 350, d.DEFAULTS = { toggle: !0 }, d.prototype.dimension = function () { var a = this.$element.hasClass(\"width\"); return a ? \"width\" : \"height\" }, d.prototype.show = function () { if (!this.transitioning && !this.$element.hasClass(\"in\")) { var b, e = this.$parent && this.$parent.children(\".panel\").children(\".in, .collapsing\"); if (!(e && e.length && (b = e.data(\"bs.collapse\"), b && b.transitioning))) { var f = a.Event(\"show.bs.collapse\"); if (this.$element.trigger(f), !f.isDefaultPrevented()) { e && e.length && (c.call(e, \"hide\"), b || e.data(\"bs.collapse\", null)); var g = this.dimension(); this.$element.removeClass(\"collapse\").addClass(\"collapsing\")[g](0).attr(\"aria-expanded\", !0), this.$trigger.removeClass(\"collapsed\").attr(\"aria-expanded\", !0), this.transitioning = 1; var h = function () { this.$element.removeClass(\"collapsing\").addClass(\"collapse in\")[g](\"\"), this.transitioning = 0, this.$element.trigger(\"shown.bs.collapse\") }; if (!a.support.transition) return h.call(this); var i = a.camelCase([\"scroll\", g].join(\"-\")); this.$element.one(\"bsTransitionEnd\", a.proxy(h, this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i]) } } } }, d.prototype.hide = function () { if (!this.transitioning && this.$element.hasClass(\"in\")) { var b = a.Event(\"hide.bs.collapse\"); if (this.$element.trigger(b), !b.isDefaultPrevented()) { var c = this.dimension(); this.$element[c](this.$element[c]())[0].offsetHeight, this.$element.addClass(\"collapsing\").removeClass(\"collapse in\").attr(\"aria-expanded\", !1), this.$trigger.addClass(\"collapsed\").attr(\"aria-expanded\", !1), this.transitioning = 1; var e = function () { this.transitioning = 0, this.$element.removeClass(\"collapsing\").addClass(\"collapse\").trigger(\"hidden.bs.collapse\") }; return a.support.transition ? void this.$element[c](0).one(\"bsTransitionEnd\", a.proxy(e, this)).emulateTransitionEnd(d.TRANSITION_DURATION) : e.call(this) } } }, d.prototype.toggle = function () { this[this.$element.hasClass(\"in\") ? \"hide\" : \"show\"]() }, d.prototype.getParent = function () { return a(this.options.parent).find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]').each(a.proxy(function (c, d) { var e = a(d); this.addAriaAndCollapsedClass(b(e), e) }, this)).end() }, d.prototype.addAriaAndCollapsedClass = function (a, b) { var c = a.hasClass(\"in\"); a.attr(\"aria-expanded\", c), b.toggleClass(\"collapsed\", !c).attr(\"aria-expanded\", c) }; var e = a.fn.collapse; a.fn.collapse = c, a.fn.collapse.Constructor = d, a.fn.collapse.noConflict = function () { return a.fn.collapse = e, this }, a(document).on(\"click.bs.collapse.data-api\", '[data-toggle=\"collapse\"]', function (d) { var e = a(this); e.attr(\"data-target\") || d.preventDefault(); var f = b(e), g = f.data(\"bs.collapse\"), h = g ? \"toggle\" : e.data(); c.call(f, h) }) }(jQuery), +function (a) { \"use strict\"; function b(b) { var c = b.attr(\"data-target\"); c || (c = b.attr(\"href\"), c = c && /#[A-Za-z]/.test(c) && c.replace(/.*(?=#[^\\s]*$)/, \"\")); var d = c && a(c); return d && d.length ? d : b.parent() } function c(c) { c && 3 === c.which || (a(e).remove(), a(f).each(function () { var d = a(this), e = b(d), f = { relatedTarget: this }; e.hasClass(\"open\") && (c && \"click\" == c.type && /input|textarea/i.test(c.target.tagName) && a.contains(e[0], c.target) || (e.trigger(c = a.Event(\"hide.bs.dropdown\", f)), c.isDefaultPrevented() || (d.attr(\"aria-expanded\", \"false\"), e.removeClass(\"open\").trigger(a.Event(\"hidden.bs.dropdown\", f))))) })) } function d(b) { return this.each(function () { var c = a(this), d = c.data(\"bs.dropdown\"); d || c.data(\"bs.dropdown\", d = new g(this)), \"string\" == typeof b && d[b].call(c) }) } var e = \".dropdown-backdrop\", f = '[data-toggle=\"dropdown\"]', g = function (b) { a(b).on(\"click.bs.dropdown\", this.toggle) }; g.VERSION = \"3.3.7\", g.prototype.toggle = function (d) { var e = a(this); if (!e.is(\".disabled, :disabled\")) { var f = b(e), g = f.hasClass(\"open\"); if (c(), !g) { \"ontouchstart\" in document.documentElement && !f.closest(\".navbar-nav\").length && a(document.createElement(\"div\")).addClass(\"dropdown-backdrop\").insertAfter(a(this)).on(\"click\", c); var h = { relatedTarget: this }; if (f.trigger(d = a.Event(\"show.bs.dropdown\", h)), d.isDefaultPrevented()) return; e.trigger(\"focus\").attr(\"aria-expanded\", \"true\"), f.toggleClass(\"open\").trigger(a.Event(\"shown.bs.dropdown\", h)) } return !1 } }, g.prototype.keydown = function (c) { if (/(38|40|27|32)/.test(c.which) && !/input|textarea/i.test(c.target.tagName)) { var d = a(this); if (c.preventDefault(), c.stopPropagation(), !d.is(\".disabled, :disabled\")) { var e = b(d), g = e.hasClass(\"open\"); if (!g && 27 != c.which || g && 27 == c.which) return 27 == c.which && e.find(f).trigger(\"focus\"), d.trigger(\"click\"); var h = \" li:not(.disabled):visible a\", i = e.find(\".dropdown-menu\" + h); if (i.length) { var j = i.index(c.target); 38 == c.which && j > 0 && j-- , 40 == c.which && j < i.length - 1 && j++ , ~j || (j = 0), i.eq(j).trigger(\"focus\") } } } }; var h = a.fn.dropdown; a.fn.dropdown = d, a.fn.dropdown.Constructor = g, a.fn.dropdown.noConflict = function () { return a.fn.dropdown = h, this }, a(document).on(\"click.bs.dropdown.data-api\", c).on(\"click.bs.dropdown.data-api\", \".dropdown form\", function (a) { a.stopPropagation() }).on(\"click.bs.dropdown.data-api\", f, g.prototype.toggle).on(\"keydown.bs.dropdown.data-api\", f, g.prototype.keydown).on(\"keydown.bs.dropdown.data-api\", \".dropdown-menu\", g.prototype.keydown) }(jQuery), +function (a) { \"use strict\"; function b(b, d) { return this.each(function () { var e = a(this), f = e.data(\"bs.modal\"), g = a.extend({}, c.DEFAULTS, e.data(), \"object\" == typeof b && b); f || e.data(\"bs.modal\", f = new c(this, g)), \"string\" == typeof b ? f[b](d) : g.show && f.show(d) }) } var c = function (b, c) { this.options = c, this.$body = a(document.body), this.$element = a(b), this.$dialog = this.$element.find(\".modal-dialog\"), this.$backdrop = null, this.isShown = null, this.originalBodyPad = null, this.scrollbarWidth = 0, this.ignoreBackdropClick = !1, this.options.remote && this.$element.find(\".modal-content\").load(this.options.remote, a.proxy(function () { this.$element.trigger(\"loaded.bs.modal\") }, this)) }; c.VERSION = \"3.3.7\", c.TRANSITION_DURATION = 300, c.BACKDROP_TRANSITION_DURATION = 150, c.DEFAULTS = { backdrop: !0, keyboard: !0, show: !0 }, c.prototype.toggle = function (a) { return this.isShown ? this.hide() : this.show(a) }, c.prototype.show = function (b) { var d = this, e = a.Event(\"show.bs.modal\", { relatedTarget: b }); this.$element.trigger(e), this.isShown || e.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.setScrollbar(), this.$body.addClass(\"modal-open\"), this.escape(), this.resize(), this.$element.on(\"click.dismiss.bs.modal\", '[data-dismiss=\"modal\"]', a.proxy(this.hide, this)), this.$dialog.on(\"mousedown.dismiss.bs.modal\", function () { d.$element.one(\"mouseup.dismiss.bs.modal\", function (b) { a(b.target).is(d.$element) && (d.ignoreBackdropClick = !0) }) }), this.backdrop(function () { var e = a.support.transition && d.$element.hasClass(\"fade\"); d.$element.parent().length || d.$element.appendTo(d.$body), d.$element.show().scrollTop(0), d.adjustDialog(), e && d.$element[0].offsetWidth, d.$element.addClass(\"in\"), d.enforceFocus(); var f = a.Event(\"shown.bs.modal\", { relatedTarget: b }); e ? d.$dialog.one(\"bsTransitionEnd\", function () { d.$element.trigger(\"focus\").trigger(f) }).emulateTransitionEnd(c.TRANSITION_DURATION) : d.$element.trigger(\"focus\").trigger(f) })) }, c.prototype.hide = function (b) { b && b.preventDefault(), b = a.Event(\"hide.bs.modal\"), this.$element.trigger(b), this.isShown && !b.isDefaultPrevented() && (this.isShown = !1, this.escape(), this.resize(), a(document).off(\"focusin.bs.modal\"), this.$element.removeClass(\"in\").off(\"click.dismiss.bs.modal\").off(\"mouseup.dismiss.bs.modal\"), this.$dialog.off(\"mousedown.dismiss.bs.modal\"), a.support.transition && this.$element.hasClass(\"fade\") ? this.$element.one(\"bsTransitionEnd\", a.proxy(this.hideModal, this)).emulateTransitionEnd(c.TRANSITION_DURATION) : this.hideModal()) }, c.prototype.enforceFocus = function () { a(document).off(\"focusin.bs.modal\").on(\"focusin.bs.modal\", a.proxy(function (a) { document === a.target || this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.trigger(\"focus\") }, this)) }, c.prototype.escape = function () { this.isShown && this.options.keyboard ? this.$element.on(\"keydown.dismiss.bs.modal\", a.proxy(function (a) { 27 == a.which && this.hide() }, this)) : this.isShown || this.$element.off(\"keydown.dismiss.bs.modal\") }, c.prototype.resize = function () { this.isShown ? a(window).on(\"resize.bs.modal\", a.proxy(this.handleUpdate, this)) : a(window).off(\"resize.bs.modal\") }, c.prototype.hideModal = function () { var a = this; this.$element.hide(), this.backdrop(function () { a.$body.removeClass(\"modal-open\"), a.resetAdjustments(), a.resetScrollbar(), a.$element.trigger(\"hidden.bs.modal\") }) }, c.prototype.removeBackdrop = function () { this.$backdrop && this.$backdrop.remove(), this.$backdrop = null }, c.prototype.backdrop = function (b) { var d = this, e = this.$element.hasClass(\"fade\") ? \"fade\" : \"\"; if (this.isShown && this.options.backdrop) { var f = a.support.transition && e; if (this.$backdrop = a(document.createElement(\"div\")).addClass(\"modal-backdrop \" + e).appendTo(this.$body), this.$element.on(\"click.dismiss.bs.modal\", a.proxy(function (a) { return this.ignoreBackdropClick ? void (this.ignoreBackdropClick = !1) : void (a.target === a.currentTarget && (\"static\" == this.options.backdrop ? this.$element[0].focus() : this.hide())) }, this)), f && this.$backdrop[0].offsetWidth, this.$backdrop.addClass(\"in\"), !b) return; f ? this.$backdrop.one(\"bsTransitionEnd\", b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : b() } else if (!this.isShown && this.$backdrop) { this.$backdrop.removeClass(\"in\"); var g = function () { d.removeBackdrop(), b && b() }; a.support.transition && this.$element.hasClass(\"fade\") ? this.$backdrop.one(\"bsTransitionEnd\", g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION) : g() } else b && b() }, c.prototype.handleUpdate = function () { this.adjustDialog() }, c.prototype.adjustDialog = function () { var a = this.$element[0].scrollHeight > document.documentElement.clientHeight; this.$element.css({ paddingLeft: !this.bodyIsOverflowing && a ? this.scrollbarWidth : \"\", paddingRight: this.bodyIsOverflowing && !a ? this.scrollbarWidth : \"\" }) }, c.prototype.resetAdjustments = function () { this.$element.css({ paddingLeft: \"\", paddingRight: \"\" }) }, c.prototype.checkScrollbar = function () { var a = window.innerWidth; if (!a) { var b = document.documentElement.getBoundingClientRect(); a = b.right - Math.abs(b.left) } this.bodyIsOverflowing = document.body.clientWidth < a, this.scrollbarWidth = this.measureScrollbar() }, c.prototype.setScrollbar = function () { var a = parseInt(this.$body.css(\"padding-right\") || 0, 10); this.originalBodyPad = document.body.style.paddingRight || \"\", this.bodyIsOverflowing && this.$body.css(\"padding-right\", a + this.scrollbarWidth) }, c.prototype.resetScrollbar = function () { this.$body.css(\"padding-right\", this.originalBodyPad) }, c.prototype.measureScrollbar = function () { var a = document.createElement(\"div\"); a.className = \"modal-scrollbar-measure\", this.$body.append(a); var b = a.offsetWidth - a.clientWidth; return this.$body[0].removeChild(a), b }; var d = a.fn.modal; a.fn.modal = b, a.fn.modal.Constructor = c, a.fn.modal.noConflict = function () { return a.fn.modal = d, this }, a(document).on(\"click.bs.modal.data-api\", '[data-toggle=\"modal\"]', function (c) { var d = a(this), e = d.attr(\"href\"), f = a(d.attr(\"data-target\") || e && e.replace(/.*(?=#[^\\s]+$)/, \"\")), g = f.data(\"bs.modal\") ? \"toggle\" : a.extend({ remote: !/#/.test(e) && e }, f.data(), d.data()); d.is(\"a\") && c.preventDefault(), f.one(\"show.bs.modal\", function (a) { a.isDefaultPrevented() || f.one(\"hidden.bs.modal\", function () { d.is(\":visible\") && d.trigger(\"focus\") }) }), b.call(f, g, this) }) }(jQuery), +function (a) { \"use strict\"; function b(b) { return this.each(function () { var d = a(this), e = d.data(\"bs.tooltip\"), f = \"object\" == typeof b && b; !e && /destroy|hide/.test(b) || (e || d.data(\"bs.tooltip\", e = new c(this, f)), \"string\" == typeof b && e[b]()) }) } var c = function (a, b) { this.type = null, this.options = null, this.enabled = null, this.timeout = null, this.hoverState = null, this.$element = null, this.inState = null, this.init(\"tooltip\", a, b) }; c.VERSION = \"3.3.7\", c.TRANSITION_DURATION = 150, c.DEFAULTS = { animation: !0, placement: \"top\", selector: !1, template: '
', trigger: \"hover focus\", title: \"\", delay: 0, html: !1, container: !1, viewport: { selector: \"body\", padding: 0 } }, c.prototype.init = function (b, c, d) { if (this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d), this.$viewport = this.options.viewport && a(a.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : this.options.viewport.selector || this.options.viewport), this.inState = { click: !1, hover: !1, focus: !1 }, this.$element[0] instanceof document.constructor && !this.options.selector) throw new Error(\"`selector` option must be specified when initializing \" + this.type + \" on the window.document object!\"); for (var e = this.options.trigger.split(\" \"), f = e.length; f--;) { var g = e[f]; if (\"click\" == g) this.$element.on(\"click.\" + this.type, this.options.selector, a.proxy(this.toggle, this)); else if (\"manual\" != g) { var h = \"hover\" == g ? \"mouseenter\" : \"focusin\", i = \"hover\" == g ? \"mouseleave\" : \"focusout\"; this.$element.on(h + \".\" + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on(i + \".\" + this.type, this.options.selector, a.proxy(this.leave, this)) } } this.options.selector ? this._options = a.extend({}, this.options, { trigger: \"manual\", selector: \"\" }) : this.fixTitle() }, c.prototype.getDefaults = function () { return c.DEFAULTS }, c.prototype.getOptions = function (b) { return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && \"number\" == typeof b.delay && (b.delay = { show: b.delay, hide: b.delay }), b }, c.prototype.getDelegateOptions = function () { var b = {}, c = this.getDefaults(); return this._options && a.each(this._options, function (a, d) { c[a] != d && (b[a] = d) }), b }, c.prototype.enter = function (b) { var c = b instanceof this.constructor ? b : a(b.currentTarget).data(\"bs.\" + this.type); return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data(\"bs.\" + this.type, c)), b instanceof a.Event && (c.inState[\"focusin\" == b.type ? \"focus\" : \"hover\"] = !0), c.tip().hasClass(\"in\") || \"in\" == c.hoverState ? void (c.hoverState = \"in\") : (clearTimeout(c.timeout), c.hoverState = \"in\", c.options.delay && c.options.delay.show ? void (c.timeout = setTimeout(function () { \"in\" == c.hoverState && c.show() }, c.options.delay.show)) : c.show()) }, c.prototype.isInStateTrue = function () { for (var a in this.inState) if (this.inState[a]) return !0; return !1 }, c.prototype.leave = function (b) { var c = b instanceof this.constructor ? b : a(b.currentTarget).data(\"bs.\" + this.type); if (c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data(\"bs.\" + this.type, c)), b instanceof a.Event && (c.inState[\"focusout\" == b.type ? \"focus\" : \"hover\"] = !1), !c.isInStateTrue()) return clearTimeout(c.timeout), c.hoverState = \"out\", c.options.delay && c.options.delay.hide ? void (c.timeout = setTimeout(function () { \"out\" == c.hoverState && c.hide() }, c.options.delay.hide)) : c.hide() }, c.prototype.show = function () { var b = a.Event(\"show.bs.\" + this.type); if (this.hasContent() && this.enabled) { this.$element.trigger(b); var d = a.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]); if (b.isDefaultPrevented() || !d) return; var e = this, f = this.tip(), g = this.getUID(this.type); this.setContent(), f.attr(\"id\", g), this.$element.attr(\"aria-describedby\", g), this.options.animation && f.addClass(\"fade\"); var h = \"function\" == typeof this.options.placement ? this.options.placement.call(this, f[0], this.$element[0]) : this.options.placement, i = /\\s?auto?\\s?/i, j = i.test(h); j && (h = h.replace(i, \"\") || \"top\"), f.detach().css({ top: 0, left: 0, display: \"block\" }).addClass(h).data(\"bs.\" + this.type, this), this.options.container ? f.appendTo(this.options.container) : f.insertAfter(this.$element), this.$element.trigger(\"inserted.bs.\" + this.type); var k = this.getPosition(), l = f[0].offsetWidth, m = f[0].offsetHeight; if (j) { var n = h, o = this.getPosition(this.$viewport); h = \"bottom\" == h && k.bottom + m > o.bottom ? \"top\" : \"top\" == h && k.top - m < o.top ? \"bottom\" : \"right\" == h && k.right + l > o.width ? \"left\" : \"left\" == h && k.left - l < o.left ? \"right\" : h, f.removeClass(n).addClass(h) } var p = this.getCalculatedOffset(h, k, l, m); this.applyPlacement(p, h); var q = function () { var a = e.hoverState; e.$element.trigger(\"shown.bs.\" + e.type), e.hoverState = null, \"out\" == a && e.leave(e) }; a.support.transition && this.$tip.hasClass(\"fade\") ? f.one(\"bsTransitionEnd\", q).emulateTransitionEnd(c.TRANSITION_DURATION) : q() } }, c.prototype.applyPlacement = function (b, c) { var d = this.tip(), e = d[0].offsetWidth, f = d[0].offsetHeight, g = parseInt(d.css(\"margin-top\"), 10), h = parseInt(d.css(\"margin-left\"), 10); isNaN(g) && (g = 0), isNaN(h) && (h = 0), b.top += g, b.left += h, a.offset.setOffset(d[0], a.extend({ using: function (a) { d.css({ top: Math.round(a.top), left: Math.round(a.left) }) } }, b), 0), d.addClass(\"in\"); var i = d[0].offsetWidth, j = d[0].offsetHeight; \"top\" == c && j != f && (b.top = b.top + f - j); var k = this.getViewportAdjustedDelta(c, b, i, j); k.left ? b.left += k.left : b.top += k.top; var l = /top|bottom/.test(c), m = l ? 2 * k.left - e + i : 2 * k.top - f + j, n = l ? \"offsetWidth\" : \"offsetHeight\"; d.offset(b), this.replaceArrow(m, d[0][n], l) }, c.prototype.replaceArrow = function (a, b, c) { this.arrow().css(c ? \"left\" : \"top\", 50 * (1 - a / b) + \"%\").css(c ? \"top\" : \"left\", \"\") }, c.prototype.setContent = function () { var a = this.tip(), b = this.getTitle(); a.find(\".tooltip-inner\")[this.options.html ? \"html\" : \"text\"](b), a.removeClass(\"fade in top bottom left right\") }, c.prototype.hide = function (b) { function d() { \"in\" != e.hoverState && f.detach(), e.$element && e.$element.removeAttr(\"aria-describedby\").trigger(\"hidden.bs.\" + e.type), b && b() } var e = this, f = a(this.$tip), g = a.Event(\"hide.bs.\" + this.type); if (this.$element.trigger(g), !g.isDefaultPrevented()) return f.removeClass(\"in\"), a.support.transition && f.hasClass(\"fade\") ? f.one(\"bsTransitionEnd\", d).emulateTransitionEnd(c.TRANSITION_DURATION) : d(), this.hoverState = null, this }, c.prototype.fixTitle = function () { var a = this.$element; (a.attr(\"title\") || \"string\" != typeof a.attr(\"data-original-title\")) && a.attr(\"data-original-title\", a.attr(\"title\") || \"\").attr(\"title\", \"\") }, c.prototype.hasContent = function () { return this.getTitle() }, c.prototype.getPosition = function (b) { b = b || this.$element; var c = b[0], d = \"BODY\" == c.tagName, e = c.getBoundingClientRect(); null == e.width && (e = a.extend({}, e, { width: e.right - e.left, height: e.bottom - e.top })); var f = window.SVGElement && c instanceof window.SVGElement, g = d ? { top: 0, left: 0 } : f ? null : b.offset(), h = { scroll: d ? document.documentElement.scrollTop || document.body.scrollTop : b.scrollTop() }, i = d ? { width: a(window).width(), height: a(window).height() } : null; return a.extend({}, e, h, i, g) }, c.prototype.getCalculatedOffset = function (a, b, c, d) { return \"bottom\" == a ? { top: b.top + b.height, left: b.left + b.width / 2 - c / 2 } : \"top\" == a ? { top: b.top - d, left: b.left + b.width / 2 - c / 2 } : \"left\" == a ? { top: b.top + b.height / 2 - d / 2, left: b.left - c } : { top: b.top + b.height / 2 - d / 2, left: b.left + b.width } }, c.prototype.getViewportAdjustedDelta = function (a, b, c, d) { var e = { top: 0, left: 0 }; if (!this.$viewport) return e; var f = this.options.viewport && this.options.viewport.padding || 0, g = this.getPosition(this.$viewport); if (/right|left/.test(a)) { var h = b.top - f - g.scroll, i = b.top + f - g.scroll + d; h < g.top ? e.top = g.top - h : i > g.top + g.height && (e.top = g.top + g.height - i) } else { var j = b.left - f, k = b.left + f + c; j < g.left ? e.left = g.left - j : k > g.right && (e.left = g.left + g.width - k) } return e }, c.prototype.getTitle = function () { var a, b = this.$element, c = this.options; return a = b.attr(\"data-original-title\") || (\"function\" == typeof c.title ? c.title.call(b[0]) : c.title) }, c.prototype.getUID = function (a) { do a += ~~(1e6 * Math.random()); while (document.getElementById(a)); return a }, c.prototype.tip = function () { if (!this.$tip && (this.$tip = a(this.options.template), 1 != this.$tip.length)) throw new Error(this.type + \" `template` option must consist of exactly 1 top-level element!\"); return this.$tip }, c.prototype.arrow = function () { return this.$arrow = this.$arrow || this.tip().find(\".tooltip-arrow\") }, c.prototype.enable = function () { this.enabled = !0 }, c.prototype.disable = function () { this.enabled = !1 }, c.prototype.toggleEnabled = function () { this.enabled = !this.enabled }, c.prototype.toggle = function (b) { var c = this; b && (c = a(b.currentTarget).data(\"bs.\" + this.type), c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data(\"bs.\" + this.type, c))), b ? (c.inState.click = !c.inState.click, c.isInStateTrue() ? c.enter(c) : c.leave(c)) : c.tip().hasClass(\"in\") ? c.leave(c) : c.enter(c) }, c.prototype.destroy = function () { var a = this; clearTimeout(this.timeout), this.hide(function () { a.$element.off(\".\" + a.type).removeData(\"bs.\" + a.type), a.$tip && a.$tip.detach(), a.$tip = null, a.$arrow = null, a.$viewport = null, a.$element = null }) }; var d = a.fn.tooltip; a.fn.tooltip = b, a.fn.tooltip.Constructor = c, a.fn.tooltip.noConflict = function () { return a.fn.tooltip = d, this } }(jQuery), +function (a) { \"use strict\"; function b(b) { return this.each(function () { var d = a(this), e = d.data(\"bs.popover\"), f = \"object\" == typeof b && b; !e && /destroy|hide/.test(b) || (e || d.data(\"bs.popover\", e = new c(this, f)), \"string\" == typeof b && e[b]()) }) } var c = function (a, b) { this.init(\"popover\", a, b) }; if (!a.fn.tooltip) throw new Error(\"Popover requires tooltip.js\"); c.VERSION = \"3.3.7\", c.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, { placement: \"right\", trigger: \"click\", content: \"\", template: '

' }), c.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype), c.prototype.constructor = c, c.prototype.getDefaults = function () { return c.DEFAULTS }, c.prototype.setContent = function () { var a = this.tip(), b = this.getTitle(), c = this.getContent(); a.find(\".popover-title\")[this.options.html ? \"html\" : \"text\"](b), a.find(\".popover-content\").children().detach().end()[this.options.html ? \"string\" == typeof c ? \"html\" : \"append\" : \"text\"](c), a.removeClass(\"fade top bottom left right in\"), a.find(\".popover-title\").html() || a.find(\".popover-title\").hide() }, c.prototype.hasContent = function () { return this.getTitle() || this.getContent() }, c.prototype.getContent = function () { var a = this.$element, b = this.options; return a.attr(\"data-content\") || (\"function\" == typeof b.content ? b.content.call(a[0]) : b.content) }, c.prototype.arrow = function () { return this.$arrow = this.$arrow || this.tip().find(\".arrow\") }; var d = a.fn.popover; a.fn.popover = b, a.fn.popover.Constructor = c, a.fn.popover.noConflict = function () { return a.fn.popover = d, this } }(jQuery), +function (a) {\r\n\t\"use strict\"; function b(c, d) { this.$body = a(document.body), this.$scrollElement = a(a(c).is(document.body) ? window : c), this.options = a.extend({}, b.DEFAULTS, d), this.selector = (this.options.target || \"\") + \" .nav li > a\", this.offsets = [], this.targets = [], this.activeTarget = null, this.scrollHeight = 0, this.$scrollElement.on(\"scroll.bs.scrollspy\", a.proxy(this.process, this)), this.refresh(), this.process() } function c(c) { return this.each(function () { var d = a(this), e = d.data(\"bs.scrollspy\"), f = \"object\" == typeof c && c; e || d.data(\"bs.scrollspy\", e = new b(this, f)), \"string\" == typeof c && e[c]() }) } b.VERSION = \"3.3.7\", b.DEFAULTS = { offset: 10 }, b.prototype.getScrollHeight = function () { return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) }, b.prototype.refresh = function () { var b = this, c = \"offset\", d = 0; this.offsets = [], this.targets = [], this.scrollHeight = this.getScrollHeight(), a.isWindow(this.$scrollElement[0]) || (c = \"position\", d = this.$scrollElement.scrollTop()), this.$body.find(this.selector).map(function () { var b = a(this), e = b.data(\"target\") || b.attr(\"href\"), f = /^#./.test(e) && a(e); return f && f.length && f.is(\":visible\") && [[f[c]().top + d, e]] || null }).sort(function (a, b) { return a[0] - b[0] }).each(function () { b.offsets.push(this[0]), b.targets.push(this[1]) }) }, b.prototype.process = function () { var a, b = this.$scrollElement.scrollTop() + this.options.offset, c = this.getScrollHeight(), d = this.options.offset + c - this.$scrollElement.height(), e = this.offsets, f = this.targets, g = this.activeTarget; if (this.scrollHeight != c && this.refresh(), b >= d) return g != (a = f[f.length - 1]) && this.activate(a); if (g && b < e[0]) return this.activeTarget = null, this.clear(); for (a = e.length; a--;)g != f[a] && b >= e[a] && (void 0 === e[a + 1] || b < e[a + 1]) && this.activate(f[a]) }, b.prototype.activate = function (b) {\r\n\t\tthis.activeTarget = b, this.clear(); var c = this.selector + '[data-target=\"' + b + '\"],' + this.selector + '[href=\"' + b + '\"]', d = a(c).parents(\"li\").addClass(\"active\"); d.parent(\".dropdown-menu\").length && (d = d.closest(\"li.dropdown\").addClass(\"active\")), d.trigger(\"activate.bs.scrollspy\")\r\n\t}, b.prototype.clear = function () { a(this.selector).parentsUntil(this.options.target, \".active\").removeClass(\"active\") }; var d = a.fn.scrollspy; a.fn.scrollspy = c, a.fn.scrollspy.Constructor = b, a.fn.scrollspy.noConflict = function () { return a.fn.scrollspy = d, this }, a(window).on(\"load.bs.scrollspy.data-api\", function () { a('[data-spy=\"scroll\"]').each(function () { var b = a(this); c.call(b, b.data()) }) })\r\n}(jQuery), +function (a) { \"use strict\"; function b(b) { return this.each(function () { var d = a(this), e = d.data(\"bs.tab\"); e || d.data(\"bs.tab\", e = new c(this)), \"string\" == typeof b && e[b]() }) } var c = function (b) { this.element = a(b) }; c.VERSION = \"3.3.7\", c.TRANSITION_DURATION = 150, c.prototype.show = function () { var b = this.element, c = b.closest(\"ul:not(.dropdown-menu)\"), d = b.data(\"target\"); if (d || (d = b.attr(\"href\"), d = d && d.replace(/.*(?=#[^\\s]*$)/, \"\")), !b.parent(\"li\").hasClass(\"active\")) { var e = c.find(\".active:last a\"), f = a.Event(\"hide.bs.tab\", { relatedTarget: b[0] }), g = a.Event(\"show.bs.tab\", { relatedTarget: e[0] }); if (e.trigger(f), b.trigger(g), !g.isDefaultPrevented() && !f.isDefaultPrevented()) { var h = a(d); this.activate(b.closest(\"li\"), c), this.activate(h, h.parent(), function () { e.trigger({ type: \"hidden.bs.tab\", relatedTarget: b[0] }), b.trigger({ type: \"shown.bs.tab\", relatedTarget: e[0] }) }) } } }, c.prototype.activate = function (b, d, e) { function f() { g.removeClass(\"active\").find(\"> .dropdown-menu > .active\").removeClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\", !1), b.addClass(\"active\").find('[data-toggle=\"tab\"]').attr(\"aria-expanded\", !0), h ? (b[0].offsetWidth, b.addClass(\"in\")) : b.removeClass(\"fade\"), b.parent(\".dropdown-menu\").length && b.closest(\"li.dropdown\").addClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\", !0), e && e() } var g = d.find(\"> .active\"), h = e && a.support.transition && (g.length && g.hasClass(\"fade\") || !!d.find(\"> .fade\").length); g.length && h ? g.one(\"bsTransitionEnd\", f).emulateTransitionEnd(c.TRANSITION_DURATION) : f(), g.removeClass(\"in\") }; var d = a.fn.tab; a.fn.tab = b, a.fn.tab.Constructor = c, a.fn.tab.noConflict = function () { return a.fn.tab = d, this }; var e = function (c) { c.preventDefault(), b.call(a(this), \"show\") }; a(document).on(\"click.bs.tab.data-api\", '[data-toggle=\"tab\"]', e).on(\"click.bs.tab.data-api\", '[data-toggle=\"pill\"]', e) }(jQuery), +function (a) { \"use strict\"; function b(b) { return this.each(function () { var d = a(this), e = d.data(\"bs.affix\"), f = \"object\" == typeof b && b; e || d.data(\"bs.affix\", e = new c(this, f)), \"string\" == typeof b && e[b]() }) } var c = function (b, d) { this.options = a.extend({}, c.DEFAULTS, d), this.$target = a(this.options.target).on(\"scroll.bs.affix.data-api\", a.proxy(this.checkPosition, this)).on(\"click.bs.affix.data-api\", a.proxy(this.checkPositionWithEventLoop, this)), this.$element = a(b), this.affixed = null, this.unpin = null, this.pinnedOffset = null, this.checkPosition() }; c.VERSION = \"3.3.7\", c.RESET = \"affix affix-top affix-bottom\", c.DEFAULTS = { offset: 0, target: window }, c.prototype.getState = function (a, b, c, d) { var e = this.$target.scrollTop(), f = this.$element.offset(), g = this.$target.height(); if (null != c && \"top\" == this.affixed) return e < c && \"top\"; if (\"bottom\" == this.affixed) return null != c ? !(e + this.unpin <= f.top) && \"bottom\" : !(e + g <= a - d) && \"bottom\"; var h = null == this.affixed, i = h ? e : f.top, j = h ? g : b; return null != c && e <= c ? \"top\" : null != d && i + j >= a - d && \"bottom\" }, c.prototype.getPinnedOffset = function () { if (this.pinnedOffset) return this.pinnedOffset; this.$element.removeClass(c.RESET).addClass(\"affix\"); var a = this.$target.scrollTop(), b = this.$element.offset(); return this.pinnedOffset = b.top - a }, c.prototype.checkPositionWithEventLoop = function () { setTimeout(a.proxy(this.checkPosition, this), 1) }, c.prototype.checkPosition = function () { if (this.$element.is(\":visible\")) { var b = this.$element.height(), d = this.options.offset, e = d.top, f = d.bottom, g = Math.max(a(document).height(), a(document.body).height()); \"object\" != typeof d && (f = e = d), \"function\" == typeof e && (e = d.top(this.$element)), \"function\" == typeof f && (f = d.bottom(this.$element)); var h = this.getState(g, b, e, f); if (this.affixed != h) { null != this.unpin && this.$element.css(\"top\", \"\"); var i = \"affix\" + (h ? \"-\" + h : \"\"), j = a.Event(i + \".bs.affix\"); if (this.$element.trigger(j), j.isDefaultPrevented()) return; this.affixed = h, this.unpin = \"bottom\" == h ? this.getPinnedOffset() : null, this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace(\"affix\", \"affixed\") + \".bs.affix\") } \"bottom\" == h && this.$element.offset({ top: g - b - f }) } }; var d = a.fn.affix; a.fn.affix = b, a.fn.affix.Constructor = c, a.fn.affix.noConflict = function () { return a.fn.affix = d, this }, a(window).on(\"load\", function () { a('[data-spy=\"affix\"]').each(function () { var c = a(this), d = c.data(); d.offset = d.offset || {}, null != d.offsetBottom && (d.offset.bottom = d.offsetBottom), null != d.offsetTop && (d.offset.top = d.offsetTop), b.call(c, d) }) }) }(jQuery);","define([\"require\", \"exports\", \"jquery\", \"metronic\", \"metronicLayout\", \"libs/cerialize\", \"Core/GlobalManager/GlobalManager\", \"Core/Common/Themes/UISettings\", \"Core/Common/Themes/CustomThemeDescriptor\", \"Core/Common/Themes/CustomThemeSetting\"],\r\n function (require, exports, $, metronic, layout, cerialize, globalManager, uiSettings, customThemeDescriptor, customThemeSetting) {\r\n\r\n var Metronic = metronic.Metronic;\r\n var Layout = layout.Layout;\r\n var GenericDeserialize = cerialize.GenericDeserialize;\r\n var GlobalManager = globalManager.GlobalManager;\r\n var GLOBALS = globalManager.GLOBALS;\r\n var UISettings = uiSettings.UISettings;\r\n var DEFAULT_UI_SETTINGS = uiSettings.DEFAULT_VALUES;\r\n var CustomThemeDescriptor = customThemeDescriptor;\r\n var CustomThemeSetting = customThemeSetting;\r\n\r\n var Demo = (function () {\r\n function Demo() {\r\n this._uiSettings = null;\r\n }\r\n\r\n Demo.init = function () {\r\n // handles style customer tool\r\n // set layout style from cookie\r\n if ($.cookie && $.cookie('layout-style-option') === 'rounded') {\r\n Demo.SetThemeStyle($.cookie('layout-style-option'));\r\n $('.theme-panel .layout-style-option').val($.cookie('layout-style-option'));\r\n }\r\n\r\n if (window.Preloader) {\r\n setTimeout(function () {\r\n window.Preloader.Close()\r\n }, 1000);\r\n }\r\n }\r\n\r\n Demo.handleTheme = function () {\r\n\r\n // handle layout style change\r\n $('.theme-panel .layout-style-option')\r\n .change(function () {\r\n Demo.SetThemeStyle($(this).val());\r\n });\r\n\r\n $('.theme-panel .borders-option')\r\n .change(function () {\r\n Demo.SetThemeBorders($(this).val());\r\n });\r\n\r\n var layoutCssPath = __webpack_public_path__;\r\n\r\n var panel = $('.theme-panel');\r\n\r\n if ($('body').hasClass('page-boxed') === false) {\r\n $('.layout-option', panel).val(\"fluid\");\r\n }\r\n\r\n $('.sidebar-option', panel).val(\"default\");\r\n $('.page-header-option', panel).val(\"fixed\");\r\n $('.page-footer-option', panel).val(\"default\");\r\n if ($('.sidebar-pos-option').attr(\"disabled\") === false) {\r\n $('.sidebar-pos-option', panel).val(Metronic.isRTL() ? 'right' : 'left');\r\n }\r\n\r\n\r\n //handle theme layout\r\n var resetLayout = function () {\r\n $(\"body\")\r\n .removeClass(\"page-boxed\")\r\n .removeClass(\"page-footer-fixed\")\r\n .removeClass(\"page-sidebar-fixed\")\r\n .removeClass(\"page-header-fixed\")\r\n .removeClass(\"page-sidebar-reversed\");\r\n\r\n $('.page-header > .page-header-inner').removeClass(\"container\");\r\n\r\n if ($('.page-container').parent(\".container\").length === 1) {\r\n $('.page-container').insertAfter('body > .clearfix');\r\n }\r\n\r\n if ($('.page-footer > .container').length === 1) {\r\n $('.page-footer').html($('.page-footer > .container').html());\r\n } else if ($('.page-footer').parent(\".container\").length === 1) {\r\n $('.page-footer').insertAfter('.page-container');\r\n $('.scroll-to-top').insertAfter('.page-footer');\r\n }\r\n\r\n $(\".top-menu > .navbar-nav > li.dropdown\").removeClass(\"dropdown-dark\");\r\n\r\n $('body > .container').remove();\r\n };\r\n\r\n var lastSelectedLayout = '';\r\n\r\n var setLayout = function () {\r\n\r\n var layoutOption = $('.layout-option', panel).val();\r\n var sidebarOption = $('.sidebar-option', panel).val();\r\n var headerOption = $('.page-header-option', panel).val();\r\n var footerOption = $('.page-footer-option', panel).val();\r\n var sidebarPosOption = $('.sidebar-pos-option', panel).val();\r\n var sidebarStyleOption = $('.sidebar-style-option', panel).val();\r\n var sidebarMenuOption = $('.sidebar-menu-option', panel).val();\r\n var headerTopDropdownStyle = $('.page-header-top-dropdown-style-option', panel).val();\r\n\r\n\r\n if (sidebarOption == \"fixed\" && headerOption == \"default\") {\r\n alert('Default Header with Fixed Sidebar option is not supported. Proceed with Fixed Header with Fixed Sidebar.');\r\n $('.page-header-option', panel).val(\"fixed\");\r\n $('.sidebar-option', panel).val(\"fixed\");\r\n sidebarOption = 'fixed';\r\n headerOption = 'fixed';\r\n }\r\n\r\n resetLayout(); // reset layout to default state\r\n\r\n if (layoutOption === \"boxed\") {\r\n $(\"body\").addClass(\"page-boxed\");\r\n\r\n // set header\r\n $('.page-header > .page-header-inner').addClass(\"container\");\r\n var cont = $('body > .clearfix').after('
');\r\n\r\n // set content\r\n $('.page-container').appendTo('body > .container');\r\n\r\n // set footer\r\n if (footerOption === 'fixed') {\r\n $('.page-footer').html('
' + $('.page-footer').html() + '
');\r\n } else {\r\n $('.page-footer').appendTo('body > .container');\r\n }\r\n }\r\n\r\n if (lastSelectedLayout != layoutOption) {\r\n //layout changed, run responsive handler:\r\n Metronic.runResizeHandlers();\r\n }\r\n lastSelectedLayout = layoutOption;\r\n\r\n //header\r\n if (headerOption === 'fixed') {\r\n $(\"body\").addClass(\"page-header-fixed\");\r\n $(\".page-header\").removeClass(\"navbar-static-top\").addClass(\"navbar-fixed-top\");\r\n } else {\r\n $(\"body\").removeClass(\"page-header-fixed\");\r\n $(\".page-header\").removeClass(\"navbar-fixed-top\").addClass(\"navbar-static-top\");\r\n }\r\n\r\n //sidebarOption\r\n Demo.SetSidebarMode(sidebarOption);\r\n\r\n\r\n // top dropdown style\r\n if (headerTopDropdownStyle === 'dark') {\r\n $(\".top-menu > .navbar-nav > li.dropdown\").addClass(\"dropdown-dark\");\r\n } else {\r\n $(\".top-menu > .navbar-nav > li.dropdown\").removeClass(\"dropdown-dark\");\r\n }\r\n\r\n //footer\r\n if (footerOption === 'fixed') {\r\n $(\"body\").addClass(\"page-footer-fixed\");\r\n } else {\r\n $(\"body\").removeClass(\"page-footer-fixed\");\r\n }\r\n\r\n //sidebar style\r\n Demo.SetSidebarStyle(sidebarStyleOption);\r\n\r\n //sidebar menu\r\n if (sidebarMenuOption === 'hover') {\r\n if (sidebarOption == 'fixed') {\r\n $('.sidebar-menu-option', panel).val(\"accordion\");\r\n alert(\"Hover Sidebar Menu is not compatible with Fixed Sidebar Mode. Select Default Sidebar Mode Instead.\");\r\n } else {\r\n $(\".page-sidebar-menu\").addClass(\"page-sidebar-menu-hover-submenu\");\r\n }\r\n } else {\r\n $(\".page-sidebar-menu\").removeClass(\"page-sidebar-menu-hover-submenu\");\r\n }\r\n\r\n Demo.SetSidebarPosition(sidebarPosOption);\r\n\r\n Layout.fixContentHeight(); // fix content height\r\n Layout.initFixedSidebar(); // reinitialize fixed sidebar\r\n };\r\n\r\n // handle theme colors\r\n var setColor = function (color) {\r\n var style = (Metronic.isRTL() ? color + '-rtl' : color);\r\n $('#style_color').attr(\"href\", layoutCssPath + style + \".css\");\r\n return {style: style + \".css\", color: color};\r\n };\r\n\r\n $('.toggler', panel)\r\n .click(function () {\r\n $('.toggler').hide();\r\n $('.toggler-close').show();\r\n $('.theme-panel > .theme-options').show();\r\n });\r\n\r\n $('.toggler-close', panel)\r\n .click(function () {\r\n $('.toggler').show();\r\n $('.toggler-close').hide();\r\n $('.theme-panel > .theme-options').hide();\r\n });\r\n\r\n $('.theme-colors > ul > li', panel)\r\n .click(function () {\r\n var color = $(this).attr(\"data-style\");\r\n var currentLayoutStyle = setColor(color);\r\n $('ul > li', panel).removeClass(\"current\");\r\n $(this).addClass(\"current\");\r\n\r\n Demo._uiSettings.SetThemeColor(currentLayoutStyle.style, currentLayoutStyle.color);\r\n });\r\n\r\n $('.layout-style-option')\r\n .on('change',\r\n function () {\r\n var valLayoutOption = $('.layout-style-option option:selected').val();\r\n Demo._uiSettings.SetThemeStyle(valLayoutOption);\r\n });\r\n\r\n $('.sidebar-option')\r\n .on('change',\r\n function () {\r\n var valOption = $('.sidebar-option option:selected').val();\r\n Demo._uiSettings.SetSidebarOption(valOption);\r\n });\r\n\r\n $('.sidebar-style-option')\r\n .on('change',\r\n function () {\r\n var valStyleOption = $('.sidebar-style-option option:selected').val();\r\n Demo._uiSettings.SetSidebarStyleOption(valStyleOption);\r\n });\r\n\r\n $('.sidebar-pos-option')\r\n .on('change',\r\n function () {\r\n var valPosOption = $('.sidebar-pos-option option:selected').val();\r\n Demo._uiSettings.SetSidebarPosOption(valPosOption);\r\n });\r\n\r\n $('.borders-option')\r\n .on('change',\r\n function () {\r\n var valBorders = $('.borders-option option:selected').val();\r\n Demo._uiSettings.SetSidebarBorders(valBorders);\r\n });\r\n\r\n // set default theme options:\r\n\r\n if ($(\"body\").hasClass(\"page-boxed\")) {\r\n $('.layout-option', panel).val(\"boxed\");\r\n }\r\n\r\n if ($(\"body\").hasClass(\"page-sidebar-fixed\")) {\r\n $('.sidebar-option', panel).val(\"fixed\");\r\n }\r\n\r\n if ($(\"body\").hasClass(\"page-header-fixed\")) {\r\n $('.page-header-option', panel).val(\"fixed\");\r\n }\r\n\r\n if ($(\"body\").hasClass(\"page-footer-fixed\")) {\r\n $('.page-footer-option', panel).val(\"fixed\");\r\n }\r\n\r\n if ($(\"body\").hasClass(\"page-sidebar-reversed\")) {\r\n $('.sidebar-pos-option', panel).val(\"right\");\r\n }\r\n\r\n if ($(\".page-sidebar-menu\").hasClass(\"page-sidebar-menu-light\")) {\r\n $('.sidebar-style-option', panel).val(\"light\");\r\n }\r\n\r\n if ($(\".page-sidebar-menu\").hasClass(\"page-sidebar-menu-hover-submenu\")) {\r\n $('.sidebar-menu-option', panel).val(\"hover\");\r\n }\r\n\r\n $('.layout-option, .page-header-option, .page-header-top-dropdown-style-option, .sidebar-option, .page-footer-option, .sidebar-pos-option, .sidebar-style-option, .sidebar-menu-option, .borders-option', panel).change(setLayout);\r\n };\r\n\r\n Demo.GetUISettings = function () {\r\n return Demo._uiSettings;\r\n };\r\n\r\n Demo.SetUISettings = function (settings) {\r\n Demo._uiSettings = settings;\r\n // Demo.SetThemeColor(Demo._uiSettings.settings.theme, Demo._uiSettings.color);\r\n // Demo.SetThemeStyle(Demo._uiSettings.settings.style);\r\n // Demo.SetSidebarMode(Demo._uiSettings.settings.sidebarOption);\r\n // Demo.SetSidebarStyle(Demo._uiSettings.settings.sidebarStyleOption);\r\n // Demo.SetSidebarPosition(Demo._uiSettings.settings.sidebarPosOption);\r\n // Demo.SetThemeBorders(DEFAULT_UI_SETTINGS.SIDEBAR_BORDERS);\r\n\r\n\r\n\r\n if (Demo._uiSettings.Settings.Theme){\r\n Demo.SetThemeColor(Demo._uiSettings.Settings.Theme, Demo._uiSettings.Settings.Color);\r\n }\r\n\r\n if (Demo._uiSettings.Settings.Style){\r\n Demo.SetThemeStyle(Demo._uiSettings.Settings.Style);\r\n }\r\n\r\n if (Demo._uiSettings.Settings.SidebarOption){\r\n Demo.SetSidebarMode(Demo._uiSettings.Settings.SidebarOption);\r\n }\r\n\r\n if (Demo._uiSettings.Settings.SidebarStyleOption){\r\n Demo.SetSidebarStyle(Demo._uiSettings.Settings.SidebarStyleOption);\r\n }\r\n\r\n if (Demo._uiSettings.Settings.SidebarPosOption){\r\n Demo.SetSidebarPosition(Demo._uiSettings.Settings.SidebarPosOption);\r\n }\r\n\r\n if (Demo._uiSettings.Settings.SidebarBorders) {\r\n Demo.SetThemeBorders(Demo._uiSettings.Settings.SidebarBorders);\r\n }\r\n\r\n if (!Demo._uiSettings.Settings.CustomThemeName) {\r\n Demo.SetCustomTheme([]);\r\n return;\r\n }\r\n\r\n var customThemeName = Demo._uiSettings.Settings.CustomThemeName;\r\n var customTheme = Demo._uiSettings.GetCustomTheme(customThemeName);\r\n var customThemeSettings = customTheme ? customTheme.Settings : [];\r\n\r\n Demo.SetCustomTheme(customThemeSettings);\r\n };\r\n\r\n Demo.InitUI = function () {\r\n var uiSettingsJson = GlobalManager.Instance.GetGlobal(GLOBALS.THEME);\r\n var uiSettings = GenericDeserialize(JSON.parse(uiSettingsJson), UISettings) || new UISettings();\r\n Demo.SetUISettings(uiSettings);\r\n }\r\n\r\n Demo.SetCustomTheme = function (customThemeSettings) {\r\n var $style = $('#custom-theme');\r\n\r\n var css = '';\r\n\r\n var open = '{';\r\n var close = '}';\r\n\r\n for (var themeCss of customThemeSettings) {\r\n var selector = themeCss.Selector;\r\n var rule = themeCss.Rule;\r\n var val = themeCss.Val;\r\n var style = `${selector} ${open} ${rule}: ${val}; ${close}`;\r\n\r\n css += style;\r\n }\r\n\r\n $style.empty();\r\n $style.append(document.createTextNode(css));\r\n }\r\n\r\n Demo.SetThemeColor = function (theme, color) {\r\n var themeUrl = __webpack_public_path__ + DEFAULT_UI_SETTINGS.THEME;\r\n if (theme){\r\n themeUrl = __webpack_public_path__ + theme;\r\n }\r\n\r\n var themeColor = color || DEFAULT_UI_SETTINGS.COLOR;\r\n $('#style_color').attr('href', themeUrl);\r\n\r\n if (Demo._uiSettings) {\r\n Demo._uiSettings.SetThemeColor(theme || DEFAULT_UI_SETTINGS.THEME, themeColor);\r\n }\r\n };\r\n\r\n // handle theme style\r\n Demo.SetThemeStyle = function (style) {\r\n var themeStyle = style || DEFAULT_UI_SETTINGS.STYLE;\r\n var file = (themeStyle === 'rounded' ? 'componentsRounded' : 'components');\r\n var layoutCssPath = __webpack_public_path__;\r\n\r\n file = (Metronic.isRTL() ? file + '-rtl' : file);\r\n var filePath = layoutCssPath + file + \".css\";\r\n\r\n $('#style_components').attr(\"href\", filePath);\r\n\r\n if ($.cookie) {\r\n $.cookie('layout-style-option', themeStyle);\r\n }\r\n\r\n if (Demo._uiSettings) {\r\n Demo._uiSettings.SetThemeStyle(themeStyle);\r\n }\r\n };\r\n\r\n // handle theme borders\r\n Demo.SetThemeBorders = function (borders) {\r\n var themeBorders = borders || DEFAULT_UI_SETTINGS.SIDEBAR_BORDERS;\r\n\r\n if (themeBorders === 'borders') {\r\n $(\"body\").addClass(\"border-theme\");\r\n } else {\r\n $(\"body\").removeClass(\"border-theme\");\r\n }\r\n\r\n if ($.cookie) {\r\n $.cookie('borders-option', themeBorders);\r\n }\r\n\r\n if (Demo._uiSettings) {\r\n Demo._uiSettings.SetSidebarBorders(themeBorders);\r\n }\r\n };\r\n\r\n\r\n Demo.SetSidebarMode = function (sidebarOption) {\r\n var themeSidebarOption = sidebarOption || DEFAULT_UI_SETTINGS.SIDEBAR_OPTION;\r\n if ($('body').hasClass('page-full-width') === false) {\r\n if (themeSidebarOption === 'fixed') {\r\n $(\"body\").addClass(\"page-sidebar-fixed\");\r\n $(\"page-sidebar-menu\").addClass(\"page-sidebar-menu-fixed\");\r\n $(\"page-sidebar-menu\").removeClass(\"page-sidebar-menu-default\");\r\n } else {\r\n $(\"body\").removeClass(\"page-sidebar-fixed\");\r\n $(\"page-sidebar-menu\").addClass(\"page-sidebar-menu-default\");\r\n $(\"page-sidebar-menu\").removeClass(\"page-sidebar-menu-fixed\");\r\n $('.page-sidebar-menu').unbind('mouseenter').unbind('mouseleave');\r\n }\r\n }\r\n\r\n if (Demo._uiSettings) {\r\n Demo._uiSettings.SetSidebarOption(themeSidebarOption);\r\n }\r\n };\r\n\r\n\r\n Demo.SetSidebarStyle = function (sidebarStyleOption) {\r\n var themeSidebarStyle = sidebarStyleOption || DEFAULT_UI_SETTINGS.SIDEBAR_STYLE;\r\n //sidebar style\r\n if (themeSidebarStyle === 'light') {\r\n $(\".page-sidebar-menu\").addClass(\"page-sidebar-menu-light\");\r\n } else {\r\n $(\".page-sidebar-menu\").removeClass(\"page-sidebar-menu-light\");\r\n }\r\n\r\n if (Demo._uiSettings) {\r\n Demo._uiSettings.SetSidebarStyleOption(themeSidebarStyle);\r\n }\r\n };\r\n\r\n Demo.SetSidebarPosition = function (sidebarPosOption) {\r\n var themeSidebarPosition = sidebarPosOption || DEFAULT_UI_SETTINGS.SIDEBAR_POSITION;\r\n //sidebar position\r\n if (Metronic.isRTL()) {\r\n if (themeSidebarPosition === 'left') {\r\n $(\"body\").addClass(\"page-sidebar-reversed\");\r\n $('#frontend-link')\r\n .tooltip('destroy')\r\n .tooltip({\r\n placement: 'right'\r\n });\r\n } else {\r\n $(\"body\").removeClass(\"page-sidebar-reversed\");\r\n $('#frontend-link')\r\n .tooltip('destroy')\r\n .tooltip({\r\n placement: 'left'\r\n });\r\n }\r\n } else {\r\n if (themeSidebarPosition === 'right') {\r\n $(\"body\").addClass(\"page-sidebar-reversed\");\r\n $('#frontend-link')\r\n .tooltip('destroy')\r\n .tooltip({\r\n placement: 'left'\r\n });\r\n } else {\r\n $(\"body\").removeClass(\"page-sidebar-reversed\");\r\n $('#frontend-link')\r\n .tooltip('destroy')\r\n .tooltip({\r\n placement: 'right'\r\n });\r\n }\r\n }\r\n\r\n if (Demo._uiSettings) {\r\n Demo._uiSettings.SetSidebarPosOption(themeSidebarPosition);\r\n }\r\n }\r\n\r\n return Demo;\r\n })();\r\n exports.Demo = Demo;\r\n });","\r\n/*\r\n *\r\n * More info at [www.dropzonejs.com](http://www.dropzonejs.com)\r\n *\r\n * Copyright (c) 2012, Matias Meno\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n *\r\n */\r\n\r\n(function () {\r\n\tvar Dropzone, Emitter, ExifRestore, camelize, contentLoaded, detectVerticalSquash, drawImageIOSFix, noop, without, imageExtensions,\r\n\t slice = [].slice,\r\n\t extend1 = function (child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\r\n\t hasProp = {}.hasOwnProperty;\r\n\r\n\tnoop = function () { };\r\n\timageExtensions = '.png,.gif,.jpg,.jpeg,.jpe,.jif,.jfif,.jfi,.webp';\r\n\r\n\tEmitter = (function () {\r\n\t\tfunction Emitter() { }\r\n\r\n\t\tEmitter.prototype.addEventListener = Emitter.prototype.on;\r\n\r\n\t\tEmitter.prototype.on = function (event, fn) {\r\n\t\t\tthis._callbacks = this._callbacks || {};\r\n\t\t\tif (!this._callbacks[event]) {\r\n\t\t\t\tthis._callbacks[event] = [];\r\n\t\t\t}\r\n\t\t\tthis._callbacks[event].push(fn);\r\n\t\t\treturn this;\r\n\t\t};\r\n\r\n\t\tEmitter.prototype.emit = function () {\r\n\t\t\tvar args, callback, callbacks, event, j, len;\r\n\t\t\tevent = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];\r\n\t\t\tthis._callbacks = this._callbacks || {};\r\n\t\t\tcallbacks = this._callbacks[event];\r\n\t\t\tif (callbacks) {\r\n\t\t\t\tfor (j = 0, len = callbacks.length; j < len; j++) {\r\n\t\t\t\t\tcallback = callbacks[j];\r\n\t\t\t\t\tcallback.apply(this, args);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t};\r\n\r\n\t\tEmitter.prototype.removeListener = Emitter.prototype.off;\r\n\r\n\t\tEmitter.prototype.removeAllListeners = Emitter.prototype.off;\r\n\r\n\t\tEmitter.prototype.removeEventListener = Emitter.prototype.off;\r\n\r\n\t\tEmitter.prototype.off = function (event, fn) {\r\n\t\t\tvar callback, callbacks, i, j, len;\r\n\t\t\tif (!this._callbacks || arguments.length === 0) {\r\n\t\t\t\tthis._callbacks = {};\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t\tcallbacks = this._callbacks[event];\r\n\t\t\tif (!callbacks) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t\tif (arguments.length === 1) {\r\n\t\t\t\tdelete this._callbacks[event];\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t\tfor (i = j = 0, len = callbacks.length; j < len; i = ++j) {\r\n\t\t\t\tcallback = callbacks[i];\r\n\t\t\t\tif (callback === fn) {\r\n\t\t\t\t\tcallbacks.splice(i, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t};\r\n\r\n\t\treturn Emitter;\r\n\r\n\t})();\r\n\r\n\tDropzone = (function (superClass) {\r\n\t\tvar extend, resolveOption;\r\n\r\n\t\textend1(Dropzone, superClass);\r\n\r\n\t\tDropzone.prototype.Emitter = Emitter;\r\n\r\n\r\n\t\t/*\r\n\t\tThis is a list of all available events you can register on a dropzone object.\r\n\t\t\r\n\t\tYou can register an event handler like this:\r\n\t\t\r\n\t\t\tdropzone.on(\"dragEnter\", function() { });\r\n\t\t */\r\n\r\n\t\tDropzone.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"addedfiles\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\r\n\r\n\t\tDropzone.prototype.defaultOptions = {\r\n\t\t\turl: null,\r\n\t\t\tmethod: \"post\",\r\n\t\t\twithCredentials: false,\r\n\t\t\ttimeout: 30000,\r\n\t\t\tparallelUploads: 2,\r\n\t\t\tuploadMultiple: false,\r\n\t\t\tmaxFilesize: 256,\r\n\t\t\tparamName: \"file\",\r\n\t\t\tcreateImageThumbnails: true,\r\n\t\t\tmaxThumbnailFilesize: 10,\r\n\t\t\tthumbnailWidth: 120,\r\n\t\t\tthumbnailHeight: 120,\r\n\t\t\tthumbnailMethod: 'crop',\r\n\t\t\tresizeWidth: null,\r\n\t\t\tresizeHeight: null,\r\n\t\t\tresizeMimeType: null,\r\n\t\t\tresizeQuality: 0.8,\r\n\t\t\tresizeMethod: 'contain',\r\n\t\t\tfilesizeBase: 1000,\r\n\t\t\tmaxFiles: null,\r\n\t\t\tparams: {},\r\n\t\t\theaders: null,\r\n\t\t\tclickable: true,\r\n\t\t\tignoreHiddenFiles: true,\r\n\t\t\tacceptedFiles: null,\r\n\t\t\tacceptedMimeTypes: null,\r\n\t\t\tautoProcessQueue: true,\r\n\t\t\tautoQueue: true,\r\n\t\t\taddRemoveLinks: false,\r\n\t\t\tpreviewsContainer: null,\r\n\t\t\thiddenInputContainer: \"body\",\r\n\t\t\tcapture: null,\r\n\t\t\trenameFilename: null,\r\n\t\t\trenameFile: null,\r\n\t\t\tforceFallback: false,\r\n\t\t\tdictDefaultMessage: \"Drop files here to upload\",\r\n\t\t\tdictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\r\n\t\t\tdictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\r\n\t\t\tdictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\r\n\t\t\tdictInvalidFileType: \"You can't upload files of this type.\",\r\n\t\t\tdictResponseError: \"Server responded with {{statusCode}} code.\",\r\n\t\t\tdictCancelUpload: \"Cancel upload\",\r\n\t\t\tdictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\r\n\t\t\tdictRemoveFile: \"Remove file\",\r\n\t\t\tdictRemoveFileConfirmation: null,\r\n\t\t\tdictMaxFilesExceeded: \"You can not upload any more files.\",\r\n\t\t\tdictFileSizeUnits: {\r\n\t\t\t\ttb: \"TB\",\r\n\t\t\t\tgb: \"GB\",\r\n\t\t\t\tmb: \"MB\",\r\n\t\t\t\tkb: \"KB\",\r\n\t\t\t\tb: \"b\"\r\n\t\t\t},\r\n\t\t\tinit: function () {\r\n\t\t\t\treturn noop;\r\n\t\t\t},\r\n\t\t\taccept: function (file, done) {\r\n\t\t\t\treturn done();\r\n\t\t\t},\r\n\t\t\tfallback: function () {\r\n\t\t\t\tvar child, j, len, messageElement, ref, span;\r\n\t\t\t\tthis.element.className = this.element.className + \" dz-browser-not-supported\";\r\n\t\t\t\tref = this.element.getElementsByTagName(\"div\");\r\n\t\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\t\tchild = ref[j];\r\n\t\t\t\t\tif (/(^| )dz-message($| )/.test(child.className)) {\r\n\t\t\t\t\t\tmessageElement = child;\r\n\t\t\t\t\t\tchild.className = \"dz-message\";\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (!messageElement) {\r\n\t\t\t\t\tmessageElement = Dropzone.createElement(\"
\");\r\n\t\t\t\t\tthis.element.appendChild(messageElement);\r\n\t\t\t\t}\r\n\t\t\t\tspan = messageElement.getElementsByTagName(\"span\")[0];\r\n\t\t\t\tif (span) {\r\n\t\t\t\t\tif (span.textContent != null) {\r\n\t\t\t\t\t\tspan.textContent = this.options.dictFallbackMessage;\r\n\t\t\t\t\t} else if (span.innerText != null) {\r\n\t\t\t\t\t\tspan.innerText = this.options.dictFallbackMessage;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this.element.appendChild(this.getFallbackForm());\r\n\t\t\t},\r\n\t\t\tresize: function (file, width, height, resizeMethod) {\r\n\t\t\t\tvar info, srcRatio, trgRatio;\r\n\t\t\t\tinfo = {\r\n\t\t\t\t\tsrcX: 0,\r\n\t\t\t\t\tsrcY: 0,\r\n\t\t\t\t\tsrcWidth: file.width,\r\n\t\t\t\t\tsrcHeight: file.height\r\n\t\t\t\t};\r\n\t\t\t\tsrcRatio = file.width / file.height;\r\n\t\t\t\tif ((width == null) && (height == null)) {\r\n\t\t\t\t\twidth = info.srcWidth;\r\n\t\t\t\t\theight = info.srcHeight;\r\n\t\t\t\t} else if (width == null) {\r\n\t\t\t\t\twidth = height * srcRatio;\r\n\t\t\t\t} else if (height == null) {\r\n\t\t\t\t\theight = width / srcRatio;\r\n\t\t\t\t}\r\n\t\t\t\twidth = Math.min(width, info.srcWidth);\r\n\t\t\t\theight = Math.min(height, info.srcHeight);\r\n\t\t\t\ttrgRatio = width / height;\r\n\t\t\t\tif (info.srcWidth > width || info.srcHeight > height) {\r\n\t\t\t\t\tif (resizeMethod === 'crop') {\r\n\t\t\t\t\t\tif (srcRatio > trgRatio) {\r\n\t\t\t\t\t\t\tinfo.srcHeight = file.height;\r\n\t\t\t\t\t\t\tinfo.srcWidth = info.srcHeight * trgRatio;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tinfo.srcWidth = file.width;\r\n\t\t\t\t\t\t\tinfo.srcHeight = info.srcWidth / trgRatio;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (resizeMethod === 'contain') {\r\n\t\t\t\t\t\tif (srcRatio > trgRatio) {\r\n\t\t\t\t\t\t\theight = width / srcRatio;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\twidth = height * srcRatio;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error(\"Unknown resizeMethod '\" + resizeMethod + \"'\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tinfo.srcX = (file.width - info.srcWidth) / 2;\r\n\t\t\t\tinfo.srcY = (file.height - info.srcHeight) / 2;\r\n\t\t\t\tinfo.trgWidth = width;\r\n\t\t\t\tinfo.trgHeight = height;\r\n\t\t\t\treturn info;\r\n\t\t\t},\r\n\t\t\ttransformFile: function (file, done) {\r\n\t\t\t\tif ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {\r\n\t\t\t\t\treturn this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn done(file);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tpreviewTemplate: \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n Check\\n \\n \\n \\n \\n \\n
\\n
\\n \\n Error\\n \\n \\n \\n \\n \\n \\n \\n
\\n
\",\r\n\r\n\t\t\t/*\r\n\t\t\tThose functions register themselves to the events on init and handle all\r\n\t\t\tthe user interface specific stuff. Overwriting them won't break the upload\r\n\t\t\tbut can break the way it's displayed.\r\n\t\t\tYou can overwrite them if you don't like the default behavior. If you just\r\n\t\t\twant to add an additional event handler, register it on the dropzone object\r\n\t\t\tand don't overwrite those options.\r\n\t\t\t */\r\n\t\t\tdrop: function (e) {\r\n\t\t\t\treturn this.element.classList.remove(\"dz-drag-hover\");\r\n\t\t\t},\r\n\t\t\tdragstart: noop,\r\n\t\t\tdragend: function (e) {\r\n\t\t\t\treturn this.element.classList.remove(\"dz-drag-hover\");\r\n\t\t\t},\r\n\t\t\tdragenter: function (e) {\r\n\t\t\t\treturn this.element.classList.add(\"dz-drag-hover\");\r\n\t\t\t},\r\n\t\t\tdragover: function (e) {\r\n\t\t\t\treturn this.element.classList.add(\"dz-drag-hover\");\r\n\t\t\t},\r\n\t\t\tdragleave: function (e) {\r\n\t\t\t\treturn this.element.classList.remove(\"dz-drag-hover\");\r\n\t\t\t},\r\n\t\t\tpaste: noop,\r\n\t\t\treset: function () {\r\n\t\t\t\treturn this.element.classList.remove(\"dz-started\");\r\n\t\t\t},\r\n\t\t\taddedfile: function (file) {\r\n\t\t\t\tvar j, k, l, len, len1, len2, node, ref, ref1, ref2, removeFileEvent, removeLink, results;\r\n\t\t\t\tif (this.element === this.previewsContainer) {\r\n\t\t\t\t\tthis.element.classList.add(\"dz-started\");\r\n\t\t\t\t}\r\n\t\t\t\tif (this.previewsContainer) {\r\n\t\t\t\t\tfile.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\r\n\t\t\t\t\tfile.previewTemplate = file.previewElement;\r\n\t\t\t\t\tthis.previewsContainer.appendChild(file.previewElement);\r\n\t\t\t\t\tref = file.previewElement.querySelectorAll(\"[data-dz-name]\");\r\n\t\t\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\t\t\tnode = ref[j];\r\n\t\t\t\t\t\tnode.textContent = file.upload.filename;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tref1 = file.previewElement.querySelectorAll(\"[data-dz-size]\");\r\n\t\t\t\t\tfor (k = 0, len1 = ref1.length; k < len1; k++) {\r\n\t\t\t\t\t\tnode = ref1[k];\r\n\t\t\t\t\t\tnode.innerHTML = this.filesize(file.size);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (this.options.addRemoveLinks) {\r\n\t\t\t\t\t\tfile._removeLink = Dropzone.createElement(\"\" + this.options.dictRemoveFile + \"\");\r\n\t\t\t\t\t\tfile.previewElement.appendChild(file._removeLink);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tremoveFileEvent = (function (_this) {\r\n\t\t\t\t\t\treturn function (e) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\tif (file.status === Dropzone.UPLOADING) {\r\n\t\t\t\t\t\t\t\treturn Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function () {\r\n\t\t\t\t\t\t\t\t\treturn _this.removeFile(file);\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\tif (_this.options.dictRemoveFileConfirmation) {\r\n\t\t\t\t\t\t\t\t\treturn Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function () {\r\n\t\t\t\t\t\t\t\t\t\treturn _this.removeFile(file);\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\treturn _this.removeFile(file);\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})(this);\r\n\t\t\t\t\tref2 = file.previewElement.querySelectorAll(\"[data-dz-remove]\");\r\n\t\t\t\t\tresults = [];\r\n\t\t\t\t\tfor (l = 0, len2 = ref2.length; l < len2; l++) {\r\n\t\t\t\t\t\tremoveLink = ref2[l];\r\n\t\t\t\t\t\tresults.push(removeLink.addEventListener(\"click\", removeFileEvent));\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn results;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tremovedfile: function (file) {\r\n\t\t\t\tvar ref;\r\n\t\t\t\tif (file.previewElement) {\r\n\t\t\t\t\tif ((ref = file.previewElement) != null) {\r\n\t\t\t\t\t\tref.parentNode.removeChild(file.previewElement);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this._updateMaxFilesReachedClass();\r\n\t\t\t},\r\n\t\t\tthumbnail: function (file, dataUrl) {\r\n\t\t\t\tvar j, len, ref, thumbnailElement;\r\n\t\t\t\tif (file.previewElement) {\r\n\t\t\t\t\tfile.previewElement.classList.remove(\"dz-file-preview\");\r\n\t\t\t\t\tref = file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\");\r\n\t\t\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\t\t\tthumbnailElement = ref[j];\r\n\t\t\t\t\t\tthumbnailElement.alt = file.name;\r\n\t\t\t\t\t\tthumbnailElement.src = dataUrl;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn setTimeout(((function (_this) {\r\n\t\t\t\t\t\treturn function () {\r\n\t\t\t\t\t\t\treturn file.previewElement.classList.add(\"dz-image-preview\");\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t})(this)), 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: function (file, message) {\r\n\t\t\t\tvar j, len, node, ref, results;\r\n\t\t\t\tif (file.previewElement) {\r\n\t\t\t\t\tfile.previewElement.classList.add(\"dz-error\");\r\n\t\t\t\t\tif (typeof message !== \"String\" && message.error) {\r\n\t\t\t\t\t\tmessage = message.error;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tref = file.previewElement.querySelectorAll(\"[data-dz-errormessage]\");\r\n\t\t\t\t\tresults = [];\r\n\t\t\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\t\t\tnode = ref[j];\r\n\t\t\t\t\t\tresults.push(node.textContent = message);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn results;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terrormultiple: noop,\r\n\t\t\tprocessing: function (file) {\r\n\t\t\t\tif (file.previewElement) {\r\n\t\t\t\t\tfile.previewElement.classList.add(\"dz-processing\");\r\n\t\t\t\t\tif (file._removeLink) {\r\n\t\t\t\t\t\treturn file._removeLink.textContent = this.options.dictCancelUpload;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tprocessingmultiple: noop,\r\n\t\t\tuploadprogress: function (file, progress, bytesSent) {\r\n\t\t\t\tvar j, len, node, ref, results;\r\n\t\t\t\tif (file.previewElement) {\r\n\t\t\t\t\tref = file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\");\r\n\t\t\t\t\tresults = [];\r\n\t\t\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\t\t\tnode = ref[j];\r\n\t\t\t\t\t\tif (node.nodeName === 'PROGRESS') {\r\n\t\t\t\t\t\t\tresults.push(node.value = progress);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tresults.push(node.style.width = progress + \"%\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn results;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\ttotaluploadprogress: noop,\r\n\t\t\tsending: noop,\r\n\t\t\tsendingmultiple: noop,\r\n\t\t\tsuccess: function (file) {\r\n\t\t\t\tif (file.previewElement) {\r\n\t\t\t\t\treturn file.previewElement.classList.add(\"dz-success\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tsuccessmultiple: noop,\r\n\t\t\tcanceled: function (file) {\r\n\t\t\t\treturn this.emit(\"error\", file, \"Upload canceled.\");\r\n\t\t\t},\r\n\t\t\tcanceledmultiple: noop,\r\n\t\t\tcomplete: function (file) {\r\n\t\t\t\tif (file._removeLink) {\r\n\t\t\t\t\tfile._removeLink.textContent = this.options.dictRemoveFile;\r\n\t\t\t\t}\r\n\t\t\t\tif (file.previewElement) {\r\n\t\t\t\t\treturn file.previewElement.classList.add(\"dz-complete\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcompletemultiple: noop,\r\n\t\t\tmaxfilesexceeded: noop,\r\n\t\t\tmaxfilesreached: noop,\r\n\t\t\tqueuecomplete: noop,\r\n\t\t\taddedfiles: noop\r\n\t\t};\r\n\r\n\t\textend = function () {\r\n\t\t\tvar j, key, len, object, objects, target, val;\r\n\t\t\ttarget = arguments[0], objects = 2 <= arguments.length ? slice.call(arguments, 1) : [];\r\n\t\t\tfor (j = 0, len = objects.length; j < len; j++) {\r\n\t\t\t\tobject = objects[j];\r\n\t\t\t\tfor (key in object) {\r\n\t\t\t\t\tval = object[key];\r\n\t\t\t\t\ttarget[key] = val;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn target;\r\n\t\t};\r\n\r\n\t\tfunction Dropzone(element1, options) {\r\n\t\t\tvar elementOptions, fallback, ref;\r\n\t\t\tthis.element = element1;\r\n\t\t\tthis.version = Dropzone.version;\r\n\t\t\tthis.defaultOptions.previewTemplate = this.defaultOptions.previewTemplate.replace(/\\n*/g, \"\");\r\n\t\t\tthis.clickableElements = [];\r\n\t\t\tthis.listeners = [];\r\n\t\t\tthis.files = [];\r\n\t\t\tif (typeof this.element === \"string\") {\r\n\t\t\t\tthis.element = document.querySelector(this.element);\r\n\t\t\t}\r\n\t\t\tif (!(this.element && (this.element.nodeType != null))) {\r\n\t\t\t\tthrow new Error(\"Invalid dropzone element.\");\r\n\t\t\t}\r\n\t\t\tif (this.element.dropzone) {\r\n\t\t\t\tthrow new Error(\"Dropzone already attached.\");\r\n\t\t\t}\r\n\t\t\tDropzone.instances.push(this);\r\n\t\t\tthis.element.dropzone = this;\r\n\t\t\telementOptions = (ref = Dropzone.optionsForElement(this.element)) != null ? ref : {};\r\n\t\t\tthis.options = extend({}, this.defaultOptions, elementOptions, options != null ? options : {});\r\n\t\t\tif (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\r\n\t\t\t\treturn this.options.fallback.call(this);\r\n\t\t\t}\r\n\t\t\tif (this.options.url == null) {\r\n\t\t\t\tthis.options.url = this.element.getAttribute(\"action\");\r\n\t\t\t}\r\n\t\t\tif (!this.options.url) {\r\n\t\t\t\tthrow new Error(\"No URL provided.\");\r\n\t\t\t}\r\n\t\t\tif (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\r\n\t\t\t\tthrow new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\r\n\t\t\t}\r\n\t\t\tif (this.options.acceptedMimeTypes) {\r\n\t\t\t\tthis.options.acceptedFiles = this.options.acceptedMimeTypes;\r\n\t\t\t\tdelete this.options.acceptedMimeTypes;\r\n\t\t\t}\r\n\t\t\tif (this.options.renameFilename != null) {\r\n\t\t\t\tthis.options.renameFile = (function (_this) {\r\n\t\t\t\t\treturn function (file) {\r\n\t\t\t\t\t\treturn _this.options.renameFilename.call(_this, file.name, file);\r\n\t\t\t\t\t};\r\n\t\t\t\t})(this);\r\n\t\t\t}\r\n\t\t\tthis.options.method = this.options.method.toUpperCase();\r\n\t\t\tif ((fallback = this.getExistingFallback()) && fallback.parentNode) {\r\n\t\t\t\tfallback.parentNode.removeChild(fallback);\r\n\t\t\t}\r\n\t\t\tif (this.options.previewsContainer !== false) {\r\n\t\t\t\tif (this.options.previewsContainer) {\r\n\t\t\t\t\tthis.previewsContainer = Dropzone.getElement(this.options.previewsContainer, \"previewsContainer\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.previewsContainer = this.element;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.options.clickable) {\r\n\t\t\t\tif (this.options.clickable === true) {\r\n\t\t\t\t\tthis.clickableElements = [this.element];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.clickableElements = Dropzone.getElements(this.options.clickable, \"clickable\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.init();\r\n\t\t}\r\n\r\n\t\tDropzone.prototype.getAcceptedFiles = function () {\r\n\t\t\tvar file, j, len, ref, results;\r\n\t\t\tref = this.files;\r\n\t\t\tresults = [];\r\n\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\tfile = ref[j];\r\n\t\t\t\tif (file.accepted) {\r\n\t\t\t\t\tresults.push(file);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.getRejectedFiles = function () {\r\n\t\t\tvar file, j, len, ref, results;\r\n\t\t\tref = this.files;\r\n\t\t\tresults = [];\r\n\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\tfile = ref[j];\r\n\t\t\t\tif (!file.accepted) {\r\n\t\t\t\t\tresults.push(file);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.getFilesWithStatus = function (status) {\r\n\t\t\tvar file, j, len, ref, results;\r\n\t\t\tref = this.files;\r\n\t\t\tresults = [];\r\n\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\tfile = ref[j];\r\n\t\t\t\tif (file.status === status) {\r\n\t\t\t\t\tresults.push(file);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.getQueuedFiles = function () {\r\n\t\t\treturn this.getFilesWithStatus(Dropzone.QUEUED);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.getUploadingFiles = function () {\r\n\t\t\treturn this.getFilesWithStatus(Dropzone.UPLOADING);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.getAddedFiles = function () {\r\n\t\t\treturn this.getFilesWithStatus(Dropzone.ADDED);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.getActiveFiles = function () {\r\n\t\t\tvar file, j, len, ref, results;\r\n\t\t\tref = this.files;\r\n\t\t\tresults = [];\r\n\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\tfile = ref[j];\r\n\t\t\t\tif (file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED) {\r\n\t\t\t\t\tresults.push(file);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.init = function () {\r\n\t\t\tvar eventName, j, len, noPropagation, ref, ref1, setupHiddenFileInput;\r\n\t\t\tif (this.element.tagName === \"form\") {\r\n\t\t\t\tthis.element.setAttribute(\"enctype\", \"multipart/form-data\");\r\n\t\t\t}\r\n\t\t\tif (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\r\n\t\t\t\tthis.element.appendChild(Dropzone.createElement(\"
\" + this.options.dictDefaultMessage + \"
\"));\r\n\t\t\t}\r\n\t\t\tif (this.clickableElements.length) {\r\n\t\t\t\tsetupHiddenFileInput = (function (_this) {\r\n\t\t\t\t\treturn function () {\r\n\t\t\t\t\t\tif (_this.hiddenFileInput) {\r\n\t\t\t\t\t\t\t_this.hiddenFileInput.parentNode.removeChild(_this.hiddenFileInput);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t_this.hiddenFileInput = document.createElement(\"input\");\r\n\t\t\t\t\t\t_this.hiddenFileInput.setAttribute(\"type\", \"file\");\r\n\t\t\t\t\t\tif ((_this.options.maxFiles == null) || _this.options.maxFiles > 1) {\r\n\t\t\t\t\t\t\t_this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t_this.hiddenFileInput.className = \"dz-hidden-input\";\r\n\t\t\t\t\t\tif (_this.options.acceptedFiles != null) {\r\n\t\t\t\t\t\t\t_this.hiddenFileInput.setAttribute(\"accept\", _this.options.acceptedFiles);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (_this.options.capture != null) {\r\n\t\t\t\t\t\t\t_this.hiddenFileInput.setAttribute(\"capture\", _this.options.capture);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t_this.hiddenFileInput.style.visibility = \"hidden\";\r\n\t\t\t\t\t\t_this.hiddenFileInput.style.position = \"absolute\";\r\n\t\t\t\t\t\t_this.hiddenFileInput.style.top = \"0\";\r\n\t\t\t\t\t\t_this.hiddenFileInput.style.left = \"0\";\r\n\t\t\t\t\t\t_this.hiddenFileInput.style.height = \"0\";\r\n\t\t\t\t\t\t_this.hiddenFileInput.style.width = \"0\";\r\n\t\t\t\t\t\tdocument.querySelector(_this.options.hiddenInputContainer).appendChild(_this.hiddenFileInput);\r\n\t\t\t\t\t\treturn _this.hiddenFileInput.addEventListener(\"change\", function () {\r\n\t\t\t\t\t\t\tvar file, files, j, len;\r\n\t\t\t\t\t\t\tfiles = _this.hiddenFileInput.files;\r\n\t\t\t\t\t\t\tif (files.length) {\r\n\t\t\t\t\t\t\t\tfor (j = 0, len = files.length; j < len; j++) {\r\n\t\t\t\t\t\t\t\t\tfile = files[j];\r\n\t\t\t\t\t\t\t\t\t_this.addFile(file);\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_this.emit(\"addedfiles\", files);\r\n\t\t\t\t\t\t\treturn setupHiddenFileInput();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t};\r\n\t\t\t\t})(this);\r\n\t\t\t\tsetupHiddenFileInput();\r\n\t\t\t}\r\n\t\t\tthis.URL = (ref = window.URL) != null ? ref : window.webkitURL;\r\n\t\t\tref1 = this.events;\r\n\t\t\tfor (j = 0, len = ref1.length; j < len; j++) {\r\n\t\t\t\teventName = ref1[j];\r\n\t\t\t\tthis.on(eventName, this.options[eventName]);\r\n\t\t\t}\r\n\t\t\tthis.on(\"uploadprogress\", (function (_this) {\r\n\t\t\t\treturn function () {\r\n\t\t\t\t\treturn _this.updateTotalUploadProgress();\r\n\t\t\t\t};\r\n\t\t\t})(this));\r\n\t\t\tthis.on(\"removedfile\", (function (_this) {\r\n\t\t\t\treturn function () {\r\n\t\t\t\t\treturn _this.updateTotalUploadProgress();\r\n\t\t\t\t};\r\n\t\t\t})(this));\r\n\t\t\tthis.on(\"canceled\", (function (_this) {\r\n\t\t\t\treturn function (file) {\r\n\t\t\t\t\treturn _this.emit(\"complete\", file);\r\n\t\t\t\t};\r\n\t\t\t})(this));\r\n\t\t\tthis.on(\"complete\", (function (_this) {\r\n\t\t\t\treturn function (file) {\r\n\t\t\t\t\tif (_this.getAddedFiles().length === 0 && _this.getUploadingFiles().length === 0 && _this.getQueuedFiles().length === 0) {\r\n\t\t\t\t\t\treturn setTimeout((function () {\r\n\t\t\t\t\t\t\treturn _this.emit(\"queuecomplete\");\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})(this));\r\n\t\t\tnoPropagation = function (e) {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t\tif (e.preventDefault) {\r\n\t\t\t\t\treturn e.preventDefault();\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn e.returnValue = false;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tthis.listeners = [\r\n\t\t\t {\r\n\t\t\t \telement: this.element,\r\n\t\t\t \tevents: {\r\n\t\t\t \t\t\"dragstart\": (function (_this) {\r\n\t\t\t \t\t\treturn function (e) {\r\n\t\t\t \t\t\t\treturn _this.emit(\"dragstart\", e);\r\n\t\t\t \t\t\t};\r\n\t\t\t \t\t})(this),\r\n\t\t\t \t\t\"dragenter\": (function (_this) {\r\n\t\t\t \t\t\treturn function (e) {\r\n\t\t\t \t\t\t\tnoPropagation(e);\r\n\t\t\t \t\t\t\treturn _this.emit(\"dragenter\", e);\r\n\t\t\t \t\t\t};\r\n\t\t\t \t\t})(this),\r\n\t\t\t \t\t\"dragover\": (function (_this) {\r\n\t\t\t \t\t\treturn function (e) {\r\n\t\t\t \t\t\t\tvar efct;\r\n\t\t\t \t\t\t\ttry {\r\n\t\t\t \t\t\t\t\tefct = e.dataTransfer.effectAllowed;\r\n\t\t\t \t\t\t\t} catch (undefined) { }\r\n\t\t\t \t\t\t\te.dataTransfer.dropEffect = 'move' === efct || 'linkMove' === efct ? 'move' : 'copy';\r\n\t\t\t \t\t\t\tnoPropagation(e);\r\n\t\t\t \t\t\t\treturn _this.emit(\"dragover\", e);\r\n\t\t\t \t\t\t};\r\n\t\t\t \t\t})(this),\r\n\t\t\t \t\t\"dragleave\": (function (_this) {\r\n\t\t\t \t\t\treturn function (e) {\r\n\t\t\t \t\t\t\treturn _this.emit(\"dragleave\", e);\r\n\t\t\t \t\t\t};\r\n\t\t\t \t\t})(this),\r\n\t\t\t \t\t\"drop\": (function (_this) {\r\n\t\t\t \t\t\treturn function (e) {\r\n\t\t\t \t\t\t\tnoPropagation(e);\r\n\t\t\t \t\t\t\treturn _this.drop(e);\r\n\t\t\t \t\t\t};\r\n\t\t\t \t\t})(this),\r\n\t\t\t \t\t\"dragend\": (function (_this) {\r\n\t\t\t \t\t\treturn function (e) {\r\n\t\t\t \t\t\t\treturn _this.emit(\"dragend\", e);\r\n\t\t\t \t\t\t};\r\n\t\t\t \t\t})(this)\r\n\t\t\t \t}\r\n\t\t\t }\r\n\t\t\t];\r\n\t\t\tthis.clickableElements.forEach((function (_this) {\r\n\t\t\t\treturn function (clickableElement) {\r\n\t\t\t\t\treturn _this.listeners.push({\r\n\t\t\t\t\t\telement: clickableElement,\r\n\t\t\t\t\t\tevents: {\r\n\t\t\t\t\t\t\t\"click\": function (evt) {\r\n\t\t\t\t\t\t\t\tif ((clickableElement !== _this.element) || (evt.target === _this.element || Dropzone.elementInside(evt.target, _this.element.querySelector(\".dz-message\")))) {\r\n\t\t\t\t\t\t\t\t\t_this.hiddenFileInput.click();\r\n\t\t\t\t\t\t\t\t}\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})(this));\r\n\t\t\tthis.enable();\r\n\t\t\treturn this.options.init.call(this);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.destroy = function () {\r\n\t\t\tvar ref;\r\n\t\t\tthis.disable();\r\n\t\t\tthis.removeAllFiles(true);\r\n\t\t\tif ((ref = this.hiddenFileInput) != null ? ref.parentNode : void 0) {\r\n\t\t\t\tthis.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\r\n\t\t\t\tthis.hiddenFileInput = null;\r\n\t\t\t}\r\n\t\t\tdelete this.element.dropzone;\r\n\t\t\treturn Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.updateTotalUploadProgress = function () {\r\n\t\t\tvar activeFiles, file, j, len, ref, totalBytes, totalBytesSent, totalUploadProgress;\r\n\t\t\ttotalBytesSent = 0;\r\n\t\t\ttotalBytes = 0;\r\n\t\t\tactiveFiles = this.getActiveFiles();\r\n\t\t\tif (activeFiles.length) {\r\n\t\t\t\tref = this.getActiveFiles();\r\n\t\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\t\tfile = ref[j];\r\n\t\t\t\t\ttotalBytesSent += file.upload.bytesSent;\r\n\t\t\t\t\ttotalBytes += file.upload.total;\r\n\t\t\t\t}\r\n\t\t\t\ttotalUploadProgress = 100 * totalBytesSent / totalBytes;\r\n\t\t\t} else {\r\n\t\t\t\ttotalUploadProgress = 100;\r\n\t\t\t}\r\n\t\t\treturn this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype._getParamName = function (n) {\r\n\t\t\tif (typeof this.options.paramName === \"function\") {\r\n\t\t\t\treturn this.options.paramName(n);\r\n\t\t\t} else {\r\n\t\t\t\treturn \"\" + this.options.paramName + (this.options.uploadMultiple ? \"[\" + n + \"]\" : \"\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tDropzone.prototype._renameFile = function (file) {\r\n\t\t\tif (typeof this.options.renameFile !== \"function\") {\r\n\t\t\t\treturn file.name;\r\n\t\t\t}\r\n\t\t\treturn this.options.renameFile(file);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.getFallbackForm = function () {\r\n\t\t\tvar existingFallback, fields, fieldsString, form;\r\n\t\t\tif (existingFallback = this.getExistingFallback()) {\r\n\t\t\t\treturn existingFallback;\r\n\t\t\t}\r\n\t\t\tfieldsString = \"
\";\r\n\t\t\tif (this.options.dictFallbackText) {\r\n\t\t\t\tfieldsString += \"

\" + this.options.dictFallbackText + \"

\";\r\n\t\t\t}\r\n\t\t\tfieldsString += \"
\";\r\n\t\t\tfields = Dropzone.createElement(fieldsString);\r\n\t\t\tif (this.element.tagName !== \"FORM\") {\r\n\t\t\t\tform = Dropzone.createElement(\"
\");\r\n\t\t\t\tform.appendChild(fields);\r\n\t\t\t} else {\r\n\t\t\t\tthis.element.setAttribute(\"enctype\", \"multipart/form-data\");\r\n\t\t\t\tthis.element.setAttribute(\"method\", this.options.method);\r\n\t\t\t}\r\n\t\t\treturn form != null ? form : fields;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.getExistingFallback = function () {\r\n\t\t\tvar fallback, getFallback, j, len, ref, tagName;\r\n\t\t\tgetFallback = function (elements) {\r\n\t\t\t\tvar el, j, len;\r\n\t\t\t\tfor (j = 0, len = elements.length; j < len; j++) {\r\n\t\t\t\t\tel = elements[j];\r\n\t\t\t\t\tif (/(^| )fallback($| )/.test(el.className)) {\r\n\t\t\t\t\t\treturn el;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tref = [\"div\", \"form\"];\r\n\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\ttagName = ref[j];\r\n\t\t\t\tif (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\r\n\t\t\t\t\treturn fallback;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.setupEventListeners = function () {\r\n\t\t\tvar elementListeners, event, j, len, listener, ref, results;\r\n\t\t\tref = this.listeners;\r\n\t\t\tresults = [];\r\n\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\telementListeners = ref[j];\r\n\t\t\t\tresults.push((function () {\r\n\t\t\t\t\tvar ref1, results1;\r\n\t\t\t\t\tref1 = elementListeners.events;\r\n\t\t\t\t\tresults1 = [];\r\n\t\t\t\t\tfor (event in ref1) {\r\n\t\t\t\t\t\tlistener = ref1[event];\r\n\t\t\t\t\t\tresults1.push(elementListeners.element.addEventListener(event, listener, false));\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn results1;\r\n\t\t\t\t})());\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.removeEventListeners = function () {\r\n\t\t\tvar elementListeners, event, j, len, listener, ref, results;\r\n\t\t\tref = this.listeners;\r\n\t\t\tresults = [];\r\n\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\telementListeners = ref[j];\r\n\t\t\t\tresults.push((function () {\r\n\t\t\t\t\tvar ref1, results1;\r\n\t\t\t\t\tref1 = elementListeners.events;\r\n\t\t\t\t\tresults1 = [];\r\n\t\t\t\t\tfor (event in ref1) {\r\n\t\t\t\t\t\tlistener = ref1[event];\r\n\t\t\t\t\t\tresults1.push(elementListeners.element.removeEventListener(event, listener, false));\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn results1;\r\n\t\t\t\t})());\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.disable = function () {\r\n\t\t\tvar file, j, len, ref, results;\r\n\t\t\tthis.clickableElements.forEach(function (element) {\r\n\t\t\t\treturn element.classList.remove(\"dz-clickable\");\r\n\t\t\t});\r\n\t\t\tthis.removeEventListeners();\r\n\t\t\tref = this.files;\r\n\t\t\tresults = [];\r\n\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\tfile = ref[j];\r\n\t\t\t\tresults.push(this.cancelUpload(file));\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.enable = function () {\r\n\t\t\tthis.clickableElements.forEach(function (element) {\r\n\t\t\t\treturn element.classList.add(\"dz-clickable\");\r\n\t\t\t});\r\n\t\t\treturn this.setupEventListeners();\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.filesize = function (size) {\r\n\t\t\tvar cutoff, i, j, len, selectedSize, selectedUnit, unit, units;\r\n\t\t\tselectedSize = 0;\r\n\t\t\tselectedUnit = \"b\";\r\n\t\t\tif (size > 0) {\r\n\t\t\t\tunits = ['tb', 'gb', 'mb', 'kb', 'b'];\r\n\t\t\t\tfor (i = j = 0, len = units.length; j < len; i = ++j) {\r\n\t\t\t\t\tunit = units[i];\r\n\t\t\t\t\tcutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\r\n\t\t\t\t\tif (size >= cutoff) {\r\n\t\t\t\t\t\tselectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\r\n\t\t\t\t\t\tselectedUnit = unit;\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\tselectedSize = Math.round(10 * selectedSize) / 10;\r\n\t\t\t}\r\n\t\t\treturn \"\" + selectedSize + \" \" + this.options.dictFileSizeUnits[selectedUnit];\r\n\t\t};\r\n\r\n\t\tDropzone.prototype._updateMaxFilesReachedClass = function () {\r\n\t\t\tif ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\r\n\t\t\t\tif (this.getAcceptedFiles().length === this.options.maxFiles) {\r\n\t\t\t\t\tthis.emit('maxfilesreached', this.files);\r\n\t\t\t\t}\r\n\t\t\t\treturn this.element.classList.add(\"dz-max-files-reached\");\r\n\t\t\t} else {\r\n\t\t\t\treturn this.element.classList.remove(\"dz-max-files-reached\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.drop = function (e) {\r\n\t\t\tvar files, items;\r\n\t\t\tif (!e.dataTransfer) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.emit(\"drop\", e);\r\n\t\t\tfiles = e.dataTransfer.files;\r\n\t\t\tthis.emit(\"addedfiles\", files);\r\n\t\t\tif (files.length) {\r\n\t\t\t\titems = e.dataTransfer.items;\r\n\t\t\t\tif (items && items.length && (items[0].webkitGetAsEntry != null)) {\r\n\t\t\t\t\tthis._addFilesFromItems(items);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.handleFiles(files);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.paste = function (e) {\r\n\t\t\tvar items, ref;\r\n\t\t\tif ((e != null ? (ref = e.clipboardData) != null ? ref.items : void 0 : void 0) == null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.emit(\"paste\", e);\r\n\t\t\titems = e.clipboardData.items;\r\n\t\t\tif (items.length) {\r\n\t\t\t\treturn this._addFilesFromItems(items);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.handleFiles = function (files) {\r\n\t\t\tvar file, j, len, results;\r\n\t\t\tresults = [];\r\n\t\t\tfor (j = 0, len = files.length; j < len; j++) {\r\n\t\t\t\tfile = files[j];\r\n\t\t\t\tresults.push(this.addFile(file));\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype._addFilesFromItems = function (items) {\r\n\t\t\tvar entry, item, j, len, results;\r\n\t\t\tresults = [];\r\n\t\t\tfor (j = 0, len = items.length; j < len; j++) {\r\n\t\t\t\titem = items[j];\r\n\t\t\t\tif ((item.webkitGetAsEntry != null) && (entry = item.webkitGetAsEntry())) {\r\n\t\t\t\t\tif (entry.isFile) {\r\n\t\t\t\t\t\tresults.push(this.addFile(item.getAsFile()));\r\n\t\t\t\t\t} else if (entry.isDirectory) {\r\n\t\t\t\t\t\tresults.push(this._addFilesFromDirectory(entry, entry.name));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresults.push(void 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (item.getAsFile != null) {\r\n\t\t\t\t\tif ((item.kind == null) || item.kind === \"file\") {\r\n\t\t\t\t\t\tresults.push(this.addFile(item.getAsFile()));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresults.push(void 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresults.push(void 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype._addFilesFromDirectory = function (directory, path) {\r\n\t\t\tvar dirReader, errorHandler, readEntries;\r\n\t\t\tdirReader = directory.createReader();\r\n\t\t\terrorHandler = function (error) {\r\n\t\t\t\treturn typeof console !== \"undefined\" && console !== null ? typeof console.log === \"function\" ? console.log(error) : void 0 : void 0;\r\n\t\t\t};\r\n\t\t\treadEntries = (function (_this) {\r\n\t\t\t\treturn function () {\r\n\t\t\t\t\treturn dirReader.readEntries(function (entries) {\r\n\t\t\t\t\t\tvar entry, j, len;\r\n\t\t\t\t\t\tif (entries.length > 0) {\r\n\t\t\t\t\t\t\tfor (j = 0, len = entries.length; j < len; j++) {\r\n\t\t\t\t\t\t\t\tentry = entries[j];\r\n\t\t\t\t\t\t\t\tif (entry.isFile) {\r\n\t\t\t\t\t\t\t\t\tentry.file(function (file) {\r\n\t\t\t\t\t\t\t\t\t\tif (_this.options.ignoreHiddenFiles && file.name.substring(0, 1) === '.') {\r\n\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tfile.fullPath = path + \"/\" + file.name;\r\n\t\t\t\t\t\t\t\t\t\treturn _this.addFile(file);\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t} else if (entry.isDirectory) {\r\n\t\t\t\t\t\t\t\t\t_this._addFilesFromDirectory(entry, path + \"/\" + entry.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\treadEntries();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t}, errorHandler);\r\n\t\t\t\t};\r\n\t\t\t})(this);\r\n\t\t\treturn readEntries();\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.accept = function (file, done) {\r\n\t\t\tif (file.size > this.options.maxFilesize * 1024 * 1024) {\r\n\t\t\t\treturn done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\r\n\t\t\t} else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\r\n\t\t\t\treturn done(this.options.dictInvalidFileType);\r\n\t\t\t} else if ((this.options.maxFiles != null) && this.getAcceptedFiles().length >= this.options.maxFiles) {\r\n\t\t\t\tdone(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\r\n\t\t\t\treturn this.emit(\"maxfilesexceeded\", file);\r\n\t\t\t} else {\r\n\t\t\t\treturn this.options.accept.call(this, file, done);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.addFile = function (file) {\r\n\t\t\tfile.upload = {\r\n\t\t\t\tprogress: 0,\r\n\t\t\t\ttotal: file.size,\r\n\t\t\t\tbytesSent: 0,\r\n\t\t\t\tfilename: this._renameFile(file)\r\n\t\t\t};\r\n\t\t\tthis.files.push(file);\r\n\t\t\tfile.status = Dropzone.ADDED;\r\n\t\t\tif (Dropzone.isValidFile(file, this.options.acceptedFiles)) {\r\n\t\t\t\tthis.emit(\"addedfile\", file);\r\n\t\t\t}\r\n\t\t\tthis._enqueueThumbnail(file);\r\n\t\t\treturn this.accept(file, (function (_this) {\r\n\t\t\t\treturn function (error) {\r\n\t\t\t\t\tif (error) {\r\n\t\t\t\t\t\tfile.accepted = false;\r\n\t\t\t\t\t\t_this._errorProcessing([file], error);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tfile.accepted = true;\r\n\t\t\t\t\t\tif (_this.options.autoQueue) {\r\n\t\t\t\t\t\t\t_this.enqueueFile(file);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn _this._updateMaxFilesReachedClass();\r\n\t\t\t\t};\r\n\t\t\t})(this));\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.enqueueFiles = function (files) {\r\n\t\t\tvar file, j, len;\r\n\t\t\tfor (j = 0, len = files.length; j < len; j++) {\r\n\t\t\t\tfile = files[j];\r\n\t\t\t\tthis.enqueueFile(file);\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.enqueueFile = function (file) {\r\n\t\t\tif (file.status === Dropzone.ADDED && file.accepted === true) {\r\n\t\t\t\tfile.status = Dropzone.QUEUED;\r\n\t\t\t\tif (this.options.autoProcessQueue) {\r\n\t\t\t\t\treturn setTimeout(((function (_this) {\r\n\t\t\t\t\t\treturn function () {\r\n\t\t\t\t\t\t\treturn _this.processQueue();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t})(this)), 0);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error(\"This file can't be queued because it has already been processed or was rejected.\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tDropzone.prototype._thumbnailQueue = [];\r\n\r\n\t\tDropzone.prototype._processingThumbnail = false;\r\n\r\n\t\tDropzone.prototype._enqueueThumbnail = function (file) {\r\n\t\t\tvar isValidImage = Dropzone.isValidFile(file, imageExtensions);\r\n\t\t\tif (this.options.createImageThumbnails && isValidImage && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\r\n\t\t\t\tthis._thumbnailQueue.push(file);\r\n\t\t\t\treturn setTimeout(((function (_this) {\r\n\t\t\t\t\treturn function () {\r\n\t\t\t\t\t\treturn _this._processThumbnailQueue();\r\n\t\t\t\t\t};\r\n\t\t\t\t})(this)), 0);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tDropzone.prototype._processThumbnailQueue = function () {\r\n\t\t\tvar file;\r\n\t\t\tif (this._processingThumbnail || this._thumbnailQueue.length === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis._processingThumbnail = true;\r\n\t\t\tfile = this._thumbnailQueue.shift();\r\n\t\t\treturn this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, (function (_this) {\r\n\t\t\t\treturn function (dataUrl) {\r\n\t\t\t\t\t_this.emit(\"thumbnail\", file, dataUrl);\r\n\t\t\t\t\t_this._processingThumbnail = false;\r\n\t\t\t\t\treturn _this._processThumbnailQueue();\r\n\t\t\t\t};\r\n\t\t\t})(this));\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.removeFile = function (file) {\r\n\t\t\tif (file.status === Dropzone.UPLOADING) {\r\n\t\t\t\tthis.cancelUpload(file);\r\n\t\t\t}\r\n\t\t\tthis.files = without(this.files, file);\r\n\t\t\tthis.emit(\"removedfile\", file);\r\n\t\t\tif (this.files.length === 0) {\r\n\t\t\t\treturn this.emit(\"reset\");\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.removeAllFiles = function (cancelIfNecessary) {\r\n\t\t\tvar file, j, len, ref;\r\n\t\t\tif (cancelIfNecessary == null) {\r\n\t\t\t\tcancelIfNecessary = false;\r\n\t\t\t}\r\n\t\t\tref = this.files.slice();\r\n\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\tfile = ref[j];\r\n\t\t\t\tif (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\r\n\t\t\t\t\tthis.removeFile(file);\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\tDropzone.prototype.resizeImage = function (file, width, height, resizeMethod, callback) {\r\n\t\t\treturn this.createThumbnail(file, width, height, resizeMethod, false, (function (_this) {\r\n\t\t\t\treturn function (dataUrl, canvas) {\r\n\t\t\t\t\tvar resizeMimeType, resizedDataURL;\r\n\t\t\t\t\tif (canvas === null) {\r\n\t\t\t\t\t\treturn callback(file);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresizeMimeType = _this.options.resizeMimeType;\r\n\t\t\t\t\t\tif (resizeMimeType == null) {\r\n\t\t\t\t\t\t\tresizeMimeType = file.type;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tresizedDataURL = canvas.toDataURL(resizeMimeType, _this.options.resizeQuality);\r\n\t\t\t\t\t\tif (resizeMimeType === 'image/jpeg' || resizeMimeType === 'image/jpg') {\r\n\t\t\t\t\t\t\tresizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn callback(Dropzone.dataURItoBlob(resizedDataURL));\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t})(this));\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.createThumbnail = function (file, width, height, resizeMethod, fixOrientation, callback) {\r\n\t\t\tvar fileReader;\r\n\t\t\tfileReader = new FileReader;\r\n\t\t\tfileReader.onload = (function (_this) {\r\n\t\t\t\treturn function () {\r\n\t\t\t\t\tfile.dataURL = fileReader.result;\r\n\t\t\t\t\tif (file.type === \"image/svg+xml\") {\r\n\t\t\t\t\t\tif (callback != null) {\r\n\t\t\t\t\t\t\tcallback(fileReader.result);\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\treturn _this.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);\r\n\t\t\t\t};\r\n\t\t\t})(this);\r\n\t\t\treturn fileReader.readAsDataURL(file);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.createThumbnailFromUrl = function (file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {\r\n\t\t\tvar img;\r\n\t\t\timg = document.createElement(\"img\");\r\n\t\t\tif (crossOrigin) {\r\n\t\t\t\timg.crossOrigin = crossOrigin;\r\n\t\t\t}\r\n\t\t\timg.onload = (function (_this) {\r\n\t\t\t\treturn function () {\r\n\t\t\t\t\tvar loadExif;\r\n\t\t\t\t\tloadExif = function (callback) {\r\n\t\t\t\t\t\treturn callback(1);\r\n\t\t\t\t\t};\r\n\t\t\t\t\tif ((typeof EXIF !== \"undefined\" && EXIF !== null) && fixOrientation) {\r\n\t\t\t\t\t\tloadExif = function (callback) {\r\n\t\t\t\t\t\t\treturn EXIF.getData(img, function () {\r\n\t\t\t\t\t\t\t\treturn callback(EXIF.getTag(this, 'Orientation'));\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 loadExif(function (orientation) {\r\n\t\t\t\t\t\tvar canvas, ctx, ref, ref1, ref2, ref3, resizeInfo, thumbnail;\r\n\t\t\t\t\t\tfile.width = img.width;\r\n\t\t\t\t\t\tfile.height = img.height;\r\n\t\t\t\t\t\tresizeInfo = _this.options.resize.call(_this, file, width, height, resizeMethod);\r\n\t\t\t\t\t\tcanvas = document.createElement(\"canvas\");\r\n\t\t\t\t\t\tctx = canvas.getContext(\"2d\");\r\n\t\t\t\t\t\tcanvas.width = resizeInfo.trgWidth;\r\n\t\t\t\t\t\tcanvas.height = resizeInfo.trgHeight;\r\n\t\t\t\t\t\tif (orientation > 4) {\r\n\t\t\t\t\t\t\tcanvas.width = resizeInfo.trgHeight;\r\n\t\t\t\t\t\t\tcanvas.height = resizeInfo.trgWidth;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tswitch (orientation) {\r\n\t\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\t\tctx.translate(canvas.width, 0);\r\n\t\t\t\t\t\t\t\tctx.scale(-1, 1);\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\t\t\tctx.translate(canvas.width, canvas.height);\r\n\t\t\t\t\t\t\t\tctx.rotate(Math.PI);\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 4:\r\n\t\t\t\t\t\t\t\tctx.translate(0, canvas.height);\r\n\t\t\t\t\t\t\t\tctx.scale(1, -1);\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 5:\r\n\t\t\t\t\t\t\t\tctx.rotate(0.5 * Math.PI);\r\n\t\t\t\t\t\t\t\tctx.scale(1, -1);\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 6:\r\n\t\t\t\t\t\t\t\tctx.rotate(0.5 * Math.PI);\r\n\t\t\t\t\t\t\t\tctx.translate(0, -canvas.height);\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 7:\r\n\t\t\t\t\t\t\t\tctx.rotate(0.5 * Math.PI);\r\n\t\t\t\t\t\t\t\tctx.translate(canvas.width, -canvas.height);\r\n\t\t\t\t\t\t\t\tctx.scale(-1, 1);\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\tcase 8:\r\n\t\t\t\t\t\t\t\tctx.rotate(-0.5 * Math.PI);\r\n\t\t\t\t\t\t\t\tctx.translate(-canvas.width, 0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdrawImageIOSFix(ctx, img, (ref = resizeInfo.srcX) != null ? ref : 0, (ref1 = resizeInfo.srcY) != null ? ref1 : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, (ref2 = resizeInfo.trgX) != null ? ref2 : 0, (ref3 = resizeInfo.trgY) != null ? ref3 : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\r\n\t\t\t\t\t\tthumbnail = canvas.toDataURL(\"image/png\");\r\n\t\t\t\t\t\tif (callback != null) {\r\n\t\t\t\t\t\t\treturn callback(thumbnail, canvas);\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})(this);\r\n\t\t\tif (callback != null) {\r\n\t\t\t\timg.onerror = callback;\r\n\t\t\t}\r\n\t\t\treturn img.src = file.dataURL;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.processQueue = function () {\r\n\t\t\tvar i, parallelUploads, processingLength, queuedFiles;\r\n\t\t\tparallelUploads = this.options.parallelUploads;\r\n\t\t\tprocessingLength = this.getUploadingFiles().length;\r\n\t\t\ti = processingLength;\r\n\t\t\tif (processingLength >= parallelUploads) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tqueuedFiles = this.getQueuedFiles();\r\n\t\t\tif (!(queuedFiles.length > 0)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (this.options.uploadMultiple) {\r\n\t\t\t\treturn this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\r\n\t\t\t} else {\r\n\t\t\t\twhile (i < parallelUploads) {\r\n\t\t\t\t\tif (!queuedFiles.length) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.processFile(queuedFiles.shift());\r\n\t\t\t\t\ti++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.processFile = function (file) {\r\n\t\t\treturn this.processFiles([file]);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.processFiles = function (files) {\r\n\t\t\tvar file, j, len;\r\n\t\t\tfor (j = 0, len = files.length; j < len; j++) {\r\n\t\t\t\tfile = files[j];\r\n\t\t\t\tfile.processing = true;\r\n\t\t\t\tfile.status = Dropzone.UPLOADING;\r\n\t\t\t\tthis.emit(\"processing\", file);\r\n\t\t\t}\r\n\t\t\tif (this.options.uploadMultiple) {\r\n\t\t\t\tthis.emit(\"processingmultiple\", files);\r\n\t\t\t}\r\n\t\t\treturn this.uploadFiles(files);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype._getFilesWithXhr = function (xhr) {\r\n\t\t\tvar file, files;\r\n\t\t\treturn files = (function () {\r\n\t\t\t\tvar j, len, ref, results;\r\n\t\t\t\tref = this.files;\r\n\t\t\t\tresults = [];\r\n\t\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\t\tfile = ref[j];\r\n\t\t\t\t\tif (file.xhr === xhr) {\r\n\t\t\t\t\t\tresults.push(file);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn results;\r\n\t\t\t}).call(this);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.cancelUpload = function (file) {\r\n\t\t\tvar groupedFile, groupedFiles, j, k, len, len1, ref;\r\n\t\t\tif (file.status === Dropzone.UPLOADING) {\r\n\t\t\t\tgroupedFiles = this._getFilesWithXhr(file.xhr);\r\n\t\t\t\tfor (j = 0, len = groupedFiles.length; j < len; j++) {\r\n\t\t\t\t\tgroupedFile = groupedFiles[j];\r\n\t\t\t\t\tgroupedFile.status = Dropzone.CANCELED;\r\n\t\t\t\t}\r\n\t\t\t\tfile.xhr.abort();\r\n\t\t\t\tfor (k = 0, len1 = groupedFiles.length; k < len1; k++) {\r\n\t\t\t\t\tgroupedFile = groupedFiles[k];\r\n\t\t\t\t\tthis.emit(\"canceled\", groupedFile);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.options.uploadMultiple) {\r\n\t\t\t\t\tthis.emit(\"canceledmultiple\", groupedFiles);\r\n\t\t\t\t}\r\n\t\t\t} else if ((ref = file.status) === Dropzone.ADDED || ref === Dropzone.QUEUED) {\r\n\t\t\t\tfile.status = Dropzone.CANCELED;\r\n\t\t\t\tthis.emit(\"canceled\", file);\r\n\t\t\t\tif (this.options.uploadMultiple) {\r\n\t\t\t\t\tthis.emit(\"canceledmultiple\", [file]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.options.autoProcessQueue) {\r\n\t\t\t\treturn this.processQueue();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tresolveOption = function () {\r\n\t\t\tvar args, option;\r\n\t\t\toption = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];\r\n\t\t\tif (typeof option === 'function') {\r\n\t\t\t\treturn option.apply(this, args);\r\n\t\t\t}\r\n\t\t\treturn option;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.uploadFile = function (file) {\r\n\t\t\treturn this.uploadFiles([file]);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.uploadFiles = function (files) {\r\n\t\t\tvar doneCounter, doneFunction, file, formData, handleError, headerName, headerValue, headers, i, input, inputName, inputType, j, k, key, l, len, len1, len2, len3, m, method, o, option, progressObj, ref, ref1, ref2, ref3, ref4, ref5, response, results, updateProgress, url, value, xhr;\r\n\t\t\txhr = new XMLHttpRequest();\r\n\t\t\tfor (j = 0, len = files.length; j < len; j++) {\r\n\t\t\t\tfile = files[j];\r\n\t\t\t\tfile.xhr = xhr;\r\n\t\t\t}\r\n\t\t\tmethod = resolveOption(this.options.method, files);\r\n\t\t\turl = resolveOption(this.options.url, files);\r\n\t\t\txhr.open(method, url, true);\r\n\t\t\txhr.timeout = resolveOption(this.options.timeout, files);\r\n\t\t\txhr.withCredentials = !!this.options.withCredentials;\r\n\t\t\tresponse = null;\r\n\t\t\thandleError = (function (_this) {\r\n\t\t\t\treturn function () {\r\n\t\t\t\t\tvar k, len1, results;\r\n\t\t\t\t\tresults = [];\r\n\t\t\t\t\tfor (k = 0, len1 = files.length; k < len1; k++) {\r\n\t\t\t\t\t\tfile = files[k];\r\n\t\t\t\t\t\tresults.push(_this._errorProcessing(files, response || _this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr));\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn results;\r\n\t\t\t\t};\r\n\t\t\t})(this);\r\n\t\t\tupdateProgress = (function (_this) {\r\n\t\t\t\treturn function (e) {\r\n\t\t\t\t\tvar allFilesFinished, k, l, len1, len2, len3, m, progress, results;\r\n\t\t\t\t\tif (e != null) {\r\n\t\t\t\t\t\tprogress = 100 * e.loaded / e.total;\r\n\t\t\t\t\t\tfor (k = 0, len1 = files.length; k < len1; k++) {\r\n\t\t\t\t\t\t\tfile = files[k];\r\n\t\t\t\t\t\t\tfile.upload = {\r\n\t\t\t\t\t\t\t\tprogress: progress,\r\n\t\t\t\t\t\t\t\ttotal: e.total,\r\n\t\t\t\t\t\t\t\tbytesSent: e.loaded\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\tallFilesFinished = true;\r\n\t\t\t\t\t\tprogress = 100;\r\n\t\t\t\t\t\tfor (l = 0, len2 = files.length; l < len2; l++) {\r\n\t\t\t\t\t\t\tfile = files[l];\r\n\t\t\t\t\t\t\tif (!(file.upload.progress === 100 && file.upload.bytesSent === file.upload.total)) {\r\n\t\t\t\t\t\t\t\tallFilesFinished = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tfile.upload.progress = progress;\r\n\t\t\t\t\t\t\tfile.upload.bytesSent = file.upload.total;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (allFilesFinished) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresults = [];\r\n\t\t\t\t\tfor (m = 0, len3 = files.length; m < len3; m++) {\r\n\t\t\t\t\t\tfile = files[m];\r\n\t\t\t\t\t\tresults.push(_this.emit(\"uploadprogress\", file, progress, file.upload.bytesSent));\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn results;\r\n\t\t\t\t};\r\n\t\t\t})(this);\r\n\t\t\txhr.onload = (function (_this) {\r\n\t\t\t\treturn function (e) {\r\n\t\t\t\t\tvar error1, ref;\r\n\t\t\t\t\tif (files[0].status === Dropzone.CANCELED) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (xhr.readyState !== 4) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresponse = xhr.responseText;\r\n\t\t\t\t\tif (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tresponse = JSON.parse(response);\r\n\t\t\t\t\t\t} catch (error1) {\r\n\t\t\t\t\t\t\te = error1;\r\n\t\t\t\t\t\t\tresponse = \"Invalid JSON response from server.\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tupdateProgress();\r\n\t\t\t\t\tif (!((200 <= (ref = xhr.status) && ref < 300))) {\r\n\t\t\t\t\t\treturn handleError();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn _this._finished(files, response, e);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t})(this);\r\n\t\t\txhr.onerror = (function (_this) {\r\n\t\t\t\treturn function () {\r\n\t\t\t\t\tif (files[0].status === Dropzone.CANCELED) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn handleError();\r\n\t\t\t\t};\r\n\t\t\t})(this);\r\n\t\t\tprogressObj = (ref = xhr.upload) != null ? ref : xhr;\r\n\t\t\tprogressObj.onprogress = updateProgress;\r\n\t\t\theaders = {\r\n\t\t\t\t\"Accept\": \"application/json\",\r\n\t\t\t\t\"Cache-Control\": \"no-cache\",\r\n\t\t\t\t\"X-Requested-With\": \"XMLHttpRequest\"\r\n\t\t\t};\r\n\t\t\tif (this.options.headers) {\r\n\t\t\t\textend(headers, this.options.headers);\r\n\t\t\t}\r\n\t\t\tfor (headerName in headers) {\r\n\t\t\t\theaderValue = headers[headerName];\r\n\t\t\t\tif (headerValue) {\r\n\t\t\t\t\txhr.setRequestHeader(headerName, headerValue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tformData = new FormData();\r\n\t\t\tif (this.options.params) {\r\n\t\t\t\tref1 = this.options.params;\r\n\t\t\t\tfor (key in ref1) {\r\n\t\t\t\t\tvalue = ref1[key];\r\n\t\t\t\t\tformData.append(key, value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfor (k = 0, len1 = files.length; k < len1; k++) {\r\n\t\t\t\tfile = files[k];\r\n\t\t\t\tthis.emit(\"sending\", file, xhr, formData);\r\n\t\t\t}\r\n\t\t\tif (this.options.uploadMultiple) {\r\n\t\t\t\tthis.emit(\"sendingmultiple\", files, xhr, formData);\r\n\t\t\t}\r\n\t\t\tif (this.element.tagName === \"FORM\") {\r\n\t\t\t\tref2 = this.element.querySelectorAll(\"input, textarea, select, button\");\r\n\t\t\t\tfor (l = 0, len2 = ref2.length; l < len2; l++) {\r\n\t\t\t\t\tinput = ref2[l];\r\n\t\t\t\t\tinputName = input.getAttribute(\"name\");\r\n\t\t\t\t\tinputType = input.getAttribute(\"type\");\r\n\t\t\t\t\tif (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\r\n\t\t\t\t\t\tref3 = input.options;\r\n\t\t\t\t\t\tfor (m = 0, len3 = ref3.length; m < len3; m++) {\r\n\t\t\t\t\t\t\toption = ref3[m];\r\n\t\t\t\t\t\t\tif (option.selected) {\r\n\t\t\t\t\t\t\t\tformData.append(inputName, option.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} else if (!inputType || ((ref4 = inputType.toLowerCase()) !== \"checkbox\" && ref4 !== \"radio\") || input.checked) {\r\n\t\t\t\t\t\tformData.append(inputName, input.value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdoneCounter = 0;\r\n\t\t\tresults = [];\r\n\t\t\tfor (i = o = 0, ref5 = files.length - 1; 0 <= ref5 ? o <= ref5 : o >= ref5; i = 0 <= ref5 ? ++o : --o) {\r\n\t\t\t\tdoneFunction = (function (_this) {\r\n\t\t\t\t\treturn function (file, paramName, fileName) {\r\n\t\t\t\t\t\treturn function (transformedFile) {\r\n\t\t\t\t\t\t\tformData.append(paramName, transformedFile, fileName);\r\n\t\t\t\t\t\t\tif (++doneCounter === files.length) {\r\n\t\t\t\t\t\t\t\treturn _this.submitRequest(xhr, formData, files);\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})(this);\r\n\t\t\t\tresults.push(this.options.transformFile.call(this, files[i], doneFunction(files[i], this._getParamName(i), files[i].upload.filename)));\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t\tDropzone.prototype.submitRequest = function (xhr, formData, files) {\r\n\t\t\treturn xhr.send(formData);\r\n\t\t};\r\n\r\n\t\tDropzone.prototype._finished = function (files, responseText, e) {\r\n\t\t\tvar file, j, len;\r\n\t\t\tfor (j = 0, len = files.length; j < len; j++) {\r\n\t\t\t\tfile = files[j];\r\n\t\t\t\tfile.status = Dropzone.SUCCESS;\r\n\t\t\t\tthis.emit(\"success\", file, responseText, e);\r\n\t\t\t\tthis.emit(\"complete\", file);\r\n\t\t\t}\r\n\t\t\tif (this.options.uploadMultiple) {\r\n\t\t\t\tthis.emit(\"successmultiple\", files, responseText, e);\r\n\t\t\t\tthis.emit(\"completemultiple\", files);\r\n\t\t\t}\r\n\t\t\tif (this.options.autoProcessQueue) {\r\n\t\t\t\treturn this.processQueue();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tDropzone.prototype._errorProcessing = function (files, message, xhr) {\r\n\t\t\tvar file, j, len;\r\n\t\t\tfor (j = 0, len = files.length; j < len; j++) {\r\n\t\t\t\tfile = files[j];\r\n\t\t\t\tfile.status = Dropzone.ERROR;\r\n\t\t\t\tthis.emit(\"error\", file, message, xhr);\r\n\t\t\t\tthis.emit(\"complete\", file);\r\n\t\t\t}\r\n\t\t\tif (this.options.uploadMultiple) {\r\n\t\t\t\tthis.emit(\"errormultiple\", files, message, xhr);\r\n\t\t\t\tthis.emit(\"completemultiple\", files);\r\n\t\t\t}\r\n\t\t\tif (this.options.autoProcessQueue) {\r\n\t\t\t\treturn this.processQueue();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\treturn Dropzone;\r\n\r\n\t})(Emitter);\r\n\r\n\tDropzone.version = \"5.1.0\";\r\n\r\n\tDropzone.options = {};\r\n\r\n\tDropzone.optionsForElement = function (element) {\r\n\t\tif (element.getAttribute(\"id\")) {\r\n\t\t\treturn Dropzone.options[camelize(element.getAttribute(\"id\"))];\r\n\t\t} else {\r\n\t\t\treturn void 0;\r\n\t\t}\r\n\t};\r\n\r\n\tDropzone.instances = [];\r\n\r\n\tDropzone.forElement = function (element) {\r\n\t\tif (typeof element === \"string\") {\r\n\t\t\telement = document.querySelector(element);\r\n\t\t}\r\n\t\tif ((element != null ? element.dropzone : void 0) == null) {\r\n\t\t\tthrow new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\r\n\t\t}\r\n\t\treturn element.dropzone;\r\n\t};\r\n\r\n\tDropzone.autoDiscover = true;\r\n\r\n\tDropzone.discover = function () {\r\n\t\tvar checkElements, dropzone, dropzones, j, len, results;\r\n\t\tif (document.querySelectorAll) {\r\n\t\t\tdropzones = document.querySelectorAll(\".dropzone\");\r\n\t\t} else {\r\n\t\t\tdropzones = [];\r\n\t\t\tcheckElements = function (elements) {\r\n\t\t\t\tvar el, j, len, results;\r\n\t\t\t\tresults = [];\r\n\t\t\t\tfor (j = 0, len = elements.length; j < len; j++) {\r\n\t\t\t\t\tel = elements[j];\r\n\t\t\t\t\tif (/(^| )dropzone($| )/.test(el.className)) {\r\n\t\t\t\t\t\tresults.push(dropzones.push(el));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresults.push(void 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn results;\r\n\t\t\t};\r\n\t\t\tcheckElements(document.getElementsByTagName(\"div\"));\r\n\t\t\tcheckElements(document.getElementsByTagName(\"form\"));\r\n\t\t}\r\n\t\tresults = [];\r\n\t\tfor (j = 0, len = dropzones.length; j < len; j++) {\r\n\t\t\tdropzone = dropzones[j];\r\n\t\t\tif (Dropzone.optionsForElement(dropzone) !== false) {\r\n\t\t\t\tresults.push(new Dropzone(dropzone));\r\n\t\t\t} else {\r\n\t\t\t\tresults.push(void 0);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn results;\r\n\t};\r\n\r\n\tDropzone.blacklistedBrowsers = [/opera.*Macintosh.*version\\/12/i];\r\n\r\n\tDropzone.isBrowserSupported = function () {\r\n\t\tvar capableBrowser, j, len, ref, regex;\r\n\t\tcapableBrowser = true;\r\n\t\tif (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\r\n\t\t\tif (!(\"classList\" in document.createElement(\"a\"))) {\r\n\t\t\t\tcapableBrowser = false;\r\n\t\t\t} else {\r\n\t\t\t\tref = Dropzone.blacklistedBrowsers;\r\n\t\t\t\tfor (j = 0, len = ref.length; j < len; j++) {\r\n\t\t\t\t\tregex = ref[j];\r\n\t\t\t\t\tif (regex.test(navigator.userAgent)) {\r\n\t\t\t\t\t\tcapableBrowser = false;\r\n\t\t\t\t\t\tcontinue;\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\tcapableBrowser = false;\r\n\t\t}\r\n\t\treturn capableBrowser;\r\n\t};\r\n\r\n\tDropzone.dataURItoBlob = function (dataURI) {\r\n\t\tvar ab, byteString, i, ia, j, mimeString, ref;\r\n\t\tbyteString = atob(dataURI.split(',')[1]);\r\n\t\tmimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\r\n\t\tab = new ArrayBuffer(byteString.length);\r\n\t\tia = new Uint8Array(ab);\r\n\t\tfor (i = j = 0, ref = byteString.length; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {\r\n\t\t\tia[i] = byteString.charCodeAt(i);\r\n\t\t}\r\n\t\treturn new Blob([ab], {\r\n\t\t\ttype: mimeString\r\n\t\t});\r\n\t};\r\n\r\n\twithout = function (list, rejectedItem) {\r\n\t\tvar item, j, len, results;\r\n\t\tresults = [];\r\n\t\tfor (j = 0, len = list.length; j < len; j++) {\r\n\t\t\titem = list[j];\r\n\t\t\tif (item !== rejectedItem) {\r\n\t\t\t\tresults.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn results;\r\n\t};\r\n\r\n\tcamelize = function (str) {\r\n\t\treturn str.replace(/[\\-_](\\w)/g, function (match) {\r\n\t\t\treturn match.charAt(1).toUpperCase();\r\n\t\t});\r\n\t};\r\n\r\n\tDropzone.createElement = function (string) {\r\n\t\tvar div;\r\n\t\tdiv = document.createElement(\"div\");\r\n\t\tdiv.innerHTML = string;\r\n\t\treturn div.childNodes[0];\r\n\t};\r\n\r\n\tDropzone.elementInside = function (element, container) {\r\n\t\tif (element === container) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\twhile (element = element.parentNode) {\r\n\t\t\tif (element === container) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tDropzone.getElement = function (el, name) {\r\n\t\tvar element;\r\n\t\tif (typeof el === \"string\") {\r\n\t\t\telement = document.querySelector(el);\r\n\t\t} else if (el.nodeType != null) {\r\n\t\t\telement = el;\r\n\t\t}\r\n\t\tif (element == null) {\r\n\t\t\tthrow new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector or a plain HTML element.\");\r\n\t\t}\r\n\t\treturn element;\r\n\t};\r\n\r\n\tDropzone.getElements = function (els, name) {\r\n\t\tvar e, el, elements, error1, j, k, len, len1, ref;\r\n\t\tif (els instanceof Array) {\r\n\t\t\telements = [];\r\n\t\t\ttry {\r\n\t\t\t\tfor (j = 0, len = els.length; j < len; j++) {\r\n\t\t\t\t\tel = els[j];\r\n\t\t\t\t\telements.push(this.getElement(el, name));\r\n\t\t\t\t}\r\n\t\t\t} catch (error1) {\r\n\t\t\t\te = error1;\r\n\t\t\t\telements = null;\r\n\t\t\t}\r\n\t\t} else if (typeof els === \"string\") {\r\n\t\t\telements = [];\r\n\t\t\tref = document.querySelectorAll(els);\r\n\t\t\tfor (k = 0, len1 = ref.length; k < len1; k++) {\r\n\t\t\t\tel = ref[k];\r\n\t\t\t\telements.push(el);\r\n\t\t\t}\r\n\t\t} else if (els.nodeType != null) {\r\n\t\t\telements = [els];\r\n\t\t}\r\n\t\tif (!((elements != null) && elements.length)) {\r\n\t\t\tthrow new Error(\"Invalid `\" + name + \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\");\r\n\t\t}\r\n\t\treturn elements;\r\n\t};\r\n\r\n\tDropzone.confirm = function (question, accepted, rejected) {\r\n\t\tif (window.confirm(question)) {\r\n\t\t\treturn accepted();\r\n\t\t} else if (rejected != null) {\r\n\t\t\treturn rejected();\r\n\t\t}\r\n\t};\r\n\r\n\tDropzone.isValidFile = function (file, acceptedFiles) {\r\n\t\tvar baseMimeType, j, len, mimeType, validType;\r\n\t\tif (!acceptedFiles) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tacceptedFiles = acceptedFiles.split(\",\");\r\n\t\tmimeType = file.type;\r\n\t\tbaseMimeType = mimeType.replace(/\\/.*$/, \"\");\r\n\t\tfor (j = 0, len = acceptedFiles.length; j < len; j++) {\r\n\t\t\tvalidType = acceptedFiles[j];\r\n\t\t\tvalidType = validType.trim();\r\n\t\t\tif (validType.charAt(0) === \".\") {\r\n\t\t\t\tif (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t} else if (/\\/\\*$/.test(validType)) {\r\n\t\t\t\tif (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (mimeType === validType) {\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 false;\r\n\t};\r\n\r\n\tif (typeof jQuery !== \"undefined\" && jQuery !== null) {\r\n\t\tjQuery.fn.dropzone = function (options) {\r\n\t\t\treturn this.each(function () {\r\n\t\t\t\treturn new Dropzone(this, options);\r\n\t\t\t});\r\n\t\t};\r\n\t}\r\n\r\n\tif (typeof module !== \"undefined\" && module !== null) {\r\n\t\tmodule.exports = Dropzone;\r\n\t} else {\r\n\t\twindow.Dropzone = Dropzone;\r\n\t}\r\n\r\n\tDropzone.ADDED = \"added\";\r\n\r\n\tDropzone.QUEUED = \"queued\";\r\n\r\n\tDropzone.ACCEPTED = Dropzone.QUEUED;\r\n\r\n\tDropzone.UPLOADING = \"uploading\";\r\n\r\n\tDropzone.PROCESSING = Dropzone.UPLOADING;\r\n\r\n\tDropzone.CANCELED = \"canceled\";\r\n\r\n\tDropzone.ERROR = \"error\";\r\n\r\n\tDropzone.SUCCESS = \"success\";\r\n\r\n\r\n\t/*\r\n\t\r\n\tBugfix for iOS 6 and 7\r\n\tSource: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\r\n\tbased on the work of https://github.com/stomita/ios-imagefile-megapixel\r\n\t */\r\n\r\n\tdetectVerticalSquash = function (img) {\r\n\t\tvar alpha, canvas, ctx, data, ey, ih, iw, py, ratio, sy;\r\n\t\tiw = img.naturalWidth;\r\n\t\tih = img.naturalHeight;\r\n\t\tcanvas = document.createElement(\"canvas\");\r\n\t\tcanvas.width = 1;\r\n\t\tcanvas.height = ih;\r\n\t\tctx = canvas.getContext(\"2d\");\r\n\t\tctx.drawImage(img, 0, 0);\r\n\t\tdata = ctx.getImageData(1, 0, 1, ih).data;\r\n\t\tsy = 0;\r\n\t\tey = ih;\r\n\t\tpy = ih;\r\n\t\twhile (py > sy) {\r\n\t\t\talpha = data[(py - 1) * 4 + 3];\r\n\t\t\tif (alpha === 0) {\r\n\t\t\t\tey = py;\r\n\t\t\t} else {\r\n\t\t\t\tsy = py;\r\n\t\t\t}\r\n\t\t\tpy = (ey + sy) >> 1;\r\n\t\t}\r\n\t\tratio = py / ih;\r\n\t\tif (ratio === 0) {\r\n\t\t\treturn 1;\r\n\t\t} else {\r\n\t\t\treturn ratio;\r\n\t\t}\r\n\t};\r\n\r\n\tdrawImageIOSFix = function (ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\r\n\t\tvar vertSquashRatio;\r\n\t\tvertSquashRatio = detectVerticalSquash(img);\r\n\t\treturn ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\r\n\t};\r\n\r\n\tExifRestore = (function () {\r\n\t\tfunction ExifRestore() { }\r\n\r\n\t\tExifRestore.KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\r\n\r\n\t\tExifRestore.encode64 = function (input) {\r\n\t\t\tvar chr1, chr2, chr3, enc1, enc2, enc3, enc4, i, output;\r\n\t\t\toutput = '';\r\n\t\t\tchr1 = void 0;\r\n\t\t\tchr2 = void 0;\r\n\t\t\tchr3 = '';\r\n\t\t\tenc1 = void 0;\r\n\t\t\tenc2 = void 0;\r\n\t\t\tenc3 = void 0;\r\n\t\t\tenc4 = '';\r\n\t\t\ti = 0;\r\n\t\t\twhile (true) {\r\n\t\t\t\tchr1 = input[i++];\r\n\t\t\t\tchr2 = input[i++];\r\n\t\t\t\tchr3 = input[i++];\r\n\t\t\t\tenc1 = chr1 >> 2;\r\n\t\t\t\tenc2 = (chr1 & 3) << 4 | chr2 >> 4;\r\n\t\t\t\tenc3 = (chr2 & 15) << 2 | chr3 >> 6;\r\n\t\t\t\tenc4 = chr3 & 63;\r\n\t\t\t\tif (isNaN(chr2)) {\r\n\t\t\t\t\tenc3 = enc4 = 64;\r\n\t\t\t\t} else if (isNaN(chr3)) {\r\n\t\t\t\t\tenc4 = 64;\r\n\t\t\t\t}\r\n\t\t\t\toutput = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);\r\n\t\t\t\tchr1 = chr2 = chr3 = '';\r\n\t\t\t\tenc1 = enc2 = enc3 = enc4 = '';\r\n\t\t\t\tif (!(i < input.length)) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn output;\r\n\t\t};\r\n\r\n\t\tExifRestore.restore = function (origFileBase64, resizedFileBase64) {\r\n\t\t\tvar image, rawImage, segments;\r\n\t\t\tif (!origFileBase64.match('data:image/jpeg;base64,')) {\r\n\t\t\t\treturn resizedFileBase64;\r\n\t\t\t}\r\n\t\t\trawImage = this.decode64(origFileBase64.replace('data:image/jpeg;base64,', ''));\r\n\t\t\tsegments = this.slice2Segments(rawImage);\r\n\t\t\timage = this.exifManipulation(resizedFileBase64, segments);\r\n\t\t\treturn 'data:image/jpeg;base64,' + this.encode64(image);\r\n\t\t};\r\n\r\n\t\tExifRestore.exifManipulation = function (resizedFileBase64, segments) {\r\n\t\t\tvar aBuffer, exifArray, newImageArray;\r\n\t\t\texifArray = this.getExifArray(segments);\r\n\t\t\tnewImageArray = this.insertExif(resizedFileBase64, exifArray);\r\n\t\t\taBuffer = new Uint8Array(newImageArray);\r\n\t\t\treturn aBuffer;\r\n\t\t};\r\n\r\n\t\tExifRestore.getExifArray = function (segments) {\r\n\t\t\tvar seg, x;\r\n\t\t\tseg = void 0;\r\n\t\t\tx = 0;\r\n\t\t\twhile (x < segments.length) {\r\n\t\t\t\tseg = segments[x];\r\n\t\t\t\tif (seg[0] === 255 & seg[1] === 225) {\r\n\t\t\t\t\treturn seg;\r\n\t\t\t\t}\r\n\t\t\t\tx++;\r\n\t\t\t}\r\n\t\t\treturn [];\r\n\t\t};\r\n\r\n\t\tExifRestore.insertExif = function (resizedFileBase64, exifArray) {\r\n\t\t\tvar array, ato, buf, imageData, mae, separatePoint;\r\n\t\t\timageData = resizedFileBase64.replace('data:image/jpeg;base64,', '');\r\n\t\t\tbuf = this.decode64(imageData);\r\n\t\t\tseparatePoint = buf.indexOf(255, 3);\r\n\t\t\tmae = buf.slice(0, separatePoint);\r\n\t\t\tato = buf.slice(separatePoint);\r\n\t\t\tarray = mae;\r\n\t\t\tarray = array.concat(exifArray);\r\n\t\t\tarray = array.concat(ato);\r\n\t\t\treturn array;\r\n\t\t};\r\n\r\n\t\tExifRestore.slice2Segments = function (rawImageArray) {\r\n\t\t\tvar endPoint, head, length, seg, segments;\r\n\t\t\thead = 0;\r\n\t\t\tsegments = [];\r\n\t\t\twhile (true) {\r\n\t\t\t\tif (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) {\r\n\t\t\t\t\thead += 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlength = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\r\n\t\t\t\t\tendPoint = head + length + 2;\r\n\t\t\t\t\tseg = rawImageArray.slice(head, endPoint);\r\n\t\t\t\t\tsegments.push(seg);\r\n\t\t\t\t\thead = endPoint;\r\n\t\t\t\t}\r\n\t\t\t\tif (head > rawImageArray.length) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn segments;\r\n\t\t};\r\n\r\n\t\tExifRestore.decode64 = function (input) {\r\n\t\t\tvar base64test, buf, chr1, chr2, chr3, enc1, enc2, enc3, enc4, i, output;\r\n\t\t\toutput = '';\r\n\t\t\tchr1 = void 0;\r\n\t\t\tchr2 = void 0;\r\n\t\t\tchr3 = '';\r\n\t\t\tenc1 = void 0;\r\n\t\t\tenc2 = void 0;\r\n\t\t\tenc3 = void 0;\r\n\t\t\tenc4 = '';\r\n\t\t\ti = 0;\r\n\t\t\tbuf = [];\r\n\t\t\tbase64test = /[^A-Za-z0-9\\+\\/\\=]/g;\r\n\t\t\tif (base64test.exec(input)) {\r\n\t\t\t\tconsole.warning('There were invalid base64 characters in the input text.\\n' + 'Valid base64 characters are A-Z, a-z, 0-9, \\'+\\', \\'/\\',and \\'=\\'\\n' + 'Expect errors in decoding.');\r\n\t\t\t}\r\n\t\t\tinput = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\r\n\t\t\twhile (true) {\r\n\t\t\t\tenc1 = this.KEY_STR.indexOf(input.charAt(i++));\r\n\t\t\t\tenc2 = this.KEY_STR.indexOf(input.charAt(i++));\r\n\t\t\t\tenc3 = this.KEY_STR.indexOf(input.charAt(i++));\r\n\t\t\t\tenc4 = this.KEY_STR.indexOf(input.charAt(i++));\r\n\t\t\t\tchr1 = enc1 << 2 | enc2 >> 4;\r\n\t\t\t\tchr2 = (enc2 & 15) << 4 | enc3 >> 2;\r\n\t\t\t\tchr3 = (enc3 & 3) << 6 | enc4;\r\n\t\t\t\tbuf.push(chr1);\r\n\t\t\t\tif (enc3 !== 64) {\r\n\t\t\t\t\tbuf.push(chr2);\r\n\t\t\t\t}\r\n\t\t\t\tif (enc4 !== 64) {\r\n\t\t\t\t\tbuf.push(chr3);\r\n\t\t\t\t}\r\n\t\t\t\tchr1 = chr2 = chr3 = '';\r\n\t\t\t\tenc1 = enc2 = enc3 = enc4 = '';\r\n\t\t\t\tif (!(i < input.length)) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn buf;\r\n\t\t};\r\n\r\n\t\treturn ExifRestore;\r\n\r\n\t})();\r\n\r\n\r\n\t/*\r\n\t * contentloaded.js\r\n\t *\r\n\t * Author: Diego Perini (diego.perini at gmail.com)\r\n\t * Summary: cross-browser wrapper for DOMContentLoaded\r\n\t * Updated: 20101020\r\n\t * License: MIT\r\n\t * Version: 1.2\r\n\t *\r\n\t * URL:\r\n\t * http://javascript.nwbox.com/ContentLoaded/\r\n\t * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\r\n\t */\r\n\r\n\tcontentLoaded = function (win, fn) {\r\n\t\tvar add, doc, done, init, poll, pre, rem, root, top;\r\n\t\tdone = false;\r\n\t\ttop = true;\r\n\t\tdoc = win.document;\r\n\t\troot = doc.documentElement;\r\n\t\tadd = (doc.addEventListener ? \"addEventListener\" : \"attachEvent\");\r\n\t\trem = (doc.addEventListener ? \"removeEventListener\" : \"detachEvent\");\r\n\t\tpre = (doc.addEventListener ? \"\" : \"on\");\r\n\t\tinit = function (e) {\r\n\t\t\tif (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t(e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\r\n\t\t\tif (!done && (done = true)) {\r\n\t\t\t\treturn fn.call(win, e.type || e);\r\n\t\t\t}\r\n\t\t};\r\n\t\tpoll = function () {\r\n\t\t\tvar e, error1;\r\n\t\t\ttry {\r\n\t\t\t\troot.doScroll(\"left\");\r\n\t\t\t} catch (error1) {\r\n\t\t\t\te = error1;\r\n\t\t\t\tsetTimeout(poll, 50);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\treturn init(\"poll\");\r\n\t\t};\r\n\t\tif (doc.readyState !== \"complete\") {\r\n\t\t\tif (doc.createEventObject && root.doScroll) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\ttop = !win.frameElement;\r\n\t\t\t\t} catch (undefined) { }\r\n\t\t\t\tif (top) {\r\n\t\t\t\t\tpoll();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdoc[add](pre + \"DOMContentLoaded\", init, false);\r\n\t\t\tdoc[add](pre + \"readystatechange\", init, false);\r\n\t\t\treturn win[add](pre + \"load\", init, false);\r\n\t\t}\r\n\t};\r\n\r\n\tDropzone._autoDiscoverFunction = function () {\r\n\t\tif (Dropzone.autoDiscover) {\r\n\t\t\treturn Dropzone.discover();\r\n\t\t}\r\n\t};\r\n\r\n\tcontentLoaded(window, Dropzone._autoDiscoverFunction);\r\n\r\n}).call(this);\r\n","/*! Backstretch - v2.0.4 - 2013-06-19\r\n* http://srobbin.com/jquery-plugins/backstretch/\r\n* Copyright (c) 2013 Scott Robbin; Licensed MIT */\r\n(function(a,d,p){a.fn.backstretch=function(c,b){(c===p||0===c.length)&&a.error(\"No images were supplied for Backstretch\");0===a(d).scrollTop()&&d.scrollTo(0,0);return this.each(function(){var d=a(this),g=d.data(\"backstretch\");if(g){if(\"string\"==typeof c&&\"function\"==typeof g[c]){g[c](b);return}b=a.extend(g.options,b);g.destroy(!0)}g=new q(this,c,b);d.data(\"backstretch\",g)})};a.backstretch=function(c,b){return a(\"body\").backstretch(c,b).data(\"backstretch\")};a.expr[\":\"].backstretch=function(c){return a(c).data(\"backstretch\")!==p};a.fn.backstretch.defaults={centeredX:!0,centeredY:!0,duration:5E3,fade:0};var r={left:0,top:0,overflow:\"hidden\",margin:0,padding:0,height:\"100%\",width:\"100%\",zIndex:-999999},s={position:\"absolute\",display:\"none\",margin:0,padding:0,border:\"none\",width:\"auto\",height:\"auto\",maxHeight:\"none\",maxWidth:\"none\",zIndex:-999999},q=function(c,b,e){this.options=a.extend({},a.fn.backstretch.defaults,e||{});this.images=a.isArray(b)?b:[b];a.each(this.images,function(){a(\"\")[0].src=this});this.isBody=c===document.body;this.$container=a(c);this.$root=this.isBody?l?a(d):a(document):this.$container;c=this.$container.children(\".backstretch\").first();this.$wrap=c.length?c:a('
').css(r).appendTo(this.$container);this.isBody||(c=this.$container.css(\"position\"),b=this.$container.css(\"zIndex\"),this.$container.css({position:\"static\"===c?\"relative\":c,zIndex:\"auto\"===b?0:b,background:\"none\"}),this.$wrap.css({zIndex:-999998}));this.$wrap.css({position:this.isBody&&l?\"fixed\":\"absolute\"});this.index=0;this.show(this.index);a(d).on(\"resize.backstretch\",a.proxy(this.resize,this)).on(\"orientationchange.backstretch\",a.proxy(function(){this.isBody&&0===d.pageYOffset&&(d.scrollTo(0,1),this.resize())},this))};q.prototype={resize:function(){try{var a={left:0,top:0},b=this.isBody?this.$root.width():this.$root.innerWidth(),e=b,g=this.isBody?d.innerHeight?d.innerHeight:this.$root.height():this.$root.innerHeight(),j=e/this.$img.data(\"ratio\"),f;j>=g?(f=(j-g)/2,this.options.centeredY&&(a.top=\"-\"+f+\"px\")):(j=g,e=j*this.$img.data(\"ratio\"),f=(e-b)/2,this.options.centeredX&&(a.left=\"-\"+f+\"px\"));this.$wrap.css({width:b,height:g}).find(\"img:not(.deleteable)\").css({width:e,height:j}).css(a)}catch(h){}return this},show:function(c){if(!(Math.abs(c)>this.images.length-1)){var b=this,e=b.$wrap.find(\"img\").addClass(\"deleteable\"),d={relatedTarget:b.$container[0]};b.$container.trigger(a.Event(\"backstretch.before\",d),[b,c]);this.index=c;clearInterval(b.interval);b.$img=a(\"\").css(s).bind(\"load\",function(f){var h=this.width||a(f.target).width();f=this.height||a(f.target).height();a(this).data(\"ratio\",h/f);a(this).fadeIn(b.options.speed||b.options.fade,function(){e.remove();b.paused||b.cycle();a([\"after\",\"show\"]).each(function(){b.$container.trigger(a.Event(\"backstretch.\"+this,d),[b,c])})});b.resize()}).appendTo(b.$wrap);b.$img.attr(\"src\",b.images[c]);return b}},next:function(){return this.show(this.indexe||d.operamini&&\"[object OperaMini]\"==={}.toString.call(d.operamini)||n&&7458>t||-1e||h&&6>h||\"palmGetResource\"in d&&e&&534>e||-1=k)})(jQuery,window);","/*!\r\n * jQuery blockUI plugin\r\n * Version 2.66.0-2013.10.09\r\n * Requires jQuery v1.7 or later\r\n *\r\n * Examples at: http://malsup.com/jquery/block/\r\n * Copyright (c) 2007-2013 M. Alsup\r\n * Dual licensed under the MIT and GPL licenses:\r\n * http://www.opensource.org/licenses/mit-license.php\r\n * http://www.gnu.org/licenses/gpl.html\r\n *\r\n * Thanks to Amir-Hossein Sobhi for some excellent contributions!\r\n */\r\n\r\n!function () { \"use strict\"; function e(e) { function t(t, n) { var s, h, k = t == window, y = n && void 0 !== n.message ? n.message : void 0; if (n = e.extend({}, e.blockUI.defaults, n || {}), !n.ignoreIfBlocked || !e(t).data(\"blockUI.isBlocked\")) { if (n.overlayCSS = e.extend({}, e.blockUI.defaults.overlayCSS, n.overlayCSS || {}), s = e.extend({}, e.blockUI.defaults.css, n.css || {}), n.onOverlayClick && (n.overlayCSS.cursor = \"pointer\"), h = e.extend({}, e.blockUI.defaults.themedCSS, n.themedCSS || {}), y = void 0 === y ? n.message : y, k && p && o(window, { fadeOut: 0 }), y && \"string\" != typeof y && (y.parentNode || y.jquery)) { var m = y.jquery ? y[0] : y, v = {}; e(t).data(\"blockUI.history\", v), v.el = m, v.parent = m.parentNode, v.display = m.style.display, v.position = m.style.position, v.parent && v.parent.removeChild(m) } e(t).data(\"blockUI.onUnblock\", n.onUnblock); var g, I, w, U, x = n.baseZ; g = r || n.forceIframe ? e('') : e('
'), I = n.theme ? e('
') : e('
'), n.theme && k ? (U = '
', n.title && (U += '
' + (n.title || \" \") + \"
\"), U += '
', U += \"
\") : n.theme ? (U = '
', n.title && (U += '
' + (n.title || \" \") + \"
\"), U += '
', U += \"
\") : U = k ? '
' : '
', w = e(U), y && (n.theme ? (w.css(h), w.addClass(\"ui-widget-content\")) : w.css(s)), n.theme || I.css(n.overlayCSS), I.css(\"position\", k ? \"fixed\" : \"absolute\"), (r || n.forceIframe) && g.css(\"opacity\", 0); var C = [g, I, w], S = k ? e(\"body\") : e(t); e.each(C, function () { this.appendTo(S) }), n.theme && n.draggable && e.fn.draggable && w.draggable({ handle: \".ui-dialog-titlebar\", cancel: \"li\" }); var O = f && (!e.support.boxModel || e(\"object,embed\", k ? null : t).length > 0); if (u || O) { if (k && n.allowBodyStretch && e.support.boxModel && e(\"html,body\").css(\"height\", \"100%\"), (u || !e.support.boxModel) && !k) var E = d(t, \"borderTopWidth\"), T = d(t, \"borderLeftWidth\"), M = E ? \"(0 - \" + E + \")\" : 0, B = T ? \"(0 - \" + T + \")\" : 0; e.each(C, function (e, t) { var o = t[0].style; if (o.position = \"absolute\", 2 > e) k ? o.setExpression(\"height\", \"Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:\" + n.quirksmodeOffsetHack + ') + \"px\"') : o.setExpression(\"height\", 'this.parentNode.offsetHeight + \"px\"'), k ? o.setExpression(\"width\", 'jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + \"px\"') : o.setExpression(\"width\", 'this.parentNode.offsetWidth + \"px\"'), B && o.setExpression(\"left\", B), M && o.setExpression(\"top\", M); else if (n.centerY) k && o.setExpression(\"top\", '(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + \"px\"'), o.marginTop = 0; else if (!n.centerY && k) { var i = n.css && n.css.top ? parseInt(n.css.top, 10) : 0, s = \"((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + \" + i + ') + \"px\"'; o.setExpression(\"top\", s) } }) } if (y && (n.theme ? w.find(\".ui-widget-content\").append(y) : w.append(y), (y.jquery || y.nodeType) && e(y).show()), (r || n.forceIframe) && n.showOverlay && g.show(), n.fadeIn) { var j = n.onBlock ? n.onBlock : c, H = n.showOverlay && !y ? j : c, z = y ? j : c; n.showOverlay && I._fadeIn(n.fadeIn, H), y && w._fadeIn(n.fadeIn, z) } else n.showOverlay && I.show(), y && w.show(), n.onBlock && n.onBlock(); if (i(1, t, n), k ? (p = w[0], b = e(n.focusableElements, p), n.focusInput && setTimeout(l, 20)) : a(w[0], n.centerX, n.centerY), n.timeout) { var W = setTimeout(function () { k ? e.unblockUI(n) : e(t).unblock(n) }, n.timeout); e(t).data(\"blockUI.timeout\", W) } } } function o(t, o) { var s, l = t == window, a = e(t), d = a.data(\"blockUI.history\"), c = a.data(\"blockUI.timeout\"); c && (clearTimeout(c), a.removeData(\"blockUI.timeout\")), o = e.extend({}, e.blockUI.defaults, o || {}), i(0, t, o), null === o.onUnblock && (o.onUnblock = a.data(\"blockUI.onUnblock\"), a.removeData(\"blockUI.onUnblock\")); var r; r = l ? e(\"body\").children().filter(\".blockUI\").add(\"body > .blockUI\") : a.find(\">.blockUI\"), o.cursorReset && (r.length > 1 && (r[1].style.cursor = o.cursorReset), r.length > 2 && (r[2].style.cursor = o.cursorReset)), l && (p = b = null), o.fadeOut ? (s = r.length, r.stop().fadeOut(o.fadeOut, function () { 0 === --s && n(r, d, o, t) })) : n(r, d, o, t) } function n(t, o, n, i) { var s = e(i); if (!s.data(\"blockUI.isBlocked\")) { t.each(function () { this.parentNode && this.parentNode.removeChild(this) }), o && o.el && (o.el.style.display = o.display, o.el.style.position = o.position, o.parent && o.parent.appendChild(o.el), s.removeData(\"blockUI.history\")), s.data(\"blockUI.static\") && s.css(\"position\", \"static\"), \"function\" == typeof n.onUnblock && n.onUnblock(i, n); var l = e(document.body), a = l.width(), d = l[0].style.width; l.width(a - 1).width(a), l[0].style.width = d } } function i(t, o, n) { var i = o == window, l = e(o); if ((t || (!i || p) && (i || l.data(\"blockUI.isBlocked\"))) && (l.data(\"blockUI.isBlocked\", t), i && n.bindEvents && (!t || n.showOverlay))) { var a = \"mousedown mouseup keydown keypress keyup touchstart touchend touchmove\"; t ? e(document).bind(a, n, s) : e(document).unbind(a, s) } } function s(t) { if (\"keydown\" === t.type && t.keyCode && 9 == t.keyCode && p && t.data.constrainTabKey) { var o = b, n = !t.shiftKey && t.target === o[o.length - 1], i = t.shiftKey && t.target === o[0]; if (n || i) return setTimeout(function () { l(i) }, 10), !1 } var s = t.data, a = e(t.target); return a.hasClass(\"blockOverlay\") && s.onOverlayClick && s.onOverlayClick(t), a.parents(\"div.\" + s.blockMsgClass).length > 0 ? !0 : 0 === a.parents().children().filter(\"div.blockUI\").length } function l(e) { if (b) { var t = b[e === !0 ? b.length - 1 : 0]; t && t.focus() } } function a(e, t, o) { var n = e.parentNode, i = e.style, s = (n.offsetWidth - e.offsetWidth) / 2 - d(n, \"borderLeftWidth\"), l = (n.offsetHeight - e.offsetHeight) / 2 - d(n, \"borderTopWidth\"); t && (i.left = s > 0 ? s + \"px\" : \"0\"), o && (i.top = l > 0 ? l + \"px\" : \"0\") } function d(t, o) { return parseInt(e.css(t, o), 10) || 0 } e.fn._fadeIn = e.fn.fadeIn; var c = e.noop || function () { }, r = /MSIE/.test(navigator.userAgent), u = /MSIE 6.0/.test(navigator.userAgent) && !/MSIE 8.0/.test(navigator.userAgent), f = (document.documentMode || 0, e.isFunction(document.createElement(\"div\").style.setExpression)); e.blockUI = function (e) { t(window, e) }, e.unblockUI = function (e) { o(window, e) }, e.growlUI = function (t, o, n, i) { var s = e('
'); t && s.append(\"

\" + t + \"

\"), o && s.append(\"

\" + o + \"

\"), void 0 === n && (n = 3e3); var l = function (t) { t = t || {}, e.blockUI({ message: s, fadeIn: \"undefined\" != typeof t.fadeIn ? t.fadeIn : 700, fadeOut: \"undefined\" != typeof t.fadeOut ? t.fadeOut : 1e3, timeout: \"undefined\" != typeof t.timeout ? t.timeout : n, centerY: !1, showOverlay: !1, onUnblock: i, css: e.blockUI.defaults.growlCSS }) }; l(); s.css(\"opacity\"); s.mouseover(function () { l({ fadeIn: 0, timeout: 3e4 }); var t = e(\".blockMsg\"); t.stop(), t.fadeTo(300, 1) }).mouseout(function () { e(\".blockMsg\").fadeOut(1e3) }) }, e.fn.block = function (o) { if (this[0] === window) return e.blockUI(o), this; var n = e.extend({}, e.blockUI.defaults, o || {}); return this.each(function () { var t = e(this); n.ignoreIfBlocked && t.data(\"blockUI.isBlocked\") || t.unblock({ fadeOut: 0 }) }), this.each(function () { \"static\" == e.css(this, \"position\") && (this.style.position = \"relative\", e(this).data(\"blockUI.static\", !0)), this.style.zoom = 1, t(this, o) }) }, e.fn.unblock = function (t) { return this[0] === window ? (e.unblockUI(t), this) : this.each(function () { o(this, t) }) }, e.blockUI.version = 2.66, e.blockUI.defaults = { message: \"
\", title: null, draggable: !0, theme: !1, css: { padding: 20, margin: 0, width: \"auto\", top: \"40%\", left: \"47%\", textAlign: \"center\", color: \"#000\", border: \"transparent\", backgroundColor: \"transparent\", cursor: \"wait\" }, themedCSS: { width: \"30%\", top: \"40%\", left: \"35%\" }, overlayCSS: { backgroundColor: \"#000\", opacity: .6, cursor: \"wait\" }, cursorReset: \"default\", growlCSS: { width: \"350px\", top: \"10px\", left: \"\", right: \"10px\", border: \"none\", padding: \"5px\", opacity: .6, cursor: \"default\", color: \"#fff\", backgroundColor: \"#000\", \"-webkit-border-radius\": \"10px\", \"-moz-border-radius\": \"10px\", \"border-radius\": \"10px\" }, iframeSrc: /^https/i.test(window.location.href || \"\") ? \"javascript:false\" : \"about:blank\", forceIframe: !1, baseZ: 1e3, centerX: !0, centerY: !0, allowBodyStretch: !0, bindEvents: !0, constrainTabKey: !0, fadeIn: 200, fadeOut: 400, timeout: 0, showOverlay: !0, focusInput: !0, focusableElements: \":input:enabled:visible\", onBlock: null, onUnblock: null, onOverlayClick: null, quirksmodeOffsetHack: 4, blockMsgClass: \"blockMsg\", ignoreIfBlocked: !1 }; var p = null, b = [] } \"function\" == typeof define && define.amd && define.amd.jQuery ? define([\"jquery\"], e) : e(jQuery) }();","/*!\r\n * jQuery Cookie Plugin v1.3.1\r\n * https://github.com/carhartl/jquery-cookie\r\n * Plugin file name changed to jquery.cokie.min to prevent blocking by ModSecurity module\r\n *\r\n * Copyright 2013 Klaus Hartl\r\n * Released under the MIT license\r\n */\r\n(function(a){if(typeof define===\"function\"&&define.amd){define([\"jquery\"],a)}else{a(jQuery)}}(function(e){var a=/\\+/g;function d(g){return g}function b(g){return decodeURIComponent(g.replace(a,\" \"))}function f(g){if(g.indexOf('\"')===0){g=g.slice(1,-1).replace(/\\\\\"/g,'\"').replace(/\\\\\\\\/g,\"\\\\\")}try{return c.json?JSON.parse(g):g}catch(h){}}var c=e.cookie=function(p,o,u){if(o!==undefined){u=e.extend({},c.defaults,u);if(typeof u.expires===\"number\"){var q=u.expires,s=u.expires=new Date();s.setDate(s.getDate()+q)}o=c.json?JSON.stringify(o):String(o);return(document.cookie=[c.raw?p:encodeURIComponent(p),\"=\",c.raw?o:encodeURIComponent(o),u.expires?\"; expires=\"+u.expires.toUTCString():\"\",u.path?\"; path=\"+u.path:\"\",u.domain?\"; domain=\"+u.domain:\"\",u.secure?\"; secure\":\"\"].join(\"\"))}var g=c.raw?d:b;var r=document.cookie.split(\"; \");var v=p?undefined:{};for(var n=0,k=r.length;n 0) ? Math.ceil(delta) : Math.floor(delta);\r\n\r\n // scroll the scrollbar\r\n bar.css({ top: delta + 'px' });\r\n }\r\n\r\n // calculate actual scroll amount\r\n percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight());\r\n delta = percentScroll * (me[0].scrollHeight - me.outerHeight());\r\n\r\n if (isJump)\r\n {\r\n delta = y;\r\n var offsetTop = delta / me[0].scrollHeight * me.outerHeight();\r\n offsetTop = Math.min(Math.max(offsetTop, 0), maxTop);\r\n bar.css({ top: offsetTop + 'px' });\r\n }\r\n\r\n // scroll content\r\n me.scrollTop(delta);\r\n\r\n // fire scrolling event\r\n me.trigger('slimscrolling', ~~delta);\r\n\r\n // ensure bar is visible\r\n showBar();\r\n\r\n // trigger hide when scroll is stopped\r\n hideBar();\r\n }\r\n\r\n function attachWheel(target)\r\n {\r\n if (window.addEventListener)\r\n {\r\n target.addEventListener('DOMMouseScroll', _onWheel, {passive: false} );\r\n target.addEventListener('mousewheel', _onWheel, {passive: false} );\r\n }\r\n else\r\n {\r\n document.attachEvent(\"onmousewheel\", _onWheel)\r\n }\r\n }\r\n\r\n function getBarHeight()\r\n {\r\n // calculate scrollbar height and make sure it is not too small\r\n barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight);\r\n bar.css({ height: barHeight + 'px' });\r\n\r\n // hide scrollbar if content is not long enough\r\n var display = barHeight == me.outerHeight() ? 'none' : 'block';\r\n bar.css({ display: display });\r\n }\r\n\r\n function showBar()\r\n {\r\n // recalculate bar height\r\n getBarHeight();\r\n clearTimeout(queueHide);\r\n\r\n // when bar reached top or bottom\r\n if (percentScroll == ~~percentScroll)\r\n {\r\n //release wheel\r\n releaseScroll = o.allowPageScroll;\r\n\r\n // publish approporiate event\r\n if (lastScroll != percentScroll)\r\n {\r\n var msg = (~~percentScroll == 0) ? 'top' : 'bottom';\r\n me.trigger('slimscroll', msg);\r\n }\r\n }\r\n else\r\n {\r\n releaseScroll = false;\r\n }\r\n lastScroll = percentScroll;\r\n\r\n // show only when required\r\n if(barHeight >= me.outerHeight()) {\r\n //allow window scroll\r\n releaseScroll = true;\r\n return;\r\n }\r\n bar.stop(true,true).fadeIn('fast');\r\n if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); }\r\n }\r\n\r\n function hideBar()\r\n {\r\n // only hide when options allow it\r\n if (!o.alwaysVisible)\r\n {\r\n queueHide = setTimeout(function(){\r\n if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg)\r\n {\r\n bar.fadeOut('slow');\r\n rail.fadeOut('slow');\r\n }\r\n }, 1000);\r\n }\r\n }\r\n\r\n });\r\n\r\n // maintain chainability\r\n return this;\r\n }\r\n });\r\n\r\n $.fn.extend({\r\n slimscroll: $.fn.slimScroll\r\n });\r\n\r\n})(jQuery);\r\n","(function(e,t){\"use strict\";function n(e){var t=Array.prototype.slice.call(arguments,1);return e.prop?e.prop.apply(e,t):e.attr.apply(e,t)}function s(e,t,n){var s,a;for(s in n)n.hasOwnProperty(s)&&(a=s.replace(/ |$/g,t.eventNamespace),e.bind(a,n[s]))}function a(e,t,n){s(e,n,{focus:function(){t.addClass(n.focusClass)},blur:function(){t.removeClass(n.focusClass),t.removeClass(n.activeClass)},mouseenter:function(){t.addClass(n.hoverClass)},mouseleave:function(){t.removeClass(n.hoverClass),t.removeClass(n.activeClass)},\"mousedown touchbegin\":function(){e.is(\":disabled\")||t.addClass(n.activeClass)},\"mouseup touchend\":function(){t.removeClass(n.activeClass)}})}function i(e,t){e.removeClass(t.hoverClass+\" \"+t.focusClass+\" \"+t.activeClass)}function r(e,t,n){n?e.addClass(t):e.removeClass(t)}function l(e,t,n){var s=\"checked\",a=t.is(\":\"+s);t.prop?t.prop(s,a):a?t.attr(s,s):t.removeAttr(s),r(e,n.checkedClass,a)}function u(e,t,n){r(e,n.disabledClass,t.is(\":disabled\"))}function o(e,t,n){switch(n){case\"after\":return e.after(t),e.next();case\"before\":return e.before(t),e.prev();case\"wrap\":return e.wrap(t),e.parent()}return null}function c(t,s,a){var i,r,l;return a||(a={}),a=e.extend({bind:{},divClass:null,divWrap:\"wrap\",spanClass:null,spanHtml:null,spanWrap:\"wrap\"},a),i=e(\"
\"),r=e(\"\"),s.autoHide&&t.is(\":hidden\")&&\"none\"===t.css(\"display\")&&i.hide(),a.divClass&&i.addClass(a.divClass),s.wrapperClass&&i.addClass(s.wrapperClass),a.spanClass&&r.addClass(a.spanClass),l=n(t,\"id\"),s.useID&&l&&n(i,\"id\",s.idPrefix+\"-\"+l),a.spanHtml&&r.html(a.spanHtml),i=o(t,i,a.divWrap),r=o(t,r,a.spanWrap),u(i,t,s),{div:i,span:r}}function d(t,n){var s;return n.wrapperClass?(s=e(\"\").addClass(n.wrapperClass),s=o(t,s,\"wrap\")):null}function f(){var t,n,s,a;return a=\"rgb(120,2,153)\",n=e('
'),e(\"body\").append(n),s=n.get(0),t=window.getComputedStyle?window.getComputedStyle(s,\"\").color:(s.currentStyle||s.style||{}).color,n.remove(),t.replace(/ /g,\"\")!==a}function p(t){return t?e(\"\").text(t).html():\"\"}function m(){return navigator.cpuClass&&!navigator.product}function v(){return window.XMLHttpRequest!==void 0?!0:!1}function h(e){var t;return e[0].multiple?!0:(t=n(e,\"size\"),!t||1>=t?!1:!0)}function C(){return!1}function w(e,t){var n=\"none\";s(e,t,{\"selectstart dragstart mousedown\":C}),e.css({MozUserSelect:n,msUserSelect:n,webkitUserSelect:n,userSelect:n})}function b(e,t,n){var s=e.val();\"\"===s?s=n.fileDefaultHtml:(s=s.split(/[\\/\\\\]+/),s=s[s.length-1]),t.text(s)}function y(e,t,n){var s,a;for(s=[],e.each(function(){var e;for(e in t)Object.prototype.hasOwnProperty.call(t,e)&&(s.push({el:this,name:e,old:this.style[e]}),this.style[e]=t[e])}),n();s.length;)a=s.pop(),a.el.style[a.name]=a.old}function g(e,t){var n;n=e.parents(),n.push(e[0]),n=n.not(\":visible\"),y(n,{visibility:\"hidden\",display:\"block\",position:\"absolute\"},t)}function k(e,t){return function(){e.unwrap().unwrap().unbind(t.eventNamespace)}}var H=!0,x=!1,A=[{match:function(e){return e.is(\"a, button, :submit, :reset, input[type='button']\")},apply:function(e,t){var r,l,o,d,f;return l=t.submitDefaultHtml,e.is(\":reset\")&&(l=t.resetDefaultHtml),d=e.is(\"a, button\")?function(){return e.html()||l}:function(){return p(n(e,\"value\"))||l},o=c(e,t,{divClass:t.buttonClass,spanHtml:d()}),r=o.div,a(e,r,t),f=!1,s(r,t,{\"click touchend\":function(){var t,s,a,i;f||e.is(\":disabled\")||(f=!0,e[0].dispatchEvent?(t=document.createEvent(\"MouseEvents\"),t.initEvent(\"click\",!0,!0),s=e[0].dispatchEvent(t),e.is(\"a\")&&s&&(a=n(e,\"target\"),i=n(e,\"href\"),a&&\"_self\"!==a?window.open(i,a):document.location.href=i)):e.click(),f=!1)}}),w(r,t),{remove:function(){return r.after(e),r.remove(),e.unbind(t.eventNamespace),e},update:function(){i(r,t),u(r,e,t),e.detach(),o.span.html(d()).append(e)}}}},{match:function(e){return e.is(\":checkbox\")},apply:function(e,t){var n,r,o;return n=c(e,t,{divClass:t.checkboxClass}),r=n.div,o=n.span,a(e,r,t),s(e,t,{\"click touchend\":function(){l(o,e,t)}}),l(o,e,t),{remove:k(e,t),update:function(){i(r,t),o.removeClass(t.checkedClass),l(o,e,t),u(r,e,t)}}}},{match:function(e){return e.is(\":file\")},apply:function(t,r){function l(){b(t,p,r)}var d,f,p,v;return d=c(t,r,{divClass:r.fileClass,spanClass:r.fileButtonClass,spanHtml:r.fileButtonHtml,spanWrap:\"after\"}),f=d.div,v=d.span,p=e(\"\").html(r.fileDefaultHtml),p.addClass(r.filenameClass),p=o(t,p,\"after\"),n(t,\"size\")||n(t,\"size\",f.width()/10),a(t,f,r),l(),m()?s(t,r,{click:function(){t.trigger(\"change\"),setTimeout(l,0)}}):s(t,r,{change:l}),w(p,r),w(v,r),{remove:function(){return p.remove(),v.remove(),t.unwrap().unbind(r.eventNamespace)},update:function(){i(f,r),b(t,p,r),u(f,t,r)}}}},{match:function(e){if(e.is(\"input\")){var t=(\" \"+n(e,\"type\")+\" \").toLowerCase(),s=\" color date datetime datetime-local email month number password search tel text time url week \";return s.indexOf(t)>=0}return!1},apply:function(e,t){var s,i;return s=n(e,\"type\"),e.addClass(t.inputClass),i=d(e,t),a(e,e,t),t.inputAddTypeAsClass&&e.addClass(s),{remove:function(){e.removeClass(t.inputClass),t.inputAddTypeAsClass&&e.removeClass(s),i&&e.unwrap()},update:C}}},{match:function(e){return e.is(\":radio\")},apply:function(t,r){var o,d,f;return o=c(t,r,{divClass:r.radioClass}),d=o.div,f=o.span,a(t,d,r),s(t,r,{\"click touchend\":function(){e.uniform.update(e(':radio[name=\"'+n(t,\"name\")+'\"]'))}}),l(f,t,r),{remove:k(t,r),update:function(){i(d,r),l(f,t,r),u(d,t,r)}}}},{match:function(e){return e.is(\"select\")&&!h(e)?!0:!1},apply:function(t,n){var r,l,o,d;return n.selectAutoWidth&&g(t,function(){d=t.width()}),r=c(t,n,{divClass:n.selectClass,spanHtml:(t.find(\":selected:first\")||t.find(\"option:first\")).html(),spanWrap:\"before\"}),l=r.div,o=r.span,n.selectAutoWidth?g(t,function(){y(e([o[0],l[0]]),{display:\"block\"},function(){var e;e=o.outerWidth()-o.width(),l.width(d+e),o.width(d)})}):l.addClass(\"fixedWidth\"),a(t,l,n),s(t,n,{change:function(){o.html(t.find(\":selected\").html()),l.removeClass(n.activeClass)},\"click touchend\":function(){var e=t.find(\":selected\").html();o.html()!==e&&t.trigger(\"change\")},keyup:function(){o.html(t.find(\":selected\").html())}}),w(o,n),{remove:function(){return o.remove(),t.unwrap().unbind(n.eventNamespace),t},update:function(){n.selectAutoWidth?(e.uniform.restore(t),t.uniform(n)):(i(l,n),o.html(t.find(\":selected\").html()),u(l,t,n))}}}},{match:function(e){return e.is(\"select\")&&h(e)?!0:!1},apply:function(e,t){var n;return e.addClass(t.selectMultiClass),n=d(e,t),a(e,e,t),{remove:function(){e.removeClass(t.selectMultiClass),n&&e.unwrap()},update:C}}},{match:function(e){return e.is(\"textarea\")},apply:function(e,t){var n;return e.addClass(t.textareaClass),n=d(e,t),a(e,e,t),{remove:function(){e.removeClass(t.textareaClass),n&&e.unwrap()},update:C}}}];m()&&!v()&&(H=!1),e.uniform={defaults:{activeClass:\"active\",autoHide:!0,buttonClass:\"button\",checkboxClass:\"checker\",checkedClass:\"checked\",disabledClass:\"disabled\",eventNamespace:\".uniform\",fileButtonClass:\"action\",fileButtonHtml:\"Choose File\",fileClass:\"uploader\",fileDefaultHtml:\"No file selected\",filenameClass:\"filename\",focusClass:\"focus\",hoverClass:\"hover\",idPrefix:\"uniform\",inputAddTypeAsClass:!0,inputClass:\"uniform-input\",radioClass:\"radio\",resetDefaultHtml:\"Reset\",resetSelector:!1,selectAutoWidth:!0,selectClass:\"selector\",selectMultiClass:\"uniform-multiselect\",submitDefaultHtml:\"Submit\",textareaClass:\"uniform\",useID:!0,wrapperClass:null},elements:[]},e.fn.uniform=function(t){var n=this;return t=e.extend({},e.uniform.defaults,t),x||(x=!0,f()&&(H=!1)),H?(t.resetSelector&&e(t.resetSelector).mouseup(function(){window.setTimeout(function(){e.uniform.update(n)},10)}),this.each(function(){var n,s,a,i=e(this);if(i.data(\"uniformed\"))return e.uniform.update(i),void 0;for(n=0;A.length>n;n+=1)if(s=A[n],s.match(i,t))return a=s.apply(i,t),i.data(\"uniformed\",a),e.uniform.elements.push(i.get(0)),void 0})):this},e.uniform.restore=e.fn.uniform.restore=function(n){n===t&&(n=e.uniform.elements),e(n).each(function(){var t,n,s=e(this);n=s.data(\"uniformed\"),n&&(n.remove(),t=e.inArray(this,e.uniform.elements),t>=0&&e.uniform.elements.splice(t,1),s.removeData(\"uniformed\"))})},e.uniform.update=e.fn.uniform.update=function(n){n===t&&(n=e.uniform.elements),e(n).each(function(){var t,n=e(this);t=n.data(\"uniformed\"),t&&t.update(n,t.options)})}})(jQuery);","/**\r\nCore script to handle the entire theme and core functions\r\n**/\r\ndefine([\"require\", \"exports\", \"jquery\", \"metronic\", \"jquerySlimscroll\"], function (require, exports, $, metronic, slimscroll) {\r\n\tvar Metronic = metronic.Metronic;\r\n\r\n\tvar Layout = (function () {\r\n\t\tfunction Layout() { }\r\n\t\t\t\r\n\t\t\tvar layoutImgPath = 'admin/layout/img/';\r\n\r\n\t\t\tvar layoutCssPath = 'admin/layout/css/';\r\n\r\n\t\t\tvar resBreakpointMd = Metronic.getResponsiveBreakpoint('md');\r\n\r\n\t\t\t//* BEGIN:CORE HANDLERS *//\r\n\t\t\t// this function handles responsive layout on screen size resize or mobile device rotate.\r\n\r\n\t\t\t// Set proper height for sidebar and content. The content and sidebar height must be synced always.\r\n\t\t\tvar handleSidebarAndContentHeight = function () {\r\n\t\t\t\tvar content = $('.page-content');\r\n\t\t\t\tvar sidebar = $('.page-sidebar');\r\n\t\t\t\tvar body = $('body');\r\n\t\t\t\tvar height;\r\n\r\n\t\t\t\tif (body.hasClass('Dashboard')){\r\n\t\t\t\t\tbody.removeClass('Dashboard');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (body.hasClass(\"page-footer-fixed\") === true && body.hasClass(\"page-sidebar-fixed\") === false) {\r\n\t\t\t\t\tvar available_height = Metronic.getViewPort().height - $('.page-footer').outerHeight() - $('.page-header').outerHeight();\r\n\t\t\t\t\tif (content.height() < available_height) {\r\n\t\t\t\t\t\tcontent.attr('style', 'min-height:' + available_height + 'px');\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (body.hasClass('page-sidebar-fixed')) {\r\n\t\t\t\t\t\theight = _calculateFixedSidebarViewportHeight();\r\n\t\t\t\t\t\tif (body.hasClass('page-footer-fixed') === false) {\r\n\t\t\t\t\t\t\theight = height - $('.page-footer').outerHeight();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar headerHeight = $('.page-header').outerHeight();\r\n\t\t\t\t\t\tvar footerHeight = $('.page-footer').outerHeight();\r\n\r\n\t\t\t\t\t\tif (Metronic.getViewPort().width < resBreakpointMd) {\r\n\t\t\t\t\t\t\theight = Metronic.getViewPort().height - headerHeight - footerHeight;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\theight = sidebar.height() + 20;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ((height + headerHeight + footerHeight) <= Metronic.getViewPort().height) {\r\n\t\t\t\t\t\t\theight = Metronic.getViewPort().height - headerHeight - footerHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(isNaN(height)){\r\n\t\t\t\t\t\theight = Metronic.getViewPort().height;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontent.attr('style', 'min-height:' + height + 'px');\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t// Handle sidebar menu links\r\n\r\n\t\t\tvar handleSidebarMenuActiveLink = function (mode, el) {\r\n\t\t\t\tvar url = location.hash.toLowerCase();\r\n\r\n\t\t\t\tvar menu = $('.page-sidebar-menu');\r\n\r\n\t\t\t\tif (mode === 'click' || mode === 'set') {\r\n\t\t\t\t\tel = $(el);\r\n\t\t\t\t} else if (mode === 'match') {\r\n\t\t\t\t\tmenu.find(\"li > a\").each(function () {\r\n\t\t\t\t\t\tvar path = $(this).attr(\"href\").toLowerCase();\r\n\t\t\t\t\t\t// url match condition \r\n\t\t\t\t\t\tif (path.length > 1 && url.substr(1, path.length - 1) == path.substr(1)) {\r\n\t\t\t\t\t\t\tel = $(this);\r\n\t\t\t\t\t\t\treturn;\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 (!el || el.length == 0) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (el.attr('href').toLowerCase() === 'javascript:;' || el.attr('href').toLowerCase() === '#') {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar slideSpeed = parseInt(menu.data(\"slide-speed\"));\r\n\t\t\t\tvar keepExpand = menu.data(\"keep-expanded\");\r\n\r\n\t\t\t\t// disable active states\r\n\r\n\t\t\t\tmenu.find('li.active').removeClass('active');\r\n\t\t\t\tmenu.find('li > a > .selected').remove();\r\n\r\n\t\t\t\tif (menu.hasClass('page-sidebar-menu-hover-submenu') === false) {\r\n\t\t\t\t\tmenu.find('li.open').each(function () {\r\n\t\t\t\t\t\tif ($(this).children('.sub-menu').length === 0) {\r\n\t\t\t\t\t\t\t$(this).removeClass('open');\r\n\t\t\t\t\t\t\t$(this).find('> a > .arrow.open').removeClass('open');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmenu.find('li.open').removeClass('open');\r\n\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tel.parents('li').each(function () {\r\n\t\t\t\t\t$(this).addClass('active');\r\n\t\t\t\t\t$(this).find('> a > span.arrow').addClass('open');\r\n\r\n\t\t\t\t\tif ($(this).parent('ul.page-sidebar-menu').length === 1) {\r\n\t\t\t\t\t\t$(this).find('> a').append('');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ($(this).children('ul.sub-menu').length === 1) {\r\n\t\t\t\t\t\t$(this).addClass('open');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (mode === 'click') {\r\n\t\t\t\t\tif (Metronic.getViewPort().width < resBreakpointMd && $('.page-sidebar').hasClass(\"in\")) { // close the menu on mobile view while laoding a page \r\n\t\t\t\t\t\t$('.page-header .responsive-toggler').click();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t// Handle sidebar menu\r\n\r\n\t\t\tvar handleSidebarMenu = function () {\r\n\t\t\t\t// handle sidebar link click\r\n\t\t\r\n\t\t\t\tfunction removeValue(arr) {\r\n\t\t\t\t\tvar what, a = arguments, L = a.length, ax;\r\n\t\t\t\t\twhile (L > 1 && arr.length) {\r\n\t\t\t\t\t\twhat = a[--L];\r\n\t\t\t\t\t\twhile ((ax = arr.indexOf(what)) !== -1) {\r\n\t\t\t\t\t\t\tarr.splice(ax, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn arr;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//cyberlan menu\r\n\t\t\t\tvar itemsArray = [];\r\n\t\t\t\tvar thisActiveIndex = '';\r\n\t\t\t\t$('.page-sidebar').on('click', '.page-sidebar-menu > li > a', function (e) {\r\n\t\t\t\t\tvar screenWidth = $(window).width();\r\n\t\t\t\t\tvar hasSubMenu = $(this).next().hasClass('sub-menu');\r\n\t\t\t\t\tvar selectedItem = '';\r\n\t\t\t\t\tselectedItem = $('.page-sidebar-menu > li.active');\r\n\t\t\t\t\tif (hasSubMenu) {\r\n\t\t\t\t\t\t$(this).closest('li').toggleClass('open');\r\n\t\t\t\t\t\tvar thisIndex = 0;\r\n\t\t\t\t\t\tthisIndex = $(this).closest('li').index();\r\n\t\t\t\t\t\tif (thisIndex != itemsArray[0] && thisIndex != itemsArray[1]) {\r\n\t\t\t\t\t\t\tif (selectedItem.eq(thisActiveIndex)) {\r\n\t\t\t\t\t\t\t\tremoveValue(itemsArray, thisActiveIndex);\r\n\t\t\t\t\t\t\t\titemsArray.splice();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\titemsArray.push(thisIndex);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (itemsArray.length > 2) {\r\n\t\t\t\t\t\t\t$('.page-sidebar-menu > li').eq(itemsArray[0]).removeClass('open');\r\n\t\t\t\t\t\t\titemsArray.shift();\r\n\t\t\t\t\t\t\titemsArray.splice();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$('.page-sidebar-menu > li').removeClass('active open');\r\n\t\t\t\t\t\t$(this).closest('li').addClass('active');\r\n\t\t\t\t\t\t$('.sub-menu li').removeClass('active');\r\n\t\t\t\t\t\tif (screenWidth <= 992) {\r\n\t\t\t\t\t\t\t$('.page-header .responsive-toggler').click();\r\n\t\t\t\t\t\t\tMetronic.scrollTop();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\thandleSidebarAndContentHeight();\r\n\t\t\t\t});\r\n\t\t\t\t$('.page-sidebar').on('click', '.sub-menu a', function (e) {\r\n\t\t\t\t\tvar thisParentItem = '';\r\n\t\t\t\t\tthisParentItem = $(this).closest('.page-sidebar-menu > li');\r\n\t\t\t\t\tvar thisParent = '';\r\n\t\t\t\t\tthisParent = $(this).closest('li');\r\n\t\t\t\t\tthisParent.addClass('active');\r\n\t\t\t\t\tthisParentItem.addClass('active');\r\n\t\t\t\t\t$('.sub-menu li').not(thisParent).removeClass('active');\r\n\t\t\t\t\t$('.page-sidebar-menu > li').not(thisParentItem).removeClass('open active');\r\n\t\t\t\t\tthisActiveIndex = thisParentItem.index();\r\n\r\n\t\t\t\t\tvar screenWidth = $(window).width();\r\n\t\t\t\t\tif (screenWidth <= 992) {\r\n\t\t\t\t\t\t$('.page-header .responsive-toggler').click();\r\n\t\t\t\t\t\tMetronic.scrollTop();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\thandleSidebarAndContentHeight();\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\t//metronic menu\r\n\t\t\t\t/*\r\n\t\t\t\t$('.page-sidebar').on('click', 'li > a', function (e) {\r\n\r\n\t\t\t\t\tif ($('body').hasClass('page-sidebar-closed') && $(this).parent('li').parent('.page-sidebar-menu').length === 1) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar hasSubMenu = $(this).next().hasClass('sub-menu');\r\n\r\n\t\t\t\t\tif (Metronic.getViewPort().width >= resBreakpointMd && $(this).parents('.page-sidebar-menu-hover-submenu').length === 1) { // exit of hover sidebar menu\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (hasSubMenu === false) {\r\n\t\t\t\t\t\tif (Metronic.getViewPort().width < resBreakpointMd && $('.page-sidebar').hasClass(\"in\")) { // close the menu on mobile view while laoding a page \r\n\t\t\t\t\t\t\t$('.page-header .responsive-toggler').click();\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\r\n\t\t\t\t\tif ($(this).next().hasClass('sub-menu always-open')) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar parent = $(this).parent().parent();\r\n\t\t\t\t\tvar the = $(this);\r\n\t\t\t\t\tvar menu = $('.page-sidebar-menu');\r\n\t\t\t\t\tvar sub = $(this).next();\r\n\r\n\t\t\t\t\tvar autoScroll = menu.data(\"auto-scroll\");\r\n\t\t\t\t\tvar slideSpeed = parseInt(menu.data(\"slide-speed\"));\r\n\t\t\t\t\tvar keepExpand = menu.data(\"keep-expanded\");\r\n\r\n\t\t\t\t\tif (keepExpand !== true) {\r\n\t\t\t\t\t\tparent.children('li.open').children('a').children('.arrow').removeClass('open');\r\n\t\t\t\t\t\tparent.children('li.open').children('.sub-menu:not(.always-open)').slideUp(slideSpeed);\r\n\t\t\t\t\t\tparent.children('li.open').removeClass('open');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar slideOffeset = -200;\r\n\r\n\t\t\t\t\tif (sub.is(\":visible\")) {\r\n\t\t\t\t\t\t$('.arrow', $(this)).removeClass(\"open\");\r\n\t\t\t\t\t\t$(this).parent().removeClass(\"open\");\r\n\t\t\t\t\t\tsub.slideUp(slideSpeed, function () {\r\n\t\t\t\t\t\t\tif (autoScroll === true && $('body').hasClass('page-sidebar-closed') === false) {\r\n\t\t\t\t\t\t\t\tif ($('body').hasClass('page-sidebar-fixed')) {\r\n\t\t\t\t\t\t\t\t\tmenu.slimScroll({\r\n\t\t\t\t\t\t\t\t\t\t'scrollTo': (the.position()).top\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\tMetronic.scrollTo(the, slideOffeset);\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\thandleSidebarAndContentHeight();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else if (hasSubMenu) {\r\n\t\t\t\t\t\t$('.arrow', $(this)).addClass(\"open\");\r\n\t\t\t\t\t\t$(this).parent().addClass(\"open\");\r\n\t\t\t\t\t\tsub.slideDown(slideSpeed, function () {\r\n\t\t\t\t\t\t\tif (autoScroll === true && $('body').hasClass('page-sidebar-closed') === false) {\r\n\t\t\t\t\t\t\t\tif ($('body').hasClass('page-sidebar-fixed')) {\r\n\t\t\t\t\t\t\t\t\tmenu.slimScroll({\r\n\t\t\t\t\t\t\t\t\t\t'scrollTo': (the.position()).top\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\tMetronic.scrollTo(the, slideOffeset);\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\thandleSidebarAndContentHeight();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t});\r\n\r\n\r\n\t\t\t\t// handle ajax links within sidebar menu\r\n\t\t\t\t$('.page-sidebar').on('click', ' li > a.ajaxify', function (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tMetronic.scrollTop();\r\n\r\n\t\t\t\t\tvar url = $(this).attr(\"href\");\r\n\t\t\t\t\tvar menuContainer = $('.page-sidebar ul');\r\n\t\t\t\t\tvar pageContent = $('.page-content');\r\n\t\t\t\t\tvar pageContentBody = $('.page-content .page-content-body');\r\n\r\n\t\t\t\t\tmenuContainer.children('li.active').removeClass('active');\r\n\t\t\t\t\tmenuContainer.children('arrow.open').removeClass('open');\r\n\r\n\t\t\t\t\t$(this).parents('li').each(function () {\r\n\t\t\t\t\t\t$(this).addClass('active');\r\n\t\t\t\t\t\t$(this).children('a > span.arrow').addClass('open');\r\n\t\t\t\t\t});\r\n\t\t\t\t\t$(this).parents('li').addClass('active');\r\n\r\n\t\t\t\t\tif (Metronic.getViewPort().width < resBreakpointMd && $('.page-sidebar').hasClass(\"in\")) { // close the menu on mobile view while laoding a page \r\n\t\t\t\t\t\t$('.page-header .responsive-toggler').click();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tMetronic.startPageLoading();\r\n\r\n\t\t\t\t\tvar the = $(this);\r\n\r\n\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\ttype: \"GET\",\r\n\t\t\t\t\t\tcache: false,\r\n\t\t\t\t\t\turl: url,\r\n\t\t\t\t\t\tdataType: \"html\",\r\n\t\t\t\t\t\tsuccess: function (res) {\r\n\t\t\t\t\t\t\tif (the.parents('li.open').length === 0) {\r\n\t\t\t\t\t\t\t\t$('.page-sidebar-menu > li.open > a').click();\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tMetronic.stopPageLoading();\r\n\t\t\t\t\t\t\tpageContentBody.html(res);\r\n\t\t\t\t\t\t\tLayout.fixContentHeight(); // fix content height\r\n\t\t\t\t\t\t\tMetronic.initAjax(); // initialize core stuff\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\terror: function (xhr, ajaxOptions, thrownError) {\r\n\t\t\t\t\t\t\tMetronic.stopPageLoading();\r\n\t\t\t\t\t\t\tpageContentBody.html('

Could not load the requested content.

');\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// handle ajax link within main content\r\n\t\t\t\t$('.page-content').on('click', '.ajaxify', function (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tMetronic.scrollTop();\r\n\r\n\t\t\t\t\tvar url = $(this).attr(\"href\");\r\n\t\t\t\t\tvar pageContent = $('.page-content');\r\n\t\t\t\t\tvar pageContentBody = $('.page-content .page-content-body');\r\n\r\n\t\t\t\t\tMetronic.startPageLoading();\r\n\r\n\t\t\t\t\tif (Metronic.getViewPort().width < resBreakpointMd && $('.page-sidebar').hasClass(\"in\")) { // close the menu on mobile view while laoding a page \r\n\t\t\t\t\t\t$('.page-header .responsive-toggler').click();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\ttype: \"GET\",\r\n\t\t\t\t\t\tcache: false,\r\n\t\t\t\t\t\turl: url,\r\n\t\t\t\t\t\tdataType: \"html\",\r\n\t\t\t\t\t\tsuccess: function (res) {\r\n\t\t\t\t\t\t\tMetronic.stopPageLoading();\r\n\t\t\t\t\t\t\tpageContentBody.html(res);\r\n\t\t\t\t\t\t\tLayout.fixContentHeight(); // fix content height\r\n\t\t\t\t\t\t\tMetronic.initAjax(); // initialize core stuff\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\terror: function (xhr, ajaxOptions, thrownError) {\r\n\t\t\t\t\t\t\tpageContentBody.html('

Could not load the requested content.

');\r\n\t\t\t\t\t\t\tMetronic.stopPageLoading();\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// handle scrolling to top on responsive menu toggler click when header is fixed for mobile view\r\n\t\t\t\t$(document).on('click', '.page-header-fixed-mobile .page-header .responsive-toggler', function () {\r\n\t\t\t\t\tMetronic.scrollTop();\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// disabled possibility of drag-n-drop actions not over allowed elements with \"dropzone\" class name.\r\n\t\t\t\twindow.addEventListener(\"dragover\", function (e) {\r\n\t\t\t\t\te = e || event;\r\n\t\t\t\t\tif ($(e.target).find('dropzone').length === 0){\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t}, false);\r\n\t\t\t\twindow.addEventListener(\"drop\", function (e) {\r\n\t\t\t\t\te = e || event;\r\n\t\t\t\t\tif ($(e.target).find('dropzone').length === 0) {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t}\r\n\t\t\t\t}, false);\r\n\r\n\r\n\r\n\t\t\t\t// handle the search bar close\r\n\t\t\t\t$('.page-sidebar').on('click', '.sidebar-search .remove', function (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t$('.sidebar-search').removeClass(\"open\");\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// handle the search query submit on enter press\r\n\t\t\t\t$('.page-sidebar .sidebar-search').on('keypress', 'input.form-control', function (e) {\r\n\t\t\t\t\tif (e.which == 13) {\r\n\t\t\t\t\t\t$('.sidebar-search').submit();\r\n\t\t\t\t\t\treturn false; //<---- Add this line\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// handle the search submit(for sidebar search and responsive mode of the header search)\r\n\t\t\t\t$('.sidebar-search .submit').on('click', function (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tif ($('body').hasClass(\"page-sidebar-closed\")) {\r\n\t\t\t\t\t\tif ($('.sidebar-search').hasClass('open') === false) {\r\n\t\t\t\t\t\t\tif ($('.page-sidebar-fixed').length === 1) {\r\n\t\t\t\t\t\t\t\t$('.page-sidebar .sidebar-toggler').click(); //trigger sidebar toggle button\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t$('.sidebar-search').addClass(\"open\");\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t$('.sidebar-search').submit();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$('.sidebar-search').submit();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// handle close on body click\r\n\t\t\t\tif ($('.sidebar-search').length !== 0) {\r\n\t\t\t\t\t$('.sidebar-search .input-group').on('click', function (e) {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$('body').on('click', function () {\r\n\t\t\t\t\t\tif ($('.sidebar-search').hasClass('open')) {\r\n\t\t\t\t\t\t\t$('.sidebar-search').removeClass(\"open\");\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// Helper function to calculate sidebar height for fixed sidebar layout.\r\n\t\t\tvar _calculateFixedSidebarViewportHeight = function () {\r\n\t\t\t\tvar sidebarHeight = Metronic.getViewPort().height - $('.page-header').outerHeight();\r\n\t\t\t\tif ($('body').hasClass(\"page-footer-fixed\")) {\r\n\t\t\t\t\tsidebarHeight = sidebarHeight - $('.page-footer').outerHeight();\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn sidebarHeight;\r\n\t\t\t};\r\n\r\n\t\t\t// Handles fixed sidebar\r\n\t\t\tvar handleFixedSidebar = function () {\r\n\t\t\t\tvar menu = $('.page-sidebar-menu:first');\r\n\r\n\t\t\t\tMetronic.destroySlimScroll(menu);\r\n\r\n\t\t\t\tif ($('.page-sidebar-fixed').length === 0) {\r\n\t\t\t\t\thandleSidebarAndContentHeight();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (Metronic.getViewPort().width >= resBreakpointMd) {\r\n\t\t\t\t\tmenu.attr(\"data-height\", _calculateFixedSidebarViewportHeight());\r\n\t\t\t\t\tMetronic.initSlimScroll(menu);\r\n\t\t\t\t\thandleSidebarAndContentHeight();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\r\n\t\t\t// Hanles sidebar toggler\r\n\t\tvar handleSidebarToggler = function () {\r\n\t\t\t\tvar body = $('body');\r\n\t\t\t\tif ($.cookie && $.cookie('sidebar_closed') === '1' && Metronic.getViewPort().width >= resBreakpointMd) {\r\n\t\t\t\t\t$('body').addClass('page-sidebar-closed');\r\n\t\t\t\t\t$('.page-sidebar-menu').addClass('page-sidebar-menu-closed');\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// handle sidebar show/hide\r\n\t\t\t\t$('body').on('click', '.sidebar-toggler', function (e) {\r\n\t\t\t\t\tvar sidebar = $('.page-sidebar');\r\n\t\t\t\t\tvar sidebarMenu = $('.page-sidebar-menu');\r\n\t\t\t\t\t$(\".sidebar-search\", sidebar).removeClass(\"open\");\r\n\r\n\t\t\t\t\tif (body.hasClass(\"page-sidebar-closed\")) {\r\n\t\t\t\t\t\tbody.removeClass(\"page-sidebar-closed\");\r\n\t\t\t\t\t\tsidebarMenu.removeClass(\"page-sidebar-menu-closed\");\r\n\t\t\t\t\t\tif ($.cookie) {\r\n\t\t\t\t\t\t\t$.cookie('sidebar_closed', '0');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tbody.addClass(\"page-sidebar-closed\");\r\n\t\t\t\t\t\tsidebarMenu.addClass(\"page-sidebar-menu-closed\");\r\n\t\t\t\t\t\tif (body.hasClass(\"page-sidebar-fixed\")) {\r\n\t\t\t\t\t\t\tsidebarMenu.trigger(\"mouseleave\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ($.cookie) {\r\n\t\t\t\t\t\t\t$.cookie('sidebar_closed', '1');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$(window).trigger('resize');\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\t\t// Handles the horizontal menu\r\n\t\t\tvar handleHorizontalMenu = function () {\r\n\t\t\t\t//handle tab click\r\n\t\t\t\t$('.page-header').on('click', '.hor-menu a[data-toggle=\"tab\"]', function (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tvar nav = $(\".hor-menu .nav\");\r\n\t\t\t\t\tvar active_link = nav.find('li.current');\r\n\t\t\t\t\t$('li.active', active_link).removeClass(\"active\");\r\n\t\t\t\t\t$('.selected', active_link).remove();\r\n\t\t\t\t\tvar new_link = $(this).parents('li').last();\r\n\t\t\t\t\tnew_link.addClass(\"current\");\r\n\t\t\t\t\tnew_link.find(\"a:first\").append('');\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// handle search box expand/collapse \r\n\t\t\t\t$('.page-header').on('click', '.search-form', function (e) {\r\n\t\t\t\t\t$(this).addClass(\"open\");\r\n\t\t\t\t\t$(this).find('.form-control').focus();\r\n\r\n\t\t\t\t\t$('.page-header .search-form .form-control').on('blur', function (e) {\r\n\t\t\t\t\t\t$(this).closest('.search-form').removeClass(\"open\");\r\n\t\t\t\t\t\t$(this).unbind(\"blur\");\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// handle hor menu search form on enter press\r\n\t\t\t\t$('.page-header').on('keypress', '.hor-menu .search-form .form-control', function (e) {\r\n\t\t\t\t\tif (e.which == 13) {\r\n\t\t\t\t\t\t$(this).closest('.search-form').submit();\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// handle header search button click\r\n\t\t\t\t$('.page-header').on('mousedown', '.search-form.open .submit', function (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t$(this).closest('.search-form').submit();\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// handle hover dropdown menu for desktop devices only\r\n\t\t\t\t$('[data-hover=\"megamenu-dropdown\"]').not('.hover-initialized').each(function () {\r\n\t\t\t\t\t$(this).dropdownHover();\r\n\t\t\t\t\t$(this).addClass('hover-initialized');\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$(document).on('click', '.mega-menu-dropdown .dropdown-menu', function (e) {\r\n\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\t\t// Handles Bootstrap Tabs.\r\n\t\t\tvar handleTabs = function () {\r\n\t\t\t\t// fix content height on tab click\r\n\t\t\t\t$('body').on('shown.bs.tab', 'a[data-toggle=\"tab\"]', function () {\r\n\t\t\t\t\thandleSidebarAndContentHeight();\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\t\t// Handles the go to top button at the footer\r\n\t\t\tvar handleGoTop = function () {\r\n\t\t\t\tvar offset = 300;\r\n\t\t\t\tvar duration = 500;\r\n\r\n\t\t\t\tif (navigator.userAgent.match(/iPhone|iPad|iPod/i)) { // ios supported\r\n\t\t\t\t\t$(window).bind(\"touchend touchcancel touchleave\", function (e) {\r\n\t\t\t\t\t\tif ($(this).scrollTop() > offset) {\r\n\t\t\t\t\t\t\t$('.scroll-to-top').fadeIn(duration);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t$('.scroll-to-top').fadeOut(duration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else { // general \r\n\t\t\t\t\t$(window).scroll(function () {\r\n\t\t\t\t\t\tif ($(this).scrollTop() > offset) {\r\n\t\t\t\t\t\t\t$('.scroll-to-top').fadeIn(duration);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t$('.scroll-to-top').fadeOut(duration);\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$('.scroll-to-top').click(function (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t$('html, body').animate({ scrollTop: 0 }, duration);\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\t// Hanlde 100% height elements(block, portlet, etc)\r\n\t\t\tvar handle100HeightContent = function () {\r\n\r\n\t\t\t\tvar target = $('.full-height-content');\r\n\t\t\t\tvar height;\r\n\r\n\t\t\t\theight = Metronic.getViewPort().height -\r\n\t\t\t\t\t$('.page-header').outerHeight(true) -\r\n\t\t\t\t\t$('.page-footer').outerHeight(true) -\r\n\t\t\t\t\t$('.page-title').outerHeight(true) -\r\n\t\t\t\t\t$('.page-bar').outerHeight(true);\r\n\r\n\t\t\t\tif (target.hasClass('portlet')) {\r\n\t\t\t\t\tvar portletBody = target.find('.portlet-body');\r\n\r\n\t\t\t\t\tif (Metronic.getViewPort().width < resBreakpointMd) {\r\n\t\t\t\t\t\tMetronic.destroySlimScroll(portletBody.find('.full-height-content-body')); // destroy slimscroll \r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\theight = height -\r\n\t\t\t\t\t\ttarget.find('.portlet-title').outerHeight(true) -\r\n\t\t\t\t\t\tparseInt(target.find('.portlet-body').css('padding-top')) -\r\n\t\t\t\t\t\tparseInt(target.find('.portlet-body').css('padding-bottom')) - 2;\r\n\r\n\t\t\t\t\tif (target.hasClass(\"full-height-content-scrollable\")) {\r\n\t\t\t\t\t\theight = height - 35;\r\n\t\t\t\t\t\tportletBody.find('.full-height-content-body').css('height', height);\r\n\t\t\t\t\t\tMetronic.initSlimScroll(portletBody.find('.full-height-content-body'));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tportletBody.css('min-height', height);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (Metronic.getViewPort().width < resBreakpointMd) {\r\n\t\t\t\t\t\tMetronic.destroySlimScroll(target.find('.full-height-content-body')); // destroy slimscroll \r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (target.hasClass(\"full-height-content-scrollable\")) {\r\n\t\t\t\t\t\theight = height - 35;\r\n\t\t\t\t\t\ttarget.find('.full-height-content-body').css('height', height);\r\n\t\t\t\t\t\tMetronic.initSlimScroll(target.find('.full-height-content-body'));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttarget.css('min-height', height);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t//* END:CORE HANDLERS *//\r\n\r\n\r\n\t\t\tLayout.initHeader = function () {\r\n\t\t\t\thandleHorizontalMenu(); // handles horizontal menu \r\n\t\t\t};\r\n\r\n\t\t\tLayout.setSidebarMenuActiveLink = function (mode, el) {\r\n\t\t\t\thandleSidebarMenuActiveLink(mode, el);\r\n\t\t\t};\r\n\r\n\t\t\tLayout.initSidebar = function () {\r\n\t\t\t\t//layout handlers\r\n\t\t\t\thandleFixedSidebar(); // handles fixed sidebar menu\r\n\t\t\t\thandleSidebarMenu(); // handles main menu\r\n\t\t\t\thandleSidebarToggler(); // handles sidebar hide/show\r\n\r\n\t\t\t\tif (Metronic.isAngularJsApp()) {\r\n\t\t\t\t\thandleSidebarMenuActiveLink('match'); // init sidebar active links \r\n\t\t\t\t}\r\n\r\n\t\t\t\tMetronic.addResizeHandler(handleFixedSidebar); // reinitialize fixed sidebar on window resize\r\n\t\t\t};\r\n\r\n\t\t\tLayout.initContent = function () {\r\n\t\t\t\thandle100HeightContent(); // handles 100% height elements(block, portlet, etc)\r\n\t\t\t\thandleTabs(); // handle bootstrah tabs\r\n\r\n\t\t\t\tMetronic.addResizeHandler(handleSidebarAndContentHeight); // recalculate sidebar & content height on window resize\r\n\t\t\t\tMetronic.addResizeHandler(handle100HeightContent); // reinitialize content height on window resize \r\n\t\t\t};\r\n\r\n\t\t\tLayout.initFooter = function () {\r\n\t\t\t\thandleGoTop(); //handles scroll to top functionality in the footer\r\n\t\t\t};\r\n\r\n\t\t\tLayout.init = function () {\r\n\t\t\t\tthis.initHeader();\r\n\t\t\t\tthis.initSidebar();\r\n\t\t\t\tthis.initContent();\r\n\t\t\t\tthis.initFooter();\r\n\t\t\t};\r\n\r\n\t\t\t\t//public function to fix the sidebar and content height accordingly\r\n\t\t\tLayout.fixContentHeight = function () {\r\n\t\t\t\thandleSidebarAndContentHeight();\r\n\t\t\t};\r\n\r\n\t\t\tLayout.initFixedSidebar = function () {\r\n\t\t\t\thandleFixedSidebar();\r\n\t\t\t};\r\n\r\n\t\t\tLayout.getLayoutImgPath = function () {\r\n\t\t\t\treturn Metronic.getAssetsPath() + layoutImgPath;\r\n\t\t\t};\r\n\r\n\t\t\tLayout.getLayoutCssPath = function () {\r\n\t\t\t\treturn Metronic.getAssetsPath() + layoutCssPath;\r\n\t\t\t};\r\n\t\treturn Layout;\r\n\t})();\r\n\texports.Layout = Layout;\r\n})","/**\r\nCore script to handle the entire theme and core functions\r\n**/\r\ndefine([\"require\", \"exports\", \"Core/Common/Request\", \"jquery\", 'Core/Common/ZIndexManager', \"jqueryUi\", \"bootstrap\"], function (require, exports, request, $, zIndexManager) {\r\n\tvar Metronic = (function () {\r\n\t\tvar Request = request.Request;\r\n\t\tfunction Metronic() { };\r\n\r\n\r\n\t\t// IE mode\r\n\t\tvar isRTL = false;\r\n\t\tvar isIE8 = false;\r\n\t\tvar isIE9 = false;\r\n\t\tvar isIE10 = false;\r\n\r\n\t\tvar resizeHandlers = [];\r\n\r\n\t\tvar assetsPath = '../../assets/';\r\n\r\n\t\tvar globalImgPath = 'global/img/';\r\n\r\n\t\tvar globalPluginsPath = 'global/plugins/';\r\n\r\n\t\tvar globalCssPath = 'global/css/';\r\n\r\n\t\t// theme layout color set\r\n\r\n\t\tvar brandColors = {\r\n\t\t\t'blue': '#89C4F4',\r\n\t\t\t'red': '#F3565D',\r\n\t\t\t'green': '#1bbc9b',\r\n\t\t\t'purple': '#9b59b6',\r\n\t\t\t'grey': '#95a5a6',\r\n\t\t\t'yellow': '#F8CB00'\r\n\t\t};\r\n\r\n\t\t// initializes main settings\r\n\t\tvar handleInit = function () {\r\n\r\n\t\t\tif ($('body').css('direction') === 'rtl') {\r\n\t\t\t\tisRTL = true;\r\n\t\t\t}\r\n\r\n\t\t\tisIE8 = !!navigator.userAgent.match(/MSIE 8.0/);\r\n\t\t\tisIE9 = !!navigator.userAgent.match(/MSIE 9.0/);\r\n\t\t\tisIE10 = !!navigator.userAgent.match(/MSIE 10.0/);\r\n\r\n\t\t\tif (isIE10) {\r\n\t\t\t\t$('html').addClass('ie10'); // detect IE10 version\r\n\t\t\t}\r\n\r\n\t\t\tif (isIE10 || isIE9 || isIE8) {\r\n\t\t\t\t$('html').addClass('ie'); // detect IE10 version\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// runs callback functions set by Metronic.addResponsiveHandler().\r\n\t\tvar _runResizeHandlers = function () {\r\n\t\t\t// reinitialize other subscribed elements\r\n\t\t\tfor (var i = 0; i < resizeHandlers.length; i++) {\r\n\t\t\t\tvar each = resizeHandlers[i];\r\n\t\t\t\teach.call();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// handle the layout reinitialization on window resize\r\n\t\tvar handleOnResize = function () {\r\n\t\t\tvar resize;\r\n\t\t\tif (isIE8) {\r\n\t\t\t\tvar currheight;\r\n\t\t\t\t$(window).resize(function () {\r\n\t\t\t\t\tif (currheight == document.documentElement.clientHeight) {\r\n\t\t\t\t\t\treturn; //quite event since only body resized not window.\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (resize) {\r\n\t\t\t\t\t\tclearTimeout(resize);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresize = setTimeout(function () {\r\n\t\t\t\t\t\t_runResizeHandlers();\r\n\t\t\t\t\t}, 50); // wait 50ms until window resize finishes. \r\n\t\t\t\t\tcurrheight = document.documentElement.clientHeight; // store last body client height\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t$(window).resize(function () {\r\n\t\t\t\t\tif (resize) {\r\n\t\t\t\t\t\tclearTimeout(resize);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresize = setTimeout(function () {\r\n\t\t\t\t\t\t_runResizeHandlers();\r\n\t\t\t\t\t}, 50); // wait 50ms until window resize finishes.\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Handles portlet tools & actions\r\n\t\tvar handlePortletTools = function () {\r\n\t\t\t// handle portlet remove\r\n\t\t\t$('body').on('click', '.portlet > .portlet-title > .tools > a.remove', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar portlet = $(this).closest(\".portlet\");\r\n\r\n\t\t\t\tif ($('body').hasClass('page-portlet-fullscreen')) {\r\n\t\t\t\t\t$('body').removeClass('page-portlet-fullscreen');\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//TODO find out why tooltips fail on production build\r\n\t\t\t\t//portlet.find('.portlet-title .fullscreen').tooltip('destroy');\r\n\t\t\t\t//portlet.find('.portlet-title > .tools > .reload').tooltip('destroy');\r\n\t\t\t\t//portlet.find('.portlet-title > .tools > .remove').tooltip('destroy');\r\n\t\t\t\t//portlet.find('.portlet-title > .tools > .config').tooltip('destroy');\r\n\t\t\t\t//portlet.find('.portlet-title > .tools > .collapse, .portlet > .portlet-title > .tools > .expand').tooltip('destroy');\r\n\r\n\t\t\t\tportlet.remove();\r\n\t\t\t});\r\n\r\n\t\t\t// handle portlet fullscreen\r\n\t\t\t$('body').on('click', '.portlet > .portlet-title .fullscreen', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar portlet = $(this).closest(\".portlet\");\r\n\t\t\t\tif (portlet.hasClass('portlet-fullscreen')) {\r\n\t\t\t\t\t$(this).removeClass('on');\r\n\t\t\t\t\tportlet.removeClass('portlet-fullscreen');\r\n\t\t\t\t\tportlet.css({zIndex: ''});\r\n\t\t\t\t\t$('body').removeClass('page-portlet-fullscreen');\r\n\t\t\t\t\tportlet.children('.portlet-body').css('height', 'auto');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar height = Metronic.getViewPort().height -\r\n\t\t\t\t\t\tportlet.children('.portlet-title').outerHeight() -\r\n\t\t\t\t\t\tparseInt(portlet.children('.portlet-body').css('padding-top')) -\r\n\t\t\t\t\t\tparseInt(portlet.children('.portlet-body').css('padding-bottom'));\r\n\r\n\t\t\t\t\t$(this).addClass('on');\r\n\t\t\t\t\tportlet.addClass('portlet-fullscreen');\r\n\t\t\t\t\tportlet.css({zIndex: zIndexManager.ZIndexManager.Instance.NextValue});\r\n\t\t\t\t\t$('body').addClass('page-portlet-fullscreen');\r\n\t\t\t\t\tportlet.children('.portlet-body').css('height', height);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$('body').on('click', '.portlet > .portlet-title > .tools > a.reload', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar el = $(this).closest(\".portlet\").children(\".portlet-body\");\r\n\t\t\t\tvar url = $(this).attr(\"data-url\");\r\n\t\t\t\tvar error = $(this).attr(\"data-error-display\");\r\n\t\t\t\tif (url) {\r\n\t\t\t\t\tMetronic.blockUI({\r\n\t\t\t\t\t\ttarget: el,\r\n\t\t\t\t\t\tanimate: true,\r\n\t\t\t\t\t\toverlayColor: 'none'\r\n\t\t\t\t\t});\r\n\t\t\t\t\tRequest.Send({\r\n\t\t\t\t\t\tproxy: {\r\n\t\t\t\t\t\t\ttype: \"GET\",\r\n\t\t\t\t\t\t\tcache: false,\r\n\t\t\t\t\t\t\turl: url,\r\n\t\t\t\t\t\t\tdataType: \"html\"\r\n\t\t\t\t\t\t}, params: data\r\n\t\t\t\t\t}).then(function (res) {\r\n\t\t\t\t\t\tMetronic.unblockUI(el);\r\n\t\t\t\t\t\tel.html(res);\r\n\t\t\t\t\t\t}).fail(function (xhr, ajaxOptions, thrownError) {\r\n\t\t\t\t\t\tMetronic.unblockUI(el);\r\n\t\t\t\t\t\tvar msg = 'Error on reloading the content. Please check your connection and try again.';\r\n\t\t\t\t\t\tif (error == \"toastr\" && toastr) {\r\n\t\t\t\t\t\t\ttoastr.error(msg);\r\n\t\t\t\t\t\t} else if (error == \"notific8\" && $.notific8) {\r\n\t\t\t\t\t\t\t$.notific8('zindex', 11500);\r\n\t\t\t\t\t\t\t$.notific8(msg, {\r\n\t\t\t\t\t\t\t\ttheme: 'ruby',\r\n\t\t\t\t\t\t\t\tlife: 3000\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\talert(msg);\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// load ajax data on page init\r\n\t\t\t$('.portlet .portlet-title a.reload[data-load=\"true\"]').click();\r\n\r\n\t\t\t$('body').on('click', '.portlet > .portlet-title > .tools > .collapse, .portlet .portlet-title > .tools > .expand', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tvar el = $(this).closest(\".portlet\").children(\".portlet-body\");\r\n\t\t\t\tif ($(this).hasClass(\"collapse\")) {\r\n\t\t\t\t\t$(this).removeClass(\"collapse\").addClass(\"expand\");\r\n\t\t\t\t\tel.slideUp(200);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(this).removeClass(\"expand\").addClass(\"collapse\");\r\n\t\t\t\t\tel.slideDown(200);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t// Handles custom checkboxes & radios using jQuery Uniform plugin\r\n\t\tvar handleUniform = function () {\r\n\t\t\tif (!$().uniform) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar test = $(\"input[type=checkbox]:not(.toggle, .md-check, .md-radiobtn, .make-switch, .icheck), input[type=radio]:not(.toggle, .md-check, .md-radiobtn, .star, .make-switch, .icheck)\");\r\n\t\t\tif (test.length > 0) {\r\n\t\t\t\ttest.each(function () {\r\n\t\t\t\t\tif ($(this).parents(\".checker\").length === 0) {\r\n\t\t\t\t\t\t$(this).show();\r\n\t\t\t\t\t\t$(this).uniform();\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// Handlesmaterial design checkboxes\r\n\t\tvar handleMaterialDesign = function () {\r\n\r\n\t\t\t// Material design ckeckbox and radio effects\r\n\t\t\t$('body').on('click', '.md-checkbox > label, .md-radio > label', function () {\r\n\t\t\t\tvar the = $(this);\r\n\t\t\t\t// find the first span which is our circle/bubble\r\n\t\t\t\tvar el = $(this).children('span:first-child');\r\n\r\n\t\t\t\t// add the bubble class (we do this so it doesnt show on page load)\r\n\t\t\t\tel.addClass('inc');\r\n\r\n\t\t\t\t// clone it\r\n\t\t\t\tvar newone = el.clone(true);\r\n\r\n\t\t\t\t// add the cloned version before our original\r\n\t\t\t\tel.before(newone);\r\n\r\n\t\t\t\t// remove the original so that it is ready to run on next click\r\n\t\t\t\t$(\".\" + el.attr(\"class\") + \":last\", the).remove();\r\n\t\t\t});\r\n\r\n\t\t\tif ($('body').hasClass('page-md')) {\r\n\t\t\t\t// Material design click effect\r\n\t\t\t\t// credit where credit's due; http://thecodeplayer.com/walkthrough/ripple-click-effect-google-material-design \r\n\t\t\t\t$('body').on('click', 'a.btn, button.btn, input.btn, label.btn', function (e) {\r\n\t\t\t\t\tvar element, circle, d, x, y;\r\n\r\n\t\t\t\t\telement = $(this);\r\n\r\n\t\t\t\t\tif (element.find(\".md-click-circle\").length == 0) {\r\n\t\t\t\t\t\telement.prepend(\"\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcircle = element.find(\".md-click-circle\");\r\n\t\t\t\t\tcircle.removeClass(\"md-click-animate\");\r\n\r\n\t\t\t\t\tif (!circle.height() && !circle.width()) {\r\n\t\t\t\t\t\td = Math.max(element.outerWidth(), element.outerHeight());\r\n\t\t\t\t\t\tcircle.css({ height: d, width: d });\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tx = e.pageX - element.offset().left - circle.width() / 2;\r\n\t\t\t\t\ty = e.pageY - element.offset().top - circle.height() / 2;\r\n\r\n\t\t\t\t\tcircle.css({ top: y + 'px', left: x + 'px' }).addClass(\"md-click-animate\");\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Floating labels\r\n\t\t\tvar handleInput = function (el) {\r\n\t\t\t\tif (el.val() != \"\") {\r\n\t\t\t\t\tel.addClass('edited');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tel.removeClass('edited');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$('body').on('keydown', '.form-md-floating-label .form-control', function (e) {\r\n\t\t\t\thandleInput($(this));\r\n\t\t\t});\r\n\t\t\t$('body').on('blur', '.form-md-floating-label .form-control', function (e) {\r\n\t\t\t\thandleInput($(this));\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Handles custom checkboxes & radios using jQuery iCheck plugin\r\n\t\tvar handleiCheck = function () {\r\n\t\t\tif (!$().iCheck) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t$('.icheck').each(function () {\r\n\t\t\t\tvar checkboxClass = $(this).attr('data-checkbox') ? $(this).attr('data-checkbox') : 'icheckbox_minimal-grey';\r\n\t\t\t\tvar radioClass = $(this).attr('data-radio') ? $(this).attr('data-radio') : 'iradio_minimal-grey';\r\n\r\n\t\t\t\tif (checkboxClass.indexOf('_line') > -1 || radioClass.indexOf('_line') > -1) {\r\n\t\t\t\t\t$(this).iCheck({\r\n\t\t\t\t\t\tcheckboxClass: checkboxClass,\r\n\t\t\t\t\t\tradioClass: radioClass,\r\n\t\t\t\t\t\tinsert: '
' + $(this).attr(\"data-label\")\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(this).iCheck({\r\n\t\t\t\t\t\tcheckboxClass: checkboxClass,\r\n\t\t\t\t\t\tradioClass: radioClass\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// Handles Bootstrap switches\r\n\t\tvar handleBootstrapSwitch = function () {\r\n\t\t\tif (!$().bootstrapSwitch) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t$('.make-switch').bootstrapSwitch();\r\n\t\t};\r\n\r\n\t\t// Handles Bootstrap confirmations\r\n\t\tvar handleBootstrapConfirmation = function () {\r\n\t\t\tif (!$().confirmation) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t$('[data-toggle=confirmation]').confirmation({ container: 'body', btnOkClass: 'btn-xs btn-success', btnCancelClass: 'btn-xs btn-danger' });\r\n\t\t}\r\n\r\n\t\t// Handles Bootstrap Accordions.\r\n\t\tvar handleAccordions = function () {\r\n\t\t\t$('body').on('shown.bs.collapse', '.accordion.scrollable', function (e) {\r\n\t\t\t\tMetronic.scrollTo($(e.target));\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t// Handles Bootstrap Tabs.\r\n\t\tvar handleTabs = function () {\r\n\t\t\t//activate tab if tab id provided in the URL\r\n\t\t\tif (location.hash) {\r\n\t\t\t\tvar tabid = location.hash.substr(1);\r\n\t\t\t\t$('a[href=\"#' + tabid + '\"]').parents('.tab-pane:hidden').each(function () {\r\n\t\t\t\t\tvar tabid = $(this).attr(\"id\");\r\n\t\t\t\t\t$('a[href=\"#' + tabid + '\"]').click();\r\n\t\t\t\t});\r\n\t\t\t\t$('a[href=\"#' + tabid + '\"]').click();\r\n\t\t\t}\r\n\r\n\t\t\tif ($().tabdrop) {\r\n\t\t\t\t$('.tabbable-tabdrop .nav-pills, .tabbable-tabdrop .nav-tabs').tabdrop({\r\n\t\t\t\t\ttext: ' '\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Handles Bootstrap Modals.\r\n\t\tvar handleModals = function () {\r\n\t\t\t// fix stackable modal issue: when 2 or more modals opened, closing one of modal will remove .modal-open class. \r\n\t\t\t$('body').on('hide.bs.modal', function () {\r\n\t\t\t\tif ($('.modal:visible').length > 1 && $('html').hasClass('modal-open') === false) {\r\n\t\t\t\t\t$('html').addClass('modal-open');\r\n\t\t\t\t} else if ($('.modal:visible').length <= 1) {\r\n\t\t\t\t\t$('html').removeClass('modal-open');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// fix page scrollbars issue\r\n\t\t\t$('body').on('show.bs.modal', '.modal', function () {\r\n\t\t\t\tif ($(this).hasClass(\"modal-scroll\")) {\r\n\t\t\t\t\t$('body').addClass(\"modal-open-noscroll\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// fix page scrollbars issue\r\n\t\t\t$('body').on('hide.bs.modal', '.modal', function () {\r\n\t\t\t\t$('body').removeClass(\"modal-open-noscroll\");\r\n\t\t\t});\r\n\r\n\t\t\t// remove ajax content and remove cache on modal closed \r\n\t\t\t$('body').on('hidden.bs.modal', '.modal:not(.modal-cached)', function () {\r\n\t\t\t\t$(this).removeData('bs.modal');\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t// Handles Bootstrap Tooltips.\r\n\t\tvar handleTooltips = function () {\r\n\t\t\t// global tooltips\r\n\t\t\t$('.tooltips').tooltip();\r\n\r\n\t\t\t// portlet tooltips\r\n\t\t\t$('.portlet > .portlet-title .fullscreen').tooltip({\r\n\t\t\t\tcontainer: 'body',\r\n\t\t\t\ttitle: 'Fullscreen'\r\n\t\t\t});\r\n\t\t\t$('.portlet > .portlet-title > .tools > .reload').tooltip({\r\n\t\t\t\tcontainer: 'body',\r\n\t\t\t\ttitle: 'Reload'\r\n\t\t\t});\r\n\t\t\t$('.portlet > .portlet-title > .tools > .remove').tooltip({\r\n\t\t\t\tcontainer: 'body',\r\n\t\t\t\ttitle: 'Remove'\r\n\t\t\t});\r\n\t\t\t$('.portlet > .portlet-title > .tools > .config').tooltip({\r\n\t\t\t\tcontainer: 'body',\r\n\t\t\t\ttitle: 'Settings'\r\n\t\t\t});\r\n\t\t\t$('.portlet > .portlet-title > .tools > .collapse, .portlet > .portlet-title > .tools > .expand').tooltip({\r\n\t\t\t\tcontainer: 'body',\r\n\t\t\t\ttitle: 'Collapse/Expand'\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t// Handles Bootstrap Dropdowns\r\n\t\tvar handleDropdowns = function () {\r\n\t\t\t/*\r\n\t\t\t Hold dropdown on click \r\n\t\t\t*/\r\n\t\t\t$('body').on('click', '.dropdown-menu.hold-on-click', function (e) {\r\n\t\t\t\te.stopPropagation();\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tvar handleAlerts = function () {\r\n\t\t\t$('body').on('click', '[data-close=\"alert\"]', function (e) {\r\n\t\t\t\t$(this).parent('.alert').hide();\r\n\t\t\t\t$(this).closest('.note').hide();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t});\r\n\r\n\t\t\t$('body').on('click', '[data-close=\"note\"]', function (e) {\r\n\t\t\t\t$(this).closest('.note').hide();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t});\r\n\r\n\t\t\t$('body').on('click', '[data-remove=\"note\"]', function (e) {\r\n\t\t\t\t$(this).closest('.note').remove();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t// Handle Hower Dropdowns\r\n\t\tvar handleDropdownHover = function () {\r\n\t\t\t$('[data-hover=\"dropdown\"]').not('.hover-initialized').each(function () {\r\n\t\t\t\t$(this).dropdownHover();\r\n\t\t\t\t$(this).addClass('hover-initialized');\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t// Handle textarea autosize \r\n\t\tvar handleTextareaAutosize = function () {\r\n\t\t\tif (typeof (autosize) == \"function\") {\r\n\t\t\t\tautosize(document.querySelector('textarea.autosizeme'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Handles Bootstrap Popovers\r\n\r\n\t\t// last popep popover\r\n\t\tvar lastPopedPopover;\r\n\r\n\t\tvar handlePopovers = function () {\r\n\t\t\t$('.popovers').popover();\r\n\r\n\t\t\t// close last displayed popover\r\n\r\n\t\t\t$(document).on('click.bs.popover.data-api', function (e) {\r\n\t\t\t\tif (lastPopedPopover) {\r\n\t\t\t\t\tlastPopedPopover.popover('hide');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\t// Handles scrollable contents using jQuery SlimScroll plugin.\r\n\t\tvar handleScrollers = function () {\r\n\t\t\tMetronic.initSlimScroll('.scroller');\r\n\t\t};\r\n\r\n\t\t// Handles Image Preview using jQuery Fancybox plugin\r\n\t\tvar handleFancybox = function () {\r\n\t\t\tif (!jQuery.fancybox) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ($(\".fancybox-button\").length > 0) {\r\n\t\t\t\t$(\".fancybox-button\").fancybox({\r\n\t\t\t\t\tgroupAttr: 'data-rel',\r\n\t\t\t\t\tprevEffect: 'none',\r\n\t\t\t\t\tnextEffect: 'none',\r\n\t\t\t\t\tcloseBtn: true,\r\n\t\t\t\t\thelpers: {\r\n\t\t\t\t\t\ttitle: {\r\n\t\t\t\t\t\t\ttype: 'inside'\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\t// Fix input placeholder issue for IE8 and IE9\r\n\t\tvar handleFixInputPlaceholderForIE = function () {\r\n\t\t\t//fix html5 placeholder attribute for ie7 & ie8\r\n\t\t\tif (isIE8 || isIE9) { // ie8 & ie9\r\n\t\t\t\t// this is html5 placeholder fix for inputs, inputs with placeholder-no-fix class will be skipped(e.g: we need this for password fields)\r\n\t\t\t\t$('input[placeholder]:not(.placeholder-no-fix), textarea[placeholder]:not(.placeholder-no-fix)').each(function () {\r\n\t\t\t\t\tvar input = $(this);\r\n\r\n\t\t\t\t\tif (input.val() === '' && input.attr(\"placeholder\") !== '') {\r\n\t\t\t\t\t\tinput.addClass(\"placeholder\").val(input.attr('placeholder'));\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinput.focus(function () {\r\n\t\t\t\t\t\tif (input.val() == input.attr('placeholder')) {\r\n\t\t\t\t\t\t\tinput.val('');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tinput.blur(function () {\r\n\t\t\t\t\t\tif (input.val() === '' || input.val() == input.attr('placeholder')) {\r\n\t\t\t\t\t\t\tinput.val(input.attr('placeholder'));\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\t// Handle Select2 Dropdowns\r\n\t\tvar handleSelect2 = function () {\r\n\t\t\tif ($().select2) {\r\n\t\t\t\t$('.select2me').select2({\r\n\t\t\t\t\tplaceholder: \"Select\",\r\n\t\t\t\t\tallowClear: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//* END:CORE HANDLERS *//\r\n\r\n\t\t//main function to initiate the theme\r\n\t\tMetronic.init = function () {\r\n\t\t\t//IMPORTANT!!!: Do not modify the core handlers call order.\r\n\r\n\t\t\t//Core handlers\r\n\t\t\thandleInit(); // initialize core variables\r\n\t\t\thandleOnResize(); // set and handle responsive \r\n\r\n\t\t\t//UI Component handlers \r\n\t\t\thandleMaterialDesign(); // handle material design \r\n\t\t\thandleUniform(); // hanfle custom radio & checkboxes\r\n\t\t\thandleiCheck(); // handles custom icheck radio and checkboxes\r\n\t\t\thandleBootstrapSwitch(); // handle bootstrap switch plugin\r\n\t\t\thandleScrollers(); // handles slim scrolling contents \r\n\t\t\thandleFancybox(); // handle fancy box\r\n\t\t\thandleSelect2(); // handle custom Select2 dropdowns\r\n\t\t\thandlePortletTools(); // handles portlet action bar functionality(refresh, configure, toggle, remove)\r\n\t\t\thandleAlerts(); //handle closabled alerts\r\n\t\t\thandleDropdowns(); // handle dropdowns\r\n\t\t\thandleTabs(); // handle tabs\r\n\t\t\thandleTooltips(); // handle bootstrap tooltips\r\n\t\t\thandlePopovers(); // handles bootstrap popovers\r\n\t\t\thandleAccordions(); //handles accordions \r\n\t\t\thandleModals(); // handle modals\r\n\t\t\thandleBootstrapConfirmation(); // handle bootstrap confirmations\r\n\t\t\thandleTextareaAutosize(); // handle autosize textareas\r\n\r\n\t\t\t// Hacks\r\n\t\t\thandleFixInputPlaceholderForIE(); //IE8 & IE9 input placeholder issue fix\r\n\t\t};\r\n\r\n\t\t//main function to initiate core javascript after ajax complete\r\n\t\tMetronic.initAjax = function () {\r\n\t\t\thandleUniform(); // handles custom radio & checkboxes \r\n\t\t\thandleiCheck(); // handles custom icheck radio and checkboxes\r\n\t\t\thandleBootstrapSwitch(); // handle bootstrap switch plugin\r\n\t\t\thandleDropdownHover(); // handles dropdown hover \r\n\t\t\thandleScrollers(); // handles slim scrolling contents \r\n\t\t\thandleSelect2(); // handle custom Select2 dropdowns\r\n\t\t\thandleFancybox(); // handle fancy box\r\n\t\t\thandleDropdowns(); // handle dropdowns\r\n\t\t\thandleTooltips(); // handle bootstrap tooltips\r\n\t\t\thandlePopovers(); // handles bootstrap popovers\r\n\t\t\thandleAccordions(); //handles accordions \r\n\t\t\thandleBootstrapConfirmation(); // handle bootstrap confirmations\r\n\t\t};\r\n\r\n\t\t//init main components \r\n\t\tMetronic.initComponents = function () {\r\n\t\t\tthis.initAjax();\r\n\t\t};\r\n\r\n\t\t//public function to remember last opened popover that needs to be closed on click\r\n\t\tMetronic.setLastPopedPopover = function (el) {\r\n\t\t\tlastPopedPopover = el;\r\n\t\t};\r\n\r\n\t\t//public function to add callback a function which will be called on window resize\r\n\t\tMetronic.addResizeHandler = function (func) {\r\n\t\t\tresizeHandlers.push(func);\r\n\t\t};\r\n\r\n\t\t//public functon to call _runresizeHandlers\r\n\t\tMetronic.runResizeHandlers = function () {\r\n\t\t\t_runResizeHandlers();\r\n\t\t};\r\n\r\n\t\t// wrMetronicer function to scroll(focus) to an element\r\n\t\tMetronic.scrollTo = function (el, offeset) {\r\n\t\t\tvar pos = (el && el.length > 0) ? el.offset().top : 0;\r\n\r\n\t\t\tif (el) {\r\n\t\t\t\tif ($('body').hasClass('page-header-fixed')) {\r\n\t\t\t\t\tpos = pos - $('.page-header').height();\r\n\t\t\t\t} else if ($('body').hasClass('page-header-top-fixed')) {\r\n\t\t\t\t\tpos = pos - $('.page-header-top').height();\r\n\t\t\t\t} else if ($('body').hasClass('page-header-menu-fixed')) {\r\n\t\t\t\t\tpos = pos - $('.page-header-menu').height();\r\n\t\t\t\t}\r\n\t\t\t\tpos = pos + (offeset ? offeset : -1 * el.height());\r\n\t\t\t}\r\n\r\n\t\t\t$('html,body').animate({\r\n\t\t\t\tscrollTop: pos\r\n\t\t\t}, 'slow');\r\n\t\t};\r\n\r\n\t\tMetronic.initSlimScroll = function (el) {\r\n\t\t\t$(el).each(function () {\r\n\t\t\t\tif ($(this).attr(\"data-initialized\")) {\r\n\t\t\t\t\treturn; // exit\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar height;\r\n\r\n\t\t\t\tif ($(this).attr(\"data-height\")) {\r\n\t\t\t\t\theight = $(this).attr(\"data-height\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\theight = $(this).css('height');\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$(this).slimScroll({\r\n\t\t\t\t\tallowPageScroll: true, // allow page scroll when the element scroll is ended\r\n\t\t\t\t\tsize: '7px',\r\n\t\t\t\t\tcolor: ($(this).attr(\"data-handle-color\") ? $(this).attr(\"data-handle-color\") : '#bbb'),\r\n\t\t\t\t\twrapperClass: ($(this).attr(\"data-wrapper-class\") ? $(this).attr(\"data-wrapper-class\") : 'slimScrollDiv'),\r\n\t\t\t\t\trailColor: ($(this).attr(\"data-rail-color\") ? $(this).attr(\"data-rail-color\") : '#eaeaea'),\r\n\t\t\t\t\tposition: isRTL ? 'left' : 'right',\r\n\t\t\t\t\theight: height,\r\n\t\t\t\t\talwaysVisible: ($(this).attr(\"data-always-visible\") == \"1\" ? true : false),\r\n\t\t\t\t\trailVisible: ($(this).attr(\"data-rail-visible\") == \"1\" ? true : false),\r\n\t\t\t\t\tdisableFadeOut: true\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$(this).attr(\"data-initialized\", \"1\");\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tMetronic.destroySlimScroll = function (el) {\r\n\t\t\t$(el).each(function () {\r\n\t\t\t\tif ($(this).attr(\"data-initialized\") === \"1\") { // destroy existing instance before updating the height\r\n\t\t\t\t\t$(this).removeAttr(\"data-initialized\");\r\n\t\t\t\t\t$(this).removeAttr(\"style\");\r\n\r\n\t\t\t\t\tvar attrList = {};\r\n\r\n\t\t\t\t\t// store the custom attribures so later we will reassign.\r\n\t\t\t\t\tif ($(this).attr(\"data-handle-color\")) {\r\n\t\t\t\t\t\tattrList[\"data-handle-color\"] = $(this).attr(\"data-handle-color\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ($(this).attr(\"data-wrapper-class\")) {\r\n\t\t\t\t\t\tattrList[\"data-wrapper-class\"] = $(this).attr(\"data-wrapper-class\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ($(this).attr(\"data-rail-color\")) {\r\n\t\t\t\t\t\tattrList[\"data-rail-color\"] = $(this).attr(\"data-rail-color\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ($(this).attr(\"data-always-visible\")) {\r\n\t\t\t\t\t\tattrList[\"data-always-visible\"] = $(this).attr(\"data-always-visible\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ($(this).attr(\"data-rail-visible\")) {\r\n\t\t\t\t\t\tattrList[\"data-rail-visible\"] = $(this).attr(\"data-rail-visible\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$(this).slimScroll({\r\n\t\t\t\t\t\twrapperClass: ($(this).attr(\"data-wrapper-class\") ? $(this).attr(\"data-wrapper-class\") : 'slimScrollDiv'),\r\n\t\t\t\t\t\tdestroy: true\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tvar the = $(this);\r\n\r\n\t\t\t\t\t// reassign custom attributes\r\n\t\t\t\t\t$.each(attrList, function (key, value) {\r\n\t\t\t\t\t\tthe.attr(key, value);\r\n\t\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\t// function to scroll to the top\r\n\t\tMetronic.scrollTop = function () {\r\n\t\t\tMetronic.scrollTo();\r\n\t\t};\r\n\r\n\t\t// wrMetronicer function to block element(indicate loading)\r\n\t\tMetronic.blockUI = function (options) {\r\n\t\t\toptions = $.extend(true, {}, options);\r\n\t\t\tvar html = '';\r\n\t\t\tif (options.animate) {\r\n\t\t\t\thtml = '
' + '
' + '
';\r\n\t\t\t} else if (options.iconOnly) {\r\n\t\t\t\thtml = '
';\r\n\t\t\t} else if (options.textOnly) {\r\n\t\t\t\t//html = '
  ' + (options.message ? options.message : 'LOADING...') + '
';\r\n\t\t\t\thtml = '
';\r\n\t\t\t} else {\r\n\t\t\t\t//html = '
  ' + (options.message ? options.message : 'LOADING...') + '
';\r\n\t\t\t\thtml = '
';\r\n\t\t\t}\r\n\r\n\t\t\tif (options.target) { // element blocking\r\n\t\t\t\tvar el = $(options.target);\r\n\t\t\t\tif (el.height() <= ($(window).height())) {\r\n\t\t\t\t\toptions.cenrerY = true;\r\n\t\t\t\t}\r\n\t\t\t\tel.block({\r\n\t\t\t\t\tmessage: html,\r\n\t\t\t\t\tbaseZ: options.zIndex ? options.zIndex : 1010,\r\n\t\t\t\t\tcenterY: options.cenrerY !== undefined ? options.cenrerY : false,\r\n\t\t\t\t\tcss: {\r\n\t\t\t\t\t\ttop: '10%',\r\n\t\t\t\t\t\tborder: '0',\r\n\t\t\t\t\t\tpadding: '0',\r\n\t\t\t\t\t\tbackgroundColor: 'none'\r\n\t\t\t\t\t},\r\n\t\t\t\t\toverlayCSS: {\r\n\t\t\t\t\t\tbackgroundColor: options.overlayColor ? options.overlayColor : '#555',\r\n\t\t\t\t\t\topacity: options.boxed ? 0.05 : 0.1,\r\n\t\t\t\t\t\tcursor: 'wait'\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else { // page blocking\r\n\t\t\t\t$.blockUI({\r\n\t\t\t\t\tmessage: html,\r\n\t\t\t\t\tbaseZ: options.zIndex ? options.zIndex : 1010,\r\n\t\t\t\t\tcss: {\r\n\t\t\t\t\t\tborder: '0',\r\n\t\t\t\t\t\tpadding: '0',\r\n\t\t\t\t\t\tbackgroundColor: 'none'\r\n\t\t\t\t\t},\r\n\t\t\t\t\toverlayCSS: {\r\n\t\t\t\t\t\tbackgroundColor: options.overlayColor ? options.overlayColor : '#555',\r\n\t\t\t\t\t\topacity: options.boxed ? 0.05 : 0.1,\r\n\t\t\t\t\t\tcursor: 'wait'\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// wrMetronicer function to un-block element(finish loading)\r\n\t\tMetronic.unblockUI = function (target) {\r\n\t\t\tif (target) {\r\n\t\t\t\t$(target).unblock({\r\n\t\t\t\t\tonUnblock: function () {\r\n\t\t\t\t\t\t$(target).css('position', '');\r\n\t\t\t\t\t\t$(target).css('zoom', '');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t$.unblockUI();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tMetronic.startPageLoading = function (options) {\r\n\t\t\tif (options && options.animate) {\r\n\t\t\t\t$('.page-spinner-bar').remove();\r\n\t\t\t\t$('body').append('
');\r\n\t\t\t} else {\r\n\t\t\t\t$('.page-loading').remove();\r\n\t\t\t\t$('body').append('
  ' + (options && options.message ? options.message : 'Loading...') + '
');\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tMetronic.stopPageLoading = function () {\r\n\t\t\t$('.page-loading, .page-spinner-bar').remove();\r\n\t\t};\r\n\r\n\t\tMetronic.alert = function (options) {\r\n\r\n\t\t\toptions = $.extend(true, {\r\n\t\t\t\tcontainer: \"\", // alerts parent container(by default placed after the page breadcrumbs)\r\n\t\t\t\tplace: \"append\", // \"append\" or \"prepend\" in container \r\n\t\t\t\ttype: 'success', // alert's type\r\n\t\t\t\tmessage: \"\", // alert's message\r\n\t\t\t\tclose: true, // make alert closable\r\n\t\t\t\treset: true, // close all previouse alerts first\r\n\t\t\t\tfocus: true, // auto scroll to the alert after shown\r\n\t\t\t\tcloseInSeconds: 0, // auto close after defined seconds\r\n\t\t\t\ticon: \"\" // put icon before the message\r\n\t\t\t}, options);\r\n\r\n\t\t\tvar id = Metronic.getUniqueID(\"Metronic_alert\");\r\n\r\n\t\t\tvar html = '
' + (options.close ? '' : '') + (options.icon !== \"\" ? ' ' : '') + options.message + '
';\r\n\r\n\t\t\tif (options.reset) {\r\n\t\t\t\t$('.Metronic-alerts').remove();\r\n\t\t\t}\r\n\r\n\t\t\tif (!options.container) {\r\n\t\t\t\tif ($('body').hasClass(\"page-container-bg-solid\")) {\r\n\t\t\t\t\t$('.page-title').after(html);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ($('.page-bar').length > 0) {\r\n\t\t\t\t\t\t$('.page-bar').after(html);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$('.page-breadcrumb').after(html);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (options.place == \"append\") {\r\n\t\t\t\t\t$(options.container).append(html);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(options.container).prepend(html);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (options.focus) {\r\n\t\t\t\tMetronic.scrollTo($('#' + id));\r\n\t\t\t}\r\n\r\n\t\t\tif (options.closeInSeconds > 0) {\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t$('#' + id).remove();\r\n\t\t\t\t}, options.closeInSeconds * 1000);\r\n\t\t\t}\r\n\r\n\t\t\treturn id;\r\n\t\t};\r\n\r\n\t\t// initializes uniform elements\r\n\t\tMetronic.initUniform = function (els) {\r\n\t\t\tif (els) {\r\n\t\t\t\t$(els).each(function () {\r\n\t\t\t\t\tif ($(this).parents(\".checker\").length === 0) {\r\n\t\t\t\t\t\t$(this).show();\r\n\t\t\t\t\t\t$(this).uniform();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\thandleUniform();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//wrMetronicer function to update/sync jquery uniform checkbox & radios\r\n\t\tMetronic.updateUniform = function (els) {\r\n\t\t\t$.uniform.update(els); // update the uniform checkbox & radios UI after the actual input control state changed\r\n\t\t};\r\n\r\n\t\t//public function to initialize the fancybox plugin\r\n\t\tMetronic.initFancybox = function () {\r\n\t\t\thandleFancybox();\r\n\t\t};\r\n\r\n\t\t//public helper function to get actual input value(used in IE9 and IE8 due to placeholder attribute not supported)\r\n\t\tMetronic.getActualVal = function (el) {\r\n\t\t\tel = $(el);\r\n\t\t\tif (el.val() === el.attr(\"placeholder\")) {\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t\treturn el.val();\r\n\t\t};\r\n\r\n\t\t//public function to get a paremeter by name from URL\r\n\t\tMetronic.getURLParameter = function (paramName) {\r\n\t\t\tvar searchString = window.location.search.substring(1),\r\n\t\t\t\ti, val, params = searchString.split(\"&\");\r\n\r\n\t\t\tfor (i = 0; i < params.length; i++) {\r\n\t\t\t\tval = params[i].split(\"=\");\r\n\t\t\t\tif (val[0] == paramName) {\r\n\t\t\t\t\treturn unescape(val[1]);\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\t// check for device touch support\r\n\t\tMetronic.isTouchDevice = function () {\r\n\t\t\ttry {\r\n\t\t\t\tdocument.createEvent(\"TouchEvent\");\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\r\n\t\t// To get the correct viewport width based on http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/\r\n\t\tMetronic.getViewPort = function () {\r\n\t\t\tvar e = window,\r\n\t\t\t\ta = 'inner';\r\n\t\t\tif (!('innerWidth' in window)) {\r\n\t\t\t\ta = 'client';\r\n\t\t\t\te = document.documentElement || document.body;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\twidth: e[a + 'Width'],\r\n\t\t\t\theight: e[a + 'Height']\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tMetronic.getUniqueID = function (prefix) {\r\n\t\t\treturn 'prefix_' + Math.floor(Math.random() * (new Date()).getTime());\r\n\t\t};\r\n\r\n\t\t// check IE8 mode\r\n\t\tMetronic.isIE8 = function () {\r\n\t\t\treturn isIE8;\r\n\t\t};\r\n\r\n\t\t// check IE9 mode\r\n\t\tMetronic.isIE9 = function () {\r\n\t\t\treturn isIE9;\r\n\t\t};\r\n\r\n\t\t//check RTL mode\r\n\t\tMetronic.isRTL = function () {\r\n\t\t\treturn isRTL;\r\n\t\t};\r\n\r\n\t\t// check IE8 mode\r\n\t\tMetronic.isAngularJsApp = function () {\r\n\t\t\treturn (typeof angular == 'undefined') ? false : true;\r\n\t\t};\r\n\r\n\t\tMetronic.getAssetsPath = function () {\r\n\t\t\treturn assetsPath;\r\n\t\t};\r\n\r\n\t\tMetronic.setAssetsPath = function (path) {\r\n\t\t\tassetsPath = path;\r\n\t\t};\r\n\r\n\t\tMetronic.setGlobalImgPath = function (path) {\r\n\t\t\tglobalImgPath = path;\r\n\t\t};\r\n\r\n\t\tMetronic.getGlobalImgPath = function () {\r\n\t\t\treturn assetsPath + globalImgPath;\r\n\t\t};\r\n\r\n\t\tMetronic.setGlobalPluginsPath = function (path) {\r\n\t\t\tglobalPluginsPath = path;\r\n\t\t};\r\n\r\n\t\tMetronic.getGlobalPluginsPath = function () {\r\n\t\t\treturn assetsPath + globalPluginsPath;\r\n\t\t};\r\n\r\n\t\tMetronic.getGlobalCssPath = function () {\r\n\t\t\treturn assetsPath + globalCssPath;\r\n\t\t};\r\n\r\n\t\t// get layout color code by color name\r\n\t\tMetronic.getBrandColor = function (name) {\r\n\t\t\tif (brandColors[name]) {\r\n\t\t\t\treturn brandColors[name];\r\n\t\t\t} else {\r\n\t\t\t\treturn '';\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tMetronic.getResponsiveBreakpoint = function (size) {\r\n\t\t\t// bootstrap responsive breakpoints\r\n\t\t\tvar sizes = {\r\n\t\t\t\t'xs': 480, // extra small\r\n\t\t\t\t'sm': 768, // small\r\n\t\t\t\t'md': 992, // medium\r\n\t\t\t\t'lg': 1200 // large\r\n\t\t\t};\r\n\r\n\t\t\treturn sizes[size] ? sizes[size] : 0;\r\n\t\t}\r\n\r\n\t\treturn Metronic;\r\n\t})();\r\n\texports.Metronic = Metronic;\r\n});","/**\r\nCore script to handle the entire theme and core functions\r\n**/\r\ndefine([\"require\", \"exports\", \"jquery\", \"metronic\"], function (require, exports, $, metronic) {\r\n var Metronic = metronic.Metronic;\r\n var QuickSidebar = (function () {\r\n function QuickSidebar() { }\r\n // Handles quick sidebar toggler\r\n var handleQuickSidebarToggler = function () {\r\n // quick sidebar toggler\r\n $('.top-menu .dropdown-quick-sidebar-toggler a, .page-quick-sidebar-toggler').click(function (e) {\r\n $('body').toggleClass('page-quick-sidebar-open');\r\n });\r\n };\r\n\r\n // Handles quick sidebar chats\r\n var handleQuickSidebarChat = function () {\r\n var wrapper = $('.page-quick-sidebar-wrapper');\r\n var wrapperChat = wrapper.find('.page-quick-sidebar-chat');\r\n\r\n var initChatSlimScroll = function () {\r\n var chatUsers = wrapper.find('.page-quick-sidebar-chat-users');\r\n var chatUsersHeight;\r\n\r\n chatUsersHeight = wrapper.height() - wrapper.find('.nav-justified > .nav-tabs').outerHeight();\r\n\r\n // chat user list \r\n Metronic.destroySlimScroll(chatUsers);\r\n chatUsers.attr(\"data-height\", chatUsersHeight);\r\n Metronic.initSlimScroll(chatUsers);\r\n\r\n var chatMessages = wrapperChat.find('.page-quick-sidebar-chat-user-messages');\r\n var chatMessagesHeight = chatUsersHeight - wrapperChat.find('.page-quick-sidebar-chat-user-form').outerHeight() - wrapperChat.find('.page-quick-sidebar-nav').outerHeight();\r\n\r\n // user chat messages \r\n Metronic.destroySlimScroll(chatMessages);\r\n chatMessages.attr(\"data-height\", chatMessagesHeight);\r\n Metronic.initSlimScroll(chatMessages);\r\n };\r\n\r\n initChatSlimScroll();\r\n Metronic.addResizeHandler(initChatSlimScroll); // reinitialize on window resize\r\n\r\n wrapper.find('.page-quick-sidebar-chat-users .media-list > .media').click(function () {\r\n wrapperChat.addClass(\"page-quick-sidebar-content-item-shown\");\r\n });\r\n\r\n wrapper.find('.page-quick-sidebar-chat-user .page-quick-sidebar-back-to-list').click(function () {\r\n wrapperChat.removeClass(\"page-quick-sidebar-content-item-shown\");\r\n });\r\n\r\n var handleChatMessagePost = function (e) {\r\n e.preventDefault();\r\n\r\n var chatContainer = wrapperChat.find(\".page-quick-sidebar-chat-user-messages\");\r\n var input = wrapperChat.find('.page-quick-sidebar-chat-user-form .form-control');\r\n\r\n var text = input.val();\r\n if (text.length === 0) {\r\n return;\r\n }\r\n\r\n var preparePost = function (dir, time, name, avatar, message) {\r\n var tpl = '';\r\n tpl += '
';\r\n tpl += '\"\"';\r\n tpl += '
';\r\n tpl += '';\r\n tpl += 'Bob Nilson ';\r\n tpl += '' + time + '';\r\n tpl += '';\r\n tpl += message;\r\n tpl += '';\r\n tpl += '
';\r\n tpl += '
';\r\n\r\n return tpl;\r\n };\r\n\r\n // handle post\r\n var time = new Date();\r\n var message = preparePost('out', (time.getHours() + ':' + time.getMinutes()), \"Bob Nilson\", 'avatar3', text);\r\n message = $(message);\r\n chatContainer.append(message);\r\n\r\n var getLastPostPos = function () {\r\n var height = 0;\r\n chatContainer.find(\".post\").each(function () {\r\n height = height + $(this).outerHeight();\r\n });\r\n\r\n return height;\r\n };\r\n\r\n chatContainer.slimScroll({\r\n scrollTo: getLastPostPos()\r\n });\r\n\r\n input.val(\"\");\r\n\r\n // simulate reply\r\n setTimeout(function () {\r\n var time = new Date();\r\n var message = preparePost('in', (time.getHours() + ':' + time.getMinutes()), \"Ella Wong\", 'avatar2', 'Lorem ipsum doloriam nibh...');\r\n message = $(message);\r\n chatContainer.append(message);\r\n\r\n chatContainer.slimScroll({\r\n scrollTo: getLastPostPos()\r\n });\r\n }, 3000);\r\n };\r\n\r\n wrapperChat.find('.page-quick-sidebar-chat-user-form .btn').click(handleChatMessagePost);\r\n wrapperChat.find('.page-quick-sidebar-chat-user-form .form-control').keypress(function (e) {\r\n if (e.which == 13) {\r\n handleChatMessagePost(e);\r\n return false;\r\n }\r\n });\r\n };\r\n\r\n // Handles quick sidebar tasks\r\n var handleQuickSidebarAlerts = function () {\r\n var wrapper = $('.page-quick-sidebar-wrapper');\r\n var wrapperAlerts = wrapper.find('.page-quick-sidebar-alerts');\r\n\r\n var initAlertsSlimScroll = function () {\r\n var alertList = wrapper.find('.page-quick-sidebar-alerts-list');\r\n var alertListHeight;\r\n\r\n alertListHeight = wrapper.height() - wrapper.find('.nav-justified > .nav-tabs').outerHeight();\r\n\r\n // alerts list \r\n Metronic.destroySlimScroll(alertList);\r\n alertList.attr(\"data-height\", alertListHeight);\r\n Metronic.initSlimScroll(alertList);\r\n };\r\n\r\n initAlertsSlimScroll();\r\n Metronic.addResizeHandler(initAlertsSlimScroll); // reinitialize on window resize\r\n };\r\n\r\n // Handles quick sidebar settings\r\n var handleQuickSidebarSettings = function () {\r\n var wrapper = $('.page-quick-sidebar-wrapper');\r\n var wrapperAlerts = wrapper.find('.page-quick-sidebar-settings');\r\n\r\n var initSettingsSlimScroll = function () {\r\n var settingsList = wrapper.find('.page-quick-sidebar-settings-list');\r\n var settingsListHeight;\r\n\r\n settingsListHeight = wrapper.height() - wrapper.find('.nav-justified > .nav-tabs').outerHeight();\r\n\r\n // alerts list \r\n Metronic.destroySlimScroll(settingsList);\r\n settingsList.attr(\"data-height\", settingsListHeight);\r\n Metronic.initSlimScroll(settingsList);\r\n };\r\n\r\n initSettingsSlimScroll();\r\n Metronic.addResizeHandler(initSettingsSlimScroll); // reinitialize on window resize\r\n };\r\n\r\n QuickSidebar.init = function () {\r\n //layout handlers\r\n handleQuickSidebarToggler(); // handles quick sidebar's toggler\r\n handleQuickSidebarChat(); // handles quick sidebar's chats\r\n handleQuickSidebarAlerts(); // handles quick sidebar's alerts\r\n handleQuickSidebarSettings(); // handles quick sidebar's setting\r\n };\r\n return QuickSidebar;\r\n })();\r\n exports.QuickSidebar = QuickSidebar;\r\n})","// Taken from bootstrap-touchspin@4.1.0\r\n// https://github.com/istvan-ujjmeszaros/bootstrap-touchspin/blob/5a0a972677c0ac4adbd231d374a80f7dcce5d3cd/src/jquery.bootstrap-touchspin.js\r\n\r\n(function(factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define(['jquery'], factory);\r\n } else if (typeof module === 'object' && module.exports) {\r\n module.exports = function(root, jQuery) {\r\n if (jQuery === undefined) {\r\n if (typeof window !== 'undefined') {\r\n jQuery = require('jquery');\r\n }\r\n else {\r\n jQuery = require('jquery')(root);\r\n }\r\n }\r\n factory(jQuery);\r\n return jQuery;\r\n };\r\n } else {\r\n factory(jQuery);\r\n }\r\n}(function($) {\r\n 'use strict';\r\n\r\n var _currentSpinnerId = 0;\r\n\r\n function _scopedEventName(name, id) {\r\n return name + '.touchspin_' + id;\r\n }\r\n\r\n function _scopeEventNames(names, id) {\r\n return $.map(names, function(name) {\r\n return _scopedEventName(name, id);\r\n });\r\n }\r\n\r\n $.fn.TouchSpin = function(options) {\r\n\r\n if (options === 'destroy') {\r\n this.each(function() {\r\n var originalinput = $(this),\r\n originalinput_data = originalinput.data();\r\n $(document).off(_scopeEventNames([\r\n 'mouseup',\r\n 'touchend',\r\n 'touchcancel',\r\n 'mousemove',\r\n 'touchmove',\r\n 'scroll',\r\n 'scrollstart'], originalinput_data.spinnerid).join(' '));\r\n });\r\n return;\r\n }\r\n\r\n var defaults = {\r\n min: 0,\r\n max: 100,\r\n initval: '',\r\n replacementval: '',\r\n step: 1,\r\n decimals: 0,\r\n stepinterval: 100,\r\n forcestepdivisibility: 'round', // none | floor | round | ceil\r\n stepintervaldelay: 500,\r\n verticalbuttons: false,\r\n verticalup: '+',\r\n verticaldown: '-',\r\n verticalupclass: '',\r\n verticaldownclass: '',\r\n prefix: '',\r\n postfix: '',\r\n prefix_extraclass: '',\r\n postfix_extraclass: '',\r\n booster: true,\r\n boostat: 10,\r\n maxboostedstep: false,\r\n mousewheel: true,\r\n buttondown_class: 'btn btn-primary',\r\n buttonup_class: 'btn btn-primary',\r\n buttondown_txt: '-',\r\n buttonup_txt: '+',\r\n callback_before_calculation: function(value) {\r\n return value;\r\n },\r\n callback_after_calculation: function(value) {\r\n return value;\r\n }\r\n };\r\n\r\n var attributeMap = {\r\n min: 'min',\r\n max: 'max',\r\n initval: 'init-val',\r\n replacementval: 'replacement-val',\r\n step: 'step',\r\n decimals: 'decimals',\r\n stepinterval: 'step-interval',\r\n verticalbuttons: 'vertical-buttons',\r\n verticalupclass: 'vertical-up-class',\r\n verticaldownclass: 'vertical-down-class',\r\n forcestepdivisibility: 'force-step-divisibility',\r\n stepintervaldelay: 'step-interval-delay',\r\n prefix: 'prefix',\r\n postfix: 'postfix',\r\n prefix_extraclass: 'prefix-extra-class',\r\n postfix_extraclass: 'postfix-extra-class',\r\n booster: 'booster',\r\n boostat: 'boostat',\r\n maxboostedstep: 'max-boosted-step',\r\n mousewheel: 'mouse-wheel',\r\n buttondown_class: 'button-down-class',\r\n buttonup_class: 'button-up-class',\r\n buttondown_txt: 'button-down-txt',\r\n buttonup_txt: 'button-up-txt'\r\n };\r\n\r\n return this.each(function() {\r\n\r\n var settings,\r\n originalinput = $(this),\r\n originalinput_data = originalinput.data(),\r\n container,\r\n elements,\r\n value,\r\n downSpinTimer,\r\n upSpinTimer,\r\n downDelayTimeout,\r\n upDelayTimeout,\r\n spincount = 0,\r\n spinning = false;\r\n\r\n\r\n init();\r\n\r\n\r\n function init() {\r\n if (originalinput.data('alreadyinitialized')) {\r\n return;\r\n }\r\n\r\n originalinput.data('alreadyinitialized', true);\r\n _currentSpinnerId += 1;\r\n originalinput.data('spinnerid', _currentSpinnerId);\r\n\r\n\r\n if (!originalinput.is('input')) {\r\n console.log('Must be an input.');\r\n return;\r\n }\r\n\r\n _initSettings();\r\n _setInitval();\r\n _checkValue();\r\n _buildHtml();\r\n _initElements();\r\n _hideEmptyPrefixPostfix();\r\n _bindEvents();\r\n _bindEventsInterface();\r\n elements.input.css('display', 'block');\r\n }\r\n\r\n function _setInitval() {\r\n if (settings.initval !== '' && originalinput.val() === '') {\r\n originalinput.val(settings.initval);\r\n }\r\n }\r\n\r\n function changeSettings(newsettings) {\r\n _updateSettings(newsettings);\r\n _checkValue();\r\n\r\n var value = elements.input.val();\r\n\r\n if (value !== '') {\r\n value = Number(settings.callback_before_calculation(elements.input.val()));\r\n elements.input.val(settings.callback_after_calculation(value.toFixed(settings.decimals)));\r\n }\r\n }\r\n\r\n function _initSettings() {\r\n settings = $.extend({}, defaults, originalinput_data, _parseAttributes(), options);\r\n }\r\n\r\n function _parseAttributes() {\r\n var data = {};\r\n $.each(attributeMap, function(key, value) {\r\n var attrName = 'bts-' + value + '';\r\n if (originalinput.is('[data-' + attrName + ']')) {\r\n data[key] = originalinput.data(attrName);\r\n }\r\n });\r\n return data;\r\n }\r\n\r\n function _updateSettings(newsettings) {\r\n settings = $.extend({}, settings, newsettings);\r\n\r\n // Update postfix and prefix texts if those settings were changed.\r\n if (newsettings.postfix) {\r\n originalinput.parent().find('.bootstrap-touchspin-postfix').text(newsettings.postfix);\r\n }\r\n if (newsettings.prefix) {\r\n originalinput.parent().find('.bootstrap-touchspin-prefix').text(newsettings.prefix);\r\n }\r\n }\r\n\r\n function _buildHtml() {\r\n var initval = originalinput.val(),\r\n parentelement = originalinput.parent();\r\n\r\n if (initval !== '') {\r\n initval = settings.callback_after_calculation(Number(initval).toFixed(settings.decimals));\r\n }\r\n\r\n originalinput.data('initvalue', initval).val(initval);\r\n originalinput.addClass('form-control');\r\n\r\n if (parentelement.hasClass('input-group')) {\r\n _advanceInputGroup(parentelement);\r\n }\r\n else {\r\n _buildInputGroup();\r\n }\r\n }\r\n\r\n function _advanceInputGroup(parentelement) {\r\n parentelement.addClass('bootstrap-touchspin');\r\n\r\n var prev = originalinput.prev(),\r\n next = originalinput.next();\r\n\r\n var downhtml,\r\n uphtml,\r\n prefixhtml = '' + settings.prefix + '',\r\n postfixhtml = '' + settings.postfix + '';\r\n\r\n if (prev.hasClass('input-group-btn') || prev.hasClass('input-group-prepend')) {\r\n downhtml = '';\r\n prev.append(downhtml);\r\n }\r\n else {\r\n downhtml = '';\r\n $(downhtml).insertBefore(originalinput);\r\n }\r\n\r\n if (next.hasClass('input-group-btn') || next.hasClass('input-group-append')) {\r\n uphtml = '';\r\n next.prepend(uphtml);\r\n }\r\n else {\r\n uphtml = '';\r\n $(uphtml).insertAfter(originalinput);\r\n }\r\n\r\n $(prefixhtml).insertBefore(originalinput);\r\n $(postfixhtml).insertAfter(originalinput);\r\n\r\n container = parentelement;\r\n }\r\n\r\n function _buildInputGroup() {\r\n var html;\r\n\r\n var inputGroupSize = '';\r\n if (originalinput.hasClass('input-sm')) {\r\n inputGroupSize = 'input-group-sm';\r\n }\r\n\r\n if (originalinput.hasClass('input-lg')) {\r\n inputGroupSize = 'input-group-lg';\r\n }\r\n\r\n if (settings.verticalbuttons) {\r\n html = '
' + settings.prefix + '' + settings.postfix + '
';\r\n }\r\n else {\r\n html = '
' + settings.prefix + '' + settings.postfix + '
';\r\n }\r\n\r\n container = $(html).insertBefore(originalinput);\r\n\r\n $('.bootstrap-touchspin-prefix', container).after(originalinput);\r\n\r\n if (originalinput.hasClass('input-sm')) {\r\n container.addClass('input-group-sm');\r\n }\r\n else if (originalinput.hasClass('input-lg')) {\r\n container.addClass('input-group-lg');\r\n }\r\n }\r\n\r\n function _initElements() {\r\n elements = {\r\n down: $('.bootstrap-touchspin-down', container),\r\n up: $('.bootstrap-touchspin-up', container),\r\n input: $('input', container),\r\n prefix: $('.bootstrap-touchspin-prefix', container).addClass(settings.prefix_extraclass),\r\n postfix: $('.bootstrap-touchspin-postfix', container).addClass(settings.postfix_extraclass)\r\n };\r\n }\r\n\r\n function _hideEmptyPrefixPostfix() {\r\n if (settings.prefix === '') {\r\n elements.prefix.hide();\r\n }\r\n\r\n if (settings.postfix === '') {\r\n elements.postfix.hide();\r\n }\r\n }\r\n\r\n function _bindEvents() {\r\n originalinput.on('keydown', function(ev) {\r\n var code = ev.keyCode || ev.which;\r\n\r\n if (code === 38) {\r\n if (spinning !== 'up') {\r\n upOnce();\r\n startUpSpin();\r\n }\r\n ev.preventDefault();\r\n }\r\n else if (code === 40) {\r\n if (spinning !== 'down') {\r\n downOnce();\r\n startDownSpin();\r\n }\r\n ev.preventDefault();\r\n }\r\n });\r\n\r\n originalinput.on('keyup', function(ev) {\r\n var code = ev.keyCode || ev.which;\r\n\r\n if (code === 38) {\r\n stopSpin();\r\n }\r\n else if (code === 40) {\r\n stopSpin();\r\n }\r\n });\r\n\r\n originalinput.on('blur', function() {\r\n _checkValue();\r\n originalinput.val(settings.callback_after_calculation(originalinput.val()));\r\n });\r\n\r\n elements.down.on('keydown', function(ev) {\r\n var code = ev.keyCode || ev.which;\r\n\r\n if (code === 32 || code === 13) {\r\n if (spinning !== 'down') {\r\n downOnce();\r\n startDownSpin();\r\n }\r\n ev.preventDefault();\r\n }\r\n });\r\n\r\n elements.down.on('keyup', function(ev) {\r\n var code = ev.keyCode || ev.which;\r\n\r\n if (code === 32 || code === 13) {\r\n stopSpin();\r\n }\r\n });\r\n\r\n elements.up.on('keydown', function(ev) {\r\n var code = ev.keyCode || ev.which;\r\n\r\n if (code === 32 || code === 13) {\r\n if (spinning !== 'up') {\r\n upOnce();\r\n startUpSpin();\r\n }\r\n ev.preventDefault();\r\n }\r\n });\r\n\r\n elements.up.on('keyup', function(ev) {\r\n var code = ev.keyCode || ev.which;\r\n\r\n if (code === 32 || code === 13) {\r\n stopSpin();\r\n }\r\n });\r\n\r\n elements.down.on('mousedown.touchspin', function(ev) {\r\n elements.down.off('touchstart.touchspin'); // android 4 workaround\r\n\r\n if (originalinput.is(':disabled')) {\r\n return;\r\n }\r\n\r\n downOnce();\r\n startDownSpin();\r\n\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n });\r\n\r\n elements.down.on('touchstart.touchspin', function(ev) {\r\n elements.down.off('mousedown.touchspin'); // android 4 workaround\r\n\r\n if (originalinput.is(':disabled')) {\r\n return;\r\n }\r\n\r\n downOnce();\r\n startDownSpin();\r\n\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n });\r\n\r\n elements.up.on('mousedown.touchspin', function(ev) {\r\n elements.up.off('touchstart.touchspin'); // android 4 workaround\r\n\r\n if (originalinput.is(':disabled')) {\r\n return;\r\n }\r\n\r\n upOnce();\r\n startUpSpin();\r\n\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n });\r\n\r\n elements.up.on('touchstart.touchspin', function(ev) {\r\n elements.up.off('mousedown.touchspin'); // android 4 workaround\r\n\r\n if (originalinput.is(':disabled')) {\r\n return;\r\n }\r\n\r\n upOnce();\r\n startUpSpin();\r\n\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n });\r\n\r\n elements.up.on('mouseout touchleave touchend touchcancel', function(ev) {\r\n if (!spinning) {\r\n return;\r\n }\r\n\r\n ev.stopPropagation();\r\n stopSpin();\r\n });\r\n\r\n elements.down.on('mouseout touchleave touchend touchcancel', function(ev) {\r\n if (!spinning) {\r\n return;\r\n }\r\n\r\n ev.stopPropagation();\r\n stopSpin();\r\n });\r\n\r\n elements.down.on('mousemove touchmove', function(ev) {\r\n if (!spinning) {\r\n return;\r\n }\r\n\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n });\r\n\r\n elements.up.on('mousemove touchmove', function(ev) {\r\n if (!spinning) {\r\n return;\r\n }\r\n\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n });\r\n\r\n $(document).on(_scopeEventNames(['mouseup', 'touchend', 'touchcancel'], _currentSpinnerId).join(' '), function(ev) {\r\n if (!spinning) {\r\n return;\r\n }\r\n\r\n ev.preventDefault();\r\n stopSpin();\r\n });\r\n\r\n $(document).on(_scopeEventNames(['mousemove', 'touchmove', 'scroll', 'scrollstart'], _currentSpinnerId).join(' '), function(ev) {\r\n if (!spinning) {\r\n return;\r\n }\r\n\r\n ev.preventDefault();\r\n stopSpin();\r\n });\r\n\r\n originalinput.on('mousewheel DOMMouseScroll', function(ev) {\r\n if (!settings.mousewheel || !originalinput.is(':focus')) {\r\n return;\r\n }\r\n\r\n var delta = ev.originalEvent.wheelDelta || -ev.originalEvent.deltaY || -ev.originalEvent.detail;\r\n\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n\r\n if (delta < 0) {\r\n downOnce();\r\n }\r\n else {\r\n upOnce();\r\n }\r\n });\r\n }\r\n\r\n function _bindEventsInterface() {\r\n originalinput.on('touchspin.uponce', function() {\r\n stopSpin();\r\n upOnce();\r\n });\r\n\r\n originalinput.on('touchspin.downonce', function() {\r\n stopSpin();\r\n downOnce();\r\n });\r\n\r\n originalinput.on('touchspin.startupspin', function() {\r\n startUpSpin();\r\n });\r\n\r\n originalinput.on('touchspin.startdownspin', function() {\r\n startDownSpin();\r\n });\r\n\r\n originalinput.on('touchspin.stopspin', function() {\r\n stopSpin();\r\n });\r\n\r\n originalinput.on('touchspin.updatesettings', function(e, newsettings) {\r\n changeSettings(newsettings);\r\n });\r\n }\r\n\r\n function _forcestepdivisibility(value) {\r\n switch (settings.forcestepdivisibility) {\r\n case 'round':\r\n return (Math.round(value / settings.step) * settings.step).toFixed(settings.decimals);\r\n case 'floor':\r\n return (Math.floor(value / settings.step) * settings.step).toFixed(settings.decimals);\r\n case 'ceil':\r\n return (Math.ceil(value / settings.step) * settings.step).toFixed(settings.decimals);\r\n default:\r\n return value;\r\n }\r\n }\r\n\r\n function _checkValue() {\r\n var val, parsedval, returnval;\r\n\r\n val = settings.callback_before_calculation(originalinput.val());\r\n\r\n if (val === '') {\r\n if (settings.replacementval !== '') {\r\n originalinput.val(settings.replacementval);\r\n originalinput.trigger('change');\r\n }\r\n return;\r\n }\r\n\r\n if (settings.decimals > 0 && val === '.') {\r\n return;\r\n }\r\n\r\n parsedval = parseFloat(val);\r\n\r\n if (isNaN(parsedval)) {\r\n if (settings.replacementval !== '') {\r\n parsedval = settings.replacementval;\r\n }\r\n else {\r\n parsedval = 0;\r\n }\r\n }\r\n\r\n returnval = parsedval;\r\n\r\n if (parsedval.toString() !== val) {\r\n returnval = parsedval;\r\n }\r\n\r\n if (parsedval < settings.min) {\r\n returnval = settings.min;\r\n }\r\n\r\n if (parsedval > settings.max) {\r\n returnval = settings.max;\r\n }\r\n\r\n returnval = _forcestepdivisibility(returnval);\r\n\r\n if (Number(val).toString() !== returnval.toString()) {\r\n originalinput.val(returnval);\r\n originalinput.trigger('change');\r\n }\r\n }\r\n\r\n function _getBoostedStep() {\r\n if (!settings.booster) {\r\n return settings.step;\r\n }\r\n else {\r\n var boosted = Math.pow(2, Math.floor(spincount / settings.boostat)) * settings.step;\r\n\r\n if (settings.maxboostedstep) {\r\n if (boosted > settings.maxboostedstep) {\r\n boosted = settings.maxboostedstep;\r\n value = Math.round((value / boosted)) * boosted;\r\n }\r\n }\r\n\r\n return Math.max(settings.step, boosted);\r\n }\r\n }\r\n\r\n function upOnce() {\r\n _checkValue();\r\n\r\n value = parseFloat(settings.callback_before_calculation(elements.input.val()));\r\n if (isNaN(value)) {\r\n value = 0;\r\n }\r\n\r\n var initvalue = value,\r\n boostedstep = _getBoostedStep();\r\n\r\n value = value + boostedstep;\r\n\r\n if (value > settings.max) {\r\n value = settings.max;\r\n originalinput.trigger('touchspin.on.max');\r\n stopSpin();\r\n }\r\n\r\n elements.input.val(settings.callback_after_calculation(Number(value).toFixed(settings.decimals)));\r\n\r\n if (initvalue !== value) {\r\n originalinput.trigger('change');\r\n }\r\n }\r\n\r\n function downOnce() {\r\n _checkValue();\r\n\r\n value = parseFloat(settings.callback_before_calculation(elements.input.val()));\r\n if (isNaN(value)) {\r\n value = 0;\r\n }\r\n\r\n var initvalue = value,\r\n boostedstep = _getBoostedStep();\r\n\r\n value = value - boostedstep;\r\n\r\n if (value < settings.min) {\r\n value = settings.min;\r\n originalinput.trigger('touchspin.on.min');\r\n stopSpin();\r\n }\r\n\r\n elements.input.val(settings.callback_after_calculation(value.toFixed(settings.decimals)));\r\n\r\n if (initvalue !== value) {\r\n originalinput.trigger('change');\r\n }\r\n }\r\n\r\n function startDownSpin() {\r\n stopSpin();\r\n\r\n spincount = 0;\r\n spinning = 'down';\r\n\r\n originalinput.trigger('touchspin.on.startspin');\r\n originalinput.trigger('touchspin.on.startdownspin');\r\n\r\n downDelayTimeout = setTimeout(function() {\r\n downSpinTimer = setInterval(function() {\r\n spincount++;\r\n downOnce();\r\n }, settings.stepinterval);\r\n }, settings.stepintervaldelay);\r\n }\r\n\r\n function startUpSpin() {\r\n stopSpin();\r\n\r\n spincount = 0;\r\n spinning = 'up';\r\n\r\n originalinput.trigger('touchspin.on.startspin');\r\n originalinput.trigger('touchspin.on.startupspin');\r\n\r\n upDelayTimeout = setTimeout(function() {\r\n upSpinTimer = setInterval(function() {\r\n spincount++;\r\n upOnce();\r\n }, settings.stepinterval);\r\n }, settings.stepintervaldelay);\r\n }\r\n\r\n function stopSpin() {\r\n clearTimeout(downDelayTimeout);\r\n clearTimeout(upDelayTimeout);\r\n clearInterval(downSpinTimer);\r\n clearInterval(upSpinTimer);\r\n\r\n switch (spinning) {\r\n case 'up':\r\n originalinput.trigger('touchspin.on.stopupspin');\r\n originalinput.trigger('touchspin.on.stopspin');\r\n break;\r\n case 'down':\r\n originalinput.trigger('touchspin.on.stopdownspin');\r\n originalinput.trigger('touchspin.on.stopspin');\r\n break;\r\n }\r\n\r\n spincount = 0;\r\n spinning = false;\r\n }\r\n\r\n });\r\n\r\n };\r\n\r\n}));","import * as ko from 'knockout';\r\n\r\nimport 'prism';\r\n\r\nconst Prism = (window).Prism;\r\n\r\nexport class PrismExtension {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.prism = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\telement.innerHTML = Prism.highlight(valueAccessor(), Prism.languages.sql);\r\n\t\t\t},\r\n\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\telement.innerHTML = Prism.highlight(valueAccessor(), Prism.languages.sql);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import * as $ from \"jquery\";\r\nimport * as moment from 'moment';\r\nimport * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\nimport * as stringTemplateEngine from \"stringTemplateEngine\";\r\nimport { KnockoutExtenions } from \"Core/KnockoutExtentions/Extentions\";\r\nimport 'jqueryMigrate-3.4.1';\r\n\r\nimport 'libs/dom-to-image';\r\nimport 'pubsub';\r\nimport 'bootstrap';\r\nimport 'jqueryUi';\r\nimport 'touch-punch';\r\nimport 'lockr';\r\nimport 'history';\r\nimport 'lockr';\r\nimport 'progressivefilter';\r\nimport 'xEditable';\r\nimport 'TouchSpinExtension';\r\nimport 'TouchSpinDecimalExtension';\r\nimport 'PercentageExtantion';\r\nimport 'BootstrapDateTimeExtension';\r\nimport 'BootstrapTimeExtension';\r\nimport 'TinyMceExtension';\r\nimport \"select2\";\r\n\r\n(()=>{\r\n ($ as any).UNSAFE_restoreLegacyHtmlPrefilter();\r\n ($ as any).migrateMute = true;\r\n ko.setTemplateEngine(stringTemplateEngine.StringTemplateEngine);\r\n KnockoutExtenions.Init(); \r\n})();\r\n\r\nexport {\r\n $,\r\n _,\r\n ko,\r\n moment,\r\n stringTemplateEngine,\r\n KnockoutExtenions\r\n}","import * as ko from 'knockout';\r\n\r\nexport class SecurityProfileModel {\r\n\tMain: KnockoutObservable;\r\n\r\n\tconstructor(public Id: number, public Name: string, main: boolean, public Image: string) {\r\n\t\tthis.Main = ko.observable(main);\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport 'pubsub';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport {SecurityProfileStore} from \"Core/Common/Security/SecurityProfile/Stores/SecurityProfileStore\";\r\n\r\nimport {SecurityProfileResponseModel} from \"Core/Common/Security/SecurityProfile/Stores/Models/SecurityProfileResponseModel\";\r\n\r\nimport {SecurityProfileModel} from \"MenuManager/SecurityProfileMenu/Models/SecurityProfileModel\";\r\n\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport Template from 'MenuManager/SecurityProfileMenu/Templates/SecurityProfileMenu.html';\r\n\r\nexport class SecurityProfileMenu extends Event {\r\n private _profiles: KnockoutObservableArray;\r\n private _selectedProfile: KnockoutObservable;\r\n\r\n private _target: HTMLElement;\r\n\r\n IsAuthenticated: KnockoutObservable;\r\n\r\n constructor(isAuthenticated: boolean) {\r\n super();\r\n\r\n this._profiles = ko.observableArray([]);\r\n this._selectedProfile = ko.observable(null);\r\n\r\n this.IsAuthenticated = ko.observable(isAuthenticated);\r\n this.IsAuthenticated.subscribe(isAuthenticated => isAuthenticated && this.LoadProfiles());\r\n\r\n if (this.IsAuthenticated()) {\r\n this.LoadProfiles();\r\n }\r\n\r\n if (isAuthenticated) {\r\n PubSub.subscribe(PUB_SUB_EVENTS.REFRESH_SECURITY_PROFILE, () => {\r\n this.RefreshUI();\r\n });\r\n }\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Render(targetId: string) {\r\n this._target = document.getElementById(targetId);\r\n if (this._target) {\r\n ko.cleanNode(this._target);\r\n ko.applyBindings(this, this._target);\r\n }\r\n }\r\n\r\n private LoadProfiles() {\r\n BlockUI.Block({\r\n Target: this._target\r\n });\r\n\r\n SecurityProfileStore.LoadProfiles()\r\n .then(profiles => this.SaveProfiles(this.MapToProfiles(profiles)))\r\n .fail(error => new Notifier(error.message))\r\n .always(() => BlockUI.Unblock(this._target));\r\n }\r\n\r\n private MapToProfiles(profilesResponse: SecurityProfileResponseModel[]) {\r\n return profilesResponse.map(profile => new SecurityProfileModel(profile.Id, profile.Name, profile.Main, profile.Image));\r\n }\r\n\r\n private SaveProfiles(profiles: SecurityProfileModel[]) {\r\n this._profiles(profiles);\r\n\r\n const selectedProfile = _.find(profiles, profile => profile.Main());\r\n this._selectedProfile(selectedProfile);\r\n\r\n this.Trigger('CHANGE_LOGO_IMAGE', {ProfileImage: selectedProfile.Image});\r\n }\r\n\r\n private SelectProfile(profile: SecurityProfileModel) {\r\n if (profile.Main()) {\r\n return;\r\n }\r\n\r\n BlockUI.Block({\r\n Target: this._target\r\n });\r\n\r\n SecurityProfileStore.SelectMainProfile(profile.Id)\r\n .then(() => this.RefreshUI())\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock(this._target));\r\n }\r\n\r\n private RefreshUI() {\r\n this.LoadProfiles();\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.CLOSE_POPUPS, null);\r\n PubSub.publish(PUB_SUB_EVENTS.REFRESH_MAIN_MENU, null);\r\n }\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","export class LanguageModel {\r\n constructor(public Id: number, public Name: string, public ShortName: string, public Flag: string) {\r\n\r\n }\r\n}","import {deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\n\r\nexport class SwitchLanguageResult {\r\n @deserializeAs('access_token')\r\n AccessToken: string;\r\n\r\n @deserializeAs('refresh_token')\r\n RefreshToken: string;\r\n\r\n static Deserialize(obj): SwitchLanguageResult {\r\n return GenericDeserialize(obj, SwitchLanguageResult);\r\n }\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {IRequestOptions, Request} from \"Core/Common/Request\";\r\n\r\nimport {SwitchLanguageModel} from '../Models/SwitchLanguageModel';\r\nimport {SwitchLanguageResult} from '../Models/SwitchLanguageResult';\r\n\r\nexport class LanguageSwitcherStore {\r\n static ChangeLanguage(model: SwitchLanguageModel): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/AuthApi/RefreshToken',\r\n type: 'POST',\r\n dataType: 'json'\r\n }, params: model\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n deferredResult.resolve(SwitchLanguageResult.Deserialize(data))\r\n })\r\n .fail(err => {\r\n deferredResult.reject(this.GetError(err))\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n private static GetError(error: P.Rejection): P.Rejection {\r\n const errorResult = JSON.parse(error.message);\r\n return {message: errorResult.error};\r\n }\r\n}","export class SwitchLanguageModel {\r\n AccessToken: string;\r\n DatabaseName: string;\r\n Language: string;\r\n}","import * as ko from 'knockout';\r\n\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\n\r\nimport {LanguageModel} from \"./Models/LanguageModel\";\r\nimport {UserManager} from \"../../User/UserManager\";\r\nimport {CookieManager} from \"../../Core/Common/CookieManager\";\r\nimport {LanguageSwitcherStore} from \"./Stores/LanguageSwitcherStore\";\r\n\r\nimport Template from './Templates/Template.html';\r\nimport {SwitchLanguageModel} from './Models/SwitchLanguageModel';\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {Notifier} from '../../Core/Common/Notifier';\r\n\r\nexport class LanguageMenu {\r\n IsAuthenticated: KnockoutObservable;\r\n private _languages: LanguageModel[];\r\n private _language: LanguageModel;\r\n private _databaseName: string;\r\n\r\n constructor() {\r\n this._languages = TranslationManager.Instance.Languages\r\n .filter(language => language.IsDefault !== true)\r\n .map(language => new LanguageModel(language.Id, language.Name, language.ShortName, language.Flag));\r\n\r\n this._language = TranslationManager.Instance.GetCurrentLanguage();\r\n this._databaseName = UserManager.Instance.CurrentUser.DbName;\r\n this.IsAuthenticated = ko.observable(UserManager.Instance.IsAuthenticated);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n SelectLanguage(language: LanguageModel) {\r\n if (this._language.ShortName !== language.ShortName) {\r\n\t\t\tthis._language = language;\r\n\t\t\tthis.SaveLanguage();\r\n\r\n LanguageSwitcherStore.ChangeLanguage(this.BuildSwitchLanguageModel())\r\n .then(result => {\r\n CookieManager.SetAuthToken(result.AccessToken);\r\n CookieManager.SetRefreshToken(result.RefreshToken);\r\n\r\n window.location.reload();\r\n })\r\n .fail(err => {\r\n\t new Notifier().Failed(err.message);\r\n });\r\n }\r\n }\r\n\r\n\tSaveLanguage() {\r\n\t\tvar language = Lockr.get(LOCAL_STORAGE.LANGUAGE);\r\n\t\tif (language) {\r\n\t\t\ttry {\r\n\t\t\t\tlanguage = JSON.parse(language);\r\n\t\t\t} catch (err) {\r\n\t\t\t\tlanguage = {};\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlanguage = {};\r\n\t\t}\r\n\r\n\t\tlanguage[this._databaseName] = this._language.ShortName;\r\n\t\tLockr.set(LOCAL_STORAGE.LANGUAGE, JSON.stringify(language));\r\n\t}\r\n\r\n Render(targetId: string) {\r\n const element = document.getElementById(targetId);\r\n\r\n ko.cleanNode(element);\r\n ko.applyBindings(this, element);\r\n }\r\n\r\n private BuildSwitchLanguageModel() {\r\n const model = new SwitchLanguageModel();\r\n\r\n model.AccessToken = CookieManager.GetAuthToken();\r\n model.DatabaseName = this._databaseName;\r\n model.Language = this._language.ShortName;\r\n\r\n return model;\r\n }\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport Template from './Templates/Template.html';\r\n\r\nexport class MainMenuButton {\r\n IsAuthenticated: KnockoutObservable;\r\n\r\n constructor(isAuthenticated: boolean) {\r\n this.IsAuthenticated = ko.observable(isAuthenticated);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Render(targetId: string) {\r\n const element = document.getElementById(targetId);\r\n\r\n ko.cleanNode(element);\r\n ko.applyBindings(this, element);\r\n }\r\n}","// Module\nvar code = \"
\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport Template from './Templates/Template.html';\r\n\r\nexport class MainMenuButtonResponsive {\r\n IsAuthenticated: KnockoutObservable;\r\n\r\n constructor(isAuthenticated: boolean) {\r\n this.IsAuthenticated = ko.observable(isAuthenticated);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Render(targetId: string) {\r\n const element = document.getElementById(targetId);\r\n\r\n ko.cleanNode(element);\r\n ko.applyBindings(this, element);\r\n }\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { Event } from 'Core/Common/Event';\r\n\r\nimport { UserManager } from 'User/UserManager';\r\nimport { UserModel } from \"User/Store/Models/UserModel\";\r\n\r\nimport HeaderTemplate from 'MenuManager/Header/Templates/Header.html';\r\nimport { Brand } from '../../Core/Common/Brand';\r\nko.templates['MenuManager/Header/Templates/Header'] = HeaderTemplate;\r\n\r\nexport class Header extends Event {\r\n\tprivate _user: KnockoutObservable;\r\n\tprivate _dbName: KnockoutObservable;\r\n\tIsAuthenticated: KnockoutObservable;\r\n\tLogoImage: KnockoutObservable;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis._user = ko.observable(null);\r\n\t\tthis._dbName = ko.observable('');\r\n\t\tthis.IsAuthenticated = ko.observable(false);\r\n\t\tthis.LogoImage = ko.observable(null);\r\n\t\tthis.BindEvents();\r\n\t}\r\n\r\n\tRender(target: string) {\r\n\t\tconst container = document.getElementById(target);\r\n\t\tif (container) {\r\n\t\t\tko.cleanNode(container);\r\n\t\t\tko.applyBindings(this, container);\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'MenuManager/Header/Templates/Header';\r\n\t}\r\n\r\n\tNavigateToHomePage() {\r\n\t\tthis.Trigger('NAVIGATE_TO_HOME_PAGE');\r\n\t}\r\n\r\n\tChangeLogoImage(profileImage: string) {\r\n\t\tthis.LogoImage(profileImage || (this._user() && this._user().LicenseImage));\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\t\tthis.IsAuthenticated.subscribe(isAuthenticated => this.OnSessionChanged(isAuthenticated));\r\n\t}\r\n\r\n\tprivate OnSessionChanged(isAuthenticated: boolean) {\r\n\t\tif (isAuthenticated) {\r\n\t\t\tthis.RefreshUser();\r\n\t\t} else {\r\n\t\t\tthis._user(null);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate RefreshUser() {\r\n\t\tthis._user(UserManager.Instance.CurrentUser);\r\n\t\tthis._user() && this._dbName(this._user().DbName);\r\n\t}\r\n\r\n\tget LogoUrl(){\r\n\t\treturn `../../../../img/Custom/App/${Brand.Name}/official-main-logo-header.jpg`;\r\n\t}\r\n}","// Module\nvar code = \" (Remote) \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {EventArgs} from \"Core/Common/Event\";\r\nimport {UserManager} from \"User/UserManager\";\r\n\r\nimport {TimerStore} from \"Core/Controls/Timer/Stores/TimerStore\";\r\nimport {ActiveTimersModal} from \"Core/Controls/Timer/ActiveTimersModal/ActiveTimersModal\";\r\n\r\nimport {IActiveTimer, TimerModel} from \"Core/Controls/Timer/Models/TimerModel\";\r\n\r\nimport Template from \"./Templates/Template.html\";\r\n\r\nexport class TimersMenu {\r\n IsAuthenticated: KnockoutObservable;\r\n IsActiveTimers: KnockoutComputed\r\n private _activeTimers: KnockoutObservableArray;\r\n private _el: HTMLElement;\r\n\r\n constructor() {\r\n this._el = null;\r\n this.IsAuthenticated = ko.observable(UserManager.Instance.IsAuthenticated);\r\n this._activeTimers = ko.observableArray([]);\r\n this.GetActiveTimers();\r\n\r\n this.BindEvents();\r\n }\r\n\r\n private BindEvents() {\r\n const self = this;\r\n\r\n this.IsActiveTimers = ko.computed(()=> this._activeTimers().length > 0, this);\r\n\r\n PubSub.subscribe('STOP_ACTIVE_TIMERS',(message, timers: Array) =>{\r\n const idToDelete = timers[0].Id;\r\n const indexToDelete = self._activeTimers().findIndex((item) => item.Id === idToDelete);\r\n if (indexToDelete !== -1) {\r\n self._activeTimers.splice(indexToDelete, 1);\r\n }\r\n })\r\n\r\n PubSub.subscribe('START_ACTIVE_TIMER', (message, data: Array) => {\r\n const ids = new Set(self._activeTimers().map(timer => timer.Id));\r\n self._activeTimers.splice(Infinity, 0,\r\n ...data.filter(timer => !ids.has(timer.Id))\r\n );\r\n })\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n OpenTimers(){\r\n const activeTimersModal = new ActiveTimersModal();\r\n activeTimersModal.On('STOP_TIMER', this, (data: EventArgs)=>{\r\n const stopTimers: Array = data.data;\r\n PubSub.publish('STOP_ACTIVE_TIMERS', stopTimers);\r\n })\r\n activeTimersModal.Show();\r\n }\r\n\r\n GetActiveTimers(){\r\n TimerStore.GetActiveTimers()\r\n .then((timers: Array) => {\r\n this._activeTimers(\r\n timers.map(timer => {\r\n return {\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n Id: timer.Id,\r\n SubjectName: timer.Subject.TranslatedName || timer.Subject.Name\r\n };\r\n })\r\n );\r\n })\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n if (el){\r\n this._el = el[0].parentElement;\r\n }\r\n }\r\n\r\n Render(targetId: string) {\r\n const element = document.getElementById(targetId);\r\n\r\n ko.cleanNode(element);\r\n ko.applyBindings(this, element);\r\n }\r\n}","// Module\nvar code = \"
\";\n// Exports\nexport default code;","import '../css/application.scss';\r\n\r\nimport {$, moment} from 'Index';\r\n\r\nimport {NetworkMonitor} from 'Core/Common/NetworkMonitor';\r\nimport {MenuManager} from \"MenuManager/MenuManager\";\r\nimport {EventTracker} from \"Core/Common/EventTracker\";\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {UserManager} from \"User/UserManager\";\r\nimport {Metronic} from 'metronic';\r\nimport {Layout} from 'metronicLayout';\r\nimport {QuickSidebar} from 'metronicQuickSidebar';\r\nimport {Demo} from 'metronicDemo';\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {UserMenu} from 'MenuManager/UserMenu/UserMenu'\r\nimport {SecurityProfileMenu} from \"MenuManager/SecurityProfileMenu/SecurityProfileMenu\";\r\nimport {LanguageMenu} from \"./MenuManager/LanguageMenu/LanguageMenu\";\r\nimport {MainMenuButton} from \"./MenuManager/MainMenuButton/MainMenuButton\";\r\nimport {MainMenuButtonResponsive} from \"./MenuManager/MainMenuButtonResponsive/MainMenuButtonResponsive\";\r\nimport {Breadcrumbs} from \"MenuManager/Breadcrumbs/Breadcrumbs\";\r\nimport {EVENTS as USER_MENU_EVENTS} from 'MenuManager/UserMenu/Events';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {CookieManager} from \"Core/Common/CookieManager\";\r\nimport {ScreenShotMaker as ScreenShotMaker} from \"Core/Components/ScreenShot/ScreenShotMaker\";\r\nimport {ReportIssueModal} from \"Core/Components/ReportIssueModal/ReportIssueModal\";\r\nimport {ErrorHolder} from \"Core/ErrorHolder/ErrorHolder\";\r\nimport {Header} from \"MenuManager/Header/Header\";\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\nimport {TranslationManager} from './Core/Components/Translation/TranslationManager';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {SignalRNotificationManager} from \"./Core/Components/SignalR/SignalRNotificationManager\";\r\nimport {CLIPBOARD_IMAGES_TOPIC} from \"Core/Controls/Image/Image\";\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\nimport {TimersMenu} from \"./MenuManager/TimersMenu/TimersMenu\";\r\nimport { LockScreen } from 'LockScreen/LockScreen';\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\nimport { startRecording } from './Session/SessionRecorder';\r\nimport { AssistantApi } from './DatabaseDesigner/Components/Assistant/AssistantApi';\r\nimport { Assistant, AssistantModes } from './DatabaseDesigner/Components/Assistant/Assistant';\r\nimport { LABELS } from './Core/Components/Translation/Locales';\r\nimport { Brand } from './Core/Common/Brand';\r\n\r\nexport class App {\r\n private static _menuManager: MenuManager;\r\n private static _mainMenuTargetId = 'mainMenu';\r\n private static _headerTargetId = 'header';\r\n private static _userMenuTargetId = 'user-menu-container';\r\n private static _securityProfileMenuTargetId = 'security-profile-menu-container';\r\n private static _languageMenuTargetId = 'language-menu-container';\r\n private static _assistantTargetId = 'assistant-btn';\r\n private static _allTimersTargetId = 'allTimers-container';\r\n private static _breadcrumbsTargetId = 'breadcrumbs-container';\r\n private static _mainMenuButtonTargetId = 'menu-toggler-sidebar-toggler';\r\n private static _mainMenuButtonResponsiveTargetId = 'menu-toggler-responsive-toggler';\r\n private static _header: Header;\r\n private static _userMenu: UserMenu;\r\n private static _securityProfileMenu: SecurityProfileMenu;\r\n private static _languageMenu: LanguageMenu;\r\n private static _timersMenu: TimersMenu;\r\n private static _breadcrumbs: Breadcrumbs;\r\n private static _screenShotMaker: ScreenShotMaker;\r\n private static _mainMenuButton: MainMenuButton;\r\n private static _mainMenuButtonResponsive: MainMenuButtonResponsive;\r\n private static _lockScreen: LockScreen;\r\n\r\n static Main() {\r\n \r\n Brand.InitTitle();\r\n\r\n NetworkMonitor.Init();\r\n CookieManager.Init();\r\n\r\n this._menuManager = MenuManager.Instance;\r\n this._menuManager.Bind(App._mainMenuTargetId);\r\n\r\n this.InitHeader(false);\r\n this.InitScreenShotMaker(false);\r\n this.ListenForPrintScreenPress();\r\n this.ListenForErrors();\r\n this.ListenForPasteEvent();\r\n this.InitUserMenu(false);\r\n this.InitSecurityProfileMenu(false);\r\n this.InitMainMenuButton(false);\r\n this.InitMainMenuButtonResponsive(false);\r\n this.HandleUnauthorizeRequest();\r\n this.TrackEvents();\r\n this.HideSidebar();\r\n\r\n const accessToken = CookieManager.GetAuthToken();\r\n const refreshToken = CookieManager.GetRefreshToken();\r\n const sbiDesigner = CookieManager.GetSBIDesigner();\r\n const resetPasswordToken = CookieManager.GetValue('ResetPasswordToken');\r\n\r\n if (resetPasswordToken) {\r\n this.InitMetronic();\r\n this._menuManager.RemoveOverlay();\r\n this._userMenu.ResetPassword();\r\n } else if (accessToken) {\r\n UserManager.Instance.SignIn({\r\n AccessToken: accessToken,\r\n RefreshToken: refreshToken,\r\n RefreshUserVars: false,\r\n SBIDesigner: sbiDesigner\r\n }).then(() => { \r\n TranslationManager.Instance.LoadTranslations()\r\n .then(() => {\r\n TranslationManager.Instance.LoadLanguages()\r\n .then(() => {\r\n GlobalManager.Instance.LoadGlobals()\r\n .then(() => {\r\n\r\n if(UserManager.Instance.CurrentUser.IsLocked){\r\n PubSub.publish('SESSION_LOCKED', null);\r\n return;\r\n }\r\n this.InitLockScreen();\r\n this.ShowSidebar();\r\n this.InitMetronic();\r\n this.InitHeader(true);\r\n this.InitScreenShotMaker(true);\r\n this.InitUserMenu(true);\r\n this.InitSecurityProfileMenu(true);\r\n this.InitMainMenuButton(true);\r\n this.InitMainMenuButtonResponsive(true);\r\n this.IniLanguageMenu();\r\n this.InitAssistant();\r\n this.InitAllTimers();\r\n this.InitBreadcrumbs();\r\n this._menuManager.IsAuthenticated(true);\r\n this.SetTitle(UserManager.Instance.CurrentUser.LicenseName);\r\n UserVarsManager.Instance.UservarsLastSync();\r\n this._menuManager.RefreshMenuAreas(true);\r\n this._menuManager.RefreshStaticMenu();\r\n this.SetMomentlocale(FormatConverter.GetLocale());\r\n\r\n SignalRNotificationManager.Instance.Start();\r\n });\r\n });\r\n });\r\n\r\n }).fail(() => {\r\n this._menuManager.RemoveOverlay();\r\n this._menuManager.ShowGuestHomePage();\r\n })\r\n } else {\r\n this.InitMetronic();\r\n this._menuManager.RemoveOverlay();\r\n this._menuManager.ShowGuestHomePage();\r\n }\r\n\r\n let broadcastChannel = new BroadcastChannel('lock_channel');\r\n broadcastChannel.onmessage = (event) => {\r\n if(event.data == 'lock'){\r\n window.location.reload();\r\n }\r\n };\r\n }\r\n static HandleUnauthorizeRequest() {\r\n PubSub.subscribe('UNAUTHORIZE', (message, data) => {\r\n PubSub.unsubscribe('UNAUTHORIZE');\r\n this._userMenu.Trigger(USER_MENU_EVENTS.SIGN_OUT, {showLoginPopup: true});\r\n });\r\n }\r\n\r\n static InitHeader(isAuthenticated: boolean) {\r\n this._header = new Header();\r\n this._header.On('NAVIGATE_TO_HOME_PAGE', this, () => this._menuManager.NavigateToHomePage());\r\n this._header.Render(App._headerTargetId);\r\n this._header.IsAuthenticated(isAuthenticated);\r\n }\r\n\r\n static SetTitle(title = 'Spheeres.com') {\r\n document.title = title;\r\n }\r\n\r\n static BindUserMenuEvents() {\r\n this._userMenu.On(USER_MENU_EVENTS.SIGN_IN, this, (eventArgs: any) => {\r\n if (eventArgs.data && eventArgs.data.AuthToken) {\r\n this.ShowSidebar();\r\n $('#vieBody').empty();\r\n\r\n const globalManager = GlobalManager.Instance;\r\n BlockUI.Block();\r\n TranslationManager.Instance.LoadTranslations()\r\n .then(() => {\r\n this.SetTitle(UserManager.Instance.CurrentUser.LicenseName);\r\n if (this._screenShotMaker) {\r\n this._screenShotMaker.SetIsAuthenticated(true);\r\n }\r\n TranslationManager.Instance.LoadLanguages()\r\n .then(() => {\r\n globalManager.LoadGlobals()\r\n .then(() => {\r\n SignalRNotificationManager.Instance.Start();\r\n\r\n const menuManager = MenuManager.Instance;\r\n menuManager.IsAuthenticated(true);\r\n menuManager.RefreshMenuAreas();\r\n menuManager.RefreshStaticMenu();\r\n this.InitAssistant();\r\n this.IniLanguageMenu();\r\n this.InitAllTimers();\r\n this.InitBreadcrumbs();\r\n this.SetMomentlocale(FormatConverter.GetLocale());\r\n this._header.IsAuthenticated(true);\r\n this._userMenu.RefreshUser();\r\n this._userMenu.IsAuthenticated(true);\r\n this._securityProfileMenu.IsAuthenticated(true);\r\n this._mainMenuButton.IsAuthenticated(true);\r\n this._mainMenuButtonResponsive.IsAuthenticated(true);\r\n this.HandleUnauthorizeRequest();\r\n UserVarsManager.Instance.UservarsLastSync();\r\n Demo.InitUI();\r\n });\r\n });\r\n }).always(()=> {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n });\r\n\r\n this._userMenu.On(USER_MENU_EVENTS.SIGN_OUT, this, (eventArgs: any) => {\r\n this.HideSidebar();\r\n $('.page-content').addClass('guest');\r\n $('#viewBody').addClass('guest');\r\n $('.page-footer').addClass('guest');\r\n\r\n $('#assistant-container').hide();\r\n\r\n SignalRNotificationManager.Instance.Stop();\r\n const menuManager = MenuManager.Instance;\r\n menuManager.DeleteAreas();\r\n menuManager.ShowGuestHomePage();\r\n menuManager.IsAuthenticated(false);\r\n this._header.IsAuthenticated(false);\r\n this._userMenu.IsAuthenticated(false);\r\n this._securityProfileMenu.IsAuthenticated(false);\r\n this._mainMenuButton.IsAuthenticated(false);\r\n this._mainMenuButtonResponsive.IsAuthenticated(false);\r\n\r\n if (this._languageMenu) {\r\n this._languageMenu.IsAuthenticated(false);\r\n }\r\n\r\n if (this._timersMenu) {\r\n this._timersMenu.IsAuthenticated(false);\r\n }\r\n\r\n if (this._breadcrumbs) {\r\n this._breadcrumbs.IsAuthenticated(false);\r\n }\r\n\r\n UserManager.Instance.SignOut();\r\n UserVarsManager.Instance.SignOut();\r\n this.SetTitle();\r\n\r\n\r\n if (eventArgs) {\r\n if (eventArgs.data.showLoginPopup) {\r\n this._userMenu.SetShowLoginPopup(false);\r\n this._userMenu.Login();\r\n }\r\n }\r\n\r\n if (this._screenShotMaker) {\r\n this._screenShotMaker.SetIsAuthenticated(false);\r\n }\r\n Lockr.rm(LOCAL_STORAGE.FILE_DIR);\r\n\r\n this._menuManager.RemoveOverlay();\r\n });\r\n }\r\n\r\n private static InitUserMenu(isAuthenticated: boolean) {\r\n this._userMenu = new UserMenu();\r\n this._userMenu.Render(App._userMenuTargetId);\r\n this._userMenu.IsAuthenticated(isAuthenticated);\r\n this.BindUserMenuEvents();\r\n }\r\n\r\n private static InitSecurityProfileMenu(isAuthenticated: boolean) {\r\n this._securityProfileMenu = new SecurityProfileMenu(isAuthenticated);\r\n this._securityProfileMenu.On('CHANGE_LOGO_IMAGE', this, (eventArgs) => this._header.ChangeLogoImage(eventArgs.data.ProfileImage));\r\n this._securityProfileMenu.Render(App._securityProfileMenuTargetId);\r\n }\r\n\r\n private static InitAllTimers() {\r\n this._timersMenu = new TimersMenu();\r\n this._timersMenu.Render(App._allTimersTargetId);\r\n }\r\n\r\n private static IniLanguageMenu() {\r\n this._languageMenu = new LanguageMenu();\r\n this._languageMenu.Render(App._languageMenuTargetId);\r\n }\r\n\r\n private static InitAssistant() {\r\n if(UserManager.Instance.CurrentUser.IsShowAIAssistant){\r\n\r\n $(`#${this._assistantTargetId}`).attr('title', LABELS.CLICK_TO_START);\r\n\r\n $('#assistant-container').show();\r\n\r\n $(`#${this._assistantTargetId}`).on('click', ()=>{\r\n let assistant = new Assistant({ mode: AssistantModes.Help});\r\n assistant.Show(); \r\n }); \r\n }\r\n }\r\n\r\n private static InitBreadcrumbs() {\r\n this._breadcrumbs = new Breadcrumbs();\r\n this._breadcrumbs.Render(App._breadcrumbsTargetId);\r\n }\r\n\r\n private static InitMainMenuButton(isAuthenticated: boolean) {\r\n this._mainMenuButton = new MainMenuButton(isAuthenticated);\r\n this._mainMenuButton.Render(App._mainMenuButtonTargetId);\r\n }\r\n\r\n private static InitMainMenuButtonResponsive(isAuthenticated: boolean) {\r\n this._mainMenuButtonResponsive = new MainMenuButtonResponsive(isAuthenticated);\r\n this._mainMenuButtonResponsive.Render(App._mainMenuButtonResponsiveTargetId);\r\n }\r\n\r\n static InitScreenShotMaker(isAuthenticated: boolean) {\r\n // this._screenShotMaker = ScreenShotMaker.Instance;\r\n // this._screenShotMaker.SetIsAuthenticated(isAuthenticated);\r\n }\r\n\r\n static ListenForPrintScreenPress() {\r\n window.addEventListener(\r\n 'keyup',\r\n event => {\r\n if (event.key === 'PrintScreen') {\r\n ReportIssueModal.Open();\r\n }\r\n },\r\n false\r\n );\r\n }\r\n\r\n static ListenForErrors() {\r\n window.addEventListener(\r\n 'error',\r\n event => {\r\n if (event.error) {\r\n ErrorHolder.SaveError(event.error.stack);\r\n }\r\n },\r\n true\r\n );\r\n }\r\n\r\n private static Paste = (event) => {\r\n const images = Array.from(event.clipboardData.files).filter(file => (file as any).type.startsWith('image'));\r\n let isTextType = _.some(Array.from(event.clipboardData.items), item => (item as any).type.startsWith('text'));\r\n\r\n if (!isTextType && images.length > 0 && document.querySelectorAll('.image-control.EditScreenView').length > 0) {\r\n event.stopPropagation();\r\n\r\n PubSub.publish(CLIPBOARD_IMAGES_TOPIC, images);\r\n }\r\n }\r\n\r\n static ListenForPasteEvent() {\r\n document.body.addEventListener('paste', this.Paste,true);\r\n\r\n document.body.addEventListener(\r\n 'keydown',\r\n event => {\r\n if (\r\n event.key === 'Escape' &&\r\n document.querySelectorAll('.image-control.EditScreenView.highlighted').length > 0\r\n ) {\r\n event.stopPropagation();\r\n\r\n PubSub.publish(CLIPBOARD_IMAGES_TOPIC, undefined);\r\n }\r\n },\r\n true\r\n );\r\n }\r\n\r\n static InitMetronic() {\r\n this.InitMobile();\r\n Metronic.init();\r\n Layout.init();\r\n QuickSidebar.init();\r\n Demo.init();\r\n Demo.handleTheme();\r\n Demo.InitUI();\r\n window.dispatchEvent(new Event('resize'));\r\n $(window).on('resize', () => {\r\n $('.queryBuilderDropdown').parent().removeClass('open');\r\n });\r\n $(window).on('scroll', () => {\r\n $('.queryBuilderDropdown').parent().removeClass('open');\r\n });\r\n }\r\n\r\n static HideSidebar() {\r\n $('.page-sidebar').width(0);\r\n }\r\n\r\n static ShowSidebar() {\r\n $('.page-sidebar').attr('style', null);\r\n }\r\n\r\n static InitMobile(){\r\n if (MobileChecker.IsMobile()){\r\n $(document.body).addClass('mobileMode');\r\n }\r\n }\r\n\r\n static TrackEvents() {\r\n EventTracker.Instance.ListenEvents();\r\n }\r\n\r\n\r\n static InitLockScreen(){\r\n setInterval(() => {\r\n let lockScreenHours = parseInt(GlobalManager.Instance.GetGlobalDescriptor(GLOBALS.LOCK_SCREEN_HOURS)?.Value);\r\n\r\n if(lockScreenHours > 0){\r\n const lockDate = Lockr.get(LOCAL_STORAGE.LOCK_DATE);\r\n if(!lockDate){\r\n Lockr.set(LOCAL_STORAGE.LOCK_DATE, new Date().getTime());\r\n return;\r\n }\r\n\r\n var diff = new Date().valueOf() - new Date(lockDate).valueOf();\r\n var diffInHours = diff/1000/60/60;\r\n if(diffInHours >= lockScreenHours){\r\n this._lockScreen?.Close();\r\n this._lockScreen = new LockScreen();\r\n this._lockScreen.Lock();\r\n Lockr.set(LOCAL_STORAGE.LOCK_DATE, new Date().getTime());\r\n }\r\n }\r\n }, 1000);\r\n }\r\n\r\n private static SetMomentlocale(culture: string): void {\r\n moment.locale(culture);\r\n }\r\n}\r\n\r\nApp.Main();\r\n","import * as ko from 'knockout'\r\nimport * as moment from 'moment'\r\nimport * as stringTemplateEngine from 'stringTemplateEngine'\r\n\r\nimport 'knockoutValidation'\r\nimport 'lockr'\r\n\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\n\r\nimport {P} from 'Core/Common/Promise'\r\nimport {CookieManager} from \"Core/Common/CookieManager\";\r\n\r\nimport {PasswordExpiredForm} from 'Auth/UI/PasswordExpiredForm/PasswordExpiredForm'\r\nimport {AuthForm} from 'Auth/UI/AuthForm/AuthForm'\r\nimport {LicenseForm} from 'Auth/UI/LicenseForm/LicenseForm'\r\nimport {LicenseExpiredSoonForm} from 'Auth/UI/LicenseExpiredSoonForm/LicenseExpiredSoonForm'\r\nimport {TwoFaConfigurationForm} from 'Auth/UI/TwoFaConfigurationForm/TwoFaConfigurationForm'\r\nimport { UnreportedTimeForm } from \"Auth/UI/UnreportedTimeForm/UnreportedTimeForm\"\r\nimport {SignInModel} from 'Auth/Models/SignInModel'\r\nimport {UpdatePasswordModel} from 'Auth/Models/UpdatePasswordModel'\r\nimport {SignInResultModel} from 'Auth/Models/SignInResultModel'\r\nimport { UnReportedTimeModel } from \"Auth/Models/UnReportedTimeModel\"\r\n\r\nimport OperationResult from 'Core/Results/ResultModels/OperationResult'\r\nimport {AuthStore} from 'Auth/Stores/AuthStore'\r\nimport {AuthResults} from 'Auth/Enums/AuthResults'\r\nimport {FormTitles} from 'Auth/Enums/FormTitles'\r\nimport {Event} from 'Core/Common/Event'\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager'\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport {Events} from \"Auth/Enums/Events\";\r\nimport {UserManager} from \"User/UserManager\";\r\nimport { ScreenTypes } from \"Core/Common/Enums/ScreenTypes\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {RequestResetPasswordModel} from \"./Models/RequestResetPasswordModel\";\r\nimport {PasswordResetForm} from \"./UI/PasswordResetForm/PasswordResetForm\";\r\nimport {Notifier} from \"../Core/Common/Notifier\";\r\nimport {ResetPasswordModel} from \"./Models/ResetPasswordModel\";\r\nimport { UpdateTotpSecretModel } from './Models/UpdateTotpSecretModel'\r\nimport { TotpPasswordForm } from './UI/TotpPasswordForm/TotpPasswordForm'\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {AgendaDataStore} from \"Core/Controls/Agenda/Stores/AgendaDataStore\";\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\nimport { PasswordLessConfigurationForm } from './UI/PasswordLessConfigurationForm'\r\nimport { WebAuthnStore } from './Stores/WebAuthnStore'\r\nimport { SavePasswordLessCredentialsDto } from './Models/SavePasswordLessCredentialsDto'\r\n\r\nexport class AuthManager extends Event {\r\n private _authForm: AuthForm;\r\n private _passwordResetForm: PasswordResetForm;\r\n private _passwordExpiredForm: PasswordExpiredForm;\r\n private _updatePasswordForm: PasswordExpiredForm;\r\n private _unreportedTimeForm: UnreportedTimeForm;\r\n private _licenseForm: LicenseForm;\r\n private _licenseExpiredSoonForm: LicenseExpiredSoonForm;\r\n private _twoFaConfigurationForm :TwoFaConfigurationForm;\r\n private _totpPasswordForm :TotpPasswordForm;\r\n private _passwordLessConfigurationForm: PasswordLessConfigurationForm;\r\n private _clientId: string;\r\n private _clientSecret: string;\r\n\r\n private _authFormOpened: boolean;\r\n\r\n private _signInModel: SignInModel;\r\n private _resultHandlers: {\r\n [errorMessage: string]: {\r\n Form: AuthForm | PasswordExpiredForm | LicenseForm | TwoFaConfigurationForm | TotpPasswordForm | PasswordLessConfigurationForm,\r\n Handler: (result: SignInResultModel | OperationResult, form: AuthForm | PasswordExpiredForm | LicenseForm | TwoFaConfigurationForm | TotpPasswordForm) => void;\r\n }\r\n };\r\n\r\n constructor() {\r\n super();\r\n\r\n this._authFormOpened = false;\r\n\r\n this.InitKnockout();\r\n this._authForm = new AuthForm();\r\n this._passwordResetForm = new PasswordResetForm();\r\n this._passwordExpiredForm = new PasswordExpiredForm();\r\n this._updatePasswordForm = new PasswordExpiredForm();\r\n this._unreportedTimeForm = new UnreportedTimeForm();\r\n this._licenseForm = new LicenseForm();\r\n this._licenseExpiredSoonForm = new LicenseExpiredSoonForm();\r\n this._twoFaConfigurationForm = new TwoFaConfigurationForm();\r\n this._totpPasswordForm = new TotpPasswordForm();\r\n this._passwordLessConfigurationForm = new PasswordLessConfigurationForm();\r\n\r\n this.BindResultHandlers();\r\n this.BindEvents();\r\n this.AddEvent('SIGN_IN');\r\n }\r\n\r\n private InitKnockout() {\r\n ko.setTemplateEngine(stringTemplateEngine.StringTemplateEngine);\r\n }\r\n\r\n public SignIn(modalWrapper?: HTMLElement) {\r\n BlockUI.Block(modalWrapper ? {Target: modalWrapper} : {});\r\n\r\n if (this._authForm.IsValid()) {\r\n this._authForm.PreventLogin();\r\n this._signInModel = this.BuildSignInModel();\r\n\r\n AuthStore.SignIn(this._signInModel)\r\n .then(signInResult => this.HandleSuccessSignIn(signInResult, modalWrapper))\r\n .fail(err => this.HandleFailedSignIn(SignInResultModel.CreateErrorResult(err.message, err.value), modalWrapper));\r\n } else {\r\n\r\n BlockUI.Unblock(modalWrapper);\r\n\r\n this._authForm.ShowError(NOTIFICATIONS.FORM_INVALID);\r\n }\r\n }\r\n\r\n public RequestResetPassword() {\r\n if (this._authForm.IsValidForPasswordReset()) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.RESET_LINK_SENT.replace('{userName}', this._authForm.GetFormData().UserName()),\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.OK,\r\n TextDecline: LABELS.CANCEL\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n BlockUI.Block();\r\n\r\n const resetPasswordModel = this.BuildRequestResetPasswordModel();\r\n\r\n AuthStore.RequestResetPassword(resetPasswordModel)\r\n .then(result => new Notifier().Success(NOTIFICATIONS.RESET_PASSWORD_SENT))\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock());\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n }\r\n\r\n public SignOut(): P.Promise {\r\n const deferredResult = P.defer();\r\n\r\n const userVarsManager = UserVarsManager.Instance;\r\n const userVars = userVarsManager.GetAll();\r\n\r\n AuthStore.SignOut({UserVariables: userVars})\r\n .then((fileDir) => deferredResult.resolve(fileDir));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n private BindResultHandlers() {\r\n this._resultHandlers = {};\r\n this._resultHandlers[AuthResults.InvalidTotpPassword] = {\r\n Form: this._totpPasswordForm,\r\n Handler: this.ShowForm.bind(this)\r\n };\r\n\r\n this._resultHandlers[AuthResults.TwoFaIsNotConfigured] = {\r\n Form: this._twoFaConfigurationForm,\r\n Handler: this.ShowForm.bind(this)\r\n };\r\n\r\n this._resultHandlers[AuthResults.PasswordLessIsNotConfigured] = {\r\n Form: this._passwordLessConfigurationForm,\r\n Handler: this.ShowForm.bind(this)\r\n };\r\n\r\n this._resultHandlers[AuthResults.PasswordReset] = {\r\n Form: this._updatePasswordForm,\r\n Handler: this.ShowForm.bind(this)\r\n };\r\n this._resultHandlers[AuthResults.PasswordExpired] = {\r\n Form: this._passwordExpiredForm,\r\n Handler: this.ShowForm.bind(this)\r\n };\r\n this._resultHandlers[AuthResults.LicenseNotFound] = {\r\n Form: this._licenseForm,\r\n Handler: this.ShowForm.bind(this)\r\n };\r\n this._resultHandlers[AuthResults.LicenseExpired] = {Form: this._licenseForm, Handler: this.ShowForm.bind(this)};\r\n this._resultHandlers[AuthResults.ErrorFindingLicenses] = {\r\n Form: this._licenseForm,\r\n Handler: this.ShowForm.bind(this)\r\n };\r\n this._resultHandlers[AuthResults.InvalidLicenseParams] = {\r\n Form: this._licenseForm,\r\n Handler: this.ShowForm.bind(this)\r\n };\r\n this._resultHandlers[AuthResults.InvalidLicenseNames] = {\r\n Form: this._licenseForm,\r\n Handler: this.ShowForm.bind(this)\r\n };\r\n this._resultHandlers[AuthResults.InvalidLicense] = {Form: this._licenseForm, Handler: this.ShowForm.bind(this)};\r\n\r\n this._resultHandlers[AuthResults.OnlyOneUserGroupIsAllowed] = {Form: this._licenseForm, Handler: this.ShowForm.bind(this)};\r\n this._resultHandlers[AuthResults.EditLimitIsGreaterThanUserDesignation] = {Form: this._licenseForm, Handler: this.ShowForm.bind(this)};\r\n }\r\n\r\n private BindEvents() {\r\n this._authForm.On(Events.PasswordLessSignIn, this, (eventArgs) => {\r\n this.HandleSuccessSignIn(eventArgs.data.SignInResult);\r\n });\r\n\r\n\r\n this._authForm.On(Events.SignIn, this, (eventArgs) => {\r\n this.SignIn(eventArgs.data.modalWrapper);\r\n });\r\n this._authForm.On(Events.ResetPassword, this, () => this.RequestResetPassword());\r\n\r\n this._passwordResetForm.On(Events.UpdatePassword, this, () => this.ResetPassword());\r\n this._passwordExpiredForm.On(Events.UpdatePassword, this, () => this.UpdateExpiredPassword());\r\n this._updatePasswordForm.On(Events.UpdatePassword, this, () => this.UpdatePassword());\r\n\r\n this._twoFaConfigurationForm.On(Events.SaveTotpSecred, this, () => this.UpdateTwoFaSecret());\r\n\r\n this._passwordLessConfigurationForm.On(Events.SavePasswordLessCredentials, this, () => this.SavePasswordLessCredentials());\r\n\r\n this._totpPasswordForm.On(Events.SignIn, this, () => {\r\n if(this._totpPasswordForm.IsValid()){\r\n this._totpPasswordForm.Close();\r\n this.SignIn();\r\n this._totpPasswordForm.Reset();\r\n }\r\n });\r\n }\r\n\r\n private GetDefaultResultHandler() {\r\n return {Form: this._authForm, Handler: this.SetError.bind(this)};\r\n }\r\n\r\n private HandleSuccessSignIn(signInResult: SignInResultModel, modalWrapper?: HTMLElement) {\r\n UserManager.Instance.SignIn({\r\n AccessToken: signInResult.AuthToken,\r\n RefreshToken: signInResult.RefreshToken,\r\n RefreshUserVars: true,\r\n SBIDesigner: signInResult.SBIDesigner\r\n }).then(() => {\r\n AgendaDataStore.GetUnreportedTime()\r\n .then(result => {\r\n Lockr.set(LOCAL_STORAGE.FILE_DIR, this._authForm.FileDir);\r\n\r\n if (signInResult.LicenseExpiresSoon) {\r\n const expirationDate = moment(signInResult.LicenseExpiresIn).format('dddd, MMMM DD, YYYY');\r\n this._licenseExpiredSoonForm.Load(expirationDate);\r\n this._licenseExpiredSoonForm.One(Events.FormClosed, this, () => {\r\n\r\n if (signInResult.PasswordExpiresSoon) {\r\n this.ShowUpdatePasswordForm(signInResult, result, modalWrapper);\r\n } else if (result && result.Hours > 0) {\r\n this.ShowUnreportedTimeForm(result, signInResult, modalWrapper);\r\n } else {\r\n this.CloseAuthFormAndSignIn(signInResult.AuthToken, signInResult.RefreshToken, signInResult.SBIDesigner, modalWrapper);\r\n }\r\n });\r\n return;\r\n }\r\n\r\n if (signInResult.PasswordExpiresSoon) {\r\n this.ShowUpdatePasswordForm(signInResult, result, modalWrapper);\r\n return;\r\n }\r\n\r\n if(result && result.Hours > 0) {\r\n this.ShowUnreportedTimeForm(result, signInResult, modalWrapper);\r\n return;\r\n }\r\n\r\n this.CloseAuthFormAndSignIn(signInResult.AuthToken, signInResult.RefreshToken, signInResult.SBIDesigner, modalWrapper);\r\n });\r\n });\r\n }\r\n\r\n private HandleFailedSignIn(signInResult: SignInResultModel, modalWrapper?: HTMLElement) {\r\n this._authForm.AllowLogin(modalWrapper);\r\n const resultHandler = this._resultHandlers[signInResult.ErrorCode] || this.GetDefaultResultHandler();\r\n resultHandler.Handler(signInResult, resultHandler.Form);\r\n }\r\n\r\n private CloseAuthFormAndSignIn(accessToken: string, refreshToken: string, sbiDesigner: boolean, modalWrapper?: HTMLElement) {\r\n this.Trigger('SIGN_IN', {AuthToken: accessToken, RefreshToken: refreshToken, SBIDesigner: sbiDesigner});\r\n this._authForm.Close();\r\n\r\n this._authForm.AllowLogin(modalWrapper);\r\n\r\n this._authFormOpened = false;\r\n }\r\n\r\n private ShowUpdatePasswordForm(signInResult: SignInResultModel, unReportedTimeModel: UnReportedTimeModel, modalWrapper?: HTMLElement) {\r\n BlockUI.Unblock(modalWrapper);\r\n\r\n signInResult.ErrorMessage = FormTitles.PasswordExpiresIn(signInResult.PasswordExpiresIn);\r\n this.ShowForm(signInResult, this._updatePasswordForm);\r\n\r\n this._updatePasswordForm.One(Events.FormClosed, this, () => {\r\n if(unReportedTimeModel && unReportedTimeModel.Hours > 0) {\r\n this.ShowUnreportedTimeForm(unReportedTimeModel, signInResult);\r\n }\r\n else {\r\n this.CloseAuthFormAndSignIn(signInResult.AuthToken, signInResult.RefreshToken, signInResult.SBIDesigner);\r\n }\r\n });\r\n }\r\n\r\n private ShowUnreportedTimeForm(unReportedTimeModel: UnReportedTimeModel, signInResult: SignInResultModel, modalWrapper?: HTMLElement) {\r\n BlockUI.Unblock(modalWrapper);\r\n\r\n unReportedTimeModel.ErrorMessage = CONFIRMATIONS.UNREPORTED_TIME\r\n .replace('{X}', `${unReportedTimeModel.Hours}`)\r\n .replace('{Y}', `${unReportedTimeModel.Days}`);\r\n this.ShowUnReportedTimeForm(unReportedTimeModel, this._unreportedTimeForm);\r\n\r\n this._unreportedTimeForm.One(Events.UnreportedTimeFormClosed, this, () => {\r\n this.CloseAuthFormAndSignIn(signInResult.AuthToken, signInResult.RefreshToken, signInResult.SBIDesigner);\r\n });\r\n\r\n this._unreportedTimeForm.One(Events.GoToAgenda, this, () => {\r\n this.GoToAgendaToReportHours(unReportedTimeModel)\r\n });\r\n }\r\n\r\n private ResetPassword() {\r\n if (this._passwordResetForm.IsValid()) {\r\n const formData = this._passwordResetForm.GetFormData();\r\n const resetPasswordModel = ResetPasswordModel.FillFromFormData(formData);\r\n\r\n BlockUI.Block();\r\n AuthStore.ResetPassword(resetPasswordModel, formData.Token)\r\n .then(() => {\r\n this._passwordResetForm.Close();\r\n\r\n new Notifier().Success(NOTIFICATIONS.PASSWORD_CHANGED);\r\n\r\n CookieManager.Remove('ResetPasswordToken');\r\n })\r\n .fail(error => new Notifier(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n }\r\n\r\n private UpdateExpiredPassword() {\r\n if (this._passwordExpiredForm.IsValid()) {\r\n let formData = this._passwordExpiredForm.GetFormData();\r\n let updatePasswordModel = UpdatePasswordModel.FillFromFormData(formData).MapFrom(this._signInModel);\r\n AuthStore.UpdateExpiredPassword(updatePasswordModel).then(updatePasswordResult => this.HandleUpdatePasswordResult(updatePasswordResult, this._passwordExpiredForm));\r\n }\r\n }\r\n\r\n private UpdatePassword() {\r\n if (this._updatePasswordForm.IsValid()) {\r\n let formData = this._updatePasswordForm.GetFormData();\r\n let updatePasswordModel = UpdatePasswordModel.FillFromFormData(formData).MapFrom(this._signInModel);\r\n AuthStore.UpdatePassword(updatePasswordModel).then(updatePasswordResult => this.HandleUpdatePasswordResult(updatePasswordResult, this._updatePasswordForm));\r\n }\r\n }\r\n\r\n private GoToAgendaToReportHours(unReportedTimeModel: UnReportedTimeModel) {\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_SCREEN_BY_TYPE, { EntityId: unReportedTimeModel.AgendaEntityId, ScreenType: ScreenTypes.SpecialScreen, IsOpenInModal: false });\r\n\r\n this._unreportedTimeForm.Close();\r\n }\r\n\r\n private UpdateTwoFaSecret() {\r\n\r\n let formData = this._twoFaConfigurationForm.GetFormData();\r\n let updateTotpSecretModel = UpdateTotpSecretModel.FillFromFormData(formData).MapFrom(this._signInModel);\r\n AuthStore.UpdateTotpSecret(updateTotpSecretModel)\r\n .then(updateTotpResult => this.HandleSaveTotpSecrerResult(updateTotpResult, this._twoFaConfigurationForm));\r\n }\r\n\r\n private SavePasswordLessCredentials() {\r\n let formData = this._passwordLessConfigurationForm.GetFormData();\r\n let request = SavePasswordLessCredentialsDto.FillFromFormData(formData).MapFrom(this._signInModel);\r\n WebAuthnStore.SaveCredential(request);\r\n }\r\n\r\n private HandleSaveTotpSecrerResult(saveTotpSecretResult: OperationResult, form: TwoFaConfigurationForm) {\r\n if (!saveTotpSecretResult.IsSuccessfull) {\r\n this.SetError(saveTotpSecretResult, form);\r\n return;\r\n }\r\n\r\n form.Close();\r\n }\r\n\r\n private HandleUpdatePasswordResult(updatePasswordResult: OperationResult, form: PasswordExpiredForm) {\r\n if (!updatePasswordResult.IsSuccessfull) {\r\n this.SetError(updatePasswordResult, form);\r\n return;\r\n }\r\n\r\n form.Close();\r\n }\r\n\r\n private BuildSignInModel() {\r\n const formData = this._authForm.GetFormData();\r\n const model = new SignInModel();\r\n\r\n model.DatabaseName = formData.Database();\r\n model.UserName = formData.UserName();\r\n model.Password = formData.Password();\r\n model.Language = formData.Language;\r\n model.GrantType = 'password';\r\n model.TotpPassword = this._totpPasswordForm.GetFormData();\r\n\r\n model.ClientId = this._clientId;\r\n model.ClientSecret = this._clientSecret;\r\n\r\n return model;\r\n }\r\n\r\n private BuildRequestResetPasswordModel() {\r\n const formData = this._authForm.GetFormData();\r\n\r\n const model = new RequestResetPasswordModel();\r\n model.Username = formData.UserName();\r\n model.DatabaseName = formData.Database();\r\n\r\n return model;\r\n }\r\n\r\n private SetError(result: SignInResultModel | OperationResult, form: AuthForm | PasswordExpiredForm | TwoFaConfigurationForm) {\r\n form.ShowError(result.ErrorMessage);\r\n this._authForm.AllowLogin();\r\n }\r\n\r\n private ShowForm(result: SignInResultModel, form: PasswordExpiredForm | LicenseForm | TwoFaConfigurationForm | PasswordLessConfigurationForm) {\r\n form.Load(result.ErrorMessage, this._authForm.GetFormData().Database(), this._authForm.GetFormData().UserName());\r\n }\r\n\r\n private ShowUnReportedTimeForm(result: UnReportedTimeModel, form: UnreportedTimeForm) {\r\n form.Load(result.ErrorMessage, this._authForm.GetFormData().Database(), this._authForm.GetFormData().UserName());\r\n }\r\n\r\n ShowAuthForm(clientId: string = 'WebApplicationId', clientSecret: string = 'WebApplicationSecret'): P.Promise {\r\n const deferred = P.defer();\r\n\r\n this._clientId = clientId;\r\n this._clientSecret = clientSecret;\r\n if (!this._authFormOpened) { \r\n this._authForm.AllowLogin();\r\n this._authFormOpened = true;\r\n var db = this._authForm.GetLastLoginDb();\r\n if(db) {\r\n TranslationManager.Instance.LoadTranslationsForDb(db, this._authForm.GetLastLanguage(db))\r\n .then(() => {\r\n this._authForm.Close(); \r\n this._authForm.ShowInModal().then(()=>{\r\n deferred.resolve(null);\r\n });\r\n \r\n })\r\n .fail((err) => {\r\n new Notifier().Failed(err.message); \r\n this._authForm.ShowInModal().then(()=>{\r\n deferred.resolve(null);\r\n }); \r\n });\r\n }else{\r\n this._authForm.ShowInModal().then(()=>{\r\n deferred.resolve(null); \r\n }); \r\n } \r\n }\r\n return deferred.promise();\r\n }\r\n\r\n ShowResetPasswordForm() {\r\n this._passwordResetForm.Load();\r\n }\r\n}","export enum AuthResults {\r\n\tSuccess,\r\n\tInvalidTotpPassword,\r\n\tTwoFaIsNotConfigured,\r\n\tPasswordExpired,\r\n\tInvalidLicense,\r\n\tErrorFindingLicenses,\r\n\tLicenseNotFound,\r\n\tLicenseExpired,\r\n\tInvalidLicenseNames,\r\n\tInvalidLicenseParams,\r\n\tPasswordReset,\r\n\tOnlyOneUserGroupIsAllowed,\r\n\tEditLimitIsGreaterThanUserDesignation,\r\n\tPasswordLessIsNotConfigured\r\n};","export let Events = {\r\n\tResetPassword: 'ResetPassword',\r\n\tSignIn: 'SignIn',\r\n\tFormClosed: \"FormClosed\",\r\n\tUpdatePassword: \"UpdatePassword\",\r\n\tSecurityCodeProvided: \"SecurityCodeProvided\",\r\n\tSaveTotpSecred: 'SaveTotpSecred',\r\n\tUnreportedTimeFormClosed: 'UnreportedTimeFormClosed',\r\n\tGoToAgenda: 'GoToAgenda',\r\n\tSavePasswordLessCredentials: 'SavePasswordLessCredentials',\r\n\tPasswordLessSignIn: 'PasswordLessSignIn',\r\n};","import {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport let FormTitles = {\r\n\tPasswordExpired: LABELS.PASSWORD_EXPIRED,\r\n\tPasswordExpiresIn: (days: number) => LABELS.PASSWORD_EXPIRED_IN.replace('{amount}', `${days}`)\r\n}","export class RequestResetPasswordModel {\r\n\tUsername: string;\r\n\tDatabaseName: string;\r\n}","import {PasswordResetModel} from \"Auth/UI/PasswordResetForm/Model/PasswordResetModel\";\r\n\r\nexport class ResetPasswordModel {\r\n\tNewPassword: string;\r\n\r\n static FillFromFormData(formData: PasswordResetModel) {\r\n const model = new ResetPasswordModel();\r\n\r\n model.NewPassword = formData.NewPassword();\r\n\r\n return model;\r\n }\r\n}","import {SignInModel} from 'Auth/Models/SignInModel';\r\nimport { PasswordExpiredModel } from \"Auth/UI/PasswordExpiredForm/Model/PasswordExpiredModel\";\r\nimport { serialize } from '../../libs/cerialize';\r\n\r\nexport class SavePasswordLessCredentialsDto {\r\n\tDatabaseName: string;\r\n\tLogin: string;\r\n\tPassword: string;\r\n\tAuthenticatorAttestation: string;\r\n\r\n\t__RequestVerificationToken: string;\r\n\r\n\tMapFrom(signInModel: SignInModel) {\r\n\t\tfor (let property in signInModel) {\r\n\t\t\tif (signInModel.hasOwnProperty(property)) {\r\n\t\t\t\tthis[property] = signInModel[property];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tstatic FillFromFormData(authenticatorAttestation: string) {\r\n\t\tlet model = new SavePasswordLessCredentialsDto();\r\n\r\n\t\tmodel.AuthenticatorAttestation = authenticatorAttestation;\r\n\t\treturn model;\r\n\t}\r\n}","import {serialize, serializeAs} from 'libs/cerialize';\r\n\r\nexport class SignInModel {\r\n @serialize\r\n UserName: string;\r\n\r\n @serialize\r\n Password: string;\r\n\r\n @serialize\r\n TotpPassword: string;\r\n\r\n @serialize\r\n ClientId: string;\r\n\r\n @serialize\r\n ClientSecret: string;\r\n\r\n @serialize\r\n DatabaseName: string;\r\n\r\n @serialize\r\n SecurityCode: string;\r\n\r\n @serialize\r\n Language: string;\r\n\r\n @serialize\r\n GrantType: string;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class SignInResultModel {\r\n @deserializeAs(v => v === 'True')\r\n public LicenseExpiresSoon: boolean;\r\n\r\n @deserialize\r\n public LicenseExpiresIn: Date;\r\n\r\n @deserializeAs(v => v === 'True')\r\n public PasswordExpiresSoon: boolean;\r\n\r\n @deserialize\r\n public PasswordExpiresIn: number;\r\n\r\n @deserializeAs(v => v === 'True')\r\n public SBIDesigner: boolean;\r\n\r\n @deserializeAs('access_token')\r\n public AuthToken: string;\r\n\r\n @deserializeAs('refresh_token')\r\n public RefreshToken: string;\r\n\r\n public ErrorMessage: string;\r\n\r\n public ErrorCode: number;\r\n\r\n static CreateErrorResult(errorMessage: string, errorCode: number) {\r\n const model = new SignInResultModel();\r\n model.ErrorMessage = errorMessage;\r\n model.ErrorCode = errorCode;\r\n\r\n return model;\r\n }\r\n}","import {SignInModel} from 'Auth/Models/SignInModel';\r\nimport { PasswordExpiredModel } from \"Auth/UI/PasswordExpiredForm/Model/PasswordExpiredModel\";\r\n\r\nexport class UpdatePasswordModel {\r\n\tDatabaseName: string;\r\n\tReturnUrl: string;\r\n\tLogin: string;\r\n\tCurrentPassword: string;\r\n\tNewPassword: string;\r\n\r\n\t__RequestVerificationToken: string;\r\n\r\n\tMapFrom(signInModel: SignInModel) {\r\n\t\tfor (let property in signInModel) {\r\n\t\t\tif (signInModel.hasOwnProperty(property)) {\r\n\t\t\t\tthis[property] = signInModel[property];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tstatic FillFromFormData(formData: PasswordExpiredModel) {\r\n\t\tlet model = new UpdatePasswordModel();\r\n\r\n\t\tmodel.CurrentPassword = formData.OldPassword();\r\n\t\tmodel.NewPassword = formData.NewPassword();\r\n\r\n\t\treturn model;\r\n\t}\r\n}","import {SignInModel} from 'Auth/Models/SignInModel';\r\nimport { PasswordExpiredModel } from \"Auth/UI/PasswordExpiredForm/Model/PasswordExpiredModel\";\r\nimport { serialize } from '../../libs/cerialize';\r\n\r\nexport class UpdateTotpSecretModel {\r\n\tDatabaseName: string;\r\n\tReturnUrl: string;\r\n\tLogin: string;\r\n\tPassword: string;\r\n\tTotpSecret: string;\r\n\r\n\t__RequestVerificationToken: string;\r\n\r\n\tMapFrom(signInModel: SignInModel) {\r\n\t\tfor (let property in signInModel) {\r\n\t\t\tif (signInModel.hasOwnProperty(property)) {\r\n\t\t\t\tthis[property] = signInModel[property];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t}\r\n\r\n\tstatic FillFromFormData(secret: string) {\r\n\t\tlet model = new UpdateTotpSecretModel();\r\n\r\n\t\tmodel.TotpSecret = secret;\r\n\t\treturn model;\r\n\t}\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize, Serialize} from 'libs/cerialize';\r\n\r\nimport {SignInModel} from \"Auth/Models/SignInModel\";\r\nimport {SignInResultModel} from \"Auth/Models/SignInResultModel\";\r\nimport {UpdatePasswordModel} from \"Auth/Models/UpdatePasswordModel\";\r\nimport {SignOutModel} from 'Auth/Models/SignOutModel';\r\nimport {RequestResetPasswordModel} from \"Auth/Models/RequestResetPasswordModel\";\r\nimport {ResetPasswordModel} from \"Auth/Models/ResetPasswordModel\";\r\nimport {LanguageModel} from 'Auth/UI/AuthForm/Models/LanguageModel';\r\n\r\nimport OperationResult from \"Core/Results/ResultModels/OperationResult\";\r\nimport { UpdateTotpSecretModel } from '../Models/UpdateTotpSecretModel';\r\n\r\nexport class AuthStore {\r\n\r\n public static SignOut(params: SignOutModel): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.AUTH.LOGOUT,\r\n dataType: 'text',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams).then((fileDir) => {\r\n deferredResult.resolve(fileDir);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n public static SignIn(formData: SignInModel): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.AUTH.LOGIN,\r\n type: 'POST'\r\n }, params: formData\r\n }\r\n\r\n Request.Send(requestParams)\r\n .then(signInResult => deferredResult.resolve(GenericDeserialize(signInResult, SignInResultModel)))\r\n .fail(err => deferredResult.reject(this.GetSignInError(err)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n public static RequestResetPassword(model: RequestResetPasswordModel) {\r\n return Request.Send({\r\n proxy: {\r\n url: URL.AUTH.RESET_PASSWORD,\r\n type: 'GET'\r\n }, params: model\r\n });\r\n }\r\n\r\n public static ResetPassword(model: ResetPasswordModel, token: string) {\r\n return Request.Send({\r\n proxy: {\r\n url: URL.AUTH.RESET_PASSWORD + `?token=${token}`,\r\n type: 'POST'\r\n }, params: model\r\n });\r\n }\r\n\r\n public static SignInOutlook(formData: SignInModel): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.AUTH.LOGIN,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: Serialize(formData)\r\n }\r\n\r\n Request.Send(requestParams)\r\n .then(signInResult => deferredResult.resolve(GenericDeserialize(signInResult, SignInResultModel)))\r\n .fail(err => deferredResult.reject(this.GetSignInError(err)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n public static SignInSolidworks(formData: SignInModel): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.AUTH.LOGIN,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: Serialize(formData)\r\n }\r\n\r\n Request.Send(requestParams)\r\n .then(signInResult => deferredResult.resolve(GenericDeserialize(signInResult, SignInResultModel)))\r\n .fail(err => deferredResult.reject(this.GetSignInError(err)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n public static UpdateExpiredPassword(formData: UpdatePasswordModel): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.AUTH.UPDATE_EXPIRED_PASSWORD,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: formData\r\n }\r\n\r\n Request.Send(requestParams)\r\n .then(updatePasswordResult => deferredResult.resolve(Deserialize(updatePasswordResult, OperationResult)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n public static UpdateTotpSecret(formData: UpdateTotpSecretModel): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.AUTH.UPDATE_TOTP_SECRET,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: formData\r\n }\r\n\r\n Request.Send(requestParams)\r\n .then(updatePasswordResult => deferredResult.resolve(Deserialize(updatePasswordResult, OperationResult)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n public static UpdatePassword(formData: UpdatePasswordModel): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.AUTH.UPDATE_EXPIRED_PASSWORD,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: formData\r\n }\r\n\r\n Request.Send(requestParams)\r\n .then(updatePasswordResult => deferredResult.resolve(Deserialize(updatePasswordResult, OperationResult)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n public static GetDatabaseList(): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/CyberConfigApi/GetDatabases',\r\n dataType: 'json',\r\n type: 'GET'\r\n }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(databases => deferredResult.resolve(databases));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n public static GetLanguages(databaseName: string): P.Promise> {\r\n let deferredResult = P.defer>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/AuthApi/GetLanguages',\r\n dataType: 'json',\r\n type: 'GET'\r\n },\r\n params: {DatabaseName: databaseName}\r\n }\r\n\r\n Request.Send(requestParams)\r\n .then((result) => {\r\n if (result.IsSuccessfull) {\r\n deferredResult.resolve(>Deserialize(result.ResultObject, LanguageModel));\r\n } else {\r\n deferredResult.reject(result.ErrorMessage);\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n private static GetSignInError(error: P.Rejection): P.Rejection {\r\n const errorResult = JSON.parse(error.message);\r\n return { message: errorResult.Message, value: errorResult.ErrorCode};\r\n }\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport { SavePasswordLessCredentialsDto } from '../Models/SavePasswordLessCredentialsDto';\r\nimport { GenericDeserialize } from '../../libs/cerialize';\r\nimport { SignInResultModel } from '../Models/SignInResultModel';\r\n\r\nexport interface IMakeAssertionDto{\r\n ClientResponse: string;\r\n DatabaseName: string;\r\n UserName: string;\r\n}\r\n\r\nexport class WebAuthnStore {\r\n\r\n public static GetAssertionOptions(userName: string, databaseName: string): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/WebAuthnApi/GetAssertionOptions',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params: { username: userName, databaseName: databaseName }\r\n }\r\n\r\n Request.Send(requestParams)\r\n .then((result) => { \r\n deferredResult.resolve(result);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n public static BuildCredentialOptions(userName: string, databaseName: string): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/WebAuthnApi/BuildCredentialOptions',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params: { username: userName, databaseName: databaseName }\r\n }\r\n\r\n Request.Send(requestParams)\r\n .then((result) => { \r\n deferredResult.resolve(result);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n public static SaveCredential(params: SavePasswordLessCredentialsDto): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/WebAuthnApi/SaveCredential',\r\n type: 'POST'\r\n },\r\n params: params\r\n }\r\n\r\n Request.Send(requestParams)\r\n .then((result) => { \r\n deferredResult.resolve(result);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n public static MakeAssertion(params: IMakeAssertionDto): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/WebAuthnApi/MakeAssertion',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params: params\r\n }\r\n\r\n Request.Send(requestParams)\r\n .then((result) => { \r\n deferredResult.resolve(GenericDeserialize(result, SignInResultModel))\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport 'jquery';\r\nimport 'jqueryBackstretch';\r\nimport 'lockr';\r\n\r\nimport 'knockout-selectize';\r\nimport 'hidden_textfield';\r\nimport 'dropdown_direction';\r\nimport 'scroll_parent';\r\n\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {AuthStore} from 'Auth/Stores/AuthStore';\r\nimport {WebAuthnStore} from 'Auth/Stores/WebAuthnStore';\r\nimport {AuthFormModel} from 'Auth/UI/AuthForm/Models/AuthFormModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {LanguageSelector} from 'Auth/UI/AuthForm/LanguageSelector';\r\nimport {CookieManager} from \"Core/Common/CookieManager\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport { Events } from 'Auth/Enums/Events';\r\n\r\nimport AuthFormTemplate from 'Auth/UI/AuthForm/Templates/AuthForm.html';\r\nimport { BinaryUtils } from '../../../Core/Common/BinaryUtils';\r\nconst BOUND_MANAGER = 'desktopBoundManager';\r\n\r\nko.templates['Auth/UI/AuthForm/Templates/AuthForm'] = AuthFormTemplate;\r\n\r\nconst SLIDES = [\r\n '/img/Metronic/bg/1.jpg',\r\n '/img/Metronic/bg/2.jpg',\r\n '/img/Metronic/bg/3.jpg',\r\n '/img/Metronic/bg/4.jpg'\r\n];\r\n\r\nexport class AuthForm extends Event {\r\n private _loginErrorMessage: KnockoutObservable;\r\n private _databaseList: KnockoutObservableArray;\r\n private _languageSelector: KnockoutObservable;\r\n private _model: KnockoutValidatedObservable;\r\n private _modal: Modal;\r\n private _fileDir: string;\r\n private _isLoginBlocked: KnockoutObservable;\r\n private _enableLanguageList: KnockoutObservable;\r\n private _isUrlDBExist: KnockoutObservable;\r\n private _labels = LABELS;\r\n\r\n constructor() {\r\n super();\r\n this._databaseList = ko.observableArray([]);\r\n this._loginErrorMessage = ko.observable(null);\r\n this._isLoginBlocked = ko.observable(false);\r\n this._enableLanguageList = ko.observable(false);\r\n this._languageSelector = ko.observable(null);\r\n this._isUrlDBExist = ko.observable(false);\r\n this.InitValidation();\r\n }\r\n\r\n InitValidation() {\r\n ko.validation.init({insertMessages: false, errorElementClass: \"is-invalid\"}, true);\r\n }\r\n\r\n IsValid() {\r\n if (!this._model.isValid()) {\r\n this._model.errors.showAllMessages();\r\n }\r\n\r\n return this._model.isValid();\r\n }\r\n\r\n IsValidForPasswordReset() {\r\n const errors = ko.validation.group([this._model().UserName, this._model().Database()]);\r\n errors.showAllMessages();\r\n\r\n return errors().length === 0;\r\n }\r\n\r\n GetFormData() {\r\n return this._model();\r\n }\r\n\r\n InitPasskey(){\r\n\r\n if(this._model().UserName() && this._model().Database()){\r\n WebAuthnStore.GetAssertionOptions(this._model().UserName(), this._model().Database()).then((makeAssertionOptions: any)=>{\r\n if(!makeAssertionOptions){\r\n return;\r\n }\r\n let conditional = false;\r\n\r\n const challenge = makeAssertionOptions.challenge.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n makeAssertionOptions.challenge = Uint8Array.from(atob(challenge), c => c.charCodeAt(0));\r\n \r\n makeAssertionOptions.allowCredentials.forEach(function (listItem) {\r\n var fixedId = listItem.id.replace(/\\_/g, \"/\").replace(/\\-/g, \"+\");\r\n listItem.id = Uint8Array.from(atob(fixedId), c => c.charCodeAt(0));\r\n });\r\n\r\n try{\r\n navigator.credentials\r\n .get({ publicKey: makeAssertionOptions, mediation: conditional ? 'conditional' : 'optional' })\r\n .then((assertedCredential) =>{\r\n this.MakeAssertion(assertedCredential)\r\n });\r\n }catch(e){\r\n Notifier.Failed(e.message);\r\n } \r\n });\r\n }\r\n }\r\n\r\n MakeAssertion(assertedCredential: any){\r\n let authData = new Uint8Array(assertedCredential.response.authenticatorData);\r\n let clientDataJSON = new Uint8Array(assertedCredential.response.clientDataJSON);\r\n let rawId = new Uint8Array(assertedCredential.rawId);\r\n let sig = new Uint8Array(assertedCredential.response.signature);\r\n let userHandle = new Uint8Array(assertedCredential.response.userHandle);\r\n const data = {\r\n id: assertedCredential.id,\r\n rawId: BinaryUtils.CoerceToBase64Url(rawId),\r\n type: assertedCredential.type,\r\n extensions: assertedCredential.getClientExtensionResults(),\r\n response: {\r\n authenticatorData: BinaryUtils.CoerceToBase64Url(authData),\r\n clientDataJSON: BinaryUtils.CoerceToBase64Url(clientDataJSON),\r\n userHandle: userHandle !== null && userHandle.length > 0 ? BinaryUtils.CoerceToBase64Url(userHandle) : null,\r\n signature: BinaryUtils.CoerceToBase64Url(sig)\r\n }\r\n };\r\n\r\n WebAuthnStore.MakeAssertion({ ClientResponse: JSON.stringify(data), UserName: this._model().UserName(), DatabaseName: this._model().Database() })\r\n .then((signInResult)=>{\r\n this.Trigger(Events.PasswordLessSignIn, { SignInResult: signInResult });\r\n });\r\n }\r\n\r\n ShowError(errorText: string) {\r\n this._loginErrorMessage(errorText);\r\n }\r\n\r\n RemoveErrorSummary() {\r\n this._loginErrorMessage(null);\r\n }\r\n\r\n SignIn() {\r\n if (this.IsValid()) {\r\n this.SaveLastLoginDb();\r\n this.SaveLastLogin();\r\n this.Trigger(Events.SignIn, {FileDir: this._fileDir, modalWrapper: this._modal.Wrapper});\r\n }\r\n }\r\n\r\n ResetPassword() {\r\n this.Trigger(Events.ResetPassword);\r\n }\r\n\r\n GetUrlParams() {\r\n let vars = {};\r\n window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, (m, key, value): string => {\r\n return vars[key] = value;\r\n });\r\n return vars;\r\n }\r\n\r\n ShowInModal() {\r\n CookieManager.RemoveAuthToken();\r\n const deferred = P.defer();\r\n\r\n this._model = ko.validatedObservable(new AuthFormModel());\r\n\r\n this._model().UserName.subscribe(()=>{\r\n this.InitPasskey();\r\n });\r\n\r\n this._languageSelector(null);\r\n\r\n this._model().Database.subscribe((newValue) => {\r\n this.UpdateUrl();\r\n this._languageSelector(null);\r\n if (newValue) {\r\n AuthStore.GetLanguages(newValue).then((languages) => {\r\n const lastLanguage = this.GetLastLanguage(this._model().Database());\r\n this._languageSelector(new LanguageSelector());\r\n this._languageSelector().SetLanguages(languages, lastLanguage);\r\n this._model().Language = this._languageSelector().ActiveLanguage.ShortName;\r\n this._languageSelector().On('LANGUAGE_SELECTED', this, (eventArgs) => {\r\n if (eventArgs.data) {\r\n this._model().Language = eventArgs.data.Language;\r\n this.SaveLanguage(this._model().Language);\r\n BlockUI.Block();\r\n TranslationManager.Instance.LoadTranslationsForDb(this._model().Database(), this._model().Language)\r\n .always(()=>BlockUI.Unblock())\r\n .then(() => {\r\n this.SaveLastLogin(); \r\n this.ApplyBinding();\r\n })\r\n .fail((message) => {\r\n new Notifier().Failed(message);\r\n });\r\n }\r\n });\r\n }).fail((message) => {\r\n new Notifier().Failed(message);\r\n });\r\n }\r\n });\r\n\r\n AuthStore.GetDatabaseList().then(databases => {\r\n this._databaseList(databases);\r\n\r\n const lastDb = this.GetLastLoginDb();\r\n const username = this.GetLastLogin();\r\n const lastSelectedDatabase = _.find(databases, (db) => db?.toLowerCase() === lastDb?.toLowerCase());\r\n const databaseFromUrl = _.find(databases, (db) => db?.toLowerCase() === this.GetUrlParams()[\"db\"]?.toLowerCase());\r\n\r\n if (databaseFromUrl) {\r\n this._model().Database(databaseFromUrl);\r\n this._isUrlDBExist(true);\r\n }else if (lastSelectedDatabase) {\r\n this._model().Database(lastDb);\r\n } else {\r\n this._model().Database(this._databaseList()[0]);\r\n const lastLanguage = this.GetLastLanguage(this._model().Database());\r\n\r\n if (this._model().Database()) {\r\n BlockUI.Block();\r\n TranslationManager.Instance.LoadTranslationsForDb(this._model().Database(), lastLanguage)\r\n .always(()=>BlockUI.Unblock())\r\n .then(() => {\r\n this.SaveLastLoginDb();\r\n this.SaveLastLogin();\r\n this.ApplyBinding();\r\n })\r\n .fail((message) => {\r\n new Notifier().Failed(message);\r\n });\r\n }\r\n }\r\n\r\n if (username) {\r\n this._model().UserName(username);\r\n }\r\n\r\n this._model().Database.subscribe((newValue) => {\r\n if (window[BOUND_MANAGER] && newValue) {\r\n window[BOUND_MANAGER].SelectDatabase(newValue);\r\n }\r\n });\r\n\r\n this._modal = new Modal({\r\n addClass: 'login login-modal jBox-no-padding',\r\n width: '400',\r\n minHeight: '400',\r\n height: '430',\r\n fade: 0,\r\n animation: null,\r\n closeButton: false,\r\n createOnInit: true,\r\n closeOnEsc: false,\r\n blockScroll: true\r\n },\r\n false);\r\n\r\n this.ApplyBinding();\r\n this._modal.Show();\r\n\r\n $(this._modal.Overlay()).css({'background': '#666'});\r\n $(this._modal.Container()).css({'background': 'none'});\r\n $(this._modal.Overlay()).backstretch(SLIDES,\r\n {\r\n fade: 1000,\r\n duration: 8000\r\n });\r\n\r\n deferred.resolve(null);\r\n\r\n }).fail(() => deferred.resolve(null));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n ApplyBinding(){\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n UpdateUrl(){\r\n const newUrl = this._model().Database() ? window.location.origin + '?db=' + this._model().Database() : window.location.origin;\r\n if(window.location.href != newUrl){\r\n window.history.pushState({path: newUrl}, '', newUrl);\r\n }\r\n }\r\n\r\n SaveLastLoginDb() {\r\n Lockr.set(LOCAL_STORAGE.LAST_DB, this._model().Database());\r\n }\r\n\r\n SaveLastLogin() {\r\n Lockr.set(LOCAL_STORAGE.LAST_LOGIN, this._model().UserName());\r\n }\r\n\r\n GetLastLoginDb(): string {\r\n return Lockr.get(LOCAL_STORAGE.LAST_DB);\r\n }\r\n\r\n GetLastLogin(): string {\r\n return Lockr.get(LOCAL_STORAGE.LAST_LOGIN);\r\n }\r\n\r\n SaveLanguage(languageName: string) {\r\n var language = Lockr.get(LOCAL_STORAGE.LANGUAGE);\r\n if (language) {\r\n try {\r\n language = JSON.parse(language);\r\n } catch (err) {\r\n language = {};\r\n }\r\n } else {\r\n language = {};\r\n }\r\n language[this._model().Database()] = languageName;\r\n Lockr.set(LOCAL_STORAGE.LANGUAGE, JSON.stringify(language));\r\n }\r\n\r\n GetLastLanguage(db: string): string {\r\n var language = Lockr.get(LOCAL_STORAGE.LANGUAGE)\r\n if (language) {\r\n try {\r\n language = JSON.parse(language);\r\n } catch (err) {\r\n language = {};\r\n }\r\n } else {\r\n language = {};\r\n }\r\n return language[db];\r\n }\r\n\r\n Close() {\r\n if(this._modal){\r\n $(this._modal.Overlay()).backstretch('destroy');\r\n this._modal.Close();\r\n }\r\n this._loginErrorMessage(null);\r\n }\r\n\r\n PreventLogin() {\r\n this._isLoginBlocked(true);\r\n }\r\n\r\n AllowLogin(modalWrapper?: HTMLElement) {\r\n this._isLoginBlocked(false);\r\n BlockUI.Unblock(modalWrapper);\r\n }\r\n\r\n get FileDir(): string {\r\n return this._fileDir;\r\n }\r\n\r\n private GetFileDir(): string {\r\n var fileDir = _.last(document.URL.split('/'));\r\n return fileDir;\r\n }\r\n\r\n private ChangeUrl() {\r\n const db = this._model().Database();\r\n const lastLanguage = this.GetLastLanguage(db);\r\n if (db) {\r\n BlockUI.Block();\r\n TranslationManager.Instance.LoadTranslationsForDb(this._model().Database(), lastLanguage)\r\n .always(()=>BlockUI.Unblock())\r\n .then(() => {\r\n this.SaveLastLoginDb();\r\n this.SaveLastLogin();\r\n this.UpdateUrl();\r\n this.ApplyBinding();\r\n })\r\n .fail((message) => {\r\n new Notifier().Failed(message);\r\n });\r\n } else {\r\n window.history.pushState({path: window.location.origin}, '', window.location.origin);\r\n }\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Auth/UI/AuthForm/Templates/AuthForm';\r\n }\r\n\r\n AfterRender() {\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {LanguageModel} from 'Auth/UI/AuthForm/Models/LanguageModel';\r\nimport {Event} from 'Core/Common/Event'\r\nimport LanguageSelectorTemplate from 'Auth/UI/AuthForm/Templates/LanguageSelector.html';\r\n\r\nko.templates['Auth/UI/AuthForm/Templates/LanguageSelector'] = LanguageSelectorTemplate;\r\n\r\nexport class LanguageSelector extends Event {\r\n private _languages: KnockoutObservableArray;\r\n private _language: KnockoutObservable;\r\n\r\n constructor() {\r\n super();\r\n this._languages = ko.observableArray([]);\r\n this._language = ko.observable(null);\r\n this.AddEvent('LANGUAGE_SELECTED');\r\n }\r\n\r\n SetLanguages(languages: Array, lastLanguage: string) {\r\n this._languages(languages);\r\n var defaultLanguage = _.find(this._languages(), (item: LanguageModel) => item.ShortName === lastLanguage);\r\n if (!defaultLanguage) {\r\n defaultLanguage = _.first(this._languages());\r\n }\r\n this._language(defaultLanguage);\r\n }\r\n\r\n get ActiveLanguage(): LanguageModel {\r\n return this._language();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Auth/UI/AuthForm/Templates/LanguageSelector';\r\n }\r\n\r\n RenderLanguageItem(data, escape) {\r\n return `
${data.ShortName}
`;\r\n }\r\n\r\n SelectLanguage(language: LanguageModel) {\r\n this._language(language);\r\n this.Trigger('LANGUAGE_SELECTED', {Language: language.ShortName});\r\n }\r\n}","import * as ko from 'knockout';\r\nimport {PASSWORD} from 'Core/Constant';\r\nimport { LanguageModel } from 'Auth/UI/AuthForm/Models/LanguageModel';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class AuthFormModel {\r\n\tUserName: KnockoutObservable;\r\n\r\n\tPassword: KnockoutObservable;\r\n\tDatabase: KnockoutObservable;\r\n\tFileDir: string;\r\n\tLanguage: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.FileDir = null;\r\n\r\n\t\tthis.UserName = ko.observable('').extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: LABELS.ENTER_LOGIN\r\n\t\t\t},\r\n\t\t\tminLength: 2\r\n\t\t});\r\n\r\n\t\tthis.Password = ko.observable('').extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: LABELS.ENTER_PASSWORD\r\n\t\t\t},\r\n\t\t\tminLength: PASSWORD.MinimumLength\r\n\t\t});\r\n\r\n\t\tthis.Database = ko.observable(undefined).extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: LABELS.SELECT_DATABASE\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class LanguageModel {\r\n\t@deserialize\r\n\tFlagBase64: number;\r\n\r\n\t@deserialize\r\n\tShortName: string;\r\n}","import * as ko from 'knockout';\r\nimport {Events} from \"Auth/Enums/Events\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport LicenseExpiredSoonFormTemplate from 'Auth/UI/LicenseExpiredSoonForm/Templates/LicenseExpiredSoonForm.html';\r\nko.templates['Auth/UI/LicenseExpiredSoonForm/Templates/LicenseExpiredSoonForm'] = LicenseExpiredSoonFormTemplate;\r\n\r\nexport class LicenseExpiredSoonForm extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _formTitle: string;\r\n\tpublic _labels = LABELS;\r\n\t\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tpublic Load(formTitle: string) {\r\n\t\tthis._formTitle = NOTIFICATIONS.LICENSE_WILL_BE_EXPIRED.replace('{date}', formTitle);\r\n\t\tthis.Show();\r\n\t}\r\n\r\n\tpublic IsValid() {\r\n\t\t//return this._$form.valid();\r\n\t}\r\n\r\n\tpublic Close() {\r\n\t\tif (this._modal){\r\n\t\t\tthis.Trigger(Events.FormClosed);\r\n\t\t\tthis._modal.Close();\r\n\t\t}\r\n\t}\t\r\n\r\n\tprivate Show() {\r\n\t\tthis._modal = new Modal({\r\n\t\t\twidth: '400',\r\n\t\t\taddClass: 'login',\r\n\t\t\tminHeight: '300'\r\n\t\t}, false);\r\n\t\tthis._modal.One('CLOSE', this, () => this.Close());\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Auth/UI/LicenseExpiredSoonForm/Templates/LicenseExpiredSoonForm';\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement) {\r\n\t}\r\n\r\n\t//Form Event handlers\r\n\tprivate OkButtonClicked() {\r\n\t\tthis.Close();\r\n\t}\r\n} ","import * as ko from 'knockout';\r\nimport 'knockoutValidation';\r\n\r\nimport {Events} from \"Auth/Enums/Events\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\n\r\nimport LicenseFormTemplate from 'Auth/UI/LicenseForm/Templates/LicenseForm.html';\r\nko.templates['Auth/UI/LicenseForm/Templates/LicenseForm'] = LicenseFormTemplate;\r\n\r\nexport class LicenseForm extends Event {\r\n\tprivate _isVisible: KnockoutObservable;\r\n\tprivate _formTitle: KnockoutObservable;\r\n\tprivate _modal: Modal;\r\n\tprivate _hasFocus: KnockoutObservable;\r\n\t\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis._isVisible = ko.observable(false);\r\n\t\tthis._formTitle = ko.observable('Please, input a new one');\r\n\t\tthis.Init();\r\n\t\tthis._hasFocus = ko.observable(false);\r\n\t}\r\n\r\n\tpublic Load(formTitle: string, dbName: string, login: string = '') {\r\n\t\tthis._formTitle(formTitle);\r\n\t\tthis.Show();\r\n\t}\r\n\r\n\tpublic Close() {\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tko.validation.init({\r\n\t\t\tinsertMessages: false\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Show() {\r\n\t\tthis._modal = new Modal({\r\n\t\t\twidth: '400',\r\n\t\t\taddClass: 'login',\r\n\t\t\tminHeight: '300'\r\n\t\t}, false);\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis._modal.Show();\r\n\t\tlet isMobile = MobileChecker.IsMobile();\r\n\t\tthis._hasFocus(!isMobile);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Auth/UI/LicenseForm/Templates/LicenseForm';\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement) {\r\n\t}\r\n\r\n\tToggleErrorBlockVisibility() {\r\n\t\tthis._isVisible(!this._isVisible());\r\n\t}\r\n\r\n\t//Form Event handlers\r\n\tprivate OkButtonClicked() {\r\n\t\tthis._modal.Close();\r\n\t\tthis.Trigger(Events.FormClosed);\r\n\t}\r\n} ","import * as ko from 'knockout';\r\nimport {PASSWORD} from 'Core/Constant';\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class PasswordExpiredModel {\r\n\tFormTitle: KnockoutObservable;\r\n\tOldPassword: KnockoutObservable;\r\n\tNewPassword: KnockoutObservable;\r\n\tPasswordConfirmation: KnockoutObservable;\r\n\tError: KnockoutObservable;\r\n\r\n\tconstructor() {\r\n\t\tthis.FormTitle = ko.observable(null);\r\n\t\tthis.OldPassword = ko.observable(null).extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: NOTIFICATIONS.ENTER_CURRENT_PASSWORD\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.NewPassword = ko.observable(null).extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: NOTIFICATIONS.ENTER_NEW_PASSWORD\r\n\t\t\t},\r\n\t\t\tminLength: {\r\n\t\t\t\tparams: PASSWORD.MinimumLength,\r\n\t\t\t\tmessage: NOTIFICATIONS.ENTER_AT_LEAST_MORE_CHARACTERS.replace('{minLength}', `${PASSWORD.MinimumLength}`)\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.PasswordConfirmation = ko.observable(null).extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: NOTIFICATIONS.CONFIRM_NEW_PASSWORD\r\n\t\t\t},\r\n\t\t\tminLength: {\r\n\t\t\t\tparams: PASSWORD.MinimumLength,\r\n\t\t\t\tmessage: NOTIFICATIONS.ENTER_AT_LEAST_MORE_CHARACTERS.replace('{minLength}', `${PASSWORD.MinimumLength}`)\r\n\t\t\t},\r\n\t\t\tareSame: {\r\n\t\t\t\tparams: this.NewPassword,\r\n\t\t\t\tmessage: NOTIFICATIONS.PASSWORDS_ARE_NOT_SAME\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.Error = ko.observable(null);\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport { Event } from \"Core/Common/Event\";\r\nimport { Modal } from \"Core/Common/Modal\";\r\nimport {CONFIRMATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport { Events } from \"Auth/Enums/Events\";\r\nimport { PasswordExpiredModel } from \"Auth/UI/PasswordExpiredForm/Model/PasswordExpiredModel\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\n\r\nimport PasswordExpiredFormTemplate from 'Auth/UI/PasswordExpiredForm/Templates/PasswordExpiredForm.html';\r\nko.templates['Auth/UI/PasswordExpiredForm/Templates/PasswordExpiredForm'] = PasswordExpiredFormTemplate;\r\n\r\nexport class PasswordExpiredForm extends Event {\r\n\tprivate _model: KnockoutValidatedObservable;\r\n\tprivate _modal: Modal;\r\n\tprivate _hasFocus : KnockoutObservable;\r\n\tpublic _labels = LABELS;\r\n\tpublic _confirmations = CONFIRMATIONS;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.Init();\r\n\t\tthis._hasFocus = ko.observable(false);\r\n\t}\r\n\r\n\tLoad(formTitle: string, dbName: string, login: string = '') {\r\n\t\tthis.Show(formTitle);\r\n\t}\r\n\r\n\tIsValid() {\r\n\t\tif (!this._model.isValid()) {\r\n\t\t\tthis._model.errors.showAllMessages();\r\n\t\t}\r\n\r\n\t\treturn this._model.isValid();\r\n\t}\r\n\r\n\tGetFormData() {\r\n\t\treturn this._model();\r\n\t}\r\n\r\n\tShowError(errorText: string) {\r\n\t\tthis._model().Error(errorText);\r\n\t}\r\n\r\n\tRemoveErrorSummary() {\r\n\t\tthis._model().Error(null);\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tko.validation.init({\r\n\t\t\tinsertMessages: false\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Show(formTitle: string) {\r\n\t\tthis._model = ko.validatedObservable(new PasswordExpiredModel());\r\n\t\tthis._model().FormTitle(formTitle);\r\n\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: 'login',\r\n\t\t\twidth: '500',\r\n\t\t\tminHeight: '300'\r\n\t\t}, false);\r\n\t\tthis._modal.One('CLOSE', this, () => { this.Close(); });\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis._modal.Show();\r\n\t\tlet isMobile = MobileChecker.IsMobile();\r\n\t\tthis._hasFocus(!isMobile);\r\n\t}\r\n\r\n\tClose() {\r\n\t\tthis.Trigger(Events.FormClosed);\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tprivate OkButtonClicked() {\r\n\t\tthis.Trigger(Events.UpdatePassword);\r\n\t}\r\n\r\n\tprivate CancelButtonClicked() {\r\n\t\tthis.Close();\r\n\t}\r\n\r\n\tprivate GetTemplateName() {\r\n\t\treturn 'Auth/UI/PasswordExpiredForm/Templates/PasswordExpiredForm';\r\n\t}\r\n\r\n\tprivate AfterRender() {\r\n\r\n\t}\r\n} ","import * as ko from 'knockout';\r\nimport 'jquery-qrcode';\r\n\r\nimport { Events } from \"Auth/Enums/Events\";\r\nimport { Event } from \"Core/Common/Event\";\r\nimport {CONFIRMATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport TwoFaConfigurationFormTemplate from 'Auth/UI/TwoFaConfigurationForm/Templates/TwoFaConfigurationForm.html';\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { WebAuthnStore } from '../Stores/WebAuthnStore';\r\nimport { BinaryUtils } from '../../Core/Common/BinaryUtils';\r\nko.templates['Auth/UI/TwoFaConfigurationForm/Templates/TwoFaConfigurationForm'] = TwoFaConfigurationFormTemplate;\r\n\r\nexport class PasswordLessConfigurationForm extends Event {\r\n\r\n private _credentials: any;\r\n\r\n constructor(){\r\n super();\r\n }\r\n\r\n\r\n Load(_: string, dbName: string = '', login: string = ''){\r\n WebAuthnStore.BuildCredentialOptions(login, dbName).then((options: any)=>{\r\n options.challenge = BinaryUtils.CoerceToArrayBuffer(options.challenge);\r\n\r\n options.user.id = BinaryUtils.CoerceToArrayBuffer(options.user.id);\r\n \r\n options.excludeCredentials = options.excludeCredentials.map((c) => {\r\n c.id = BinaryUtils.CoerceToArrayBuffer(c.id);\r\n return c;\r\n });\r\n \r\n if (options.authenticatorSelection.authenticatorAttachment === null) options.authenticatorSelection.authenticatorAttachment = undefined;\r\n \r\n try {\r\n navigator.credentials.create({\r\n publicKey: options\r\n }).then((newCredential: any)=>{\r\n let attestationObject = new Uint8Array(newCredential.response.attestationObject);\r\n let clientDataJSON = new Uint8Array(newCredential.response.clientDataJSON);\r\n let rawId = new Uint8Array(newCredential.rawId);\r\n \r\n this._credentials = {\r\n id: newCredential.id,\r\n rawId: BinaryUtils.CoerceToBase64Url(rawId),\r\n type: newCredential.type,\r\n extensions: newCredential.getClientExtensionResults(),\r\n response: {\r\n attestationObject: BinaryUtils.CoerceToBase64Url(attestationObject),\r\n clientDataJSON: BinaryUtils.CoerceToBase64Url(clientDataJSON)\r\n }\r\n };\r\n\r\n this.Trigger(Events.SavePasswordLessCredentials);\r\n \r\n });\r\n } catch (e) {\r\n var msg = \"Could not create credentials in browser. Probably because the username is already registered with your authenticator. Please change username or authenticator.\"\r\n console.error(msg, e);\r\n }\r\n });\r\n };\r\n\r\n GetFormData(){\r\n return JSON.stringify(this._credentials);\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {PASSWORD} from \"Core/Constant\";\r\n\r\nexport class PasswordResetModel {\r\n FormTitle: KnockoutObservable;\r\n NewPassword: KnockoutObservable;\r\n PasswordConfirmation: KnockoutObservable;\r\n Error: KnockoutObservable;\r\n Token: string;\r\n\r\n constructor(token: string) {\r\n this.Token = token;\r\n\r\n this.FormTitle = ko.observable(null);\r\n this.NewPassword = ko.observable(null).extend({\r\n required: {\r\n message: 'Please, enter new password'\r\n },\r\n minLength: {\r\n params: PASSWORD.MinimumLength,\r\n message: `Please, enter at least ${PASSWORD.MinimumLength} characters`\r\n }\r\n });\r\n this.PasswordConfirmation = ko.observable(null).extend({\r\n required: {\r\n message: 'Please, confirm new password'\r\n },\r\n minLength: {\r\n params: PASSWORD.MinimumLength,\r\n message: `Please, enter at least ${PASSWORD.MinimumLength} characters`\r\n },\r\n areSame: {\r\n params: this.NewPassword,\r\n message: 'Passwords are not same'\r\n }\r\n });\r\n this.Error = ko.observable(null);\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport { CookieManager } from 'Core/Common/CookieManager';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { Modal } from 'Core/Common/Modal';\r\n\r\nimport { Events } from \"Auth/Enums/Events\";\r\n\r\nimport { PasswordResetModel } from \"./Model/PasswordResetModel\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\n\r\nimport PasswordResetFormTemplate from 'Auth/UI/PasswordResetForm/Templates/PasswordResetForm.html';\r\nko.templates['Auth/UI/PasswordResetForm/Templates/PasswordResetForm'] = PasswordResetFormTemplate;\r\n\r\nexport class PasswordResetForm extends Event {\r\n\tprivate _model: KnockoutValidatedObservable;\r\n\tprivate _modal: Modal;\r\n\tprivate _hasFocus: KnockoutObservable;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.Init();\r\n\t\tthis._hasFocus = ko.observable(false);\r\n\r\n\t\tthis.AddEvent(Events.FormClosed);\r\n\t\tthis.AddEvent(Events.UpdatePassword);\r\n\t}\r\nR\r\n\tLoad() {\r\n\t\tthis.Show('Create new password');\r\n\t}\r\n\r\n\tClose() {\r\n\t\tthis.Trigger(Events.FormClosed);\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tIsValid() {\r\n\t\tif (!this._model.isValid()) {\r\n\t\t\tthis._model.errors.showAllMessages();\r\n\t\t}\r\n\r\n\t\treturn this._model.isValid();\r\n\t}\r\n\r\n\tGetFormData() {\r\n\t\treturn this._model();\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tko.validation.init({\r\n\t\t\tinsertMessages: false\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Show(formTitle: string) {\r\n\t\tconst token = CookieManager.GetValue('ResetPasswordToken');\r\n\t\tthis._model = ko.validatedObservable(new PasswordResetModel(token));\r\n\t\tthis._model().FormTitle(formTitle);\r\n\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: 'login',\r\n\t\t\twidth: '500',\r\n\t\t\tminHeight: '300'\r\n\t\t}, false);\r\n\r\n\t\tthis._modal.One('CLOSE', this, () => this.Close());\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis._modal.Show();\r\n\t\tlet isMobile = MobileChecker.IsMobile();\r\n\t\tthis._hasFocus(!isMobile);\r\n\t}\r\n\r\n\tprivate OkButtonClicked() {\r\n\t\tthis.Trigger(Events.UpdatePassword);\r\n\t\tCookieManager.Remove('ResetPasswordToken');\r\n\t}\r\n\r\n\tprivate CancelButtonClicked() {\r\n\t\tthis.Close();\r\n\t\tCookieManager.Remove('ResetPasswordToken');\r\n\t}\r\n\r\n\tprivate GetTemplateName() {\r\n\t\treturn 'Auth/UI/PasswordResetForm/Templates/PasswordResetForm';\r\n\t}\r\n\r\n\tprivate AfterRender() {\r\n\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport 'jquery-qrcode';\r\n\r\nimport { Events } from \"Auth/Enums/Events\";\r\nimport { Event } from \"Core/Common/Event\";\r\nimport {CONFIRMATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport TotpPasswordFormTemplate from 'Auth/UI/TotpPasswordForm/Templates/TotpPasswordForm.html';\r\nimport { Modal } from 'Core/Common/Modal';\r\nko.templates['Auth/UI/TotpPasswordForm/Templates/TotpPasswordForm'] = TotpPasswordFormTemplate;\r\n\r\nclass TotpPassword {\r\n private _digits: KnockoutValidatedObservable<\r\n { _value: KnockoutObservable; _hasFocus: KnockoutObservable }[]\r\n >;\r\n\r\n constructor(){\r\n ko.validation.init({ insertMessages: false, grouping: { deep: true } }, true);\r\n\r\n this._digits = ko.validatedObservable(_.times(6, index => {\r\n const valueObservable = ko.observable('').extend({ validatable: true });\r\n\r\n valueObservable.subscribe((newValue) => {\r\n if(newValue === null || newValue === ''){\r\n return;\r\n }\r\n\r\n this.ChangeFocus(index);\r\n });\r\n\r\n return {\r\n _value: valueObservable,\r\n _hasFocus: ko.observable(index === 0)\r\n };\r\n }));\r\n }\r\n\r\n private ChangeFocus(index: number){\r\n const digits = this._digits();\r\n\r\n const nextDigit = digits[index + 1];\r\n\r\n if (nextDigit) {\r\n for (const digit of digits) {\r\n digit._hasFocus(false);\r\n }\r\n\r\n nextDigit._hasFocus(true);\r\n }\r\n }\r\n\r\n HandleKeydown(_totpPassword: TotpPassword, event: KeyboardEvent) {\r\n const input = event.currentTarget as HTMLInputElement;\r\n const inputIndex = Number(input.dataset.id);\r\n\r\n if (event.key === 'Backspace' && input.selectionStart === 0 && input.selectionEnd === 0 && inputIndex > 0) {\r\n const digits = this._digits();\r\n\r\n for (const digit of digits) {\r\n digit._hasFocus(false);\r\n }\r\n\r\n digits[inputIndex - 1]._hasFocus(true);\r\n\r\n const container = input.closest('.totp-digit-group');\r\n container.querySelector(`[data-id=\"${inputIndex - 1}\"]`).select();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n Clear(){\r\n for (const digit of this._digits()) {\r\n digit._value('');\r\n }\r\n }\r\n\r\n get Password(){\r\n return this._digits().map(digit => digit._value()).join('');\r\n }\r\n\r\n IsValid() {\r\n return this._digits.isValid();\r\n }\r\n}\r\n\r\nexport class TotpPasswordForm extends Event {\r\n private _modal: Modal;\r\n private _error: KnockoutObservable;\r\n private _totpPassword: TotpPassword;\r\n public _confirmations = CONFIRMATIONS;\r\n public _labels = LABELS;\r\n constructor(){\r\n super();\r\n this._totpPassword = new TotpPassword();\r\n this._error = ko.observable('');\r\n this.AddEvent(Events.SignIn);\r\n }\r\n\r\n IsValid(){\r\n return this._totpPassword.IsValid();\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Auth/UI/TotpPasswordForm/Templates/TotpPasswordForm';\r\n }\r\n\r\n Load(title: string){\r\n this.Reset();\r\n this._modal = new Modal(\r\n {\r\n addClass: 'totp-form',\r\n minWidth: 400,\r\n minHeight: 240,\r\n maxHeight: 240,\r\n maxWidth: 400\r\n }, false);\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n };\r\n\r\n Reset(){\r\n this._totpPassword.Clear();\r\n }\r\n\r\n OnOk(){\r\n this.Trigger(Events.SignIn);\r\n }\r\n\r\n GetFormData(): string {\r\n return this._totpPassword.Password;\r\n }\r\n\r\n ShowError(errorText: string){\r\n this._error(errorText);\r\n }\r\n\r\n RemoveErrorSummary(){\r\n this._error(null);\r\n }\r\n\r\n Close(){\r\n this._modal.Close();\r\n }\r\n}","import * as ko from 'knockout';\r\nimport 'jquery-qrcode';\r\n\r\nimport { Events } from \"Auth/Enums/Events\";\r\nimport { Event } from \"Core/Common/Event\";\r\nimport {CONFIRMATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport TwoFaConfigurationFormTemplate from 'Auth/UI/TwoFaConfigurationForm/Templates/TwoFaConfigurationForm.html';\r\nimport { Modal } from 'Core/Common/Modal';\r\nko.templates['Auth/UI/TwoFaConfigurationForm/Templates/TwoFaConfigurationForm'] = TwoFaConfigurationFormTemplate;\r\n\r\nexport class TwoFaConfigurationForm extends Event {\r\n private _modal: Modal;\r\n private _secret: string;\r\n private _el: HTMLElement;\r\n private _error: KnockoutObservable;\r\n private _dbName: string;\r\n private _login: string;\r\n public _confirmations = CONFIRMATIONS;\r\n public _labels = LABELS;\r\n\r\n constructor(){\r\n super();\r\n this._error = ko.observable('');\r\n this.AddEvent(Events.SaveTotpSecred);\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Auth/UI/TwoFaConfigurationForm/Templates/TwoFaConfigurationForm';\r\n }\r\n\r\n Load(title: string, dbName: string = '', login: string = ''){\r\n this._dbName = dbName;\r\n this._login = login;\r\n this._modal = new Modal(\r\n {\r\n addClass: 'totp-form',\r\n minWidth: 400,\r\n minHeight: 400,\r\n maxHeight: 400,\r\n maxWidth: 400\r\n }, false);\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n this.GenerateQrCode();\r\n };\r\n\r\n GenerateQrCode(){\r\n this.GenerateSecret();\r\n $(this._el).find(\"#qrcode\")\r\n .qrcode(\r\n { \r\n size: 150,\r\n render: 'canvas',\r\n text: `otpauth://totp/${this._login}/${this._dbName}?secret=${this._secret}`\r\n });\r\n }\r\n\r\n OnNext(){\r\n this.Trigger(Events.SaveTotpSecred);\r\n }\r\n\r\n GetFormData(): string{\r\n return this._secret;\r\n }\r\n\r\n ShowError(errorText: string){\r\n this._error(errorText);\r\n }\r\n\r\n RemoveErrorSummary(){\r\n this._error(null);\r\n }\r\n\r\n GenerateSecret() {\r\n let stringInclude = '';\r\n stringInclude += '234567';\r\n stringInclude += 'QWERTYUIOPASDFGHJKLZXCVBNM';\r\n var secret ='';\r\n for (let i = 0; i < 10; i++) {\r\n secret += stringInclude.charAt(Math.floor(Math.random() * stringInclude.length));\r\n }\r\n this._secret = secret;\r\n }\r\n\r\n AfterRender(el: Array){\r\n this._el = el[0];\r\n }\r\n\r\n Close(){\r\n this._modal.Close();\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nexport class UnreportedModel {\r\n FormTitle: KnockoutObservable;\r\n Error: KnockoutObservable;\r\n\r\n constructor() {\r\n this.FormTitle = ko.observable(null);\r\n this.Error = ko.observable(null);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport {Events} from \"Auth/Enums/Events\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {UnreportedModel} from \"Auth/UI/UnreportedTimeForm/Model/UnreportedModel\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport UnreportedTimeFormTemplate from 'Auth/UI/UnreportedTimeForm/Templates/UnreportedTimeForm.html';\r\nko.templates['Auth/UI/UnreportedTimeForm/Templates/UnreportedTimeForm'] = UnreportedTimeFormTemplate;\r\n\r\nexport class UnreportedTimeForm extends Event {\r\n private _model: KnockoutValidatedObservable;\r\n private _modal: Modal;\r\n private _hasFocus : KnockoutObservable;\r\n public _labels = LABELS;\r\n\r\n constructor() {\r\n super();\r\n this.Init();\r\n this._hasFocus = ko.observable(false);\r\n }\r\n\r\n Load(formTitle: string, dbName: string, login: string = '') {\r\n this.Show(formTitle);\r\n }\r\n\r\n IsValid() {\r\n if (!this._model.isValid()) {\r\n this._model.errors.showAllMessages();\r\n }\r\n\r\n return this._model.isValid();\r\n }\r\n\r\n GetFormData() {\r\n return this._model();\r\n }\r\n\r\n ShowError(errorText: string) {\r\n this._model().Error(errorText);\r\n }\r\n\r\n RemoveErrorSummary() {\r\n this._model().Error(null);\r\n }\r\n\r\n private Init() {\r\n ko.validation.init({\r\n insertMessages: false\r\n });\r\n }\r\n\r\n private Show(formTitle: string) {\r\n this._model = ko.validatedObservable(new UnreportedModel());\r\n this._model().FormTitle(formTitle);\r\n\r\n this._modal = new Modal({\r\n addClass: 'login unreportedTimeForm-modal',\r\n width: '500',\r\n minHeight: '300'\r\n }, false);\r\n this._modal.One('CLOSE', this, () => { this.Close(); });\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n Close() {\r\n this.Trigger(Events.UnreportedTimeFormClosed);\r\n this._modal.Close();\r\n }\r\n\r\n private ReportButtonClicked() {\r\n this.Trigger(Events.GoToAgenda);\r\n }\r\n\r\n private SkipButtonClicked() {\r\n this.Close();\r\n }\r\n\r\n private GetTemplateName() {\r\n return 'Auth/UI/UnreportedTimeForm/Templates/UnreportedTimeForm';\r\n }\r\n\r\n private AfterRender() {\r\n\r\n }\r\n}","export class BinaryUtils{\r\n public static CoerceToArrayBuffer(thing, name = null) {\r\n if (typeof thing === \"string\") {\r\n thing = thing.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n \r\n var str = window.atob(thing);\r\n var bytes = new Uint8Array(str.length);\r\n for (var i = 0; i < str.length; i++) {\r\n bytes[i] = str.charCodeAt(i);\r\n }\r\n thing = bytes;\r\n }\r\n \r\n if (Array.isArray(thing)) {\r\n thing = new Uint8Array(thing);\r\n }\r\n \r\n if (thing instanceof Uint8Array) {\r\n thing = thing.buffer;\r\n }\r\n \r\n if (!(thing instanceof ArrayBuffer)) {\r\n throw new TypeError(\"could not coerce '\" + name + \"' to ArrayBuffer\");\r\n }\r\n \r\n return thing;\r\n }\r\n\r\n public static CoerceToBase64Url (thing) {\r\n if (Array.isArray(thing)) {\r\n thing = Uint8Array.from(thing);\r\n }\r\n \r\n if (thing instanceof ArrayBuffer) {\r\n thing = new Uint8Array(thing);\r\n }\r\n \r\n if (thing instanceof Uint8Array) {\r\n var str = \"\";\r\n var len = thing.byteLength;\r\n \r\n for (var i = 0; i < len; i++) {\r\n str += String.fromCharCode(thing[i]);\r\n }\r\n thing = window.btoa(str);\r\n }\r\n \r\n if (typeof thing !== \"string\") {\r\n throw new Error(\"could not coerce to string\");\r\n }\r\n \r\n thing = thing.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=*$/g, \"\");\r\n \r\n return thing;\r\n };\r\n}","import { ZIndexManager } from 'Core/Common/ZIndexManager';\r\nimport * as $ from \"jquery\";\r\nimport \"jqueryBlockui\";\r\nimport { Counter } from \"Core/Common/Counter\";\r\n\r\nexport interface IBlockUIOptions {\r\n\tTarget?: HTMLElement;\r\n\tTextOnly?: boolean;\r\n\tTextMessage?: string;\r\n\tOpacityMessage?: boolean;\r\n\tCenterY?: boolean;\r\n\tBoxed?: boolean;\r\n\tZIndex?: number;\r\n\tPaddingRootElement?: number;\r\n\tBackgroundColor?: string;\r\n\tOverlayColor?: string;\r\n\tCursor?: string;\r\n\tJBoxBlockButton?: boolean;\r\n}\r\n\r\nexport interface ITargetObject {\r\n\tTarget: HTMLElement;\r\n}\r\n\r\nexport class BlockUI {\r\n\tstatic Block(options?: IBlockUIOptions): void {\r\n\t\tlet html;\r\n\t\toptions = options || {};\r\n\r\n\t\tif (options.TextOnly) {\r\n\t\t\tif (!!options.TextMessage){\r\n\t\t\t\thtml = '
'+ options.TextMessage +'
';\r\n\t\t\t} else {\r\n\t\t\t\thtml = '
';\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\thtml = '
';\r\n\t\t}\r\n\r\n\t\tif (options.Target) {\r\n\t\t\tBlockUI.BlockTarget(options, html);\r\n\t\t} else {\r\n\t\t\tBlockUI.BlockPage(options, html);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic TransparentBlock(target?: HTMLElement, options?: IBlockUIOptions): void {\r\n\t\toptions = options || {};\r\n\t\tlet transparentOptions = {\r\n\t\t\tTarget: target,\r\n\t\t\tTextOnly: true,\r\n\t\t\tTextMessage: options.TextMessage || null,\r\n\t\t\tOpacityMessage: options.OpacityMessage || false,\r\n\t\t\tCenterY: options.CenterY || false,\r\n\t\t\tBoxed: options.Boxed || false,\r\n\t\t\tPaddingRootElement: options.PaddingRootElement || null,\r\n\t\t\tZIndex: options.ZIndex || 1010,\r\n\t\t\tBackgroundColor: options.BackgroundColor || 'transparent',\r\n\t\t\tOverlayColor: options.OverlayColor || 'transparent',\r\n\t\t\tCursor: options.Cursor || 'normal',\r\n\t\t};\r\n\t\tBlockUI.Block(transparentOptions);\r\n\t}\r\n\r\n\tstatic Unblock(target?: HTMLElement, jBoxBlockButton?:boolean, callBack?: Function): void {\r\n\t\tif (target) {\r\n\t\t\t$(target).unblock({\r\n\t\t\t\tonUnblock: () => {\r\n\t\t\t\t\t$(target).css('position', '');\r\n\t\t\t\t\t$(target).css('zoom', '');\r\n\t\t\t\t\tcallBack && callBack();\r\n\t\t\t\t\tif (jBoxBlockButton){\r\n\t\t\t\t\t\tthis.JBoxToggleCloseButton(target, true);\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\t$.unblockUI();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static JBoxToggleCloseButton(target: HTMLElement, show?: boolean){\r\n\t\tlet el = $(target);\r\n\t\tlet jBox = el.closest('.jBox-wrapper');\r\n\t\tif (jBox.length === 1){\r\n\t\t\tlet closeButton = jBox.find('.jBox-closeButton');\r\n\r\n\t\t\tif (closeButton.length === 1){\r\n\r\n\t\t\t\tif (show){\r\n\t\t\t\t\tcloseButton.attr('data-BlockUiCounter', Counter.Instance.PrevValue);\r\n\t\t\t\t\tif ( Number(closeButton.attr('data-BlockUiCounter')) == 0) {\r\n\t\t\t\t\t\t$(closeButton).removeClass('blockButton');\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcloseButton.attr('data-BlockUiCounter', Counter.Instance.NextValue);\r\n\t\t\t\t\t$(closeButton).css('zIndex', ZIndexManager.Instance.NextValue);\r\n\t\t\t\t\t$(closeButton).addClass('blockButton');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static BlockTarget(options: IBlockUIOptions, html: string): void {\r\n\t\tlet el = $(options.Target);\r\n\r\n\t\tif (!!options.PaddingRootElement){\r\n\t\t\tel.css({'padding': options.PaddingRootElement + 'px'})\r\n\t\t}\r\n\r\n\t\tif (el.height() <= ($(window).height())) {\r\n\t\t\toptions.CenterY = true;\r\n\t\t}\r\n\r\n\t\tel.block({\r\n\t\t\tmessage: html,\r\n\t\t\tbaseZ: options.ZIndex ? options.ZIndex : 1010,\r\n\t\t\tcenterY: options.CenterY !== undefined ? options.CenterY : false,\r\n\t\t\tcss: {\r\n\t\t\t\ttop: '10%',\r\n\t\t\t\tborder: '0',\r\n\t\t\t\tpadding: '0',\r\n\t\t\t\tbackgroundColor: options.BackgroundColor,\r\n\t\t\t\tcursor: options.Cursor ? options.Cursor : 'wait'\r\n\t\t\t},\r\n\t\t\toverlayCSS: {\r\n\t\t\t\tbackgroundColor: options.OverlayColor ? options.OverlayColor : '#000000',\r\n\t\t\t\t// opacity: options.Boxed ? 0.05 : 0.1,\r\n\t\t\t\topacity: .5,\r\n\t\t\t\tcursor: options.Cursor ? options.Cursor : 'wait'\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (options.JBoxBlockButton){\r\n\t\t\tthis.JBoxToggleCloseButton(options.Target);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static BlockPage(options: IBlockUIOptions, html: string): void {\r\n\t\t$.blockUI({\r\n\t\t\tmessage: html,\r\n\t\t\tbaseZ: options.ZIndex ? options.ZIndex : ZIndexManager.Instance.NextValue,\r\n\t\t\tcss: {\r\n\t\t\t\tborder: '0',\r\n\t\t\t\tpadding: '0',\r\n\t\t\t\tbackgroundColor: 'none',\r\n\t\t\t\tcursor: options.Cursor ? options.Cursor : 'wait'\r\n\t\t\t},\r\n\t\t\toverlayCSS: {\r\n\t\t\t\tbackgroundColor: options.OverlayColor ? options.OverlayColor : '#000000',\r\n\t\t\t\t// opacity: options.Boxed ? 0.05 : 0.1,\r\n\t\t\t\topacity: .5,\r\n\t\t\t\tcursor: options.Cursor ? options.Cursor : 'wait'\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic GetTargetObjectFromTarget(target: HTMLElement): ITargetObject | {} {\r\n\t\treturn target ? {Target: target} : {};\r\n\t}\r\n} ","export var Config = {\r\n spheeres: {\r\n Title: 'Spheeres.com'\r\n },\r\n\r\n corsearch: {\r\n Title: 'Corsearch.com'\r\n }\r\n}\r\n\r\nexport class Brand {\r\n public static InitTitle(){\r\n document.title = Config[this.Name].Title;\r\n }\r\n\r\n public static get Name(){\r\n return window['brand'] || 'spheeres';\r\n }\r\n}","import * as $ from \"jquery\";\r\nimport \"jqueryCokie\";\r\n\r\nexport class CookieManager {\r\n private static authToken = 'token';\r\n private static refreshToken = 'refreshToken';\r\n private static adminToken = 'adminToken';\r\n private static sbiDesigner = 'sbiDesigner';\r\n\r\n public static Init() {\r\n $.cookie.raw = true;\r\n }\r\n\r\n public static SetValue(name: string, value: string) {\r\n $.cookie(name, value, {expires: 7});\r\n }\r\n\r\n public static GetValue(name: string): any {\r\n return $.cookie(name);\r\n }\r\n\r\n public static Remove(name: string) {\r\n $.removeCookie(name);\r\n }\r\n\r\n public static GetAuthToken() {\r\n return $.cookie(this.authToken);\r\n }\r\n\r\n public static SetAuthToken(token: string) {\r\n $.cookie(this.authToken, token, {expires: 14});\r\n }\r\n\r\n public static RemoveAuthToken() {\r\n $.removeCookie(this.authToken);\r\n $.removeCookie(this.authToken, { path: '/' }); \r\n }\r\n\r\n public static GetRefreshToken() {\r\n return $.cookie(this.refreshToken);\r\n }\r\n\r\n public static SetRefreshToken(token: string) {\r\n $.cookie(this.refreshToken, token, {expires: 28});\r\n }\r\n\r\n public static RemoveRefreshToken() {\r\n $.removeCookie(this.refreshToken);\r\n }\r\n\r\n public static GetAdminToken() {\r\n return $.cookie(this.adminToken);\r\n }\r\n\r\n public static SetAdminToken(token: string) {\r\n $.cookie(this.adminToken, token, {expires: 14});\r\n }\r\n\r\n public static RemoveAdminToken() {\r\n $.removeCookie(this.adminToken);\r\n }\r\n\r\n public static GetSBIDesigner() {\r\n return $.cookie(this.sbiDesigner);\r\n }\r\n\r\n public static SetSBIDesigner(sbiDesigner: string) {\r\n $.cookie(this.sbiDesigner, sbiDesigner, {expires: 7});\r\n }\r\n\r\n public static RemoveTokens() {\r\n this.RemoveAuthToken();\r\n this.RemoveRefreshToken();\r\n this.RemoveAdminToken();\r\n this.Remove(this.sbiDesigner);\r\n }\r\n}","\r\nexport class Counter {\r\n\tprivate static inst: Counter;\r\n\tprivate _counter: number;\r\n\r\n\tconstructor() {\r\n\t\tthis._counter = 0;\r\n\t}\r\n\r\n\tstatic get Instance() {\r\n\t\tif (this.inst === null || this.inst === undefined) {\r\n\t\t\tthis.inst = new Counter();\r\n\t\t}\r\n\t\treturn this.inst;\r\n\t}\r\n\r\n\tget NextValue(): number {\r\n\t\treturn ++ this._counter ;\r\n\t}\r\n\r\n\tget PrevValue(): number {\r\n\t\treturn -- this._counter ;\r\n\t}\r\n\r\n\tget ResetValue(): number {\r\n\t\treturn this._counter = 0 ;\r\n\t}\r\n}","export default function enumerable(classProto: any, propertyKey: string, propertyDescriptor: PropertyDescriptor) {\r\n propertyDescriptor.enumerable = true;\r\n}\r\n","export const FeatureTypes = {\r\n AlphaNumeric: 'A',\r\n Logic: 'L',\r\n Numeric: 'N',\r\n Range: 'R'\r\n};","export enum FieldFlags {\r\n System = 1,\r\n Required = 2,\r\n ReadOnly = 4,\r\n Indexed = 8,\r\n Unique = 16,\r\n Virtual = 32,\r\n Global = 64,\r\n Hidden = 128,\r\n Translate = 256\r\n}","export enum LifeStatusGroupEnum {\r\n\tPlanned,\r\n\tAcquired,\r\n\tOperational,\r\n\tMaintained,\r\n\tRetired,\r\n\tExample,\r\n\tError\r\n}\r\n\r\nexport class LifeStatusGroups {\r\n\tprivate static LifeStatusGroupsArray = [\r\n\t\t{ Group: LifeStatusGroupEnum.Planned, Start: 1000, End: 1999 },\r\n\t\t{ Group: LifeStatusGroupEnum.Acquired, Start: 2000, End: 2999 },\r\n\t\t{ Group: LifeStatusGroupEnum.Operational, Start: 3000, End: 3999 },\r\n\t\t{ Group: LifeStatusGroupEnum.Maintained, Start: 4000, End: 4999 },\r\n\t\t{ Group: LifeStatusGroupEnum.Retired, Start: 5000, End: 5999 },\r\n\t\t{ Group: LifeStatusGroupEnum.Example, Start: 6000, End: 6999 },\r\n\t\t{ Group: LifeStatusGroupEnum.Error, Start: 7000, End: 7999 }\r\n\t];\r\n\r\n\tpublic static GetLifeStatusGroup(sort: number): LifeStatusGroupEnum {\r\n\t\tconst selectedLifeStatusGroup =\r\n\t\t\tthis.LifeStatusGroupsArray.find(element => element.Start <= sort && element.End >= sort);\r\n\t\treturn selectedLifeStatusGroup && selectedLifeStatusGroup.Group;\r\n\t}\r\n}","export const LOCAL_STORAGE = {\r\n BUILD_VERSION: 'buildVersion',\r\n LAST_DB: 'lastDb',\r\n LAST_LOGIN:'lastLogin',\r\n LANGUAGE: 'language',\r\n FILE_DIR: 'fileDir',\r\n HYPERLINK_SOURCE: 'hyperlinkSource',\r\n LOCK_DATE: 'lockDate'\r\n};","export enum ModelState { NoChanges, New, Changed, Deleted }","export enum NotificationTypes {\r\n Success,\r\n Warning,\r\n Failed\r\n}","import enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport class Rights {\r\n\tconstructor(public Name: string, public TranslatedName : string, public Value: number) {\r\n\r\n\t}\r\n\r\n\t@enumerable get Translation(): string {\r\n\t\treturn this.TranslatedName;\r\n\t}\r\n}\r\n\r\nexport class RecordSecurityRights {\r\n\tSelect: Rights;\r\n\tNoAccess: Rights;\r\n\tSearchOnly: Rights;\r\n\tReadOnly: Rights;\r\n\tEdit: Rights;\r\n\tEditDelete: Rights;\r\n\tEditDeleteSecurity: Rights;\r\n\tFullAccess: Rights;\r\n\r\n\tprivate static _instance;\r\n\r\n\tprivate constructor() {\r\n\t\tthis.Select = new Rights(\"---Select rights---\", `---${LABELS.SELECT_RIGHTS}---`, null);\r\n\t\tthis.NoAccess = new Rights(\"No Access\", LABELS.NO_ACCESS_LABEL, 0);\r\n\t\tthis.SearchOnly = new Rights(\"Search Only\", LABELS.SEARCH_ONLY_LABEL, 1);\r\n\t\tthis.ReadOnly = new Rights(\"Read Only\", LABELS.READ_ONLY_FLAG, 3);\r\n\t\tthis.Edit = new Rights(\"Edit\", LABELS.EDIT, 7);\r\n\t\tthis.EditDelete = new Rights(\"Edit/Delete\", LABELS.EDITDELETE_LABEL, 15);\r\n\t\tthis.EditDeleteSecurity = new Rights(\"Edit/Delete/Security\", LABELS.EDIT_DELETE_SECURITY_LABEL, 263);\r\n\t\tthis.FullAccess = new Rights(\"Full Access\", LABELS.FULL_ACCESS_LABEL, 271);\r\n\t}\r\n\r\n\tstatic get Instance() {\r\n\t\treturn this._instance || (this._instance = new RecordSecurityRights());\r\n\t}\r\n\r\n\tGetAll() {\r\n\t\treturn Object.keys(this)\r\n\t\t\t.filter(key => this[key] instanceof Rights)\r\n\t\t\t.map(key => this[key]);\r\n\t}\r\n}","export enum ScreenTypes {\r\n\tConsultScreen,\r\n\tListScreen,\r\n\tEditScreen,\r\n\tNone,\r\n\tFormDesigner,\r\n\tPortlet,\r\n\tSpecialScreen,\r\n\tDashboard,\r\n LinkEditor,\r\n\tLookupEditorNewRecord,\r\n\tQueryScreen,\r\n\tCardScreen,\r\n\tProcessCardPage,\r\n\tStepsScreen,\r\n\tEmptyScreen\t\r\n}","export enum SERVER_REQUEST_ERRORS {\r\n NOT_FOUND,\r\n INTERNAL\r\n}\r\n\r\nexport function GetServerRequestError(status: number) : SERVER_REQUEST_ERRORS {\r\n if(status === 404) return SERVER_REQUEST_ERRORS.NOT_FOUND;\r\n if(status === 500) return SERVER_REQUEST_ERRORS.INTERNAL;\r\n}","import * as _ from 'underscore';\r\n\r\nexport class EventHandlerItem {\r\n constructor(public type: string,\r\n public data: any,\r\n public context: any,\r\n public repeat: boolean,\r\n public action: (args: EventArgs) => void) {\r\n }\r\n}\r\n\r\nexport class EventArgs {\r\n constructor(\r\n public source: Event,\r\n public type: string,\r\n public data: any) {\r\n }\r\n}\r\n\r\nexport class Event {\r\n\r\n private _events: EventHandlerItem[] = [];\r\n private _allowedEvents: string[] = [];\r\n private _name = \"\";\r\n\r\n protected SetName(name: string): void {\r\n if (name.lastIndexOf(\".\") !== name.length - 1)\r\n name = name + \".\";\r\n this._name = name;\r\n }\r\n\r\n protected AddEvent(type: string) {\r\n type = this.PrefixName(type);\r\n this._allowedEvents.push(type);\r\n }\r\n\r\n private PrefixName(type: string) {\r\n if (this.StartsWith(type, this._name))\r\n return type;\r\n else\r\n return this._name + type;\r\n }\r\n\r\n private StartsWith(longerString: string, shorterString: string): boolean {\r\n return longerString.length >= shorterString.length && shorterString == longerString.substr(0, shorterString.length);\r\n }\r\n\r\n On(type: string, context: any, handler: (args: EventArgs) => void, data?: any, repeat?: boolean): Event {\r\n if (typeof (repeat) === \"undefined\")\r\n repeat = true;\r\n\r\n var allowed = true;\r\n type = this.PrefixName(type);\r\n if (this._allowedEvents.length > 0) {\r\n allowed = false;\r\n this._allowedEvents.forEach((ev) => {\r\n if (ev === type) allowed = true;\r\n });\r\n }\r\n\r\n if (!allowed)\r\n throw new RangeError(\"Error:'\" + type + \"' is not a known event for this object\");\r\n\r\n var hdlr = new EventHandlerItem(type, data || {}, context, repeat, handler);\r\n this._events.push(hdlr);\r\n return this;\r\n }\r\n\r\n One(type: string, context: any, handler: (args: EventArgs) => void, data?: any) {\r\n return this.On(type, context, handler, data, false);\r\n }\r\n\r\n Off(type: string, context?: any, handler?: (args: EventArgs) => void): Event {\r\n var newhdlrs: EventHandlerItem[] = [];\r\n\r\n type = this.PrefixName(type);\r\n if (typeof (handler) !== \"undefined\")\r\n this._events.forEach(ehi => {\r\n if (ehi.type !== type || ehi.context !== context || ehi.action !== handler) newhdlrs.push(ehi);\r\n });\r\n else if (typeof (context) !== \"undefined\")\r\n this._events.forEach(ehi => {\r\n if (ehi.type !== type || ehi.context !== context) newhdlrs.push(ehi);\r\n });\r\n else\r\n this._events.forEach(ehi => {\r\n if (ehi.type !== type) newhdlrs.push(ehi);\r\n });\r\n\r\n this._events = newhdlrs;\r\n return this;\r\n }\r\n\r\n Trigger(type: string, extraData?: any) {\r\n type = this.PrefixName(type);\r\n\r\n const handlersToExecute = this._events.filter(ehi => ehi.type === type);\r\n handlersToExecute.forEach(ehi => {\r\n const data = ehi.data || {};\r\n this.Extend(data, extraData || {});\r\n ehi.action.apply(ehi.context, [new EventArgs(this, ehi.type, data)])\r\n });\r\n\r\n const handlersToRemove = handlersToExecute.filter(ehi => !ehi.repeat);\r\n this._events = _.without(this._events, ...handlersToRemove);\r\n }\r\n\r\n Extend(obj1: any, obj2: any): any {\r\n for (var attrname in obj2) {\r\n obj1[attrname] = obj2[attrname];\r\n }\r\n }\r\n} ","import * as _ from \"underscore\";\r\nimport {EventBus, IEventArgs} from \"./EventBus\";\r\n\r\nexport type EventHandlerCallback = (eventArgs: IEventArgs) => void;\r\nexport type EventHandlerCondition = (eventArgs: IEventArgs) => boolean;\r\n\r\nexport class EventHandler {\r\n private _handlers: EventHandlerCallback[];\r\n private _handlerConditions: EventHandlerCondition[];\r\n\r\n constructor(private _bus: EventBus, private _eventName: string, private _context: TContext) {\r\n this._handlers = [];\r\n this._handlerConditions = [];\r\n }\r\n\r\n get EventName() {\r\n return this._eventName;\r\n }\r\n\r\n When(condition: EventHandlerCondition) {\r\n this._handlerConditions.push(condition);\r\n return this;\r\n }\r\n\r\n Using(handler: EventHandlerCallback) {\r\n this._handlers.push(handler);\r\n return this;\r\n }\r\n\r\n Always() {\r\n this._bus.On(this._eventName, this._context, args => this.ExecuteHandlers(args.data));\r\n return this;\r\n }\r\n\r\n Once() {\r\n this._bus.One(this._eventName, this._context, args => this.ExecuteHandlers(args.data));\r\n return this;\r\n }\r\n\r\n UnSubscribe() {\r\n this._bus.Off(this._eventName, this._context);\r\n return this;\r\n }\r\n\r\n private ExecuteHandlers(eventArgs: IEventArgs) {\r\n const allConditionsAreMet = _.every(this._handlerConditions, condition => condition.call(this._context, eventArgs));\r\n\r\n if (allConditionsAreMet) {\r\n this._handlers.forEach(handler => handler.call(this._context, eventArgs));\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n}","import {Event} from 'Core/Common/Event';\r\nimport {EventHandler} from './EventHandler';\r\n\r\nexport interface IEventArgs {\r\n Data: TData;\r\n Source: TSource;\r\n}\r\n\r\nexport class EventBus extends Event {\r\n constructor() {\r\n super();\r\n }\r\n\r\n Dispatch(eventName: string, args?: IEventArgs) {\r\n this.Trigger(eventName, args);\r\n }\r\n\r\n Handle(eventName: string, context: any): EventHandler {\r\n return new EventHandler(this, eventName, context);\r\n }\r\n}","import {IDisposable, IOnInit} from \"Core/Common/Interfaces/LifeCycleHooks\";\r\nimport {EventBus} from \"./EventBus\";\r\nimport {EventHandler} from \"./EventHandler\";\r\n\r\nexport class EventBusConsumer implements IOnInit, IDisposable {\r\n private _eventHandlerExecutors: EventHandler[];\r\n\r\n private _eventBus: EventBus;\r\n\r\n constructor() {\r\n this._eventHandlerExecutors = [];\r\n }\r\n\r\n get EventBus() {\r\n return this._eventBus;\r\n }\r\n\r\n AssignEventBus(bus: EventBus) {\r\n this._eventHandlerExecutors.forEach(handler => handler.UnSubscribe());\r\n this._eventHandlerExecutors = [];\r\n\r\n this._eventBus = bus;\r\n }\r\n\r\n DispatchEvent(eventName: string, eventData?: TData) {\r\n this._eventBus.Dispatch(eventName, {Data: eventData, Source: this});\r\n }\r\n\r\n HandleEvent(eventName: string): EventHandler;\r\n HandleEvent(eventName: string): EventHandler;\r\n HandleEvent(eventName: string): EventHandler;\r\n HandleEvent(eventName: string): EventHandler {\r\n const eventHandlerExecutor = this._eventBus.Handle(eventName, this);\r\n this._eventHandlerExecutors.push(eventHandlerExecutor);\r\n\r\n return eventHandlerExecutor as EventHandler;\r\n }\r\n\r\n StopHandlingEvent(eventName: string) {\r\n const eventHandlerExecutors = this.FindEventHandlerExecutors(eventName);\r\n eventHandlerExecutors.forEach(executor => executor.UnSubscribe());\r\n }\r\n\r\n OnInit() {\r\n }\r\n\r\n Dispose() {\r\n this._eventHandlerExecutors.forEach(executor => executor.UnSubscribe());\r\n this._eventHandlerExecutors = [];\r\n }\r\n\r\n private FindEventHandlerExecutors(eventName: string): EventHandler[] {\r\n return this._eventHandlerExecutors.filter(handler => handler.EventName === eventName);\r\n }\r\n}","import enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nimport {LockManager} from \"Core/Components/Locker/LockManager\";\r\n\r\nexport const EVENTS_TO_LISTEN = {\r\n\tCLICK: 'click',\r\n\tKEYUP: 'keyup'\r\n};\r\n\r\nexport class EventTracker {\r\n\tprivate static _instance: EventTracker;\r\n\r\n\tprivate constructor() {\r\n\t}\r\n\r\n\tstatic get Instance() {\r\n\t\tif (!EventTracker._instance) {\r\n\t\t\tEventTracker._instance = new EventTracker();\r\n\t\t}\r\n\r\n\t\treturn EventTracker._instance;\r\n\t}\r\n\r\n\tListenEvents() {\r\n\t\tObject.keys(EVENTS_TO_LISTEN).forEach(eventKey => {\r\n\t\t\tconst domEvent = EVENTS_TO_LISTEN[eventKey];\r\n\t\t\tdocument.addEventListener(domEvent, () => this.RegisterEvent(domEvent));\r\n\t\t});\r\n\t}\r\n\r\n\tRegisterEvent(eventType: string) {\r\n\t\tLockManager.Instance.RegisterEvent();\r\n\t}\r\n}","import * as _ from 'underscore';\r\nimport {Format} from \"../../DatabaseDesigner/FieldConfig\";\r\n\r\nexport const FORMATS = {\r\n PHONE_NUMBER: 'Phone number',\r\n DUTCH_POSTAL_CODE: 'Dutch Postal Code'\r\n}\r\n\r\nexport class FieldFormat {\r\n\tstatic CURRENCY = 'Currency';\r\n\tstatic LONGDATE = 'LongDate';\r\n\tstatic DECIMAL = 'Decimal';\r\n\tstatic STARTSWITHCAPITAL = 'Startswithcapital';\r\n\tstatic LOWERCASE = 'Lowercase';\r\n\tstatic IPADDRESS = 'IPAddress';\r\n\tstatic PHONENUMBER = 'Phonenumber';\r\n\tstatic UPPERCASE = 'Uppercase';\r\n\tstatic SHORTDATE = 'ShortDate';\r\n\tstatic DATETIME = 'DateTime';\r\n\tstatic DATE = 'Date';\r\n\tstatic DD_MMM = 'DD-MMM';\r\n\tstatic DD_MM = 'DD-MM';\r\n\tstatic MMM_YYYY = 'MMM-YYYY';\r\n\tstatic MM_YY = 'MM-YY';\r\n\tstatic YYYY_WW = 'YYYY-WW';\r\n\tstatic TIMESPAN = 'TimeSpan';\r\n\tstatic TIME = 'Time';\r\n\tstatic LONGTIME = 'LongTime';\r\n\tstatic URL = 'URL';\r\n\tstatic MAIL = 'Mail';\r\n\tstatic PERCENTAGE = 'Percentage';\r\n\tstatic SQL = 'SQL';\r\n\tstatic SKYPE = 'SKYPE';\r\n static LINKEDIN = 'Linkedin';\r\n\tstatic FACEBOOK = 'Facebook';\r\n\tstatic YOUTUBE = 'YouTube';\r\n\tstatic TWITTER = 'Twitter';\r\n\tstatic INSTAGRAM = 'Instagram';\r\n\tstatic PINTEREST = 'Pinterest';\r\n\tstatic MEDIUM = 'Medium';\r\n\tstatic DUTCHPOSTALCODE = 'DutchPostalCode';\r\n\tstatic INTEGER = 'Integer';\r\n\tstatic LOCALURL = 'Local URL';\r\n static BARCODE = 'Barcode';\r\n static DD_MMM_YYYY = 'DD-MMM-YYYY';\r\n\r\n static whiteSpaceReplate = / /g;\r\n\r\n\tpublic static Replacer(name) {\r\n\t\treturn name? name.replace(this.whiteSpaceReplate, '') : '';\r\n\t}\r\n\r\n\tpublic static IsCurrency(name: string): boolean { \r\n\t\treturn this.Replacer(name).toLowerCase() === this.CURRENCY.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsLongDate(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.LONGDATE.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsDecimal(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.DECIMAL.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsStartswithcapital(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.STARTSWITHCAPITAL.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsLowercase(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.LOWERCASE.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsIPAddress(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.IPADDRESS.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsPhonenumber(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.PHONENUMBER.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsUppercase(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.UPPERCASE.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsShortDate(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.SHORTDATE.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsDateTime(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.DATETIME.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsTime(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.TIME.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsTimeSpan(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.TIMESPAN.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsLongTime(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.LONGTIME.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsURL(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.URL.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsMail(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.MAIL.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsPercentage(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.PERCENTAGE.toLowerCase();\r\n\t}\r\n\r\n\tpublic static IsDutchPostalCode(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.DUTCHPOSTALCODE.toLowerCase();\r\n }\r\n\r\n public static IsBarcode(name: string): boolean {\r\n return this.Replacer(name).toLowerCase() === this.BARCODE.toLowerCase();\r\n }\r\n\r\n\tpublic static IsInteger(name: string): boolean {\r\n\t\treturn this.Replacer(name).toLowerCase() === this.INTEGER.toLowerCase();\r\n\t}\r\n\r\n\tpublic static GetFormat(name: string) {\r\n\t\tconst formatKeys= Object.keys(FieldFormat);\r\n\t\tconst key = _.find(formatKeys, (formatKey: any) => FieldFormat[formatKey] === name);\r\n\t\treturn key;\r\n\t}\r\n}","export class FlagResolver {\r\n static ContainsFlag(flagToSearch: number, flags: number) {\r\n return (flagToSearch & flags) === flagToSearch;\r\n }\r\n}","export class Guid {\r\n\tstatic NewGuid(): string {\r\n\t\tvar d = new Date().getTime();\r\n\t\tvar guid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n\t\t\tvar r = (d + Math.random() * 16) % 16 | 0;\r\n\t\t\td = Math.floor(d / 16);\r\n\t\t\treturn (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n\t\t});\r\n\t\treturn guid;\r\n\t}\t\r\n} ","export class ImagePreloader{\r\n static Preload(scr: string){\r\n if(scr){\r\n var img = new Image();\r\n img.src = scr; \r\n }\r\n }\r\n\r\n static FormatImageUrl(guid: string){\r\n\r\n if(guid && guid.indexOf('api/FilesApi/GetImage/') < 0){\r\n return `api/FilesApi/GetImage/${guid}`;\r\n }\r\n return guid;\r\n \r\n }\r\n}","export class MobileChecker {\r\n\tstatic IsMobile(): boolean {\r\n\t\tconst browserInfo = navigator.userAgent || navigator.vendor || window['opera'];\r\n\r\n\t\treturn (\r\n\t\t\t/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i\r\n\t\t\t\t.test(browserInfo) ||\r\n\t\t\t/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i\r\n\t\t\t\t.test(browserInfo.substr(0, 4))\r\n\t\t)\r\n\t}\r\n}","import {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {GlobalManager} from 'Core/GlobalManager/GlobalManager';\r\nimport 'jBox';\r\nimport 'attrchange';\r\nimport 'attrchange_ext';\r\nimport {Event} from 'Core/Common/Event';\r\nimport * as ko from \"knockout\";\r\nimport { Counter } from \"Core/Common/Counter\";\r\n\r\ninterface Options {\r\n closeOnEsc?: boolean;\r\n height?: number | string;\r\n width?: number | string;\r\n widthInPercent?: any;\r\n heightInPercent?: any;\r\n minHeight?: number | string;\r\n maxHeight?: number | string;\r\n maxWidth?: number | string;\r\n minWidth?: number | string;\r\n closeButton?: boolean | string;\r\n addClass?: string;\r\n createOnInit?: boolean;\r\n animation?: boolean;\r\n blockScrol?: boolean;\r\n isolateScroll?: boolean;\r\n reposition?: boolean;\r\n onCreated?: Function;\r\n onClose?: Function;\r\n onOpen?: Function;\r\n onCloseComplete?: Function;\r\n fade?: number;\r\n closeCallback?: Function;\r\n closeOnClick?: boolean | string;\r\n appendTo?: any;\r\n content?: any;\r\n blockScroll?: boolean;\r\n outside?: any;\r\n position?: {\r\n x: string,\r\n y: string\r\n }\r\n}\r\n\r\ninterface ResizePopupOptions {\r\n widthInPercent: number;\r\n heightInPercent: number;\r\n}\r\n\r\nexport class Modal extends Event {\r\n private _jbox: jBox;\r\n private _wrapper: HTMLDivElement;\r\n\r\n constructor(customOptions?: Options,\r\n isUseGlobal: boolean = true,\r\n isDragOnMouseDown: boolean = false,\r\n resizePopup?: ResizePopupOptions) {\r\n super();\r\n\r\n if (!customOptions) {\r\n customOptions = {}\r\n }\r\n\r\n this.AddEvent(\"CLOSE\");\r\n\r\n let $window = $(window);\r\n let options = customOptions || {};\r\n let self = this;\r\n let defaultWidth,\r\n recalculateTimerId,\r\n defaultOptions = {\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n repositionOnOpen: true,\r\n repositionOnContent: true,\r\n closeOnEsc: customOptions.closeOnEsc || true,\r\n overlay: true,\r\n adjustPosition: true,\r\n minHeight: customOptions.height,\r\n minWidth: customOptions.minWidth || 50,\r\n height: customOptions.height,\r\n width: customOptions.width,\r\n widthInPercent: customOptions.widthInPercent,\r\n heightInPercent: customOptions.heightInPercent,\r\n maxHeight: customOptions.maxHeight,\r\n\r\n addClass: customOptions.addClass,\r\n createOnInit: customOptions.createOnInit || false,\r\n animation: customOptions.animation || {open: 'zoomIn', close: 'zoomOut'},\r\n fade: customOptions.fade || 0.4,\r\n blockScroll: customOptions.blockScroll || false,\r\n closeOnClick: false,\r\n closeButton: customOptions.closeButton || 'box',\r\n closeCallback: customOptions.closeCallback || null,\r\n outside: customOptions.outside || null,\r\n position: {\r\n x: customOptions.position && customOptions.position.x || 'center',\r\n y: customOptions.position && customOptions.position.y || 'center'\r\n },\r\n\r\n onClose: function () {\r\n ko.cleanNode(self.Wrapper);\r\n $('#' + this.id).detach();\r\n $('#jBox-overlay' + this.id).detach();\r\n defaultOptions.closeCallback && defaultOptions.closeCallback();\r\n $(self).trigger('close');\r\n self.Trigger(\"CLOSE\");\r\n self.Clear(this.id);\r\n Counter.Instance.ResetValue;\r\n },\r\n\r\n appendTo: 'body:first'\r\n };\r\n\r\n const recalculate = ($item, state, width, height) => {\r\n let getDefaultWidth,\r\n defaultStyle,\r\n getHeight,\r\n widthPercent;\r\n\r\n clearInterval(recalculateTimerId);\r\n\r\n let isMobile = MobileChecker.IsMobile();\r\n\r\n if (isMobile) {\r\n width = 100;\r\n defaultOptions.widthInPercent = 100;\r\n } else {\r\n if (width != 'undefined') {\r\n defaultWidth = width;\r\n } else {\r\n width = defaultWidth;\r\n }\r\n\r\n getDefaultWidth = () => {\r\n let pixels,\r\n screenWidth,\r\n percentage;\r\n\r\n if (state) {\r\n pixels = $item.width(),\r\n screenWidth = $window.width(),\r\n percentage = (screenWidth - pixels) / screenWidth * 100;\r\n\r\n return 100 - percentage;\r\n }\r\n }\r\n }\r\n\r\n defaultStyle = () => {\r\n let windowHeight = $window.height(),\r\n itemHeight = $item.height(),\r\n top = (windowHeight - itemHeight) / 2,\r\n scripts = $item.find('script');\r\n\r\n $item\r\n .css('margin', '0 auto')\r\n .css('left', '0')\r\n .css('right', '0')\r\n .css('top', top + 'px');\r\n\r\n if (scripts.length > 0) {\r\n scripts.css('display', 'none');\r\n }\r\n };\r\n\r\n widthPercent = (percent) => {\r\n if (percent > 0 && percent <= 100) {\r\n $item.css('width', percent + '%');\r\n } else {\r\n $item.css('width', width + '%');\r\n }\r\n };\r\n\r\n if (width === 0) {\r\n width = getDefaultWidth();\r\n }\r\n\r\n if (state) {\r\n defaultStyle();\r\n }\r\n\r\n widthPercent(width);\r\n\r\n $item.removeClass('opacity-0-imp');\r\n\r\n getHeight = () => {\r\n let jBoxContent,\r\n searchResultsScroll,\r\n searchScreen,\r\n alternativeEntitiesContainerHeight,\r\n searchPaginationHeight = 0,\r\n searchToolbarFormGroupHeight = 0,\r\n fluffHeight = 127;\r\n\r\n jBoxContent = $item.find('.jBox-content');\r\n searchResultsScroll = $item.find('.search-results-scroll');\r\n searchScreen = $item.find('.searchScreenContainer');\r\n\r\n if (searchResultsScroll.length > 0) {\r\n let alternativeEntitiesContainer: any = $('.alternativeEntitiesContainer').outerHeight(true);\r\n\r\n alternativeEntitiesContainerHeight = alternativeEntitiesContainer && alternativeEntitiesContainer || 0;\r\n searchToolbarFormGroupHeight = searchScreen.find('.searchToolbarFormGroup').outerHeight(true);\r\n searchPaginationHeight = searchScreen.find('.search-pagination').outerHeight(true);\r\n\r\n let reservedHeight = alternativeEntitiesContainerHeight + searchToolbarFormGroupHeight + searchPaginationHeight + fluffHeight;\r\n searchResultsScroll.find('tbody').css('max-height', (height - reservedHeight) + 'px');\r\n\r\n jBoxContent.css({\r\n 'overflow': 'hidden',\r\n 'max-height': height\r\n })\r\n }\r\n\r\n jBoxContent.css({'min-height': height, 'max-height': height});\r\n };\r\n\r\n if (height !== undefined) {\r\n getHeight();\r\n defaultStyle();\r\n }\r\n };\r\n\r\n const getMaxHeight = () => {\r\n let popupHeightInPercent = resizePopup && resizePopup.heightInPercent || defaultOptions.heightInPercent || GlobalManager.Instance.GetGlobal('PopupHeightInPercent'),\r\n percentHeight = parseInt(popupHeightInPercent),\r\n maxHeight,\r\n getHeight;\r\n\r\n getHeight = (percent) => {\r\n return $(window).height() / 100 * percent;\r\n };\r\n\r\n if (!isNaN(percentHeight) && percentHeight !== 0) {\r\n maxHeight = getHeight(percentHeight);\r\n } else {\r\n maxHeight = getHeight(80);\r\n }\r\n\r\n return maxHeight;\r\n };\r\n\r\n const initRecalculate = function () {\r\n let popupWidthInPercent = null;\r\n\r\n if (isUseGlobal){\r\n popupWidthInPercent = GlobalManager.Instance.GetGlobal('PopupWidthInPercent');\r\n } else if (defaultOptions.widthInPercent){\r\n popupWidthInPercent = defaultOptions.widthInPercent;\r\n } else if (resizePopup) {\r\n popupWidthInPercent = resizePopup.widthInPercent;\r\n } else {\r\n popupWidthInPercent = 80;\r\n }\r\n\r\n const percentWidth = parseInt(popupWidthInPercent);\r\n\r\n if (!isNaN(percentWidth)) {\r\n recalculateTimerId = setInterval(recalculate.bind(this, this.wrapper, true, percentWidth, getMaxHeight()), 50);\r\n\r\n const resizeFn = function () {\r\n recalculate(this.wrapper, false, percentWidth, getMaxHeight());\r\n }.bind(this);\r\n\r\n this.wrapper.addClass('opacity-0-imp');\r\n\r\n recalculate(this.wrapper, false, percentWidth, getMaxHeight());\r\n\r\n setTimeout(() => $window.on('resize', resizeFn), 0);\r\n }\r\n };\r\n\r\n const maxHeight = getMaxHeight();\r\n\r\n options.maxHeight = maxHeight;\r\n options.reposition = true;\r\n\r\n if (isUseGlobal || defaultOptions.widthInPercent || resizePopup) {\r\n options.onCreated = initRecalculate;\r\n }\r\n if (isUseGlobal || resizePopup) {\r\n options.height = maxHeight;\r\n options.minHeight = (options.minHeight && options.minHeight <= maxHeight) ? options.minHeight : maxHeight;\r\n } else if (defaultOptions.maxHeight) {\r\n options.maxHeight = defaultOptions.maxHeight;\r\n }\r\n\r\n if (isDragOnMouseDown) {\r\n options.onOpen = () => {\r\n let curDown = false,\r\n curYPos = 0,\r\n curXPos = 0;\r\n const scrolledElement = $(this.Wrapper).parent('.jBox-content');\r\n scrolledElement.mousemove(function (m) {\r\n if (curDown) {\r\n scrolledElement.scrollTop(curYPos - m.pageY);\r\n scrolledElement.scrollLeft(curXPos - m.pageX);\r\n }\r\n });\r\n\r\n scrolledElement.mousedown(function (m) {\r\n const parentOffset = $(this).children().position();\r\n curDown = true;\r\n curYPos = m.pageY - parentOffset.top;\r\n curXPos = m.pageX - parentOffset.left;\r\n });\r\n\r\n scrolledElement.mouseup(function (m) {\r\n curDown = false;\r\n });\r\n }\r\n }\r\n\r\n if (options.width === 'auto') {\r\n this._wrapper = document.createElement('div');\r\n this._wrapper.setAttribute('data-bind', 'template: { name: GetTemplateName.bind($data), afterRender: $data.AfterRender ? $data.AfterRender.bind($data) : function(){} }');\r\n options.content = $(this._wrapper);\r\n this._jbox = new jBox('Modal', $.extend({}, defaultOptions, options));\r\n } else {\r\n this._jbox = new jBox('Modal', $.extend({}, defaultOptions, options));\r\n this._wrapper = document.createElement('div');\r\n this._wrapper.setAttribute('data-bind', 'template: { name: GetTemplateName.bind($data), afterRender: $data.AfterRender ? $data.AfterRender.bind($data) : function(){} }');\r\n this._jbox.setContent($(this._wrapper));\r\n }\r\n }\r\n\r\n AddClass(className: string){\r\n this._jbox.container.find('.jBox-content').addClass(className);\r\n }\r\n\r\n RemoveClass(className: string){\r\n this._jbox.container.find('.jBox-content').removeClass(className);\r\n }\r\n\r\n get Wrapper(): HTMLDivElement {\r\n return this._wrapper;\r\n }\r\n\r\n SetContent(content: JQuery | string): void {\r\n $(this._wrapper).append(content);\r\n }\r\n\r\n Clear(id?:string){\r\n $(this._wrapper).empty();\r\n if (id){\r\n $(`#${id}-overlay`).remove();\r\n }\r\n }\r\n\r\n Show(): void {\r\n this._jbox.open();\r\n }\r\n\r\n Close(options?: { ignoreDelay?: boolean }): void {\r\n this._jbox.close(options);\r\n }\r\n\r\n Reposition(): void {\r\n this._jbox.position();\r\n }\r\n\r\n Overlay() {\r\n return this._jbox.overlay;\r\n }\r\n\r\n Container() {\r\n return this._jbox.container;\r\n }\r\n\r\n Destroy() {\r\n this._jbox.destroy();\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n OneRepositionModal(time: number = 300){\r\n setTimeout(() => {\r\n $(window).trigger('resize');\r\n }, time);\r\n }\r\n}\r\n","import {Notifier} from './Notifier';\r\n\r\nexport class NetworkMonitor {\r\n private static _timeout = 3000;\r\n private static _timeoutActive = false;\r\n\r\n static Init() {\r\n window.addEventListener('offline', () => {\r\n this.ShowOfflineMessage();\r\n });\r\n\r\n window.addEventListener('online', () => {\r\n this.ShowOnlineMessage();\r\n });\r\n }\r\n\r\n static ShowOfflineMessage() {\r\n this.ShowConnectionMessage(() => {\r\n new Notifier().Warning('Looks like you are offline 🥺');\r\n });\r\n }\r\n\r\n static ShowOnlineMessage() {\r\n this.ShowConnectionMessage(() => {\r\n new Notifier().Success('Welcome back again 😍')\r\n });\r\n }\r\n\r\n private static ShowConnectionMessage(showMessageFunc) {\r\n if (!this._timeoutActive) {\r\n showMessageFunc();\r\n\r\n this._timeoutActive = true;\r\n\r\n setTimeout(() => {\r\n this._timeoutActive = false;\r\n }, this._timeout);\r\n }\r\n }\r\n}","import \"jBox\"\r\nimport \"jBox.Notice\"\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager'\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\ninterface IMessageType {\r\n Color: string;\r\n Title: string;\r\n}\r\n\r\nexport class MessageTypes {\r\n get Warning(): IMessageType {\r\n return {Color: 'yellow', Title: this.GetTitle(LABELS.NOTIFIER_WARNING, 'Warning')};\r\n }\r\n\r\n get Success(): IMessageType {\r\n return {Color: 'green', Title: this.GetTitle(LABELS.NOTIFIER_SUCCESS, 'Success')};\r\n }\r\n\r\n get Fail(): IMessageType {\r\n return {Color: 'red', Title: this.GetTitle(LABELS.NOTIFIER_FAIL, 'Fail')};\r\n }\r\n\r\n private GetTitle(title: string, fallback: string): string {\r\n return isNaN(+title) ? title : fallback;\r\n }\r\n}\r\n\r\ninterface INotification {\r\n Message: string;\r\n Type: IMessageType;\r\n ZIndex?: number\r\n}\r\n\r\nexport class Notifier {\r\n private _container: any;\r\n private _messageTypes: MessageTypes;\r\n\r\n constructor(container?: any) {\r\n this._container = container;\r\n this._messageTypes = new MessageTypes();\r\n }\r\n\r\n Show(notification: INotification) {\r\n var options = {\r\n target: this._container || 'body',\r\n title: notification.Type.Title,\r\n content: notification.Message,\r\n theme: 'NoticeBorder',\r\n position: {\r\n x: 'right',\r\n y: 'top'\r\n },\r\n zIndex: notification.ZIndex || 1000000,\r\n color: notification.Type.Color,\r\n animation: 'flip',\r\n offset: null\r\n };\r\n\r\n if (!this._container) {\r\n options.offset = {\r\n y: 50\r\n }\r\n }\r\n return new jBox('Notice', options);\r\n }\r\n\r\n Success(message) {\r\n this.Show({Message: message, Type: this._messageTypes.Success});\r\n\r\n }\r\n\r\n Failed(message) {\r\n this.Show({Message: message, Type: this._messageTypes.Fail});\r\n\r\n }\r\n\r\n Warning(message) {\r\n this.Show({Message: message, Type: this._messageTypes.Warning});\r\n }\r\n \r\n static Failed(message) {\r\n new Notifier().Failed(message);\r\n }\r\n\r\n static Warning(message) {\r\n new Notifier().Warning(message);\r\n }\r\n\r\n static Success(message) {\r\n new Notifier().Success(message);\r\n }\r\n}\r\n\r\nexport var messages = {\r\n GENERAL: {\r\n RECORD_CREATED: {\r\n title: \"Success\",\r\n message: \"Record created\",\r\n type: \"success\"\r\n },\r\n\r\n RECORD_UPDATED: {\r\n title: \"Sucesss\",\r\n message: \"Record updated\",\r\n type: \"success\"\r\n },\r\n\r\n RECORD_SAVED: {\r\n title: \"Sucesss\",\r\n message: \"Record saved\",\r\n type: \"success\"\r\n }\r\n },\r\n\r\n FORM_RESETED: {\r\n title: \"Failed\",\r\n message: \"Form reseted.\",\r\n type: \"error\"\r\n },\r\n\r\n QUERY_BUILDER: {\r\n SELECTED_FIELD: {\r\n title: \"Failed\",\r\n message: \"Please select fields.\",\r\n type: \"error\"\r\n },\r\n QUERY_EXECUTED: {\r\n title: \"Success\",\r\n message: \"Query executed\",\r\n type: \"success\"\r\n }\r\n }\r\n};","/**\r\n\tModule P: Generic Promises for TypeScript\r\n\r\n\tProject, documentation, and license: https://github.com/pragmatrix/Promise\r\n*/\r\nimport {SERVER_REQUEST_ERRORS} from \"./Enums/ServerRequestErrors\";\r\n\r\nexport module P {\r\n\r\n\t/**\r\n\t\tReturns a new \"Deferred\" value that may be resolved or rejected.\r\n\t*/\r\n\r\n\texport function defer(): Deferred {\r\n\t\treturn new DeferredI();\r\n\t}\r\n\r\n\t/**\r\n\t\tConverts a value to a resolved promise.\r\n\t*/\r\n\r\n\texport function resolve(v: Value): Promise {\r\n\t\treturn defer().resolve(v).promise();\r\n\t}\r\n\r\n\t/**\r\n\t\tReturns a rejected promise.\r\n\t*/\r\n\r\n\texport function reject(err: Rejection): Promise {\r\n\t\treturn defer().reject(err).promise();\r\n\t}\r\n\r\n\t/**\r\n\t\thttp://en.wikipedia.org/wiki/Anamorphism\r\n\r\n\t\tGiven a seed value, unfold calls the unspool function, waits for the returned promise to be resolved, and then \r\n\t\tcalls it again if a next seed value was returned.\r\n\r\n\t\tAll the values of all promise results are collected into the resulting promise which is resolved as soon\r\n\t\tthe last generated element value is resolved.\r\n\t*/\r\n\r\n\texport function unfold(\r\n\t\tunspool: (current: Seed) => { promise: Promise; next?: Seed },\r\n\t\tseed: Seed)\r\n\t\t: Promise {\r\n\t\tvar d = defer();\r\n\t\tvar elements: Element[] = new Array();\r\n\r\n\t\tunfoldCore(elements, d, unspool, seed)\r\n\r\n\t\treturn d.promise();\r\n\t}\r\n\r\n\tfunction unfoldCore(\r\n\t\telements: Element[],\r\n\t\tdeferred: Deferred,\r\n\t\tunspool: (current: Seed) => { promise: Promise; next?: Seed },\r\n\t\tseed: Seed): void {\r\n\t\tvar result = unspool(seed);\r\n\t\tif (!result) {\r\n\t\t\tdeferred.resolve(elements);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// fastpath: don't waste stack space if promise resolves immediately.\r\n\r\n\t\twhile (result.next && result.promise.status == P.Status.Resolved) {\r\n\t\t\telements.push(result.promise.result);\r\n\t\t\tresult = unspool(result.next);\r\n\t\t\tif (!result) {\r\n\t\t\t\tdeferred.resolve(elements);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresult.promise\r\n\t\t\t.done(v => {\r\n\t\t\t\telements.push(v);\r\n\t\t\t\tif (!result.next)\r\n\t\t\t\t\tdeferred.resolve(elements);\r\n\t\t\t\telse\r\n\t\t\t\t\tunfoldCore(elements, deferred, unspool, result.next);\r\n\t\t\t})\r\n\t\t\t.fail(e => {\r\n\t\t\t\tdeferred.reject(e);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t\tThe status of a Promise. Initially a Promise is Unfulfilled and may\r\n\t\tchange to Rejected or Resolved.\r\n\t \r\n\t\tOnce a promise is either Rejected or Resolved, it can not change its \r\n\t\tstatus anymore.\r\n\t*/\r\n\r\n\texport enum Status {\r\n\t\tUnfulfilled,\r\n\t\tRejected,\r\n\t\tResolved\r\n\t}\r\n\r\n\t/**\r\n\t\tIf a promise gets rejected, at least a message that indicates the error or\r\n\t\treason for the rejection must be provided.\r\n\t*/\r\n\r\n\texport interface Rejection {\r\n\t\tmessage: string;\r\n\t\tvalue?: any;\r\n\t\tstatus?: number;\r\n\t\trequestError?: SERVER_REQUEST_ERRORS\r\n\t}\r\n\r\n\t/**\r\n\t\tBoth Promise and Deferred share these properties.\r\n\t*/\r\n\r\n\texport interface PromiseState {\r\n\t\t/// The current status of the promise.\r\n\t\tstatus: Status;\r\n\r\n\t\t/// If the promise got resolved, the result of the promise.\r\n\t\tresult?: Value;\r\n\r\n\t\t/// If the promise got rejected, the rejection message.\r\n\t\terror?: Rejection;\r\n\t}\r\n\r\n\t/**\r\n\t\tA Promise supports basic composition and registration of handlers that are called when the \r\n\t\tpromise is fulfilled.\r\n\r\n\t\tWhen multiple handlers are registered with done(), fail(), or always(), they are called in the \r\n\t\tsame order.\r\n\t*/\r\n\r\n\texport interface Promise extends PromiseState {\r\n\t\t/**\r\n\t\t\tReturns a promise that represents a promise chain that consists of this\r\n\t\t\tpromise and the promise that is returned by the function provided.\r\n\t\t\tThe function receives the value of this promise as soon it is resolved.\r\n\t\t\t\r\n\t\t\tIf this promise fails, the function is never called and the returned promise \r\n\t\t\twill also fail.\r\n\t\t*/\r\n\t\tthen(f: (v: Value) => Promise): Promise;\r\n\t\tthen(f: (v: Value) => T2): Promise;\r\n\r\n\t\t/// Add a handler that is called when the promise gets resolved.\r\n\t\tdone(f: (v: Value) => void): Promise;\r\n\t\t/// Add a handler that is called when the promise gets rejected.\r\n\t\tfail(f: (err: Rejection) => void): Promise;\r\n\t\t/// Add a handler that is called when the promise gets fulfilled (either resolved or rejected).\r\n\t\talways(f: (v?: Value, err?: Rejection) => void): Promise;\r\n\t}\r\n\r\n\t/**\r\n\t\tDeferred supports the explicit resolving and rejecting of the \r\n\t\tpromise and the registration of fulfillment handlers.\r\n\r\n\t\tA Deferred should be only visible to the function that initially sets up\r\n\t\tan asynchronous process. Callers of that function should only see the Promise that\r\n\t\tis returned by promise().\r\n\t*/\r\n\r\n\texport interface Deferred extends PromiseState {\r\n\t\t/// Returns the encapsulated promise of this deferred instance.\r\n\t\t/// The returned promise supports composition but removes the ability to resolve or reject\r\n\t\t/// the promise.\r\n\t\tpromise(): Promise;\r\n\r\n\t\t/// Resolve the promise.\r\n\t\tresolve(result: Value): Deferred;\r\n\t\t/// Reject the promise.\r\n\t\treject(err: Rejection): Deferred;\r\n\r\n\t\tdone(f: (v: Value) => void): Deferred;\r\n\t\tfail(f: (err: Rejection) => void): Deferred;\r\n\t\talways(f: (v?: Value, err?: Rejection) => void): Deferred;\r\n\t}\r\n\r\n\t/**\r\n\t\tCreates a promise that gets resolved when all the promises in the argument list get resolved.\r\n\t\tAs soon one of the arguments gets rejected, the resulting promise gets rejected.\r\n\t\tIf no promises were provided, the resulting promise is immediately resolved.\r\n\t*/\r\n\r\n\texport function when(...promises: Promise[]): Promise {\r\n\t\tvar allDone = defer();\r\n\t\tif (!promises.length) {\r\n\t\t\tallDone.resolve([]);\r\n\t\t\treturn allDone.promise();\r\n\t\t}\r\n\r\n\t\tvar resolved = 0;\r\n\t\tvar results = [];\r\n\r\n\t\tpromises.forEach((p, i) => {\r\n\t\t\tp\r\n\t\t\t\t.done(v => {\r\n\t\t\t\t\tresults[i] = v;\r\n\t\t\t\t\t++resolved;\r\n\t\t\t\t\tif (resolved === promises.length && allDone.status !== Status.Rejected)\r\n\t\t\t\t\t\tallDone.resolve(results);\r\n\t\t\t\t})\r\n\t\t\t\t.fail(e => {\r\n\t\t\t\t\tif (allDone.status !== Status.Rejected)\r\n\t\t\t\t\t\tallDone.reject(new Error(\"when: one or more promises were rejected\"));\r\n\t\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn allDone.promise();\r\n\t}\r\n\r\n\t/**\r\n\t\tImplementation of a promise.\r\n\r\n\t\tThe Promise instance is a proxy to the Deferred instance.\r\n\t*/\r\n\r\n\tclass PromiseI implements Promise\r\n\t{\r\n\t\tconstructor(public deferred: DeferredI)\r\n\t\t{ }\r\n\r\n\t\tget status(): Status { return this.deferred.status; }\r\n\t\tget result(): Value { return this.deferred.result; }\r\n\t\tget error(): Rejection { return this.deferred.error; }\r\n\r\n\t\tdone(f: (v: Value) => void): Promise {\r\n\t\t\tthis.deferred.done(f);\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tfail(f: (err: Rejection) => void): Promise {\r\n\t\t\tthis.deferred.fail(f);\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\talways(f: (v?: Value, err?: Rejection) => void): Promise {\r\n\t\t\tthis.deferred.always(f);\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tthen(f: (v: Value) => any): Promise {\r\n\t\t\treturn this.deferred.then(f);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t\tImplementation of a deferred.\r\n\t*/\r\n\r\n\tclass DeferredI implements Deferred{\r\n\r\n\t\tprivate _resolved: (v: Value) => void = _ => { };\r\n\t\tprivate _rejected: (err: Rejection) => void = _ => { };\r\n\r\n\t\tprivate _status: Status = Status.Unfulfilled;\r\n\t\tprivate _result: Value;\r\n\t\tprivate _error: Rejection = { message: \"\" };\r\n\t\tprivate _promise: Promise;\r\n\r\n\t\tconstructor() {\r\n\t\t\tthis._promise = new PromiseI(this);\r\n\t\t}\r\n\r\n\t\tpromise(): Promise {\r\n\t\t\treturn this._promise;\r\n\t\t}\r\n\r\n\t\tget status(): Status {\r\n\t\t\treturn this._status;\r\n\t\t}\r\n\r\n\t\tget result(): Value {\r\n\t\t\tif (this._status != Status.Resolved)\r\n\t\t\t\tthrow new Error(\"Promise: result not available\");\r\n\t\t\treturn this._result;\r\n\t\t}\r\n\r\n\t\tget error(): Rejection {\r\n\t\t\tif (this._status != Status.Rejected)\r\n\t\t\t\tthrow new Error(\"Promise: rejection reason not available\");\r\n\t\t\treturn this._error;\r\n\t\t}\r\n\r\n\t\tthen(f: (v: Value) => any): Promise {\r\n\t\t\tvar d = defer();\r\n\r\n\t\t\tthis\r\n\t\t\t\t.done(v => {\r\n\t\t\t\t\tvar promiseOrValue = f(v);\r\n\r\n\t\t\t\t\t// todo: need to find another way to check if r is really of interface\r\n\t\t\t\t\t// type Promise, otherwise we would not support other \r\n\t\t\t\t\t// implementations here.\r\n\t\t\t\t\tif (promiseOrValue instanceof PromiseI) {\r\n\t\t\t\t\t\tvar p = >promiseOrValue;\r\n\t\t\t\t\t\tp.done(v2 => d.resolve(v2))\r\n\t\t\t\t\t\t\t.fail(err => d.reject(err));\r\n\t\t\t\t\t\treturn p;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\td.resolve(promiseOrValue);\r\n\t\t\t\t})\r\n\t\t\t\t.fail(err => d.reject(err));\r\n\r\n\t\t\treturn d.promise();\r\n\t\t}\r\n\r\n\t\tdone(f: (v: Value) => void): Deferred {\r\n\t\t\tif (this.status === Status.Resolved) {\r\n\t\t\t\tf(this._result);\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.status !== Status.Unfulfilled)\r\n\t\t\t\treturn this;\r\n\r\n\t\t\tvar prev = this._resolved;\r\n\t\t\tthis._resolved = v => { prev(v); f(v); }\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tfail(f: (err: Rejection) => void): Deferred {\r\n\t\t\tif (this.status === Status.Rejected) {\r\n\t\t\t\tf(this._error);\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.status !== Status.Unfulfilled)\r\n\t\t\t\treturn this;\r\n\r\n\t\t\tvar prev = this._rejected;\r\n\t\t\tthis._rejected = e => { prev(e); f(e); }\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\talways(f: (v?: Value, err?: Rejection) => void): Deferred {\r\n\t\t\tthis\r\n\t\t\t\t.done(v => f(v))\r\n\t\t\t\t.fail(err => f(null, err));\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tresolve(result: Value) {\r\n\t\t\tif (this._status !== Status.Unfulfilled)\r\n\t\t\t\tthrow new Error(\"tried to resolve a fulfilled promise\");\r\n\r\n\t\t\tthis._result = result;\r\n\t\t\tthis._status = Status.Resolved;\r\n\t\t\tthis._resolved(result);\r\n\r\n\t\t\tthis.detach();\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\treject(err: Rejection) {\r\n\t\t\tif (this._status !== Status.Unfulfilled)\r\n\t\t\t\tthrow new Error(\"tried to reject a fulfilled promise\");\r\n\r\n\t\t\tthis._error = err;\r\n\t\t\tthis._status = Status.Rejected;\r\n\t\t\tthis._rejected(err);\r\n\r\n\t\t\tthis.detach();\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\tprivate detach() {\r\n\t\t\tthis._resolved = _ => { };\r\n\t\t\tthis._rejected = _ => { };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t\tPromise Generators and Iterators.\r\n\t*/\r\n\r\n\texport interface Generator {\r\n\t\t(): Iterator;\r\n\t}\r\n\r\n\texport interface Iterator {\r\n\t\tadvance(): Promise;\r\n\t\tcurrent: E;\r\n\t}\r\n\r\n\texport function generator(g: () => () => Promise): Generator {\r\n\t\treturn () => iterator(g());\r\n\t};\r\n\r\n\texport function iterator(f: () => Promise): Iterator {\r\n\t\treturn new IteratorI(f);\r\n\t}\r\n\r\n\tclass IteratorI implements Iterator\r\n\t{\r\n\t\tcurrent: E = undefined;\r\n\r\n\t\tconstructor(private f: () => Promise)\r\n\t\t{ }\r\n\r\n\t\tadvance(): Promise {\r\n\t\t\tvar res = this.f();\r\n\t\t\treturn res.then(value => {\r\n\t\t\t\tif (isUndefined(value))\r\n\t\t\t\t\treturn false;\r\n\r\n\t\t\t\tthis.current = value;\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t\tIterator functions.\r\n\t*/\r\n\r\n\texport function each(gen: Generator, f: (e: E) => void): Promise<{}> {\r\n\t\tvar d = defer();\r\n\t\teachCore(d, gen(), f);\r\n\t\treturn d.promise();\r\n\t}\r\n\r\n\tfunction eachCore(fin: Deferred<{}>, it: Iterator, f: (e: E) => void): void {\r\n\t\tit.advance()\r\n\t\t\t.done(hasValue => {\r\n\t\t\t\tif (!hasValue) {\r\n\t\t\t\t\tfin.resolve({});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tf(it.current)\r\n\t\t\t\teachCore(fin, it, f);\r\n\t\t\t})\r\n\t\t\t.fail(err => fin.reject(err));\r\n\t}\r\n\t\r\n\t/**\r\n\t\tstd\r\n\t*/\r\n\r\n\texport function isUndefined(v) {\r\n\t\treturn typeof v === 'undefined';\r\n\t}\r\n} ","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nexport interface MutationObserverConfig {\r\n childList?: boolean,\r\n attributes?: boolean,\r\n subtree?: boolean,\r\n characterData?: boolean,\r\n attributeOldValue?: boolean,\r\n characterDataOldValue?: boolean,\r\n attributeFilter?: Array\r\n}\r\n\r\nexport class RepositionModalObserver extends Event {\r\n private _observer: MutationObserver;\r\n private _target: HTMLElement;\r\n private _config: MutationObserverConfig;\r\n private _time: number = 1;\r\n constructor(target: HTMLElement, mutationObserverConfig: MutationObserverConfig, time?: number) {\r\n // documentations: https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver\r\n // demo: https://codepen.io/webgeeker/pen/YjrZgg?editors=1010\r\n super();\r\n this._observer = null;\r\n this._target = target;\r\n this._config = mutationObserverConfig;\r\n this._time = time && time;\r\n this.Init();\r\n }\r\n\r\n Init(){\r\n this._observer = new MutationObserver((mutations)=> {\r\n _.each(mutations, (mutation)=>{\r\n if (mutation.type === \"attributes\") {\r\n setTimeout(() => {\r\n $(window).trigger('resize');\r\n }, this._time);\r\n }\r\n })\r\n });\r\n this._observer.observe(this._target, this._config);\r\n }\r\n\r\n Disconnect() { //documentation https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/disconnect\r\n if (this._observer instanceof MutationObserver){\r\n this._observer.disconnect();\r\n }\r\n }\r\n\r\n TakeRecords() { //documentation https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/takeRecords\r\n\r\n }\r\n}","import * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\n\r\nimport 'lockr';\r\nimport 'pubsub';\r\n\r\nimport {NetworkMonitor} from './NetworkMonitor';\r\nimport {LOCAL_STORAGE} from './Enums/LocalStorageItems';\r\n\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {CookieManager} from \"Core/Common/CookieManager\";\r\nimport { Guid } from './Guid';\r\n\r\nexport interface IRequestOptions {\r\n proxy: IRequestProxy;\r\n params?: any;\r\n}\r\n\r\nexport interface IRequestProxy {\r\n url: string;\r\n type?: string;\r\n dataType?: string;\r\n cache?: boolean;\r\n contentType?: string | false;\r\n processData?: boolean;\r\n async?: boolean;\r\n xhrFields?: any;\r\n cacheRequest?: boolean;\r\n transactionId?: string;\r\n}\r\n\r\nexport interface IFile {\r\n FileName: string;\r\n FileData: string;\r\n}\r\n\r\nclass RequestCache {\r\n public static store: any = {};\r\n\r\n public static Add(key: string, value: any){\r\n if(!this.store[key]){\r\n this.store[key] = { Value: [value] }; \r\n }else{\r\n this.store[key].Value.push(value);\r\n }\r\n \r\n return this.store[key].Value;\r\n }\r\n\r\n public static Get(key: string){\r\n return this.store[key].Value;\r\n }\r\n\r\n public static Remove(key: string){\r\n if(this.store[key]){\r\n delete this.store[key];\r\n }\r\n }\r\n}\r\n\r\nexport class Request {\r\n private _params: IRequestOptions;\r\n\r\n constructor(){\r\n this._params = { proxy: { url: null }, params: null };\r\n }\r\n\r\n static For(url: string): Request{\r\n let instance = new Request();\r\n instance._params.proxy.url = url;\r\n instance._params.proxy.dataType = 'json';\r\n return instance;\r\n }\r\n\r\n UseCacheRequest(): Request{\r\n this._params.proxy.cacheRequest = true;\r\n return this;\r\n }\r\n\r\n Get(params?: any, dataType?: string): P.Promise {\r\n this._params.params = params;\r\n this._params.proxy.type = 'GET';\r\n this._params.proxy.dataType = dataType ?? 'json';\r\n return Request.Send(this._params);\r\n }\r\n\r\n Post(params?: any, dataType?: string): P.Promise {\r\n this._params.params = params;\r\n this._params.proxy.type = 'POST';\r\n this._params.proxy.dataType = dataType ?? 'json';\r\n return Request.Send(this._params);\r\n }\r\n\r\n static Send(params: IRequestOptions): P.Promise {\r\n return this.SendRequest(\r\n params,\r\n (data, status, response, key) => {\r\n\r\n _.each(RequestCache.Get(key), (deferred: any) =>{\r\n deferred.resolve(data);\r\n });\r\n \r\n RequestCache.Remove(key);\r\n\r\n }\r\n );\r\n }\r\n\r\n static DownloadFile(params: IRequestOptions): P.Promise {\r\n return this.SendRequest(\r\n params,\r\n (data, status, response, key) => {\r\n const contentDisposition = response.getResponseHeader('Content-Disposition');\r\n const fileNameStr = \"filename=\";\r\n const fileName = contentDisposition.substr(contentDisposition.indexOf(fileNameStr) + fileNameStr.length);\r\n\r\n _.each(RequestCache.Get(key), (deferred: any) =>{\r\n deferred.resolve({\r\n FileName: fileName,\r\n FileData: data\r\n });\r\n });\r\n \r\n RequestCache.Remove(key);\r\n }\r\n )\r\n }\r\n\r\n private static SendRequest(params: IRequestOptions,\r\n onSuccess: (data, status, response, key: string) => void): P.Promise {\r\n const deferred = P.defer();\r\n\r\n let key = params.proxy.cacheRequest ? JSON.stringify(params.params) : Guid.NewGuid();\r\n let values = RequestCache.Add(key, deferred);\r\n if(values.length > 1){\r\n return deferred.promise();\r\n } \r\n\r\n const token = CookieManager.GetAuthToken();\r\n const adminToken = CookieManager.GetAdminToken();\r\n\r\n $.ajax({\r\n url: params.proxy.url,\r\n async: params.proxy.async !== undefined ? params.proxy.async : true,\r\n data: params.params,\r\n dataType: params.proxy.dataType,\r\n type: params.proxy.type,\r\n cache: params.proxy.cache,\r\n contentType: params.proxy.contentType,\r\n processData: params.proxy.processData,\r\n headers: {\r\n \"Authorization\": `Bearer ${token}`,\r\n \"AdminToken\": adminToken,\r\n \"Transaction-Id\": params.proxy.transactionId\r\n },\r\n xhrFields: params.proxy.xhrFields,\r\n success: (data, status, response) => {\r\n this.CheckVersion(response);\r\n onSuccess(data, status, response, key)\r\n },\r\n error: e => {\r\n\r\n if (e.status === 0) {\r\n NetworkMonitor.ShowOfflineMessage();\r\n }\r\n\r\n if (e.status === 401 || e.status === 999) {\r\n PubSub.publish('UNAUTHORIZE', null);\r\n return;\r\n }\r\n\r\n if (e.status === 997) {\r\n PubSub.publish('UNAUTHORIZE', null);\r\n return;\r\n }\r\n\r\n if (e.status === 998) {\r\n PubSub.publish('SESSION_LOCKED', null);\r\n deferred.reject(null);\r\n return;\r\n }\r\n const rej: P.Rejection = {message: e.responseText, status: e.status};\r\n\r\n _.each(RequestCache.Get(key), (deferred: any) =>{\r\n deferred.reject(rej);\r\n });\r\n \r\n RequestCache.Remove(key);\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static CheckVersion(response: JQuery.jqXHR){\r\n let newBuildVersion = response.getResponseHeader('build-version');\r\n\r\n if (newBuildVersion) {\r\n const buildVersion = Lockr.get(LOCAL_STORAGE.BUILD_VERSION);\r\n\r\n if (!buildVersion) {\r\n Lockr.set(LOCAL_STORAGE.BUILD_VERSION, newBuildVersion);\r\n } else {\r\n if (newBuildVersion !== buildVersion) {\r\n Lockr.set(LOCAL_STORAGE.BUILD_VERSION, newBuildVersion);\r\n location.reload();\r\n }\r\n }\r\n }\r\n }\r\n}","export class ResizeObserver {\r\n private _idWidth = 0;\r\n private _listenersWidth = {};\r\n private _resizeIntervalWidth = null;\r\n private _resizeIntervalCheckDelayWidth = 1000;\r\n\r\n private _idHeight = 0;\r\n private _listenersHeight = {};\r\n private _resizeIntervalHeight = null;\r\n private _resizeIntervalCheckDelayHeight = 1000;\r\n\r\n /**\r\n * @param action {function} => action to call after width change\r\n * @param el {HTMLElement} => element to listen width changing\r\n * @param Unsubscribe {function} => that stop listening the element\r\n */\r\n public SubscribeWidth(action: Function, el: HTMLElement) {\r\n let id = this._idWidth++;\r\n this._listenersWidth[id] = {\r\n action,\r\n el,\r\n oldWidth: el.offsetWidth\r\n };\r\n if (!this._resizeIntervalWidth) {\r\n this._resizeIntervalWidth = setInterval(this.OnResizeWidth, this._resizeIntervalCheckDelayWidth);\r\n }\r\n return () => this.UnsubscribeWidth(id);\r\n }\r\n\r\n private OnResizeWidth = () => {\r\n let res = 2;\r\n for (let key in this._listenersWidth) {\r\n const { oldWidth, action, el } = this._listenersWidth[key];\r\n const newWidth = el.offsetWidth;\r\n if (newWidth !== oldWidth) {\r\n this._listenersWidth[key].oldWidth = newWidth;\r\n setTimeout(action, Math.min(10 * res++, 100)); // prevent update of all grids at the same time\r\n }\r\n }\r\n };\r\n\r\n private UnsubscribeWidth(id) {\r\n delete this._listenersWidth[id];\r\n if (!Object.keys(this._listenersWidth).length) {\r\n clearInterval(this._resizeIntervalWidth);\r\n this._resizeIntervalWidth = null;\r\n }\r\n }\r\n\r\n /**\r\n * @param action {function} => action to call after Height change\r\n * @param el {HTMLElement} => element to listen Height changing\r\n * @param UnsubscribeHeight {function} => that stop listening the element\r\n */\r\n public SubscribeHeight(action: Function, el: HTMLElement) {\r\n let id = this._idHeight++;\r\n this._listenersHeight[id] = {\r\n action,\r\n el,\r\n oldHeight: el.offsetHeight\r\n };\r\n if (!this._resizeIntervalHeight) {\r\n this._resizeIntervalHeight = setInterval(this.OnResizeHeight, this._resizeIntervalCheckDelayHeight);\r\n }\r\n return () => this.UnsubscribeHeight(id);\r\n }\r\n\r\n private OnResizeHeight = () => {\r\n let res = 2;\r\n for (let key in this._listenersHeight) {\r\n const { oldHeight, action, el } = this._listenersHeight[key];\r\n const newHeight = el.offsetHeight;\r\n if (newHeight !== oldHeight) {\r\n this._listenersHeight[key].oldHeight = newHeight;\r\n setTimeout(action, Math.min(10 * res++, 100)); // prevent update of all grids at the same time\r\n }\r\n }\r\n };\r\n\r\n private UnsubscribeHeight(id) {\r\n delete this._listenersHeight[id];\r\n if (!Object.keys(this._listenersHeight).length) {\r\n clearInterval(this._resizeIntervalHeight);\r\n this._resizeIntervalHeight = null;\r\n }\r\n }\r\n}\r\n","import {Request} from \"Core/Common/Request\";\r\nimport {URL} from \"Core/Common/Url\";\r\n\r\nexport class SecurityProfileStore {\r\n\r\n static LoadProfiles() {\r\n return Request.Send({\r\n proxy: {\r\n url: URL.USER.GET_SECURITY_PROFILES,\r\n dataType: 'json',\r\n type: 'GET'\r\n }\r\n });\r\n }\r\n\r\n static SelectMainProfile(profileId: number) {\r\n return Request.Send({\r\n proxy: {\r\n url: URL.USER.SELECT_MAIN_PROFILE,\r\n type: \"POST\"\r\n },\r\n params: {\r\n profileId\r\n }\r\n });\r\n }\r\n\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {BlockUI} from \"../BlockUi\";\r\n\r\nimport {GetServerRequestError} from \"../Enums/ServerRequestErrors\";\r\n\r\nexport interface IGetRecordParams {\r\n\tTableId?: Number;\r\n\tTableName?: String;\r\n RecordId: Number;\r\n}\r\n\r\nexport interface IGetDependsOnValues {\r\n FieldIds: Array;\r\n RecordId: number;\r\n}\r\n\r\nexport interface IDependsOnValues {\r\n Id: number;\r\n Name: string;\r\n Value: string\r\n}\r\n\r\nexport interface IGetDependsOnResponse {\r\n ErrorMessage: string;\r\n ErrorOccured: string;\r\n Exceptions: Array;\r\n HasData: boolean;\r\n IsServerError: boolean;\r\n IsSuccessfull: boolean;\r\n OperationMessage: string;\r\n ResultObject: Array;\r\n}\r\n\r\nexport interface IDynamicFieldData {\r\n FieldId: number;\r\n Value: string;\r\n}\r\n\r\nexport interface IFieldDataModel {\r\n Name: string;\r\n Value: string;\r\n}\r\n\r\nexport interface ICreateRecordRequest {\r\n TableId: number;\r\n RequiredValidation: boolean;\r\n ExampleRecordId?: number;\r\n Fields?: Array;\r\n}\r\n\r\nexport interface IGetDynamicDependsOnValue {\r\n SubjectEntityId: number;\r\n SubjectRecordId: number;\r\n RelatedEntityId: number;\r\n RelatedRecordId: number;\r\n KSeq: number;\r\n ScreenData: Array;\r\n FieldId: number;\r\n}\r\n\r\nexport interface IGetLookupDataRequest {\r\n TableName: string;\r\n Value?: string;\r\n DisplayValue: string;\r\n}\r\n\r\nexport interface IGetLookupDataResponse {\r\n\tCount: number;\r\n Data: ILookupRecord[];\r\n Type: string;\r\n Format: string;\r\n}\r\n\r\nexport interface ILookupRecord {\r\n Name: string;\r\n Value: string;\r\n Type: string;\r\n Format: string;\r\n}\r\n\r\nexport interface IRecordExistsParams {\r\n\tTableId: number;\r\n\tRecordId: number;\r\n}\r\n\r\nexport class RecordStore {\r\n\r\n static GetRecordSpecs(params: IGetRecordParams): P.Promise {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/RecordsApi/GetSpecs\",\r\n type: \"GET\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n })\r\n .then(response => deferredResult.resolve(response))\r\n .fail((error) => this.RejectResponse(deferredResult, error));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetRecord(params: IGetRecordParams): P.Promise {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/RecordsApi/Get\",\r\n type: \"GET\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n })\r\n .then(response => deferredResult.resolve(response))\r\n .fail((error) => this.RejectResponse(deferredResult, error));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreateRecord(params: ICreateRecordRequest): P.Promise {\r\n const deferredResult = P.defer();\r\n\r\n BlockUI.Block();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/RecordsApi/CreateRecord\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n }).then(response => {\r\n deferredResult.resolve(response)\r\n }).fail((error) => {\r\n this.RejectResponse(deferredResult, error);\r\n })\r\n .always(() => BlockUI.Unblock());\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetLookupData(params: IGetLookupDataRequest) : P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/RecordsApi/GetLookupData',\r\n type: 'GET'\r\n },\r\n params\r\n }).then((result) => {\r\n return deferred.resolve(result);\r\n }).fail(error => {\r\n if (error.status === 404) {\r\n return deferred.resolve(null);\r\n }\r\n\r\n return deferred.reject(this.GetResponseError(error, 'ERROR_READING_LOOKUP_DATA'));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static GetCount(tableId: number) : P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/RecordsApi/GetRecordsCount',\r\n type: 'GET'\r\n },\r\n params: {tableId: tableId}\r\n }).then((result) => {\r\n return deferred.resolve(result);\r\n }).fail(error => {\r\n if (error.status === 404) {\r\n return deferred.resolve(null);\r\n }\r\n\r\n return deferred.reject(this.GetResponseError(error, 'Error getting records count'));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static RecordExists(params: IRecordExistsParams): P.Promise {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/RecordsApi/RecordExists\",\r\n type: \"GET\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n })\r\n .then(response => deferredResult.resolve(response))\r\n .fail((error) => this.RejectResponse(deferredResult, error));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDependsOnValues(params: IGetDependsOnValues): P.Promise {\r\n const deferredResult = P.defer();\r\n\r\n BlockUI.Block();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ScreenFormApi/GetDependsOnValues\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n }).then(response => deferredResult.resolve(response))\r\n .fail((error) => this.RejectResponse(deferredResult, error))\r\n .always(() => BlockUI.Unblock());\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDynamicDependsOnValues(params: IGetDynamicDependsOnValue): P.Promise {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ScreenFormApi/GetDynamicDependsOnValues\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n }).then(response => {\r\n if(response.IsSuccessfull){\r\n deferredResult.resolve(response);\r\n }else{\r\n deferredResult.reject({message: response.ErrorMessage });\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n private static RejectResponse(deferredResult: P.Deferred, error: P.Rejection) {\r\n const requestError = GetServerRequestError(error.status);\r\n deferredResult.reject({message: error.message, status: error.status, requestError: requestError});\r\n }\r\n\r\n private static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\nimport { GetServerRequestError } from \"Core/Common/Enums/ServerRequestErrors\";\r\n\r\nexport interface IGetTableParams {\r\n\tTableId?: number,\r\n\tTableTypeId?: number,\r\n\tTableName?: string\r\n}\r\n\r\nexport class TableStore {\r\n\r\n\tstatic Get(params: IGetTableParams): P.Promise {\r\n\t\tconst deferredResult = P.defer();\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/TablesApi/Get\",\r\n\t\t\t\ttype: \"GET\",\r\n\t\t\t\tdataType: \"json\"\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t}).then(response => deferredResult.resolve(response))\r\n\t\t .fail((error) => this.RejectResponse(deferredResult, error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetStruct(params: IGetTableParams) {\r\n\t\tconst deferredResult = P.defer();\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/TablesApi/GetStruct\",\r\n\t\t\t\ttype: \"GET\",\r\n\t\t\t\tdataType: \"json\"\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t}).then(response => deferredResult.resolve(response))\r\n\t\t\t.fail((error) => this.RejectResponse(deferredResult, error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tprivate static RejectResponse(deferredResult: P.Deferred, error: P.Rejection) {\r\n\t\tconst requestError = GetServerRequestError(error.status);\r\n\t\tdeferredResult.reject({ message: error.message, status: error.status, requestError: requestError });\r\n\t}\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from 'libs/cerialize';\r\n\r\nimport {CustomThemeSetting} from './CustomThemeSetting';\r\n\r\nexport class CustomThemeDescriptor {\r\n @serialize\r\n @deserialize\r\n Name: string;\r\n\r\n @serializeAs(CustomThemeSetting)\r\n @deserializeAs(CustomThemeSetting)\r\n Settings: CustomThemeSetting[];\r\n\r\n constructor() {\r\n this.Settings = [];\r\n }\r\n\r\n static Create(name: string, settings: CustomThemeSetting[]) {\r\n const customTheme = new CustomThemeDescriptor();\r\n\r\n customTheme.Name = name;\r\n customTheme.Settings = settings;\r\n\r\n return customTheme;\r\n }\r\n}\r\n\r\n","import {deserialize, serialize} from 'libs/cerialize';\r\n\r\nexport class CustomThemeSetting {\r\n @serialize\r\n @deserialize\r\n Id: string;\r\n\r\n @serialize\r\n @deserialize\r\n Selector: string;\r\n\r\n @serialize\r\n @deserialize\r\n Rule: string;\r\n\r\n @serialize\r\n @deserialize\r\n Val: string;\r\n\r\n @serialize\r\n @deserialize\r\n Transparent: string;\r\n}","import {deserialize, serialize} from 'libs/cerialize';\r\n\r\nexport class MainThemeDescriptor {\r\n @serialize\r\n @deserialize\r\n Color: string;\r\n\r\n @serialize\r\n @deserialize\r\n Theme: string;\r\n\r\n @serialize\r\n @deserialize\r\n SidebarBorders: string;\r\n\r\n @serialize\r\n @deserialize\r\n SidebarStyleOption: string;\r\n\r\n @serialize\r\n @deserialize\r\n Style: string;\r\n\r\n @serialize\r\n @deserialize\r\n SidebarPosOption: string;\r\n\r\n @serialize\r\n @deserialize\r\n SidebarOption: string;\r\n\r\n @serialize\r\n @deserialize\r\n CustomThemeName: string;\r\n}","import {Event} from 'Core/Common/Event';\r\n\r\nimport {deserializeAs, serializeAs, Serialize} from 'libs/cerialize';\r\n\r\nimport {MainThemeDescriptor} from './MainThemeDescriptor';\r\nimport {CustomThemeDescriptor} from './CustomThemeDescriptor';\r\nimport {CustomThemeSetting} from './CustomThemeSetting';\r\n\r\nexport const EVENTS = {\r\n SETTINGS_CHANGED: 'SETTINGS_CHANGED'\r\n};\r\n\r\nexport const DEFAULT_VALUES = {\r\n COLOR: 'darkblue',\r\n THEME: 'darkblue.css',\r\n SIDEBAR_BORDERS: 'noborders',\r\n SIDEBAR_STYLE_OPTION: 'default',\r\n STYLE: 'square',\r\n SIDEBAR_POS_OPTION: 'left',\r\n SIDEBAR_OPTION: 'fixed'\r\n};\r\n\r\nexport class UISettings extends Event {\r\n\r\n @serializeAs(MainThemeDescriptor)\r\n @deserializeAs(MainThemeDescriptor)\r\n Settings: MainThemeDescriptor;\r\n\r\n @serializeAs(CustomThemeDescriptor)\r\n @deserializeAs(CustomThemeDescriptor)\r\n CustomThemes: CustomThemeDescriptor[];\r\n\r\n constructor() {\r\n super();\r\n this.Settings = new MainThemeDescriptor();\r\n this.CustomThemes = [];\r\n }\r\n\r\n GetCustomTheme(name: string): CustomThemeDescriptor {\r\n return this.CustomThemes.find(theme => theme.Name === name);\r\n }\r\n\r\n SetCustomTheme(name: string, settings: CustomThemeSetting[]) {\r\n let customTheme = this.GetCustomTheme(name);\r\n\r\n if (!customTheme) {\r\n this.RegisterCustomTheme(name, settings);\r\n this.Settings.CustomThemeName = name;\r\n this.Trigger(EVENTS.SETTINGS_CHANGED);\r\n return;\r\n }\r\n\r\n customTheme.Settings = settings;\r\n this.Settings.CustomThemeName = name;\r\n this.Trigger(EVENTS.SETTINGS_CHANGED);\r\n }\r\n\r\n SetThemeColor(theme: string, color: string) {\r\n this.Settings.Theme = theme;\r\n this.Settings.Color = color;\r\n this.Trigger(EVENTS.SETTINGS_CHANGED);\r\n }\r\n\r\n SetThemeStyle(style: string) {\r\n this.Settings.Style = style;\r\n this.Trigger(EVENTS.SETTINGS_CHANGED);\r\n }\r\n\r\n SetSidebarOption(sidebarOption: string) {\r\n this.Settings.SidebarOption = sidebarOption;\r\n this.Trigger(EVENTS.SETTINGS_CHANGED);\r\n }\r\n\r\n SetSidebarStyleOption(sidebarStyleOption: string) {\r\n this.Settings.SidebarStyleOption = sidebarStyleOption;\r\n this.Trigger(EVENTS.SETTINGS_CHANGED);\r\n }\r\n\r\n SetSidebarPosOption(sidebarPosOption: string) {\r\n this.Settings.SidebarPosOption = sidebarPosOption;\r\n this.Trigger(EVENTS.SETTINGS_CHANGED);\r\n }\r\n\r\n SetSidebarBorders(borders: string) {\r\n this.Settings.SidebarBorders = borders;\r\n this.Trigger(EVENTS.SETTINGS_CHANGED);\r\n }\r\n\r\n Serialize() {\r\n return Serialize(this);\r\n }\r\n\r\n ToJSON() {\r\n return JSON.stringify(this.Serialize());\r\n }\r\n\r\n private RegisterCustomTheme(name: string, settings: CustomThemeSetting[]) {\r\n const customTheme = CustomThemeDescriptor.Create(name, settings);\r\n this.CustomThemes.push(customTheme);\r\n\r\n return customTheme;\r\n }\r\n\r\n Equals(settings: UISettings) {\r\n return _.isEqual(Serialize(this), Serialize(settings));\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport {Event} from \"./Event\";\r\n\r\nexport class Timer extends Event {\r\n\tprivate readonly _timeout: number;\r\n\tprivate _intervalId: number;\r\n\r\n\tTimerCounter: KnockoutObservable;\r\n\r\n\tconstructor(seconds: number) {\r\n\t\tsuper();\r\n\r\n\t\tthis._timeout = seconds > 0 ? Math.round(seconds / 1000) : 0;\r\n\t\tthis.TimerCounter = ko.observable(0);\r\n\t}\r\n\r\n\tStart() {\r\n\t\tthis.TimerCounter(this._timeout);\r\n\t\tthis._intervalId = setInterval(() => {\r\n\t\t\tif (this.TimerCounter() > 0) {\r\n\t\t\t\tthis.TimerCounter(this.TimerCounter() - 1);\r\n\t\t\t} else {\r\n\t\t\t\tthis.OnTimerExpired();\r\n\t\t\t}\r\n\t\t}, 1000);\r\n\t}\r\n\r\n\tStop() {\r\n\t\tclearInterval(this._intervalId);\r\n\t}\r\n\r\n\tprivate OnTimerExpired() {\r\n\t\tthis.Stop();\r\n\t\tthis.Trigger(TIMER_EVENTS.TIMER_EXPIRED);\r\n\t}\r\n}\r\n\r\nexport const TIMER_EVENTS = {\r\n\tTIMER_EXPIRED: \"TimerExpired\"\r\n};","import 'jBox';\r\n\r\nexport class Tooltip {\r\n\tprivate _el: HTMLElement;\r\n\tprivate _jbox: jBox;\r\n\r\n\tconstructor(_el, content?: string, options?: any) {\r\n\t\tconst defaultOptions = {\r\n\t\t\tcontent: content,\r\n\t\t\tattach: $(_el),\r\n\t\t\tzIndex: 50000,\r\n\t\t\tcloseOnClick: true,\r\n\t\t\tcloseOnMouseleave: true,\r\n\t\t\t// Workaround for tooltips appearing close to vertical scrollbar\r\n\t\t\tadjustDistance:\r\n\t\t\t\tdocument.documentElement.scrollHeight > document.documentElement.clientHeight\r\n\t\t\t\t\t? { right: 15 }\r\n\t\t\t\t\t: undefined\r\n\t\t};\r\n\t\tif (options) {\r\n\t\t\t$.extend(defaultOptions, options);\r\n\t\t}\r\n\r\n\t\tif($(_el).attr('title') || content) {\r\n this._jbox = new jBox('Tooltip', defaultOptions);\r\n\t\t}\r\n }\r\n\r\n\tClose() {\r\n\t\tthis._jbox.close();\r\n\t}\r\n\r\n AddClass(className: string) {\r\n\t\tif(this._jbox) {\r\n\t\t\tthis._jbox.options.addClass = className;\r\n\t\t}\r\n\t}\r\n\r\n\tShow(targetElem?: any, targetId?: any) {\r\n\t\tif (targetId){\r\n\t\t\tthis._jbox.open({ target: $(`#${targetId}`) });\r\n\t\t} else if (targetElem) {\r\n\t\t\tthis._jbox.open({target: $(targetElem)});\r\n\t\t}\r\n\t}\r\n\r\n\tAttach(el: JQuery) {\r\n\t\tthis._jbox.close();\r\n\t}\r\n\r\n\tSetContent(content) {\r\n this._jbox && this._jbox.setContent(content);\r\n\t}\r\n\r\n\tDestroy() {\r\n\t\tthis._jbox && this._jbox.destroy();\r\n\t}\r\n}","export default function (fileName) {\r\n\r\n\tif (fileName.length > 80) {\r\n\t\tconst extension = fileName.substring(fileName.lastIndexOf('.'), fileName.length);\r\n\t\tconst name = fileName.substring(0, 80 - extension.length);\r\n\r\n\t\treturn name + extension;\r\n\t}\r\n\r\n\treturn fileName;\r\n}","export const URL = {\r\n\tADMIN: {\r\n\t\tLOGIN: '/api/AdminApi/Login',\r\n\t\tGET_FILE_DIRS: '/api/AdminApi/GetFileDirs',\r\n\t\tGET_QUARTZ_DASHBOARDS: '/api/AdminApi/GetQuartzDashboards',\r\n\t\tGET_QUARTZ_DASHBOARD: '/api/AdminApi/GetQuartzDashboard',\r\n\t\tGET_MIGRATION_PREVIEW: '/api/AdminApi/GetMigrationsPreview',\r\n\t\tAPPLY_MIGRATION: '/api/AdminApi/ApplyMigration',\r\n\t\tAPPLY_EMBEDDED_MIGRATION: '/api/AdminApi/ApplyEmbeddedMigration',\r\n\t\tUPDATE_VIEWS: '/api/AdminApi/UpdateViews',\r\n\t\tUPDATE_TRIGGERS: '/api/AdminApi/UpdateTriggers',\r\n\t\tHAS_CHANGES: '/api/AdminApi/HasChanges',\r\n\t},\r\n\r\n\tAUTH: {\r\n\t\tLOGIN: '/api/AuthApi/Login',\r\n\t\tLOGOUT: '/api/AuthApi/Logout',\r\n\t\tLOCK_SESSION: '/api/AuthApi/LockSession',\r\n\t\tUNLOCK_SESSION: '/api/AuthApi/UnLockSession',\r\n\t\tRESET_PASSWORD: '/api/AuthApi/ResetPassword',\r\n\r\n\t\tUPDATE_EXPIRED_PASSWORD: '/api/UserApi/UpdatePassword',\r\n\t\tUPDATE_TOTP_SECRET: '/api/UserApi/UpdateTotpSecret',\r\n\t\tUPDATE_PASSWORD: '/api/UserApi/ChangePassword',\r\n\t\t\r\n\t\tGET_CACHED_LICENSE: '/api/LicenseApi/GetCachedLicenseInfo',\r\n\t\tUPLOAD_LICENSE_LOGO: '/api/LicenseApi/UploadLicenseLogo'\r\n\t},\r\n\r\n\tGET_SCREEN_BY_ID: '/api/ScreenFormApi/GetScreenById',\r\n\tGET_SCREEN_BY_SCREEN_TYPE: '/api/ScreenFormApi/GetScreenByScreenType',\r\n\tGET_MULTISELECT_CONTROL_DATA: '/api/ScreenFormApi/GetMultiSelectData',\r\n\tGET_EDIT_SCREEN: '/api/ScreenFormApi/GetEditScreen',\r\n\tGET_TABLE_TYPES: '/api/ScreenFormApi/GetTableTypes',\r\n\tGET_TYPES: '/api/ScreenFormApi/GetTypes',\r\n\tGET_ALL_TYPES: '/api/ScreenFormApi/GetAllTypes',\r\n\tIS_TYPE_TRANSFORMATION_REQUIRED: '/api/ScreenFormApi/IsTypeTransformationRequired',\r\n\tDELETE_SCREEN: '/api/FormDesignerApi/GetDeleteScreen',\r\n\r\n\tUPDATE_SCREEN_NAME: '/api/FormDesignerApi/UpdateScreenName',\r\n\r\n\tICON: {\r\n\t\tGET_IMAGE_ICON: '/api/ScreenFormApi/GetImageIcon',\r\n\t},\r\n\r\n\tLOOKUP_EDITOR: {\r\n\t\tGET_LOOKUP_SCREEN_METADATA: '/api/LookupEditorApi/GetMetadata',\r\n\t\tGET_ENTITY: '/api/LookupEditorApi/GetEntity',\r\n\t\tGET_LOOKUP_DATA: '/api/LookupEditorApi/GetDataForTable',\r\n\t\tDELETE_RECORDS: '/api/LookupEditorApi/DeleteRecordsFromLookup',\r\n\t\tSAVE_CHANGES: '/api/LookupEditorApi/SaveChanges',\r\n\t\tGET_LOOKUPS: '/api/LookupEditorApi/GetLookups',\r\n\t\tGET_ENTITIES: '/api/LookupEditorApi/GetEntities',\r\n\t\tGET_LOOKUP: '/api/LookupEditorApi/GetLookup'\r\n\t},\r\n\tQUERY_BUILDER: {\r\n\t\tGET_ENTITY: '/VisualQueryBuilder/GetEntity',\r\n\t\tRUN_QUERY: '/api/VisualQueryBuilderApi/RunQuery',\r\n\t\tCREATE_QUERY: '/api/VisualQueryBuilderApi/CreateNewQuery',\r\n\t\tUPDATE_QUERY: '/api/VisualQueryBuilderApi/UpdateQuery',\r\n\t\tDELETE_QUERY: '/api/VisualQueryBuilderApi/DeleteQuery',\r\n\t\tLOCK_QUERY: '/api/VisualQueryBuilderApi/LockQuery',\r\n\t\tUNLOCK_QUERY: '/api/VisualQueryBuilderApi/UnlockQuery',\r\n\t\tGET_QUERY: '/api/VisualQueryBuilderApi/GetQuery',\r\n\t\tEDIT_QUERY: '/api/VisualQueryBuilderApi/EditQuery',\r\n\t\tGET_TOOLBAR_QUERY: '/api/VisualQueryBuilderApi/GetToolbarQuery',\r\n\t\tNEW_QUERY: '/api/VisualQueryBuilderApi/NewQuery',\r\n\t\tGET_QUERY_SCREENS: '/api/VisualQueryBuilderApi/GetQueryScreens',\r\n\t\tGET_CARD_SCREENS: '/api/VisualQueryBuilderApi/GetCardScreens',\r\n\r\n\t},\r\n\tCOMPONENTS: {\r\n RECORDLINKER: {\r\n IS_LINK_WITH_RECORD_EXIST: \"/api/ScreenFormApi/IsLinkWithRecordExist\",\r\n GET_EXISTING_LINKS_WITH_RECORDS: \"/api/ScreenFormApi/GetExistingLinksWithRecords\",\r\n LINK_WITH_RECORD: \"/api/ScreenFormApi/LinkWithRecord\",\r\n LINK_WITH_RECORDS: \"/api/ScreenFormApi/LinkWithRecords\",\r\n ADD_AND_LINK_RECORD: \"/api/ScreenFormApi/AddAndLinkRecord\",\r\n\t\t\tCOPY_LAST_LINKED_RECORD: \"/api/ScreenFormApi/CopyLastLinkedRecord\",\r\n\t\t}\r\n\t},\r\n\tCONTROLS: {\r\n\t\tGET_HIDE_IF_CONDITION_VALUE: 'api/ControlsApi/GetHideIfConditionValue',\r\n\t\tGET_GRID_DATA: \"/api/ScreenFormApi/GetGridData\",\r\n\t\tNEW_RECORD: \"/api/GridApi/NewRecord\",\r\n\t\tGET_VIEW_GRID_LIST: \"/api/VisualQueryBuilderApi/GetGridViewList\",\r\n\t\tGET_INVOICING_GRID_VIEW_LIST: \"/api/VisualQueryBuilderApi/GetInvoicingGridViewList\",\r\n\t\tGET_LINK_EDITOR_VIEW_GRID_LIST: \"/api/VisualQueryBuilderApi/GetLinkEditorGridViewList\",\r\n\t\tUPDATE_GRID_ROW_DATA: \"/api/ScreenFormApi/UpdateGridRow\",\r\n\t\tUPDATE_GRID_ROWS_DATA: \"/api/ScreenFormApi/UpdateGridRows\",\r\n\t\tDELETE_GRID_ROW_DATA: \"/api/ScreenFormApi/DeleteGridRow\",\r\n\t\tUNLINK_GRID_ROW: \"/api/ScreenFormApi/UnlinkGridRow\",\r\n\t\tUNLINK_GRID_ROWS: \"/api/ScreenFormApi/UnlinkGridRows\",\r\n\t\tINSERT_GRID_ROW_DATA: \"/api/ScreenFormApi/InsertGridRow\",\r\n\t\tUPDATE_GRID_ROW_LIFESTATUS: \"/api/ScreenFormApi/UpdateGridRowLifestatus\",\r\n\t\tLINK_WITH_NEXT_RELATION: '/api/ScreenFormApi/LinkWithNextRelationType',\r\n\t\tGET_DEFAULT_TABLE_VIEW: \"/api/GridApi/GetDefaultTableView\",\r\n\t\tGET_DEFAULT_TABLE_VIEW_METADATA: \"/api/GridApi/GetDefaultTableViewMetaData\",\r\n\t\tEXPORT_DATA: '/api/ScreenFormApi/ExportGridData',\r\n\t\tGET_FAST_FILTER_DATA: '/api/GridApi/GetFilterItems',\r\n\t\tGET_FAST_FILTER_TIME_DATA: '/api/GridApi/GetTimeFilterItems',\r\n\t\tGET_FAST_FILTER_DATE_DATA: '/api/GridApi/GetDateFilterItems',\r\n\t\tGET_FAST_FILTER_DATETIME_DATA: '/api/GridApi/GetDateTimeFilterItems',\r\n\t\tUPDATE_SORT: '/api/GridApi/UpdateSort',\r\n\t\tFOLLOWUP: {\r\n\t\t\tGET_NEXT_LIFESTATUSES: \"/api/FollowUpApi/GetRecordNextLifestatuses\",\r\n\t\t\tCONFIRM_PASSWORD: \"/api/FollowUpApi/ConfirmPassword\",\r\n\t\t\tCHECK_RETIRED_CHILDREN: \"/api/FollowUpApi/CheckRetiredChildren\"\r\n\t\t},\r\n\t\tKANBANBOARD: {\r\n\t\t\tGET_TYPES: \"/api/KanbanBoardApi/GetTypes\",\r\n\t\t\tGET_STATUSES: \"/api/KanbanBoardApi/GetStatuses\",\r\n\t\t\tGET_VIEW_LIST: \"/api/KanbanBoardApi/GetViewList\",\r\n\t\t\tUPDATE_STATUS: \"/api/KanbanBoardApi/UpdateStatus\",\r\n\t\t\tUPDATE_ACTION_STATUS: \"/api/KanbanBoardApi/UpdateActionStatus\",\r\n\t\t\tUPDATE_PRIORITY: \"/api/KanbanBoardApi/UpdatePriority\",\r\n\t\t\tGET_DEFAULT_VIEW_METADATA: \"/api/KanbanBoardApi/GetDefaultKanbanViewMetaData\"\r\n\t\t},\r\n\t\tLINKLIST: {\r\n\t\t\tGET_AUTOLINK_RECORD: \"/api/ControlsApi/GetAutolinkRecord\",\r\n\t\t\tGET_NEW_OR_EXISTING_RECORD: '/api/ControlsApi/GetNewOrExistingLink',\r\n\t\t\tGET_LINKLIST_RELATIONS: '/api/ControlsApi/GetLinkListRelations'\r\n\t\t},\r\n\t\tIMAGE: {\r\n\t\t\tSAVE_UPLOADED_FILE: \"/ScreenForm/SaveUploadedFile\"\r\n\t\t},\r\n\t\tRSSFEED: {\r\n\t\t\tGET_RSS_FEED: '/api/ControlsApi/GetRssFeed'\r\n\t\t},\r\n\t\tDROPDOWN: {\r\n\t\t\tGET_DROPDOWN_DATA: '/api/ScreenFormApi/GetDropdownData'\r\n\t\t},\r\n\t\tTAG: {\r\n\t\t\tGET_TAGS: '/api/ControlsApi/GetTags',\r\n\t\t\tGET_ALL_TAGS: '/api/ControlsApi/GetAllTags'\r\n\t\t},\r\n\t\tBUTTON_TEMPLATE: {\r\n\t\t\tGET_TEMPLATES: '/api/ButtonTemplateApi/GetTemplates',\r\n\t\t\tMERGE_AND_SAVE: '/api/ButtonTemplateApi/MergeAndSave'\r\n\t\t},\r\n\t\tGANNT_CHART: {\r\n\t\t\tGET_GANTT_CHART: '/api/GanttChartApi/GetGanttChart',\r\n\t\t\tUPDATE: '/api/GanttChartApi/Update'\r\n\t\t},\r\n\t\tSPIM_COPY: {\r\n\t\t\tGET_CLASS: '/api/SpimCopyApi/GetClass',\r\n\t\t\tASSIGN_CLASS: '/api/SpimCopyApi/AssignClass',\r\n\t\t\tUPDATE_VERSION: '/api/SpimCopyApi/UpdateVersion'\r\n\t\t}\r\n\t},\r\n\tUSER: {\r\n\t\tGET_CURRENT_USER: '/api/UserApi/GetCurrentUser',\r\n\t\tGET_SECURITY_PROFILES: '/api/UserApi/GetSecurityProfiles',\r\n\t\tSELECT_MAIN_PROFILE: '/api/UserApi/SelectMainProfile',\r\n\t\tGET_SECURITY_PROFILE: '/api/UserApi/GetSecurityProfile',\r\n\t\tGET_SECURITY_DATA: '/api/UserApi/GetSecurityData'\r\n\t},\r\n\tPORTLETS: {\r\n\t\tGET_PORTLET_SPACES: '/api/PortletsApi/GetPortletSpaces',\r\n\t\tGET_PORTLET_SPACE: '/api/PortletsApi/GetPortletSpace',\r\n\t\tGET_PORTLET_SPACE_BY_ID: '/api/PortletsApi/PortletSpaceById',\r\n\t\tGET_AVAILABLE_PORTLETS: '/api/PortletsApi/GetAvailablePortlets',\r\n\t\tUPDATE_PORTLET_SPACE: '/api/PortletsApi/UpdatePortletSpace',\r\n\t\tCREATE_PORTLET_SPACE: '/api/PortletsApi/AddPortletSpace',\r\n\t\tCOPY_PORTLET_SPACE: '/api/PortletsApi/CopyPortletSpace',\r\n\t\tUPDATE_PORTLET_SPACE_INFO: '/api/PortletsApi/UpdatePortletSpaceInfo',\r\n\t\tBIND_TO_CONTROL: '/api/PortletsApi/BindToControl',\r\n\t\tDELETE_PORTLET_SPACE: '/api/PortletsApi/DeletePortletSpace'\r\n\t},\r\n\tLINK_EDITOR: {\r\n\t\tGET_DATA: '/api/LinkEditorApi/GetLinkData',\r\n\t\tGET_RELATION_TYPES: '/api/ScreenFormApi/GetRelationTypesData'\r\n\t},\r\n\tCYBERCONFIG_MANAGER: {\r\n\t\tGET_DATABASES: '/api/CyberConfigApi/GetDatabases',\r\n\t\tREAD_CONFIG: '/api/CyberConfigApi/ReadConfig',\r\n\t\tCREATE_CONFIG: '/api/CyberConfigApi/CreateConfig',\r\n\t\tUPDATE_CONFIG: '/api/CyberConfigApi/UpdateConfig',\r\n\t\tDELETE_CONFIG: '/api/CyberConfigApi/DeleteConfig',\r\n\t\tCREATE_ENVIRONMENT: '/api/CyberConfigApi/CreateEnvironment'\r\n\t},\r\n\tSECURITY_EDITOR: {\r\n\t\tGET_SECURITY_INFO_FOR_RECORD: '/api/RecordSecurityApi/GetSecurityInfoForRecord'\r\n\t},\r\n\tFIELD_COLLECTION_DESIGNER: {\r\n\t\tGET_DATA_ROLE: '/api/FieldCollectionDesignerApi/GetUserCollection',\r\n\t\tGET_ENTITIES: '/api/FieldCollectionDesignerApi/GetEntities',\r\n\t\tGET_FIELD_COLLECTION: '/api/FieldCollectionDesignerApi/GetFieldCollections',\r\n\t\tSAVE_FIELD_COLLECTION: '/api/FieldCollectionDesignerApi/SaveChanges',\r\n\t\tUPDATE_VIEWS: '/api/FieldCollectionDesignerApi/UpdateViews'\r\n\t},\r\n\tFORM_DESIGNER: {\r\n\t\tGET_ALTERNATIVE_ENTITIES: '/api/FormDesignerApi/GetAlternativeEntities'\r\n\t},\r\n\tDATABASE_DESIGNER: {\r\n\t\tGET_VIEW_TEMPLATE: '/api/DatabaseDesignerApi/GetViewTemplate',\r\n\t\tVALIDATE_VIEW: '/api/DatabaseDesignerApi/ValidateView',\r\n\t\tEXECUTE_QUERY: '/api/DatabaseDesignerApi/ExecuteQuery',\r\n\t},\r\n\tBULK_EMAIL: {\r\n\t\tGET_CONFIG: '/api/BulkEmailApi/GetConfig',\r\n\t\tGET_TEMPLATES: '/api/BulkEmailApi/GetTemplates',\r\n\t\tSTART: '/api/BulkEmailApi/Start',\r\n\t\tSTOP: '/api/BulkEmailApi/Stop',\r\n\t\tCONFIGURE_BULK_EMAILS: '/api/BulkEmailApi/ConfigureBulkEmails',\r\n\t\tCREATE_NEW_GROUP: '/api/BulkEmailApi/CreateNewGroup'\r\n },\r\n\r\n CANVAS: {\r\n GET_DW_PACKAGES: 'api/CanvasApi/GetDataWizardPackages'\r\n },\r\n\r\n\tBI: {\r\n\t\tGET_SETTINGS: 'api/BIApi/GetSettings',\r\n\t\tGET_ITEMS: 'api/BIApi/GetItems',\r\n\t\tGET_TOKEN: 'api/BIApi/GetToken'\r\n\t}\r\n};","import enumerable from './Decorators/EnumerableDecorator';\r\n\r\nexport class ZIndexManager {\r\n\tprivate static inst: ZIndexManager;\r\n\tprivate _zIndex: number;\r\n\r\n\tconstructor() {\r\n\t\tthis._zIndex = 10000;\r\n\t}\r\n\r\n\tstatic get Instance() {\r\n\t\tif (this.inst === null || this.inst === undefined) {\r\n\t\t\tthis.inst = new ZIndexManager();\r\n\t\t}\r\n\t\treturn this.inst;\r\n\t}\r\n\r\n\tget NextValue(): number {\r\n\t\treturn this._zIndex ++ ;\r\n\t}\r\n\r\n\tget ResetValue(): number {\r\n\t\treturn this._zIndex = 10000;\r\n\t}\r\n\r\n}","import {ActionCheckListDto} from \"./ActionCheckListDto\";\r\nimport {CurrentLifeStatusDto} from \"./CurrentLifeStatusDto\";\r\n\r\nexport class ActionsCheckListsDto {\r\n CurrentLifeStatus: CurrentLifeStatusDto;\r\n LifeStatuses: ActionCheckListDto[];\r\n\r\n constructor() {\r\n this.LifeStatuses = [];\r\n }\r\n}","export class CurrentLifeStatusDto {\r\n Id: number;\r\n Name: string;\r\n Memo: string;\r\n MemoTranslation: string;\r\n LifeStatusTranslatedName: string;\r\n LifestatusNoActionNode: boolean;\r\n IsFollowUpDisabled: boolean;\r\n DisabledReason: string;\r\n\r\n constructor(partial?: Partial) {\r\n if (partial) {\r\n this.Id = partial.Id;\r\n this.Name = partial.Name;\r\n this.Memo = partial.Memo;\r\n this.MemoTranslation = partial.MemoTranslation;\r\n this.LifeStatusTranslatedName = partial.LifeStatusTranslatedName;\r\n this.LifestatusNoActionNode = partial.LifestatusNoActionNode;\r\n this.DisabledReason = partial.DisabledReason;\r\n this.IsFollowUpDisabled = partial.IsFollowUpDisabled;\r\n }\r\n }\r\n}","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport OperationResult from \"Core/Results/ResultModels/OperationResult\";\r\n\r\nimport {ActionCheckListDto} from \"../Models/Dto/ActionCheckListDto\";\r\nimport {IActionsCheckListsSerializedData} from \"./IActionsCheckListsSerializedData\";\r\n\r\nexport class ActionCheckListStore {\r\n static GetActionsCheckLists(entityId: number, recordId: number): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: 'api/FollowUpApi/GetRecordNextLifestatuses',\r\n type: 'POST',\r\n dataType: 'json',\r\n }, params: {\r\n entityId: entityId,\r\n recordId: recordId\r\n }\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject.Child && result.ResultObject.Child.CheckLists);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static UpdateActionsCheckList(model: IActionsCheckListsSerializedData): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: 'api/FollowUpApi/UpdateCheckLists',\r\n type: 'POST',\r\n dataType: 'json',\r\n }, params: model\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(null);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n}","import {CurrentLifeStatusViewModel} from \"./CurrentLifeStatusViewModel\";\r\nimport {ActionCheckListViewModel} from \"./ActionCheckListViewModel\";\r\n\r\nexport class ActionsCheckListsViewModel {\r\n CurrentLifeStatus: CurrentLifeStatusViewModel;\r\n CheckStatuses: ActionCheckListViewModel[];\r\n NonCheckStatuses: ActionCheckListViewModel[];\r\n FollowUpMode: boolean;\r\n\r\n constructor() {\r\n this.CheckStatuses = [];\r\n this.NonCheckStatuses = [];\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseCheckItem} from \"../../CheckItems/BaseCheckItem\";\r\nimport {IActionCheckListSerializedData} from \"../../IActionCheckListSerializedData\";\r\n\r\nexport class ActionCheckListViewModel {\r\n LifeStatusId: number;\r\n LifeStatusName: string;\r\n LifeStatusMemo: string;\r\n LifeStatusMemoTranslation: string;\r\n LifeStatusTranslatedName: string;\r\n LifeStatusApprovalName: string;\r\n LifeStatusNoActionNode: boolean;\r\n LifeStatusSort: number;\r\n CheckItems: KnockoutObservableArray;\r\n Valid: KnockoutComputed;\r\n IsFollowUpDisabled: boolean;\r\n DisabledReason: string;\r\n\r\n constructor() {\r\n this.CheckItems = ko.observableArray([]);\r\n this.Valid = ko.computed(() => !_.any(this.CheckItems(), checkItem => !checkItem.Valid()));\r\n }\r\n\r\n EnableValidation() {\r\n this.CheckItems().forEach(checkItem => checkItem.EnableValidation());\r\n }\r\n\r\n\tSerializeData(): IActionCheckListSerializedData {\r\n const checkItems = this.CheckItems().map(checkItem => checkItem.SerializeData());\r\n return {\r\n LifeStatusId: this.LifeStatusId,\r\n CheckItems: checkItems\r\n };\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {ICheckItemParams} from \"./ICheckItemParams\";\r\nimport {ICheckItemSerializedValue} from \"./ICheckItemSerializedValue\";\r\n\r\nexport abstract class BaseCheckItem {\r\n Id: number;\r\n Name: string;\r\n NameTranslation: string;\r\n TypeName: string;\r\n Required: boolean;\r\n\r\n private _labels: LABELS;\r\n\r\n Value: KnockoutObservable;\r\n\r\n ValidationEnabled: KnockoutObservable;\r\n Valid: KnockoutComputed;\r\n IsLoaded: KnockoutObservable;\r\n\r\n protected constructor(params: ICheckItemParams) {\r\n this.Id = params.Id;\r\n this.Name = params.Name;\r\n this.NameTranslation = params.NameTranslation;\r\n this.TypeName = params.TypeName;\r\n this.Required = params.Required;\r\n\r\n this._labels = LABELS;\r\n\r\n this.Value = ko.observable(null);\r\n this.SetValue(params.Value);\r\n\r\n this.IsLoaded = ko.observable(true);\r\n\r\n this.ValidationEnabled = ko.observable(false);\r\n this.Valid = ko.computed(() => this.IsLoaded() && (!this.Required || !!this.Value()));\r\n }\r\n\r\n protected SetValue(value: any) {\r\n this.Value(value);\r\n }\r\n\r\n protected GetValue(): any {\r\n return this.Value();\r\n }\r\n\r\n abstract GetTemplateName(): string;\r\n\r\n SerializeData(): ICheckItemSerializedValue {\r\n const value = this.GetValue();\r\n return {Id: this.Id, Name: this.Name, NameTranslation: this.NameTranslation, TypeName: this.TypeName, Value: value};\r\n }\r\n\r\n AfterRender(el: HTMLElement[]) {\r\n\r\n }\r\n\r\n EnableValidation() {\r\n this.ValidationEnabled(true);\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {BaseCheckItem} from \"../BaseCheckItem\";\r\nimport {ICheckItemParams} from \"../ICheckItemParams\";\r\n\r\nimport Template from 'Core/Components/ActionCheckList/CheckItems/Text/Templates/Template.html';\r\n\r\nko.templates['Core/Components/ActionCheckList/CheckItems/Text/Templates/Template'] = Template;\r\n\r\nexport class TextCheckItem extends BaseCheckItem {\r\n constructor(params: ICheckItemParams) {\r\n super(params);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Components/ActionCheckList/CheckItems/Text/Templates/Template';\r\n }\r\n}","// Module\nvar code = \"
\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {BaseCheckItem} from \"../BaseCheckItem\";\r\nimport {ICheckItemParams} from \"../ICheckItemParams\";\r\n\r\nimport Template from 'Core/Components/ActionCheckList/CheckItems/Integer/Templates/Template.html';\r\n\r\nko.templates['Core/Components/ActionCheckList/CheckItems/Integer/Templates/Template'] = Template;\r\n\r\n\r\nexport class IntegerCheckItem extends BaseCheckItem {\r\n constructor(params: ICheckItemParams) {\r\n super(params);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Components/ActionCheckList/CheckItems/Integer/Templates/Template';\r\n }\r\n}","// Module\nvar code = \"
\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {BaseCheckItem} from \"../BaseCheckItem\";\r\nimport {ICheckItemParams} from \"../ICheckItemParams\";\r\n\r\nimport Template from 'Core/Components/ActionCheckList/CheckItems/YesNo/Templates/Template.html';\r\n\r\nko.templates['Core/Components/ActionCheckList/CheckItems/YesNo/Templates/Template'] = Template;\r\n\r\nexport class YesNoCheckItem extends BaseCheckItem {\r\n constructor(params: ICheckItemParams) {\r\n super(params);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Components/ActionCheckList/CheckItems/YesNo/Templates/Template';\r\n }\r\n\r\n protected SetValue(value: any) {\r\n this.Value(value === '1');\r\n }\r\n}","// Module\nvar code = \"
\";\n// Exports\nexport default code;","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {GetLookupCheckListRequestModel} from \"Core/Components/ActionCheckList/CheckItems/Lookup/Models/GetLookupCheckListRequestModel\";\r\nimport {GetLookupCheckListResponseModel} from \"Core/Components/ActionCheckList/CheckItems/Lookup/Models/GetLookupCheckListResponseModel\";\r\n\r\nexport class LookupCheckItemStore {\r\n static GetLookupCheckListData(params: GetLookupCheckListRequestModel): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/FollowUpApi/GetLookupCheckListData',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => deferredResult.resolve(result))\r\n .fail(error => deferredResult.reject(this.GetResponseError(error, 'Error getting lookup checklist data')));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return { message: JSON.parse(err.message).Message };\r\n }\r\n if (err.status === 500) {\r\n return { message: JSON.parse(err.message).ExceptionMessage };\r\n }\r\n\r\n return { message: generalError };\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {LookupCheckItemStore} from \"Core/Components/ActionCheckList/CheckItems/Lookup/Stores/LookupCheckItemStore\";\r\n\r\nimport {BaseCheckItem} from \"Core/Components/ActionCheckList/CheckItems/BaseCheckItem\";\r\nimport {ICheckItemParams} from \"Core/Components/ActionCheckList/CheckItems/ICheckItemParams\";\r\nimport {GetLookupCheckListResponseModel} from \"Core/Components/ActionCheckList/CheckItems/Lookup/Models/GetLookupCheckListResponseModel\";\r\nimport {LookupCheckListItemModel} from \"Core/Components/ActionCheckList/CheckItems/Lookup/Models/LookupCheckListItemModel\";\r\n\r\nimport Template from 'Core/Components/ActionCheckList/CheckItems/Lookup/Templates/Template.html';\r\n\r\nko.templates['Core/Components/ActionCheckList/CheckItems/Lookup/Templates/Template'] = Template;\r\n\r\nexport class LookupCheckItem extends BaseCheckItem {\r\n ValField: number;\r\n\r\n private _el: HTMLElement;\r\n private _items: KnockoutObservableArray;\r\n private _selectedItem: KnockoutObservable;\r\n\r\n constructor(params: ICheckItemParams) {\r\n super(params);\r\n\r\n this._items = ko.observableArray([]);\r\n this._selectedItem = ko.observable(null);\r\n this.ValField = params.ValField;\r\n this.IsLoaded(false);\r\n\r\n this._selectedItem.subscribe((newValue: LookupCheckListItemModel) => {\r\n if (newValue) {\r\n this.Value(`${newValue.Id}`);\r\n }\r\n else if (this.IsLoaded()) {\r\n this.Value(0);\r\n }\r\n });\r\n }\r\n\r\n AfterRender(el: HTMLElement[]) {\r\n this._el = el[0];\r\n super.AfterRender(el);\r\n\r\n this.LoadData();\r\n }\r\n\r\n LoadData() {\r\n BlockUI.Block({Target: this._el});\r\n\r\n LookupCheckItemStore.GetLookupCheckListData({ FieldId: this.ValField })\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n this.IsLoaded(true);\r\n })\r\n .then((result) => {\r\n const items = result.Items;\r\n const selectedItem = _.find(items,(item: LookupCheckListItemModel) => item.Id === parseInt(this.Value()));\r\n\r\n this._items(items);\r\n this._selectedItem(selectedItem ? selectedItem : null);\r\n })\r\n .fail((error) => new Notifier().Failed(error.message));\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Components/ActionCheckList/CheckItems/Lookup/Templates/Template';\r\n }\r\n}","// Module\nvar code = \"
\";\n// Exports\nexport default code;","import {ICheckItemParams} from \"./ICheckItemParams\";\r\n\r\nimport {BaseCheckItem} from \"./BaseCheckItem\";\r\nimport {TextCheckItem} from \"./Text/TextCheckItem\";\r\nimport {IntegerCheckItem} from \"./Integer/IntegerCheckItem\";\r\nimport {YesNoCheckItem} from \"./YesNo/YesNoCheckItem\";\r\nimport {LookupCheckItem} from \"./Lookup/LookupCheckItem\";\r\n\r\nexport class CheckItemFactory {\r\n static CreateCheckItem(params: ICheckItemParams) : BaseCheckItem {\r\n switch (params.TypeName) {\r\n case 'Text':\r\n return new TextCheckItem(params);\r\n\r\n case 'Integer':\r\n return new IntegerCheckItem(params);\r\n\r\n case 'YesNo':\r\n return new YesNoCheckItem(params);\r\n\r\n case 'Lookup':\r\n return new LookupCheckItem(params);\r\n\r\n default:\r\n console.error('Check item type not implemented');\r\n }\r\n }\r\n}","import {ActionCheckListDto} from \"../Models/Dto/ActionCheckListDto\";\r\nimport {ActionCheckListViewModel} from \"../Models/View/ActionCheckListViewModel\";\r\nimport {CheckItemFactory} from \"../CheckItems/CheckItemFactory\";\r\n\r\nexport class ActionCheckListMappingProfile {\r\n static MapToViewModel(dto: ActionCheckListDto) {\r\n const viewModel = new ActionCheckListViewModel();\r\n\r\n viewModel.LifeStatusId = dto.LifeStatusId;\r\n viewModel.LifeStatusName = dto.LifeStatusName;\r\n viewModel.LifeStatusMemo = dto.LifeStatusMemo;\r\n viewModel.LifeStatusMemoTranslation = dto.LifeStatusMemoTranslation;\r\n viewModel.LifeStatusTranslatedName = dto.LifeStatusTranslatedName;\r\n viewModel.LifeStatusApprovalName = dto.LifeStatusApprovalName;\r\n viewModel.LifeStatusNoActionNode = dto.LifeStatusNoActionNode;\r\n viewModel.LifeStatusSort = dto.LifeStatusSort;\r\n viewModel.IsFollowUpDisabled = dto.IsFollowUpDisabled;\r\n viewModel.DisabledReason = dto.DisabledReason;\r\n viewModel.CheckItems(dto.CheckItems.map(checkItemDto => CheckItemFactory.CreateCheckItem({\r\n Id: checkItemDto.Id,\r\n Name: checkItemDto.Name,\r\n NameTranslation: checkItemDto.NameTranslation,\r\n TypeName: checkItemDto.TypeName,\r\n Value: checkItemDto.Value,\r\n Required: checkItemDto.Required,\r\n ValField: checkItemDto.ValField\r\n })));\r\n\r\n return viewModel;\r\n }\r\n}","export class CurrentLifeStatusViewModel {\r\n Id: number;\r\n Name: string;\r\n Memo: string;\r\n MemoTranslation: string;\r\n LifeStatusTranslatedName: string;\r\n NoActionNode: boolean;\r\n IsFollowUpDisabled: boolean;\r\n DisabledReason: string;\r\n\r\n Valid() {\r\n return true;\r\n }\r\n}","import {CurrentLifeStatusDto} from \"../Models/Dto/CurrentLifeStatusDto\";\r\n\r\nimport {CurrentLifeStatusViewModel} from \"../Models/View/CurrentLifeStatusViewModel\";\r\n\r\nexport class CurrentLifeStatusMappingProfile {\r\n static MapToViewModel(dto: CurrentLifeStatusDto): CurrentLifeStatusViewModel {\r\n const viewModel = new CurrentLifeStatusViewModel();\r\n\r\n viewModel.Id = dto.Id;\r\n viewModel.Name = dto.Name;\r\n viewModel.Memo = dto.Memo;\r\n viewModel.MemoTranslation = dto.MemoTranslation;\r\n viewModel.LifeStatusTranslatedName = dto.LifeStatusTranslatedName;\r\n viewModel.NoActionNode = dto.LifestatusNoActionNode;\r\n viewModel.IsFollowUpDisabled = dto.IsFollowUpDisabled;\r\n viewModel.DisabledReason = dto.DisabledReason\r\n\r\n return viewModel;\r\n }\r\n}","import {ActionsCheckListsDto} from \"../Models/Dto/ActionsCheckListsDto\";\r\nimport {ActionsCheckListsViewModel} from \"../Models/View/ActionsCheckListsViewModel\";\r\nimport {ActionCheckListMappingProfile} from \"./ActionCheckListMappingProfile\";\r\nimport {CurrentLifeStatusMappingProfile} from \"./CurrentLifeStatusMappingProfile\";\r\n\r\nexport class ActionsCheckListsMappingProfile {\r\n static MapToViewModel(dto: ActionsCheckListsDto) {\r\n const viewModel = new ActionsCheckListsViewModel();\r\n\r\n viewModel.CurrentLifeStatus = dto.CurrentLifeStatus && CurrentLifeStatusMappingProfile.MapToViewModel(dto.CurrentLifeStatus);\r\n\r\n viewModel.CheckStatuses = dto.LifeStatuses\r\n .filter(lifeStatus => lifeStatus.CheckItems.length > 0)\r\n .map(lifeStatus => ActionCheckListMappingProfile.MapToViewModel(lifeStatus));\r\n\r\n viewModel.NonCheckStatuses = dto.LifeStatuses\r\n .filter(lifeStatus => lifeStatus.CheckItems.length === 0)\r\n .map(lifeStatus => ActionCheckListMappingProfile.MapToViewModel(lifeStatus));\r\n\r\n return viewModel;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\n\r\nimport {LifeStatusGroupEnum, LifeStatusGroups} from \"Core/Common/Enums/LifeStatusGroups\";\r\n\r\nimport {PromptDialog, Types} from \"Core/Components/Dialogs/PromptDialog/PromptDialog\";\r\n\r\nimport {IActionCheckListParams} from \"Core/Components/ActionCheckList/IActionCheckListParams\";\r\n\r\nimport {ActionsCheckListsDto} from \"Core/Components/ActionCheckList/Models/Dto/ActionsCheckListsDto\";\r\nimport {CurrentLifeStatusDto} from \"Core/Components/ActionCheckList/Models/Dto/CurrentLifeStatusDto\";\r\n\r\nimport {ActionCheckListStore} from \"Core/Components/ActionCheckList/Stores/ActionCheckListStore\";\r\n\r\nimport {ActionsCheckListsMappingProfile} from \"Core/Components/ActionCheckList/Mappings/ActionsCheckListsMappingProfile\";\r\n\r\nimport {ActionsCheckListsViewModel} from \"Core/Components/ActionCheckList/Models/View/ActionsCheckListsViewModel\";\r\nimport {ActionCheckListViewModel} from \"Core/Components/ActionCheckList/Models/View/ActionCheckListViewModel\";\r\nimport {LifeStatusesGeneralModel} from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel\";\r\n\r\nimport {ActionCheckListDto} from \"Core/Components/ActionCheckList/Models/Dto/ActionCheckListDto\";\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {LIFE_STATUS_GROUPS} from \"Core/Constant\";\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {FollowUpStore} from \"Core/Controls/ButtonFollowUp/Stores/FollowUpStore\";\r\nimport {ICheckItemSerializedValue} from \"Core/Components/ActionCheckList/CheckItems/ICheckItemSerializedValue\";\r\n\r\n\r\nimport {FlowFolderModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderModel\";\r\nimport {FlowFolder} from \"Core/Controls/ButtonFollowUp/FlowFolder\";\r\nimport {FlowFolderMemosModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderMemosModel\";\r\nimport {FlowFolderMemos} from \"Core/Controls/ButtonFollowUp/FlowFolderMemos\";\r\nimport {FlowFolderStore} from \"Core/Components/ProgressBar/Stores/FlowFolderStore\";\r\nimport {MutationObserverConfig, RepositionModalObserver} from \"Core/Common/RepositionModalObserver\";\r\n\r\n//Templates\r\nimport Template from 'Core/Components/ActionCheckList/Templates/Template.html';\r\nimport KanbanModeTemplate from 'Core/Components/ActionCheckList/Templates/KanbanModeTemplate.html';\r\n\r\nko.templates['Core/Components/ActionCheckList/Templates/Template'] = Template;\r\nko.templates['Core/Components/ActionCheckList/Templates/KanbanModeTemplate'] = KanbanModeTemplate;\r\n\r\nexport class ActionCheckList extends Event {\r\n private _modal: Modal;\r\n private _viewModel: ActionsCheckListsViewModel;\r\n private _labels = LABELS;\r\n private _oldCheckStatuses: ActionCheckListDto[];\r\n private _iCheckItemsModify: ICheckItemSerializedValue[];\r\n private _isModifyItems: boolean;\r\n private _isFlowFolder: boolean;\r\n private _isFollowUpDisabled: boolean;\r\n private _disabledReason: string;\r\n private _flowFolder: FlowFolder;\r\n private _flowFolderMemos: KnockoutObservable;\r\n private _entityId: number;\r\n private _recordId: number;\r\n private _observer: RepositionModalObserver;\r\n private _kanbanMod: boolean;\r\n private _retireChildren: boolean;\r\n private _isMobile: MobileChecker;\r\n\r\n constructor(private _params: IActionCheckListParams) {\r\n super();\r\n this._isFlowFolder = null;\r\n this._isFollowUpDisabled = null;\r\n this._disabledReason = null;\r\n this._flowFolder = null;\r\n this._flowFolderMemos = ko.observable(null);\r\n this._entityId = this._params.EntityId;\r\n this._recordId = this._params.RecordId;\r\n this._observer = null;\r\n this._kanbanMod = !!this._params.KanbanMod;\r\n this._retireChildren = false;\r\n this._isMobile = MobileChecker.IsMobile();\r\n this.AddEvents();\r\n this.PreventWindowConfirmation();\r\n }\r\n\r\n AddEvents() {\r\n this.AddEvent('ON_CHANGED_PAGE_LEAVING');\r\n this.AddEvent('LIFESTATUS_CHOOSEN');\r\n this.AddEvent('KANBAN_CHECKLIST_CANCEL');\r\n this.AddEvent('KANBAN_CHECKLIST_SAVE');\r\n }\r\n\r\n FlowMemoTab(data, evt){\r\n BlockUI.Block({ Target: $(evt.currentTarget).closest('.jBox-content')[0], JBoxBlockButton: true});\r\n FlowFolderStore.GetFlowMemos({EntityId: this._entityId, RecordId: this._recordId})\r\n .always(()=>BlockUI.Unblock($(evt.currentTarget).closest('.jBox-content')[0], true))\r\n .then(data => {\r\n let flowFolderMemosModel = new FlowFolderMemosModel();\r\n\r\n flowFolderMemosModel.IsMemoTranslatable = data.IsMemoTranslatable\r\n flowFolderMemosModel.MemoItems = data.MemoItemModels;\r\n\r\n this._flowFolderMemos(new FlowFolderMemos(flowFolderMemosModel, {EntityId: this._entityId, RecordId: this._recordId}));\r\n this._flowFolderMemos().On('DELETE_FLOW_FOLDER_MEMO_RECORD', this, (eventArgs)=> {\r\n if (this._modal){\r\n this._modal.OneRepositionModal();\r\n }\r\n })\r\n this._flowFolderMemos().On('CHANGE_FLOW_FOLDER_MEMO_RECORD', this, (eventArgs)=> {\r\n if (this._modal){\r\n this._modal.OneRepositionModal();\r\n }\r\n })\r\n })\r\n }\r\n\r\n IsModifyItems(): boolean {\r\n this._isModifyItems = false;\r\n let oldCheckStatuses = this._oldCheckStatuses;\r\n\r\n _.each(oldCheckStatuses, (oldCheckStatus, key) => {\r\n _.each(oldCheckStatus.CheckItems, (oldCheckItem, key) => {\r\n let newCheckStatuses = this._viewModel.CheckStatuses.map(checkStatus => checkStatus.SerializeData());\r\n\r\n _.each(newCheckStatuses, (newCheckStatus, key) => {\r\n this._iCheckItemsModify = _.filter(newCheckStatus.CheckItems, (newCheckItem) => {\r\n const oldID = oldCheckItem.Id,\r\n newID = newCheckItem.Id,\r\n oldValue = oldCheckItem.Value,\r\n newValue = newCheckItem.Value === '' ? newCheckItem.Value = null : newCheckItem.Value;\r\n\r\n return (oldID === newID) && (oldValue !== newValue);\r\n });\r\n\r\n if (this._iCheckItemsModify.length != 0) {\r\n this._isModifyItems = true;\r\n }\r\n });\r\n\r\n });\r\n });\r\n return this._isModifyItems;\r\n }\r\n\r\n InitFlowFolder(isFlowFolder: boolean, _entityId: number, flowFolderModel?: FlowFolderModel, followUpData?: LifeStatusesGeneralModel){\r\n this._isFlowFolder = isFlowFolder;\r\n\r\n if (followUpData) {\r\n this._isFollowUpDisabled = followUpData.IsFollowUpDisabled;\r\n this._disabledReason = followUpData.DisabledReason;\r\n }\r\n\r\n if (this._isFlowFolder) {\r\n this._flowFolder = new FlowFolder();\r\n this._flowFolder.Init(this._isFlowFolder, this._entityId, flowFolderModel);\r\n this._flowFolder.On('CLOSE_FOLLOW_UP_LIFE_STATUSES', this, (eventArgs)=> {\r\n this.Close();\r\n });\r\n }\r\n }\r\n\r\n PreventWindowConfirmation() {\r\n const eventWindowConfirmation = (event) => {\r\n if (this.IsModifyItems()) {\r\n // Cancel the event as stated by the standard.\r\n event.preventDefault();\r\n // Chrome requires returnValue to be set.\r\n event.returnValue = 'Would you like to leave the page?';\r\n return 'Would you like to leave the page?'\r\n } else {\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n };\r\n\r\n window.addEventListener('beforeunload', eventWindowConfirmation);\r\n\r\n this.On('ON_CHANGED_PAGE_LEAVING', this, () => {\r\n window.removeEventListener('beforeunload', eventWindowConfirmation);\r\n });\r\n }\r\n\r\n GetTemplateName() {\r\n if (this._kanbanMod) {\r\n return 'Core/Components/ActionCheckList/Templates/KanbanModeTemplate';\r\n } else {\r\n return 'Core/Components/ActionCheckList/Templates/Template';\r\n }\r\n }\r\n\r\n AfterRender(el: HTMLElement): void {\r\n\r\n }\r\n\r\n HasAnyCheckedStatuses() {\r\n return this._viewModel && this._viewModel.CheckStatuses.length > 0;\r\n }\r\n\r\n Show() {\r\n let self = this;\r\n this._modal = new Modal({\r\n addClass: 'requestCheckListPopup',\r\n minWidth: 350,\r\n minHeight: 150,\r\n maxHeight: '85vh',\r\n maxWidth: '60vw',\r\n closeOnEsc: false,\r\n blockScroll: true,\r\n onOpen: function () {\r\n $(this.closeButton[0]).off('click');\r\n this.closeButton[0].addEventListener('click', self.CloseModal.bind(self));\r\n\r\n const target: HTMLElement = this.wrapper.find('.jBox-content')[0];\r\n const mutationObserverConfig: MutationObserverConfig = {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true,\r\n }\r\n self._observer = new RepositionModalObserver(target, mutationObserverConfig);\r\n }\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n CloseModal(evt) {\r\n evt.preventDefault();\r\n if (this._modal) {\r\n this._observer && this._observer.Disconnect();\r\n this._modal.Close();\r\n\r\n if (this._kanbanMod){\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n this.Trigger('KANBAN_CHECKLIST_CANCEL');\r\n this.SaveCheckList();\r\n } else {\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n this.SaveCheckList();\r\n }\r\n\r\n }\r\n }\r\n\r\n ProvideData(checkLists: ActionCheckListDto[]) {\r\n let newCheckLists = checkLists;\r\n _.forEach(newCheckLists, (list) => {\r\n _.forEach(list.CheckItems, (item) => {\r\n if (item.TypeName === 'YesNo' && item.Value === '0') {\r\n item.Value = false;\r\n }\r\n });\r\n });\r\n this._oldCheckStatuses = newCheckLists;\r\n\r\n const actionsCheckListsDto = this.ExtendDto(checkLists);\r\n\r\n this._viewModel = ActionsCheckListsMappingProfile.MapToViewModel(actionsCheckListsDto);\r\n this._viewModel.FollowUpMode = this._params.FollowUpMode;\r\n }\r\n\r\n LoadData() {\r\n BlockUI.Block();\r\n\r\n const deferred = P.defer();\r\n\r\n ActionCheckListStore.GetActionsCheckLists(this._params.EntityId, this._params.RecordId)\r\n .then(checkLists => {\r\n this.ProvideData(checkLists);\r\n BlockUI.Unblock();\r\n deferred.resolve(null);\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n BlockUI.Unblock();\r\n\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n TryFollowUpKanbanModCheckStatus(status: ActionCheckListViewModel, disable?: boolean){\r\n if(disable) {\r\n return;\r\n }\r\n\r\n this.EnableValidation();\r\n\r\n if (!status.Valid()) {\r\n return;\r\n }\r\n const lifeStatusesSerializedData = this._viewModel.CheckStatuses.map(checkStatus => checkStatus.SerializeData());\r\n this.Trigger('KANBAN_CHECKLIST_SAVE', {serializedData: lifeStatusesSerializedData});\r\n if (this._modal) {\r\n this._observer && this._observer.Disconnect();\r\n this._modal.Close();\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n }\r\n\r\n TryFollowUpKanbanModCurrentLifeStatus(status: ActionCheckListViewModel, disable?: boolean) {\r\n if(disable) {\r\n return;\r\n }\r\n\r\n this.Trigger('KANBAN_CHECKLIST_CANCEL');\r\n this.SaveCheckList();\r\n if (this._modal) {\r\n this._observer && this._observer.Disconnect();\r\n this._modal.Close();\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n }\r\n\r\n TryFollowUp(status: ActionCheckListViewModel, disable?: boolean) {\r\n if(disable) {\r\n return;\r\n }\r\n\r\n this.EnableValidation();\r\n\r\n if (!this._params.FollowUpMode) {\r\n return;\r\n }\r\n\r\n if (!status.Valid()) {\r\n return;\r\n }\r\n\r\n if (LifeStatusGroups.GetLifeStatusGroup(status.LifeStatusSort) === LifeStatusGroupEnum.Retired) {\r\n this.CheckRetiredChildren(status);\r\n return;\r\n }\r\n\r\n this.PickLifeStatus(status);\r\n }\r\n\r\n EnableValidation() {\r\n this._viewModel.CheckStatuses.forEach(lifeStatus => lifeStatus.EnableValidation());\r\n }\r\n\r\n private ExtendDto(checkLists: ActionCheckListDto[]) {\r\n const extended = new ActionsCheckListsDto();\r\n\r\n if (this._params.FollowUpMode) {\r\n extended.CurrentLifeStatus = new CurrentLifeStatusDto({\r\n Id: this._params.CurrentLifestatus.Id,\r\n Name: this._params.CurrentLifestatus.Name,\r\n Memo: this._params.CurrentLifestatus.Memo,\r\n MemoTranslation: this._params.CurrentLifestatus.MemoTranslation,\r\n LifeStatusTranslatedName: this._params.CurrentLifestatus.TranslatedName,\r\n LifestatusNoActionNode: this._params.CurrentLifestatus.NoActionNode,\r\n DisabledReason: this._params.CurrentLifestatus.DisabledReason,\r\n IsFollowUpDisabled: this._params.CurrentLifestatus.IsFollowUpDisabled\r\n });\r\n }\r\n\r\n extended.LifeStatuses = checkLists || [];\r\n\r\n return extended;\r\n }\r\n\r\n Close() {\r\n if (this._modal) {\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n this._observer && this._observer.Disconnect();\r\n this._modal.Close();\r\n } else {\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n }\r\n\r\n PickLifeStatus(lifeStatus: ActionCheckListViewModel) {\r\n const confirmationText = CONFIRMATIONS.ARE_SURE_TO_CHANGE_LIFESTATUS\r\n .replace('{fromstatus}', this._params.CurrentLifestatus.Name)\r\n .replace('{tostatus}', lifeStatus.LifeStatusName);\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n this,\r\n () => {\r\n this.UpdateLifeStatus(lifeStatus);\r\n });\r\n\r\n if (lifeStatus.LifeStatusId === this._params.CurrentLifestatus.Id) {\r\n this.UpdateLifeStatus(lifeStatus);\r\n return;\r\n }\r\n\r\n const approvalName = lifeStatus.LifeStatusApprovalName || 'Off';\r\n switch (approvalName) {\r\n case 'Off':\r\n this.UpdateLifeStatus(lifeStatus);\r\n break;\r\n case 'Password':\r\n const passwordPrompt = new PromptDialog(\r\n {\r\n Type: Types.Password,\r\n Label: CONFIRMATIONS.PLEASE_TYPE_YOUR_PASSWORD_TO_CONFIRM,\r\n Value: '',\r\n MinHeight: 200,\r\n Required: true,\r\n RequiredErrorMessage: this._labels.PASSWORD + ' ' + NOTIFICATIONS.IS_REQUIRED,\r\n ShowNotification: false,\r\n CloseOnSave: false\r\n });\r\n passwordPrompt.Show();\r\n\r\n passwordPrompt.On('Save', this,\r\n (eventargs) => {\r\n const password = eventargs.data.value;\r\n if (password) {\r\n BlockUI.Block();\r\n\r\n FollowUpStore.ConfirmPassword({password: password})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((response) => {\r\n if (response) {\r\n passwordPrompt.Hide();\r\n this.UpdateLifeStatus(lifeStatus, password);\r\n } else {\r\n passwordPrompt.ExternalInvalidActionHandling(NOTIFICATIONS.INCORRECT_PASSWORD);\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n });\r\n }\r\n }\r\n );\r\n break;\r\n\r\n case 'Yes/No':\r\n confirmationDialog.Show();\r\n break;\r\n }\r\n\r\n }\r\n\r\n UpdateLifeStatus(lifeStatus: ActionCheckListViewModel, password?) {\r\n this.SaveCheckList().then(() => {\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n this.Trigger('LIFESTATUS_CHOOSEN', {\r\n Option: lifeStatus,\r\n LifeStatus: lifeStatus,\r\n Password: password,\r\n RetireChildren: this._retireChildren\r\n });\r\n\r\n this._modal.Close();\r\n });\r\n }\r\n\r\n SaveCheckList() {\r\n BlockUI.Block();\r\n\r\n const lifeStatusesSerializedData = this._viewModel.CheckStatuses.map(checkStatus => checkStatus.SerializeData());\r\n\r\n const updateCheckListPromise = ActionCheckListStore.UpdateActionsCheckList({\r\n EntityId: this._params.EntityId,\r\n RecordId: this._params.RecordId,\r\n LifeStatuses: lifeStatusesSerializedData\r\n });\r\n\r\n updateCheckListPromise\r\n .fail(error => {\r\n new Notifier().Failed(error.message)\r\n }).always(() => BlockUI.Unblock());\r\n\r\n return updateCheckListPromise;\r\n }\r\n\r\n CheckRetiredChildren(status: ActionCheckListViewModel) {\r\n BlockUI.Block();\r\n FollowUpStore.CheckRetiredChildren({\r\n ParentEntityId: this._params.EntityId,\r\n ParentRecordId: this._params.RecordId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((data) => {\r\n if (!data.ChildrenToRetireExist) {\r\n this.PickLifeStatus(status);\r\n return;\r\n }\r\n\r\n const retiredStatuses = data.RetiredStatuses.join(', ');\r\n const confirmationText = CONFIRMATIONS.ALL_CHILD_RECORDS_WILL_BE_MOVED_TO_THE_RETIRED_STATUSES\r\n .replace('{RetiredStatuses}', retiredStatuses);\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n this,\r\n () => {\r\n this._retireChildren = data.ChildrenToRetireExist;\r\n this.PickLifeStatus(status);\r\n });\r\n\r\n confirmationDialog.Show();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n });\r\n }\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {BrowserBarcodeReader, DecodeHintType} from '@zxing/library';\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\n\r\nimport BarcodeScannerTemplate from 'Core/Components/BarcodeScanner/Templates/BarcodeScanner.html';\r\n\r\nko.templates['Core/Components/BarcodeScanner/Templates/BarcodeScanner'] = BarcodeScannerTemplate;\r\n\r\ninterface BarcodeScannerParams {\r\n isContinuous?: boolean;\r\n}\r\n\r\nexport class BarcodeScanner extends Event {\r\n _devices = ko.observableArray();\r\n _selectedDeviceId = ko.observable();\r\n\r\n private _modal = new Modal(\r\n { heightInPercent: MobileChecker.IsMobile() ? 100 : undefined, addClass: 'barcode-scanner-modal-container' },\r\n true\r\n );\r\n\r\n private _videoContainer: HTMLDivElement;\r\n private _videoElement: HTMLVideoElement;\r\n private _reader = new BrowserBarcodeReader(300, new Map([[DecodeHintType.TRY_HARDER, true]]));\r\n private _isDisabled = false;\r\n private _isContinuous?: boolean;\r\n\r\n constructor(params: BarcodeScannerParams = {}) {\r\n super();\r\n\r\n this._isContinuous = params.isContinuous;\r\n }\r\n\r\n Show() {\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/BarcodeScanner/Templates/BarcodeScanner';\r\n }\r\n\r\n AfterRender() {\r\n this._videoElement = this._modal.Wrapper.querySelector('video');\r\n\r\n const startDecodingPromise = this.StartDecoding();\r\n\r\n startDecodingPromise.then(async streamStarted => {\r\n if (!streamStarted) {\r\n return;\r\n }\r\n\r\n try {\r\n const devices = await this._reader.listVideoInputDevices();\r\n\r\n this._devices(devices);\r\n this._selectedDeviceId(this.GetCurrentDeviceId());\r\n } catch (error) {\r\n new Notifier().Failed(error.message);\r\n }\r\n });\r\n\r\n this._selectedDeviceId.subscribe(selectedDeviceId => {\r\n if (selectedDeviceId !== this.GetCurrentDeviceId()) {\r\n this._reader.reset();\r\n\r\n this.StartDecoding();\r\n }\r\n });\r\n\r\n this._modal.On('CLOSE', this, () => {\r\n startDecodingPromise.then(() => {\r\n this._reader.reset();\r\n\r\n this.Trigger('CLOSE');\r\n });\r\n });\r\n }\r\n\r\n Reenable() {\r\n this._isDisabled = false;\r\n }\r\n\r\n async StartDecoding() {\r\n const videoCover: any = this._modal.Wrapper.querySelector('.barcode-scanner-modal__video-cover');\r\n\r\n try {\r\n await this._reader.decodeFromVideoDevice(this._selectedDeviceId(), this._videoElement, result => {\r\n if (result && !this._isDisabled) {\r\n this.Trigger('SUBMIT', { value: result.getText() });\r\n this._isDisabled = true;\r\n if (this._isContinuous) {\r\n videoCover.animate([{opacity: 0}, {opacity: 0.5}, {opacity: 0}], 500);\r\n } else {\r\n this._modal.Close();\r\n }\r\n if (navigator.vibrate) {\r\n navigator.vibrate(50);\r\n }\r\n }\r\n });\r\n\r\n return true;\r\n } catch (error) {\r\n new Notifier().Failed(!navigator.mediaDevices ? 'Camera can be used only on https' : error.message);\r\n }\r\n }\r\n\r\n GetCurrentDeviceId() {\r\n const videoTracks = this._videoElement.srcObject ? (this._videoElement.srcObject as MediaStream).getVideoTracks() : [];\r\n\r\n if (!videoTracks[0]) {\r\n return undefined;\r\n }\r\n\r\n const videoTrackSettings = videoTracks[0].getSettings();\r\n\r\n return videoTrackSettings.deviceId;\r\n }\r\n}\r\n","import * as _ from \"underscore\";\r\n\r\nimport {ColorPaletteItem} from \"./ColorModels/Palette/ColorPaletteItem\";\r\n\r\nimport * as RALColorsJson from \"Core/Components/ColorSelector/ColorModels/Palette/Data/RALColors.json\";\r\nimport * as PaletteColorsJson from \"Core/Components/ColorSelector/ColorModels/Palette/Data/PaletteColors.json\";\r\n\r\nexport class ColorConverter {\r\n private static _paletteColors: ColorPaletteItem[];\r\n private static _ralColors: ColorPaletteItem[];\r\n\r\n private static get RalColors() {\r\n if (this._ralColors) {\r\n return this._ralColors;\r\n }\r\n\r\n this._ralColors = this.ReadColorPalette(RALColorsJson);\r\n return this._ralColors;\r\n }\r\n\r\n private static get PaletteColors() {\r\n if (this._paletteColors) {\r\n return this._paletteColors;\r\n }\r\n\r\n this._paletteColors = this.ReadColorPalette(PaletteColorsJson);\r\n return this._paletteColors;\r\n }\r\n\r\n static ToHex(color: string) {\r\n if (!color) {\r\n return null;\r\n }\r\n\r\n if (color.startsWith('#')) {\r\n return color;\r\n }\r\n\r\n if (color.startsWith('RAL')) {\r\n return this.FromRalToHex(color);\r\n }\r\n\r\n return this.FromPaletteToHex(color);\r\n }\r\n\r\n static Hexify(color: string, alpha?: number) {\r\n const rgba = this.HexToRGB(color, alpha);\r\n const values = rgba\r\n .replace(/rgba?\\(/, '')\r\n .replace(/\\)/, '')\r\n .replace(/[\\s+]/g, '')\r\n .split(',');\r\n const a = parseFloat(values[3] || '1'),\r\n r = Math.floor(a * parseInt(values[0]) + (1 - a) * 255),\r\n g = Math.floor(a * parseInt(values[1]) + (1 - a) * 255),\r\n b = Math.floor(a * parseInt(values[2]) + (1 - a) * 255);\r\n return \"#\" +\r\n (\"0\" + r.toString(16)).slice(-2) +\r\n (\"0\" + g.toString(16)).slice(-2) +\r\n (\"0\" + b.toString(16)).slice(-2);\r\n }\r\n\r\n static HexToRGB(hex: string, alpha?: number) {\r\n const r = parseInt(hex.slice(1, 3), 16),\r\n g = parseInt(hex.slice(3, 5), 16),\r\n b = parseInt(hex.slice(5, 7), 16);\r\n\r\n if (alpha) {\r\n return \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + alpha + \")\";\r\n } else {\r\n return \"rgb(\" + r + \", \" + g + \", \" + b + \")\";\r\n }\r\n }\r\n\r\n static GetContrast(hexValue) {\r\n if (hexValue) {\r\n if (hexValue.slice(0, 1) === '#') {\r\n hexValue = hexValue.slice(1);\r\n\r\n if (hexValue.length === 3) {\r\n hexValue = _.map(hexValue.split('') as number[], (hex) => {\r\n return hex + hex;\r\n }).join('');\r\n }\r\n\r\n let r = parseInt(hexValue.substr(0,2),16);\r\n let g = parseInt(hexValue.substr(2,2),16);\r\n let b = parseInt(hexValue.substr(4,2),16);\r\n\r\n let yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;\r\n\r\n return (yiq >= 128) ? 'black' : 'white';\r\n }\r\n }\r\n }\r\n\r\n private static ReadColorPalette(json: any) {\r\n try {\r\n return ColorPaletteItem.Deserialize(json);\r\n } catch (e) {\r\n console.error(e.message);\r\n return [];\r\n }\r\n }\r\n\r\n private static FromPaletteToHex(color: string) {\r\n const colorItem = _.find(this.PaletteColors, item => item.Name === color);\r\n return colorItem && colorItem.Value || null;\r\n }\r\n\r\n private static FromRalToHex(color: string) {\r\n const colorItem = _.find(this.RalColors, item => item.Name === color);\r\n return colorItem && colorItem.Value || null;\r\n }\r\n}","import enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class ColorDescription {\r\n constructor(private _name: string, private _color: string) {\r\n }\r\n\r\n @enumerable get Name() {\r\n return this._name;\r\n }\r\n\r\n @enumerable get Color() {\r\n return this._color;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {IColorSelectorOptions} from \"../IColorSelectorOptions\";\r\n\r\nexport abstract class ColorModel extends Event {\r\n protected label: string;\r\n protected enabled: KnockoutObservable;\r\n\r\n protected constructor(options: IColorSelectorOptions) {\r\n super();\r\n\r\n this.label = options.Label;\r\n this.enabled = ko.observable(true);\r\n }\r\n\r\n Enable(enabled: boolean) {\r\n this.enabled(enabled);\r\n }\r\n\r\n abstract get ColorValue();\r\n\r\n abstract SetColor(color: string);\r\n\r\n abstract Reset();\r\n\r\n abstract GetTemplate(): any;\r\n}\r\n","import * as ko from 'knockout';\r\n\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nimport {ColorModel} from \"../ColorModel\";\r\n\r\nimport {IColorSelectorOptions} from \"../../IColorSelectorOptions\";\r\nimport {ColorDescription} from \"../../ColorDescription\";\r\n\r\nimport Template from './Template.html';\r\n\r\nexport class HexColorModel extends ColorModel {\r\n private _selectedColor: KnockoutObservable;\r\n private _inline: KnockoutObservable;\r\n private _position: string;\r\n\r\n constructor(options: IColorSelectorOptions) {\r\n super(options);\r\n this._selectedColor = ko.observable(options.InitialColor);\r\n this._inline = ko.observable(!!options.InlineMod);\r\n this._position = options.Positions;\r\n }\r\n\r\n @enumerable get ColorValue() {\r\n return this._selectedColor();\r\n }\r\n\r\n SetColor(color: string) {\r\n this._selectedColor(color);\r\n }\r\n\r\n GetTemplate(): any {\r\n return Template;\r\n }\r\n\r\n SelectColor(color: string) {\r\n this._selectedColor(color);\r\n this.Trigger('COLOR_SET', new ColorDescription(color, color));\r\n }\r\n\r\n Reset() {\r\n this._selectedColor(null);\r\n this.Trigger('COLOR_RESET');\r\n }\r\n}","// Module\nvar code = \"
\";\n// Exports\nexport default code;","import {deserialize, GenericDeserialize} from \"libs/cerialize\";\r\n\r\nexport class ColorPaletteItem {\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n Value: string;\r\n\r\n static Deserialize(json: any): Array {\r\n return Array.prototype.map.call(json, item => GenericDeserialize(item, ColorPaletteItem));\r\n }\r\n}","export enum ColorPalettes {\r\n RAL,\r\n Library\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\n\r\nimport {IColorSelectorOptions} from \"../../IColorSelectorOptions\";\r\n\r\nimport {ColorDescription} from \"../../ColorDescription\";\r\n\r\nimport {ColorPalettes} from \"./Enums/ColorPalettes\";\r\n\r\nimport {ColorModel} from \"../ColorModel\";\r\nimport {ColorPaletteItem} from \"./ColorPaletteItem\";\r\n\r\nimport * as RALColorsJson from \"Core/Components/ColorSelector/ColorModels/Palette/Data/RALColors.json\";\r\nimport * as PaletteColorsJson from \"Core/Components/ColorSelector/ColorModels/Palette/Data/PaletteColors.json\";\r\n\r\nimport Template from './Templates/Template.html';\r\nimport Palette from './Templates/Palette.html';\r\nimport {IPaletteColorModelOptions} from \"./IPaletteColorModelOptions\";\r\n\r\nko.templates[\"Core/Components/ColorSelector/ColorModels/Palette/Templates/Palette\"] = Palette;\r\n\r\nexport class PaletteColorModel extends ColorModel {\r\n private _modal: Modal;\r\n\r\n private _label: string;\r\n private _colors: ColorPaletteItem[];\r\n private _selectedColor: KnockoutObservable;\r\n\r\n constructor(options: IPaletteColorModelOptions) {\r\n super(options);\r\n\r\n this._label = options.Label;\r\n\r\n this.InitPalette(options.Palette);\r\n this.InitSelectedColor(options.InitialColor);\r\n }\r\n\r\n @enumerable get Colors() {\r\n return this._colors;\r\n }\r\n\r\n @enumerable get ColorValue() {\r\n return this._selectedColor() && this._selectedColor().Value;\r\n }\r\n\r\n SetColor(color: string) {\r\n const item = this.GetColorItem(color);\r\n this._selectedColor(item);\r\n }\r\n\r\n GetTemplate(): any {\r\n return Template;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Components/ColorSelector/ColorModels/Palette/Templates/Palette';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n ShowColorPalette() {\r\n this._modal = new Modal({}, true);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n SelectColor(item: ColorPaletteItem) {\r\n this._modal.Close();\r\n\r\n this._selectedColor(item);\r\n this.Trigger('COLOR_SET', new ColorDescription(item.Name, item.Value));\r\n }\r\n\r\n Reset() {\r\n this._selectedColor(null);\r\n this.Trigger('COLOR_RESET');\r\n }\r\n\r\n private InitPalette(palette: ColorPalettes) {\r\n const colorsJson = palette === ColorPalettes.RAL ? RALColorsJson : PaletteColorsJson;\r\n\r\n try {\r\n this._colors = ColorPaletteItem.Deserialize(colorsJson);\r\n _.first(this._colors).Name = LABELS.NO_COLOR;\r\n } catch (e) {\r\n console.error(e.message);\r\n this._colors = [];\r\n }\r\n }\r\n\r\n private InitSelectedColor(color: string) {\r\n const paletteItem = this.GetColorItem(color);\r\n this._selectedColor = ko.observable(paletteItem || null);\r\n }\r\n\r\n private GetColorItem(color: string) {\r\n return _.find(this._colors, item => item.Name === color)\r\n }\r\n}","// Module\nvar code = \"

\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","// Module\nvar code = \"
\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\n\r\nimport {IColorSelectorOptions} from \"./IColorSelectorOptions\";\r\n\r\nimport {Guid} from \"Core/Common/Guid\";\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\n\r\nimport {ColorModel} from \"./ColorModels/ColorModel\";\r\nimport {HexColorModel} from \"./ColorModels/Hex/HexColorModel\";\r\nimport {PaletteColorModel} from \"./ColorModels/Palette/PaletteColorModel\";\r\n\r\nimport Template from './Templates/Template.html';\r\nimport ColumnTemplate from './Templates/ColumnTemplate.html';\r\nimport DropdownTemplate from './Templates/DropdownTemplate.html';\r\nimport {ColorDescription} from \"./ColorDescription\";\r\nimport {ColorPalettes} from \"./ColorModels/Palette/Enums/ColorPalettes\";\r\n\r\nexport class ColorSelector extends Event {\r\n private _id: string;\r\n\r\n private _colorSelectorDropdown: JBoxDropDown;\r\n private _colorModels: string[];\r\n private _colorModel: KnockoutObservable;\r\n\r\n private _selectedColorName: KnockoutObservable;\r\n\r\n private _selectedColorValue: KnockoutObservable;\r\n private _colorModelImpl: KnockoutObservable;\r\n\r\n constructor(private _options: IColorSelectorOptions) {\r\n super();\r\n this._id = Guid.NewGuid();\r\n\r\n this._colorModels = ['HEX', 'RAL', 'Palette'];\r\n\r\n this._colorModelImpl = ko.observable(null);\r\n\r\n this._selectedColorName = ko.observable(null);\r\n this._selectedColorValue = ko.observable(null);\r\n\r\n this.Init();\r\n }\r\n\r\n @enumerable get SelectedColorDescription() {\r\n return new ColorDescription(this.SelectedColorName, this.SelectedColorValue);\r\n }\r\n\r\n @enumerable get SelectedColorName() {\r\n return this._selectedColorName();\r\n }\r\n\r\n @enumerable get SelectedColorValue() {\r\n return this._selectedColorValue();\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n GetColumnTemplate() {\r\n return ColumnTemplate;\r\n }\r\n\r\n SetColor(color: string) {\r\n this._options.InitialColor = color;\r\n this.Init();\r\n }\r\n\r\n private Init() {\r\n this.SelectInitialModel(this._options.InitialColor);\r\n this.SelectModelImpl(this._options);\r\n\r\n this._selectedColorName(this._options.InitialColor);\r\n this._selectedColorValue(this._colorModelImpl().ColorValue);\r\n\r\n this._colorModel.subscribe(() => this.SelectModelImpl({\r\n Label: this._options.Label,\r\n InitialColor: this._selectedColorName()\r\n }));\r\n }\r\n\r\n private SelectInitialModel(color: string) {\r\n if (!color || color.startsWith('#')) {\r\n const model = _.find(this._colorModels, modelName => modelName == 'HEX');\r\n this._colorModel = ko.observable(model);\r\n return;\r\n }\r\n\r\n if (color.startsWith('RAL')) {\r\n const model = _.find(this._colorModels, modelName => modelName == 'RAL');\r\n this._colorModel = ko.observable(model);\r\n return;\r\n }\r\n\r\n const model = _.find(this._colorModels, modelName => modelName == 'Palette');\r\n this._colorModel = ko.observable(model);\r\n }\r\n\r\n private SelectModelImpl(options: IColorSelectorOptions) {\r\n let colorModel: ColorModel;\r\n\r\n switch (this._colorModel()) {\r\n case 'HEX':\r\n colorModel = new HexColorModel({...options, Label: null});\r\n break;\r\n\r\n case 'RAL':\r\n colorModel = new PaletteColorModel({...options, Palette: ColorPalettes.RAL});\r\n break;\r\n\r\n case 'Palette':\r\n colorModel = new PaletteColorModel({...options, Palette: ColorPalettes.Library});\r\n break;\r\n }\r\n\r\n colorModel.On('COLOR_SET', this, eventArgs => {\r\n this._selectedColorName(eventArgs.data.Name);\r\n this._selectedColorValue(eventArgs.data.Color);\r\n this.Trigger('COLOR_SET', eventArgs.data);\r\n });\r\n colorModel.On('COLOR_RESET', this, () => {\r\n this._selectedColorValue(null);\r\n this._selectedColorName(null);\r\n this.Trigger('COLOR_RESET');\r\n });\r\n\r\n this._colorModelImpl(colorModel);\r\n }\r\n\r\n ShowSelector() {\r\n this._colorSelectorDropdown = this.PrepareSelector();\r\n this._colorSelectorDropdown.Open();\r\n }\r\n\r\n private PrepareSelector() {\r\n return new JBoxDropDown({\r\n target: '#' + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: 'body',\r\n addClass: 'color-picker-overflow',\r\n position: {\r\n x: 'left',\r\n y: 'bottom'\r\n },\r\n adjustDistance: 50,\r\n onCloseComplete: () => this._colorSelectorDropdown.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue\r\n },\r\n onOpen: () => {\r\n this._colorSelectorDropdown.SetContent({content: DropdownTemplate as any});\r\n },\r\n bindComponent: this,\r\n });\r\n }\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { GlobalManager, GLOBALS } from \"Core/GlobalManager/GlobalManager\";\r\nimport { PreviewDocumentModel } from 'Core/Components/Controls/DocumentManager/Models/PreviewDocumentModel';\r\nimport { MobileChecker } from \"Core/Common/MobileChecker\";\r\nimport { FILE_EXTENTIONS } from 'Core/Components/Controls/DocumentManager/DocumentViewer/FileExtentions';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport {\r\n DocumentManagerStore,\r\n IPreveiwDocumentRequestModel, ISavePdfDocumentRequestModel\r\n} from 'Core/Components/Controls/DocumentManager/Stores/DocumentManagerStore';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport { CONFIRMATIONS, LABELS, NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nimport DocumentTemplate from 'Core/Components/Controls/DocumentManager/DocumentViewer/Templates/DocumentViewer.html';\r\n\r\nko.templates['Core/Components/Controls/DocumentManager/DocumentViewer/Templates/DocumentViewer'] = DocumentTemplate;\r\n\r\nexport interface PDFJsToolbarButton {\r\n element: HTMLElement;\r\n eventName: string;\r\n}\r\n\r\nexport class DocumentViewer {\r\n private _htmlData: KnockoutObservable;\r\n private _pdfData: boolean;\r\n private _svgData: KnockoutObservable;\r\n private _pdfViewerSrc: KnockoutObservable;\r\n private _modal: Modal;\r\n _PDFViewerApplication: any;\r\n private _notifier: Notifier;\r\n private _pfdViewerFrame: HTMLIFrameElement;\r\n private _listener: any;\r\n private _isMobile: boolean;\r\n private _labels = LABELS;\r\n\r\n constructor(\r\n private _model: PreviewDocumentModel,\r\n private _requestModel: IPreveiwDocumentRequestModel\r\n ) {\r\n this._htmlData = ko.observable(null);\r\n this._svgData = ko.observable(null);\r\n this._PDFViewerApplication = null;\r\n this._pdfViewerSrc = ko.observable('');\r\n this._isMobile = MobileChecker.IsMobile();\r\n\r\n this._pdfData = _model.FileType.toLowerCase() === FILE_EXTENTIONS.PDF;\r\n\r\n if (_model.FileType.toLowerCase() === FILE_EXTENTIONS.SVG) {\r\n this._svgData(atob(_model.Content));\r\n }\r\n this._notifier = new Notifier();\r\n }\r\n\r\n PDFViewerSetContent(content: Uint8Array, title: string): void {\r\n if (this._PDFViewerApplication) {\r\n this._PDFViewerApplication.open({ data: content })\r\n .then(() => {\r\n let openFileBtn: PDFJsToolbarButton = _.find(this._PDFViewerApplication.toolbar.buttons, (button: PDFJsToolbarButton) => button.eventName === 'openfile');\r\n openFileBtn.element.style.display = 'none';\r\n this._PDFViewerApplication.setTitleUsingUrl(title); // CYB-9613 fixed download button\r\n\r\n //#region ***===-- Mozilla PDF.js (v3.6.172) pdfViewer all EventBus --===***\r\n // const pdfViewer = this._PDFViewerApplication.pdfViewer;\r\n // pdfViewer.eventBus.on('resize', (e) => {});\r\n // pdfViewer.eventBus.on('hashchange', (e) => {});\r\n // pdfViewer.eventBus.on('beforeprint', (e) => {});\r\n // pdfViewer.eventBus.on('afterprint', (e) => {});\r\n // pdfViewer.eventBus.on('pagerender', (e) => {});\r\n // pdfViewer.eventBus.on('updateviewarea', (e) => {});\r\n // pdfViewer.eventBus.on('scalechanging', (e) => {});\r\n // pdfViewer.eventBus.on('rotationchanging', (e) => {});\r\n // pdfViewer.eventBus.on('sidebarviewchanged', (e) => {});\r\n // pdfViewer.eventBus.on('pagemode', (e) => {});\r\n // pdfViewer.eventBus.on('namedaction', (e) => {});\r\n // pdfViewer.eventBus.on('presentationmodechanged', (e) => {});\r\n // pdfViewer.eventBus.on('presentationmode', (e) => {});\r\n // pdfViewer.eventBus.on('switchannotationeditormode', (e) => {});\r\n // pdfViewer.eventBus.on('print', (e) => {});\r\n // pdfViewer.eventBus.on('download', (e) => {});\r\n // pdfViewer.eventBus.on('openinexternalapp', (e) => {});\r\n // pdfViewer.eventBus.on('firstpage', (e) => {});\r\n // pdfViewer.eventBus.on('lastpage', (e) => {});\r\n // pdfViewer.eventBus.on('nextpage', (e) => {});\r\n // pdfViewer.eventBus.on('previouspage', (e) => {});\r\n // pdfViewer.eventBus.on('zoomin', (e) => {});\r\n // pdfViewer.eventBus.on('zoomout', (e) => {});\r\n // pdfViewer.eventBus.on('zoomreset', (e) => {});\r\n // pdfViewer.eventBus.on('pagenumberchanged', (e) => {});\r\n // pdfViewer.eventBus.on('scalechanged', (e) => {});\r\n // pdfViewer.eventBus.on('rotatecw', (e) => {});\r\n // pdfViewer.eventBus.on('rotateccw', (e) => {});\r\n // pdfViewer.eventBus.on('optionalcontentconfig', (e) => {});\r\n // pdfViewer.eventBus.on('switchscrollmode', (e) => {});\r\n // pdfViewer.eventBus.on('scrollmodechanged', (e) => {});\r\n // pdfViewer.eventBus.on('switchspreadmode', (e) => {});\r\n // pdfViewer.eventBus.on('spreadmodechanged', (e) => {});\r\n // pdfViewer.eventBus.on('documentproperties', (e) => {});\r\n // pdfViewer.eventBus.on('findfromurlhash', (e) => {});\r\n // pdfViewer.eventBus.on('updatefindmatchescount', (e) => {});\r\n // pdfViewer.eventBus.on('updatefindcontrolstate', (e) => {});\r\n // pdfViewer.eventBus.on('pagerendered', (e) => {});\r\n // pdfViewer.eventBus.on('pagechanging', (e) => {});\r\n // pdfViewer.eventBus.on('fileinputchange', (e) => {});\r\n // pdfViewer.eventBus.on('openfile', (e) => {});\r\n //#endregion\r\n })\r\n }\r\n }\r\n\r\n Show() {\r\n this._modal = new Modal({\r\n addClass: 'jBox-no-padding pdf-modal',\r\n width: 'auto',\r\n heightInPercent: '100%',\r\n maxHeight: 'calc(100vh - 20px)',\r\n maxWidth: 'calc(100vw - 20px)',\r\n content: '',\r\n closeButton: false,\r\n closeOnEsc: false\r\n }, false, true);\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n Close() {\r\n window.document.removeEventListener('webviewerloaded', this._listener);\r\n if (this._PDFViewerApplication) {\r\n this.SavePDF(null, null, true);\r\n return;\r\n }\r\n this._modal?.Close();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/Controls/DocumentManager/DocumentViewer/Templates/DocumentViewer';\r\n }\r\n\r\n SavePDF($data?: DocumentViewer, evt?: JQuery.ClickEvent, isClose?: boolean): void {\r\n let targetButtonBox: HTMLElement = evt ? $(evt.target).closest('.save-pdf-button-box')[0] : null,\r\n isSaveButtonBox: boolean = $(targetButtonBox).hasClass('.save-pdf-button-box'),\r\n targetObj = isSaveButtonBox ? { Target: targetButtonBox } : null,\r\n targetElement = isSaveButtonBox ? targetButtonBox : null;\r\n\r\n if (evt) {\r\n BlockUI.Block(targetObj);\r\n }\r\n\r\n if (this._PDFViewerApplication) {\r\n this._PDFViewerApplication.pdfDocument.loadingTask.promise\r\n .then((pDFDocumentProxy) => {\r\n if (evt) {\r\n BlockUI.Block(targetObj);\r\n }\r\n pDFDocumentProxy.saveDocument()\r\n .then((newPDFDocument: Uint8Array) => {\r\n if (evt) {\r\n BlockUI.Block(targetObj);\r\n }\r\n pDFDocumentProxy.getData()\r\n .then((oldPDFDocument: Uint8Array) => {\r\n\r\n if (JSON.stringify(oldPDFDocument) !== JSON.stringify(newPDFDocument)) {\r\n const allFileName: string = `${this._model.FileName}${this._model.FileType}`;\r\n let confirmationText = isClose ? CONFIRMATIONS.SAVE_CHANGES_IN_FILE : CONFIRMATIONS.ARE_YOU_SURE_YOU_WANT_TO_SAVE_THE_CHANGES_TO_FILE_AND_CLOSE,\r\n confirmationQuestion = `${confirmationText}`;\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationQuestion.replace('{fileName}', allFileName),\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO,\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n if (evt) {\r\n BlockUI.Block(targetObj);\r\n }\r\n\r\n this.ConvertToBase64(newPDFDocument)\r\n .then((base64String: string) => {\r\n BlockUI.Block();\r\n const requestModel: ISavePdfDocumentRequestModel = {\r\n FieldId: this._requestModel.FieldId,\r\n Content: base64String,\r\n RecordKeys: this._requestModel.Recordkeys\r\n }\r\n\r\n DocumentManagerStore.SavePdfDocument(requestModel)\r\n .always(() => { BlockUI.Unblock() })\r\n .then((data) => {\r\n this._notifier.Success('File Saved');\r\n this._modal?.Close();\r\n\r\n })\r\n .fail(err => this._notifier.Failed(err.message));\r\n })\r\n .catch(err => this._notifier.Failed(err.message))\r\n .finally(() => {\r\n if (evt) {\r\n BlockUI.Unblock(targetElement);\r\n }\r\n });\r\n });\r\n\r\n if (isClose) {\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n this._modal?.Close();\r\n })\r\n }\r\n\r\n confirmationDialog.Show();\r\n return;\r\n }\r\n\r\n if (!isClose) {\r\n this._notifier.Warning('There are no changes in the file');\r\n } else {\r\n this._modal?.Close();\r\n }\r\n })\r\n .finally(() => {\r\n if (evt) {\r\n BlockUI.Unblock(targetElement);\r\n }\r\n });\r\n })\r\n .finally(() => {\r\n if (evt) {\r\n BlockUI.Unblock(targetElement);\r\n }\r\n });\r\n })\r\n .finally(() => {\r\n if (evt) {\r\n BlockUI.Unblock(targetElement);\r\n }\r\n });\r\n }\r\n }\r\n\r\n AfterRender(elements: Array) {\r\n\r\n const el = elements[0]\r\n\r\n\r\n if (this._model.FileType.toLowerCase() === FILE_EXTENTIONS.HTML) {\r\n this._htmlData(this._model.Content);\r\n }\r\n\r\n this._modal.Show();\r\n\r\n if (this._pdfData) {\r\n this._pfdViewerFrame = $(el).find('#pdf-viewer')[0] as HTMLIFrameElement;\r\n\r\n this._listener = this.WebViewerLoaded.bind(this);\r\n window.document.addEventListener('webviewerloaded', this._listener);\r\n\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE).toLowerCase();\r\n\r\n const locale = desktopLanguage === 'en' ? 'en-US' : desktopLanguage;\r\n this._pdfViewerSrc(`${__webpack_public_path__}pdfjs/web/viewer.html?file=#locale=${locale}`);\r\n }\r\n\r\n }\r\n\r\n WebViewerLoaded(){\r\n const { contentWindow: { PDFViewerApplication } } : { contentWindow: Window & { PDFViewerApplication?: any }} = this._pfdViewerFrame;\r\n\r\n this._PDFViewerApplication = PDFViewerApplication;\r\n \r\n setTimeout(()=>{\r\n this.PDFViewerSetContent(this.Base64ToUint8Array(this._model.Content), `${this._model.FileName}${this._model.FileType}`)\r\n }, 1000);\r\n }\r\n\r\n Base64ToUint8Array(base64Pdf: string): Uint8Array {\r\n var pdfData = atob(base64Pdf);\r\n var array = new Uint8Array(new ArrayBuffer(pdfData.length));\r\n for (var i = 0; i < pdfData.length; i++) {\r\n array[i] = pdfData.charCodeAt(i);\r\n }\r\n return array;\r\n }\r\n\r\n ConvertToBase64(bytes) {\r\n return new Promise((resolve, reject) => {\r\n const chunkSize = 8192;\r\n let content = \"\";\r\n\r\n for (let i = 0; i < bytes.length; i += chunkSize) {\r\n const chunk = bytes.slice(i, i + chunkSize);\r\n content += String.fromCharCode(...new Uint8Array(chunk));\r\n }\r\n\r\n const base64String = btoa(content);\r\n if (!base64String) {\r\n reject(\"Error converting to base64\");\r\n } else {\r\n resolve(base64String);\r\n }\r\n });\r\n }\r\n}","// Module\nvar code = \"
\";\n// Exports\nexport default code;","export const FILE_EXTENTIONS = {\r\n\tHTML: '.html',\r\n\tPDF: '.pdf',\r\n\tSVG: '.svg'\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {\r\n\tDocumentManagerStore,\r\n\tIAttachmenttModel,\r\n\tICheckInDocumentRequestModel,\r\n\tICheckOutDocumentRequestModel,\r\n\tICreateEmlMessageRequestModel,\r\n\tIDownloadDocumentRequestModel,\r\n\tIEditDocumentRequestModel,\r\n\tIEnableVersionsDocumentRequestModel,\r\n\tIGeneratePdfDocumentRequestModel,\r\n\tIPreveiwDocumentRequestModel,\r\n\tIPrintDocumentRequestModel\r\n} from 'Core/Components/Controls/DocumentManager/Stores/DocumentManagerStore';\r\n\r\nimport {BlockUI as BlockUi, BlockUI} from 'Core/Common/BlockUi';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {IScreen} from \"Core/Screens/IScreen\";\r\nimport {RecordKey} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {UserManager} from 'User/UserManager';\r\nimport {EVENTS} from 'Core/Components/Controls/DocumentManager/Events';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {DocumentDataModel} from 'Core/Controls/Document/DocumentDataModel';\r\nimport {PreviewDocumentModel} from 'Core/Components/Controls/DocumentManager/Models/PreviewDocumentModel';\r\nimport {DocumentViewer} from 'Core/Components/Controls/DocumentManager/DocumentViewer/DocumentViewer';\r\nimport {FileDownloader} from 'Core/Components/FileDownloader/FileDownloader';\r\nimport {ComposeMail} from 'Core/Controls/Mail/ComposeMail';\r\nimport {MailStore} from 'Core/Controls/Mail/Stores/MailStore';\r\nimport {MailTabModel} from 'Core/Controls/Mail/Models/MailTabModel';\r\nimport {MailAttachmentModel} from 'Core/Controls/Mail/Models/MailAttachmentModel';\r\nimport {FollowUpStore} from \"Core/Controls/ButtonFollowUp/Stores/FollowUpStore\";\r\nimport {IsTrue} from 'Core/Common/Utils';\r\n\r\nimport DocumentTemplate from 'Core/Components/Controls/DocumentManager/Templates/DocumentManager.html';\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {PromptDialog, Types} from 'Core/Components/Dialogs/PromptDialog/PromptDialog';\r\n\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n\tTypes as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog'\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\nimport {DestinationMailModel} from \"./Models/DestinationMailModel\";\r\n\timport { Guid } from 'Core/Common/Guid';\r\nimport {TABLE_TYPES} from \"Core/Constant\";\r\n\r\nlet SOLIDWORKS_EXTENSIONS = {\r\n\tSLDASM: '.SLDASM',\r\n\tSLDPRT: '.SLDPRT'\r\n}\r\n\r\nvar EXTENTION_TO_ICON = {\r\n\t'.doc': 'fa-file-word-o',\r\n\t'.docx': 'fa-file-word-o',\r\n\t'.xlsx': 'fa-file-excel-o',\r\n\t'.xls': 'fa-file-excel-o',\r\n\t'.txt': 'fa-file-text',\r\n\t'.eml': 'fa-envelope',\r\n\t'.msg': 'fa-envelope'\r\n}\r\n\r\nlet HAS_PDF = ['.doc', '.docx', '.xlsx', '.xls', '.ppt', '.pptx', '.html'];\r\n\r\nexport enum DocumentStatus {\r\n\tNoVersion = 0,\r\n\tCheckIn = 1,\r\n\tCheckOut = 2,\r\n\tLocked = 3,\r\n\tOwnerLock = 4,\r\n\tSoftCheckIn = 5\r\n};\r\n\r\nvar MAX_VERSION_FIELD_NAME_POSTFIX = '_MAX_VERSION';\r\nvar VERSION_FIELD_NAME_POSTFIX = '_VERSION';\r\nvar STATUS_FIELD_NAME_POSTFIX = '_STATUS';\r\nvar FILE_TYPE_FIELD_NAME_POSTFIX = '_FILE_TYPE';\r\nvar FILE_NAME_FIELD_NAME_POSTFIX = '_FILE_NAME';\r\nvar CHANGED_BY_LABEL = '_CHANGEDBY_LABEL';\r\nvar CHANGEDBY = '_CHANGEDBY';\r\nvar CREATEDBY = '_CREATEDBY';\r\n\r\nexport class DocumentManager extends Event {\r\n\tprivate _version: KnockoutObservable;\r\n\tprivate _status: KnockoutObservable;\r\n\tprivate _extention: KnockoutObservable;\r\n\tprivate _recordkeys: Array;\r\n\tprivate _entityId: number;\r\n\tprivate _entityTypeName: string;\r\n\tprivate _fieldId: number;\r\n\tprivate _labels = LABELS;\r\n\tprivate _approvalName: string;\r\n\tprivate _fieldName: string;\r\n\tprivate _subjectEntityId: number;\r\n\tprivate _subjectRecordId: number;\r\n\tprivate _createdBy: KnockoutObservable;\r\n\tprivate _isReady: KnockoutObservable;\r\n\tprivate _ownerId: KnockoutObservable;\r\n\tprivate _notifier: Notifier;\r\n\tprivate _enableButtons: boolean;\r\n\tprivate _enableEditButton: boolean;\r\n\tprivate _changedByName: KnockoutObservable;\r\n\tprivate _changedBy: KnockoutObservable;\r\n\tprivate _screenType: string;\r\n\tprivate _screen: IScreen;\r\n\tprivate _model: DocumentDataModel;\r\n\tprivate _hasData: KnockoutObservable;\r\n\tprivate _mails: KnockoutObservableArray;\r\n\tprivate _showMailList: KnockoutObservable;\r\n\tprivate _isEnableMailButton: KnockoutObservable;\r\n\tprivate _fileName: string;\r\n\tprivate _dropDown: JBoxDropDown;\r\n\tprivate _id: string;\r\n\tprivate _hasPdfData: KnockoutObservable;\r\n\tprivate _isEnableSwitch: boolean;\r\n\r\n\tExtentionClassIcon: KnockoutComputed;\r\n\r\n\tStatusTitle: KnockoutComputed;\r\n\tIsEnableCheckIn: KnockoutComputed;\r\n\tIsEnableCheckOut: KnockoutComputed;\r\n\tIsEnableEdit: KnockoutComputed;\r\n\tIsEnableOwnerLock: KnockoutComputed;\r\n\tIsEnableOwnerUnlock: KnockoutComputed;\r\n\tIsEnableVersions: KnockoutComputed;\r\n\tIsEnableNoVersions: KnockoutComputed;\r\n\tIsEnablePreview: KnockoutComputed;\r\n\tIsEnableChangedByName: KnockoutComputed;\r\n\tIsEnableGeneratePdfButton: KnockoutComputed;\r\n\r\n\tIsEnablePrintButton: KnockoutComputed;\r\n\tconstructor(\r\n\t\tscreenType: string,\r\n\t\tscreen: IScreen,\r\n\t\tmodel: DocumentDataModel,\r\n\t\tentityId: number,\r\n\t\tentityTypeName: string,\r\n\t\tfieldId: number,\r\n\t\tfieldName: string,\r\n\t\tisEnableMail: boolean = false,\r\n\t\tisEnableSwitchVersion: boolean = false\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis._screenType = screenType;\r\n\t\tthis._screen = screen;\r\n\t\tthis.AddEvent(EVENTS.UPDATED);\r\n\r\n\t\tthis._fieldId = fieldId;\r\n\t\tthis._fieldName = fieldName;\r\n\t\tthis._entityId = entityId;\r\n\t\tthis._entityTypeName = entityTypeName;\r\n\t\tthis._approvalName = model && model.ApprovalName || model && model.Data && model.Data.DOCUMENT_APPROVAL || null;\r\n\t\tthis._model = model;\r\n\t\tthis._isEnableMailButton = ko.observable(isEnableMail);\r\n\t\tthis._subjectEntityId = this._screen ? this._screen.GetEntityId() : null;\r\n\t\tthis._subjectRecordId = this._screen ? this._screen.GetRecordId() : null;\r\n\t\tthis._isEnableSwitch = isEnableSwitchVersion;\r\n\r\n\t\tthis.Init();\r\n\r\n\t\tif (model && !_.isEmpty(model.Data) && IsTrue(model.Data['HAS_DATA'])) {\r\n\t\t\tthis.SetValue(model.Data);\r\n\t\t\tthis._hasData(true);\r\n\t\t\tthis._hasPdfData(model.Data['HAS_PDF_DATA'] === 'True');\r\n\t\t}\r\n\t\tthis._id = JBoxDropDown.GetDropDownId();\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tthis._notifier = new Notifier();\r\n\t\tthis._version = ko.observable(null);\r\n\t\tthis._status = ko.observable(null);\r\n\t\tthis._extention = ko.observable(null);\r\n\t\tthis._ownerId = ko.observable(null);\r\n\t\tthis._changedBy = ko.observable(null);\r\n\t\tthis._changedByName = ko.observable('');\r\n\t\tthis.StatusTitle = ko.computed(() => { return DocumentStatus[this._status()]; });\r\n\t\tthis._createdBy = ko.observable(null);\r\n\t\tthis._hasData = ko.observable(false);\r\n\t\tthis._mails = ko.observableArray([]);\r\n\t\tthis._showMailList = ko.observable(false);\r\n\t\tthis._hasPdfData = ko.observable(false);\r\n\r\n\t\tthis.ExtentionClassIcon = ko.computed(() => {\r\n\t\t\treturn EXTENTION_TO_ICON[this._extention()];\r\n\t\t});\r\n\r\n\t\tvar userManager = UserManager.Instance;\r\n\r\n\t\tthis.IsEnableCheckIn = ko.computed(() => {\r\n\t\t\treturn (this._status() === DocumentStatus.CheckOut || this._status() === DocumentStatus.SoftCheckIn) && this._screenType === ScreenTypes[ScreenTypes.EditScreen] && (this._changedBy() === userManager.CurrentUser.Id || this._ownerId() === userManager.CurrentUser.Id) && this._entityTypeName === TABLE_TYPES.Sub;\r\n\t\t});\r\n\r\n\t\tthis.IsEnableCheckOut = ko.computed(() => {\r\n\t\t\treturn (this._status() === DocumentStatus.CheckIn && this._screenType === ScreenTypes[ScreenTypes.EditScreen]) && this._entityTypeName === TABLE_TYPES.Sub;\r\n\t\t});\r\n\r\n\t\tthis.IsEnableEdit = ko.computed(() => {\r\n\t\t\treturn (this._status() === DocumentStatus.CheckOut\r\n\t\t\t\t&& this._screenType === ScreenTypes[ScreenTypes.EditScreen]\r\n\t\t\t\t&& this._changedBy() === userManager.CurrentUser.Id)\r\n\t\t\t\t|| (this._status() === DocumentStatus.SoftCheckIn\r\n\t\t\t\t\t&& this._screenType === ScreenTypes[ScreenTypes.EditScreen]);\r\n\t\t});\r\n\r\n\t\tthis.IsEnableOwnerLock = ko.computed(() => {\r\n\t\t\treturn this._status() === DocumentStatus.CheckOut && this._ownerId() === userManager.CurrentUser.Id && this._screenType === ScreenTypes[ScreenTypes.EditScreen];\r\n\t\t});\r\n\r\n\t\tthis.IsEnableOwnerUnlock = ko.computed(() => {\r\n\t\t\treturn this._status() === DocumentStatus.OwnerLock && this._ownerId() === userManager.CurrentUser.Id && this._screenType === ScreenTypes[ScreenTypes.EditScreen];\r\n\t\t});\r\n\r\n\t\tthis.IsEnableVersions = ko.computed(() => {\r\n\t\t\t//TODO check if version extension is in GLOBAL\r\n\t\t\treturn this._status() === DocumentStatus.NoVersion && this._ownerId() === userManager.CurrentUser.Id && this._screenType === ScreenTypes[ScreenTypes.EditScreen] && this._entityTypeName === TABLE_TYPES.Sub;\r\n\t\t});\r\n\r\n\t\tthis.IsEnableNoVersions = ko.computed(() => {\r\n\t\t\treturn this._status() === DocumentStatus.CheckIn && this._ownerId() === userManager.CurrentUser.Id && this._screenType === ScreenTypes[ScreenTypes.EditScreen] && this._entityTypeName === TABLE_TYPES.Sub;\r\n\t\t});\r\n\r\n\t\tthis.IsEnablePreview = ko.computed(() => {\r\n\t\t\tif (_.contains([ScreenTypes[ScreenTypes.ConsultScreen], ScreenTypes[ScreenTypes.Portlet]], this._screenType)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn this._status() === DocumentStatus.Locked || this._status() === DocumentStatus.CheckIn || this._status() === DocumentStatus.NoVersion;\r\n\t\t});\r\n\r\n\t\tthis.IsEnableChangedByName = ko.computed(() => {\r\n\t\t\treturn this._status() === DocumentStatus.CheckOut || this._status() === DocumentStatus.OwnerLock;\r\n\t\t});\r\n\r\n\t\tthis.IsEnableGeneratePdfButton = ko.computed(() => {\r\n\t\t\treturn (_.contains(HAS_PDF, this._extention()) && _.contains([null, DocumentStatus.CheckIn, DocumentStatus.NoVersion], this._status())) && !this._hasPdfData() && !this.IsSolidworks;\r\n\t\t});\r\n\r\n\t\tthis.IsEnablePrintButton = ko.computed(() => {\r\n\t\t\treturn this._hasData();\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn DocumentTemplate;\r\n\t}\r\n\r\n\tSetValue(data: any) {\r\n\r\n\t\tvar versionFieldName = `${this._fieldName}${VERSION_FIELD_NAME_POSTFIX}`;\r\n\t\tif (data[versionFieldName]) {\r\n\t\t\tthis._version(data[versionFieldName]);\r\n\t\t}\r\n\r\n\t\tvar statusFieldName = `${this._fieldName}${STATUS_FIELD_NAME_POSTFIX}`;\r\n\t\tif (data[statusFieldName]) {\r\n\t\t\tthis._status(DocumentStatus[DocumentStatus[Number(data[statusFieldName])]]);\r\n\t\t}\r\n\r\n\t\tvar fileTypeFieldName = `${this._fieldName}${FILE_TYPE_FIELD_NAME_POSTFIX}`;\r\n\t\tif (data[fileTypeFieldName]) {\r\n\t\t\tthis._extention(data[fileTypeFieldName]);\r\n\t\t}\r\n\r\n\t\tvar changedByLabel = `${this._fieldName}${CHANGED_BY_LABEL}`;\r\n\t\tif (data[changedByLabel]) {\r\n\t\t\tthis._changedByName(data[changedByLabel]);\r\n\t\t}\r\n\r\n\t\tvar changedBy = `${this._fieldName}${CHANGEDBY}`;\r\n\t\tif (data[changedBy]) {\r\n\t\t\tthis._changedBy(Number(data[changedBy]));\r\n\t\t}\r\n\r\n\t\tvar createdBy = `${this._fieldName}${CREATEDBY}`;\r\n\t\tif (data[createdBy]) {\r\n\t\t\tthis._ownerId(Number(data[createdBy]));\r\n\t\t}\r\n\r\n\t\tvar fileName = `${this._fieldName}${FILE_NAME_FIELD_NAME_POSTFIX}`;\r\n\t\tthis._fileName = data[fileName] || Guid.NewGuid();\r\n\t}\r\n\r\n\tEdit() {\r\n\t\tBlockUi.Block();\r\n\t\tvar requestModel: IEditDocumentRequestModel = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordkeys: this._model.RecordKeys,\r\n\t\t\tFieldId: this._fieldId\r\n\t\t};\r\n\r\n\t\tDocumentManagerStore\r\n\t\t\t.Edit(requestModel)\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tthis._notifier.Failed(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => { });\r\n\t}\r\n\r\n\tget IsSolidworks(): boolean{\r\n\t\treturn this._extention() === SOLIDWORKS_EXTENSIONS.SLDASM || this._extention() === SOLIDWORKS_EXTENSIONS.SLDPRT;\r\n\t}\r\n\r\n\tCheckIn(password?: string) {\r\n\t\t\r\n\t\tif(this.IsSolidworks){\r\n\t\t\tthis._notifier.Failed(NOTIFICATIONS.CHECKIN_IS_NOT_ALLOWED);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tBlockUi.Block();\r\n\t\tvar requestModel: ICheckInDocumentRequestModel = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordkeys: this._model.RecordKeys,\r\n\t\t\tFieldId: this._fieldId\r\n\t\t};\r\n\r\n\t\tif (password) requestModel.ConfirmationPassword = password;\r\n\r\n\t\tDocumentManagerStore\r\n\t\t\t.CheckIn(requestModel)\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tthis._notifier.Failed(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis.Trigger(EVENTS.UPDATED);\r\n\t\t\t});\r\n\t}\r\n\r\n\r\n\tCheckAprovalStatus(data) {\r\n\r\n\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: CONFIRMATIONS.ARE_SURE_TO_CHECKIN_DOCUMENT,\r\n\t\t\tType: ConfirmationTypes.Question\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n\t\t\tthis,\r\n\t\t\t() => {\r\n\t\t\t\tthis.CheckIn();\r\n\t\t\t});\r\n\r\n\t\tconst approvalName = this._approvalName || 'Off';\r\n\t\tswitch (approvalName) {\r\n\t\t\tcase 'Off':\r\n\t\t\t\tthis.CheckIn();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Password':\r\n\t\t\t\tconst passwordPrompt = new PromptDialog(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tType: Types.Password,\r\n\t\t\t\t\t\tLabel: CONFIRMATIONS.PLEASE_TYPE_YOUR_PASSWORD_TO_CONFIRM,\r\n\t\t\t\t\t\tValue: '',\r\n\t\t\t\t\t\tMinHeight: 200,\r\n\t\t\t\t\t\tRequired: true,\r\n\t\t\t\t\t\tRequiredErrorMessage: LABELS.PASSWORD + ' ' + NOTIFICATIONS.IS_REQUIRED,\r\n\t\t\t\t\t\tShowNotification: false,\r\n\t\t\t\t\t\tCloseOnSave: false\r\n\t\t\t\t\t});\r\n\t\t\t\tpasswordPrompt.Show();\r\n\r\n\t\t\t\tpasswordPrompt.On('Save', this,\r\n\t\t\t\t\t(eventargs) => {\r\n\t\t\t\t\t\tconst password = eventargs.data.value;\r\n\t\t\t\t\t\tif (password) {\r\n\t\t\t\t\t\t\tBlockUI.Block();\r\n\r\n\t\t\t\t\t\t\tFollowUpStore.ConfirmPassword({ password: password })\r\n\t\t\t\t\t\t\t\t.always(() => {\r\n\t\t\t\t\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t.then((response) => {\r\n\t\t\t\t\t\t\t\t\tif (response) {\r\n\t\t\t\t\t\t\t\t\t\tpasswordPrompt.Hide();\r\n\t\t\t\t\t\t\t\t\t\tthis.CheckIn(password);\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tpasswordPrompt.ExternalInvalidActionHandling(NOTIFICATIONS.INCORRECT_PASSWORD);\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.fail(error => {\r\n\t\t\t\t\t\t\t\t\tnew Notifier().Failed(error);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Yes/No':\r\n\t\t\t\tconfirmationDialog.Show();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tCheckOut(){\r\n\t\tif(this.IsSolidworks){\r\n\t\t\tBlockUi.Block();\r\n\t\t\tconst requestModel: ICheckOutDocumentRequestModel = {\r\n\t\t\t\tEntityId: this._entityId,\r\n\t\t\t\tRecordkeys: this._model.RecordKeys,\r\n\t\t\t\tFieldId: this._fieldId\r\n\t\t\t};\r\n\t\r\n\t\t\tDocumentManagerStore\r\n\t\t\t\t.GetParentAssemblies(requestModel)\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tthis._notifier.Warning(err.message);\r\n\t\t\t\t})\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUi.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.then((assemblies) => {\r\n\t\t\t\t\t\t\r\n\t\t\t\t\tif(assemblies && assemblies.length > 0){\r\n\r\n\t\t\t\t\t\tlet assemblyList = '';\r\n\t\t\t\t\t\t_.each(assemblies, (assembly) => {\r\n\t\t\t\t\t\t\tassemblyList += `
${assembly.Name}`;\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\t\t\t\t\tText: `${CONFIRMATIONS.CONFIRM_ASSEMBLY_CHECKOUT} ${assemblyList}`,\r\n\t\t\t\t\t\t\tType: ConfirmationTypes.Question\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n\t\t\t\t\t\t\tthis,\r\n\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\tthis.DoCheckOut();\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tconfirmationDialog.Show();\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.DoCheckOut();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\t\t\t\t\r\n\t\t}else{\r\n\t\t\tthis.DoCheckOut();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tDoCheckOut() {\r\n\t\tBlockUi.Block();\r\n\t\tconst requestModel: ICheckOutDocumentRequestModel = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordkeys: this._model.RecordKeys,\r\n\t\t\tFieldId: this._fieldId\r\n\t\t};\r\n\r\n\t\tDocumentManagerStore\r\n\t\t\t.CheckOut(requestModel)\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tthis._notifier.Warning(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis.Trigger(EVENTS.UPDATED);\r\n\t\t\t});\r\n\t}\r\n\r\n\tLock() {\r\n\t\tBlockUi.Block();\r\n\t\tvar requestModel: ICheckOutDocumentRequestModel = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordkeys: this._model.RecordKeys,\r\n\t\t\tFieldId: this._fieldId\r\n\t\t};\r\n\r\n\t\tDocumentManagerStore\r\n\t\t\t.Lock(requestModel)\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tthis._notifier.Warning(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis.Trigger(EVENTS.UPDATED);\r\n\t\t\t});\r\n\t}\r\n\r\n\tUnlock() {\r\n\t\tBlockUi.Block();\r\n\t\tvar requestModel: ICheckOutDocumentRequestModel = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordkeys: this._model.RecordKeys,\r\n\t\t\tFieldId: this._fieldId\r\n\t\t};\r\n\r\n\t\tDocumentManagerStore\r\n\t\t\t.Unlock(requestModel)\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tthis._notifier.Warning(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis.Trigger(EVENTS.UPDATED);\r\n\t\t\t});\r\n\t}\r\n\r\n\tEnableVersions() {\r\n\t\tBlockUi.Block();\r\n\t\tvar requestModel: IEnableVersionsDocumentRequestModel = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordkeys: this._model.RecordKeys,\r\n\t\t\tFieldId: this._fieldId\r\n\t\t};\r\n\r\n\t\tDocumentManagerStore\r\n\t\t\t.EnableVersions(requestModel)\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tthis._notifier.Failed(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis.Trigger(EVENTS.UPDATED);\r\n\t\t\t});\r\n\t}\r\n\r\n\tDisableVersions() {\r\n\t\tBlockUi.Block();\r\n\t\tvar requestModel: IEnableVersionsDocumentRequestModel = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordkeys: this._model.RecordKeys,\r\n\t\t\tFieldId: this._fieldId\r\n\t\t};\r\n\r\n\t\tDocumentManagerStore\r\n\t\t\t.DisableVersions(requestModel)\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tthis._notifier.Failed(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis.Trigger(EVENTS.UPDATED);\r\n\t\t\t});\r\n\t}\r\n\r\n\tPreview() {\r\n\t\tBlockUi.Block();\r\n\t\tvar requestModel: IPreveiwDocumentRequestModel = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordkeys: this._model.RecordKeys,\r\n\t\t\tFieldId: this._fieldId\r\n\t\t};\r\n\r\n\t\tDocumentManagerStore\r\n\t\t\t.Preview(requestModel)\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tthis._notifier.Failed(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data: PreviewDocumentModel) => {\r\n\t\t\t\tif (data && data.IsWebDocument) {\r\n\t\t\t\t\tthis.ShowDocument(data, requestModel);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._notifier.Success(LABELS.OPEN_DOCUMENT_IN_SPHEERES)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tDownload() {\r\n\t\tBlockUi.Block();\r\n\t\tvar requestModel: IDownloadDocumentRequestModel = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordkeys: this._model.RecordKeys,\r\n\t\t\tFieldId: this._fieldId\r\n\t\t};\r\n\r\n\t\tDocumentManagerStore\r\n\t\t\t.Download(requestModel)\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tthis._notifier.Failed(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock();\r\n\t\t\t}).then((data) => {\r\n\t\t\t\tlet name = this._fileName.endsWith(this._extention()) ? this._fileName : `${this._fileName}${this._extention()}`;\r\n\t\t\t\tFileDownloader.DownloadFileData(data.FileData, name);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate ShowDocument(previewDocument: PreviewDocumentModel, requestModel: IPreveiwDocumentRequestModel) {\r\n\t\tvar documentViewer = new DocumentViewer(previewDocument, requestModel);\r\n\t\tdocumentViewer.Show();\r\n\t}\r\n\r\n\tget Version(): KnockoutObservable {\r\n\t\treturn this._version;\r\n\t}\r\n\r\n\tget ChangedByName(): KnockoutObservable {\r\n\t\treturn this._changedByName;\r\n\t}\r\n\r\n\tprivate OpenDropDown() {\r\n\t\tthis._dropDown = new JBoxDropDown({\r\n\t\t\ttarget: \".\" + this._id,\r\n\t\t\totherOptions: {\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\tcloseOnClick: true,\r\n\t\t\t\taddClass: \"mails-dropdown\",\r\n\t\t\t\tonCloseComplete: () => this._dropDown.Destroy()\r\n\t\t\t},\r\n\t\t\tonOpen: () => {\r\n\t\t\t\tthis._dropDown.SetContent({ content: $(\".\" + this._id).next().data(\"jbox-content\") });\r\n\t\t\t},\r\n\t\t\tbindComponent: this,\r\n\t\t});\r\n\r\n\t\tthis._dropDown.Open();\r\n\t}\r\n\r\n\tGetMails() {\r\n\t\tconst mailsCount = this._mails().length;\r\n\t\tif (mailsCount == 0) {\r\n\t\t\tBlockUI.Block();\r\n\t\t\tthis._mails([]);\r\n\t\t\tMailStore.GetMailTabs()\r\n\t\t\t\t.then((tabs) => {\r\n\t\t\t\t\t_.map(tabs, (tab: any) => {\r\n\t\t\t\t\t\tlet mail = new MailTabModel();\r\n\t\t\t\t\t\tmail.Login = tab.Login;\r\n\t\t\t\t\t\tmail.MailConnectionId = tab.MailConnectionId;\r\n\t\t\t\t\t\tmail.Client = tab.Client;\r\n\t\t\t\t\t\tthis._mails.push(mail);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (this._mails().length > 1) {\r\n\t\t\t\t\t\tthis.OpenDropDown();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this._mails().length === 1) {\r\n\t\t\t\t\t\tthis.ShowMailComposer(this._mails()[0]);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t});\r\n\t\t} else if (mailsCount > 1) {\r\n\t\t\tthis.OpenDropDown();\r\n\t\t} else {\r\n\t\t\tthis.ShowMailComposer(this._mails()[0]);\r\n\t\t}\r\n\t}\r\n\r\n\tShowMailComposer(mail: MailTabModel) {\r\n\t\tif (mail.Client === 'Desktop') {\r\n\t\t\tthis.OpenDesktopClient(mail);\r\n\t\t} else {\r\n\t\t\tthis.OpenInternalClient(mail);\r\n\t\t}\r\n\t}\r\n\r\n\tOpenInternalClient(mail: MailTabModel) {\r\n\r\n\t\tDocumentManagerStore.GetMainMails({ EntityId: this._subjectEntityId, RecordId: this._subjectRecordId })\r\n\t\t\t.then((data) => {\r\n\t\t\t\tconst mailComposer = new ComposeMail({ ResponseMailItem: null });\r\n\t\t\t\tconst attachDocumentModel = new MailAttachmentModel();\r\n\t\t\t\tattachDocumentModel.DocumentFieldId = this._fieldId;\r\n\t\t\t\tattachDocumentModel.RecordKeys = this._model.RecordKeys;\r\n\t\t\t\tattachDocumentModel.Name = this._fileName;\r\n\t\t\t\tmailComposer.AttachDocument(attachDocumentModel);\r\n\t\t\t\tmailComposer.IsEnableAttachment = false;\r\n\t\t\t\tmailComposer.IsEnableRemoveAttachment = false;\r\n\t\t\t\tmailComposer.AddScreen(this._screen);\r\n\r\n\t\t\t\tconst mailsByRecord = _.groupBy(data, (item) => item.RecordId);\r\n\r\n\t\t\t\t_.each(mailsByRecord, (value, key) => {\r\n\t\t\t\t\tconst firstMail = _.find(value, (item: DestinationMailModel) => { return !!item.Mail });\r\n\t\t\t\t\tif (firstMail) {\r\n\t\t\t\t\t\tmailComposer.AddMailWithRecord(firstMail.Mail, firstMail.TableId, firstMail.RecordId);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tmailComposer.ShowInModal(mail.MailConnectionId);\r\n\t\t\t})\r\n\t}\r\n\r\n\tOpenDesktopClient(mail: MailTabModel) {\r\n\r\n\t\tvar attachmentModel: IAttachmenttModel = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordkeys: this._model.RecordKeys,\r\n\t\t\tFieldId: this._fieldId\r\n\t\t};\r\n\r\n\t\tvar requestModel: ICreateEmlMessageRequestModel = {\r\n\t\t\tFromAddress: mail.Login,\r\n\t\t\tToAddresses: [],\r\n\t\t\tAttachment: attachmentModel\r\n\t\t}\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tDocumentManagerStore.GetMainMails({ EntityId: this._subjectEntityId, RecordId: this._subjectRecordId })\r\n\t\t\t.then((data) => {\r\n\r\n\t\t\t\tconst mailsByRecord = _.groupBy(data, (item) => item.RecordId);\r\n\r\n\t\t\t\t_.each(mailsByRecord, (value, key) => {\r\n\t\t\t\t\tconst firstMail = _.find(value, (item: DestinationMailModel) => { return !!item.Mail });\r\n\t\t\t\t\tif (firstMail) {\r\n\t\t\t\t\t\trequestModel.ToAddresses.push(firstMail.Mail);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tDocumentManagerStore.CreateEmlMessage(requestModel).fail((err) => {\r\n\t\t\t\t\tnew Notifier().Failed(err.message);\r\n\t\t\t\t}).always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\tget IsEnableMailButton(): KnockoutObservable {\r\n\t\treturn this._isEnableMailButton;\r\n\t}\r\n\r\n\tPrint() {\r\n\t\tBlockUi.Block();\r\n\t\tlet requestModel: IPrintDocumentRequestModel = {\r\n\t\t\tFileName: `${this._fileName}${this._extention()}`,\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordKeys: this._model.RecordKeys,\r\n\t\t\tFieldId: this._fieldId\r\n\t\t};\r\n\r\n\t\tDocumentManagerStore\r\n\t\t\t.Print(requestModel)\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tNotifier.Failed(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock();\r\n\t\t\t});\r\n\t}\r\n\r\n\tGeneratePdf() {\r\n\t\tBlockUi.Block();\r\n\t\tlet requestModel: IGeneratePdfDocumentRequestModel = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordKeys: this._model.RecordKeys,\r\n\t\t\tFieldId: this._fieldId\r\n\t\t};\r\n\r\n\t\tDocumentManagerStore\r\n\t\t\t.GeneratePdf(requestModel)\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tthis._notifier.Failed(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis._hasPdfData(true);\r\n\t\t\t});\r\n\t}\r\n\r\n\tSwitchToVersion(){\r\n\t\tconst switchPrompt = new ConfirmationDialog(\r\n\t\t\t{\r\n\t\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\t\tText: CONFIRMATIONS.SWITCH_TO_VERSION\r\n\t\t\t});\r\n\r\n\t\tswitchPrompt.Show();\r\n\r\n\t\tswitchPrompt.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, ()=>{\r\n\t\t\tthis.Trigger(EVENTS.UPDATED);\r\n\t\t\tBlockUi.Block();\r\n\t\t\tvar requestModel: IEditDocumentRequestModel = {\r\n\t\t\t\tEntityId: this._entityId,\r\n\t\t\t\tRecordkeys: this._model.RecordKeys,\r\n\t\t\t\tFieldId: this._fieldId\r\n\t\t\t};\r\n\t\r\n\t\t\tDocumentManagerStore\r\n\t\t\t\t.Switch(requestModel)\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tthis._notifier.Failed(err.message);\r\n\t\t\t\t})\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUi.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.then((data) => {\r\n\t\t\t\t\tthis.Trigger(EVENTS.UPDATED);\r\n\t\t\t\t });\r\n\t\t});\r\n\t}\r\n}\r\n","export class Utils {\r\n\tstatic GetEnumString(_enum: any, key: any): string {\r\n\t\tconsole.log(_enum);\r\n\t\tconsole.log(key);\r\n\t\treturn _enum[_enum[key]];\r\n\t}\r\n}\r\n\r\nexport function IsTrue(value: any): boolean {\r\n\tif (typeof (value) === 'string') {\r\n\t\tvalue = value.trim().toLowerCase();\r\n\t}\r\n\tswitch (value) {\r\n\t\tcase true:\r\n\t\tcase \"true\":\r\n\t\tcase 1:\r\n\t\tcase \"1\":\r\n\t\tcase \"on\":\r\n\t\tcase \"True\":\r\n\t\tcase \"yes\":\r\n\t\t\treturn true;\r\n\t\tdefault:\r\n\t\t\treturn false;\r\n\t}\r\n}","// Module\nvar code = \"
\\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
  • \\r\\n\\t\\t\\t\\t\\t\\r\\n\\t\\t\\t\\t\\\">
    \";\n// Exports\nexport default code;","export var EVENTS = {\r\n\tUPDATED: 'UPDATED'\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class DestinationMailModel {\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n TableId: number;\r\n\r\n @deserialize\r\n Mail: string;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class ParentAssemblyModel {\r\n\t@deserialize\r\n\tId: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class PreviewDocumentModel {\r\n\t@deserialize\r\n\tFileName: string;\r\n\r\n\t@deserialize\r\n\tFileType: string;\r\n\r\n\t@deserialize\r\n\tContent: string;\r\n\r\n\t@deserialize\r\n\tIsWebDocument: boolean;\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {RecordKeyModel} from 'Core/Controls/Document/DocumentDataModel';\r\nimport {PreviewDocumentModel} from 'Core/Components/Controls/DocumentManager/Models/PreviewDocumentModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport { DownloadDocumentModel } from 'Core/Components/Controls/DocumentManager/Models/DownloadDocumentModel';\r\nimport {DestinationMailModel} from 'Core/Components/Controls/DocumentManager/Models/DestinationMailModel';\r\nimport { ParentAssemblyModel } from '../Models/ParentAssemblyModel';\r\n\r\nexport interface ISavePdfDocumentRequestModel{\r\n\tFieldId: number;\r\n\tContent: string;\r\n\tRecordKeys: Array;\r\n}\r\n\r\nexport interface IAttachmenttModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordkeys: Array;\r\n};\r\n\r\nexport interface ICreateEmlMessageRequestModel {\r\n\tFromAddress: string;\r\n\tToAddresses: Array;\r\n\tAttachment: IAttachmenttModel;\r\n}\r\n\r\nexport interface IRecordKey {\r\n\tFieldId: number;\r\n\tRecordId: number;\r\n}\r\n\r\nexport interface ICheckOutDocumentRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordkeys: Array;\r\n};\r\n\r\nexport interface ICheckInDocumentRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tConfirmationPassword?: string;\r\n\tRecordkeys: Array;\r\n};\r\n\r\nexport interface ILockDocumentRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordkeys: Array;\r\n};\r\n\r\nexport interface IUnlockDocumentRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordkeys: Array;\r\n};\r\n\r\nexport interface IEditDocumentRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordkeys: Array;\r\n};\r\n\r\nexport interface IEnableVersionsDocumentRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordkeys: Array;\r\n};\r\n\r\nexport interface IDisableVersionsDocumentRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordkeys: Array;\r\n};\r\n\r\nexport interface IPreveiwDocumentRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordkeys: Array;\r\n};\r\n\r\nexport interface IDownloadDocumentRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordkeys: Array;\r\n};\r\n\r\nexport interface IGetMainMailsRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n}\r\n\r\nexport interface IGeneratePdfDocumentRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordKeys: Array;\r\n};\r\n\r\nexport interface IPrintDocumentRequestModel {\r\n\tFileName: string;\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordKeys: Array;\r\n};\r\n\r\nexport interface IPrintLabelDto {\r\n\tBarcode: string;\r\n};\r\n\r\nexport class DocumentManagerStore {\r\n\r\n\tstatic CheckIn(params: ICheckInDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DocumentsApi/CheckIn',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject.Data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetParentAssemblies(params: ICheckOutDocumentRequestModel): P.Promise> {\r\n\t\tlet deferredResult = P.defer>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DocumentsApi/GetParentAssemblies',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(Deserialize(data, ParentAssemblyModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic CheckOut(params: ICheckOutDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DocumentsApi/CheckOut',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Unlock(params: IUnlockDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DocumentsApi/Unlock',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject.Data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Lock(params: ILockDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DocumentsApi/Lock',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject.Data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Edit(params: IEditDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DocumentsApi/Edit',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Switch(params: IEditDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DocumentsApi/Switch',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic EnableVersions(params: IEnableVersionsDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DocumentsApi/EnableVersions',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject.Data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DisableVersions(params: IDisableVersionsDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DocumentsApi/DisableVersions',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject.Data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic SaveDocument(params: any): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentsApi/Save',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Preview(params: IPreveiwDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentsApi/Preview',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tvar previewDocumentModel = GenericDeserialize(data.ResultObject, PreviewDocumentModel);\r\n\t\t\t\t\tdeferredResult.resolve(previewDocumentModel);\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Download(params: IDownloadDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentsApi/Download',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\txhrFields:{\r\n\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.DownloadFile(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\t\t\t\t\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic CreateEmlMessage(params: ICreateEmlMessageRequestModel): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/ButtonTemplateApi/CreateEmlMessage',\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic GetMainMails(params: IGetMainMailsRequestModel): P.Promise> {\r\n\t\tconst deferredResult = P.defer>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/GetMainMails',\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(>Deserialize(result.ResultObject, DestinationMailModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Print(params: IPrintDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentsApi/Print',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(() => deferredResult.resolve(null))\r\n\t\t\t.fail((error)=>deferredResult.reject({ message: JSON.parse(error.message).Message }));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic GeneratePdf(params: IGeneratePdfDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentsApi/GeneratePdf',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic PrintLabel(params: IPrintLabelDto): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentsApi/PrintLabel',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });;\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic SavePdfDocument(params: ISavePdfDocumentRequestModel): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentsApi/SavePdf',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t})\r\n\t\t\t.fail(data => {\r\n\t\t\t\tdeferredResult.reject({ message: data.message });\r\n\t\t\t})\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","export enum ImageTableTypes {\r\n\tProduct,\r\n\tProductProperty,\r\n\tHook,\r\n\tOrderProduct = 3\r\n}","import * as Viewer from \"viewer\";\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {P} from \"Core/Common/Promise\";\r\n\r\nimport {ProductConfiguratorStore} from '../../Stores/ProductConfiguratorStore';\r\nimport {ImagePropertyControlStore} from '../../Pages/ConfigurationPage/Models/Properties/Controls/Image/Stores/ImagePropertyControlStore';\r\n\r\nimport {ImageTableTypes} from \"./Enums/ImageTableTypes\";\r\n\r\nimport Template from './Templates/ProductImageViewer.html';\r\n\r\nexport interface IProductImageViewerOptions {\r\n\tProductsEntityId: number;\r\n\tOrderEntityId: number;\r\n\tImageFieldId?: number;\r\n}\r\n\r\nexport class ProductImageViewer {\r\n\tprivate _productConfiguratorStore: ProductConfiguratorStore;\r\n\tprivate _imagePropertyControlStore: ImagePropertyControlStore;\r\n\tprivate _imageContainer: HTMLElement;\r\n\tprivate _imageViewer: Viewer;\r\n\r\n\tprivate _orderEntityId: number;\r\n\tprivate _productsEntityId: number;\r\n\tprivate _imageFieldId: number;\r\n\r\n\tconstructor(options: IProductImageViewerOptions) {\r\n\t\tthis._orderEntityId = options.OrderEntityId;\r\n\t\tthis._productsEntityId = options.ProductsEntityId;\r\n\t\tthis._imageFieldId = options.ImageFieldId;\r\n\r\n\t\tthis.InitImageViewer();\r\n\t}\r\n\r\n\tInitImageViewer() {\r\n\t\tconst $container = $(\"
    \");\r\n\t\tthis._imageContainer = $container[0];\r\n\r\n\t\tconst opt = {\r\n\t\t\tbutton: true,\r\n\t\t\tinline: false,\r\n\t\t\tnavbar: false,\r\n\t\t\ttitle: false,\r\n\t\t\ttoolbar: false,\r\n\t\t\ttooltip: true,\r\n\t\t\tmovable: true,\r\n\t\t\tzoomable: true,\r\n\t\t\trotatable: true,\r\n\t\t\tscalable: true,\r\n\t\t\ttransition: true,\r\n\t\t\tfullscreen: true,\r\n\t\t\tkeyboard: true,\r\n\t\t\tzIndex: 99999,\r\n\t\t\tfilter() {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis._imageViewer = new Viewer(this._imageContainer, opt);\r\n\t}\r\n\r\n\tShowOriginalImage(recordId: number, imageTableType: ImageTableTypes) {\r\n\t\tlet imageIndex = this.GetImageIndex(recordId, imageTableType);\r\n\t\tif (imageIndex !== -1) {\r\n\t\t\tthis._imageViewer.view(imageIndex);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tBlockUI.Block();\r\n\t\tthis.BuildRequest(recordId, imageTableType)\r\n\t\t\t.then(imageData => {\r\n\t\t\t\tconst image = document.createElement('img');\r\n\t\t\t\t$(image).prop('src', imageData);\r\n\t\t\t\t$(image).attr('data-id', recordId);\r\n\t\t\t\t$(image).attr('table-type', ImageTableTypes[imageTableType]);\r\n\r\n\t\t\t\t$(this._imageContainer).append(image);\r\n\t\t\t\tthis._imageViewer.update();\r\n\r\n\t\t\t\timageIndex = this.GetImageIndex(recordId, imageTableType);\r\n\t\t\t\tthis._imageViewer.view(imageIndex);\r\n\t\t\t}).fail(error => new Notifier().Failed(error.message)\r\n\t\t\t).always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate BuildRequest(recordId: number, imageTableType: ImageTableTypes): P.Promise {\r\n\t\tswitch (imageTableType) {\r\n\t\t\tcase ImageTableTypes.Product:\r\n\t\t\t{\r\n\t\t\t\treturn new ProductConfiguratorStore(this._orderEntityId, this._productsEntityId)\r\n\t\t\t\t\t.GetOriginalImage(recordId);\r\n\t\t\t}\r\n\t\t\tcase ImageTableTypes.ProductProperty:\r\n\t\t\t{\r\n\t\t\t\treturn new ImagePropertyControlStore(this._orderEntityId, this._productsEntityId)\r\n\t\t\t\t\t.GetOriginalImageProperty(recordId, this._imageFieldId);\r\n\t\t\t}\r\n\t\t\tcase ImageTableTypes.OrderProduct:\r\n\t\t\t{\r\n\t\t\t\treturn new ImagePropertyControlStore(this._orderEntityId, this._productsEntityId)\r\n\t\t\t\t\t.GetOriginalSavedProductImage(recordId, this._imageFieldId);\r\n\t\t\t}\r\n\t\t\tcase ImageTableTypes.Hook:\r\n\t\t\t{\r\n\t\t\t\treturn new ImagePropertyControlStore(this._orderEntityId, this._productsEntityId)\r\n\t\t\t\t\t.GetOriginalSavedPartImage(recordId, this._imageFieldId);\r\n\t\t\t}\r\n\t\t\tdefault:\r\n\t\t\t{\r\n\t\t\t\treturn new ProductConfiguratorStore(this._orderEntityId, this._productsEntityId)\r\n\t\t\t\t\t.GetOriginalImage(recordId);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate GetImageIndex(recordId: number, imageTableType: ImageTableTypes) {\r\n\t\treturn _.findIndex(this._imageViewer.images, image => $(image).attr('data-id') === `${recordId}`\r\n\t\t\t&& $(image).attr('table-type') === `${ImageTableTypes[imageTableType]}`);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","export enum ConfiguratorLevels {\r\n Level1 = \"Level 1\",\r\n Level2 = \"Level 2\"\r\n}","export class ProductDto {\r\n constructor(public Id: number,\r\n public Name: string,\r\n public NameTranslated: string,\r\n public Image: string,\r\n public ConfigurationId: number) {\r\n }\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {ProductInfoResponse} from \"./Models/ProductInfoResponse\";\r\nimport {ConfiguredProductResponse} from \"./Models/ConfiguredProductResponse\";\r\n\r\nimport {GetActionDependsOnValuesDto} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/GetActionDependsOnValuesDto\";\r\nimport {ActionDependsOnFieldValueResponse} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Models/ActionDependsOnFieldValueResponse\";\r\n\r\nimport {CreateConfigurationDto} from \"./Params/CreateConfigurationDto\";\r\nimport {UpdateConfigurationDto} from \"./Params/UpdateConfigurationDto\";\r\nimport {PropertyValueDto} from \"./Params/PropertyValueDto\";\r\nimport {UpdateConfigurationByLevelsDto} from './Params/UpdateConfigurationByLevelsDto';\r\nimport {CustomFieldValue} from '../Models/CustomFieldValue';\r\nimport {CustomFieldValueDto} from './Params/CustomFieldValueDto';\r\nimport {ConversionDropdownResponse} from \"./Models/ConversionDropdownResponse\";\r\nimport {SearchByConversionDto} from 'Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Params/SearchByConversionDto';\r\n\r\nexport class ConfigurationPageStore {\r\n constructor(private _ordersEntityId: number, private _productsEntityId: number, private _endProductId: number) {\r\n }\r\n\r\n\r\n GetProductInfo(productId: number, orderId: number, level: string): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetProductInfo',\r\n type: 'GET',\r\n dataType: 'json'\r\n },\r\n params: {\r\n ProductEntityId: this._productsEntityId,\r\n OrderEntityId: this._ordersEntityId,\r\n ProductId: productId,\r\n OrderId: orderId,\r\n Level: level\r\n }\r\n })\r\n .then(productInfo => deferred.resolve(productInfo))\r\n .fail(err => deferred.reject(this.GetResponseError(err, NOTIFICATIONS.ERROR_GETTING_PRODUCT_INFO)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetExtraProductsInfo(productsId: number[], level: string): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetExtraProductsInfo',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: {\r\n OrderEntityId: this._ordersEntityId,\r\n ProductEntityId: this._productsEntityId,\r\n EndProductId: this._endProductId,\r\n ProductsId: productsId,\r\n Level: level\r\n }\r\n })\r\n .then(groupProducts => deferred.resolve(groupProducts))\r\n .fail(err => deferred.reject(this.GetResponseError(err, NOTIFICATIONS.ERROR_GETTING_GROUPS_PRODUCTS)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetConfiguredProduct(dto: { ConfigurationId: number }): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetConfiguredProduct',\r\n type: 'GET',\r\n dataType: 'json'\r\n }, params: {\r\n OrderEntityId: this._ordersEntityId,\r\n ProductEntityId: this._productsEntityId,\r\n ConfigurationId: dto.ConfigurationId\r\n }\r\n })\r\n .then(configuredProduct => deferred.resolve(configuredProduct))\r\n .fail(err => deferred.reject(this.GetResponseError(err, NOTIFICATIONS.ERROR_GETTING_CONFIGURED_PRODUCT)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetConfiguredProductWithLevels(dto: { OrderRecordId: number, ProductRecordId: number, ConfigurationId: number }): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetConfiguredProductWithLevels',\r\n type: 'GET',\r\n dataType: 'json'\r\n }, params: {\r\n OrderEntityId: this._ordersEntityId,\r\n ProductEntityId: this._productsEntityId,\r\n ...dto\r\n }\r\n })\r\n .then(configuredProduct => deferred.resolve(configuredProduct))\r\n .fail(err => deferred.reject(this.GetResponseError(err, NOTIFICATIONS.ERROR_GETTING_CONFIGURED_PRODUCT)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetConversionDropdowns(dto: {\r\n ProductId: number,\r\n ProductGroupId: number,\r\n ProductGroupName: string,\r\n Level: string,\r\n SelectedConversions?: Array\r\n }): P.Promise {\r\n const deferred = P.defer();\r\n\r\n let params = {\r\n OrderEntityId: this._ordersEntityId,\r\n ProductEntityId: this._productsEntityId,\r\n ProductId: dto.ProductId,\r\n ProductGroupId: dto.ProductGroupId,\r\n ProductGroupName: dto.ProductGroupName,\r\n Level: dto.Level,\r\n SelectedConversions: dto.SelectedConversions\r\n }\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetConversionDropdowns',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: params\r\n })\r\n .then(conversionDropdowns => deferred.resolve(conversionDropdowns))\r\n .fail(err => deferred.reject(err));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetGroupProducts(dto: {\r\n ProductId: number,\r\n ProductGroupId: number,\r\n ProductGroupName: string,\r\n PageNumber: number,\r\n RecordsPerPage: number,\r\n Level: string,\r\n Conversions?: Array\r\n }): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetGroupProductsInfo',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: {\r\n OrderEntityId: this._ordersEntityId,\r\n ProductEntityId: this._productsEntityId,\r\n EndProductId: this._endProductId,\r\n ProductId: dto.ProductId,\r\n ProductGroupId: dto.ProductGroupId,\r\n ProductGroupName: dto.ProductGroupName,\r\n PageNumber: dto.PageNumber,\r\n RecordsPerPage: dto.RecordsPerPage,\r\n Level: dto.Level,\r\n Conversions: dto.Conversions\r\n }\r\n })\r\n .then(groupProducts => deferred.resolve(groupProducts))\r\n .fail(err => deferred.reject(this.GetResponseError(err, NOTIFICATIONS.ERROR_GETTING_GROUPS_PRODUCTS)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetInclusiveProducts(dto: { SelectedProductPartsIds: number[], InclusiveProductPartsIds: number[], ExclusiveProductPartsIds: number[], DefaultPartsIds: number[], AlreadyDownloadedAlternatives: number[], GroupId: number, GroupName: string, Level: string }): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetInexProductParts',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: {\r\n OrderEntityId: this._ordersEntityId,\r\n ProductEntityId: this._productsEntityId,\r\n ProductId: this._endProductId,\r\n SelectedProductPartsIds: dto.SelectedProductPartsIds,\r\n InclusiveProductPartsIds: dto.InclusiveProductPartsIds,\r\n ExclusiveProductPartsIds: dto.ExclusiveProductPartsIds,\r\n Level: dto.Level,\r\n GroupId: dto.GroupId,\r\n GroupName: dto.GroupName\r\n }\r\n\r\n })\r\n .then(inclusiveProducts => deferred.resolve(inclusiveProducts))\r\n .fail(err => deferred.reject(this.GetResponseError(err, \"Error getting inclusive products\")));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetFactualPrice(productPartId: number, quantity: number, propertyValues: PropertyValueDto[], customFieldValues: CustomFieldValueDto[]): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetFactualPrice',\r\n type: 'POST'\r\n },\r\n params: {\r\n OrderEntityId: this._ordersEntityId,\r\n ProductEntityId: this._productsEntityId,\r\n ProductId: this._endProductId,\r\n Quantity: quantity,\r\n ProductPartId: productPartId,\r\n PropertyValues: propertyValues,\r\n CustomFieldValues: customFieldValues\r\n }\r\n })\r\n .then(factualPrice => deferred.resolve(factualPrice))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error calculating factual price')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetActionDependsOnValues(dto: GetActionDependsOnValuesDto): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetActionDependsOnValues',\r\n type: 'POST'\r\n },\r\n params: dto\r\n })\r\n .then(actionDependsOnFieldValues => deferred.resolve(actionDependsOnFieldValues))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting action depends on values')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n CreateProductConfiguration(dto: CreateConfigurationDto): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/CreateProductConfiguration',\r\n type: 'POST'\r\n },\r\n params: dto\r\n })\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, NOTIFICATIONS.ERROR_CREATING_CONFIGURATION)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n UpdateProductConfiguration(dto: UpdateConfigurationDto): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/UpdateProductConfiguration',\r\n type: 'POST'\r\n },\r\n params: dto\r\n })\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, NOTIFICATIONS.ERROR_UPDATING_CONFIGURATION)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n UpdateProductConfigurationByLevels(dto: UpdateConfigurationByLevelsDto): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/UpdateProductConfigurationByLevels',\r\n type: 'POST'\r\n },\r\n params: dto\r\n })\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, NOTIFICATIONS.ERROR_UPDATING_CONFIGURATION)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class ConfigurationPageVariable {\r\n private _value: any;\r\n\r\n constructor(public Name: string, value: any) {\r\n this.Value = value;\r\n }\r\n\r\n @enumerable get Value() {\r\n return this._value;\r\n }\r\n\r\n set Value(value: any) {\r\n this._value = value;\r\n }\r\n}","import * as _ from 'underscore';\r\n\r\nimport {EventBusConsumer} from \"Core/Common/EventBus/EventBusConsumer\";\r\n\r\nimport {ConfigurationPageVariable} from \"./Models/ConfigurationPageVariable\";\r\nimport {ConfigurationPageEvents} from \"../Events/ConfigurationPageEvents\";\r\n\r\nexport class ConfigurationPageVariablesStore extends EventBusConsumer {\r\n private _variables: ConfigurationPageVariable[];\r\n\r\n constructor() {\r\n super();\r\n this._variables = [];\r\n }\r\n\r\n Declare(name: string, value: any) {\r\n const existingVariableIndex = _.findIndex(this._variables, v => v.Name === name);\r\n\r\n if (existingVariableIndex > -1) {\r\n this._variables.splice(existingVariableIndex, 1);\r\n }\r\n\r\n this._variables.push(new ConfigurationPageVariable(name, value))\r\n }\r\n\r\n Get(name: string) {\r\n return _.find(this._variables, v => v.Name === name);\r\n }\r\n\r\n GetList() {\r\n return this._variables;\r\n }\r\n\r\n Set(name: string, value: any) {\r\n const variable = _.find(this._variables, v => v.Name === name);\r\n\r\n if (!variable) {\r\n console.error(`Variable ${name} not declared`);\r\n return this;\r\n }\r\n\r\n variable.Value = value;\r\n this.DispatchEvent(ConfigurationPageEvents.VariablesChanged, variable);\r\n return this;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {EventBusConsumer} from 'Core/Common/EventBus/EventBusConsumer';\r\n\r\nimport {BaseProduct} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/BaseProduct';\r\nimport {ProductPart} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/ProductPart';\r\n\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\n\r\nimport {ConfigurationPageEvents, GroupProductsLoadedEventArgs} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Events/ConfigurationPageEvents';\r\n\r\nexport abstract class BaseProductGroup extends EventBusConsumer {\r\n protected container: HTMLElement;\r\n protected productsLoaded: boolean;\r\n protected conversionDropdownLoaded: boolean;\r\n\r\n Products: KnockoutObservableArray;\r\n\r\n PageNumber: number = 1;\r\n RecordsPerPage: number = 10;\r\n AlternativesCount: number = 0;\r\n CanShowMore: KnockoutObservable;\r\n ExtendedView: KnockoutObservable;\r\n IsMain: KnockoutObservable;\r\n IsHidden: KnockoutObservable;\r\n _pricesMiscalculated: KnockoutComputed;\r\n IsGroupDisabledByAction: KnockoutComputed;\r\n\r\n Expanded: KnockoutObservable;\r\n\r\n protected constructor(public Id: number, public Name: string, public TranslatedName: string, public Translations: TranslationModel[], public AddAsExtra: boolean, protected parentProduct: BaseProduct) {\r\n super();\r\n\r\n this.Expanded = ko.observable(false);\r\n\r\n this.CanShowMore = ko.observable(true);\r\n this.ExtendedView = ko.observable(false);\r\n this.IsMain = ko.observable(false);\r\n this.IsHidden = ko.observable(false);\r\n this.Products = ko.observableArray([]);\r\n\r\n this._pricesMiscalculated = ko.computed(() =>\r\n this.Products().find(product => product._priceMiscalculated()) != null);\r\n\r\n this.IsGroupDisabledByAction = ko.computed(() => {\r\n const selectedProduct = this.Products().find(product => product.Selected());\r\n return !!selectedProduct && selectedProduct.IsDisabledByAction();\r\n });\r\n }\r\n\r\n get Container() {\r\n return this.container;\r\n }\r\n\r\n get ParentProduct() {\r\n return this.parentProduct;\r\n }\r\n\r\n abstract get IsRoot();\r\n abstract get IsExtra();\r\n abstract get IsUndefined();\r\n\r\n abstract GetTemplate();\r\n\r\n abstract AfterInit();\r\n\r\n InitMainGroup(mainProduct: ProductPart) {\r\n this.ExtendedView(true);\r\n this.IsMain(true);\r\n this.Products([mainProduct]);\r\n this.productsLoaded = true;\r\n this.conversionDropdownLoaded = true;\r\n }\r\n\r\n abstract Expand(): void;\r\n\r\n abstract Collapse(): void;\r\n\r\n AfterRender(el: HTMLElement) {\r\n this.container = el[0];\r\n }\r\n\r\n GetActiveProduct() {\r\n return _.find(this.Products(), product => product.Selected());\r\n }\r\n\r\n ToggleView() {\r\n if (!this.IsMain()) {\r\n this.ExtendedView(!this.ExtendedView());\r\n }\r\n }\r\n\r\n GetActiveProductIndex() {\r\n return _.findIndex(this.Products(), product => product.Selected());\r\n }\r\n\r\n HasAlternatives() {\r\n return this.Products().length > 1;\r\n }\r\n\r\n get ConversionDropdownLoaded(): boolean {\r\n return this.conversionDropdownLoaded;\r\n }\r\n LoadDropdown(){\r\n this.conversionDropdownLoaded = true;\r\n }\r\n\r\n get IsGroupDisabled(): boolean {\r\n return this._pricesMiscalculated() || this.IsGroupDisabledByAction();\r\n }\r\n\r\n get IsGroupHidden(): boolean {\r\n return !this.GetActiveProduct() && this.IsHidden();\r\n }\r\n\r\n FillProducts(newProducts: ProductPart[], restored: boolean) {\r\n this.productsLoaded = true;\r\n\r\n\t\tif (this.AlternativesCount == 0) {\r\n\t\t\tthis.CanShowMore(false);\r\n\t\t} else if (!restored) {\r\n\t\t\tthis.PageNumber++;\r\n\t\t}\r\n\r\n this.Products.splice(this.Products().length, 0, ...newProducts);\r\n this.DispatchEvent(ConfigurationPageEvents.GroupProductsLoaded, new GroupProductsLoadedEventArgs(newProducts));\r\n }\r\n\r\n FindProduct(id: number, rootGroupId: number, rootGroupName: string, groupId: number, groupName: string, path: number[], kSeq: number, kSeqGuid: string): ProductPart {\r\n for (let productIndex = 0; productIndex < this.Products().length; productIndex++) {\r\n const product = this.Products()[productIndex];\r\n\r\n if (product.Id === id && product.ParentGroup.Id === groupId && product.ParentGroup.Name === groupName && _.isEqual(product.Path, path) && product.KSeq === kSeq && product.KSeqGuid === kSeqGuid) {\r\n return product;\r\n }\r\n\r\n const nestedProduct = product.FindNestedProduct(id, rootGroupId, rootGroupName, groupId, groupName, path, kSeq, kSeqGuid);\r\n\r\n if (nestedProduct) {\r\n return nestedProduct;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n FindGroup(groupId: number, groupName: string, parentId: number) {\r\n for (let productIndex = 0; productIndex < this.Products().length; productIndex++) {\r\n for (let productGroupIndex = 0; productGroupIndex < this.Products()[productIndex].Groups().length; productGroupIndex++) {\r\n if (this.Products()[productIndex].Groups()[productGroupIndex].Id == groupId\r\n && this.Products()[productIndex].Groups()[productGroupIndex].Name == groupName\r\n && this.Products()[productIndex].Id == parentId) {\r\n return this.Products()[productIndex].Groups()[productGroupIndex];\r\n } else {\r\n const resultGroup = this.Products()[productIndex].Groups()[productGroupIndex].FindGroup(groupId, groupName, parentId);\r\n if (resultGroup != null) {\r\n return resultGroup;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n FindProductById(id: number): ProductPart {\r\n for (let productIndex = 0; productIndex < this.Products().length; productIndex++) {\r\n const product = this.Products()[productIndex];\r\n\r\n if (product.Id === id) {\r\n return product;\r\n }\r\n\r\n const nestedProduct = product.FindNestedProductById(id);\r\n\r\n if (nestedProduct) {\r\n return nestedProduct;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n UnSelectActiveProduct() {\r\n const activeProduct = this.GetActiveProduct();\r\n\r\n if (activeProduct) {\r\n this.DispatchEvent(ConfigurationPageEvents.ProductPartUnSelecting, activeProduct);\r\n }\r\n\r\n }\r\n\r\n Dispose() {\r\n this.Products().forEach(product => product.Dispose());\r\n super.Dispose();\r\n }\r\n\r\n protected HasProduct(product: ProductPart) {\r\n return this.Products().indexOf(product) > -1;\r\n }\r\n\r\n CollapseActiveNestedGroup() {\r\n const activeProduct = this.GetActiveProduct();\r\n if (activeProduct) {\r\n const group = _.find(activeProduct.Groups(), g => g.Expanded());\r\n group && group.Collapse();\r\n }\r\n }\r\n}","export class BreadCrumbsItem {\r\n constructor(public Id: number, public Name: string, public NameTranslated: string, public GroupId: number, public GroupName: string, public Path: number[]) {\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import ko from \"knockout\";\r\nexport interface ConversionDropdownViewValue {\r\n Value: string;\r\n IsActive: KnockoutObservable;\r\n IsDisabled: KnockoutObservable;\r\n}\r\n\r\nexport class ConversionDropdownView {\r\n FieldId: number;\r\n FieldName: string;\r\n FieldNameTranslation: string;\r\n FieldType: string;\r\n Values: KnockoutObservableArray;\r\n SelectValue: KnockoutObservable;\r\n IsOpenDropdown: KnockoutObservable;\r\n IsGridMode: boolean;\r\n IsDisabledValuesGroup: KnockoutObservable;\r\n private _message: KnockoutObservable;\r\n constructor() {\r\n this.SelectValue = ko.observable(null);\r\n this.IsOpenDropdown = ko.observable(false);\r\n this.Values = ko.observableArray([]);\r\n this.IsGridMode = false;\r\n this.IsDisabledValuesGroup = ko.observable(null);\r\n this._message = ko.observable(null);\r\n }\r\n\r\n SetMessage(value: string): void{\r\n this._message(value);\r\n }\r\n\r\n ResetMessage(): void {\r\n this._message(null);\r\n }\r\n\r\n\r\n get TranslationFieldName(): string {\r\n return this.FieldNameTranslation || this.FieldName;\r\n }\r\n}","export class SearchByConversionDto {\r\n constructor(public FieldId: number, public Value: string) {\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {CONFIRMATIONS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {\r\n ConversionDropdownResponse,\r\n ConversionDropdownValue\r\n} from \"../../Pages/ConfigurationPage/Stores/Models/ConversionDropdownResponse\";\r\nimport {\r\n ConversionDropdownView, ConversionDropdownViewValue\r\n} from 'Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Models/ConversionDropdownView';\r\nimport {SearchByConversionDto} from 'Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Params/SearchByConversionDto';\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport ConversionDropdownViewTemplate from 'Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Templates/ConversionDropdownView.html';\r\nimport ConversionDropdownTemplate from 'Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Templates/ConversionDropdown.html';\r\nimport _ from \"underscore\";\r\nko.templates[\"Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Templates/ConversionDropdownView\"] = ConversionDropdownViewTemplate;\r\nko.templates[\"Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Templates/ConversionDropdown\"] = ConversionDropdownTemplate;\r\n\r\nexport interface IConversions {\r\n FieldId: number,\r\n Value: string\r\n}\r\n\r\nconst TEMPLATES = {\r\n POP_UP: \"Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Templates/ConversionDropdown\",\r\n VIEW: \"Core/Components/Controls/ProductConfigurator/Components/ConversionDropdown/Templates/ConversionDropdownView\"\r\n};\r\n\r\nexport const CONVERSION_DROPDOWN_EVENTS = {\r\n SELECTED: \"Selected\",\r\n SYNCHRONIZATION_VALUE: \"Synchronization_value\",\r\n SYNCHRONIZATION_RESET: \"Synchronization_Reset\",\r\n};\r\nexport class ConversionDropdown extends Event {\r\n private _el: HTMLElement;\r\n private _dropDown: JBoxDropDown;\r\n private _dropdownData: KnockoutObservable;\r\n private _params: KnockoutObservableArray;\r\n private _isInit: KnockoutObservable;\r\n private _conversions: KnockoutObservableArray;\r\n private _uniqConversions: KnockoutObservableArray;\r\n private _message: KnockoutObservable;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._params = ko.observableArray(null);\r\n this._isInit = ko.observable(null);\r\n this._dropdownData = ko.observable(null);\r\n this._conversions = ko.observableArray(null);\r\n this._uniqConversions = ko.observableArray(null);\r\n this._message = ko.observable(null);\r\n\r\n this.BindEvents();\r\n }\r\n\r\n get IsInit(): boolean {\r\n return this._isInit()\r\n }\r\n get DropDownParams(){\r\n return this._params()\r\n }\r\n get UniqConversions() {\r\n return this._uniqConversions()\r\n }\r\n\r\n GetTemplateName() {\r\n return TEMPLATES.VIEW;\r\n }\r\n\r\n SetMessage(value: string){\r\n this._message(value);\r\n }\r\n\r\n ResetMessage(){\r\n this._message(null);\r\n }\r\n\r\n Init(params: ConversionDropdownView[]) {\r\n if (!this._isInit()) {\r\n this._isInit(true);\r\n }\r\n this._params(params);\r\n }\r\n\r\n ResetSelectedValue(): void {\r\n _.each(this._params(), (param: ConversionDropdownView)=> {\r\n param.SelectValue(null);\r\n _.each(param.Values(), (value: ConversionDropdownViewValue)=> {\r\n value.IsActive(false);\r\n value.IsDisabled(false);\r\n })\r\n })\r\n }\r\n\r\n Reset(){\r\n this.Close();\r\n this.ResetMessage();\r\n this._isInit(false);\r\n\r\n this._conversions([]);\r\n this._uniqConversions([]);\r\n this.ResetSelectedValue();\r\n\r\n this._params([]);\r\n }\r\n ResetConversions() {\r\n this.Close();\r\n this._dropdownData(null);\r\n\r\n this._conversions([]);\r\n this._uniqConversions([]);\r\n this.ResetSelectedValue();\r\n }\r\n\r\n Show(data: ConversionDropdownView, event) {\r\n let target: HTMLElement = event.currentTarget;\r\n\r\n if (this._dropDown){\r\n this._dropdownData().IsOpenDropdown(false);\r\n this._dropDown.Close();\r\n }\r\n\r\n this._dropdownData(data);\r\n if (!this._dropDown) {\r\n this.InitDropdown(target);\r\n }\r\n this._dropDown?.Toggle();\r\n }\r\n\r\n Open(){\r\n // this._dropDown?.Open();\r\n }\r\n\r\n OpenDropdown(data, event): void {\r\n this.Show(data, event);\r\n }\r\n\r\n SelectValue(data: ConversionDropdownViewValue, event) {\r\n if (data.IsActive() && !data.IsDisabled()) {\r\n this._conversions([]);\r\n this._uniqConversions([]);\r\n this.Trigger(CONVERSION_DROPDOWN_EVENTS.SYNCHRONIZATION_RESET);\r\n this.Close();\r\n return;\r\n }\r\n\r\n if (data.IsDisabled()) {\r\n return;\r\n }\r\n\r\n _.each(this._dropdownData().Values(), (value: ConversionDropdownViewValue)=> {\r\n value.IsActive(false);\r\n })\r\n this._dropdownData().SelectValue(data.Value);\r\n\r\n data.IsActive(true);\r\n\r\n const newElem: IConversions = {FieldId: this._dropdownData().FieldId, Value: data.Value};\r\n\r\n this._conversions(_.reject(this._conversions(), item => item.FieldId === newElem.FieldId));\r\n this._conversions().push(new SearchByConversionDto(this._dropdownData().FieldId, data.Value));\r\n\r\n this._uniqConversions(_.uniq(this._conversions(), (conversion)=> conversion.FieldId));\r\n\r\n if (this._uniqConversions().length === this._params().length){\r\n this.Close();\r\n this.Trigger(CONVERSION_DROPDOWN_EVENTS.SELECTED, {Conversions: this._uniqConversions()})\r\n } else {\r\n this.Trigger(CONVERSION_DROPDOWN_EVENTS.SYNCHRONIZATION_VALUE, {SelectedConversions: this._uniqConversions()});\r\n this.Close();\r\n }\r\n }\r\n\r\n SelectGridValue(gridData: ConversionDropdownView, data: ConversionDropdownViewValue, event) {\r\n if (data.IsActive() && !data.IsDisabled()) {\r\n this._conversions([]);\r\n this._uniqConversions([]);\r\n this.Trigger(CONVERSION_DROPDOWN_EVENTS.SYNCHRONIZATION_RESET);\r\n return;\r\n }\r\n\r\n if (data.IsDisabled()){\r\n return\r\n }\r\n\r\n let _gridData: ConversionDropdownView = gridData;\r\n let selectedValue: boolean = data.IsActive();\r\n _.each(_gridData.Values(), (value: ConversionDropdownViewValue)=> {\r\n value.IsActive(false);\r\n });\r\n\r\n data.IsActive(!selectedValue);\r\n\r\n _gridData.SelectValue(!selectedValue ? data.Value : null);\r\n\r\n const newElem: IConversions = {FieldId: _gridData.FieldId, Value: data.Value};\r\n this._conversions(_.reject(this._conversions(), item => item.FieldId === newElem.FieldId));\r\n\r\n if (!selectedValue) {\r\n this._conversions().push(new SearchByConversionDto(_gridData.FieldId, data.Value));\r\n }\r\n\r\n this._uniqConversions(_.uniq(this._conversions(), (conversion)=> conversion.FieldId));\r\n\r\n if (this._uniqConversions().length === this._params().length){\r\n this.Trigger(CONVERSION_DROPDOWN_EVENTS.SELECTED, {Conversions: this._uniqConversions()})\r\n } else {\r\n this.Trigger(CONVERSION_DROPDOWN_EVENTS.SYNCHRONIZATION_VALUE, {SelectedConversions: this._uniqConversions()})\r\n }\r\n }\r\n\r\n InitDropdown(el: HTMLElement): void {\r\n this._dropDown = new JBoxDropDown({\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n otherOptions: {\r\n closeOnClick: 'body',\r\n attach: undefined,\r\n height: 'auto',\r\n maxHeight: 300,\r\n isolateScroll: true,\r\n pointer: \"right\",\r\n maxWidth: 250,\r\n position: {\r\n x: \"right\",\r\n y: \"bottom\"\r\n },\r\n addClass: `jBox-padding-10px jBox-fix-pointer-position-right-15px`,\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n onCloseComplete: () => {\r\n this._dropdownData().IsOpenDropdown(false);\r\n this._dropDown.Destroy();\r\n this._dropDown = null;\r\n }\r\n },\r\n onCreated: () => {\r\n this._dropDown.SetContent({ content: ConversionDropdownTemplate as any });\r\n },\r\n onOpen: () => {\r\n this._dropdownData().IsOpenDropdown(true);\r\n }\r\n })\r\n }\r\n\r\n Close() {\r\n this._dropDown?.Close();\r\n }\r\n\r\n MapConversionDropdowns(conversionDropdowns: ConversionDropdownResponse[]): ConversionDropdownView[] {\r\n return _.map(conversionDropdowns, (conversionDropdown: ConversionDropdownResponse)=> {\r\n const sortedValues:ConversionDropdownValue[] = this.SortConversionDropdownValues(conversionDropdown.Values, conversionDropdown.FieldType);\r\n const isGridMode: boolean = conversionDropdown.Values.length <= 9;\r\n const selectedValues: ConversionDropdownValue = _.find(conversionDropdown.Values, (dropdownValue:ConversionDropdownValue) => dropdownValue.IsActive);\r\n\r\n const dropdownView: ConversionDropdownView = new ConversionDropdownView();\r\n\r\n dropdownView.FieldId = conversionDropdown.FieldId;\r\n dropdownView.FieldName = conversionDropdown.FieldName;\r\n dropdownView.FieldNameTranslation = conversionDropdown.FieldNameTranslation;\r\n dropdownView.FieldType = conversionDropdown.FieldType;\r\n dropdownView.SelectValue(selectedValues && selectedValues.Value);\r\n dropdownView.IsGridMode = isGridMode;\r\n dropdownView.Values(sortedValues.map((dropdownValue: ConversionDropdownValue)=> ({Value: dropdownValue.Value, IsActive: ko.observable(dropdownValue.IsActive), IsDisabled: ko.observable(dropdownValue.IsDisabled)})));\r\n\r\n return dropdownView;\r\n })\r\n }\r\n\r\n ValueSynchronization(conversionDropdowns: ConversionDropdownResponse[]): void {\r\n _.each(this._params(), (dropdownView: ConversionDropdownView):void => {\r\n const dropdownResponse: ConversionDropdownResponse = _.findWhere(conversionDropdowns, { FieldId: dropdownView.FieldId });\r\n if (dropdownResponse) {\r\n const sortedValues:ConversionDropdownValue[] = this.SortConversionDropdownValues(dropdownResponse.Values, dropdownResponse.FieldType);\r\n const selectedValues: ConversionDropdownValue = _.find(sortedValues, (dropdownValue:ConversionDropdownValue) => dropdownValue.IsActive);\r\n\r\n dropdownView.IsDisabledValuesGroup(_.every(sortedValues, (value: ConversionDropdownValue)=> value.IsDisabled === true));\r\n dropdownView.SetMessage(dropdownView.IsDisabledValuesGroup() ? `${NOTIFICATIONS.RECORD_NOT_FOUND} :(`: null);\r\n\r\n dropdownView.SelectValue(selectedValues && selectedValues.Value);\r\n dropdownView.Values(sortedValues.map((dropdownValue: ConversionDropdownValue)=> ({Value: dropdownValue.Value, IsActive: ko.observable(dropdownValue.IsActive), IsDisabled: ko.observable(dropdownValue.IsDisabled)})));\r\n }\r\n });\r\n }\r\n\r\n private SortConversionDropdownValues(values: ConversionDropdownValue[], fieldType: string): ConversionDropdownValue[] {\r\n if (fieldType === FIELD_TYPES.Integer || fieldType === FIELD_TYPES.Decimal) {\r\n return values.sort((a: ConversionDropdownValue, b: ConversionDropdownValue): number => {\r\n const isA: string = a.Value;\r\n const isB: string = b.Value;\r\n\r\n const aIsNotNumber: boolean = Number.isNaN(isA);\r\n const aIsNumber: boolean = !aIsNotNumber;\r\n\r\n const bIsNotNumber: boolean = Number.isNaN(isB);\r\n const bIsNumber: boolean = !bIsNotNumber;\r\n\r\n if (aIsNotNumber && bIsNumber){\r\n return 1;\r\n } else if (aIsNumber && bIsNotNumber) {\r\n return -1;\r\n } else if (aIsNotNumber && bIsNotNumber) {\r\n return isA > isB ? 1 : -1;\r\n }\r\n\r\n const aNumber: number = Number(isA.replace(/[.,]/g, '.'));\r\n const bNumber: number = Number(isB.replace(/[.,]/g, '.'));\r\n\r\n return aNumber > bNumber ? 1 : -1;\r\n });\r\n }\r\n\r\n return values.sort((a: ConversionDropdownValue, b: ConversionDropdownValue): number => a.Value > b.Value ? 1 : -1);\r\n }\r\n\r\n AfterRender(el: Array) {\r\n this._el = el[0];\r\n }\r\n\r\n private BindEvents() {\r\n\r\n }\r\n\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {BaseProductGroup} from \"./BaseProductGroup\";\r\n\r\nimport {BaseProduct} from \"./BaseProduct\";\r\nimport {ProductPart} from \"./ProductPart\";\r\nimport {BreadCrumbsItem} from \"./BreadCrumbsItem\";\r\n\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\n\r\nimport {\r\n ConfigurationPageEvents,\r\n ProductPartSelectingEventArgs,\r\n ConversionsDropdownArgs\r\n} from \"../Events/ConfigurationPageEvents\";\r\n\r\nimport Template from '../Templates/RootGroup.html';\r\n\r\nimport {\r\n CONVERSION_DROPDOWN_EVENTS,\r\n ConversionDropdown\r\n} from \"../../../Components/ConversionDropdown/ConversionDropdown\";\r\nexport class RootGroup extends BaseProductGroup {\r\n private _labels = LABELS;\r\n private _clickedAlternativeBtn: KnockoutObservable;\r\n\r\n BreadCrumbs: KnockoutObservableArray;\r\n\r\n HasProducts: KnockoutComputed;\r\n\r\n ConversionDropdowns: ConversionDropdown;\r\n\r\n constructor(id: number, name: string, TranslatedName: string, Translations: TranslationModel[], addAsExtra: boolean, parentProduct: BaseProduct) {\r\n super(id, name, TranslatedName, Translations, addAsExtra, parentProduct);\r\n\r\n this.BreadCrumbs = ko.observableArray([]);\r\n\r\n this.HasProducts = ko.computed(() => this.Products().length > 0);\r\n\r\n this._clickedAlternativeBtn = ko.observable(null);\r\n\r\n this.ConversionDropdowns = new ConversionDropdown();\r\n }\r\n\r\n GetConversionDropdown(): ConversionDropdown {\r\n return this.ConversionDropdowns;\r\n }\r\n GetIsInitConversionDropdown(): boolean {\r\n return this.ConversionDropdowns.IsInit\r\n }\r\n\r\n get ClickedAlternativeBtn(): boolean {\r\n return this._clickedAlternativeBtn();\r\n }\r\n\r\n get IsRoot() {\r\n return true;\r\n }\r\n\r\n get IsExtra() {\r\n return false;\r\n }\r\n\r\n get IsUndefined() {\r\n return false;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n ToggleBody() {\r\n if (!this.Expanded()) {\r\n this.Expand();\r\n } else {\r\n this.Collapse();\r\n }\r\n }\r\n\r\n Expand() {\r\n\r\n if (this.GetIsInitConversionDropdown()){\r\n if (this.ConversionDropdowns.DropDownParams.length){\r\n if (!this.conversionDropdownLoaded) {\r\n this.DispatchEvent(ConfigurationPageEvents.NotInitRootGroupExpanded, this);\r\n return;\r\n }\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.RootGroupExapanding, this);\r\n // this.CanShowMore(false);\r\n this.Expanded(true);\r\n return;\r\n }\r\n }\r\n if (this.productsLoaded && this.conversionDropdownLoaded && !this.ConversionDropdowns.DropDownParams.length && !this.GetActiveProduct()) {\r\n this.DispatchEvent(ConfigurationPageEvents.RootShowMore, this);\r\n this.Expanded(true);\r\n return;\r\n }\r\n\r\n if (!this.productsLoaded) {\r\n this.DispatchEvent(ConfigurationPageEvents.NotInitRootGroupExpanded, this);\r\n return;\r\n }\r\n\r\n if (!this.GetActiveProduct() && this.AlternativesCount > 0 && this.Products().length == 1) {\r\n this.DispatchEvent(ConfigurationPageEvents.RootShowMore, this);\r\n }\r\n\r\n if (this.GetActiveProduct() && !this.ExtendedView() || !this.GetActiveProduct() && this.ExtendedView()) {\r\n this.ToggleView();\r\n }\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.RootGroupExapanding, this);\r\n this.Expanded(true);\r\n }\r\n\r\n Collapse() {\r\n this.Expanded(false);\r\n this.CollapseActiveNestedGroup();\r\n }\r\n\r\n AfterInit() {\r\n this.BindEvents();\r\n }\r\n\r\n Dispose() {\r\n this.Products().forEach(product => product.Dispose());\r\n super.Dispose();\r\n }\r\n\r\n private BindEvents() {\r\n this.ConversionDropdowns.On(CONVERSION_DROPDOWN_EVENTS.SELECTED, this, (eventArgs: any) => {\r\n let args = {\r\n _eventArgs: eventArgs,\r\n _this: this\r\n }\r\n this.DispatchEvent(ConfigurationPageEvents.RootGroupConversionsDropdown,\r\n new ConversionsDropdownArgs(args))\r\n })\r\n\r\n this.ConversionDropdowns.On(CONVERSION_DROPDOWN_EVENTS.SYNCHRONIZATION_VALUE, this, (eventArgs: any) => {\r\n let args = {\r\n _eventArgs: eventArgs,\r\n _this: this\r\n }\r\n this.DispatchEvent(ConfigurationPageEvents.RootGroupConversionsDropdownSynchronization,\r\n new ConversionsDropdownArgs(args))\r\n })\r\n\r\n this.ConversionDropdowns.On(CONVERSION_DROPDOWN_EVENTS.SYNCHRONIZATION_RESET, this, (eventArgs: any) => {\r\n let args = {\r\n _eventArgs: eventArgs,\r\n _this: this\r\n }\r\n this.DispatchEvent(ConfigurationPageEvents.RootGroupConversionsDropdownSynchronization,\r\n new ConversionsDropdownArgs(args))\r\n })\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ProductPartSelecting)\r\n .When(eventArgs => this.HasProduct(eventArgs.Data.NewProduct))\r\n .Using(() => this.UnSelectActiveProduct())\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ProductPartSelected)\r\n .When(eventArgs => eventArgs.Data.RootGroupIs(this))\r\n .Using(eventArgs => {\r\n const breadCrumbsItem = new BreadCrumbsItem(eventArgs.Data.Id, eventArgs.Data.Name, eventArgs.Data.NameTranslated, eventArgs.Data.ParentGroup.Id, eventArgs.Data.ParentGroup.Name, eventArgs.Data.Path);\r\n this.AddToBreadCrumbs(breadCrumbsItem);\r\n })\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ProductPartUnSelected)\r\n .When(eventArgs => eventArgs.Data.RootGroupIs(this))\r\n .Using(eventArgs => {\r\n const breadCrumbsItem = new BreadCrumbsItem(eventArgs.Data.Id, eventArgs.Data.Name, eventArgs.Data.NameTranslated, eventArgs.Data.ParentGroup.Id, eventArgs.Data.ParentGroup.Name, eventArgs.Data.Path);\r\n this.RemoveFromBreadCrumbs(breadCrumbsItem);\r\n })\r\n .Always();\r\n }\r\n\r\n AddBreadCrumbs(breadCrumbsItem: BreadCrumbsItem[]) {\r\n this.BreadCrumbs.push(...breadCrumbsItem);\r\n }\r\n\r\n AddToBreadCrumbs(breadCrumbsItem: BreadCrumbsItem) {\r\n const existingBreadCrumb = this.GetBreadCrumb(breadCrumbsItem.Id, breadCrumbsItem.Path);\r\n\r\n if (existingBreadCrumb) {\r\n return;\r\n }\r\n\r\n this.BreadCrumbs.push(breadCrumbsItem);\r\n }\r\n\r\n RemoveFromBreadCrumbs(breadCrumbsItem: BreadCrumbsItem) {\r\n const dependencies = this.GetBreadCrumbsDependenciesOf(breadCrumbsItem);\r\n dependencies.forEach(dependency => this.RemoveFromBreadCrumbs(dependency));\r\n\r\n const index = _.findIndex(this.BreadCrumbs(),\r\n item => item.Id === breadCrumbsItem.Id && item.GroupId === breadCrumbsItem.GroupId && item.GroupName === breadCrumbsItem.GroupName && item.Path && _.isEqual(item.Path, breadCrumbsItem.Path));\r\n\r\n if (index > -1) {\r\n this.BreadCrumbs.splice(index, 1);\r\n }\r\n }\r\n\r\n private GetBreadCrumb(productId: number, productPath: number[]) {\r\n return _.find(this.BreadCrumbs(), breadCrumbItem => breadCrumbItem.Id === productId && _.isEqual(breadCrumbItem.Path, productPath));\r\n }\r\n\r\n private GetBreadCrumbsDependenciesOf(breadCrumbsItem: BreadCrumbsItem): BreadCrumbsItem[] {\r\n return this.BreadCrumbs().filter(breadCrumbsItemDependency => breadCrumbsItem.Id === _.last(breadCrumbsItemDependency.Path));\r\n }\r\n\r\n ShowMore(clickedAlternativeBtn?: boolean) {\r\n this._clickedAlternativeBtn(clickedAlternativeBtn);\r\n\r\n // if (this.ExtendedView() && this.Products().length > 1) {\r\n if (this.ExtendedView() && this.Products().length > 1 && this._clickedAlternativeBtn()) {\r\n this.ToggleView();\r\n } else {\r\n this.DispatchEvent(ConfigurationPageEvents.RootShowMore, this);\r\n }\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {BaseProductGroup} from \"./BaseProductGroup\";\r\n\r\nimport {ProductPart} from \"./ProductPart\";\r\n\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\n\r\nimport {\r\n CONVERSION_DROPDOWN_EVENTS,\r\n ConversionDropdown\r\n} from \"../../../Components/ConversionDropdown/ConversionDropdown\";\r\n\r\nimport {\r\n ConfigurationPageEvents, ConversionsDropdownArgs,\r\n GroupActivatingEventArgs, ProductPartSelectingEventArgs\r\n} from \"../Events/ConfigurationPageEvents\";\r\n\r\nimport Template from '../Templates/ProductGroup.html';\r\n\r\nexport class ProductGroup extends BaseProductGroup {\r\n private _labels = LABELS;\r\n private _groupSelectedImageSize: number;\r\n private _groupImageSizeClassName: string;\r\n private _groupTileImageSize: number;\r\n private _clickedAlternativeBtn: KnockoutObservable;\r\n\r\n ConversionDropdowns: ConversionDropdown;\r\n\r\n HasProducts: KnockoutComputed;\r\n\r\n constructor(id: number, name: string, translatedName: string, translations: TranslationModel[], addAsExtra: boolean, parentProduct: ProductPart) {\r\n super(id, name, translatedName, translations, addAsExtra, parentProduct);\r\n\r\n this.HasProducts = ko.computed(() => this.Products().length > 0);\r\n this.CanShowMore = ko.observable(true);\r\n this._groupSelectedImageSize = null;\r\n this._groupImageSizeClassName = null;\r\n this._groupTileImageSize = null;\r\n\r\n this._clickedAlternativeBtn = ko.observable(null);\r\n this.ConversionDropdowns = new ConversionDropdown();\r\n }\r\n\r\n get ProductListMarginSizeClassName(): string {\r\n if (this.Products().length >= 1){\r\n _.each(this.Products(), (product, index)=>{\r\n if (index === 0){\r\n this._groupSelectedImageSize = product._selectedImageSize;\r\n this._groupTileImageSize = product._tileImageSize;\r\n }\r\n })\r\n }\r\n\r\n if (this.ExtendedView()) {\r\n return this.GetImageSizeClassName(this._groupSelectedImageSize);\r\n } else {\r\n return this.GetImageSizeClassName(this._groupTileImageSize);\r\n }\r\n }\r\n\r\n GetConversionDropdown(): ConversionDropdown {\r\n return this.ConversionDropdowns;\r\n }\r\n GetIsInitConversionDropdown(): boolean {\r\n return this.ConversionDropdowns.IsInit\r\n }\r\n\r\n GetImageSizeClassName(imageSize: number) {\r\n switch (imageSize) {\r\n case 60:\r\n return this._groupImageSizeClassName = 'productListMarginSize-60';\r\n case 70:\r\n return this._groupImageSizeClassName = 'productListMarginSize-70';\r\n case 80:\r\n return this._groupImageSizeClassName = 'productListMarginSize-80';\r\n case 90:\r\n return this._groupImageSizeClassName = 'productListMarginSize-90';\r\n default:\r\n return this._groupImageSizeClassName = 'productListMarginSize-100';\r\n }\r\n }\r\n\r\n get ClickedAlternativeBtn(): boolean {\r\n return this._clickedAlternativeBtn();\r\n }\r\n\r\n get IsRoot() {\r\n return false;\r\n }\r\n\r\n get IsExtra() {\r\n return false;\r\n }\r\n\r\n get IsUndefined() {\r\n return false;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n ToggleActive() {\r\n if (this.Expanded()) {\r\n this.Deactivate();\r\n } else {\r\n this.Activate();\r\n }\r\n }\r\n\r\n Expand() {\r\n this.Activate();\r\n }\r\n\r\n Collapse() {\r\n this.Deactivate();\r\n this.CollapseActiveNestedGroup();\r\n }\r\n\r\n Activate() {\r\n if (this.GetIsInitConversionDropdown()){\r\n if (this.ConversionDropdowns.DropDownParams.length){\r\n const parentProduct = this.parentProduct as ProductPart;\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.GroupActivating,\r\n new GroupActivatingEventArgs(parentProduct.SelectedGroup(), this));\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.GroupActivated, this);\r\n this.Expanded(true);\r\n return;\r\n }\r\n\r\n if (!this.ConversionDropdowns.DropDownParams.length && this.conversionDropdownLoaded) {\r\n this.DispatchEvent(ConfigurationPageEvents.ShowMore, this);\r\n return;\r\n }\r\n }\r\n\r\n if (this.productsLoaded && this.conversionDropdownLoaded && !this.ConversionDropdowns.DropDownParams.length && !this.GetActiveProduct()) {\r\n this.DispatchEvent(ConfigurationPageEvents.ReloadingConversionDropdowns, this);\r\n this.Expanded(true);\r\n return;\r\n }\r\n\r\n if (this.productsLoaded && !this.conversionDropdownLoaded && !this.GetActiveProduct() && this.Products().length == 1) {\r\n this.DispatchEvent(ConfigurationPageEvents.NotInitGroupActivated, this);\r\n // this.DispatchEvent(ConfigurationPageEvents.ShowMore, this);\r\n // this.Expanded(true);\r\n // return;\r\n }\r\n\r\n if (!this.productsLoaded) {\r\n this.DispatchEvent(ConfigurationPageEvents.NotInitGroupActivated, this);\r\n return;\r\n }\r\n\r\n if (!this.GetActiveProduct() && this.AlternativesCount > 0 && this.Products().length == 1) {\r\n this.DispatchEvent(ConfigurationPageEvents.ShowMore, this);\r\n }\r\n\r\n if (this.GetActiveProduct() && !this.ExtendedView() || !this.GetActiveProduct() && this.ExtendedView()) {\r\n this.ToggleView()\r\n }\r\n\r\n const parentProduct = this.parentProduct as ProductPart;\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.GroupActivating,\r\n new GroupActivatingEventArgs(parentProduct.SelectedGroup(), this));\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.GroupActivated, this);\r\n this.Expanded(true);\r\n }\r\n\r\n Deactivate() {\r\n this.Expanded(false);\r\n }\r\n\r\n AfterInit() {\r\n this.BindEvents();\r\n }\r\n\r\n Dispose() {\r\n this.Products().forEach(product => product.Dispose());\r\n super.Dispose();\r\n }\r\n\r\n private BindEvents() {\r\n this.ConversionDropdowns.On(CONVERSION_DROPDOWN_EVENTS.SELECTED, this, (eventArgs: any) => {\r\n let args = {\r\n _eventArgs: eventArgs,\r\n _this: this\r\n }\r\n this.DispatchEvent(ConfigurationPageEvents.GroupConversionsDropdown,\r\n new ConversionsDropdownArgs(args))\r\n });\r\n\r\n this.ConversionDropdowns.On(CONVERSION_DROPDOWN_EVENTS.SYNCHRONIZATION_VALUE, this, (eventArgs: any) => {\r\n let args = {\r\n _eventArgs: eventArgs,\r\n _this: this\r\n }\r\n this.DispatchEvent(ConfigurationPageEvents.GroupConversionsDropdownSynchronization,\r\n new ConversionsDropdownArgs(args))\r\n })\r\n\r\n this.ConversionDropdowns.On(CONVERSION_DROPDOWN_EVENTS.SYNCHRONIZATION_RESET, this, (eventArgs: any) => {\r\n let args = {\r\n _eventArgs: eventArgs,\r\n _this: this\r\n }\r\n this.DispatchEvent(ConfigurationPageEvents.GroupConversionsDropdownSynchronization,\r\n new ConversionsDropdownArgs(args))\r\n })\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ProductPartSelecting)\r\n .When(eventArgs => this.HasProduct(eventArgs.Data.NewProduct))\r\n .Using(() => this.UnSelectActiveProduct())\r\n .Always();\r\n }\r\n\r\n ShowMore(clickedAlternativeBtn?: boolean) {\r\n this._clickedAlternativeBtn(clickedAlternativeBtn);\r\n\r\n if (this.conversionDropdownLoaded) {\r\n if (!this.ConversionDropdowns.IsInit && this.Products().length > 1 && !this._clickedAlternativeBtn()) {\r\n this.DispatchEvent(ConfigurationPageEvents.ShowMore, this);\r\n return\r\n }\r\n\r\n if (this.ExtendedView() && this.Products().length > 1) {\r\n this.ToggleView();\r\n return;\r\n }\r\n\r\n if (!this.ConversionDropdowns.DropDownParams.length){\r\n this.DispatchEvent(ConfigurationPageEvents.ShowMore, this);\r\n return;\r\n }\r\n }\r\n\r\n if (this.ExtendedView() && this.Products().length > 1) {\r\n this.ToggleView();\r\n } else {\r\n this.DispatchEvent(ConfigurationPageEvents.ShowMore, this);\r\n }\r\n }\r\n\r\n GetNestedSelectedProducts() {\r\n let nested = [];\r\n this.Products().forEach(p => {\r\n if (p.Selected()) {\r\n nested.push(p);\r\n }\r\n p.Groups().forEach(g => {\r\n _.union(nested, g.GetNestedSelectedProducts());\r\n })\r\n\r\n });\r\n return nested;\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {EventBus} from \"Core/Common/EventBus/EventBus\";\r\n\r\nimport {BackButton} from '../../../Components/BackButton/BackButton';\r\n\r\nimport {BaseProduct} from \"./BaseProduct\";\r\n\r\nimport {RootGroup} from \"./RootGroup\";\r\nimport {PriceList} from \"./PriceList\";\r\nimport {AlternativePriceModel} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/AlternativePriceModel';\r\n\r\nimport {ProductPart} from './ProductPart';\r\n\r\nimport { CachedLevel } from './CachedLevel';\r\n\r\nimport Template from '../Templates/Product.html';\r\n\r\nexport class Product extends BaseProduct {\r\n\r\n private _backButton: BackButton;\r\n\r\n PriceList: KnockoutObservable;\r\n\r\n MainProductPart: ProductPart;\r\n\r\n ViewModels: CachedLevel[];\r\n\r\n constructor(id: number,\r\n kSeq: number,\r\n name: string,\r\n nameTranslated: string,\r\n image: string,\r\n description: string,\r\n price: number,\r\n quantity: number,\r\n alternativePriceModel: AlternativePriceModel,\r\n isActiveLevelLocked: boolean\r\n ) {\r\n super(id, kSeq, name, nameTranslated, image, description, price, null);\r\n\r\n this.PriceList = ko.observable(new PriceList());\r\n this.PriceList().AddAlternativePriceModel(alternativePriceModel);\r\n this.PriceList().AddMainProductPriceGroup(id, name, nameTranslated, price, quantity);\r\n this.PriceList().IsActiveLevelLocked = isActiveLevelLocked;\r\n\r\n this.ViewModels = [];\r\n }\r\n\r\n LevelCacheAvailable() {\r\n return this.PriceList() &&\r\n this.PriceList().ActiveLevel != null &&\r\n this.PriceList().ActiveLevel != this.PriceList().MainLevel;\r\n }\r\n\r\n AttachBackButton(backButton: BackButton) {\r\n this._backButton = backButton;\r\n }\r\n\r\n AssignEventBus(bus: EventBus) {\r\n super.AssignEventBus(bus);\r\n this.PriceList().AssignEventBus(bus);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n RootGroupIs(rootGroup: RootGroup) {\r\n return false;\r\n }\r\n\r\n Dispose() {\r\n this.PriceList().Dispose();\r\n super.Dispose();\r\n }\r\n}","// Module\nvar code = \"
    \\\"no :(
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {ConfiguratorLevels} from 'Core/Components/Controls/ProductConfigurator/ConfiguratorLevels';\r\n\r\nimport {PriceItem} from \"./PriceItem\";\r\nimport {PriceList} from \"./PriceList\";\r\nimport {\r\n ConfigurationPageEvents,\r\n PriceProductNavigatedEventArgs,\r\n SelectProductPartEventArgs\r\n} from \"../Events/ConfigurationPageEvents\";\r\n\r\nexport class ProductPrice extends PriceItem {\r\n Quantity: KnockoutObservable;\r\n ComparisonQuantity: KnockoutObservable;\r\n\r\n constructor(id: number, name: string, nameTranslated: string, price: number, quantity: number, public GroupId: number, public GroupName: string, public GroupNameTranslation: string, public RootGroupId: number, public RootGroupName: string, public Path: number[], public KSeq: number, public KSeqGuid: string) {\r\n super(id, name, nameTranslated, price);\r\n\r\n this.Quantity = ko.observable(quantity);\r\n this.ComparisonQuantity = ko.observable(null);\r\n }\r\n\r\n get PositionPrice() {\r\n return this.Price() * this.Quantity();\r\n }\r\n\r\n get ComparisonPositionPrice() {\r\n return this.ComparisonPrice() * this.ComparisonQuantity();\r\n }\r\n\r\n get PositionAlternativePrice() {\r\n return this.AlternativePrice() * this.Quantity();\r\n }\r\n\r\n get ComparisonPositionAlternativePrice() {\r\n return this.ComparisonAlternativePrice() * this.ComparisonQuantity();\r\n }\r\n\r\n CannotRemovePriceItem(priceList: PriceList) {\r\n const isNotMainLevel = priceList.MainLevel && priceList.ActiveLevel && priceList.MainLevel !== priceList.ActiveLevel;\r\n return this._inactive() || priceList.IsActiveLevelLocked || isNotMainLevel;\r\n }\r\n\r\n private RemovePriceItem(product: ProductPrice) {\r\n let isRemoveFromPriceItem: boolean = true;\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.UnselectProduct,\r\n new SelectProductPartEventArgs(product.Id, product.GroupId, product.GroupName, product.Path, product.KSeq, product.KSeqGuid, isRemoveFromPriceItem));\r\n\r\n if (product.GroupId === product.RootGroupId && product.GroupName === product.RootGroupName) {\r\n this.DispatchEvent(ConfigurationPageEvents.LoadConversionDropdownsFromRemovePriceItem, product);\r\n }\r\n }\r\n\r\n CanNavigateToProduct(product: ProductPrice, priceList: PriceList) {\r\n const onlyOneLevel = !_.any(priceList.Levels());\r\n if (onlyOneLevel) {\r\n return product.Price() != null;\r\n }\r\n\r\n if (!priceList.ActiveLevel) {\r\n return false;\r\n }\r\n\r\n const activeLevelPrice = priceList.ActiveLevel === priceList.MainLevel\r\n ? product.Price()\r\n : product.ComparisonPrice();\r\n return activeLevelPrice != null;\r\n }\r\n\r\n CannotNavigateToProduct(product: ProductPrice, priceList: PriceList) {\r\n return !this.CanNavigateToProduct(product, priceList);\r\n }\r\n\r\n private NavigateToProduct(priceList: PriceList, product: ProductPrice) {\r\n const canNavigateToProduct = product.CanNavigateToProduct(product, priceList);\r\n if (canNavigateToProduct) {\r\n const onlyOneLevel = !_.any(priceList.Levels());\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.ProductNavigatedInPriceList,\r\n new PriceProductNavigatedEventArgs(product.Id, product.GroupId, product.GroupName, product.RootGroupId, product.RootGroupName, product.Path, product.KSeq, product.KSeqGuid, onlyOneLevel, priceList.ActiveLevel));\r\n }\r\n }\r\n}","import {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\n\r\nexport class PcfGroup {\r\n constructor(public Id: number, public Name: string, public NameTranslation: string, public NameTranslations: Array) {\r\n }\r\n}","import {PropertyValueDto} from \"./PropertyValueDto\";\r\nimport {CustomFieldValueDto} from \"./CustomFieldValueDto\";\r\nimport {PcfGroup} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/PcfGroup\";\r\n\r\nexport class ProductPartDto {\r\n\tPropertyValues: PropertyValueDto[];\r\n\tCustomFieldValues: CustomFieldValueDto[];\r\n Price: number;\r\n Quantity: number;\r\n Level: string;\r\n PcfGroup: PcfGroup;\r\n\r\n constructor(public Id: number, public KSeq: number, public Path: number[], groupId: number, groupName: string) {\r\n this.PcfGroup = new PcfGroup(groupId, groupName, null, []);\r\n }\r\n}","export class PropertyValueDto {\r\n Id: number;\r\n Value: any;\r\n IsValid: boolean;\r\n\r\n constructor(id?: number, value?: string, valid?:boolean) {\r\n this.Id = id;\r\n this.Value = value;\r\n this.IsValid = valid;\r\n }\r\n}","import {ProductPropertyDescription} from \"./ProductPropertyDescription\";\r\n\r\nexport class ProductPropertyGroupDescription {\r\n constructor(public Id: number,\r\n public Name: string,\r\n public TranslatedName: string,\r\n public PropertyMode: string,\r\n public Properties: ProductPropertyDescription[]) {\r\n }\r\n}","export class ProductPropertyDescription {\r\n LookupTableId: number;\r\n RelatedTableId: number;\r\n RelatedTableFieldId: number;\r\n AvailableOptionsCount: number;\r\n constructor(public Id: number,\r\n public Name: string,\r\n public TranslatedName: string,\r\n public Type: string,\r\n public FormatName: string,\r\n public Size: number,\r\n public ValueHolderId: number,\r\n public PriceInfluence: boolean,\r\n public ProductEntityId: number,\r\n public ProductId: number,\r\n public IsRequired: boolean) {\r\n }\r\n}","export class ProductCustomFieldDescription {\r\n LookupTableId: number;\r\n RelatedTableId: number;\r\n RelatedTableFieldId: number;\r\n AvailableOptionsCount: number;\r\n\r\n constructor(public Id: number,\r\n public Name: string,\r\n public TranslatedName: string,\r\n public DefaultValue: any,\r\n public Type: string,\r\n public FormatName: string,\r\n public Size: number,\r\n public ValTable: string,\r\n public ValTableType: string,\r\n public ValFieldId: number,\r\n public ValFieldName: string,\r\n public AllowCustomValue: boolean,\r\n public PriceInfluence: boolean,\r\n public IsRequired: boolean) {\r\n }\r\n}","export class CustomFieldValueDto {\r\n\tId: number;\r\n\tValue: any;\r\n\tIsCustomValue: boolean;\r\n\tIsValid: boolean;\r\n\r\n\tconstructor(id?: number, value?: any, isCustomValue?: boolean, valid?: boolean) {\r\n\t\tthis.Id = id;\r\n\t\tthis.Value = value;\r\n\t\tthis.IsCustomValue = isCustomValue;\r\n\t\tthis.IsValid = valid;\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nexport class CachedProduct {\r\n constructor(public Id: number,\r\n public GroupId: number,\r\n public GroupName: string,\r\n public RootGroupId: number,\r\n public RootGroupName: string,\r\n public Path: number[],\r\n public KSeq: number,\r\n public KSeqGuid: string) {\r\n }\r\n\r\n Equals(product: CachedProduct) {\r\n return this.Id === product.Id\r\n && this.GroupId === product.GroupId\r\n && this.GroupName === product.GroupName\r\n && this.RootGroupId === product.RootGroupId\r\n && this.RootGroupName === product.RootGroupName\r\n && _.isEqual(this.Path, product.Path)\r\n && this.KSeq === product.KSeq\r\n && this.KSeqGuid === product.KSeqGuid;\r\n }\r\n}","import {FIELD_TYPES} from \"Core/Constant\";\r\n\r\nimport {ISelectedRecord} from 'Core/Screens/SearchScreen/SearchScreen';\r\n\r\nimport {ProductInfoResponse} from \"../Stores/Models/ProductInfoResponse\";\r\nimport {ProductPartInfoResponse} from \"../Stores/Models/ProductPartInfoResponse\";\r\n\r\nimport {BaseProduct} from \"../Models/BaseProduct\";\r\nimport {BaseProductGroup} from \"../Models/BaseProductGroup\";\r\n\r\nimport {RootGroup} from \"../Models/RootGroup\";\r\nimport {ProductGroup} from \"../Models/ProductGroup\";\r\n\r\nimport {Product} from \"../Models/Product\";\r\nimport {ProductPart} from \"../Models/ProductPart\";\r\n\r\nimport {ProductPrice} from \"../Models/ProductPrice\";\r\n\r\nimport {ProductPartDto} from \"../Stores/Params/ProductPartDto\";\r\nimport {SelectedProduct} from \"../Models/SelectedProduct\";\r\nimport {ProductPropertyGroupResponse} from \"../Stores/Models/ProductPropertyGroupResponse\";\r\nimport {ProductPropertyResponse} from \"../Stores/Models/ProductPropertyResponse\";\r\nimport {PropertyValueResponse} from \"../Stores/Models/PropertyValueResponse\";\r\nimport {PropertyValue} from \"../Models/PropertyValue\";\r\nimport {PropertyValueDto} from \"../Stores/Params/PropertyValueDto\";\r\nimport {ProductPropertyGroupDescription} from \"../Models/Properties/ProductPropertyGroupDescription\";\r\nimport {ProductPropertyDescription} from \"../Models/Properties/ProductPropertyDescription\";\r\nimport {PropertyEvaluationExpressionResponse} from \"../Stores/Models/PropertyEvaluationExpressionResponse\";\r\nimport {PropertyEvaluationExpression} from \"../Models/PropertyEvaluationExpression\";\r\nimport {ProductCustomFieldResponse} from \"../Stores/Models/ProductCustomFieldResponse\";\r\nimport {ProductCustomFieldDescription} from \"../Models/CustomFields/ProductCustomFieldDescription\";\r\nimport {CustomFieldValueResponse} from \"../Stores/Models/CustomFieldValueResponse\";\r\nimport {CustomFieldValue} from \"../Models/CustomFieldValue\";\r\nimport {CustomFieldValueDto} from \"../Stores/Params/CustomFieldValueDto\";\r\nimport {CachedProduct} from '../Models/CachedProduct';\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport {PcfGroupResponse} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Models/PcfGroupResponse\";\r\nimport {AlternativePriceModel} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/AlternativePriceModel\";\r\n\r\nexport type AfterMapRootGroup = (productResponse: string, rootGroup: RootGroup) => void;\r\nexport type AfterMapProductPart = (productPartResponse: ProductInfoResponse, productPart: ProductPart) => void;\r\nexport type AfterMapProductGroup = (productGroupName: string, productGroup: ProductGroup) => void;\r\n\r\nexport class ConfigurationPageMappings {\r\n constructor(private _orderEntityId: number, private _productEntityId: number) {\r\n }\r\n\r\n MapToProduct(productInfoDto: ProductInfoResponse, alternativePriceModel: AlternativePriceModel, isActiveLevelLocked: boolean) {\r\n return new Product(productInfoDto.Id, productInfoDto.KSeq, productInfoDto.Name, productInfoDto.NameTranslated, productInfoDto.Image, productInfoDto.Description, productInfoDto.Price, productInfoDto.Quantity, alternativePriceModel, isActiveLevelLocked);\r\n }\r\n\r\n MapToRootGroups(pcfPartsGroups: PcfGroupResponse[], parentProduct: BaseProduct, afterMap?: AfterMapRootGroup): RootGroup[] {\r\n let rootGroups = [];\r\n\r\n for (let i = 0; i < pcfPartsGroups.length; i++) {\r\n rootGroups.push(this.MapToRootGroup(pcfPartsGroups[i], parentProduct, afterMap));\r\n }\r\n return rootGroups;\r\n }\r\n\r\n MapToRootGroup(pcfPartGroup: PcfGroupResponse, parentProduct: BaseProduct, afterMap?: AfterMapRootGroup): RootGroup {\r\n const rootGroup = new RootGroup(pcfPartGroup.Id, pcfPartGroup.Name, pcfPartGroup.NameTranslation, pcfPartGroup.NameTranslations, pcfPartGroup.AddAsExtra, parentProduct);\r\n\r\n if (afterMap) {\r\n afterMap(pcfPartGroup.Name, rootGroup);\r\n }\r\n\r\n return rootGroup;\r\n }\r\n\r\n MapToProductParts(productPartsDto: ProductInfoResponse[], productGroup: BaseProductGroup,\r\n afterMapProductPart?: AfterMapProductPart,\r\n afterMapProductGroup?: AfterMapProductGroup, readOnly?: boolean): ProductPart[] {\r\n\r\n return productPartsDto.map(part => this.MapToProductPart(part, productGroup, afterMapProductPart, afterMapProductGroup, readOnly));\r\n }\r\n\r\n MapToProductPart(productInfoDto: ProductInfoResponse, productGroup: BaseProductGroup,\r\n afterMapProductPart?: AfterMapProductPart,\r\n afterMapProductGroup?: AfterMapProductGroup, readOnly: boolean = false, isMain: boolean = false): ProductPart {\r\n\r\n const propertyGroups = this.MapToPropertyGroupsDescription(productInfoDto.PropertyGroups);\r\n const propertyEvaluationExpressions = this.MapToEvaluationExpressions(productInfoDto.PropertyEvaluationExpressions);\r\n const productCustomFields = this.MapToProductCustomFields(productInfoDto.ProductCustomFields);\r\n\r\n const productPart = new ProductPart(\r\n this._orderEntityId,\r\n this._productEntityId,\r\n productInfoDto.Id,\r\n productInfoDto.KSeq,\r\n productInfoDto.Name,\r\n productInfoDto.NameTranslated,\r\n productInfoDto.Image,\r\n productInfoDto.Description,\r\n productInfoDto.Price,\r\n null,\r\n productInfoDto.Level,\r\n propertyGroups,\r\n propertyEvaluationExpressions,\r\n [],\r\n productGroup,\r\n productCustomFields,\r\n productInfoDto.InclusiveProducts,\r\n productInfoDto.ExclusiveProducts,\r\n productInfoDto.Defaults,\r\n productInfoDto.Quantity,\r\n productInfoDto.QuantityCanBeChanged,\r\n readOnly\r\n );\r\n\r\n productPart.IsMain(isMain);\r\n\r\n productPart.IsDisabled = productInfoDto.IsDisabled;\r\n\r\n if (readOnly) {\r\n productPart.SetPropertyValues(productInfoDto.PropertyValues);\r\n productPart.SetCustomFieldValues(productInfoDto.CustomFieldValues);\r\n productPart.Price(productInfoDto.Price);\r\n productPart.MakeSelected();\r\n }\r\n\r\n const productGroups = this.MapToProductGroups(productPart, productInfoDto.PcfPartsGroups, afterMapProductGroup);\r\n productPart.Groups(productGroups);\r\n\r\n if (afterMapProductPart) {\r\n afterMapProductPart(productInfoDto, productPart);\r\n }\r\n\r\n return productPart;\r\n }\r\n\r\n MapToCachedProducts(productParts: ProductPart[], rootGroup: BaseProductGroup): CachedProduct[] {\r\n return productParts.map(productPart => this.MapToCachedProduct(productPart, rootGroup));\r\n }\r\n\r\n MapToCachedProduct(productPart: ProductPart, rootGroup: BaseProductGroup): CachedProduct {\r\n return new CachedProduct(productPart.Id, productPart.ParentGroup.Id, productPart.ParentGroup.Name, rootGroup.Id, rootGroup.Name, productPart.Path, productPart.KSeq, productPart.KSeqGuid);\r\n }\r\n\r\n MapToPropertyGroupsDescription(productPropertyGroupsDto: ProductPropertyGroupResponse[]): ProductPropertyGroupDescription[] {\r\n return productPropertyGroupsDto.map(productPropertyGroupDto => this.MapToPropertyGroupDescription(productPropertyGroupDto));\r\n }\r\n\r\n MapToPropertyGroupDescription(productPropertyGroupDto: ProductPropertyGroupResponse): ProductPropertyGroupDescription {\r\n const propertiesDescription = this.MapToPropertiesDescription(productPropertyGroupDto.Properties);\r\n return new ProductPropertyGroupDescription(productPropertyGroupDto.Id, productPropertyGroupDto.Name, productPropertyGroupDto.TranslatedName, productPropertyGroupDto.PropertyMode, propertiesDescription);\r\n }\r\n\r\n MapToPropertiesDescription(productPropertiesDto: ProductPropertyResponse[]): ProductPropertyDescription[] {\r\n return productPropertiesDto.map(productPropertiesDto => this.MapToPropertyDescription(productPropertiesDto));\r\n }\r\n\r\n MapToPropertyDescription(productPropertyResponse: ProductPropertyResponse): ProductPropertyDescription {\r\n\r\n const propertyDescription = new ProductPropertyDescription(productPropertyResponse.Id,\r\n productPropertyResponse.Name,\r\n productPropertyResponse.TranslatedName,\r\n productPropertyResponse.Type,\r\n productPropertyResponse.FormatName,\r\n productPropertyResponse.Size,\r\n productPropertyResponse.ValueHolderId,\r\n productPropertyResponse.PriceInfluence,\r\n productPropertyResponse.ProductEntityId,\r\n productPropertyResponse.ProductId,\r\n productPropertyResponse.IsRequired);\r\n\r\n if (productPropertyResponse.Type == FIELD_TYPES.Lookup) {\r\n propertyDescription.AvailableOptionsCount = productPropertyResponse.AvailableOptionsCount;\r\n propertyDescription.RelatedTableId = productPropertyResponse.RelatedTableId;\r\n propertyDescription.RelatedTableFieldId = productPropertyResponse.RelatedTableFieldId;\r\n propertyDescription.LookupTableId = productPropertyResponse.LookupTableId;\r\n }\r\n\r\n return propertyDescription;\r\n }\r\n\r\n MapToEvaluationExpressions(propertyEvaluationExpressionsDto: PropertyEvaluationExpressionResponse[]): PropertyEvaluationExpression[] {\r\n return propertyEvaluationExpressionsDto.map(evaluationExpressionDto => this.MapToEvaluationExpression(evaluationExpressionDto));\r\n }\r\n\r\n MapToEvaluationExpression(propertyEvaluationExpressionDto: PropertyEvaluationExpressionResponse): PropertyEvaluationExpression {\r\n return new PropertyEvaluationExpression(propertyEvaluationExpressionDto.Id, propertyEvaluationExpressionDto.Destination, propertyEvaluationExpressionDto.Expression);\r\n }\r\n\r\n MapToProductCustomFields(productCustomFieldsDto: ProductCustomFieldResponse[]): ProductCustomFieldDescription[] {\r\n return productCustomFieldsDto.map(productCustomFieldDto => this.MapToProductCustomField(productCustomFieldDto));\r\n }\r\n\r\n MapToProductCustomField(productCustomFieldResponse: ProductCustomFieldResponse): ProductCustomFieldDescription {\r\n return new ProductCustomFieldDescription(productCustomFieldResponse.Id,\r\n productCustomFieldResponse.Name,\r\n productCustomFieldResponse.TranslatedName,\r\n productCustomFieldResponse.DefaultValue,\r\n productCustomFieldResponse.Type,\r\n productCustomFieldResponse.FormatName,\r\n productCustomFieldResponse.Size,\r\n productCustomFieldResponse.ValTable,\r\n productCustomFieldResponse.ValTableType,\r\n productCustomFieldResponse.ValFieldId,\r\n productCustomFieldResponse.ValFieldName,\r\n productCustomFieldResponse.AllowCustomValue,\r\n productCustomFieldResponse.PriceInfluence,\r\n productCustomFieldResponse.IsRequired);\r\n }\r\n\r\n MapToProductGroups(product: ProductPart, pcfPartsGroups: PcfGroupResponse[], afterMap?: AfterMapProductGroup): ProductGroup[] {\r\n return pcfPartsGroups.map(group => this.MapToProductGroup(product, group.Id, group.Name, group.NameTranslation, group.NameTranslations, group.AddAsExtra, afterMap));\r\n }\r\n\r\n MapToProductGroup(product: ProductPart, productGroupId: number, productGroupName: string, productTranslatedGroupName: string, productGroupNamesTranslations: TranslationModel[], addAsExtra: boolean, afterMap?: AfterMapProductGroup): ProductGroup {\r\n const productGroup = new ProductGroup(productGroupId, productGroupName, productTranslatedGroupName, productGroupNamesTranslations, addAsExtra,\r\n product);\r\n\r\n if (afterMap) {\r\n afterMap(productGroupName, productGroup);\r\n }\r\n\r\n return productGroup;\r\n }\r\n\r\n MapRootGroupProductPartsResponseOnProductPrices(products: ProductPartInfoResponse[]): ProductPrice[] {\r\n return products.map(product => this.MapProductPartInfoResponseOnProductPrice(product, product.PcfGroup.Id, product.PcfGroup.Name));\r\n }\r\n\r\n MapProductPartInfoResponseOnProductPrice(product: ProductPartInfoResponse, rootGroupId: number, rootGroupName: string): ProductPrice {\r\n return new ProductPrice(product.Id, product.Name, product.NameTranslated, product.FactualPrice, product.Quantity, product.PcfGroup.Id, product.PcfGroup.Name, product.PcfGroup.NameTranslation, rootGroupId, rootGroupName, product.Path, product.KSeq, null);\r\n }\r\n\r\n MapProductPartOnProductPrice(product: ProductPart, rootGroup: BaseProductGroup): ProductPrice {\r\n return new ProductPrice(product.Id, product.Name, product.NameTranslated, product.Price(), product.Quantity(), product.ParentGroup.Id, product.ParentGroup.Name, product.ParentGroup.TranslatedName, rootGroup.Id, rootGroup.Name, product.Path, product.KSeq, product.KSeqGuid);\r\n }\r\n\r\n MapToProductPartsDto(productPrices: SelectedProduct[]): ProductPartDto[] {\r\n return productPrices.map(productPrice => this.MapToProductPartDto(productPrice));\r\n }\r\n\r\n MapToProductPartDto(productPrice: SelectedProduct): ProductPartDto {\r\n return new ProductPartDto(productPrice.Id, productPrice.KSeq, productPrice.Path, productPrice.GroupId, productPrice.GroupName);\r\n }\r\n\r\n MapToPropertyValuesDto(propertyValue: PropertyValue[]): PropertyValueDto[] {\r\n return propertyValue.map(propertyValue => this.MapToPropertyValueDto(propertyValue));\r\n }\r\n\r\n MapToPropertyValueDto(propertyValue: PropertyValue): PropertyValueDto {\r\n return new PropertyValueDto(propertyValue.Id, propertyValue.Value, propertyValue.IsValid);\r\n }\r\n\r\n MapToPropertyValues(propertyValuesDto: PropertyValueResponse[]) {\r\n return propertyValuesDto.map(dto => this.MapToPropertyValue(dto));\r\n }\r\n\r\n MapToPropertyValue(propertyValueDto: PropertyValueResponse) {\r\n return new PropertyValue(propertyValueDto.Id, propertyValueDto.Value);\r\n }\r\n\r\n MapToCustomFieldValuesDto(customFieldValues: CustomFieldValue[]): CustomFieldValueDto[] {\r\n return customFieldValues.map(customFieldValue => this.MapToCustomFieldValueDto(customFieldValue));\r\n }\r\n\r\n MapToCustomFieldValueDto(customFieldValue: CustomFieldValue): CustomFieldValueDto {\r\n return new CustomFieldValueDto(\r\n customFieldValue.Id,\r\n customFieldValue.IsCustomValue ? customFieldValue.Text : customFieldValue.Value,\r\n customFieldValue.IsCustomValue,\r\n customFieldValue.IsValid\r\n );\r\n }\r\n\r\n MapToCustomFieldValues(customFieldValueDto: CustomFieldValueResponse[]) {\r\n return customFieldValueDto.map(dto => this.MapToCustomFieldValue(dto));\r\n }\r\n\r\n MapToCustomFieldValue(customFieldValueDto: CustomFieldValueResponse) {\r\n return new CustomFieldValue(\r\n customFieldValueDto.Id,\r\n customFieldValueDto.Value,\r\n customFieldValueDto.IsValid,\r\n customFieldValueDto.Text,\r\n customFieldValueDto.IsCustomValue\r\n );\r\n }\r\n}","import {PropertyValue} from \"./PropertyValue\";\r\nimport {CustomFieldValue} from \"./CustomFieldValue\";\r\n\r\nexport class SelectedProduct {\r\n constructor(public Id: number,\r\n public GroupId: number,\r\n public GroupName: string,\r\n public RootGroupId: number,\r\n public RootGroupName: string,\r\n public Path: number[],\r\n public KSeq: number,\r\n public KSeqGuid: string,\r\n public Price?: number,\r\n public Quantity?: number,\r\n public PropertyValues?: PropertyValue[],\r\n\t\t\t\tpublic CustomFieldValues?: CustomFieldValue[]) {\r\n }\r\n}","import * as _ from \"underscore\";\r\n\r\nimport {SelectedProduct} from \"./SelectedProduct\";\r\nimport {PropertyValue} from \"./PropertyValue\";\r\nimport {CustomFieldValue} from \"./CustomFieldValue\";\r\n\r\nexport class SelectedProducts {\r\n private _restored: SelectedProduct[];\r\n private _new: SelectedProduct[];\r\n private _removed: SelectedProduct[];\r\n private _selected: SelectedProduct[];\r\n\r\n private _initialMainPropertyValues: PropertyValue[];\r\n\r\n constructor() {\r\n this._restored = [];\r\n this._new = [];\r\n this._removed = [];\r\n this._selected = [];\r\n this._initialMainPropertyValues = [];\r\n }\r\n\r\n get Restored() {\r\n return [...this._restored];\r\n }\r\n\r\n get New() {\r\n return [...this._new];\r\n }\r\n\r\n get Removed() {\r\n return [...this._removed];\r\n }\r\n\r\n get Altered() {\r\n return _.chain(this.Restored)\r\n .filter(restored => !_.any(this.New, newPart => newPart.Id === restored.Id &&\r\n newPart.KSeq === restored.KSeq &&\r\n newPart.KSeqGuid === restored.KSeqGuid))\r\n .filter(restored => !_.any(this.Removed, removedPart => removedPart.Id === restored.Id &&\r\n removedPart.KSeq === restored.KSeq &&\r\n removedPart.KSeqGuid === restored.KSeqGuid))\r\n .filter(restored => _.any(this.Selected, selectedPart => selectedPart.Id === restored.Id &&\r\n selectedPart.KSeq === restored.KSeq &&\r\n selectedPart.KSeqGuid === restored.KSeqGuid &&\r\n (!_.isEqual(selectedPart.PropertyValues, restored.PropertyValues) ||\r\n !_.isEqual(selectedPart.CustomFieldValues, restored.CustomFieldValues)) ||\r\n selectedPart.Quantity != restored.Quantity ||\r\n selectedPart.Price != restored.Price))\r\n .value();\r\n }\r\n\r\n get InitialMainPropertyValues() {\r\n return [...this._initialMainPropertyValues];\r\n }\r\n\r\n get Selected() {\r\n return [...this._selected];\r\n }\r\n\r\n IsSelectedProduct(productId: number, groupId: number, groupName: string, rootGroupId: number, rootGroupName: string, path: number[], kSeq: number, kSeqGuid: string) {\r\n return !!this.GetSelectedProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid);\r\n }\r\n\r\n Restore(productId: number, groupId: number, groupName: string, rootGroupId: number, rootGroupName: string, path: number[], kSeq: number, kSeqGuid: string, price: number, quantity: number, propertyValues: PropertyValue[], customFieldValues: CustomFieldValue[]) {\r\n if (!this.IsSelectedProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid)) {\r\n this._restored.push(new SelectedProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid, price, quantity, propertyValues, customFieldValues));\r\n this._selected.push(new SelectedProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid, price, quantity, propertyValues, customFieldValues));\r\n }\r\n }\r\n\r\n InitMainPropertyValues(mainPropertyValues: PropertyValue[]) {\r\n this._initialMainPropertyValues = mainPropertyValues;\r\n }\r\n\r\n Add(productId: number, groupId: number, groupName: string, rootGroupId: number, rootGroupName: string, path: number[], kSeq: number, kSeqGuid: string, quantity: number, price: number, propertyValues: PropertyValue[], customFieldValues: CustomFieldValue[]) {\r\n if (this.IsSelectedProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid)) {\r\n return;\r\n }\r\n\r\n this._selected.push(new SelectedProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid, price, quantity, propertyValues, customFieldValues));\r\n\r\n if (this.IsRestoredProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid)) {\r\n this.RemoveFromDeleted(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid)\r\n } else {\r\n this._new.push(new SelectedProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid));\r\n }\r\n }\r\n\r\n Remove(productId: number, groupId: number, groupName: string, rootGroupId: number, rootGroupName: string, path: number[], kSeq, kSeqGuid: string) {\r\n if (this.IsRemovedProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid)) {\r\n return;\r\n }\r\n\r\n const dependencies = this.GetSelectedDependenciesOf(productId, rootGroupId, rootGroupName, path, kSeq, kSeqGuid);\r\n dependencies.forEach(dependency => this.Remove(dependency.Id, dependency.GroupId, dependency.GroupName, dependency.RootGroupId, dependency.RootGroupName, dependency.Path, dependency.KSeq, dependency.KSeqGuid));\r\n\r\n if (this.IsRestoredProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid)) {\r\n this._removed.push(new SelectedProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid));\r\n }\r\n\r\n const selectedProduct = this.GetSelectedProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid);\r\n const selectedIndex = this._selected.indexOf(selectedProduct);\r\n\r\n if (selectedIndex > -1) {\r\n this._selected.splice(selectedIndex, 1);\r\n }\r\n\r\n this.RemoveFromNew(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid);\r\n }\r\n\r\n GetRestoredProduct(productId: number, groupId: number, groupName: string, rootGroupId: number, rootGroupName: string, path: number[], kSeq, kSeqGuid: string) {\r\n return _.find(this._restored, product =>\r\n product.Id === productId &&\r\n product.GroupId === groupId &&\r\n product.GroupName === groupName &&\r\n product.RootGroupId === rootGroupId &&\r\n product.RootGroupName === rootGroupName &&\r\n _.isEqual(product.Path, path) &&\r\n product.KSeq === kSeq &&\r\n product.KSeqGuid === kSeqGuid\r\n );\r\n }\r\n\r\n GetSelectedProduct(productId: number, groupId: number, groupName: string, rootGroupId: number, rootGroupName: string, path: number[], kSeq: number, kSeqGuid: string) {\r\n return _.find(this._selected, product =>\r\n product.Id === productId &&\r\n product.GroupId === groupId &&\r\n product.GroupName === groupName &&\r\n product.RootGroupId === rootGroupId &&\r\n product.RootGroupName === rootGroupName &&\r\n _.isEqual(product.Path, path) &&\r\n product.KSeq === kSeq &&\r\n product.KSeqGuid === kSeqGuid\r\n );\r\n }\r\n\r\n private IsRestoredProduct(productId: number, groupId: number, groupName: string, rootGroupId: number, rootGroupName: string, path: number[], kSeq: number, kSeqGuid: string) {\r\n return !!this.GetRestoredProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid);\r\n }\r\n\r\n private IsRemovedProduct(productId: number, groupId: number, groupName: string, rootGroupId: number, rootGroupName: string, path: number[], kSeq: number, kSeqGuid: string) {\r\n return !!this.GetRemovedProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid);\r\n }\r\n\r\n private RemoveFromNew(productId: number, groupId: number, groupName: string, rootGroupId: number, rootGroupName: string, path: number[], kSeq: number, kSeqGuid: string) {\r\n const newProduct = this.GetNewProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid);\r\n const newIndex = this._new.indexOf(newProduct);\r\n\r\n if (newIndex > -1) {\r\n this._new.splice(newIndex, 1);\r\n }\r\n }\r\n\r\n private RemoveFromDeleted(productId: number, groupId: number, groupName: string, rootGroupId: number, rootGroupName: string, path: number[], kSeq: number, kSeqGuid: string) {\r\n const removedProduct = this.GetRemovedProduct(productId, groupId, groupName, rootGroupId, rootGroupName, path, kSeq, kSeqGuid);\r\n\r\n const removedIndex = this._removed.indexOf(removedProduct);\r\n\r\n if (removedIndex > -1) {\r\n this._removed.splice(removedIndex, 1);\r\n }\r\n }\r\n\r\n private GetNewProduct(productId: number, groupId: number, groupName: string, rootGroupId: number, rootGroupName: string, path: number[], kSeq: number, kSeqGuid: string) {\r\n return _.find(this._new, product =>\r\n product.Id === productId &&\r\n product.GroupId === groupId &&\r\n product.GroupName === groupName &&\r\n product.RootGroupId === rootGroupId &&\r\n product.RootGroupName === rootGroupName &&\r\n _.isEqual(product.Path, path) &&\r\n product.KSeq === kSeq &&\r\n product.KSeqGuid === kSeqGuid\r\n );\r\n }\r\n\r\n private GetRemovedProduct(productId: number, groupId: number, groupName: string, rootGroupId: number, rootGroupName: string, path: number[], kSeq: number, kSeqGuid: string) {\r\n return _.find(this._removed, product =>\r\n product.Id === productId &&\r\n product.GroupId === groupId &&\r\n product.GroupName === groupName &&\r\n product.RootGroupId === rootGroupId &&\r\n product.RootGroupName === rootGroupName &&\r\n _.isEqual(product.Path, path) &&\r\n product.KSeq === kSeq &&\r\n product.KSeqGuid === kSeqGuid\r\n );\r\n }\r\n\r\n private GetSelectedDependenciesOf(productId: number, rootGroupId: number, rootGroupName: string, path: number[], kSeq: number, kSeqGuid: string): SelectedProduct[] {\r\n return this._selected.filter(part =>\r\n part.RootGroupId === rootGroupId &&\r\n part.RootGroupName === rootGroupName &&\r\n productId === _.last(part.Path) &&\r\n part.KSeq === kSeq &&\r\n part.KSeqGuid === kSeqGuid);\r\n }\r\n}","import * as _ from 'underscore';\r\n\r\nimport {CachedProduct} from './CachedProduct';\r\n\r\nexport class CachedProducts {\r\n private _products: CachedProduct[];\r\n\r\n constructor() {\r\n this._products = [];\r\n }\r\n\r\n Find(criteria: (product: CachedProduct) => boolean) {\r\n return _.find(this._products, criteria);\r\n }\r\n\r\n FindById(id: number) {\r\n return _.find(this._products, cp => cp.Id === id);\r\n }\r\n\r\n Add(product: CachedProduct) {\r\n if (!this.Exist(product)) {\r\n this._products.push(product);\r\n }\r\n }\r\n\r\n AddRange(products: CachedProduct[]) {\r\n products.forEach(product => this.Add(product));\r\n }\r\n\r\n Exist(product: CachedProduct): boolean {\r\n return _.any(this._products, cp => cp.Equals(product));\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {EventBusConsumer} from 'Core/Common/EventBus/EventBusConsumer';\r\n\r\nimport {Product} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Product';\r\nimport {RootGroup} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/RootGroup';\r\nimport {ProductPrice} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/ProductPrice';\r\nimport {SelectedProducts} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/SelectedProducts';\r\nimport {CachedProducts} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CachedProducts';\r\nimport {CachedLevel} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CachedLevel';\r\nimport {ExtraGroup} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/ExtraGroup';\r\nimport {UndefinedGroup} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/UndefinedGroup';\r\n\r\nexport class ViewModel extends EventBusConsumer {\r\n SelectedProducts: SelectedProducts;\r\n CachedProducts: CachedProducts;\r\n\r\n ViewModels: CachedLevel[];\r\n\r\n Product: KnockoutObservable;\r\n _rootGroups: KnockoutObservableArray;\r\n _mainGroup: KnockoutObservable;\r\n _extraGroup: KnockoutObservable;\r\n _undefinedGroup: KnockoutObservable;\r\n\r\n Level: string;\r\n compareLevels: KnockoutObservable;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.SelectedProducts = new SelectedProducts();\r\n this.CachedProducts = new CachedProducts();\r\n\r\n this.Product = ko.observable(null);\r\n this._rootGroups = ko.observableArray([]);\r\n this._mainGroup = ko.observable(null);\r\n this._extraGroup = ko.observable(null);\r\n this._undefinedGroup = ko.observable(null);\r\n this.compareLevels = ko.observable(false);\r\n this.ViewModels = [];\r\n }\r\n\r\n get RootGroups() {\r\n if (this.LevelCacheAvailable()) {\r\n return this.ViewModels.find(vm => vm.Level == this.Product().PriceList().ActiveLevel).RootGroups;\r\n }\r\n return this._rootGroups;\r\n }\r\n\r\n get MainGroup() {\r\n if (this.LevelCacheAvailable()) {\r\n return this.ViewModels.find(vm => vm.Level == this.Product().PriceList().ActiveLevel).MainGroup;\r\n }\r\n return this._mainGroup;\r\n }\r\n\r\n get ExtraGroup() {\r\n if (this.LevelCacheAvailable()) {\r\n return this.ViewModels.find(vm => vm.Level === this.Product().PriceList().ActiveLevel).ExtraGroup;\r\n }\r\n return this._extraGroup;\r\n }\r\n\r\n get UndefinedGroup() {\r\n if (this.LevelCacheAvailable()) {\r\n return this.ViewModels.find(vm => vm.Level === this.Product().PriceList().ActiveLevel).UndefinedGroup;\r\n }\r\n return this._undefinedGroup;\r\n }\r\n\r\n LevelCacheAvailable() {\r\n return this.Product() &&\r\n this.Product().PriceList() &&\r\n this.Product().PriceList().ActiveLevel != null &&\r\n this.Product().PriceList().ActiveLevel != this.Product().PriceList().MainLevel;\r\n }\r\n\r\n GetRootGroup(criteria: (rootGroup: RootGroup) => boolean) {\r\n return _.find(this.RootGroups(), rootGroup => criteria(rootGroup));\r\n }\r\n\r\n GetRootGroupByIdAndName(groupId: number, groupName: string) {\r\n return _.find(this.RootGroups(), group => group.Id === groupId && group.Name === groupName);\r\n }\r\n\r\n FindProduct(id: number, rootGroupId: number, rootGroupName: string, groupId: number, groupName: string, path: number[], kSeq: number, kSeqGuid: string) {\r\n let product = null;\r\n\r\n for (let index = 0; index < this.RootGroups().length; index++) {\r\n product = this.RootGroups()[index].FindProduct(id, rootGroupId, rootGroupName, groupId, groupName, path, kSeq, kSeqGuid);\r\n\r\n if (product) {\r\n return product;\r\n }\r\n }\r\n\r\n product = this.ExtraGroup().FindProduct(id, rootGroupId, rootGroupName, groupId, groupName, path, kSeq, kSeqGuid);\r\n\r\n if (product) {\r\n return product;\r\n }\r\n\r\n product = this.UndefinedGroup().FindProduct(id, rootGroupId, rootGroupName, groupId, groupName, path, kSeq, kSeqGuid);\r\n\r\n if (product) {\r\n return product;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n FindProductGroup(groupId: number, groupName: string, parentId: number) {\r\n for (let index = 0; index < this.RootGroups().length; index++) {\r\n\r\n if (this.RootGroups()[index].Id == groupId && this.RootGroups()[index].Name == groupName) {\r\n return this.RootGroups()[index];\r\n }\r\n\r\n const foundGroup = this.RootGroups()[index].FindGroup(groupId, groupName, parentId);\r\n if (foundGroup) {\r\n return foundGroup;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n FindProductById(id: number) {\r\n for (let index = 0; index < this.RootGroups().length; index++) {\r\n const product = this.RootGroups()[index].FindProductById(id);\r\n\r\n if (product) {\r\n return product;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n FindSelectedProductsIncopatibleWith(id: number): number[] {\r\n let productIds = [];\r\n\r\n this.SelectedProducts.Selected.forEach(selected => {\r\n const currentProduct = this.FindProduct(selected.Id, selected.RootGroupId, selected.RootGroupName, selected.GroupId, selected.GroupName, selected.Path, selected.KSeq, selected.KSeqGuid);\r\n if (currentProduct.ExclusiveProducts.indexOf(id) != -1) {\r\n productIds.push(currentProduct.Id);\r\n }\r\n });\r\n return productIds;\r\n }\r\n\r\n FindAllSelectedProducts() {\r\n let products = [];\r\n\r\n this.SelectedProducts.Selected.forEach(selected => {\r\n const currentProduct = this.FindProduct(selected.Id, selected.RootGroupId, selected.RootGroupName, selected.GroupId, selected.GroupName, selected.Path, selected.KSeq, selected.KSeqGuid);\r\n products.push(currentProduct);\r\n });\r\n\r\n return products;\r\n }\r\n\r\n AddToPriceList(product: ProductPrice, groupId: number, groupName: string, groupNameTranslation: string) {\r\n this.Product().PriceList().AddToPriceList(product, groupId, groupName, groupNameTranslation);\r\n }\r\n\r\n AddToPriceListByLevel(product: ProductPrice, groupId: number, groupName: string, groupNameTranslation: string, level: string) {\r\n this.Product().PriceList().AddToPriceListByLevel(product, groupId, groupName, groupNameTranslation, level);\r\n }\r\n\r\n RemoveFromPriceList(rootGroupId: number, rootGroupName: string, productName: string, kSeq: number, kSeqGuid: string) {\r\n this.Product().PriceList().RemoveFromPriceList(rootGroupId, rootGroupName, productName, kSeq, kSeqGuid);\r\n }\r\n\r\n UpdatePriceInPriceList(product: ProductPrice, groupId: number, groupName: string) {\r\n this.Product().PriceList().UpdatePriceFor(product, groupId, groupName);\r\n }\r\n\r\n UpdateMainProductPrice(price: number) {\r\n this.Product().PriceList().UpdateMainProductPrice(price);\r\n }\r\n\r\n UpdateAssemblyQuantity(quantity: number) {\r\n this.Product().PriceList().UpdateAssemblyQuantity(quantity);\r\n }\r\n\r\n DisableSaveByAction(disableSaveByAction: boolean) {\r\n this.Product().PriceList().IsSaveDisabledByAction = disableSaveByAction;\r\n }\r\n\r\n Dispose() {\r\n if (this.Product()) {\r\n this.Product().Dispose();\r\n }\r\n\r\n this.RootGroups().forEach(group => group.Dispose());\r\n super.Dispose();\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {IConfigurationPageParams} from '../ConfigurationPage';\r\n\r\nimport {BaseProduct} from './BaseProduct';\r\nimport {ProductPart} from './ProductPart';\r\n\r\nimport {BreadCrumbsItem} from './BreadCrumbsItem';\r\nimport {BaseProductGroup} from './BaseProductGroup';\r\n\r\nimport {ISelectedRecord, SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\n\r\nimport {ConfigurationPageStore} from '../Stores/ConfigurationPageStore';\r\nimport {ConfigurationPageVariablesStore} from '../Stores/ConfigurationPageVariablesStore';\r\n\r\nimport {ConfigurationPageMappings} from '../Mappings/ConfigurationPageMappings';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport Template from '../Templates/ExtraGroup.html';\r\nimport {Notifier} from '../../../../../../Common/Notifier';\r\n\r\nexport class ExtraGroup extends BaseProductGroup {\r\n private _labels = LABELS;\r\n private _mappings: ConfigurationPageMappings;\r\n private _store: ConfigurationPageStore;\r\n\r\n protected container: HTMLElement;\r\n\r\n Products: KnockoutObservableArray;\r\n BreadCrumbs: KnockoutObservableArray;\r\n\r\n constructor(protected parentProduct: BaseProduct,\r\n protected params: IConfigurationPageParams,\r\n protected variablesStore: ConfigurationPageVariablesStore,\r\n protected readOnly: boolean,\r\n protected activeLevel: string) {\r\n\r\n super(0, LABELS.EXTRA_PRODUCTS, LABELS.EXTRA_PRODUCTS, [], false, parentProduct);\r\n\r\n this._store = new ConfigurationPageStore(params.OrderEntityId, params.ProductsEntityId, params.ProductId)\r\n this._mappings = new ConfigurationPageMappings(params.OrderEntityId, params.ProductsEntityId);\r\n\r\n this.Products = ko.observableArray([]);\r\n this.BreadCrumbs = ko.observableArray([]);\r\n\r\n this.ExtendedView(true);\r\n }\r\n\r\n get IsRoot() {\r\n return true;\r\n }\r\n\r\n get IsExtra() {\r\n return true;\r\n }\r\n\r\n get IsUndefined() {\r\n return false;\r\n }\r\n\r\n Init(products: ProductPart[]) {\r\n this.Products(products);\r\n }\r\n\r\n AfterInit() {\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n this.container = el[0];\r\n }\r\n\r\n Dispose() {\r\n this.Products().forEach(product => product.Dispose());\r\n super.Dispose();\r\n }\r\n\r\n ToggleBody() {\r\n if (!this.Expanded()) {\r\n this.Expand();\r\n } else {\r\n this.Collapse();\r\n }\r\n }\r\n\r\n Collapse(): void {\r\n this.Expanded(false);\r\n }\r\n\r\n Expand(): void {\r\n this.Expanded(true);\r\n }\r\n\r\n SearchExtraProducts() {\r\n const searchScreen = new SearchScreen({\r\n SearchTerm: '',\r\n ButtonAdd: false,\r\n MultiSelectMode: true,\r\n EntityId: this.params.ProductsEntityId\r\n });\r\n\r\n searchScreen.On('RECORDS_SELECTED', this, eventArgs => this.AddFoundProductRecords(eventArgs.data));\r\n\r\n searchScreen.Show({addClass: 'productConfigurator-extraProducts-search-modal search-modal-container showScrollModal'});\r\n }\r\n\r\n AddFoundProductRecords(selection: { Ids: number[] }) {\r\n let selectedProductsId = selection.Ids;\r\n\r\n if (selectedProductsId.length > 0) {\r\n this._store.GetExtraProductsInfo(selectedProductsId, this.activeLevel)\r\n .then(productsInfoDto => {\r\n const productParts = this._mappings.MapToProductParts(productsInfoDto, this, (productInfoDto, productPart) => {\r\n productPart.SetInitialPropertyValues();\r\n productPart.SetInitialCustomFieldValues();\r\n productPart.TileImageSize = this.params.ImageSizes.Tiles;\r\n productPart.SelectedImageSize = this.params.ImageSizes.SelectedComponent;\r\n productPart.AssignVariableStore(this.variablesStore);\r\n productPart.AssignEventBus(this.EventBus);\r\n productPart.AfterInit();\r\n\r\n productPart.SetPropertyValues(productInfoDto.PropertyValues);\r\n productPart.SetCustomFieldValues(productInfoDto.CustomFieldValues);\r\n productPart.InitActionDefaultExpressions();\r\n this.SetActionDependsOnValues(productPart);\r\n\r\n productPart.Price(productInfoDto.Price);\r\n productPart.Quantity(productInfoDto.Quantity);\r\n productPart.GenerateKSeqGuid();\r\n });\r\n\r\n this.Products.push(...productParts);\r\n productParts.forEach(productPart => productPart.Select());\r\n });\r\n }\r\n }\r\n\r\n private SetActionDependsOnValues(product: ProductPart) {\r\n const actionDependsOnDto = product.GetActionDependsOnDto();\r\n if (!actionDependsOnDto) {\r\n return;\r\n }\r\n\r\n this._store.GetActionDependsOnValues(actionDependsOnDto)\r\n .then(actionDependsOnValues => {\r\n product.InitActionDependsOnExpressions(actionDependsOnValues)\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message)\r\n });\r\n }\r\n\r\n private GetProductsById(ids: number[]) {\r\n return this.Products().filter(product => ids.indexOf(product.Id) > -1);\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import {OrderDto} from \"./OrderDto\";\r\nimport {ProductDto} from \"./ProductDto\";\r\n\r\nexport class CreateConfigurationDto {\r\n\tconstructor(public Order: OrderDto, public Product: ProductDto) {}\r\n}","import {OrderDto} from \"./OrderDto\";\r\nimport {AlteredProductDto} from \"./AlteredProductDto\";\r\n\r\nexport class UpdateConfigurationDto {\r\n constructor(public Order: OrderDto, public Product: AlteredProductDto, public ConfigurationId: number) {\r\n }\r\n}","import { PropertyValueDto } from \"./PropertyValueDto\";\r\n\r\nexport class OrderDto {\r\n public Level: string;\r\n constructor(public OrderEntityId: number, public OrderRecordId: number, public PropertyValues: PropertyValueDto[], public Price : number, public Quantity: number) { }\r\n}","import { ProductPartDto } from \"./ProductPartDto\";\r\nimport {CustomFieldValueDto} from './CustomFieldValueDto';\r\n\r\nexport class ProductDto {\r\n\tconstructor(public Id: number, public EntityId: number, public Parts: ProductPartDto[], public CustomFieldValues: CustomFieldValueDto[]) { }\r\n}","import {ProductPartDto} from \"./ProductPartDto\";\r\nimport {CustomFieldValueDto} from './CustomFieldValueDto';\r\n\r\nexport class AlteredProductDto {\r\n constructor(public Id: number,\r\n public EntityId: number,\r\n public NewParts: ProductPartDto[],\r\n public RemovedParts: ProductPartDto[],\r\n public AlteredParts: ProductPartDto[],\r\n public CustomFieldValues: CustomFieldValueDto[]) {\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {InexItem, InexProduct} from \"../../Models/InexItem\";\r\nimport {ProductPart} from \"../../Models/ProductPart\";\r\n\r\nimport InexConfirmationPopupTemplate from './Templates/View.html';\r\nimport {\r\n EVENTS, Types\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport { PriceList } from \"../../Models/PriceList\";\r\nimport { AlternativePriceModel } from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/AlternativePriceModel';\r\nimport { PriceGroup } from \"../../Models/PriceGroup\";\r\nimport { ProductImageViewer } from '../../../../Components/ProductImageViewer/ProductImageViewer';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\n\r\nko.templates[\"./Templates/View\"] = InexConfirmationPopupTemplate;\r\n\r\nconst TEMPLATES = {\r\n VIEW: \"./Templates/View\"\r\n};\r\n\r\nexport interface IInexConfirmationPopupOptions {\r\n Text: string;\r\n Type: Types;\r\n ProductId: number;\r\n Inclusives: InexItem[];\r\n\tSelectedProducts: ProductPart[];\r\n\tProductImageViewer: ProductImageViewer;\r\n Width?: string;\r\n Height?: string;\r\n MinHeight?: number;\r\n TextConfirm?: string;\r\n TextDecline?: string;\r\n Timeout?: number;\r\n ModalClass?: string;\r\n ImageSize: number;\r\n AlternativePriceModel: AlternativePriceModel;\r\n}\r\n\r\nexport class InexConfirmationPopup extends Event {\r\n private _labels = LABELS;\r\n private _modal: Modal;\r\n private _text: KnockoutObservable;\r\n Inclusives: KnockoutObservableArray;\r\n Exclusives: KnockoutObservableArray;\r\n SelectedProducts: ProductPart[];\r\n PriceList: KnockoutObservable;\r\n private ProductId: number;\r\n private _textConfirm: KnockoutObservable;\r\n private _textCancel: KnockoutObservable;\r\n private _options: IInexConfirmationPopupOptions;\r\n private _modalClass: string;\r\n private _imageSizeClassName: string;\r\n\r\n private productImageViewer: ProductImageViewer;\r\n private MainProduct: InexItem;\r\n private incompatibleDefaultComponents: InexItem[];\r\n private InclusivesHiddenOnInit: number[];\r\n private InclusivesCheckedOnInit: number[];\r\n private _timeout: number;\r\n\r\n constructor(options: IInexConfirmationPopupOptions) {\r\n super();\r\n this._options = options;\r\n this.Inclusives = ko.observableArray(options.Inclusives);\r\n this.Exclusives = ko.observableArray([]);\r\n this.SelectedProducts = options.SelectedProducts;\r\n\t\tthis.ProductId = options.ProductId;\r\n\t\tthis.productImageViewer = options.ProductImageViewer;\r\n this.MainProduct = this.Inclusives().find(p => p.IsMain);\r\n this._timeout = 500;\r\n\r\n this._imageSizeClassName = null;\r\n\r\n const productIds = this.Inclusives().map(p => p.Id);\r\n const mainProduct = this.MainProduct;\r\n\r\n if (mainProduct) {\r\n mainProduct.Checked(true);\r\n }\r\n\r\n this.PriceList = ko.observable(new PriceList());\r\n this.PriceList().AddAlternativePriceModel(options.AlternativePriceModel);\r\n this.PriceList().AddMainProductPriceGroup(this.MainProduct.InexInclusiveItem.Id, this.MainProduct.InexInclusiveItem.Name, this.MainProduct.InexInclusiveItem.NameTranslated, this.MainProduct.InexInclusiveItem.Price, 1);\r\n this.PriceList().Raw(true);\r\n\r\n this.incompatibleDefaultComponents = [];\r\n\r\n const defaultInclusives = this.Inclusives().filter(inclusive => inclusive.Default());\r\n\r\n defaultInclusives.forEach(p => {\r\n const notRelatedToMain = !mainProduct ||\r\n (p.DependsOn != mainProduct.Id && p.Id != mainProduct.Id && p.InexParentIds.indexOf(mainProduct.Id) == -1);\r\n if (notRelatedToMain && p.InexExclusiveItems().filter(ex => !ex.Exchange()).length > 0) {\r\n const incompatibles = defaultInclusives.filter(inclusive => {\r\n\r\n const inclusiveNotRelatedToMain = !mainProduct ||\r\n (inclusive.DependsOn != mainProduct.Id && inclusive.Id != mainProduct.Id && inclusive.InexParentIds.indexOf(mainProduct.Id) == -1);\r\n return inclusiveNotRelatedToMain && inclusive.Default() &&\r\n p.InexExclusiveItems().find(exclusive => exclusive.Id == inclusive.Id && exclusive.ParentId == inclusive.DependsOn) != null\r\n });\r\n if (incompatibles.length > 0) {\r\n incompatibles.forEach(incompatible => {\r\n if (this.incompatibleDefaultComponents.find(i => i.Id == incompatible.Id) == null) {\r\n this.incompatibleDefaultComponents.push(incompatible);\r\n }\r\n })\r\n incompatibles.push(p);\r\n }\r\n }\r\n });\r\n\r\n if (this.incompatibleDefaultComponents.length > 0) {\r\n const incompatibleDefaultComponentsids = this.incompatibleDefaultComponents.map(i => i.Id);\r\n this.Inclusives(this.Inclusives().filter(inclusive => !(incompatibleDefaultComponentsids.indexOf(inclusive.Id) != -1 && inclusive.Default())));\r\n }\r\n\r\n\r\n this.Inclusives().filter(inclusive => inclusive.Default()).forEach(p => {\r\n\r\n const siblings = this.Inclusives().filter(inclusive => inclusive.Id != p.Id &&\r\n inclusive.GroupId == p.GroupId &&\r\n inclusive.GroupName == p.GroupName &&\r\n inclusive.DependsOn == p.DependsOn &&\r\n !inclusive.Default());\r\n\r\n if (siblings.length > 0) {\r\n this.RecursiveFilterForDefault(siblings);\r\n }\r\n });\r\n\r\n this.Inclusives().forEach(p => {\r\n\r\n if (p.Default() && !p.Checked()) {\r\n this.HandleDefaultItem(p);\r\n }\r\n })\r\n\r\n this.HideNonMainInclusives();\r\n\t\tthis.HideNonParentInclusives();\r\n\r\n this.HandleExclusives();\r\n\r\n this.HandlePriceList();\r\n\r\n this.InclusivesHiddenOnInit = _.map(_.filter(this.Inclusives(), inclusive => inclusive.Hidden()), item => item.Id);\r\n this.InclusivesCheckedOnInit = _.map(_.filter(this.Inclusives(), inclusive => inclusive.Checked()), item => item.Id);\r\n\r\n this.Init();\r\n\r\n }\r\n\r\n ToggleAnimate(item, check: boolean){\r\n setTimeout(() => {\r\n item.DelayItem(check);\r\n }, this._timeout);\r\n }\r\n\r\n HandleDefaultItem(p: InexItem) {\r\n const defaultSiblings = this.Inclusives().filter(inclusive => inclusive.Id != p.Id &&\r\n inclusive.GroupId == p.GroupId &&\r\n inclusive.GroupName == p.GroupName &&\r\n inclusive.DependsOn == p.DependsOn && inclusive.Default());\r\n\r\n const parent = this.Inclusives().find(inclusive => inclusive.Id == p.DependsOn);\r\n\r\n const incompatibles = p.InexExclusiveItems().filter(ex => !ex.Exchange() &&\r\n (this.SelectedProducts.find(s => s.Id == ex.Id) ||\r\n this.Inclusives().find(inclusive => inclusive.InexInclusiveItem.Id == ex.Id && inclusive.Default())));\r\n\r\n if (defaultSiblings.length == 0 && (parent != null? parent.Checked(): true) && incompatibles.length == 0) {\r\n this.ToggleCheck(p, this);\r\n p.Hidden(true);\r\n this.ToggleAnimate(p, true);\r\n }\r\n }\r\n\r\n RecursiveFilterForDefault(itemsToFilter: InexItem[]) {\r\n itemsToFilter.forEach(item => {\r\n\r\n this.Inclusives(this.Inclusives().filter(i => i.IsMain || !(i.Id == item.Id && i.DependsOn == item.DependsOn)));\r\n\r\n if (this.Inclusives().filter(i => i.Id == item.Id).length == 0){\r\n this.Inclusives().forEach(i => {\r\n if (i.InexParentIds.indexOf(item.Id) != -1) {\r\n i.InexParentIds = i.InexParentIds.filter(id => id != item.Id);\r\n }\r\n });\r\n\r\n this.Inclusives(this.Inclusives().filter(i => i.IsMain || i.InexParentIds.length != 0));\r\n\r\n }\r\n\r\n const linkedItems = this.Inclusives().filter(inclusive =>\r\n inclusive.DependsOn == item.Id && item.Path.every(pathItem => inclusive.Path.indexOf(pathItem) != -1));\r\n\r\n if (linkedItems.length > 0) {\r\n this.RecursiveFilterForDefault(linkedItems);\r\n }\r\n });\r\n }\r\n\r\n get ImageSizeInExTextClassName(): string{\r\n return this.GetImageSizeClassName();\r\n }\r\n\r\n GetImageSizeClassName(){\r\n switch (this._options.ImageSize) {\r\n case 60:\r\n return this._imageSizeClassName = 'imageSize-60';\r\n case 70:\r\n return this._imageSizeClassName = 'imageSize-70';\r\n case 80:\r\n return this._imageSizeClassName = 'imageSize-80';\r\n case 90:\r\n return this._imageSizeClassName = 'imageSize-90';\r\n default:\r\n return this._imageSizeClassName = 'imageSize-100';\r\n }\r\n }\r\n\r\n get IsQuestion() {\r\n return this._options.Type === Types.Question;\r\n }\r\n\r\n get IsWarning() {\r\n return this._options.Type === Types.Warning;\r\n }\r\n\r\n get IsError() {\r\n return this._options.Type === Types.Error;\r\n }\r\n\r\n private Init() {\r\n this._text = ko.observable(this._options.Text);\r\n this._textConfirm = ko.observable(this._options.TextConfirm || LABELS.CONFIRM);\r\n this._textCancel = ko.observable(this._options.TextDecline || LABELS.CANCEL);\r\n this._modalClass = '';\r\n }\r\n\r\n private InitModal() {\r\n this._modal = new Modal({\r\n width: this._options.Width || '405',\r\n minHeight: this._options.Height || '200',\r\n closeButton: false,\r\n closeOnEsc: false,\r\n addClass: this._options.ModalClass === undefined ? '' : this._options.ModalClass + \"\",\r\n appendTo: 'body:first'\r\n }, false);\r\n }\r\n\r\n Show() {\r\n if (this.Exclusives().length == 0 &&\r\n this.Inclusives().filter(inclusive =>\r\n !inclusive.Checked() &&\r\n !inclusive.Hidden() &&\r\n !inclusive.IsMain).length == 0) {\r\n this.TriggerConfirmEvent();\r\n } else {\r\n this.InitModal();\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n if (this.incompatibleDefaultComponents.length > 0) {\r\n this.incompatibleDefaultComponents.sort(function (a, b) {\r\n return a.Path.length - b.Path.length;\r\n });\r\n new Notifier().Warning(LABELS.CANT_RESOLVE_CONFLICTS_FOR_NESTED_DEFAULT_PRODUCTS +\r\n this.incompatibleDefaultComponents.map(incompatible =>\r\n incompatible.InexInclusiveItem.Name).join(', '));\r\n }\r\n }\r\n\r\n GetTemplateName() {\r\n return TEMPLATES.VIEW;\r\n }\r\n\r\n OnOkClick() {\r\n this.Close();\r\n this.TriggerConfirmEvent();\r\n }\r\n\r\n TriggerConfirmEvent() {\r\n this.Trigger(EVENTS.CONFIRM_SELECTED, this.Inclusives().filter(p => p.IsMain || p.Checked()));\r\n }\r\n\r\n ToggleCheck(item: InexItem, popup: InexConfirmationPopup) {\r\n item.Checked(!item.Checked());\r\n //const relatedSelected = popup.SelectedProducts.find(s => s.Id == item.DependsOn || s.ParentGroup.Name == item.Group);\r\n\r\n const checkedProducts = _.union(popup.Inclusives().filter(p => p.Checked()), [item]);\r\n\r\n let sameGroupItems = [];\r\n //if (relatedSelected) {\r\n // sameGroupItems = popup.Inclusives().filter(p =>\r\n // (relatedSelected.ParentGroup.ParentProduct.Id == p.DependsOn ||\r\n // relatedSelected.Id == p.DependsOn) &&\r\n // p.Id != item.Id &&\r\n // !p.IsMain\r\n // );\r\n //} else {\r\n sameGroupItems = popup.Inclusives().filter(p => p.GroupId == item.GroupId &&\r\n p.GroupName == item.GroupName &&\r\n p.Id != item.Id &&\r\n item.DependsOn == p.DependsOn &&\r\n !p.IsMain\r\n );\r\n //}\r\n\r\n const relatedInclusives = popup.Inclusives().filter(p => {\r\n\r\n const inclusiveCheckedProduct = p.InexParentIds.indexOf(item.Id) != -1 ||\r\n (p.DependsOn == item.Id && checkedProducts.find(c =>\r\n p.InexParentIds.indexOf(c.Id) != -1 && c.Checked() != null));\r\n\r\n const relatedToCheckedOrEndProduct = checkedProducts.find(c => c.Id == p.DependsOn && c.Checked()) != null || p.DependsOn == popup.ProductId;\r\n\r\n const isChecked = checkedProducts.find(c =>\r\n c.Id != p.Id &&\r\n c.GroupId == p.GroupId &&\r\n c.GroupName == p.GroupName &&\r\n c.Path == p.Path &&\r\n c.DependsOn == p.DependsOn) != null;\r\n\r\n return !p.IsMain && !isChecked && inclusiveCheckedProduct && relatedToCheckedOrEndProduct;\r\n }\r\n );\r\n const dependencies = popup.Inclusives().filter(p => {\r\n return p.DependsOn == item.Id\r\n });\r\n\r\n\r\n if (!item.Checked()) {\r\n item.InexExclusiveItems().filter(ex => !ex.Exchange()).forEach(p => {\r\n const exclusives = popup.Inclusives().filter(product => product.Id == p.Id);\r\n if (exclusives.length > 0) {\r\n exclusives.forEach(exclusive => {\r\n\r\n const inclusiveCheckedProduct = exclusive.InexParentIds.indexOf(item.Id) != -1 || checkedProducts.find(c => exclusive.InexParentIds.indexOf(c.Id) != -1 && c.Checked() != null);\r\n\r\n const relatedToCheckedOrEndProduct = checkedProducts.find(c => c.Id == exclusive.DependsOn && c.Checked()) != null || exclusive.DependsOn == popup.ProductId;\r\n\r\n const sameGroupItemChecked = popup.Inclusives().find(i => i.GroupId == exclusive.GroupId &&\r\n i.GroupName == exclusive.GroupName &&\r\n i.Id != exclusive.Id &&\r\n exclusive.DependsOn == i.DependsOn &&\r\n !i.IsMain && i.Checked()\r\n ) != null;\r\n\r\n if (!popup.IsIncompatible(exclusive) &&\r\n (!exclusive.Checked() || exclusive.Hidden) &&\r\n inclusiveCheckedProduct &&\r\n relatedToCheckedOrEndProduct &&\r\n !sameGroupItemChecked) {\r\n exclusive.Hidden(false);\r\n this.ToggleAnimate(exclusive, false);\r\n }\r\n });\r\n }\r\n });\r\n\r\n dependencies.forEach(d => {\r\n d.Hidden(true);\r\n d.Checked(false);\r\n popup.ToggleAnimate(d, true);\r\n });\r\n\r\n relatedInclusives.forEach(p => {\r\n p.Hidden(true);\r\n p.Checked(false);\r\n popup.ToggleAnimate(p, true);\r\n const relatedInclusiveHiddenSiblings = popup.Inclusives().filter(product => {\r\n const inclusiveCheckedProduct = checkedProducts.find(c => product.InexParentIds.indexOf(c.Id) != -1 && c.Checked());\r\n const relatedCheckedProduct = checkedProducts.find(c => c.Id == product.DependsOn && c.Checked());\r\n\r\n const sameGroupItemChecked = popup.Inclusives().find(i => i.GroupId == product.GroupId &&\r\n i.GroupName == product.GroupName &&\r\n i.Id != product.Id &&\r\n product.DependsOn == i.DependsOn &&\r\n !i.IsMain && i.Checked()\r\n ) != null;\r\n\r\n return product.Hidden() && product.GroupId == p.GroupId &&\r\n product.GroupName == p.GroupName &&\r\n product.DependsOn == p.DependsOn &&\r\n inclusiveCheckedProduct != null &&\r\n relatedCheckedProduct != null && !sameGroupItemChecked;\r\n });\r\n relatedInclusiveHiddenSiblings.forEach(product => {\r\n if (!popup.IsIncompatible(p)) {\r\n product.Hidden(false);\r\n product.Checked(false);\r\n popup.ToggleAnimate(product, false);\r\n }\r\n });\r\n });\r\n\r\n sameGroupItems.forEach(p => {\r\n const inclusiveCheckedParent = checkedProducts.find(c =>\r\n p.InexParentIds.indexOf(c.Id) != -1 && c.Checked())\r\n\r\n if ((inclusiveCheckedParent != null ||\r\n p.InexParentIds.indexOf(popup.ProductId) != -1) && !popup.IsIncompatible(p)) {\r\n\r\n setTimeout(() => {\r\n p.Hidden(false);\r\n }, popup._timeout);\r\n\r\n p.DelayItem(false);\r\n } else {\r\n p.Hidden(true);\r\n popup.ToggleAnimate(p, true);\r\n }\r\n p.Checked(false);\r\n });\r\n\r\n } else {\r\n dependencies.forEach(d => {\r\n if (!popup.IsIncompatible(d) && (d.InexParentIds.length == 0 || checkedProducts.find(c => d.InexParentIds.indexOf(c.Id) != -1 && c.Checked()) != null)) {\r\n d.Hidden(false);\r\n popup.ToggleAnimate(d, false);\r\n if (d.Default() && !d.Checked()) {\r\n popup.HandleDefaultItem(d);\r\n if (d.Checked()) {\r\n checkedProducts.push(d);\r\n }\r\n }\r\n }\r\n });\r\n\r\n relatedInclusives.forEach(r => {\r\n if (checkedProducts.find(c => c.GroupId == r.GroupId && c.GroupName == r.GroupName && r.DependsOn == item.Id) == null && !popup.IsIncompatible(r)) {\r\n r.Checked(false);\r\n\r\n setTimeout(() => {\r\n r.Hidden(false);\r\n }, this._timeout);\r\n\r\n r.DelayItem(false);\r\n }\r\n });\r\n\r\n sameGroupItems.forEach(p => {\r\n p.Hidden(true);\r\n p.Checked(false);\r\n popup.ToggleAnimate(p, true);\r\n });\r\n item.InexExclusiveItems().filter(ex => !ex.Exchange()).forEach(p => {\r\n const exclusives = popup.Inclusives().filter(product => product.Id == p.Id && p.ParentId == product.DependsOn);\r\n if (exclusives.length > 0) {\r\n exclusives.forEach(exclusive => {\r\n if (exclusive.Checked()) {\r\n popup.ToggleCheck(exclusive, popup);\r\n }\r\n exclusive.Hidden(true);\r\n popup.ToggleAnimate(exclusive, true);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n\r\n popup.HandleExclusives();\r\n\r\n popup.HandlePriceList();\r\n\r\n const nonHiddenInclusives = _.filter(popup.Inclusives(), inclusive => !inclusive.IsMain && !inclusive.Hidden());\r\n if (_.all(nonHiddenInclusives, inclusive => !inclusive.Checked())){\r\n popup.SetInclusivesOnInit();\r\n }\r\n }\r\n\r\n private HideNonMainInclusives() {\r\n if (!this.MainProduct){\r\n return;\r\n }\r\n\r\n this.Inclusives().filter(inclusive => !inclusive.IsMain && inclusive.InexParentIds && inclusive.InexParentIds.indexOf(this.MainProduct.Id) == -1)\r\n .forEach(inclusive => {\r\n inclusive.Hidden(true);\r\n inclusive.DelayItem(true);\r\n });\r\n }\r\n\r\n\tprivate HideNonParentInclusives() {\r\n\t\tthis.Inclusives().filter(inclusive => !inclusive.IsMain && inclusive.InexInclusiveItem && inclusive.InexInclusiveItem.ParentId !== this.ProductId)\r\n\t\t\t.forEach(inclusive => {\r\n inclusive.Hidden(true);\r\n inclusive.DelayItem(true);\r\n });\r\n\t}\r\n\r\n\tprivate SetInclusivesOnInit() {\r\n _.each(this.Inclusives(), inclusive => {\r\n const isHidden = _.any(this.InclusivesHiddenOnInit, hiddenInclusiveId => hiddenInclusiveId === inclusive.Id);\r\n const isChecked = _.any(this.InclusivesCheckedOnInit, checkedInclusiveId => checkedInclusiveId === inclusive.Id)\r\n\r\n inclusive.Hidden(isHidden);\r\n inclusive.Checked(isChecked);\r\n this.ToggleAnimate(inclusive, isHidden);\r\n })\r\n }\r\n\r\n HandleExclusives() {\r\n this.Inclusives().forEach(inclusive =>\r\n inclusive.InexExclusiveItems().forEach(exclusive => {\r\n if (this.SelectedProducts.find(selected => selected.Id == exclusive.Id)) {\r\n const alreadyHandledExclusive = this.Exclusives().find(ex => exclusive.Id == ex.Id);\r\n if (alreadyHandledExclusive) {\r\n if (alreadyHandledExclusive.IncompatibleIds.indexOf(inclusive.Id) == -1) {\r\n alreadyHandledExclusive.AddIncompatibleId(inclusive.Id);\r\n }\r\n } else {\r\n exclusive.AddIncompatibleId(inclusive.Id);\r\n if (this.Exclusives().indexOf(exclusive) == -1) {\r\n this.Exclusives.push(exclusive);\r\n }\r\n }\r\n }\r\n })\r\n );\r\n\r\n _.forEach(this.Exclusives(), exclusive => {\r\n if (exclusive.Exchange()) {\r\n exclusive.Hidden(false);\r\n this.ToggleAnimate(exclusive, false);\r\n exclusive.Reason(LABELS.INCOMPATIBLE_WITH + \" \" + this.MainProduct.InexInclusiveItem.Name);\r\n } else {\r\n let checkedIncompatibles = [];\r\n exclusive.IncompatibleIds.forEach(id => {\r\n const incompatible = this.Inclusives().find(inclusive => inclusive.Id == id && inclusive.Checked());\r\n if (incompatible) {\r\n checkedIncompatibles.push(incompatible.InexInclusiveItem.NameTranslated || incompatible.InexInclusiveItem.Name);\r\n }\r\n });\r\n if (checkedIncompatibles.length > 0) {\r\n exclusive.Hidden(false);\r\n this.ToggleAnimate(exclusive, false);\r\n exclusive.Reason(LABELS.INCOMPATIBLE_WITH + \" \" + checkedIncompatibles.join(', '));\r\n } else {\r\n exclusive.Hidden(true);\r\n this.ToggleAnimate(exclusive, true);\r\n exclusive.Reason(\"\");\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n HandlePriceList() {\r\n this.PriceList().Groups([]);\r\n\r\n const totalPrice = this.Inclusives().find(inclusive => inclusive.IsMain).InexInclusiveItem.Price;\r\n this.PriceList().Total(totalPrice);\r\n\r\n const alternativeTotalPrice = this.PriceList().CalculateAlternativePrice(totalPrice);\r\n this.PriceList().AlternativeTotal(alternativeTotalPrice);\r\n\r\n this.Inclusives().filter(inclusive => inclusive.Checked() && !inclusive.IsMain).forEach(inclusive => {\r\n\r\n const product = inclusive.InexInclusiveItem;\r\n\r\n const group = new PriceGroup(product.Id, product.Name, product.Price, product.NameTranslated);\r\n\r\n const alternativeGroupPrice = this.PriceList().CalculateAlternativePrice(group.Price());\r\n group.AlternativePrice(alternativeGroupPrice);\r\n\r\n this.PriceList().Groups.push(group);\r\n });\r\n\r\n this.Exclusives().filter(exclusive => !exclusive.Hidden() || !exclusive.Exchange()).forEach(exclusive => {\r\n\r\n const group = new PriceGroup(exclusive.Id, exclusive.Name, -exclusive.Price, exclusive.NameTranslated);\r\n\r\n const alternativeGroupPrice = this.PriceList().CalculateAlternativePrice(group.Price());\r\n group.AlternativePrice(alternativeGroupPrice);\r\n\r\n this.PriceList().Groups.push(group);\r\n })\r\n\r\n this.PriceList().Groups().forEach(g => {\r\n this.PriceList().Total(this.PriceList().Total() + g.Price());\r\n this.PriceList().AlternativeTotal(this.PriceList().AlternativeTotal() + g.AlternativePrice());\r\n });\r\n }\r\n\r\n IsIncompatible(product: InexItem) {\r\n return this.Inclusives().find(p => {\r\n return p.InexExclusiveItems().filter(ex => !ex.Exchange()).find(exclusive => exclusive.Id == product.Id && product.DependsOn == exclusive.ParentId) != null && p.Checked()\r\n }) != null\r\n }\r\n\r\n OnCancelClick() {\r\n this.Close();\r\n this.Trigger(EVENTS.DISCARD_SELECTED);\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n }\r\n\r\n private AfterRender() {\r\n this._modal.Show();\r\n }\r\n}","// Module\nvar code = \"
    \\\"no :(

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam ea molestias sunt. Alias, architecto explicabo facere facilis maiores nobis reiciendis.

    \\\"no :(

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam ea molestias sunt. Alias, architecto explicabo facere facilis maiores nobis reiciendis.

    \\\"no :(

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam ea molestias sunt. Alias, architecto explicabo facere facilis maiores nobis reiciendis.

    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {ImageTableTypes} from \"../../../Components/ProductImageViewer/Enums/ImageTableTypes\";\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport { ImagePreloader } from 'Core/Common/Image';\r\n\r\nexport class InexProduct {\r\n private _imageSize: number;\r\n private _imageSizeClassName: string;\r\n private _incompatibleIds: number[];\r\n public Hidden: KnockoutObservable;\r\n public DelayItem: KnockoutObservable;\r\n public Reason: KnockoutObservable;\r\n public Exchange: KnockoutObservable;\r\n public Image: string;\r\n\r\n constructor(public Id: number,\r\n public ParentId: number,\r\n image: string,\r\n public Name: string,\r\n public NameTranslated: string,\r\n public Price: number,\r\n public Quantity: number) {\r\n\r\n this.Image = ImagePreloader.FormatImageUrl(image);\r\n this._imageSize = null;\r\n this._imageSizeClassName = null;\r\n this._incompatibleIds = [];\r\n\r\n this.Hidden = ko.observable(true);\r\n this.DelayItem = ko.observable(true);\r\n this.Exchange = ko.observable(false);\r\n this.Reason = ko.observable(\"\");\r\n }\r\n\r\n get PriceLabel(): string {\r\n const priceValue = this.Price.toFixed(2);\r\n const culturalPrice = FormatConverter.LocalizeDecimalOrInteger(priceValue);\r\n return `€ ${culturalPrice}`;\r\n }\r\n\r\n set ImageSize(value: number) {\r\n this._imageSize = value;\r\n }\r\n\r\n get ImageSizeInExClassName(): string {\r\n return this.GetImageSizeClassName();\r\n }\r\n\r\n get ImageTableType() {\r\n\t return ImageTableTypes.Product;\r\n }\r\n\r\n get IncompatibleIds(): number[] {\r\n return this._incompatibleIds;\r\n }\r\n\r\n AddIncompatibleId(incompatibleId: number) {\r\n this._incompatibleIds.push(incompatibleId);\r\n }\r\n\r\n GetImageSizeClassName() {\r\n switch (this._imageSize) {\r\n case 60:\r\n return this._imageSizeClassName = 'imageSize-60';\r\n case 70:\r\n return this._imageSizeClassName = 'imageSize-70';\r\n case 80:\r\n return this._imageSizeClassName = 'imageSize-80';\r\n case 90:\r\n return this._imageSizeClassName = 'imageSize-90';\r\n default:\r\n return this._imageSizeClassName = 'imageSize-100';\r\n }\r\n }\r\n}\r\n\r\nexport class InexItem {\r\n\r\n public Checked: KnockoutObservable;\r\n public Hidden: KnockoutObservable;\r\n public DelayItem: KnockoutObservable;\r\n public Default: KnockoutObservable;\r\n public InexExclusiveItems: KnockoutObservableArray;\r\n\r\n constructor(public Id: number, public InexInclusiveItem: InexProduct, inexExclusiveItems: InexProduct[], public GroupId: number, public GroupName: string, public Path: number[], public IsMain: boolean, public DependsOn: number, public InexParentIds: number[]) {\r\n this.Checked = ko.observable(false);\r\n this.Hidden = ko.observable(false);\r\n this.DelayItem = ko.observable(false);\r\n this.Default = ko.observable(false);\r\n this.InexExclusiveItems = ko.observableArray(inexExclusiveItems);\r\n }\r\n}","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","import { ConfigurationLevelDto } from \"./ConfigurationLevelDto\";\r\n\r\nexport class UpdateConfigurationByLevelsDto {\r\n constructor(public Levels: ConfigurationLevelDto[], public ConfigurationId: number) {\r\n }\r\n}","import {OrderDto} from \"./OrderDto\";\r\nimport {AlteredProductDto} from \"./AlteredProductDto\";\r\n\r\nexport class ConfigurationLevelDto {\r\n constructor(public Order: OrderDto, public Product: AlteredProductDto, public Level: string, public CreateLinks: boolean) {\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {RootGroup} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/RootGroup';\r\nimport {ExtraGroup} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/ExtraGroup';\r\nimport {UndefinedGroup} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/UndefinedGroup';\r\n\r\nexport class CachedLevel {\r\n RootGroups: KnockoutObservableArray;\r\n MainGroup: KnockoutObservable;\r\n ExtraGroup: KnockoutObservable;\r\n UndefinedGroup: KnockoutObservable\r\n\r\n constructor(public Level: string) {\r\n this.RootGroups = ko.observableArray([]);\r\n this.MainGroup = ko.observable(null);\r\n this.ExtraGroup = ko.observable(null);\r\n this.UndefinedGroup = ko.observable(null);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseProduct} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/BaseProduct';\r\nimport {ProductPart} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/ProductPart';\r\n\r\nimport {BreadCrumbsItem} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/BreadCrumbsItem';\r\nimport {BaseProductGroup} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/BaseProductGroup';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport Template from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Templates/UndefinedGroup.html';\r\n\r\nexport class UndefinedGroup extends BaseProductGroup {\r\n private _labels = LABELS;\r\n\r\n protected container: HTMLElement;\r\n\r\n Products: KnockoutObservableArray;\r\n BreadCrumbs: KnockoutObservableArray;\r\n\r\n constructor(protected parentProduct: BaseProduct) {\r\n\r\n super(0, LABELS.UNDEFINED, LABELS.UNDEFINED, [], false, parentProduct);\r\n\r\n this.Products = ko.observableArray([]);\r\n this.BreadCrumbs = ko.observableArray([]);\r\n\r\n this.ExtendedView(true);\r\n }\r\n\r\n get IsRoot() {\r\n return true;\r\n }\r\n\r\n get IsExtra() {\r\n return false;\r\n }\r\n\r\n get IsUndefined() {\r\n return true;\r\n }\r\n\r\n get HasProducts() {\r\n return _.any(this.Products());\r\n }\r\n\r\n AfterInit() {\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n this.container = el[0];\r\n }\r\n\r\n Dispose() {\r\n this.Products().forEach(product => product.Dispose());\r\n super.Dispose();\r\n }\r\n\r\n ToggleBody() {\r\n if (!this.Expanded()) {\r\n this.Expand();\r\n } else {\r\n this.Collapse();\r\n }\r\n }\r\n\r\n Collapse(): void {\r\n this.Expanded(false);\r\n }\r\n\r\n Expand(): void {\r\n this.Expanded(true);\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {CONFIRMATIONS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport {EventBus} from \"Core/Common/EventBus/EventBus\";\r\n\r\nimport {IProductConfigurationPageParams, ProductConfiguratorPage} from \"../ProductConfiguratorPage\";\r\n\r\nimport {NavigationStack} from '../../Stores/NavigationStack/NavigationStack';\r\nimport {NavigationItemTypes, NavigationItem} from '../../Stores/NavigationStack/NavigationItem';\r\n\r\nimport {ConfigurationPageStore} from \"./Stores/ConfigurationPageStore\";\r\nimport {ConfigurationPageVariablesStore} from \"./Stores/ConfigurationPageVariablesStore\";\r\n\r\nimport {ConfigurationPageMappings} from \"./Mappings/ConfigurationPageMappings\";\r\n\r\nimport {ProductInfoResponse} from \"./Stores/Models/ProductInfoResponse\";\r\nimport {ProductPartInfoResponse} from './Stores/Models/ProductPartInfoResponse';\r\nimport {ConfiguredProductResponse} from \"./Stores/Models/ConfiguredProductResponse\";\r\n\r\nimport {ViewModel} from \"./Models/ViewModel\";\r\nimport {BaseProductGroup} from \"./Models/BaseProductGroup\";\r\nimport {RootGroup} from \"./Models/RootGroup\";\r\nimport {ExtraGroup} from './Models/ExtraGroup';\r\nimport {ProductGroup} from \"./Models/ProductGroup\";\r\nimport {ProductPart} from \"./Models/ProductPart\";\r\nimport {BreadCrumbsItem} from \"./Models/BreadCrumbsItem\";\r\n\r\nimport {CreateConfigurationDto} from \"./Stores/Params/CreateConfigurationDto\";\r\nimport {UpdateConfigurationDto} from \"./Stores/Params/UpdateConfigurationDto\";\r\nimport {OrderDto} from \"./Stores/Params/OrderDto\";\r\nimport {ProductDto} from \"./Stores/Params/ProductDto\";\r\nimport {AlteredProductDto} from \"./Stores/Params/AlteredProductDto\";\r\n\r\nimport {\r\n ConfigurationPageEvents,\r\n GroupProductsLoadedEventArgs,\r\n SelectProductPartEventArgs, ConversionsDropdownArgs\r\n} from \"./Events/ConfigurationPageEvents\";\r\n\r\nimport {InexConfirmationPopup} from \"./Modals/InexConfirmationPopup/InexConfirmationPopup\";\r\nimport {InexItem, InexProduct} from './Models/InexItem';\r\n\r\nimport Template from './Templates/Template.html';\r\nimport {NavigationStackEvents} from '../../Stores/NavigationStack/NavigationStackEvents';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ProductPartDto} from './Stores/Params/ProductPartDto';\r\nimport {UpdateConfigurationByLevelsDto} from './Stores/Params/UpdateConfigurationByLevelsDto';\r\nimport {ConfigurationLevelDto} from './Stores/Params/ConfigurationLevelDto';\r\nimport {ConfigurationLevel} from './Models/ConfigurationLEvel';\r\nimport {ConfiguratorLevels} from 'Core/Components/Controls/ProductConfigurator/ConfiguratorLevels';\r\nimport {CachedLevel} from './Models/CachedLevel';\r\nimport {PropertyValueDto} from \"./Stores/Params/PropertyValueDto\";\r\nimport {CustomFieldValueDto} from \"./Stores/Params/CustomFieldValueDto\";\r\nimport {PcfGroup} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/PcfGroup\";\r\nimport {ProductPropertyGroup} from \"./Models/Properties/ProductPropertyGroup\";\r\nimport {PropertyControl} from \"./Models/Properties/Controls/PropertyControl\";\r\nimport {CustomFieldControl} from \"./Models/CustomFields/Controls/CustomFieldControl\";\r\nimport {ConversionDropdownResponse} from \"./Stores/Models/ConversionDropdownResponse\";\r\nimport {ConversionDropdown} from \"../../Components/ConversionDropdown/ConversionDropdown\";\r\nimport {SearchByConversionDto} from \"../../Components/ConversionDropdown/Params/SearchByConversionDto\";\r\nimport {ProductPrice} from \"./Models/ProductPrice\";\r\nimport {AlternativePriceModel} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/AlternativePriceModel\";\r\nimport {UndefinedGroup} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/UndefinedGroup\";\r\n\r\nexport interface IConfigurationPageParams extends IProductConfigurationPageParams {\r\n OrderEntityId: number;\r\n OrderId: number;\r\n ProductId: number;\r\n ConfigurationId: number;\r\n LockLevel1: boolean;\r\n HiddenPCFGROUPSIfEmpty: number[];\r\n ImageSizes: IConfigurationPageImageSizes;\r\n AlternativePriceModel: AlternativePriceModel;\r\n}\r\n\r\nexport interface IConfigurationPageImageSizes {\r\n SelectedComponent: number;\r\n Tiles: number;\r\n InEx: number;\r\n}\r\n\r\nexport interface IControlValidation {\r\n Name: string;\r\n ValidControl: boolean;\r\n ValidMassage: any;\r\n}\r\n\r\nexport interface IProductOptionsForDropdown {\r\n ProductId: number,\r\n ProductGroupId: number,\r\n ProductGroupName: string,\r\n PageNumber: number,\r\n RecordsPerPage: number,\r\n Level: string,\r\n Conversions: Array;\r\n}\r\n\r\nexport class ConfigurationPage extends ProductConfiguratorPage {\r\n _labels = LABELS;\r\n private _newConfiguration: boolean;\r\n private _createLinks: boolean;\r\n private _handlingInex: boolean;\r\n private _isActiveLevelLocked: boolean;\r\n private _store: ConfigurationPageStore;\r\n private _variableStore: ConfigurationPageVariablesStore;\r\n private _mappings: ConfigurationPageMappings;\r\n private _loadedInclusiveProducts: ProductPart[];\r\n private _exclusiveProducts: ProductPart[];\r\n private configuredProductBackUp: ConfiguredProductResponse[];\r\n private alterationModelBackUp: UpdateConfigurationByLevelsDto;\r\n\r\n private _calculatingPriceSequences: number;\r\n\r\n private _viewModel: ViewModel;\r\n\r\n constructor(params: IConfigurationPageParams, navigationStack: NavigationStack, eventBus: EventBus) {\r\n super(params, navigationStack, eventBus);\r\n\r\n this._store = new ConfigurationPageStore(this.params.OrderEntityId, this.params.ProductsEntityId, this.params.ProductId);\r\n\r\n this._variableStore = new ConfigurationPageVariablesStore();\r\n this._variableStore.AssignEventBus(this.EventBus);\r\n\r\n this._mappings = new ConfigurationPageMappings(this.params.OrderEntityId, this.params.ProductsEntityId);\r\n\r\n this._loadedInclusiveProducts = [];\r\n this._exclusiveProducts = [];\r\n\r\n this._calculatingPriceSequences = 0;\r\n\r\n this._viewModel = new ViewModel();\r\n\r\n this._createLinks = false;\r\n this._handlingInex = false;\r\n this._isActiveLevelLocked = false;\r\n\r\n if (this.RolesImplemented) {\r\n this.alterationModelBackUp = new UpdateConfigurationByLevelsDto([], this.params.ConfigurationId);\r\n }\r\n\r\n this.BindEvents();\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n ConfigureFromScratch() {\r\n this._newConfiguration = true;\r\n\r\n BlockUI.Block();\r\n\r\n return this._store.GetProductInfo(this.params.ProductId, this.params.OrderId, this.RolesImplemented ? this.ActiveConfigurationRole().Level : null)\r\n .then(productInfoDto => {\r\n this.FillViewModel(productInfoDto, false);\r\n this.navigationStack.Upsert(`${LABELS.NEW_CONFIGURATION} (${productInfoDto.NameTranslated || productInfoDto.Name})`, NavigationItemTypes.ConfigurationPage, {\r\n Id: this.params.ProductId\r\n });\r\n BlockUI.Unblock();\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n AlterConfiguration() {\r\n this._newConfiguration = false;\r\n\r\n BlockUI.Block();\r\n\r\n if (this.RolesImplemented) {\r\n const payload = {\r\n OrderRecordId: this.params.OrderId,\r\n ProductRecordId: this.params.ProductId,\r\n ConfigurationId: this.params.ConfigurationId,\r\n ActiveLevel: this.ActiveConfigurationRole().Level\r\n };\r\n\r\n return this._store.GetConfiguredProductWithLevels(payload)\r\n .then(configuredProductDto => {\r\n this.navigationStack.Upsert(`${LABELS.ALTERATION} (${configuredProductDto[0].Product.NameTranslated || configuredProductDto[0].Product.Name})`, NavigationItemTypes.ConfigurationPage, payload);\r\n\r\n this.RestoreConfiguredProductWithLevels(configuredProductDto);\r\n BlockUI.Unblock();\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(err.message);\r\n });\r\n } else {\r\n const payload = {\r\n OrderRecordId: this.params.OrderId,\r\n ProductRecordId: this.params.ProductId,\r\n ConfigurationId: this.params.ConfigurationId\r\n };\r\n return this._store.GetConfiguredProduct(payload)\r\n .then(configuredProductDto => {\r\n this.navigationStack.Upsert(`${LABELS.ALTERATION} (${configuredProductDto.Product.NameTranslated || configuredProductDto.Product.Name})`, NavigationItemTypes.ConfigurationPage, payload);\r\n\r\n this.RestoreConfiguredProduct(configuredProductDto.Product, configuredProductDto.Configuration.ProductParts);\r\n BlockUI.Unblock();\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n }\r\n\r\n Dispose() {\r\n this._viewModel.Dispose();\r\n super.Dispose();\r\n }\r\n\r\n private BindEvents() {\r\n this.HandleEvent(ConfigurationPageEvents.ReloadingConversionDropdowns)\r\n .Using(eventArgs => this.ReloadingConversionDropdowns(eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.LoadConversionDropdownsFromRemovePriceItem)\r\n .Using(eventArgs => this.LoadConversionDropdownsFromRemovePriceItem(eventArgs.Data as ProductPrice))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.GroupConversionsDropdown)\r\n .Using(eventArgs => this.SelectProductOrFillGroupByDropdown(eventArgs.Data.args._this, eventArgs.Data.args._eventArgs))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.RootGroupConversionsDropdown)\r\n .Using(eventArgs => this.SelectProductOrFillRootGroupByDropdown(eventArgs.Data.args._this, eventArgs.Data.args._eventArgs))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.RootGroupConversionsDropdownSynchronization)\r\n .Using(eventArgs => this.ConversionDropdownSynchronization(eventArgs.Data.args._this, eventArgs.Data.args._eventArgs))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.GroupConversionsDropdownSynchronization)\r\n .Using(eventArgs => this.ConversionDropdownSynchronization(eventArgs.Data.args._this, eventArgs.Data.args._eventArgs))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.NotInitRootGroupExpanded)\r\n .Using(eventArgs => {\r\n this.LoadRootGroupConversionDropdowns(eventArgs.Data)\r\n })\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.RootGroupExapanding)\r\n .Using(() => this.CloseExpandedRootGroup())\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.NotInitGroupActivated)\r\n .Using(eventArgs => {\r\n this.LoadGroupConversionDropdowns(eventArgs.Data)\r\n })\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.GroupProductsLoaded)\r\n .Using(eventArgs => this.CacheGroupProducts(eventArgs.Data.Products))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ProductPartSelected)\r\n .Using(eventArgs => this.AddToPriceList(eventArgs.Data))\r\n .Using(eventArgs => this.AddToSelected(eventArgs.Data))\r\n .Using(eventArgs => {\r\n if (eventArgs.Source.Quantity() > 1) {\r\n this.CalculateFactualPrice(eventArgs.Source);\r\n }\r\n })\r\n .Using(eventArgs => {\r\n eventArgs.Data.InitActionDefaultExpressions();\r\n this.SetActionDependsOnValues(eventArgs.Data);\r\n })\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ProductPartUnSelecting)\r\n\t .Using(eventArgs => {\r\n\t this.RemoveFromPriceList(eventArgs.Data);\r\n this.DispatchEvent(ConfigurationPageEvents.EvaluateCalculatedExpressionsOnUnselect, eventArgs.Data && eventArgs.Data);\r\n\t })\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ProductPartUnSelected)\r\n .Using(eventArgs => this.RemoveFromSelected(eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ProductPartAddingAsExtra)\r\n .Using(eventArgs => this.AddAsExtra(eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.PriceCalculationRequested)\r\n .When(eventArgs => eventArgs.Source.Selected())\r\n .Using(eventArgs => {\r\n this.CalculateFactualPrice(eventArgs.Source)\r\n })\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.QuantityChanged)\r\n .When(eventArgs => eventArgs.Source.IsMain())\r\n .Using(eventArgs => this._viewModel.UpdateAssemblyQuantity(eventArgs.Source.Quantity()))\r\n .Using(eventArgs => {\r\n this.CalculateFactualPrice(eventArgs.Source)\r\n })\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.QuantityChanged)\r\n .When(eventArgs => !eventArgs.Source.IsMain())\r\n .When(eventArgs => eventArgs.Source.Selected())\r\n .Using(eventArgs => this.AlterSelectedPart(eventArgs.Source))\r\n .Using(eventArgs => {\r\n this.CalculateFactualPrice(eventArgs.Source)\r\n })\r\n .Always()\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ProductPropertyValueChanged)\r\n .When(eventArgs => eventArgs.Source.Selected() && !eventArgs.Source.IsMain())\r\n .Using(eventArgs => this.AlterSelectedPart(eventArgs.Source))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ProductCustomFieldValueChanged)\r\n\t\t\t.When(eventArgs => eventArgs.Source.Selected() && !eventArgs.Source.IsMain())\r\n .Using(eventArgs => this.AlterSelectedPart(eventArgs.Source))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.SaveConfigurationRequested)\r\n .Using(() => this.SaveConfiguration())\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ShowMore)\r\n .Using(eventArgs => {\r\n if (eventArgs.Data.ClickedAlternativeBtn) {\r\n this.LoadGroupProducts(eventArgs.Data)\r\n } else {\r\n this.LoadGroupConversionDropdowns(eventArgs.Data)\r\n }\r\n })\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.RootShowMore)\r\n .Using(eventArgs => {\r\n if (eventArgs.Data.ClickedAlternativeBtn){\r\n this.LoadRootGroupProducts(eventArgs.Data)\r\n } else {\r\n this.LoadRootGroupConversionDropdowns(eventArgs.Data)\r\n }\r\n })\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ShowingMore)\r\n .When(eventArgs => !eventArgs.Data.IsRoot)\r\n .Using(eventArgs => this._viewModel.FindProductGroup(eventArgs.Data.Id, eventArgs.Data.Name, eventArgs.Data.ParentProduct.Id).ShowMore())\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ShowingMore)\r\n .When(eventArgs => eventArgs.Data.IsRoot)\r\n .When(eventArgs => !eventArgs.Source.ParentGroup.IsExtra)\r\n .Using(eventArgs => this._viewModel.GetRootGroupByIdAndName(eventArgs.Data.Id, eventArgs.Data.Name).ShowMore())\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.BeforeSelectingProductPartEvent)\r\n .Using(eventArgs => this.HandleInex(eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.CheckAvailabilityToToggle)\r\n .When(() => this._calculatingPriceSequences == 0)\r\n .Using(eventArgs => this.DispatchEvent(ConfigurationPageEvents.ToggleSelection, eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.CheckSaveDisabilityByAction)\r\n .Using(() => this.CheckSaveDisability())\r\n .Always();\r\n\r\n this.HandleEvent(NavigationStackEvents.CheckNavigatability)\r\n .Using(() => this.CheckNavigatability())\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.PropertyContentLoading)\r\n .Using(eventArgs => this.BlockSaving())\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.PropertyContentLoaded)\r\n .Using(eventArgs => this.UnBlockSaving())\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ZoomButtonClicked)\r\n .Using(eventArgs => this.productImageViewer.ShowOriginalImage(eventArgs.Data.Id, eventArgs.Data.ImageTableType))\r\n .Always();\r\n }\r\n\r\n private FillViewModel(productInfoDto: ProductInfoResponse, restored: boolean, readOnly: boolean = false) {\r\n const product = this._mappings.MapToProduct(productInfoDto, this.params.AlternativePriceModel, this._isActiveLevelLocked);\r\n product.AttachBackButton(this.backButton);\r\n product.AssignEventBus(this.EventBus);\r\n\r\n const rootGroups = this._mappings.MapToRootGroups(productInfoDto.PcfPartsGroups, product,\r\n (productPartGroupName, productPartGroup) => {\r\n productPartGroup.AssignEventBus(this.EventBus);\r\n productPartGroup.AfterInit();\r\n\r\n this.CheckIfGroupIsHidden(productPartGroup);\r\n });\r\n\r\n this._viewModel.RootGroups(rootGroups);\r\n\r\n this._viewModel.MainGroup(new RootGroup(0, product.Name, product.NameTranslated, [], false, product));\r\n this._viewModel.MainGroup().AssignEventBus(this.EventBus);\r\n\r\n const activeLevel = this.RolesImplemented ? this.ActiveConfigurationRole().Level : null;\r\n this._viewModel.ExtraGroup(new ExtraGroup(product, this.params, this._variableStore, readOnly, activeLevel));\r\n this._viewModel.ExtraGroup().AssignEventBus(this.EventBus);\r\n\r\n this._viewModel.UndefinedGroup(new UndefinedGroup(product));\r\n this._viewModel.UndefinedGroup().AssignEventBus(this.EventBus);\r\n\r\n this._viewModel.Product(product);\r\n\r\n const mainGroupProduct = this._mappings.MapToProductPart(productInfoDto, this._viewModel.MainGroup(),\r\n (_, productPart) => {\r\n productPart.SetInitialPropertyValues();\r\n productPart.TileImageSize = this.params.ImageSizes.Tiles;\r\n productPart.SelectedImageSize = this.params.ImageSizes.SelectedComponent;\r\n productPart.AssignVariableStore(this._variableStore);\r\n productPart.MakeSelected();\r\n productPart.AssignEventBus(this.EventBus);\r\n productPart.AfterInit();\r\n\r\n if (this._newConfiguration) {\r\n productPart.SetInitialCustomFieldValues();\r\n } else {\r\n productPart.SetCustomFieldValues(productInfoDto.CustomFieldValues);\r\n }\r\n\r\n productPart.SetPropertyValues(productInfoDto.PropertyValues);\r\n productPart.Price(productInfoDto.Price);\r\n productPart.Quantity(productInfoDto.Quantity);\r\n\r\n productPart.InitActionDefaultExpressions();\r\n this.SetActionDependsOnValues(productPart);\r\n }, null, readOnly, true);\r\n\r\n if (restored) {\r\n this._viewModel.SelectedProducts.InitMainPropertyValues(this._mappings.MapToPropertyValues(productInfoDto.PropertyValues));\r\n } else {\r\n mainGroupProduct.SetInitialPropertyValues();\r\n this._viewModel.SelectedProducts.InitMainPropertyValues(mainGroupProduct.GetPropertyValues());\r\n }\r\n\r\n this._viewModel.Product().MainProductPart = mainGroupProduct;\r\n\r\n this._viewModel.MainGroup().InitMainGroup(mainGroupProduct);\r\n this._viewModel.MainGroup().Expand();\r\n\r\n let alreadyDownloadedAlternatives = [];\r\n\r\n productInfoDto.InclusiveProducts.forEach(inclusive => {\r\n const product = this._viewModel.FindProductById(inclusive);\r\n if (product != null) {\r\n product.ParentGroup.Products().forEach(p => {\r\n if (alreadyDownloadedAlternatives.indexOf(p.Id) == -1) {\r\n alreadyDownloadedAlternatives.push(p.Id);\r\n }\r\n })\r\n }\r\n })\r\n\r\n if (this._newConfiguration && productInfoDto.InclusiveProducts.length > 0) {\r\n if (this.container != null) {\r\n BlockUI.Block({Target: this.container});\r\n } else {\r\n this._handlingInex = true;\r\n }\r\n this._store.GetInclusiveProducts({\r\n SelectedProductPartsIds: [product.Id],\r\n InclusiveProductPartsIds: productInfoDto.InclusiveProducts,\r\n ExclusiveProductPartsIds: productInfoDto.ExclusiveProducts,\r\n DefaultPartsIds: productInfoDto.Defaults,\r\n AlreadyDownloadedAlternatives: alreadyDownloadedAlternatives,\r\n GroupId: 0,\r\n GroupName: null,\r\n Level: activeLevel\r\n })\r\n .then(inclusiveProducts => {\r\n if (inclusiveProducts != null) {\r\n this.ShowNewConfigurationInitialInexConfirmationPopup(product.Id, inclusiveProducts);\r\n }\r\n this._handlingInex = false;\r\n\r\n this.UnblockUi();\r\n })\r\n .fail(err => {\r\n this._handlingInex = false;\r\n this.UnblockUi();\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n }\r\n\r\n private RestoreConfiguredProduct(product: ProductInfoResponse, parts: ProductPartInfoResponse[]) {\r\n this.RemoveKSeqFromNonExtraProducts(parts);\r\n\r\n const undefinedProductParts = this.GetUndefinedGroupProducts(product, parts);\r\n const definedProductParts = _.difference(parts, undefinedProductParts);\r\n const isReadOnly = _.any(undefinedProductParts);\r\n\r\n this.FillProductsGroups(product, definedProductParts, undefinedProductParts, isReadOnly);\r\n this.FillBasket(definedProductParts, undefinedProductParts);\r\n }\r\n\r\n private FillProductsGroups(product: ProductInfoResponse, definedParts: ProductPartInfoResponse[], undefinedParts: ProductPartInfoResponse[], readOnly: boolean = false) {\r\n this.FillViewModel(product, true, readOnly);\r\n this.RegisterSelectedProducts(definedParts, undefinedParts);\r\n this.RestoreSelectedProducts(definedParts, undefinedParts, readOnly);\r\n this.FillBreadCrumbs(definedParts);\r\n }\r\n\r\n private RestoreConfiguredProductWithLevels(configuredProductDto: ConfiguredProductResponse[]) {\r\n let product, parts, definedParts, undefinedParts;\r\n\r\n configuredProductDto.forEach(dto => dto.Configuration && this.RemoveKSeqFromNonExtraProducts(dto.Configuration.ProductParts));\r\n\r\n let activeLevelDto = configuredProductDto.find(dto => dto.Product.Level == this.ActiveConfigurationRole().Level);\r\n\r\n this._createLinks = activeLevelDto.CreateLinks;\r\n\r\n if (configuredProductDto.length > 1) {\r\n this._viewModel.compareLevels(true);\r\n }\r\n\r\n product = activeLevelDto.Product;\r\n parts = activeLevelDto.Configuration.ProductParts;\r\n\r\n this._viewModel.Level = product.Level;\r\n\r\n const hasLevel2 = configuredProductDto && _.any(configuredProductDto, configuredProduct => configuredProduct && configuredProduct.Product\r\n && configuredProduct.Product.Level === ConfiguratorLevels.Level2);\r\n this._isActiveLevelLocked = hasLevel2 && this.ActiveConfigurationRole().Level === ConfiguratorLevels.Level1 && this.params.LockLevel1;\r\n\r\n undefinedParts = this.GetUndefinedGroupProducts(product, parts);\r\n definedParts = _.difference(parts, undefinedParts);\r\n const isReadOnly = this._isActiveLevelLocked || _.any(undefinedParts);\r\n\r\n this.FillProductsGroups(product, definedParts, undefinedParts, isReadOnly);\r\n this.FillBasketByLevels(configuredProductDto);\r\n\r\n if (this._isActiveLevelLocked) {\r\n const filteredGroups = this._viewModel.RootGroups().filter(rg => rg.HasProducts());\r\n this._viewModel.RootGroups(filteredGroups);\r\n }\r\n\r\n configuredProductDto.filter(dto => dto.Product.Level != this.ActiveConfigurationRole().Level).forEach(dto => {\r\n product = dto.Product;\r\n parts = dto.Configuration.ProductParts;\r\n\r\n let vm = new CachedLevel(dto.Product.Level);\r\n\r\n const rootGroups = this._mappings.MapToRootGroups(product.PcfPartsGroups, this._viewModel.Product(),\r\n (productPartGroupName, productPartGroup) => {\r\n productPartGroup.AssignEventBus(this.EventBus);\r\n productPartGroup.AfterInit();\r\n\r\n this.CheckIfGroupIsHidden(productPartGroup);\r\n });\r\n\r\n vm.RootGroups(rootGroups);\r\n\r\n vm.MainGroup(new RootGroup(0, product.Name, product.NameTranslated, [], false, this._viewModel.Product()));\r\n vm.MainGroup().AssignEventBus(this.EventBus);\r\n\r\n const activeLevel = this.RolesImplemented ? this.ActiveConfigurationRole().Level : null;\r\n vm.ExtraGroup(new ExtraGroup(product, this.params, this._variableStore, true, activeLevel));\r\n vm.ExtraGroup().AssignEventBus(this.EventBus);\r\n\r\n vm.UndefinedGroup(new UndefinedGroup(product));\r\n vm.UndefinedGroup().AssignEventBus(this.EventBus);\r\n\r\n const mainGroupProduct = this._mappings.MapToProductPart(product, this._viewModel.MainGroup(), (_, productDetail) => {\r\n productDetail.AssignEventBus(this.EventBus);\r\n productDetail.readOnly(true);\r\n productDetail.TileImageSize = this.params.ImageSizes.Tiles;\r\n productDetail.SelectedImageSize = this.params.ImageSizes.SelectedComponent;\r\n productDetail.MakeSelected();\r\n productDetail.Price(product.Price);\r\n }, null, true, true);\r\n\r\n this._viewModel.Product().PriceList().ComparisonTotal(this._viewModel.Product().PriceList().ComparisonTotal() + product.Price);\r\n\r\n const comparisonAlternativePrice = this._viewModel.Product().PriceList().CalculateAlternativePrice(product.Price);\r\n this._viewModel.Product().PriceList().ComparisonAlternativeTotal(this._viewModel.Product().PriceList().ComparisonAlternativeTotal() + comparisonAlternativePrice);\r\n\r\n this._viewModel.Product().PriceList().ComparisonQuantity(product.Quantity);\r\n\r\n vm.MainGroup().InitMainGroup(mainGroupProduct);\r\n\r\n vm.Level = dto.Product.Level;\r\n this._viewModel.ViewModels.push(vm);\r\n\r\n this._viewModel.Product().PriceList().Levels().forEach(level => level.Active(false));\r\n this._viewModel.Product().PriceList().Levels().find(level => level.Level == vm.Level).Active(true);\r\n\r\n undefinedParts = this.GetUndefinedGroupProducts(product, parts);\r\n definedParts = _.difference(parts, undefinedParts);\r\n\r\n this.RestoreSelectedProducts(definedParts, undefinedParts, true);\r\n\r\n vm.RootGroups(vm.RootGroups().filter(rg => rg.HasProducts()));\r\n\r\n this.FillBreadCrumbs(definedParts);\r\n\r\n this._viewModel.Product().PriceList().Levels().forEach(level => level.Active(false));\r\n this._viewModel.Product().PriceList().Levels()[0].Active(true);\r\n });\r\n\r\n this._viewModel.Product().ViewModels = this._viewModel.ViewModels;\r\n }\r\n\r\n private RestoreSelectedProducts(definedProductParts: ProductPartInfoResponse[], undefinedProductParts: ProductPartInfoResponse[], readOnly?: boolean) {\r\n const allParts = definedProductParts.concat(undefinedProductParts);\r\n this.ChangeReadOnlyPrice(allParts, readOnly);\r\n\r\n const rootGroupsProducts = definedProductParts.filter(product => _.isEmpty(product.Path) && (product.PcfGroup.Id || product.PcfGroup.Name));\r\n\r\n rootGroupsProducts.forEach(productPart => {\r\n const group = this._viewModel.RootGroups().find(group => group.Id === productPart.PcfGroup.Id && group.Name === productPart.PcfGroup.Name);\r\n if (productPart.AlternativesCount == 0 || readOnly) {\r\n group.CanShowMore(false);\r\n }\r\n this.FillGroup(group, [productPart], true, readOnly);\r\n });\r\n\r\n const extraProductParts = definedProductParts.filter(product => _.isEmpty(product.Path) && !product.PcfGroup.Id && !product.PcfGroup.Name);\r\n this.FillGroup(this._viewModel.ExtraGroup(), extraProductParts, true, readOnly);\r\n\r\n const nestedProducts = definedProductParts.filter(product => !_.isEmpty(product.Path))\r\n .sort((p1, p2) => p1.Path.length > p2.Path.length ? 1 : p1.Path.length < p2.Path.length ? -1 : 0);\r\n\r\n nestedProducts.forEach(productPart => {\r\n const parentProductPath = productPart.Path.slice(0, productPart.Path.length - 1);\r\n const parentProductId = productPart.Path[productPart.Path.length - 1];\r\n\r\n let parentProduct;\r\n if (readOnly) {\r\n parentProduct = this._viewModel.FindProductById(parentProductId);\r\n } else {\r\n const parentProductFromCache = this._viewModel.CachedProducts.Find(product => _.isEqual(product.Path, parentProductPath) && _.isEqual(product.Id, parentProductId));\r\n parentProduct = this._viewModel.FindProduct(parentProductFromCache.Id, parentProductFromCache.RootGroupId, parentProductFromCache.RootGroupName, parentProductFromCache.GroupId, parentProductFromCache.GroupName, parentProductFromCache.Path, parentProductFromCache.KSeq, parentProductFromCache.KSeqGuid);\r\n\r\n }\r\n const group = parentProduct.Groups().find(group => group.Id === productPart.PcfGroup.Id && group.Name === productPart.PcfGroup.Name);\r\n this.FillGroup(group, [productPart], true, readOnly);\r\n });\r\n\r\n if (_.any(undefinedProductParts)){\r\n this.FillGroup(this._viewModel.UndefinedGroup(), undefinedProductParts, true, true);\r\n }\r\n }\r\n\r\n private FillBasket(definedProductParts: ProductPartInfoResponse[], undefinedProductParts: ProductPartInfoResponse[]) {\r\n const rootGroupsProducts = definedProductParts.filter(product => _.isEmpty(product.Path) && (product.PcfGroup.Id || product.PcfGroup.Name));\r\n const extraGroupProducts = definedProductParts.filter(product => _.isEmpty(product.Path) && !product.PcfGroup.Id && !product.PcfGroup.Name);\r\n const nestedProducts = definedProductParts.filter(product => !_.isEmpty(product.Path));\r\n\r\n const rootGroupProductPrices = this._mappings.MapRootGroupProductPartsResponseOnProductPrices(rootGroupsProducts);\r\n rootGroupProductPrices.forEach(product => this._viewModel.AddToPriceList(product, product.GroupId, product.GroupName, product.GroupNameTranslation));\r\n\r\n const extraProductPrices = this._mappings.MapRootGroupProductPartsResponseOnProductPrices(extraGroupProducts);\r\n extraProductPrices.forEach(product => {\r\n product.GroupId = this._viewModel.ExtraGroup().Id;\r\n product.GroupName = this._viewModel.ExtraGroup().Name;\r\n product.RootGroupId = this._viewModel.ExtraGroup().Id;\r\n product.RootGroupName = this._viewModel.ExtraGroup().Name;\r\n this._viewModel.AddToPriceList(product, this._viewModel.ExtraGroup().Id, this._viewModel.ExtraGroup().Name, this._viewModel.ExtraGroup().TranslatedName);\r\n });\r\n\r\n nestedProducts.forEach(product => {\r\n const rootGroupProductPrice = _.find(rootGroupProductPrices, rootGroupProductPrice =>\r\n rootGroupProductPrice.Id === product.Path[0]);\r\n const productPrice = this._mappings.MapProductPartInfoResponseOnProductPrice(product, rootGroupProductPrice.GroupId, rootGroupProductPrice.GroupName);\r\n this._viewModel.AddToPriceList(productPrice, rootGroupProductPrice.GroupId, rootGroupProductPrice.GroupName, product.PcfGroup.NameTranslation);\r\n });\r\n\r\n undefinedProductParts.forEach(product => {\r\n const groupId = this._viewModel.UndefinedGroup().Id;\r\n const groupName = this._viewModel.UndefinedGroup().Name;\r\n const groupNameTranslation = this._viewModel.UndefinedGroup().TranslatedName;\r\n\r\n const productPrice = this._mappings.MapProductPartInfoResponseOnProductPrice(product, groupId, groupName);\r\n productPrice.GroupId = groupId;\r\n productPrice.GroupName = groupName;\r\n productPrice.GroupNameTranslation = groupNameTranslation;\r\n productPrice.Path = [];\r\n\r\n this._viewModel.AddToPriceList(productPrice, groupId, groupName, groupNameTranslation);\r\n });\r\n }\r\n\r\n private FillBasketByLevels(configuredProductDto: ConfiguredProductResponse[]) {\r\n if (this._viewModel.compareLevels()) {\r\n this._viewModel.Product().PriceList().Levels(configuredProductDto.filter(dto =>\r\n dto.Product.Level != this.ActiveConfigurationRole().Level).map(dto =>\r\n new ConfigurationLevel(dto.Product.Level)));\r\n\r\n this._viewModel.Product().PriceList()._compare(true);\r\n this._viewModel.Product().PriceList().MainProductPriceGroup()._compare(true);\r\n\r\n const comparisonPrice = configuredProductDto.find(dto => dto.Product.Level != this.ActiveConfigurationRole().Level).Product.Price;\r\n const comparisonAlternativePrice = this._viewModel.Product().PriceList().CalculateAlternativePrice(comparisonPrice);\r\n\r\n this._viewModel.Product().PriceList().MainProductPriceGroup().ComparisonPrice(comparisonPrice);\r\n this._viewModel.Product().PriceList().MainProductPriceGroup().ComparisonAlternativePrice(comparisonAlternativePrice);\r\n\r\n this._viewModel.Product().PriceList().Levels().unshift(new ConfigurationLevel(this.ActiveConfigurationRole().Level));\r\n this._viewModel.Product().PriceList().Levels()[0].Active(true);\r\n }\r\n\r\n this._viewModel.Product().PriceList().MainLevel = this.ActiveConfigurationRole().Level;\r\n\r\n configuredProductDto.forEach(dto => {\r\n const mainProduct = dto.Product;\r\n const productParts = dto.Configuration.ProductParts;\r\n\r\n const undefinedProductParts = this.GetUndefinedGroupProducts(mainProduct, productParts);\r\n const definedProductParts = _.difference(productParts, undefinedProductParts);\r\n\r\n const rootGroupsProducts = definedProductParts.filter(product => _.isEmpty(product.Path) && (product.PcfGroup.Id || product.PcfGroup.Name));\r\n const extraGroupProducts = definedProductParts.filter(product => _.isEmpty(product.Path) && !product.PcfGroup.Id && !product.PcfGroup.Name);\r\n const nestedProducts = definedProductParts.filter(product => !_.isEmpty(product.Path));\r\n\r\n const rootGroupProductPrices = this._mappings.MapRootGroupProductPartsResponseOnProductPrices(rootGroupsProducts);\r\n rootGroupProductPrices.forEach(product => this._viewModel.AddToPriceListByLevel(product, product.GroupId, product.GroupName, product.GroupNameTranslation, dto.Product.Level));\r\n\r\n const extraProductPrices = this._mappings.MapRootGroupProductPartsResponseOnProductPrices(extraGroupProducts);\r\n extraProductPrices.forEach(product => {\r\n product.GroupId = this._viewModel.ExtraGroup().Id;\r\n product.GroupName = this._viewModel.ExtraGroup().Name;\r\n product.RootGroupId = this._viewModel.ExtraGroup().Id;\r\n product.RootGroupName = this._viewModel.ExtraGroup().Name;\r\n this._viewModel.AddToPriceListByLevel(product, this._viewModel.ExtraGroup().Id, this._viewModel.ExtraGroup().Name, this._viewModel.ExtraGroup().TranslatedName, dto.Product.Level)\r\n });\r\n\r\n nestedProducts.forEach(product => {\r\n const rootGroupProductPrice = _.find(rootGroupProductPrices, rootGroupProductPrice => rootGroupProductPrice.Id === product.Path[0]);\r\n const productPrice = this._mappings.MapProductPartInfoResponseOnProductPrice(product, rootGroupProductPrice.GroupId, rootGroupProductPrice.GroupName);\r\n this._viewModel.AddToPriceListByLevel(productPrice, rootGroupProductPrice.GroupId, rootGroupProductPrice.GroupName, product.PcfGroup.NameTranslation, dto.Product.Level);\r\n });\r\n\r\n undefinedProductParts.forEach(product => {\r\n const groupId = this._viewModel.UndefinedGroup().Id;\r\n const groupName = this._viewModel.UndefinedGroup().Name;\r\n const groupNameTranslation = this._viewModel.UndefinedGroup().TranslatedName;\r\n\r\n let productPrice = this._mappings.MapProductPartInfoResponseOnProductPrice(product, groupId, groupName);\r\n productPrice.GroupId = groupId;\r\n productPrice.GroupName = groupName;\r\n productPrice.GroupNameTranslation = groupNameTranslation;\r\n productPrice.Path = [];\r\n\r\n this._viewModel.AddToPriceList(productPrice, groupId, groupName, groupNameTranslation);\r\n });\r\n })\r\n }\r\n\r\n private FillBreadCrumbs(definedProductParts: ProductPartInfoResponse[]) {\r\n const rootGroupsProducts = definedProductParts.filter(product => _.isEmpty(product.Path) && (product.PcfGroup.Id || product.PcfGroup.Name));\r\n\r\n rootGroupsProducts.map(product => {\r\n const nestedProducts = definedProductParts.filter(part => product.Id === _.first(part.Path));\r\n\r\n const productBreadCrumb = new BreadCrumbsItem(product.Id, product.Name, product.NameTranslated, product.PcfGroup.Id, product.PcfGroup.Name, product.Path);\r\n const nestedProductsBreadCrumbs = nestedProducts.map(part => new BreadCrumbsItem(part.Id, part.Name, part.NameTranslated, part.PcfGroup.Id, part.PcfGroup.Name, part.Path));\r\n const breadCrumbsItems = [productBreadCrumb, ...nestedProductsBreadCrumbs];\r\n\r\n const rootGroup = this._viewModel.GetRootGroupByIdAndName(product.PcfGroup.Id, product.PcfGroup.Name);\r\n rootGroup.AddBreadCrumbs(breadCrumbsItems);\r\n });\r\n }\r\n\r\n private RegisterSelectedProducts(definedProductParts: ProductPartInfoResponse[], undefinedProductParts: ProductPartInfoResponse[],) {\r\n const rootGroupsProducts = definedProductParts.filter(product => _.isEmpty(product.Path) && (product.PcfGroup.Id || product.PcfGroup.Name));\r\n const extraGroupProducts = definedProductParts.filter(product => _.isEmpty(product.Path) && !product.PcfGroup.Id && !product.PcfGroup.Name);\r\n const nestedProducts = definedProductParts.filter(product => !_.isEmpty(product.Path));\r\n\r\n rootGroupsProducts.forEach(productPart => {\r\n const customFieldValues = this._mappings.MapToCustomFieldValues(productPart.CustomFieldValues);\r\n this._viewModel.SelectedProducts.Restore(productPart.Id, productPart.PcfGroup.Id, productPart.PcfGroup.Name, productPart.PcfGroup.Id, productPart.PcfGroup.Name, productPart.Path, productPart.KSeq, null, productPart.FactualPrice, productPart.Quantity, productPart.PropertyValues, customFieldValues);\r\n });\r\n\r\n extraGroupProducts.forEach(productPart => {\r\n const customFieldValues = this._mappings.MapToCustomFieldValues(productPart.CustomFieldValues);\r\n const groupId = this._viewModel.ExtraGroup().Id;\r\n const groupName = this._viewModel.ExtraGroup().Name;\r\n this._viewModel.SelectedProducts.Restore(productPart.Id, groupId, groupName, groupId, groupName, productPart.Path, productPart.KSeq, null, productPart.FactualPrice, productPart.Quantity, productPart.PropertyValues, customFieldValues);\r\n });\r\n\r\n nestedProducts.forEach(productPart => {\r\n const rootPart = _.find(definedProductParts, rootProductPart => !_.isEmpty(productPart.Path) && rootProductPart.Id === productPart.Path[0]);\r\n const customFieldValues = this._mappings.MapToCustomFieldValues(productPart.CustomFieldValues);\r\n this._viewModel.SelectedProducts.Restore(productPart.Id, productPart.PcfGroup.Id, productPart.PcfGroup.Name, rootPart.PcfGroup.Id, rootPart.PcfGroup.Name, productPart.Path, productPart.KSeq, null, productPart.FactualPrice, productPart.Quantity, productPart.PropertyValues, customFieldValues);\r\n });\r\n\r\n undefinedProductParts.forEach(productPart => {\r\n const customFieldValues = this._mappings.MapToCustomFieldValues(productPart.CustomFieldValues);\r\n const groupId = this._viewModel.UndefinedGroup().Id;\r\n const groupName = this._viewModel.UndefinedGroup().Name;\r\n this._viewModel.SelectedProducts.Restore(productPart.Id, groupId, groupName, groupId, groupName, productPart.Path, productPart.KSeq, null, productPart.FactualPrice, productPart.Quantity, productPart.PropertyValues, customFieldValues);\r\n });\r\n }\r\n\r\n //#region *---------==== Conversion Dropdowns ====---------*\r\n private CollapseGroup(product: ProductPart): void {\r\n if (product.HasCollapseGroup()){\r\n let group: RootGroup | ProductGroup = product.ParentGroup as RootGroup | ProductGroup;\r\n if (group instanceof ProductGroup) {\r\n if (group.Expanded()){\r\n group.Deactivate();\r\n group.ExtendedView(true);\r\n }\r\n }\r\n }\r\n }\r\n private LoadConversionDropdownsFromRemovePriceItem(product: ProductPrice){\r\n let group: RootGroup = _.find(this._viewModel.RootGroups(), (group: RootGroup)=> group.Id === product.GroupId && group.Name === product.GroupName);\r\n if (group != null){\r\n this.LoadRootGroupConversionDropdowns(group);\r\n }\r\n }\r\n private ResetConversionDropdownByProduct(product: ProductPart): void {\r\n let group: RootGroup | ProductGroup = product.ParentGroup as RootGroup | ProductGroup;\r\n\r\n if (group.ConversionDropdowns.IsInit) {\r\n group.ConversionDropdowns.Reset();\r\n group.ExtendedView(true);\r\n group.Expanded(true);\r\n }\r\n }\r\n\r\n private ToggleViewOrResetConversionDropdown(group: BaseProductGroup): void {\r\n if (group instanceof RootGroup || group instanceof ProductGroup) {\r\n\r\n let rootOrProductGroup: RootGroup | ProductGroup = group as RootGroup | ProductGroup;\r\n const conversionDropdowns = rootOrProductGroup.ConversionDropdowns;\r\n\r\n if (conversionDropdowns.IsInit) {\r\n conversionDropdowns.ResetConversions();\r\n } else {\r\n rootOrProductGroup.ToggleView();\r\n }\r\n\r\n } else {\r\n group.ToggleView();\r\n }\r\n\r\n }\r\n private ReloadingConversionDropdowns(group: RootGroup | ProductGroup) {\r\n if (group instanceof RootGroup) {\r\n if (!group.ConversionDropdowns.IsInit && group.ConversionDropdownLoaded) {\r\n this.LoadRootGroupConversionDropdowns(group);\r\n }\r\n }\r\n\r\n if (group instanceof ProductGroup) {\r\n if (!group.ConversionDropdowns.IsInit && group.ConversionDropdownLoaded) {\r\n this.LoadGroupConversionDropdowns(group);\r\n }\r\n }\r\n }\r\n\r\n private GetGroupProductByConversionDropdown(productGroup: RootGroup | ProductGroup, dto: IProductOptionsForDropdown): void {\r\n const rootOrProductGroup: RootGroup | ProductGroup = productGroup;\r\n const conversionDropdown: ConversionDropdown = rootOrProductGroup.GetConversionDropdown();\r\n let blockUIContainer: HTMLElement = rootOrProductGroup.Container;\r\n\r\n if (!rootOrProductGroup.GetActiveProduct()){\r\n\r\n }\r\n\r\n if (rootOrProductGroup instanceof ProductGroup) {\r\n blockUIContainer = rootOrProductGroup.ParentProduct.Container;\r\n }\r\n\r\n BlockUI.Block({Target: blockUIContainer});\r\n this._store.GetGroupProducts(dto)\r\n .then(groupProducts => {\r\n\r\n if(groupProducts.length == 1) {\r\n conversionDropdown.ResetMessage();\r\n\r\n let product: ProductPart = rootOrProductGroup.FindProductById(groupProducts[0].Id)\r\n if(product){\r\n product.ToggleSelection();\r\n } else {\r\n this.FillGroup(rootOrProductGroup, groupProducts);\r\n let product: ProductPart = rootOrProductGroup.FindProductById(groupProducts[0].Id)\r\n product.ToggleSelection();\r\n }\r\n\r\n productGroup.CanShowMore(true);\r\n if (rootOrProductGroup instanceof RootGroup){\r\n rootOrProductGroup.Expanded(true);\r\n rootOrProductGroup.ExtendedView(true);\r\n }\r\n\r\n BlockUI.Unblock(blockUIContainer);\r\n return;\r\n }\r\n\r\n if (!groupProducts.length){\r\n conversionDropdown.SetMessage(`${NOTIFICATIONS.RECORD_NOT_FOUND} :(`);\r\n BlockUI.Unblock(blockUIContainer);\r\n return;\r\n }\r\n\r\n if (groupProducts.length > 1){\r\n conversionDropdown.SetMessage(LABELS.IMPOSSIBLE_TO_SELECT);\r\n BlockUI.Unblock(blockUIContainer);\r\n return;\r\n }\r\n\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message);\r\n BlockUI.Unblock(blockUIContainer);\r\n });\r\n }\r\n\r\n private SelectProductOrFillGroupByDropdown(productGroup: ProductGroup, eventArgs: any): void {\r\n const dto: IProductOptionsForDropdown = {\r\n ProductId: productGroup.ParentProduct.Id,\r\n ProductGroupId: productGroup.Id,\r\n ProductGroupName: productGroup.Name,\r\n PageNumber: 0,\r\n RecordsPerPage: 0,\r\n Level: this.RolesImplemented ? this.ActiveConfigurationRole().Level : null,\r\n Conversions: eventArgs.data.Conversions\r\n };\r\n this.GetGroupProductByConversionDropdown(productGroup, dto);\r\n }\r\n\r\n\r\n private SelectProductOrFillRootGroupByDropdown(productGroup: RootGroup, eventArgs: any): void {\r\n const dto: IProductOptionsForDropdown = {\r\n ProductId: this.params.ProductId,\r\n ProductGroupId: productGroup.Id,\r\n ProductGroupName: productGroup.Name,\r\n PageNumber: 0,\r\n RecordsPerPage: 0,\r\n Level: this.RolesImplemented ? this.ActiveConfigurationRole().Level : null,\r\n Conversions: eventArgs.data.Conversions\r\n };\r\n this.GetGroupProductByConversionDropdown(productGroup, dto);\r\n }\r\n\r\n private LoadRootGroupConversionDropdowns(rootGroup: RootGroup) {\r\n this.LoadConversionDropdowns(rootGroup);\r\n }\r\n \r\n private LoadGroupConversionDropdowns(productGroup: ProductGroup) {\r\n this.LoadConversionDropdowns(productGroup);\r\n }\r\n\r\n private ConversionDropdownSynchronization(productGroup: RootGroup | ProductGroup, eventArgs: any): void {\r\n let blockUIContainer: HTMLElement = null;\r\n let rootOrProductGroup: RootGroup | ProductGroup = productGroup as RootGroup | ProductGroup;\r\n const conversionDropdown: ConversionDropdown = rootOrProductGroup.ConversionDropdowns;\r\n const isRootGroup: boolean = rootOrProductGroup instanceof RootGroup;\r\n const isProductGroup: boolean = rootOrProductGroup instanceof ProductGroup;\r\n\r\n if (isRootGroup) {\r\n blockUIContainer = productGroup.Container;\r\n }\r\n if (isProductGroup) {\r\n blockUIContainer = productGroup.ParentProduct.Container;\r\n }\r\n\r\n BlockUI.Block({Target: blockUIContainer});\r\n const paramsDto = {\r\n ProductId: isProductGroup ? rootOrProductGroup.ParentProduct.Id : this.params.ProductId,\r\n ProductGroupId: rootOrProductGroup.Id,\r\n ProductGroupName: rootOrProductGroup.Name,\r\n Level: this.RolesImplemented ? this.ActiveConfigurationRole().Level : null,\r\n SelectedConversions: eventArgs.data ? eventArgs.data.SelectedConversions : null\r\n };\r\n\r\n this._store.GetConversionDropdowns(paramsDto)\r\n .then((conversionDropdownsResponse: ConversionDropdownResponse[])=> {\r\n if (conversionDropdownsResponse.length) {\r\n conversionDropdown.ValueSynchronization(conversionDropdownsResponse)\r\n BlockUI.Unblock(blockUIContainer);\r\n }\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock(blockUIContainer);\r\n new Notifier().Failed(err.message);\r\n })\r\n }\r\n\r\n private LoadConversionDropdowns(productGroup: RootGroup | ProductGroup): void {\r\n let blockUIContainer: HTMLElement = null;\r\n let rootOrProductGroup: RootGroup | ProductGroup = productGroup as RootGroup | ProductGroup;\r\n const conversionDropdown: ConversionDropdown = rootOrProductGroup.ConversionDropdowns;\r\n const isRootGroup: boolean = rootOrProductGroup instanceof RootGroup;\r\n const isProductGroup: boolean = rootOrProductGroup instanceof ProductGroup;\r\n\r\n if (isRootGroup) {\r\n blockUIContainer = productGroup.Container;\r\n }\r\n if (isProductGroup) {\r\n blockUIContainer = productGroup.ParentProduct.Container;\r\n }\r\n\r\n if (conversionDropdown.DropDownParams.length){\r\n\r\n if (!rootOrProductGroup.Expanded()) {\r\n if (isRootGroup){\r\n rootOrProductGroup.Expand();\r\n }\r\n if (rootOrProductGroup instanceof ProductGroup){\r\n rootOrProductGroup.Activate();\r\n }\r\n }\r\n if (rootOrProductGroup.ExtendedView()) {\r\n rootOrProductGroup.ToggleView();\r\n }\r\n return;\r\n }\r\n BlockUI.Block({Target: blockUIContainer});\r\n\r\n this._store.GetConversionDropdowns({\r\n ProductId: isProductGroup ? rootOrProductGroup.ParentProduct.Id : this.params.ProductId,\r\n ProductGroupId: rootOrProductGroup.Id,\r\n ProductGroupName: rootOrProductGroup.Name,\r\n Level: this.RolesImplemented ? this.ActiveConfigurationRole().Level : null\r\n })\r\n .then((conversionDropdownsResponse: ConversionDropdownResponse[])=> {\r\n if (conversionDropdownsResponse.length) {\r\n conversionDropdown.Init(conversionDropdown.MapConversionDropdowns(conversionDropdownsResponse));\r\n rootOrProductGroup.LoadDropdown();\r\n\r\n if (!rootOrProductGroup.Expanded()) {\r\n if (isRootGroup){\r\n rootOrProductGroup.Expand();\r\n }\r\n if (rootOrProductGroup instanceof ProductGroup){\r\n rootOrProductGroup.Activate();\r\n }\r\n }\r\n if (rootOrProductGroup.ExtendedView()) {\r\n rootOrProductGroup.ToggleView();\r\n }\r\n\r\n BlockUI.Unblock(blockUIContainer);\r\n\r\n } else {\r\n if (rootOrProductGroup instanceof RootGroup) {\r\n this.LoadRootGroupProducts(rootOrProductGroup, true);\r\n }\r\n if (rootOrProductGroup instanceof ProductGroup){\r\n this.LoadGroupProducts(rootOrProductGroup, true);\r\n }\r\n }\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock(blockUIContainer);\r\n new Notifier().Failed(err.message);\r\n })\r\n\r\n }\r\n //#endregion\r\n\r\n private LoadRootGroupProducts(productGroup: RootGroup, fromConversionDropdown?: boolean) {\r\n if (!fromConversionDropdown){\r\n BlockUI.Block({Target: productGroup.Container});\r\n }\r\n\r\n this._store.GetGroupProducts({\r\n ProductId: this.params.ProductId,\r\n ProductGroupId: productGroup.Id,\r\n ProductGroupName: productGroup.Name,\r\n PageNumber: productGroup.PageNumber,\r\n RecordsPerPage: productGroup.RecordsPerPage,\r\n Level: this.RolesImplemented ? this.ActiveConfigurationRole().Level : null\r\n })\r\n .then(groupProducts => {\r\n this.FillGroup(productGroup, groupProducts);\r\n BlockUI.Unblock(productGroup.Container);\r\n if (!productGroup.Expanded()) {\r\n productGroup.Expand();\r\n }\r\n if (productGroup.ExtendedView()) {\r\n productGroup.ToggleView();\r\n }\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock(productGroup.Container);\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n private LoadGroupProducts(productGroup: ProductGroup, fromConversionDropdown?: boolean) {\r\n let blockUIContainer: HTMLElement = productGroup.ParentProduct.Container;\r\n\r\n if (!fromConversionDropdown) {\r\n BlockUI.Block({Target: this.container});\r\n }\r\n\r\n this._store.GetGroupProducts({\r\n ProductId: productGroup.ParentProduct.Id,\r\n ProductGroupId: productGroup.Id,\r\n ProductGroupName: productGroup.Name,\r\n PageNumber: productGroup.PageNumber,\r\n RecordsPerPage: productGroup.RecordsPerPage,\r\n Level: this.RolesImplemented ? this.ActiveConfigurationRole().Level : null\r\n\r\n })\r\n .then(groupProducts => {\r\n\r\n this.FillGroup(productGroup, groupProducts);\r\n (fromConversionDropdown ? BlockUI.Unblock(blockUIContainer) : this.UnblockUi());\r\n if (!productGroup.Expanded()) {\r\n productGroup.Activate();\r\n }\r\n if (productGroup.ExtendedView()) {\r\n productGroup.ToggleView();\r\n }\r\n })\r\n .fail(err => {\r\n (fromConversionDropdown ? BlockUI.Unblock(blockUIContainer) : this.UnblockUi());\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n private CacheGroupProducts(productParts: ProductPart[]) {\r\n if (productParts.length > 0) {\r\n const rootGroup = this.GetRootGroup(productParts[0]);\r\n const cachedProducts = this._mappings.MapToCachedProducts(productParts, rootGroup);\r\n this._viewModel.CachedProducts.AddRange(cachedProducts);\r\n }\r\n }\r\n\r\n private FillGroup(productGroup: BaseProductGroup, productsDto: ProductInfoResponse[], restored: boolean = false, readOnly?: boolean) {\r\n if (this._viewModel.compareLevels() && readOnly) {\r\n productGroup.AlternativesCount = 0;\r\n } else {\r\n productGroup.AlternativesCount = productsDto[0] ? productsDto[0].AlternativesCount : 0;\r\n }\r\n\r\n const newProductParts = this.MapProductParts(productsDto.filter(pp => productGroup.FindProductById(pp.Id) == null), productGroup, readOnly);\r\n productGroup.FillProducts(newProductParts, restored);\r\n }\r\n\r\n private CheckIfGroupIsHidden(productGroup: BaseProductGroup) {\r\n productGroup.IsHidden(!this._newConfiguration && !this._createLinks && _.contains(this.params.HiddenPCFGROUPSIfEmpty, productGroup.Id));\r\n }\r\n\r\n private CloseExpandedRootGroup() {\r\n const rootGroup = this._viewModel.GetRootGroup(rootGroup => rootGroup.Expanded());\r\n rootGroup && rootGroup.Collapse();\r\n }\r\n\r\n private MapProductParts(productsDto: ProductInfoResponse[], productGroup: BaseProductGroup, readOnly?: boolean) {\r\n const activeGroupProduct = productGroup ? productGroup.GetActiveProduct() : null;\r\n return this._mappings.MapToProductParts(productsDto, productGroup,\r\n (_, productPart) => {\r\n productPart.TileImageSize = this.params.ImageSizes.Tiles;\r\n productPart.SelectedImageSize = this.params.ImageSizes.SelectedComponent;\r\n\r\n if (!activeGroupProduct || activeGroupProduct.Id != productPart.Id) {\r\n\r\n productPart.AssignEventBus(this.EventBus);\r\n productPart.AssignVariableStore(this._variableStore);\r\n productPart.AfterInit();\r\n\r\n const rootGroup = this.GetRootGroup(productPart);\r\n\r\n if (!readOnly) {\r\n const isSelectedProduct = this._viewModel.SelectedProducts.IsSelectedProduct(productPart.Id, productPart.ParentGroup.Id, productPart.ParentGroup.Name, rootGroup.Id, rootGroup.Name, productPart.Path, productPart.KSeq, productPart.KSeqGuid);\r\n if (isSelectedProduct) {\r\n const restoredProduct = this._viewModel.SelectedProducts.GetRestoredProduct(productPart.Id, productPart.ParentGroup.Id, productPart.ParentGroup.Name, rootGroup.Id, rootGroup.Name, productPart.Path, productPart.KSeq, productPart.KSeqGuid);\r\n\r\n if (restoredProduct) {\r\n productPart.SetPropertyValues(restoredProduct.PropertyValues);\r\n productPart.SetCustomFieldValues(restoredProduct.CustomFieldValues);\r\n productPart.Price(restoredProduct.Price);\r\n }\r\n\r\n productPart.MakeSelected();\r\n } else {\r\n productPart.SetInitialPropertyValues();\r\n productPart.SetInitialCustomFieldValues();\r\n }\r\n\r\n productPart.InitActionDefaultExpressions();\r\n this.SetActionDependsOnValues(productPart);\r\n }\r\n }\r\n },\r\n (_, newProductGroup) => {\r\n newProductGroup.AssignEventBus(this.EventBus);\r\n newProductGroup.AfterInit();\r\n\r\n this.CheckIfGroupIsHidden(newProductGroup);\r\n }, readOnly);\r\n }\r\n\r\n private AddToPriceList(product: ProductPart) {\r\n const rootGroup = this.GetRootGroup(product);\r\n if (rootGroup != null) {\r\n const productPrice = this._mappings.MapProductPartOnProductPrice(product, rootGroup);\r\n\r\n if (this._viewModel.compareLevels()) {\r\n productPrice._compare(true);\r\n }\r\n this._viewModel.AddToPriceList(productPrice, rootGroup.Id, rootGroup.Name, rootGroup.TranslatedName);\r\n\r\n product.ParentGroup.Expand();\r\n }\r\n }\r\n\r\n private UpdatePriceInPriceList(product: ProductPart) {\r\n const rootGroup = this.GetRootGroup(product);\r\n\r\n if (rootGroup != null) {\r\n const productPrice = this._mappings.MapProductPartOnProductPrice(product, rootGroup);\r\n productPrice._priceMiscalculated(product._priceMiscalculated());\r\n this._viewModel.UpdatePriceInPriceList(productPrice, rootGroup.Id, rootGroup.Name);\r\n }\r\n }\r\n\r\n private UpdateMainProductPrice(price: number) {\r\n this._viewModel.UpdateMainProductPrice(price);\r\n }\r\n\r\n private RemoveFromPriceList(product: ProductPart) {\r\n const rootGroup = this.GetRootGroup(product);\r\n\r\n if (rootGroup != null) {\r\n this._viewModel.RemoveFromPriceList(rootGroup.Id, rootGroup.Name, product.Name, product.KSeq, product.KSeqGuid);\r\n product.UnSelect();\r\n this.CollapseGroup(product);\r\n }\r\n }\r\n\r\n private AddToSelected(product: ProductPart) {\r\n const rootGroup = this.GetRootGroup(product);\r\n if (rootGroup != null) {\r\n this._viewModel.SelectedProducts.Add(product.Id, product.ParentGroup.Id, product.ParentGroup.Name, rootGroup.Id, rootGroup.Name, product.Path, product.KSeq, product.KSeqGuid, product.Quantity(), product.Price(), product.GetPropertyValues(), product.GetCustomFieldValues());\r\n }\r\n }\r\n\r\n private RemoveFromSelected(product: ProductPart) {\r\n const rootGroup = this.GetRootGroup(product);\r\n this._viewModel.SelectedProducts.Remove(product.Id, product.ParentGroup.Id, product.ParentGroup.Name, rootGroup.Id, rootGroup.Name, product.Path, product.KSeq, product.KSeqGuid);\r\n }\r\n\r\n private AddAsExtra(product: ProductPart) {\r\n const extraGroup = this._viewModel.ExtraGroup();\r\n const productIds = [product.Id];\r\n \r\n extraGroup.AddFoundProductRecords({Ids: productIds});\r\n }\r\n\r\n private HandleInex(product: ProductPart) {\r\n\r\n this._loadedInclusiveProducts = [];\r\n this._exclusiveProducts = [];\r\n\r\n const productGroup = product.ParentGroup;\r\n\r\n let selectedProductPartsIds = [product.Id];\r\n\r\n selectedProductPartsIds = _.union(selectedProductPartsIds,\r\n this._viewModel.SelectedProducts.Selected.filter(selected =>\r\n selected.Path.length == 0 &&\r\n (selected.GroupId != product.ParentGroup.Id || selected.GroupName != product.ParentGroup.Name) &&\r\n product.ExclusiveProducts.indexOf(selected.Id) == -1).map(function (s) {\r\n return s.Id;\r\n }));\r\n\r\n const inclusives = product.InclusiveProducts.filter(inclusive => selectedProductPartsIds.indexOf(inclusive) == -1);\r\n this._exclusiveProducts = this.FindLoadedExclusiveProducts(product.Id, product.ExclusiveProducts);\r\n\r\n let alreadyDownloadedAlternatives = [];\r\n\r\n product.InclusiveProducts.forEach(inclusive => {\r\n const product = this._viewModel.FindProductById(inclusive);\r\n if (product != null) {\r\n product.ParentGroup.Products().forEach(p => {\r\n if (alreadyDownloadedAlternatives.indexOf(p.Id) == -1) {\r\n alreadyDownloadedAlternatives.push(p.Id);\r\n }\r\n })\r\n }\r\n })\r\n\r\n selectedProductPartsIds = _.union(selectedProductPartsIds, inclusives)\r\n\r\n if (inclusives.length > 0) {\r\n\r\n BlockUI.Block({Target: productGroup.Container});\r\n\r\n this._store.GetInclusiveProducts({\r\n SelectedProductPartsIds: selectedProductPartsIds,\r\n InclusiveProductPartsIds: inclusives,\r\n ExclusiveProductPartsIds: product.ExclusiveProducts,\r\n DefaultPartsIds: product.Defaults,\r\n AlreadyDownloadedAlternatives: alreadyDownloadedAlternatives,\r\n Level: this.RolesImplemented ? this.ActiveConfigurationRole().Level : null,\r\n GroupId: product.ParentGroup.Id,\r\n GroupName: product.ParentGroup.Name\r\n })\r\n .then(inclusiveProducts => {\r\n\r\n BlockUI.Unblock(productGroup.Container);\r\n\r\n this.ShowInexConfirmationPopup(product, inclusiveProducts);\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock(productGroup.Container);\r\n new Notifier().Failed(err.message);\r\n });\r\n } else {\r\n this.ShowInexConfirmationPopup(product, []);\r\n }\r\n }\r\n\r\n private ShowNewConfigurationInitialInexConfirmationPopup(productId: number, inclusiveProducts: ProductInfoResponse[]) {\r\n\r\n let inexItems = [];\r\n\r\n const product = this._viewModel.Product().MainProductPart;\r\n\r\n const inexMainProduct = new InexProduct(product.Id, 0, product.Image, product.Name, product.NameTranslated, product.Price(), product.Quantity());\r\n inexMainProduct.ImageSize = this.params.ImageSizes.InEx;\r\n\r\n inexItems.unshift(new InexItem(product.Id,\r\n inexMainProduct,\r\n [],\r\n product.ParentGroup.Id,\r\n product.ParentGroup.Name,\r\n product.Path,\r\n true,\r\n 0,\r\n []));\r\n\r\n if (inclusiveProducts != null) {\r\n inclusiveProducts.forEach(inclusive => {\r\n const inexProduct = new InexProduct(inclusive.Id, inclusive.ParentId, inclusive.Image, inclusive.Name, inclusive.NameTranslated, inclusive.Price, inclusive.Quantity);\r\n inexProduct.ImageSize = this.params.ImageSizes.InEx;\r\n\r\n const exclusiveProducts = this.FindExclusiveProductsInResponse(inclusive.Id, inclusive.PcfGroup.Id, inclusive.PcfGroup.Name, inclusive.Path, inclusive.ParentId, inclusive.ExclusiveProducts, inclusiveProducts).map(exclusive => {\r\n const exclusiveProduct = new InexProduct(exclusive.Id, exclusive.ParentId, exclusive.Image, exclusive.Name, exclusive.NameTranslated, exclusive.Price, exclusive.Quantity);\r\n exclusiveProduct.ImageSize = this.params.ImageSizes.InEx;\r\n return exclusiveProduct;\r\n });\r\n const inexItem = new InexItem(inclusive.Id,\r\n inexProduct,\r\n exclusiveProducts,\r\n inclusive.PcfGroup.Id,\r\n inclusive.PcfGroup.Name,\r\n inclusive.Path,\r\n false,\r\n inclusive.ParentId,\r\n inclusive.InexParentIds);\r\n\r\n const inexParents = inclusiveProducts.filter(i => inclusive.InexParentIds.indexOf(i.Id) != -1);\r\n\r\n if (inexParents.find(ip => ip.Defaults.indexOf(inclusive.Id) != -1) != null ||\r\n product.Defaults.indexOf(inclusive.Id) != -1) {\r\n inexItem.Default(true);\r\n }\r\n\r\n inexItems.push(inexItem);\r\n });\r\n\r\n inexItems.sort(function (a, b) {\r\n return a.Path.length - b.Path.length || a.GroupName > b.GroupName ? 1 : -1;\r\n });\r\n\r\n const confirmationDialog = new InexConfirmationPopup({\r\n Text: `The following checked inclusive products will be selected and exclusive products will be deselected. Proceed?`,\r\n Type: ConfirmationTypes.Question,\r\n Inclusives: inexItems,\r\n ProductId: productId,\r\n ProductImageViewer: this.productImageViewer,\r\n SelectedProducts: [],\r\n Width: '90vw',\r\n Height: '90vh',\r\n ModalClass: 'inExConfirmationPopupContainer',\r\n ImageSize: this.params.ImageSizes.InEx,\r\n AlternativePriceModel: this.params.AlternativePriceModel\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, (eventArgs: any) => {\r\n\r\n const checkedItems = _.values(eventArgs.data);\r\n\r\n if (inclusiveProducts != null) {\r\n inclusiveProducts.forEach(inclusiveProduct => {\r\n const checkedItem = checkedItems.find(checked => checked.Id == inclusiveProduct.Id && checked.DependsOn == inclusiveProduct.ParentId);\r\n if (checkedItem) {\r\n const productGroup = this._viewModel.FindProductGroup(inclusiveProduct.PcfGroup.Id, inclusiveProduct.PcfGroup.Name, inclusiveProduct.ParentId)\r\n\r\n this.FillGroup(productGroup, [inclusiveProduct], true);\r\n this._loadedInclusiveProducts.push(productGroup.Products()[productGroup.Products().length - 1]);\r\n\r\n }\r\n });\r\n\r\n this._loadedInclusiveProducts = this.GetSortedInclusiveProducts(this._loadedInclusiveProducts);\r\n this._loadedInclusiveProducts.filter(inclusive => {\r\n this.DispatchEvent(ConfigurationPageEvents.SelectProduct,\r\n new SelectProductPartEventArgs(inclusive.Id, inclusive.ParentGroup.Id, inclusive.ParentGroup.Name, inclusive.Path, inclusive.KSeq, inclusive.KSeqGuid));\r\n });\r\n\r\n this._viewModel.MainGroup().Expand();\r\n }\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n }\r\n\r\n private ShowInexConfirmationPopup(product: ProductPart, inclusiveProducts: ProductInfoResponse[]) {\r\n let inexItems = [];\r\n\r\n const exchangeProduct = this._viewModel.SelectedProducts.Selected.find(s => s.Path.join() == product.Path.join());\r\n\r\n if (inclusiveProducts != null) {\r\n const currentSelectedProducts = this._viewModel.SelectedProducts.Selected;\r\n inclusiveProducts = inclusiveProducts.filter(inclusive =>\r\n\r\n !currentSelectedProducts.find(selected =>\r\n (selected.Path ? selected.Path.slice(-1)[0] : this.params.ProductId) == inclusive.ParentId &&\r\n selected.Id == inclusive.Id &&\r\n selected.GroupId == inclusive.PcfGroup.Id &&\r\n selected.GroupName == inclusive.PcfGroup.Name)\r\n );\r\n\r\n inclusiveProducts.forEach(inclusive => {\r\n const inclusiveItem = new InexProduct(inclusive.Id, inclusive.ParentId, inclusive.Image, inclusive.Name, inclusive.NameTranslated, inclusive.Price, inclusive.Quantity);\r\n\r\n inclusiveItem.ImageSize = this.params.ImageSizes.InEx;\r\n\r\n const loadedExclusiveItems = this.FindLoadedExclusiveProducts(inclusive.Id, inclusive.ExclusiveProducts).map(exclusive => {\r\n\r\n const exclusiveProduct = new InexProduct(exclusive.Id, exclusive.ParentId, exclusive.Image, exclusive.Name, exclusive.NameTranslated, exclusive.Price(), exclusive.Quantity());\r\n exclusiveProduct.ImageSize = this.params.ImageSizes.InEx;\r\n\r\n if (exchangeProduct != null && exchangeProduct.Path.every(pathItem => exclusive.Path.indexOf(pathItem) != -1)) {\r\n exclusiveProduct.Exchange(true);\r\n exclusiveProduct.Hidden(false);\r\n }\r\n\r\n return exclusiveProduct;\r\n });\r\n\r\n const exclusiveItemsFromResponse = this.FindExclusiveProductsInResponse(inclusive.Id, inclusive.PcfGroup.Id, inclusive.PcfGroup.Name, inclusive.Path, inclusive.ParentId, inclusive.ExclusiveProducts, inclusiveProducts).map(exclusive => {\r\n const exclusiveProduct = new InexProduct(exclusive.Id, exclusive.ParentId, exclusive.Image, exclusive.Name, exclusive.NameTranslated, exclusive.Price, exclusive.Quantity);\r\n\r\n if (exchangeProduct != null && exchangeProduct.Path.every(pathItem => exclusive.Path.indexOf(pathItem) != -1)) {\r\n exclusiveProduct.Exchange(true);\r\n exclusiveProduct.Hidden(false);\r\n }\r\n\r\n exclusiveProduct.ImageSize = this.params.ImageSizes.InEx;\r\n return exclusiveProduct;\r\n });\r\n\r\n const currentExclusives = _.union(loadedExclusiveItems, exclusiveItemsFromResponse);\r\n\r\n const inexItem = new InexItem(inclusive.Id,\r\n inclusiveItem,\r\n currentExclusives,\r\n inclusive.PcfGroup.Id,\r\n inclusive.PcfGroup.Name,\r\n inclusive.Path,\r\n false,\r\n inclusive.ParentId,\r\n inclusive.InexParentIds);\r\n\r\n const inexParents = inclusiveProducts.filter(i => inclusive.InexParentIds.indexOf(i.Id) != -1);\r\n\r\n if (inexParents.find(ip => ip.Defaults.indexOf(inclusive.Id) != -1) != null ||\r\n product.Defaults.indexOf(inclusive.Id) != -1) {\r\n inexItem.Default(true);\r\n }\r\n\r\n inexItems.push(inexItem);\r\n });\r\n }\r\n\r\n inexItems.sort(function (a, b) {\r\n return (a.Path.length - b.Path.length);\r\n });\r\n\r\n const productExclusives = _.union(this.FindLoadedExclusiveProducts(product.Id, product.ExclusiveProducts));\r\n\r\n const inclusiveProduct = new InexProduct(product.Id, product.ParentGroup.ParentProduct.Id, product.Image, product.Name, product.NameTranslated, product.Price(), product.Quantity());\r\n inclusiveProduct.ImageSize = this.params.ImageSizes.InEx;\r\n\r\n const exclusiveProducts = productExclusives.map(exclusive => {\r\n\r\n const exclusiveProduct = new InexProduct(exclusive.Id, exclusive.ParentGroup.ParentProduct.Id, exclusive.Image, exclusive.Name, exclusive.NameTranslated, exclusive.Price(), exclusive.Quantity());\r\n exclusiveProduct.ImageSize = this.params.ImageSizes.InEx;\r\n\r\n if (exchangeProduct != null && exchangeProduct.Path.every(pathItem => exclusive.Path.indexOf(pathItem) != -1)) {\r\n exclusiveProduct.Exchange(true);\r\n exclusiveProduct.Hidden(false);\r\n }\r\n\r\n return exclusiveProduct;\r\n });\r\n inexItems.unshift(new InexItem(\r\n product.Id,\r\n inclusiveProduct,\r\n exclusiveProducts,\r\n product.ParentGroup.Id,\r\n product.ParentGroup.Name,\r\n product.Path,\r\n true,\r\n product.ParentGroup.ParentProduct.Id,\r\n []));\r\n\r\n if (inexItems.length == 1 && productExclusives.length == 0) {\r\n this.DispatchEvent(ConfigurationPageEvents.SelectProduct,\r\n new SelectProductPartEventArgs(product.Id, product.ParentGroup.Id, product.ParentGroup.Name, product.Path, product.KSeq, product.KSeqGuid));\r\n\r\n this.ResetConversionDropdownByProduct(product);\r\n } else {\r\n\r\n let selectedProducts = [];\r\n this._viewModel.SelectedProducts.Selected.forEach(selected => {\r\n const incopatibleSelected = this._viewModel.FindProduct(selected.Id, selected.RootGroupId, selected.RootGroupName, selected.GroupId, selected.GroupName, selected.Path, selected.KSeq, selected.KSeqGuid);\r\n selectedProducts.push(incopatibleSelected);\r\n\r\n inexItems.filter(ii => selected.GroupId == ii.GroupId && selected.GroupName == ii.GroupName && selected.Path == ii.Path).forEach(ii => {\r\n const exclusiveProduct = new InexProduct(incopatibleSelected.Id,\r\n incopatibleSelected.ParentGroup.ParentProduct.Id,\r\n incopatibleSelected.Image,\r\n incopatibleSelected.Name,\r\n incopatibleSelected.NameTranslated,\r\n incopatibleSelected.Price(),\r\n incopatibleSelected.Quantity());\r\n exclusiveProduct.ImageSize = this.params.ImageSizes.InEx;\r\n\r\n if (exchangeProduct != null && exchangeProduct.Path.every(pathItem => incopatibleSelected.Path.indexOf(pathItem) != -1)) {\r\n exclusiveProduct.Exchange(true);\r\n exclusiveProduct.Hidden(false);\r\n }\r\n\r\n ii.InexExclusiveItems.push(exclusiveProduct);\r\n });\r\n });\r\n\r\n const confirmationDialog = new InexConfirmationPopup({\r\n Text: `The following checked inclusive products will be selected and exclusive products will be deselected. Proceed?`,\r\n Type: ConfirmationTypes.Question,\r\n ProductId: this.params.ProductId,\r\n ProductImageViewer: this.productImageViewer,\r\n Inclusives: inexItems,\r\n SelectedProducts: selectedProducts,\r\n Width: '90vw',\r\n Height: '90vh',\r\n ModalClass: 'inExConfirmationPopupContainer',\r\n ImageSize: this.params.ImageSizes.InEx,\r\n AlternativePriceModel: this.params.AlternativePriceModel\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, (eventArgs: any) => {\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.SelectProduct,\r\n new SelectProductPartEventArgs(product.Id, product.ParentGroup.Id, product.ParentGroup.Name, product.Path, product.KSeq, product.KSeqGuid));\r\n\r\n this.ResetConversionDropdownByProduct(product);\r\n\r\n const checkedItems = _.values(eventArgs.data).filter(checked => !checked.IsMain);\r\n\r\n if (checkedItems != null) {\r\n checkedItems.forEach(checkedItem => {\r\n const inclusiveProduct = inclusiveProducts.find(inclusive => inclusive.Id == checkedItem.Id && inclusive.ParentId == checkedItem.DependsOn && inclusive.Path == checkedItem.Path);\r\n if (inclusiveProduct) {\r\n const productGroup = this._viewModel.FindProductGroup(inclusiveProduct.PcfGroup.Id, inclusiveProduct.PcfGroup.Name, inclusiveProduct.ParentId);\r\n if (productGroup) {\r\n this.FillGroup(productGroup, [inclusiveProduct], true);\r\n this._loadedInclusiveProducts.push(productGroup.Products().find(p => p.Id == inclusiveProduct.Id));\r\n }\r\n }\r\n });\r\n }\r\n\r\n this._loadedInclusiveProducts = this.GetSortedInclusiveProducts(this._loadedInclusiveProducts);\r\n this._loadedInclusiveProducts.filter(inclusive => {\r\n const checkedItem = checkedItems.find(checked => checked.Id == inclusive.Id && checked.DependsOn == inclusive.ParentGroup.ParentProduct.Id);\r\n if (checkedItem) {\r\n\r\n const currentExclusiveProducts = this.FindLoadedExclusiveProducts(inclusive.Id, checkedItem.InexExclusiveItems().map(exclusive => exclusive.Id)).filter(exclusive =>\r\n this._viewModel.SelectedProducts.Selected.find(selected => selected.GroupId == exclusive.ParentGroup.Id && selected.GroupName == exclusive.ParentGroup.Name && selected.Path == exclusive.Path));\r\n\r\n this._exclusiveProducts = _.union(this._exclusiveProducts, currentExclusiveProducts);\r\n\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.SelectProduct,\r\n new SelectProductPartEventArgs(inclusive.Id, inclusive.ParentGroup.Id, inclusive.ParentGroup.Name, inclusive.Path, inclusive.KSeq, inclusive.KSeqGuid));\r\n\r\n this.ResetConversionDropdownByProduct(inclusive);\r\n }\r\n });\r\n\r\n this._exclusiveProducts.forEach(exclusive => {\r\n this.DispatchEvent(ConfigurationPageEvents.UnselectProduct,\r\n new SelectProductPartEventArgs(exclusive.Id, exclusive.ParentGroup.Id, exclusive.ParentGroup.Name, exclusive.Path, exclusive.KSeq, exclusive.KSeqGuid));\r\n\r\n if (exclusive.ParentGroup instanceof RootGroup || exclusive.ParentGroup instanceof ProductGroup) {\r\n this.ReloadingConversionDropdowns(exclusive.ParentGroup);\r\n }\r\n });\r\n\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, (eventArgs: any) => {\r\n product.ParentGroup.Products(product.ParentGroup.Products().sort(function (a, b) {\r\n return (a.Id - b.Id);\r\n }));\r\n\r\n this.ToggleViewOrResetConversionDropdown(product.ParentGroup);\r\n\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n }\r\n\r\n private FindInclusiveProducts(product: ProductPart) {\r\n let inclusives = [];\r\n\r\n product.InclusiveProducts.filter(id => this._loadedInclusiveProducts.map(p => p.Id).indexOf(id) == -1).forEach(id => {\r\n const loadedProduct = this._viewModel.FindProductById(id);\r\n const selected = this._viewModel.SelectedProducts.Selected.find(s => s.Id == id);\r\n\r\n if (loadedProduct) {\r\n if (selected) {\r\n if (!loadedProduct.ParentGroup.IsRoot) {\r\n const rootGroup = this.GetRootGroup(loadedProduct);\r\n loadedProduct.ParentGroup.ParentProduct.ParentGroup.Products().forEach(p => {\r\n const nestedProduct = p.FindNestedProduct(loadedProduct.Id, rootGroup.Id, rootGroup.Name, loadedProduct.ParentGroup.Id, loadedProduct.ParentGroup.Name, p.Path.concat([p.Id]), loadedProduct.KSeq, loadedProduct.KSeqGuid);\r\n if (nestedProduct == null) {\r\n if (inclusives.indexOf(id) == -1) {\r\n inclusives.push(id);\r\n }\r\n } else if (nestedProduct.Path != selected.Path) {\r\n this._loadedInclusiveProducts.push(nestedProduct);\r\n inclusives.push(nestedProduct.Id);\r\n if (product.InclusiveProducts.length > 0) {\r\n const currentInclusives = this.FindInclusiveProducts(loadedProduct);\r\n\r\n currentInclusives.forEach(id => {\r\n if (inclusives.indexOf(id) == -1) {\r\n inclusives.push(id)\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n\r\n this._loadedInclusiveProducts.push(loadedProduct);\r\n inclusives.push(id);\r\n\r\n if (product.InclusiveProducts.length > 0) {\r\n const currentInclusives = this.FindInclusiveProducts(loadedProduct);\r\n\r\n currentInclusives.forEach(id => {\r\n if (inclusives.indexOf(id) == -1) {\r\n inclusives.push(id)\r\n }\r\n });\r\n }\r\n }\r\n } else {\r\n inclusives.push(id);\r\n }\r\n });\r\n\r\n return inclusives;\r\n }\r\n\r\n private GetSortedInclusiveProducts(inclusiveProducts: ProductPart[]){\r\n return _.sortBy(inclusiveProducts, inclusive => {\r\n const rootGroup = this.GetRootGroup(inclusive);\r\n return rootGroup && (rootGroup.TranslatedName || rootGroup.Name);\r\n });\r\n }\r\n\r\n private FindExclusiveProductsInResponse(Id: number, GroupId: number, GroupName: string, Path: number[], ParentId: number, exclusives: number[], inclusiveProducts: ProductInfoResponse[]) {\r\n return inclusiveProducts.filter(p => {\r\n const sameGroupItem = p.Id != Id && p.PcfGroup.Id == GroupId && p.PcfGroup.Name == GroupName && p.Path == Path && p.ParentId == ParentId;\r\n return exclusives.indexOf(p.Id) != -1 || p.ExclusiveProducts.indexOf(Id) != -1 || sameGroupItem;\r\n });\r\n }\r\n\r\n private FindLoadedExclusiveProducts(id: number, exclusives: number[]) {\r\n\r\n const productIds = _.union(exclusives, this._viewModel.FindSelectedProductsIncopatibleWith(id));\r\n let products = [];\r\n\r\n if (productIds.length > 0) {\r\n productIds.forEach(id => {\r\n const selected = this._viewModel.SelectedProducts.Selected.find(s => s.Id == id);\r\n if (selected) {\r\n products.push(this._viewModel.FindProduct(selected.Id, selected.RootGroupId, selected.RootGroupName, selected.GroupId, selected.GroupName, selected.Path, selected.KSeq, selected.KSeqGuid));\r\n } else {\r\n const inclusive = this._loadedInclusiveProducts.find(i => i.Id == id);\r\n if (inclusive) {\r\n products.push(inclusive);\r\n }\r\n }\r\n });\r\n }\r\n return products;\r\n }\r\n\r\n private CalculateFactualPrice(product: ProductPart) {\r\n let selected = null;\r\n this.BlockSaving();\r\n\r\n const propertyValuesDto = this._mappings.MapToPropertyValuesDto(product.GetPropertyValuesForPrice());\r\n const customFieldValuesDto = this._mappings.MapToCustomFieldValuesDto(product.GetCustomFieldValuesForPrice())\r\n\r\n this._calculatingPriceSequences++;\r\n\r\n this._store.GetFactualPrice(product.IsMain() ? 0 : product.Id, product.Quantity(), propertyValuesDto, customFieldValuesDto)\r\n .then(factualPrice => {\r\n if (factualPrice != null) {\r\n product._priceMiscalculated(false);\r\n product.Price(factualPrice);\r\n if (product.IsMain()) {\r\n this.UpdateMainProductPrice(factualPrice);\r\n } else {\r\n this.UpdatePriceInPriceList(product);\r\n }\r\n } else {\r\n product.Price(0);\r\n product._priceMiscalculated(true);\r\n if (product.IsMain()) {\r\n this.UpdateMainProductPrice(null);\r\n } else {\r\n this.UpdatePriceInPriceList(product);\r\n }\r\n }\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message)\r\n })\r\n .always(err => {\r\n this._calculatingPriceSequences--;\r\n if (selected != null) {\r\n selected.Price = product.Price();\r\n }\r\n this.UnBlockSaving();\r\n });\r\n }\r\n\r\n private SetActionDependsOnValues(product: ProductPart) {\r\n const actionDependsOnDto = product.GetActionDependsOnDto();\r\n if (!actionDependsOnDto) {\r\n return;\r\n }\r\n\r\n this._store.GetActionDependsOnValues(actionDependsOnDto)\r\n .then(actionDependsOnValues => {\r\n product.InitActionDependsOnExpressions(actionDependsOnValues)\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message)\r\n });\r\n }\r\n\r\n private AlterSelectedPart(product: ProductPart) {\r\n const priceListSelectedLevel = this._viewModel.Product().PriceList().ActiveLevel;\r\n const isPartFromSelectedLevel = !priceListSelectedLevel || priceListSelectedLevel === product.Level;\r\n\r\n if (!isPartFromSelectedLevel)\r\n {\r\n return;\r\n }\r\n\r\n const rootGroup = this.GetRootGroup(product);\r\n\r\n const selected = this._viewModel.SelectedProducts.GetSelectedProduct(product.Id, product.ParentGroup.Id, product.ParentGroup.Name, rootGroup.Id, rootGroup.Name, product.Path, product.KSeq, product.KSeqGuid);\r\n selected.Price = +product.Price();\r\n selected.Quantity = +product.Quantity();\r\n selected.PropertyValues = product.GetPropertyValues();\r\n selected.CustomFieldValues = product.GetCustomFieldValues();\r\n }\r\n\r\n private GetRootGroup(product: ProductPart) {\r\n if (product.ParentGroup.IsExtra || product.ParentGroup.IsUndefined) {\r\n return product.ParentGroup;\r\n }\r\n\r\n return _.find(this._viewModel.RootGroups(), rootGroup => product.RootGroupIs(rootGroup));\r\n }\r\n\r\n private GetUndefinedGroupProducts(product: ProductInfoResponse, parts: ProductPartInfoResponse[]) {\r\n let undefinedGroupProducts = [];\r\n\r\n const rootGroupsProducts = parts.filter(product => _.isEmpty(product.Path) && (product.PcfGroup.Id || product.PcfGroup.Name));\r\n\r\n rootGroupsProducts.forEach(rootProduct => {\r\n const groupExists = _.any(product.PcfPartsGroups, group => rootProduct.PcfGroup.Id === group.Id && rootProduct.PcfGroup.Name === group.Name);\r\n if (!groupExists) {\r\n undefinedGroupProducts.push(rootProduct);\r\n }\r\n });\r\n\r\n const nestedProducts = parts.filter(product => !_.isEmpty(product.Path))\r\n .sort((p1, p2) => p1.Path.length > p2.Path.length ? 1 : p1.Path.length < p2.Path.length ? -1 : 0);\r\n\r\n nestedProducts.forEach(productPart => {\r\n const parentProductPath = productPart.Path.slice(0, productPart.Path.length - 1);\r\n const parentProductId = productPart.Path[productPart.Path.length - 1];\r\n\r\n const parentProduct = _.find(parts, part => part.Id === parentProductId && _.isEqual(part.Path, parentProductPath));\r\n if (!parentProduct || _.contains(undefinedGroupProducts, parentProduct)) {\r\n undefinedGroupProducts.push(productPart);\r\n return;\r\n }\r\n\r\n const groupExists = _.any(parentProduct.PcfPartsGroups, group => group.Id === productPart.PcfGroup.Id && group.Name === productPart.PcfGroup.Name);\r\n if (!groupExists) {\r\n undefinedGroupProducts.push(productPart);\r\n }\r\n });\r\n\r\n return undefinedGroupProducts;\r\n }\r\n\r\n private ChangeReadOnlyPrice(productParts: ProductPartInfoResponse[], readOnly: boolean) {\r\n if (readOnly) {\r\n productParts.forEach(part => part.Price = part.FactualPrice);\r\n }\r\n }\r\n\r\n private RemoveKSeqFromNonExtraProducts(parts: ProductPartInfoResponse[]) {\r\n const extraGroupParts = parts.filter(product => _.isEmpty(product.Path) && !product.PcfGroup.Id && !product.PcfGroup.Name);\r\n const nonExtraGroupParts = _.difference(parts, extraGroupParts);\r\n\r\n nonExtraGroupParts.forEach(part => part.KSeq = 0);\r\n }\r\n\r\n private SaveConfiguration() {\r\n\r\n if (!this.CheckModelValidation()){\r\n new Notifier().Warning(NOTIFICATIONS.PLEASE_FILL_ALL_DATA);\r\n return;\r\n }\r\n\r\n const orderDto = this.GetOrderDto();\r\n\r\n if (this.params.ConfigurationId) {\r\n if (this.RolesImplemented) {\r\n this.UpdateConfigurationByLevels(orderDto);\r\n } else {\r\n this.UpdateConfiguration(orderDto);\r\n }\r\n } else {\r\n this.CreateConfiguration(orderDto);\r\n }\r\n }\r\n\r\n private CreateConfiguration(orderDto: OrderDto) {\r\n BlockUI.Block({Target: this.container});\r\n\r\n const partsDto = this._viewModel.SelectedProducts.New.map(selectedProduct => {\r\n const productPart = this._viewModel.FindProduct(selectedProduct.Id, selectedProduct.RootGroupId, selectedProduct.RootGroupName, selectedProduct.GroupId, selectedProduct.GroupName, selectedProduct.Path, selectedProduct.KSeq, selectedProduct.KSeqGuid);\r\n const productPartDto = this._mappings.MapToProductPartDto(selectedProduct);\r\n\r\n productPartDto.Price = productPart.Price();\r\n productPartDto.Quantity = +productPart.Quantity();\r\n productPartDto.PropertyValues = this._mappings.MapToPropertyValuesDto(productPart.GetPropertyValues());\r\n productPartDto.CustomFieldValues = this._mappings.MapToCustomFieldValuesDto(productPart.GetCustomFieldValues());\r\n\r\n if (productPart.ParentGroup === this._viewModel.ExtraGroup()) {\r\n productPartDto.PcfGroup = new PcfGroup(0, null, null, []);\r\n } else {\r\n productPartDto.PcfGroup.NameTranslations = productPart.ParentGroup && productPart.ParentGroup.Translations || [];\r\n }\r\n\r\n return productPartDto;\r\n });\r\n\r\n const customFieldValues = this._mappings.MapToCustomFieldValuesDto(this._viewModel.Product().MainProductPart.GetCustomFieldValues());\r\n const productDto = new ProductDto(this.params.ProductId, this.params.ProductsEntityId, partsDto, customFieldValues);\r\n\r\n const configurationDto = new CreateConfigurationDto(orderDto, productDto);\r\n\r\n this._store.CreateProductConfiguration(configurationDto)\r\n .then(() => {\r\n this.DispatchEvent(ConfigurationPageEvents.ConfigurationSaved);\r\n this.UnblockUi();\r\n })\r\n .fail(err => {\r\n this.UnblockUi();\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n private UpdateConfiguration(orderDto: OrderDto) {\r\n BlockUI.Block({Target: this.container});\r\n\r\n const alteredProductDto = this.GetAlteredProductDto();\r\n\r\n const configurationDto = new UpdateConfigurationDto(orderDto, alteredProductDto, this.params.ConfigurationId);\r\n this._store.UpdateProductConfiguration(configurationDto)\r\n .then(() => {\r\n this.DispatchEvent(ConfigurationPageEvents.ConfigurationSaved);\r\n this.UnblockUi();\r\n })\r\n .fail(err => {\r\n this.UnblockUi();\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n CheckControlsValidation(products: ProductPart[]): IControlValidation[] {\r\n let controlsValidation: IControlValidation[] = [];\r\n _.each(products, (product: ProductPart) => {\r\n\r\n if (product.Selected()) {\r\n _.each(product.CustomFieldsGroup.CustomFieldsControls, (customFieldsControl: CustomFieldControl) => {\r\n customFieldsControl.CheckValidControl();\r\n let controlValidation: IControlValidation = {\r\n Name: customFieldsControl.Name,\r\n ValidControl: customFieldsControl.IsValidControl || customFieldsControl.SkipValidationOnSave,\r\n ValidMassage: customFieldsControl.ValidMessage\r\n }\r\n controlsValidation.push(controlValidation);\r\n });\r\n _.each(product.PropertyGroups, (propertyGroup:ProductPropertyGroup ) => {\r\n _.each(propertyGroup.PropertyControls, (propertyControl: PropertyControl) =>{\r\n propertyControl.CheckValidControl();\r\n let controlValidation: IControlValidation = {\r\n Name: propertyControl.Name,\r\n ValidControl: propertyControl.IsValidControl || propertyControl.SkipValidationOnSave,\r\n ValidMassage: propertyControl.ValidMessage\r\n }\r\n controlsValidation.push(controlValidation);\r\n })\r\n });\r\n\r\n if (product.Groups().length){\r\n _.each(product.Groups(), (productGroup: ProductGroup)=> {\r\n _.each(this.CheckControlsValidation(productGroup.Products()), (controlValidation: IControlValidation) => controlsValidation.push(controlValidation));\r\n });\r\n }\r\n }\r\n\r\n })\r\n return controlsValidation;\r\n }\r\n private CheckModelValidation(): boolean {\r\n const mainGroup = this._viewModel.MainGroup(),\r\n rootGroups = this._viewModel.RootGroups(),\r\n extraGroup = this._viewModel.ExtraGroup();\r\n\r\n let controls = [];\r\n\r\n controls.push( this.CheckControlsValidation(mainGroup.Products()) );\r\n\r\n _.each(rootGroups, (rootGroup: RootGroup)=> {\r\n controls.push( this.CheckControlsValidation(rootGroup.Products()) );\r\n })\r\n\r\n controls.push( this.CheckControlsValidation(extraGroup.Products()) );\r\n\r\n return _.every(_.flatten(controls), (control: IControlValidation) => control.ValidControl);\r\n }\r\n\r\n private UpdateConfigurationByLevels(orderDto: OrderDto) {\r\n BlockUI.Block({Target: this.container});\r\n\r\n if (this._viewModel.compareLevels()) {\r\n this._viewModel.Product().PriceList().Levels().forEach(level => level.Active(false));\r\n this._viewModel.Product().PriceList().Levels()[0].Active(true);\r\n }\r\n\r\n orderDto.Level = this.GetActiveConfigurationRole().Level;\r\n\r\n const alteredProductDto = this.GetAlteredProductDto();\r\n\r\n const configurationLevel = new ConfigurationLevelDto(orderDto, alteredProductDto, this.GetActiveConfigurationRole().Level, this._createLinks);\r\n\r\n this.alterationModelBackUp.Levels.push(configurationLevel);\r\n this._store.UpdateProductConfigurationByLevels(this.alterationModelBackUp)\r\n .then(() => {\r\n this.DispatchEvent(ConfigurationPageEvents.ConfigurationSaved);\r\n this.UnblockUi();\r\n })\r\n .fail(err => {\r\n this.UnblockUi();\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n private CheckNavigatability() {\r\n\r\n const selectedProducts = this._viewModel.SelectedProducts;\r\n\r\n const mainProductProperties = this._viewModel.Product().MainProductPart.GetPropertyValues().sort((a, b) => a.Id - b.Id);\r\n const initialMainProperties = selectedProducts.InitialMainPropertyValues.sort((a, b) => a.Id - b.Id);\r\n\r\n const allPropertiesContentLoaded = this._viewModel.Product().MainProductPart.PropertyGroups.every(pg => pg.AllContentLoaded());\r\n\r\n if (selectedProducts.Altered.length > 0 ||\r\n selectedProducts.New.length > 0 ||\r\n selectedProducts.Removed.length > 0 ||\r\n (allPropertiesContentLoaded && !_.isEqual(mainProductProperties, initialMainProperties))) {\r\n this.backButton.NavigateConfirmation = CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST;\r\n }\r\n this.DispatchEvent(NavigationStackEvents.Checked);\r\n }\r\n\r\n private CheckSaveDisability() {\r\n const priceListSelectedLevel = this._viewModel.Product().PriceList().ActiveLevel;\r\n const activeLevel = this.RolesImplemented ? this.ActiveConfigurationRole().Level : null;\r\n const isActiveLevelSelected = !priceListSelectedLevel || priceListSelectedLevel === activeLevel;\r\n\r\n if (!isActiveLevelSelected)\r\n {\r\n return;\r\n }\r\n\r\n const allSelectedProducts = this._viewModel.FindAllSelectedProducts();\r\n const disableSaving = _.any(allSelectedProducts, (product: ProductPart) => product && product.IsDisabledByAction());\r\n this._viewModel.DisableSaveByAction(disableSaving);\r\n }\r\n\r\n private BlockSaving() {\r\n BlockUI.Block({Target: this.totalContinueBtnContainer});\r\n }\r\n\r\n private UnBlockSaving() {\r\n if (this._calculatingPriceSequences == 0 && this._viewModel.Product().MainProductPart &&\r\n this._viewModel.Product().MainProductPart.PropertyGroups.every(pg => pg.AllContentLoaded())) {\r\n BlockUI.Unblock(this.totalContinueBtnContainer);\r\n }\r\n }\r\n\r\n AfterRender(el: HTMLElement): void {\r\n this.container = el;\r\n if (this._handlingInex) {\r\n BlockUI.Block({Target: this.container});\r\n }\r\n this.totalContinueBtnContainer = el[0].getElementsByClassName('save-button-container');\r\n if ((this._calculatingPriceSequences > 0 || !this._viewModel.Product() || !this._viewModel.Product().MainProductPart ||\r\n !this._viewModel.Product().MainProductPart.PropertyGroups.every(pg => pg.AllContentLoaded()))\r\n && !this._isActiveLevelLocked && !this._viewModel.UndefinedGroup().HasProducts) {\r\n this.BlockSaving();\r\n }\r\n }\r\n\r\n GetNewParts(): ProductPartDto[] {\r\n return this._viewModel.SelectedProducts.New.map(selectedProduct => {\r\n const productPartDto = this._mappings.MapToProductPartDto(selectedProduct);\r\n const productPart = this._viewModel.FindProduct(selectedProduct.Id, selectedProduct.RootGroupId, selectedProduct.RootGroupName, selectedProduct.GroupId, selectedProduct.GroupName, selectedProduct.Path, selectedProduct.KSeq, selectedProduct.KSeqGuid);\r\n\r\n productPartDto.Price = productPart.Price();\r\n productPartDto.Quantity = +productPart.Quantity();\r\n productPartDto.PropertyValues = this._mappings.MapToPropertyValuesDto(productPart.GetPropertyValues());\r\n productPartDto.CustomFieldValues = this._mappings.MapToCustomFieldValuesDto(productPart.GetCustomFieldValues());\r\n\r\n if (this._viewModel.ExtraGroup() && productPartDto.PcfGroup.Id === this._viewModel.ExtraGroup().Id && productPartDto.PcfGroup.Name === this._viewModel.ExtraGroup().Name) {\r\n productPartDto.PcfGroup = new PcfGroup(0, null, null, []);\r\n } else {\r\n productPartDto.PcfGroup.NameTranslations = productPart.ParentGroup && productPart.ParentGroup.Translations || [];\r\n }\r\n\r\n return productPartDto;\r\n });\r\n }\r\n\r\n GetRemovedParts(): ProductPartDto[] {\r\n const removedPartsDto = this._mappings.MapToProductPartsDto(this._viewModel.SelectedProducts.Removed)\r\n .map(removedProduct => {\r\n if (this._viewModel.ExtraGroup() && removedProduct.PcfGroup.Id === this._viewModel.ExtraGroup().Id && removedProduct.PcfGroup.Name === this._viewModel.ExtraGroup().Name) {\r\n removedProduct.PcfGroup = new PcfGroup(0, null, null, []);\r\n }\r\n\r\n return removedProduct;\r\n });\r\n\r\n return removedPartsDto;\r\n }\r\n\r\n GetAlteredParts(): ProductPartDto[] {\r\n return this._viewModel.SelectedProducts.Altered.map(alteredProduct => {\r\n const productPartDto = this._mappings.MapToProductPartDto(alteredProduct);\r\n const productPart = this._viewModel.FindProduct(alteredProduct.Id, alteredProduct.RootGroupId, alteredProduct.RootGroupName, alteredProduct.GroupId, alteredProduct.GroupName, alteredProduct.Path, alteredProduct.KSeq, alteredProduct.KSeqGuid);\r\n\r\n if (productPart) {\r\n productPartDto.PropertyValues = this._mappings.MapToPropertyValuesDto(productPart.GetPropertyValues());\r\n productPartDto.CustomFieldValues = this._mappings.MapToCustomFieldValuesDto(productPart.GetCustomFieldValues());\r\n productPartDto.Price = productPart.Price();\r\n productPartDto.Quantity = +productPart.Quantity();\r\n\r\n if (this._viewModel.ExtraGroup() && productPartDto.PcfGroup.Id === this._viewModel.ExtraGroup().Id && productPartDto.PcfGroup.Name === this._viewModel.ExtraGroup().Name) {\r\n productPartDto.PcfGroup = new PcfGroup(0, null, null, []);\r\n }\r\n return productPartDto;\r\n }\r\n\r\n return null;\r\n }).filter(productPartDto => productPartDto !== null);\r\n }\r\n\r\n GetSelectedParts(): ProductPartDto[] {\r\n return this._viewModel.SelectedProducts.Selected.map(selectedProduct => {\r\n const productPartDto = this._mappings.MapToProductPartDto(selectedProduct);\r\n const productPart = this._viewModel.FindProduct(selectedProduct.Id, selectedProduct.RootGroupId, selectedProduct.RootGroupName, selectedProduct.GroupId, selectedProduct.GroupName, selectedProduct.Path, selectedProduct.KSeq, selectedProduct.KSeqGuid);\r\n\r\n productPartDto.Price = productPart.Price();\r\n productPartDto.Quantity = +productPart.Quantity();\r\n productPartDto.PropertyValues = this._mappings.MapToPropertyValuesDto(productPart.GetPropertyValues());\r\n productPartDto.CustomFieldValues = this._mappings.MapToCustomFieldValuesDto(productPart.GetCustomFieldValues());\r\n\r\n if (this._viewModel.ExtraGroup() && productPartDto.PcfGroup.Id === this._viewModel.ExtraGroup().Id && productPartDto.PcfGroup.Name === this._viewModel.ExtraGroup().Name) {\r\n productPartDto.PcfGroup = new PcfGroup(0, null, null, []);\r\n } else {\r\n productPartDto.PcfGroup.NameTranslations = productPart.ParentGroup && productPart.ParentGroup.Translations || [];\r\n }\r\n\r\n return productPartDto;\r\n });\r\n }\r\n\r\n GetOrderDto(): OrderDto {\r\n const product = this._viewModel.Product().MainProductPart;\r\n\r\n const propertyValues = this._mappings.MapToPropertyValuesDto(product.GetPropertyValues())\r\n .filter(p => {\r\n const initialProperty = this._viewModel.SelectedProducts.InitialMainPropertyValues.find(ip => p.Id == ip.Id)\r\n return this._createLinks || !initialProperty || initialProperty.Value != p.Value;\r\n });\r\n\r\n const price = product.Price();\r\n const quantity = product.Quantity();\r\n\r\n return new OrderDto(this.params.OrderEntityId, this.params.OrderId, propertyValues, price, quantity);\r\n }\r\n\r\n GetAlteredProductDto(): AlteredProductDto {\r\n if (this.RolesImplemented) {\r\n let newParts = [], removedParts = [], alteredParts = [];\r\n\r\n if (this._createLinks) {\r\n newParts = this.GetSelectedParts();\r\n newParts.forEach(p => p.Level = this.GetActiveConfigurationRole().Level);\r\n\r\n const customFieldValues = this._mappings.MapToCustomFieldValuesDto(this._viewModel.Product().MainProductPart.GetCustomFieldValues());\r\n return new AlteredProductDto(this.params.ProductId, this.params.ProductsEntityId, newParts, removedParts, alteredParts, customFieldValues);\r\n } else {\r\n newParts = this.GetNewParts();\r\n removedParts = this.GetRemovedParts();\r\n alteredParts = this.GetAlteredParts();\r\n\r\n newParts.forEach(p => p.Level = this.GetActiveConfigurationRole().Level);\r\n removedParts.forEach(p => p.Level = this.GetActiveConfigurationRole().Level);\r\n alteredParts.forEach(p => p.Level = this.GetActiveConfigurationRole().Level);\r\n\r\n const customFieldValues = this._mappings.MapToCustomFieldValuesDto(this._viewModel.Product().MainProductPart.GetCustomFieldValues());\r\n return new AlteredProductDto(this.params.ProductId, this.params.ProductsEntityId, newParts, removedParts, alteredParts, customFieldValues);\r\n }\r\n }\r\n\r\n const newParts = this.GetNewParts();\r\n\r\n const removedParts = this._mappings.MapToProductPartsDto(this._viewModel.SelectedProducts.Removed);\r\n\r\n const alteredParts = this.GetAlteredParts();\r\n const customFieldValues = this._mappings.MapToCustomFieldValuesDto(this._viewModel.Product().MainProductPart.GetCustomFieldValues());\r\n\r\n return new AlteredProductDto(this.params.ProductId, this.params.ProductsEntityId, newParts, removedParts, alteredParts, customFieldValues);\r\n }\r\n\r\n BlockUi() {\r\n BlockUI.Block();\r\n }\r\n\r\n UnblockUi() {\r\n if (!this._handlingInex) {\r\n BlockUI.Unblock(this.container);\r\n }\r\n }\r\n}","export const PropertyEvaluationContext = {\r\n $this: '$this',\r\n $parent: '$parent',\r\n $root: '$root',\r\n $main: '$main'\r\n};","import {ProductPart} from \"../Models/ProductPart\";\r\nimport {ProductGroup} from \"../Models/ProductGroup\";\r\nimport {ProductPrice} from \"../Models/ProductPrice\";\r\n\r\nexport const ConfigurationPageEvents = {\r\n RootGroupConversionsDropdownSynchronization: 'RootGroupConversionsDropdownSynchronization',\r\n GroupConversionsDropdownSynchronization: 'GroupConversionsDropdownSynchronization',\r\n RootGroupConversionsDropdown: 'RootGroupConversionsDropdown',\r\n GroupConversionsDropdown: 'GroupConversionsDropdown',\r\n ReloadingConversionDropdowns: 'ReloadingConversionDropdowns',\r\n LoadConversionDropdownsFromRemovePriceItem: 'LoadConversionDropdownsFromRemovePriceItem',\r\n\r\n NotInitRootGroupExpanded: 'ConfigurationPageEvents_NotInitRootGroupExpanded',\r\n RootGroupExapanding: 'ConfigurationPageEvents_RootGroupExapanding',\r\n\r\n ProductPartSelecting: 'ConfigurationPageEvents_ProductPartSelecting',\r\n ProductPartSelected: 'ConfigurationPageEvents_ProductPartSelected',\r\n\r\n ProductPartUnSelecting: 'ConfigurationPageEvents_ProductPartUnSelecting',\r\n ProductPartUnSelected: 'ConfigurationPageEvents_ProductPartUnSelected',\r\n\r\n ProductPartAddingAsExtra: 'ConfigurationPageEvents_ProductPartAddingAsExtra',\r\n\r\n QuantityChanged: 'ConfigurationPageEvents_QuantityChanged',\r\n PriceChanged: 'ConfigurationPageEvents_PriceChanged',\r\n\r\n GroupActivating: 'ConfigurationPageEvents_GroupActivating',\r\n GroupActivated: 'ConfigurationPageEvents_GroupActivated',\r\n\r\n NotInitGroupActivated: 'ConfigurationPageEvents_NotInitGroupActivated',\r\n\r\n PropertyValueChanged: 'ConfigurationPageEvents_PropertyValueChanged',\r\n ProductPropertyValueChanged: 'ConfigurationPageEvents_ProductPropertyValueChanged',\r\n\r\n\tCustomFieldValueChanged: 'ConfigurationPageEvents_CustomFieldValueChanged',\r\n\tProductCustomFieldValueChanged: 'ConfigurationPageEvents_ProductCustomFieldValueChanged',\r\n\r\n PriceCalculationRequested: 'ConfigurationPageEvents_PriceCalculationRequest',\r\n\r\n VariablesChanged: 'ConfigurationPageEvents_VariablesChanged',\r\n\r\n UnselectProduct: 'ConfigurationPageEvents_UnselectProduct',\r\n SelectProduct: 'ConfigurationPageEvents_SelectProduct',\r\n ToggleSelection: 'ConfigurationPageEvents_ToggleSelection',\r\n EvaluateCalculatedExpressionsOnUnselect: 'ConfigurationPageEvents_EvaluateCalculatedExpressionsOnUnselect',\r\n ProductRemovedFromPriceList: 'ConfigurationPageEvents_ProductRemovedFromPriceList',\r\n ProductNavigatedInPriceList: 'ConfigurationPageEvents_ProductNavigatedInPriceList',\r\n\r\n SaveConfigurationRequested: 'ConfigurationPageEvents_SaveConfigurationRequested',\r\n ConfigurationSaved: 'ConfigurationPageEvents_ConfigurationSaved',\r\n\r\n GroupProductsLoaded: 'ConfigurationPageEvents_GroupProductsLoaded',\r\n RootShowMore: 'ConfigurationPageEvents_RootShowMore',\r\n ShowMore: 'ConfigurationPageEvents_ShowMore',\r\n ShowingMore: 'ConfigurationPageEvents_ShowingMore',\r\n\r\n BeforeSelectingProductPartEvent: 'ConfigurationPageEvents_BeforeSelectingProductPartEvent',\r\n CheckAvailabilityToToggle: 'ConfigurationPageEvents_CheckAvailabilityToToggle',\r\n CheckSaveDisabilityByAction: 'ConfigurationPageEvents_CheckSaveDisabilityByAction',\r\n PropertyContentLoading: 'ConfigurationPageEvents_PropertyContentLoading',\r\n\tPropertyContentLoaded: 'ConfigurationPageEvents_PropertyContentLoaded',\r\n\r\n\tZoomButtonClicked: 'ConfigurationPageEvents_ZoomButtonClicked'\r\n};\r\n\r\nexport class ProductPartSelectingEventArgs {\r\n constructor(public OldProduct: ProductPart, public NewProduct: ProductPart) {\r\n }\r\n}\r\n\r\nexport class GroupActivatingEventArgs {\r\n constructor(public OldGroup: ProductGroup, public NewGroup: ProductGroup) {\r\n }\r\n}\r\n\r\nexport class SelectProductPartEventArgs {\r\n constructor(public Id: number, public GroupId: number, public GroupName: string, public Path: number[], public KSeq: number, public KSeqGuid: string, public isRemoveFromPriceItem?: boolean) {\r\n }\r\n}\r\n\r\nexport class ConversionsDropdownArgs {\r\n constructor(public args: any) {\r\n }\r\n}\r\n\r\nexport class PriceProductNavigatedEventArgs {\r\n constructor(public Id: number, public GroupId: number, public GroupName: string, public RootGroupId: number, public RootGroupName: string, public Path: number[], public KSeq: number, public KSeqGuid: string, public OnlyOneLevel: boolean, public ActiveLevel: string) {\r\n }\r\n}\r\n\r\nexport class GroupProductsLoadedEventArgs {\r\n constructor(public Products: ProductPart[]) {\r\n }\r\n}","export class AlternativePriceModel{\r\n constructor(public IsEnabled: boolean,\r\n public CalculationRule: string = null,\r\n public IsCalculationRuleValid: boolean = false) {\r\n }\r\n}","import {EventBusConsumer} from \"Core/Common/EventBus/EventBusConsumer\";\r\n\r\nimport {BaseProductGroup} from \"./BaseProductGroup\";\r\nimport {RootGroup} from \"./RootGroup\";\r\n\r\nimport {ImageTableTypes} from \"../../../Components/ProductImageViewer/Enums/ImageTableTypes\";\r\nimport { ImagePreloader } from \"../../../../../../Common/Image\";\r\n\r\nexport abstract class BaseProduct extends EventBusConsumer {\r\n protected container: HTMLElement;\r\n public Image: string;\r\n\r\n protected constructor(public Id: number,\r\n public KSeq: number,\r\n public Name: string,\r\n public NameTranslated: string,\r\n image: string,\r\n public Description: string,\r\n protected basePrice: number,\r\n protected parentGroup: BaseProductGroup) {\r\n super();\r\n this.Image = image ? `api/FilesApi/GetImage/${image}` : null;\r\n ImagePreloader.Preload(this.Image);\r\n }\r\n\r\n get Container() {\r\n return this.container;\r\n }\r\n\r\n get BasePrice() {\r\n return this.basePrice;\r\n }\r\n\r\n get ParentGroup() {\r\n return this.parentGroup;\r\n }\r\n\r\n\tget ImageTableType() {\r\n\t\treturn ImageTableTypes.Product;\r\n\t}\r\n\r\n abstract RootGroupIs(rootGroup: RootGroup);\r\n\r\n AfterRender(el: HTMLElement) {\r\n this.container = el[0];\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nexport class ConfigurationLevel{\r\n Active: KnockoutObservable;\r\n private _level: string;\r\n\r\n constructor(level: string) {\r\n this._level = level;\r\n this.Active = ko.observable(false);\r\n }\r\n\r\n set Level(levelName: string) {\r\n this._level = levelName;\r\n }\r\n get Level() {\r\n return this._level;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport { ConfigurationLevel } from './ConfigurationLEvel';\r\n\r\nexport class ConfigurationRole extends ConfigurationLevel{\r\n Active: KnockoutObservable;\r\n\r\n constructor(\r\n public Id: number,\r\n public Name: string,\r\n public TranslatedName: string,\r\n level: string) {\r\n super(level);\r\n\r\n this.Active = ko.observable(false);\r\n }\r\n\r\n get DisplayName() {\r\n return this.TranslatedName || this.Name;\r\n }\r\n}","export class CustomFieldValue {\r\n\tconstructor(\r\n\t\tpublic Id: number,\r\n\t\tpublic Value: any,\r\n\t\tpublic IsValid: boolean = true,\r\n\t\tpublic Text: string = null,\r\n\t\tpublic IsCustomValue: boolean = false,) {\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {EventBusConsumer} from \"Core/Common/EventBus/EventBusConsumer\";\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport { LABELS, NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport {ConfigurationPageEvents} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Events/ConfigurationPageEvents\";\r\nimport {ProductCustomFieldDescription} from \"../ProductCustomFieldDescription\";\r\nimport {CustomFieldValue} from \"../../CustomFieldValue\";\r\nimport {ProductPart} from \"../../ProductPart\";\r\n\r\nexport abstract class CustomFieldControl extends EventBusConsumer {\r\n protected _fieldTypes = FIELD_TYPES;\r\n\r\n private _onValueChangedTimeout: number;\r\n protected onValueChangedTimeoutValue: number;\r\n\r\n HasContent: KnockoutObservable;\r\n readOnly: KnockoutObservable;\r\n DefaultValue: KnockoutObservable;\r\n protected validationMessage: KnockoutObservable;\r\n protected isValidControl: KnockoutObservable;\r\n private _isHiddenByAction: KnockoutObservable;\r\n protected _labels = LABELS;\r\n protected _notifications = NOTIFICATIONS;\r\n\r\n protected constructor(protected customField: ProductCustomFieldDescription, protected product: ProductPart) {\r\n super();\r\n this._labels = LABELS;\r\n this._notifications = NOTIFICATIONS;\r\n\r\n this.onValueChangedTimeoutValue = 300;\r\n this.HasContent = ko.observable(false);\r\n\r\n this.readOnly = ko.observable(false);\r\n\r\n this.DefaultValue = ko.observable(customField.DefaultValue);\r\n this.validationMessage = ko.observable(this.GetTranslationMessages('VALID'));\r\n this.isValidControl = ko.observable(true);\r\n this._isHiddenByAction = ko.observable(false);\r\n\r\n this.AssignEventBus(this.product.ParentGroup.EventBus);\r\n }\r\n\r\n get Id() {\r\n return this.customField.Id;\r\n }\r\n\r\n get Name() {\r\n return this.customField.Name;\r\n }\r\n\r\n get DisplayName() {\r\n return this.customField.TranslatedName || this.customField.Name;\r\n }\r\n\r\n get FormatName() {\r\n return this.customField.FormatName;\r\n }\r\n\r\n get Size() {\r\n return this.customField.Size;\r\n }\r\n\r\n get PriceInfluence() {\r\n return this.customField.PriceInfluence;\r\n }\r\n\r\n get IsRequired(): boolean {\r\n return this.customField.IsRequired;\r\n }\r\n\r\n get IsValidControl(): boolean {\r\n return this.isValidControl();\r\n }\r\n\r\n get ValidMessage(): any {\r\n return this.validationMessage();\r\n }\r\n\r\n get IsHiddenByAction(): boolean {\r\n return this._isHiddenByAction();\r\n }\r\n\r\n set IsHiddenByAction(value: boolean) {\r\n this._isHiddenByAction(value);\r\n }\r\n\r\n get SkipValidationOnSave(): boolean {\r\n return this.validationMessage() === this.GetTranslationMessages('MAX_SIZE');\r\n }\r\n\r\n OnValueChanged() {\r\n if (this.onValueChangedTimeoutValue > 0) {\r\n this.ClearOnValueChangedTimeout();\r\n this._onValueChangedTimeout = setTimeout(() => {\r\n this.DispatchEvent(ConfigurationPageEvents.CustomFieldValueChanged);\r\n }, this.onValueChangedTimeoutValue);\r\n } else {\r\n this.DispatchEvent(ConfigurationPageEvents.CustomFieldValueChanged);\r\n }\r\n }\r\n\r\n IsFieldOwner(product: ProductPart) {\r\n return this.product === product;\r\n }\r\n\r\n abstract GetTemplate();\r\n\r\n GetValueForPrice(): CustomFieldValue {\r\n return this.GetValueForSave();\r\n }\r\n\r\n abstract GetValueForSave(): CustomFieldValue;\r\n\r\n abstract SetValue(customFieldValue: any, customFieldDisplayValue?: any);\r\n\r\n abstract SetDefaultValue();\r\n\r\n abstract ClearValue();\r\n\r\n IsValid(value?: any): boolean {\r\n return true;\r\n }\r\n\r\n private ClearOnValueChangedTimeout() {\r\n clearTimeout(this._onValueChangedTimeout);\r\n }\r\n\r\n GetDecimalIntegerValidRules(value: any): boolean {\r\n this.validationMessage(this.GetTranslationMessages('VALID'));\r\n return this.GetIsRequiredValidRule(value) && !this.GetIsNaNValidRule(value);\r\n }\r\n\r\n GetIsRequiredValidRule(value: any, controlType?: string): boolean {\r\n this.validationMessage(this.GetTranslationMessages('VALID'));\r\n if (!this.IsRequired){\r\n return true;\r\n }\r\n\r\n let isEmptyValue: boolean;\r\n if (controlType === this._fieldTypes.YesNo){\r\n isEmptyValue = value === false;\r\n } else {\r\n isEmptyValue = value === '' || value === null;\r\n }\r\n\r\n if (isEmptyValue){\r\n this.validationMessage(this.GetTranslationMessages('REQUIRED'));\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n GetIsNaNValidRule(value: any): boolean{\r\n const isNaNValue: boolean = isNaN(value);\r\n this.validationMessage(this.GetTranslationMessages('VALID'));\r\n if (!isNaNValue){\r\n return false;\r\n }\r\n if (isNaNValue){\r\n this.validationMessage(this.GetTranslationMessages('NOT_VALID'));\r\n return true;\r\n }\r\n }\r\n\r\n GetIsSizeValidRule(value: any): boolean {\r\n const size = value && value.length;\r\n\r\n if (size >= this.Size && this.Size >= 0) {\r\n this.validationMessage(this.GetTranslationMessages('MAX_SIZE'));\r\n return false;\r\n } else {\r\n this.validationMessage(this.GetTranslationMessages('VALID'));\r\n return true;\r\n }\r\n }\r\n\r\n GetDecimalIntegerValid(value: any): boolean {\r\n return this.GetIsRequiredValidation(value) && !this.GetIsNaNValid(value);\r\n }\r\n GetIsNaNValid(value: any): boolean{\r\n const isNaNValue: boolean = isNaN(value);\r\n if (!isNaNValue){\r\n return false;\r\n }\r\n if (isNaNValue){\r\n return true;\r\n }\r\n }\r\n GetIsRequiredValidation(value: any, controlType?: string): boolean {\r\n if (!this.IsRequired){\r\n return true;\r\n }\r\n\r\n let isEmptyValue: boolean;\r\n if (controlType === this._fieldTypes.YesNo){\r\n isEmptyValue = value === false;\r\n } else {\r\n isEmptyValue = value === '' || value === null;\r\n }\r\n return !isEmptyValue;\r\n }\r\n\r\n GetSizeValidation(value: any): boolean {\r\n const size = value && value.length;\r\n return size <= this.Size || this.Size < 0;\r\n }\r\n\r\n CheckValidControl(): void{\r\n\r\n }\r\n\r\n GetTranslationMessages(key: string): any {\r\n const validMassages = {\r\n 'VALID': {Id: 0, Name: null, TranslationName: null},\r\n 'NOT_VALID': {Id: 1, Name: 'Not valid', TranslationName: 'Not valid'},\r\n 'REQUIRED': {Id: 2, Name: 'Required*', TranslationName: this._labels.REQUIRED_FLAG},\r\n 'MAX_SIZE': {Id: 3, Name: `Maximum length of this field is ${this.Size}`, TranslationName: `${this._notifications.MAXIMUM_LENGTH_OF_THIS_FIELD} ${this.Size}`}\r\n };\r\n return validMassages[key].TranslationName;\r\n }\r\n}","export class CustomLookupOptionModel {\r\n\tconstructor(public Text?: string, public Value?: number) {\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {RecordStore} from 'Core/Common/Stores/RecordStore';\r\n\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\n\r\nimport {CustomFieldControl} from \"../CustomFieldControl\";\r\nimport {CustomLookupOptionModel} from './CustomLookupOptionModel';\r\n\r\nimport {ProductCustomFieldDescription} from \"../../ProductCustomFieldDescription\";\r\nimport {CustomFieldValue} from '../../../CustomFieldValue';\r\nimport {ProductPart} from '../../../ProductPart';\r\n\r\nimport Template from './Templates/CustomLookupControl.html';\r\nimport DropdownTemplate from './Templates/Dropdown.html';\r\nimport SearchTemplate from './Templates/Search.html';\r\n\r\nexport class CustomLookupControl extends CustomFieldControl {\r\n\r\n private _options: KnockoutObservableArray;\r\n\r\n private _selectedOption: KnockoutObservable;\r\n private _selectedOptionSubscription: KnockoutSubscription;\r\n private _selectedOptionId: KnockoutObservable;\r\n private _selectedOptionLabel: KnockoutObservable;\r\n private _initialOptionLabel: KnockoutObservable;\r\n\r\n private _isCustomValueEntered: KnockoutObservable;\r\n private _customPlaceholder: KnockoutObservable;\r\n\r\n\tprivate _isReady: KnockoutObservable;\r\n private _isDataLoading: KnockoutObservable;\r\n\r\n private _searchScreen: SearchScreen;\r\n private _useSearch: KnockoutObservable;\r\n private _allowCustomValue: boolean;\r\n private _dropdownPlugins: string[];\r\n private _defaultPlaceholder = `${this._labels.SELECT_LABEL}...`;\r\n\r\n private _actionExpressionValue: KnockoutObservable;\r\n\r\n constructor(customField: ProductCustomFieldDescription, productPart: ProductPart) {\r\n super(customField, productPart);\r\n\r\n this._options = ko.observableArray([]);\r\n\t\tthis._selectedOption = ko.observable(null);\r\n this._selectedOptionSubscription = null;\r\n\t\tthis._selectedOptionId = ko.observable(null);\r\n\t\tthis._selectedOptionLabel = ko.observable(null);\r\n\t\tthis._initialOptionLabel = ko.observable(null);\r\n\r\n\t\tthis._isCustomValueEntered = ko.observable(false);\r\n\t\tthis._customPlaceholder = ko.observable(this._defaultPlaceholder);\r\n\r\n\t\tthis._isReady = ko.observable(true);\r\n\t\tthis._isDataLoading = ko.observable(true);\r\n this.HasContent = ko.observable(true);\r\n\r\n this._useSearch = ko.observable(false);\r\n this._allowCustomValue = customField.AllowCustomValue;\r\n\r\n this._actionExpressionValue = ko.observable(null);\r\n\r\n this.InitDropdownPlugins();\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n GetDropdownTemplate() {\r\n return DropdownTemplate;\r\n }\r\n\r\n GetSearchTemplate() {\r\n return SearchTemplate;\r\n }\r\n\r\n private InitDropdownPlugins() {\r\n this._dropdownPlugins = [];\r\n\r\n if (!this._allowCustomValue) {\r\n this._dropdownPlugins.push('hidden_textfield', 'dropdown_direction');\r\n } else {\r\n this._dropdownPlugins.push('dropdown_direction');\r\n }\r\n }\r\n\r\n GetValueForSave(): CustomFieldValue {\r\n const selectedOptionId = this._selectedOption() ? this._selectedOption().Value : null;\r\n const selectedOptionLabel = this._selectedOption() ? this._selectedOption().Text : null;\r\n\t\treturn new CustomFieldValue(this.Id, selectedOptionId, this.IsValid(selectedOptionLabel), selectedOptionLabel, Number(this._selectedOptionId()) === -1);\r\n }\r\n\r\n\tSetValue(customLookupValue: CustomFieldValue) {\r\n\t\tconst optionId = customLookupValue && !Number.isNaN(customLookupValue.Value) ? Number(customLookupValue.Value) : null;\r\n\t\tconst optionText = customLookupValue ? customLookupValue.Text : null;\r\n\r\n\t\tif (this._isDataLoading()) {\r\n this.DownloadOptions(optionText, optionId);\r\n } else if (this._useSearch) {\r\n\t\t this.SetSelectedOption(new CustomLookupOptionModel(optionText, optionId))\r\n } else if (optionId === -1) {\r\n this.AddCustomOption(optionText);\r\n } else {\r\n this.SetSelectedOption(this._options().find(o => o.Value === optionId));\r\n }\r\n\t}\r\n\r\n SetDefaultValue() {\r\n const recordId = Number(this.DefaultValue());\r\n\r\n if (!recordId) {\r\n this.DownloadOptions(null, null);\r\n return;\r\n }\r\n\r\n RecordStore.GetRecord({TableName: this.customField.ValTable, RecordId: recordId})\r\n .always(() => BlockUI.Unblock())\r\n .then((record: any) => {\r\n const defaultOption = _.find(record.Fields, (item: any) => item.FieldName === this.customField.ValFieldName);\r\n\r\n if (defaultOption) {\r\n this.SetValue(new CustomFieldValue(\r\n this.Id,\r\n recordId,\r\n this.IsValid(defaultOption.FieldValue),\r\n defaultOption.FieldValue));\r\n } else {\r\n this.DownloadOptions(null, null);\r\n }\r\n })\r\n .fail(() => {\r\n this.DownloadOptions(null, null);\r\n new Notifier().Failed('Error applying default option');\r\n });\r\n }\r\n\r\n SetActionExpressionValue(recordId: number) {\r\n if (!recordId) {\r\n return;\r\n }\r\n\r\n this._actionExpressionValue(recordId);\r\n this.CheckAndUpdateActionExpressionValue();\r\n }\r\n\r\n private CheckAndUpdateActionExpressionValue() {\r\n if (!this._actionExpressionValue() || this._isDataLoading()) {\r\n return;\r\n }\r\n\r\n const recordId = this._actionExpressionValue();\r\n this._actionExpressionValue(null);\r\n\r\n if (this._selectedOptionId() && this._selectedOptionId() !== 0) {\r\n return;\r\n }\r\n\r\n if (!this._useSearch()) {\r\n this.SetSelectedOption(this._options().find(o => o.Value === recordId));\r\n return;\r\n }\r\n\r\n RecordStore.GetRecord({TableName: this.customField.ValTable, RecordId: recordId})\r\n .then((record: any) => {\r\n const defaultOption = _.find(record.Fields, (item: any) => item.FieldName === this.customField.ValFieldName);\r\n\r\n if (defaultOption) {\r\n this.SetSelectedOption(new CustomLookupOptionModel(defaultOption.FieldValue, recordId))\r\n }\r\n })\r\n .fail(() => {\r\n this.ClearValue();\r\n });\r\n }\r\n\r\n IsValueCustom() {\r\n\t return Number(this._selectedOptionId()) === -1;\r\n }\r\n\r\n ClearValue() {\r\n\t\tthis._isReady(false);\r\n\t\tthis._isCustomValueEntered(false);\r\n\t\tthis.RemoveCustomOption();\r\n\t\tthis.SetSelectedOption(null);\r\n\t\tthis._isReady(true);\r\n }\r\n\r\n AddCustomValue(text: string) {\r\n\t this.RemoveCustomOption();\r\n\t this.AddCustomOption(text);\r\n\r\n\t return { text: text, value: -1 };\r\n }\r\n\r\n OnSelectControl(recordId) {\r\n\t const convertedRecordId = Number(recordId);\r\n\r\n\t if (convertedRecordId !== -1) {\r\n\t\t this.RemoveCustomOption();\r\n\t }\r\n\r\n\t const selectedItem = _.find(this._options(), item => item.Value === convertedRecordId);\r\n\t this.SetSelectedOption(selectedItem);\r\n }\r\n\r\n OnCustomSearchFocused() {\r\n\t if (this._selectedOptionLabel()) {\r\n\t\t const initialLabel = this._selectedOptionLabel();\r\n\t\t this._initialOptionLabel(initialLabel);\r\n\t\t this._customPlaceholder(initialLabel);\r\n\t }\r\n\r\n\t this._selectedOptionLabel(null);\r\n }\r\n\r\n OnCustomSearchBlur() {\r\n\t if (!this._selectedOptionLabel()) {\r\n\t\t this._selectedOptionLabel(this._initialOptionLabel());\r\n\t }\r\n\r\n\t this._customPlaceholder(this._defaultPlaceholder);\r\n\t this._initialOptionLabel(null);\r\n }\r\n\r\n OnCustomValueEntered(element, event) {\r\n\t if (event.target.value) {\r\n\t\t this._isCustomValueEntered(true);\r\n\t } else {\r\n\t\t this._isCustomValueEntered(false);\r\n\t }\r\n }\r\n\r\n ShowSearchScreen() {\r\n const params = {\r\n SearchTerm: '',\r\n EntityName: this.customField.ValTable,\r\n EntityType: this.customField.ValTableType,\r\n SearchFieldId: this.customField.ValFieldId,\r\n ButtonAdd: false\r\n };\r\n\r\n this._searchScreen = new SearchScreen(params);\r\n this._searchScreen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n const tableId = evtArgs.data.TableId;\r\n const recordId = evtArgs.data.RecordId;\r\n const fieldNameValue = evtArgs.data.Name;\r\n\r\n this.FindSelectedOption(tableId, recordId, fieldNameValue);\r\n });\r\n\r\n this._searchScreen.Show();\r\n }\r\n\r\n ShowOptionCreate(data, esc) {\r\n\t return `
    ${this._labels.ADD}  ${esc(data.input)} 
    `;\r\n }\r\n\r\n private AddCustomOption(text) {\r\n\t const newCustomOption = new CustomLookupOptionModel();\r\n\r\n\t newCustomOption.Value = -1;\r\n\t newCustomOption.Text = text;\r\n\r\n\t this._options.push(newCustomOption);\r\n\t this.SetSelectedOption(newCustomOption);\r\n }\r\n\r\n private RemoveCustomOption() {\r\n\t const oldCustomValueIndex = _.findIndex(this._options(), item => item.Value === -1);\r\n\r\n\t if (oldCustomValueIndex !== -1) {\r\n\t\t this._options.splice(oldCustomValueIndex, 1);\r\n\t }\r\n }\r\n\r\n private DownloadOptions(initialOptionText: string, initialOptionId: number) {\r\n if (!this._isDataLoading()){\r\n return;\r\n } else if (!this.customField.ValFieldName){\r\n this._isDataLoading(false);\r\n return;\r\n }\r\n\r\n RecordStore.GetLookupData({\r\n TableName: this.customField.ValTable,\r\n DisplayValue: this.customField.ValFieldName\r\n })\r\n .always(() => this._isDataLoading(false))\r\n .then(result => {\r\n if (result.Data && result.Data.length < result.Count) {\r\n this._useSearch(true);\r\n this.SetSelectedOption(new CustomLookupOptionModel(initialOptionText, initialOptionId));\r\n } else {\r\n const options = result.Data.map(record => new CustomLookupOptionModel(record.Name, parseInt(record.Value)));\r\n\t\t\t\t\tthis._options(options);\r\n\r\n\t\t\t\t\tif (initialOptionId === -1) {\r\n\t\t\t\t\t\tthis.AddCustomOption(initialOptionText);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.SetSelectedOption(options.find(o => o.Value === initialOptionId));\r\n\t\t\t\t\t}\r\n }\r\n\r\n this.StartListeningValueChanges();\r\n })\r\n .fail(err => new Notifier().Failed(err.message));\r\n }\r\n\r\n private FindSelectedOption(tableId: number, recordId: number, fieldNameValue: string) {\r\n const fieldName = this.customField.ValFieldName;\r\n\r\n if (fieldName === 'NAME') {\r\n\t\t\tthis._isCustomValueEntered(false);\r\n\t\t\tthis.SetSelectedOption(new CustomLookupOptionModel(fieldNameValue, recordId));\r\n\t\t\treturn;\r\n }\r\n\r\n BlockUI.Block();\r\n\r\n RecordStore.GetRecord({TableId: tableId, RecordId: recordId})\r\n .always(() => BlockUI.Unblock())\r\n .then((record: any) => {\r\n const selected = _.find(record.Fields, (item: any) => item.FieldName === fieldName);\r\n\r\n if (selected) {\r\n\t\t\t\t\tthis._isCustomValueEntered(false);\r\n\t\t\t\t\tthis.SetSelectedOption(new CustomLookupOptionModel(selected.FieldValue, recordId));\r\n }\r\n })\r\n .fail(() => {\r\n new Notifier().Failed('Error applying selected option');\r\n });\r\n }\r\n\r\n private SetSelectedOption(selected: CustomLookupOptionModel) {\r\n\t this._selectedOption(selected);\r\n\t this._selectedOptionId(!!selected ? selected.Value : null);\r\n\t this._selectedOptionLabel(!!selected ? selected.Text : null);\r\n\r\n this.CheckAndUpdateActionExpressionValue();\r\n }\r\n\r\n private StartListeningValueChanges() {\r\n if (this._selectedOptionSubscription == null) {\r\n this._selectedOptionSubscription = this._selectedOption.subscribe(() => {\r\n this.CheckValidControl();\r\n this.OnValueChanged();\r\n });\r\n }\r\n }\r\n\r\n IsValid(value?: any): boolean {\r\n let selectedOptionLabel = this._selectedOption() ? this._selectedOption().Text : null;\r\n return this.GetIsRequiredValidation(value ? value : selectedOptionLabel);\r\n }\r\n\r\n CheckValidControl() {\r\n let selectedOptionLabel = this._selectedOption() ? this._selectedOption().Text : null;\r\n this.isValidControl(this.GetIsRequiredValidRule(selectedOptionLabel));\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {CustomFieldControl} from \"../CustomFields/Controls/CustomFieldControl\";\r\nimport {CustomFieldValue} from \"../CustomFieldValue\";\r\n\r\nimport Template from './Template.html';\r\n\r\nexport class CustomFieldsGroup {\r\n HasContent: KnockoutComputed;\r\n\r\n constructor(public CustomFieldsControls: CustomFieldControl[]) {\r\n this.HasContent = ko.computed(() => _.any(this.CustomFieldsControls, control => control.HasContent()));\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n GetCustomFieldValuesForPrice(): CustomFieldValue[] {\r\n\t\treturn this.CustomFieldsControls.filter(control => control.PriceInfluence).map((control: CustomFieldControl) => control.GetValueForPrice());\r\n }\r\n\r\n GetCustomFieldValues(): CustomFieldValue[] {\r\n return this.CustomFieldsControls.map((control: CustomFieldControl) => control.GetValueForPrice());\r\n }\r\n\r\n ClearCustomFieldValues() {\r\n this.CustomFieldsControls.forEach(control => control.ClearValue());\r\n }\r\n\r\n get IsHiddenByAction(): boolean {\r\n return _.every(this.CustomFieldsControls, control => control.IsHiddenByAction);\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {CustomFieldControl} from \"../CustomFieldControl\";\r\n\r\nimport Template from './Template.html';\r\nimport {ProductCustomFieldDescription} from \"../../ProductCustomFieldDescription\";\r\nimport {CustomFieldValue} from '../../../CustomFieldValue';\r\nimport {ProductPart} from '../../../ProductPart';\r\n\r\nexport class CustomIntegerControl extends CustomFieldControl {\r\n\tprivate _displayValue: KnockoutObservable;\r\n\r\n\tconstructor(customField: ProductCustomFieldDescription, productPart: ProductPart) {\r\n\t\tsuper(customField, productPart);\r\n\r\n\t\tthis.HasContent = ko.observable(true);\r\n\t\tthis._displayValue = ko.observable(null);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tGetConvertedValue(){\r\n\t\tconst value = this._displayValue();\r\n\t\tlet convertedValue = !value && value !== '0' ? null : +value;\r\n\r\n\t\tconvertedValue = isNaN(convertedValue) ? null : convertedValue;\r\n\r\n\t\treturn convertedValue;\r\n\t}\r\n\r\n\tGetValueForSave(): any {\r\n\t\treturn new CustomFieldValue(this.Id, this.GetConvertedValue(), this.IsValid( this.GetConvertedValue() ));\r\n\t}\r\n\r\n\tSetValue(customFieldValue: CustomFieldValue) {\r\n\t\tif (customFieldValue) {\r\n\t\t\tthis._displayValue(customFieldValue.Value);\r\n\t\t}\r\n\r\n\t\tthis.StartListeningValueChanges();\r\n\t}\r\n\r\n\tSetDefaultValue() {\r\n\t\tconst defaultFieldValue = new CustomFieldValue(this.Id, this.DefaultValue(), this.IsValid(this.DefaultValue()));\r\n\t\tthis.SetValue(defaultFieldValue);\r\n\t}\r\n\r\n\tClearValue() {\r\n\t\tthis._displayValue(null);\r\n\t}\r\n\r\n\tprivate StartListeningValueChanges() {\r\n\t\tif (this._displayValue.getSubscriptionsCount() == 0) {\r\n\t\t\tthis._displayValue.subscribe(() => {\r\n\t\t\t\tthis.CheckValidControl();\r\n\t\t\t\tthis.OnValueChanged();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tIsValid(value: any): boolean {\r\n\t\treturn this.GetDecimalIntegerValid(value);\r\n\t}\r\n\r\n\tCheckValidControl() {\r\n\t\tthis.isValidControl(this.GetDecimalIntegerValidRules(this.GetConvertedValue()));\r\n\t}\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\n\r\nimport {CustomFieldControl} from \"../CustomFieldControl\";\r\n\r\nimport Template from './Template.html';\r\nimport {ProductCustomFieldDescription} from \"../../ProductCustomFieldDescription\";\r\nimport {CustomFieldValue} from '../../../CustomFieldValue';\r\nimport {ProductPart} from '../../../ProductPart';\r\n\r\nexport class CustomDecimalControl extends CustomFieldControl {\r\n\tprivate _displayValue: KnockoutObservable;\r\n\r\n\tconstructor(customField: ProductCustomFieldDescription, productPart: ProductPart) {\r\n\t\tsuper(customField, productPart);\r\n\t\t\r\n\t\tthis.HasContent = ko.observable(true);\r\n\t\tthis._displayValue = ko.observable(null);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tget DecimalMaskSize() {\r\n\t\tif (FieldFormat.IsPercentage(this.FormatName)) {\r\n\t\t\treturn Math.max(this.Size - 2, 0);\r\n\t\t}\r\n\r\n\t\treturn this.Size;\r\n\t}\r\n\r\n\tget IsCurrencyIcon() : boolean {\r\n\t\treturn FieldFormat.IsCurrency(this.FormatName);\r\n\t}\r\n\r\n\tget IsPercentageIcon() : boolean {\r\n\t\treturn !!(this._displayValue() && this._displayValue().length !== 0 && FieldFormat.IsPercentage(this.FormatName));\r\n\t}\r\n\r\n\tGetConvertedValue() {\r\n\t\tconst value = this._displayValue();\r\n\r\n\t\tlet convertedValue = !value && value !== '0' ? null : +value.replace(',', '.');\r\n\r\n\t\tconvertedValue = isNaN(convertedValue) ? null : convertedValue;\r\n\r\n\t\tif (convertedValue && FieldFormat.IsPercentage(this.FormatName)) {\r\n\t\t\treturn (convertedValue / 100).toFixed(this.Size);\r\n\t\t}\r\n\r\n\t\treturn convertedValue;\r\n\t}\r\n\r\n\tGetValueForSave(): any {\r\n\t\treturn new CustomFieldValue(this.Id, this.GetConvertedValue(), this.IsValid(this.GetConvertedValue()));\r\n\t}\r\n\r\n\tSetValue(customFieldValue: CustomFieldValue) {\r\n\t\tlet formattedValue = null;\r\n\r\n\t\tif (customFieldValue && customFieldValue.Value && FieldFormat.IsPercentage(this.FormatName)) {\r\n\t\t\tconst percentageValue = (Number(String(customFieldValue.Value).replace(',', '.')) * 100)\r\n\t\t\t\t.toFixed((this.Size < 2) ? 0 : this.Size - 2);\r\n\t\t\tformattedValue = FormatConverter.ConvertDecimal(percentageValue);\r\n\t\t}\r\n\t\telse if (customFieldValue && customFieldValue.Value) {\r\n\t\t\tformattedValue = FormatConverter.ConvertDecimal(customFieldValue.Value.toString());\r\n\t\t}\r\n\r\n\t\tthis._displayValue(formattedValue);\r\n\t\tthis.StartListeningValueChanges();\r\n\t}\r\n\r\n\tSetDefaultValue() {\r\n\t\tconst defaultFieldValue = new CustomFieldValue(this.Id, this.DefaultValue(), this.IsValid(true));\r\n\t\tthis.SetValue(defaultFieldValue);\r\n\t}\r\n\r\n\tClearValue() {\r\n\t\tthis._displayValue(null);\r\n\t}\r\n\r\n\tprivate StartListeningValueChanges() {\r\n\t\tif (this._displayValue.getSubscriptionsCount() == 0) {\r\n\t\t\tthis._displayValue.subscribe(() => {\r\n\t\t\t\tthis.CheckValidControl();\r\n\t\t\t\tthis.OnValueChanged();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tIsValid(value: any): boolean {\r\n\t\treturn this.GetDecimalIntegerValid(value);\r\n\t}\r\n\r\n\tCheckValidControl() {\r\n\t\tthis.isValidControl(this.GetDecimalIntegerValidRules(this.GetConvertedValue()));\r\n\t}\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\n\r\nimport {CustomFieldControl} from \"../CustomFieldControl\";\r\n\r\nimport Template from './Template.html';\r\nimport {ProductCustomFieldDescription} from \"../../ProductCustomFieldDescription\";\r\nimport {CustomFieldValue} from '../../../CustomFieldValue';\r\nimport {ProductPart} from '../../../ProductPart';\r\n\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\nimport {ICON_CLASSES} from 'Core/Controls/DateTime/Icons';\r\n\r\nexport class CustomDateTimeControl extends CustomFieldControl {\r\n\tprivate _displayValue: KnockoutObservable;\r\n\tprivate _datetimeFormat: string;\r\n\tprivate _typeName: string;\r\n\r\n\tconstructor(customField: ProductCustomFieldDescription, productPart: ProductPart, typeName: string, datetimeFormat: string) {\r\n\t\tsuper(customField, productPart);\r\n\t\t\r\n\t\tthis.HasContent = ko.observable(true);\r\n\t\tthis._displayValue = ko.observable(null);\r\n\t\tthis._typeName = typeName;\r\n\t\tthis._datetimeFormat = datetimeFormat;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tGetValueForSave(): any {\r\n\t\treturn new CustomFieldValue(this.Id, this.ConvertDateToUTC(this._displayValue()), this.IsValid(this._displayValue()));\r\n\t}\r\n\r\n\tSetValue(customFieldValue: CustomFieldValue) {\r\n\t\tif (customFieldValue && customFieldValue.Value) {\r\n\t\t\tconst valueWithTimezone = this._typeName === FIELD_TYPES.Date ? customFieldValue.Value : FormatConverter.CorrectTimezone(customFieldValue.Value);\r\n\r\n\t\t\tthis._displayValue(moment(valueWithTimezone).format(this._datetimeFormat));\r\n\t\t} else {\r\n\t\t\tthis._displayValue(null);\r\n\t\t}\r\n\r\n\t\tthis.StartListeningValueChanges();\r\n\t}\r\n\r\n\tSetDefaultValue() {\r\n\t\tconst defaultFieldValue = new CustomFieldValue(this.Id, this.DefaultValue(), this.IsValid(this.DefaultValue()));\r\n\t\tthis.SetValue(defaultFieldValue);\r\n\t}\r\n\r\n\tClearValue() {\r\n\t\tthis._displayValue(null);\r\n\t}\r\n\r\n\tGetLocale() {\r\n\t\treturn moment.locale();\r\n\t}\r\n\r\n\tGetDateFormatIconClass(): string {\r\n\t\tconst iconClassName = (this._typeName && ICON_CLASSES[this._typeName]);\r\n\r\n\t\treturn `${iconClassName}`;\r\n\t}\r\n\r\n\tAfterRender(el: Array) {\r\n\r\n\t\t// set picker value in datepicker input after rendering control\r\n\t\t$(el).find('.datepickerinput').val(this._displayValue);\r\n\t}\r\n\r\n\tConvertDateToUTC(date: string): string {\r\n\t\treturn FormatConverter.ConvertToUTC(date, this._datetimeFormat);\r\n\t}\r\n\r\n\tprivate StartListeningValueChanges() {\r\n\t\tif (this._displayValue.getSubscriptionsCount() == 0) {\r\n\t\t\tthis._displayValue.subscribe(() => {\r\n\t\t\t\tthis.CheckValidControl();\r\n\t\t\t\tthis.OnValueChanged();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tIsValid(value?: any): boolean {\r\n\t\treturn this.GetIsRequiredValidation(value ? value : this._displayValue());\r\n\t}\r\n\r\n\tCheckValidControl() {\r\n\t\tthis.isValidControl(this.GetIsRequiredValidRule(this._displayValue()));\r\n\t}\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {CustomFieldControl} from \"../CustomFieldControl\";\r\n\r\nimport Template from './Template.html';\r\nimport {ProductCustomFieldDescription} from \"../../ProductCustomFieldDescription\";\r\nimport {CustomFieldValue} from '../../../CustomFieldValue';\r\nimport {ProductPart} from '../../../ProductPart';\r\n\r\nexport class CustomCheckboxControl extends CustomFieldControl {\r\n\tprivate _displayValue: KnockoutObservable;\r\n\r\n\tconstructor(customField: ProductCustomFieldDescription, productPart: ProductPart) {\r\n\t\tsuper(customField, productPart);\r\n\t\t\r\n\t\tthis.HasContent = ko.observable(true);\r\n\t\tthis._displayValue = ko.observable(false);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tGetValueForSave(): any {\r\n\t\treturn new CustomFieldValue(this.Id, this._displayValue(), this.IsValid(this._displayValue()));\r\n\t}\r\n\r\n\tSetValue(customFieldValue: CustomFieldValue) {\r\n\t\tif (customFieldValue) {\r\n\t\t\tconst displayValue = customFieldValue.Value ? customFieldValue.Value.toString().toLowerCase() === 'true' : false;\r\n\t\t\tthis._displayValue(displayValue);\r\n\t\t}\r\n\r\n\t\tthis.StartListeningValueChanges();\r\n\t}\r\n\r\n\tSetDefaultValue() {\r\n\t\tconst defaultFieldValue = new CustomFieldValue(this.Id, this.DefaultValue(), this.IsValid(this.DefaultValue()));\r\n\t\tthis.SetValue(defaultFieldValue);\r\n\t}\r\n\r\n\tClearValue() {\r\n\t\tthis._displayValue(false);\r\n\t}\r\n\r\n\tprivate StartListeningValueChanges() {\r\n\t\tif (this._displayValue.getSubscriptionsCount() == 0) {\r\n\t\t\tthis._displayValue.subscribe(() => {\r\n\t\t\t\tthis.CheckValidControl();\r\n\t\t\t\tthis.OnValueChanged();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tIsValid(value?: any): boolean {\r\n\t\treturn this.GetIsRequiredValidation(value ? value : this._displayValue(), this._fieldTypes.YesNo);\r\n\t}\r\n\r\n\tCheckValidControl() {\r\n\t\tthis.isValidControl(this.GetIsRequiredValidRule(this._displayValue(), this._fieldTypes.YesNo));\r\n\t}\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {CustomFieldControl} from \"../CustomFieldControl\";\r\n\r\nimport Template from './Template.html';\r\nimport {ProductCustomFieldDescription} from \"../../ProductCustomFieldDescription\";\r\nimport {CustomFieldValue} from '../../../CustomFieldValue';\r\nimport {ProductPart} from '../../../ProductPart';\r\n\r\nexport class CustomTextControl extends CustomFieldControl {\r\n\tprivate _displayValue: KnockoutObservable;\r\n\r\n\tconstructor(customField: ProductCustomFieldDescription, productPart: ProductPart) {\r\n\t\tsuper(customField, productPart);\r\n\r\n\t\tthis.HasContent = ko.observable(true);\r\n\t\tthis._displayValue = ko.observable(null);\r\n\t}\r\n\r\n\tget MaxInputLength() {\r\n\t\treturn this.Size > 0 ? this.Size : -1;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tGetValueForSave(): CustomFieldValue {\r\n\t\treturn new CustomFieldValue(this.Id, this._displayValue(), this.IsValid(this._displayValue()));\r\n\t}\r\n\r\n\tSetValue(customFieldValue: CustomFieldValue) {\r\n\t\tif (customFieldValue) {\r\n\t\t\tthis._displayValue(customFieldValue.Value);\r\n\t\t}\r\n\r\n\t\tthis.StartListeningValueChanges();\r\n\t}\r\n\r\n\tSetDefaultValue() {\r\n\t\tconst defaultFieldValue = new CustomFieldValue(this.Id, this.DefaultValue(), this.IsValid(this.DefaultValue()));\r\n\t\tthis.SetValue(defaultFieldValue);\r\n\t}\r\n\r\n\tClearValue() {\r\n\t\tthis._displayValue(null);\r\n\t}\r\n\r\n\tprivate StartListeningValueChanges() {\r\n\t\tif (this._displayValue.getSubscriptionsCount() == 0) {\r\n\t\t\tthis._displayValue.subscribe(() => {\r\n\t\t\t\tthis.CheckValidControl();\r\n\t\t\t\tthis.OnValueChanged();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tIsValid(value?: any): boolean {\r\n\t\tconst valueToCheck = value ? value : this._displayValue();\r\n\t\treturn this.GetIsRequiredValidation(valueToCheck) && this.GetSizeValidation(valueToCheck);\r\n\t}\r\n\r\n\tCheckValidControl() {\r\n\t\tthis.isValidControl(this.GetIsRequiredValidRule(this._displayValue()) && this.GetIsSizeValidRule(this._displayValue()));\r\n\t}\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import {FIELD_TYPES} from \"Core/Constant\";\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\nimport {ProductCustomFieldDescription} from \"../ProductCustomFieldDescription\";\r\n\r\nimport {CustomFieldControl} from \"../Controls/CustomFieldControl\";\r\nimport {CustomIntegerControl} from \"../Controls/Integer/CustomIntegerControl\";\r\nimport {CustomDecimalControl} from \"../Controls/Decimal/CustomDecimalControl\";\r\nimport {CustomDateTimeControl} from \"../Controls/DateTime/CustomDateTimeControl\";\r\nimport {CustomCheckboxControl} from \"../Controls/Checkbox/CustomCheckboxControl\";\r\nimport {CustomLookupControl} from \"../Controls/Lookup/CustomLookupControl\";\r\nimport {CustomTextControl} from \"../Controls/Text/CustomTextControl\";\r\nimport {ProductPart} from \"../../ProductPart\";\r\n\r\nexport class ProductCustomFieldControlFactory {\r\n\tstatic CreateCustomControl(customField: ProductCustomFieldDescription, productPart: ProductPart): CustomFieldControl {\r\n\t\tswitch (customField.Type) {\r\n\t\t\tcase FIELD_TYPES.Integer:\r\n\t\t\t\treturn new CustomIntegerControl(customField, productPart);\r\n\r\n\t\t\tcase FIELD_TYPES.Decimal:\r\n\t\t\t\treturn new CustomDecimalControl(customField, productPart);\r\n\r\n\t\t\tcase FIELD_TYPES.DateTime:\r\n\t\t\t\treturn new CustomDateTimeControl(customField, productPart, FIELD_TYPES.DateTime, DATE_FORMATS.DATE_TIME.Format);\r\n\r\n\t\t\tcase FIELD_TYPES.Date:\r\n\t\t\t\treturn new CustomDateTimeControl(customField, productPart, FIELD_TYPES.Date, DATE_FORMATS.SHORT_DATE.Format);\r\n\r\n\t\t\tcase FIELD_TYPES.YesNo:\r\n\t\t\t\treturn new CustomCheckboxControl(customField, productPart);\r\n\r\n\t\t\tcase FIELD_TYPES.Lookup:\r\n\t\t\t\treturn new CustomLookupControl(customField, productPart);\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn new CustomTextControl(customField, productPart);\r\n }\r\n }\r\n}","import {PriceGroup} from './PriceGroup';\r\n\r\nexport class MainProductPriceGroup extends PriceGroup {\r\n constructor(id: number, name: string, price: number, nameTranslated: string) {\r\n super(id, name, price, nameTranslated);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {ProductPrice} from \"./ProductPrice\";\r\nimport { PriceItem } from \"./PriceItem\";\r\nimport { ConfigurationPageEvents } from \"../Events/ConfigurationPageEvents\";\r\n\r\nexport class PriceGroup extends PriceItem {\r\n Products: KnockoutObservableArray;\r\n\r\n constructor(id: number, name: string, price: number, public nameTranslated: string) {\r\n super(id, name, nameTranslated, price);\r\n\r\n this.Products = ko.observableArray([]);\r\n }\r\n\r\n HasProducts() {\r\n return this.Products().length > 0;\r\n }\r\n\r\n GetProduct(productId: number, rootGroupId: number, rootGroupName: string, kSeq: number, kSeqGuid: string) {\r\n return _.find(this.Products(), product => product.Id === productId && product.RootGroupId === rootGroupId && product.RootGroupName === rootGroupName && product.KSeq === kSeq && product.KSeqGuid === kSeqGuid);\r\n }\r\n\r\n GetDependenciesOf(productId: number): ProductPrice[] {\r\n return this.Products().filter(product => _.last(product.Path) === productId);\r\n }\r\n\r\n AddProduct(productPrice: ProductPrice) {\r\n this.Products.push(productPrice);\r\n this.Price(this.Price() + productPrice.PositionPrice);\r\n this.AlternativePrice(this.AlternativePrice() + productPrice.PositionAlternativePrice);\r\n\r\n if (this._compare()) {\r\n this.ComparisonPrice(this.ComparisonPrice() + productPrice.ComparisonPositionPrice);\r\n this.ComparisonAlternativePrice(this.ComparisonAlternativePrice() + productPrice.ComparisonPositionAlternativePrice);\r\n }\r\n }\r\n\r\n RemoveProduct(productPrice: ProductPrice) {\r\n const productIndex = _.findIndex(this.Products(),\r\n p => p.Id === productPrice.Id && p.GroupId === productPrice.GroupId && p.GroupName === productPrice.GroupName && _.isEqual(p.Path, productPrice.Path) && p.KSeq === productPrice.KSeq && p.KSeqGuid === productPrice.KSeqGuid);\r\n\r\n this.Products.splice(productIndex, 1);\r\n this.Price(this.Price() - productPrice.PositionPrice);\r\n this.AlternativePrice(this.AlternativePrice() - productPrice.PositionAlternativePrice);\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport { EventBusConsumer } from \"../../../../../../Common/EventBus/EventBusConsumer\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport abstract class PriceItem extends EventBusConsumer {\r\n private _labels = LABELS;\r\n\r\n Price: KnockoutObservable;\r\n ComparisonPrice: KnockoutObservable;\r\n\r\n PriceLabel: KnockoutComputed;\r\n ComparisonPriceLabel: KnockoutComputed;\r\n\r\n AlternativePrice: KnockoutObservable;\r\n ComparisonAlternativePrice: KnockoutObservable;\r\n\r\n AlternativePriceLabel: KnockoutComputed;\r\n ComparisonAlternativePriceLabel: KnockoutComputed;\r\n\r\n _compare: KnockoutObservable;\r\n _inactive: KnockoutComputed;\r\n _priceMiscalculated: KnockoutObservable;\r\n\r\n protected constructor(public Id: number, public Name: string, public NameTranslated: string, price: number) {\r\n super();\r\n this.Price = ko.observable(price);\r\n this.ComparisonPrice = ko.observable(null);\r\n this._compare = ko.observable(false);\r\n\r\n this.AlternativePrice = ko.observable(null);\r\n this.ComparisonAlternativePrice = ko.observable(null);\r\n\r\n this._inactive = ko.computed(() => this.Price() == null);\r\n this._priceMiscalculated = ko.observable(false);\r\n\r\n this.PriceLabel = ko.computed(() => {\r\n if (this.Price() == null){\r\n return '-';\r\n }\r\n const decimalValue = FormatConverter.LocalizeDecimalOrInteger(Math.abs(this.Price()).toFixed(2));\r\n return `€ ${this.Price() < 0 ? '-' : ''}${decimalValue}`;\r\n });\r\n this.ComparisonPriceLabel = ko.computed(() => {\r\n if (this.ComparisonPrice() == null) {\r\n return '-';\r\n }\r\n const decimalValue = FormatConverter.LocalizeDecimalOrInteger(Math.abs(this.ComparisonPrice()).toFixed(2));\r\n return `€ ${this.Price() < 0 ? '-' : ''}${decimalValue}`;\r\n });\r\n this.AlternativePriceLabel = ko.computed(() => {\r\n if (this.AlternativePrice() == null){\r\n return '* -';\r\n }\r\n const decimalValue = FormatConverter.LocalizeDecimalOrInteger(Math.abs(this.AlternativePrice()).toFixed(2));\r\n return `* € ${this.AlternativePrice() < 0 ? '-' : ''}${decimalValue}`;\r\n });\r\n this.ComparisonAlternativePriceLabel = ko.computed(() => {\r\n if (this.ComparisonAlternativePrice() == null) {\r\n return '* -';\r\n }\r\n const decimalValue = FormatConverter.LocalizeDecimalOrInteger(Math.abs(this.ComparisonAlternativePrice()).toFixed(2));\r\n return `* € ${this.ComparisonAlternativePrice() < 0 ? '-' : ''}${decimalValue}`;\r\n });\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {EventBusConsumer} from \"Core/Common/EventBus/EventBusConsumer\";\r\n\r\nimport {PriceGroup} from \"./PriceGroup\";\r\nimport {MainProductPriceGroup} from './MainProductPriceGroup';\r\nimport {ProductPrice} from \"./ProductPrice\";\r\n\r\nimport {ConfigurationPageEvents} from \"../Events/ConfigurationPageEvents\";\r\n\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {ConfigurationLevel} from './ConfigurationLEvel';\r\nimport {AlternativePriceModel} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/AlternativePriceModel';\r\n\r\nimport Template from '../Templates/PriceList.html';\r\n\r\nexport class PriceList extends EventBusConsumer {\r\n MainProductPriceGroup: KnockoutObservable;\r\n Groups: KnockoutObservableArray;\r\n\r\n Total: KnockoutObservable;\r\n Quantity: KnockoutObservable;\r\n TotalLabel: KnockoutComputed;\r\n\r\n ComparisonTotal: KnockoutObservable;\r\n ComparisonQuantity: KnockoutObservable;\r\n ComparisonTotalLabel: KnockoutComputed;\r\n\r\n AlternativeTotal: KnockoutObservable;\r\n AlternativeTotalLabel: KnockoutComputed;\r\n ComparisonAlternativeTotal: KnockoutObservable;\r\n ComparisonAlternativeTotalLabel: KnockoutComputed;\r\n\r\n Raw: KnockoutObservable;\r\n\r\n private _labels = LABELS;\r\n private _isActiveLevelLocked: KnockoutObservable;\r\n\r\n Levels: KnockoutObservableArray;\r\n _compare: KnockoutObservable;\r\n\r\n MainLevel: string;\r\n\r\n _pricesMiscalculated: KnockoutComputed;\r\n\r\n AlternativePriceModel: KnockoutObservable;\r\n ShowAlternativePrice: KnockoutObservable;\r\n\r\n private _isSaveDisabledByAction: KnockoutObservable;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.Groups = ko.observableArray([]);\r\n this.MainProductPriceGroup = ko.observable(null);\r\n this.Total = ko.observable(0);\r\n this.Quantity = ko.observable(0);\r\n\r\n this.ComparisonTotal = ko.observable(0);\r\n this.ComparisonQuantity = ko.observable(0);\r\n\r\n this.AlternativeTotal = ko.observable(0);\r\n this.ComparisonAlternativeTotal = ko.observable(0);\r\n\r\n this.Raw = ko.observable(false);\r\n\r\n this._isActiveLevelLocked = ko.observable(false);\r\n\r\n this.Levels = ko.observableArray([]);\r\n this._compare = ko.observable(false);\r\n this._pricesMiscalculated = ko.computed(() => this.Groups().find(group => group._priceMiscalculated()) != null);\r\n\r\n this.AlternativePriceModel = ko.observable(null);\r\n this.ShowAlternativePrice = ko.observable(false);\r\n\r\n this._isSaveDisabledByAction = ko.observable(false);\r\n\r\n this.TotalLabel = ko.computed(() => {\r\n const decimalValue = FormatConverter.LocalizeDecimalOrInteger(Math.abs(this.Total()).toFixed(2));\r\n return `€ ${this.Total() < 0 ? '-' : ''}${decimalValue}`;\r\n });\r\n\r\n this.ComparisonTotalLabel = ko.computed(() => {\r\n const decimalValue = FormatConverter.LocalizeDecimalOrInteger(Math.abs(this.ComparisonTotal()).toFixed(2));\r\n return `€ ${this.ComparisonTotal() < 0 ? '-' : ''}${decimalValue}`;\r\n });\r\n\r\n this.AlternativeTotalLabel = ko.computed(() => {\r\n const decimalValue = FormatConverter.LocalizeDecimalOrInteger(Math.abs(this.AlternativeTotal()).toFixed(2));\r\n return `* € ${this.AlternativeTotal() < 0 ? '-' : ''}${decimalValue}`;\r\n });\r\n\r\n this.ComparisonAlternativeTotalLabel = ko.computed(() => {\r\n const decimalValue = FormatConverter.LocalizeDecimalOrInteger(Math.abs(this.ComparisonAlternativeTotal()).toFixed(2));\r\n return `* € ${this.ComparisonAlternativeTotal() < 0 ? '-' : ''}${decimalValue}`;\r\n });\r\n }\r\n\r\n get LevelsClass(): string {\r\n return `levels-${this.Levels().length}`\r\n }\r\n\r\n get ActiveLevel() {\r\n if (this._compare() && this.Levels().length > 0) {\r\n const activeLevel = this.Levels().find(level => level.Active());\r\n if (activeLevel != null) {\r\n return activeLevel.Level;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n get IsActiveLevelLocked(): boolean {\r\n return this._isActiveLevelLocked();\r\n }\r\n\r\n set IsActiveLevelLocked(isActiveLevelLocked: boolean) {\r\n this._isActiveLevelLocked(isActiveLevelLocked);\r\n }\r\n\r\n get IsAlternativePriceEnabled(): boolean {\r\n return this.AlternativePriceModel() && this.AlternativePriceModel().IsEnabled;\r\n }\r\n\r\n get IsCalculationRuleValid(): boolean {\r\n return this.AlternativePriceModel() && this.AlternativePriceModel().IsCalculationRuleValid;\r\n }\r\n\r\n get AlternativePriceCheckboxLabel(): string {\r\n return `${this._labels.SHOW} *${this._labels.ALTERNATIVE_PRICE}`;\r\n }\r\n\r\n get AlternativePriceCheckboxTooltip(): string {\r\n if (!this.IsCalculationRuleValid) {\r\n return this._labels.COULD_NOT_CALCULATE_ALTERNATIVE_PRICE;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n get IsSaveDisabledByAction(): boolean {\r\n return this._isSaveDisabledByAction();\r\n }\r\n\r\n set IsSaveDisabledByAction(isSaveDisabled: boolean) {\r\n this._isSaveDisabledByAction(isSaveDisabled);\r\n }\r\n\r\n get IsSaveDisabledByUndefinedGroup() {\r\n return _.any(this.Groups(), group => group.Id === 0 && group.Name === this._labels.UNDEFINED && group.HasProducts());\r\n }\r\n\r\n get IsSaveInactive(): boolean {\r\n return this._pricesMiscalculated() || this.IsActiveLevelLocked || this.IsSaveDisabledByAction || this.IsSaveDisabledByUndefinedGroup;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AddAlternativePriceModel(alternativePriceModel: AlternativePriceModel) {\r\n this.AlternativePriceModel(alternativePriceModel);\r\n }\r\n\r\n AddMainProductPriceGroup(productId: number, productName: string, productNameTranslated: string, basePrice: number, quantity: number) {\r\n this.MainProductPriceGroup(new MainProductPriceGroup(productId, productName, basePrice, productNameTranslated));\r\n\r\n if (this._compare()) {\r\n this.MainProductPriceGroup()._compare(true);\r\n }\r\n\r\n this.Quantity(quantity);\r\n this.Total(basePrice);\r\n\r\n const alternativePrice = this.CalculateAlternativePrice(basePrice);\r\n if (alternativePrice !== null) {\r\n this.MainProductPriceGroup().AlternativePrice(alternativePrice);\r\n this.AlternativeTotal(alternativePrice);\r\n }\r\n }\r\n\r\n AddToPriceList(product: ProductPrice, groupId: number, groupName: string, groupTranslatedName: string) {\r\n let group = this.FindGroup(groupId, groupName);\r\n\r\n if (!group) {\r\n group = new PriceGroup(groupId, groupName, 0, groupTranslatedName);\r\n if (product._compare()) {\r\n group._compare(true);\r\n }\r\n group.AssignEventBus(this.EventBus);\r\n this.Groups.push(group);\r\n }\r\n\r\n const alternativePrice = this.CalculateAlternativePrice(product.Price());\r\n product.AlternativePrice(alternativePrice);\r\n\r\n const existingProduct = group.GetProduct(product.Id, product.RootGroupId, product.RootGroupName, product.KSeq, product.KSeqGuid);\r\n\r\n if (existingProduct) {\r\n if (existingProduct.Path != product.Path) {\r\n existingProduct.Path = product.Path;\r\n }\r\n\r\n if (existingProduct.Price() != product.Price() || existingProduct.Quantity() !== product.Quantity()) {\r\n existingProduct.Price(product.Price());\r\n existingProduct.AlternativePrice(product.AlternativePrice());\r\n existingProduct.Quantity(product.Quantity());\r\n\r\n group.Price(group.Price() + product.PositionPrice);\r\n this.Total(this.Total() + product.PositionPrice);\r\n\r\n group.AlternativePrice(group.AlternativePrice() + product.PositionAlternativePrice);\r\n this.AlternativeTotal(this.AlternativeTotal() + product.PositionAlternativePrice);\r\n }\r\n return;\r\n }\r\n\r\n product.AssignEventBus(this.EventBus);\r\n\r\n group.AddProduct(product);\r\n\r\n this.Total(this.Total() + product.PositionPrice);\r\n this.AlternativeTotal(this.AlternativeTotal() + product.PositionAlternativePrice);\r\n }\r\n\r\n AddToPriceListByLevel(product: ProductPrice, groupId: number, groupName: string, groupTranslatedName: string, level: string) {\r\n if (this._compare()) {\r\n product._compare(true);\r\n }\r\n\r\n if (level == this.MainLevel) {\r\n this.AddToPriceList(product, groupId, groupName, groupTranslatedName);\r\n return;\r\n }\r\n\r\n let group = this.FindGroup(groupId, groupName);\r\n\r\n if (!group) {\r\n group = new PriceGroup(groupId, groupName, 0, groupTranslatedName);\r\n if (this._compare()) {\r\n group._compare(true);\r\n }\r\n group.AssignEventBus(this.EventBus);\r\n this.Groups.push(group);\r\n }\r\n\r\n const alternativePrice = this.CalculateAlternativePrice(product.Price());\r\n product.AlternativePrice(alternativePrice);\r\n\r\n const existingProduct = group.GetProduct(product.Id, product.RootGroupId, product.RootGroupName, product.KSeq, product.KSeqGuid);\r\n\r\n if (existingProduct) {\r\n existingProduct.ComparisonPrice(product.Price());\r\n existingProduct.ComparisonAlternativePrice(product.AlternativePrice());\r\n existingProduct.ComparisonQuantity(product.Quantity());\r\n\r\n this.ComparisonTotal(this.ComparisonTotal() + existingProduct.ComparisonPositionPrice);\r\n group.ComparisonPrice(group.ComparisonPrice() + existingProduct.ComparisonPositionPrice);\r\n\r\n this.ComparisonAlternativeTotal(this.ComparisonAlternativeTotal() + existingProduct.ComparisonPositionAlternativePrice);\r\n group.ComparisonAlternativePrice(group.ComparisonAlternativePrice() + existingProduct.ComparisonPositionAlternativePrice);\r\n } else {\r\n product.ComparisonPrice(product.Price());\r\n product.ComparisonAlternativePrice(product.AlternativePrice());\r\n product.ComparisonQuantity(product.Quantity());\r\n\r\n product.Price(null);\r\n product.AlternativePrice(null);\r\n product.Quantity(null);\r\n\r\n product.AssignEventBus(this.EventBus);\r\n\r\n group.AddProduct(product);\r\n group.AssignEventBus(this.EventBus);\r\n\r\n this.ComparisonTotal(this.ComparisonTotal() + product.ComparisonPositionPrice);\r\n this.ComparisonAlternativeTotal(this.ComparisonAlternativeTotal() + product.ComparisonPositionAlternativePrice);\r\n }\r\n }\r\n\r\n RemoveFromPriceList(rootGroupId: number, rootGroupName: string, productName: string, kSeq: number, kSeqGuid: string) {\r\n const rootGroup = this.FindGroup(rootGroupId, rootGroupName);\r\n if (!rootGroup) return;\r\n\r\n const product = this.FindProductPrice(rootGroupId, rootGroupName, productName, kSeq, kSeqGuid);\r\n if (!product) return;\r\n\r\n const dependencies = this.GetDependenciesOf(product, rootGroupId, rootGroupName);\r\n dependencies.forEach(dependency => this.RemoveFromPriceList(rootGroupId, rootGroupName, dependency.Name, dependency.KSeq, dependency.KSeqGuid));\r\n\r\n this.Total(this.Total() - product.PositionPrice);\r\n this.AlternativeTotal(this.AlternativeTotal() - product.PositionAlternativePrice);\r\n\r\n if (product.ComparisonPrice() == null) {\r\n rootGroup.RemoveProduct(product);\r\n\r\n if (!rootGroup.HasProducts()) {\r\n this.RemoveGroup(rootGroup);\r\n }\r\n } else {\r\n rootGroup.Price(rootGroup.Price() - product.PositionPrice);\r\n product.Price(null);\r\n\r\n rootGroup.AlternativePrice(rootGroup.AlternativePrice() - product.PositionAlternativePrice);\r\n product.AlternativePrice(null);\r\n }\r\n }\r\n\r\n UpdatePriceFor(product: ProductPrice, groupId: number, groupName: string) {\r\n let group = this.FindGroup(groupId, groupName);\r\n\r\n const alternativePrice = this.CalculateAlternativePrice(product.Price());\r\n product.AlternativePrice(alternativePrice);\r\n\r\n const existingProduct = group.GetProduct(product.Id, product.RootGroupId, product.RootGroupName, product.KSeq, product.KSeqGuid);\r\n\r\n group.Price(group.Price() - existingProduct.PositionPrice);\r\n this.Total(this.Total() - existingProduct.PositionPrice);\r\n\r\n group.AlternativePrice(group.AlternativePrice() - existingProduct.PositionAlternativePrice);\r\n this.AlternativeTotal(this.AlternativeTotal() - existingProduct.PositionAlternativePrice);\r\n\r\n if (!product._priceMiscalculated()) {\r\n existingProduct._priceMiscalculated(false);\r\n group._priceMiscalculated(false);\r\n\r\n existingProduct.Price(product.Price());\r\n existingProduct.AlternativePrice(product.AlternativePrice());\r\n existingProduct.Quantity(product.Quantity());\r\n\r\n group.Price(group.Price() + existingProduct.PositionPrice);\r\n this.Total(this.Total() + existingProduct.PositionPrice);\r\n\r\n group.AlternativePrice(group.AlternativePrice() + existingProduct.PositionAlternativePrice);\r\n this.AlternativeTotal(this.AlternativeTotal() + existingProduct.PositionAlternativePrice);\r\n } else {\r\n existingProduct._priceMiscalculated(true);\r\n group._priceMiscalculated(true);\r\n existingProduct.Price(0);\r\n existingProduct.AlternativePrice(0);\r\n existingProduct.Quantity(existingProduct.Quantity());\r\n }\r\n }\r\n\r\n UpdateMainProductPrice(price: number) {\r\n const oldPrice = this.MainProductPriceGroup().Price();\r\n this.Total(this.Total() - oldPrice);\r\n\r\n const oldAlternativePrice = this.MainProductPriceGroup().AlternativePrice();\r\n this.AlternativeTotal(this.AlternativeTotal() - oldAlternativePrice);\r\n\r\n if (price != null) {\r\n this.MainProductPriceGroup()._priceMiscalculated(false);\r\n this.MainProductPriceGroup().Price(price);\r\n this.Total(this.Total() + price);\r\n\r\n const alternativePrice = this.CalculateAlternativePrice(price);\r\n if (alternativePrice !== null) {\r\n this.MainProductPriceGroup().AlternativePrice(alternativePrice);\r\n this.AlternativeTotal(this.AlternativeTotal() + alternativePrice);\r\n }\r\n } else {\r\n this.MainProductPriceGroup()._priceMiscalculated(true);\r\n this.MainProductPriceGroup().Price(0);\r\n this.MainProductPriceGroup().AlternativePrice(0);\r\n }\r\n }\r\n\r\n UpdateAssemblyQuantity(quantity: number) {\r\n this.Quantity(quantity);\r\n }\r\n\r\n GetDependenciesOf(product: ProductPrice, rootGroupId: number, rootGroupName: string): ProductPrice[] {\r\n const rootGroup = this.FindGroup(rootGroupId, rootGroupName);\r\n return rootGroup.GetDependenciesOf(product.Id);\r\n }\r\n\r\n OnContinueBtnClick() {\r\n this.SaveConfiguration();\r\n }\r\n\r\n private FindGroup(groupId: number, groupName: string): PriceGroup {\r\n return _.find(this.Groups(), group => group.Id === groupId && group.Name === groupName);\r\n }\r\n\r\n private FindProductPrice(groupId: number, groupName: string, productName: string, kSeq: number, kSeqGuid: string): ProductPrice {\r\n const group = _.find(this.Groups(), group => group.Id === groupId && group.Name === groupName);\r\n if (group) {\r\n return _.find(group.Products(), product => product.Name == productName && product.KSeq == kSeq && product.KSeqGuid == kSeqGuid);\r\n }\r\n return null;\r\n }\r\n\r\n private RemoveGroup(group: PriceGroup) {\r\n const index = this.Groups().indexOf(group);\r\n this.Groups.splice(index, 1);\r\n }\r\n\r\n private SaveConfiguration() {\r\n this.DispatchEvent(ConfigurationPageEvents.SaveConfigurationRequested);\r\n }\r\n\r\n CalculateAlternativePrice(price: number) {\r\n if (!this.AlternativePriceModel() || !this.AlternativePriceModel().IsCalculationRuleValid || price === null) {\r\n return null;\r\n }\r\n\r\n try {\r\n const alternativePriceCalculationRule = this.ReplaceAll(this.AlternativePriceModel().CalculationRule, \"PRICE\", `${price}`);\r\n return eval(alternativePriceCalculationRule);\r\n }\r\n catch {\r\n return null\r\n }\r\n }\r\n\r\n private ReplaceAll(str, find, replace) {\r\n return str.replace(new RegExp(find, 'g'), replace);\r\n }\r\n\r\n ToggleSelection(level: ConfigurationLevel) {\r\n this.Levels().forEach(level => level.Active(false));\r\n level.Active(true);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Guid} from \"Core/Common/Guid\";\r\nimport {EventBus} from \"Core/Common/EventBus/EventBus\";\r\n\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\n\r\nimport {PropertyEvaluationContext} from \"../Enums/PropertyEvaluationContext\";\r\n\r\nimport {ConfigurationPageVariablesStore} from \"../Stores/ConfigurationPageVariablesStore\";\r\nimport {ConfigurationPageVariable} from \"../Stores/Models/ConfigurationPageVariable\";\r\n\r\nimport {BaseProduct} from \"./BaseProduct\";\r\n\r\nimport {BaseProductGroup} from \"./BaseProductGroup\";\r\nimport {RootGroup} from \"./RootGroup\";\r\nimport {ProductGroup} from \"./ProductGroup\";\r\nimport {ProductPropertyGroup} from \"./Properties/ProductPropertyGroup\";\r\nimport {CustomFieldsGroup} from \"./CustomFields/CustomFieldsGroup\";\r\n\r\nimport {PropertyValue} from \"./PropertyValue\";\r\nimport {PropertyControl} from \"./Properties/Controls/PropertyControl\";\r\nimport {LookupPropertyControl} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/Properties/Controls/Lookup/LookupPropertyControl\";\r\nimport {CustomFieldValue} from \"./CustomFieldValue\";\r\nimport {CustomFieldControl} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/CustomFieldControl\";\r\nimport {CustomLookupControl} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/CustomFields/Controls/Lookup/CustomLookupControl\";\r\n\r\nimport {GetActionDependsOnValuesDto} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Params/GetActionDependsOnValuesDto\";\r\nimport {ActionDependsOnFieldValueResponse} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Models/ActionDependsOnFieldValueResponse\";\r\n\r\nimport {ProductPropertyGroupDescription} from \"./Properties/ProductPropertyGroupDescription\";\r\nimport {ProductPropertyControlFactory} from \"./Properties/Factory/ProductPropertyControlFactory\";\r\nimport {ProductCustomFieldControlFactory} from \"./CustomFields/Factory/ProductCustomFieldControlFactory\";\r\nimport {PropertyEvaluationExpression} from \"./PropertyEvaluationExpression\";\r\nimport {ProductCustomFieldDescription} from \"./CustomFields/ProductCustomFieldDescription\";\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {\r\n ConfigurationPageEvents,\r\n GroupActivatingEventArgs,\r\n ProductPartSelectingEventArgs,\r\n SelectProductPartEventArgs, PriceProductNavigatedEventArgs\r\n} from \"../Events/ConfigurationPageEvents\";\r\n\r\nimport Template from '../Templates/ProductPart.html';\r\n\r\nexport class ProductPart extends BaseProduct {\r\n private _labels = LABELS;\r\n\r\n private _guid: string;\r\n private _kSeqGuid: string;\r\n private _path: number[];\r\n private _variablesStore: ConfigurationPageVariablesStore;\r\n private _calculatePriceTimeout: number;\r\n private _quantityChangeSubscription: KnockoutSubscription;\r\n private _priceChangeSubscription: KnockoutSubscription;\r\n\r\n private _baseQuantity: number;\r\n\r\n Price: KnockoutObservable;\r\n Selected: KnockoutObservable;\r\n Level: string;\r\n\r\n PropertyGroups: ProductPropertyGroup[];\r\n PropertyEvaluationExpressions: PropertyEvaluationExpression[];\r\n CustomFieldsGroup: CustomFieldsGroup;\r\n\r\n InclusiveProducts: number[];\r\n ExclusiveProducts: number[];\r\n Defaults: number[];\r\n\r\n Groups: KnockoutObservableArray;\r\n SelectedGroup: KnockoutObservable;\r\n IsMain: KnockoutObservable;\r\n\r\n Quantity: KnockoutObservable;\r\n\r\n QuantityCanBeChanged: boolean;\r\n AlternativesCount: number;\r\n\r\n _tileImageSize: number;\r\n _selectedImageSize: number;\r\n _imageSizeClassName: string;\r\n\r\n _isPriceInDestination: KnockoutObservable;\r\n\r\n readOnly: KnockoutObservable;\r\n _priceMiscalculated: KnockoutObservable;\r\n\r\n IsDisabled: boolean;\r\n\r\n HasCollapseGroup: KnockoutObservable;\r\n\r\n IsDisabledByAction: KnockoutObservable;\r\n IsSelectingDisabledByAction: KnockoutComputed;\r\n\r\n constructor(private _orderEntityId: number,\r\n private _productEntityId: number,\r\n id: number,\r\n kSeq: number,\r\n name: string,\r\n nameTranslated: string,\r\n image: string,\r\n description: string,\r\n basePrice: number,\r\n price: number,\r\n level: string,\r\n propertyGroupsDescription: ProductPropertyGroupDescription[],\r\n propertyEvaluationExpressions: PropertyEvaluationExpression[],\r\n groups: ProductGroup[],\r\n parentGroup: BaseProductGroup,\r\n productCustomFieldsDescription: ProductCustomFieldDescription[],\r\n inclusiveProducts: number[],\r\n exclusiveProducts: number[],\r\n defaults: number[],\r\n quantity: number,\r\n quantityCanBeChanged: boolean,\r\n readOnly: boolean\r\n ) {\r\n\r\n super(id, kSeq, name, nameTranslated, image, description, basePrice, parentGroup);\r\n\r\n this.readOnly = ko.observable(readOnly);\r\n\r\n this._guid = Guid.NewGuid();\r\n this._kSeqGuid = null;\r\n this._path = this.BuildPathToRoot();\r\n\r\n this.Price = ko.observable(price || basePrice);\r\n this.Level = level;\r\n\r\n this.PropertyGroups = this.CreatePropertyGroups(propertyGroupsDescription);\r\n this.PropertyEvaluationExpressions = propertyEvaluationExpressions;\r\n this.CustomFieldsGroup = this.CreateCustomFieldsGroup(productCustomFieldsDescription);\r\n this.DefinePropertyAccessors();\r\n this.DefineCustomFieldAccessors();\r\n this.DefineQuantityAccessor();\r\n this.DefinePriceAccessor();\r\n\r\n this.InclusiveProducts = inclusiveProducts;\r\n this.ExclusiveProducts = exclusiveProducts;\r\n this.Defaults = defaults;\r\n\r\n this.Selected = ko.observable(false);\r\n this.Groups = ko.observableArray(groups);\r\n this.SelectedGroup = ko.observable(null);\r\n\r\n this._baseQuantity = quantity;\r\n this.Quantity = ko.observable(quantity);\r\n this.QuantityCanBeChanged = quantityCanBeChanged;\r\n this.IsMain = ko.observable(false);\r\n\r\n this._tileImageSize = null;\r\n this._selectedImageSize = null;\r\n this._imageSizeClassName = null;\r\n\r\n this._isPriceInDestination = ko.observable(this.IsPriceInDestination());\r\n\r\n this._priceMiscalculated = ko.observable(false);\r\n\r\n this.HasCollapseGroup = ko.observable(false);\r\n\r\n this.IsDisabledByAction = ko.observable(null);\r\n this.IsSelectingDisabledByAction = ko.computed(() => this.IsDisabledByAction() && !this.Selected());\r\n }\r\n\r\n set TileImageSize(value: number) {\r\n this._tileImageSize = value;\r\n }\r\n\r\n set SelectedImageSize(value: number) {\r\n this._selectedImageSize = value;\r\n }\r\n\r\n get IsExtra() {\r\n return this.ParentGroup.IsExtra;\r\n }\r\n\r\n get ImageSizeSelectedTileClassName(): string {\r\n if (this.ParentGroup.ExtendedView()) {\r\n return this.GetImageSizeClassName(this._selectedImageSize);\r\n } else {\r\n return this.GetImageSizeClassName(this._tileImageSize);\r\n }\r\n }\r\n\r\n GetImageSizeClassName(imageSize: number) {\r\n switch (imageSize) {\r\n case 60:\r\n return this._imageSizeClassName = 'imageSize-60';\r\n case 70:\r\n return this._imageSizeClassName = 'imageSize-70';\r\n case 80:\r\n return this._imageSizeClassName = 'imageSize-80';\r\n case 90:\r\n return this._imageSizeClassName = 'imageSize-90';\r\n default:\r\n return this._imageSizeClassName = 'imageSize-100';\r\n }\r\n }\r\n\r\n get PositionPrice(): number {\r\n return this.Price() * +this.Quantity();\r\n }\r\n\r\n get PriceLabel(): string {\r\n const priceValuePerPiece = this.Price().toFixed(2);\r\n const culturalPricePerPiece = FormatConverter.LocalizeDecimalOrInteger(priceValuePerPiece);\r\n return `€ ${culturalPricePerPiece}`;\r\n }\r\n\r\n GenerateKSeqGuid() {\r\n this._kSeqGuid = Guid.NewGuid();\r\n }\r\n\r\n get KSeqGuid(): string {\r\n return this._kSeqGuid;\r\n }\r\n\r\n get Path(): number[] {\r\n return this._path;\r\n }\r\n\r\n AssignEventBus(bus: EventBus) {\r\n super.AssignEventBus(bus);\r\n this.PropertyGroups.forEach(group => group.PropertyControls.forEach(control => control.AssignEventBus(this.EventBus)));\r\n }\r\n\r\n AssignVariableStore(store: ConfigurationPageVariablesStore) {\r\n this._variablesStore = store;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n ToggleSelection() {\r\n if (!this.IsMain()) {\r\n this.DispatchEvent(ConfigurationPageEvents.CheckAvailabilityToToggle, this);\r\n }\r\n }\r\n\r\n Toggle() {\r\n if (this.Selected()) {\r\n this.ParentGroup.Products(this.ParentGroup.Products().sort(function (a, b) {\r\n return (a.Id - b.Id);\r\n }));\r\n\r\n // if (this.ParentGroup.ExtendedView()) {\r\n // this.DispatchEvent(ConfigurationPageEvents.ShowingMore, this.ParentGroup);\r\n // }\r\n this.DispatchEvent(ConfigurationPageEvents.ShowingMore, this.ParentGroup);\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.ProductPartUnSelecting, this);\r\n } else {\r\n this.ParentGroup.Products().unshift(this.ParentGroup.Products().splice(this.ParentGroup.Products().indexOf(this), 1)[0]);\r\n\r\n if (!this.ParentGroup.ExtendedView()) {\r\n this.ParentGroup.ToggleView();\r\n }\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.BeforeSelectingProductPartEvent, this);\r\n }\r\n }\r\n\r\n Select() {\r\n this.DispatchEvent(ConfigurationPageEvents.ProductPartSelecting,\r\n new ProductPartSelectingEventArgs(this.parentGroup.GetActiveProduct(), this));\r\n\r\n this.MakeSelected();\r\n this.InitPropertyValues();\r\n this.InitCustomFieldValues();\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.ProductPartSelected, this);\r\n this.DispatchEvent(ConfigurationPageEvents.CheckSaveDisabilityByAction, this);\r\n }\r\n\r\n MakeSelected() {\r\n this.Selected(true);\r\n\r\n this.InitPropertyGroups();\r\n\r\n if (!this.readOnly()) {\r\n this.DeclareVariables();\r\n this.CheckActionVariableExpressions();\r\n }\r\n }\r\n\r\n EvaluateCalculatedExpressionsOnUnselect(productPart: ProductPart) {\r\n const parentGroup: BaseProductGroup = productPart.ParentGroup;\r\n\r\n (productPart && productPart._priceMiscalculated()) && productPart._priceMiscalculated(false);\r\n \r\n this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.Destination === `$group(\\'${parentGroup.Name}\\')`)\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action.clearOnUnselect') > -1)\r\n .forEach(expressionDescriptor => {\r\n const newDestination = expressionDescriptor.Expression\r\n .replace(/^(\\$action.clearOnUnselect\\()+|(\\))+$/g, \"\");\r\n const newValue = null;\r\n\r\n const newExpressionDescriptor = new PropertyEvaluationExpression(expressionDescriptor.Id, newDestination, newValue);\r\n\r\n const propertyControl = this.GetPropertyControlByExpression(newExpressionDescriptor);\r\n if (propertyControl) {\r\n propertyControl.ClearValue();\r\n }\r\n\r\n const customFieldControl = this.GetCustomFieldControlByExpression(newExpressionDescriptor);\r\n if (customFieldControl) {\r\n customFieldControl.ClearValue();\r\n }\r\n });\r\n }\r\n\r\n SetInitialPropertyValues() {\r\n this.PropertyGroups.forEach(propertyGroup => {\r\n propertyGroup.PropertyControls.forEach(control => control.SetValue(null));\r\n });\r\n }\r\n\r\n SetPropertyValues(propertyValues: PropertyValue[]) {\r\n this.PropertyGroups.forEach(propertyGroup => {\r\n propertyGroup.PropertyControls.forEach(propertyControl => {\r\n const propertyValue = propertyValues.find(pv => pv.Id == propertyControl.Id);\r\n\r\n if (propertyValue) {\r\n if (this.readOnly()) {\r\n propertyControl.readOnly(true);\r\n }\r\n propertyControl.SetValue(propertyValue);\r\n } else {\r\n propertyControl.SetValue(null);\r\n }\r\n });\r\n });\r\n }\r\n\r\n SetInitialCustomFieldValues() {\r\n this.CustomFieldsGroup.CustomFieldsControls.forEach(control => control.SetDefaultValue());\r\n }\r\n\r\n SetCustomFieldValues(customFieldValues: CustomFieldValue[]) {\r\n this.CustomFieldsGroup.CustomFieldsControls.forEach(customFieldControl => {\r\n const customFieldValue = customFieldValues.find(pv => pv.Id == customFieldControl.Id);\r\n\r\n if (customFieldValue) {\r\n if (this.readOnly()) {\r\n customFieldControl.readOnly(true);\r\n }\r\n customFieldControl.SetValue(customFieldValue);\r\n } else {\r\n customFieldControl.SetValue(null);\r\n }\r\n });\r\n }\r\n\r\n GetPropertyValues(): PropertyValue[] {\r\n return _.chain(this.PropertyGroups).map(propertyGroup => propertyGroup.GetPropertyValues()).flatten().value() as PropertyValue[];\r\n }\r\n\r\n GetPropertyValuesForPrice(): PropertyValue[] {\r\n return _.chain(this.PropertyGroups).map(propertyGroup => propertyGroup.GetPropertyValuesForPrice()).flatten().value() as PropertyValue[];\r\n }\r\n\r\n GetPropertyValuesForPreview(): PropertyValue[] {\r\n return _.chain(this.PropertyGroups).map(propertyGroup => propertyGroup.GetPropertyValuesForPreview()).flatten().value() as PropertyValue[];\r\n }\r\n\r\n GetCustomFieldValuesForPrice(): CustomFieldValue[] {\r\n return this.CustomFieldsGroup.GetCustomFieldValuesForPrice();\r\n }\r\n\r\n GetCustomFieldValues(): CustomFieldValue[] {\r\n return this.CustomFieldsGroup.GetCustomFieldValues();\r\n }\r\n\r\n FindNestedProduct(id: number, rootGroupId: number, rootGroupName: string, groupId: number, groupName: string, path: number[], kSeq: number, kSeqGuid: string): ProductPart {\r\n for (let groupIndex = 0; groupIndex < this.Groups().length; groupIndex++) {\r\n const currentGroup = this.Groups()[groupIndex];\r\n const product = currentGroup.FindProduct(id, rootGroupId, rootGroupName, groupId, groupName, path, kSeq, kSeqGuid);\r\n\r\n if (product) {\r\n return product;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n FindNestedProductById(id: number): ProductPart {\r\n for (let groupIndex = 0; groupIndex < this.Groups().length; groupIndex++) {\r\n const currentGroup = this.Groups()[groupIndex];\r\n const product = currentGroup.FindProductById(id);\r\n\r\n if (product) {\r\n return product;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n UnSelect() {\r\n this.Selected(false);\r\n\r\n this.UnSelectDependencies();\r\n this.ClearPropertyValues();\r\n this.ClearCustomFieldValues();\r\n this.SetBasePrice();\r\n this.SetBaseQuantity();\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.ProductPartUnSelected, this);\r\n\r\n if (this.IsDisabled) {\r\n this.ParentGroup.Products(this.ParentGroup.Products().filter(p => p.Id != this.Id || p.KSeq != this.KSeq || p.KSeqGuid != this.KSeqGuid));\r\n }\r\n\r\n if (this.ParentGroup.IsExtra) {\r\n this.ParentGroup.Products(this.ParentGroup.Products().filter(p => p.Id != this.Id || p.KSeq != this.KSeq || p.KSeqGuid != this.KSeqGuid));\r\n }\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.CheckSaveDisabilityByAction, this);\r\n }\r\n\r\n Remove() {\r\n this.DispatchEvent(ConfigurationPageEvents.ProductPartUnSelecting, this);\r\n }\r\n\r\n ZoomButtonClicked() {\r\n this.DispatchEvent(ConfigurationPageEvents.ZoomButtonClicked, this);\r\n }\r\n\r\n OnAddAsExtraClicked() {\r\n this.DispatchEvent(ConfigurationPageEvents.ProductPartAddingAsExtra, this);\r\n }\r\n\r\n RootGroupIs(group: RootGroup) {\r\n return (this.parentGroup.Id === group.Id && this.parentGroup.Name === group.Name) || this.parentGroup.ParentProduct.RootGroupIs(group);\r\n }\r\n\r\n AfterInit() {\r\n this.BindEvents();\r\n\r\n if (!this.readOnly()) {\r\n this.InitActionExpressions();\r\n }\r\n }\r\n\r\n Dispose() {\r\n this.Groups().forEach(group => group.Dispose());\r\n this.PropertyGroups.forEach(group => group.Dispose());\r\n this._quantityChangeSubscription.dispose();\r\n this._priceChangeSubscription.dispose();\r\n\r\n super.Dispose();\r\n }\r\n\r\n private CreatePropertyGroups(propertyGroupsDescription: ProductPropertyGroupDescription[]) {\r\n return propertyGroupsDescription.map(propertyGroupDescription => {\r\n const propertyControls = propertyGroupDescription.Properties.map(property =>\r\n ProductPropertyControlFactory.CreatePropertyControl(property, this, this._orderEntityId, this._productEntityId));\r\n\r\n propertyControls.forEach(control => control.readOnly(this.readOnly()));\r\n\r\n return new ProductPropertyGroup(propertyGroupDescription.TranslatedName || propertyGroupDescription.Name, propertyControls);\r\n });\r\n }\r\n\r\n private CreateCustomFieldsGroup(productCustomFieldsDescription: ProductCustomFieldDescription[]) {\r\n const customFieldControls = productCustomFieldsDescription.map(productCustomFieldDescription => {\r\n const customFieldControl = ProductCustomFieldControlFactory.CreateCustomControl(productCustomFieldDescription, this);\r\n customFieldControl.readOnly(this.readOnly());\r\n\r\n return customFieldControl;\r\n });\r\n\r\n return new CustomFieldsGroup(customFieldControls);\r\n }\r\n\r\n private DefinePropertyAccessors() {\r\n this.GetPropertyControls().forEach(control => {\r\n Object.defineProperty(this, control.Name, {\r\n enumerable: false,\r\n get: () => control.GetValueForPrice()\r\n });\r\n });\r\n }\r\n\r\n private DefineCustomFieldAccessors() {\r\n this.GetCustomFieldControls().forEach(control => {\r\n Object.defineProperty(this, control.Name, {\r\n enumerable: false,\r\n\t\t\t\tget: () => control.GetValueForPrice() && control.GetValueForPrice().Value\r\n });\r\n });\r\n }\r\n\r\n private DefineQuantityAccessor() {\r\n Object.defineProperty(this, 'QUANTITY', {\r\n enumerable: false,\r\n get: () => this.Quantity(),\r\n set: (value) => this.Quantity(value)\r\n });\r\n }\r\n\r\n private DefinePriceAccessor() {\r\n Object.defineProperty(this, 'PRICE', {\r\n enumerable: false,\r\n get: () => this.Price(),\r\n set: (value) => this.Price(value)\r\n });\r\n }\r\n\r\n private BindEvents() {\r\n this._quantityChangeSubscription = this.Quantity\r\n .subscribe(() => {\r\n if (this._calculatePriceTimeout) {\r\n clearTimeout(this._calculatePriceTimeout);\r\n }\r\n\r\n this._calculatePriceTimeout = setTimeout(() => this.DispatchEvent(ConfigurationPageEvents.QuantityChanged), 300);\r\n });\r\n\r\n this._priceChangeSubscription = this.Price\r\n .subscribe(() => {\r\n if (this._calculatePriceTimeout) {\r\n clearTimeout(this._calculatePriceTimeout);\r\n }\r\n\r\n this._calculatePriceTimeout = setTimeout(() => this.DispatchEvent(ConfigurationPageEvents.PriceChanged), 300);\r\n });\r\n\r\n this.HandleEvent(ConfigurationPageEvents.GroupActivating)\r\n .When(eventArgs => eventArgs.Data.OldGroup && eventArgs.Data.OldGroup.ParentProduct === this)\r\n .Using(eventArgs => eventArgs.Data.OldGroup.Deactivate())\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.GroupActivated)\r\n .When(eventArgs => eventArgs.Source.ParentProduct === this)\r\n .Using(eventArgs => this.SelectedGroup(eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.VariablesChanged)\r\n .When(() => !this.readOnly())\r\n .Using(eventArgs => this.SyncOnVariableValueChange(eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.PropertyValueChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => eventArgs.Source.IsPropertyOwner(this))\r\n .Using(eventArgs => this.SyncOnControlValueChange(eventArgs.Source, PropertyEvaluationContext.$this))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.PropertyValueChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => eventArgs.Source.IsPropertyOwner(this.GetParent()))\r\n .Using(eventArgs => this.SyncOnControlValueChange(eventArgs.Source, PropertyEvaluationContext.$parent))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.PropertyValueChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => !eventArgs.Source.IsPropertyOwner(this) && eventArgs.Source.IsPropertyOwner(this.GetRoot()))\r\n .Using(eventArgs => this.SyncOnControlValueChange(eventArgs.Source, PropertyEvaluationContext.$root))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.PropertyValueChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => !eventArgs.Source.IsPropertyOwner(this) &&\r\n eventArgs.Source.IsPropertyOwner(this.GetRoot().GetParent().MainProductPart))\r\n .Using(eventArgs => this.SyncOnControlValueChange(eventArgs.Source, PropertyEvaluationContext.$main))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.CustomFieldValueChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => eventArgs.Source.IsFieldOwner(this))\r\n .Using(eventArgs => this.SyncOnCustomFieldValueChange(eventArgs.Source, PropertyEvaluationContext.$this))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.CustomFieldValueChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => eventArgs.Source.IsFieldOwner(this.GetParent()))\r\n .Using(eventArgs => this.SyncOnCustomFieldValueChange(eventArgs.Source, PropertyEvaluationContext.$parent))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.CustomFieldValueChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => !eventArgs.Source.IsFieldOwner(this) && eventArgs.Source.IsFieldOwner(this.GetRoot()))\r\n .Using(eventArgs => this.SyncOnCustomFieldValueChange(eventArgs.Source, PropertyEvaluationContext.$root))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.CustomFieldValueChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => !eventArgs.Source.IsFieldOwner(this) &&\r\n eventArgs.Source.IsFieldOwner(this.GetRoot().GetParent().MainProductPart))\r\n .Using(eventArgs => this.SyncOnCustomFieldValueChange(eventArgs.Source, PropertyEvaluationContext.$main))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.QuantityChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => eventArgs.Source === this)\r\n .Using(eventArgs => this.SyncOnQuantityChange(eventArgs.Source, PropertyEvaluationContext.$this))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.QuantityChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => eventArgs.Source === this.GetParent())\r\n .Using(eventArgs => this.SyncOnQuantityChange(eventArgs.Source, PropertyEvaluationContext.$parent))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.QuantityChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => eventArgs.Source === this.GetRoot())\r\n .Using(eventArgs => this.SyncOnQuantityChange(eventArgs.Source, PropertyEvaluationContext.$root))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.QuantityChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => eventArgs.Source === this.GetRoot().GetParent().MainProductPart)\r\n .Using(eventArgs => this.SyncOnQuantityChange(eventArgs.Source, PropertyEvaluationContext.$main))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.PriceChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => eventArgs.Source === this)\r\n .Using(eventArgs => this.SyncOnPriceChange(eventArgs.Source, PropertyEvaluationContext.$this))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.PriceChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => eventArgs.Source === this.GetParent())\r\n .Using(eventArgs => this.SyncOnPriceChange(eventArgs.Source, PropertyEvaluationContext.$parent))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.PriceChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => eventArgs.Source === this.GetRoot())\r\n .Using(eventArgs => this.SyncOnPriceChange(eventArgs.Source, PropertyEvaluationContext.$root))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.PriceChanged)\r\n .When(() => !this.readOnly())\r\n .When(eventArgs => eventArgs.Source === this.GetRoot().GetParent().MainProductPart)\r\n .Using(eventArgs => this.SyncOnPriceChange(eventArgs.Source, PropertyEvaluationContext.$main))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.UnselectProduct)\r\n .When(eventArgs => this.Selected() &&\r\n this.Id == eventArgs.Data.Id &&\r\n this.parentGroup.Id == eventArgs.Data.GroupId &&\r\n this.parentGroup.Name == eventArgs.Data.GroupName &&\r\n this.KSeq == eventArgs.Data.KSeq &&\r\n this.KSeqGuid == eventArgs.Data.KSeqGuid &&\r\n _.isEqual(this._path, eventArgs.Data.Path) && !this.readOnly() && eventArgs.Data.isRemoveFromPriceItem)\r\n .Using(() => {\r\n this.HasCollapseGroup(true);\r\n this.DispatchEvent(ConfigurationPageEvents.ProductPartUnSelecting, this);\r\n })\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.UnselectProduct)\r\n .When(eventArgs => this.Selected() &&\r\n this.Id == eventArgs.Data.Id &&\r\n this.parentGroup.Id == eventArgs.Data.GroupId &&\r\n this.parentGroup.Name == eventArgs.Data.GroupName &&\r\n this.KSeq == eventArgs.Data.KSeq &&\r\n this.KSeqGuid == eventArgs.Data.KSeqGuid &&\r\n _.isEqual(this._path, eventArgs.Data.Path) && !this.readOnly())\r\n .Using(() => this.DispatchEvent(ConfigurationPageEvents.ProductPartUnSelecting, this))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ProductNavigatedInPriceList)\r\n .When(eventArgs => this.Selected() &&\r\n this.Id == eventArgs.Data.Id &&\r\n this.parentGroup.Id == eventArgs.Data.GroupId &&\r\n this.parentGroup.Name == eventArgs.Data.GroupName &&\r\n this.KSeq == eventArgs.Data.KSeq &&\r\n this.KSeqGuid == eventArgs.Data.KSeqGuid &&\r\n _.isEqual(this._path, eventArgs.Data.Path) &&\r\n (eventArgs.Data.OnlyOneLevel || this.Level === eventArgs.Data.ActiveLevel))\r\n .Using(() => this.NavigateToThis())\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.SelectProduct)\r\n .When(eventArgs => !this.Selected() &&\r\n this.Id == eventArgs.Data.Id &&\r\n this.parentGroup.Id == eventArgs.Data.GroupId &&\r\n this.parentGroup.Name == eventArgs.Data.GroupName &&\r\n _.isEqual(this._path, eventArgs.Data.Path) && !this.readOnly())\r\n .Using(() => this.Select())\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ToggleSelection)\r\n .When(eventArgs => {\r\n return this.Id == eventArgs.Data.Id &&\r\n this.parentGroup.Id == eventArgs.Data.parentGroup.Id &&\r\n this.parentGroup.Name == eventArgs.Data.parentGroup.Name &&\r\n _.isEqual(this._path, eventArgs.Data.Path) && !this.readOnly();\r\n })\r\n .Using(() => this.Toggle())\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.EvaluateCalculatedExpressionsOnUnselect)\r\n .Using((eventArgs) => this.EvaluateCalculatedExpressionsOnUnselect(eventArgs.Data))\r\n .Always();\r\n }\r\n\r\n private UnSelectDependencies() {\r\n this.Groups().forEach(group => {\r\n group.UnSelectActiveProduct();\r\n group.Deactivate();\r\n });\r\n }\r\n\r\n private InitPropertyGroups() {\r\n this.PropertyGroups.forEach(group => group.OnInit());\r\n }\r\n\r\n private DeclareVariables() {\r\n this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.Destination.startsWith('$'))\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') === -1)\r\n .filter(expressionDescriptor => this.IsExpressionCorrect(expressionDescriptor))\r\n .forEach(expressionDescriptor => this._variablesStore.Declare(expressionDescriptor.Destination, this.EvaluateExpression(expressionDescriptor)));\r\n }\r\n\r\n private CheckActionVariableExpressions() {\r\n const actionExpressionsWithVariables = this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.Destination.startsWith('$'))\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') > -1);\r\n\r\n this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => _.any(actionExpressionsWithVariables, actionExpressionsWithVariables =>\r\n expressionDescriptor.Expression.indexOf(actionExpressionsWithVariables.Destination) > -1))\r\n .forEach(expressionDescriptor => {\r\n expressionDescriptor.SkipError = true;\r\n });\r\n }\r\n\r\n private ClearPropertyValues() {\r\n this.PropertyGroups.forEach(propertyGroup => propertyGroup.ClearPropertyValues());\r\n }\r\n\r\n private ClearCustomFieldValues() {\r\n this.CustomFieldsGroup.ClearCustomFieldValues();\r\n }\r\n\r\n private SetBasePrice() {\r\n this.Price(this.basePrice);\r\n }\r\n\r\n private SetBaseQuantity() {\r\n this.Quantity(this._baseQuantity);\r\n }\r\n\r\n private InitPropertyValues() {\r\n this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.Destination.indexOf('$') === -1)\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') === -1)\r\n .forEach(expressionDescriptor => this.EvaluateExpressionForControl(expressionDescriptor));\r\n }\r\n\r\n private InitCustomFieldValues() {\r\n this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.Destination.indexOf('$') === -1)\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') === -1)\r\n .forEach(expressionDescriptor => this.EvaluateExpressionForCustomField(expressionDescriptor));\r\n }\r\n\r\n private InitActionExpressions() {\r\n this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') > -1)\r\n .forEach(expressionDescriptor => this.EvaluateActionExpression(expressionDescriptor));\r\n }\r\n\r\n InitActionDependsOnExpressions(actionDependsOnValues: ActionDependsOnFieldValueResponse[]) {\r\n this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action.dependsOn') > -1)\r\n .forEach(expressionDescriptor => {\r\n const fieldName = expressionDescriptor.Expression\r\n .replace(/^(\\$action.dependsOn\\(\\')+|(\\'\\))+$/g, \"\")\r\n ?.split('.')[1];\r\n const fieldValue = _.find(actionDependsOnValues, actionDependsOnValue => actionDependsOnValue.Name === fieldName)?.Value;\r\n\r\n const newExpressionDescriptor = new PropertyEvaluationExpression(expressionDescriptor.Id, expressionDescriptor.Destination, fieldValue);\r\n\r\n const propertyControl = this.GetPropertyControlByExpression(newExpressionDescriptor);\r\n if (propertyControl && !propertyControl.GetValueForSave()) {\r\n if (propertyControl instanceof LookupPropertyControl) {\r\n const actionExpressionValue = Number(newExpressionDescriptor.Expression);\r\n propertyControl.SetActionExpressionValue(actionExpressionValue);\r\n return;\r\n }\r\n\r\n propertyControl.SetValue(new PropertyValue(0, newExpressionDescriptor.Expression));\r\n }\r\n\r\n const customFieldControl = this.GetCustomFieldControlByExpression(newExpressionDescriptor);\r\n if (customFieldControl && !customFieldControl.GetValueForSave().Value) {\r\n if (customFieldControl instanceof CustomLookupControl) {\r\n const actionExpressionValue = Number(newExpressionDescriptor.Expression)\r\n customFieldControl.SetActionExpressionValue(actionExpressionValue);\r\n return;\r\n }\r\n\r\n customFieldControl.SetValue(new CustomFieldValue(0, newExpressionDescriptor.Expression));\r\n }\r\n\r\n if (newExpressionDescriptor.Destination.startsWith('$')) {\r\n this._variablesStore.Declare(newExpressionDescriptor.Destination, newExpressionDescriptor.Expression);\r\n this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf(newExpressionDescriptor.Destination) > -1)\r\n .forEach(expressionDescriptor => {\r\n expressionDescriptor.SkipEvaluation = true;\r\n this.EvaluateExpressionForControl(expressionDescriptor);\r\n this.EvaluateExpressionForCustomField(expressionDescriptor);\r\n });\r\n }\r\n });\r\n }\r\n\r\n InitActionDefaultExpressions() {\r\n this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action.default') > -1)\r\n .forEach(expressionDescriptor => {\r\n const defaultValue = expressionDescriptor.Expression\r\n .replace(/^(\\$action.default\\()+|(\\))+$/g, \"\")\r\n .replace(/^(\\')+|(\\')+$/g, \"\");\r\n\r\n const newExpressionDescriptor = new PropertyEvaluationExpression(expressionDescriptor.Id, expressionDescriptor.Destination, defaultValue);\r\n\r\n const propertyControl = this.GetPropertyControlByExpression(newExpressionDescriptor);\r\n if (propertyControl && !propertyControl.GetValueForSave()) {\r\n if (propertyControl instanceof LookupPropertyControl) {\r\n const actionExpressionValue = Number(newExpressionDescriptor.Expression);\r\n propertyControl.SetActionExpressionValue(actionExpressionValue);\r\n return;\r\n }\r\n\r\n propertyControl.SetValue(new PropertyValue(0, newExpressionDescriptor.Expression));\r\n }\r\n\r\n const customFieldControl = this.GetCustomFieldControlByExpression(newExpressionDescriptor);\r\n if (customFieldControl && !customFieldControl.GetValueForSave().Value) {\r\n if (customFieldControl instanceof CustomLookupControl) {\r\n const actionExpressionValue = Number(newExpressionDescriptor.Expression);\r\n customFieldControl.SetActionExpressionValue(actionExpressionValue);\r\n return;\r\n }\r\n\r\n customFieldControl.SetValue(new CustomFieldValue(0, newExpressionDescriptor.Expression));\r\n }\r\n\r\n if (newExpressionDescriptor.Destination.startsWith('$')) {\r\n this._variablesStore.Declare(newExpressionDescriptor.Destination, newExpressionDescriptor.Expression);\r\n this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf(newExpressionDescriptor.Destination) > -1)\r\n .forEach(expressionDescriptor => {\r\n expressionDescriptor.SkipEvaluation = true;\r\n this.EvaluateExpressionForControl(expressionDescriptor);\r\n this.EvaluateExpressionForCustomField(expressionDescriptor);\r\n });\r\n }\r\n });\r\n }\r\n\r\n GetActionDependsOnDto() {\r\n if (this.readOnly()){\r\n return null;\r\n }\r\n\r\n const actionDependsOnExpressions = this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action.dependsOn') > -1)\r\n\r\n if (!_.any(actionDependsOnExpressions)){\r\n return null;\r\n }\r\n\r\n const entityName = actionDependsOnExpressions[0].Expression\r\n .replace(/^(\\$action.dependsOn\\(\\')+|(\\'\\))+$/g, \"\")\r\n ?.split('.')[0];\r\n\r\n if (!entityName){\r\n return null;\r\n }\r\n\r\n let fieldNames = [];\r\n _.each(actionDependsOnExpressions, expression => {\r\n const fieldName = expression.Expression\r\n .replace(/^(\\$action.dependsOn\\(\\')+|(\\'\\))+$/g, \"\")\r\n ?.split('.')[1];\r\n if (!fieldName) {\r\n return;\r\n }\r\n\r\n fieldNames.push(fieldName);\r\n });\r\n\r\n return new GetActionDependsOnValuesDto(entityName, fieldNames, this.Id);\r\n }\r\n\r\n private EvaluateExpressionForControl(expressionDescriptor: PropertyEvaluationExpression) {\r\n const control = this.GetPropertyControlByExpression(expressionDescriptor);\r\n\r\n if (!control || !this.IsExpressionCorrect(expressionDescriptor)) {\r\n return;\r\n }\r\n\r\n control.SetValue(new PropertyValue(0, this.EvaluateExpression(expressionDescriptor)));\r\n }\r\n\r\n private EvaluateExpressionForCustomField(expressionDescriptor: PropertyEvaluationExpression) {\r\n let customFieldControl: CustomFieldControl;\r\n\r\n if (expressionDescriptor.Destination.indexOf('$main') > -1) {\r\n if (expressionDescriptor.Destination.endsWith('.QUANTITY')) {\r\n if (this.IsExpressionCorrect(expressionDescriptor)) {\r\n this.GetRoot().GetParent().MainProductPart.Quantity(Number(this.EvaluateExpression(expressionDescriptor)));\r\n }\r\n return;\r\n }\r\n\r\n customFieldControl = this.GetRoot().GetParent().MainProductPart.GetCustomFieldControl(expressionDescriptor.Destination.replace(\"$main.\", \"\"));\r\n } else if (expressionDescriptor.Destination.indexOf('$root') > -1) {\r\n if (expressionDescriptor.Destination.endsWith('.QUANTITY')) {\r\n if (this.IsExpressionCorrect(expressionDescriptor)) {\r\n this.GetRoot().Quantity(Number(this.EvaluateExpression(expressionDescriptor)));\r\n }\r\n return;\r\n }\r\n\r\n customFieldControl = this.GetRoot().GetCustomFieldControl(expressionDescriptor.Destination.replace(\"$root.\", \"\"));\r\n } else if (expressionDescriptor.Destination.indexOf('$parent') > -1) {\r\n const parentElement = this.ParentGroup.IsExtra ? this.GetRoot() : this.GetParent();\r\n\r\n if (expressionDescriptor.Destination.endsWith('.QUANTITY')) {\r\n if (this.IsExpressionCorrect(expressionDescriptor)) {\r\n parentElement.Quantity(Number(this.EvaluateExpression(expressionDescriptor)));\r\n }\r\n return;\r\n }\r\n\r\n customFieldControl = parentElement.GetCustomFieldControl(expressionDescriptor.Destination.replace(\"$parent.\", \"\"));\r\n } else {\r\n if (expressionDescriptor.Destination === 'QUANTITY') {\r\n if (this.IsExpressionCorrect(expressionDescriptor)) {\r\n this.Quantity(Number(this.EvaluateExpression(expressionDescriptor)));\r\n }\r\n return;\r\n } else if (expressionDescriptor.Destination === 'PRICE') {\r\n if (this.IsExpressionCorrect(expressionDescriptor)) {\r\n this.Price(Number(this.EvaluateExpression(expressionDescriptor)));\r\n }\r\n return;\r\n }\r\n\r\n customFieldControl = this.GetCustomFieldControl(expressionDescriptor.Destination);\r\n }\r\n\r\n if (!customFieldControl || !this.IsExpressionCorrect(expressionDescriptor)) {\r\n return;\r\n }\r\n\r\n customFieldControl.SetValue(new CustomFieldValue(0, this.EvaluateExpression(expressionDescriptor)));\r\n }\r\n\r\n private EvaluateActionExpression(expressionDescriptor: PropertyEvaluationExpression) {\r\n if (expressionDescriptor.Expression.indexOf('$action.disable') > -1 &&\r\n expressionDescriptor.Destination === `$group(\\'${this.ParentGroup.Name}\\')` &&\r\n this.IsExpressionCorrect(expressionDescriptor)) {\r\n this.IsDisabledByAction(!!this.EvaluateExpression(expressionDescriptor));\r\n } else if (expressionDescriptor.Expression.indexOf('$action.hide') > -1 &&\r\n (expressionDescriptor.Destination === `$group(\\'${this.ParentGroup.Name}\\')` ||\r\n (expressionDescriptor.Destination === '$group($main)' && this.IsMain()))) {\r\n const fieldName = expressionDescriptor.Expression.replace(/^(\\$action.hide\\(\\')+|(\\'\\))+$/g, \"\");\r\n\r\n _.each(this.CustomFieldsGroup.CustomFieldsControls, customFieldControl => {\r\n if (customFieldControl.Name && customFieldControl.Name.toUpperCase() === fieldName.toUpperCase()) {\r\n customFieldControl.IsHiddenByAction = true;\r\n }\r\n });\r\n\r\n _.each(this.PropertyGroups, propertyGroup => {\r\n _.each(propertyGroup.PropertyControls, propertyControl => {\r\n if (propertyControl.Name && propertyControl.Name.toUpperCase() === fieldName.toUpperCase()) {\r\n propertyControl.IsHiddenByAction = true;\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n private GetPropertyControlByExpression(expressionDescriptor: PropertyEvaluationExpression) {\r\n let control: PropertyControl;\r\n if (expressionDescriptor.Destination.indexOf('$main') > -1) {\r\n control = this.GetRoot().GetParent().MainProductPart.GetPropertyControl(expressionDescriptor.Destination.replace(\"$main.\", \"\"));\r\n } else if (expressionDescriptor.Destination.indexOf('$root') > -1) {\r\n control = this.GetRoot().GetPropertyControl(expressionDescriptor.Destination.replace(\"$root.\", \"\"));\r\n } else if (expressionDescriptor.Destination.indexOf('$parent') > -1) {\r\n const parentElement = this.ParentGroup.IsExtra ? this.GetRoot() : this.GetParent();\r\n control = parentElement.GetPropertyControl(expressionDescriptor.Destination.replace(\"$parent.\", \"\"));\r\n } else {\r\n control = this.GetPropertyControl(expressionDescriptor.Destination);\r\n }\r\n\r\n return control;\r\n }\r\n\r\n private GetCustomFieldControlByExpression(expressionDescriptor: PropertyEvaluationExpression) {\r\n let customFieldControl: CustomFieldControl;\r\n\r\n if (expressionDescriptor.Destination.indexOf('$main') > -1) {\r\n customFieldControl = this.GetRoot().GetParent().MainProductPart.GetCustomFieldControl(expressionDescriptor.Destination.replace(\"$main.\", \"\"));\r\n } else if (expressionDescriptor.Destination.indexOf('$root') > -1) {\r\n customFieldControl = this.GetRoot().GetCustomFieldControl(expressionDescriptor.Destination.replace(\"$root.\", \"\"));\r\n } else if (expressionDescriptor.Destination.indexOf('$parent') > -1) {\r\n const parentElement = this.ParentGroup.IsExtra ? this.GetRoot() : this.GetParent();\r\n customFieldControl = parentElement.GetCustomFieldControl(expressionDescriptor.Destination.replace(\"$parent.\", \"\"));\r\n } else {\r\n customFieldControl = this.GetCustomFieldControl(expressionDescriptor.Destination);\r\n }\r\n\r\n return customFieldControl;\r\n }\r\n\r\n private SyncOnControlValueChange(triggeredPropertyControl: PropertyControl, evaluationContext: string) {\r\n let variablesEvaluationExpressions = [];\r\n\r\n if (triggeredPropertyControl.IsPropertyOwner(this)) {\r\n variablesEvaluationExpressions = this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.HasVariableDestination() &&\r\n expressionDescriptor.Expression.indexOf(`${evaluationContext}.${triggeredPropertyControl.Name}`) > -1);\r\n }\r\n\r\n variablesEvaluationExpressions\r\n .filter(expressionDescriptor => this.IsExpressionCorrect(expressionDescriptor))\r\n .forEach(expressionDescriptor => this._variablesStore.Set(expressionDescriptor.Destination, this.EvaluateExpression(expressionDescriptor)));\r\n\r\n const changedVariables = variablesEvaluationExpressions.map(expressionDescriptor => expressionDescriptor.Destination);\r\n let expressionsToReevaluate = this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => !(triggeredPropertyControl.IsPropertyOwner(this) && expressionDescriptor.Destination === triggeredPropertyControl.Name) ||\r\n (!triggeredPropertyControl.IsPropertyOwner(this) && expressionDescriptor.Expression.indexOf(\"$main\") > -1))\r\n .filter(expressionDescriptor => !expressionDescriptor.HasEvaluationContext() ||\r\n expressionDescriptor.Expression.indexOf(`${evaluationContext}.${triggeredPropertyControl.Name}`) > -1)\r\n .filter(expressionDescriptor => _.all(changedVariables, changedVariable => expressionDescriptor.Expression.indexOf(changedVariable) === -1));\r\n\r\n let actionExpressionsToReevaluate = expressionsToReevaluate\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') > -1);\r\n\r\n if (actionExpressionsToReevaluate && _.any(actionExpressionsToReevaluate)) {\r\n actionExpressionsToReevaluate.forEach(expressionDescriptor => this.EvaluateActionExpression(expressionDescriptor));\r\n this.DispatchEvent(ConfigurationPageEvents.CheckSaveDisabilityByAction, this);\r\n }\r\n\r\n if (!this.Selected()) {\r\n return;\r\n }\r\n\r\n let nonActionExpressionsToReevaluate = expressionsToReevaluate\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') === -1);\r\n\r\n nonActionExpressionsToReevaluate.forEach(expressionDescriptor => this.EvaluateExpressionForControl(expressionDescriptor));\r\n nonActionExpressionsToReevaluate.forEach(expressionDescriptor => this.EvaluateExpressionForCustomField(expressionDescriptor));\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.ProductPropertyValueChanged, this);\r\n\r\n if (!triggeredPropertyControl.PriceInfluence) {\r\n return;\r\n }\r\n\r\n if (nonActionExpressionsToReevaluate.length > 0 || triggeredPropertyControl.IsPropertyOwner(this)) {\r\n this.CalculatePrice();\r\n }\r\n }\r\n\r\n private SyncOnCustomFieldValueChange(triggeredCustomFieldControl: CustomFieldControl, evaluationContext: string) {\r\n let variablesEvaluationExpressions = [];\r\n\r\n if (triggeredCustomFieldControl.IsFieldOwner(this)) {\r\n variablesEvaluationExpressions = this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.HasVariableDestination() &&\r\n expressionDescriptor.Expression.indexOf(`${evaluationContext}.${triggeredCustomFieldControl.Name}`) > -1);\r\n }\r\n\r\n variablesEvaluationExpressions\r\n .filter(expressionDescriptor => this.IsExpressionCorrect(expressionDescriptor))\r\n .forEach(expressionDescriptor => this._variablesStore.Set(expressionDescriptor.Destination, this.EvaluateExpression(expressionDescriptor)));\r\n\r\n const changedVariables = variablesEvaluationExpressions.map(expressionDescriptor => expressionDescriptor.Destination);\r\n let expressionsToReevaluate = this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => !(triggeredCustomFieldControl.IsFieldOwner(this) && expressionDescriptor.Destination === triggeredCustomFieldControl.Name) ||\r\n (!triggeredCustomFieldControl.IsFieldOwner(this) && expressionDescriptor.Expression.indexOf(\"$main\") > -1))\r\n .filter(expressionDescriptor => !expressionDescriptor.HasEvaluationContext() ||\r\n expressionDescriptor.Expression.indexOf(`${evaluationContext}.${triggeredCustomFieldControl.Name}`) > -1)\r\n .filter(expressionDescriptor => _.all(changedVariables, changedVariable => expressionDescriptor.Expression.indexOf(changedVariable) === -1));\r\n\r\n let actionExpressionsToReevaluate = expressionsToReevaluate\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') > -1);\r\n\r\n if (actionExpressionsToReevaluate && _.any(actionExpressionsToReevaluate)) {\r\n actionExpressionsToReevaluate.forEach(expressionDescriptor => this.EvaluateActionExpression(expressionDescriptor));\r\n this.DispatchEvent(ConfigurationPageEvents.CheckSaveDisabilityByAction, this);\r\n }\r\n\r\n if (!this.Selected()) {\r\n return;\r\n }\r\n\r\n let nonActionExpressionsToReevaluate = expressionsToReevaluate\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') === -1);\r\n\r\n nonActionExpressionsToReevaluate.forEach(expressionDescriptor => this.EvaluateExpressionForControl(expressionDescriptor));\r\n nonActionExpressionsToReevaluate.forEach(expressionDescriptor => this.EvaluateExpressionForCustomField(expressionDescriptor));\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.ProductCustomFieldValueChanged, this);\r\n\r\n if (!triggeredCustomFieldControl.PriceInfluence) {\r\n return;\r\n }\r\n\r\n if (nonActionExpressionsToReevaluate.length > 0 || triggeredCustomFieldControl.IsFieldOwner(this)) {\r\n this.CalculatePrice();\r\n }\r\n }\r\n\r\n private SyncOnVariableValueChange(variable: ConfigurationPageVariable) {\r\n let expressionsToReevaluate = this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.HasVariableDestination())\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf(variable.Name) > -1);\r\n\r\n let actionExpressionsToReevaluate = expressionsToReevaluate\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') > -1);\r\n\r\n if (actionExpressionsToReevaluate && _.any(actionExpressionsToReevaluate)) {\r\n actionExpressionsToReevaluate.forEach(expressionDescriptor => this.EvaluateActionExpression(expressionDescriptor));\r\n this.DispatchEvent(ConfigurationPageEvents.CheckSaveDisabilityByAction, this);\r\n }\r\n\r\n if (!this.Selected()) {\r\n return;\r\n }\r\n\r\n let nonActionExpressionsToReevaluate = expressionsToReevaluate\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') === -1);\r\n\r\n nonActionExpressionsToReevaluate.forEach(expressionDescriptor => {\r\n this.EvaluateExpressionForControl(expressionDescriptor);\r\n this.EvaluateExpressionForCustomField(expressionDescriptor);\r\n });\r\n }\r\n\r\n private SyncOnQuantityChange(triggeredIn: ProductPart, evaluationContext: string) {\r\n let variablesEvaluationExpressions = [];\r\n\r\n if (triggeredIn === this) {\r\n variablesEvaluationExpressions = this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.HasVariableDestination() &&\r\n expressionDescriptor.Expression.indexOf(`${evaluationContext}.QUANTITY`) > -1);\r\n }\r\n\r\n variablesEvaluationExpressions\r\n .filter(expressionDescriptor => this.IsExpressionCorrect(expressionDescriptor))\r\n .forEach(expressionDescriptor => this._variablesStore.Set(expressionDescriptor.Destination, this.EvaluateExpression(expressionDescriptor)));\r\n\r\n const changedVariables = variablesEvaluationExpressions.map(expressionDescriptor => expressionDescriptor.Destination);\r\n let expressionsToReevaluate = this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => !(triggeredIn === this && expressionDescriptor.Destination === 'QUANTITY') ||\r\n (triggeredIn !== this && expressionDescriptor.Expression.indexOf(\"$main\") > -1))\r\n .filter(expressionDescriptor => !expressionDescriptor.HasEvaluationContext() ||\r\n expressionDescriptor.Expression.indexOf(`${evaluationContext}.QUANTITY`) > -1)\r\n .filter(expressionDescriptor => _.all(changedVariables, changedVariable => expressionDescriptor.Expression.indexOf(changedVariable) === -1));\r\n\r\n let actionExpressionsToReevaluate = expressionsToReevaluate\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') > -1);\r\n\r\n if (actionExpressionsToReevaluate && _.any(actionExpressionsToReevaluate)) {\r\n actionExpressionsToReevaluate.forEach(expressionDescriptor => this.EvaluateActionExpression(expressionDescriptor));\r\n this.DispatchEvent(ConfigurationPageEvents.CheckSaveDisabilityByAction, this);\r\n }\r\n\r\n if (!this.Selected()) {\r\n return;\r\n }\r\n\r\n let nonActionExpressionsToReevaluate = expressionsToReevaluate\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') === -1);\r\n\r\n nonActionExpressionsToReevaluate.forEach(expressionDescriptor => {\r\n this.EvaluateExpressionForControl(expressionDescriptor);\r\n this.EvaluateExpressionForCustomField(expressionDescriptor);\r\n });\r\n }\r\n\r\n private SyncOnPriceChange(triggeredIn: ProductPart, evaluationContext: string) {\r\n let variablesEvaluationExpressions = [];\r\n\r\n if (triggeredIn === this || (triggeredIn.IsMain && evaluationContext === PropertyEvaluationContext.$main)) {\r\n variablesEvaluationExpressions = this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => expressionDescriptor.HasVariableDestination() &&\r\n expressionDescriptor.Expression.indexOf(`${evaluationContext}.PRICE`) > -1);\r\n }\r\n\r\n variablesEvaluationExpressions\r\n .filter(expressionDescriptor => this.IsExpressionCorrect(expressionDescriptor))\r\n .forEach(expressionDescriptor => this._variablesStore.Set(expressionDescriptor.Destination, this.EvaluateExpression(expressionDescriptor)));\r\n\r\n const changedVariables = variablesEvaluationExpressions.map(expressionDescriptor => expressionDescriptor.Destination);\r\n let expressionsToReevaluate = this.PropertyEvaluationExpressions\r\n .filter(expressionDescriptor => !(triggeredIn === this && expressionDescriptor.Destination === 'PRICE') ||\r\n (triggeredIn !== this && expressionDescriptor.Expression.indexOf(\"$main\") > -1))\r\n .filter(expressionDescriptor => !expressionDescriptor.HasEvaluationContext() ||\r\n expressionDescriptor.Expression.indexOf(`${evaluationContext}.PRICE`) > -1)\r\n .filter(expressionDescriptor => _.all(changedVariables, changedVariable => expressionDescriptor.Expression.indexOf(changedVariable) === -1));\r\n\r\n let actionExpressionsToReevaluate = expressionsToReevaluate\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') > -1);\r\n\r\n if (actionExpressionsToReevaluate && _.any(actionExpressionsToReevaluate)) {\r\n actionExpressionsToReevaluate.forEach(expressionDescriptor => this.EvaluateActionExpression(expressionDescriptor));\r\n this.DispatchEvent(ConfigurationPageEvents.CheckSaveDisabilityByAction, this);\r\n }\r\n\r\n if (!this.Selected()) {\r\n return;\r\n }\r\n\r\n let nonActionExpressionsToReevaluate = expressionsToReevaluate\r\n .filter(expressionDescriptor => expressionDescriptor.Expression.indexOf('$action') === -1);\r\n\r\n nonActionExpressionsToReevaluate.forEach(expressionDescriptor => {\r\n this.EvaluateExpressionForControl(expressionDescriptor);\r\n this.EvaluateExpressionForCustomField(expressionDescriptor);\r\n });\r\n }\r\n\r\n private IsPriceInDestination() {\r\n return this.PropertyEvaluationExpressions &&\r\n _.any(this.PropertyEvaluationExpressions, expressionDescriptor => expressionDescriptor.Destination === 'PRICE');\r\n }\r\n\r\n private CalculatePrice() {\r\n if (this._isPriceInDestination()) {\r\n return;\r\n }\r\n\r\n this.CalculatePriceWithDelay(500);\r\n }\r\n\r\n private CalculatePriceWithDelay(delay: number) {\r\n if (this._calculatePriceTimeout) {\r\n clearTimeout(this._calculatePriceTimeout);\r\n }\r\n\r\n this._calculatePriceTimeout = setTimeout(() => this.DispatchEvent(ConfigurationPageEvents.PriceCalculationRequested), delay);\r\n }\r\n\r\n private BuildJsExpression(expressionDescriptor: PropertyEvaluationExpression) {\r\n const declaredVariables = this._variablesStore.GetList()\r\n .sort((v1, v2) => v1.Name.length > v2.Name.length ? 1 : -1);\r\n\r\n let newExpression = expressionDescriptor.Expression\r\n .split(PropertyEvaluationContext.$this).join('this')\r\n .split(PropertyEvaluationContext.$parent).join('this.GetParent()')\r\n .split(PropertyEvaluationContext.$root).join('this.GetRoot()')\r\n .split(PropertyEvaluationContext.$main).join('this.GetRoot().GetParent().MainProductPart')\r\n .split('$action.disable').join('');\r\n\r\n declaredVariables.forEach(v => newExpression = newExpression.replace(v.Name, v.Value));\r\n return newExpression;\r\n }\r\n\r\n private IsExpressionCorrect(expressionDescriptor) {\r\n try {\r\n if (expressionDescriptor.SkipEvaluation) {\r\n return true;\r\n }\r\n\r\n const jsExpression = this.BuildJsExpression(expressionDescriptor);\r\n eval(jsExpression);\r\n return true;\r\n }\r\n catch (error) {\r\n if (!expressionDescriptor.SkipError) {\r\n console.error(error);\r\n }\r\n return false;\r\n }\r\n }\r\n\r\n private EvaluateExpression(expressionDescriptor: PropertyEvaluationExpression) {\r\n\t\tconst jsExpression = this.BuildJsExpression(expressionDescriptor);\r\n\t\tif (expressionDescriptor.SkipEvaluation) {\r\n\t\t return jsExpression;\r\n }\r\n\r\n\t\tconst evaluatedValue = eval(jsExpression);\r\n\t\treturn evaluatedValue || evaluatedValue === 0 || evaluatedValue === '' ? evaluatedValue : null;\r\n }\r\n\r\n private GetParent() {\r\n return this.parentGroup.ParentProduct as ProductPart;\r\n }\r\n\r\n private GetRoot() {\r\n if (this.ParentGroup.IsRoot) {\r\n return this;\r\n }\r\n\r\n const parentProduct = this.GetParent();\r\n return parentProduct.GetRoot();\r\n }\r\n\r\n private BuildPathToRoot(): number[] {\r\n if (this.parentGroup.IsRoot) {\r\n return [];\r\n }\r\n\r\n const parentProduct = this.GetParent();\r\n return [...parentProduct.BuildPathToRoot(), parentProduct.Id];\r\n }\r\n\r\n private NavigateToThis() {\r\n let products: ProductPart[] = [];\r\n let product = this as ProductPart;\r\n\r\n while (product instanceof ProductPart) {\r\n products.unshift(product);\r\n product = product.GetParent();\r\n }\r\n\r\n products.forEach(product => product.ParentGroup.Expand());\r\n window.location.hash = `#${this._guid}`;\r\n }\r\n\r\n private HasPropertyControl(propertyControl: PropertyControl) {\r\n return !!this.PropertyGroups.find(group => group.HasPropertyControl(propertyControl));\r\n }\r\n\r\n private GetPropertyControls(): PropertyControl[] {\r\n return _.chain(this.PropertyGroups).map(propertyGroup => propertyGroup.PropertyControls).flatten().value() as PropertyControl[];\r\n }\r\n\r\n private GetCustomFieldControls(): CustomFieldControl[] {\r\n return this.CustomFieldsGroup.CustomFieldsControls;\r\n }\r\n\r\n private GetPropertyControl(name: string): PropertyControl {\r\n return _.find(this.GetPropertyControls(), c => c.Name === name);\r\n }\r\n\r\n private GetCustomFieldControl(name: string): CustomFieldControl {\r\n return _.find(this.GetCustomFieldControls(), c => c.Name === name);\r\n }\r\n}","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {ImageResponseModel} from \"../Models/ImageResponseModel\";\r\n\r\nexport class ImagePropertyControlStore {\r\n constructor(private _ordersEntityId: number, private _productsEntityId: number) {\r\n }\r\n GetAvailableImages(productId: number, fieldId: number): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetAvailableImages',\r\n type: 'GET',\r\n dataType: 'json'\r\n }, params: {\r\n OrderEntityId: this._ordersEntityId,\r\n ProductEntityId: this._productsEntityId,\r\n ProductId: productId,\r\n FieldId: fieldId\r\n }\r\n })\r\n .then(images => deferred.resolve(images))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting available images')))\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetOriginalImageProperty(imageId: number, fieldId: number): P.Promise {\r\n\t const deferred = P.defer();\r\n\r\n\t Request.Send({\r\n\t\t\t proxy: {\r\n\t\t\t\t url: '/api/ProductConfiguratorApi/GetOriginalImageProperty',\r\n\t\t\t\t type: 'POST',\r\n\t\t\t }, params: {\r\n\t\t\t\t OrderEntityId: this._ordersEntityId,\r\n\t\t\t\t ProductEntityId: this._productsEntityId,\r\n\t\t\t\t ImageId: imageId,\r\n\t\t\t\t FieldId: fieldId\r\n\t\t\t }\r\n\t\t })\r\n\t\t .then(images => deferred.resolve(images))\r\n\t\t .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting original image property')));\r\n\r\n\t return deferred.promise();\r\n }\r\n\r\n\tGetOriginalSavedProductImage(imageId: number, fieldId: number): P.Promise {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/ProductConfiguratorApi/GetOriginalSavedProductImage',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: {\r\n\t\t\t\tOrderEntityId: this._ordersEntityId,\r\n\t\t\t\tProductEntityId: this._productsEntityId,\r\n\t\t\t\tImageId: imageId,\r\n\t\t\t\tFieldId: fieldId\r\n\t\t\t}\r\n\t\t})\r\n\t\t\t.then((image) => deferred.resolve(image))\r\n\t\t\t.fail(err => deferred.reject(this.GetResponseError(err, 'Error getting original hook image')));\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tGetOriginalSavedPartImage(imageId: number, fieldId: number): P.Promise {\r\n\t const deferred = P.defer();\r\n\r\n\t Request.Send({\r\n\t\t\t proxy: {\r\n\t\t\t\t url: '/api/ProductConfiguratorApi/GetOriginalSavedPartImage',\r\n\t\t\t\t type: 'POST'\r\n\t\t\t }, params: {\r\n\t\t\t\t OrderEntityId: this._ordersEntityId,\r\n\t\t\t\t\tProductEntityId: this._productsEntityId,\r\n\t\t\t\t\tImageId: imageId,\r\n\t\t\t\t\tFieldId: fieldId\r\n\t\t\t }\r\n\t\t })\r\n\t\t .then((image) => deferred.resolve(image))\r\n\t\t\t.fail(err => deferred.reject(this.GetResponseError(err, 'Error getting original hook image')));\r\n\r\n\t return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {LookupResponseModel} from \"../Models/LookupResponseModel\";\r\n\r\nexport class LookupPropertyControlStore {\r\n constructor(private _ordersEntityId: number, private _productsEntityId: number) {\r\n }\r\n\r\n GetAvailableOptions(productId: number, fieldId: number): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetAvailableOptions',\r\n type: 'GET',\r\n dataType: 'json'\r\n }, params: {\r\n OrderEntityId: this._ordersEntityId,\r\n ProductEntityId: this._productsEntityId,\r\n ProductId: productId,\r\n FieldId: fieldId\r\n }\r\n })\r\n .then(images => deferred.resolve(images))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting available options')))\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetAvailableOption(productId: number, fieldId: number, optionId: number): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetAvailableOption',\r\n type: 'GET',\r\n dataType: 'json'\r\n }, params: {\r\n OrderEntityId: this._ordersEntityId,\r\n ProductEntityId: this._productsEntityId,\r\n ProductId: productId,\r\n FieldId: fieldId,\r\n OptionId: optionId\r\n }\r\n })\r\n .then(option => deferred.resolve(option))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting available option')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","export class LookupModel {\r\n constructor(public Text?: string, public Value?: number) {\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {PropertyControl} from \"../PropertyControl\";\r\n\r\nimport {LookupPropertyControlStore} from \"./Stores/LookupPropertyControlStore\";\r\nimport {LookupResponseModel} from \"./Models/LookupResponseModel\";\r\n\r\nimport { LookupModel} from \"./Models/LookupModel\";\r\n\r\nimport Template from './Template.html';\r\nimport {ProductPropertyDescription} from \"../../ProductPropertyDescription\";\r\nimport { ProductPart } from \"../../../ProductPart\";\r\nimport {\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport { ConfigurationPageEvents } from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Events/ConfigurationPageEvents\";\r\nimport { LookupPropertyValue } from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/LookupPropertyValue';\r\nimport { SearchScreen } from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport { GlobalManager, GLOBALS } from 'Core/GlobalManager/GlobalManager';\r\n\r\n\r\nexport class LookupPropertyControl extends PropertyControl {\r\n private _store: LookupPropertyControlStore;\r\n\r\n private _selectedOptionValue: number;\r\n private _subscriptionReady: boolean;\r\n private _searchScreen: SearchScreen;\r\n private _useSearch: KnockoutObservable;\r\n private _displayValue: KnockoutComputed;\r\n private _entityId: number;\r\n private _relatedTableId: number;\r\n private _relatedTableFieldId: number;\r\n private _actionExpressionValue: KnockoutObservable;\r\n\r\n Options: KnockoutObservableArray;\r\n SelectedOption: KnockoutObservable;\r\n\r\n constructor(property: ProductPropertyDescription, productPart: ProductPart, ordersEntityId, productEntityId: number) {\r\n super(property, productPart);\r\n\r\n this._store = new LookupPropertyControlStore(ordersEntityId, productEntityId);\r\n\r\n this.Options = ko.observableArray([]);\r\n this.SelectedOption = ko.observable(null);\r\n this._useSearch = ko.observable(false);\r\n this._displayValue = ko.computed(() => this.SelectedOption() ? this.SelectedOption().Text: null );\r\n\r\n this._selectedOptionValue = null;\r\n\r\n const searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n this._entityId = property.LookupTableId;\r\n this._relatedTableFieldId = property.RelatedTableFieldId;\r\n this._relatedTableId = property.RelatedTableId;\r\n\r\n this._actionExpressionValue = ko.observable(null);\r\n\r\n if (property.AvailableOptionsCount > searchScreenIfRecordsCount) {\r\n this._useSearch(true);\r\n this.HasContent(true);\r\n this.StartListeningValueChanges();\r\n } else {\r\n this._useSearch(false);\r\n }\r\n }\r\n\r\n OnInit() {\r\n if (!this.HasContent() && !this._useSearch()) {\r\n if (!this.readOnly()) {\r\n this.LoadOptions();\r\n }\r\n }\r\n\r\n }\r\n\r\n ClearValue() {\r\n this.SelectedOption(null);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n GetValueForPrice(): any {\r\n return this.SelectedOption() && this.SelectedOption().Value;\r\n }\r\n\r\n GetValueForSave(): any {\r\n if (this.SelectedOption() && this.SelectedOption().Value) {\r\n return this.SelectedOption().Value;\r\n }\r\n return null;\r\n }\r\n\r\n SetValue(propertyValue: LookupPropertyValue) {\r\n if (propertyValue) {\r\n this._selectedOptionValue = parseInt(propertyValue.Value);\r\n if (!_.isEmpty(propertyValue.Value) && (this.readOnly() || this._useSearch())) {\r\n this.Options().push(new LookupModel(propertyValue.Text, parseInt(propertyValue.Value)))\r\n this.HasContent(true);\r\n this.UpdateSelectedOptionReference();\r\n }\r\n }\r\n }\r\n\r\n SetActionExpressionValue(recordId: number) {\r\n if (!recordId) {\r\n return;\r\n }\r\n\r\n this._actionExpressionValue(recordId);\r\n this.CheckAndUpdateActionExpressionValue();\r\n }\r\n\r\n private CheckAndUpdateActionExpressionValue() {\r\n if (!this._actionExpressionValue() || (!this._useSearch() && !_.any(this.Options()))) {\r\n return;\r\n }\r\n\r\n const optionId = this._actionExpressionValue();\r\n this._actionExpressionValue(null);\r\n\r\n if (this._selectedOptionValue && this._selectedOptionValue !== 0) {\r\n return;\r\n }\r\n\r\n if (!this._useSearch()) {\r\n this._selectedOptionValue = optionId;\r\n return;\r\n }\r\n\r\n this.DispatchEvent(ConfigurationPageEvents.PropertyContentLoading);\r\n this._store.GetAvailableOption(this.property.ProductId, this.ValueHolder, optionId)\r\n .then(optionResponse => {\r\n if (!optionResponse) {\r\n return;\r\n }\r\n\r\n const lookupOption = new LookupModel(optionResponse.Text, optionResponse.Value);\r\n this.Options([lookupOption]);\r\n this._selectedOptionValue = lookupOption.Value;\r\n\r\n this.UpdateSelectedOptionReference();\r\n this.StartListeningValueChanges();\r\n\r\n this.HasContent(true);\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => this.DispatchEvent(ConfigurationPageEvents.PropertyContentLoaded));\r\n }\r\n\r\n Select(option: LookupModel) {\r\n if (option == null) {\r\n this.UnSelect();\r\n } else {\r\n this._selectedOptionValue = option.Value;\r\n this.UpdateSelectedOptionReference();\r\n }\r\n }\r\n\r\n UnSelect() {\r\n this._selectedOptionValue = null;\r\n this.UpdateSelectedOptionReference();\r\n }\r\n\r\n private StartListeningValueChanges() {\r\n if (!this._subscriptionReady) {\r\n this.SelectedOption.subscribe(() => {\r\n this._selectedOptionValue = this.SelectedOption() && this.SelectedOption().Value;\r\n this.CheckValidControl();\r\n this.OnValueChanged();\r\n });\r\n\r\n this._subscriptionReady = true;\r\n }\r\n }\r\n\r\n ShowSearchScreen() {\r\n const params = {\r\n SearchTerm: '',\r\n EntityId: this._entityId,\r\n ButtonAdd: false,\r\n RelatedTableFieldId: this._relatedTableFieldId,\r\n RelatedTableId: this._relatedTableId,\r\n RelatedTablePk: this.product.Id\r\n\r\n };\r\n\r\n this._searchScreen = new SearchScreen(params);\r\n this._searchScreen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n const tableId = evtArgs.data.TableId;\r\n const recordId = evtArgs.data.RecordId;\r\n const fieldNameValue = evtArgs.data.Name;\r\n\r\n this.Options([]);\r\n this.Options().push(new LookupModel(fieldNameValue, recordId))\r\n\r\n this._selectedOptionValue = parseInt(recordId);\r\n this.UpdateSelectedOptionReference();\r\n });\r\n\r\n this._searchScreen.Show();\r\n }\r\n\r\n private LoadOptions() {\r\n this.DispatchEvent(ConfigurationPageEvents.PropertyContentLoading);\r\n this._store.GetAvailableOptions(this.property.ProductId, this.ValueHolder)\r\n .then(optionsResponse => {\r\n const options = optionsResponse.map(option => new LookupModel(option.Text, option.Value));\r\n\r\n if (this.readOnly()) {\r\n this.Options([options.find(option => option.Value == this._selectedOptionValue)]);\r\n } else {\r\n this.Options(options);\r\n }\r\n\r\n this.CheckAndUpdateActionExpressionValue();\r\n\r\n this.UpdateSelectedOptionReference();\r\n this.StartListeningValueChanges();\r\n\r\n this.HasContent(this.Options().length > 0);\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => this.DispatchEvent(ConfigurationPageEvents.PropertyContentLoaded));\r\n }\r\n\r\n private UpdateSelectedOptionReference() {\r\n const selectedOption = _.find(this.Options(), option => option.Value === this._selectedOptionValue);\r\n this.SelectedOption(selectedOption);\r\n }\r\n\r\n IsValid(value?: any): boolean {\r\n return this.GetIsRequiredValidation(value ? value : this.GetValueForSave());\r\n }\r\n\r\n CheckValidControl() {\r\n this.isValidControl(this.GetIsRequiredValidRule(this.GetValueForSave()));\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport { FIELD_TYPES } from \"Core/Constant\";\r\n\r\nimport {EventBusConsumer} from \"Core/Common/EventBus/EventBusConsumer\";\r\n\r\nimport {ProductPart} from \"../../ProductPart\";\r\n\r\nimport {ConfigurationPageEvents} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Events/ConfigurationPageEvents\";\r\nimport {ProductPropertyDescription} from \"../ProductPropertyDescription\";\r\nimport { PropertyValue } from '../../PropertyValue';\r\nimport { LABELS, NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport abstract class PropertyControl extends EventBusConsumer {\r\n private _fieldTypes = FIELD_TYPES;\r\n\r\n private _onValueChangedTimeout: number;\r\n protected onValueChangedTimeoutValue: number;\r\n\r\n HasContent: KnockoutObservable;\r\n readOnly: KnockoutObservable;\r\n protected validationMessage: KnockoutObservable;\r\n protected isValidControl: KnockoutObservable;\r\n private _isHiddenByAction: KnockoutObservable;\r\n protected _labels = LABELS;\r\n protected _notifications = NOTIFICATIONS;\r\n\r\n protected constructor(protected property: ProductPropertyDescription, protected product: ProductPart) {\r\n super();\r\n this._labels = LABELS;\r\n this._notifications = NOTIFICATIONS;\r\n\r\n this.onValueChangedTimeoutValue = 300;\r\n this.HasContent = ko.observable(false);\r\n\r\n this.readOnly = ko.observable(false);\r\n this.validationMessage = ko.observable(this.GetTranslationMessages('VALID'));\r\n this.isValidControl = ko.observable(true);\r\n this._isHiddenByAction = ko.observable(false);\r\n\r\n this.AssignEventBus(this.product.ParentGroup.EventBus);\r\n }\r\n\r\n get Id() {\r\n return this.property.Id;\r\n }\r\n\r\n get Name() {\r\n return this.property.Name;\r\n }\r\n\r\n get DisplayName() {\r\n return this.property.TranslatedName || this.property.Name;\r\n }\r\n\r\n get ValueHolder() {\r\n return this.property.ValueHolderId;\r\n }\r\n\r\n get PriceInfluence() {\r\n return this.property.PriceInfluence;\r\n }\r\n\r\n get FormatName() {\r\n return this.property.FormatName;\r\n }\r\n\r\n get Size() {\r\n return this.property.Size;\r\n }\r\n\r\n get IsRequired(): boolean {\r\n return this.property.IsRequired;\r\n }\r\n\r\n get IsValidControl(): boolean {\r\n return this.isValidControl();\r\n }\r\n\r\n get ValidMessage(): any {\r\n return this.validationMessage();\r\n }\r\n\r\n get IsHiddenByAction(): boolean {\r\n return this._isHiddenByAction();\r\n }\r\n\r\n set IsHiddenByAction(value: boolean) {\r\n this._isHiddenByAction(value);\r\n }\r\n\r\n get SkipValidationOnSave(): boolean {\r\n return this.validationMessage() === this.GetTranslationMessages('MAX_SIZE');\r\n }\r\n\r\n OnValueChanged() {\r\n if (this.onValueChangedTimeoutValue > 0) {\r\n this.ClearOnValueChangedTimeout();\r\n this._onValueChangedTimeout = setTimeout(() => {\r\n this.DispatchEvent(ConfigurationPageEvents.PropertyValueChanged, this.GetValueForPrice());\r\n }, this.onValueChangedTimeoutValue);\r\n } else {\r\n this.DispatchEvent(ConfigurationPageEvents.PropertyValueChanged, this.GetValueForPrice());\r\n }\r\n }\r\n\r\n GetValueForPrice() {\r\n return this.GetValueForSave();\r\n }\r\n\r\n GetValueForPreview() {\r\n return this.GetValueForSave();\r\n }\r\n\r\n IsPropertyOwner(product: ProductPart) {\r\n return this.product === product;\r\n }\r\n\r\n Dispose() {\r\n this.ClearOnValueChangedTimeout();\r\n super.Dispose();\r\n }\r\n\r\n abstract GetTemplate();\r\n\r\n abstract GetValueForSave(): any;\r\n\r\n abstract SetValue(propertyValue: PropertyValue);\r\n\r\n abstract ClearValue();\r\n\r\n IsValid(value?: any): boolean {\r\n return true\r\n }\r\n\r\n private ClearOnValueChangedTimeout() {\r\n clearTimeout(this._onValueChangedTimeout);\r\n }\r\n\r\n GetDecimalIntegerValidRules(value: any): boolean {\r\n this.validationMessage(this.GetTranslationMessages('VALID'));\r\n return this.GetIsRequiredValidRule(value) && !this.GetIsNaNValidRule(value);\r\n }\r\n\r\n GetIsRequiredValidRule(value: any, controlType?: string): boolean {\r\n this.validationMessage(this.GetTranslationMessages('VALID'));\r\n if (!this.IsRequired){\r\n return true;\r\n }\r\n\r\n let isEmptyValue: boolean;\r\n if (controlType === this._fieldTypes.YesNo){\r\n isEmptyValue = value === false;\r\n } else {\r\n isEmptyValue = value === '' || value === null;\r\n }\r\n\r\n if (isEmptyValue){\r\n this.validationMessage(this.GetTranslationMessages('REQUIRED'));\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n GetIsNaNValidRule(value: any): boolean{\r\n const isNaNValue: boolean = isNaN(value);\r\n this.validationMessage(this.GetTranslationMessages('VALID'));\r\n\r\n if (!isNaNValue){\r\n return false;\r\n }\r\n\r\n if (isNaNValue){\r\n this.validationMessage(this.GetTranslationMessages('NOT_VALID'));\r\n return true;\r\n }\r\n }\r\n\r\n GetIsSizeValidRule(value: any): boolean {\r\n const size = value && value.length;\r\n\r\n if (size >= this.Size && this.Size >= 0) {\r\n this.validationMessage(this.GetTranslationMessages('MAX_SIZE'));\r\n return false;\r\n } else {\r\n this.validationMessage(this.GetTranslationMessages('VALID'));\r\n return true;\r\n }\r\n }\r\n\r\n GetDecimalIntegerValid(value: any): boolean {\r\n return this.GetIsRequiredValidation(value) && !this.GetIsNaNValid(value);\r\n }\r\n\r\n GetIsNaNValid(value: any): boolean{\r\n const isNaNValue: boolean = isNaN(value);\r\n if (!isNaNValue){\r\n return false;\r\n }\r\n if (isNaNValue){\r\n return true;\r\n }\r\n }\r\n GetIsRequiredValidation(value: any, controlType?: string): boolean {\r\n if (!this.IsRequired){\r\n return true;\r\n }\r\n\r\n let isEmptyValue: boolean;\r\n if (controlType === this._fieldTypes.YesNo){\r\n isEmptyValue = value === false;\r\n } else {\r\n isEmptyValue = value === '' || value === null;\r\n }\r\n return !isEmptyValue;\r\n }\r\n\r\n GetSizeValidation(value: any): boolean {\r\n const size = value && value.length;\r\n return size <= this.Size || this.Size < 0;\r\n }\r\n\r\n CheckValidControl(): void{\r\n\r\n }\r\n\r\n GetTranslationMessages(key: string): any {\r\n const validMassages = {\r\n 'VALID': {Id: 0, Name: null, TranslationName: null},\r\n 'NOT_VALID': {Id: 1, Name: 'Not valid', TranslationName: 'Not valid'},\r\n 'REQUIRED': {Id: 2, Name: 'Required*', TranslationName: this._labels.REQUIRED_FLAG},\r\n 'MAX_SIZE': {Id: 3, Name: `Maximum length of this field is ${this.Size}`, TranslationName: `${this._notifications.MAXIMUM_LENGTH_OF_THIS_FIELD} ${this.Size}`}\r\n };\r\n return validMassages[key].TranslationName;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {PropertyControl} from \"../PropertyControl\";\r\n\r\nimport Template from './Template.html';\r\nimport {ProductPropertyDescription} from \"../../ProductPropertyDescription\";\r\nimport { ProductPart } from \"../../../ProductPart\";\r\nimport { PropertyValue } from '../../../PropertyValue';\r\n\r\nexport class TextPropertyControl extends PropertyControl {\r\n private _displayValue: KnockoutObservable;\r\n\r\n constructor(property: ProductPropertyDescription, productPart: ProductPart) {\r\n super(property, productPart);\r\n\r\n this.HasContent = ko.observable(true);\r\n this._displayValue = ko.observable(null);\r\n }\r\n\r\n get MaxInputLength() {\r\n return this.Size > 0 ? this.Size : -1;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n GetValueForSave(): any {\r\n if (this._displayValue()) {\r\n return this._displayValue();\r\n }\r\n return null;\r\n }\r\n\r\n SetValue(propertyValue: PropertyValue) {\r\n if (propertyValue) {\r\n this._displayValue(propertyValue.Value);\r\n }\r\n this.StartListeningValueChanges();\r\n }\r\n\r\n ClearValue() {\r\n this._displayValue(null);\r\n }\r\n\r\n private StartListeningValueChanges() {\r\n if (this._displayValue.getSubscriptionsCount() == 0) {\r\n this._displayValue.subscribe(() => {\r\n this.CheckValidControl();\r\n this.OnValueChanged();\r\n });\r\n }\r\n }\r\n\r\n IsValid(value?: any): boolean {\r\n const valueToCheck = value ? value : this.GetValueForSave();\r\n return this.GetIsRequiredValidation(valueToCheck) && this.GetSizeValidation(valueToCheck);\r\n }\r\n\r\n CheckValidControl() {\r\n this.isValidControl(this.GetIsRequiredValidRule(this.GetValueForSave()) && this.GetIsSizeValidRule(this.GetValueForSave()));\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\n\r\nimport {PropertyControl} from \"../PropertyControl\";\r\n\r\nimport Template from './Template.html';\r\nimport {ProductPropertyDescription} from \"../../ProductPropertyDescription\";\r\nimport { ProductPart } from \"../../../ProductPart\";\r\nimport { PropertyValue } from '../../../PropertyValue';\r\n\r\nexport class DecimalPropertyControl extends PropertyControl {\r\n private _displayValue: KnockoutObservable;\r\n\r\n constructor(property: ProductPropertyDescription, productPart: ProductPart) {\r\n super(property, productPart);\r\n\r\n this.HasContent = ko.observable(true);\r\n this._displayValue = ko.observable(null);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n get DecimalMaskSize() {\r\n if (FieldFormat.IsPercentage(this.FormatName)) {\r\n return Math.max(this.Size - 2, 0);\r\n }\r\n\r\n return this.Size;\r\n }\r\n\r\n get IsCurrencyIcon() : boolean {\r\n return FieldFormat.IsCurrency(this.FormatName);\r\n }\r\n\r\n get IsPercentageIcon() : boolean {\r\n return !!(this._displayValue() && this._displayValue().length !== 0 && FieldFormat.IsPercentage(this.FormatName));\r\n }\r\n\r\n GetConvertedValue(){\r\n const value = this._displayValue();\r\n\r\n if (!value && value !== '0') {\r\n return null;\r\n }\r\n\r\n let convertedValue = +value.replace(',', '.');\r\n\r\n convertedValue = isNaN(convertedValue) ? null : convertedValue;\r\n\r\n if (convertedValue && FieldFormat.IsPercentage(this.FormatName)) {\r\n return (convertedValue / 100).toFixed(this.Size);\r\n }\r\n\r\n return convertedValue;\r\n }\r\n\r\n GetValueForSave(): any {\r\n return this.GetConvertedValue();\r\n }\r\n\r\n SetValue(propertyValue: PropertyValue) {\r\n let formattedValue = null;\r\n\r\n if (propertyValue && propertyValue.Value && FieldFormat.IsPercentage(this.FormatName)) {\r\n const percentageValue = (Number(String(propertyValue.Value).replace(',', '.')) * 100)\r\n .toFixed((this.Size < 2) ? 0 : this.Size - 2);\r\n formattedValue = FormatConverter.ConvertDecimal(percentageValue);\r\n }\r\n else if (propertyValue && propertyValue.Value) {\r\n formattedValue = FormatConverter.ConvertDecimal(propertyValue.Value.toString());\r\n }\r\n\r\n this._displayValue(formattedValue);\r\n this.StartListeningValueChanges();\r\n }\r\n\r\n ClearValue() {\r\n this._displayValue(null);\r\n }\r\n\r\n private StartListeningValueChanges() {\r\n if (this._displayValue.getSubscriptionsCount() == 0) {\r\n this._displayValue.subscribe(() => {\r\n this.CheckValidControl();\r\n this.OnValueChanged();\r\n });\r\n }\r\n }\r\n\r\n IsValid(value?: any): boolean {\r\n return this.GetDecimalIntegerValid(this.GetConvertedValue());\r\n }\r\n\r\n CheckValidControl() {\r\n this.isValidControl(this.GetDecimalIntegerValidRules(this.GetConvertedValue()));\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {PropertyControl} from \"../PropertyControl\";\r\n\r\nimport Template from './Template.html';\r\nimport {ProductPropertyDescription} from \"../../ProductPropertyDescription\";\r\nimport {ProductPart} from \"../../../ProductPart\";\r\nimport { PropertyValue } from '../../../PropertyValue';\r\n\r\nexport class CheckboxPropertyControl extends PropertyControl {\r\n private _displayValue: KnockoutObservable;\r\n\r\n constructor(property: ProductPropertyDescription, productPart: ProductPart) {\r\n super(property, productPart);\r\n\r\n this.onValueChangedTimeoutValue = 0;\r\n\r\n this.HasContent = ko.observable(true);\r\n this._displayValue = ko.observable(false);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n GetValueForSave(): any {\r\n return this._displayValue();\r\n }\r\n\r\n SetValue(propertyValue: PropertyValue) {\r\n if (propertyValue) {\r\n const displayValue = propertyValue.Value ? propertyValue.Value.toString().toLowerCase() === 'true' : false;\r\n this._displayValue(displayValue);\r\n }\r\n this.StartListeningValueChanges();\r\n }\r\n\r\n ClearValue() {\r\n this._displayValue(false);\r\n }\r\n\r\n private StartListeningValueChanges() {\r\n if (this._displayValue.getSubscriptionsCount() == 0) {\r\n this._displayValue.subscribe(() => {\r\n this.CheckValidControl();\r\n this.OnValueChanged();\r\n });\r\n }\r\n }\r\n\r\n IsValid(value?: any): boolean {\r\n return this.GetIsRequiredValidation(value ? value : this.GetValueForSave(), 'YesNo');\r\n }\r\n\r\n CheckValidControl() {\r\n this.isValidControl(this.GetIsRequiredValidRule(this.GetValueForSave(), 'YesNo'));\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","export class ColorModel {\r\n constructor(public Name: string, public Color: string, public Id?: string) {\r\n\r\n }\r\n}","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {ColorResponseModel} from \"../Models/ColorResponseModel\";\r\n\r\nexport class ColorPropertyControlStore {\r\n constructor(private _ordersEntityId: number, private _productsEntityId: number) {\r\n }\r\n\r\n GetAvailableColors(productId: number, fieldId: number): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetAvailableColors',\r\n type: 'GET',\r\n dataType: 'json'\r\n }, params: {\r\n OrderEntityId: this._ordersEntityId,\r\n ProductEntityId: this._productsEntityId,\r\n ProductId: productId,\r\n FieldId: fieldId\r\n }\r\n }).then(colors => deferred.resolve(colors))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting available colors')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string) {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport { InexItem, InexProduct } from \"../../Models/InexItem\";\r\nimport { ProductPart } from \"../../Models/ProductPart\";\r\n\r\nimport ColorPalettePopupTemplate from './Templates/ColorPalettePopupView.html';\r\nimport {\r\n\tEVENTS\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport { ColorModel } from \"../../Models/Properties/Controls/ColorPropertyControl/Models/ColorModel\";\r\nimport { ImageModel } from \"../../Models/Properties/Controls/Image/Models/ImageModel\";\r\nimport { ProductImageViewer } from '../../../../Components/ProductImageViewer/ProductImageViewer';\r\n\r\nko.templates[\"./Templates/ColorPalettePopupView\"] = ColorPalettePopupTemplate;\r\n\r\nconst TEMPLATES = {\r\n\tVIEW: \"./Templates/ColorPalettePopupView\"\r\n};\r\n\r\nexport interface IColorPalettePopupOptions {\r\n\tColors: ColorModel[];\r\n\tSelectedColor: ColorModel;\r\n\tImages: ImageModel[];\r\n\tSelectedImage: ImageModel;\r\n\tImagePropertyViewer?: ProductImageViewer;\r\n\tWidth?: string;\r\n\tHeight?: string;\r\n\tMinHeight?: number;\r\n\tTextDecline?: string;\r\n\tTimeout?: number;\r\n\tModalClass?: string;\r\n\tblockScroll?: boolean;\r\n\tcloseButton?: any;\r\n}\r\n\r\nexport class ColorPalettePopup extends Event {\r\n\tprivate _labels = LABELS;\r\n\tprivate _modal: Modal;\r\n\tprivate _text: KnockoutObservable;\r\n\tprivate ProductId: number; \r\n\tprivate _imagePropertyViewer: ProductImageViewer;\r\n\tprivate _textConfirm: KnockoutObservable;\r\n\tprivate _textDecline: KnockoutObservable;\r\n\tprivate _options: IColorPalettePopupOptions;\r\n\tprivate _modalClass: string;\r\n\r\n\tColors: KnockoutObservableArray;\r\n\tImages: KnockoutObservableArray;\r\n\tSelectedColor: KnockoutObservable;\r\n\tSelectedImage: KnockoutObservable;\r\n\r\n\tconstructor(options: IColorPalettePopupOptions) {\r\n\t\tsuper();\r\n\t\tthis._options = options;\r\n\t\tthis._imagePropertyViewer = options.ImagePropertyViewer;\r\n\t\tthis.Colors = ko.observableArray(options.Colors);\r\n\t\tthis.SelectedColor = ko.observable(options.SelectedColor);\r\n\t\tthis.Images = ko.observableArray(options.Images);\r\n\t\tthis.Images.sort(function (a, b) {\r\n\t\t\tif(a.DisplayName < b.DisplayName) { return -1; }\r\n\t\t\tif(a.DisplayName > b.DisplayName) { return 1; }\r\n\t\t\treturn 0;\r\n\t\t});\r\n\t\tthis.SelectedImage = ko.observable(options.SelectedImage);\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tthis._textDecline = ko.observable(this._options.TextDecline || LABELS.CANCEL);\r\n\t\tthis._modalClass = '';\r\n\t}\r\n\r\n\tprivate InitModal() {\r\n\t\tthis._modal = new Modal({\r\n\t\t\twidth: this._options.Width || '405',\r\n\t\t\tminHeight: this._options.Height || '200',\r\n\t\t\tcloseButton: this._options.closeButton ? this._options.closeButton : false,\r\n\t\t\tcloseOnEsc: false,\r\n\t\t\taddClass: this._options.ModalClass === undefined ? '' : this._options.ModalClass + \"\",\r\n\t\t\tappendTo: 'body:first',\r\n\t\t\tblockScroll: this._options.blockScroll || false\r\n\t\t}, false);\r\n\t}\r\n\r\n\tShow() {\r\n\t\tthis.InitModal();\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn TEMPLATES.VIEW;\r\n\t}\r\n\r\n\tOnClick(item: ColorModel | ImageModel) {\r\n\t\tthis.Trigger(EVENTS.CONFIRM_SELECTED, item);\r\n\t\tthis.Close();\r\n\t}\r\n\r\n\tOnCancelClick() {\r\n\t\tthis.Close();\r\n\t}\r\n\r\n\tClose() {\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tprivate AfterRender() {\r\n\t\tthis._modal.Show();\r\n\t\tBlockUI.Unblock();\r\n\t}\r\n}","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { Notifier } from \"Core/Common/Notifier\";\r\n\r\nimport {ColorConverter} from \"Core/Components/ColorSelector/ColorConverter\";\r\n\r\nimport {PropertyControl} from \"../PropertyControl\";\r\n\r\nimport {ColorModel} from \"./Models/ColorModel\";\r\n\r\nimport {ColorPropertyControlStore} from \"./Stores/ColorPropertyControlStore\";\r\nimport {Guid} from \"Core/Common/Guid\";\r\n\r\nimport Template from './Template.html';\r\nimport * as _ from \"underscore\";\r\nimport {ProductPropertyDescription} from \"../../ProductPropertyDescription\";\r\nimport { ProductPart } from \"../../../ProductPart\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport { ColorPalettePopup } from '../../../../Modals/ColorPalettePopup/ColorPalettePopup';\r\n\r\nimport { ConfigurationPageEvents } from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Events/ConfigurationPageEvents\";\r\nimport { PropertyValue } from '../../../PropertyValue';\r\n\r\nexport class ColorPropertyControl extends PropertyControl {\r\n private _store: ColorPropertyControlStore;\r\n private _selectedColorName: string;\r\n private _subscriptionReady: boolean;\r\n private _showAll: KnockoutObservable;\r\n\r\n Colors: KnockoutObservableArray;\r\n SelectedColor: KnockoutObservable;\r\n ColorObservableArray: KnockoutObservableArray\r\n\r\n constructor(property: ProductPropertyDescription, productPart: ProductPart, ordersEntityId: number, productEntityId: number) {\r\n super(property, productPart);\r\n\r\n this._store = new ColorPropertyControlStore(ordersEntityId, productEntityId);\r\n\r\n this.Colors = ko.observableArray([]);\r\n this.SelectedColor = ko.observable(null);\r\n\r\n this._showAll = ko.observable(false);\r\n this._selectedColorName = null;\r\n this.ColorObservableArray = ko.observableArray([]);\r\n }\r\n\r\n OnInit() {\r\n if (!this.HasContent()) {\r\n if (!this.readOnly()) {\r\n this.LoadColors();\r\n }\r\n } else {\r\n\r\n if (this.Colors().length > 9) {\r\n this._showAll(false);\r\n } else {\r\n this._showAll(true);\r\n }\r\n }\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n GetValueForSave(): any {\r\n if (this.SelectedColor() && this.SelectedColor().Name) {\r\n return this.SelectedColor().Name;\r\n }\r\n return null;\r\n }\r\n\r\n GetValueForPreview(): any {\r\n if (this.SelectedColor() && this.SelectedColor().Name) {\r\n return ColorConverter.ToHex(this.SelectedColor().Name);\r\n }\r\n return null;\r\n }\r\n\r\n SetValue(propertyValue: PropertyValue) {\r\n if (propertyValue) {\r\n this._selectedColorName = propertyValue.Value;\r\n\r\n if (this.readOnly()) {\r\n this.Colors().push(new ColorModel(propertyValue.Value, ColorConverter.ToHex(propertyValue.Value)))\r\n this.HasContent(true);\r\n this.UpdateSelectedColorReference();\r\n }\r\n }\r\n }\r\n\r\n ClearValue() {\r\n this.SelectedColor(null);\r\n }\r\n\r\n SelectColor(data){\r\n if ( _.some(this.ColorObservableArray(), (item)=> item.id === data.id) ){\r\n let selectedItem = _.find(this.Colors(), (item)=> item.Id === data.id);\r\n this.Select(selectedItem);\r\n }\r\n }\r\n\r\n Select(color: ColorModel) {\r\n if (color == null) {\r\n this.UnSelect();\r\n } else {\r\n this._selectedColorName = color.Name;\r\n this.UpdateSelectedColorReference()\r\n }\r\n }\r\n\r\n UnSelect() {\r\n this._selectedColorName = null;\r\n this.UpdateSelectedColorReference();\r\n }\r\n\r\n private OnColorClick(color: ColorModel) {\r\n if (this._showAll()) {\r\n if (this.SelectedColor() === color) {\r\n this.UnSelect();\r\n return;\r\n }\r\n\r\n this.Select(color);\r\n }\r\n else {\r\n BlockUI.Block({ZIndex: 11000});\r\n\r\n const confirmationDialog = new ColorPalettePopup({\r\n ModalClass: 'jBox-padding-15px',\r\n Colors: this.Colors(),\r\n SelectedColor: this.SelectedColor(),\r\n Images: null,\r\n SelectedImage: null,\r\n Width: '90vw',\r\n Height: '90vh',\r\n closeButton: 'box'\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, (eventArgs: any) => {\r\n this.Select(eventArgs.data);\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n }\r\n\r\n private StartListeningValueChanges() {\r\n if (!this._subscriptionReady) {\r\n this.SelectedColor.subscribe(() => {\r\n this._selectedColorName = this.SelectedColor() && this.SelectedColor().Name;\r\n this.CheckValidControl();\r\n this.OnValueChanged();\r\n });\r\n\r\n this._subscriptionReady = true;\r\n }\r\n }\r\n\r\n private LoadColors() {\r\n this.DispatchEvent(ConfigurationPageEvents.PropertyContentLoading);\r\n this._store.GetAvailableColors(this.property.ProductId, this.ValueHolder)\r\n .then(colorsResponse => {\r\n const colors = colorsResponse.map(color => new ColorModel(color.Name, ColorConverter.ToHex(color.Name), Guid.NewGuid()));\r\n this.Colors(colors);\r\n this.UpdateSelectedColorReference();\r\n this.StartListeningValueChanges();\r\n\r\n this.HasContent(this.Colors().length > 0);\r\n\r\n if (this.Colors().length > 9) {\r\n this._showAll(false);\r\n } else {\r\n this._showAll(true);\r\n }\r\n\r\n let colorsMap = _.map(colors, color =>{\r\n return {\r\n label: color.Name,\r\n id: color.Id\r\n }\r\n });\r\n this.ColorObservableArray(colorsMap);\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => this.DispatchEvent(ConfigurationPageEvents.PropertyContentLoaded));\r\n }\r\n\r\n get GetColorObservableArray(){\r\n return this.ColorObservableArray();\r\n }\r\n\r\n private UpdateSelectedColorReference() {\r\n const selectedColor = _.find(this.Colors(), color => color.Name === this._selectedColorName);\r\n this.SelectedColor(selectedColor);\r\n }\r\n\r\n IsValid(value?: any): boolean {\r\n return this.GetIsRequiredValidation(value ? value : this.GetValueForSave());\r\n }\r\n\r\n CheckValidControl() {\r\n this.isValidControl(this.GetIsRequiredValidRule(this.GetValueForSave()));\r\n }\r\n}","// Module\nvar code = \"

    No colors found

    \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {PropertyControl} from \"../PropertyControl\";\r\n\r\nimport Template from \"./Template.html\";\r\nimport {ProductPropertyDescription} from \"../../ProductPropertyDescription\";\r\nimport { ProductPart } from \"../../../ProductPart\";\r\nimport { PropertyValue } from '../../../PropertyValue';\r\n\r\nexport class IntegerPropertyControl extends PropertyControl {\r\n private _displayValue: KnockoutObservable;\r\n\r\n constructor(property: ProductPropertyDescription, productPart: ProductPart) {\r\n super(property, productPart);\r\n\r\n this.HasContent = ko.observable(true);\r\n this._displayValue = ko.observable(null);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n GetConvertedValue(){\r\n const value = this._displayValue();\r\n\r\n if (!value && value !== '0') {\r\n return null;\r\n }\r\n\r\n let convertedValue = +value;\r\n\r\n convertedValue = isNaN(convertedValue) ? null : convertedValue;\r\n\r\n return convertedValue;\r\n }\r\n\r\n GetValueForSave(): any {\r\n return this.GetConvertedValue();\r\n }\r\n\r\n SetValue(propertyValue: PropertyValue) {\r\n if (propertyValue) {\r\n this._displayValue(propertyValue.Value);\r\n }\r\n this.StartListeningValueChanges();\r\n }\r\n\r\n ClearValue() {\r\n this._displayValue(null);\r\n }\r\n\r\n private StartListeningValueChanges() {\r\n if (this._displayValue.getSubscriptionsCount() == 0) {\r\n this._displayValue.subscribe(() => {\r\n this.CheckValidControl();\r\n this.OnValueChanged();\r\n });\r\n }\r\n }\r\n\r\n IsValid(value?: any): boolean {\r\n return this.GetDecimalIntegerValid(this.GetConvertedValue());\r\n }\r\n\r\n CheckValidControl() {\r\n this.isValidControl(this.GetDecimalIntegerValidRules(this.GetConvertedValue()));\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import {ImageTableTypes} from \"../../../../../../../Components/ProductImageViewer/Enums/ImageTableTypes\";\r\n\r\nexport class ImageModel {\r\n\tId: number;\r\n\tDisplayName: string;\r\n\tImageTableType: ImageTableTypes;\r\n\r\n\tconstructor(public id: number, public Name: string, public Thumbnail: string, public imageTableType: ImageTableTypes) {\r\n\t\tthis.Id = id;\r\n\t\tthis.DisplayName = Name;\r\n\t\tthis.ImageTableType = imageTableType;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {PropertyControl} from \"../PropertyControl\";\r\n\r\nimport {ImagePropertyControlStore} from \"./Stores/ImagePropertyControlStore\";\r\n\r\nimport {ImageModel} from \"./Models/ImageModel\";\r\nimport {ImageTableTypes} from \"../../../../../../Components/ProductImageViewer/Enums/ImageTableTypes\";\r\n\r\nimport Template from './Template.html';\r\nimport {ProductPropertyDescription} from \"../../ProductPropertyDescription\";\r\nimport {ProductPart} from \"../../../ProductPart\";\r\n\r\nimport {EVENTS as CONFIRMATION_DIALOG_EVENTS} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {ColorPalettePopup} from '../../../../Modals/ColorPalettePopup/ColorPalettePopup';\r\n\r\nimport {ConfigurationPageEvents} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Events/ConfigurationPageEvents\";\r\nimport {ImagePropertyValue} from '../../../ImagePropertyValue';\r\nimport {ProductImageViewer} from '../../../../../../Components/ProductImageViewer/ProductImageViewer';\r\n\r\n\r\nexport class ImagePropertyControl extends PropertyControl {\r\n private _store: ImagePropertyControlStore;\r\n private _imagePropertyViewer: ProductImageViewer;\r\n\r\n private _selectedImageName: string;\r\n private _subscriptionReady: boolean;\r\n private _showAll: KnockoutObservable;\r\n\r\n Images: KnockoutObservableArray;\r\n SelectedImage: KnockoutObservable;\r\n ImageObservableArray: KnockoutObservableArray\r\n\r\n constructor(property: ProductPropertyDescription, productPart: ProductPart, ordersEntityId, productEntityId: number) {\r\n super(property, productPart);\r\n\r\n this._store = new ImagePropertyControlStore(ordersEntityId, productEntityId);\r\n this._imagePropertyViewer = new ProductImageViewer({\r\n ProductsEntityId: productEntityId,\r\n OrderEntityId: ordersEntityId,\r\n ImageFieldId: this.ValueHolder\r\n });\r\n\r\n this.Images = ko.observableArray([]);\r\n this.SelectedImage = ko.observable(null);\r\n this._showAll = ko.observable(false);\r\n\r\n this._selectedImageName = null;\r\n this.ImageObservableArray = ko.observableArray([]);\r\n }\r\n\r\n OnInit() {\r\n if (!this.HasContent()) {\r\n if (!this.readOnly()) {\r\n this.LoadImages();\r\n }\r\n } else {\r\n if (this.Images().length > 9) {\r\n this._showAll(false);\r\n } else {\r\n this._showAll(true);\r\n }\r\n }\r\n\r\n }\r\n\r\n ClearValue() {\r\n this.SelectedImage(null);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n GetValueForPrice(): any {\r\n return this.SelectedImage() && this.SelectedImage().Name;\r\n }\r\n\r\n GetValueForSave(): any {\r\n if (this.SelectedImage() && this.SelectedImage().Id) {\r\n return this.SelectedImage().Id;\r\n }\r\n return null;\r\n }\r\n\r\n SetValue(propertyValue: ImagePropertyValue) {\r\n if (propertyValue) {\r\n this._selectedImageName = propertyValue.Value;\r\n if (propertyValue.Thumbnail != null && this.readOnly()) {\r\n const imageTableType = this.product.IsMain() ? ImageTableTypes.OrderProduct : ImageTableTypes.Hook;\r\n this.Images().push(new ImageModel(propertyValue.ImageId, propertyValue.Value, propertyValue.Thumbnail, imageTableType));\r\n this.HasContent(true);\r\n this.UpdateSelectedImageReference();\r\n }\r\n }\r\n }\r\n\r\n SelectImage(data){\r\n if ( _.some(this.Images(), (item) => item.id === data.id) ) {\r\n let selectedItem = _.find(this.Images(), (item)=> item.id === data.id);\r\n this.Select(selectedItem);\r\n }\r\n }\r\n\r\n Select(image: ImageModel) {\r\n if (image == null) {\r\n this.UnSelect();\r\n } else if (_.filter(this.Images(), item => item.Name?.toUpperCase() === image.Name?.toUpperCase()).length > 1) {\r\n Notifier.Warning(NOTIFICATIONS.PROPERTY_VALUE_SHOULD_HAVE_THE_UNIQUE_NAME);\r\n this.UnSelect();\r\n } else {\r\n this._selectedImageName = image.Name;\r\n this.UpdateSelectedImageReference();\r\n }\r\n }\r\n\r\n UnSelect() {\r\n this._selectedImageName = null;\r\n this.UpdateSelectedImageReference();\r\n }\r\n\r\n private OnImageClick(image: ImageModel) {\r\n if (this._showAll()) {\r\n if (this.SelectedImage() === image) {\r\n this.UnSelect();\r\n return;\r\n }\r\n\r\n this.Select(image);\r\n } else {\r\n BlockUI.Block({ZIndex: 11000});\r\n\r\n const confirmationDialog = new ColorPalettePopup({\r\n ModalClass: 'jBox-padding-15px',\r\n Colors: null,\r\n SelectedColor: null,\r\n Images: this.Images(),\r\n SelectedImage: this.SelectedImage(),\r\n ImagePropertyViewer: this._imagePropertyViewer,\r\n Width: '90vw',\r\n Height: '90vh',\r\n blockScroll: true,\r\n closeButton: 'box'\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, (eventArgs: any) => {\r\n this.Select(eventArgs.data);\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n }\r\n\r\n private StartListeningValueChanges() {\r\n if (!this._subscriptionReady) {\r\n this.SelectedImage.subscribe(() => {\r\n this._selectedImageName = this.SelectedImage() && this.SelectedImage().Name;\r\n this.CheckValidControl();\r\n this.OnValueChanged();\r\n });\r\n\r\n this._subscriptionReady = true;\r\n }\r\n }\r\n\r\n private LoadImages() {\r\n this.DispatchEvent(ConfigurationPageEvents.PropertyContentLoading);\r\n this._store.GetAvailableImages(this.property.ProductId, this.ValueHolder)\r\n .then(imagesResponse => {\r\n const images = imagesResponse.map(image => new ImageModel(image.Id, image.Name, image.Thumbnail, ImageTableTypes.ProductProperty));\r\n\r\n if (this.readOnly()) {\r\n this.Images([images.find(image => image.Name == this._selectedImageName)]);\r\n } else {\r\n this.Images(images);\r\n }\r\n this.UpdateSelectedImageReference();\r\n this.StartListeningValueChanges();\r\n\r\n this.HasContent(this.Images().length > 0);\r\n\r\n if (this.Images().length > 9) {\r\n this._showAll(false);\r\n } else {\r\n this._showAll(true);\r\n }\r\n\r\n let imagesMap = _.map(images, image=>{\r\n return {\r\n label: image.Name,\r\n id: image.Id\r\n }\r\n });\r\n this.ImageObservableArray(imagesMap);\r\n\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => this.DispatchEvent(ConfigurationPageEvents.PropertyContentLoaded));\r\n }\r\n\r\n get GetImageObservableArray(){\r\n return this.ImageObservableArray();\r\n }\r\n\r\n private UpdateSelectedImageReference() {\r\n const selectedImage = _.find(this.Images(), image => image.Name?.toUpperCase() === this._selectedImageName?.toUpperCase());\r\n this.SelectedImage(selectedImage);\r\n }\r\n\r\n IsValid(value?: any): boolean {\r\n return this.GetIsRequiredValidation(value ? value : this.GetValueForSave());\r\n }\r\n\r\n CheckValidControl() {\r\n this.isValidControl(this.GetIsRequiredValidRule(this.GetValueForSave()));\r\n }\r\n}","// Module\nvar code = \"

    No images found

    \";\n// Exports\nexport default code;","import {FIELD_TYPES} from \"Core/Constant\";\r\n\r\nimport {ProductPropertyResponse} from \"Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Stores/Models/ProductPropertyResponse\";\r\nimport {ProductPropertyDescription} from \"../ProductPropertyDescription\";\r\n\r\nimport {PropertyControl} from \"../Controls/PropertyControl\";\r\nimport {TextPropertyControl} from \"../Controls/Text/TextPropertyControl\";\r\nimport {DecimalPropertyControl} from \"../Controls/Decimal/DecimalPropertyControl\";\r\nimport {CheckboxPropertyControl} from \"../Controls/Checkbox/CheckboxPropertyControl\";\r\nimport {ColorPropertyControl} from \"../Controls/ColorPropertyControl/ColorPropertyControl\";\r\nimport {IntegerPropertyControl} from \"../Controls/Integer/IntegerPropertyControl\";\r\nimport {ImagePropertyControl} from \"../Controls/Image/ImagePropertyControl\";\r\nimport {ProductPart} from \"../../ProductPart\";\r\nimport { LookupPropertyControl } from \"../Controls/Lookup/LookupPropertyControl\";\r\n\r\nexport class ProductPropertyControlFactory {\r\n static CreatePropertyControl(property: ProductPropertyDescription, productPart: ProductPart, orderEntityId: number, productEntityId: number): PropertyControl {\r\n switch (property.Type) {\r\n case FIELD_TYPES.Integer:\r\n return new IntegerPropertyControl(property, productPart);\r\n\r\n case FIELD_TYPES.Decimal:\r\n return new DecimalPropertyControl(property, productPart);\r\n\r\n case FIELD_TYPES.YesNo:\r\n return new CheckboxPropertyControl(property, productPart);\r\n\r\n case FIELD_TYPES.Color:\r\n return new ColorPropertyControl(property, productPart, orderEntityId, productEntityId);\r\n\r\n case FIELD_TYPES.Image:\r\n return new ImagePropertyControl(property, productPart, orderEntityId, productEntityId);\r\n\r\n case FIELD_TYPES.Lookup:\r\n return new LookupPropertyControl(property, productPart, orderEntityId, productEntityId);\r\n\r\n default:\r\n return new TextPropertyControl(property, productPart);\r\n }\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {PropertyControl} from \"./Controls/PropertyControl\";\r\nimport {PropertyValue} from \"../PropertyValue\";\r\n\r\nimport Template from './Template.html';\r\n\r\nexport class ProductPropertyGroup {\r\n HasContent: KnockoutComputed;\r\n AllContentLoaded: KnockoutComputed;\r\n readOnly: KnockoutObservable;\r\n\r\n constructor(public Name: string, public PropertyControls: PropertyControl[]) {\r\n this.HasContent = ko.computed(() => _.any(this.PropertyControls, control => control.HasContent()));\r\n this.AllContentLoaded = ko.computed(() => _.every(this.PropertyControls, control => control.HasContent()));\r\n this.readOnly = ko.observable(false);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n GetPropertyControl(propertyId: number) {\r\n return _.find(this.PropertyControls, control => control.Id === propertyId);\r\n }\r\n\r\n GetPropertyValues(): PropertyValue[] {\r\n return this.PropertyControls.map(control => new PropertyValue(control.Id, control.GetValueForSave(), control.IsValid()));\r\n }\r\n\r\n HasPropertyValues(): boolean {\r\n return this.PropertyControls.find(control => control.GetValueForSave() && !control.IsHiddenByAction) != null;\r\n }\r\n\r\n GetPropertyValuesForPrice(): PropertyValue[] {\r\n return this.PropertyControls.filter(control => control.PriceInfluence).map(control => new PropertyValue(control.ValueHolder, control.GetValueForPrice(), control.IsValid()));\r\n }\r\n GetPropertyValuesForPreview(): PropertyValue[] {\r\n return this.PropertyControls.filter(control => !control.IsHiddenByAction)\r\n .map(control => new PropertyValue(control.Id, control.GetValueForPreview(), control.IsValid()));\r\n }\r\n\r\n ClearPropertyValues() {\r\n this.PropertyControls.forEach(propertyControl => propertyControl.ClearValue());\r\n }\r\n\r\n HasPropertyControl(propertyControl: PropertyControl) {\r\n return this.PropertyControls.indexOf(propertyControl) > -1;\r\n }\r\n\r\n get IsHiddenByAction(): boolean {\r\n return _.every(this.PropertyControls, control => control.IsHiddenByAction);\r\n }\r\n\r\n OnInit() {\r\n this.PropertyControls.forEach(control => control.OnInit());\r\n }\r\n\r\n Dispose() {\r\n this.PropertyControls.forEach(control => control.Dispose());\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\n\r\nimport {PropertyEvaluationContext} from \"../Enums/PropertyEvaluationContext\";\r\n\r\nexport class PropertyEvaluationExpression {\r\n constructor(public Id: number,\r\n public Destination: string,\r\n public Expression: string,\r\n public SkipEvaluation?: boolean,\r\n public SkipError?: boolean) {\r\n\r\n }\r\n\r\n HasEvaluationContext() {\r\n return _.any([PropertyEvaluationContext.$this, PropertyEvaluationContext.$parent, PropertyEvaluationContext.$root], context => this.Expression.indexOf(context) > -1);\r\n }\r\n\r\n HasVariableDestination() {\r\n return this.Destination.startsWith('$')\r\n && !this.Destination.startsWith(`${PropertyEvaluationContext.$this}.`)\r\n && !this.Destination.startsWith(`${PropertyEvaluationContext.$parent}.`)\r\n && !this.Destination.startsWith(`${PropertyEvaluationContext.$root}.`)\r\n && !this.Destination.startsWith(`${PropertyEvaluationContext.$main}.`);\r\n }\r\n}","export class PropertyValue {\r\n constructor(public Id: number, public Value: string, public IsValid?: boolean) {\r\n }\r\n}","export class GetActionDependsOnValuesDto {\r\n constructor(public EntityName: string,\r\n public FieldNames: string[],\r\n public RecordId: number) {\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {EventBusConsumer} from 'Core/Common/EventBus/EventBusConsumer';\r\n\r\nimport {ConfirmationDialog, EVENTS, Types} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\n\r\nimport {NavigationStack} from '../../Stores/NavigationStack/NavigationStack';\r\nimport {NavigationStackEvents} from '../../Stores/NavigationStack/NavigationStackEvents';\r\n\r\nimport { NavigationItem } from '../../Stores/NavigationStack/NavigationItem';\r\n\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport Template from './Templates/BackButton.html';\r\n\r\nexport class BackButton extends EventBusConsumer {\r\n _labels = LABELS;\r\n private _navigateConfirmation: string;\r\n private _navigationItems: KnockoutObservableArray;\r\n private _visible: KnockoutComputed;\r\n private _currentNavigationItem: NavigationItem;\r\n\r\n constructor(private _navigationStack: NavigationStack) {\r\n super();\r\n\r\n const [_, ...navigationItems] = this._navigationStack.GetAll();\r\n this._navigationItems = ko.observableArray(navigationItems);\r\n this._visible = ko.computed(() => this._navigationItems().length > 0);\r\n\r\n this._currentNavigationItem = null;\r\n this._navigateConfirmation = null;\r\n\r\n this.BindEvents();\r\n }\r\n\r\n get NavigationItems(): KnockoutObservableArray {\r\n return this._navigationItems;\r\n }\r\n\r\n get Visible(): KnockoutObservable {\r\n return this._visible;\r\n }\r\n\r\n set NavigateConfirmation(message: string) {\r\n this._navigateConfirmation = message;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n Click() {\r\n this.DispatchEvent(NavigationStackEvents.CheckPage);\r\n }\r\n\r\n SelectNavigationItem(item: NavigationItem) {\r\n this._currentNavigationItem = item;\r\n this.DispatchEvent(NavigationStackEvents.CheckPage);\r\n }\r\n\r\n private Navigate() {\r\n const item = this._currentNavigationItem;\r\n if (!this._navigateConfirmation) {\r\n if (item) {\r\n this._navigationStack.NavigateTo(item);\r\n this._currentNavigationItem = null;\r\n } else {\r\n this._navigationStack.NavigateBack();\r\n }\r\n return;\r\n }\r\n\r\n const dialog = this.BuildNavigateConfirmation(() => item ? this._navigationStack.NavigateTo(item) : this._navigationStack.NavigateBack());\r\n this._navigateConfirmation = null;\r\n dialog.Show();\r\n }\r\n\r\n private BindEvents() {\r\n this.AssignEventBus(this._navigationStack.EventBus);\r\n\r\n this.HandleEvent(NavigationStackEvents.Push)\r\n .Using(() => this.RefreshItems())\r\n .Always();\r\n\r\n this.HandleEvent(NavigationStackEvents.Pop)\r\n .Using(() => this.RefreshItems())\r\n .Always();\r\n\r\n this.HandleEvent(NavigationStackEvents.Navigate)\r\n .Using(() => this.RefreshItems())\r\n .Always();\r\n\r\n this.HandleEvent<{ OldItem: NavigationItem, NewItem: NavigationStack }>(NavigationStackEvents.Update)\r\n .Using(() => this.RefreshItems())\r\n .Always();\r\n\r\n this.HandleEvent(NavigationStackEvents.Checked)\r\n .Using(() => this.Navigate())\r\n .Always();\r\n }\r\n\r\n private RefreshItems() {\r\n const [_, ...navigationItems] = this._navigationStack.GetAll();\r\n this._navigationItems(navigationItems);\r\n }\r\n\r\n private BuildNavigateConfirmation(onConfirm: () => void) {\r\n const dialog = new ConfirmationDialog({\r\n Text: this._navigateConfirmation,\r\n Type: Types.Question\r\n });\r\n\r\n dialog.On(EVENTS.CONFIRM_SELECTED, this, onConfirm);\r\n\r\n return dialog;\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {EventBus} from \"Core/Common/EventBus/EventBus\";\r\nimport {EventBusConsumer} from \"Core/Common/EventBus/EventBusConsumer\";\r\n\r\nimport {NavigationStack} from '../Stores/NavigationStack/NavigationStack';\r\nimport {BackButton} from '../Components/BackButton/BackButton';\r\nimport {ProductImageViewer} from '../Components/ProductImageViewer/ProductImageViewer';\r\nimport {ConfigurationRole} from \"./ConfigurationPage/Models/ConfigurationRole\";\r\n\r\nexport interface IProductConfigurationPageParams {\r\n OrderEntityId: number;\r\n ProductsEntityId: number;\r\n OrderId: number;\r\n ConfigurationRoles: ConfigurationRole[];\r\n}\r\n\r\nexport abstract class ProductConfiguratorPage extends EventBusConsumer {\r\n protected container: HTMLElement;\r\n protected totalContinueBtnContainer: HTMLElement;\r\n protected backButton: BackButton;\r\n\tprotected productImageViewer: ProductImageViewer;\r\n protected ConfigurationRoles: KnockoutObservableArray;\r\n protected configRolesDropdownActive: KnockoutObservable;\r\n protected ActiveConfigurationRole: KnockoutObservable;\r\n protected RolesImplemented: boolean;\r\n\r\n protected constructor(protected params: TParams, protected navigationStack: NavigationStack, eventBus: EventBus) {\r\n super();\r\n\r\n\t\tthis.backButton = new BackButton(navigationStack);\r\n\t\tthis.productImageViewer = new ProductImageViewer({\r\n\t\t\tProductsEntityId: params.ProductsEntityId,\r\n\t\t\tOrderEntityId: params.OrderEntityId\r\n\t\t});\r\n this.AssignEventBus(eventBus);\r\n\r\n this.RolesImplemented = params.ConfigurationRoles.length > 0;\r\n\r\n this.ConfigurationRoles = ko.observableArray(params.ConfigurationRoles);\r\n this.ActiveConfigurationRole = ko.observable(this.GetActiveConfigurationRole());\r\n this.configRolesDropdownActive = ko.observable(params.ConfigurationRoles.length > 1);\r\n }\r\n\r\n GetActiveConfigurationRole() {\r\n return this.ConfigurationRoles().find(r => r.Active())\r\n }\r\n\r\n SelectConfigurationRole(selectedRole: ConfigurationRole) {\r\n if (selectedRole.Id != this.ActiveConfigurationRole().Id) {\r\n _.each(this.ConfigurationRoles(), role => (role.Id == selectedRole.Id) ? role.Active(true) : role.Active(false));\r\n this.ActiveConfigurationRole(this.GetActiveConfigurationRole());\r\n }\r\n }\r\n\r\n abstract GetTemplate();\r\n\r\n AfterRender(el: HTMLElement): void {\r\n this.container = el[0];\r\n }\r\n\r\n Dispose() {\r\n super.Dispose();\r\n this.backButton.Dispose();\r\n }\r\n}","export const RootProductsPageEvents = {\r\n Selected: 'RootProductsPageEvents_Selected',\r\n ConfigurableProductSelected: 'RootProductsPageEvents_ConfigurableProductSelected'\r\n};\r\n\r\n","import {P} from \"Core/Common/Promise\";\r\nimport {Request} from \"Core/Common/Request\";\r\n\r\nimport { NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport {ProductResponse} from \"./Models/ProductResponse\";\r\nimport {ListSlice} from '../../../../../../Common/Collections/ListSlice';\r\n\r\nexport class RootProductsPageStore {\r\n constructor(private _productsEntityId: number, private _rootProductsViewId?: number) {\r\n }\r\n\r\n GetRootProducts(sliceNumber: number, itemsInSlice: number): P.Promise> {\r\n const deferred = P.defer>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetRootProducts',\r\n type: 'GET',\r\n dataType: 'json',\r\n }, params: {\r\n EntityId: this._productsEntityId,\r\n RootViewId: this._rootProductsViewId,\r\n SliceNumber: sliceNumber,\r\n ItemsInSlice: itemsInSlice\r\n }\r\n })\r\n .then(productsDto => deferred.resolve(productsDto))\r\n .fail(err => deferred.reject(this.GetResponseError(err, NOTIFICATIONS.ERROR_GETTING_ROOT_PRODUCTS)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetNestedProductsOf(productId: number): P.Promise> {\r\n const deferred = P.defer>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetNestedProducts',\r\n type: 'GET',\r\n dataType: 'json',\r\n }, params: {EntityId: this._productsEntityId, RecordId: productId}\r\n })\r\n .then(productsDto => deferred.resolve(productsDto))\r\n .fail(err => deferred.reject(this.GetResponseError(err, NOTIFICATIONS.ERROR_GETTING_NESTED_PRODUCTS)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import {EventBusConsumer} from \"Core/Common/EventBus/EventBusConsumer\";\r\n\r\nimport {RootProductsPageEvents} from \"../Events/RootProductsPageEvents\";\r\nimport {ImageTableTypes} from \"../../../Components/ProductImageViewer/Enums/ImageTableTypes\";\r\nimport { ImagePreloader } from \"../../../../../../Common/Image\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport Template from '../Templates/Product.html';\r\n\r\nexport class Product extends EventBusConsumer {\r\n private _imageSize: number;\r\n private _imageSizeClassName: string;\r\n _labels: LABELS;\r\n public Image: string;\r\n\r\n constructor(public Id: number,\r\n public Name: string,\r\n public NameTranslated: string,\r\n image: string,\r\n public Description: string,\r\n public GroupId: number,\r\n public GroupName: string) {\r\n super();\r\n \r\n this.Image = image ? `api/FilesApi/GetImage/${image}` : null;\r\n\r\n ImagePreloader.Preload(this.Image);\r\n\r\n this._imageSize = null;\r\n this._imageSizeClassName = null;\r\n this._labels = LABELS;\r\n }\r\n\r\n set ImageSize(value: number) {\r\n this._imageSize = value;\r\n }\r\n\r\n get ImageSizeClassName(): string{\r\n return this.GetImageSizeClassName();\r\n }\r\n\r\n GetImageSizeClassName(){\r\n switch (this._imageSize) {\r\n case 60:\r\n return this._imageSizeClassName = 'imageSize-60';\r\n case 70:\r\n return this._imageSizeClassName = 'imageSize-70';\r\n case 80:\r\n return this._imageSizeClassName = 'imageSize-80';\r\n case 90:\r\n return this._imageSizeClassName = 'imageSize-90';\r\n default:\r\n return this._imageSizeClassName = 'imageSize-100';\r\n }\r\n }\r\n\r\n get ImageTableType() {\r\n\t return ImageTableTypes.Product;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n OnClick() {\r\n this.Select();\r\n }\r\n\r\n Select() {\r\n this.DispatchEvent(RootProductsPageEvents.Selected, this);\r\n }\r\n}","// Module\nvar code = \"
    \\\"no :(

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam ea molestias sunt. Alias, architecto explicabo facere facilis maiores nobis reiciendis.

    \";\n// Exports\nexport default code;","import {ProductDto} from \"Core/Components/Controls/ProductConfigurator/Models/ProductDto\";\r\n\r\nimport {ProductResponse} from \"../Stores/Models/ProductResponse\";\r\n\r\nimport {Product} from \"../Models/Product\";\r\n\r\nexport type AfterMap = (productResponse: ProductResponse, product: Product) => void;\r\n\r\nexport class RootProductsPageMappings {\r\n MapToProductDto(product: Product) {\r\n return new ProductDto(product.Id, product.Name, product.NameTranslated, product.Image, null);\r\n }\r\n\r\n MapToProduct(productResponse: ProductResponse, afterMap?: AfterMap): Product {\r\n const product = new Product(productResponse.Id, productResponse.Name, productResponse.NameTranslated, productResponse.Image, productResponse.Description, productResponse.PcfGroup.Id, productResponse.PcfGroup.Name);\r\n\r\n if (afterMap) {\r\n afterMap(productResponse, product);\r\n }\r\n\r\n return product;\r\n }\r\n\r\n MapToProducts(productsDto: ProductResponse[], afterMap?: AfterMap): Product[] {\r\n return productsDto.map(productResponse => this.MapToProduct(productResponse, afterMap));\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {EventBus} from \"Core/Common/EventBus/EventBus\";\r\nimport {EventBusConsumer} from \"Core/Common/EventBus/EventBusConsumer\";\r\n\r\nimport {Product} from \"./Product\";\r\n\r\nexport class ViewModel extends EventBusConsumer {\r\n Products: KnockoutObservableArray;\r\n\r\n constructor(eventBus: EventBus) {\r\n super();\r\n\r\n this.Products = ko.observableArray([]);\r\n this.AssignEventBus(eventBus);\r\n }\r\n\r\n Dispose() {\r\n this.Products().forEach(product => product.Dispose());\r\n super.Dispose();\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {EventBus, IEventArgs} from \"Core/Common/EventBus/EventBus\";\r\n\r\nimport {Paginator} from 'Core/Components/Paginator/Paginator';\r\nimport {EVENTS as PAGINATOR_EVENTS} from 'Core/Components/Paginator/Constants';\r\n\r\nimport {IProductConfigurationPageParams, ProductConfiguratorPage} from \"../ProductConfiguratorPage\";\r\n\r\nimport {NavigationStack} from '../../Stores/NavigationStack/NavigationStack';\r\nimport {NavigationItemTypes} from '../../Stores/NavigationStack/NavigationItem';\r\n\r\nimport {RootProductsPageStore} from \"./Stores/RootProductsPageStore\";\r\nimport {RootProductsPageMappings} from \"./Mappings/RootProductsPageMappings\";\r\n\r\nimport {ProductResponse} from \"./Stores/Models/ProductResponse\";\r\n\r\nimport {ViewModel} from \"./Models/ViewModel\";\r\nimport {Product} from \"./Models/Product\";\r\n\r\nimport {ProductDto} from \"Core/Components/Controls/ProductConfigurator/Models/ProductDto\";\r\n\r\nimport { RootProductsPageEvents } from \"./Events/RootProductsPageEvents\";\r\nimport {StartPageEvents} from \"../StartPage/Events/StartPageEvents\";\r\n\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport Template from './Templates/Template.html';\r\n\r\nexport interface IRootProductsPageParams extends IProductConfigurationPageParams {\r\n ImageSizes: IRootProductsPageImageSizes;\r\n RootProductsViewId?: number;\r\n}\r\n\r\nexport interface IRootProductsPageImageSizes {\r\n ProductSelection: number\r\n}\r\n\r\nexport class RootProductsPage extends ProductConfiguratorPage {\r\n private _paginator: Paginator;\r\n private _product: Product;\r\n\r\n private _store: RootProductsPageStore;\r\n private _mappings: RootProductsPageMappings;\r\n\r\n private _viewModel: ViewModel;\r\n private _header:KnockoutObservable;\r\n _labels = LABELS;\r\n\r\n constructor(params: IRootProductsPageParams, navigationStack: NavigationStack, eventBus: EventBus) {\r\n super(params, navigationStack, eventBus);\r\n\r\n this._paginator = new Paginator();\r\n this._paginator.PageNumber = 1;\r\n this._paginator.RecordsPerPage = 50;\r\n\r\n this._store = new RootProductsPageStore(params.ProductsEntityId, params.RootProductsViewId);\r\n this._mappings = new RootProductsPageMappings();\r\n\r\n this._viewModel = new ViewModel(eventBus);\r\n this.BindEvents();\r\n\r\n this._header = ko.observable(LABELS.SELECT_PRODUCT);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n Refresh(product?: Product, pageNumber?: number) {\r\n if (product) {\r\n return this.LoadNestedProductsOf(product);\r\n }\r\n\r\n if (pageNumber != null) {\r\n this._paginator.PageNumber = pageNumber;\r\n }\r\n\r\n return this.LoadRootProducts()\r\n .then(() => {\r\n this.navigationStack.Upsert(LABELS.NEW_PRODUCT + (this._paginator.PageNumber ? ` (${LABELS.PAGE} ${this._paginator.PageNumber})` : \"\"), NavigationItemTypes.RootProducts, {\r\n PageNumber: this._paginator.PageNumber,\r\n RecordsPerPage: this._paginator.RecordsPerPage\r\n });\r\n });\r\n }\r\n\r\n Dispose() {\r\n this._viewModel.Dispose();\r\n super.Dispose();\r\n }\r\n\r\n private BindEvents() {\r\n this.HandleEvent(RootProductsPageEvents.Selected)\r\n .Using((eventArgs: IEventArgs) => this.SelectProduct(eventArgs.Data))\r\n .Always();\r\n\r\n this._paginator.On(PAGINATOR_EVENTS.CHANGE, this, () => this.SwitchPage());\r\n }\r\n\r\n private SwitchPage() {\r\n if (!this._product) {\r\n return this.LoadRootProducts()\r\n .then(() => {\r\n this.navigationStack.Upsert(LABELS.NEW_PRODUCT + (this._paginator.PageNumber?` (${ LABELS.PAGE } ${ this._paginator.PageNumber })`: ``), NavigationItemTypes.RootProducts, {\r\n PageNumber: this._paginator.PageNumber,\r\n RecordsPerPage: this._paginator.RecordsPerPage\r\n });\r\n });\r\n }\r\n\r\n return this.LoadNestedProductsOf(this._product)\r\n .then(() => {\r\n this.navigationStack.Upsert(`${LABELS.NEW_PRODUCT} (${this._product.NameTranslated || this._product.Name}` + (this._paginator.PageNumber ? ` | ${LABELS.PAGE} ${this._paginator.PageNumber})` : ``), NavigationItemTypes.NestedProducts, {\r\n Id: this._product.Id,\r\n PageNumber: this._paginator.PageNumber,\r\n });\r\n });\r\n }\r\n\r\n private FillViewModel(rootProducts: ProductResponse[]) {\r\n const products = this._mappings.MapToProducts(rootProducts,\r\n (rootProduct, product) => product.AssignEventBus(this.EventBus));\r\n\r\n products.forEach(product => product.ImageSize = this.params.ImageSizes.ProductSelection);\r\n this._viewModel.Products(products);\r\n }\r\n\r\n public CloseModal() {\r\n this.DispatchEvent(StartPageEvents.ClosePopup);\r\n }\r\n\r\n private SelectProduct(product: Product) {\r\n if (product.GroupId || product.GroupName) {\r\n const productDto = this._mappings.MapToProductDto(product);\r\n this.DispatchEvent(RootProductsPageEvents.ConfigurableProductSelected, productDto);\r\n return;\r\n }\r\n\r\n this._product = product;\r\n\r\n return this.LoadNestedProductsOf(product)\r\n .then(() => {\r\n this._paginator.PageNumber = 1;\r\n this.navigationStack.Push(`${LABELS.NEW_PRODUCT} (${this._product.NameTranslated || this._product.Name}` + (this._paginator.PageNumber?` | ${LABELS.PAGE} ${this._paginator.PageNumber})`: ``), NavigationItemTypes.NestedProducts, {\r\n Product: product,\r\n PageNumber: this._paginator.PageNumber\r\n });\r\n });\r\n }\r\n\r\n private LoadRootProducts() {\r\n BlockUI.Block();\r\n\r\n return this._store.GetRootProducts(this._paginator.PageNumber, this._paginator.RecordsPerPage)\r\n .then(productsSlice => {\r\n this.FillViewModel(productsSlice.Items);\r\n this._paginator.TotalRecords = productsSlice.TotalCount;\r\n BlockUI.Unblock();\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n private LoadNestedProductsOf(product: Product) {\r\n this._header(this._header() + \": \" + (product.NameTranslated || product.Name));\r\n BlockUI.Block({Target: this.container});\r\n\r\n return this._store.GetNestedProductsOf(product.Id)\r\n .then(nestedProductsSlice => {\r\n this.FillViewModel(nestedProductsSlice.Items);\r\n this._paginator.TotalRecords = nestedProductsSlice.TotalCount;\r\n\r\n BlockUI.Unblock(this.container);\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock(this.container);\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import {AttachmentModel} from 'Core/Controls/Image/Models/AttachmentModel';\r\nimport {UpdateAnnotationsDto} from \"../Components/ConfigurationImageGallery/Models/UpdateAnnotationsDto\";\r\n\r\nexport const StartPageEvents = {\r\n Selected: 'StartPageEvents_Selected',\r\n Copied: 'StartPageEvents_Copied',\r\n Removed: 'StartPageEvents_Removed',\r\n ConfiguredProductSelected: 'StartPageEvents_ConfiguredProductSelected',\r\n AddNewProduct: 'StartPageEvents_AddNewProduct',\r\n ClosePopup: 'StartPageEvents_ClosePopup',\r\n TabSelected: 'StartPageEvents_TabSelected',\r\n SaveConfigurationData: 'StartPageEvents_SaveConfigurationData'\r\n};\r\n\r\nexport class SaveConfigurationDataEventArgs {\r\n constructor(public Memo: string, public AddedImageAttachments: Array, public RemovedImageIds: Array, public UpdatedAnnotations: Array) {\r\n }\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nexport class ConfigurationDescription {\r\n @deserialize\r\n Description: string;\r\n\r\n @deserialize\r\n DescriptionTranslation: string;\r\n \r\n @deserialize\r\n Level: string;\r\n}","import {ConfigurationDescription} from \"Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/Models/ConfigurationDescription\";\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\nexport class ProductResponse {\r\n \r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n NameTranslated: string;\r\n\r\n @deserialize\r\n Image: string;\r\n\r\n @deserialize\r\n ConfigurationId: number;\r\n\r\n @deserializeAs(ConfigurationDescription)\r\n ConfigurationDescriptions: ConfigurationDescription[];\r\n\r\n @deserialize\r\n Levels: string[];\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {Request} from 'Core/Common/Request';\r\nimport {NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {ProductResponse} from \"./Models/ProductResponse\";\r\nimport {ConfigurationDataResponse} from './Models/ConfigurationDataResponse';\r\nimport {SaveConfigurationDataDto} from 'Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/Params/SaveConfigurationDataDto';\r\nimport {SaveAllConfigurationDataDto} from 'Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/Params/SaveAllConfigurationDataDto';\r\n\r\nimport { Deserialize } from \"libs/cerialize\";\r\n\r\nexport class StartPageStore {\r\n constructor(private _orderEntityId: number, private _productEntityId: number, private _descriptionFieldId?: number) {\r\n }\r\n\r\n GetConfiguredProducts(dto: { OrderEntityId: number, ProductEntityId: number, OrderId: number }): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetConfiguredProducts',\r\n type: 'GET',\r\n dataType: 'json',\r\n }, params: {\r\n OrderEntityId: dto.OrderEntityId,\r\n ProductEntityId: dto.ProductEntityId,\r\n DescriptionFieldId: this._descriptionFieldId,\r\n OrderId: dto.OrderId\r\n }\r\n })\r\n .then(products => deferred.resolve(Deserialize(products, ProductResponse)))\r\n .fail(err => deferred.reject(this.GetResponseError(err, NOTIFICATIONS.ERROR_GETTING_CONFIGURED_PRODUCTS)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetConfigurationData(configurationId: number): P.Promise {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetConfigurationData',\r\n type: 'GET'\r\n },\r\n params: {\r\n OrderEntityId: this._orderEntityId,\r\n ProductEntityId: this._productEntityId,\r\n ConfigurationId: configurationId\r\n }\r\n })\r\n .then(hookData => deferred.resolve(hookData))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting configuration data')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetOriginalConfigurationImage(imageId: number, controlId: number) {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetOriginalConfigurationImage',\r\n type: 'POST',\r\n }, params: {\r\n OrderEntityId: this._orderEntityId,\r\n ProductEntityId: this._productEntityId,\r\n ImageId: imageId,\r\n ControlId: controlId\r\n }\r\n })\r\n .then(image => deferred.resolve(image))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting original image property')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n CopyConfiguredProduct(configurationId: number) {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/CopyConfiguredProduct',\r\n type: 'POST'\r\n }, params: {\r\n OrderEntityId: this._orderEntityId,\r\n ProductEntityId: this._productEntityId,\r\n ConfigurationId: configurationId\r\n }\r\n })\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error copying product')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n RemoveConfiguredProduct(configurationId: number) {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/RemoveConfiguredProduct',\r\n type: 'POST'\r\n }, params: {\r\n OrderEntityId: this._orderEntityId,\r\n ProductEntityId: this._productEntityId,\r\n ConfigurationId: configurationId\r\n }\r\n })\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error removing product')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n RemoveConfiguredProductByLevel(configurationId: number, level: string) {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/RemoveConfiguredProductByLevel',\r\n type: 'POST'\r\n }, params: {\r\n OrderEntityId: this._orderEntityId,\r\n ProductEntityId: this._productEntityId,\r\n ConfigurationId: configurationId,\r\n Level: level\r\n }\r\n })\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error removing product')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n SaveConfigurationData(dto: SaveConfigurationDataDto) {\r\n const deferred = P.defer();\r\n\r\n dto.OrderEntityId = this._orderEntityId;\r\n dto.ProductEntityId = this._productEntityId;\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/SaveConfigurationData',\r\n type: 'POST'\r\n },\r\n params: dto\r\n })\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error saving configuration data')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n SaveAllConfigurationData(dto: SaveAllConfigurationDataDto) {\r\n const deferred = P.defer();\r\n\r\n _.each(dto.SaveConfigurationDataDtos, saveConfigurationDataDto => {\r\n saveConfigurationDataDto.OrderEntityId = this._orderEntityId;\r\n saveConfigurationDataDto.ProductEntityId = this._productEntityId;\r\n });\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/SaveAllConfigurationData',\r\n type: 'POST'\r\n },\r\n params: dto\r\n })\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error saving all configuration data')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","export class UpdateAnnotationsDto {\r\n constructor(public Id: number, public Annotations: string, public TempName: string, public TempOriginalName: string) {\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport * as _ from 'underscore'\r\nimport * as Viewer from \"viewer\";\r\nimport {MarkerArea} from \"markerjs2\";\r\n\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {BlockUI as BlockUi} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport TruncateFileName from \"Core/Common/TruncateFileName\";\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\nimport {ViewerJsExtention} from 'Core/KnockoutExtentions/ViewerJsExtention';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {FileModel, ImageDataModel} from \"Core/Controls/Image/Models/ImageDataModel\";\r\nimport {AttachmentModel} from 'Core/Controls/Image/Models/AttachmentModel';\r\nimport {ConfigurationDataImage} from \"../../Stores/Models/ConfigurationDataImage\";\r\nimport {UpdateAnnotationsDto} from \"./Models/UpdateAnnotationsDto\";\r\nimport {ImageFromCamera} from \"Core/Controls/Image/ImageFromCamera/ImageFromCamera\";\r\nimport {ImageCropperScreen} from \"Core/Controls/Image/ImageCropperScreen/ImageCropperScreen\";\r\nimport {UploadChunkModel} from \"Core/Controls/Drop/Models/UploadChunkModel\";\r\nimport {DropDataStore} from \"Core/Controls/Drop/Stores/DropDataStore\";\r\nimport {StartPageStore} from \"../../Stores/StartPageStore\";\r\n\r\nimport Template from './Templates/ConfigurationImageGallery.html';\r\nimport { error } from \"jquery\";\r\nko.templates['Core/Components/Controls/ProductConfigurator/Pages/StartPage/Components/ConfigurationImageGallery/Templates/ConfigurationImageGallery'] = Template;\r\n\r\nexport const CLIPBOARD_IMAGES_TOPIC = 'clipboardImages';\r\n\r\nexport interface IConfigurationImageGallery {\r\n OrderEntityId: number;\r\n ProductsEntityId: number;\r\n ControlId: number;\r\n Annotations: any;\r\n}\r\n\r\nexport class ConfigurationImageGallery extends Event {\r\n private _labels = LABELS;\r\n\r\n private _el: HTMLElement;\r\n private _dropzoneInstance: any;\r\n private _isRendered: KnockoutObservable;\r\n\r\n private _dataModel: KnockoutObservable;\r\n private _addedImageAttachments: Array;\r\n private _removedImageIds: Array;\r\n private _clipboardImages: KnockoutObservable>;\r\n private _imageGalleryVisible: KnockoutObservable;\r\n private _markerArea: MarkerArea;\r\n private _markerButton: Element;\r\n private _annotations: Array;\r\n private _annotationsShown: KnockoutObservable;\r\n\r\n private _isMobile: boolean;\r\n private _maxFileSize: number;\r\n\r\n private _imageGalleryContainer: HTMLElement;\r\n private _imageGalleryViewer: Viewer;\r\n private _startPageStore: StartPageStore;\r\n private _mutationObserver: MutationObserver;\r\n private _uploadedFilesObjects: Array;\r\n private _controlId: number;\r\n private _useAnnotations: boolean;\r\n private _showAnnotations: boolean;\r\n\r\n constructor(options: IConfigurationImageGallery) {\r\n super();\r\n\r\n this._el = null;\r\n this._isRendered = ko.observable(false);\r\n\r\n this._dataModel = ko.observable(null);\r\n this._addedImageAttachments = [];\r\n this._removedImageIds = [];\r\n this._clipboardImages = ko.observable();\r\n this._imageGalleryVisible = ko.observable(false);\r\n\r\n this._annotations = [];\r\n this._markerButton = null;\r\n this._annotationsShown = ko.observable(false);\r\n this._uploadedFilesObjects = [];\r\n\r\n this._isMobile = MobileChecker.IsMobile();\r\n this._maxFileSize = 15;\r\n\r\n this._controlId = options.ControlId;\r\n\r\n this._startPageStore = new StartPageStore(options.OrderEntityId, options.ProductsEntityId);\r\n\r\n this._useAnnotations = options.Annotations.UseAnnotations;\r\n this._showAnnotations = options.Annotations.ShowAnnotationsModeByDefault;\r\n }\r\n\r\n get IsImageGallery(): boolean {\r\n return this._imageGalleryVisible();\r\n }\r\n\r\n get MaxFileSize(): number {\r\n return this._maxFileSize;\r\n }\r\n\r\n get AddedImageAttachments() {\r\n return this._addedImageAttachments;\r\n }\r\n\r\n get RemovedImageIds() {\r\n return this._removedImageIds;\r\n }\r\n\r\n get UpdatedAnnotations() {\r\n return _.map(this._annotations, annotation => new UpdateAnnotationsDto(Number(annotation.Id), annotation.Annotations, annotation.TempName, annotation.TempOriginalName));\r\n }\r\n\r\n get HasChanges(): boolean {\r\n return _.any(this._addedImageAttachments) || _.any(this._removedImageIds) || _.any(this._annotations);\r\n }\r\n\r\n AfterRender(el: Array): void {\r\n if (el) {\r\n this._el = el[0];\r\n }\r\n\r\n this._isRendered(true);\r\n }\r\n\r\n private BlockUi() {\r\n if (this._el) {\r\n BlockUi.Block({Target: this._el});\r\n }\r\n }\r\n\r\n private UnBlockUi() {\r\n BlockUi.Unblock(this._el);\r\n }\r\n\r\n public IsImage(fileName: string){\r\n let imageExtensions = ['bpm', 'jpg', 'jpeg', 'png', 'gif', 'jpe', 'jif', 'jfif', 'jfi', 'webp'],\r\n extension = _.last(fileName.split('.'));\r\n\r\n if(extension){\r\n if(imageExtensions.indexOf(extension.toLowerCase())>=0){\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n SetGalleryImages(imageGalleryExists: boolean, configurationImages: ConfigurationDataImage[]) {\r\n if (this._isRendered()) {\r\n this.LoadImagesOnInit(imageGalleryExists, configurationImages);\r\n } else {\r\n this._isRendered.subscribe(() => this.LoadImagesOnInit(imageGalleryExists, configurationImages));\r\n }\r\n }\r\n\r\n LoadImagesOnInit(imageGalleryExists: boolean, configurationImages: ConfigurationDataImage[]) {\r\n BlockUi.Block();\r\n\r\n this._imageGalleryVisible(imageGalleryExists);\r\n\r\n if (!this._imageGalleryVisible()) {\r\n this._dataModel(null);\r\n BlockUi.Unblock();\r\n return;\r\n }\r\n\r\n if (this._dataModel()) {\r\n this._dropzoneInstance.removeAllFiles();\r\n ko.utils.domData.set(this._dropzoneInstance.element, 'preloadFinished', false);\r\n\r\n this._addedImageAttachments = [];\r\n this._removedImageIds = [];\r\n }\r\n\r\n let dataModel = new ImageDataModel();\r\n _.each(configurationImages, (image)=>{\r\n const fileModel = new FileModel();\r\n fileModel.Id = image.Id;\r\n fileModel.Name = image.Name;\r\n fileModel.ImageData = image.ImageData;\r\n fileModel.Annotations = image.Annotations;\r\n fileModel.Size = image.Size;\r\n\r\n dataModel.Files.push(fileModel);\r\n });\r\n\r\n this.InitImageGalleryViewer();\r\n this.InitDropzone();\r\n this.InitPasteEvents();\r\n\r\n this._dataModel(dataModel);\r\n BlockUi.Unblock();\r\n }\r\n\r\n AfterUpload(file, data) {\r\n const attachmentModel = new AttachmentModel();\r\n attachmentModel.FileName = file.name;\r\n\r\n if (file.preloaded) {\r\n this.AddImageInGalleryMemory(file);\r\n file.previewElement.addEventListener('click', () => {\r\n this.GetOriginalImage(file, this._imageGalleryViewer);\r\n });\r\n return;\r\n }\r\n\r\n file.OriginalImageData = file.dataURL;\r\n\r\n BlockUi.Block();\r\n\r\n if (!this._dataModel()) {\r\n this._dataModel(new ImageDataModel());\r\n }\r\n\r\n if (file.status === 'error' || file.status === 'removed') {\r\n BlockUi.Unblock();\r\n return;\r\n }\r\n\r\n const fileModel = new FileModel();\r\n\r\n fileModel.ImageData = window.URL.createObjectURL(file);\r\n fileModel.OriginalImageData = fileModel.ImageData;\r\n\r\n if (file && file.status === \"queued\") {\r\n fileModel.CacheFile = file;\r\n }\r\n\r\n this._dataModel().Files.push(fileModel);\r\n this._dataModel.valueHasMutated();\r\n\r\n attachmentModel.FileName = TruncateFileName(file.name);\r\n attachmentModel.TempName = `${Guid.NewGuid()}_${attachmentModel.FileName}`;\r\n attachmentModel.Index = this._imageGalleryViewer.images.length;\r\n\r\n fileModel.Attachment = attachmentModel;\r\n fileModel.Id = Guid.NewGuid();\r\n \r\n const chunks = this.CutByChunks(file);\r\n\r\n this.UploadFileChunks(chunks, attachmentModel.TempName, 1, chunks.length)\r\n .finally(()=>{\r\n BlockUi.Unblock();\r\n })\r\n .then((result) => {\r\n if(!result){ \r\n this._dropzoneInstance.removeFile(file);\r\n return;\r\n }\r\n this.AddImageInGalleryMemory(fileModel);\r\n file.previewElement.addEventListener('click', () => {\r\n this.GetOriginalImage(fileModel, this._imageGalleryViewer);\r\n }); \r\n this._uploadedFilesObjects.push({Id: fileModel.Id, File: file});\r\n this._addedImageAttachments.push(attachmentModel);\r\n });\r\n }\r\n\r\n private InitDropzone() {\r\n if (this._dropzoneInstance) {\r\n return;\r\n }\r\n\r\n this._dropzoneInstance = ko.utils.domData.get(\r\n this._el.querySelector('.dropzone'),\r\n 'dropZoneInstance'\r\n );\r\n }\r\n\r\n private InitImageGalleryViewer() {\r\n const self = this;\r\n const $container = $(\"
    \");\r\n this._imageGalleryContainer = $container[0];\r\n\r\n const opt = {\r\n markerable: this._useAnnotations,\r\n button: true,\r\n inline: false,\r\n navbar: false,\r\n title: false,\r\n toolbar: true,\r\n tooltip: true,\r\n movable: true,\r\n zoomable: true,\r\n rotatable: true,\r\n scalable: true,\r\n transition: true,\r\n fullscreen: true,\r\n keyboard: true,\r\n url: 'data-original',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n filter() {\r\n return true;\r\n },\r\n hide() {\r\n if (self._showAnnotations) {\r\n self._annotationsShown(false);\r\n } else {\r\n self._annotationsShown(true);\r\n }\r\n self._mutationObserver?.disconnect();\r\n },\r\n marker() {\r\n if (self._showAnnotations) {\r\n self._markerButton = (self._imageGalleryViewer.image.parentNode.parentNode as HTMLElement).getElementsByClassName(\"viewer-marker\")[0];\r\n self.ShowMarkerArea(self._imageGalleryViewer.image);\r\n } else {\r\n if (self._annotationsShown()) {\r\n self._markerButton = (self._imageGalleryViewer.image.parentNode.parentNode as HTMLElement).getElementsByClassName(\"viewer-marker\")[0];\r\n self.ShowMarkerArea(self._imageGalleryViewer.image);\r\n\r\n return;\r\n }\r\n\r\n self._annotationsShown(true);\r\n }\r\n },\r\n viewed() {\r\n if (!self._annotationsShown() && opt.markerable) {\r\n opt.marker();\r\n if (self._markerButton) {\r\n self._markerButton.classList.add(\"disabled\");\r\n self._markerButton.setAttribute('style', 'pointer-events: none;');\r\n }\r\n }\r\n }\r\n };\r\n\r\n this._imageGalleryViewer = new Viewer(this._imageGalleryContainer, opt);\r\n\r\n this._imageGalleryViewer.next = () => {\r\n if (this._imageGalleryViewer.index + 1 < this._dataModel().Files.length) {\r\n\r\n const image = this._dataModel().Files[this._imageGalleryViewer.index + 1];\r\n if (image.OriginalImageData == null) {\r\n this.GetOriginalImage(image, this._imageGalleryViewer);\r\n } else {\r\n this._imageGalleryViewer.view(Math.min(this._imageGalleryViewer.index + 1, this._imageGalleryViewer.images.length - 1));\r\n }\r\n return this._imageGalleryViewer;\r\n }\r\n }\r\n\r\n this._imageGalleryViewer.prev = () => {\r\n if (this._imageGalleryViewer.index > 0) {\r\n\r\n let image = this._dataModel().Files[this._imageGalleryViewer.index - 1];\r\n if (image.OriginalImageData == null) {\r\n this.GetOriginalImage(image, this._imageGalleryViewer);\r\n } else {\r\n this._imageGalleryViewer.view(Math.max(this._imageGalleryViewer.index - 1, 0));\r\n }\r\n }\r\n return this._imageGalleryViewer;\r\n }\r\n\r\n (this._imageGalleryViewer as any).clickOnImage = (uniqueId) => {\r\n const index = this._dataModel().Files.findIndex(file => file.UniqueId === uniqueId);\r\n const file = this._dataModel().Files[index];\r\n\r\n const img = this._imageGalleryViewer.images[index];\r\n $(img).attr('data-original', file.OriginalImageData);\r\n\r\n this._imageGalleryViewer.update();\r\n this._imageGalleryViewer.view(index);\r\n\r\n ViewerJsExtention.CustomTooltip();\r\n };\r\n }\r\n\r\n private InitPasteEvents() {\r\n PubSub.subscribe(CLIPBOARD_IMAGES_TOPIC, (message, data: Array | undefined) => {\r\n this._clipboardImages(data);\r\n });\r\n\r\n this._el.addEventListener(\r\n 'click',\r\n event => {\r\n const clipboardImages = this._clipboardImages();\r\n\r\n if (clipboardImages) {\r\n event.stopPropagation();\r\n\r\n const images = this._dropzoneInstance.options.maxFiles\r\n ? clipboardImages.slice(\r\n 0,\r\n this._dropzoneInstance.options.maxFiles - this._dropzoneInstance.files.length\r\n )\r\n : clipboardImages;\r\n\r\n this._dropzoneInstance.emit('addedfiles', images);\r\n this._dropzoneInstance.handleFiles(images);\r\n\r\n PubSub.publish(CLIPBOARD_IMAGES_TOPIC, undefined);\r\n }\r\n },\r\n true\r\n );\r\n\r\n document.addEventListener('click', event => {\r\n if (\r\n this._clipboardImages() &&\r\n event.target instanceof Node &&\r\n !this._el.contains(event.target) // click outside\r\n ) {\r\n PubSub.publish(CLIPBOARD_IMAGES_TOPIC, undefined);\r\n }\r\n });\r\n }\r\n\r\n private AddImageInGalleryMemory(file) {\r\n const image = $(\"\");\r\n image.prop('src', file.ImageData);\r\n image.attr('data-id', file.Id);\r\n\r\n $(this._imageGalleryContainer).append(image);\r\n this._imageGalleryViewer.update();\r\n }\r\n\r\n private RemoveImageFromGalleryMemory(file) {\r\n const image = $(this._imageGalleryContainer).find(`img[data-id=\"${file.Id}\"][src=\"${file.ImageData}\"]`);\r\n if(!image.length){\r\n return;\r\n }\r\n\r\n image.remove();\r\n this._imageGalleryViewer.update();\r\n }\r\n\r\n public AddFiles(files: File[]){\r\n this._dropzoneInstance.emit('addedfiles', files);\r\n this._dropzoneInstance.handleFiles(files);\r\n }\r\n\r\n private CutByChunks(file) {\r\n const chunkSizeInBytes = 1 * 1024 * 1024;\r\n\r\n let streamPosition = 0;\r\n let streamEndPosition = chunkSizeInBytes;\r\n\r\n if (chunkSizeInBytes >= file.size) {\r\n return [file];\r\n }\r\n\r\n const chunks = [];\r\n\r\n while (streamEndPosition < file.size) {\r\n const chunk = file.slice(streamPosition, streamEndPosition);\r\n chunks.push(chunk);\r\n\r\n streamPosition = streamEndPosition;\r\n streamEndPosition += chunkSizeInBytes;\r\n }\r\n const chunk = file.slice(streamPosition, file.size);\r\n chunks.push(chunk);\r\n\r\n return chunks;\r\n }\r\n\r\n private UploadFileChunks(fileChunks: any[], fileName: string, currentPart: number, totalPart: number) {\r\n return new Promise(resolve => {\r\n const uploadModel = new UploadChunkModel(fileName, fileChunks[currentPart - 1]);\r\n DropDataStore.UploadFileChunk(uploadModel) \r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n resolve(false);\r\n } else {\r\n if (totalPart >= currentPart) {\r\n if (totalPart === currentPart) {\r\n //Whole file uploaded\r\n resolve(true);\r\n } else {\r\n //Show uploading progress\r\n this.UploadFileChunks(fileChunks, fileName, currentPart + 1, totalPart).then(result => {\r\n resolve(result);\r\n });\r\n }\r\n }\r\n }\r\n }).fail((error)=>{\r\n resolve(false);\r\n });\r\n });\r\n }\r\n\r\n GetOriginalImage(file: FileModel, viewer) {\r\n if (file.OriginalImageData) {\r\n viewer.clickOnImage(file.UniqueId);\r\n return;\r\n }\r\n\r\n this.BlockUi();\r\n\r\n this._startPageStore.GetOriginalConfigurationImage(Number(file.Id), this._controlId)\r\n .then(imageData => {\r\n file.OriginalImageData = imageData;\r\n this._dataModel.valueHasMutated();\r\n viewer.clickOnImage(file.UniqueId);\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => {\r\n this.UnBlockUi();\r\n });\r\n }\r\n\r\n ImageDelete(file: FileModel) {\r\n if(!this._dataModel() || !this._dataModel().Files || this._dataModel().Files.length === 0){\r\n return;\r\n }\r\n\r\n let fileIndex = this._dataModel().Files.indexOf(file);\r\n let viewerImage = file;\r\n let galleryAttachment = file.Attachment;\r\n\r\n if (fileIndex === -1) {\r\n if (!this.IsImageGallery)\r\n return;\r\n\r\n const cachedFileModel = _.find(this._dataModel().Files,\r\n (fileWithCache) => {\r\n return fileWithCache.CacheFile === file\r\n });\r\n if (!cachedFileModel) {\r\n return;\r\n }\r\n\r\n const cachedFileIndex = this._dataModel().Files.indexOf(cachedFileModel);\r\n fileIndex = cachedFileIndex;\r\n viewerImage = cachedFileModel;\r\n\r\n if (!galleryAttachment) {\r\n galleryAttachment = cachedFileModel.Attachment;\r\n }\r\n }\r\n\r\n this._dataModel().Files.splice(fileIndex, 1);\r\n this.RemoveImageFromGalleryMemory(viewerImage);\r\n\r\n if (file.Id === null || file.Id === undefined) {\r\n this._addedImageAttachments.splice(this._addedImageAttachments.indexOf(galleryAttachment), 1);\r\n } else {\r\n this._removedImageIds.push(Number(file.Id));\r\n\r\n const removedAnnotations = _.find(this._annotations, annotation => annotation.Id == file.Id);\r\n this._annotations = _.without(this._annotations, removedAnnotations);\r\n }\r\n\r\n this._dataModel.valueHasMutated();\r\n }\r\n\r\n ClearImageAttachments() {\r\n this._addedImageAttachments = [];\r\n this._removedImageIds = [];\r\n this._annotations = [];\r\n }\r\n\r\n GetImageFromCamera() {\r\n const self = this;\r\n const camera = new ImageFromCamera();\r\n\r\n const attachmentModel = new AttachmentModel();\r\n attachmentModel.FileName = `Camera_${Date.now()}.png`;\r\n\r\n camera.On('SAVE', this, (eventArgs) => {\r\n let imageCropperScreen = new ImageCropperScreen(true);\r\n\r\n imageCropperScreen.Image = eventArgs.data.Image;\r\n imageCropperScreen.Show();\r\n\r\n imageCropperScreen.On(\"IMAGE_CROPPED\", self, (eventArgs: any) => {\r\n\r\n if (eventArgs.data.CropedImage) {\r\n attachmentModel.Base64Data = eventArgs.data.CropedImage.split(',')[1];\r\n\r\n let files = [];\r\n if(attachmentModel.Base64Data && attachmentModel.Base64Data != ''){\r\n if(self.IsImage(attachmentModel.FileName)){\r\n files.push(this.ConvertBase64ToFile(attachmentModel.Base64Data, attachmentModel.FileName));\r\n }\r\n }\r\n self.AddFiles(files);\r\n }\r\n });\r\n });\r\n }\r\n\r\n public ConvertBase64ToFile (base64Data: string, fileName: string): File {\r\n let byteString = atob(base64Data),\r\n ab = new ArrayBuffer(byteString.length),\r\n ia = new Uint8Array(ab),\r\n type = 'plain/text';\r\n\r\n for (let i = 0; i < byteString.length; i += 1) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n if(this.IsImage(fileName)){\r\n type = `image/${_.last(fileName.split('.'))}`\r\n }\r\n\r\n return new File([ia.buffer], fileName, { type: type });\r\n };\r\n\r\n ShowMarkerArea(target) {\r\n const self = this;\r\n this.DisableViewerControls();\r\n\r\n const annotations = this._dataModel().Files[this._imageGalleryViewer.index].Annotations;\r\n\r\n this._markerArea = new MarkerArea(target);\r\n this._markerArea.renderAtNaturalSize = true;\r\n this._markerArea.renderImageType = 'image/png';\r\n this._markerArea.renderMarkersOnly = true;\r\n this._markerArea.uiStyleSettings.zIndex = ZIndexManager.Instance.NextValue;\r\n\r\n this._mutationObserver = new MutationObserver((mutations)=> {\r\n _.each(mutations, (mutation)=>{\r\n if (mutation.type === \"attributes\") {\r\n setTimeout(() => {\r\n this._markerArea.positionUI();\r\n }, 300);\r\n }\r\n });\r\n });\r\n\r\n this._mutationObserver.observe(target, { attributes: true });\r\n\r\n this._markerArea.addRenderEventListener((imgURL, state) => {\r\n\r\n let svgList = $('.__markerjs2_').find('svg'), svg = svgList[svgList.length - 1], svgString, svgBase64;\r\n svgString = new XMLSerializer().serializeToString(svg);\r\n svgBase64 = `data:image/svg+xml;base64,${window.btoa(svgString)}`;\r\n\r\n const fileModel = this._dataModel().Files[this._imageGalleryViewer.index];\r\n\r\n let images = $('.viewer-canvas').find('img');\r\n let img = images[images.length - 1];\r\n\r\n let canvas = document.createElement(\"canvas\"), context, width = img.offsetWidth, height = img.offsetHeight;\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n context = canvas.getContext(\"2d\");\r\n context.rect(0 , 0 , canvas.width , canvas.height);\r\n\r\n let originalImage = document.createElement('img');\r\n originalImage.src = fileModel.OriginalImageData;\r\n originalImage.crossOrigin = 'Anonymous';\r\n\r\n originalImage.onload = function(){\r\n context.drawImage(originalImage , 0 , 0 , width , height);\r\n\r\n let svgImage = document.createElement('img');\r\n svgImage.src = svgBase64;\r\n svgImage.crossOrigin = 'Anonymous';\r\n\r\n svgImage.onload = function(){\r\n context.drawImage(svgImage , 0 , 0 , width , height);\r\n let base64 = canvas.toDataURL(\"image/png\");\r\n\r\n const fileForPreview = self._dataModel().Files[self._imageGalleryViewer.index] as any;\r\n let prevEl = fileForPreview.previewElement;\r\n\r\n if (!prevEl) {\r\n _.map(self._uploadedFilesObjects, (fileObject) => {\r\n if (fileObject.Id == fileModel.Id) {\r\n prevEl = fileObject.File.previewElement;\r\n }\r\n });\r\n }\r\n let previewImageElement = $(prevEl).find('.dz-image > img');\r\n previewImageElement.attr('src', base64);\r\n\r\n const attachmentModel = new AttachmentModel(), attachment = self._addedImageAttachments.find(a => a.Index == self._imageGalleryViewer.index),\r\n annotation = self._annotations.find(a => a.Id === fileModel.Id);\r\n\r\n if (fileModel.Name) {\r\n attachmentModel.FileName = TruncateFileName(fileModel.Name);\r\n } else {\r\n attachmentModel.FileName = TruncateFileName(attachment.FileName);\r\n }\r\n\r\n attachmentModel.Base64Data = base64.replace('data:image/png;base64,', '');\r\n attachmentModel.TempName = `${Guid.NewGuid()}_${attachmentModel.FileName}`;\r\n\r\n let file;\r\n if(attachmentModel.Base64Data && attachmentModel.Base64Data != ''){\r\n file = self.ConvertBase64ToFile(attachmentModel.Base64Data, attachmentModel.FileName);\r\n\r\n let chunks = self.CutByChunks(file);\r\n self.UploadFileChunks(chunks, attachmentModel.TempName, 1, chunks.length)\r\n .then(() => BlockUi.Unblock());\r\n }\r\n\r\n if (fileModel.Attachment) {\r\n fileModel.TempOriginalName = fileModel.Attachment.TempName;\r\n } else {\r\n let originalImageFile, originalImageBase64 = fileModel.OriginalImageData.replace('data:', '').replace(/^.+,/, '');\r\n fileModel.TempOriginalName = `${Guid.NewGuid()}_${fileModel.Name}`;\r\n\r\n if (originalImageBase64 && originalImageBase64 != '') {\r\n originalImageFile = self.ConvertBase64ToFile(originalImageBase64, fileModel.Name);\r\n\r\n let chunks = self.CutByChunks(originalImageFile);\r\n self.UploadFileChunks(chunks, fileModel.TempOriginalName, 1, chunks.length)\r\n .then(() => BlockUi.Unblock());\r\n }\r\n }\r\n\r\n fileModel.TempName = attachmentModel.TempName;\r\n fileModel.Annotations = JSON.stringify(state);\r\n\r\n if (annotation) {\r\n annotation.Annotations = fileModel.Annotations;\r\n annotation.TempName = fileModel.TempName;\r\n annotation.TempOriginalName = fileModel.TempOriginalName;\r\n } else {\r\n const attachment = self._addedImageAttachments.find(a => a.Index == self._imageGalleryViewer.index);\r\n if (attachment) {\r\n attachment.Annotations = fileModel.Annotations;\r\n attachment.TempName = fileModel.TempName;\r\n attachment.TempOriginalName = fileModel.TempOriginalName;\r\n } else {\r\n const newAnnotation = new FileModel();\r\n newAnnotation.Id = fileModel.Id;\r\n newAnnotation.Annotations = fileModel.Annotations;\r\n newAnnotation.TempName = fileModel.TempName;\r\n newAnnotation.TempOriginalName = fileModel.TempOriginalName;\r\n self._annotations.push(newAnnotation);\r\n }\r\n }\r\n\r\n self.EnableViewerControls();\r\n }\r\n };\r\n });\r\n\r\n this._markerButton.classList.add(\"disabled\");\r\n this._markerButton.setAttribute('style', 'pointer-events: none;');\r\n this._markerArea.addCloseEventListener(() => {\r\n this.EnableViewerControls();\r\n this._annotationsShown(true);\r\n this._markerButton.classList.remove(\"disabled\");\r\n this._markerButton.setAttribute('style', 'pointer-events: auto;');\r\n });\r\n\r\n this._markerArea.show();\r\n this._annotationsShown(false);\r\n\r\n if (annotations) {\r\n this._markerArea.restoreState(JSON.parse(annotations));\r\n }\r\n }\r\n\r\n DisableViewerControls() {\r\n this._imageGalleryViewer.options.movable = false;\r\n this._imageGalleryViewer.options.zoomable = false;\r\n this._imageGalleryViewer.options.rotatable = false;\r\n this._imageGalleryViewer.options.flippable = false;\r\n }\r\n\r\n EnableViewerControls() {\r\n this._imageGalleryViewer.options.movable = true;\r\n this._imageGalleryViewer.options.zoomable = true;\r\n this._imageGalleryViewer.options.flippable = true;\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/Controls/ProductConfigurator/Pages/StartPage/Components/ConfigurationImageGallery/Templates/ConfigurationImageGallery';\r\n }\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {EventBusConsumer} from \"Core/Common/EventBus/EventBusConsumer\";\r\n\r\nimport {NOTIFICATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {SaveConfigurationDataEventArgs, StartPageEvents} from \"Core/Components/Controls/ProductConfigurator/Pages/StartPage/Events/StartPageEvents\";\r\nimport {ImageTableTypes} from \"Core/Components/Controls/ProductConfigurator/Components/ProductImageViewer/Enums/ImageTableTypes\";\r\nimport {ConfiguratorLevels} from 'Core/Components/Controls/ProductConfigurator/ConfiguratorLevels';\r\n\r\nimport {ConfigurationImageGallery} from 'Core/Components/Controls/ProductConfigurator/Pages/StartPage/Components/ConfigurationImageGallery/ConfigurationImageGallery';\r\nimport {ConfigurationDataImage} from 'Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/Models/ConfigurationDataImage';\r\nimport {ConfigurationDescription} from \"Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/Models/ConfigurationDescription\";\r\nimport { ImagePreloader } from \"../../../../../../Common/Image\";\r\n\r\nimport Template from 'Core/Components/Controls/ProductConfigurator/Pages/StartPage/Templates/Product.html';\r\n\r\nexport class Product extends EventBusConsumer {\r\n _labels = LABELS;\r\n\r\n private _guid: string;\r\n private _imageSize: number;\r\n private _imageSizeClassName: string;\r\n private _hookLoaded: boolean;\r\n private _memoEditor: any;\r\n\r\n public Levels: string[];\r\n public readOnly: KnockoutComputed;\r\n\r\n private _activeConfigurationLevel: KnockoutObservable;\r\n\r\n private _tabSelected: KnockoutObservable;\r\n\r\n private _memo: KnockoutObservable;\r\n private _initialMemo: KnockoutObservable;\r\n private _memoVisible: KnockoutObservable;\r\n\r\n private _showConfigurationDescription: boolean;\r\n private _configurationImageGallery: ConfigurationImageGallery;\r\n public Image: string;\r\n\r\n constructor(public Id: number,\r\n public Name: string,\r\n public NameTranslated: string,\r\n image: string,\r\n public ConfigurationId: number,\r\n public ConfigurationDescriptions: ConfigurationDescription[],\r\n public OrderEntityId: number,\r\n public ControlId: number,\r\n public ProductEntityId: number,\r\n public Annotations: any) {\r\n super();\r\n\r\n this._guid = Guid.NewGuid();\r\n this._imageSize = null;\r\n this._imageSizeClassName = null;\r\n this._hookLoaded = false;\r\n this.Image = image ? `api/FilesApi/GetImage/${image}` : null;\r\n ImagePreloader.Preload(this.Image);\r\n\r\n this._activeConfigurationLevel = ko.observable(null);\r\n\r\n this.readOnly = ko.computed(() => false);\r\n this._tabSelected = ko.observable(false);\r\n\r\n this._memo = ko.observable(null);\r\n this._initialMemo = ko.observable(null);\r\n this._memoVisible = ko.observable(false);\r\n\r\n this._configurationImageGallery = new ConfigurationImageGallery({\r\n OrderEntityId: OrderEntityId,\r\n ProductsEntityId: ProductEntityId,\r\n ControlId: ControlId,\r\n Annotations: Annotations\r\n });\r\n }\r\n\r\n set ImageSize(value: number) {\r\n this._imageSize = value;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n get HookLoaded() {\r\n return this._hookLoaded;\r\n }\r\n\r\n set HookLoaded(value: boolean) {\r\n this._hookLoaded = value;\r\n }\r\n\r\n get MemoHasChanges() {\r\n return this._memo() !== this._initialMemo();\r\n }\r\n\r\n get MemoVisible() {\r\n return this._memoVisible();\r\n }\r\n\r\n get ConfigurationDataHasChanges() {\r\n return this.MemoHasChanges || this._configurationImageGallery.HasChanges;\r\n }\r\n\r\n get TabSelected() {\r\n return this._tabSelected();\r\n }\r\n\r\n get ImageSizeClassName(): string {\r\n return this.GetImageSizeClassName();\r\n }\r\n\r\n get HighestLevel(): string | null {\r\n const [highest] = this.Levels.slice(-1);\r\n\r\n if (!highest) {\r\n return null;\r\n }\r\n\r\n const levelText: string = highest.slice(0, -2);\r\n const levelNumber: string = highest.slice(-1);\r\n\r\n return `${levelText}${levelNumber}`;\r\n }\r\n\r\n get HighestLevelClass(): string | null {\r\n const [highest] = this.Levels.slice(-1);\r\n\r\n if (!highest) {\r\n return null;\r\n }\r\n const levelNumber: string = highest.slice(-1);\r\n\r\n return `js-level__${levelNumber}`;\r\n }\r\n\r\n GetImageSizeClassName() {\r\n switch (this._imageSize) {\r\n case 60:\r\n return this._imageSizeClassName = 'imageSize-60';\r\n case 70:\r\n return this._imageSizeClassName = 'imageSize-70';\r\n case 80:\r\n return this._imageSizeClassName = 'imageSize-80';\r\n case 90:\r\n return this._imageSizeClassName = 'imageSize-90';\r\n default:\r\n return this._imageSizeClassName = 'imageSize-100';\r\n }\r\n }\r\n\r\n get ImageTableType() {\r\n return ImageTableTypes.Product;\r\n }\r\n\r\n get ActiveConfigurationLevel() {\r\n return this._activeConfigurationLevel();\r\n }\r\n\r\n set ActiveConfigurationLevel(value: string) {\r\n this._activeConfigurationLevel(value);\r\n }\r\n\r\n get ShowConfigurationDescription() {\r\n return this._showConfigurationDescription;\r\n }\r\n\r\n set ShowConfigurationDescription(value: boolean) {\r\n this._showConfigurationDescription = value;\r\n }\r\n\r\n get TabDescription() {\r\n const level2DescriptionModel = this.ConfigurationDescriptions && _.find(this.ConfigurationDescriptions, description => description.Level === ConfiguratorLevels.Level2);\r\n const description = level2DescriptionModel && (level2DescriptionModel.DescriptionTranslation || level2DescriptionModel.Description);\r\n const name = this.NameTranslated || this.Name || this._labels.NO_NAME;\r\n\r\n return this.ShowConfigurationDescription && description ? description : name;\r\n }\r\n\r\n get DisplayConfigurationDescription() {\r\n const activeLevelDescriptionModel = this.ConfigurationDescriptions\r\n && ((this.ActiveConfigurationLevel &&_.find(this.ConfigurationDescriptions, configuration => configuration.Level === this.ActiveConfigurationLevel))\r\n || _.find(this.ConfigurationDescriptions, configuration => configuration.Level === ConfiguratorLevels.Level1)\r\n || _.first(this.ConfigurationDescriptions));\r\n\r\n return activeLevelDescriptionModel && (activeLevelDescriptionModel.DescriptionTranslation || activeLevelDescriptionModel.Description);\r\n }\r\n\r\n OnClick() {\r\n this.Select();\r\n }\r\n\r\n Select() {\r\n this.DispatchEvent(StartPageEvents.Selected, this);\r\n }\r\n\r\n Copy() {\r\n this.DispatchEvent(StartPageEvents.Copied, this);\r\n }\r\n\r\n Remove() {\r\n this.DispatchEvent(StartPageEvents.Removed, this);\r\n }\r\n\r\n SelectTab() {\r\n this._tabSelected(true);\r\n this.DispatchEvent(StartPageEvents.TabSelected, this);\r\n }\r\n\r\n UnSelectTab() {\r\n this._tabSelected(false);\r\n }\r\n\r\n SetMemo(memo: string) {\r\n this._memo(_.unescape(memo));\r\n this._initialMemo(this._memo());\r\n\r\n if (this._memoEditor) {\r\n this._memoEditor.setContent(this._memo() || '');\r\n }\r\n }\r\n\r\n SetGalleryImages(imageGalleryExists: boolean, configurationImages: ConfigurationDataImage[]) {\r\n this._configurationImageGallery.SetGalleryImages(imageGalleryExists, configurationImages);\r\n }\r\n\r\n AfterInitMemo(editor) {\r\n this._memoEditor = editor;\r\n this._memoEditor.setContent(this._memo() || '');\r\n\r\n this._memoVisible(true);\r\n }\r\n\r\n AfterChangeMemo(content) {\r\n this._memo(content);\r\n }\r\n\r\n GetSaveConfigurationDataArgs() {\r\n const params = new SaveConfigurationDataEventArgs(\r\n this._memo(),\r\n this._configurationImageGallery.AddedImageAttachments,\r\n this._configurationImageGallery.RemovedImageIds,\r\n this._configurationImageGallery.UpdatedAnnotations\r\n );\r\n\r\n this._configurationImageGallery.ClearImageAttachments();\r\n return params;\r\n }\r\n\r\n SaveConfigurationData() {\r\n setTimeout(() => {\r\n if (!this.ConfigurationDataHasChanges){\r\n new Notifier().Warning(NOTIFICATIONS.NO_PENDING_CHANGES);\r\n return;\r\n }\r\n\r\n const params = this.GetSaveConfigurationDataArgs();\r\n this.DispatchEvent(StartPageEvents.SaveConfigurationData, params);\r\n }, 1);\r\n\r\n }\r\n}","// Module\nvar code = \"
    \\\"no :(

    \";\n// Exports\nexport default code;","import {ProductDto} from \"Core/Components/Controls/ProductConfigurator/Models/ProductDto\";\r\n\r\nimport {ProductResponse} from \"../Stores/Models/ProductResponse\";\r\n\r\nimport {Product} from \"../Models/Product\";\r\n\r\nexport type AfterMap = (productResponse: ProductResponse, product: Product) => void;\r\n\r\nexport class StartPageMappings {\r\n MapToProductDto(product: Product) {\r\n return new ProductDto(product.Id, product.Name, product.NameTranslated, product.Image, product.ConfigurationId);\r\n }\r\n\r\n MapToProducts(configuredProductsDto: ProductResponse[], orderEntityId: number, controlId: number, productEntityId: number, annotations: any, afterMap?: AfterMap): Product[] {\r\n return configuredProductsDto.map(product => this.MapToProduct(product, orderEntityId, controlId, productEntityId, annotations, afterMap));\r\n }\r\n\r\n MapToProduct(configuredProductsDto: ProductResponse, orderEntityId: number, controlId: number, productEntityId: number, annotations: any, afterMap?: AfterMap): Product {\r\n const product = new Product(configuredProductsDto.Id, configuredProductsDto.Name, configuredProductsDto.NameTranslated, configuredProductsDto.Image,\r\n configuredProductsDto.ConfigurationId, configuredProductsDto.ConfigurationDescriptions, orderEntityId, controlId, productEntityId, annotations);\r\n\r\n product.Levels = configuredProductsDto.Levels;\r\n if (afterMap) {\r\n afterMap(configuredProductsDto, product);\r\n }\r\n\r\n return product;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {EventBus} from \"Core/Common/EventBus/EventBus\";\r\nimport {EventBusConsumer} from \"Core/Common/EventBus/EventBusConsumer\";\r\n\r\nimport {Product} from \"./Product\";\r\n\r\nexport class ViewModel extends EventBusConsumer {\r\n Products: KnockoutObservableArray;\r\n CanCreateAndCopy: KnockoutComputed;\r\n\r\n constructor(eventBus: EventBus) {\r\n super();\r\n\r\n this.CanCreateAndCopy = ko.computed(() => true);\r\n\r\n this.Products = ko.observableArray([]);\r\n this.AssignEventBus(eventBus);\r\n }\r\n\r\n Dispose() {\r\n this.Products().forEach(product => product.Dispose());\r\n super.Dispose();\r\n }\r\n}","import {AttachmentModel} from 'Core/Controls/Image/Models/AttachmentModel';\r\nimport {UpdateAnnotationsDto} from \"Core/Components/Controls/ProductConfigurator/Pages/StartPage/Components/ConfigurationImageGallery/Models/UpdateAnnotationsDto\";\r\n\r\nexport class SaveConfigurationDataDto {\r\n OrderEntityId: number;\r\n ProductEntityId: number;\r\n\r\n constructor(public ConfigurationId: number,\r\n public Memo: string,\r\n public AddedImageAttachments: Array,\r\n public RemovedImageIds: Array,\r\n public UpdatedAnnotations: Array) {\r\n }\r\n}","import {SaveConfigurationDataDto} from 'Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/Params/SaveConfigurationDataDto';\r\n\r\nexport class SaveAllConfigurationDataDto {\r\n constructor(public SaveConfigurationDataDtos: Array) {\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {CONFIRMATIONS, NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {EventBus, IEventArgs} from \"Core/Common/EventBus/EventBus\";\r\n\r\nimport {\r\n ConfirmationDialog, EVENTS,\r\n EVENTS as CONFIRMATION_EVENTS,\r\n Types\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport {IProductConfigurationPageParams, ProductConfiguratorPage} from \"../ProductConfiguratorPage\";\r\n\r\nimport {NavigationStack} from '../../Stores/NavigationStack/NavigationStack';\r\nimport {NavigationItemTypes} from '../../Stores/NavigationStack/NavigationItem';\r\n\r\nimport {StartPageStore} from \"./Stores/StartPageStore\";\r\nimport {StartPageMappings} from \"./Mappings/StartPageMappings\";\r\n\r\nimport {ProductResponse} from \"./Stores/Models/ProductResponse\";\r\n\r\nimport {ViewModel} from \"./Models/ViewModel\";\r\nimport {Product} from \"./Models/Product\";\r\n\r\nimport {ProductDto} from \"Core/Components/Controls/ProductConfigurator/Models/ProductDto\";\r\nimport {SaveConfigurationDataDto} from 'Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/Params/SaveConfigurationDataDto';\r\nimport {SaveAllConfigurationDataDto} from 'Core/Components/Controls/ProductConfigurator/Pages/StartPage/Stores/Params/SaveAllConfigurationDataDto';\r\n\r\nimport {SaveConfigurationDataEventArgs, StartPageEvents} from \"./Events/StartPageEvents\";\r\n\r\nimport Template from './Templates/Template.html';\r\nimport NewProductTemplate from './Templates/NewProduct.html';\r\nimport {ConfiguratorLevels} from 'Core/Components/Controls/ProductConfigurator/ConfiguratorLevels';\r\nimport {ConfigurationDataResponse} from './Stores/Models/ConfigurationDataResponse';\r\n\r\ninterface IStartPageParams extends IProductConfigurationPageParams {\r\n ImageSizes: IStartPageImageSizes;\r\n DescriptionFieldId?: number;\r\n ControlId: number;\r\n Annotations: any;\r\n}\r\n\r\nexport interface IStartPageImageSizes {\r\n OrderedProduct: number\r\n}\r\n\r\nexport class StartPage extends ProductConfiguratorPage {\r\n _labels = LABELS;\r\n private _store: StartPageStore;\r\n private _mappings: StartPageMappings;\r\n private _imageSize: number;\r\n private _imageSizeClassName: string;\r\n\r\n private _viewModel: ViewModel;\r\n protected CanCreateAndCopy: KnockoutComputed;\r\n protected ShowConfigurationTabs: KnockoutComputed;\r\n protected ShowSaveAndCloseButton: KnockoutComputed;\r\n\r\n constructor(params: IStartPageParams, navigationStack: NavigationStack, eventBus: EventBus) {\r\n super(params, navigationStack, eventBus);\r\n\r\n this._imageSize = params.ImageSizes.OrderedProduct;\r\n this._imageSizeClassName = null;\r\n this._store = new StartPageStore(params.OrderEntityId, params.ProductsEntityId, params.DescriptionFieldId);\r\n this._mappings = new StartPageMappings();\r\n\r\n this._viewModel = new ViewModel(eventBus);\r\n\r\n this.CanCreateAndCopy = ko.computed(() => !this.RolesImplemented || this.Level1Active);\r\n this.ShowConfigurationTabs = ko.computed(() => this.RolesImplemented && this.Level2Active);\r\n this._viewModel.CanCreateAndCopy = ko.computed(() => this.CanCreateAndCopy());\r\n\r\n this.ShowSaveAndCloseButton = ko.computed(() => this.ShowConfigurationTabs() && this._viewModel\r\n && _.any(this._viewModel.Products(), product => _.contains(product.Levels, ConfiguratorLevels.Level2)));\r\n\r\n this.BindEvents();\r\n }\r\n\r\n public CloseModal() {\r\n this.DispatchEvent(StartPageEvents.ClosePopup);\r\n }\r\n\r\n get CloseMessage() {\r\n return this.ShowSaveAndCloseButton() ? LABELS.CANCEL : LABELS.CLOSE_LABEL;\r\n }\r\n\r\n get Level1Active() {\r\n return this.UserHasLevelRole(ConfiguratorLevels.Level1) && this.ActiveConfigurationRole().Id == this.params.ConfigurationRoles.find(role => role.Level == ConfiguratorLevels.Level1).Id;\r\n }\r\n\r\n get Level2Active() {\r\n return this.UserHasLevelRole(ConfiguratorLevels.Level2) && this.ActiveConfigurationRole().Id == this.params.ConfigurationRoles.find(role => role.Level == ConfiguratorLevels.Level2).Id;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n GetNewProductTemplate() {\r\n return NewProductTemplate;\r\n }\r\n\r\n Dispose() {\r\n this._viewModel.Dispose();\r\n super.Dispose();\r\n }\r\n\r\n get ImageSizeClassName(): string {\r\n return this.GetImageSizeClassName();\r\n }\r\n\r\n GetImageSizeClassName() {\r\n switch (this._imageSize) {\r\n case 60:\r\n return this._imageSizeClassName = 'imageSize-60';\r\n case 70:\r\n return this._imageSizeClassName = 'imageSize-70';\r\n case 80:\r\n return this._imageSizeClassName = 'imageSize-80';\r\n case 90:\r\n return this._imageSizeClassName = 'imageSize-90';\r\n default:\r\n return this._imageSizeClassName = 'imageSize-100';\r\n }\r\n }\r\n\r\n Refresh() {\r\n BlockUI.Block();\r\n\r\n const payload = {\r\n OrderEntityId: this.params.OrderEntityId,\r\n ProductEntityId: this.params.ProductsEntityId,\r\n OrderId: this.params.OrderId\r\n };\r\n\r\n return this._store.GetConfiguredProducts(payload)\r\n .then(configuredProductsDto => {\r\n this.UpdateNavigationStack(payload);\r\n this.FillViewModel(configuredProductsDto);\r\n BlockUI.Unblock();\r\n }).fail(err => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n OnAddNewProductClicked() {\r\n this.DispatchEvent(StartPageEvents.AddNewProduct);\r\n }\r\n\r\n private UpdateNavigationStack(payload: any) {\r\n this.navigationStack.Upsert(LABELS.ORDERED_PRODUCTS, NavigationItemTypes.StartPage, payload);\r\n }\r\n\r\n private BindEvents() {\r\n this.ActiveConfigurationRole.subscribe((newRole) => {\r\n if (this.Level2Active) {\r\n this.SelectFirstTab();\r\n }\r\n\r\n _.each(this._viewModel.Products(), product =>\r\n product.ActiveConfigurationLevel = newRole && newRole.Level);\r\n });\r\n\r\n this.HandleEvent(StartPageEvents.Selected)\r\n .Using((eventArgs: IEventArgs) => this.SelectProduct(eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent(StartPageEvents.Copied)\r\n .Using((eventArgs: IEventArgs) => this.ConfirmProductCopy(eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent(StartPageEvents.Removed)\r\n .Using((eventArgs: IEventArgs) => this.ConfirmProductRemove(eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent(StartPageEvents.TabSelected)\r\n .Using(eventArgs => this.OnTabSelected(eventArgs.Source))\r\n .Always();\r\n\r\n this.HandleEvent(StartPageEvents.SaveConfigurationData)\r\n .Using(eventArgs => this.SaveConfigurationData(eventArgs.Source, eventArgs.Data))\r\n .Always();\r\n }\r\n\r\n private FillViewModel(configuredProductsDto: ProductResponse[]) {\r\n const products = this._mappings.MapToProducts(configuredProductsDto, this.params.OrderEntityId, this.params.ControlId, this.params.ProductsEntityId, this.params.Annotations,\r\n (configuredProductsDto, product) => product.AssignEventBus(this.EventBus));\r\n\r\n const showConfigurationDescription = this.params.DescriptionFieldId > 0;\r\n products.forEach(product => {\r\n product.ImageSize = this.params.ImageSizes.OrderedProduct;\r\n product.ShowConfigurationDescription = showConfigurationDescription;\r\n product.ActiveConfigurationLevel = this.ActiveConfigurationRole() && this.ActiveConfigurationRole().Level;\r\n\r\n if (this.RolesImplemented) {\r\n product.readOnly = ko.computed(() => {\r\n return product.Levels.indexOf(this.ActiveConfigurationRole().Level) == -1\r\n });\r\n }\r\n });\r\n this._viewModel.Products(products);\r\n\r\n if (this.Level2Active) {\r\n this.SelectFirstTab();\r\n }\r\n }\r\n\r\n private FillConfigurationData(product: Product, configurationDataDto: ConfigurationDataResponse) {\r\n product.SetMemo(configurationDataDto.Memo);\r\n product.SetGalleryImages(configurationDataDto.ImageGalleryExists, configurationDataDto.Images);\r\n }\r\n\r\n private SelectTab(product: Product) {\r\n product.SelectTab();\r\n }\r\n\r\n private OnTabSelected(product: Product) {\r\n this.UnSelectOtherTabs(product);\r\n\r\n if (!product.HookLoaded) {\r\n product.HookLoaded = true;\r\n\r\n this._store.GetConfigurationData(product.ConfigurationId)\r\n .then(configurationData => {\r\n this.FillConfigurationData(product, configurationData);\r\n });\r\n }\r\n }\r\n\r\n private UnSelectOtherTabs(product: Product) {\r\n const otherProducts = this._viewModel.Products().filter(p => p !== product);\r\n otherProducts.forEach(p => p.UnSelectTab());\r\n }\r\n\r\n private SelectFirstTab() {\r\n const firstProduct = _.first(this._viewModel.Products());\r\n\r\n if (firstProduct) {\r\n this.SelectTab(firstProduct);\r\n }\r\n }\r\n\r\n private SelectProduct(product: Product) {\r\n const productDto = this._mappings.MapToProductDto(product);\r\n this.DispatchEvent(StartPageEvents.ConfiguredProductSelected, productDto);\r\n }\r\n\r\n private ConfirmProductCopy(product: Product) {\r\n const dialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.DO_YOU_WANT_TO_COPY,\r\n Type: Types.Question\r\n });\r\n\r\n dialog.On(CONFIRMATION_EVENTS.CONFIRM_SELECTED, this, () =>\r\n this.CopyProduct(product).then(() => this.Refresh()));\r\n\r\n dialog.Show();\r\n }\r\n\r\n private ConfirmProductRemove(product: Product) {\r\n const dialog = new ConfirmationDialog({\r\n Text: `${CONFIRMATIONS.DO_YOU_WANT_TO_DELETE}?`,\r\n Type: Types.Question\r\n });\r\n\r\n dialog.On(CONFIRMATION_EVENTS.CONFIRM_SELECTED, this, () =>\r\n this.RemoveProduct(product).then(() => this.Refresh()));\r\n\r\n dialog.Show();\r\n }\r\n\r\n private CopyProduct(product: Product) {\r\n const promise = this._store.CopyConfiguredProduct(product.ConfigurationId);\r\n\r\n promise\r\n .then(() => new Notifier().Success(NOTIFICATIONS.OBJECT_HAS_BEEN_COPIED.replace('{object}', product.Name)))\r\n .fail(err => new Notifier().Failed(err.message));\r\n\r\n return promise;\r\n }\r\n\r\n private RemoveProduct(product: Product) {\r\n let promise;\r\n if (this.CanCreateAndCopy()) {\r\n promise = this._store.RemoveConfiguredProduct(product.ConfigurationId);\r\n\r\n } else {\r\n promise = this._store.RemoveConfiguredProductByLevel(product.ConfigurationId, this.ActiveConfigurationRole().Level);\r\n }\r\n promise\r\n .then(() => {\r\n new Notifier().Success(NOTIFICATIONS.OBJECT_HAS_BEEN_REMOVED.replace('{object}', product.Name));\r\n if (!this.CanCreateAndCopy()) {\r\n product.Levels.splice(product.Levels.indexOf(this.ActiveConfigurationRole().Level), 1);\r\n }\r\n })\r\n .fail(err => new Notifier(err.message));\r\n\r\n return promise;\r\n }\r\n\r\n private UserHasLevelRole(level: string) {\r\n return this.params.ConfigurationRoles.find(role => role.Level == level) != null;\r\n }\r\n\r\n private SaveConfigurationData(product: Product, configurationData: SaveConfigurationDataEventArgs) {\r\n const params = new SaveConfigurationDataDto(product.ConfigurationId,\r\n configurationData.Memo,\r\n configurationData.AddedImageAttachments,\r\n configurationData.RemovedImageIds,\r\n configurationData.UpdatedAnnotations);\r\n\r\n BlockUI.Block();\r\n\r\n this._store.SaveConfigurationData(params)\r\n .then(() => {\r\n new Notifier().Success(NOTIFICATIONS.DATA_SAVED);\r\n\r\n this._store.GetConfigurationData(product.ConfigurationId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(configurationData => {\r\n this.FillConfigurationData(product, configurationData);\r\n });\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n public SaveAndCloseModal() {\r\n const productWithConfigurationDataChanges = this._viewModel && _.filter(this._viewModel.Products(), product => product.ConfigurationDataHasChanges);\r\n\r\n if (!_.any(productWithConfigurationDataChanges)) {\r\n this.DispatchEvent(StartPageEvents.ClosePopup);\r\n return;\r\n }\r\n\r\n let saveConfigurationDataDtos = [];\r\n\r\n _.each(productWithConfigurationDataChanges, product => {\r\n const configurationDataArgs = product.GetSaveConfigurationDataArgs();\r\n\r\n saveConfigurationDataDtos.push(new SaveConfigurationDataDto(\r\n product.ConfigurationId,\r\n configurationDataArgs.Memo,\r\n configurationDataArgs.AddedImageAttachments,\r\n configurationDataArgs.RemovedImageIds,\r\n configurationDataArgs.UpdatedAnnotations));\r\n });\r\n\r\n BlockUI.Block();\r\n\r\n this._store.SaveAllConfigurationData(new SaveAllConfigurationDataDto(saveConfigurationDataDtos))\r\n .always(() => {\r\n BlockUI.Unblock();\r\n this.DispatchEvent(StartPageEvents.ClosePopup);\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\n\r\nimport { Modal } from 'Core/Common/Modal';\r\n\r\nimport { P } from 'Core/Common/Promise';\r\n\r\nimport {EventBus} from \"Core/Common/EventBus/EventBus\";\r\nimport {EventBusConsumer} from \"Core/Common/EventBus/EventBusConsumer\";\r\n\r\nimport {NavigationStack} from './Stores/NavigationStack/NavigationStack';\r\nimport {NavigationStackEvents} from './Stores/NavigationStack/NavigationStackEvents';\r\nimport {NavigationItem, NavigationItemTypes} from './Stores/NavigationStack/NavigationItem';\r\n\r\nimport {ProductConfiguratorPage} from \"./Pages/ProductConfiguratorPage\";\r\nimport {IStartPageImageSizes, StartPage} from \"./Pages/StartPage/StartPage\";\r\nimport {IRootProductsPageImageSizes, RootProductsPage} from \"./Pages/RootProducts/RootProductsPage\";\r\nimport {ConfigurationPage, IConfigurationPageImageSizes} from \"./Pages/ConfigurationPage/ConfigurationPage\";\r\nimport {ConfigurationPageEvents} from \"./Pages/ConfigurationPage/Events/ConfigurationPageEvents\";\r\n\r\nimport {ProductDto} from \"./Models/ProductDto\";\r\n\r\nimport {Product as RootProduct} from './Pages/RootProducts/Models/Product';\r\n\r\nimport {RootProductsPageEvents} from \"./Pages/RootProducts/Events/RootProductsPageEvents\";\r\nimport {StartPageEvents} from \"./Pages/StartPage/Events/StartPageEvents\";\r\n\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {IScreen} from 'Core/Screens/IScreen';\r\n\r\nimport Template from 'Core/Components/Controls/ProductConfigurator/Templates/Template.html';\r\nimport { TabSecurityStore } from '../../../GeneralProperties/Managers/TabSecurity/Stores/TabSecurityStore';\r\nimport { UserManager } from '../../../../User/UserManager';\r\nimport { BusinessRoleDto } from '../../../GeneralProperties/Managers/TabSecurity/Stores/Models/BusinessRoleDto';\r\nimport { ConfigurationRole } from './Pages/ConfigurationPage/Models/ConfigurationRole';\r\nimport { ProductConfiguratorStore } from \"./Stores/ProductConfiguratorStore\";\r\n\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\n\r\nimport {CONFIRMATIONS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {ConfirmationDialog, EVENTS, Types} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport { ConfiguratorLevels } from 'Core/Components/Controls/ProductConfigurator/ConfiguratorLevels';\r\nimport {AlternativePriceModel} from 'Core/Components/Controls/ProductConfigurator/Pages/ConfigurationPage/Models/AlternativePriceModel';\r\n\r\nko.templates['Core/Components/Controls/ProductConfigurator/Templates/Template'] = Template;\r\n\r\nexport const PageName = {\r\n StartPage: 'StartPage',\r\n RootProductsPage: 'RootProductsPage',\r\n NewConfigurationPage: 'NewConfigurationPage',\r\n ConfiguredProductPage: 'ConfiguredProductPage'\r\n}\r\n\r\nexport interface IProductConfiguratorParams {\r\n OrdersEntityId: number;\r\n ProductsEntityId: number;\r\n OrderId: number;\r\n ControlId: number;\r\n RootProductsViewId?: number;\r\n DescriptionFieldId?: number;\r\n Screen: IScreen;\r\n General: {\r\n ReloadScreen: boolean\r\n }\r\n HidePCFGROUPIfEmpty: {\r\n HiddenPCFGROUPSIfEmpty: number[]\r\n }\r\n ImageSizes: {\r\n ConfigurationPage: IConfigurationPageImageSizes,\r\n StartPage: IStartPageImageSizes,\r\n RootProductsPage: IRootProductsPageImageSizes\r\n }\r\n ConfigurationRoles: {\r\n Level1Value: any,\r\n Level2Value: any,\r\n LockLevel1: boolean\r\n }\r\n Annotations: {\r\n UseAnnotations: any,\r\n ShowAnnotationsModeByDefault: any\r\n }\r\n AlternativePrice: {\r\n EnableAlternativePriceCalculation: any,\r\n AlternativePriceCalculationRule: any\r\n }\r\n}\r\n\r\nexport class ProductConfigurator extends EventBusConsumer {\r\n private _modal: Modal;\r\n private _store: ProductConfiguratorStore;\r\n private _navigationStack: NavigationStack;\r\n private _activePage: KnockoutObservable>;\r\n private _userConfiguratorRoles: ConfigurationRole[];\r\n private CanUseConfigurator: KnockoutObservable;\r\n private _pageNameProductConfigurator: KnockoutObservable;\r\n private _alternativePriceModel: AlternativePriceModel;\r\n\r\n constructor(private _params: IProductConfiguratorParams) {\r\n super();\r\n\r\n const eventBus = new EventBus();\r\n\r\n this._navigationStack = new NavigationStack(eventBus);\r\n this._pageNameProductConfigurator = ko.observable(null);\r\n\r\n this._activePage = ko.observable(null);\r\n this._userConfiguratorRoles = [];\r\n\r\n this.AssignEventBus(eventBus);\r\n this.BindEvents();\r\n this.CanUseConfigurator = ko.observable(true);\r\n\r\n this._alternativePriceModel = this.MapToAlternativePriceModel();\r\n\r\n this._store = new ProductConfiguratorStore(this._params.OrdersEntityId, this._params.ProductsEntityId);\r\n\r\n if ((_params.ConfigurationRoles.Level1Value != null && _params.ConfigurationRoles.Level1Value.Value != null) ||\r\n (_params.ConfigurationRoles.Level2Value != null && _params.ConfigurationRoles.Level2Value.Value != null)) {\r\n var tabSecurityStore = new TabSecurityStore();\r\n\r\n var userId = UserManager.Instance.CurrentUser.Id;\r\n\r\n tabSecurityStore.GetUserBusinessRoles(userId)\r\n .then(roles => {\r\n\r\n const userRoles = this.MapToRoles(roles);\r\n\r\n userRoles.forEach(role => {\r\n if (_params.ConfigurationRoles.Level1Value != null && role.Id == _params.ConfigurationRoles.Level1Value.Value){\r\n role.Level = ConfiguratorLevels.Level1;\r\n this._userConfiguratorRoles.push(role);\r\n }\r\n if (_params.ConfigurationRoles.Level2Value != null && role.Id == _params.ConfigurationRoles.Level2Value.Value){\r\n role.Level = ConfiguratorLevels.Level2;\r\n this._userConfiguratorRoles.push(role);\r\n }\r\n });\r\n if (this._userConfiguratorRoles.length > 0) {\r\n this._userConfiguratorRoles[0].Active(true);\r\n } else {\r\n this.CanUseConfigurator(false);\r\n }\r\n\r\n return P.resolve(null);\r\n });\r\n }\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/Controls/ProductConfigurator/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n ShowStartPage() {\r\n if (this.CanUseConfigurator()) {\r\n this._navigationStack.Flush();\r\n this.CloseActivePage();\r\n if (this._activePage() == null) {\r\n BlockUI.Block();\r\n this._store.CheckProductConfiguratorRelationType()\r\n .then(data => {\r\n this.SwitchToStartPage().then(() => {\r\n this._pageNameProductConfigurator(PageName.StartPage);\r\n this.ShowPopup();\r\n });\r\n\t\t\t\t\t}).fail(err => {\r\n\t\t\t\t\t\tconst parsedException = JSON.parse(err.message);\r\n\t\t\t\t\t\tif (parsedException && parsedException.InnerExceptions) {\r\n\t\t\t\t\t\t\tlet index = 0;\r\n\t\t\t\t\t\t\tparsedException.InnerExceptions.forEach(ex => {\r\n\t\t\t\t\t\t\t\tlet message = ex.Message + \"
    \";\r\n\t\t\t\t\t\t\t\tex.InnerExceptions.forEach(inner => {\r\n\t\t\t\t\t\t\t\t\tmessage += \"
    \" + inner.Message;\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tsetTimeout(() => new Notifier().Failed(message), 1000 * index++);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else if (parsedException && parsedException.Message) {\r\n\t\t\t\t\t\t\tsetTimeout(() => new Notifier().Failed(parsedException.Message), 0);\r\n\t\t\t\t\t\t}\r\n }).always(() => BlockUI.Unblock());\r\n } else {\r\n this.SwitchToStartPage().then(() => {\r\n this._pageNameProductConfigurator(PageName.StartPage);\r\n this.ShowPopup();\r\n });\r\n }\r\n } else {\r\n let message = NOTIFICATIONS.YOU_DONT_HAVE_ANY_OF_REQUIRED_BUSINESS_ROLES;\r\n\r\n let roles = [];\r\n if (this._params.ConfigurationRoles.Level1Value.Value != null) {\r\n roles.push(\"<\" + this._params.ConfigurationRoles.Level1Value.Name + \">\");\r\n }\r\n if (this._params.ConfigurationRoles.Level2Value.Value != null) {\r\n roles.push(\"<\" + this._params.ConfigurationRoles.Level2Value.Name + \">\");\r\n }\r\n new Notifier().Warning(message + roles.join(', '));\r\n }\r\n }\r\n\r\n ShowRootProductsPage(product?: RootProduct, pageNumber?: number) {\r\n this.CloseActivePage();\r\n this.SwitchToRootProductsPage(product, pageNumber).then(() => {\r\n this._pageNameProductConfigurator(PageName.RootProductsPage);\r\n this.ShowPopup();\r\n });\r\n }\r\n\r\n ShowNewConfigurationPage(productId: number) {\r\n this.CloseActivePage();\r\n this.SwitchToNewConfigurationPage(productId).then(() => {\r\n this._pageNameProductConfigurator(PageName.NewConfigurationPage);\r\n this.ShowPopup();\r\n });\r\n }\r\n\r\n ShowConfiguredProductPage(productId: number, configurationId: number) {\r\n this.CloseActivePage();\r\n this.SwitchToConfiguredProductPage(productId, configurationId).then(() => {\r\n this._pageNameProductConfigurator(PageName.ConfiguredProductPage);\r\n this.ShowPopup();\r\n });\r\n }\r\n\r\n FlushNavigationStack() {\r\n this._navigationStack.Flush();\r\n }\r\n\r\n private BindEvents() {\r\n this.HandleEvent(StartPageEvents.ClosePopup)\r\n .Using(() => this.Close())\r\n .Always();\r\n\r\n this.HandleEvent(StartPageEvents.AddNewProduct)\r\n .Using(() => this.ShowRootProductsPage())\r\n .Always();\r\n\r\n this.HandleEvent(StartPageEvents.ConfiguredProductSelected)\r\n .Using(eventArgs => this.ShowConfiguredProductPage(eventArgs.Data.Id, eventArgs.Data.ConfigurationId))\r\n .Always();\r\n\r\n this.HandleEvent(RootProductsPageEvents.ConfigurableProductSelected)\r\n .Using(eventArgs => this.ShowNewConfigurationPage(eventArgs.Data.Id))\r\n .Always();\r\n\r\n this.HandleEvent(ConfigurationPageEvents.ConfigurationSaved)\r\n .Using(() => this.ShowStartPage())\r\n .Always();\r\n\r\n this.HandleEvent(NavigationStackEvents.Navigate)\r\n .Using(() => this.NavigateBack())\r\n .Always();\r\n\r\n this.HandleEvent(NavigationStackEvents.CheckPage)\r\n .Using(() => this.CheckPage())\r\n .Always();\r\n }\r\n\r\n private SwitchToStartPage() {\r\n const page = new StartPage({\r\n ProductsEntityId: this._params.ProductsEntityId,\r\n OrderEntityId: this._params.OrdersEntityId,\r\n OrderId: this._params.OrderId,\r\n ImageSizes: this._params.ImageSizes.StartPage,\r\n DescriptionFieldId: this._params.DescriptionFieldId,\r\n ConfigurationRoles: this._userConfiguratorRoles,\r\n ControlId: this._params.ControlId,\r\n Annotations: this._params.Annotations\r\n }, this._navigationStack, this.EventBus);\r\n\r\n this._activePage(page);\r\n return page.Refresh();\r\n }\r\n\r\n private SwitchToRootProductsPage(product: RootProduct, pageNumber?: number) {\r\n const page = new RootProductsPage({\r\n OrderEntityId: this._params.OrdersEntityId,\r\n ProductsEntityId: this._params.ProductsEntityId,\r\n RootProductsViewId: this._params.RootProductsViewId,\r\n OrderId: this._params.OrderId,\r\n ImageSizes: this._params.ImageSizes.RootProductsPage,\r\n ConfigurationRoles: this._userConfiguratorRoles\r\n }, this._navigationStack, this.EventBus);\r\n\r\n this._activePage(page);\r\n return page.Refresh(product, pageNumber);\r\n }\r\n\r\n private SwitchToNewConfigurationPage(productId: number) {\r\n const page = new ConfigurationPage({\r\n OrderEntityId: this._params.OrdersEntityId,\r\n ProductsEntityId: this._params.ProductsEntityId,\r\n OrderId: this._params.OrderId,\r\n ProductId: productId,\r\n ConfigurationId: null,\r\n HiddenPCFGROUPSIfEmpty: this._params.HidePCFGROUPIfEmpty.HiddenPCFGROUPSIfEmpty,\r\n ImageSizes: this._params.ImageSizes.ConfigurationPage,\r\n ConfigurationRoles: this._userConfiguratorRoles,\r\n LockLevel1: this._params.ConfigurationRoles.LockLevel1,\r\n AlternativePriceModel: this._alternativePriceModel\r\n }, this._navigationStack, this.EventBus);\r\n\r\n this._activePage(page);\r\n return page.ConfigureFromScratch();\r\n }\r\n\r\n private SwitchToConfiguredProductPage(productId: number, configurationId: number) {\r\n const page = new ConfigurationPage({\r\n OrderEntityId: this._params.OrdersEntityId,\r\n ProductsEntityId: this._params.ProductsEntityId,\r\n OrderId: this._params.OrderId,\r\n ProductId: productId,\r\n ConfigurationId: configurationId,\r\n HiddenPCFGROUPSIfEmpty: this._params.HidePCFGROUPIfEmpty.HiddenPCFGROUPSIfEmpty,\r\n ImageSizes: this._params.ImageSizes.ConfigurationPage,\r\n ConfigurationRoles: this._userConfiguratorRoles,\r\n LockLevel1: this._params.ConfigurationRoles.LockLevel1,\r\n AlternativePriceModel: this._alternativePriceModel\r\n }, this._navigationStack, this.EventBus);\r\n\r\n this._activePage(page);\r\n return page.AlterConfiguration();\r\n }\r\n\r\n private NavigateBack() {\r\n const navigationItem = this._navigationStack.Get(0);\r\n switch (navigationItem.Type) {\r\n case NavigationItemTypes.StartPage:\r\n this.ShowStartPage();\r\n break;\r\n case NavigationItemTypes.RootProducts:\r\n this.ShowRootProductsPage(navigationItem.Payload.Product, navigationItem.Payload.PageNumber);\r\n break;\r\n case NavigationItemTypes.NestedProducts:\r\n this.ShowRootProductsPage(navigationItem.Payload.Product, navigationItem.Payload.PageNumber);\r\n break;\r\n }\r\n }\r\n\r\n CloseModal(evt) {\r\n evt.preventDefault();\r\n if (this._modal) {\r\n if (this._pageNameProductConfigurator() === PageName.ConfiguredProductPage ||\r\n this._pageNameProductConfigurator() === PageName.NewConfigurationPage){\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: Types.Question\r\n });\r\n\r\n confirmationDialog.On(EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.Close();\r\n });\r\n\r\n confirmationDialog.Show();\r\n } else {\r\n this._modal.Close();\r\n this.ReloadScreen();\r\n }\r\n }\r\n }\r\n\r\n private ShowPopup() {\r\n let isMobile = MobileChecker.IsMobile();\r\n let self = this;\r\n this._modal = new Modal({\r\n minWidth: isMobile ? '100%' : '0px',\r\n width: isMobile ? '100%' : '90vw',\r\n height: isMobile ? '100%' : '90vh',\r\n addClass: isMobile ? 'mobile-padding configurator-modal startConfiguratorModal' : 'startConfiguratorModal',\r\n blockScroll: true,\r\n closeOnEsc: false,\r\n onOpen: function () {\r\n $(this.closeButton[0]).off('click');\r\n this.closeButton[0].addEventListener('click', self.CloseModal.bind(self));\r\n }\r\n }, false);\r\n\r\n this._modal.On('CLOSE', this, () => {\r\n this.DisposeActivePage();\r\n this._modal = null;\r\n });\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n public Close() {\r\n if (this._modal){\r\n this.DisposeActivePage();\r\n this._modal.Close();\r\n this._modal = null;\r\n this.ReloadScreen();\r\n }\r\n }\r\n\r\n private CloseActivePage() {\r\n if (this._modal) {\r\n this._modal.Close({ignoreDelay: true});\r\n }\r\n }\r\n\r\n private DisposeActivePage() {\r\n if (this._activePage()) {\r\n this._activePage().Dispose();\r\n this._activePage(null);\r\n }\r\n }\r\n\r\n CheckPage() {\r\n if (this._activePage() instanceof ConfigurationPage) {\r\n this.DispatchEvent(NavigationStackEvents.CheckNavigatability);\r\n } else {\r\n this.DispatchEvent(NavigationStackEvents.Checked);\r\n }\r\n }\r\n\r\n private ReloadScreen() {\r\n if (this._params.General.ReloadScreen && this._params.Screen) {\r\n this._params.Screen.Refresh();\r\n }\r\n }\r\n\r\n private MapToRoles(rolesDto: BusinessRoleDto[]) {\r\n const roles = rolesDto.map(roleDto => new ConfigurationRole(roleDto.Id, roleDto.Name, roleDto.TranslatedName, \"\"));\r\n\r\n return roles;\r\n }\r\n\r\n private MapToAlternativePriceModel() {\r\n if (!this._params.AlternativePrice.EnableAlternativePriceCalculation) {\r\n return new AlternativePriceModel(false);\r\n }\r\n\r\n const calculationRule = this._params.AlternativePrice.AlternativePriceCalculationRule;\r\n\r\n const calculationRuleWithoutPrice = calculationRule && calculationRule.replaceAll(\"PRICE\", \"1\");\r\n\r\n try {\r\n const isCalculationRuleValid = !!(calculationRuleWithoutPrice && !isNaN(eval(calculationRuleWithoutPrice)));\r\n return new AlternativePriceModel(true, calculationRule, isCalculationRuleValid);\r\n }\r\n catch {\r\n return new AlternativePriceModel(true, calculationRule, false);\r\n }\r\n }\r\n}","import * as _ from 'underscore';\r\n\r\nexport enum NavigationItemTypes {\r\n StartPage,\r\n RootProducts,\r\n NestedProducts,\r\n ConfigurationPage\r\n}\r\n\r\nexport class NavigationItem {\r\n constructor(private _name: string, private _type: NavigationItemTypes, private _payload: any, private _pageNumber: number) {\r\n }\r\n\r\n get Name(): string {\r\n return this._name;\r\n }\r\n\r\n get Type(): NavigationItemTypes {\r\n return this._type;\r\n }\r\n\r\n get Payload() {\r\n return this._payload;\r\n }\r\n\r\n get Page() {\r\n return this._pageNumber;\r\n }\r\n\r\n Is(type: NavigationItemTypes) {\r\n return this.Type === type;\r\n }\r\n\r\n Equals(item: NavigationItem) {\r\n return this.Is(item.Type) && _.isEqual(this.Payload, item.Payload);\r\n }\r\n}","import {EventBus} from 'Core/Common/EventBus/EventBus';\r\nimport {EventBusConsumer} from 'Core/Common/EventBus/EventBusConsumer';\r\n\r\nimport {NavigationItem, NavigationItemTypes} from './NavigationItem';\r\nimport { NavigationStackEvents } from './NavigationStackEvents';\r\n\r\nexport class NavigationStack extends EventBusConsumer {\r\n private _items: NavigationItem[];\r\n\r\n constructor(eventBus: EventBus) {\r\n super();\r\n\r\n this._items = [];\r\n this.AssignEventBus(eventBus);\r\n }\r\n\r\n GetAll() {\r\n return [...this._items];\r\n }\r\n\r\n Get(index: number): NavigationItem {\r\n return this._items[index];\r\n }\r\n\r\n Push(name: string, type: NavigationItemTypes, payload: any) {\r\n const item = new NavigationItem(name, type, payload, payload.PageNumber);\r\n const topItem = this._items[0];\r\n\r\n if (topItem && topItem.Equals(item)) {\r\n return;\r\n }\r\n\r\n this._items.unshift(item);\r\n this.DispatchEvent(NavigationStackEvents.Push, item);\r\n }\r\n\r\n Update(name: string, type: NavigationItemTypes, payload: any) {\r\n const index = 0;\r\n const oldItem = this._items[index];\r\n const newItem = new NavigationItem(name, type, payload, payload.PageNumber);\r\n\r\n this._items.splice(index, 1, newItem);\r\n this.DispatchEvent(NavigationStackEvents.Update, {OldItem: oldItem, NewItem: newItem});\r\n }\r\n\r\n Upsert(name: string, type: NavigationItemTypes, payload: any) {\r\n const index = 0;\r\n const oldItem = this._items[index];\r\n\r\n if (!oldItem || !oldItem.Is(type)) {\r\n this.Push(name, type, payload);\r\n }\r\n\r\n this.Update(name, type, payload);\r\n }\r\n\r\n Pop(): NavigationItem {\r\n const item = this.RemoveTop();\r\n\r\n this.DispatchEvent(NavigationStackEvents.Pop, item);\r\n return item;\r\n }\r\n\r\n Flush() {\r\n this._items = [];\r\n }\r\n\r\n NavigateBack(): NavigationItem {\r\n const removedItem = this.RemoveTop();\r\n this.DispatchEvent(NavigationStackEvents.Navigate, [removedItem]);\r\n return removedItem;\r\n }\r\n\r\n NavigateTo(item: NavigationItem): NavigationItem[] {\r\n const index = this._items.indexOf(item);\r\n const poppedItems = this._items.splice(0, index);\r\n\r\n this.DispatchEvent(NavigationStackEvents.Navigate, poppedItems);\r\n return poppedItems;\r\n }\r\n\r\n private RemoveTop() {\r\n const item = this._items[0];\r\n this._items.splice(0, 1);\r\n\r\n return item;\r\n }\r\n}","export const NavigationStackEvents = {\r\n Push: 'Push',\r\n Pop: 'Pop',\r\n Update: 'Update',\r\n Navigate: 'Navigate',\r\n CheckPage: 'CheckPage',\r\n CheckNavigatability: 'CheckNavigatability',\r\n Checked: 'Checked'\r\n};","import {P} from \"Core/Common/Promise\";\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nexport class ProductConfiguratorStore {\r\n constructor(private _orderEntityId: number, private _productEntityId: number) {\r\n }\r\n\r\n CheckProductConfiguratorRelationType(){\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/CheckProductConfiguratorRelationType',\r\n type: 'POST'\r\n }, params: {\r\n OrderEntityId: this._orderEntityId,\r\n ProductEntityId: this._productEntityId\r\n }\r\n })\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(err));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetOriginalImage(recordId: number): P.Promise {\r\n\t const deferred = P.defer();\r\n\r\n\t Request.Send({\r\n\t\t\t proxy: {\r\n\t\t\t\t url: '/api/ProductConfiguratorApi/GetOriginalImage',\r\n\t\t\t\t type: 'POST'\r\n\t\t\t }, params: {\r\n\t\t\t\t OrderEntityId: this._orderEntityId,\r\n\t\t\t\t\tProductEntityId: this._productEntityId,\r\n\t\t\t\t\tProductId: recordId\r\n\t\t\t }\r\n\t\t })\r\n\t\t .then((image) => deferred.resolve(image))\r\n\t\t\t.fail(err => deferred.reject(this.GetResponseError(err, 'Error getting original image')));\r\n\r\n\t return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import { IControl } from \"Core/Controls/IControl\";\r\nimport { ControlDataModel } from \"Core/ScreenManager/Models/ControlDataModel\";\r\nimport { IControlDataModelFacade } from \"./Models/ControlDataModelFacade\";\r\n\r\nexport const controlFacade = (control: IControl) => {\r\n \r\n const contextControl = control;\r\n\r\n const setData = (data: IControlDataModelFacade) =>{\r\n let controlData = new ControlDataModel();\r\n controlData.Value = `${data.value}`;\r\n contextControl.SetData(controlData);\r\n }\r\n\r\n const getData = () =>{\r\n return {\r\n value: contextControl.GetValue()\r\n }\r\n }\r\n\r\n const setBackgroundColor = (color: string)=>{\r\n contextControl.BackgroundColor = color;\r\n }\r\n\r\n return { setData, getData, setBackgroundColor }\r\n}","import { GenericButton } from \"Core/Controls/GenericButton/GenericButton\";\r\nimport { Grid } from \"Core/Controls/Grid/Grid\";\r\nimport { IControl } from \"Core/Controls/IControl\";\r\n\r\nexport const gridFacade = (control: Grid)=> {\r\n\r\n const getTotalRecords = () => {\r\n return control.TotalRecords;\r\n }\r\n\r\n return { getTotalRecords }\r\n}","import { IScreen } from \"Core/Screens/IScreen\";\r\nimport {Event} from 'Core/Common/Event';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport { controlFacade } from \"./ControlFacade\";\r\nexport interface INavigateToScreenOptions {\r\n entityId: number;\r\n recordId: number;\r\n}\r\n\r\nexport const screenFacade = (screen: IScreen) => {\r\n\r\n const addOnAfterSave = (handler: Function) =>{\r\n screen.On('RECORD_SAVED', this, ()=> handler.apply(null));\r\n }\r\n\r\n const getAllControls = () =>{\r\n return _.map(screen.GetAllControls(), (control)=> controlFacade(control));\r\n }\r\n\r\n const showInModal = () =>{\r\n screen.ShowInModal(); \r\n }\r\n\r\n const navigateToScreen = (options: INavigateToScreenOptions) =>{\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: options.entityId,\r\n RecordId: options.recordId\r\n });\r\n }\r\n\r\n return { addOnAfterSave, getAllControls, navigateToScreen, showInModal }\r\n}","import { Notifier } from 'Core/Common/Notifier';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { CONTROL_TYPES } from 'Core/Constant';\r\nimport { IDictionary } from 'Core/Screens/BaseScreen';\r\nimport { BlockUI } from '../../Common/BlockUi';\r\nimport { TableStore } from '../../Common/Stores/TableStore';\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport { screenFacade } from './Facades/ScreenFacade';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nexport interface INavigateToScreenOptions {\r\n EntityId: number;\r\n RecordId: number;\r\n}\r\n\r\nexport class FunctionBuilder {\r\n private static P = P;\r\n private static CONTROL_TYPES = CONTROL_TYPES;\r\n\r\n public static async Execute(code: string, param: IDictionary, context: any = null){\r\n try {\r\n await this.BuildFunction(code).call(this, param, context);\r\n }catch(e){\r\n new Notifier().Failed(e.message);\r\n }\r\n }\r\n\r\n public static BuildFunction(body: string){\r\n return new Function(`return async function(param, $context) {\r\n const CONTROL_TYPES = this.CONTROL_TYPES;\r\n const P = this.P;\r\n \r\n var deferredResult = this.P.defer();\r\n \r\n ${body}\r\n\r\n return deferredResult.promise(); \r\n\r\n }`)();\r\n }\r\n\r\n public static async GetTableByName(tableName: string){\r\n return await TableStore.Get({ TableName: tableName });\r\n }\r\n\r\n public static async GetEditScreen(options){\r\n\r\n if(options.RecordId > 0){\r\n await LockManager.Instance.TryLock(options.EntityId, options.RecordId)\r\n .fail(err=>{ \r\n Notifier.Failed(err.message);\r\n return;\r\n });\r\n }\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n let screen = await screenManager.GetEditScreen({ EntityId: options.EntityId, TableTypeId: options.TableTypeId, RecordId: options.RecordId });\r\n\r\n if(options.RecordId > 0){\r\n screen.On('CLOSE', this, () => LockManager.Instance.ReleaseLock(options.EntityId, options.RecordId));\r\n screen.On('RECORD_SAVED', this, () => LockManager.Instance.ReleaseLock(options.EntityId, options.RecordId));\r\n }\r\n\r\n return screenFacade(screen);\r\n }\r\n\r\n public static BlockUI(){\r\n BlockUI.Block();\r\n }\r\n\r\n public static UnblockUI(){\r\n BlockUI.Unblock();\r\n }\r\n\r\n public static NavigateToRecordScreen(options: INavigateToScreenOptions){\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: options.EntityId,\r\n RecordId: options.RecordId\r\n });\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Timer, TIMER_EVENTS} from \"Core/Common/Timer\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport ConfirmationDialogTemplate from 'Core/Components/Dialogs/ConfirmationDialog/Templates/View.html';\r\nimport { Brand } from \"../../../Common/Brand\";\r\n\r\nko.templates[\"Core/Components/Dialogs/ConfirmationDialog/Templates/View\"] = ConfirmationDialogTemplate;\r\n\r\nconst TEMPLATES = {\r\n\tVIEW: \"Core/Components/Dialogs/ConfirmationDialog/Templates/View\"\r\n};\r\n\r\nexport const EVENTS = {\r\n\tCONFIRM_SELECTED: \"ConfirmSelected\",\r\n\tDISCARD_SELECTED: \"DiscardSelected\",\r\n\tSKIP_SELECTED: \"SkipSelected\",\r\n\tTIMER_EXPIRED: \"TimerExpired\"\r\n};\r\n\r\nexport enum Types {\r\n\tQuestion,\r\n\tWarning,\r\n\tError\r\n}\r\n\r\nexport interface IConfirmationDialogOptions {\r\n\tText: string;\r\n\tType: Types;\r\n\tWidth?: number;\r\n\tMinHeight?: number;\r\n\tTextConfirm?: string;\r\n\tTextDecline?: string;\r\n\tTextSkip?: string;\r\n\tTimeout?: number;\r\n\tModalClass?: string;\r\n}\r\n\r\nexport class ConfirmationDialog extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _text: KnockoutObservable;\r\n\tprivate _textConfirm: KnockoutObservable;\r\n\tprivate _textDecline: KnockoutObservable;\r\n\tprivate _textSkip: KnockoutObservable;\r\n\tprivate _options: IConfirmationDialogOptions;\r\n\tprivate _timer: Timer;\r\n\tprivate _modalClass: string;\r\n\tprivate _declineClass: KnockoutComputed;\r\n\r\n\tconstructor(options: IConfirmationDialogOptions) {\r\n\t\tsuper();\r\n\t\tthis._options = options;\r\n\t\tthis._options.ModalClass += ' jBox-padding-5px';\r\n\t\tthis.Init();\r\n\r\n\t\tif (options.Timeout > 0) {\r\n\t\t\tthis.InitTimer(options.Timeout);\r\n\t\t}\r\n\t}\r\n\r\n\tget IsQuestion() {\r\n\t\treturn this._options.Type === Types.Question;\r\n\t}\r\n\r\n\tget IsWarning() {\r\n\t\treturn this._options.Type === Types.Warning;\r\n\t}\r\n\r\n\tget IsError() {\r\n\t\treturn this._options.Type === Types.Error;\r\n\t}\r\n\r\n\tprivate get IsTimerOn() {\r\n\t\treturn this._timer != null;\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tthis._text = ko.observable(this._options.Text);\r\n\t\tthis._textConfirm = ko.observable(this._options.TextConfirm || LABELS.OK);\r\n\t\tthis._textDecline = ko.observable(this._options.TextDecline || LABELS.CANCEL);\r\n\t\tthis._textSkip = ko.observable(this._options.TextSkip || null);\r\n\t\tthis._timer = null;\r\n\t\tthis._modalClass = '';\r\n\t\tthis._declineClass = ko.computed(() => _.isEqual(this._textDecline(), LABELS.CANCEL) ? \"btn btn-cancel\" : \"btn btn-danger\");\r\n\t}\r\n\r\n\tprivate InitModal() {\r\n\t\tthis._modal = new Modal({\r\n\t\t\twidth: this._options.Width || '405',\r\n\t\t\tminHeight: this._options.MinHeight || '200',\r\n\t\t\tcloseButton: false,\r\n\t\t\tcloseOnEsc: false,\r\n\t\t\taddClass: this._options.ModalClass === undefined ? '' : this._options.ModalClass + \"\",\r\n\t\t\tappendTo: 'body:first'\r\n\t\t}, false);\r\n\t}\r\n\r\n\tAddTimer(seconds: number) {\r\n\t\tthis.InitTimer(seconds);\r\n\t}\r\n\r\n\tShow() {\r\n\t\tthis.InitModal();\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t\tif (this.IsTimerOn) {\r\n\t\t\tthis._timer.Start();\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn TEMPLATES.VIEW;\r\n\t}\r\n\r\n\tOnOkClick() {\r\n\t\tthis.Close();\r\n\t\tthis.Trigger(EVENTS.CONFIRM_SELECTED);\r\n\t}\r\n\r\n\tOnCancelClick() {\r\n\t\tthis.Close();\r\n\t\tthis.Trigger(EVENTS.DISCARD_SELECTED);\r\n\t}\r\n\r\n\tOnSkipClick(){\r\n\t\tthis.Close();\r\n\t\tthis.Trigger(EVENTS.SKIP_SELECTED);\r\n\t}\r\n\r\n\tClose() {\r\n\t\tthis._modal.Close();\r\n\t\tif (this._timer) {\r\n\t\t\tthis._timer.Stop();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate AfterRender() {\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tprivate InitTimer(interval: number) {\r\n\t\tthis._timer = new Timer(interval);\r\n\t\tthis._timer.On(TIMER_EVENTS.TIMER_EXPIRED, this, () => this.Trigger(EVENTS.TIMER_EXPIRED));\r\n\t}\r\n\r\n\tget LogoUrl(){\r\n\t\treturn `/img/Custom/App/${Brand.Name}/official-main-logo-white.jpg`;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Timer} from \"Core/Common/Timer\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport ConfirmationDialogTemplate from 'Core/Components/Dialogs/DecisionDialog/Templates/View.html';\r\nimport { Brand } from \"../../../Common/Brand\";\r\n\r\nko.templates[\"Core/Components/Dialogs/DecisionDialog/Templates/View\"] = ConfirmationDialogTemplate;\r\n\r\nconst TEMPLATES = {\r\n\tVIEW: \"Core/Components/Dialogs/DecisionDialog/Templates/View\"\r\n};\r\n\r\nexport const EVENTS = {\r\n\tCONFIRM_SELECTED: \"ConfirmSelected\",\r\n\tDISCARD_SELECTED: \"DiscardSelected\",\r\n\tCANCEL_SELECTED: \"CancelSelected\"\r\n};\r\n\r\nexport enum Types {\r\n\tQuestion,\r\n\tWarning,\r\n\tError\r\n}\r\n\r\nexport interface IDecisionDialogOptions {\r\n\tText: string;\r\n\tType: Types;\r\n\tWidth?: number;\r\n\tMinHeight?: number;\r\n\tTextConfirm?: string;\r\n\tTextDecline?: string;\r\n\tTextCancel?: string;\r\n\tTimeout?: number;\r\n\tModalClass?: number;\r\n}\r\n\r\nexport class DecisionDialog extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _text: KnockoutObservable;\r\n\tprivate _textConfirm: KnockoutObservable;\r\n\tprivate _textDecline: KnockoutObservable;\r\n\tprivate _textCancel: KnockoutObservable;\r\n\tprivate _options: IDecisionDialogOptions;\r\n\tprivate _timer: Timer;\r\n\tprivate _modalClass: string;\r\n\r\n\tconstructor(options: IDecisionDialogOptions) {\r\n\t\tsuper();\r\n\t\tthis._options = options;\r\n\t\tthis.Init();\r\n\r\n\t\tif (options.Timeout > 0) {\r\n\t\t\tthis._timer = new Timer(options.Timeout);\r\n\t\t}\r\n\t}\r\n\r\n\tget IsQuestion() {\r\n\t\treturn this._options.Type === Types.Question;\r\n\t}\r\n\r\n\tget IsWarning() {\r\n\t\treturn this._options.Type === Types.Warning;\r\n\t}\r\n\r\n\tget IsError() {\r\n\t\treturn this._options.Type === Types.Error;\r\n\t}\r\n\r\n\tprivate get IsTimerOn() {\r\n\t\treturn this._timer != null;\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tthis._text = ko.observable(this._options.Text);\r\n\t\tthis._textConfirm = ko.observable(this._options.TextConfirm || LABELS.YES);\r\n\t\tthis._textDecline = ko.observable(this._options.TextDecline || LABELS.NO);\r\n\t\tthis._textCancel = ko.observable(this._options.TextCancel || LABELS.CANCEL);\r\n\t\tthis._timer = null;\r\n\t\tthis._modalClass = '';\r\n\t}\r\n\r\n\tprivate InitModal() {\r\n\t\tthis._modal = new Modal({\r\n\t\t\twidth: this._options.Width || '405',\r\n\t\t\tminHeight: this._options.MinHeight || '200',\r\n\t\t\tcloseButton: false,\r\n\t\t\tcloseOnEsc: false,\r\n\t\t\taddClass: this._options.ModalClass === undefined ? '' : this._options.ModalClass + \"\",\r\n\t\t\tappendTo: 'body:first'\r\n\t\t}, false);\r\n\t}\r\n\r\n\tAddTimer(seconds: number) {\r\n\t\tthis._timer = new Timer(seconds);\r\n\t}\r\n\r\n\tShow() {\r\n\t\tthis.InitModal();\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t\tif (this.IsTimerOn) {\r\n\t\t\tthis._timer.Start();\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn TEMPLATES.VIEW;\r\n\t}\r\n\r\n\tOnYesClick() {\r\n\t\tthis.Trigger(EVENTS.CONFIRM_SELECTED);\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tOnNoClick() {\r\n\t\tthis.Trigger(EVENTS.DISCARD_SELECTED);\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tOnCancelClick() {\r\n\t\tthis.Trigger(EVENTS.CANCEL_SELECTED);\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tClose() {\r\n\t\tthis._modal.Close();\r\n\t\tif (this._timer) {\r\n\t\t\tthis._timer.Stop();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate AfterRender() {\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tget LogoUrl(){\r\n\t\treturn `/img/Custom/App/${Brand.Name}/official-main-logo-white.jpg`;\r\n\t}\r\n}","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {LABELS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {DELETION_MODES} from \"Core/Constant\";\r\n\r\nimport DeletionModeDialogTemplate from 'Core/Components/Dialogs/DeletionModeDialog/Templates/View.html';\r\nimport { Brand } from \"../../../Common/Brand\";\r\n\r\nko.templates[\"Core/Components/Dialogs/DeletionModeDialog/Templates/View\"] = DeletionModeDialogTemplate;\r\n\r\nconst TEMPLATES = {\r\n\tVIEW: \"Core/Components/Dialogs/DeletionModeDialog/Templates/View\"\r\n};\r\n\r\nexport const EVENTS = {\r\n\tDELETE_SELECTED: \"DeleteSelected\",\r\n\tDISABLE_SELECTED: \"DisableSelected\",\r\n\tDISCARD_SELECTED: \"DiscardSelected\"\r\n};\r\n\r\nexport interface IDeletionModeDialogOptions {\r\n\tDeletionMode: number;\r\n\tHasCustomLifeStatus: boolean;\r\n\tWidth?: number;\r\n\tMinHeight?: number;\r\n\tTextConfirm?: string;\r\n\tTextDecline?: string;\r\n\tTextSkip?: string;\r\n\tModalClass?: string;\r\n}\r\n\r\nexport class DeletionModeDialog extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _text: KnockoutObservable;\r\n\tprivate _options: IDeletionModeDialogOptions;\r\n\tprivate _modalClass: string;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(options: IDeletionModeDialogOptions) {\r\n\t\tsuper();\r\n\t\tthis._options = options;\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tget IsAsk() {\r\n\t\treturn this._options.DeletionMode === DELETION_MODES.ASK.Id;\r\n\t}\r\n\r\n\tget IsPreserve() {\r\n\t\treturn this._options.DeletionMode === DELETION_MODES.PRESERVE.Id;\r\n\t}\r\n\r\n\tget IsDelete() {\r\n\t\treturn this._options.DeletionMode === DELETION_MODES.DELETE.Id;\r\n\t}\r\n\r\n\tget HasCustomLifeStatus() {\r\n\t\treturn this._options.HasCustomLifeStatus;\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tconst confirmationMessage = this.IsPreserve\r\n\t\t\t? CONFIRMATIONS.DELETION_NOT_ALLOWED_DUE_TO_EXISTING_RELATED_RECORDS\r\n\t\t\t: CONFIRMATIONS.ALL_RELATED_DATA_WILL_BE_LOST_CONTINUE;\r\n\t\tthis._text = ko.observable(confirmationMessage);\r\n\r\n\t\tthis._modalClass = '';\r\n\t}\r\n\r\n\tprivate InitModal() {\r\n\t\tthis._modal = new Modal({\r\n\t\t\twidth: this._options.Width || '405',\r\n\t\t\tminHeight: this._options.MinHeight || '200',\r\n\t\t\tcloseButton: false,\r\n\t\t\tcloseOnEsc: false,\r\n\t\t\taddClass: this._options.ModalClass === undefined ? '' : this._options.ModalClass + \"\",\r\n\t\t\tappendTo: 'body:first'\r\n\t\t}, false);\r\n\t}\r\n\r\n\tShow() {\r\n\t\tthis.InitModal();\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn TEMPLATES.VIEW;\r\n\t}\r\n\r\n\tOnDeleteClick() {\r\n\t\tthis.Close();\r\n\t\tthis.Trigger(EVENTS.DELETE_SELECTED);\r\n\t}\r\n\r\n\tOnDisableClick() {\r\n\t\tif (this.HasCustomLifeStatus) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.Close();\r\n\t\tthis.Trigger(EVENTS.DISABLE_SELECTED);\r\n\t}\r\n\r\n\tOnCancelClick() {\r\n\t\tthis.Close();\r\n\t\tthis.Trigger(EVENTS.DISCARD_SELECTED);\r\n\t}\r\n\r\n\tClose() {\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tprivate AfterRender() {\r\n\t\tthis._modal.Show();\r\n\t}\r\n\tget LogoUrl(){\r\n\t\treturn `/img/Custom/App/${Brand.Name}/official-main-logo-white.jpg`;\r\n\t}\r\n}","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { Notifier } from 'Core/Common/Notifier';\r\n\r\n\r\n\r\nimport PromptDialogTemplate from 'Core/Components/Dialogs/PromptDialog/Templates/View.html';\r\nimport { Brand } from \"../../../Common/Brand\";\r\nko.templates[\"Core/Components/Dialogs/PromptDialog/Templates/View\"] = PromptDialogTemplate;\r\n\r\nconst TEMPLATES = {\r\n\tVIEW: 'Core/Components/Dialogs/PromptDialog/Templates/View'\r\n};\r\n\r\nconst EVENTS = {\r\n\tSAVE: 'Save',\r\n\tCANCEL: 'Cancel'\r\n};\r\n\r\nexport enum Types {\r\n\tText,\r\n\tPassword\r\n}\r\n\r\nexport interface IPromptDialogOptions {\r\n\tType: Types;\r\n\tLabel: string;\r\n\tValue?: string;\r\n\tWidth?: number;\r\n\tMinHeight?: number;\r\n\tTextConfirm?: string;\r\n\tTextDecline?: string;\r\n\tTimeout?: number;\r\n\tModalClass?: number;\r\n\tRequired?: boolean;\r\n\tRequiredErrorMessage?: string;\r\n\tShowNotification?: boolean;\r\n\tInvalidMessage?: string;\r\n\tCloseOnSave?: boolean;\r\n\tAddClass?: string;\r\n}\r\n\r\nexport class PromptDialog extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _promptLabel: string;\r\n\tprivate _value: KnockoutObservable;\r\n\tprivate _textConfirm: KnockoutObservable;\r\n\tprivate _textDecline: KnockoutObservable;\r\n\tprivate _invalid: KnockoutObservable;\r\n\tprivate _required: boolean;\r\n\tprivate _options: IPromptDialogOptions;\r\n\tprivate _modalClass: string;\r\n\tprivate _requiredErrorMessage: string;\r\n\tprivate _requiredInvalid: KnockoutObservable;\r\n\tprivate _invalidMessage: KnockoutObservable;\r\n\tprivate _showNotification: boolean;\r\n\tprivate _closeOnSave: boolean;\r\n\r\n\tconstructor(options: IPromptDialogOptions) {\r\n\t\tsuper();\r\n\t\tthis.Init(options);\r\n\t}\r\n\r\n\tget IsTextPrompt() {\r\n\t\treturn this._options.Type === Types.Text;\r\n\t}\r\n\r\n\tget IsPasswordPrompt() {\r\n\t\treturn this._options.Type === Types.Password;\r\n\t}\r\n\r\n\tprivate Init(options: IPromptDialogOptions) {\r\n\t\tthis._options = options;\r\n\t\tthis._promptLabel = options.Label;\r\n\t\tthis._value = ko.observable(options.Value);\r\n\t\tthis._invalid = ko.observable(false);\r\n\t\tthis._requiredInvalid = ko.observable(false);\r\n\t\tthis._required = this._options.Required || false;\r\n\t\tthis._textConfirm = ko.observable(this._options.TextConfirm || LABELS.OK);\r\n\t\tthis._textDecline = ko.observable(this._options.TextDecline || LABELS.CANCEL);\r\n\t\tthis._modalClass = this._options.AddClass || '';\r\n\t\tthis._requiredErrorMessage = this._options.RequiredErrorMessage;\r\n\t\tthis._invalidMessage = ko.observable(this._options.InvalidMessage || '');\r\n\t\tthis._showNotification = this._options.ShowNotification;\r\n\t\tthis._closeOnSave = this._options.CloseOnSave;\r\n\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: this._modalClass,\r\n\t\t\twidth: this._options.Width || '405',\r\n\t\t\tminHeight: this._options.MinHeight || '400',\r\n\t\t\tcloseButton: null\r\n\t\t}, false);\r\n\t}\r\n\r\n\tExternalInvalidActionHandling(message: string) {\r\n\t\tthis._invalidMessage(message);\r\n\t\tthis._invalid(true);\r\n\t}\r\n\r\n\tHide(triggerEvent: boolean = true) {\r\n\t\tif (triggerEvent){\r\n\t\t\tthis.Trigger(EVENTS.CANCEL);\r\n\t\t}\r\n\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\r\n\tShow() {\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t}\r\n\r\n\tChangeValue(data, event) {\r\n\t\tif (this._required && event.target.value.length > 0) {\r\n\t\t\tthis._invalid(false);\r\n\t\t\tthis._requiredInvalid(false);\r\n\t\t} else {\r\n\t\t\tthis._requiredInvalid(true);\r\n\t\t}\r\n\t}\r\n\r\n\tOnSave() {\r\n\t\tif (!this._value() && this._required) {\r\n\t\t\tthis._requiredInvalid(true);\r\n\t\t\tthis._showNotification && new Notifier().Failed(this._requiredErrorMessage);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.Trigger(EVENTS.SAVE, {value: this._value()});\r\n\t\tthis._closeOnSave && this._modal.Close();\r\n\t}\r\n\r\n\tOnCancel() {\r\n\t\tthis.Trigger(EVENTS.CANCEL);\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tprivate GetTemplateName(): string {\r\n\t\treturn TEMPLATES.VIEW;\r\n\t}\r\n\r\n\tprivate AfterRender() {\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tget LogoUrl(){\r\n\t\treturn `/img/Custom/App/${Brand.Name}/official-main-logo-white.jpg`;\r\n\t}\r\n}","// Module\nvar code = \"

    \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport SelectDialogTemplate from 'Core/Components/Dialogs/SelectDialog/Templates/View.html';\r\nko.templates[\"Core/Components/Dialogs/SelectDialog/Templates/View\"] = SelectDialogTemplate;\r\n\r\nconst TEMPLATES = {\r\n\tVIEW: 'Core/Components/Dialogs/SelectDialog/Templates/View'\r\n}\r\n\r\nexport const EVENTS = {\r\n\tSAVE: 'Save',\r\n\tCANCEL: 'Cancel'\r\n}\r\n\r\nexport interface ISelectorOption {\r\n\tText: string;\r\n\tValue: TValue;\r\n}\r\n\r\nexport interface ISelectDialogOptions {\r\n\tLabel: string;\r\n\tOptions: Array>;\r\n\tSelectedOption?: ISelectorOption;\r\n}\r\n\r\nexport class SelectDialog extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _selectorLabel: string;\r\n\tprivate _selectorOptions: KnockoutObservableArray>;\r\n\tprivate _selectedOption: KnockoutObservable>;\r\n\r\n\tconstructor(options: ISelectDialogOptions) {\r\n\t\tsuper();\r\n\t\tthis.Init(options);\r\n\t}\r\n\r\n\tprivate Init(options: ISelectDialogOptions) {\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: 'jBox-padding-15px selectDialogPopup',\r\n\t\t\twidth: '350',\r\n\t\t\tminHeight: '200'\r\n\t\t}, false);\r\n\t\tthis._selectorLabel = options.Label;\r\n\t\tthis._selectorOptions = ko.observableArray(options.Options);\r\n\r\n\t\tthis._selectedOption = options.SelectedOption\r\n\t\t\t? ko.observable(options.SelectedOption)\r\n\t\t\t: ko.observable(options.Options.length > 0 ? options.Options[0] : null);\r\n\t}\r\n\r\n\tShow() {\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t}\r\n\r\n\tOnSave() {\r\n\t\tthis.Trigger(EVENTS.SAVE, this._selectedOption());\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tOnCancel() {\r\n\t\tthis.Trigger(EVENTS.CANCEL);\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tprivate GetTemplateName(): string {\r\n\t\treturn TEMPLATES.VIEW;\r\n\t}\r\n\r\n\tprivate AfterRender() {\r\n\t\tthis._modal.Show();\r\n\t}\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","export class FileDownloader {\r\n\tstatic DownloadBase64(base64: string, fileName: string) {\r\n\t\tconst arrayBuffer = this.Base64ToArrayBuffer(base64);\r\n\t\tconst blob = new Blob([arrayBuffer], { type: 'octet/stream' });\r\n\t\tthis.DownloadFileData(blob, fileName);\r\n\t}\r\n\r\n\tstatic DownloadFile(fileName: string) {\r\n\t\tconst url = '/api/FilesApi/GetFile?fileName=' + fileName;\r\n\t\tthis.StartDownloadFile(url, fileName);\r\n\t}\r\n\r\n\tstatic DownloadFileData(blob: Blob, fileName: string) {\r\n\t\tconst URL = window.URL || window['webkitURL'];\r\n\t\tconst url = URL.createObjectURL(blob);\r\n\t\tthis.StartDownloadFile(url, fileName);\r\n\t}\r\n\r\n\tprivate static StartDownloadFile(url: string, fileName: string) {\r\n\t\tconst a = document.createElement('a');\r\n\t\tdocument.body.appendChild(a);\r\n\t\ta.setAttribute('style', 'display: none');\r\n\r\n\t\ta.href = url;\r\n\t\ta.download = fileName;\r\n\t\ta.click();\r\n\t\tURL.revokeObjectURL(url);\r\n\t\ta.remove();\r\n\t}\r\n\r\n\tprivate static Base64ToArrayBuffer(base64: string) {\r\n\t\tconst binaryString = window.atob(base64);\r\n\t\tconst binaryLen = binaryString.length;\r\n\t\tconst bytes = new Uint8Array(binaryLen);\r\n\t\tfor (let i = 0; i < binaryLen; i++) {\r\n\t\t\tbytes[i] = binaryString.charCodeAt(i);\r\n\t\t}\r\n\t\treturn bytes;\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \\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
    \\\">
    \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from \"underscore\";\r\n\r\nimport { MailStore } from 'Core/Controls/Mail/Stores/MailStore'\r\nimport { BlockUI } from 'Core/Common/BlockUi'\r\nimport { MailTabModel } from 'Core/Controls/Mail/Models/MailTabModel'\r\nimport { Event } from 'Core/Common/Event';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { ComposeMail } from 'Core/Controls/Mail/ComposeMail';\r\nimport { IComposerOptionsModel } from 'Core/Controls/Mail/Models/ComposerOptionsModel';\r\nimport { FieldFormat } from 'Core/Common/FieldFormat';\r\nimport { QueryResultPage } from 'Core/Controls/Grid/BaseGrid/QueryResultPage/QueryResultPage';\r\nimport { GenericDeserialize, Serialize } from 'libs/cerialize';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { QueryParamsPage } from 'QueryBuilder/QueryParamsPage/QueryParamsPage';\r\nimport {EVENTS as QUERY_RESULT_PAGE_EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {\r\n\tFormatManagerStore,\r\n\tICreateEmlMessageRequestModel\r\n} from 'Core/Components/FormatManager/Stores/FormatManagerStore';\r\nimport { EVENTS as QUERY_PARAMS_PAGE_EVENTS } from 'QueryBuilder/QueryParamsPage/Events';\r\nimport { IControlParam, IScreen } from 'Core/Screens/IScreen';\r\n\r\nimport SQLViewTemplate from 'Core/Components/FormatManager/FormatTemplates/SQLView.html'\r\nimport SocialLinkViewTemplate from 'Core/Components/FormatManager/FormatTemplates/SocialLinkView.html'\r\nimport SkypeViewTemplate from 'Core/Components/FormatManager/FormatTemplates/SkypeView.html'\r\nimport LinkedinViewTemplate from 'Core/Components/FormatManager/FormatTemplates/LinkedinView.html'\r\nimport MailViewTemplate from 'Core/Components/FormatManager/FormatTemplates/MailView.html'\r\nimport UrlViewTemplate from 'Core/Components/FormatManager/FormatTemplates/UrlView.html'\r\nimport LocalUrlViewTemplate from 'Core/Components/FormatManager/FormatTemplates/LocalUrlView.html'\r\n\r\n\r\nko.templates['Core/Components/FormatManager/FormatTemplates/SQLView'] = SQLViewTemplate;\r\nko.templates['Core/Components/FormatManager/FormatTemplates/SocialLinkView'] = SocialLinkViewTemplate;\r\nko.templates['Core/Components/FormatManager/FormatTemplates/SkypeView'] = SkypeViewTemplate;\r\nko.templates['Core/Components/FormatManager/FormatTemplates/LinkedinView'] = LinkedinViewTemplate;\r\nko.templates['Core/Components/FormatManager/FormatTemplates/MailView'] = MailViewTemplate;\r\nko.templates['Core/Components/FormatManager/FormatTemplates/UrlView'] = UrlViewTemplate;\r\nko.templates['Core/Components/FormatManager/FormatTemplates/LocalUrlView'] = LocalUrlViewTemplate;\r\n\r\nimport { ScreenTypes } from '../../Common/Enums/ScreenTypes';\r\nimport { JBoxDropDown } from '../JBoxDropdown/DropDown';\r\nimport {GridRow} from \"Core/Controls/Grid/BaseGrid/GridRow/GridRow\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\n\r\nconst urlPattern = new RegExp('^(https?:\\\\/\\\\/)?' + // protocol [1]\r\n\t'((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name [2]\r\n\t'((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\r\n\t'(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\r\n\t'(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\r\n\t'(\\\\#[-a-z\\\\d_]*)?$', 'i'); // fragment locator\r\n\r\nconst socialFormatsEnum = {\r\n\tLinkedin: FieldFormat.LINKEDIN,\r\n\tFacebook: FieldFormat.FACEBOOK,\r\n\tYouTube: FieldFormat.YOUTUBE,\r\n\tTwitter: FieldFormat.TWITTER,\r\n\tInstagram: FieldFormat.INSTAGRAM,\r\n\tPinterest: FieldFormat.PINTEREST,\r\n\tMedium: FieldFormat.MEDIUM,\r\n};\r\n\r\nexport let FormatsEnum = {\r\n\t...socialFormatsEnum,\r\n\tMail: FieldFormat.MAIL,\r\n\tSQL: FieldFormat.SQL,\r\n\tURL: FieldFormat.URL,\r\n\tLOCALURL: FieldFormat.LOCALURL,\r\n\tSKYPE: FieldFormat.SKYPE,\r\n\tLinkedin: FieldFormat.LINKEDIN,\r\n\tGetFormat: (name: string) => {\r\n\t\tconst formatKeys= Object.keys(FormatsEnum);\r\n\t\tconst key = _.find(formatKeys, (formatKey: any) => FieldFormat[formatKey] === name);\r\n\t\treturn key;\r\n\t}\r\n};\r\n\r\nlet TemplatesToFormats = [\r\n\t{ Format: FieldFormat.FACEBOOK, Template: SocialLinkViewTemplate },\r\n\t{ Format: FieldFormat.YOUTUBE, Template: SocialLinkViewTemplate },\r\n\t{ Format: FieldFormat.TWITTER, Template: SocialLinkViewTemplate },\r\n\t{ Format: FieldFormat.INSTAGRAM, Template: SocialLinkViewTemplate },\r\n\t{ Format: FieldFormat.PINTEREST, Template: SocialLinkViewTemplate },\r\n\t{ Format: FieldFormat.MEDIUM, Template: SocialLinkViewTemplate },\r\n\t{ Format: FieldFormat.SQL, Template: SQLViewTemplate },\r\n\t{ Format: FieldFormat.URL, Template: UrlViewTemplate },\r\n\t{ Format: FieldFormat.MAIL, Template: MailViewTemplate },\r\n\t{ Format: FieldFormat.SKYPE, Template: SkypeViewTemplate },\r\n\t{ Format: FieldFormat.LINKEDIN, Template: LinkedinViewTemplate },\r\n\t{ Format: FieldFormat.LOCALURL, Template: LocalUrlViewTemplate }\r\n];\r\n\r\nlet TemplateNamesToFormats = [\r\n\t{ Format: FieldFormat.FACEBOOK, Template: 'Core/Components/FormatManager/FormatTemplates/SocialLinkView' },\r\n\t{ Format: FieldFormat.YOUTUBE, Template: 'Core/Components/FormatManager/FormatTemplates/SocialLinkView' },\r\n\t{ Format: FieldFormat.TWITTER, Template: 'Core/Components/FormatManager/FormatTemplates/SocialLinkView' },\r\n\t{ Format: FieldFormat.INSTAGRAM, Template: 'Core/Components/FormatManager/FormatTemplates/SocialLinkView' },\r\n\t{ Format: FieldFormat.PINTEREST, Template: 'Core/Components/FormatManager/FormatTemplates/SocialLinkView' },\r\n\t{ Format: FieldFormat.MEDIUM, Template: 'Core/Components/FormatManager/FormatTemplates/SocialLinkView' },\r\n\t{ Format: FieldFormat.SQL, Template: 'Core/Components/FormatManager/FormatTemplates/SQLView' },\r\n\t{ Format: FieldFormat.URL, Template: 'Core/Components/FormatManager/FormatTemplates/UrlView' },\r\n\t{ Format: FieldFormat.MAIL, Template: 'Core/Components/FormatManager/FormatTemplates/MailView' },\r\n\t{ Format: FieldFormat.SKYPE, Template: 'Core/Components/FormatManager/FormatTemplates/SkypeView' },\r\n\t{ Format: FieldFormat.LINKEDIN, Template: 'Core/Components/FormatManager/FormatTemplates/LinkedinView' },\r\n\t{ Format: FieldFormat.LOCALURL, Template: 'Core/Components/FormatManager/FormatTemplates/LocalUrlView' }\r\n];\r\n\r\nexport interface FormatParams {\r\n\tValue: string,\r\n\tFormat: string,\r\n\tTableId: number,\r\n\tRecordId: number,\r\n\tLabel?: string,\r\n\tIcon?: string,\r\n\tLabelPosition?: string,\r\n\tIsGrid?: boolean,\r\n\tLabelStyle?: any,\r\n\tScreen?: IScreen\r\n}\r\n\r\nexport class FormatManager extends Event {\r\n\tprivate _value: string;\r\n\tprivate _formatName: string;\r\n\tprivate _tableId: number;\r\n\tprivate _recordId: number;\r\n\tprivate _label: string;\r\n private _icon: string;\r\n\r\n\tprivate _template: any;\r\n\tprivate _templateName: string;\r\n\r\n\tpublic HasTemplate: boolean;\r\n\r\n\tprivate _mails: KnockoutObservableArray;\r\n\tprivate _isGrid: boolean;\r\n\tprivate _hasMails: KnockoutComputed;\r\n\tprivate _showMails: KnockoutComputed;\r\n\tprivate _labelPosition: string;\r\n\tprivate _labels = LABELS;\r\n\tprivate _id: string;\r\n\tprivate _dropDown: JBoxDropDown;\r\n\tprivate _labelStyle: KnockoutObservable;\r\n\tprivate _isIconVisible: boolean;\r\n\tprivate _screen: IScreen;\r\n\r\n\tconstructor(params: FormatParams) {\r\n\t\tsuper();\r\n\t\tthis._screen = params.Screen;\r\n\t\tthis._value = params.Value;\r\n\t\tthis._tableId = params.TableId;\r\n\t\tthis._recordId = params.RecordId;\r\n\t\tthis._formatName = params.Format;\r\n\t\tthis._label = params.Label;\r\n\t\tthis._labelPosition = params.LabelPosition;\r\n\t\tthis._icon = params.Icon;\r\n\t\tthis._isGrid = params.IsGrid;\r\n this._isIconVisible = GlobalManager.Instance.GetGlobal(GLOBALS.SHOW_CONTROL_ICONS) !== '0';\r\n this.GetLabelStyleColor(params);\r\n\t\tthis.SetTemplate();\r\n\r\n\t\tif (FieldFormat.MAIL === this._formatName) {\r\n\t\t\tthis.ApplyMailProperties();\r\n\t\t}\r\n\t\tthis._id = JBoxDropDown.GetDropDownId();\r\n\t}\r\n\r\n\tprivate GetLabelStyleColor(params: FormatParams){\r\n\t\tif (!params.IsGrid && params.LabelStyle && params.LabelStyle() && params.LabelStyle().color){\r\n\t\t\tthis._labelStyle = params.LabelStyle().color;\r\n\t\t} else {\r\n\t\t\tthis._labelStyle = null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic static IsSocialFormat(formatName: string): boolean {\r\n\t\treturn !!socialFormatsEnum[formatName];\r\n\t}\r\n\r\n\tpublic static IsSkypeFormat(formatName: string): boolean {\r\n\t\treturn FieldFormat.SKYPE === formatName;\r\n\t}\r\n\r\n\tpublic static FormatUrlForSocial(url: string): string {\r\n\t\tconst matches = url && url.match(urlPattern);\r\n\t\tif (matches) {\r\n\t\t\tif (!matches[1]) { // if no protocol we add it\r\n\t\t\t\turl = \"http://\" + url;\r\n\t\t\t}\r\n\t\t\treturn url;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn this._template;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn this._templateName;\r\n\t}\r\n\r\n\tprivate SetTemplate() {\r\n\t\tlet templateToFormat = _.find(TemplatesToFormats, tf => {\r\n\t\t\treturn tf.Format === this._formatName;\r\n\t\t});\r\n\r\n\t\tlet templateNameToFormat = _.find(TemplateNamesToFormats, tf => {\r\n\t\t\treturn tf.Format === this._formatName;\r\n\t\t});\r\n\r\n\t\tthis.HasTemplate = !!templateToFormat;\r\n\t\tthis._template = this.HasTemplate ? templateToFormat.Template : null;\r\n\t\tthis._templateName = this.HasTemplate ? templateNameToFormat.Template : null;\r\n\t}\r\n\r\n\t//Mail format\r\n\tprivate ApplyMailProperties() {\r\n\t\tthis._mails = ko.observableArray();\r\n\t\tthis._hasMails = ko.computed(() => {\r\n\t\t\treturn this._mails().length > 0;\r\n\t\t}, this);\r\n\t\tthis._showMails = ko.computed(() => {\r\n\t\t\treturn this._mails().length > 1;\r\n\t\t}, this);\r\n\t}\r\n\r\n\tprivate OpenDropDown() {\r\n\t\tthis._dropDown = new JBoxDropDown({\r\n\t\t\ttarget: \".\" + this._id,\r\n\t\t\totherOptions: {\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\tcloseOnClick: true,\r\n\t\t\t\taddClass: \"mails-dropdown\",\r\n\t\t\t\tonCloseComplete: () => this._dropDown.Destroy()\r\n\t\t\t},\r\n\t\t\tonOpen: () => {\r\n\t\t\t\tthis._dropDown.SetContent({ content: $(\".\" + this._id).next().data(\"jbox-content\") });\r\n\t\t\t},\r\n\t\t\tbindComponent: this,\r\n\t\t});\r\n\r\n\t\tthis._dropDown.Open();\r\n\t}\r\n\r\n\tprivate LoadTabs() {\r\n\t\tlet TryOpenComposer = () => {\r\n\t\t\tif (!this._showMails()) {\r\n\t\t\t\tthis.MailClick(this._mails()[0]);\r\n\t\t\t} else {\r\n\t\t\t\tthis.OpenDropDown()\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (this._hasMails()) {\r\n\t\t\tTryOpenComposer();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tBlockUI.Block();\r\n\t\tMailStore.GetMailTabs()\r\n\t\t\t.then((tabs: any) => {\r\n\t\t\t\t//not issue something wrong with model\r\n\t\t\t\t_.map(tabs, (tab: any) => {\r\n\t\t\t\t\tlet mail = new MailTabModel();\r\n\t\t\t\t\tmail.Login = tab.Login;\r\n\t\t\t\t\tmail.MailConnectionId = tab.MailConnectionId;\r\n\t\t\t\t\tmail.Client = tab.Client;\r\n\t\t\t\t\tthis._mails.push(mail);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!this._hasMails()) {\r\n\t\t\t\t\tnew Notifier().Failed(NOTIFICATIONS.PLEASE_ADD_YOUR_EMAIL);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tTryOpenComposer();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUI.Unblock())\r\n\t\t\t.fail((err) => new Notifier().Failed(err.message));\r\n\t}\r\n\r\n\tprivate MailClick(mail: MailTabModel) {\r\n\t\tif (!!this._value) {\r\n\t\t\tif (mail.Client === 'Desktop') {\r\n\t\t\t\tthis.OpenDesktopClient(mail);\r\n\t\t\t} else {\r\n\t\t\t\tthis.OpenInternalClient(mail);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tnew Notifier().Failed(NOTIFICATIONS.PLEASE_ADD_EMAIL);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate OpenDesktopClient(mail: MailTabModel) {\r\n\t\tvar requestModel: ICreateEmlMessageRequestModel = {\r\n\t\t\tFromAddress: mail.Login,\r\n\t\t\tToAddresses: [this._value]\r\n\t\t}\r\n\t\tBlockUI.Block();\r\n\t\tFormatManagerStore.CreateEmlMessage(requestModel).fail((err) => {\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t}).always(() => {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate OpenInternalClient(mail: MailTabModel) {\r\n\t\tconst composerOptions: IComposerOptionsModel = {\r\n\t\t\tResponseMailItem: null,\r\n\t\t\tSubjectEntityId: this._screen?.GetEntityId(),\r\n\t\t\tSubjectRecordId: this._screen?.GetRecordId(),\r\n\t\t\tSubjectTypeId: this._screen?.GetTableTypeId()\r\n\t\t};\r\n\t\tlet composeMail = new ComposeMail(composerOptions);\r\n\r\n\t\tcomposeMail.AddScreen(this._screen);\r\n\t\tcomposeMail.AddMailWithRecord(this._value, this._tableId, this._recordId);\r\n\t\tcomposeMail.ShowInModal(mail.MailConnectionId);\r\n\t}\r\n\r\n\tprivate RunQueryFromGrid(context: any) {\r\n\r\n\t\tif(context instanceof GridRow){\r\n\t\t\tlet dataCells = context.DataCells;\r\n\t\t\tconst nameCell = _.find(dataCells, (cell) => cell.Model.FieldMetadata.Name === 'NAME');\r\n\t\t\tconst typeCell = _.find(dataCells, (cell) => cell.Model.FieldMetadata.Name === 'F_TYPE');\r\n\t\t\tconst queryName: string = nameCell ? nameCell.Value : '';\r\n\t\t\tconst typeName: string = typeCell ? typeCell.DisplayValue : '';\r\n\t\t\tthis.RunQuery(this._value, typeName, queryName);\r\n\t\t}else{\r\n\t\t\tthis.RunQuery(this._value, context.GetScreen().GetTableTypeName(), '');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate StartLocalURL(){\r\n\t\tBlockUI.Block();\r\n\t\tFormatManagerStore.StartLocalUrl(this._value)\r\n\t\t.always(()=>{ BlockUI.Unblock() })\r\n\t\t.fail((err) => { new Notifier().Failed(err.message); });\r\n\t}\r\n\r\n\tpublic RunQuery(\r\n\t\tquery: string,\r\n\t\tqueryType: string,\r\n\t\tqueryName: string,\r\n\t\ttargetId = '',\r\n\t\tenableSelectRecord: boolean = false,\r\n\t\tplanningDate: string = '',\r\n\t\tmultiselect: boolean = true\r\n\t){\r\n\t\tif( queryType === 'Spim'){\r\n\t\t\tenableSelectRecord = true;\r\n\t\t}\r\n\t\t\r\n\t\tvar queryModel = GenericDeserialize(JSON.parse(query), QueryExpressionModel);\r\n\t\tvar paramsPage = new QueryParamsPage(queryModel, queryType, planningDate);\r\n\r\n\t\tif (paramsPage.HasShowParameters()) {\r\n\t\t\tparamsPage.On(QUERY_PARAMS_PAGE_EVENTS.SAVE, this, () => {\r\n\t\t\t\tthis.Trigger(QUERY_PARAMS_PAGE_EVENTS.SAVE);\r\n\t\t\t\tif (queryModel.QueryScreenId && queryModel.QueryScreenId > 0) {\r\n\t\t\t\t\tthis.ShowQueryScreen(queryModel, queryName, targetId, enableSelectRecord);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.ShowStaticQueryScreen(queryModel, targetId, enableSelectRecord, multiselect);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tparamsPage.Show();\r\n\t\t} else {\r\n\t\t\tif (queryModel.QueryScreenId && queryModel.QueryScreenId > 0) {\r\n\t\t\t\tthis.ShowQueryScreen(queryModel, queryName, targetId, enableSelectRecord);\r\n\t\t\t} else {\r\n\t\t\t\tthis.ShowStaticQueryScreen(queryModel, targetId, enableSelectRecord, multiselect);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async ShowQueryScreen(queryModel: QueryExpressionModel, name: string, targetId = '', enableSelectRecord: boolean = false) {\r\n\t\t\r\n\t\tconst screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\t\t\r\n\t\tBlockUI.Block();\r\n\t\tscreenManager.GetScreenById({ ScreenId: queryModel.QueryScreenId, RaiseNotImplemented :false})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((screen: any) => {\r\n\t\t\t\tif (screen.GetTypeName() === ScreenTypes[ScreenTypes.QueryScreen]) {\r\n\t\t\t\t\tscreen.SetQuery(queryModel, name);\r\n\t\t\t\t\tif(targetId != ''){\r\n\t\t\t\t\t\tscreen.RenderByTargetId(targetId);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tscreen.ShowInModal();\r\n\t\t\t\t\t}\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}).fail((err) => {new Notifier().Failed(err.message);});\r\n\t}\r\n\r\n\tprivate ShowStaticQueryScreen(\r\n\t\tqueryModel: QueryExpressionModel,\r\n\t\ttargetId = '',\r\n\t\tenableSelectRecord: boolean = false,\r\n\t\tmultiselect: boolean = true\r\n\t) {\r\n\t\tvar queryResultPage = new QueryResultPage(true, ScreenTypes.ListScreen);\r\n\t\tqueryResultPage.On(QUERY_RESULT_PAGE_EVENTS.RECORDS_SELECTED, this, (evtArgs) =>{\r\n\t\t\tthis.Trigger(QUERY_RESULT_PAGE_EVENTS.RECORDS_SELECTED, { SelectedRecords: evtArgs.data.SelectedRecords });\r\n\t\t});\r\n\r\n\t\tqueryResultPage.ShowQueryResult(queryModel, targetId, enableSelectRecord, multiselect);\r\n\t}\r\n\r\n\tprivate FormatUrl(value): string {\r\n\t\treturn value && value.includes('://') ? value : `http://${value}`;\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport { URL } from 'Core/Common/Url';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { DropdownListModel, FastFilterRangeModel } from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\n\r\nexport interface ICreateEmlMessageRequestModel {\r\n\tFromAddress: string;\r\n\tToAddresses: Array;\r\n}\r\n\r\nexport class FormatManagerStore {\r\n\tstatic CreateEmlMessage(params: ICreateEmlMessageRequestModel): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/ButtonTemplateApi/CreateEmlMessage',\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic StartLocalUrl(localUrl: string): P.Promise {\r\n\t\tconst deferedResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ScreenFormApi/StartLocalUrl',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: { '': localUrl }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferedResult.resolve(null);\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet responseJson = JSON.parse(data.message);\r\n\t\t\t\tdeferedResult.reject({ message: responseJson.ExceptionMessage || responseJson.Message })\r\n\t\t\t });\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport 'jBox';\r\n\r\nlet uniqueId = 0;\r\n\r\nclass otherOptions {// see option in documentation for jBox\r\n\ttheme?: string;\r\n\ttrigger?: string;\r\n\tadjustTracker?: boolean;\r\n\tadjustPosition?: boolean;\r\n\tappendTo?: any;\r\n\toutside?: any;\r\n\tcloseOnClick?: any;\r\n\tanimation?: string;\r\n\tpreventDefault?: boolean;\r\n\trepositionOnContent?: boolean;\r\n\tcreateOnInit?: boolean;\r\n\tzIndex?: number;\r\n\tattach?: string | JQuery;\r\n\ttarget?: string | JQuery | JQuery;\r\n\taddClass?: string;\r\n\tonClose?: any;\r\n\tonCloseComplete?: any;\r\n\tcontent?: string;\r\n\tpointer?: string;\r\n\tposition?: {\r\n\t\tx: string;\r\n\t\ty: string;\r\n\t};\r\n\tadjustDistance?: {\r\n\t\ttop?: number;\r\n\t\tleft?: number;\r\n\t\tright?: number;\r\n\t\tbottom?: number;\r\n\t} | number;\r\n\toffset?: {\r\n\t\tx?: number;\r\n\t\ty?: number;\r\n\t};\r\n\tisolateScroll?: boolean;\r\n\tfixed?: boolean;\r\n\twidth?: string | number;\r\n\theight?: string | number;\r\n\tminWidth?: string | number;\r\n\tminHeight?: string | number;\r\n\tmaxWidth?: string | number;\r\n\tmaxHeight?: string | number;\r\n\tcloseOnMouseleave?: boolean;\r\n\tdelayOpen?: number;\r\n\tdelayClose?: number;\r\n\tblockScroll?: boolean;\r\n}\r\n\r\n\r\nclass DropDownOptions {\r\n\tonOpen?: any;\r\n\tonClose?: any;\r\n\tonCreated?: any;\r\n\totherOptions?: otherOptions;\r\n\ttarget?: string | Element; // element selector\r\n\tbindTarget?: Element; // component that we want bind to for destroying\r\n\tbindComponent?: any; // class that will binded to view\r\n\tbindOnCreate?: boolean;\r\n}\r\n\r\nconst observerConfig = { childList: true, characterData: true, subtree : true };\r\n\r\nexport class JBoxDropDown {\r\n\tprivate _toolTip;\r\n\tprivate _bindComponent;\r\n\tprivate _observer;\r\n\tconstructor(options: DropDownOptions) {\r\n\t\tconst { onOpen, onClose, target, bindTarget, bindComponent, onCreated, otherOptions, bindOnCreate } = options;\r\n\r\n\t\tthis._init(onOpen, onClose, target, onCreated, otherOptions, bindOnCreate);\r\n\r\n\t\tthis._bindComponent = bindComponent;\r\n\r\n\t\tbindTarget && ko.utils.domNodeDisposal.addDisposeCallback(bindTarget, () => {\r\n\t\t\tthis._toolTip.destroy();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * init jbox tooltip\r\n\t * @param onOpen\r\n\t * @param onClose\r\n\t * @param target\r\n\t * @param onCreated\r\n\t * @param bindOnCreate\r\n\t * @param otherOptions\r\n\t */\r\n\tprivate _init = (onOpen, onClose, target, onCreated, otherOptions, bindOnCreate) => {\r\n\t\tthis._toolTip = new jBox(\"Tooltip\", {\r\n\t\t\tattach: target,\r\n\t\t\ttheme: \"TooltipBorder\",\r\n\t\t\ttrigger: \"click\",\r\n\t\t\tadjustTracker: !0,\r\n\t\t\tcloseOnClick: \"body\",\r\n\t\t\tanimation: \"move\",\r\n\t\t\tpreventDefault: true,\r\n\t\t\trepositionOnContent: true,\r\n\t\t\tisolateScroll: false,\r\n\t\t\tposition: {\r\n\t\t\t\tx: \"left\",\r\n\t\t\t\ty: \"top\"\r\n\t\t\t},\r\n\t\t\toutside: \"y\",\r\n\t\t\tpointer: \"left:20\",\r\n\t\t\toffset: {\r\n\t\t\t\tx: 5\r\n\t\t\t},\r\n\t\t\tcontent: \"\",\r\n\t\t\tonOpen: onOpen,\r\n\t\t\tonClose: onClose,\r\n\t\t\tonCreated: () => { // check if dropdown in modal \r\n\t\t\t\tconst inModal = this._toolTip.target.closest('.jBox-Modal')\r\n\t\t\t\tif (inModal.length) {\r\n\t\t\t\t\tinModal.find(\".jBox-content\").scroll(this._ScrollHandler)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst pivotTooltip = this._toolTip.container.closest('.pivotDetailsJBox');\r\n\t\t\t\tconst isPivotTooltip = pivotTooltip.length;\r\n\r\n\t\t\t\tthis._observer = new MutationObserver(() => {\r\n\t\t\t\t\tthis.Position();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._observer.observe(this._toolTip.content[0], observerConfig);\r\n\r\n\t\t\t\tif (!isPivotTooltip){\r\n\t\t\t\t\twindow.addEventListener(\"mouseenter\", this.RepositionOnHorizontalScroll, true);\r\n\t\t\t\t\twindow.addEventListener(\"mouseup\", this.RepositionOnHorizontalScroll, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tonCreated && onCreated();\r\n\t\t\t\tbindOnCreate && this.BindContent();\r\n\t\t\t},\r\n\t\t\tadjustDistance: {\r\n\t\t\t\ttop: 55,\r\n\t\t\t\tright: 5,\r\n\t\t\t\tbottom: 5,\r\n\t\t\t\tleft: 5\r\n\t\t\t},\r\n\t\t\tzIndex: 999999,\r\n\t\t\t...otherOptions\r\n\t\t});\r\n\t\tthis._toolTip.target = $(target);\r\n\t};\r\n\r\n\tprivate RepositionOnHorizontalScroll = (e) => {\r\n\t\tif (!e.target.classList.contains('jBox-content')) { //if I am behind the block \"jBox-content\"\r\n\t\t\tthis.Position()\r\n\t\t}\r\n\t}\r\n\r\n\tpublic GetContentElement = () => {\r\n\t\treturn this._toolTip.content[0]\r\n\t}\r\n\r\n\tprivate _ScrollHandler = () => {\r\n\t\tthis.Close();\r\n\t};\r\n\r\n\tpublic Position = () => {\r\n\t\tthis._toolTip.position();\r\n\t}\r\n\r\n\tpublic Destroy = () => {\r\n\t\tthis._toolTip.destroy();\r\n\t\tconst inModal = this._toolTip.target.closest('.jBox-Modal')\r\n\t\tif (inModal.length) {\r\n\t\t\tinModal.find(\".jBox-content\").off(\"scroll\", this._ScrollHandler)\r\n\t\t}\r\n\t\tthis._observer && this._observer.disconnect();\r\n\r\n\t\twindow.removeEventListener(\"mouseenter\", this.RepositionOnHorizontalScroll, true);\r\n\t\twindow.removeEventListener(\"mouseup\", this.RepositionOnHorizontalScroll, true);\r\n\t}\r\n\r\n\tpublic SetContent = (options: { content?: string, isBindNeed?: boolean } = {}) => {\r\n\t\tlet { content, isBindNeed = true } = options;\r\n\t\tif (!content) {\r\n\t\t\tcontent = this._toolTip.target\r\n\t\t\t\t.parent()\r\n\t\t\t\t.find(\".jBox-content-target\")\r\n\t\t\t\t.first()\r\n\t\t\t\t.data(\"jbox-content\");\r\n\t\t}\r\n\t\tthis._toolTip.setContent($(content));\r\n\r\n\t\tisBindNeed && this.BindContent();\r\n\t}\r\n\r\n\tpublic BindContent = () => {\r\n\t\tko.applyBindings(this._bindComponent, this.GetContentElement());\r\n\t}\r\n\r\n\tpublic Close = () => {\r\n\t\tthis._toolTip.close();\r\n\t}\r\n\r\n\tpublic Open = (targetElem?: any) => {\r\n\t\tconst target: {target: JQuery} = targetElem ? { target: $(targetElem) } : undefined;\r\n\t\tthis._toolTip.open(target);\r\n\t}\r\n\r\n\tpublic Toggle = () => {\r\n\t\tthis._toolTip.toggle();\r\n\t}\r\n\t\r\n\tpublic SetNewWidth(width: number) {\r\n\t\tthis._toolTip.options.width = width;\r\n\t}\r\n\r\n\tstatic GetDropDownId() {\r\n\t\treturn \"jbox-dropdown-\" + uniqueId++;\r\n\t}\r\n}","import * as _ from 'underscore';\r\nimport {ILock} from \"./ILock\";\r\n\r\nexport class LockChain {\r\n private _locks: ILock[];\r\n\r\n constructor() {\r\n this._locks = [];\r\n }\r\n\r\n get Count() {\r\n return this._locks.length;\r\n }\r\n\r\n FindLock(lock: ILock) {\r\n const lockIndex = this.FindLockIndex(lock);\r\n\r\n if (lockIndex > -1) {\r\n return this._locks[lockIndex];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n FindLocks(locks: ILock[]) {\r\n return _.filter(this._locks, lock => _.any(locks, l => l.TableId === lock.TableId && l.RecordId === lock.RecordId));\r\n }\r\n\r\n HasLock(lock: ILock) {\r\n return !!this.FindLock(lock);\r\n }\r\n\r\n AddLock(lock: ILock) {\r\n this._locks.push(lock);\r\n }\r\n\r\n RemoveLock(lock: ILock) {\r\n const lockIndex = this.FindLockIndex(lock);\r\n\r\n if (lockIndex > -1) {\r\n this._locks.splice(lockIndex, 1);\r\n }\r\n }\r\n\r\n RemoveAllLocks() {\r\n this._locks = [];\r\n }\r\n\r\n TakeRootLock() {\r\n return this._locks[0] || null;\r\n }\r\n\r\n TakeAllLocks() {\r\n return this._locks.slice();\r\n }\r\n\r\n HasAnyLock() {\r\n return this._locks.length > 0;\r\n }\r\n\r\n private FindLockIndex(lock: ILock) {\r\n return _.findIndex(this._locks, l => l.TableId === lock.TableId && l.RecordId === lock.RecordId);\r\n }\r\n}\r\n","import {Event} from \"Core/Common/Event\";\r\n\r\nexport class PulseDateTracker extends Event {\r\n\tprivate _pulseDate: Date;\r\n\tprivate _trackInterval: number;\r\n\r\n\tprivate _isActive: boolean;\r\n\r\n\tStart() {\r\n\t\tif (!this._isActive) {\r\n\t\t\tthis._trackInterval = setInterval(() => {\r\n\t\t\t\tconst pulseDateExpired = this._pulseDate <= new Date();\r\n\t\t\t\tif (pulseDateExpired) {\r\n\t\t\t\t\tthis.Stop();\r\n\t\t\t\t\tthis.Trigger(PULSE_TRACKER_EVENTS.PULSE_DATE_EXPIRED);\r\n\t\t\t\t}\r\n\t\t\t}, 1000);\r\n\r\n\t\t\tthis._isActive = true;\r\n\t\t}\r\n\t}\r\n\r\n\tStop() {\r\n\t\tif(this._isActive) {\r\n\t\t\tclearInterval(this._trackInterval);\r\n\t\t\tthis._isActive = false;\r\n\t\t}\r\n\t}\r\n\r\n\tSetPulseDate(pulseDate: Date) {\r\n\t\tthis._pulseDate = pulseDate;\r\n\t}\r\n}\r\n\r\nexport const PULSE_TRACKER_EVENTS = {\r\n\tPULSE_DATE_EXPIRED: \"PulseDateExpired\"\r\n};","import {deserialize} from \"libs/cerialize\";\r\n\r\nexport class RegisteredLock {\r\n\t@deserialize\r\n\tTableId: number;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tPulseDate: string;\r\n}","import { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { RegisteredLock } from \"./RegisteredLock\";\r\n\r\nexport class RegisteredLocks {\r\n constructor() {\r\n this.Successful = [];\r\n }\r\n\r\n @deserializeAs(RegisteredLock)\r\n Successful: RegisteredLock[];\r\n}","import {deserialize} from \"libs/cerialize\";\r\n\r\nexport class ContinuedLock {\r\n\t@deserialize\r\n\tPulseDate: string;\r\n}","import {GenericDeserialize} from \"libs/cerialize\";\r\n\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Request} from \"Core/Common/Request\";\r\n\r\nimport {RegisteredLock} from \"./Models/RegisteredLock\";\r\nimport { RegisteredLocks } from \"./Models/RegisteredLocks\";\r\nimport {NewLock} from \"./Models/NewLock\";\r\nimport { NewLocks } from \"./Models/NewLocks\";\r\nimport {Lock} from \"./Models/Lock\";\r\nimport {ContinuedLock} from \"./Models/ContinuedLock\";\r\n\r\nexport class LockStore {\r\n\tRequestLock(lock: NewLock): P.Promise {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/LockingApi/TryLock',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: lock\r\n\t\t})\r\n\t\t\t.then(registeredLockJson => deferred.resolve(GenericDeserialize(registeredLockJson, RegisteredLock)))\r\n\t\t\t.fail(error => {\r\n\t\t\t\tconst errorMessage = this.GetErrorMessage(error.message);\r\n\t\t\t\tdeferred.reject({message: errorMessage});\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n }\r\n\r\n RequestLocks(locks: NewLocks): P.Promise {\r\n const deferred = P.defer();\r\n \r\n Request.Send({\r\n proxy: {\r\n url: 'api/LockingApi/TryLocks',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: locks\r\n })\r\n .then(registeredLocksJson => deferred.resolve(GenericDeserialize(registeredLocksJson, RegisteredLocks)))\r\n .fail(error => {\r\n const errorMessage = this.GetErrorMessage(error.message);\r\n deferred.reject({ message: errorMessage });\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n\tContinueLocks(lastEventDate: string): P.Promise {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/LockingApi/ContinueLock',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},params: {\r\n\t\t\t\tLastEvent: lastEventDate\r\n\t\t\t}\r\n\t\t})\r\n\t\t\t.then(continuedLockJson => deferred.resolve(GenericDeserialize(continuedLockJson, ContinuedLock)))\r\n\t\t\t.fail(error => {\r\n\t\t\t\tconst errorMessage = this.GetErrorMessage(error.message);\r\n\t\t\t\tdeferred.reject({message: errorMessage});\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tReleaseLocks(locks: Lock[]): P.Promise {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/LockingApi/ReleaseLock',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: {\r\n\t\t\t\tLockModels: locks\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate GetErrorMessage(errorJson: string) {\r\n\t\tconst error = JSON.parse(errorJson);\r\n\t\treturn error.Message;\r\n\t}\r\n}","export class NewLock {\r\n\tconstructor(\r\n\t\tpublic TableId: number,\r\n\t\tpublic RecordId: number) {\r\n\t}\r\n}","export class NewLocks {\r\n\tconstructor(\r\n\t\tpublic TableId: number,\r\n\t\tpublic RecordIds: number[]) {\r\n\t}\r\n}","export class Lock {\r\n\tconstructor(public TableId: number, public RecordId: number) {\r\n\r\n\t}\r\n}","import {Event} from \"Core/Common/Event\";\r\n\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport {CONFIRMATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class ContinueLockConfirmation extends Event {\r\n\tprivate _dialog: ConfirmationDialog;\r\n\r\n\tconstructor(duration: number) {\r\n\t\tsuper();\r\n\r\n\t\tthis._dialog = new ConfirmationDialog({\r\n\t\t\tText: CONFIRMATIONS.CONTINUE,\r\n\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\tTextConfirm: LABELS.YES,\r\n\t\t\tTextDecline: LABELS.NO,\r\n\t\t\tTimeout: duration\r\n\t\t});\r\n\r\n\t\tthis._dialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, this.OnConfirm);\r\n\t\tthis._dialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, this.OnDiscard);\r\n\t\tthis._dialog.On(CONFIRMATION_DIALOG_EVENTS.TIMER_EXPIRED, this, this.OnTimerExpired);\r\n\t}\r\n\r\n\tShow() {\r\n\t\tthis._dialog.Show();\r\n\t}\r\n\r\n\tprivate OnConfirm() {\r\n\t\tthis.Trigger(CONTINUE_LOCK_CONFIRMATION_EVENTS.CONTINUE);\r\n\t}\r\n\r\n\tprivate OnDiscard() {\r\n\t\tthis.Trigger(CONTINUE_LOCK_CONFIRMATION_EVENTS.STOP);\r\n\t}\r\n\r\n\tprivate OnTimerExpired() {\r\n\t\tthis._dialog.Close();\r\n\t\tthis.Trigger(CONTINUE_LOCK_CONFIRMATION_EVENTS.STOP);\r\n\t}\r\n}\r\n\r\nexport const CONTINUE_LOCK_CONFIRMATION_EVENTS = {\r\n\tCONTINUE: \"Continue\",\r\n\tSTOP: \"Stop\"\r\n};","//Common\r\nimport * as moment from \"moment\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\n//State\r\nimport {LockChain} from \"./State/LockChain\";\r\nimport {ILock} from \"./State/ILock\";\r\nimport {PulseDateTracker, PULSE_TRACKER_EVENTS} from \"./State/PulseDateTracker\";\r\n\r\n//Store\r\nimport {LockStore} from \"./Store/LockStore\";\r\n\r\n//Store models\r\nimport {RegisteredLock} from \"./Store/Models/RegisteredLock\";\r\nimport {RegisteredLocks} from \"./Store/Models/RegisteredLocks\";\r\nimport {NewLock} from \"./Store/Models/NewLock\";\r\nimport {NewLocks} from \"./Store/Models/NewLocks\";\r\nimport {Lock} from \"./Store/Models/Lock\";\r\n\r\nimport {\r\n ContinueLockConfirmation,\r\n CONTINUE_LOCK_CONFIRMATION_EVENTS\r\n} from \"./Modals/ContinueConfirmation/ContinueLockConfirmation\";\r\nimport {P} from \"Core/Common/Promise\";\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\n\r\n\r\nexport class LockManager extends Event {\r\n private static _instance: LockManager;\r\n\r\n private _lastEventTime: number;\r\n private _lockRequestDateTime: Date;\r\n private _pulseDate: Date;\r\n\r\n private _chain: LockChain;\r\n private _store: LockStore;\r\n\r\n private _pulseDateTracker: PulseDateTracker;\r\n private _continueConfirmation: ContinueLockConfirmation;\r\n\r\n private constructor() {\r\n super();\r\n\r\n this._chain = new LockChain();\r\n this._store = new LockStore();\r\n\r\n this._pulseDateTracker = new PulseDateTracker();\r\n this._pulseDateTracker.On(PULSE_TRACKER_EVENTS.PULSE_DATE_EXPIRED, this, this.OnPulseDateExpired);\r\n\r\n this._continueConfirmation = new ContinueLockConfirmation(30000);\r\n\r\n this._continueConfirmation.On(CONTINUE_LOCK_CONFIRMATION_EVENTS.CONTINUE, this, () => this.ContinueLock(new Date()));\r\n this._continueConfirmation.On(CONTINUE_LOCK_CONFIRMATION_EVENTS.STOP, this, this.ReleaseAllLocks);\r\n\r\n this.On(LOCK_EVENTS.ADDED, this, this.StartPulseDateTracking);\r\n this.On(LOCK_EVENTS.RELEASED, this, eventArgs => this.OnLockRelease(eventArgs.data));\r\n }\r\n\r\n static get Instance() {\r\n if (!LockManager._instance) {\r\n LockManager._instance = new LockManager();\r\n }\r\n\r\n return LockManager._instance;\r\n }\r\n\r\n TryLock(tableId: number, recordId: number): P.Promise {\r\n const lock: ILock = {TableId: tableId, RecordId: recordId};\r\n\r\n const existingLock = this._chain.FindLock(lock);\r\n if (!existingLock) {\r\n const newLock = new NewLock(lock.TableId, lock.RecordId);\r\n\r\n this._chain.AddLock({\r\n TableId: lock.TableId,\r\n RecordId: lock.RecordId\r\n });\r\n\r\n return this.RequestLock(newLock).fail(() => this._chain.RemoveLock(lock));\r\n } else {\r\n const defer = P.defer();\r\n\r\n setTimeout(() => {\r\n defer.resolve(null);\r\n }, 0);\r\n\r\n return defer.promise();\r\n }\r\n }\r\n\r\n TryLocks(tableId: number, recordIds: number[]): P.Promise {\r\n return this.RequestLocks(new NewLocks(tableId, recordIds))\r\n .then(registeredLocks => {\r\n const ids = [];\r\n _.each(registeredLocks.Successful,\r\n registeredLock => {\r\n const lock: ILock = {TableId: registeredLock.TableId, RecordId: registeredLock.RecordId};\r\n if (!this._chain.HasLock(lock)) {\r\n this._chain.AddLock({\r\n TableId: registeredLock.TableId,\r\n RecordId: registeredLock.RecordId\r\n });\r\n }\r\n ids.push(registeredLock.RecordId);\r\n });\r\n return ids;\r\n });\r\n }\r\n\r\n ReleaseLock(tableId: number, recordId: number) {\r\n const lock = new Lock(tableId, recordId);\r\n\r\n const existingLock = this._chain.FindLock(lock);\r\n if (existingLock && !existingLock.Releasing) {\r\n existingLock.Releasing = true;\r\n\r\n this._store.ReleaseLocks([existingLock]).always(() => {\r\n this.Trigger(LOCK_EVENTS.RELEASED, lock);\r\n });\r\n }\r\n }\r\n\r\n ReleaseLocks(tableId: number, recordIds: number[]) {\r\n const locks = _.map(recordIds, item => new Lock(tableId, item));\r\n const lockToRelease = this._chain.FindLocks(locks).filter(lock => !lock.Releasing);\r\n\r\n lockToRelease.forEach(lock => lock.Releasing = true);\r\n\r\n this._store.ReleaseLocks(lockToRelease);\r\n\r\n _.each(lockToRelease,\r\n releasedLock => {\r\n this.Trigger(LOCK_EVENTS.RELEASED, releasedLock);\r\n });\r\n }\r\n\r\n ReleaseAllLocks() {\r\n const locks = this._chain.TakeAllLocks().map(this.MapToLock);\r\n\r\n if (locks.length > 0) {\r\n this._store.ReleaseLocks(locks);\r\n }\r\n\r\n locks.forEach(lock => this.Trigger(LOCK_EVENTS.RELEASED, lock));\r\n }\r\n\r\n RegisterEvent() {\r\n this._lastEventTime = new Date().getTime();\r\n }\r\n\r\n private StartPulseDateTracking() {\r\n this._pulseDateTracker.SetPulseDate(this._pulseDate);\r\n this._pulseDateTracker.Start();\r\n }\r\n\r\n private StopPulseDateTracking() {\r\n this._pulseDateTracker.Stop();\r\n }\r\n\r\n private OnPulseDateExpired() {\r\n if (this.UserIsActive()) this.ContinueLock(new Date(this._lastEventTime));\r\n else this._continueConfirmation.Show();\r\n }\r\n\r\n private OnLockRelease(lock: Lock) {\r\n this._chain.RemoveLock(lock);\r\n\r\n if (!this._chain.HasAnyLock()) {\r\n this.StopPulseDateTracking();\r\n }\r\n }\r\n\r\n private RequestLock(lock: NewLock): P.Promise {\r\n return this._store.RequestLock(lock)\r\n .then(registeredLock => this.SaveLock(registeredLock))\r\n .fail((error: any) => this.ShowError(error.message));\r\n }\r\n\r\n private RequestLocks(locks: NewLocks): P.Promise {\r\n return this._store.RequestLocks(locks)\r\n .then(registeredLocks => {\r\n this.SaveLocks(registeredLocks);\r\n return registeredLocks;\r\n })\r\n .fail((error: any) => this.ShowError(error.message));\r\n }\r\n\r\n private SaveLock(lock: RegisteredLock) {\r\n this._lockRequestDateTime = new Date();\r\n const newPulseDate = new Date(FormatConverter.CorrectTimezone(lock.PulseDate));\r\n\r\n this._pulseDate = newPulseDate;\r\n\r\n this.Trigger(LOCK_EVENTS.ADDED);\r\n }\r\n\r\n private SaveLocks(locks: RegisteredLocks) {\r\n this._lockRequestDateTime = new Date();\r\n\r\n _.each(locks.Successful, lock => {\r\n const newPulseDate = new Date(FormatConverter.CorrectTimezone(lock.PulseDate));\r\n this._pulseDate = newPulseDate;\r\n this.Trigger(LOCK_EVENTS.ADDED);\r\n })\r\n\r\n }\r\n\r\n private UserIsActive() {\r\n return this._lastEventTime >= this._lockRequestDateTime.getTime();\r\n }\r\n\r\n private ContinueLock(lastEventTime: Date) {\r\n const lastEventDate = FormatConverter.ConvertToUTC(moment(lastEventTime).format(), '');\r\n this._store.ContinueLocks(lastEventDate)\r\n .then(continuedLock => {\r\n this._lockRequestDateTime = new Date();\r\n this._pulseDate = new Date(FormatConverter.CorrectTimezone(continuedLock.PulseDate));\r\n this.StartPulseDateTracking();\r\n\r\n this.Trigger(LOCK_EVENTS.CONTINUED);\r\n }).fail((error: any) => this.ShowError(error.message));\r\n }\r\n\r\n private MapToLock(lock: ILock) {\r\n return new Lock(lock.TableId, lock.RecordId);\r\n }\r\n\r\n private ShowError(error: string) {\r\n new Notifier().Failed(error);\r\n }\r\n}\r\n\r\nexport const LOCK_EVENTS = {\r\n ADDED: 'Added',\r\n CONTINUED: 'Continued',\r\n RELEASED: 'Released'\r\n};","export const EVENTS = {\r\n\tCHANGE: 'CHANGE'\r\n};","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Components/Paginator/Constants\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport Template from 'Core/Components/Paginator/Templates/Paginator.html';\r\nimport NextPrevTemplate from 'Core/Components/Paginator/Templates/NextPrevPaginator.html';\r\n\r\nko.templates['Core/Components/Paginator/Templates/Paginator'] = Template;\r\nko.templates['Core/Components/Paginator/Templates/NextPrevPaginator'] = NextPrevTemplate;\r\n\r\nexport class Paginator extends Event {\r\n private _title: KnockoutComputed;\r\n\r\n private _currentPage: KnockoutObservable;\r\n private _totalRecords: KnockoutObservable;\r\n private _selectedPage: KnockoutObservable;\r\n private _recordsPerPage: KnockoutObservable;\r\n private _pagesCount: KnockoutObservable;\r\n private _isReady: KnockoutObservable;\r\n private _isSearch: KnockoutObservable;\r\n\r\n private _enableNext: KnockoutComputed;\r\n private _enablePrevious: KnockoutComputed;\r\n private _titleWidth: KnockoutComputed;\r\n private _hasFocus: KnockoutObservable;\r\n private _nextPrevTemplate: KnockoutObservable;\r\n private _skipChangeTrigger: KnockoutObservable;\r\n private _updateTimeout: any;\r\n\r\n private _labels = LABELS;\r\n\r\n constructor(private tabindex: number = -1, nextPrevTemplate: boolean = false) {\r\n super();\r\n\r\n this._currentPage = ko.observable(1);\r\n this._pagesCount = ko.observable(1);\r\n this._totalRecords = ko.observable(0);\r\n this._selectedPage = ko.observable(\"\");\r\n this._recordsPerPage = ko.observable(null);\r\n this._isReady = ko.observable(false);\r\n this._hasFocus = ko.observable(false);\r\n this._isSearch = ko.observable(false);\r\n this._nextPrevTemplate = ko.observable(nextPrevTemplate);\r\n this._skipChangeTrigger = ko.observable(false);\r\n\r\n this._title = ko.computed({\r\n owner: this,\r\n\r\n read: () => {\r\n let pagesCount = Math.ceil(this._totalRecords() / this._recordsPerPage());\r\n\r\n if (isNaN(pagesCount) || pagesCount === Infinity) {\r\n pagesCount = 1;\r\n }\r\n\r\n this._pagesCount(pagesCount);\r\n this._isReady(pagesCount !== 0 && pagesCount !== 1);\r\n\r\n return ` ${this._currentPage()} ${this._labels.OF} ${pagesCount} `;\r\n }\r\n });\r\n\r\n this._titleWidth = ko.computed({\r\n owner: this,\r\n read: () => `${(this._title().length + 1) * 7}px`\r\n });\r\n\r\n this._enableNext = ko.computed({\r\n owner: this,\r\n read: () => this._currentPage() < this._pagesCount()\r\n });\r\n\r\n this._enablePrevious = ko.computed({\r\n owner: this,\r\n read: () => this._currentPage() > 1\r\n });\r\n\r\n this._currentPage.subscribe(() => {\r\n this.DelayedUpdate();\r\n });\r\n\r\n this.AddEvent(EVENTS.CHANGE);\r\n }\r\n\r\n DelayedUpdate() {\r\n if (this._updateTimeout) clearTimeout(this._updateTimeout);\r\n\r\n if (this.SkipChangeTrigger) {\r\n return;\r\n }\r\n\r\n this._updateTimeout = setTimeout(() => {\r\n this.ChangeTrigger();\r\n }, 500);\r\n }\r\n\r\n GetIsReady(): boolean {\r\n return this._isReady();\r\n }\r\n\r\n set TotalRecords(value: number) {\r\n this._totalRecords(value);\r\n }\r\n\r\n @enumerable get TotalRecords(): number {\r\n return this._totalRecords();\r\n }\r\n\r\n @enumerable get PageNumber(): number {\r\n return this._currentPage();\r\n }\r\n\r\n set PageNumber(page: number) {\r\n this._currentPage(page);\r\n }\r\n\r\n @enumerable get SkipChangeTrigger(): boolean {\r\n return this._skipChangeTrigger();\r\n }\r\n\r\n set SkipChangeTrigger(shouldSkip: boolean) {\r\n this._skipChangeTrigger(shouldSkip);\r\n }\r\n\r\n @enumerable get RecordsPerPage(): number {\r\n return this._recordsPerPage();\r\n }\r\n\r\n set RecordsPerPage(value: number) {\r\n this._recordsPerPage(value);\r\n }\r\n\r\n NavigationButtonClick(navigationType) {\r\n if (this._enablePrevious()) {\r\n if (navigationType === 'firstPage') {\r\n this._currentPage(1);\r\n }\r\n\r\n if (navigationType === 'previousPage') {\r\n this._currentPage(this._currentPage() - 1);\r\n }\r\n }\r\n\r\n if (this._enableNext()) {\r\n if (navigationType === 'nextPage') {\r\n this._currentPage(this._currentPage() + 1);\r\n }\r\n\r\n if (navigationType === 'lastPage') {\r\n this._currentPage(this._pagesCount());\r\n }\r\n }\r\n\r\n this._selectedPage(\"\");\r\n }\r\n\r\n ChangeTrigger() {\r\n this.Trigger(EVENTS.CHANGE, {pageNumber: this._currentPage(), recordsPerPage: this._recordsPerPage()});\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/Paginator/Templates/Paginator';\r\n }\r\n\r\n GetNextPrevTemplateName(){\r\n return 'Core/Components/Paginator/Templates/NextPrevPaginator';\r\n }\r\n\r\n EnterKey() {\r\n let selectedPage = parseInt(this._selectedPage());\r\n\r\n if (!isNaN(selectedPage) && Math.abs(selectedPage) <= this._pagesCount()) {\r\n selectedPage = selectedPage === 0 ? 1 : Math.abs(selectedPage);\r\n this._currentPage(selectedPage);\r\n this._hasFocus(false);\r\n }\r\n\r\n this._selectedPage(\"\");\r\n }\r\n\r\n Reset() {\r\n this._currentPage(1);\r\n }\r\n}","import { P } from \"Core/Common/Promise\";\r\nimport { Request, IRequestOptions } from \"Core/Common/Request\";\r\n\r\nimport { IPathRunnerRequestModel } from \"Core/Components/PathRunner/Models/Request/IPathRunnerRequestModel\";\r\nimport { PathRunnerResponseModel } from \"Core/Components/PathRunner/Models/Response/PathRunnerResponseModel\";\r\nimport { PathRunnerRecordModel } from \"Core/Components/PathRunner/Models/Response/PathRunnerRecordModel\";\r\n\r\nexport class PathRunnerStore {\r\n\tstatic GetData(requestModel: IPathRunnerRequestModel): P.Promise {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestOptions: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/PathRunnerApi/GetData',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: requestModel\r\n\t\t}\r\n\r\n\t\tRequest.Send(requestOptions)\r\n\t\t\t.then(response => this.ResolveResponse(response, deferredResult))\r\n\t\t\t.fail(() => this.ResolveFail(deferredResult, \"Error getting path runner data\"));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetLinkedRecords(requestModel: IPathRunnerRequestModel): P.Promise {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestOptions: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/PathRunnerApi/GetLinkedRecords',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: requestModel\r\n\t\t}\r\n\r\n\t\tRequest.Send(requestOptions)\r\n\t\t\t.then(response => this.ResolveResponse(response, deferredResult))\r\n\t\t\t.fail(() => this.ResolveFail(deferredResult, \"Error getting linked records\"));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tprivate static ResolveResponse(response, deferredResult: P.Deferred) {\r\n\t\tif (response.IsSuccessfull) {\r\n\t\t\tdeferredResult.resolve(response.ResultList || response.ResultObject);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.ResolveFail(deferredResult, response.ErrorMessage);\r\n\t}\r\n\r\n\tprivate static ResolveFail(deferredResult: P.Deferred, errorMessage: string) {\r\n\t\tconst error = { message: errorMessage };\r\n\t\tdeferredResult.reject(error);\r\n\t}\r\n}","//Models\r\nimport { PathRunnerNodeViewModel } from \"Core/Components/PathRunner/Models/View/PathRunnerNodeViewModel\";\r\n\r\nexport class PathRunnerViewModel {\r\n\tprivate _nodes: PathRunnerNodeViewModel[];\r\n\r\n\tCurrentNode: PathRunnerNodeViewModel;\r\n\t\r\n\tconstructor() {\r\n\t\tthis._nodes = [];\r\n\t}\r\n\r\n\tAdd(node: PathRunnerNodeViewModel) {\r\n\t\tthis._nodes.push(node);\r\n\t}\r\n\r\n\tAddRange(nodes: PathRunnerNodeViewModel[]) {\r\n\t\tnodes.forEach(this.Add.bind(this));\r\n\t}\r\n\r\n\tGetNodes() {\r\n\t\treturn this._nodes;\r\n\t}\r\n\r\n\tAddEllipsisTooltip(givenNodes, data) {\r\n\t\tgivenNodes.forEach(node => {\r\n\t\t\tif (node.Guid === data.node.original.record.Guid) {\r\n\t\t\t\tnode.AddEllipsisTooltip(data);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (node._children && node._children.length) {\r\n\t\t\t\tthis.AddEllipsisTooltip(node._children, data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tDestroyEllipsisTooltip(givenNodes, data) {\r\n\t\tgivenNodes.forEach(node => {\r\n\t\t\tif (node.Guid === data.node.original.record.Guid) {\r\n\t\t\t\tnode.DestroyEllipsisTooltip();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (node._children && node._children.length) {\r\n\t\t\t\tthis.DestroyEllipsisTooltip(node._children, data);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tGetNode(id: string, callback: (matchedNode: PathRunnerNodeViewModel) => void) {\r\n\t\tthis._nodes.forEach(node => node.GetNode(id, callback));\r\n\t}\r\n\r\n\tGetNodeByRecordId(id: number, callback: (matchedNode: PathRunnerNodeViewModel) => void) {\r\n\t\tthis._nodes.forEach(node => node.GetNodeByRecordId(id, callback));\r\n\t}\r\n\r\n\tSetInitialNode(initialNodeId: number) {\r\n\t\tthis._nodes.forEach(node => node.SetInitialNode(initialNodeId));\r\n\r\n\t\tif (this.CurrentNode) {\r\n\t\t\tthis.CurrentNode.SetInitialNode(initialNodeId);\r\n\t\t}\r\n\t}\r\n\r\n\tToJson() {\r\n\t\treturn this._nodes.map(node => node.ToJson());\r\n\t}\r\n}","// Module\nvar code = \"
        \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport { Guid } from \"Core/Common/Guid\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport { LifeStatusGroups, LifeStatusGroupEnum } from \"Core/Common/Enums/LifeStatusGroups\";\r\nimport {EllipsisTooltipExtention} from \"Core/KnockoutExtentions/EllipsisTooltipExtention\";\r\n\r\nimport ItemNameTemplate from \"Core/Components/PathRunner/Templates/ItemNameTemplate.html\";\r\nko.templates[\"Core/Components/PathRunner/Templates/ItemNameTemplate\"] = ItemNameTemplate;\r\n\r\nexport class PathRunnerNodeViewModel {\r\n\tGuid: string;\r\n\tId: number;\r\n\tName: string;\r\n\tTranslatedName: string;\r\n\tTypeId: number;\r\n\tTypeName: string;\r\n    TypeTranslatedName: string;\r\n    LifeStatusId: number;\r\n\tLifeStatusName: string;\r\n\tLifeStatusGroup: number;\r\n\tIsSubject: boolean;\r\n\tIsInitialNode: boolean;\r\n\tHasChildren: boolean;\r\n\r\n\tpublic _children: PathRunnerNodeViewModel[];\r\n\tprivate _tooltip: jBox;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor() {\r\n\t\tthis.Guid = Guid.NewGuid();\r\n\t\tthis._children = [];\r\n\t}\r\n\r\n\tget Children() {\r\n\t\treturn this._children;\r\n\t}\r\n\r\n\tGetTranslatedName() {\r\n\t\treturn this.TranslatedName ? this.TranslatedName : this.Name;\r\n\t}\r\n\r\n    GetTypeName() {\r\n        return this.TypeTranslatedName ? this.TypeTranslatedName : this.TypeName ? this.TypeName : '-';\r\n    }\r\n\r\n\tGetTemplateName() {\r\n\t\treturn \"Core/Components/PathRunner/Templates/ItemTemplate\";\r\n\t}\r\n\r\n\tAfterRender() {\r\n\r\n\t}\r\n\r\n\tAdd(node: PathRunnerNodeViewModel) {\r\n\t\tthis._children.push(node);\r\n\t}\r\n\r\n\tAddRange(nodes: PathRunnerNodeViewModel[]) {\r\n\t\tnodes.forEach(this.Add.bind(this));\r\n\t}\r\n\r\n\tGetNode(id: string, callback: (matchedNode: PathRunnerNodeViewModel) => void) {\r\n\t\tif (this.Guid === id) {\r\n\t\t\tcallback(this);\r\n\t\t}\r\n\r\n\t\tthis._children.forEach(child => child.GetNode(id, callback));\r\n\t}\r\n\r\n\tGetNodeByRecordId(id: number, callback: (matchedNode: PathRunnerNodeViewModel) => void) {\r\n\t\tif (this.Id === id) {\r\n\t\t\tcallback(this);\r\n\t\t}\r\n\r\n\t\tthis._children.forEach(child => child.GetNodeByRecordId(id, callback));\r\n\t}\r\n\r\n\tSetInitialNode(initialNodeId: number) {\r\n\t\tthis.IsInitialNode = this.Id === initialNodeId;\r\n\t\tthis._children.forEach(childRecord => childRecord.SetInitialNode(initialNodeId));\r\n\t}\r\n\r\n\tAddEllipsisTooltip(data) {\r\n\t\tthis._tooltip = EllipsisTooltipExtention.CreateEllipsisTooltipForPathRunner(data.node.original.record);\r\n\t}\r\n\r\n\tDestroyEllipsisTooltip() {\r\n\t\tif (this._tooltip instanceof jBox) {\r\n\t\t\tthis._tooltip.destroy();\r\n\t\t}\r\n\t}\r\n\r\n\tIsRetired() {\r\n\t\treturn this.LifeStatusName === 'Disabled' ||\r\n\t\t\t(this.LifeStatusGroup && LifeStatusGroups.GetLifeStatusGroup(this.LifeStatusGroup) === LifeStatusGroupEnum.Retired);\r\n\t}\r\n\r\n\tToJson() {\r\n\t\tconst nestedNodes = this._children.map(child => child.ToJson());\r\n\t\tlet children: object[] | boolean;\r\n\r\n\t\tif (this.IsSubject || nestedNodes.length > 0) {\r\n\t\t\tchildren = nestedNodes;\r\n\t\t} else {\r\n\t\t\tchildren = this.HasChildren;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tid: this.Guid,\r\n\t\t\ttext: (ko as any).renderTemplateXHtml(ItemNameTemplate, { TypeName: this.GetTypeName(), Name: this.GetTranslatedName(), Tooltip: this._labels.RECORD_DISABLED, IsRetired: this.IsRetired(), IsInitialNode: this.IsInitialNode, Guid: this.Guid }),\r\n\t\t\tchildren: children,\r\n\t\t\trecord: this\r\n\t\t};\r\n\t}\r\n}","import {PathRunnerRecordModel} from \"Core/Components/PathRunner/Models/Response/PathRunnerRecordModel\";\r\nimport {PathRunnerNodeViewModel} from \"Core/Components/PathRunner/Models/View/PathRunnerNodeViewModel\";\r\n\r\nexport class PathRunnerNodeViewModelMapping {\r\n\tstatic MapFromResponse(record: PathRunnerRecordModel) {\r\n\t\tif (!record) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst nodeViewModel = new PathRunnerNodeViewModel();\r\n\r\n\t\tnodeViewModel.Id = record.Id;\r\n\t\tnodeViewModel.Name = record.Name || \"-\";\r\n\t\tnodeViewModel.TranslatedName = record.TranslatedName;\r\n\t\tnodeViewModel.TypeId = record.TypeId;\r\n\t\tnodeViewModel.TypeName = record.TypeName;\r\n        nodeViewModel.TypeTranslatedName = record.TypeTranslatedName;\r\n        nodeViewModel.LifeStatusId = record.LifeStatusId;\r\n\t\tnodeViewModel.LifeStatusName = record.LifeStatusName;\r\n\t\tnodeViewModel.LifeStatusGroup = record.LifeStatusGroup;\r\n\t\tnodeViewModel.IsSubject = record.IsSubject;\r\n\t\tnodeViewModel.HasChildren = record.HasChildren;\r\n\r\n\t\tconst children = record.Children.map(childRecord => this.MapFromResponse(childRecord));\r\n\t\tnodeViewModel.AddRange(children);\r\n\r\n\t\treturn nodeViewModel;\r\n\t}\r\n\r\n\tstatic Copy(record: PathRunnerNodeViewModel) {\r\n\t\tconst nodeViewModel = new PathRunnerNodeViewModel();\r\n\r\n\t\tnodeViewModel.Id = record.Id;\r\n\t\tnodeViewModel.Name = record.Name;\r\n\t\tnodeViewModel.TranslatedName = record.TranslatedName;\r\n\t\tnodeViewModel.TypeId = record.TypeId;\r\n\t\tnodeViewModel.TypeName = record.TypeName;\r\n        nodeViewModel.TypeTranslatedName = record.TypeTranslatedName;\r\n        nodeViewModel.LifeStatusId = record.LifeStatusId;\r\n\t\tnodeViewModel.LifeStatusName = record.LifeStatusName;\r\n\t\tnodeViewModel.LifeStatusGroup = record.LifeStatusGroup;\r\n\t\tnodeViewModel.IsSubject = record.IsSubject;\r\n\t\tnodeViewModel.IsInitialNode = record.IsInitialNode;\r\n\r\n\t\tconst children = record.Children.map(childRecord => this.Copy(childRecord));\r\n\t\tnodeViewModel.AddRange(children);\r\n\r\n\t\treturn nodeViewModel;\r\n\t}\r\n}","import {PathRunnerResponseModel} from \"Core/Components/PathRunner/Models/Response/PathRunnerResponseModel\";\r\nimport {PathRunnerViewModel} from \"Core/Components/PathRunner/Models/View/PathRunnerViewModel\";\r\nimport {PathRunnerNodeViewModelMapping} from \"Core/Components/PathRunner/Mappings/PathRunnerNodeViewModelMapping\";\r\n\r\nexport class PathRunnerViewModelMapping {\r\n\tstatic MapFromResponse(responseModel: PathRunnerResponseModel) {\r\n\t\tlet viewModel = new PathRunnerViewModel();\r\n\r\n\t\tlet roots = responseModel.Roots.map(root => PathRunnerNodeViewModelMapping.MapFromResponse(root));\r\n\r\n\t\tviewModel.AddRange(roots);\r\n\t\treturn viewModel;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport 'tree';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\"\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Guid} from 'Core/Common/Guid';\r\n\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {Tooltip} from \"Core/Common/Tooltip\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nimport {PathRunnerStore} from \"Core/Components/PathRunner/Stores/PathRunnerStore\";\r\nimport {PathRunnerResponseModel} from \"Core/Components/PathRunner/Models/Response/PathRunnerResponseModel\";\r\nimport {PathRunnerNodeViewModel} from \"Core/Components/PathRunner/Models/View/PathRunnerNodeViewModel\";\r\nimport {PathRunnerViewModel} from \"Core/Components/PathRunner/Models/View/PathRunnerViewModel\";\r\nimport {EllipsisTooltipExtention} from \"Core/KnockoutExtentions/EllipsisTooltipExtention\";\r\n\r\nimport {PathRunnerViewModelMapping} from \"Core/Components/PathRunner/Mappings/PathRunnerViewModelMapping\";\r\nimport {PathRunnerNodeViewModelMapping} from \"Core/Components/PathRunner/Mappings/PathRunnerNodeViewModelMapping\";\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\n\r\nimport Template from \"Core/Components/PathRunner/Templates/Template.html\";\r\nimport ItemTemplate from \"Core/Components/PathRunner/Templates/ItemTemplate.html\";\r\nimport SpecialScreenIconTemplate from \"Core/Components/PathRunner/Templates/SpecialScreenIconTemplate.html\";\r\n\r\n\r\nko.templates[\"Core/Components/PathRunner/Templates/Template\"] = Template;\r\nko.templates[\"Core/Components/PathRunner/Templates/ItemTemplate\"] = ItemTemplate;\r\nko.templates[\"Core/Components/PathRunner/Templates/SpecialScreenIconTemplate\"] = SpecialScreenIconTemplate;\r\n\r\nexport class PathRunnerUnit {\r\n    private _entityId: number;\r\n    private _recordId: KnockoutObservable;\r\n    private _expanded: KnockoutObservable;\r\n    private _isSpecialScreenExist: KnockoutObservable;\r\n    private _model: KnockoutObservable;\r\n    private _userVars: UserVarsManager;\r\n    private _labels = LABELS;\r\n\r\n    private _el: HTMLElement;\r\n    private _pathRunner: HTMLElement;\r\n    private _pathRunnerId: string;\r\n    private _treeRendered: boolean;\r\n    private _dataLoaded: KnockoutObservable;\r\n    private _pathRunnerNodes: any;\r\n\r\n    private _tooltip: Tooltip;\r\n    private _jbox: jBox;\r\n\r\n    constructor(entityId: number, isSpecialScreenExist: boolean) {\r\n        this._pathRunnerId = Guid.NewGuid();\r\n        this._entityId = entityId;\r\n        this._recordId = ko.observable(null);\r\n        this._model = ko.observable(null);\r\n\r\n        let isExpanded = this.GetSettingsFromLockStorage();\r\n        this._expanded = ko.observable(isExpanded);\r\n        this._isSpecialScreenExist = ko.observable(isSpecialScreenExist);\r\n        this._dataLoaded = ko.observable(false);\r\n        this._pathRunnerNodes = [];\r\n\r\n        this._tooltip = null;\r\n\r\n        this._dataLoaded.subscribe(dataLoaded => {\r\n            if (dataLoaded) {\r\n                this.RenderTree();\r\n            }\r\n        });\r\n    }\r\n\r\n    ExpandCollapse() {\r\n        this._expanded(!this._expanded());\r\n        this.SetSettingsToLockStorage();\r\n    }\r\n\r\n    OpenSpecialScreen() {\r\n        PubSub.publish(PUB_SUB_EVENTS.GO_TO_SCREEN_BY_TYPE, { EntityId: this._entityId, ScreenType: ScreenTypes.SpecialScreen, IsOpenInModal: false });\r\n    }\r\n\r\n    GetTemplateName() {\r\n        return \"Core/Components/PathRunner/Templates/Template\";\r\n    }\r\n\r\n    GetSpecialScreenIconTemplate() {\r\n        return \"Core/Components/PathRunner/Templates/SpecialScreenIconTemplate\";\r\n    }\r\n\r\n    AfterRender(el: HTMLElement[]) {\r\n        this._pathRunner = document.getElementById(this._pathRunnerId);\r\n        this._el = el[0];\r\n        this.RenderTree();\r\n    }\r\n\r\n    AddEllipsisTooltip(data) {\r\n        this._jbox = EllipsisTooltipExtention.CreateEllipsisTooltipForPathRunner(data.node.original.record);\r\n    }\r\n\r\n    LoadNewData(recordId: number) {\r\n        const deferred = P.defer();\r\n\r\n        const pathRunnerParentsAmount = GlobalManager.Instance.GetGlobal(GLOBALS.PATH_RUNNER_PARENTS_AMOUNT);\r\n        if (parseInt(pathRunnerParentsAmount) === 0) {\r\n            this.Clear();\r\n            return deferred.promise();\r\n        }\r\n\r\n        this._dataLoaded(false);\r\n        this._treeRendered = false;\r\n\r\n        this._recordId(recordId);\r\n\r\n        if (recordId) {\r\n            PathRunnerStore.GetData({EntityId: this._entityId, RecordId: recordId})\r\n                .then((data) => {\r\n                    this.DataLoaded(data);\r\n                    deferred.resolve(null);\r\n                })\r\n                .fail(() => {\r\n                    this.DataLoadFailed.bind(this)\r\n                    deferred.resolve(null);\r\n                });\r\n        }\r\n\r\n        return deferred.promise();\r\n    }\r\n\r\n    Clear() {\r\n        if (this._model()) {\r\n            this._model(null);\r\n        }\r\n    }\r\n\r\n    private RenderTree() {\r\n        const $treeRoot = $(this._el)\r\n            .next()\r\n            .find('.path-runner-body');\r\n\r\n        $treeRoot.jstree('destroy');\r\n        $treeRoot.jstree({\r\n            state: {key: 'path-runner-state'},\r\n            plugins: ['state'],\r\n            core: {\r\n                animation: false,\r\n                data: this.ExtendTree.bind(this),\r\n                multiple: false,\r\n                themes: {\r\n                    icons: false\r\n                }\r\n            }\r\n        });\r\n\r\n        $treeRoot\r\n            .on('ready.jstree', (event, data) => this.OpenCurrentNode(data))\r\n            .on('activate_node.jstree ', (event, data) => this.Navigate(data))\r\n            .on('hover_node.jstree', (event, data) => {\r\n                this._model().AddEllipsisTooltip(this._pathRunnerNodes, data);\r\n            })\r\n            .on('dehover_node.jstree', (event, data) => {\r\n                this._model().DestroyEllipsisTooltip(this._pathRunnerNodes, data);\r\n            })\r\n    }\r\n\r\n    private ExtendTree(node, callback) {\r\n        if (node.id === '#') {\r\n            if (this._model()) {\r\n                callback.call(node, this._model().ToJson());\r\n            }\r\n        } else {\r\n            this.LoadLinkedRecords(node)\r\n                .then(linkedRecords => this.AddLinkedRecords(linkedRecords, node, callback))\r\n                .fail(this.DataLoadFailed.bind(this));\r\n        }\r\n    }\r\n\r\n    private OpenCurrentNode(data) {\r\n        const currentRecord = this._model().CurrentNode;\r\n        if (currentRecord) {\r\n            const currentNode = currentRecord.Guid;\r\n            if (currentRecord.IsSubject) {\r\n                data.instance._open_to(currentNode);\r\n                data.instance.open_node(currentNode);\r\n                data.instance.disable_node(currentNode);\r\n            }\r\n        } else {\r\n            this._model().GetNodeByRecordId(this._recordId(),\r\n                record => {\r\n                    if (!this._model().CurrentNode && record.IsSubject) {\r\n                        if (record.IsSubject) {\r\n                            data.instance._open_to(record.Guid);\r\n                            data.instance.open_node(record.Guid);\r\n                            data.instance.disable_node(record.Guid);\r\n                        }\r\n                    }\r\n                });\r\n        }\r\n    }\r\n\r\n    private SetSettingsToLockStorage() {\r\n        this._userVars.SetPathRunnerSettings({\r\n            Place: this._entityId.toString(),\r\n            Expanded: this._expanded()\r\n        });\r\n    }\r\n\r\n    private GetSettingsFromLockStorage(): boolean {\r\n        if (!this._userVars) this._userVars = UserVarsManager.Instance;\r\n\r\n        let lockStorageSettings = this._userVars.GetPathRunnerSettings(this._entityId.toString());\r\n        return lockStorageSettings ? lockStorageSettings.Expanded : false;\r\n    }\r\n\r\n    private DataLoaded(responseModel: PathRunnerResponseModel) {\r\n        if (responseModel) {\r\n            const data = PathRunnerViewModelMapping.MapFromResponse(responseModel);\r\n            this._model(data);\r\n        } else {\r\n            this.Clear();\r\n        }\r\n\r\n        if (this._model()) {\r\n            this._model().GetNodeByRecordId(this._recordId(),\r\n                record => {\r\n                    if (!this._model().CurrentNode && record.IsSubject) {\r\n                        this._model().CurrentNode = record;\r\n                    }\r\n                });\r\n\r\n            this._model().SetInitialNode(this._recordId());\r\n            this._pathRunnerNodes = this._model().GetNodes();\r\n\r\n            this._treeRendered = true;\r\n            this._dataLoaded(true);\r\n        }\r\n    }\r\n\r\n    IsPathRunner(): boolean {\r\n        return this._dataLoaded();\r\n    }\r\n\r\n    IsSpecialScreenExist(): boolean {\r\n        return this._isSpecialScreenExist();\r\n    }\r\n\r\n    private DataLoadFailed(error) {\r\n        new Notifier().Failed(error.message);\r\n    }\r\n\r\n    private Navigate(data) {\r\n        const record = data.node.original.record;\r\n\r\n        if (record.Guid !== this._model().CurrentNode.Guid) {\r\n            data.instance.enable_node(this._model().CurrentNode.Guid);\r\n            this._model().CurrentNode = record;\r\n            PubSub.publish('PATH_RUNNER_NAVIGATE', {\r\n                EntityId: this._entityId,\r\n                RecordId: record.Id,\r\n                RecordTypeId: record.TypeId,\r\n                IsOpenInModal: false,\r\n                LifeStatusName: record.LifeStatusName\r\n            });\r\n        }\r\n\r\n        if ($(\".path-runner-tooltip\").length) {\r\n            $(\".path-runner-tooltip\").remove();\r\n        }\r\n\r\n    }\r\n\r\n    private LoadLinkedRecords(node) {\r\n        const deferredResult = P.defer();\r\n\r\n        const record = node.original.record;\r\n        let nestedNodes = [];\r\n\r\n        this._model().GetNodeByRecordId(record.Id, existingRecord => {\r\n            if (existingRecord.Children.length > 0 && nestedNodes.length === 0) {\r\n                nestedNodes = existingRecord.Children.map(nestedNode => PathRunnerNodeViewModelMapping.Copy(nestedNode));\r\n            }\r\n        });\r\n\r\n        if (nestedNodes.length === 0) {\r\n            PathRunnerStore.GetLinkedRecords({EntityId: this._entityId, RecordId: record.Id})\r\n                .then(linkedRecords => {\r\n                    nestedNodes = linkedRecords.map(nestedNode => PathRunnerNodeViewModelMapping.MapFromResponse(nestedNode));\r\n                    deferredResult.resolve(nestedNodes);\r\n                })\r\n                .fail(error => deferredResult.reject(error));\r\n        } else {\r\n            deferredResult.resolve(nestedNodes);\r\n        }\r\n\r\n        return deferredResult.promise();\r\n    }\r\n\r\n    private AddLinkedRecords(linkedRecords: PathRunnerNodeViewModel[], node, callback) {\r\n        const nestedNodes = linkedRecords.map(nestedNode => nestedNode.ToJson());\r\n        this._model().GetNode(node.id, record => {\r\n            record.AddRange(linkedRecords);\r\n        });\r\n        callback.call(node, nestedNodes);\r\n    }\r\n}","// Module\nvar code = \"  
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
  • \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","//Units\r\nimport { PathRunnerUnit } from \"Core/Components/PathRunner/PathRunnerUnit\";\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\n\r\nexport class PathRunner {\r\n\tprivate static _instance: PathRunner;\r\n\tprivate static _initialized: boolean;\r\n\r\n\tprivate _entityToUnit: { [enityId: number]: PathRunnerUnit };\r\n\r\n\tconstructor() {\r\n\t\tif (PathRunner._initialized) {\r\n\t\t\tthrow new Error(\"Path runner already initialized\");\r\n\t\t}\r\n\r\n\t\tPathRunner._initialized = true;\r\n\t\tthis._entityToUnit = {};\r\n\t}\r\n\r\n\tstatic get Instance() {\r\n\t\tif (PathRunner._instance) {\r\n\t\t\treturn PathRunner._instance;\r\n\t\t}\r\n\r\n\t\tPathRunner._instance = new PathRunner();\r\n\r\n\t\treturn PathRunner._instance;\r\n\t}\r\n\r\n GetUnit(entityId: number, isSpecialScreenExist: boolean) {\r\n let unit = this._entityToUnit[entityId];\r\n\r\n if (!unit) {\r\n unit = new PathRunnerUnit(entityId, isSpecialScreenExist);\r\n this._entityToUnit[entityId] = unit;\r\n\t\t}\r\n\r\n\t\treturn unit;\r\n\t}\r\n}","import {MemoItemModel} from \"./MemoItemModel\";\r\nimport {MemoOperationModel} from \"./MemoOperationModel\";\r\n\r\nexport class FlowFolderMemosModel {\r\n IsMemoTranslatable: boolean;\r\n MemoItems: MemoItemModel[];\r\n FlowMemosOperations: MemoOperationModel[];\r\n\r\n constructor() {\r\n this.MemoItems = [];\r\n this.FlowMemosOperations = [];\r\n }\r\n}","import { deserialize } from \"libs/cerialize\";\r\nimport {IconModel} from \"../../../../Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class FlowItemModel {\r\n\t@deserialize\r\n\tEntityId:number;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tIcon: IconModel;\r\n\r\n\t@deserialize\r\n\tFlowOperationId: number;\r\n}","import { deserialize } from \"libs/cerialize\";\r\n\r\nexport class FlowOperationModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import { deserializeAs } from \"libs/cerialize\";\r\nimport {FlowItemModel} from \"./FlowItemModel\";\r\nimport {FlowOperationModel} from \"./FlowOperationModel\";\r\n\r\nexport class FlowFolderModel {\r\n\r\n\t@deserializeAs(FlowItemModel)\r\n\tFlowItems: FlowItemModel[];\r\n\r\n\t@deserializeAs(FlowOperationModel)\r\n\tFlowOperations: FlowOperationModel[];\r\n\r\n\tconstructor() {\r\n\t\tthis.FlowItems = [];\r\n\t\tthis.FlowOperations = [];\r\n\t}\r\n}","import { deserializeAs } from \"libs/cerialize\";\r\nimport {LifeStatusesGeneralModel} from \"../../../../Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel\";\r\nimport {FlowFolderModel} from \"./FlowFolderModel\";\r\n\r\nexport class ProgressBarInfoModel {\r\n\t@deserializeAs(LifeStatusesGeneralModel)\r\n\tNextLifeStatuses: LifeStatusesGeneralModel;\r\n\r\n\t@deserializeAs(FlowFolderModel)\r\n\tFlowFolder: FlowFolderModel;\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {ProgressBarInfoModel} from \"../Models/Response/ProgressBarInfoModel\";\r\nimport type {ICreateFlowRecordRequestModel} from \"../Models/Request/ICreateFlowRecordRequestModel\";\r\nimport type {IUpdateFlowRecordRequestModel} from \"../Models/Request/IUpdateFlowRecordRequestModel\";\r\nimport type {IDeleteFlowRecordRequestModel} from \"../Models/Request/IDeleteFlowRecordRequestModel\";\r\nimport type {IGetProgressBarInfoRequestModel} from \"../Models/Request/IGetProgressBarInfoRequestModel\";\r\nimport type {IGetMemosRequestModel} from \"../Models/Request/IGetMemosRequestModel\";\r\nimport type {MemoInfoModel} from \"../Models/Response/MemoInfoModel\";\r\nimport type {MemoItemModel} from \"../Models/Response/MemoItemModel\";\r\nimport type {ICreateMemoRecordRequestModel} from \"../Models/Request/ICreateMemoRecordRequestModel\";\r\nimport type {IGetMemoRequestModel} from \"../Models/Request/IGetMemoRequestModel\";\r\nimport type {IDeleteMemoRecordRequestModel} from \"../Models/Request/IDeleteMemoRecordRequestModel\";\r\nimport {\r\n\tIUpdateFlowMemoRecordRequestModel\r\n} from \"../Models/Request/IUpdateFlowMemoRecordRequestModel\";\r\nimport {IUpdateFlowOperationRecordRequestModel} from \"../Models/Request/IUpdateFlowOperationRecordRequestModel\";\r\nimport {GenericDeserialize} from \"../../../../libs/cerialize\";\r\n\r\nexport class FlowFolderStore {\r\n static CreateFlowRecord(params: ICreateFlowRecordRequestModel) {\r\n const deferredResult = P.defer();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/FlowFolderApi/CreateFlowRecord',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n\t}\r\n\r\n static UpdateFlowRecord(params: IUpdateFlowRecordRequestModel) {\r\n\t const deferredResult = P.defer();\r\n\r\n\t const requestParams: IRequestOptions = {\r\n\t\t proxy: {\r\n\t\t\t url: '/api/FlowFolderApi/UpdateFlowRecord',\r\n\t\t\t dataType: 'json',\r\n\t\t\t type: 'POST'\r\n\t\t },\r\n\t\t params\r\n\t };\r\n\r\n\t Request.Send(requestParams)\r\n\t\t .then(result => {\r\n\t\t\t deferredResult.resolve(result);\r\n\t\t })\r\n\t\t .fail(error => {\r\n\t\t\t deferredResult.reject(error);\r\n\t\t });\r\n\r\n\t return deferredResult.promise();\r\n }\r\n\r\n static DeleteFlowRecord(params: IDeleteFlowRecordRequestModel) {\r\n\t const deferredResult = P.defer();\r\n\r\n\t const requestParams: IRequestOptions = {\r\n\t\t proxy: {\r\n\t\t\t url: '/api/FlowFolderApi/DeleteFlowRecord',\r\n\t\t\t dataType: 'json',\r\n\t\t\t type: 'POST'\r\n\t\t },\r\n\t\t params\r\n\t };\r\n\r\n\t Request.Send(requestParams)\r\n\t\t .then(result => {\r\n\t\t\t deferredResult.resolve(result);\r\n\t\t })\r\n\t\t .fail(error => {\r\n\t\t\t deferredResult.reject(error);\r\n\t\t });\r\n\r\n\t return deferredResult.promise();\r\n }\r\n\r\n\tstatic GetProgressBarInfo(params: IGetProgressBarInfoRequestModel): P.Promise {\r\n\t const deferredResult = P.defer();\r\n\r\n\t const requestParams: IRequestOptions = {\r\n\t\t proxy: {\r\n\t\t\t url: '/api/FlowFolderApi/GetProgressBarInfo',\r\n\t\t\t dataType: 'json',\r\n\t\t\t type: 'POST'\r\n\t\t },\r\n\t\t params\r\n\t };\r\n\r\n\t Request.Send(requestParams)\r\n\t\t .then(data => {\r\n\t\t\t if (data.IsSuccessfull) {\r\n\t\t\t\t\tvar model = GenericDeserialize(data.ResultObject, ProgressBarInfoModel);\r\n\t\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t\t} else {\r\n\t\t\t\t deferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t }\r\n\t\t });\r\n\r\n\t return deferredResult.promise();\r\n }\r\n\r\n\tstatic GetFlowMemos(params: IGetMemosRequestModel): P.Promise {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/FlowFolderApi/GetFlowMemos',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t// if (data.IsSuccessfull) {\r\n\t\t\t\t// \tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t// } else {\r\n\t\t\t\t// \tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t// }\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetFlowMemo(params: IGetMemoRequestModel): P.Promise {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/FlowFolderApi/GetFlowMemo',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t// if (data.IsSuccessfull) {\r\n\t\t\t\t// \tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t// } else {\r\n\t\t\t\t// \tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t// }\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic CreateFlowMemo(params: ICreateMemoRecordRequestModel) {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/FlowFolderApi/CreateFlowMemo',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(error);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateFlowMemoRecord(params: IUpdateFlowMemoRecordRequestModel) {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/FlowFolderApi/UpdateFlowMemo',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(error);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateFlowOperationRecord(params: IUpdateFlowOperationRecordRequestModel) {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/FlowFolderApi/UpdateFlowOperation',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(error);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeleteFlowMemo(params: IDeleteMemoRecordRequestModel) {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/FlowFolderApi/DeleteFlowMemo',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(error);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {ViewGridModel} from 'Core/Controls/Grid/Models/ViewGridModel';\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\nimport {UserManager, UserRoles, UserTypes} from 'User/UserManager';\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {Tooltip} from 'Core/Common/Tooltip';\r\n\r\nimport Template from 'Core/Components/QueryDropdowns/Templates/QueryDropdowns.html';\r\nko.templates['Core/Components/QueryDropdowns/Templates/QueryDropdowns'] = Template;\r\nimport ViewListTemplate from 'Core/Components/QueryDropdowns/Templates/ViewListDropdown.html';\r\nimport { ZIndexManager } from 'Core/Common/ZIndexManager';\r\n\r\nexport class QueryDropdowns {\r\n _showElement: KnockoutObservable;\r\n _showViewLookup: boolean;\r\n _showFunctionLookup: boolean;\r\n _view: KnockoutObservable;\r\n _isEnabled: KnockoutObservable;\r\n _viewList: KnockoutObservableArray;\r\n _allowViewListUnset: boolean;\r\n _labels = LABELS;\r\n _isAddingRecordAllowed: KnockoutObservable;\r\n _enableEditView: KnockoutObservable;\r\n _enableDeleteView: KnockoutObservable;\r\n _enableLockItem: KnockoutObservable;\r\n _queryLocked: KnockoutObservable;\r\n _withExportFeatures: boolean;\r\n _showLockItem: boolean;\r\n _exportDataAllowed: KnockoutObservable;\r\n _id: string;\r\n\r\n private _newView: () => void;\r\n private _editView: () => void;\r\n private _copyView: () => void;\r\n private _deleteView: () => void;\r\n private _toggleLock: () => void;\r\n private _exportToCSV: () => void;\r\n private _exportToExcel: () => void;\r\n\r\n private _dropDown: JBoxDropDown;\r\n\r\n private _isOpen: KnockoutObservable;\r\n private _viewListSelect: JBoxDropDown;\r\n private _selectButtonWidth: KnockoutObservable;\r\n\r\n constructor(params: {\r\n showElement: KnockoutObservable;\r\n showViewLookup: boolean;\r\n showFunctionLookup: boolean;\r\n view: KnockoutObservable;\r\n isEnabled: KnockoutObservable;\r\n viewList: KnockoutObservableArray;\r\n allowViewListUnset: boolean;\r\n isAddingRecordAllowed: KnockoutObservable;\r\n enableEditView: KnockoutObservable;\r\n enableDeleteView: KnockoutObservable;\r\n enableLockItem: KnockoutObservable;\r\n withExportFeatures: boolean;\r\n showLockItem: boolean;\r\n queryLocked: KnockoutObservable;\r\n exportDataAllowed: KnockoutObservable;\r\n newView: () => void;\r\n editView: () => void;\r\n copyView: () => void;\r\n deleteView: () => void;\r\n toggleLock: () => void;\r\n exportToCSV: () => void;\r\n exportToExcel: () => void;\r\n }) {\r\n const {\r\n showElement = ko.observable(true),\r\n showViewLookup = true,\r\n showFunctionLookup = true,\r\n view,\r\n isEnabled = ko.observable(true),\r\n viewList,\r\n allowViewListUnset = false,\r\n isAddingRecordAllowed,\r\n enableEditView,\r\n enableDeleteView,\r\n enableLockItem,\r\n exportDataAllowed,\r\n withExportFeatures = true,\r\n showLockItem,\r\n queryLocked = ko.observable(false),\r\n newView,\r\n editView,\r\n copyView,\r\n deleteView,\r\n toggleLock,\r\n exportToCSV,\r\n exportToExcel\r\n } = params;\r\n\r\n this._showElement = showElement;\r\n this._showViewLookup = showViewLookup && UserManager.Instance.CurrentUser.UserType !== UserTypes.Gdpr;\r\n this._showFunctionLookup = showFunctionLookup && UserManager.Instance.CurrentUser.UserType !== UserTypes.Gdpr;\r\n this._view = view;\r\n this._isEnabled = isEnabled;\r\n this._viewList = viewList;\r\n this._allowViewListUnset = allowViewListUnset;\r\n this._isAddingRecordAllowed = isAddingRecordAllowed;\r\n this._enableEditView = enableEditView;\r\n this._enableDeleteView = enableDeleteView;\r\n this._enableLockItem = enableLockItem;\r\n this._withExportFeatures = withExportFeatures;\r\n this._showLockItem = showLockItem;\r\n this._queryLocked = queryLocked;\r\n this._exportDataAllowed = exportDataAllowed;\r\n this._newView = newView;\r\n this._editView = editView;\r\n this._copyView = copyView;\r\n this._deleteView = deleteView;\r\n this._toggleLock = toggleLock;\r\n this._exportToCSV = exportToCSV;\r\n this._exportToExcel = exportToExcel;\r\n\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this._isOpen = ko.observable(false);\r\n this._viewListSelect = null;\r\n this._selectButtonWidth = ko.observable(null);\r\n\r\n this._selectButtonWidth.subscribe((width: number)=> {\r\n this._viewListSelect && width && this._viewListSelect.SetNewWidth(width);\r\n })\r\n }\r\n\r\n CustomSelect(queryDropdowns: QueryDropdowns, event: JQuery.ClickEvent): void {\r\n if (!this._isEnabled()){\r\n return;\r\n } else {\r\n this._isOpen(!this._isOpen());\r\n }\r\n const el = event.currentTarget as HTMLInputElement;\r\n this._selectButtonWidth(el.offsetWidth);\r\n if (!this._viewListSelect){\r\n this._viewListSelect = new JBoxDropDown({\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n otherOptions: {\r\n addClass: \"jBox-padding-5px custom-select__dropdown\",\r\n attach: undefined,\r\n pointer: \"\",\r\n isolateScroll: true,\r\n closeOnClick: 'body',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n maxWidth: 380,\r\n width: el.offsetWidth,\r\n maxHeight: 400,\r\n position: {\r\n x: 'left',\r\n y: 'bottom'\r\n },\r\n offset: {\r\n x: 0\r\n }\r\n },\r\n onCreated: ()=> {\r\n this._viewListSelect.SetContent({ content: ViewListTemplate as any });\r\n },\r\n onOpen: () => {},\r\n onClose: () => {\r\n this._isOpen(false);\r\n }\r\n })\r\n }\r\n this._viewListSelect.Toggle();\r\n };\r\n \r\n SelectOption(option: ViewGridModel): void {\r\n this._view(option);\r\n this._isOpen(false);\r\n this._viewListSelect.Close();\r\n };\r\n\r\n get ShowViewLookup() {\r\n return this._showViewLookup && (!this._queryLocked() || UserManager.Instance.IsUserInRole(UserRoles.SuperUser));\r\n }\r\n\r\n get LockItemText() {\r\n if (this._queryLocked()) {\r\n return this._labels.UNLOCK_TABLEVIEW;\r\n }\r\n\r\n return this._labels.LOCK_TABLEVIEW;\r\n }\r\n\r\n get IsAddingRecordAllowed() {\r\n return this._isAddingRecordAllowed() && (!this._queryLocked() || UserManager.Instance.IsUserInRole(UserRoles.SuperUser));\r\n }\r\n\r\n get EnableEditView() {\r\n return this._enableEditView() && (!this._queryLocked() || UserManager.Instance.IsUserInRole(UserRoles.SuperUser));\r\n }\r\n\r\n get EnableDeleteView() {\r\n return this._enableDeleteView() && (!this._queryLocked() || UserManager.Instance.IsUserInRole(UserRoles.SuperUser));\r\n }\r\n\r\n koDescendantsComplete(el: HTMLElement) {\r\n this.Init(el);\r\n }\r\n\r\n Init(el: HTMLElement){\r\n if (!this._showFunctionLookup) return;\r\n const target = '.' + this._id;\r\n let contentAdded = false;\r\n this._dropDown = new JBoxDropDown({\r\n bindTarget: el,\r\n bindComponent: this,\r\n target: target,\r\n onOpen: () => {\r\n if (contentAdded) return;\r\n contentAdded = true;\r\n this._dropDown.SetContent();\r\n },\r\n otherOptions: {\r\n addClass: 'lookup-dropdown',\r\n closeOnClick: 'body',\r\n position: {\r\n x: 'left',\r\n y: 'bottom'\r\n },\r\n offset: {\r\n x: 15\r\n }\r\n }\r\n });\r\n }\r\n\r\n NewView() {\r\n if (this.IsAddingRecordAllowed) {\r\n this._dropDown.Close();\r\n this._newView();\r\n }\r\n }\r\n\r\n EditView() {\r\n if (this.EnableEditView) {\r\n this._dropDown.Close();\r\n this._editView();\r\n }\r\n }\r\n\r\n CopyView() {\r\n if (this.EnableEditView) {\r\n this._dropDown.Close();\r\n this._copyView();\r\n }\r\n }\r\n\r\n DeleteView() {\r\n if (this.EnableDeleteView) {\r\n this._dropDown.Close();\r\n this._deleteView();\r\n }\r\n }\r\n\r\n ToggleLock() {\r\n this._toggleLock();\r\n }\r\n\r\n ExportToCSV() {\r\n if (this._exportDataAllowed()) {\r\n this._dropDown.Close();\r\n this._exportToCSV();\r\n }\r\n }\r\n\r\n ExportToExcel() {\r\n if (this._exportDataAllowed()) {\r\n this._dropDown.Close();\r\n this._exportToExcel();\r\n }\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Components/QueryDropdowns/Templates/QueryDropdowns'\r\n }\r\n\r\n AfterRender(el: Array){\r\n this.Init(el[0]);\r\n }\r\n}\r\n\r\nko.components.register('query-dropdowns', {\r\n viewModel: QueryDropdowns,\r\n template: Template\r\n});","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import { ILinkedRecord, ILinkedRecords, INewLinkedRecord} from \"Core/Components/RecordLinker/RecordLinker\";\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\nimport {URL} from 'Core/Common/Url'\r\n\r\nexport class RecordLinkerStore {\r\n static IsLinkWithRecordExist(params: ILinkedRecord) {\r\n const deferredResult = P.defer();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.COMPONENTS.RECORDLINKER.IS_LINK_WITH_RECORD_EXIST,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => deferredResult.resolve(result))\r\n .fail(err => deferredResult.reject(err));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetExistingLinksWithRecords(params: ILinkedRecords) {\r\n const deferredResult = P.defer();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.COMPONENTS.RECORDLINKER.GET_EXISTING_LINKS_WITH_RECORDS,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => deferredResult.resolve(result))\r\n .fail(err => deferredResult.reject(err));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static LinkRecord(record: ILinkedRecord): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n transactionId: record.TransactionId,\r\n url: URL.COMPONENTS.RECORDLINKER.LINK_WITH_RECORD,\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params: record\r\n }).then(result => deferredResult.resolve(result));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static LinkRecords(record: ILinkedRecords): P.Promise {\r\n let deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: URL.COMPONENTS.RECORDLINKER.LINK_WITH_RECORDS,\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params: record\r\n }).then(result => deferredResult.resolve(result));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static AddAndLinkRecord(record: INewLinkedRecord) {\r\n let deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: URL.COMPONENTS.RECORDLINKER.ADD_AND_LINK_RECORD,\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params: record\r\n }).then(result => deferredResult.resolve(result));\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {RecordLinkerStore} from \"Core/Components/RecordLinker/Stores/RecordLinkerStore\";\r\nimport {DataModel} from \"Core/Screens/EditScreen/Models/DataModel\";\r\n\r\nexport interface ILinkedRecord {\r\n\tMainTableId: number;\r\n\tMainRecordId?: number;\r\n\tLinkedTableId: number;\r\n\tLinkedRecordId?: number;\r\n TransactionId?: string;\r\n}\r\n\r\nexport interface ILinkedRecords {\r\n MainTableId: number;\r\n MainRecordId: number;\r\n LinkedTableId: number;\r\n LinkedRecordIds: number[];\r\n}\r\n\r\nexport interface INewLinkedRecord {\r\n\tInsertOrUpdateRecordModel: DataModel,\r\n\tLinkRecordModel: ILinkedRecord;\r\n}\r\n\r\nexport class RecordLinker {\r\n static IsLinkRecordExist(record: ILinkedRecord): P.Promise {\r\n return RecordLinkerStore.IsLinkWithRecordExist(record);\r\n }\r\n\r\n static GetExistingLinksWithRecords(record: ILinkedRecords): P.Promise {\r\n return RecordLinkerStore.GetExistingLinksWithRecords(record);\r\n }\r\n\r\n\tstatic LinkRecord(record: ILinkedRecord): P.Promise {\r\n\t\treturn RecordLinkerStore.LinkRecord(record);\r\n }\r\n\r\n static LinkRecords(record: ILinkedRecords): P.Promise {\r\n return RecordLinkerStore.LinkRecords(record);\r\n }\r\n\r\n\tstatic AddAndLinkRecord(record: INewLinkedRecord): P.Promise {\r\n\t\treturn RecordLinkerStore.AddAndLinkRecord(record);\r\n\t}\r\n\r\n}","import { deserialize, deserializeAs } from 'libs/cerialize';\r\n\r\nclass SupportInfoCategory {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n NameTranslation: string;\r\n\r\n get DisplayName() {\r\n return this.NameTranslation || this.Name;\r\n }\r\n}\r\n\r\nclass SupportInfoUrgency {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n NameTranslation: string;\r\n\r\n get DisplayName() {\r\n return this.NameTranslation || this.Name;\r\n }\r\n}\r\n\r\nexport class SupportInfoModel {\r\n @deserializeAs(SupportInfoCategory)\r\n Categories: SupportInfoCategory[];\r\n\r\n @deserializeAs(SupportInfoUrgency)\r\n Urgencies: SupportInfoUrgency[];\r\n}\r\n","import {GenericDeserialize} from 'libs/cerialize';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {SupportInfoModel} from 'Core/Components/ReportIssueModal/Models/SupportInfoModel';\r\n\r\nexport class SupportStore {\r\n static GetSupportInfo(params: { DataBaseName: string }) {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/SupportApi/GetSupportInfo',\r\n type: 'GET'\r\n },\r\n params\r\n }).then((data: { IsSuccessfull: boolean; ErrorMessage: string | null; ResultObject: any }) => {\r\n if (!data.IsSuccessfull) {\r\n return P.reject({message: data.ErrorMessage});\r\n }\r\n\r\n return P.resolve(GenericDeserialize(data.ResultObject, SupportInfoModel));\r\n });\r\n }\r\n\r\n static CreateSupportTicket(params) {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/SupportApi/CreateSupportTicket',\r\n type: 'POST'\r\n },\r\n params\r\n }).then((data: { IsSuccessfull: boolean; ErrorMessage: string | null; ResultObject: any }) => {\r\n if (data.IsSuccessfull) {\r\n return deferred.resolve(data.ResultObject);\r\n }\r\n\r\n return deferred.reject({message: data.ErrorMessage});\r\n }).fail(error => {\r\n if (error.status === 400) {\r\n return deferred.reject({message: JSON.parse(error.message).Message});\r\n }\r\n\r\n return deferred.reject(error);\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n}\r\n","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {SupportStore} from 'Core/Components/ReportIssueModal/Stores/SupportStore';\r\nimport {SupportInfoModel} from 'Core/Components/ReportIssueModal/Models/SupportInfoModel';\r\nimport {UserManager} from 'User/UserManager';\r\nimport {MenuManager} from 'MenuManager/MenuManager';\r\nimport {ErrorHolder} from 'Core/ErrorHolder/ErrorHolder';\r\n\r\nimport ReportIssueModalTemplate from 'Core/Components/ReportIssueModal/Templates/ReportIssueModal.html';\r\nimport {SupportTicketModel} from './Models/SupportTicketModel';\r\n\r\nko.templates['Core/Components/ReportIssueModal/Templates/ReportIssueModal'] = ReportIssueModalTemplate;\r\n\r\ndeclare global {\r\n interface MediaDevices {\r\n getDisplayMedia(constraints?: MediaStreamConstraints): Promise;\r\n }\r\n}\r\n\r\nasync function getScreenshot() {\r\n if (!navigator.mediaDevices) {\r\n throw new Error(NOTIFICATIONS.SCREENSHOT_CAN_BE_MADE_ONLY_USING_HTTPS);\r\n }\r\n\r\n const video = document.createElement('video');\r\n\r\n try {\r\n video.srcObject = await navigator.mediaDevices.getDisplayMedia();\r\n } catch {\r\n throw new Error(NOTIFICATIONS.PERMISSION_IS_DENIED)\r\n }\r\n\r\n // Some time for source choosing popup to close\r\n await new Promise(resolve => {\r\n setTimeout(resolve, 250);\r\n });\r\n\r\n await video.play();\r\n\r\n const canvas = document.createElement('canvas');\r\n\r\n canvas.width = video.videoWidth;\r\n canvas.height = video.videoHeight;\r\n\r\n const context = canvas.getContext('2d');\r\n context.drawImage(video, 0, 0);\r\n\r\n const [track] = video.srcObject.getVideoTracks();\r\n track.stop();\r\n\r\n return canvas.toDataURL('image/jpeg');\r\n}\r\n\r\nexport class ReportIssueModal {\r\n private _image: string;\r\n private _supportInfo: SupportInfoModel;\r\n private _modal = new Modal({closeOnEsc: true, isolateScroll: false}, true);\r\n\r\n _summary = ko.observable();\r\n _selectedCategory = ko.observable();\r\n _selectedUrgency = ko.observable();\r\n _description = ko.observable();\r\n\r\n //false means there are no errors\r\n _validation = {\r\n summary: ko.observable(false),\r\n summaryMaxLength: ko.observable(false),\r\n category: ko.observable(false),\r\n urgency: ko.observable(false),\r\n description: ko.observable(false),\r\n descriptionMinLength: ko.observable(false),\r\n descriptionMaxLength: ko.observable(false),\r\n isValid: function () {\r\n return (\r\n !this.summary() &&\r\n !this.summaryMaxLength() &&\r\n !this.category() &&\r\n !this.urgency() &&\r\n !this.description() &&\r\n !this.descriptionMinLength() &&\r\n !this.descriptionMaxLength()\r\n );\r\n }\r\n };\r\n\r\n _placeholder = LABELS.REPORT_ISSUE_DESCRIPTION_PLACEHOLDER.replace(/\\\\n/g, '\\n');;\r\n _labels = LABELS;\r\n\r\n constructor({image, supportInfo}: { image: string; supportInfo: SupportInfoModel }) {\r\n this._image = image;\r\n this._supportInfo = supportInfo;\r\n }\r\n\r\n static async Open() {\r\n const getSupportInfoPromise = SupportStore.GetSupportInfo({\r\n DataBaseName: ReportIssueModal.GetDatabaseName()\r\n });\r\n\r\n let image: string | undefined;\r\n let supportInfo: SupportInfoModel | undefined;\r\n\r\n try {\r\n image = await getScreenshot();\r\n\r\n BlockUI.Block();\r\n\r\n supportInfo = await new Promise((resolve, reject) => {\r\n getSupportInfoPromise.then(resolve).fail(reject);\r\n });\r\n } catch (error) {\r\n new Notifier().Failed(error.message);\r\n } finally {\r\n BlockUI.Unblock();\r\n }\r\n\r\n if (image && supportInfo) {\r\n const modal = new ReportIssueModal({image, supportInfo});\r\n modal.Show();\r\n }\r\n }\r\n\r\n Show() {\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/ReportIssueModal/Templates/ReportIssueModal';\r\n }\r\n\r\n AfterRender() {\r\n }\r\n\r\n SendTicket() {\r\n const ticket = this.ConstructTicket();\r\n this.ValidateTicket(ticket);\r\n\r\n if (!this._validation.isValid()) {\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n\r\n SupportStore.CreateSupportTicket(ticket)\r\n .then(() => {\r\n this._modal.Close();\r\n new Notifier().Success(NOTIFICATIONS.ISSUE_HAS_BEEN_SENT_TO_SUPPORT_TEAM);\r\n })\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private ConstructTicket(): SupportTicketModel {\r\n let entityId, recordId, screenTypeId;\r\n\r\n const openedScreen = MenuManager.Instance.GetCurrentScreen();\r\n if (openedScreen) {\r\n entityId = openedScreen.GetEntityId();\r\n recordId = openedScreen.GetRecordId();\r\n screenTypeId = openedScreen.GetTypeId()\r\n }\r\n\r\n return {\r\n CategoryId: this._selectedCategory(),\r\n UrgencyId: this._selectedUrgency(),\r\n EntityId: entityId,\r\n RecordId: recordId,\r\n ScreenTypeId: screenTypeId,\r\n Description: this._description(),\r\n Browser: window.navigator.userAgent,\r\n ConsoleOutput: ErrorHolder.GetErrors(),\r\n Screenshot: this._image,\r\n Summary: this._summary(),\r\n DataBaseName: ReportIssueModal.GetDatabaseName()\r\n };\r\n }\r\n\r\n private ValidateTicket(ticket: SupportTicketModel) {\r\n this._validation.summary(!ticket.Summary);\r\n this._validation.summaryMaxLength(ticket.Summary && ticket.Summary.length > 80);\r\n this._validation.category(!ticket.CategoryId);\r\n this._validation.urgency(!ticket.UrgencyId);\r\n this._validation.description(!ticket.Description);\r\n this._validation.descriptionMinLength(ticket.Description && ticket.Description.length < 50);\r\n this._validation.descriptionMaxLength(ticket.Description && ticket.Description.length > 2000);\r\n }\r\n\r\n private static GetDatabaseName() {\r\n return this.GetDbFromSession() || this.GetDbFromUrl() || this.GetDbFromLoginForm();\r\n }\r\n\r\n private static GetDbFromSession() {\r\n return UserManager.Instance.CurrentUser && UserManager.Instance.CurrentUser.DbName;\r\n }\r\n\r\n private static GetDbFromUrl() {\r\n return new URL(window.location.href).searchParams.get('db');\r\n }\r\n\r\n private static GetDbFromLoginForm() {\r\n return $('#login-form__dbname').val() as string;\r\n }\r\n}\r\n","// Module\nvar code = \"

    '), position: { y: 'bottom' }, pointer: 'left' },\\r\\n value: _description\\\" class=\\\"fa fa-info-circle\\\">

    \\\"Preview\\\"/
    \";\n// Exports\nexport default code;","import {HubConnectionBuilder, HubConnection, HttpTransportType} from '@microsoft/signalr';\r\n\r\nimport {CookieManager} from 'Core/Common/CookieManager';\r\nimport {Notifier, MessageTypes} from 'Core/Common/Notifier';\r\nimport {P} from 'Core/Common/Promise';\r\nimport * as $ from 'jquery';\r\nimport {NotificationTypes} from '../../Common/Enums/NotificationTypes';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport 'ace-builds/src-noconflict/mode-json';\r\nimport { FunctionBuilder } from 'Core/Components/CustomFunctions/FunctionBuilder';\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\nimport { Guid } from '../../Common/Guid';\r\nimport {Event} from 'Core/Common/Event'\r\n\r\nexport class SignalRNotificationManager extends Event {\r\n private _signalRHub: HubConnection;\r\n\r\n private static instance: SignalRNotificationManager;\r\n private static allowInstantiation: boolean;\r\n private _debugEditor: any;\r\n private _scriptDebugEditor: any;\r\n public ImageCache: any = {};\r\n\r\n constructor() {\r\n super();\r\n if (!SignalRNotificationManager.allowInstantiation) {\r\n throw new Error('Use SignalRNotificationManager.Instance instead');\r\n }\r\n this.Init();\r\n }\r\n\r\n public SetScriptDebugEditor(debugEditor) {\r\n this._scriptDebugEditor = debugEditor;\r\n if (this._scriptDebugEditor) {\r\n this._scriptDebugEditor.session.setMode('ace/mode/json');\r\n this._scriptDebugEditor.session.setUseWorker(false);\r\n }\r\n }\r\n\r\n public SetDebugEditor(debugEditor) {\r\n this._debugEditor = debugEditor;\r\n if (this._debugEditor) {\r\n this._debugEditor.session.setMode('ace/mode/json');\r\n this._debugEditor.session.setUseWorker(false);\r\n }\r\n }\r\n\r\n private Init() {\r\n this.AddEvent('PASTE_IMAGE');\r\n this._signalRHub = new HubConnectionBuilder()\r\n .withUrl('/api/signalRHub', {accessTokenFactory: () => CookieManager.GetAuthToken(), skipNegotiation: true, transport: HttpTransportType.WebSockets})\r\n .withAutomaticReconnect()\r\n .build();\r\n\r\n this._signalRHub.on('ShowDebugLog', (message) => {\r\n if (this._debugEditor) {\r\n this._debugEditor.session.insert({\r\n row: this._debugEditor.session.getLength(),\r\n column: 0\r\n }, \"\\n\" + message);\r\n\r\n this._debugEditor.scrollToLine(this._debugEditor.session.getLength(), true, true, function () {\r\n });\r\n this._debugEditor.gotoLine(this._debugEditor.session.getLength(), 0, true);\r\n }\r\n });\r\n\r\n this._signalRHub.on('ConsoleLog', (message) => {\r\n if (this._scriptDebugEditor) {\r\n this._scriptDebugEditor.session.insert({\r\n row: this._scriptDebugEditor.session.getLength(),\r\n column: 0\r\n }, \"\\n\" + message);\r\n\r\n this._scriptDebugEditor.scrollToLine(this._scriptDebugEditor.session.getLength(), true, true, function () {});\r\n this._scriptDebugEditor.gotoLine(this._scriptDebugEditor.session.getLength(), 0, true);\r\n }\r\n });\r\n\r\n this._signalRHub.on('ConsoleImage', (title, image) => this.Trigger('PASTE_IMAGE', { title: title, image: image }));\r\n\r\n this._signalRHub.on('ShowProgress', message => {\r\n $(\"#dw-progress\").html(`

    ${message}

    `);\r\n });\r\n\r\n this._signalRHub.on('ShowNotification', (message, notificationType: NotificationTypes) => {\r\n if (notificationType === NotificationTypes.Warning) {\r\n new Notifier(null).Warning(message);\r\n } else if (notificationType === NotificationTypes.Failed) {\r\n new Notifier(null).Failed(message);\r\n } else {\r\n new Notifier(null).Success(message);\r\n }\r\n });\r\n\r\n this._signalRHub.on('EvaluateFunction', (code, params, objectId) => {\r\n if (objectId) {\r\n PubSub.publishSync(PUB_SUB_EVENTS.EXECUTE_SCRIPT, { Code: code, Params: params, ObjectId: objectId });\r\n return;\r\n }\r\n this.EvalFunction(code, params);\r\n });\r\n\r\n this._signalRHub.on('ShowMessage', message => {\r\n new Notifier(null).Show({ Message: message, Type: new MessageTypes().Success, ZIndex: 1000000 });\r\n });\r\n }\r\n\r\n private SkipRows(skipValue: number){\r\n for(var indx = 0; indx { await FunctionBuilder.Execute(code, param) })();\r\n\t}\r\n\r\n static get Instance(): SignalRNotificationManager {\r\n if (SignalRNotificationManager.instance == null) {\r\n SignalRNotificationManager.allowInstantiation = true;\r\n SignalRNotificationManager.instance = new SignalRNotificationManager();\r\n SignalRNotificationManager.allowInstantiation = false;\r\n }\r\n\r\n return SignalRNotificationManager.instance;\r\n }\r\n\r\n SetToken() {\r\n const token = CookieManager.GetAuthToken();\r\n $.ajaxSetup({headers: {\"Authorization\": `Bearer ${token}`}});\r\n }\r\n\r\n Start(): P.Promise {\r\n let deferredResult = P.defer();\r\n this.Stop().finally(()=>{\r\n BlockUI.Block();\r\n\r\n Promise\r\n .all([\r\n this._signalRHub.start()\r\n ])\r\n .then(() => {\r\n BlockUI.Unblock();\r\n deferredResult.resolve(null);\r\n });\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n Stop() {\r\n return this._signalRHub.stop();\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport DropdownTemplate from 'Core/Components/TranslationFieldEditor/TranslationEditorDropdownTemplate.html';\r\n\r\nimport { TranslationManager } from 'Core/Components/Translation/TranslationManager';\r\nimport { ITranslationValue } from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\nimport { TranslationItem } from \"Core/Components/TranslationFieldEditor/TranslationItem\";\r\nimport { ZIndexManager } from 'Core/Common/ZIndexManager';\r\nimport {MobileChecker} from \"../../Common/MobileChecker\";\r\n\r\nexport class TranslationFieldEditor extends Event {\r\n\tprivate _translationItems: KnockoutObservableArray;\r\n\tprivate _activeTranslationItem: KnockoutObservable;\r\n\tprivate _translationMaxSize: number;\r\n\r\n\tprivate _opened: KnockoutObservable;\r\n\tprivate _subscription: any;\r\n\tprivate _zIndex: number;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis._zIndex = ZIndexManager.Instance.NextValue;\r\n\r\n\t\tthis._translationItems = ko.observableArray([]);\r\n\r\n\t\tthis._activeTranslationItem = ko.observable(null);\r\n\r\n\t\tthis._opened = ko.observable(false);\r\n\r\n\t\tthis._translationMaxSize = 0;\r\n\t}\r\n\r\n\tget TranslationItemsList() {\r\n\t\treturn this._translationItems();\r\n\t}\r\n\r\n\tget ActiveTranslation() {\r\n\t\treturn this._activeTranslationItem();\r\n\t}\r\n\r\n\tGetTranslationMaxSize(): number {\r\n\t\treturn this._translationMaxSize > 0 ? this._translationMaxSize : -1;\r\n\t}\r\n\r\n\tLoadTranslationItems() {\r\n\t\tconst translationItems = TranslationManager.Instance.Languages.map(language => new TranslationItem(language));\r\n\t\ttranslationItems.forEach(item => item.On(\"TranslationChanged\", this, eventArgs => this.Trigger(\"TranslationChanged\", eventArgs.data)));\r\n\t\tthis._translationItems(translationItems);\r\n\t\tthis._activeTranslationItem(translationItems[0]);\r\n\t\tthis.SubscribeOnValueChanges(translationItems[0].Language.Id);\r\n\t}\r\n\r\n\tSubscribeOnValueChanges(id: number) {\r\n if (this._subscription) {\r\n \tthis._subscription.dispose();\r\n\t\t}\r\n\t\tif (id === this._activeTranslationItem().Language.Id) {\r\n this._subscription = this._activeTranslationItem().Value.subscribe((newValue) => {\r\n this.Trigger('TranslationSelected', {\r\n LanguageId: this._activeTranslationItem().Language.Id,\r\n Value: newValue\r\n });\r\n })\r\n\t\t}\r\n\t}\r\n\r\n\tSetTranslations(translations: ITranslationValue[], defaultValue: string) {\r\n\t\tif (translations) {\r\n\t\t\ttranslations.forEach(translation => this.SetTranslation(translation));\r\n\t\t}\r\n\r\n\t\tthis.SetTranslation({\r\n\t\t\tLanguageId: TranslationManager.Instance.GetDefaultLanguage().Id,\r\n\t\t\tValue: defaultValue\r\n\t\t});\r\n\t}\r\n\r\n\tSetTranslationMaxSize(translationMaxSize: number) {\r\n\t\tthis._translationMaxSize = translationMaxSize;\r\n\t}\r\n\r\n\tSetActiveTranslation(languageId: number) {\r\n\t\tconst translationItem = this.GetTranslationById(languageId);\r\n\t\tthis._activeTranslationItem(translationItem);\r\n\t\tthis.SubscribeOnValueChanges(translationItem.Language.Id);\r\n\t}\r\n\r\n\tSetValue(value: string) {\r\n\t\tif (this._activeTranslationItem()) {\r\n\t\t\tthis._activeTranslationItem().Value(value);\r\n\t\t}\r\n\t}\r\n\r\n\tGetTranslations(withDefault: boolean = true): ITranslationValue[] {\r\n\t\tconst defaultLanguage = TranslationManager.Instance.GetDefaultLanguage();\r\n\t\tlet translations = withDefault ? this._translationItems() : this._translationItems().filter(item => item.Language.Id !== defaultLanguage.Id);\r\n\r\n\t\treturn translations.map(translation => {\r\n\t\t\treturn {\r\n\t\t\t\tLanguageId: translation.Language.Id,\r\n\t\t\t\tValue: translation.Value()\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tGetDefaultTranslation(): ITranslationValue {\r\n\t\tconst defaultLanguage = TranslationManager.Instance.GetDefaultLanguage();\r\n\t\tconst translation = this.GetTranslationById(defaultLanguage.Id);\r\n\r\n\t\treturn {\r\n\t\t\tLanguageId: translation.Language.Id,\r\n\t\t\tValue: translation.Value()\r\n\t\t};\r\n\t}\r\n\r\n\tGetTranslationById(id: number) : TranslationItem {\r\n\t\treturn _.find(this._translationItems(), item => item.Language.Id === id);\r\n\t}\r\n\r\n\tToggle() {\r\n\t\tthis._opened(!this._opened());\r\n\t\tif (this._opened()) {\r\n\t\t\tthis.SetFocus();\r\n\t\t}\r\n\t}\r\n\r\n\t// Add to focus the first blank item\r\n\tSetFocus() {\r\n\t\tlet focusEmptyElement = _.find(this._translationItems(), item => item.Value() === null );\r\n\t\tlet isMobile = MobileChecker.IsMobile();\r\n\t\tfocusEmptyElement && focusEmptyElement.IsFocused(!isMobile);\r\n\t}\r\n\r\n\tSelectTranslation(translation: TranslationItem) {\r\n\t\tthis._activeTranslationItem(translation);\r\n\t\tthis.SubscribeOnValueChanges(translation.Language.Id);\r\n\r\n this.Trigger('TranslationSelected', {\r\n\t\t\tLanguageId: translation.Language.Id,\r\n\t\t\tValue: translation.Value()\r\n\t\t});\r\n\r\n\t\tthis.Toggle();\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn DropdownTemplate;\r\n\t}\r\n\r\n\tAfterRender(el): void {\r\n\t}\r\n\r\n\tprivate SetTranslation(translation: ITranslationValue) {\r\n\t\tconst translationItem = _.find(this._translationItems(), item => item.Language.Id === translation.LanguageId);\r\n\t\ttranslationItem.SetTranslation(translation.Value);\r\n\t}\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {LanguageModel} from \"Core/Components/Translation/Models/LanguageModel\";\r\n\r\nexport class TranslationItem extends Event {\r\n\tValue: KnockoutObservable;\r\n\tIsFocused: KnockoutObservable;\r\n\r\n\tconstructor(public Language: LanguageModel) {\r\n\t\tsuper();\r\n\t\tthis.Value = ko.observable(null);\r\n\t\tthis.IsFocused = ko.observable(false);\r\n\r\n\t\tthis.Value.subscribe(value => this.Trigger(\"TranslationChanged\", this));\r\n\t}\r\n\r\n\tSetTranslation(value: string) {\r\n\t\tthis.Value(value);\r\n\t}\r\n}","import enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nimport { TranslationManager } from \"Core/Components/Translation/TranslationManager\";\r\nimport {Label} from \"../../Controls/Label/Label\";\r\n\r\nvar manager = TranslationManager.Instance;\r\n\r\nexport class NOTIFICATIONS {\r\n\r\n\t//#region Common\r\n\t@enumerable static get PERMISSION_IS_DENIED() { return manager.GetLocalizedString( 1270 ) }\t\t\t\t\t//Permission is denied\r\n\t@enumerable static get RECORD_SAVED() { return manager.GetLocalizedString( 20 ) }\t\t\t\t\t\t\t //Record saved\r\n\t@enumerable static get RECORD_REMOVED() { return manager.GetLocalizedString( 21 ) }\t\t\t\t\t\t\t//Record removed\r\n\t@enumerable static get NOT_ALLOWED_ACTION() { return manager.GetLocalizedString(708) }\t\t\t\t\t\t//Not allowed action\r\n @enumerable static get RECORD_DISABLED() { return manager.GetLocalizedString(900) }\t\t\t\t\t\t\t//Record disabled\r\n @enumerable static get RECORD_CREATED() { return manager.GetLocalizedString( 22 ) }\t\t\t\t\t\t\t//Record has been created\r\n\t@enumerable static get RECORD_UPDATED() { return manager.GetLocalizedString( 23 ) }\t\t\t\t\t\t\t//Record updated\r\n\t@enumerable static get RECORD_NOT_FOUND() { return manager.GetLocalizedString( 960 ) }\t\t\t\t\t\t//Record not found\r\n\t@enumerable static get REFERENCE_TABLE_NOT_SET() { return manager.GetLocalizedString( 961 ) }\t\t\t\t\t//Reference table not set\r\n\t@enumerable static get INVALID_REFERENCE_TABLE() { return manager.GetLocalizedString( 964 ) }\t\t\t\t\t//Invalid reference table\r\n\t@enumerable static get REFERENCE_WAS_SET() { return manager.GetLocalizedString(989) }\t\t\t\t\t\t\t//Reference was set\r\n\t@enumerable static get REFERENCE_WAS_UNSET() { return manager.GetLocalizedString(990) }\t\t\t\t\t\t//Reference was unset\r\n\t@enumerable static get TABLE_NOT_FOUND() { return manager.GetLocalizedString( 962 ) }\t\t\t\t\t\t\t//Table not found\r\n\t@enumerable static get ENTITY_NAME_WAS_NOT_FOUND() { return manager.GetLocalizedString( 843 ) }\t\t\t\t//Entity {entityName} was not found\r\n\t@enumerable static get NO_PENDING_CHANGES() { return manager.GetLocalizedString( 37 ) }\t\t\t\t\t\t//No pending changes\r\n\t@enumerable static get DATA_SAVED() { return manager.GetLocalizedString( 40 ) }\t\t\t\t\t\t\t\t//Data saved\r\n\t@enumerable static get DATA_IS_NOT_SAVED() { return manager.GetLocalizedString( 41 ) }\t\t\t\t\t\t//Error saving data\r\n\t@enumerable static get ERROR_DELETING_RECORD() { return manager.GetLocalizedString( 49 ) }\t\t\t\t\t//Error deleting record\r\n\t@enumerable static get ERROR_GETTING_CONTROL_OPTIONS() { return manager.GetLocalizedString( 1242 ) }\t\t//Error getting {controlName} control options\r\n\t@enumerable static get SOMETHING_WENT_WRONG() { return manager.GetLocalizedString( 61 ) }\t\t\t\t\t\t//Something went wrong\r\n\t@enumerable static get SUB_TYPE_NOT_FOUND() { return manager.GetLocalizedString(82) }\t\t\t\t\t\t//Sub types not found\r\n\t@enumerable static get TYPES_NOT_FOUND() { return manager.GetLocalizedString(1136) }\t\t\t\t\t\t//Types not found\r\n\t@enumerable static get INCORECT_PASSWORD_LENGTH() { return manager.GetLocalizedString( 98 ) }\t\t\t\t\t//Incorrect length of password. Please enter at least {MinimumLength} symbols\r\n\t@enumerable static get IS_REQUIRED() { return manager.GetLocalizedString( 909 ) }\t\t\t\t\t\t\t\t//is required\r\n\t@enumerable static get MINIMUM_LENGTH_OF_THIS_FIELD() { return manager.GetLocalizedString( 1002 ) }\t\t\t//Minimum length of this field is\r\n\t@enumerable static get MAXIMUM_LENGTH_OF_THIS_FIELD() { return manager.GetLocalizedString( 1003 ) }\t\t\t//Maximum length of this field is\r\n\t@enumerable static get INCORRECT_URL_PLEASE_TYPE_FULL_URL_LIKE() { return manager.GetLocalizedString( 1004 ) }//Incorrect URL. Please type full URL like http://spheeres.com\r\n\t@enumerable static get OBJECT_HAS_BEEN_COPIED() {return manager.GetLocalizedString(1058)}\t\t\t\t\t\t//{object} has been copied\r\n\t@enumerable static get OBJECT_HAS_BEEN_REMOVED() {return manager.GetLocalizedString(1059)}\t\t\t\t\t\t//{object} has been removed\r\n\t@enumerable static get EDITSCREEN_CANNOT_BE_USED_AS_A_HOME_SCREEN() {return manager.GetLocalizedString(1061)}\t//EditScreen cannot be used as a home screen\r\n\t@enumerable static get CANNOT_OPEN_THE_HOME_SCREEN_SUBJECTENTITY_ENTTY_SCREEN() {return manager.GetLocalizedString(1062)}\t//Cannot open the Home Screen: {subjectEntity} entity screen\r\n\t@enumerable static get HOME_SCREEN_SUBJECT_ENTITY() {return manager.GetLocalizedString(1064)}\t\t\t\t\t//Home Screen: {subjectEntity}\r\n\t@enumerable static get ALLOWED_FILE_EXTENSIONS_ARE_EXTENSIONS() { return manager.GetLocalizedString(996) }\t//Allowed file extensions are {FileExtensions}\r\n\t@enumerable static get CANNOT_UPLOAD_FILES() { return manager.GetLocalizedString(1079) }\t\t\t\t\t//Cannot upload files: {Files}\r\n\t@enumerable static get YOU_ARE_NOT_ALLOWED_TO_PERFORM_THIS_ACTION() { return manager.GetLocalizedString(1100) }\t\t\t\t\t//You are not allowed to perform this action\r\n\t@enumerable static get ERROR_GETTING_LIFESTATUSES() { return manager.GetLocalizedString(379) }\t\t\t\t//Error getting lifestatuses for entity {EntityName}\r\n\t@enumerable static get LINK_HAS_BEEN_COPIED() { return manager.GetLocalizedString(1441)};\t\t\t\t\t\t//Link has been copied\r\n\t@enumerable static get COULD_NOT_PROCEED_PLEASE_CREATE_THE_LINK_BETWEEN_ENTITIES() { return manager.GetLocalizedString(1517)};\t//Could not proceed, please, create the link between {entity1} and {entity2}\r\n\r\n\t@enumerable static get INVALID_USER() { return manager.GetLocalizedString( 1220 ) }\r\n\t@enumerable static get INVALID_DATABASE() { return manager.GetLocalizedString( 1221 ) }\r\n\t@enumerable static get ACCESS_DENIED() { return manager.GetLocalizedString( 1222 ) }\r\n\t@enumerable static get LICENSE_WILL_BE_EXPIRED() { return manager.GetLocalizedString( 1422 ) }\t\t\t\t//License will be expired on {date}. Please, contact your licensor.\r\n\t//#endregion\r\n\r\n\t//#region LoginPage\r\n\t@enumerable static get FORM_INVALID() { return manager.GetLocalizedString( 1394, 'Please, fill in all required fields' ) }\t\t\t\t\t\t// Please, fill in all required fields\r\n\t@enumerable static get RESET_PASSWORD_SENT() { return manager.GetLocalizedString(1396, 'Reset password link has been sent to your e-mail') }\t\t//Reset password link has been sent to your e-mail\r\n\t@enumerable static get ERROR_USER_ALLOWANCE() { return manager.GetLocalizedString(1397, 'Error getting user allowance') }\t\t\t\t\t\t\t//Error getting user allowance\r\n\t@enumerable static get ERROR_USER_DATA() { return manager.GetLocalizedString(1400, 'Error getting user data') }\t\t\t\t\t\t\t\t\t//Error getting user data\r\n\r\n\t@enumerable static get ENTER_CURRENT_PASSWORD() { return manager.GetLocalizedString( 1417, 'Please, enter current password' ) }\t\t\t\t\t// Please, enter current password\r\n\t@enumerable static get ENTER_NEW_PASSWORD() { return manager.GetLocalizedString(1418, 'Please, enter new password') }\t\t\t\t\t\t\t\t//Please, enter new password\r\n\t@enumerable static get ENTER_AT_LEAST_MORE_CHARACTERS() { return manager.GetLocalizedString(1419, 'Please, enter at least {minLength} characters') }\t\t//Please, enter at least {minLength} characters\r\n\t@enumerable static get CONFIRM_NEW_PASSWORD() { return manager.GetLocalizedString(1420, 'Please, confirm new password') }\t\t\t\t\t\t\t//Please, confirm new password\r\n\t@enumerable static get PASSWORDS_ARE_NOT_SAME() { return manager.GetLocalizedString(1421, 'Passwords are not same') }\t\t\t\t\t\t\t\t//Passwords are not same\r\n\t//#endregion\r\n\r\n\t//#region UserMenu\r\n\t@enumerable static get CONTACT_SCREEN_NOT_FOUND() { return manager.GetLocalizedString( 10 ) }\t\t\t\t\t// Contact screen not found\r\n\t//#endregion\r\n\r\n\t//#region Kanban Board\r\n\t@enumerable static get STATUS_UPDATED() { return manager.GetLocalizedString( 19 ) }\t\t\t\t\t\t\t// Status updated\r\n\t@enumerable static get NO_LINKED_RECORDS() { return manager.GetLocalizedString( 570 ) }\t\t\t\t\t\t// No linked records -- need to check to another place\r\n\t//#endregion\r\n\r\n\t//#region Follow up\r\n\t@enumerable static get NEXT_STATUS_NOT_AVAILABLE() { return manager.GetLocalizedString( 531 ) } \t\t\t\t//Next status is not available. Please contact superuser\r\n\t//#endregion\r\n\r\n\t//#region TimeWriting\r\n\t@enumerable static get CHANGES_APPLIED() { return manager.GetLocalizedString( 24 ) }\t\t\t\t\t\t\t//Changes applied\r\n\t@enumerable static get TIME_OVERFLOW() { return manager.GetLocalizedString( 44 ) }\t\t\t\t\t\t\t//Time overflow\r\n\t@enumerable static get ROW_EDITOR_NOT_FOUND() { return manager.GetLocalizedString( 45 ) }\t\t\t\t\t\t//Row editor not found for reservation\r\n @enumerable static get FREEZE_TIME_NOT_SPECIFIED() { return manager.GetLocalizedString(901) }\t\t\t\t\t\t//Freeze time not specified\r\n @enumerable static get FILL_REQUIRED_DATA() { return manager.GetLocalizedString(902) }\t\t\t\t\t\t//Fill required data\r\n @enumerable static get DURATION_IS_TOO_LONG() { return manager.GetLocalizedString(903) }\t\t\t\t\t\t//Duration is too long\r\n @enumerable static get TO_DATE_IS_LESS_THAN_FROM() { return manager.GetLocalizedString(988) }\t\t\t\t\t\t//To date is less than from date\r\n\t@enumerable static get ONLY_FOLLOWING_TYPES_ARE_ALLOWED() { return manager.GetLocalizedString(993) }\t\t\t\t//Only following types are allowed: {LowestLevelTypes}\r\n\t//#endregion\r\n\r\n //#region Agenda\r\n\t@enumerable static get EVENT_UPDATED() { return manager.GetLocalizedString( 25 ) }\t\t\t\t\t\t\t//Event updated\r\n\t@enumerable static get EDIT__ONLY_APPOINTMENT_EVENTS() { return manager.GetLocalizedString( 116 ) }\t\t\t//You can edit only Appointment Events\r\n\t@enumerable static get SELECT_ONLY_WITHIN_DAY() { return manager.GetLocalizedString( 156 ) }\t\t\t\t\t//You can select only within day\r\n\t@enumerable static get BOOKED_TIME_RECORD_WAS_CREATED_SUCCESSFULLY() { return manager.GetLocalizedString( 898 ) }\t\t\t\t\t//Booked time record was created successfully\r\n\t@enumerable static get ATTENDEES_CANNOT_BE_ADDED_DUE_TO_MISSING_LINK_LIST() { return manager.GetLocalizedString( 1196 ) }\t\t\t//Attendees cannot be added due to missing LinkList\r\n\t//#endregion\r\n\r\n\t//#region Password\r\n\t@enumerable static get PASSWORD_REVOKED() { return manager.GetLocalizedString( 26 ) }\t\t\t\t\t\t\t//Password has been revoked\r\n\t@enumerable static get PASSWORD_RESET() { return manager.GetLocalizedString( 27 ) }\t\t\t\t\t\t\t//Password has been reset\r\n\t//#endregion\r\n\r\n\t//#region Mail\r\n\t@enumerable static get EMAIL_WAS_SENT() { return manager.GetLocalizedString( 28 ) }\t\t\t\t\t\t\t//Email was sent\r\n\t@enumerable static get PLEASE_ADD_ACCOUNT() { return manager.GetLocalizedString( 29 ) }\t\t\t\t\t\t//Please, add at least one correct account\r\n\t@enumerable static get PLEASE_SELECT_ANY_EMAIL() { return manager.GetLocalizedString( 30 ) }\t\t\t\t\t//Please select any mail\r\n\t@enumerable static get MARKED_AS_READ() { return manager.GetLocalizedString( 31 ) }\t\t\t\t\t\t\t//Successfully marked as read\r\n\t@enumerable static get MARKED_AS_UNREAD() { return manager.GetLocalizedString( 32 ) }\t\t\t\t\t\t\t//Successfully marked as unread\r\n\t@enumerable static get PLEASE_ADD_RECIPIENT() { return manager.GetLocalizedString( 33 ) }\t\t\t\t\t\t//Please, specify at least one recipient\r\n\t@enumerable static get OUT_TYPE_NOT_FOUND() { return manager.GetLocalizedString( 87 ) }\t\t\t\t\t\t//Out type not found\r\n\t@enumerable static get IN_TYPE_NOT_FOUND() { return manager.GetLocalizedString( 88 ) }\t\t\t\t\t\t//In type not found\r\n\t//#endregion\r\n\r\n\t//#region SelectUser\r\n\t@enumerable static get SELECTION_APPLIED() { return manager.GetLocalizedString( 34 ) }\t\t\t\t\t\t//Selection applied\r\n\t//#endregion\r\n\r\n\t//#region Link list\r\n\t@enumerable static get RECORD_ALREADY_EXISTS() { return manager.GetLocalizedString( 35 ) }\t\t\t\t\t//Record already exists\r\n\t@enumerable static get RECORD_WAS_AUTOLINKED() { return manager.GetLocalizedString( 36 ) }\t\t\t\t\t//Record was autolinked\r\n\t@enumerable static get USER_SHOULD_BE_LINKED() { return manager.GetLocalizedString(86) }\t\t\t\t\t\t//At least one user should be linked\r\n\t@enumerable static get LINKS_TO_ENTITIES_MUST_BE_CREATED() { return manager.GetLocalizedString(1302) }\t\t//Link(s) to Entities must be created\r\n\t//#endregion\r\n\r\n\t//#region Screenshot\r\n\t@enumerable static get CREATING_SCREENSHOT() { return manager.GetLocalizedString( 38 ) }\t\t\t\t\t\t//Creating screenshot\r\n\t@enumerable static get SCREENSHOT_CREATED() { return manager.GetLocalizedString( 39 ) }\t\t\t\t\t\t//Screenshot was successfully created\r\n\t@enumerable static get MAIL_ADDRESS_FOR_GLOBAL_NOT_FOUND() { return manager.GetLocalizedString( 78 ) }\t\t//Mail address for ${GlobalVariable} can not be empty\r\n\t//#endregion\r\n\r\n\t//#region Migration tool\r\n\t@enumerable static get PROVIDE_SQL_SCRIPT() { return manager.GetLocalizedString( 42 ) }\t\t\t\t\t\t//Provide SQL script\r\n\t@enumerable static get SELECT_DATABASE() { return manager.GetLocalizedString( 43 ) }\t\t\t\t\t\t\t//Select at least one database\r\n\r\n\t@enumerable static get PLEASE_ADD_YOUR_EMAIL() { return manager.GetLocalizedString( 46 ) }\t\t\t\t\t//Please, add your mail\r\n\t@enumerable static get PLEASE_ADD_EMAIL() { return manager.GetLocalizedString( 47 ) }\t\t\t\t\t\t\t//Please, add email\r\n\t//#endregion\r\n\r\n\t//#region SecurityEditor\r\n\t@enumerable static get TYPE_IS_NOT_SUPPORTED() { return manager.GetLocalizedString( 48 ) }\t\t\t\t\t//This type is not supported\r\n\t//#endregion\r\n\r\n\t//#region Basket\r\n\t@enumerable static get RECORD_ADDED_TO_BASKET() { return manager.GetLocalizedString( 50 ) }\t\t\t\t\t//Record added to basket\r\n\t@enumerable static get PLEASE_CREATE_OR_SELECT_BASKET_RECORD() { return manager.GetLocalizedString( 51 ) }\t//Please create or select basket record\r\n\t@enumerable static get PLEASE_SELECT_BASKET_RECORD() { return manager.GetLocalizedString( 52 ) }\t\t\t\t //Please select basket record\r\n\t@enumerable static get RECORD_REMOVED_FROM_BASKET() { return manager.GetLocalizedString( 53 ) }\t\t\t\t//Record removed from basket\r\n\t//#endregion\r\n\r\n\t//#region ButtonFavorite\r\n\t@enumerable static get PLEASE_SELECT_ANY_RECORD() { return manager.GetLocalizedString( 54 ) }\t\t\t\t\t//Please select any record\r\n\t//#endregion\r\n\r\n\t//#region CanvasDesginer\r\n\t@enumerable static get CANVAS_UPDATED() { return manager.GetLocalizedString( 55 ) }\t\t\t\t\t\t\t//Canvas successfully updated\r\n\t@enumerable static get PLEASE_SAVE_CANVAS_BEFORE_EXECUTE() { return manager.GetLocalizedString( 56 ) }\t\t//Please save canvas data before execute\r\n\t@enumerable static get PLEASE_SELECT_SOURCE_AND_DESTINATION() { return manager.GetLocalizedString( 57 ) }\t//Please select both source and destination before executing\r\n\t@enumerable static get DATAWIZARD_EXECUTED() { return manager.GetLocalizedString( 58 ) }\t\t\t\t\t//DataWizard executed\r\n\t@enumerable static get ROLLBACK_APPLIED() { return manager.GetLocalizedString( 1245 ) }\t\t\t\t\t\t//Rollback applied successfully\r\n\t\r\n\t//#endregion\r\n\r\n\t//#region Drop\r\n\t@enumerable static get ONLY_ONE_FILE_WAS_SAVED() { return manager.GetLocalizedString( 59 ) }\t\t\t\t//Only one file from set was saved\r\n\t@enumerable static get DOCUMENT_UPLOADED() { return manager.GetLocalizedString( 60 ) }\t\t\t\t\t\t//Document successfully uploaded\r\n\t@enumerable static get OVERAL_FILE_SIZE_EXCEEDED() { return manager.GetLocalizedString( 91 ) }\t\t\t\t//Overall files size limit exceeded\r\n\t@enumerable static get ALLOWED_FILE_SIZE_EXCEEDED() { return manager.GetLocalizedString( 92 ) }\t\t\t\t//File size limit per file has been exceeded\r\n @enumerable static get EMPTY_SIZE_FILES_RESTRICTION() { return manager.GetLocalizedString( 745 ) }\t\t\t//Empty files could not be uploaded\r\n @enumerable static get ALLOWED_FILES_SIZE_EXCEEDED() { return manager.GetLocalizedString( 1049 ) }\t\t\t//It is allowed to upload only {size} MB per upload session\r\n @enumerable static get ALLOWED_FILES_AMOUNT_EXCEEDED() { return manager.GetLocalizedString( 1050 ) }\t\t//It is allowed to upload only {amount} files\r\n\t//#endregion\r\n\r\n //#region FormDesigner\r\n\t@enumerable static get SCREEN_UPDATED() { return manager.GetLocalizedString( 62 ) }\t\t\t\t\t\t\t//Screen successfully updated\r\n\t@enumerable static get SCREEN_REFRESHED() { return manager.GetLocalizedString( 63 ) }\t\t\t\t\t\t\t//Screen refreshed\r\n\t@enumerable static get PLEASE_PROVIDE_NAME() { return manager.GetLocalizedString( 64 ) }\t\t\t\t\t\t//Please provide a name\r\n\t@enumerable static get SAVE_ONLY_ONE_FILE() { return manager.GetLocalizedString( 513 ) }\t\t\t\t\t\t//In case of multiple files loading only one file from set will be saved\r\n\t//#endregion\r\n\r\n\t//#region Grid\r\n\t@enumerable static get ERROR_GET_GRID_DATA() { return manager.GetLocalizedString( 66 ) }\t\t\t\t\t\t//Error getting grid data\r\n\t@enumerable static get QUERY_BUILDER_NOT_FOUND() { return manager.GetLocalizedString( 67 ) }\t\t\t\t\t//QueryBuilderControl was not found\r\n\t@enumerable static get GRID_SUBJECT_NOT_FOUND() { return manager.GetLocalizedString( 68 ) }\t\t\t\t\t //Grid subject not found\r\n\t@enumerable static get RECORDS_LINKED() { return manager.GetLocalizedString( 69 ) }\t\t\t\t\t\t\t //Records linked\r\n\t@enumerable static get NO_SELECTED_RECORDS() { return manager.GetLocalizedString( 70 ) }\t\t\t\t\t\t//No selected records\r\n\t@enumerable static get NO_EDITABLE_COLUMNS() { return manager.GetLocalizedString( 81 ) }\t\t\t\t\t\t//No editable columns\r\n\t@enumerable static get ERROR_DELETE_GRID_DATA() { return manager.GetLocalizedString( 363 ) }\t\t\t\t\t//Error deleting grid data {ErrorMessage}\r\n\t@enumerable static get GRID_CELL_HYPERLINK_TOOLTIP() { return manager.GetLocalizedString( 540 ) }\t\t\t\t//Click to open record, hold CTRL button to open in popup\r\n\t@enumerable static get NOT_APPLICABLE_FOR_LIST_SCREEN() {return manager.GetLocalizedString( 705 )}\t\t\t // Not applicable for List screen\r\n\t@enumerable static get SORT_BY_COLUMN_TO_ENABLE_SORTING() {return manager.GetLocalizedString( 706 )}\t\t\t// Sort by this column to enable sorting\r\n @enumerable static get SOME_RECORDS_ARE_LOCKED() { return manager.GetLocalizedString(1146) }\t\t\t // Some records on the page are locked\r\n @enumerable static get NOTHING_TO_COPY() { return manager.GetLocalizedString(1170) }\t\t\t // Nothing to copy\r\n @enumerable static get LINK_RECORDS_NOT_FOUND() { return manager.GetLocalizedString(1171) }\t\t\t // Link records not found\r\n @enumerable static get USE_LINK_ADDLINK_OR_ADDQUERY_BUTTONS_TO_COPY() { return manager.GetLocalizedString(1172) }\t\t\t // Use Link, Add&Link, or Add Query buttons to copy\r\n\t@enumerable static get INVALID_RECORD_ID() { return manager.GetLocalizedString(1200) }\t\t\t\t\t\t\t//Invalid record ID\r\n\t//#endregion\r\n\r\n //#region Generic button\r\n\t@enumerable static get PARAM_IS_EMPTY() {return manager.GetLocalizedString( 812 )}\t\t\t \t\t\t// Cannot run the function - {ParamName} is empty\r\n\t@enumerable static get SELECT_RECORDS_TO_PROCESS() {return manager.GetLocalizedString( 951 )}\t\t\t \t// Select records to process\r\n\t//#endregion\r\n\r\n\t//#region Add query button\r\n\t@enumerable static get NO_QUERIES_FOUND() { return manager.GetLocalizedString( 1077 ) }\t\t\t\t\t\t\t// No queries found\r\n\t//#endregion\r\n\r\n\t//#region QueryBuilder\r\n\t@enumerable static get PLEASE_SELECT_ANY_FIELD() { return manager.GetLocalizedString( 71 ) }\t\t\t\t\t//Please select any field\r\n\t//#endregion\r\n\r\n\t//#region Lookup editor\r\n\t@enumerable static get CD_TABLE_NOT_FOUND() { return manager.GetLocalizedString( 72 ) }\t\t\t\t\t\t//CD_Table id not found\r\n\t@enumerable static get PLEASE_SELECT_ENTITY() { return manager.GetLocalizedString( 73 ) }\t\t\t\t\t\t//Please, select entity\r\n\t@enumerable static get SAVE_OR_DISCARD_CHANGES() { return manager.GetLocalizedString( 75 ) }\t\t\t\t\t//Save or discard changes before next step, please\r\n\t@enumerable static get ALL_RECORDS_SAVED() { return manager.GetLocalizedString( 76 ) }\t\t\t\t\t\t//All records saved\r\n\t@enumerable static get NO_PRIMARY_KEY() { return manager.GetLocalizedString( 77 ) }\t\t\t\t\t\t\t//There is no primary key field\r\n\t@enumerable static get SELECT_ANY_OPTION() { return manager.GetLocalizedString( 102 ) }\t\t\t\t\t\t//Select any option\r\n\t//#endregion\r\n\r\n\t//#region DataRole\r\n\t@enumerable static get DATA_ROLE_IS_NOT_SUPPORTED() { return manager.GetLocalizedString( 79 ) }\t\t\t\t//Current data role is not supported\r\n\t//#endregion\r\n\r\n\t//#region Field security\r\n\t@enumerable static get PLEASE_UPDATE_VIEW() { return manager.GetLocalizedString( 80 ) }\t\t\t\t\t\t//Please, update views after saving\r\n\t//#endregion\r\n\r\n\t//#region Camera\r\n\t@enumerable static get ERROR_CAMERA_INITIALIZATION() { return manager.GetLocalizedString( 83 ) }\t\t\t\t//Error camera initialization: {ErrorMessage}\r\n\t@enumerable static get GET_USER_MEDIA_IS_NOT_SUPPORTED() { return manager.GetLocalizedString( 84 ) }\t\t\t//getUserMedia not supported\r\n\t@enumerable static get PLEASE_TAKE_PHOTO() { return manager.GetLocalizedString( 85 ) }\t\t\t\t\t\t//Please, take the photo!\r\n\t//#endregion\r\n\r\n\t//#region Environment manager\r\n\t@enumerable static get CONFIGURATION_SAVED() { return manager.GetLocalizedString( 89 ) }\t\t\t\t\t\t//Database configuration saved\r\n\t@enumerable static get DATABASE_DELETED() { return manager.GetLocalizedString( 90 ) }\t\t\t\t\t\t\t//Database deleted\r\n\t@enumerable static get DATABASE_NOT_FOUND() { return manager.GetLocalizedString( 355 ) }\t\t\t\t\t\t//Databases not found\r\n\t@enumerable static get CONFIRMATION_FOR_COPY_ENVIROMENT() { return manager.GetLocalizedString( 1309 ) }\t\t//Are you sure that you want to copy the current environment? The operation will take a lot of time and could not be reverted.\r\n\t@enumerable static get ENVIROMENT_WAS_CREATED() { return manager.GetLocalizedString( 1310 ) }\t\t\t\t\t//New application {Environment} was created\r\n\t//#endregion\r\n\r\n\t//#region PortletSpace\r\n\t@enumerable static get PORTLET_SPACE_UPDATED() { return manager.GetLocalizedString( 510 ) }\t\t\t\t\t//Portlet space updated\r\n\t@enumerable static get MORE() { return manager.GetLocalizedString( 548 ) }\t\t\t\t\t\t\t\t\t//More dropdown\r\n\t@enumerable static get DELETE() { return manager.GetLocalizedString( 549 ) }\t\t\t\t\t\t\t\t\t//Delete button\r\n\t@enumerable static get PORTLET_SPACE_INFO() { return manager.GetLocalizedString( 550 ) }\t\t\t\t\t\t//Portlet space info\r\n\t@enumerable static get PORTLET_SPACE_NAME() { return manager.GetLocalizedString( 551 ) }\t\t\t\t\t\t//Portlet space name\r\n\t@enumerable static get USE_AS_MAIN() { return manager.GetLocalizedString( 552 ) }\t\t\t\t\t\t\t\t//Use as main\r\n\t@enumerable static get CREATE_NEW() { return manager.GetLocalizedString( 555 ) }\t\t\t\t\t\t\t\t//Create new button\r\n\t@enumerable static get PLEASE_ENTER_PORTLET_SPACE_NAME() { return manager.GetLocalizedString( 557 ) }\t\t\t//Please, enter a portlet space name\r\n\t@enumerable static get PORTLET_SPACE_WILL_BE_DELETED() { return manager.GetLocalizedString( 559 ) }\t\t\t//Portlet space will be deleted\r\n\t//#endregion\r\n\r\n\t//#region FileUpload\r\n\t@enumerable static get FILE_SIZE_IS_TOO_BIG() { return manager.GetLocalizedString( 93 ) }\t\t\t\t\t//File is too big. Max filesize {MaxFileSize}MiB\r\n\t//#endregion\r\n\r\n\t//#region License\r\n\t@enumerable static get LOGO_UPDATED() { return manager.GetLocalizedString( 115 ) }\t\t\t\t\t\t\t//Logo updated successful\r\n\t//#endregion\r\n\r\n\t//#region Profile card\r\n\t@enumerable static get CURRENT_PASSWORD_IS_REQUIRED() { return manager.GetLocalizedString( 94 ) }\t\t\t\t//Field CurrentPassword is required\r\n\t@enumerable static get NEW_PASSWORD_IS_REQUIRED() { return manager.GetLocalizedString( 95 ) }\t\t\t\t\t//Field NewPassword is required\r\n\t@enumerable static get RE_TYPE_PASSWORD_NOT_MATCH() { return manager.GetLocalizedString( 96 ) }\t\t\t\t//Re-type password do not match\r\n\t@enumerable static get PASSWORD_CHANGED() { return manager.GetLocalizedString( 97, 'Password changed' ) }\t\t\t\t\t\t\t//Password changed\r\n\t//#endregion\r\n\r\n\t//#region Theme builder\r\n\t@enumerable static get THEME_SAVED() { return manager.GetLocalizedString( 99 ) }\t\t\t\t\t\t\t\t//Theme saved\r\n\t//#endregion\r\n\r\n\t//#region Consultscreen\r\n\t@enumerable static get SECURITY_RESET_DONE() { return manager.GetLocalizedString( 100 ) }\t\t\t\t\t\t//Security reset done\r\n\t@enumerable static get CLICK_TO_SEE_ALL_RECORDS_IN_THE_LIST() { return manager.GetLocalizedString(1117) }\t\t//Click to see all records in the list\r\n\t@enumerable static get THE_NUMBER_OF_RECORDS_EXCEEDS_THE_CONFIGURED_LIMIT() { return manager.GetLocalizedString(1123)}\t\t//The number of records to show exceeds the configured limit\r\n\t//#endregion\r\n\r\n\t//#region Control editor\r\n\t@enumerable static get PLEASE_SET_ALL_PROPERTIES() { return manager.GetLocalizedString( 101 ) }\t\t\t\t//Please set all properties\r\n\t//#endregion\r\n\r\n\t//#region FieldCollection\r\n\t@enumerable static get VIEWS_UPDATED() { return manager.GetLocalizedString( 103 ) }\t\t\t\t\t\t\t//Views updated\r\n\t@enumerable static get SAVED() { return manager.GetLocalizedString( 104 ) }\t\t\t\t\t\t\t\t\t//Saved\r\n\t//#endregion\r\n\r\n\t//#region UserVarManager\r\n\t@enumerable static get WRONG_ARGS() { return manager.GetLocalizedString( 105 ) }\t\t\t\t\t\t\t\t//Wrong args while adding to recent, record was not added\r\n\t//#endregion\r\n\r\n\t//#region TypeScreen\r\n\t@enumerable static get TYPE_IS_NOT_AVAILABLE() { return manager.GetLocalizedString( 107 ) }\t\t\t\t\t//{TypeName} is not available. Please contact your SuperUser\r\n\t//#endregion\r\n\r\n\t//#region Search screen\r\n\t@enumerable static get RECORD_IS_SEARCH_ONLY() { return manager.GetLocalizedString( 108 ) }\t\t\t\t\t//Record is search only\r\n\t@enumerable static get NO_SEARCHABLE_FIELDS() { return manager.GetLocalizedString( 109 ) }\t\t\t\t\t//Searchable fields not found. Please, select at least one on Database Designer\r\n\t@enumerable static get NO_DATA_FOUND_WITH_APPLIED_FILTER() { return manager.GetLocalizedString(1105) }\t\t//No data found with applied filter.Default search was used.\r\n\t//#endregion\r\n\r\n //#region ListScreen\r\n\t@enumerable static get EDIT_SCREEN_NOT_EXISTS() { return manager.GetLocalizedString( 110 ) }\t\t\t\t\t//Edit screen for this type doesn't exist\r\n\t//#endregion\r\n\r\n\t//#region FormDesigner\r\n\t@enumerable static get ENTITY_ALREADY_ADDED() { return manager.GetLocalizedString( 111 ) }\t\t\t\t\t//Entity already added\r\n\t@enumerable static get NEW_CONTROL_CREATED() { return manager.GetLocalizedString( 112 ) }\t\t\t\t\t\t//New control has been created\r\n\t@enumerable static get FIELD_ALREADY_ADDED() { return manager.GetLocalizedString( 114 ) }\t\t\t\t\t\t//Current field has already been added\r\n\t@enumerable static get ONLY_CUSTOM_FIELDS_ALLOWED() { return manager.GetLocalizedString( 1347 ) }\t\t\t\t//Only custom fields of $Time allowed\r\n\t@enumerable static get FIELD_FROM_ENTITY_NAME_IS_ALREADY_PRESENT() { return manager.GetLocalizedString( 1348 ) }\t\t//Field from {entityName} is already present\r\n\t//#endregion\r\n\r\n\t//#region DatabaseDesigner\r\n\t@enumerable static get LINK_TABLE_COULD_NOT_BE_REVERSED() { return manager.GetLocalizedString( 452 ) }\t\t//Link table for SYS table could not be reversed\r\n\t@enumerable static get NO_CHANGES_TO_UPDATE_IN_DATABASE() { return manager.GetLocalizedString( 467 ) }\t\t//There are no changes to update in the database\r\n\t@enumerable static get REPLACE_EXISTING_VIEW() { return manager.GetLocalizedString( 618 ) }\t\t\t\t\t//The existing view will be replaced with a new one. Process?\r\n\t@enumerable static get EMPTY_CHECKLIST_FIELD() { return manager.GetLocalizedString( 925 ) }\t\t\t\t\t//Checklist element name cannot be empty\r\n\t@enumerable static get SELECT_A_LOOKUP() { return manager.GetLocalizedString( 1355 ) }\t\t\t\t\t\t//Select a lookup\r\n\t//#endregion\r\n\r\n\t//#region Lifestatus designer\r\n\t@enumerable static get LIFESTATUS_FLOW_LOADED() { return manager.GetLocalizedString( 453 ) }\t\t\t\t\t//Type lifestatus flow succesfully loaded\r\n\t@enumerable static get ERROR_BUILDING_LIFE_CYCLE() { return manager.GetLocalizedString( 454 ) }\t\t\t\t//Error building life cycle\r\n\t@enumerable static get YOUR_FLAG_IMAGE_WAS_UPLOADED_SUCCESSFULLY() { return manager.GetLocalizedString( 502 ) } //Your flag image was uploaded successfully!\r\n\t@enumerable static get INCORRECT_PASSWORD() { return manager.GetLocalizedString( 518 ) }; // Wrong password\r\n\t@enumerable static get PLEASE_CREATE_ALL_THREE_TRANSITIONS_FOR_A_TEST_NODE() { return manager.GetLocalizedString( 1265 ) }; // Please, create all three transitions for a Test node {TestNodeName}\r\n\t@enumerable static get THE_NEW_DEFAULT_RETIRED_STATUS() { return manager.GetLocalizedString( 1436 ) }; // The {name} is new default retired status\r\n\t@enumerable static get THERE_IS_NOT_DEFAULT_RETIRED_STATUS() { return manager.GetLocalizedString( 1438 ) }; // There is no default retired status\r\n\t@enumerable static get SELECT_STATUS_FOR_SUB_FLOW() { return manager.GetLocalizedString( 1445 ) }; \t\t// Please, select Status for SubFlow\r\n\t//#endregion\r\n\r\n\t//#region Personal Settings\r\n\t@enumerable static get GLOBALS_UPDATED() { return manager.GetLocalizedString( 508 ) }\t\t\t\t\t\t\t//Type lifestatus flow succesfully loaded\r\n\t@enumerable static get INVALID_CULTURE() { return manager.GetLocalizedString( 904 ) }\t\t\t\t\t\t\t//Invalid culture: {currentCulture}. Setting default culture: {localCulture}\r\n\t@enumerable static get INVALID_DESKTOP_LANGUAGE() { return manager.GetLocalizedString( 1248 ) }\t\t\t\t//Invalid desktop language: {currentDesktopLanguage}. Setting default desktop language: {defaultDesktopLanguage}\r\n\t//#endregion\r\n\r\n\t//#region Progressbar\r\n\t@enumerable static get TITLE_CONVERTED_TYPE_OF_RECORD() { return manager.GetLocalizedString( 542 ) }\t\t\t//Type of record being converted. Please, save record firstly\r\n //#endregion\r\n\r\n\t//#region BulkEmail\r\n\t@enumerable static get TABLE_IS_NOT_SELECTED() { return manager.GetLocalizedString( 352 ) }\t\t\t//Template table is not selected for control\r\n\t@enumerable static get MAILING_CONFIGURED() { return manager.GetLocalizedString( 354 ) }\t\t\t\t\t//Mailing configured\r\n\t@enumerable static get BULK_EDIT_RECORD_NUMBER_WILL_BE_EDITED() { return manager.GetLocalizedString( 1224 ) }\t//Bulk Edit: {records} records will be edited\r\n\t@enumerable static get EDIT_ALL_RECORD_NUMBER_WILL_BE_EDITED() { return manager.GetLocalizedString( 1235 ) }\t//Edit All: {records} records will be edited\r\n\t//#endregion\r\n\r\n\t//#region Outlook Add-In\r\n\t@enumerable static get FORM_FOR_EMAIL_NOT_CONFIGURED() { return manager.GetLocalizedString( 699 ) }\t\t\t\t\t//Forms for emails are not configured on this system. Contact your superuser\r\n\t@enumerable static get CANNOT_LINK_RECORD() { return manager.GetLocalizedString( 1072 ) }\t\t\t\t\t//Spheeres Link: cannot link record\r\n\t//#endregion\r\n\r\n\t//#region Finacial Dashboard\r\n\t@enumerable static get QUERY_EXPRESSION_WAS_NOT_CREATED() { return manager.GetLocalizedString(758)}; //Query expression was not created\r\n\t@enumerable static get DOCUMENTS_HAS_BEEN_SENT_TO_FINANCIAL_PROCESSOR() { return manager.GetLocalizedString(759)}; //Documents has been sent to Financial Processor\r\n\t//#endregion\r\n\r\n\t//#region Clean Database Modal\r\n\t@enumerable static get NO_CLEANING_OPTION_SELECTED() { return manager.GetLocalizedString(764)};\t\t\t\t//Please, select what you would like to clean\r\n\t//#endregion\r\n\r\n\t//#region Scheduler\r\n\t@enumerable static get INVALID_SCHEDULER_SUBJECT() { return manager.GetLocalizedString(884) };\t\t\t\t//Invalid scheduler subject specified\r\n\t//#endregion\r\n\r\n\t//#region ProductConfigurator\r\n\t@enumerable static get ERROR_GETTING_CONFIGURED_PRODUCTS() { return manager.GetLocalizedString(974) }; //Error getting configured products\r\n\t@enumerable static get ERROR_GETTING_ROOT_PRODUCTS(){ return manager.GetLocalizedString((975))}; //Error getting root products\r\n\t@enumerable static get ERROR_GETTING_NESTED_PRODUCTS(){ return manager.GetLocalizedString((976))};\t\t//Error getting nested products\r\n\t@enumerable static get ERROR_GETTING_PRODUCT_INFO(){ return manager.GetLocalizedString((977))};\t\t//Error getting product info\r\n\t@enumerable static get ERROR_GETTING_CONFIGURED_PRODUCT(){ return manager.GetLocalizedString((978))};\t\t//Error getting configured product\r\n\t@enumerable static get ERROR_GETTING_GROUPS_PRODUCTS(){ return manager.GetLocalizedString((979))};\t\t//Error getting group's products\r\n\t@enumerable static get ERROR_CREATING_CONFIGURATION(){ return manager.GetLocalizedString((980))};\t\t//Error creating configuration\r\n\t@enumerable static get ERROR_UPDATING_CONFIGURATION(){ return manager.GetLocalizedString((981))};\t\t//Error updating configuration\r\n\t@enumerable static get CLICK_TO_SEE_ALL_COLORS() { return manager.GetLocalizedString((1119))};\t\t//Click to see all colors\r\n\t@enumerable static get CLICK_TO_SEE_ALL_IMAGES() { return manager.GetLocalizedString((1120))};\t\t//Click to see all images\r\n\t@enumerable static get YOU_DONT_HAVE_ANY_OF_REQUIRED_BUSINESS_ROLES() {return manager.GetLocalizedString((1197))};\t\t//You don't have any of required business roles\r\n\t@enumerable static get PLEASE_FILL_ALL_DATA() {return manager.GetLocalizedString((1442))};\t\t//Please, fill all data\r\n\t@enumerable static get PROPERTY_VALUE_SHOULD_HAVE_THE_UNIQUE_NAME() {return manager.GetLocalizedString((1498))};\t\t//Property value should have the unique Name\r\n\t//#endregion\r\n\r\n\t//#region Document control\r\n\t@enumerable static get CHECKIN_IS_NOT_ALLOWED() { return manager.GetLocalizedString(1051) } \t\t\t\t\t//Cannot CheckIn: Assemblies must be checked in via SolidWorks\r\n\t//#endregion\r\n\r\n\t//#region Planner\r\n\t@enumerable static get UNLINK_QUERY_RECORD() { return manager.GetLocalizedString(1071) } \t//This will unlink the existing record. Continue?\r\n\t@enumerable static get COPY_PLANNER_DATA() { return manager.GetLocalizedString(1154) } \t\t//Selected rows/columns already contain planning data. Overwrite?\r\n\t@enumerable static get SELECT_PERIOD() { return manager.GetLocalizedString(1157) } \t\t\t//Select {periodName}s to copy to\r\n\t@enumerable static get SELECT_PLANNER_ROWS() { return manager.GetLocalizedString(1158) } \t//Select rows to copy to\r\n\t//#endregion\r\n\r\n\t//#region Timer\r\n\t@enumerable static get ERROR_READING_TIMER_STATE() { return manager.GetLocalizedString(1131) }\t\t//Error reading timer state\r\n\t@enumerable static get ERROR_GETTING_ACTIVE_TIMERS() { return manager.GetLocalizedString(1132) }\t\t//Error getting active timers\r\n\t@enumerable static get ERROR_STARTING_TIMER() { return manager.GetLocalizedString(1133) }\t\t//Error starting timer\r\n\t@enumerable static get ERROR_STOPPING_TIMER() { return manager.GetLocalizedString(1134) }\t\t//Error stopping timer\r\n\t@enumerable static get ERROR_SETTING_OVERTIME() { return manager.GetLocalizedString(1135) }\t\t//Error setting overtime\r\n\t@enumerable static get GOOGLE_KEY_IS_NOT_VALID() { return manager.GetLocalizedString(1431) }\t\t//Please, check Google maps API key global. The current API key is not valid\r\n\t//#endregion\r\n\r\n\t//#region Planner\r\n\t@enumerable static get NO_ANY_VIEW_OPTIONS() { return manager.GetLocalizedString(1432) }\t\t\t//Please, select at least one option in properties - Month, Week, Day\r\n\t//#endregion\t\r\n\r\n\r\n\t//#region Dropdown control\r\n\t@enumerable static get ERROR_GETTING_DROPDOWN_DATA() { return manager.GetLocalizedString(1433) }\t\t\t//Error getting dropdown data for {fieldName}\r\n\t//#endregion\t\r\n\r\n\t//#region Report issue\r\n\t@enumerable static get ISSUE_HAS_BEEN_SENT_TO_SUPPORT_TEAM() { return manager.GetLocalizedString(1463) }\t\t\t\t//Issue has been sent to support team\r\n\t@enumerable static get SCREENSHOT_CAN_BE_MADE_ONLY_USING_HTTPS() { return manager.GetLocalizedString(1464) }\t\t\t//Screenshot can be made only using https\r\n\t//#endregion\r\n\r\n\t//#region Memo\r\n\t@enumerable static get WRONG_FORMAT_IN_MEMO_TIMESTAMP_FORMAT_GLOBAL() { return manager.GetLocalizedString( 1503 ) }\t\t//Wrong format {formatValue} in Memo Timestamp Format global, e.g. {defaultFormatValue}\r\n\t//#endregion\r\n\r\n}\r\n\r\nexport class LABELS {\r\n\t//#region Common\r\n\t@enumerable static get SEND() { return manager.GetLocalizedString( 1521 ) }\t\t\t\t\t\t\t\t//Send\r\n\t@enumerable static get NO_IMAGE() { return manager.GetLocalizedString( 1271 ) }\t\t\t\t\t\t\t\t//No image\r\n\t@enumerable static get ID() { return manager.GetLocalizedString( 119 ) }\t\t\t\t\t\t\t\t\t\t//Id\r\n\t@enumerable static get NAME() { return manager.GetLocalizedString( 120 ) }\t\t\t\t\t\t\t\t\t//Name\r\n\t@enumerable static get TYPE() { return manager.GetLocalizedString( 121 ) }\t\t\t\t\t\t\t\t\t//Type\r\n\t@enumerable static get MESSAGE() { return manager.GetLocalizedString( 469 ) }\t\t\t\t\t\t\t\t\t//Message\r\n\t@enumerable static get SUCCESSFUL() { return manager.GetLocalizedString( 470 ) }\t\t\t\t\t\t\t\t//Successful\r\n\t@enumerable static get WARNINGS() { return manager.GetLocalizedString( 471 ) }\t\t\t\t\t\t\t\t//Warnings\r\n\t@enumerable static get ERRORS() { return manager.GetLocalizedString( 472 ) }\t\t\t\t\t\t\t\t\t//Errors\r\n\t@enumerable static get RESULTS() { return manager.GetLocalizedString(749)}\t\t\t\t\t\t\t\t\t//Results\r\n\t@enumerable static get PROCESS() { return manager.GetLocalizedString( 754 ) }\t\t\t\t\t\t\t\t\t//Process\r\n\t@enumerable static get SEARCH_TERM() { return manager.GetLocalizedString( 122 ) }\t\t\t\t\t\t\t\t//Search Term\r\n\t@enumerable static get ROOT() { return manager.GetLocalizedString( 126 ) }\t\t\t\t\t\t\t\t\t//Root\r\n\t@enumerable static get SEARCH() { return manager.GetLocalizedString(123) }\t\t\t\t\t\t\t\t\t//Search\r\n\t@enumerable static get SEARCH_BY_NAME() { return manager.GetLocalizedString(393) }\t\t\t\t\t\t\t//Search by name\r\n\t@enumerable static get SETTINGS() { return manager.GetLocalizedString(1065) }\t\t\t\t\t\t\t\t\t//Settings\r\n @enumerable static get NEW() { return manager.GetLocalizedString( 140 ) }\t\t\t\t\t\t\t\t\t\t//New\r\n\t@enumerable static get SEARCH_WITH_DOTS() { return manager.GetLocalizedString( 144 ) }\t\t\t\t\t\t//Search...\r\n\t@enumerable static get SEARCH_GRID() { return manager.GetLocalizedString( 1106 ) }\t\t\t\t\t\t\t//Search text\r\n\t@enumerable static get ADD() { return manager.GetLocalizedString( 124 ) }\t\t\t\t\t\t\t\t\t\t//Add\r\n\t@enumerable static get CANCEL() { return manager.GetLocalizedString( 125, 'Cancel' ) }\t\t\t//Cancel\r\n\t@enumerable static get DELETE() { return manager.GetLocalizedString( 145 ) }\t\t\t\t\t\t\t\t\t//Delete\r\n\t@enumerable static get SAVE_CHANGES() { return manager.GetLocalizedString( 146 ) }\t\t\t\t\t\t\t//Save changes\r\n\t@enumerable static get SAVE_AND_CLOSE() { return manager.GetLocalizedString( 1504 ) }\t\t\t\t\t\t\t//Save & Close\r\n\t@enumerable static get ALL() { return manager.GetLocalizedString( 127 ) }\t\t\t\t\t\t\t\t\t\t//All\r\n\t@enumerable static get SHOW() { return manager.GetLocalizedString( 147 ) }\t\t\t\t\t\t\t\t\t//Show\r\n\t@enumerable static get SAVE() { return manager.GetLocalizedString( 148 ) }\t\t\t\t\t\t\t\t\t//Save\r\n\t@enumerable static get EDIT() { return manager.GetLocalizedString( 150 ) }\t\t\t\t\t\t\t\t\t//Edit\r\n\t@enumerable static get LIST() { return manager.GetLocalizedString( 151 ) }\t\t\t\t\t\t\t\t\t//List\r\n\t@enumerable static get RETURN() { return manager.GetLocalizedString( 152 ) }\t\t\t\t\t\t\t\t\t//Return\r\n\t@enumerable static get CREATE() { return manager.GetLocalizedString( 164 ) }\t\t\t\t\t\t\t\t\t//Create\r\n\t@enumerable static get RESET() { return manager.GetLocalizedString( 165 ) }\t\t\t\t\t\t\t\t\t//Reset\r\n\t@enumerable static get ENTITIES() { return manager.GetLocalizedString( 172 ) }\t\t\t\t\t\t\t\t//Entities\r\n\t@enumerable static get REVERT() { return manager.GetLocalizedString( 218 ) }\t\t\t\t\t\t\t\t\t//Revert\r\n\t@enumerable static get OK() { return manager.GetLocalizedString( 223, 'Ok' ) }\t\t\t\t\t//Ok\r\n\t@enumerable static get ACCEPT() { return manager.GetLocalizedString( 236 ) }\t\t\t\t\t\t\t\t\t//Accept\r\n\t@enumerable static get FROM() { return manager.GetLocalizedString( 228 ) }\t\t\t\t\t\t\t\t\t//From\r\n\t@enumerable static get SUBJECT() { return manager.GetLocalizedString( 230 ) }\t\t\t\t\t\t\t\t\t//Subject\r\n\t@enumerable static get DISCARD() { return manager.GetLocalizedString( 278 ) }\t\t\t\t\t\t\t\t\t//Discard\r\n\t@enumerable static get DESCRIPTION() { return manager.GetLocalizedString( 231 ) }\t\t\t\t\t\t\t\t//Description\r\n\t@enumerable static get DEFAULT() { return manager.GetLocalizedString( 304 ) }\t\t\t\t\t\t\t\t\t//Default\r\n\t@enumerable static get VALUE() { return manager.GetLocalizedString( 569 ) }\t\t\t\t\t\t\t\t\t//Value\r\n\t@enumerable static get YES() { return manager.GetLocalizedString( 358 ) }\t\t\t\t\t\t\t\t\t\t//Yes\r\n\t@enumerable static get NO() { return manager.GetLocalizedString( 359 ) }\t\t\t\t\t\t\t\t\t\t//No\r\n\t@enumerable static get NO_NAME() { return manager.GetLocalizedString( 1315 ) }\t\t\t\t\t\t\t\t//No Name\r\n\t@enumerable static get GROUP() { return manager.GetLocalizedString( 203 ) }\t\t\t\t\t\t\t\t\t//Group\r\n\t@enumerable static get RUN_QUERY() { return manager.GetLocalizedString( 492 ) }\t\t\t\t\t\t\t\t//Run query\r\n\t@enumerable static get RUN() { return manager.GetLocalizedString( 594 ) }\t\t\t\t\t\t\t\t\t\t//Run\r\n\t@enumerable static get TEST() { return manager.GetLocalizedString( 619 ) }\t\t\t\t\t\t\t\t\t//Test\r\n\t@enumerable static get RE_CREATE() { return manager.GetLocalizedString( 620 ) }\t\t\t\t\t\t\t\t//Re-create\r\n\t@enumerable static get NO_RECORD() { return manager.GetLocalizedString(680) }\t\t\t\t\t\t\t\t\t//No record\r\n\t@enumerable static get RECORD_DISABLED() { return manager.GetLocalizedString(900) }\t\t\t\t\t\t\t//Record disabled\r\n @enumerable static get DONE() { return manager.GetLocalizedString(855) }\t\t\t\t\t\t\t\t \t\t//Done\r\n\t@enumerable static get PAGE() { return manager.GetLocalizedString(922) }\t\t\t\t\t\t\t\t \t\t//Page\r\n\t@enumerable static get EMPTY() { return manager.GetLocalizedString(928) }\t\t\t\t\t\t\t\t \t\t//Empty\r\n\t@enumerable static get EMPTY_VALUE() { return manager.GetLocalizedString(1081) }\t\t\t\t\t\t\t\t//(empty)\r\n\t@enumerable static get DELTA() { return manager.GetLocalizedString( 931 ) }\t\t\t\t\t\t\t\t\t//Delta\r\n\t@enumerable static get IS_REQUIRED() { return manager.GetLocalizedString( 909 ) }\t\t\t\t\t\t\t\t//is required\r\n\t@enumerable static get VALUES() { return manager.GetLocalizedString( 936 ) }\t\t\t\t\t\t\t\t\t//values\r\n\t@enumerable static get REVERSE() { return manager.GetLocalizedString( 937 ) }\t\t\t\t\t\t\t\t\t//reverse\r\n\t@enumerable static get COPY() { return manager.GetLocalizedString(673) };\t\t\t\t\t\t\t\t\t\t//Copy\r\n\t@enumerable static get NEXT() { return manager.GetLocalizedString(941) };\t\t\t\t\t\t\t\t\t\t//Next\r\n\t@enumerable static get NEXT_NEXT() { return manager.GetLocalizedString(942) };\t\t\t\t\t\t\t\t\t//Next Next\r\n\t@enumerable static get USE() { return manager.GetLocalizedString(943) };\t\t\t\t\t\t\t\t\t\t//Use\r\n\t@enumerable static get DISTRIBUTE() { return manager.GetLocalizedString(944) };\t\t\t\t\t\t\t\t//Distribute\r\n\t@enumerable static get DAY() { return manager.GetLocalizedString(948) };\t\t\t\t\t\t\t\t\t\t//Day\r\n\t@enumerable static get MONTH() { return manager.GetLocalizedString(949) };\t\t\t\t\t\t\t\t\t//Month\r\n\t@enumerable static get THIS_FIELD_IS_REQUIRED() { return manager.GetLocalizedString( 966 ) }\t\t\t\t\t//This field is required\r\n\t@enumerable static get CHANGE() { return manager.GetLocalizedString( 712 ) }\t\t\t\t\t\t\t\t\t//Change\r\n\t@enumerable static get FEATURE_TYPE_IS_NOT_SET() { return manager.GetLocalizedString( 982 ) } //Feature type is not set\r\n\t@enumerable static get UPLOAD() { return manager.GetLocalizedString( 984 ) } \t\t\t\t//Upload\r\n\t@enumerable static get OKAY() { return manager.GetLocalizedString( 985 ) } \t\t\t\t\t//Okay\r\n\t@enumerable static get UPLOAD_FILES() { return manager.GetLocalizedString( 986 ) } \t\t\t//Upload files\r\n\t@enumerable static get TOTAL() { return manager.GetLocalizedString( 200 ) }\t\t\t\t\t\t\t\t //Total\r\n\t@enumerable static get COUNT() { return manager.GetLocalizedString( 1518 ) }\t\t\t\t\t\t\t\t //Count\r\n\t@enumerable static get SHOW_MORE() { return manager.GetLocalizedString( 1089 ) }\t\t\t\t\t\t\t\t //Show More\r\n\t@enumerable static get NEW_RECORD() { return manager.GetLocalizedString( 149 ) }\t\t\t\t\t\t\t\t//New Record\r\n\t@enumerable static get SHOW_IN_MENU() { return manager.GetLocalizedString( 1140 ) }\t\t\t\t\t\t\t//Show in menu\r\n\t@enumerable static get SHOW_IN_PORTLET() { return manager.GetLocalizedString( 1496 ) }\t\t\t\t\t\t\t//Show in portlet\r\n\t@enumerable static get LOCKED_BY_SUPER_USER() { return manager.GetLocalizedString( 1176 ) }\t\t\t\t\t//Locked by superuser\r\n\t@enumerable static get NO_RECORD_SELECTED() { return manager.GetLocalizedString( 1225 ) }\t\t\t\t\t\t//No record selected.\r\n\t@enumerable static get RECORD_LINK() { return manager.GetLocalizedString( 1233 ) }\t\t\t\t\t\t\t\t//Record link.\r\n\t@enumerable static get SPHEERES_LINK() { return manager.GetLocalizedString( 1234 ) }\t\t\t\t\t\t\t//Spheeres link\r\n\t@enumerable static get ROLLBACK() { return manager.GetLocalizedString(1251) }\t\t\t\t\t\t\t\t\t\t//Rollback\r\n\t@enumerable static get MEMOS() { return manager.GetLocalizedString(1316) }\t\t\t\t\t\t\t\t\t\t//Memos\r\n\t@enumerable static get CLICK_TO_NAVIGATE_TO_SPECIAL_SCREEN() { return manager.GetLocalizedString(1319) }\t\t//Click to navigate to Special screen\r\n\t@enumerable static get REPLY() { return manager.GetLocalizedString(1325) }\t\t\t\t\t\t\t\t\t//Reply\r\n\t@enumerable static get CC() { return manager.GetLocalizedString(1326) }\t\t\t\t\t\t\t\t\t\t//сс\r\n\t@enumerable static get BCC() { return manager.GetLocalizedString(1327) }\t\t\t\t\t\t\t\t\t\t//bcc\r\n\t@enumerable static get EMAIL_SUBJECT() { return manager.GetLocalizedString(1328) }\t\t\t\t\t\t\t//Email Subject\r\n\t@enumerable static get E_MAIL() { return manager.GetLocalizedString(1330) }\t\t\t\t\t\t\t\t\t//e-mail\r\n\t@enumerable static get FORWARD() { return manager.GetLocalizedString(1332) }\t\t\t\t\t\t\t\t\t//Forward\r\n\t@enumerable static get REPLY_TO_ALL() { return manager.GetLocalizedString(1331) }\t\t\t\t\t\t\t\t//Reply to all\r\n\t@enumerable static get TO_() { return manager.GetLocalizedString(1335) }\t\t\t\t\t\t\t\t\t\t//to\r\n\t@enumerable static get REPORT_HOURS() { return manager.GetLocalizedString(1410) }\t\t\t\t\t\t\t\t\t//Report hours\r\n\t@enumerable static get SKIP() { return manager.GetLocalizedString(1411) }\t\t\t\t\t\t\t\t\t\t//Skip\r\n\t// #endregion\r\n\r\n\t//#region Gallery Buttons\r\n\t@enumerable static get ZOOM_IN() { return manager.GetLocalizedString( 1091 ) }\t\t\t\t\t\t\t\t //Zoom In\r\n\t@enumerable static get ZOOM_OUT() { return manager.GetLocalizedString( 1092 ) }\t\t\t\t\t\t\t\t //Zoom Out\r\n\t@enumerable static get ACTUAL_SIZE() { return manager.GetLocalizedString( 1093 ) }\t\t\t\t\t\t\t\t //Actual size\r\n\t@enumerable static get ROTATE_FLIP() { return manager.GetLocalizedString( 1094 ) }\t\t\t\t\t\t\t\t //Rotate/flip to initial position\r\n\t@enumerable static get PREVIOUS() { return manager.GetLocalizedString( 1095 ) }\t\t\t\t\t\t\t\t //Previous\r\n\t@enumerable static get ROTATE_LEFT() { return manager.GetLocalizedString( 1096 ) }\t\t\t\t\t\t\t\t //Rotate left\r\n\t@enumerable static get ROTATE_RIGHT() { return manager.GetLocalizedString( 1097 ) }\t\t\t\t\t\t\t\t //Rotate right\r\n\t@enumerable static get FLIP_HORIZONTALLY() { return manager.GetLocalizedString( 1098 ) }\t\t\t\t\t\t\t\t //Flip horizontally\r\n\t@enumerable static get FLIP_VERTICALLY() { return manager.GetLocalizedString( 1099 ) }\t\t\t\t\t\t\t\t //Flip vertically\r\n\t@enumerable static get ANNOTATIONS() { return manager.GetLocalizedString( 1191 ) }\t\t\t\t\t\t\t\t //Annotations\r\n\t//#endregion\r\n\r\n\t//#region OnOf toggler\r\n\t@enumerable static get ON() { return manager.GetLocalizedString( 153 ) }\t\t\t\t\t\t\t\t\t\t//On\r\n\t@enumerable static get OFF() { return manager.GetLocalizedString( 154 ) }\t\t\t\t\t\t\t\t\t\t//Of\r\n\t//#endregion\r\n\r\n\t//#region UserMenu\r\n\t@enumerable static get MY_SETTINGS() { return manager.GetLocalizedString( 1 ) }\t\t\t\t\t\t\t\t//My Settings\r\n\t@enumerable static get MY_CONTACT_PAGE() { return manager.GetLocalizedString( 2 ) }\t\t\t\t\t\t\t//My Contact Page\r\n\t@enumerable static get MY_DAILY_STUFF() { return manager.GetLocalizedString( 3 ) }\t\t\t\t\t\t\t//My Daily Stuff\r\n\t@enumerable static get DEDUPLICATION() { return manager.GetLocalizedString( 4 ) }\t\t\t\t\t\t\t\t//Deduplication\r\n\t@enumerable static get DOWNLOAD_CLIENT() { return manager.GetLocalizedString( 5 ) }\t\t\t\t\t\t\t//Download Сlient\r\n\t@enumerable static get DOWNLOAD_MAIL_PLUGIN_32() { return manager.GetLocalizedString( 678 ) }\t\t\t\t\t//Download Mail Plugin(32-bit)\r\n\t@enumerable static get DOWNLOAD_MAIL_PLUGIN_64() { return manager.GetLocalizedString( 679 ) }\t\t\t\t\t//Download Mail Plugin(64-bit)\r\n\t@enumerable static get LOCK_SCREEN() { return manager.GetLocalizedString( 6 ) }\t\t\t\t\t\t\t\t//Lock Screen\r\n\t@enumerable static get LOG_OUT() { return manager.GetLocalizedString( 7 ) }\t\t\t\t\t\t\t\t\t//Log Out\r\n\t@enumerable static get HELP() { return manager.GetLocalizedString( 8 ) }\t\t\t\t\t\t\t\t\t\t//Help\r\n\t@enumerable static get REPORT_ISSUE() { return manager.GetLocalizedString( 1080 ) }\t\t\t\t\t\t\t//Report issue\r\n\t@enumerable static get ABOUT() { return manager.GetLocalizedString(9) }\t\t\t\t\t\t\t\t\t\t//About\r\n\t@enumerable static get LOCKED() { return manager.GetLocalizedString(1349) }\t\t\t\t\t\t\t\t\t//Locked\r\n\t@enumerable static get NOT() { return manager.GetLocalizedString(1350) }\t\t\t\t\t\t\t\t\t\t//Not\r\n\r\n\t@enumerable static get DOWNLOADS() { return manager.GetLocalizedString(697) }\t\t\t\t\t\t\t\t\t//Downloads\r\n\r\n\t@enumerable static get REQUIRED_NET_FRAMEWORK() { return manager.GetLocalizedString(698) }\t\t\t\t\t\t//*Required Microsoft .NET Framevork version: 4.5.2+\r\n\t@enumerable static get CLICK_TO_START() { return manager.GetLocalizedString(1519) }\t\t\t\t\t\t//Click to start\r\n\t\r\n\t//#endregion\r\n\r\n\t//#region Deduplication\r\n\t@enumerable static get DEDUPLICATE() { return manager.GetLocalizedString( 1428 ) }\t\t\t\t\t\t\t//Deduplicate\r\n\t@enumerable static get DEDUPLICATE_ALL() { return manager.GetLocalizedString( 1429 ) }\t\t\t\t\t\t//Deduplicate All\r\n\t@enumerable static get MATCH_ALL() { return manager.GetLocalizedString( 1427 ) }\t\t\t\t\t\t\t\t//Match All\r\n\t@enumerable static get MINIMAL_MATCH_RATE() { return manager.GetLocalizedString( 1430 ) }\t\t\t\t\t\t//Minimal match rate\r\n\t@enumerable static get DELETE_ALL() { return manager.GetLocalizedString( 1447 ) }\t\t\t\t\t\t\t\t//Delete All\r\n\t@enumerable static get CLICK_TO_DELETE_ALL_MATCH_LINKS() { return manager.GetLocalizedString( 1448 ) }\t\t//Click to delete all match links for the current entity\r\n\t//#endregion\r\n\r\n\t//#region Main menu\r\n\t@enumerable static get DESIGNERS() { return manager.GetLocalizedString( 11 ) }\t\t\t\t\t\t\t\t//Designers\r\n\t@enumerable static get LOOKUP_EDITOR() { return manager.GetLocalizedString( 12 ) }\t\t\t\t\t\t\t//Lookup editor\r\n\t@enumerable static get DATABASE_DESIGNER() { return manager.GetLocalizedString( 13 ) }\t\t\t\t\t\t//Database Designer\r\n\t@enumerable static get FORM_DESIGNER() { return manager.GetLocalizedString( 14 ) }\t\t\t\t\t\t\t//Form Designer\r\n\t@enumerable static get CANVAS_DESIGNER() { return manager.GetLocalizedString( 15 ) }\t\t\t\t\t\t\t//Canvas Designer\r\n\t@enumerable static get NETWORK_DESIGNER() { return manager.GetLocalizedString( 1295 ) }\t\t\t\t\t\t\t//Network Designer\r\n\t@enumerable static get FUNCTION_DESIGNER() { return manager.GetLocalizedString( 590 ) }\t\t\t\t\t\t\t//Function Designer\r\n\t@enumerable static get FIELD_COLLECTION_DESIGNER() { return manager.GetLocalizedString( 16 ) }\t\t\t\t//FieldCollection Designer\r\n\t@enumerable static get SYSTEM() { return manager.GetLocalizedString( 17 ) }\t\t\t\t\t\t\t\t\t//SYSTEM\r\n\t@enumerable static get ENVIRONMENT_MANAGER() { return manager.GetLocalizedString( 18 ) }\t\t\t\t\t\t//Environment Manager\r\n\t@enumerable static get TRANSLATION_EDITOR() { return manager.GetLocalizedString( 509 ) }\t\t\t\t\t\t//Translation Editor\r\n\t//#endregion\r\n\r\n\t//#region Record sharing\r\n\t@enumerable static get PRIMARY_GROUP() { return manager.GetLocalizedString( 607 ) }\t\t\t\t\t\t\t//Primary group\r\n\t@enumerable static get SELECT_GROUP() { return manager.GetLocalizedString( 608 ) } //select group\r\n\t@enumerable static get CLICK_TO_LOCK_GROUP() { return manager.GetLocalizedString( 1483 ) }\t\t\t\t\t//Click to lock this group for this profile\r\n\t@enumerable static get GROUP_IS_LOCKED() { return manager.GetLocalizedString( 1484 ) }\t\t\t\t\t\t//The group is locked to this profile\r\n\t@enumerable static get USED_IN_PROFILES() { return manager.GetLocalizedString( 1485 ) }\t\t\t\t\t\t//Used in {profile list separate by come} profile(s)\r\n\t//#endregion\r\n\r\n\t//#region Search screen\r\n\t@enumerable static get RECENT() { return manager.GetLocalizedString( 117 ) }\t\t\t\t\t\t\t\t\t//Recent\r\n\t@enumerable static get FAVORITES() { return manager.GetLocalizedString( 118 ) }\t\t\t\t\t\t\t\t//Favorites\r\n\t@enumerable static get ONLY_LAST_90() { return manager.GetLocalizedString( 128 ) }\t\t\t\t\t\t\t//Only last 90 days\r\n\t@enumerable static get ONLY_LAST_90_ARE_SHOWN() { return manager.GetLocalizedString( 576 ) }\t\t\t\t\t//Only records modified last 90 days are shown. Click to show all records\r\n\t@enumerable static get ONLY_LAST_90_ARE_INACTIVE() { return manager.GetLocalizedString( 577 ) }\t\t\t\t//All records are shown. Click to show records modified last 90 days\r\n\t@enumerable static get ENABLE_FILTER() { return manager.GetLocalizedString( 565 ) }\t\t\t\t\t\t\t//Enable filter\r\n\t@enumerable static get LIFESTATUS() { return manager.GetLocalizedString( 129 ) }\t\t\t\t\t\t\t\t//Life Status\r\n\t@enumerable static get MODE() { return manager.GetLocalizedString( 130 ) }\t\t\t\t\t\t\t\t\t//Mode\r\n\t@enumerable static get FAST_SEARCH() { return manager.GetLocalizedString( 131 ) }\t\t\t\t\t\t\t\t//Fast search\r\n\t@enumerable static get PHONETIC_SEARCH() { return manager.GetLocalizedString( 132 ) }\t\t\t\t\t\t\t//Phonetic search\r\n\t@enumerable static get SEARCH_MODES() { return manager.GetLocalizedString( 133 ) }\t\t\t\t\t\t\t//Search modes\r\n\t@enumerable static get SEARCH_FIELDS() { return manager.GetLocalizedString( 134 ) }\t\t\t\t\t\t\t//Search fields\r\n\t@enumerable static get SEARCH_SCREEN_PAGINATION() { return manager.GetLocalizedString( 135 ) }\t\t\t\t//Showing {StartRecordNumber} to {EndRecordNumber} of {TotalRecords} rows\r\n\t@enumerable static get TOTAL_SEARCH() { return manager.GetLocalizedString( 536 ) }\t\t\t\t\t\t\t//Total search\r\n\t@enumerable static get TYPES() { return manager.GetLocalizedString( 566 ) }\t\t\t\t\t\t\t\t\t//Total search\r\n\t@enumerable static get NO_RECORDS_FOUND() { return manager.GetLocalizedString( 957 ) }\t\t\t\t\t\t//No records found\r\n\t@enumerable static get REMOVE_DUPLICATES() { return manager.GetLocalizedString(1052)};\t\t\t\t\t\t//Remove duplicates\r\n\t@enumerable static get MERGE() { return manager.GetLocalizedString(1053)};\t\t\t\t\t\t\t\t\t//Merge\r\n\r\n\t@enumerable static get OFF_FILTER_BY_RELATIONS() { return manager.GetLocalizedString( 768 ) }\t\t\t\t\t//Filter off. Click to Filter by relations\r\n\t@enumerable static get FILTER_BY_RELATIONS() { return manager.GetLocalizedString( 769 ) }\t\t\t\t\t\t//Filtered by relations. Click to filter by main relations\r\n\t@enumerable static get FILTER_BY_MAIN_RELATIONS() { return manager.GetLocalizedString( 770 ) }\t\t\t\t//Filtered by main relations. Click to turn off the filter\r\n\t@enumerable static get NO_RELATION_TYPE() { return manager.GetLocalizedString( 774 ) }\t\t\t\t //No relation type\r\n\t@enumerable static get SELECT_TWO_RECORDS() { return manager.GetLocalizedString( 1016 ) }\t\t\t\t\t\t//Select two records and click this button to merge them\r\n\t@enumerable static get FILTER_BY_LINKING_CONDITIONS() { return manager.GetLocalizedString( 1110 ) }\t\t\t\t\t\t//Filtered by the condition. Click to turn off the filter\r\n\t@enumerable static get FILTER_BY_MAIN_RELATIONS2() { return manager.GetLocalizedString( 1111 ) }\t\t\t\t//Filtered by main relations. Click to filter by the condition\r\n\t@enumerable static get ONLY_LINKED_DOCUMENTS_ARE_SHOWN() { return manager.GetLocalizedString( 1508 ) }\t\t//Only linked documents are shown\r\n\t@enumerable static get CLICK_TO_START_BARCODE_SCANNING() { return manager.GetLocalizedString( 1249 ) }\t\t\t//Click to start barcode scanning\r\n\t@enumerable static get CLICK_TO_START_BULK_BARCODE_SCANNING() { return manager.GetLocalizedString( 1250 ) }\t//Click to start bulk barcode scanning\r\n\t@enumerable static get VALUE_CANNOT_BE_CONVERTED_TO_BARCODE() { return manager.GetLocalizedString( 1403 ) }\t//Value cannot be converted to barcode\r\n\t@enumerable static get SPECIAL_CHARACTERS() { return manager.GetLocalizedString( 1303 ) }\t\t\t\t\t\t//Special characters: \\nUse \"&\" to search for value1 AND value2 \\nUse \"|\" to search for value1 OR value2 \\nUse \"-\" to search for value1 AND NOT value2 \\nUse double quotes \"\" to search for the exact value \\n\\nUse \"\\\" to search with special characters listed above \\nExample: \\& \\- \\| \\\"\r\n\t//#endregion\r\n\r\n\t//#region Fast Filters\r\n\t@enumerable static get FILTERING_OPTIONS_NOT_FOUND() { return manager.GetLocalizedString( 584 ) }\t\t\t\t//Filtering options not found\r\n\t@enumerable static get MIN() { return manager.GetLocalizedString( 585 ) }\t\t\t\t\t\t\t\t\t\t//Min\r\n\t@enumerable static get MAX() { return manager.GetLocalizedString( 586 ) }\t\t\t\t\t\t\t\t\t\t//Max\r\n\t@enumerable static get CLEAR_DATE() { return manager.GetLocalizedString( 587 ) }\t\t\t\t\t\t\t\t//Clear date\r\n\t@enumerable static get CHANGE_DATE() { return manager.GetLocalizedString( 588 ) }\t\t\t\t\t\t\t\t//Change date\r\n\t@enumerable static get FILTER_RANGE_ERROR() { return manager.GetLocalizedString( 589 ) }\t\t\t\t\t\t//Value must be within the range {MinValue} and {MaxValue}\r\n\t//#endregion\r\n\r\n\t//#region Grid\r\n\t@enumerable static get DEFAULT_VIEW() { return manager.GetLocalizedString( 136 ) }\t\t\t\t\t\t\t//Default View\r\n\t@enumerable static get TABLEVIEW_NEW() { return manager.GetLocalizedString( 137 ) }\t\t\t\t\t\t\t//TableView New\r\n\t@enumerable static get TABLEVIEW_EDIT() { return manager.GetLocalizedString( 138 ) }\t\t\t\t\t\t\t//TableView Edit\r\n\t@enumerable static get LOCK_TABLEVIEW() { return manager.GetLocalizedString( 1356 ) }\t\t\t\t\t\t\t//Lock TableView\r\n\t@enumerable static get UNLOCK_TABLEVIEW() { return manager.GetLocalizedString( 1357 ) }\t\t\t\t\t\t//Unlock TableView\r\n\t@enumerable static get TABLEVIEW_COPY() { return manager.GetLocalizedString( 558 ) }\t\t\t\t\t\t\t//TableView Copy\r\n\t@enumerable static get TABLEVIEW_DELETE() { return manager.GetLocalizedString( 139 ) }\t\t\t\t\t\t//TableView Delete\r\n\t@enumerable static get ADD_AND_LINK() { return manager.GetLocalizedString( 141 ) }\t\t\t\t\t\t\t//Add & Link {EntityName}\r\n\t@enumerable static get EXPORT_TO_CSV() { return manager.GetLocalizedString( 493 ) }\t\t\t\t\t\t\t//Export to CSV\r\n\t@enumerable static get EXPORT_TO_EXCEL() { return manager.GetLocalizedString( 494 ) }\t\t\t\t\t\t\t//Export to EXCEL\r\n\t@enumerable static get LINK() { return manager.GetLocalizedString( 142 ) }\t\t\t\t\t\t\t\t\t//Link {entityName}\r\n\t@enumerable static get LINK_PARENT() { return manager.GetLocalizedString( 1137 ) }\t\t\t\t\t\t\t\t//Link Parent\r\n\t@enumerable static get ADD_QUERY() { return manager.GetLocalizedString( 143 ) }\t\t\t\t\t\t\t\t//Add Query\r\n\t@enumerable static get SHOW_ALL_COLUMNS() { return manager.GetLocalizedString( 582 ) }\t\t\t\t\t//Show all columns\r\n\t@enumerable static get HIDE_COLUMNS_BY_PRIORITY() { return manager.GetLocalizedString(583) }\t\t\t//Hide columns by priority\r\n\t@enumerable static get SHOW_RETIRED() { return manager.GetLocalizedString(661) }\t\t\t\t\t\t//Show retired\r\n\t@enumerable static get HIDE_RETIRED() { return manager.GetLocalizedString(662) }\t\t\t\t\t\t//Hide retired\r\n\t@enumerable static get EDIT_ALL() { return manager.GetLocalizedString(1000) }\t\t\t\t\t\t\t//Edit all\r\n\t@enumerable static get SAVE_ALL() { return manager.GetLocalizedString(1001) }\t\t\t\t\t\t\t//Save all\r\n\t@enumerable static get LINKED_RECORD_IS_RETIRED() { return manager.GetLocalizedString(1142) }\t\t\t//Linked record is retired\r\n\t@enumerable static get LINKED_RECORD_REQUIRED() { return manager.GetLocalizedString(1446) }\t\t\t//Linked record required\r\n\t@enumerable static get NO_ANY_CUSTOM_FIELDS() { return manager.GetLocalizedString(1143) }\t\t\t\t//Link table does not have any Custom fields\r\n\r\n\t@enumerable static get SELECT_LINK() { return manager.GetLocalizedString(938) }\t\t\t\t\t\t //Select a link\r\n\t@enumerable static get COPY_LATEST() { return manager.GetLocalizedString(1169) }\t\t\t\t\t\t//Copy latest\r\n\t@enumerable static get SCAN_AND_LINK() { return manager.GetLocalizedString(1246) }\t\t\t\t\t\t//Scan & Link\r\n\t@enumerable static get EDIT_SORT_DESCRIPTION() { return manager.GetLocalizedString(1340) }\t\t\t\t//Click to edit the description\r\n\t@enumerable static get SORT_REMOVE_DESCRIPTION() { return manager.GetLocalizedString(1342) }\t\t\t//Click to remove the description\r\n\t@enumerable static get SORT_ADD_NEW_DESCRIPTION() { return manager.GetLocalizedString(1343) }\t\t\t//Click to add a new description\r\n\t@enumerable static get CLICK_TO_PROGRESS() { return manager.GetLocalizedString(1513) }\t\t\t//Click to progress\r\n\r\n\t//#endregion\r\n\r\n //#region Kanban board\r\n\t@enumerable static get KANBAN_SEARCH() { return manager.GetLocalizedString(748) }\t\t\t\t\t\t// Kanban Search\r\n\t@enumerable static get KANBAN_TYPE_HIERARCHY_VIOLATION() { return manager.GetLocalizedString(1219) }\t// Cannot create a new record: Type hierarchy violation\r\n\t//#endregion\r\n\r\n\t//#region Screens\r\n\t@enumerable static get PREVIOUS_RECORD() { return manager.GetLocalizedString( 538 ) }\t\t\t\t\t\t\t//Next record\r\n\t@enumerable static get NEXT_RECORD() { return manager.GetLocalizedString( 539 ) }\t\t\t\t\t\t\t\t//Previous record\r\n\t@enumerable static get FOLLOW_LIST() { return manager.GetLocalizedString( 564 ) }\t\t\t\t\t\t\t\t//Follow List\r\n\t//#endregion\t\r\n\r\n\t//#region Make personal\r\n\t@enumerable static get MAKE_PERSONAL() { return manager.GetLocalizedString( 155 ) }\t\t\t\t\t\t\t//Make personal\r\n\t//#endregion\r\n\r\n\t//#region Product configurator\r\n\t@enumerable static get THERE_ARE_NO_PRODUCTS_FOUND() { return manager.GetLocalizedString( 959 ) }\t\t\t//There are no products found\r\n\t@enumerable static get THERE_ARE_NO_PRODUCT_PARTS_FOUND() { return manager.GetLocalizedString( 963 ) }\t\t//There are no product parts found\r\n\t@enumerable static get NO_GROUP_NAME() { return manager.GetLocalizedString( 965 ) }\t\t\t\t\t\t\t//No group name\r\n\t@enumerable static get CLASS_NOT_SELECTED() { return manager.GetLocalizedString( 832 ) }\t\t\t\t\t//Class not selected\r\n\t@enumerable static get CLASS_RECORD_SHOULD_BE_SELECTED() { return manager.GetLocalizedString(973) }\t\t\t//Record of type \"Class\" should be selected\r\n\t@enumerable static get INCLUSIVE_PRODUCTS() { return manager.GetLocalizedString(1102) }\t\t\t\t\t\t//Inclusive products\r\n\t@enumerable static get INCOMPATIBLE_PRODUCTS() { return manager.GetLocalizedString(1103) }\t\t\t\t\t//Incompatible products\r\n\t@enumerable static get DECLINE() { return manager.GetLocalizedString(1104) }\t\t\t\t\t\t //Decline\r\n\t@enumerable static get NOT_SELECTED() { return manager.GetLocalizedString((1118))};\t\t\t\t\t\t\t//Not Selected\r\n\t@enumerable static get SHOW_ALTERNATIVES() { return manager.GetLocalizedString((1145))};\t\t\t\t\t//Show alternatives\r\n\t@enumerable static get ORDERED_PRODUCTS() { return manager.GetLocalizedString((1147))};\t\t\t\t\t\t//Ordered products\r\n\t@enumerable static get SELECT_PRODUCT() { return manager.GetLocalizedString((1148)) };\t\t\t\t\t\t//Select product\r\n\t@enumerable static get CHOOSE_CONFIGURATION() { return manager.GetLocalizedString((1149)) };\t\t\t\t//Choose configuration\r\n\t@enumerable static get NEW_CONFIGURATION() { return manager.GetLocalizedString((1150))};\t\t\t\t\t//New configuration\r\n\t@enumerable static get ALTERATION() { return manager.GetLocalizedString((1151))};\t\t\t\t\t\t\t//Alteration\r\n\t@enumerable static get NEW_PRODUCT() { return manager.GetLocalizedString((1152)) };\t\t\t\t\t\t\t//New product\r\n\t@enumerable static get PRICES() { return manager.GetLocalizedString((1162)) };\t\t\t\t\t\t\t\t//Prices\r\n\t@enumerable static get INCOMPATIBLE_WITH() { return manager.GetLocalizedString((1167)) };\t\t\t\t\t//Incompatible with:\r\n\t@enumerable static get ADD_NEW() { return manager.GetLocalizedString((1168)) };\t\t\t\t\t\t\t\t//Add new\r\n\t@enumerable static get OTHER() { return manager.GetLocalizedString((1203)) };\t\t\t\t\t\t\t\t//Other\r\n\t@enumerable static get PRODUCT_DOES_NOT_EXIST() { return manager.GetLocalizedString((1186))};\t\t\t\t//Product does not exist\r\n\t@enumerable static get PRODUCTS_DO_NOT_EXIST() { return manager.GetLocalizedString((1187))};\t\t\t\t//There are products that do not exist\r\n\t@enumerable static get CANT_RESOLVE_CONFLICTS_FOR_NESTED_DEFAULT_PRODUCTS() { return manager.GetLocalizedString((1199)) };\t//Can't resolve conflicts between nested default products:\r\n\t@enumerable static get EXTRA_PRODUCTS() { return manager.GetLocalizedString((1239))};\t\t\t\t\t\t//Extra Products\r\n\t@enumerable static get ADD_AS_EXTRA_PRODUCT() { return manager.GetLocalizedString((1505)) };\t\t\t\t//Add as Extra Product\r\n\t@enumerable static get UNDEFINED() { return manager.GetLocalizedString((1479))};\t\t\t\t\t\t\t//Undefined\r\n\t@enumerable static get PRODUCT_LIST_IS_EMPTY() { return manager.GetLocalizedString((1297))};\t\t\t\t//Product list is empty\r\n\t@enumerable static get USE_DESCRIPTION() { return manager.GetLocalizedString((1311))};\t\t\t\t\t\t//Use description\r\n\t@enumerable static get ALTERNATIVE_PRICE() { return manager.GetLocalizedString((1467))};\t\t\t\t\t\t\t\t\t\t\t\t\t//Alternative Price\r\n\t@enumerable static get COULD_NOT_CALCULATE_ALTERNATIVE_PRICE() { return manager.GetLocalizedString((1468))};\t\t\t\t\t\t\t\t//Could not calculate Alternative Price\r\n\t@enumerable static get THE_TRANSLATION_ALTERNATIVE_PRICE_WITH_CODE_WILL_BE_USED_ON_PCF() { return manager.GetLocalizedString((1469))};\t\t//The translation \"Alternative Price\" with code {CODE} will be used on PCF\r\n\t@enumerable static get IMPOSSIBLE_TO_SELECT() { return manager.GetLocalizedString(1474) };\t\t\t//Impossible to select. More than one record was found\r\n\t//#endregion\r\n\r\n\t//#region Canvas designer\r\n\t@enumerable static get EXECUTE() { return manager.GetLocalizedString( 157 ) }\t\t\t\t\t\t\t\t\t//Execute\r\n\t@enumerable static get ENABLE_SOCKET_VALIDATION() { return manager.GetLocalizedString( 158 ) }\t\t\t\t//Enable sockets validation\r\n\t//#endregion\r\n\r\n\t//Function designer\r\n\t@enumerable static get IN() { return manager.GetLocalizedString( 877 ) }\t\t\t\t\t\t\t\t \t//In\r\n\t@enumerable static get OUT() { return manager.GetLocalizedString( 878 ) }\t\t\t\t\t\t\t\t \t//Out\r\n\t@enumerable static get METHODS() { return manager.GetLocalizedString( 591 ) }\t\t\t\t\t\t\t\t //Methods\r\n\r\n\r\n\t//Environment manager\r\n\t@enumerable static get DATABASES() { return manager.GetLocalizedString(1181) }\t\t\t\t\t\t\t\t//Databases\r\n\t@enumerable static get GUEST_PAGE() { return manager.GetLocalizedString(1182) }\t\t\t\t\t\t\t\t//Guest Page\r\n\t@enumerable static get DATABASE_LIST() { return manager.GetLocalizedString( 159 ) }\t\t\t\t\t\t\t//List of databases in CyberConfig\r\n\t@enumerable static get DATABASE_NAME() { return manager.GetLocalizedString( 160, 'Database Name' ) }\t\t\t\t\t\t\t//Database name\r\n\t@enumerable static get SERFER_INFO() { return manager.GetLocalizedString( 161 ) }\t\t\t\t\t\t\t\t//Server info\r\n\t@enumerable static get DATABASE_TYPE() { return manager.GetLocalizedString( 162 ) }\t\t\t\t\t\t\t//Database type\r\n\t@enumerable static get CYBER_APP_USER() { return manager.GetLocalizedString( 163 ) }\t\t\t\t\t\t\t//CyberApp User\r\n\t@enumerable static get DB_SERVER_NAME() { return manager.GetLocalizedString( 166 ) }\t\t\t\t\t\t\t//DB servername\r\n\t@enumerable static get LOGIN_NAME() { return manager.GetLocalizedString( 167, 'Username' ) }\t\t//Login name\r\n\t@enumerable static get PASSWORD() { return manager.GetLocalizedString( 168, 'Password' ) }\t\t//Password\r\n\t@enumerable static get ENVIRONMENTS() { return manager.GetLocalizedString( 1307 ) }\t\t\t\t\t\t\t//Environments\r\n\t@enumerable static get NEW_DATABASE_NAME() { return manager.GetLocalizedString( 1308 ) }\t\t\t\t\t\t//New database name\r\n\t@enumerable static get SPECIAL_CHARACTERS_NOT_ALLOWED() { return manager.GetLocalizedString( 1312 ) }\t\t\t//You can use only alphabetic characters, numbers and \"_\" without space\r\n\t@enumerable static get NEW_ENVIRONMENT_WILL_BE_COPIED() { return manager.GetLocalizedString( 1313 ) }\t\t\t//A new environment will be copied from current one. Enter a name for a new environment\r\n\r\n\t//FormDesigner\r\n\t@enumerable static get PREVIEW() { return manager.GetLocalizedString( 169 ) }\t\t\t\t\t\t\t\t\t//Preview\r\n\t@enumerable static get REFRESH() { return manager.GetLocalizedString( 170 ) }\t\t\t\t\t\t\t\t\t//Refresh\r\n\t@enumerable static get MENU_START() { return manager.GetLocalizedString( 171 ) }\t\t\t\t\t\t\t\t//Menu start\r\n\r\n\t@enumerable static get TEMPLATE() { return manager.GetLocalizedString( 173 ) }\t\t\t\t\t\t\t\t//Template\r\n\t@enumerable static get CREATE_NEW_PLANNERTAB() { return manager.GetLocalizedString( 914 ) }\t\t\t\t//Create new PlannerTab\r\n\t@enumerable static get ADD_SUB_LEVEL_PLANNER() { return manager.GetLocalizedString( 915 ) }\t\t\t\t//Add sub level planner\r\n\t@enumerable static get DELETE_PLANNER_LEVEL() { return manager.GetLocalizedString( 916 ) }\t\t\t\t\t//Remove planner level\r\n\t@enumerable static get CONTROLS() { return manager.GetLocalizedString( 923 ) }\t\t\t\t\t\t\t//Controls\r\n\t@enumerable static get REMOVE_CONTROL() { return manager.GetLocalizedString( 924 ) }\t\t\t\t\t\t//Remove control\r\n\t@enumerable static get EDIT_SUB_TABLE() { return manager.GetLocalizedString( 1494 ) }\t\t\t\t\t\t//Edit the Sub-table view\r\n\r\n\t//Dashboard\r\n\t@enumerable static get LAYOUT() { return manager.GetLocalizedString( 1259 ) }\t\t\t\t\t\t\t\t//Layout\r\n\t@enumerable static get ADD_SUBFORM() { return manager.GetLocalizedString( 1260 ) }\t\t\t\t\t\t\t//Add subform\r\n\t@enumerable static get APPLY() { return manager.GetLocalizedString( 1261 ) }\t\t\t\t\t\t\t\t//Apply\r\n\r\n\t//Control editor\r\n\t@enumerable static get LABEL_POSITION() { return manager.GetLocalizedString( 174 ) }\t\t\t\t\t\t\t//Label position\r\n @enumerable static get CONTROL_DESCRIPTION() { return manager.GetLocalizedString( 175 ) }\t\t\t\t\t\t//Control description\r\n\t@enumerable static get FIELD() { return manager.GetLocalizedString( 176 ) }\t\t\t\t\t\t\t\t\t//Field\r\n\t@enumerable static get ENTITY() { return manager.GetLocalizedString( 177 ) }\t\t\t\t\t\t\t\t\t//Entity\r\n\t@enumerable static get MASK() { return manager.GetLocalizedString( 178 ) }\t\t\t\t\t\t\t\t\t//Mask\r\n\t@enumerable static get SUB_ENTITY() { return manager.GetLocalizedString( 179 ) }\t\t\t\t\t\t\t\t//SubEntity\r\n @enumerable static get MEMO_DESCRIPTION() { return manager.GetLocalizedString( 646 ) }\t\t\t\t\t//Put description here\r\n @enumerable static get USE_FIELD_NAME() { return manager.GetLocalizedString(875) }\t\t\t\t\t //Use field name\r\n\t@enumerable static get SUBJECT_ENTITY() { return manager.GetLocalizedString(1475) }\t\t\t\t\t //Subject entity\r\n\t@enumerable static get SUBJECT_FIELD() { return manager.GetLocalizedString(1477) }\t\t\t\t\t //Subject field\r\n\t@enumerable static get SCREEN_SUBJECT() { return manager.GetLocalizedString(1478) }\t\t\t\t\t //Screen subject\r\n\t@enumerable static get TODO_ENTITY() { return manager.GetLocalizedString(1216) }\t\t\t\t\t\t// Todo entity\r\n\t@enumerable static get TODO_TYPE() { return manager.GetLocalizedString(1217) }\t\t\t\t\t\t\t// Todo type\r\n\t@enumerable static get TODO_FIELD() { return manager.GetLocalizedString(1218) }\t\t\t\t\t\t// Todo field\r\n\r\n //QueryBuilder\r\n\t@enumerable static get SELECT_TABLE_AND_FIELDS() { return manager.GetLocalizedString( 180 ) }\t\t\t\t//Select Table & Fields, Sort and Group\r\n\t@enumerable static get FILTERS() { return manager.GetLocalizedString( 181 ) }\t\t\t\t\t\t\t\t//Filters\r\n\t@enumerable static get COLUMN_ORDER_AND_SETTINGS() { return manager.GetLocalizedString( 182 ) }\t\t\t\t//Column Order & Settings\r\n\t@enumerable static get QUERY_RESULT() { return manager.GetLocalizedString( 183 ) }\t\t\t\t\t\t\t//Query Result\r\n\t@enumerable static get FIELDS() { return manager.GetLocalizedString( 184 ) }\t\t\t\t\t\t\t\t//Fields\r\n\t@enumerable static get OPTIONS() { return manager.GetLocalizedString( 185 ) }\t\t\t\t\t\t\t\t//Options\r\n\t@enumerable static get JOIN_TYPE() { return manager.GetLocalizedString( 186 ) }\t\t\t\t\t\t\t\t//Join type\r\n\t@enumerable static get MAIN_OPTIONS() { return manager.GetLocalizedString( 187 ) }\t\t\t\t\t\t\t//Main options\r\n\t@enumerable static get NORMAL() { return manager.GetLocalizedString( 188 ) }\t\t\t\t\t\t\t\t//Normal\r\n\t@enumerable static get EXCLUSIVE() { return manager.GetLocalizedString( 189 ) }\t\t\t\t\t\t\t\t//Exclusive\r\n\t@enumerable static get INCLUSIVE() { return manager.GetLocalizedString( 190 ) }\t\t\t\t\t\t\t\t//Inclusive\r\n\t@enumerable static get MAIN_ONLY() { return manager.GetLocalizedString( 191 ) }\t\t\t\t\t\t\t\t//Main only\r\n\t@enumerable static get EXCLUDE_MAIN() { return manager.GetLocalizedString( 192 ) }\t\t\t\t\t\t\t//Exclude Main\r\n\t@enumerable static get SELECT_ALL() { return manager.GetLocalizedString( 193 ) }\t\t\t\t\t\t\t//Select All\r\n\t@enumerable static get AND() { return manager.GetLocalizedString( 194 ) }\t\t\t\t\t\t\t\t\t//And\r\n\t@enumerable static get OR() { return manager.GetLocalizedString( 195 ) }\t\t\t\t\t\t\t\t\t//Or\r\n\t@enumerable static get ADD_RULE() { return manager.GetLocalizedString( 196 ) }\t\t\t\t\t\t\t\t//Add rule\r\n\t@enumerable static get ADD_GROUP() { return manager.GetLocalizedString( 197 ) }\t\t\t\t\t\t\t\t//Add group\r\n\t@enumerable static get FORMAT() { return manager.GetLocalizedString( 198 ) }\t\t\t\t\t\t\t\t//Format\r\n\t@enumerable static get DISPLAY_PRIORITY() { return manager.GetLocalizedString( 199 ) }\t\t\t\t\t\t//Display priority\r\n\t@enumerable static get SUBTOTAL() { return manager.GetLocalizedString( 939 ) } \t\t\t\t\t\t\t//Subtotal\r\n\t@enumerable static get AVERAGE() { return manager.GetLocalizedString( 201 ) }\t\t\t\t\t\t\t\t//Average\r\n\t@enumerable static get WRAP_FROM_HERE() { return manager.GetLocalizedString( 202 ) }\t\t\t\t\t\t//Wrap from here\r\n\t@enumerable static get CROSS_TABLE() { return manager.GetLocalizedString( 541 ) }\t\t\t\t\t\t\t//Cross table\r\n\t@enumerable static get SCREEN() { return manager.GetLocalizedString( 666 ) }\t\t\t\t\t\t\t\t//Screen\r\n\t@enumerable static get SELECT_CUSTOM_SCREEN() { return manager.GetLocalizedString( 667 ) }\t\t\t\t\t//select the custom screen...\r\n\t@enumerable static get CUSTOM_SCREEN() { return manager.GetLocalizedString( 668 ) }\t\t\t\t\t\t\t//Custom screen\r\n\t@enumerable static get INVERSE() { return manager.GetLocalizedString(714) }\t\t\t\t\t\t\t\t\t//Custom screen\t\t\t\t\t\t\t//Custom screen\r\n\t@enumerable static get LINK_DIRECTION() { return manager.GetLocalizedString(1074) }\t\t\t\t\t\t\t//Link direction\r\n\t@enumerable static get LEFT_TO_RIGHT() { return manager.GetLocalizedString(1075) }\t\t\t\t\t\t\t//Left to right\r\n\t@enumerable static get RIGHT_TO_LEFT() { return manager.GetLocalizedString(1076) }\t\t\t\t\t\t\t//Right to left\r\n\t@enumerable static get TEMPLATE_SCREEN() { return manager.GetLocalizedString(1208) }\t\t\t\t\t\t//Template screen\r\n\t@enumerable static get SELECT_TEMPLATE_SCREEN() { return manager.GetLocalizedString(1209) }\t\t\t\t\t//select the template screen...\r\n\t@enumerable static get BOTH() { return manager.GetLocalizedString(1238) }\t\t\t\t\t\t\t //Both\r\n\t@enumerable static get ARROW() { return manager.GetLocalizedString(1272) }\t\t\t\t\t\t\t //Arrow\r\n\t@enumerable static get SELECT_FIRST() { return manager.GetLocalizedString(1509) }\t\t\t\t\t\t\t //Select first\r\n\t@enumerable static get RECORDS() { return manager.GetLocalizedString(1510) }\t\t\t\t\t\t\t //records\r\n\r\n\t//Link List\r\n\t@enumerable static get OWNER_IS_PLANNER() { return manager.GetLocalizedString(709) }\t\t\t\t\t\t//Owner is a planner. Click to disable planning\r\n\t@enumerable static get OWNER_IS_NOT_PLANNER() { return manager.GetLocalizedString(710) }\t\t\t\t\t//Owner is not a planner. Click to enable planning\r\n\r\n\t//Drop\r\n\t@enumerable static get DROP_DOCUMENT_HERE() { return manager.GetLocalizedString( 204 ) }\t\t\t\t\t\t//Drop documents here\r\n\t@enumerable static get DROP_EXCEL_DOCUMENT_HERE() { return manager.GetLocalizedString( 1252 ) }\t\t\t\t//Drop Excel documents here\r\n\t@enumerable static get SELECT_A_TYPE_FOR_ALL_RECORDS() { return manager.GetLocalizedString( 897 ) }\t\t\t//Select a type for all records\r\n\t@enumerable static get HAVE_TO_OPEN_RECORD() { return manager.GetLocalizedString( 1078 ) }\t\t\t//You have to open record for uploading document\r\n\t@enumerable static get ROWS_AFFECTED() { return manager.GetLocalizedString( 1236 ) }\t\t\t\t\t\t//rows affected\r\n\t@enumerable static get MISSING_FIELDS() { return manager.GetLocalizedString( 1237 ) }\t\t\t\t\t\t//Missing fields\r\n\t@enumerable static get CANNOT_UPLOAD_MULTIPLE_FILES() { return manager.GetLocalizedString( 1254 ) }\t\t\t//Cannot upload multiple files for import\r\n\t@enumerable static get MAXIMUM_AMOUNT_OF_LINKED_DOCUMENTS_REACHED() { return manager.GetLocalizedString( 1266 ) } // Maximum amount of linked documents reached\r\n\t@enumerable static get MAXIMUM_LINKED_DOCUMENTS_REACHED_ONLY_FILES_WERE_UPLOADED() { return manager.GetLocalizedString( 1267 ) } // Maximum linked documents reached. Only {filesAmount} files were uploaded\r\n\r\n\t//Image\r\n\t@enumerable static get UPLOAD_IMAGE() { return manager.GetLocalizedString( 205 ) }\t\t\t\t\t\t\t//Upload image\r\n\t@enumerable static get SNAP_PHOTO() { return manager.GetLocalizedString( 1269 ) }\t\t\t\t\t\t\t\t//Snap Photo\r\n\r\n\t//Canvas Designer\r\n\r\n\t@enumerable static get DISABLE_ON_DELETE() { return manager.GetLocalizedString( 593 ) }\t\t\t\t\t\t//Disable on delete\r\n\t@enumerable static get IGNORE_MISSING_SUB_KEY() { return manager.GetLocalizedString( 905 ) }\t\t\t\t\t//Ignore missing subkeys\r\n\r\n\t//Document\r\n\t@enumerable static get DOWNLOAD() { return manager.GetLocalizedString( 632 ) }\r\n\t@enumerable static get CHECKOUT() { return manager.GetLocalizedString( 633 ) }\r\n\t@enumerable static get CHECKIN() { return manager.GetLocalizedString( 634 ) }\r\n\t@enumerable static get LOCK() { return manager.GetLocalizedString( 635 ) }\r\n\t@enumerable static get UNLOCK() { return manager.GetLocalizedString( 636 ) }\r\n\t@enumerable static get ENABLE_VERSION() { return manager.GetLocalizedString( 637 ) }\r\n\t@enumerable static get PRINT_ON_DESKTOP() { return manager.GetLocalizedString( 1520 ) }\r\n\t@enumerable static get DISABLE_VERSION() { return manager.GetLocalizedString(638) }\r\n\t@enumerable static get NO_DATA_AVAILABLE() { return manager.GetLocalizedString(649) }\r\n\t@enumerable static get GENERATE_PDF() { return manager.GetLocalizedString(892) }\r\n\t@enumerable static get SAVE_PDF() { return manager.GetLocalizedString(1470) }\t\t\t\t\t\t\t\t\t//Save PDF\r\n\r\n\t//Field security\r\n\t@enumerable static get USER() { return manager.GetLocalizedString( 206 ) }\t\t\t\t\t\t\t\t\t//User\r\n\t@enumerable static get FIELD_COLLECTION() { return manager.GetLocalizedString( 207 ) }\t\t\t\t\t\t//Field Collection\r\n\t@enumerable static get DATA_PROTECTION_OFFICER() { return manager.GetLocalizedString( 208 ) }\t\t\t\t\t//Data Protection Officer\r\n\t@enumerable static get VAULT_OWNER() { return manager.GetLocalizedString( 209 ) }\t\t\t\t\t\t\t\t//Vault Owner\r\n\t@enumerable static get SAFE_OVNER() { return manager.GetLocalizedString( 210 ) }\t\t\t\t\t\t\t\t//Safe Owner\r\n\t@enumerable static get DISCLOSURE_OFFICER() { return manager.GetLocalizedString( 211 ) }\t\t\t\t\t\t//Disclosure Officer\r\n\t@enumerable static get PUBLICATION_OFFICER() { return manager.GetLocalizedString( 212 ) }\t\t\t\t\t\t//Publication Officer\r\n\t@enumerable static get DEPUTY() { return manager.GetLocalizedString( 213 ) }\t\t\t\t\t\t\t\t\t//Deputy\r\n\t@enumerable static get COLLECTION_NAME() { return manager.GetLocalizedString( 912 ) }\t\t\t\t\t\t\t//Collection name\r\n\r\n\t//Field collection designer\r\n\t@enumerable static get UPDATE_VIEWS() { return manager.GetLocalizedString( 216 ) }\t\t\t\t\t\t\t//Update views\r\n\t@enumerable static get DATA_ROLE() { return manager.GetLocalizedString( 217 ) }\t\t\t\t\t\t\t\t//DataRole\r\n\t@enumerable static get TYPE_OF_TYPE() { return manager.GetLocalizedString( 220 ) }\t\t\t\t\t\t\t//TypeOfType\r\n\r\n\t//Formats\r\n\t@enumerable static get DUTCH_POSTAL_CODE_MUST_BE_FULFILLED() { return manager.GetLocalizedString(930) }\t// Dutch postal code must be fulfilled completely\r\n\r\n\t//Select user\r\n\t@enumerable static get NEW_SELECTION() { return manager.GetLocalizedString( 221 ) }\t\t\t\t\t\t\t//New selection\r\n\t@enumerable static get REMEMBER_ME() { return manager.GetLocalizedString( 222 ) }\t\t\t\t\t\t\t//Remember me\r\n\t@enumerable static get SELECT_USER() { return manager.GetLocalizedString(627) }\r\n\t@enumerable static get NONE() { return manager.GetLocalizedString(660) }\t\t\t\t\t\t\t\t\t//None\r\n\r\n\t//Tag\r\n\t@enumerable static get NO_AVAILABLE_TAGS() { return manager.GetLocalizedString( 224 ) }\t\t\t\t\t\t//No available tags\r\n\t@enumerable static get SELECT_TAG() { return manager.GetLocalizedString( 225 ) }\t\t\t\t\t\t\t\t//Select a tag\r\n\t@enumerable static get BOOK() { return manager.GetLocalizedString( 473 ) }\t\t\t\t\t\t\t\t\t//Book\r\n\t@enumerable static get NO_TAGS_SELECTED() { return manager.GetLocalizedString( 474 ) }\t\t\t\t\t\t//No tags selected\r\n\t@enumerable static get NO_TAGS_AVAILABLE_FOR_ENTITY() { return manager.GetLocalizedString( 475 ) }\t\t\t//No tags available for this entity\r\n\r\n\t//TemplateDesigner\r\n\t@enumerable static get OPEN_IN_DESKTOP() { return manager.GetLocalizedString( 226 ) }\t\t\t\t\t\t\t//Open in Desktop\r\n\t@enumerable static get QUERY() { return manager.GetLocalizedString( 227 ) }\t\t\t\t\t\t\t\t\t//Query\r\n\t@enumerable static get TEMPLATES() { return manager.GetLocalizedString( 1124 ) }\t\t\t\t\t\t\t//Templates\r\n\t@enumerable static get CREATE_TEMPLATE_IN() { return manager.GetLocalizedString( 1125 ) }\t\t\t\t\t//Create a template in\r\n\t@enumerable static get UPDATE_TEMPLATE_IN() { return manager.GetLocalizedString( 1126 ) }\t\t\t\t\t//Update the template in\r\n\r\n\t//TimeWritting\r\n\t@enumerable static get TO() { return manager.GetLocalizedString( 229 ) }\t\t\t\t\t\t\t\t\t\t//To\r\n\t@enumerable static get TIME() { return manager.GetLocalizedString( 232 ) }\t\t\t\t\t\t\t\t\t//Time\r\n\t@enumerable static get OVW() { return manager.GetLocalizedString( 233 ) }\t\t\t\t\t\t\t\t\t\t//Ovw\r\n\t@enumerable static get PAY() { return manager.GetLocalizedString( 234 ) }\t\t\t\t\t\t\t\t\t\t//Pay\r\n\t@enumerable static get HOUR() { return manager.GetLocalizedString( 610 ) }\t\t\t\t\t\t\t\t\t//Hour\r\n\t@enumerable static get ADD_LINE() { return manager.GetLocalizedString( 235 ) }\t\t\t\t\t\t\t\t//Add line\r\n\t@enumerable static get WEEK() { return manager.GetLocalizedString( 237 ) }\t\t\t\t\t\t\t\t\t//Week\r\n\t@enumerable static get BOOKED() { return manager.GetLocalizedString( 238 ) }\t\t\t\t\t\t\t\t\t//Booked\r\n\t@enumerable static get SALDO() { return manager.GetLocalizedString( 239 ) }\t\t\t\t\t\t\t\t\t//Saldo\r\n\t@enumerable static get YEAR() { return manager.GetLocalizedString( 240 ) }\t\t\t\t\t\t\t\t\t//Year\r\n\t@enumerable static get CURRENT_YEAR() { return manager.GetLocalizedString( 241 ) }\t\t\t\t\t\t\t//Current year\r\n\t@enumerable static get NORM_40() { return manager.GetLocalizedString( 242 ) }\t\t\t\t\t\t\t\t\t//Norm 40\r\n\t@enumerable static get FROM_40() { return manager.GetLocalizedString( 243 ) }\t\t\t\t\t\t\t\t\t//from 40\r\n\t@enumerable static get SELECT__RESERVATION_SUBJECT() { return manager.GetLocalizedString( 560 ) }\t\t\t\t//Select reservation subject\r\n\t@enumerable static get SPECIFY_RESERVATION_DESCRIPTION() { return manager.GetLocalizedString( 561 ) }\t\t\t//Specify reservation description\r\n\t@enumerable static get DESCRIPTION_MIN_LENGTH() { return manager.GetLocalizedString( 562 ) }\t\t\t\t\t//description min length is 3\r\n\t@enumerable static get DESCRIPTION_MAX_LENGTH() { return manager.GetLocalizedString( 563 ) }\t\t\t\t\t//description max length is 80\r\n\t@enumerable static get YEARVIEW() { return manager.GetLocalizedString( 623 ) }\t\t\t\t\t\t\t\t//Yearview\r\n\t@enumerable static get DISSAPROVED() { return manager.GetLocalizedString( 624 ) }\t\t\t\t\t\t\t\t//DISSAPROVED\r\n\t@enumerable static get YEAR_OVERVIEW() { return manager.GetLocalizedString( 625 ) }\t\t\t\t\t\t\t//Year overview\r\n\t@enumerable static get NORM_40_HOURS() { return manager.GetLocalizedString( 626 ) }\t\t\t\t\t\t\t//Norm 40 HOURS\r\n\r\n @enumerable static get COMMENT() { return manager.GetLocalizedString( 650 ) }\t\t\t\t\t\t\t //Comment\r\n @enumerable static get DISAP_REASON() { return manager.GetLocalizedString( 651 ) }\t\t\t\t\t\t\t//Disapprove reason\r\n @enumerable static get DISAP_OVERVIEW() { return manager.GetLocalizedString( 652 ) }\t\t\t\t\t\t//Disapproved booked hours overview\r\n @enumerable static get BOOKED_COUNTER() { return manager.GetLocalizedString( 653 ) }\t\t\t\t\t\t//Booked counter\r\n @enumerable static get WEEK_DISAP_RECORDS() { return manager.GetLocalizedString( 654 ) }\t\t\t\t\t//This week has disapproved booked time record(s)\r\n @enumerable static get BACK() { return manager.GetLocalizedString( 655 ) }\t\t\t\t\t\t\t //Back\r\n @enumerable static get RECOLRD_IS_DISAP() { return manager.GetLocalizedString( 656 ) }\t\t\t\t\t\t//This booked time record is disapproved\r\n @enumerable static get DISAPPROVED() { return manager.GetLocalizedString( 657 ) }\t\t\t\t\t\t\t//Disapproved\r\n @enumerable static get REASON() { return manager.GetLocalizedString( 658 ) }\t\t\t\t\t\t\t//Reason\r\n @enumerable static get DURATION() { return manager.GetLocalizedString( 659 ) }\t\t\t\t\t\t\t//Duration\r\n\t@enumerable static get WRITING_TIME_FOR_FUTURE_NOT_ALLOWED() { return manager.GetLocalizedString( 760 ) }\t//Writing time for future days is not allowed\r\n\r\n\t//FlowMemo\r\n\t@enumerable static get CLICK_TO_ADD_A_NEW_MEMO() { return manager.GetLocalizedString( 1314 ) }\t//Click to add a new memo\r\n\r\n\r\n\t//Portlets\r\n\r\n @enumerable static get MAIN_PORTLET() { return manager.GetLocalizedString(592) }\t\t\t\t\t\t\t//Main portlet\r\n\r\n //message for mathing\r\n @enumerable static get NOT_AVAILABLE_CURRENT_ENTITY() { return manager.GetLocalizedString(647) }\r\n @enumerable static get NOT_AVAILABLE_LINKED_ENTITY() { return manager.GetLocalizedString(648) }\r\n\r\n\r\n\t//Agenda\r\n\t@enumerable static get ADD_TODO() { return manager.GetLocalizedString( 244 ) }\t\t\t\t\t\t\t\t//Add ToDo\r\n\t@enumerable static get REMOVE_AFTER_DROP() { return manager.GetLocalizedString( 245 ) }\t\t\t\t\t\t//remove after drop\r\n\t@enumerable static get TODO() { return manager.GetLocalizedString( 246 ) }\t\t\t\t\t\t\t\t\t//ToDo\r\n\t@enumerable static get AGENDA_TODAY() { return manager.GetLocalizedString( 611 ) }\t\t\t\t\t\t\t//TODAY\r\n\t@enumerable static get AGENDA_MONTH() { return manager.GetLocalizedString( 612 ) }\t\t\t\t\t\t\t//MONTH\r\n\t@enumerable static get AGENDA_WORK_WEEK() { return manager.GetLocalizedString( 614 ) }\t\t\t\t\t\t//WORK_WEEK\r\n\t@enumerable static get AGENDA_DAY() { return manager.GetLocalizedString( 615 ) } \t\t\t\t\t\t\t//DAY\r\n @enumerable static get AGENDA_WEEK() { return manager.GetLocalizedString(237) }\t\t\t\t\t\t\t //WEEk\r\n\t@enumerable static get AGENDA_LIST() { return manager.GetLocalizedString( 1506 ) }\t\t\t\t\t\t\t//LIST\r\n\t@enumerable static get AGENDA_USERS() { return manager.GetLocalizedString( 1511 ) }\t\t\t\t\t\t\t//USERS\r\n\t@enumerable static get AGENDA_TIMELINE_WEEK() { return manager.GetLocalizedString( 1516 ) }\t\t\t\t\t//TIMELINE WEEK\r\n\r\n\t@enumerable static get SPECIAL_DAY() { return manager.GetLocalizedString( 113 ) }\t\t\t\t\t\t //Special day\r\n @enumerable static get REQUEST_LEAVE() { return manager.GetLocalizedString(968) }\t\t\t\t\t \t\t//Request leave\r\n\t@enumerable static get REPORT_ILLNESS() { return manager.GetLocalizedString( 967 ) }\t\t\t\t\t \t//Report illness\r\n\t@enumerable static get RECURRENT() { return manager.GetLocalizedString( 983 ) }\t\t\t\t\t \t\t //Recurrent\r\n\t@enumerable static get CLICK_TO_RESCHEDULE() { return manager.GetLocalizedString(881)} //Click to reschedule the appointment\r\n\t@enumerable static get STARTING_DATE_IS_OUT_OF_FREEZE_TIME() {return manager.GetLocalizedString(885)} //Starting date is out of freeze time\r\n\t@enumerable static get BOOK_TIME() { return manager.GetLocalizedString( 896 ) }\t\t\t\t\t\t//Book time\r\n\t@enumerable static get CANNOT_ACCEPT_APPOINTMENT() { return manager.GetLocalizedString( 929 ) }\t\t\t//Cannot book time\r\n\t@enumerable static get RECURRENCE_PATTERN() { return manager.GetLocalizedString( 987 ) }\t\t\t\t//Recurrence pattern\r\n\t@enumerable static get STARTING_DATE() { return manager.GetLocalizedString( 945 ) }\t\t\t\t\t\t//Starting date\r\n\t@enumerable static get MONTHS() { return manager.GetLocalizedString( 946 ) }\t\t\t\t\t\t\t\t//Months\r\n\t@enumerable static get WEEKS() { return manager.GetLocalizedString( 950 ) }\t\t\t\t\t\t\t\t//Weeks\r\n\t@enumerable static get WEEK_PLANNING() { return manager.GetLocalizedString( 947 ) }\t\t\t\t\t\t//Week planning\r\n\t@enumerable static get ATTENDEES() { return manager.GetLocalizedString( 1195 ) }\t\t\t\t\t\t//Attendees\r\n\t@enumerable static get AGENDA_NO_EVENTS_TO_DISPLAY() { return manager.GetLocalizedString( 1507 ) }\t\t\t//No events to display\r\n\r\n\t//Mail\r\n\t@enumerable static get SEND_EMAIL() { return manager.GetLocalizedString( 247 ) }\t\t\t\t\t\t\t\t//Send e-mail\r\n\t@enumerable static get ACTIONS() { return manager.GetLocalizedString( 248 ) }\t\t\t\t\t\t\t\t\t//Actions\r\n\t@enumerable static get MARK_AS_READ() { return manager.GetLocalizedString( 249 ) }\t\t\t\t\t\t\t//Mark as Read\r\n\t@enumerable static get MARK_AS_UNREAD() { return manager.GetLocalizedString( 250 ) }\t\t\t\t\t\t\t//Mark as Unread\r\n\t@enumerable static get ADDRESS() { return manager.GetLocalizedString( 251 ) }\t\t\t\t\t\t\t\t\t//Address\r\n\t@enumerable static get TOPIC() { return manager.GetLocalizedString( 252 ) }\t\t\t\t\t\t\t\t\t//Topic\r\n\t@enumerable static get DATE() { return manager.GetLocalizedString( 253 ) }\t\t\t\t\t\t\t\t\t//Date\r\n\t@enumerable static get OF() { return manager.GetLocalizedString( 254 ) }\t\t\t\t\t\t\t\t\t\t//of\r\n\t@enumerable static get ADD_FROM() { return manager.GetLocalizedString( 1333 ) }\t\t\t\t\t\t\t\t//Add from\r\n\r\n\t//Documents\r\n\t@enumerable static get OPEN_DOCUMENT_IN_SPHEERES() { return manager.GetLocalizedString(926) }\t\t\t\t\t//Opening in the Spheeres client...\r\n\r\n\r\n\t//My settings\r\n\t@enumerable static get PROFILE() { return manager.GetLocalizedString( 255 ) }\t\t\t\t\t\t\t\t\t//Profile\r\n\t@enumerable static get THEMES() { return manager.GetLocalizedString( 256 ) }\t\t\t\t\t\t\t\t\t//Themes\r\n\t@enumerable static get PERSONAL_SETTINGS() { return manager.GetLocalizedString( 257 ) }\t\t\t\t\t\t//Personal settings\r\n\t@enumerable static get NETWORK() { return manager.GetLocalizedString( 1298 ) }\t\t\t\t\t\t\t\t//Network\r\n\t@enumerable static get LICENSE_HOLDER() { return manager.GetLocalizedString( 258 ) }\t\t\t\t\t\t\t//License Holder\r\n\r\n\t//Profile\r\n\t@enumerable static get CURRENT_PASSWORD() { return manager.GetLocalizedString( 259, 'Current password' ) }\t\t\t\t\t\t//Current Password\r\n\t@enumerable static get NEW_PASSWORD() { return manager.GetLocalizedString( 260, 'New password' ) }\t//New Password\r\n\t@enumerable static get RETYPE_NEW_PASSWORD() { return manager.GetLocalizedString( 261 ) }\t\t\t\t\t\t//Re-type New Password\r\n\r\n\t//Network\r\n\t@enumerable static get THERE_ARE_NO_REMOTE_DATABASE_CONNECTIONS() { return manager.GetLocalizedString( 1299 ) }\t\t\t\t\t//There are no remote database connections\r\n\r\n\t//License holder\r\n\t@enumerable static get LICENSE_INFO() { return manager.GetLocalizedString( 262 ) }\t\t\t\t\t\t\t//License Info\r\n\t@enumerable static get LICENSE_EXPIRATION_DATE() { return manager.GetLocalizedString( 264 ) }\t\t\t\t\t//Expiration Date\r\n\t@enumerable static get MAXIMUM_USERS_ALLOWED() { return manager.GetLocalizedString( 265 ) }\t\t\t\t\t//Maximum users allowed\r\n\t@enumerable static get MAXIMUM_CONNECT_USERS_ALLOWED() { return manager.GetLocalizedString( 1290) }\t\t\t//Maximum connect users allowed\r\n\t@enumerable static get MAXIMUM_REMOTE_USERS_ALLOWED() { return manager.GetLocalizedString( 1291) }\t\t\t//Maximum remote users allowed\r\n\t@enumerable static get MAXIMUM_LIMITED1_USERS_ALLOWED() { return manager.GetLocalizedString( 1292) }\t\t\t//Maximum limited1 users allowed\r\n\t@enumerable static get MAXIMUM_LIMITED2_USERS_ALLOWED() { return manager.GetLocalizedString( 1293) }\t\t\t//Maximum limited2 users allowed\r\n\t@enumerable static get MAXIMUM_LIMITED3_USERS_ALLOWED() { return manager.GetLocalizedString( 1294) }\t\t\t//Maximum limited3 users allowed\r\n\t@enumerable static get MAXIMUM_PORTAL_USERS_ALLOWED() { return manager.GetLocalizedString( 1107 ) }\t\t\t//Maximum portal users allowed\r\n\t@enumerable static get MAXIMUM_GDPR_USERS_ALLOWED() { return manager.GetLocalizedString( 1112 ) }\t\t\t\t//Maximum GDPR users allowed\r\n\t@enumerable static get MAXIMUM_ROLE() { return manager.GetLocalizedString( 266 ) }\t\t\t\t\t\t\t//Maximum role\r\n\r\n\t//Themes\r\n\t@enumerable static get REFRESH_PAGE_ALERT() { return manager.GetLocalizedString( 267 ) }\t\t\t\t\t\t//If you want to be sure your changes applied , please refresh the page!\r\n\t@enumerable static get PREFF_F5_BUTTON_ALERT() { return manager.GetLocalizedString( 268 ) }\t\t\t\t\t//Press refresh button in browser or \"F5\" button on the keyboard\r\n\t@enumerable static get BASIC_THEME_OPTIONS() { return manager.GetLocalizedString( 269 ) }\t\t\t\t\t\t//BASIC THEME OPTIONS\r\n\t@enumerable static get THEME_STYLE() { return manager.GetLocalizedString( 270 ) }\t\t\t\t\t\t\t\t//Theme Style\r\n\t@enumerable static get BORDERS_THEME() { return manager.GetLocalizedString( 271 ) }\t\t\t\t\t\t\t//Borders Theme\r\n\t@enumerable static get SIDEBAR_POSITION() { return manager.GetLocalizedString( 272 ) }\t\t\t\t\t\t//Sidebar Position\r\n\t@enumerable static get SIDEBAR_STYLE() { return manager.GetLocalizedString( 273 ) }\t\t\t\t\t\t\t//Sidebar Style\r\n\t@enumerable static get SIDEBAR_MODE() { return manager.GetLocalizedString( 274 ) }\t\t\t\t\t\t\t//Sidebar Mode\r\n\t@enumerable static get BASIS_THEME_COLOR() { return manager.GetLocalizedString( 275 ) }\t\t\t\t\t\t//BASIS THEME COLOR\r\n\t@enumerable static get CUSTOM_THEMES() { return manager.GetLocalizedString( 276 ) }\t\t\t\t\t\t\t//CUSTOM THEMES\r\n\t@enumerable static get SHOW_PREVIEW() { return manager.GetLocalizedString( 277 ) }\t\t\t\t\t\t\t//Show preview\r\n\r\n\t@enumerable static get BACKGROUND_COLOR_FOR_SIDEBAR() { return manager.GetLocalizedString( 279 ) }\t\t\t\t\t\t\t\t//Background color for sidebar\r\n\t@enumerable static get HEADER_BACKGROUND_COLOR() { return manager.GetLocalizedString( 280 ) }\t\t\t\t\t\t\t\t\t\t//Header background color\r\n\t@enumerable static get BACKGROUND_COLOR_FOR_HEADER_TEXT() { return manager.GetLocalizedString( 281 ) }\t\t\t\t\t\t\t//Background color for header text\r\n\t@enumerable static get BACKGROUND_COLOR_FOR_HOVERED_MENU_ITEM() { return manager.GetLocalizedString( 282 ) }\t\t\t\t\t\t//Background color for hovered menu item\r\n\t@enumerable static get BACKGROUND_COLOR_FOR_HOVERED_MENU_ITEM_SECOND_LEVEL_ITEM() { return manager.GetLocalizedString( 283 ) }\t//Background color for hovered menu second level item\r\n\t@enumerable static get BACKGROUND_COLOR_FOR_THEME_SQUARE() { return manager.GetLocalizedString( 284 ) }\t\t\t\t\t\t\t//Background color for theme square\r\n\r\n\t@enumerable static get COLOR_FOR_HEADER_TEXT() { return manager.GetLocalizedString( 285 ) }\t\t\t\t\t\t\t\t\t\t//Color for header text\r\n\t@enumerable static get COLOR_FOR_BORDERS_BETWEEN_MENU_LINKS() { return manager.GetLocalizedString( 286 ) }\t\t\t\t\t\t//Color for borders between menu links\r\n\t@enumerable static get TEXT_COLOR_FOR_SIDEBAR_MENU() { return manager.GetLocalizedString( 287 ) }\t\t\t\t\t\t\t\t\t//Text color for sidebar menu\r\n\t@enumerable static get ACTIVE_LINK_COLOR() { return manager.GetLocalizedString( 288 ) }\t\t\t\t\t\t\t\t\t\t\t//Active link color\r\n\t@enumerable static get MENU_2_LEVEL_ACTIVE_LINK_COLOR() { return manager.GetLocalizedString( 289 ) }\t\t\t\t\t\t\t\t//Menu 2 level active link color\r\n\t@enumerable static get CONTROLS_TEXT_COLOR() { return manager.GetLocalizedString( 290 ) }\t\t\t\t\t\t\t\t\t\t\t//Controls text color\r\n\t@enumerable static get CONTROLS_BACKGROUND_COLOR() { return manager.GetLocalizedString( 291 ) }\t\t\t\t\t\t\t\t\t//Controls background color\r\n\t@enumerable static get CONTROLS_BACKGROUND_BORDER_COLOR() { return manager.GetLocalizedString( 292 ) }\t\t\t\t\t\t\t//Controls background border color\r\n\r\n\t@enumerable static get TABLE_HEADER_TEXT_COLOR() { return manager.GetLocalizedString( 293 ) }\t\t\t\t\t\t\t\t\t\t//Table header text color\r\n\t@enumerable static get TABLE_HEADER_BACKGROUND_COLOR() { return manager.GetLocalizedString( 294 ) }\t\t\t\t\t\t\t\t//Table header background color\r\n\t@enumerable static get TAB_BORDER_COLOR() { return manager.GetLocalizedString( 295 ) }\t\t\t\t\t\t\t\t\t\t\t//Tab border color\r\n\t@enumerable static get ACTIVE_TAB_LEVEL_BACKGROUND_COLOR() { return manager.GetLocalizedString( 296 ) }\t\t\t\t\t\t\t//Active tab label background color\r\n\t@enumerable static get ACTIVE_TAB_LEVEL_TEXT_COLOR() { return manager.GetLocalizedString( 297 ) }\t\t\t\t\t\t\t\t\t//Active tab label text color\r\n\r\n\t@enumerable static get SQUARE_CORNERS() { return manager.GetLocalizedString( 298 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Square corners\r\n\t@enumerable static get ROUNDER_CORNERS() { return manager.GetLocalizedString( 299 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Rounded corners\r\n\r\n\t@enumerable static get WITH_BORDERS() { return manager.GetLocalizedString( 300 ) }\t\t\t\t\t\t\t\t\t\t\t\t//With borders\r\n\t@enumerable static get WITHOUT_BORDERS() { return manager.GetLocalizedString( 301 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Without borders\r\n\r\n\t@enumerable static get LEFT() { return manager.GetLocalizedString( 302 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Left\r\n\t@enumerable static get RIGHT() { return manager.GetLocalizedString( 303 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Right\r\n\r\n\t@enumerable static get LIGHT() { return manager.GetLocalizedString( 305 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Light\r\n\r\n\t@enumerable static get FIXED() { return manager.GetLocalizedString( 306 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Fixed\r\n\r\n\t//Color selector\r\n\t@enumerable static get NO_COLOR() { return manager.GetLocalizedString( 308 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//no-color\r\n\r\n\t//Database designer\r\n\t@enumerable static get SHOW_DELETED() { return manager.GetLocalizedString( 309 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Show deleted\r\n\t@enumerable static get UPDATE_DATABASE() { return manager.GetLocalizedString( 310 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Update Database\r\n\t@enumerable static get LANGUAGES() { return manager.GetLocalizedString( 311 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Languages\r\n\t@enumerable static get UPDATE_DATABASE_ALERT() { return manager.GetLocalizedString( 312 ) }\t\t\t\t\t\t\t\t\t\t//You need to update database.\r\n\t@enumerable static get ENABLED() { return manager.GetLocalizedString( 907 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Enabled\r\n\t@enumerable static get KIND_NAME() { return manager.GetLocalizedString( 908 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Kind Name\r\n\t@enumerable static get SHOW_MODE() { return manager.GetLocalizedString( 910 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Show Mode\r\n\t@enumerable static get KINDS() { return manager.GetLocalizedString( 911 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Kinds\r\n\t@enumerable static get TYPE_SECURITY() { return 'Business Roles\\'s Type Security' }\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Type Security\r\n\t@enumerable static get ACTIONS_CHECK_LIST() { return manager.GetLocalizedString( 918 ) }\t\t\t\t\t\t\t\t\t\t\t//Checklist\r\n\t@enumerable static get ALLOW_CUSTOM_VALUE() { return manager.GetLocalizedString( 927 ) }\t\t\t\t\t\t\t\t\t\t\t//Allow custom value\r\n\t@enumerable static get FILTER_SUBTABLE() { return manager.GetLocalizedString( 1201 ) }\t\t\t\t\t\t\t\t\t\t\t//Filter Sub Table\r\n\t@enumerable static get FILTER_BY_K_SEQ() { return manager.GetLocalizedString( 1263 ) }\t\t\t\t\t\t\t\t\t\t\t//Filter by K_SEQ\r\n\t@enumerable static get ONE_PARENT() { return manager.GetLocalizedString( 1214 ) }\t\t\t\t\t\t\t\t\t\t\t\t//One parent\r\n\r\n\r\n\t//Clean Database Modal\r\n\t@enumerable static get CLEAN_DATABASE() { return manager.GetLocalizedString( 514 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Clean Database.\r\n\t@enumerable static get USER_TABLES() { return manager.GetLocalizedString(761)}\t\t\t\t\t\t\t\t\t\t\t\t\t//User tables\r\n\t@enumerable static get SYS_TABLES() { return manager.GetLocalizedString(762)}\t\t\t\t\t\t\t\t\t\t\t\t\t\t//SYS tables\r\n\t@enumerable static get REMOVE_EXAMPLES() { return manager.GetLocalizedString(763)}\t\t\t\t\t\t\t\t\t\t\t\t//Remove examples\r\n\t@enumerable static get DELETED_FIELDS() { return manager.GetLocalizedString(1323)}\t\t\t\t\t\t\t\t\t\t\t\t//Deleted fields\r\n\t@enumerable static get DELETED_TABLES() { return manager.GetLocalizedString(1324)}\t\t\t\t\t\t\t\t\t\t\t\t//Deleted tables\r\n\r\n\t@enumerable static get SUB() { return manager.GetLocalizedString( 314 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//SUB\r\n\t@enumerable static get SCREENS() { return manager.GetLocalizedString( 315 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//SCREENS\r\n\r\n\t@enumerable static get TABLE_NAME() { return manager.GetLocalizedString( 316 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Table name\r\n\t@enumerable static get SUBJECT_AREA() { return manager.GetLocalizedString( 317 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Subject area\r\n\t@enumerable static get DISABLE() { return manager.GetLocalizedString( 318 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Disable\r\n\r\n\t@enumerable static get FIELD_NAME() { return manager.GetLocalizedString( 319 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Field Name\r\n\t@enumerable static get FIELD_TYPE() { return manager.GetLocalizedString( 320 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Field Type\r\n\t@enumerable static get SIZE() { return manager.GetLocalizedString( 321 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Size\r\n\t@enumerable static get LOOKUP() { return manager.GetLocalizedString( 322 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Lookup\r\n\t@enumerable static get SORT() { return manager.GetLocalizedString( 323 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Sort\r\n\t@enumerable static get PROPERTIES() { return manager.GetLocalizedString( 1006 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Properties\r\n\t@enumerable static get FIELD_FLAGS() { return manager.GetLocalizedString( 1007 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Field Flags\r\n\r\n\t@enumerable static get FLAGS() { return manager.GetLocalizedString( 324 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Flags\r\n\t@enumerable static get VALIDATE() { return manager.GetLocalizedString( 325 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Validate\r\n\t@enumerable static get VIRTUAL() { return manager.GetLocalizedString( 326 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Virtual\r\n\t@enumerable static get ALIAS_DEFINITION() { return manager.GetLocalizedString( 327 ) }\t\t\t\t\t\t\t\t\t\t\t//Alias definition\r\n\r\n\t@enumerable static get DELETED() { return manager.GetLocalizedString( 1014 ) } \t\t\t\t\t\t\t\t\t\t\t\t\t\t//Deleted\r\n\r\n\t@enumerable static get FIELD_SIZE() { return manager.GetLocalizedString( 1010 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Field size\r\n\t@enumerable static get DEFAULT_VALUE() { return manager.GetLocalizedString( 1011 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Default value\r\n\r\n\t@enumerable static get SYSTEM_FLAG() { return manager.GetLocalizedString( 382 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//System\r\n\t@enumerable static get HIDDEN_FLAG() { return manager.GetLocalizedString( 329 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Hidden\r\n\t@enumerable static get REQUIRED_FLAG() { return manager.GetLocalizedString( 330 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Required\r\n\t@enumerable static get READ_ONLY_FLAG() { return manager.GetLocalizedString( 331 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Read only\r\n\t@enumerable static get SEARCH_FLAG() { return manager.GetLocalizedString( 332 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Search field\r\n\t@enumerable static get TRANSLATE_FLAG() { return manager.GetLocalizedString( 334 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Translate\r\n @enumerable static get UNIQUE_FLAG() { return manager.GetLocalizedString(1243) }\t\t\t\t\t\t\t\t\t\t\t\t //Unique\r\n\r\n @enumerable static get MATCHING() { return manager.GetLocalizedString( 1012 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Matching\r\n\t@enumerable static get CUSTOM_VALUES_ALLOWED() { return manager.GetLocalizedString( 1013 ) }\t\t\t\t\t\t\t\t\t\t//Custom values allowed\r\n\r\n\t@enumerable static get TABLE() { return manager.GetLocalizedString( 336 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Table\r\n\t@enumerable static get MERGE_VIEW() { return manager.GetLocalizedString( 1502 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Merge view\r\n\t@enumerable static get SERACH_SCREEN_IF_ALERT() { return manager.GetLocalizedString( 337 ) }\t\t\t\t\t\t\t\t\t\t//Validate\r\n\t@enumerable static get USER_CALCULATED_EXPRESSION() { return manager.GetLocalizedString( 338 ) }\t\t\t\t\t\t\t\t\t//Use Calculated Expression\r\n\t@enumerable static get DEPENDS_ON() { return manager.GetLocalizedString( 339 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Depends On\r\n\t@enumerable static get FILL_FROM() { return manager.GetLocalizedString( 340 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Fill from\r\n\r\n\t@enumerable static get NOT_SET() { return manager.GetLocalizedString( 1005 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Not set\r\n\r\n\t@enumerable static get STATUS_DESIGNER() { return manager.GetLocalizedString( 341 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Status designer\r\n\t@enumerable static get ADD_NODE() { return manager.GetLocalizedString( 342 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Add node\r\n\t@enumerable static get GENERAL() { return manager.GetLocalizedString( 343 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//General\r\n\r\n\t@enumerable static get KIND() { return manager.GetLocalizedString( 344 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Kind\r\n\t@enumerable static get ICON() { return manager.GetLocalizedString( 345 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Icon\r\n\t@enumerable static get TABLE_DEFAULT() { return manager.GetLocalizedString( 346 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Table default\r\n @enumerable static get FLOW_FOLDER() { return manager.GetLocalizedString(1189) }\t\t\t\t\t\t\t\t\t\t\t\t//Flow folder\r\n\t@enumerable static get NEXT_STATUS() { return manager.GetLocalizedString(1354) }\t\t\t\t\t\t\t\t\t\t\t\t//Next status\r\n\r\n @enumerable static get CD_FIELD() { return manager.GetLocalizedString( 458 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//CD Field\r\n\t@enumerable static get USER_DB_FIELD() { return manager.GetLocalizedString( 459 ) }\t\t\t\t\t\t\t\t\t\t\t\t//User DB field\r\n\t@enumerable static get TABLES() { return manager.GetLocalizedString( 460 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Tables\r\n\t@enumerable static get CLICK_TO_EXPAND_COLLAPSE() { return manager.GetLocalizedString( 461 ) }\t\t\t\t\t\t\t\t\t//click to expand/collapse\r\n\t@enumerable static get COLUMNS() { return manager.GetLocalizedString( 462 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Columns\r\n\t@enumerable static get PRIMARY_KEY_ON_COLUMNS() { return manager.GetLocalizedString( 463 ) }\t\t\t\t\t\t\t\t\t\t//Primary KEY on columns\r\n\t@enumerable static get INDEX_COLUMN() { return manager.GetLocalizedString( 464 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Index column\r\n\t@enumerable static get COLUMN() { return manager.GetLocalizedString( 465 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Column\r\n\t@enumerable static get UPDATE() { return manager.GetLocalizedString( 466 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Update\r\n\t@enumerable static get SEQUENCE_NAME() { return manager.GetLocalizedString( 511 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Sequence name\r\n\t@enumerable static get UNIQIUE_SEQUENCE_NAME() { return manager.GetLocalizedString( 512 ) }\t\t\t\t\t\t\t\t\t\t//Make sure sequence name is unqiue\r\n\t@enumerable static get DOWNLOAD_METADATA() { return manager.GetLocalizedString( 515 ) }\t\t\t\t\t\t\t\t\t\t\t//Download metadata\r\n\t@enumerable static get CLICK_TO_DOWNLOAD_METADATA() { return manager.GetLocalizedString( 516 ) }\t\t\t\t\t\t\t\t\t//Click to download xsd file with database structure for Crystal Report\r\n\t@enumerable static get VIEW_EDITOR() { return manager.GetLocalizedString( 621 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//View Editor\r\n\t@enumerable static get VIEW() { return manager.GetLocalizedString( 622 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//View\r\n\t@enumerable static get DYNAMIC_VIEW() { return manager.GetLocalizedString( 970 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Dynamic view\r\n\t@enumerable static get RECIPE_VERSION() { return manager.GetLocalizedString( 1322 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Recipe Version\r\n\t@enumerable static get RECORD_ID() { return manager.GetLocalizedString( 672 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Record Id\r\n\t@enumerable static get VALIDATION() { return manager.GetLocalizedString( 906 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Validation\r\n\t@enumerable static get CANNOT_MAKE_AN_ACTIVE_VERSION_INACTIVE() { return manager.GetLocalizedString( 1337 ) }\t\t\t\t\t\t//Cannot make an active version inactive\r\n\r\n\r\n\t@enumerable static get CLICK_TO_SET_SEQUENCE_VALUE() { return manager.GetLocalizedString( 886 ) }\t\t\t\t\t\t\t\t\t//Click to set sequence value\r\n\r\n\r\n\t//Table Editor\r\n\t@enumerable static get ADD_RELATION_TYPE_TOOLTIP() { return manager.GetLocalizedString( 606 ) }\t\t\t\t\t\t\t\t\t\t\t//Add relation types\r\n\r\n\t//Tab\r\n\t@enumerable static get SHOW_ALL() { return manager.GetLocalizedString( 448 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Show all\r\n\t@enumerable static get HIDE() { return manager.GetLocalizedString( 449 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Hide\r\n\t@enumerable static get NEW_TAB() { return manager.GetLocalizedString( 664 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//New Tab\r\n\r\n //Portlet\r\n\t@enumerable static get EDIT_PORTLETSPACE() { return manager.GetLocalizedString( 450 ) }\t\t\t\t\t\t\t\t\t\t\t//Edit PortletSpace\r\n\r\n\t//multiple portlets spaces\r\n\t@enumerable static get MORE() { return manager.GetLocalizedString( 548 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//More dropdown\r\n\t@enumerable static get PORTLET_SPACE_INFO() { return manager.GetLocalizedString( 550 ) }\t\t\t\t\t\t\t\t\t\t\t//Portlet space info\r\n\t@enumerable static get PORTLET_SPACE_NAME() { return manager.GetLocalizedString( 551 ) }\t\t\t\t\t\t\t\t\t\t\t//Portlet space name\r\n\t@enumerable static get USE_AS_MAIN() { return manager.GetLocalizedString( 552 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Use as main\r\n\r\n\t@enumerable static get CREATE_NEW() { return manager.GetLocalizedString( 555 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Create new {entityName}\r\n\t@enumerable static get EDIT_BUTTON() { return manager.GetLocalizedString( 556 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Edit button\r\n\t@enumerable static get PLEASE_ENTER_PORTLET_SPACE_NAME() { return manager.GetLocalizedString( 557 ) }\t\t\t\t\t\t\t\t//Please, enter a portlet space name\r\n\t@enumerable static get PORTLET_SPACE_WILL_BE_DELETED() { return manager.GetLocalizedString( 559 ) }\t\t\t\t\t\t\t\t//Portlet space will be deleted\r\n\t@enumerable static get CONFIRMATION_FOR_UNSAVED_CHANGES() { return manager.GetLocalizedString( 567 ) }\t\t\t\t\t\t\t//All unsaved changes will be lost. Save changes?\r\n\t@enumerable static get PORTLET_SPACE_WAS_UPDATED() { return manager.GetLocalizedString( 568 ) }\t\t\t\t\t\t\t\t\t//Portlet Space was updated\r\n\t@enumerable static get SELECT_EXISTING_PORTLET_SPACE() { return manager.GetLocalizedString( 1512 ) }\t\t\t\t\t\t\t\t//Select existing portlet space\r\n\t@enumerable static get EXPAND() { return manager.GetLocalizedString( 639 ) }\r\n\t@enumerable static get COLLAPSE() { return manager.GetLocalizedString( 640 ) }\r\n\t@enumerable static get PORTLET_SETTINGS() { return manager.GetLocalizedString( 641 ) }\r\n\t@enumerable static get MINIMIZE() { return manager.GetLocalizedString( 643 ) }\r\n\t@enumerable static get MAXIMIZE() { return manager.GetLocalizedString( 644 ) }\r\n\r\n\t//Buttons\r\n\t@enumerable static get HISTORY() { return manager.GetLocalizedString( 628 ) }\r\n\t@enumerable static get RESET_SECURITY() { return manager.GetLocalizedString( 629 ) }\r\n\t@enumerable static get SPECIAL() { return manager.GetLocalizedString( 630 ) }\r\n\t@enumerable static get ADD_TO_FAVORITES() { return manager.GetLocalizedString( 631 ) }\r\n\t@enumerable static get COPY_WITH_RELATIONS() { return manager.GetLocalizedString(715) }\t\t\t\t\t\t\t\t\t\t\t\t//Copy with relations\r\n\t@enumerable static get CONSULT() { return manager.GetLocalizedString( 969 ) }\r\n\t@enumerable static get DASHBOARD() { return manager.GetLocalizedString( 1255 ) }\r\n\t@enumerable static get CTRL_S_SAVE() { return manager.GetLocalizedString( 1262 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Click or press Ctrl + S to Save the changes\r\n\r\n\t//Icon manager\r\n\t@enumerable static get SELECT_ICON() { return manager.GetLocalizedString( 451 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Select icon\r\n\r\n\t//Make example\r\n\t@enumerable static get MAKE_EXAMPLE() { return manager.GetLocalizedString( 537 ) }\t\t\t\t\t\t\t\t\t//Make example\r\n\r\n\t//Recent And Favorites panel\r\n\t@enumerable static get NO_RECORDS_MESSAGE() { return manager.GetLocalizedString( 543 ) }\t\t\t\t\t\t\t//There is no records yet\r\n\t@enumerable static get NO_NAME_RECORD() { return manager.GetLocalizedString( 544 ) }\t\t\t\t\t\t\t\t//no name record\r\n\r\n\t@enumerable static get PARENT() { return manager.GetLocalizedString( 545 ) }\t\t\t\t\t//Child\r\n\t@enumerable static get CHILD() { return manager.GetLocalizedString( 546 ) }\t\t\t\t\t//Parent\r\n\t@enumerable static get ITSELF() { return manager.GetLocalizedString( 547 ) }\t\t\t\t\t//Itself\r\n\r\n\t//Help pages\r\n\t@enumerable static get DOCUMENTATION() { return manager.GetLocalizedString( 595 ) }\t\t\t\t\t\t\t\t//Documentation\r\n\t@enumerable static get THERE_IS_NO_DESCRIPTION_AVAILABLE() { return manager.GetLocalizedString( 596 ) }\t\t\t//There is no description available\r\n\t@enumerable static get CONTROL() { return manager.GetLocalizedString( 1008 ) }\t\t\t\t\t\t\t\t\t//Control\r\n\t@enumerable static get DASH() { return manager.GetLocalizedString( 1015 ) }\t\t\t\t\t\t\t\t\t\t//Dash\r\n @enumerable static get STATUS_FLOW() { return manager.GetLocalizedString( 1063 ) }\t\t\t\t\t\t\t\t//Status Flow\r\n @enumerable static get SETTING_THE_STATUS_RUNS() { return manager.GetLocalizedString( 1066 ) }\t\t\t\t\t//Setting the status runs the DataWizard\r\n @enumerable static get FOLLOW_UP_DOES_NOT_CREATE_AN_ACTION() { return manager.GetLocalizedString( 1067 ) }\t\t//FollowUp does not create an action\r\n @enumerable static get DURATION_IS_SET() { return manager.GetLocalizedString( 1068 ) }\t\t\t\t\t\t\t//Duration of the related action is automatically set to\r\n @enumerable static get DEADLINE_IS_SET() { return manager.GetLocalizedString( 1069 ) }\t\t\t\t\t\t\t//Deadline of the related action is automatically set to\r\n\t@enumerable static get BUSINESS_ROLES() { return manager.GetLocalizedString(1070) }\t\t\t\t\t\t\t\t//Business roles\r\n\t@enumerable static get FUNCTIONS() { return manager.GetLocalizedString(1175) }\t\t\t\t\t\t\t\t\t//Functions\r\n\r\n\t//Notifications\r\n\t@enumerable static get NOTIFIER_SUCCESS() { return manager.GetLocalizedString( 10 ) };\t\t\t\t\t\t//Success\r\n\t@enumerable static get NOTIFIER_WARNING() { return manager.GetLocalizedString( 47 ) }; //Attention\r\n\t@enumerable static get NOTIFIER_FAIL() { return manager.GetLocalizedString( 65 ) };\t\t\t\t\t\t//Oops\r\n\r\n\t//BulkEmail\r\n\t@enumerable static get BULK_EMAIL() { return manager.GetLocalizedString( 263 ) };\t\t\t\t\t\t\t//Bulk Email\r\n\t@enumerable static get RECIPIENTS() { return manager.GetLocalizedString(333) };\t\t\t\t\t\t\t\t//Recipients\r\n\t@enumerable static get ADDRESS_FIELD() { return manager.GetLocalizedString(335) };\t\t\t\t\t\t\t//Address field\r\n\t@enumerable static get MAILING_TEMPLATE() { return manager.GetLocalizedString(350) };\t\t\t\t\t\t//Mailing template\r\n\t@enumerable static get REQUEST_TEMPLATE() { return manager.GetLocalizedString(671) };\t\t\t\t\t\t//Request template\r\n\t@enumerable static get CONFIGURE() { return manager.GetLocalizedString(351) };\t\t\t\t\t\t\t\t//Configure\r\n\t@enumerable static get START() { return manager.GetLocalizedString(669) };\t\t\t\t\t\t\t\t\t//Start\r\n\t@enumerable static get STOP() { return manager.GetLocalizedString(670) };\t\t\t\t\t\t\t\t\t//Stop\r\n\r\n\t//FollowUp\r\n\t@enumerable static get FOLLOW_UP() { return manager.GetLocalizedString(1268) }\t\t\t\t\t\t\t\t\t\t\t//Follow Up\r\n\t@enumerable static get EXIST_ACTIVE_ACTIONS() { return manager.GetLocalizedString(663) }\t\t\t //There are other active actions. Could not proceed to the next lifestatus.\r\n @enumerable static get RECORD_IS_DISABLED() { return manager.GetLocalizedString(1204) }\t\t\t //Record is disabled.\r\n @enumerable static get ACTIVE_ACTIONS_NOT_FOUND() { return manager.GetLocalizedString(1205) }\t\t\t //Active ACTIONS record not found.\r\n \r\n //Actiion check list\r\n\t@enumerable static get THERE_ARE_NO_NEXT_STATUSES_WITH_CHECK_LIST() {return manager.GetLocalizedString(919)};\r\n\t@enumerable static get CHECKLIST_UPDATED() {return manager.GetLocalizedString(920)};\r\n\r\n\t//Scheduler\r\n @enumerable static get SCHEDULER_FREE_CAPACITY() { return manager.GetLocalizedString( 674 ) }; //Free capacity\r\n @enumerable static get SCHEDULER_COMMON_FREE_TIME() { return manager.GetLocalizedString( 675 ) }; //Common free time\r\n\t@enumerable static get PERIOD() { return manager.GetLocalizedString( 765 ) };\t\t\t\t\t\t\t\t\t\t\t\t//Period\r\n\t@enumerable static get STARTING() { return manager.GetLocalizedString( 766 ) };\t\t\t\t\t\t\t\t\t\t\t//Starting\r\n @enumerable static get AGENDA_IS_NOT_CONNECTED() { return manager.GetLocalizedString( 676 ) }; //AGENDA is not connected to this table\r\n\t@enumerable static get AGENDA_IS_NOT_AVAILABLE() { return manager.GetLocalizedString(677) }; //AGENDA is not available due to security settings\r\n\t@enumerable static get SCHEDULER_NOT_FOUND() { return manager.GetLocalizedString(853) }; //Scheduler not found\r\n\t@enumerable static get RE_PLANNING() { return manager.GetLocalizedString(854) }; //Re-planning\r\n\t@enumerable static get RE_PLAN_APPOINTMENT_TO_PERIOD() { return manager.GetLocalizedString(880) }; //Click to schedule the appointment for this period\r\n\t@enumerable static get NUMBER_WEEKS() { return manager.GetLocalizedString(899)};\t\t\t\t\t\t\t\t\t\t\t//number Weeks \"W\"\r\n\t@enumerable static get SUBJECT_TOOLTIP() { return manager.GetLocalizedString(1056)};\t\t\t\t\t\t\t\t\t\t//Set the number of periods to 2 to show linked {entityname} records\r\n\r\n\t@enumerable static get NO_POSSIBLE_TO_CREATE_APPOINTMENT_IN_THE_PAST() {return manager.GetLocalizedString(681)};\t\t//No possible to create an appointment in the past\r\n\r\n\t//Invoicing\r\n\t@enumerable static get PLEASE_SELECT_DATA_SOURCE() { return manager.GetLocalizedString(682) };\t\t\t\t\t\t\t// Please, select data source\r\n\t@enumerable static get PLEASE_SELECT_WAITING_FOR_INVOICE_LIFESTATUS() { return manager.GetLocalizedString(683) };\t\t// Please, select ready for invoice lifestatus\r\n\t@enumerable static get PLEASE_SELECT_INVOICE_ENTITY() { return manager.GetLocalizedString(684) };\t\t\t\t\t\t// Please, select invoice entity\r\n\t@enumerable static get PLEASE_SELECT_OUTPUT_RECORD_TYPE() { return manager.GetLocalizedString(685) };\t\t\t\t\t// Please, select output record type\r\n @enumerable static get RECORD_FOR_TABLE_CREATED() { return manager.GetLocalizedString(686) };\t\t\t\t\t\t\t// {table} record has been created\r\n\t@enumerable static get DATA_SOURCE() { return manager.GetLocalizedString(701) };\t\t\t\t\t\t\t\t\t\t// Data Source\r\n\t@enumerable static get WAITING_FOR_INVOICING_LIFESTATUS() { return manager.GetLocalizedString(702) };\t\t\t\t\t// Wating for invoicing lifestatus\r\n\t@enumerable static get INVOICE_ENTITY() { return manager.GetLocalizedString(703) };\t\t\t\t\t\t\t\t\t\t// Invoice entity\r\n\t@enumerable static get INVOICE_TYPE() { return manager.GetLocalizedString(704) };\t\t\t\t\t\t\t\t\t\t// Invoice type\r\n\r\n\t//Lifestatus Designer\r\n @enumerable static get CONFIRM() { return manager.GetLocalizedString(716) };\t\t\t\t\t\t\t\t\t// Confirm\r\n @enumerable static get DISABLE_NODE() { return manager.GetLocalizedString(717) };\t\t\t\t\t\t\t\t// Are you sure you want to disable this node?\r\n @enumerable static get LINKS_WILL_BE_DELETED() { return manager.GetLocalizedString(718) };\t\t\t\t\t\t// Please, note that all related links will be deleted.\r\n @enumerable static get REMOVE_THIS_LINK() { return manager.GetLocalizedString(719) };\t\t\t\t\t\t\t\t\t\t// Are you sure you want to remove this link?\r\n @enumerable static get UNDO() { return manager.GetLocalizedString(720) };\t\t\t\t\t\t\t\t\t\t// UNDO\r\n @enumerable static get REDO() { return manager.GetLocalizedString(721) };\t\t\t\t\t\t\t\t\t\t// Redo\r\n @enumerable static get PRINT() { return manager.GetLocalizedString(722) };\t\t\t\t\t\t\t\t\t\t// Print\r\n @enumerable static get AUTO_LAYOUT() { return manager.GetLocalizedString(723) };\t\t\t\t\t\t\t\t// Auto-layout\r\n @enumerable static get TOGGLE_FULL_SCREEN() { return manager.GetLocalizedString(724) };\t\t\t\t\t\t// Toggle full screen\r\n @enumerable static get ROTATE() { return manager.GetLocalizedString(725) };\t\t\t\t\t\t\t\t\t// Rotate\r\n @enumerable static get ONLIFESTATUSTRIGGER() { return manager.GetLocalizedString(726) };\t\t\t\t\t\t// OnLifestatusSet Trigger\r\n @enumerable static get PRESENTATION() { return manager.GetLocalizedString(727) };\t\t\t\t\t\t\t\t// Presentation\r\n @enumerable static get FILL() { return manager.GetLocalizedString(728) };\t\t\t\t\t\t\t\t\t\t// Fill\r\n @enumerable static get OUTLINE() { return manager.GetLocalizedString(729) };\t\t\t\t\t\t// Outline\r\n @enumerable static get FONT_SIZE() { return manager.GetLocalizedString(730) };\t\t\t\t\t\t// Font size\r\n @enumerable static get FONT_THICKNESS() { return manager.GetLocalizedString(731) };\t\t\t\t\t\t// Font thickness\r\n @enumerable static get FONT_COLOR() { return manager.GetLocalizedString(732) };\t\t\t\t\t\t// Font color\r\n @enumerable static get TRANSITION() { return manager.GetLocalizedString(733) };\t\t\t\t\t\t// Transition\r\n @enumerable static get APPROVAL() { return manager.GetLocalizedString(734) };\t\t\t\t\t\t// Approval\r\n @enumerable static get CONNECTION_TYPE() { return manager.GetLocalizedString(735) };\t\t\t\t\t\t// Connection type\r\n @enumerable static get CONNECTION_STYLE() { return manager.GetLocalizedString(736) };\t\t\t\t\t\t// Connection style\r\n @enumerable static get LINE_THICKNESS() { return manager.GetLocalizedString(737) };\t\t\t\t\t\t// Line thickness\r\n @enumerable static get LINE_STYLE() { return manager.GetLocalizedString(738) };\t\t\t\t\t\t// Line style\r\n @enumerable static get COLOR() { return manager.GetLocalizedString(739) };\t\t\t\t\t\t// Color\r\n @enumerable static get ENABLE() { return manager.GetLocalizedString(740) };\t\t\t\t\t\t// Enable\r\n @enumerable static get NEXT_ALLOWED() { return manager.GetLocalizedString(741) };\t\t\t\t\t\t// Next Allowed\r\n @enumerable static get SOLID() { return manager.GetLocalizedString(742) };\t\t\t\t\t\t// Solid\r\n @enumerable static get DOTTED() { return manager.GetLocalizedString(743) };\t\t\t\t\t\t// Dotted\r\n @enumerable static get DASHED() { return manager.GetLocalizedString(744) };\t\t\t\t\t\t// Dashed\r\n\t@enumerable static get BOLD() { return manager.GetLocalizedString(746) };\t\t\t\t\t\t// Bold\r\n\t@enumerable static get INVALID_LIFESTATUS_NAME() { return manager.GetLocalizedString(747) };\t\t// Invalid lifestatus name: Start\r\n\t@enumerable static get ADVANCED_MODE() { return manager.GetLocalizedString(773) };\t\t// Advanced mode\r\n\t@enumerable static get TIME_FRAME() { return manager.GetLocalizedString(775) };\t\t// Time Frame\r\n\t@enumerable static get DURATION_ELAPSED() { return manager.GetLocalizedString(776) };\t\t// Duration elapsed\r\n\t@enumerable static get DEADLINE_ELAPSED() { return manager.GetLocalizedString(777) };\t\t// Deadline elapsed\r\n\t@enumerable static get NO_ACTION_NODE() { return manager.GetLocalizedString(876) };\t\t// No action node\r\n\t@enumerable static get SKIP_ACTION_CREATION_ON_FOLLOW_UP() { return manager.GetLocalizedString(882) };\t\t// Skip action creation on follow up\r\n\t@enumerable static get CREATE_A_TRIGGER() { return manager.GetLocalizedString( 1048 ) }; // Create a trigger to run functions when the status is set\r\n\t@enumerable static get MULTIPLE_ACTIONS() { return manager.GetLocalizedString(1144) };\t\t\t\t// Multiple actions\r\n\t@enumerable static get SELECTED() { return manager.GetLocalizedString(1183) };\t\t\t\t\t\t\t\t\t\t\t//Selected\r\n\t@enumerable static get ICON_NOT_SELECTED() { return manager.GetLocalizedString(1184) };\t\t\t\t\t\t\t\t//Icon not selected\r\n\t@enumerable static get HIDE_LIFESTATUS_NAME() { return manager.GetLocalizedString(1185) };\t\t\t\t\t\t\t\t//Hide lifestatus name\r\n\t@enumerable static get REFERENCE_FLOW() { return manager.GetLocalizedString(1304) };\t\t\t\t\t\t\t//Reference Flow\r\n\r\n\t//Financial Dashboard\r\n\t@enumerable static get LEDGER() { return manager.GetLocalizedString(750)};\t\t\t\t\t// Ledger\r\n\t@enumerable static get ACCOUNTS() { return manager.GetLocalizedString(751)};\t\t\t\t\t// Accounts\r\n\t@enumerable static get NO_CONTROLS_OF_TYPE_INVOICING() { return manager.GetLocalizedString(752)}; //There are no controls of type Invoicing\r\n\t@enumerable static get READY_FOR_INVOICING_DATA() { return manager.GetLocalizedString(753)}; //Ready for invoicing data\r\n\t@enumerable static get INVOICED() { return manager.GetLocalizedString(755)}; //Invoiced\r\n\t@enumerable static get READY_FOR_PROCESSING_DATA() { return manager.GetLocalizedString(756)}; //Ready for processing data\r\n\t@enumerable static get SELECT_FINANCIAL_PROCESSOR() { return manager.GetLocalizedString(757)}; //Select Financial Processor\r\n\r\n\t//User Allowance\r\n\t@enumerable static get OVERRIDE_SECURITY() { return manager.GetLocalizedString(863)}; \t\t\t\t\t\t//Override security\r\n\t@enumerable static get CHANGE_RECORD_SECURITY() { return manager.GetLocalizedString(864)}; \t\t\t\t\t//Change record security\r\n\t@enumerable static get NATIVE_SQL() { return manager.GetLocalizedString(865)}; \t\t\t\t\t\t\t\t//Native SQL\r\n\t@enumerable static get PLANNING() { return manager.GetLocalizedString(866)}; \t\t\t\t\t\t\t\t\t//Planning\r\n\t@enumerable static get MAKE_PERSONAL_LABEL() { return manager.GetLocalizedString(867)}; \t\t\t\t\t\t//Make personal\r\n\t@enumerable static get EXPORT_DATA() { return manager.GetLocalizedString(868)}; \t\t\t\t\t\t\t\t//Export data1\r\n\t@enumerable static get MAKE_EXAMPLE_LABLE() { return manager.GetLocalizedString(869)}; \t\t\t\t\t\t//Make example\r\n\r\n\t//User Security\r\n\t@enumerable static get SUPER_USER() { return manager.GetLocalizedString( 870 )};\t\t\t\t\t\t\t\t//SuperUser\r\n\t@enumerable static get DESIGNER_LEVEL1() { return manager.GetLocalizedString( 871 )};\t\t\t\t\t\t\t\t//Designer Level 1\r\n\t@enumerable static get DESIGNER_LEVEL2() { return manager.GetLocalizedString( 872 )};\t\t\t\t\t\t\t\t//Designer Level 2\r\n\t@enumerable static get DESIGNER_LEVEL3() { return manager.GetLocalizedString( 873 )};\t\t\t\t\t\t\t\t//Designer Level 3\r\n\t@enumerable static get NETWORK_MANAGER() { return manager.GetLocalizedString( 1273)};\t\t\t\t\t\t\t\t//Network Manager\r\n\t@enumerable static get US() { return manager.GetLocalizedString( 874 )};\t\t\t\t\t\t\t\t\t\t//US\r\n\r\n\r\n\t@enumerable static get FINANCIAL() { return manager.GetLocalizedString( 893 )};\t\t\t\t\t\t\t\t//Financial\r\n\r\n\t//General properties\r\n\t@enumerable static get PLEASE_SPECIFY_THE_URL() { return manager.GetLocalizedString( 953 ) }\t\t\t\t//Please, specify the url\r\n\t@enumerable static get DROP_REPORT_HERE() { return manager.GetLocalizedString( 954 ) }\t\t\t\t\t\t//Drop report here\r\n\r\n\t//Planner level control\r\n\r\n\t@enumerable static get LINK_UNDERLYING_RECORD() { return manager.GetLocalizedString( 913 )};\t\t\t\t\t//Click to link a {UnderlyingSubject} record\r\n\t@enumerable static get ADD_AND_LINK_UNDERLYING_RECORD() { return manager.GetLocalizedString( 917 )};\t\t\t//Click to add & link a {UnderlyingSubject} record\r\n\t@enumerable static get PROJECT_MANAGER() { return manager.GetLocalizedString( 972 )};\t\t\t\t\t\t\t//Project manager\r\n\t\r\n\t@enumerable\tstatic get OVERWRITE() { return manager.GetLocalizedString( 1155 )};\t\t\t\t\t\t\t\t\t\t\t//Overwrite\r\n\t\r\n\t@enumerable\tstatic get SKIP_EXISTING() { return manager.GetLocalizedString( 1156 )};\t\t\t\t\t\t\t\t\t\t//Skip existing\r\n\r\n\t@enumerable\tstatic get COPY_PLANNER_DATA() { return manager.GetLocalizedString(1159) }; //Copy planning data\r\n\t\r\n\t@enumerable static get COPY_PERIOD() { return manager.GetLocalizedString(1160) }; \t//Copy {periodName}\r\n\r\n\t@enumerable static get CONFIRM_SELECTION() { return manager.GetLocalizedString(1161) }; \t//Confirm selection\r\n\r\n\t//#region Deletion modes\r\n\t@enumerable static get ON_DELETE() { return manager.GetLocalizedString(1232) };\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//On delete\r\n\t@enumerable static get DISABLING_A_RECORD_WITH_A_CUSTOM_LIFESTATUS_IS_NOT_ALLOWED() { return manager.GetLocalizedString(1229) }; \t\t\t\t//Disabling a record with a custom lifestatus is not allowed\r\n\t//#endregion\r\n\r\n\t//#region Undefined\r\n\t@enumerable static get NOTIFICATIONS_LABEL() { return manager.GetLocalizedString( 778 )};\t\t\t\t\t\t//Notifications\r\n\t@enumerable static get TABLE_VIEW_LABEL() { return manager.GetLocalizedString(779)}; \t\t\t\t\t\t\t//TableView\r\n\t@enumerable static get GRID_BULK_EDIT() { return manager.GetLocalizedString(781)}; \t\t\t\t\t\t\t//Bulk edit\r\n\t@enumerable static get SEND_BY_EMAIL() { return manager.GetLocalizedString(782)}; \t\t\t\t\t\t\t//Send by email\r\n\t@enumerable static get EDIT_RECORD_LABEL() { return manager.GetLocalizedString(783)}; \t\t\t\t\t\t//Edit record\r\n\t@enumerable static get ACCESS_DENIED_LABEL() { return manager.GetLocalizedString(784)}; \t\t\t\t\t\t//Access denied\r\n\t@enumerable static get UNLINK_RECORD_LABEL() { return manager.GetLocalizedString(785)}; \t\t\t\t\t\t//Unlink record\r\n\t@enumerable static get UNLINK_MANY_RECORDS_LABEL() { return manager.GetLocalizedString(1424)}; \t\t\t\t//Unlink many records\r\n\t@enumerable static get UNLINK_LABEL() { return manager.GetLocalizedString(1425)}; \t\t\t\t\t\t\t//Unlink\r\n\t@enumerable static get UNLINK_ALL_SELECTED_LABEL() { return manager.GetLocalizedString(1426)}; \t\t\t\t//Unlink all selected\r\n\t@enumerable static get ENABLE_RECORD_LABEL() { return manager.GetLocalizedString(786)}; \t\t\t\t\t\t//Enable record\r\n\t@enumerable static get DISABLE_RECORD_LABEL() { return manager.GetLocalizedString(787)}; \t\t\t\t\t\t//Disable record\r\n\t@enumerable static get ADD_TO_BASKET_LABEL() { return manager.GetLocalizedString(788)}; \t\t\t\t\t\t//Add to basket\r\n\t@enumerable static get REMOVE_FROM_BASKET_LABEL() { return manager.GetLocalizedString(789)}; \t\t\t\t\t//Remove from basket\r\n\t@enumerable static get PLANNER_LABEL() { return manager.GetLocalizedString(790)}; \t\t\t\t\t\t\t//Planner\r\n\t@enumerable static get SELECT_VALUE_LABEL() { return manager.GetLocalizedString(792)}; \t\t\t\t\t\t//Select value ...\r\n\t@enumerable static get OWNER_LABEL() { return manager.GetLocalizedString(793)}; \t\t\t\t\t\t\t\t//Owner\r\n\t@enumerable static get ADD_NEW_LINK_LABEL() { return manager.GetLocalizedString(794)}; \t\t\t\t\t\t//Add new link\r\n\t@enumerable static get REMOVE_LINK_LABEL() { return manager.GetLocalizedString(795)}; \t\t\t\t\t\t//Remove link\r\n\t@enumerable static get EDIT_LINK_LABEL() { return manager.GetLocalizedString(796)}; \t\t\t\t\t\t\t//Edit link\r\n\t@enumerable static get TABLE_TEXT_NON_HAS_FIELDS() { return manager.GetLocalizedString(797)}; \t\t\t\t//Link table does not have any Custom fields\r\n\t@enumerable static get RECORD_VIEWED_LABEL() { return manager.GetLocalizedString(791)}; \t\t\t\t\t\t//Record viewed\r\n\t@enumerable static get RECORD_EDITED_LABEL() { return manager.GetLocalizedString(798)}; \t\t\t\t\t\t//Record edited\r\n\t@enumerable static get RECORD_DELETED_LABEL() { return manager.GetLocalizedString(799)}; \t\t\t\t\t\t//Record deleted\r\n\t@enumerable static get LINK_CREATED_LABEL() { return manager.GetLocalizedString(800)}; \t\t\t\t\t\t//Link created\r\n\t@enumerable static get LINK_EDITED_LABEL() { return manager.GetLocalizedString(801)}; \t\t\t\t\t\t//Link edited\r\n\t@enumerable static get LINK_DELETED_LABEL() { return manager.GetLocalizedString(802)}; \t\t\t\t\t\t//Link deleted\r\n\t@enumerable static get GLOBAL_SETTINGS_LABEL() { return manager.GetLocalizedString(803)}; \t\t\t\t\t//Global settings\r\n\t@enumerable static get NO_EXAMPLE_LABEL() { return manager.GetLocalizedString(804)}; \t\t\t\t\t\t\t//No example\r\n\t@enumerable static get CLUSTERED_FLAG() { return manager.GetLocalizedString(805)}; \t\t\t\t\t\t\t//Clustered\r\n\t@enumerable static get FIELD_MATCHING_LABEL() { return manager.GetLocalizedString(806)}; \t\t\t\t\t\t//Field matching\r\n\t@enumerable static get LINKED_ENTITY_LABEL() { return manager.GetLocalizedString(807)}; \t\t\t\t\t\t//Linked entity\r\n\t@enumerable static get CURRENT_ENTITY_LABEL() { return manager.GetLocalizedString(808)}; \t\t\t\t\t\t//Current entity\r\n\t@enumerable static get SELECT_FORMAT_LABEL() { return manager.GetLocalizedString(809)}; \t\t\t\t\t\t//Select format\r\n\t@enumerable static get SELECT_LABEL() { return manager.GetLocalizedString(810)}; \t\t\t\t\t\t\t\t//Select\r\n\t@enumerable static get ACCOUNT_NAME_LABEL() { return manager.GetLocalizedString(811)}; \t\t\t\t\t\t//Account Name\r\n\t@enumerable static get ACTIVE_LABEL() { return manager.GetLocalizedString(813)}; \t\t\t\t\t\t\t\t//Active\r\n\t@enumerable static get ARCHIVE_LABEL() { return manager.GetLocalizedString(814)}; \t\t\t\t\t\t\t//Archive\r\n\t@enumerable static get REVOKE_LABEL() { return manager.GetLocalizedString(815)}; \t\t\t\t\t\t\t\t//Revoke\r\n\t@enumerable static get RLANNED_LABEL() { return manager.GetLocalizedString(816)}; \t\t\t\t\t\t\t//Planned\r\n\t@enumerable static get ACQUIRED_LABEL() { return manager.GetLocalizedString(817)}; \t\t\t\t\t\t\t//Acquired\r\n\t@enumerable static get MAINTAINED_LABEL() { return manager.GetLocalizedString(818)}; \t\t\t\t\t\t\t//Maintained\r\n\t@enumerable static get OPERATIONAL_LABEL() { return manager.GetLocalizedString(819)}; \t\t\t\t\t\t//Operational\r\n\t@enumerable static get RETIRED_LABEL() { return manager.GetLocalizedString(820)}; \t\t\t\t\t\t\t//Retired\r\n\t@enumerable static get SECURITY_EDITOR_LABEL() { return manager.GetLocalizedString(821)}; \t\t\t\t\t//Security Editor\r\n\t@enumerable static get SECURITY_LABEL() { return manager.GetLocalizedString(822)}; \t\t\t\t\t\t\t//Security\r\n\t@enumerable static get PASS_OWNER_LABEL() { return manager.GetLocalizedString(823)}; \t\t\t\t\t\t\t//Pass owner\r\n\t@enumerable static get PASS_INHERITANCE_SETTINGS_LABEL() { return manager.GetLocalizedString(1178)}\t\t\t//Pass inheritance settings\r\n\t@enumerable static get USER_USER_GROUP_LABEL() { return manager.GetLocalizedString(824)}; \t\t\t\t\t//User/User group\r\n\t@enumerable static get RIGHTS_LABEL() { return manager.GetLocalizedString(825)}; \t\t\t\t\t\t\t\t//Rights\r\n\t@enumerable static get OPTIONALS_RIGHTS_LABEL() { return manager.GetLocalizedString(826)}; \t\t\t\t\t//Optional Rights\r\n\t@enumerable static get DO_NOT_PASS_SECURITY_LABEL() { return manager.GetLocalizedString(827)}; \t\t\t\t//Do not pass security\r\n\t@enumerable static get PASS_RIGHTS_LABEL() { return manager.GetLocalizedString(828)}; \t\t\t\t\t\t//Pass rights\r\n\t@enumerable static get PASS_OPTIONAL_RIGHTS_LABEL() { return manager.GetLocalizedString(829)}; \t\t\t\t//Pass optional rights\r\n\t@enumerable static get REFUSE_PASSED_SECURITY_LABEL() { return manager.GetLocalizedString(830)}; \t\t\t\t//Refuse passed security\r\n\t@enumerable static get CLOSE_LABEL() { return manager.GetLocalizedString(831)}; \t\t\t\t\t\t\t\t//Close\r\n\t@enumerable static get ROW_LABEL() { return manager.GetLocalizedString(833)}; \t\t\t\t\t\t\t\t//Row\r\n\t@enumerable static get REMOVE_LABEL() { return manager.GetLocalizedString(834)}; \t\t\t\t\t\t\t\t//Remove\r\n\t@enumerable static get PASTE_VARIABLE_LABEL() { return manager.GetLocalizedString(835)}; \t\t\t\t\t\t//Paste variable\r\n\t@enumerable static get DO_YOU_WANT_TO_CREATE_LABEL() { return manager.GetLocalizedString(836)}; \t\t\t\t//Do you want to create a link?\r\n\t@enumerable static get NO_ACCESS_LABEL() { return manager.GetLocalizedString(837)}; \t\t\t\t\t\t\t//No Access\r\n\t@enumerable static get SEARCH_ONLY_LABEL() { return manager.GetLocalizedString(838)}; \t\t\t\t\t\t//Search Only\r\n\t@enumerable static get EDITDELETE_LABEL() { return manager.GetLocalizedString(839)}; \t\t\t\t\t\t\t//Edit/Delete\r\n\t@enumerable static get EDIT_DELETE_SECURITY_LABEL() { return manager.GetLocalizedString(840)}; \t\t\t\t//Edit/Delete/Security\r\n\t@enumerable static get FULL_ACCESS_LABEL() { return manager.GetLocalizedString(841)}; \t\t\t\t\t\t//Full Access\r\n\t@enumerable static get SELECT_RIGHTS() { return manager.GetLocalizedString(992)}; \t\t\t\t\t\t\t//Select Rights\r\n\t@enumerable static get EDIT_CODE_LABEL() { return manager.GetLocalizedString(842)}; \t\t\t\t\t\t\t//Edit code\r\n\t@enumerable static get ADD_DEFAULT_SECURITY() { return manager.GetLocalizedString(955) };\t\t\t\t\t\t//Add default security\r\n\t@enumerable static get SELECT_SECURITY_PROFILE() { return manager.GetLocalizedString(1206) };\t\t\t\t\t//Select security profile\r\n\t@enumerable static get PLEASE_SELECT_THE_PROFILE() { return manager.GetLocalizedString(1207) };\t\t\t\t\t//Please, select the profile\r\n\t@enumerable static get NO_ALTERNATIVE_ENTITIES_WERE_SELECTED() { return manager.GetLocalizedString(958) };\t\t//No alternative entities were selected\r\n\t@enumerable static get SWITCH_TO_THE_DASH_TYPE() { return manager.GetLocalizedString(1009) };\t\t\t\t\t// Switch to the dash type to add a field\r\n\r\n\t@enumerable static get FILL_LOOKUP() { return manager.GetLocalizedString(887)}; \t\t\t\t\t\t\t\t//Fill lookup\r\n\t@enumerable static get MAKE_A_BACK_LINK() { return manager.GetLocalizedString(888)}; \t\t\t\t\t\t\t//Make a back link\r\n\t@enumerable static get BUTTON_NAME() { return manager.GetLocalizedString(889)}; \t\t\t\t\t\t\t\t//Button Name\r\n\t@enumerable static get SUB_TABLE_VIEW() { return manager.GetLocalizedString(890)}; \t\t\t\t\t\t\t//Sub table view\r\n\t@enumerable static get INTENTION() { return manager.GetLocalizedString(891)}; \t\t\t\t\t\t\t\t//Intention\r\n\t@enumerable static get NO_RECORDS_TO_SELECT() { return manager.GetLocalizedString(952)}; \t\t\t\t\t\t//No records to select\r\n\t@enumerable static get CLICK_TO_COPY_URL() { return manager.GetLocalizedString(1440)};\t\t\t\t\t\t//Click to copy URL\r\n\t//#endregion\r\n\t\r\n\t//#region Cluster Settings\r\n\t@enumerable static get CLUSTER_SETTINGS() {return manager.GetLocalizedString(932)}\t\t\t\t\t\t\t\t\t\t\t\t\t//Cluster Settings\r\n\t@enumerable static get COPY_CLUSTER_MODE_DESCRIPTION() {return manager.GetLocalizedString(933)}\t\t\t\t\t\t\t\t\t\t//The value of the clustered field is copied\r\n\t@enumerable static get DEFAULT_CLUSTER_MODE_DESCRIPTION() {return manager.GetLocalizedString(934)}\t\t\t\t\t\t\t\t\t//The default value of the field is used (empty if not set)\r\n\t@enumerable static get DELTA_CLUSTER_MODE_DESCRIPTION() {return manager.GetLocalizedString(935)}\t\t\t\t\t\t\t\t\t\t//The delta of calculation between the sum of the current values and the sum of the next values, Sum(QuantityCurrent) - Sum(QuantityNext),\r\n\t@enumerable static get INVALID_FIELD_DATA() {return manager.GetLocalizedString(971)}\t\t\t\t\t\t\t//Invalid field data\r\n\t//#endregion\r\n\r\n\t//#region Book\r\n\t@enumerable static get BOOK_CANNOT_BE_RENDERED_ON_THE_BOOK_PAGE() {return manager.GetLocalizedString(1113)}\t\t//Book cannot be rendered on the book page\r\n\t@enumerable static get THERE_ARE_NO_PAGES() {return manager.GetLocalizedString(1114)}\t\t\t\t\t\t\t//There are no pages\r\n\t@enumerable static get SCREEN_NOT_FOUND_FOR_THE_PAGE() {return manager.GetLocalizedString(1115)}\t\t\t\t//Screen not found for the page\r\n\t@enumerable static get ERROR_GETTING_BOOK_PAGE() {return manager.GetLocalizedString(1122)}\t\t\t\t\t\t//Error getting book page\r\n\t//#endregion\r\n\r\n\t//#region Timer\r\n\t@enumerable static get TIMER() {return manager.GetLocalizedString(1127)}\t\t\t\t\t\t\t\t\t\t//Timer\r\n\t@enumerable static get ACTIVE_TIMERS() {return manager.GetLocalizedString(1128)}\t\t\t\t\t\t\t\t//Active Timers\r\n\t@enumerable static get START_TIMER() {return manager.GetLocalizedString(1466)}\t\t\t\t\t\t\t\t//Start timer\r\n\t@enumerable static get CLICK_TO_SHOW_ACTIVE_TIMERS() {return manager.GetLocalizedString(1129)}\t\t\t\t//Click to show active timers\r\n\t@enumerable static get SET_THE_MAXIMUM_DURATION_TO_HOURS() {return manager.GetLocalizedString(1130)}\t\t\t//Set the maximum duration to ${hours} hours\r\n\t@enumerable static get NO_ACTIVE_TIMERS() {return manager.GetLocalizedString(1139)}\t\t\t\t\t\t\t//No active timers\r\n\t@enumerable static get STOP_THE_TIMER_FOR() {return manager.GetLocalizedString(1491)}\t\t\t\t\t\t\t//Stop the timer for \"{recordName}\"?\r\n\t@enumerable static get STOP_THE_TIMER_FOR_BEFORE_LOGOUT() {return manager.GetLocalizedString(1492)}\t\t\t//Stop the timer for \"{recordName}\" before Logout?\r\n\t@enumerable static get THE_TIMER_FOR_STARTED_AUTOMATICALLY() {return manager.GetLocalizedString(1493)}\t\t//The timer for \"{recordName}\" started automatically\r\n\t//#endregion\r\n\r\n //#region Menu Queries\r\n @enumerable static get MENU_QUERIES() { return manager.GetLocalizedString( 1141 ) }\t\t\t\t\t\t\t //Menu Queries\r\n\t//#endregion\r\n\r\n\t//#region Decimal\r\n @enumerable static get DECIMAL_DIGITS_VALIDATION_MESSAGE() { return manager.GetLocalizedString(1153) }\t\t//Value must have at most {decimalDigits} digits in decimal part and at most {totalDigits} digits in total\r\n\t//#endregion\r\n\r\n //#region ProgressBar\r\n @enumerable static get DRAG_N_DROP_FLOWFOLDER() { return manager.GetLocalizedString(1190) } //Drag-n-drop grid records to add them to the folder\r\n\t@enumerable static get STATUS_SELECTOR() { return manager.GetLocalizedString( 1514 ) }\t\t\t//Status Selector\r\n\r\n\t//#endregion\r\n\r\n\t//#region Chart\r\n\t@enumerable static get SERIES() { return manager.GetLocalizedString(1244) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Series\r\n\t@enumerable static get NO_VALID_SUBTABLE_VIEW() { return manager.GetLocalizedString(1247) }\t\t\t\t\t\t\t\t\t\t//No valid subtable view\r\n\t//#endregion\r\n\r\n\t//#region Network Designer\r\n\t@enumerable static get ACCESS_RECORD_EXISTS() { return manager.GetLocalizedString(1296) }\t\t\t\t\t\t\t\t\t\t//This access record already exists\r\n\t@enumerable static get PLEASE_SELECT_USER() { return manager.GetLocalizedString(1300) }\t\t\t\t\t\t\t\t\t\t//Please, select user\r\n\t@enumerable static get PLEASE_SPECIFY_REMOTE_USER() { return manager.GetLocalizedString(1301) }\t\t\t\t\t\t\t\t//Please, specify remote user\r\n\t//#endregion\r\n\r\n\t//#region Translation editor\r\n\t@enumerable static get FILTER_BY_TYPE() { return manager.GetLocalizedString(1423) }\t\t\t\t\t\t\t\t\t\t\t//Filter by type\r\n\t//#endregion\r\n\r\n\t//#region Login Page\r\n\t@enumerable static get LOGIN() { return manager.GetLocalizedString(1398, 'Login') }\t\t\t\t\t\t\t\t//Login\r\n\t@enumerable static get RESET_PASSWORD() { return manager.GetLocalizedString(1399, 'Reset password') }\t\t\t\t//Reset password\r\n\t@enumerable static get ENTER_LOGIN() { return manager.GetLocalizedString(1401, 'Please, enter a login') }\t\t\t\t//Please, enter a login\r\n\t@enumerable static get ENTER_PASSWORD() { return manager.GetLocalizedString(1402, 'Please, enter a password') }\t\t\t\t//Please, enter a password\r\n\t@enumerable static get SELECT_DATABASE() { return manager.GetLocalizedString(1404, 'Please, select database') }\t\t\t\t//Please, select database\r\n\r\n\t@enumerable static get PASSWORD_EXPIRED() { return manager.GetLocalizedString(1405, 'Your password is expired') }\t\t\t//Your password is expired\r\n\t@enumerable static get CONFIRM_NEW_PASSWORD() { return manager.GetLocalizedString(1408, 'Confirm new password') }\t\t\t//Confirm new password\r\n\t@enumerable static get PASSWORD_EXPIRED_IN() { return manager.GetLocalizedString(1409, 'Your password will be expired in {amount} day(s)') }\t\t\t//Your password will be expired in {amount} day(s)\r\n\t//#endregion\r\n\r\n\t//#region Recipe Editor\r\n\t@enumerable static get RECIPE_NAME() { return manager.GetLocalizedString(1336) }\t\t\t\t\t\t\t\t\t\t\t\t//Recipe Name\r\n\t@enumerable static get LOCKED_THE_ROOT_NODE_IS_LINKED_TO_THE_LOCK_ENTITY() { return manager.GetLocalizedString(1345) }\t\t//Locked. The root node is linked to the lock entity\r\n\t@enumerable static get WILL_BE_APPLICABLE_DURING_UNLINKING_OF_ANY_PART_OF_RECIPE() { return manager.GetLocalizedString(1346) }\t//Will be applicable during Unlinking of any part of the recipe on any screen\r\n\t//#endregion\r\n\r\n\t@enumerable static get GENERATE_DOCUMENT_FROM_TEMPLATE() { return manager.GetLocalizedString(1434) } //Generate a document from a template\r\n\r\n\t//#region Report issue\r\n\t@enumerable static get SEND_TICKET() { return manager.GetLocalizedString(1450) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Send ticket\r\n\t@enumerable static get CREATE_TICKET() { return manager.GetLocalizedString(1451) }\t\t\t\t\t\t\t\t\t\t\t\t//Create ticket\r\n\t@enumerable static get SUMMARY() { return manager.GetLocalizedString(1452) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Summary\r\n\t@enumerable static get SUMMARY_IS_REQUIRED() { return manager.GetLocalizedString(1453) }\t\t\t\t\t\t\t\t\t\t\t//Summary is required\r\n\t@enumerable static get SUMMARY_SHOULD_HAVE_MAXIMUM_80_CHARACTERS() { return manager.GetLocalizedString(1454) }\t\t\t\t\t//Summary should have maximum 80 characters\r\n\t@enumerable static get CATEGORY() { return manager.GetLocalizedString(1455) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Category\r\n\t@enumerable static get CATEGORY_IS_REQUIRED() { return manager.GetLocalizedString(1456) }\t\t\t\t\t\t\t\t\t\t\t//Category is required\r\n\t@enumerable static get URGENCY() { return manager.GetLocalizedString(1457) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Urgency\r\n\t@enumerable static get URGENCY_IS_REQUIRED() { return manager.GetLocalizedString(1458) }\t\t\t\t\t\t\t\t\t\t\t//Urgency is required\r\n\t@enumerable static get REPORT_ISSUE_DESCRIPTION_PLACEHOLDER() { return manager.GetLocalizedString(1459) }\t\t\t\t\t\t\t//What exactly goes wrong?\\nWhat are the steps to reproduce the issue?\\nDoes it happen with all records or only with this one?\\nCan other users reproduce the issue?\\nThe more details, the better.\r\n\t@enumerable static get DESCRIPTION_IS_REQUIRED() { return manager.GetLocalizedString(1460) }\t\t\t\t\t\t\t\t\t\t//Description is required\r\n\t@enumerable static get DESCRIPTION_SHOULD_HAVE_AT_LEAST_50_CHARACTERS() { return manager.GetLocalizedString(1461) }\t\t\t\t//Description should have at least 50 characters\r\n\t@enumerable static get DESCRIPTION_SHOULD_HAVE_MAXIMUM_2000_CHARACTERS() { return manager.GetLocalizedString(1462) }\t\t\t\t//Description should have maximum 2000 characters\r\n\t@enumerable static get SWITCH_TO_VERSION() { return manager.GetLocalizedString(1480) }\t\t\t\t\t\t\t\t\t\t\t\t//Switch to this version\r\n\t//#endregion\r\n}\r\n\r\n//#region\r\nexport class CONFIRMATIONS {\r\n\t@enumerable static get ARE_YOUR_SURE_TO_DELETE_RECORDS() { return manager.GetLocalizedString(347) }\t\t\t\t\t\t\t\t//Are you sure that you want to delete record(s)?\r\n\t@enumerable static get ARE_YOUR_SURE_TO_DISABLE_RECORDS() { return manager.GetLocalizedString(711) }\t\t\t\t\t\t\t//Record(s) could not be deleted. Record(s) will be disabled.Proceed?\r\n\t@enumerable static get ALL_RELATED_DATA_WILL_BE_LOST_CONTINUE() { return manager.GetLocalizedString(1228) }\t\t\t\t\t\t//All related data will be lost. Continue?\r\n\t@enumerable static get DELETION_NOT_ALLOWED_DUE_TO_EXISTING_RELATED_RECORDS() { return manager.GetLocalizedString(1230) }\t\t//Deletion not allowed due to existing related records\r\n\r\n\t@enumerable static get FIELD_WILL_BE_REMOVED_FROM_NEXT_FIELD_COLLECTION() { return manager.GetLocalizedString( 348 ) }\t\t\t//Field will be removed from next field collections: {DeletedFields}\r\n\t@enumerable static get ALL_CHANGES_WILL_BE_LOST() { return manager.GetLocalizedString(349) }\t\t\t\t\t\t\t\t\t//All unsaved changes will be lost. Save changes?\r\n\t@enumerable static get DELETE_DATABASE_CONFIGURATION() { return manager.GetLocalizedString( 353 ) }\t\t\t\t\t\t\t\t//Delete database configuration?\r\n\t@enumerable static get CLOSE() { return manager.GetLocalizedString( 356 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Close?\r\n\t@enumerable static get DISCARD() { return manager.GetLocalizedString( 357 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Discard?\r\n\t@enumerable static get SEND() { return manager.GetLocalizedString( 1329 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Send\r\n\r\n\t@enumerable static get FUNCTION_PACKAGE_DELETION() { return manager.GetLocalizedString( 597 ) };\t\t\t\t\t\t\t\t//Current function package and all related data will be deleted. Proceed?\r\n\t@enumerable static get SUBFORM_AND_ITS_CONTROLS_WILL_BE_DELETED() { return manager.GetLocalizedString( 1264 ) }\t\t\t\t\t//Subform and its controls will be deleted. Proceed?\r\n\t@enumerable static get DO_YOU_WANT_TO_STOP_RECORD_NAME() { return manager.GetLocalizedString( 1318 ) }\t\t\t\t\t\t\t//Do you want to stop {recordName}?\r\n\r\n\r\n\t@enumerable static get UNLINK_RECORD() { return manager.GetLocalizedString( 360 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Unlink record?\r\n\t@enumerable static get UNLINK_USER() { return manager.GetLocalizedString( 361 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Unlink user?\r\n\t@enumerable static get CONTINUE() { return manager.GetLocalizedString( 364 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Do you want to continue?\r\n\t@enumerable static get CURRENT_RECORD_WILL_BE_DISABLED() { return manager.GetLocalizedString( 365 ) }\t\t\t\t\t\t\t\t//Current record will be disabled and new one will be created. Proceed?\r\n\t@enumerable static get CANVAS_DATA_HAS_BEEN_CHANGED() { return manager.GetLocalizedString( 366 ) }\t\t\t\t\t\t\t\t//Canvas data has been changed. Are you sure that you want to execute?\r\n\t@enumerable static get SAVE_CHANGES() { return manager.GetLocalizedString( 367 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Save changes?\r\n\t@enumerable static get DELETE_SCREEN() { return manager.GetLocalizedString( 368 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Are you sure that you want to delete this screen?\r\n\t@enumerable static get RESET_SCREEN() { return manager.GetLocalizedString( 369 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Reset screen?\r\n\t@enumerable static get REVERSE_LINK_TABLE() { return manager.GetLocalizedString( 455 ) }\t\t\t\t\t\t\t\t\t\t\t//Do you want to reverse link table?\r\n\t@enumerable static get RELATION_WILL_BE_REMOVED_FROM_LINK_LIST() { return manager.GetLocalizedString( 456 ) }\t\t\t\t\t\t//Link table reversing will remove relations from linklist control on {EntityName} edit screen. Proceed?\r\n\t@enumerable static get DO_YOU_WANT_TO_DELETE() { return manager.GetLocalizedString( 457 ) }\t\t\t\t\t\t\t\t\t\t//Do you want to delete\r\n\t@enumerable static get ARE_SURE_TO_CHANGE_LIFESTATUS() { return manager.GetLocalizedString( 519 ) };\t\t\t\t\t\t\t\t//Are sure you want to proceed from {fromstatus} to {tostatus}?\r\n\t@enumerable static get ARE_SURE_TO_CHECKIN_DOCUMENT() { return manager.GetLocalizedString( 578 ) };\t\t\t\t\t\t\t\t//Document status will be changed to \"Checkout\". Proceed?\r\n\t@enumerable static get DEDUPLICATION_RECORDS_DELETION() { return manager.GetLocalizedString( 598 ) };\t\t\t\t\t\t\t\t//{matchQuantity} records will be deleted. Proceed?\r\n\t@enumerable static get CONFIRM_ASSEMBLY_CHECKOUT() { return manager.GetLocalizedString( 1101 ) };\t\t\t\t\t\t\t\t//This would change the status of all records listed below. Do you want to continue?\r\n\t@enumerable static get ARE_YOU_SURE_YOU_WANT_TO_DELETE_VERSION() { return manager.GetLocalizedString( 1334 ) };\t\t\t\t\t//Are you sure you want to delete version {VersionName}?\r\n\t@enumerable static get YOU_CAN_LOSE_UNSAVED_DATA_IF_YOU_LEAVE() { return manager.GetLocalizedString( 1473 ) };\t\t\t\t\t//You can lose unsaved data in the current Spreadsheet if You leave the current tab without saving. Proceed?\r\n\r\n\r\n\t@enumerable static get ARE_SURE_TO_CHANGE_CLASS() { return manager.GetLocalizedString( 642 ) };\t\t\t\t\t\t\t\t\t//Are you sure you want to change the class?\r\n\t@enumerable static get ARE_SURE_TO_UPDATE_VERSION() { return manager.GetLocalizedString( 780 ) };\t\t\t\t\t\t\t\t\t//Are you sure you want to update the version?\r\n\r\n\t@enumerable static get TWO_FA_IS_ENABLED_BUT_NOT_CONFIGURED() { return manager.GetLocalizedString( 1413, 'Two-Factor Authentication (2FA) is enabled but not configured on your account.' ) } //Two-Factor Authentication (2FA) is enabled but not configured on your account.\r\n\t@enumerable static get SCAN_QR_CODE_WITH_TWO_FA() { return manager.GetLocalizedString( 1414, 'Scan the following QR code with your two-factor authenticator device.' ) } //Scan the following QR code with your two-factor authenticator device.\r\n\t@enumerable static get FOLLOW_TO_CONFIGURE_TWO_FA() { return manager.GetLocalizedString( 1415, 'Please follow the instructions below to configure 2FA.' ) } \t\t\t\t//Please follow the instructions below to configure 2FA.\r\n\t@enumerable static get ENTER_CODE_FROM_TWO_FA_DEVICE() { return manager.GetLocalizedString( 1416, 'Enter 6-digit code from your two-factor authenticator device:' ) } //Enter 6-digit code from your two-factor authenticator device:\r\n\r\n\t@enumerable static get PLEASE_TYPE_YOUR_PASSWORD_TO_CONFIRM() { return manager.GetLocalizedString( 520 ) };\t\t\t\t\t\t//Please, type your password to confirm\r\n\t@enumerable static get ENTER_YOUR_PASSWORD_TO_CONTINUE_CLEANING_TABLES() { return manager.GetLocalizedString( 1231 ) };\t\t\t//Selected tables will be cleared. This action cannot be undone. Enter your password to continue\r\n\t@enumerable static get LINK_RECORD_WITH_NEXT_RELATION_TYPE() { return manager.GetLocalizedString( 571 ) };\t\t\t\t\t\t//New link with next relation will be created. Proceed?\r\n\r\n\t@enumerable static get CAN_CAUSE_DUPLICATION_OF_ALIAS() { return manager.GetLocalizedString(883) };\t\t\t\t\t\t\t\t//In the future, this can cause duplication of aliases. Proceed?\r\n\t@enumerable static get SELECTED_DAYS_WILL_NO_LONGER_TO_BE_EDITABLE() { return manager.GetLocalizedString(994) }; \t\t\t\t\t//Records of the selected and preceding days will no longer be editable. Continue?\t\t\t\t\t\t\t\t//In the future, this can cause duplication of aliases. Proceed?\r\n\r\n\t@enumerable static get RESET_LINK_SENT() { return manager.GetLocalizedString(1395, 'Reset link will be sent to the e-mail assigned to {userName}. Proceed?') }\t\t\t//Reset link will be sent to the e-mail assigned to {userName}. Proceed?\r\n\t@enumerable static get CREATE_NEW_ONE() { return manager.GetLocalizedString(1406, 'Please, create a new one') }\t\t//Please, create a new one\r\n\t@enumerable static get DO_YOU_WANT_TO_COPY() { return manager.GetLocalizedString( 1060 ) }\t\r\n\t\r\n\t@enumerable static get SELECT_CELL_SUBJECT() { return manager.GetLocalizedString( 1174 ) } //Select a subject to link to new plannings\r\n\t@enumerable static get THE_TIMER_IS_ALREADY_STARTED() { return manager.GetLocalizedString( 1317 ) } //The timer is already started. Do you want to stop it and start new?\r\n\t@enumerable static get REMOVE_SORT_DESCRIPTION() { return manager.GetLocalizedString( 1339 ) } //Are you sure you want to remove the description?\r\n\t@enumerable static get UNREPORTED_TIME() { return manager.GetLocalizedString( 1412 ) } \t\t\t\t\t\t\t\t\t//You have unreported {X} hour(s) during {Y} day(s)\r\n\t@enumerable static get GENERATE_DOCUMENT_FROM_TEMPLATE() { return manager.GetLocalizedString( 1435 ) } \t\t\t\t\t\t\t\t//Do you want to generate a document using ${template.Name} template for ${nameField.FieldValue || ''} record?\r\n\t@enumerable static get DEFAULT_RETIRED_STATUS_NOW() { return manager.GetLocalizedString( 1437 ) } \t\t\t\t//The {oldstatus} is default retired status now. Do you want to change it to {newstatus}?\r\n\t@enumerable static get ALL_CHILD_RECORDS_WILL_BE_MOVED_TO_THE_RETIRED_STATUSES() { return manager.GetLocalizedString( 1439 ) } \t\t//All child records will be moved to the {RetiredStatuses}. Proceed?\r\n\r\n\t//#region Deduplication\r\n\t@enumerable static get ARE_YOU_SURE_YOU_WANT_TO_DELETE_ALL_MATCH_RECORDS() { return manager.GetLocalizedString( 1449 ) }\t\t\t\t//Are you sure you want to delete all match records?\r\n\t//#endregion\r\n\r\n\t//#region Document\r\n\t@enumerable static get SAVE_CHANGES_IN_FILE() { return manager.GetLocalizedString(1471) }\t\t\t\t\t//Save changes in {fileName}?\r\n\t@enumerable static get ARE_YOU_SURE_YOU_WANT_TO_SAVE_THE_CHANGES_TO_FILE_AND_CLOSE() { return manager.GetLocalizedString( 1472 ) }\t\t\t\t//Are you sure you want to save the changes to {fileName} and close?\r\n\t//#endregion\r\n\r\n\t@enumerable static get SWITCH_TO_VERSION() { return manager.GetLocalizedString( 1481 ) }\t\t\t\t//Do you want to switch to this version?\r\n\r\n\tstatic get DELETE_DW_PACKAGE() { return manager.GetLocalizedString( 1499 ) } //Are you sure you want to delete DWPackage?\t\r\n}\r\n//#endregion","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class LanguageInfoModel {\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tShortName: string;\r\n}","import * as _ from 'underscore';\r\n\r\nimport { URL } from 'Core/Common/Url';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\n\r\nexport interface ITranslation {\r\n\t[code: number]: string;\r\n}\r\n\r\nexport class TranslationStore {\r\n\tstatic Get(): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/UserApi/GetTranslations',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetTranslationsForDb(params: { DbName: string, Language: string }): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/UserApi/GetTranslationsForDb',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t}).fail((data)=>{\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetLanguages() {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/UserApi/GetLanguages',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","export class LanguageModel {\r\n\tconstructor(public Id: number,\r\n\t\t\t\tpublic Name: string,\r\n\t\t\t\tpublic ShortName: string,\r\n\t\t\t\tpublic Flag: string,\r\n\t\t\t\tpublic Enabled: boolean,\r\n\t\t\t\tpublic IsDefault: boolean) {\r\n\t}\r\n\r\n\tUpdate(language: LanguageModel) {\r\n\t\tthis.Id = language.Id;\r\n\t\tthis.Name = language.Name;\r\n\t\tthis.ShortName = language.ShortName;\r\n\t\tthis.Flag = language.Flag;\r\n\t\tthis.Enabled = language.Enabled;\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {TranslationStore, ITranslation} from \"Core/Components/Translation/Stores/TranslationStore/TranslationStore\";\r\n\r\nimport {LanguageResponseModel} from \"Core/Components/Translation/Stores/TranslationStore/LanguageResponseModel\";\r\nimport {LanguageModel} from \"Core/Components/Translation/Models/LanguageModel\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {ITranslationValue} from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\n\r\nexport class TranslationManager {\r\n\tprivate static instance: TranslationManager;\r\n\tprivate static allowInstantiation: boolean;\r\n\tprivate _translations: ITranslation;\r\n\tprivate _languages: LanguageModel[];\r\n\r\n\tconstructor() {\r\n\t\tif (!TranslationManager.allowInstantiation) {\r\n\t\t\tthrow new Error(\"Use TranslationManager.Instance instead\");\r\n\t\t}\r\n\t\tthis._translations = [];\r\n\t\tthis._languages = [];\r\n\t}\r\n\r\n\tstatic get Instance(): TranslationManager {\r\n\t\tif (TranslationManager.instance == null) {\r\n\t\t\tTranslationManager.allowInstantiation = true;\r\n\t\t\tTranslationManager.instance = new TranslationManager();\r\n\t\t\tTranslationManager.allowInstantiation = false;\r\n\t\t}\r\n\r\n\t\treturn TranslationManager.instance;\r\n\t}\r\n\r\n\tget Languages() {\r\n\t\treturn this._languages;\r\n\t}\r\n\r\n\tUpdateLanguages(activeLanguages: number[]) {\r\n\t\tconst currentActiveLanguages = activeLanguages.sort();\r\n\t\tcurrentActiveLanguages.splice(0, 0, this.GetDefaultLanguage().Id);\r\n\r\n\t\tconst cachedLanguages = this._languages.map(l => l.Id).sort();\r\n\t\tconst languagesAreUpToDate = JSON.stringify(cachedLanguages) === JSON.stringify(activeLanguages.sort());\r\n\r\n\t\tif(!languagesAreUpToDate) {\r\n\t\t\treturn this.LoadLanguages();\r\n\t\t}\r\n\r\n\t\tconst deferred = P.defer();\r\n\t\tdeferred.resolve(null);\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tGetCurrentLanguage() {\r\n\t\tconst desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n\t\treturn this.GetLanguageByShortName(desktopLanguage);\r\n\t}\r\n\r\n\tGetLanguageById(id: number) {\r\n\t\treturn _.find(this._languages, language => language.Id === id);\r\n\t}\r\n\r\n\tGetLanguageByShortName(shortname: string) {\r\n\t\treturn _.find(this._languages, language => language.ShortName === shortname);\r\n\t}\r\n\r\n\tGetDefaultLanguage() {\r\n\t\treturn new LanguageModel(\r\n\t\t\t0,\r\n\t\t\t'Default',\r\n\t\t\t'DEFAULT',\r\n\t\t\t'/img/Custom/language-default-icon.png',\r\n\t\t\ttrue,\r\n\t\t\ttrue\r\n\t\t);\r\n\t}\r\n\r\n\tGetTranslation(value: string, translations: ITranslationValue[]) {\r\n\t\tconst currentLanguage = this.GetCurrentLanguage();\r\n\t\tconst currentTranslation = _.find(translations, translation => translation.LanguageId === currentLanguage.Id);\r\n\t\tconst translatedValue = currentTranslation && currentTranslation.Value || value;\r\n\t\tconst language = currentTranslation && currentTranslation.Value && currentLanguage || this.GetDefaultLanguage();\r\n\r\n\t\treturn {\r\n\t\t\tValue: value,\r\n\t\t\tTranslatedValue: translatedValue,\r\n\t\t\tLanguage: language\r\n\t\t};\r\n\t}\r\n\r\n\tAddLanguage(language: LanguageModel) {\r\n\t\tthis._languages.push(language);\r\n\t}\r\n\r\n\tDeleteLanguage(id: number) {\r\n\t\tconst languageToRemoveIndex = _.findIndex(this._languages, language => language.Id === id);\r\n\r\n\t\tif (languageToRemoveIndex > -1) {\r\n\t\t\tthis._languages.splice(languageToRemoveIndex, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tUpdateLanguage(language: LanguageModel) {\r\n\t\tconst languageToUpdate = _.find(this._languages, language => language.Id === language.Id);\r\n\r\n\t\tif (languageToUpdate) {\r\n\t\t\tlanguageToUpdate.Update(language);\r\n\t\t}\r\n\t}\r\n\r\n\tLoadTranslations(): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tTranslationStore.Get()\r\n\t\t\t.then(translations => {\r\n\t\t\t\tthis._translations = translations;\r\n\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tLoadTranslationsForDb(dbName: string, language: string): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tTranslationStore.GetTranslationsForDb({\r\n\t\t\tDbName: dbName,\r\n\t\t\tLanguage: language\r\n\t\t})\r\n\t\t\t.then(translations => {\r\n\t\t\t\tthis._translations = translations;\r\n\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t}).fail((err)=>{\r\n\t\t\t\tdeferredResult.reject({ message: err.message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tLoadLanguages() {\r\n\t\tBlockUI.Block();\r\n\t\tconst promise = TranslationStore.GetLanguages();\r\n\r\n\t\tpromise.always(()=>{\r\n\t\t\tBlockUI.Unblock();\r\n\t\t}).then(languages => {\r\n\t\t\tthis.SaveLanguages(languages);\r\n\t\t\t\r\n\t\t});\r\n\r\n\t\treturn promise;\r\n\t}\r\n\r\n\tGetLocalizedString(code: number, defaultValue: string = null) {\r\n\t\tvar localeString = this._translations[code];\r\n\t\treturn localeString || defaultValue || `${code}`;\r\n\t}\r\n\r\n\tprivate SaveLanguages(languagesFromServer: LanguageResponseModel[]) {\r\n\t\tthis._languages = languagesFromServer.map(language => this.MapToLanguageModel(language));\r\n\t\tthis._languages.splice(0, 0, this.GetDefaultLanguage());\r\n\t}\r\n\r\n\tprivate MapToLanguageModel(language: LanguageResponseModel) {\r\n\t\treturn new LanguageModel(language.K_Language,\r\n\t\t\tlanguage.Name,\r\n\t\t\tlanguage.ShortName,\r\n\t\t\tlanguage.FlagBase64,\r\n\t\t\tlanguage.Enabled,\r\n\t\t\tfalse\r\n\t\t);\r\n\t}\r\n}","import { Notifier } from \"Core/Common/Notifier\";\r\nimport { ON_CLUSTERED_PIVOT_FINISHED, ON_LINK_EDITOR_GRID_SAVE, ON_LINK_EDITOR_UNLINK } from \"./Triggers\";\r\nimport { IExecuteClusteredPivotFinishedTriggerDto, IExecuteLinkEditorGridSaveTriggerDto, IExecuteLinkEditorUnlinkTriggerDto, IParamModel, TriggerStore } from \"./TriggerStore\";\r\n\r\nexport interface IOnLinkEditorGridSaveTrigger {\r\n LeftEntityId: number;\r\n RightEntityId: number;\r\n RelationTypeId: number;\r\n GridEntityId: number;\r\n}\r\n\r\nexport interface IOnLinkEditorUnlinkTrigger {\r\n LeftEntityId: number;\r\n RightEntityId: number;\r\n RelationTypeId: number;\r\n GridEntityId: number;\r\n}\r\n\r\nexport interface IOnClusteredPivotFinishedTrigger{\r\n MainEntityId: number,\r\n MainRecordId: number,\r\n RelatedEntityId: number,\r\n RelatedRecordId: number,\r\n NewKSeq: number,\r\n OldKSeq: number,\r\n ControlId: number\r\n}\r\n\r\nexport class TriggerManager {\r\n constructor(){\r\n\r\n }\r\n\r\n public static ExecuteOnClickTrigger(){\r\n\r\n }\r\n\r\n public static async ExecuteOnLinkEditorGridSaveTrigger(options: IOnLinkEditorGridSaveTrigger, objectId: string){ \r\n let triggerParams: Array = [\r\n { Name: ON_LINK_EDITOR_GRID_SAVE.LEFT_ENTITY_ID, Value: options.LeftEntityId },\r\n { Name: ON_LINK_EDITOR_GRID_SAVE.RIGHT_ENTITY_ID, Value: options.RightEntityId },\r\n { Name: ON_LINK_EDITOR_GRID_SAVE.RELATION_TYPE_ID, Value: options.RelationTypeId },\r\n { Name: ON_LINK_EDITOR_GRID_SAVE.GRID_ENTITY_ID, Value: options.GridEntityId }\r\n ]\r\n\r\n let request: IExecuteLinkEditorGridSaveTriggerDto = {\r\n Name: ON_LINK_EDITOR_GRID_SAVE.NAME,\r\n ObjectId: objectId,\r\n Params: triggerParams\r\n }\r\n\r\n return await TriggerStore.ExecuteLinkEditorGridSaveTrigger(request).fail((err) => new Notifier().Failed(err.message));\r\n }\r\n\r\n \r\n public static async ExecuteOnLinkEditorUnlinkTrigger(options: IOnLinkEditorUnlinkTrigger, objectId: string){ \r\n let triggerParams: Array = [\r\n { Name: ON_LINK_EDITOR_UNLINK.LEFT_ENTITY_ID, Value: options.LeftEntityId },\r\n { Name: ON_LINK_EDITOR_UNLINK.RIGHT_ENTITY_ID, Value: options.RightEntityId },\r\n { Name: ON_LINK_EDITOR_UNLINK.RELATION_TYPE_ID, Value: options.RelationTypeId },\r\n { Name: ON_LINK_EDITOR_UNLINK.GRID_ENTITY_ID, Value: options.GridEntityId }\r\n ]\r\n\r\n let request: IExecuteLinkEditorUnlinkTriggerDto = {\r\n Name: ON_LINK_EDITOR_UNLINK.NAME,\r\n ObjectId: objectId,\r\n Params: triggerParams\r\n }\r\n\r\n return await TriggerStore.ExecuteLinkEditorUnlinkTrigger(request).fail((err) => new Notifier().Failed(err.message));\r\n }\r\n\r\n public static async OnClusteredPivotFinished(options: IOnClusteredPivotFinishedTrigger, objectId: string, triggerId: number){\r\n let triggerParams: Array = [\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.MAIN_RECORD_ID, Value: options.MainRecordId },\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.MAIN_ENTITY_ID, Value: options.MainEntityId },\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.RELATED_RECORD_ID, Value: options.RelatedRecordId },\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.RELATED_ENTITY_ID, Value: options.RelatedEntityId },\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.CONTROL_ID, Value: options.ControlId },\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.NEW_K_SEQ, Value: options.NewKSeq },\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.OLD_K_SEQ, Value: options.OldKSeq }\r\n ];\r\n\r\n let request: IExecuteClusteredPivotFinishedTriggerDto = {\r\n Id: triggerId,\r\n ObjectId: objectId,\r\n Params: triggerParams\r\n }\r\n\r\n return await TriggerStore.ExecuteClusteredPivotFinishedTrigger(request).fail((err) => new Notifier().Failed(err.message));\r\n }\r\n}","export const ON_LINK_EDITOR_GRID_SAVE = {\r\n NAME: 'OnLinkEditorGridSave',\r\n LEFT_ENTITY_ID: 'LeftEntityId',\r\n RIGHT_ENTITY_ID: 'RightEntityId',\r\n RELATION_TYPE_ID: 'RelationTypeId',\r\n GRID_ENTITY_ID: 'GridEntityId'\r\n}\r\n\r\nexport const ON_CLUSTERED_PIVOT_FINISHED = {\r\n NAME: 'OnClusteredPivotFinished',\r\n MAIN_ENTITY_ID: 'MainEntityId',\r\n MAIN_RECORD_ID: 'MainRecordId',\r\n RELATED_ENTITY_ID: 'RelatedEntityId',\r\n RELATED_RECORD_ID: 'RelatedRecordId',\r\n NEW_K_SEQ: 'NewKSeq',\r\n OLD_K_SEQ: 'OldKSeq',\r\n CONTROL_ID: 'ControlId',\r\n}\r\n\r\nexport const ON_LINK_EDITOR_UNLINK = {\r\n NAME: 'OnLinkEditorUnlink',\r\n LEFT_ENTITY_ID: 'LeftEntityId',\r\n RIGHT_ENTITY_ID: 'RightEntityId',\r\n RELATION_TYPE_ID: 'RelationTypeId',\r\n GRID_ENTITY_ID: 'GridEntityId'\r\n}","import { P } from 'Core/Common/Promise';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\n\r\nexport interface IParamModel {\r\n\tName: string;\r\n\tValue: string | number;\r\n}\r\n\r\nexport interface IExecuteTriggerRequestModel {\r\n\tId: number;\r\n\tName: string;\r\n\tParams: Array;\r\n\tObjectId: string;\r\n}\r\n\r\nexport interface IExecuteLinkEditorGridSaveTriggerDto {\r\n\tName: string;\r\n\tParams: Array;\r\n\tObjectId: string;\r\n}\r\n\r\nexport interface IExecuteLinkEditorUnlinkTriggerDto {\r\n\tName: string;\r\n\tParams: Array;\r\n\tObjectId: string;\r\n}\r\n\r\nexport interface IExecuteClusteredPivotFinishedTriggerDto {\r\n\tId: number;\r\n\tParams: Array;\r\n\tObjectId: string;\r\n}\r\n\r\nexport class TriggerStore {\r\n\tpublic static ExecuteClickTrigger(params: IExecuteTriggerRequestModel): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TriggerApi/ExecuteClickTrigger',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(() => {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tpublic static ExecuteLinkEditorGridSaveTrigger(params: IExecuteLinkEditorGridSaveTriggerDto): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TriggerApi/ExecuteLinkEditorGridSaveTrigger',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(() => {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tpublic static ExecuteLinkEditorUnlinkTrigger(params: IExecuteLinkEditorUnlinkTriggerDto): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TriggerApi/ExecuteLinkEditorUnlinkTrigger',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(() => {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tpublic static ExecuteClusteredPivotFinishedTrigger(params: IExecuteClusteredPivotFinishedTriggerDto): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TriggerApi/ExecuteClusteredPivotFinishedTrigger',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(() => {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport { ScreenTypes } from 'Core/Common/Enums/ScreenTypes';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\"\r\n\r\nexport enum ControlTypes { Search };\r\n\r\nexport enum KeyCodes { Enter = 13 };\r\n\r\nexport enum RenderModes { View, Edit, Design, ToolBar, Search, List, HelpView, GridRow };\r\n\r\nexport enum PortletRenderModes {View, Edit, Design};\r\n\r\nexport const LABEL_POSITIONS = {\r\n\tNoLabel: 'NoLabel',\r\n\tFullWidth: 'FullWidth'\r\n};\r\n\r\nexport const FONT_STYLES = {\r\n\tBOLD: 'bold',\r\n\tNORMAL: '400',\r\n\tUNDERLINE: 'underline',\r\n\tITALIC: 'italic'\r\n}\r\n\r\nexport const PASSWORD = {\r\n\tMinimumLength: 8,\r\n\tDefaultValue: 'Empty'\r\n};\r\n\r\nexport const CARD_SCREEN_PROPERTY_TYPE = {\r\n\tSCREEN_WIDTH: 'CardScreenWidthType',\r\n\tSCREEN_BACKGROUND_COLOR: 'CardScreenBackgroundColorType',\r\n\tFONT_COLOR: 'CardScreenFontColorType',\r\n\tFONT_WEIGHT: 'CardScreenFontWeightType',\r\n\tFONT_FAMILY: 'CardScreenFontFamilyType',\r\n\tFONT_STYLE: 'CardScreenFontStyleType',\r\n};\r\n\r\nexport const SCREEN_PROPERTY_TYPE = {\r\n\tSCREEN_BACKGROUND_COLOR: 'ScreenBackgroundColorType',\r\n\tSCREEN_HEADER_BACKGROUND_COLOR: 'ScreenHeaderBackgroundColorType'\r\n}\r\n\r\nexport const SYSTEM_FIELDS = ['F_TYPE', 'CREATEDATE', 'CREATEDBY', 'F_LIFESTATUS', 'CHANGEDATE', 'CHANGEDBY'];\r\n\r\nexport const SYSTEM_FIELD_NAMES = {\r\n\tF_TYPE: 'F_TYPE',\r\n\tF_KIND: 'F_KIND',\r\n\tCREATEDATE: 'CREATEDATE',\r\n\tCREATEDBY: 'CREATEDBY',\r\n\tF_LIFESTATUS: 'F_LIFESTATUS',\r\n\tCHANGEDATE: 'CHANGEDATE',\r\n\tCHANGEDBY: 'CHANGEDBY'\r\n};\r\n\r\nexport const SYSTEM_TABLE_NAMES = {\r\n\tSYS_SEQUENCES: \"SYS_SEQUENCES\",\r\n\tSYS_USERS: \"SYS_USERS\",\r\n\tSYS_LOCKS: \"SYS_LOCKS\",\r\n\tSYS_GLOBALS: \"SYS_GLOBALS\",\r\n\tSYS_RIGHTS: \"SYS_RIGHTS\",\r\n\tSYS_SECURITY: \"SYS_SECURITY\",\r\n\tSYS_SESSIONS: \"SYS_SESSIONS\",\r\n\tSYS_THESAURI: \"SYS_THESAURI\",\r\n\tSYS_OBJECTS: \"SYS_OBJECTS\",\r\n\tSYS_QUEUES: \"SYS_QUEUES\",\r\n\tSYS_THINGS: \"SYS_THINGS\"\r\n};\r\n\r\nexport const LIFESTATUS = {\r\n\tENABLED: -1,\r\n\tDISABLED: 0\r\n};\r\n\r\nexport const LIFE_STATUS_GROUPS = {\r\n\tPLANNED: 1000,\r\n\tACQUIRED: 2000,\r\n\tOPERATIONAL: 3000,\r\n\tMAINTAINED: 4000,\r\n\tRETIRED: 5000,\r\n\tEXAMPLE: 6000,\r\n\tERROR: 7000\r\n};\r\n\r\nexport const TABLE_TYPES = {\r\n\tEntity: 'Entity',\r\n\tSub: 'Sub',\r\n\tLink: 'Link',\r\n\tLookup: 'Lookup'};\r\n\r\nexport const FIELD_TYPES = {\r\n\tYesNo: 'YesNo',\r\n\tText: 'Text',\r\n\tCurrency: 'Currency',\r\n\tDate: 'Date',\r\n\tDateTime: 'DateTime',\r\n\tInteger: 'Integer',\r\n\tBinary: 'Binary',\r\n\tGuid: 'Guid',\r\n\tDocument: 'Document',\r\n\tImage: 'Image',\r\n\tRadio: 'Radio',\r\n\tMultiSelect:'MultiSelect',\r\n\tIcon: 'Icon',\r\n\tType: 'Type',\r\n\tTime: 'Time',\r\n\tPKey: 'PKey',\r\n\tFlagCheck: 'FlagCheck',\r\n\tLookup: 'Lookup',\r\n\tSort: 'Sort',\r\n\tMemo: 'Memo',\r\n\tPassword: 'Password',\r\n\tColor: 'Color',\r\n\tDecimal: 'Decimal',\r\n\tAlias: 'Alias',\r\n\tTimeSpan: 'TimeSpan',\r\n\tReference: 'Reference',\r\n\tSpim: 'SPIM',\r\n\tProperty: 'Property'\r\n};\r\n\r\nexport var FIELD_TYPE_TO_CONTROL = {\r\n\t'YesNo': 'Checkbox',\r\n\t'Text': 'Text',\r\n\t'Currency': 'Currency',\r\n\t'Date': 'DateTime',\r\n\t'DateTime': 'DateTime',\r\n\t'Integer': 'Text',\r\n\t'Binary': 'Text',\r\n\t'Guid': 'Text',\r\n\t'Document': 'Document',\r\n\t'Image': 'Image',\r\n\t'Radio': 'RadioButton',\r\n\t'MultiSelect': 'MultiSelect',\r\n\t'Icon': 'Text',\r\n\t'Type': 'Text',\r\n\t'Time': 'DateTime',\r\n\t'TimeSpan': 'DateTime',\r\n\t'PKey': 'Text',\r\n\t'FlagCheck': 'FlagCheck',\r\n\t'Lookup': 'Dropdown',\r\n\t'Sort': 'Text',\r\n\t'Memo': 'Memo',\r\n\t'Password': 'Password',\r\n\t'Color': 'ColorSelector',\r\n\t'Decimal': 'Text',\r\n\t'Alias': 'Alias',\r\n\t'Reference': 'Text',\r\n\t'SPIM': 'Spim'\r\n};\r\n\r\nexport const SortGroups = {\r\n\tHeader: 'Header',\r\n\tOptionalHeader: 'OptionalHeader',\r\n\tCustom: 'Custom',\r\n\tOptionalFooter: 'OptionalFooter',\r\n\tFooter: 'Footer',\r\n\tUndefined: 'Undefined',\r\n\r\n\tGetSortGroup: (sort: number) => {\r\n\t\tif (_.include(_.range(1000, 1999), sort)) {\r\n\t\t\treturn SortGroups.Header;\r\n\t\t}\r\n\t\tif (_.include(_.range(2000, 2999), sort)) {\r\n\t\t\treturn SortGroups.OptionalHeader;\r\n\t\t}\r\n\t\tif (_.include(_.range(3000, 7999), sort)) {\r\n\t\t\treturn SortGroups.Custom;\r\n\t\t}\r\n\t\tif (_.include(_.range(8000, 8999), sort)) {\r\n\t\t\treturn SortGroups.OptionalFooter;\r\n\t\t}\r\n\t\tif (_.include(_.range(9000, 9999), sort)) {\r\n\t\t\treturn SortGroups.Footer;\r\n\t\t}\r\n\t\tif (_.include([0], sort)) {\r\n\t\t\treturn SortGroups.Undefined;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\tInCustom: (sort: number) => SortGroups.GetSortGroup(sort) === SortGroups.Custom\r\n};\r\n\r\nexport const EVENTS = {\r\n\tON_RECORD_SELECTED: 'OnRecordSelected',\r\n\tON_ROW_CLICK: 'OnRowClick',\r\n\tON_TAB_CLICK: 'OnTabClick',\r\n\tON_PLANNER_PAGE_CLICK: 'OnPlannerPageClick',\r\n\tON_SELECT_CHANGED: 'OnSelectChanged',\r\n\tON_PAGE_CHANGED: 'OnPageChanged',\r\n\tON_AFTER_RENDER: 'OnAfterRender',\r\n\tON_CLOSE: 'OnClose',\r\n\tON_DATA_SAVED: 'OnDataSaved',\r\n\tON_TREE_NODE_SELECTED: 'OnTreeNodeSelected',\r\n\tQUERY_BUILDER: {\r\n\t\tON_ENTTIY_SELECTED: 'OnEntitySelected'\r\n\t},\r\n\tPORTLETS: {\r\n\t\tRUNTIME_SETTINGS_APPLIED: 'RuntimeSettingsApplied',\r\n\t\tRUNTIME_SETTINGS_UPDATED: 'RuntimeSettingsUpdated',\r\n\t\tPORTLET_BAR: {\r\n\t\t\tCONTROL_BUTTONS: {\r\n\t\t\t\tREMOVE_BUTTON_CLICKED: 'RemoveButtonClicked',\r\n\t\t\t\tCOLLAPSE_BUTTON_CLICKED: 'CollapseButtonClicked',\r\n\t\t\t\tEXPAND_BUTTON_CLICKED: 'ExpandButtonClicked',\r\n\t\t\t\tRELOAD_BUTTON_CLICKED: 'ReloadButtonClicked',\r\n\t\t\t\tSETTINGS_BUTTON_CLICKED: 'SettingsButtonClicked'\r\n\t\t\t}\r\n\t\t},\r\n\t\tEXPLORER_LOADED: 'OnExplorerLoaded',\r\n\t\tNEW_PORTLET_ADDED: 'NewPortletAdded',\r\n\t\tPORTLET_POSITION_CHANGED: 'PortletPositionChanged'\r\n\t}\r\n} \r\n\r\nexport var NotTypedScreenTypes = [ScreenTypes.ListScreen, ScreenTypes.SpecialScreen, ScreenTypes.Dashboard, ScreenTypes.QueryScreen, ScreenTypes.Portlet, ScreenTypes.CardScreen, ScreenTypes.StepsScreen];\r\n\r\nexport const CONTROL_TYPES =\r\n{\r\n Text: 'Text',\r\n Dropdown: 'Dropdown',\r\n ButtonEdit: 'ButtonEdit',\r\n ButtonDelete: 'ButtonDelete',\r\n\tButtonListScreen: 'ButtonListScreen',\r\n\tButtonSpecialScreen: 'ButtonSpecialScreen',\r\n\tButtonDashboardScreen: 'ButtonDashboardScreen',\r\n ButtonGoogleMaps: 'ButtonGoogleMaps',\r\n\tButtonFollowUp: 'ButtonFollowUp',\r\n\tHistory: 'History',\r\n Tab: 'Tab',\r\n TabPage: 'TabPage',\r\n Image: 'Image',\r\n MultiSelect: 'MultiSelect',\r\n Checkbox: 'Checkbox',\r\n DateTime: 'DateTime',\r\n Drop: 'Drop',\r\n RadioButton: 'RadioButton',\r\n Grid: 'Grid',\r\n Group: 'Group',\r\n PortletBar: 'PortletBar',\r\n Label: 'Label',\r\n Memo: 'Memo',\r\n Document: 'Document',\r\n ButtonReturn: 'ButtonReturn',\r\n Kanban: 'Kanban',\r\n SelectUser: 'SelectUser',\r\n ButtonPrint: 'ButtonPrint',\r\n ButtonLinkedIn: 'ButtonLinkedIn',\r\n ButtonTree: 'ButtonTree',\r\n ButtonSecurityReset: 'ButtonSecurityReset',\r\n Password: 'Password',\r\n ColorSelector: 'ColorSelector',\r\n FlagCheck: 'FlagCheck',\r\n Agenda: 'Agenda',\r\n Mail: 'Mail',\r\n\tScheduler:'Scheduler',\r\n LinkList: 'LinkList',\r\n DatabaseDesigner: 'DatabaseDesigner',\r\n\tFormDesigner: 'FormDesigner',\r\n\tCanvasDesigner: 'CanvasDesigner',\r\n\tFunctionDesigner: 'FunctionDesigner',\r\n LifestatusDesigner: 'LifestatusDesigner',\r\n QueryBuilder: 'QueryBuilder',\r\n TableSecurity: 'TableSecurity',\r\n\tTypeSecurity: 'TypeSecurity',\r\n RecordSecurity: 'RecordSecurity',\r\n UserSecurity: 'UserSecurity',\r\n UserAllowance: 'UserAllowance',\r\n RecordSharing: 'RecordSharing',\r\n ButtonFavorite: 'ButtonFavorite',\r\n Search: 'Search',\r\n ButtonCancel: 'ButtonCancel',\r\n ButtonSave: 'ButtonSave',\r\n TimeWriting: 'TimeWriting',\r\n ButtonTemplate: 'ButtonTemplate',\r\n\tTemplateDesigner: 'TemplateDesigner',\r\n\tRssFeed: 'RssFeed',\r\n\tAlias: 'Alias',\r\n\tCrystalViewer: 'CrystalViewer',\r\n\tTag: 'Tag',\r\n\tFieldSecurity: 'FieldSecurity',\r\n ButtonConsultScreen: 'ButtonConsultScreen',\r\n\tButtonAdd: 'ButtonAdd',\r\n\tBasket: 'Basket',\r\n\tQueryResult: 'QueryResult',\r\n\tPortletSpace: 'PortletSpace',\r\n\tTimeSpan: 'TimeSpan',\r\n\tGanttChart: 'GanttChart',\r\n\tBulkEmail: 'BulkEmail',\r\n GenericButton: 'GenericButton',\r\n\tInvoicing: 'Invoicing',\r\n\tFinancialDashboard: 'FinancialDashboard',\r\n\tButtonCopy: 'ButtonCopy',\r\n\tCurrency: 'Currency',\r\n\tPlanner: 'Planner',\r\n\tPlannerPage: 'PlannerPage',\r\n\tPlannerLevel: 'PlannerLevel',\r\n\tIFrame: 'IFrame',\r\n\tProductConfigurator: 'ProductConfigurator',\r\n\tSpim: 'Spim',\r\n\tSpimCopy: 'SPIMCopy',\r\n\tBook: 'Book',\r\n\tTimer: 'Timer',\r\n\tSignature: 'Signature',\r\n\tSpreadsheet: 'Spreadsheet',\r\n\tChart: 'Chart',\r\n\tRecipeEditor: 'RecipeEditor',\r\n\tMaps: 'Maps',\r\n\tIFrameExtension: 'IFrameExtension',\r\n\tStep: 'Step',\r\n\tStepPage: 'StepPage',\r\n\tButtonPlan: 'ButtonPlan'\r\n};\r\n\r\nexport const SIMPLE_CONTROLS = [\r\n\tCONTROL_TYPES.Text,\r\n\tCONTROL_TYPES.DateTime,\r\n\tCONTROL_TYPES.Dropdown,\r\n\tCONTROL_TYPES.Memo,\r\n\tCONTROL_TYPES.Checkbox,\r\n\tCONTROL_TYPES.FlagCheck,\r\n\tCONTROL_TYPES.ColorSelector,\r\n\tCONTROL_TYPES.RadioButton,\r\n\tCONTROL_TYPES.MultiSelect,\r\n\tCONTROL_TYPES.Currency\r\n];\r\n\r\nexport const SECURITY_CONTROLS = [\r\n\tCONTROL_TYPES.TableSecurity,\r\n\tCONTROL_TYPES.TypeSecurity,\r\n\tCONTROL_TYPES.RecordSecurity,\r\n\tCONTROL_TYPES.RecordSharing,\r\n\tCONTROL_TYPES.UserSecurity,\r\n\tCONTROL_TYPES.UserAllowance,\r\n\tCONTROL_TYPES.Password,\r\n\tCONTROL_TYPES.FieldSecurity\r\n];\r\n\r\nexport const DEFAULT_ICONS = {\r\n\tAgenda: {\r\n\t\tName: \"fa fa-calendar-check-o\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tDrop: {\r\n\t\tName: \"fa fa-newspaper-o\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n Id: null\r\n\t},\r\n\tTag: {\r\n\t\tName: \"fa fa-tags\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n Id: null\r\n\t},\r\n\tQueryBuilder: {\r\n\t\tName: null,\r\n\t\tFontName: null,\r\n\t\tImage: \"data:image/png;base64,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\",\r\n\t\tIsIcon: false,\r\n\t\tIsImage: true,\r\n Id: null\r\n\t},\r\n\tInvoicing: {\r\n\t\tName: \"fa fa-calculator\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tProductConfigurator: {\r\n\t\tName: \"fa fa-industry\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tScheduler: {\r\n\t\tName: \"fa fa-calendar-o\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tTimeWriting: {\r\n\t\tName: \"glyphicon glyphicon-time\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tBulkMail: {\r\n\t\tName: \"fa fa-envelope\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tBasket: {\r\n\t\tName: \"fa fa-shopping-basket\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tButtonTemplate: {\r\n\t\tName: \"fa fa-file\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tDocument: {\r\n\t\tName: \"fa fa-file-text-o\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tKanban: {\r\n\t\tName: \"fa fa-compress\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tMail: {\r\n\t\tName: \"fa fa-envelope-o\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tGantt: {\r\n\t\tName: \"fa fa-bar-chart\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t}\r\n};\r\n\r\nexport enum FONT_NAME {\r\n FONT_AWESOME = 'fontawesome-webfont',\r\n SIMPLE_LINE = 'Simple-Line-Icons',\r\n SOCIAL_ICONS = 'Social-Icons',\r\n GRAPHICAL = 'Graphical'\r\n}\r\n\r\nexport enum ICON_NAME {\r\n\tEMPTY_ICON = 'empty-icon'\r\n}\r\n\r\nexport const CLUSTERED_MODES = {\r\n\tCOPY: {\r\n\t\tValue: 0\r\n\t},\r\n\tDEFAULT: {\r\n\t\tValue: 1\r\n\t},\r\n\tDELTA: {\r\n\t\tValue: 2\r\n\t}\r\n};\r\n\r\nexport const DELETION_MODES = {\r\n\tASK: {\r\n\t\tId: 0,\r\n\t\tName: 'Ask'\r\n\t},\r\n\tPRESERVE: {\r\n\t\tId: 1,\r\n\t\tName: 'Preserve'\r\n\t},\r\n\tDELETE: {\r\n\t\tId: 2,\r\n\t\tName: 'Delete'\r\n\t}\r\n};","export const AGENDA_TYPES = {\r\n\tTodo: 'Todo',\r\n\tAppointment: 'Appointment',\r\n\tTask: 'Task',\r\n\tSpecialDay: 'SpecialDay',\r\n\tHoliday: 'Holiday',\r\n\tIllness: 'Illness',\r\n\tRecurrent: 'Recurrent'\r\n};\r\n\r\nexport const AGENDA_LIFE_STATUSES = {\r\n\tRequested: 'Requested',\r\n\tConfirmed: 'Confirmed',\r\n\tDenied: 'Denied'\r\n};\r\n","import {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\n\r\nexport enum ClusterModes {\r\n None,\r\n Copy,\r\n Default,\r\n Delta,\r\n Use,\r\n Next,\r\n NextNext\r\n}\r\n\r\nexport class ClusterModeTranlsation {\r\n static GetTranslation(clusterMode: ClusterModes) {\r\n switch (clusterMode) {\r\n case ClusterModes.Copy:\r\n return LABELS.COPY;\r\n case ClusterModes.Default:\r\n return LABELS.DEFAULT;\r\n case ClusterModes.Delta:\r\n return LABELS.DELTA;\r\n case ClusterModes.Use:\r\n return LABELS.USE;\r\n case ClusterModes.Next:\r\n return LABELS.NEXT;\r\n case ClusterModes.NextNext:\r\n return LABELS.NEXT_NEXT;\r\n }\r\n }\r\n}\r\n","export const DATE_FORMATS = {\r\n\tSHORT_DATE: {Name: 'Short Date', Format: 'YYYY-MM-DD', MomentFormat: 'L'},\r\n\tLONG_DATE: {Name: 'Long Date', Format: 'dddd, YYYY-MM-DD', MomentFormat: 'dddd, L'},\r\n LONG_DATE_SHORT_WEEK: {Name: 'Long Date', Format: 'dd, YYYY-MM-DD', MomentFormat: 'dd, L'},\r\n\tLONG_TIME: {Name: 'Long Time', Format: 'HH:mm:ss', MomentFormat: 'HH:mm:ss'},\r\n\tTIME: {Name: 'Time', Format: 'HH:mm', MomentFormat: 'HH:mm'},\r\n\tDATE_TIME: {Name: 'DateTime', Format: 'YYYY-MM-DD HH:mm', MomentFormat: 'L HH:mm'},\r\n\tFULL_DATETIME: {Name: 'FullDateTime', Format: 'YYYY-MM-DD HH:mm:ss', MomentFormat: 'dddd, L HH:mm:ss'},\r\n\tWEEKDAY_FULLNAME: {Name: 'WeekdayFullName', Format: 'dddd', MomentFormat: 'dddd'},\r\n WEEKDAY_SHORTNAME: {Name: 'WeekdayShortName', Format: 'dd', MomentFormat: 'dd'},\r\n\tSAVE_FORMAT: {Name: 'Save Format', Format: 'YYYY-MM-DD HH:mm:ss', MomentFormat: 'L HH:mm:ss'},\r\n\tSAVE_FORMAT_FULL: {Name: 'Save Format Full', Format: 'YYYY-MM-DDTHH:mm:ss', MomentFormat: 'L HH:mm:ss'},\r\n\tTIME_SPAN: {Name: 'Time Span', Format: 'H:mm', MomentFormat: 'H:mm'},\r\n\tTIME_SPAN_LONG: {Name: 'Time Span Long', Format: 'H:mm:ss', MomentFormat: 'H:mm:ss'},\r\n\tSHORT_DATE_SHORT_WEEK: {Name: 'Short Date Short Week', Format: 'DD MMM', MomentFormat: 'DD MMM'},\r\n\tMONTH_AND_YEAR: {name: 'Month and Year', Format: 'MMMM, YYYY', MomentFormat: 'MMMM, YYYY'},\r\n\tDD_MMM: {name: 'Short date and Short Month', Format: 'DD-MMM', MomentFormat: 'DD-MMM'},\r\n\tDD_MM: {name: 'Short date and number Month', Format: 'DD-MM', MomentFormat: 'DD-MM'},\r\n\tDAY_OF_WEK_ddd: {name: 'Sun Mon ... Fri Sat', Format: 'ddd', MomentFormat: 'ddd'},\r\n\tWEEK_OF_YEAR_WW: {name: 'Week of Year - 1 2 ... 52 53', Format: 'WW', MomentFormat: 'WW'},\r\n\tMMM_YYYY: {name: 'Short Month and number Year', Format: 'MMM-YYYY', MomentFormat: 'MMM-YYYY'},\r\n\tMM_YY: {name: 'Number Month and Short Year', Format: 'MM-YY', MomentFormat: 'MM-YY'},\r\n\tYYYY_WW: {name: 'Full Year and Week of Year', Format: 'YYYY-WW', MomentFormat: 'GGGG-[W]WW'},\r\n\tDD_MMM_YYYY: {Name: 'Name DD-MMM-YYYY', Format: 'DD-MMM-YYYY', MomentFormat: 'DD-MMM-YYYY'},\r\n\tONLY_A_YEAR: {name: 'Only a Year', Format: 'YYYY', MomentFormat: 'YYYY'},\r\n};","export const FollowupModes = {\r\n EDIT_CURRENT: 'Edit current',\r\n EDIT_NEW: 'Edit new',\r\n EDIT_CURRENT_AND_NEW: 'Edit current and new',\r\n DIRECT_STATUS_UPDATE: 'Direct status update'\r\n};","export const RECORD_SECURITY_WORDS = {\r\n\tNoAccess: 0,\r\n\tSearchOnly: 1,\r\n\tReadOnly: 3,\r\n\tEdit: 7,\r\n\tEditDelete: 15,\r\n\tEditDeleteSecurity: 263,\r\n\tFullAccess: 271\r\n};","export const SECURITY_LEVELS = {\r\n\tNO: 0,\r\n\tSHARING_READY: 2,\r\n\tSHARED: 4,\r\n\tPLANNER: 8,\r\n\tOWNER: 512,\r\n\r\n\tSECURITY_PASS: -2,\r\n\r\n\tget NEW_OWNER() {\r\n\t\treturn SECURITY_LEVELS.SHARED + SECURITY_LEVELS.OWNER;\r\n\t}\r\n};","export enum TABLE_SECURITY_WORDS {\r\n SHOW = 2,\r\n EDIT = 4,\r\n DELETE = 8,\r\n CREATE = 1024\r\n};","export const TRIGGER_ACTIONS = {\r\n\tON_CLICK: 'OnClick',\r\n\tON_CLUSTERED_PIVOT_FINISHED: 'OnClusteredPivotFinished'\r\n};","export const USER_ALLOWANCE = {\r\n\tOVERRIDE_SECURITY: 1,\r\n\tCHANGE_RECORD_SECURITY: 2,\r\n\tNATIVE_SQL: 4,\r\n\tPLANNING: 8,\r\n\tMAKE_PERSONAL: 32,\r\n\tEXPORT_DATA: 64,\r\n\tMAKE_EXAMPLE: 128,\r\n\r\n\tHasValue: (value: number, userAllowance: number) => (value & userAllowance) === value,\r\n\tPlanningAllowed: (userAllowance: number) => (USER_ALLOWANCE.PLANNING & userAllowance) === USER_ALLOWANCE.PLANNING\r\n};","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {AgendaItemModel, AgendaItemPerDay} from 'Core/Controls/Agenda/Models/AgendaItemModel';\r\nimport {PlanningItemModel} from 'Core/Controls/Agenda/Models/PlanningItemModel'\r\nimport OperationResult from 'Core/Results/ResultModels/OperationResult';\r\nimport {IGetTypesRequestModel} from \"Core/Screens/TypeScreen/Stores/EntityTypesStore\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nexport interface IGetAgendaDataRequestModel {\r\n ControlId: number;\r\n UsersId: Array;\r\n StartDate: string;\r\n EndDate: string;\r\n GetScheduleRequestModel: IGetScheduleRequestModel;\r\n GetSpecialDaysRequestModel: IGetSpecialDaysRequestModel;\r\n GetTableTypesModel: IGetTypesRequestModel;\r\n}\r\n\r\nexport interface ICreatePlanningAppointmentRequest {\r\n PlanningId: number;\r\n StartDate: string;\r\n UserId?: number;\r\n}\r\n\r\nexport interface IBookPlanningRequest {\r\n AgendaTableId: number;\r\n PlanningId: number;\r\n StartDate: string;\r\n}\r\n\r\nexport interface IAcceptAppointmentModel {\r\n AgendaTableId: number;\r\n AppointmentId: number;\r\n ScreenSubjectEntityId?: number;\r\n ScreenSubjectRecordId?: number;\r\n}\r\n\r\nexport interface IGetScheduleRequestModel {\r\n StartDate: string;\r\n EndDate: string;\r\n UsersId: number[];\r\n}\r\n\r\nexport interface IGetSpecialDaysRequestModel {\r\n StartDate: string;\r\n EndDate: string;\r\n UsersId: number[];\r\n}\r\n\r\nexport interface IGetUserAllowanceRequestModel {\r\n TableId: number;\r\n SecurityWord: number;\r\n}\r\n\r\nexport interface ICopyFieldDataRequestModel {\r\n Name: string;\r\n Value: string;\r\n}\r\n\r\nexport interface ICopyRecordRequestModel {\r\n TableId: number;\r\n TableTypeId?: number;\r\n RecordId: number;\r\n\tStarting: string;\r\n\tAppointmentAttendeesId: number[];\r\n}\r\n\r\nexport interface ICreateAppointmentFromTodoRequestModel {\r\n AgendaEntityId: number;\r\n TodoItemId: number;\r\n Starting: string;\r\n Duration: string;\r\n\tRemoveTodo: boolean;\r\n\tAppointmentAttendeesId: number[];\r\n}\r\n\r\nexport class AgendaDataStore {\r\n static GetData(params: IGetAgendaDataRequestModel): P.Promise {\r\n var deferredResult = P.defer();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/GetAgenda\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(data.ResultObject);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetUnreportedTime(): P.Promise {\r\n var deferredResult = P.defer();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/GetUnreportedTime\",\r\n type: \"POST\"\r\n }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n deferredResult.resolve(data);\r\n }).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n;\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateAgenda(params: AgendaItemModel): P.Promise> {\r\n var deferredResult = P.defer>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/UpdateAgenda\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreateAppointmentFromTodo(params: ICreateAppointmentFromTodoRequestModel): P.Promise {\r\n var deferredResult = P.defer();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/CreateAppointmentFromTodo\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(data);\r\n } else {\r\n deferredResult.reject({ message: data.ErrorMessage });\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreatePlanningAppointment(params: ICreatePlanningAppointmentRequest): P.Promise {\r\n var deferredResult = P.defer();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/CreatePlanningAppointment\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n }).fail(() => {\r\n new Notifier().Failed('Error creating appointment');\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreatePlanningAppointments(planningId: number, userId?: number): P.Promise {\r\n const deferredResult = P.defer();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/CreatePlanningAppointments\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params: { PlanningId: planningId, UserId: userId}\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n }).fail(() => {\r\n new Notifier().Failed('Error creating appointments');\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static BookPlanning(params: IBookPlanningRequest): P.Promise> {\r\n var deferredResult = P.defer>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/BookPlanning\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n }).fail(() => {\r\n new Notifier().Failed('Error booking planning');\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static AcceptAppointment(params: IAcceptAppointmentModel) {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/AgendaApi/AcceptAppointment',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: params\r\n });\r\n }\r\n\r\n static GetSchedule(params: IGetScheduleRequestModel) {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/AgendaApi/GetSchedule',\r\n type: 'POST',\r\n dataType: 'json'\r\n }, params: params\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static GetSpecialDays(params: IGetSpecialDaysRequestModel) {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/AgendaApi/GetSpecialDays',\r\n type: 'POST',\r\n dataType: 'json'\r\n }, params: params\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static GetUserAllowance(params: IGetUserAllowanceRequestModel) {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: 'api/TableSecurityApi/IsUserAllowedTo',\r\n type: 'POST',\r\n dataType: 'json'\r\n }, params: params\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static CopyRecord(params: ICopyRecordRequestModel): any {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: 'api/AgendaApi/CopyAppointment',\r\n type: 'POST',\r\n dataType: 'json'\r\n }, params: params\r\n })\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t})\r\n .fail(error => deferred.reject(this.GetResponseError(error, 'Error copying appointment')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","export class ConfigStructModel {\r\n Groups: Array;\r\n\r\n constructor() {\r\n this.Groups = [];\r\n }\r\n\r\n static Deserialize(jsonConfig: any) {\r\n return jsonConfig;\r\n }\r\n}\r\n\r\nexport class GroupStructModel {\r\n Name: string;\r\n Screens: string[];\r\n ParentControls: string[];\r\n Properties: Array;\r\n\r\n constructor() {\r\n \tthis.Screens = [];\r\n this.Properties = [];\r\n }\r\n}\r\n\r\n\r\nexport class PropertyStructModel {\r\n Name: string;\r\n\tType: string;\r\n\tValueRequired: boolean;\r\n PropertyManager: string;\r\n\tDefaultValue: any;\r\n\tOptions: Array;\r\n Source: ISource;\r\n Params: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.Options = [];\r\n\t}\r\n}\r\n\r\ninterface IPropertyOption {\r\n\tName: string;\r\n\tValue: any;\r\n}\r\n\r\ninterface ISource {\r\n TableName: string;\r\n Value: string;\r\n DisplayValue: string;\r\n}","import { ConfigStructModel } from \"Core/GeneralProperties/Models/ConfigStructModel\";\r\nimport { ConfigModel } from \"Core/GeneralProperties/Models/ConfigModel\";\r\nimport { IControl } from 'Core/Controls/IControl';\r\n\r\nexport class GeneralProperties {\r\n\tprivate _configStruct: ConfigStructModel;\r\n\tprivate _isConfigStructOk: boolean;\r\n\r\n\tprivate _config: ConfigModel;\r\n\tprivate _isConfigOk: boolean;\r\n\r\n\tconstructor(jsonConfig: any, properties: any, control: IControl) {\r\n\t\tthis.Init(jsonConfig, properties, control);\r\n\t}\r\n\r\n\tget ConfigStruct() {\r\n\t\treturn this._configStruct;\r\n\t}\r\n\r\n\tget Config() {\r\n\t\treturn this._config;\r\n\t}\r\n\r\n\tprivate Init(jsonConfig: any, properties: any, control: IControl) {\r\n\t\tthis.InitConfigStruct(jsonConfig);\r\n\r\n\t\tthis.InitConfig(properties, control);\r\n\t}\r\n\r\n\tprivate InitConfigStruct(jsonConfig: any) {\r\n\t\ttry {\r\n\t\t\tthis._configStruct = jsonConfig ? ConfigStructModel.Deserialize(jsonConfig) : null;\r\n\t\t\tthis._isConfigStructOk = true;\r\n\t\t} catch (e) {\r\n\t\t\tthis._configStruct = new ConfigStructModel();\r\n\t\t\tconsole.error(e.message);\r\n\t\t\tthis._isConfigStructOk = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate InitConfig(properties: any, control: IControl) {\r\n\t\tif (!this._configStruct || !this._isConfigStructOk) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._config = new ConfigModel(this._configStruct, properties, control);\r\n\t}\r\n} ","import { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { URL } from 'Core/Common/Url';\r\nimport { IConditionValueDto } from 'Core/Common/Interfaces/IConditionValueDto';\r\n\r\nexport interface GetHideIfConditionValueDto {\r\n\tControlId: number;\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tConditionValues: Array\r\n}\r\n\r\nexport class BaseControlStore {\r\n\tstatic GetHideIfConditionValue(params: GetHideIfConditionValueDto): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tRequest\r\n\t\t\t.For(URL.CONTROLS.GET_HIDE_IF_CONDITION_VALUE)\r\n\t\t\t.Post(params)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {FlagResolver} from \"Core/Common/FlagResolver\";\r\nimport {FieldFlags} from \"Core/Common/Enums/FieldFlags\";\r\n\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {LanguageModel} from \"Core/Components/Translation/Models/LanguageModel\";\r\n\r\nimport {CONTROL_TYPES, RenderModes} from 'Core/Constant'\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {IForm, IControlParam, IScreen} from 'Core/Screens/IScreen'\r\nimport {Event} from 'Core/Common/Event'\r\nimport {Guid} from 'Core/Common/Guid'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {IControl} from 'Core/Controls/IControl'\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel'\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel'\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel'\r\nimport clone from 'clone'\r\nimport {Icon} from 'Core/Icon/Icon'\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties'\r\nimport {ConfigModel} from 'Core/GeneralProperties/Models/ConfigModel'\r\n\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {HelpBook} from 'HelpBook/HelpBook';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {IWebSizeValue} from \"Core/GeneralProperties/Managers/WebSizeProperty/WebSizeProperty\";\r\n\r\nimport DesignTemplate from 'Core/Controls/BaseControl/Templates/DesignWrapper.html'\r\nimport StaticDesignTemplate from 'Core/Controls/BaseControl/Templates/StaticDesignWrapper.html'\r\nimport {BaseControlStore} from 'Core/Controls/BaseControl/BaseControlStore'\r\nimport PredefinedDesignTemplate from 'Core/Controls/BaseControl/Templates/PredefinedDesignWrapper.html'\r\nimport {IconModel} from \"./Models/IconModel\";\r\nimport {TranslationModel} from \"./Models/TranslationModel\";\r\nimport {ITooltipConfig} from \"../../KnockoutExtentions/TooltipExtention\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport { IDynamicFieldData, IGetDynamicDependsOnValue, RecordStore } from 'Core/Common/Stores/RecordStore';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { IControlAttachedField, IScreenVariable } from 'Core/Screens/BaseScreen';\r\nimport { IConditionValueDto } from 'Core/Common/Interfaces/IConditionValueDto';\r\nimport { QueryConditionItemModel } from '../Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\nimport { GENERAL_PROPERTIES } from 'Core/GeneralProperties/Managers/Constants';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { QueryConditionGroupModel } from '../Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport { EVENTS as SCREEN_EVENTS } from 'Core/Screens/Events';\r\nimport { ConditionBuilder } from 'QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder';\r\n\r\nimport DataLoadTemplate from 'Core/Controls/BaseControl/Templates/DataLoadTemplate.html'\r\n\r\nko.templates['Core/Controls/BaseControl/Templates/DesignWrapper'] = DesignTemplate;\r\nko.templates['Core/Controls/BaseControl/Templates/StaticDesignWrapper'] = StaticDesignTemplate;\r\nko.templates['Core/Controls/BaseControl/Templates/PredefinedDesignWrapper'] = PredefinedDesignTemplate;\r\nko.templates['Core/Controls/BaseControl/Templates/DataLoadTemplate'] = DataLoadTemplate;\r\n\r\nexport interface IControlValue {\r\n SubjectRecordId: number;\r\n SubjectEntityId: number;\r\n Data?: ControlDataModel;\r\n Datas?: Array;\r\n RecordSpecsModel: RecordSpecsModel;\r\n}\r\n\r\nexport interface ITranslationValue {\r\n Value: string;\r\n TranslatedValue: string;\r\n Language: LanguageModel;\r\n}\r\n\r\nconst focusableControls = [CONTROL_TYPES.Text];\r\n\r\nexport abstract class BaseControl extends Event implements IControl {\r\n protected _model: KnockoutObservable;\r\n protected _renderMode: KnockoutObservable;\r\n protected _form: IForm;\r\n protected _subControls: KnockoutObservableArray;\r\n protected _guid: string;\r\n protected _isRendered: KnockoutObservable;\r\n protected _display: KnockoutObservable;\r\n protected _el: HTMLElement;\r\n protected _parentControl: IControl;\r\n protected _isWrapped: KnockoutObservable;\r\n protected _icon: KnockoutObservable;\r\n protected _defaultIcon: Icon;\r\n protected _isStatic: boolean;\r\n private _generalProperties: ConfigModel;\r\n protected _isActive: KnockoutObservable;\r\n protected _originalModel: string;\r\n protected _isValid: KnockoutObservable;\r\n protected _isVisible: KnockoutObservable;\r\n protected _isRequired: boolean;\r\n protected _isReadonly: boolean;\r\n protected _getCurrentName: any;\r\n protected _errorMessage: KnockoutObservable;\r\n protected IsFocused: KnockoutObservable;\r\n protected _help: HelpBook;\r\n protected _isIconVisible: boolean;\r\n protected _labels = LABELS;\r\n protected _initWithDefault: boolean;\r\n protected _webSizeValue: IWebSizeValue;\r\n\tprotected Label: KnockoutObservable;\r\n\tprotected HelpPageLabel: KnockoutObservable;\r\n protected DescriptionToolTip: KnockoutObservable;\r\n protected _resetDependsOnValue: KnockoutObservable;\r\n protected _isDataLoading: KnockoutObservable;\r\n protected _conditionScreenData: Map;\r\n protected _isHideIfDataLoading: KnockoutObservable;\r\n protected _gridRow: any;\r\n\r\n protected _enabled: KnockoutObservable;\r\n protected _backgroundColor: KnockoutObservable;\r\n protected _color: KnockoutObservable;\r\n protected _borderColor: KnockoutObservable;\r\n protected _border: KnockoutObservable;\r\n protected _style: KnockoutComputed<{}>;\r\n protected HideCaption: KnockoutObservable;\r\n protected HideCaptionFromProperty: KnockoutObservable;\r\n\r\n CreateControl: (params: IControlParam) => IControl;\r\n\r\n GetTemplateName: KnockoutComputed;\r\n \r\n\r\n\r\n constructor(params: IControlParam, config: JSON = null) {\r\n super();\r\n this._model = ko.observable(params.Model);\r\n this._form = params.Form;\r\n this._parentControl = params.ParentControl;\r\n this.CreateControl = params.CreateControl;\r\n\r\n this._model.subscribe(() => {\r\n if(this._model().Icon){\r\n this._icon(new Icon(this._model().Icon));\r\n }\r\n\r\n if(config){\r\n this.InitProperties(config);\r\n } \r\n\r\n if (this.Properties) {\r\n this.ApplyProperties();\r\n }\r\n });\r\n\r\n if(config){\r\n this.InitProperties(config);\r\n }\r\n\r\n this._guid = Guid.NewGuid();\r\n this._conditionScreenData = new Map();\r\n this._isWrapped = ko.observable(false);\r\n this._isStatic = params.IsStatic || params.Model.Predefined || false;\r\n this._isRequired = this.GetIsRequired();\r\n this._isReadonly = this.GetIsReadOnly();\r\n this._renderMode = ko.observable(params.RenderMode);\r\n this._subControls = ko.observableArray();\r\n this.InitSubControls();\r\n this._display = ko.observable('');\r\n this._isRendered = ko.observable(false);\r\n this._isActive = ko.observable(false);\r\n this._isValid = ko.observable(true);\r\n this._isVisible = ko.observable(true);\r\n this._el = null;\r\n this._getCurrentName = '';\r\n this._icon = ko.observable(null);\r\n this._errorMessage = ko.observable('');\r\n this._help = HelpBook.Instance;\r\n this._isIconVisible = GlobalManager.Instance.GetGlobal(GLOBALS.SHOW_CONTROL_ICONS) !== '0';\r\n this._webSizeValue = null;\r\n this._resetDependsOnValue = ko.observable(params.Model.ResetDependsOnValue);\r\n this._isDataLoading = ko.observable(false);\r\n this._isHideIfDataLoading = ko.observable(false);\r\n\r\n\t\tthis.Label = ko.observable(this.GetLabel());\r\n this.DescriptionToolTip = ko.observable(null);\r\n this.InitShowIfCondition();\r\n\r\n this._originalModel = ko.toJSON(this._model,\r\n (key, value) => {\r\n if (key === 'SubControls') {\r\n return [];\r\n }\r\n return value;\r\n });\r\n\r\n this.IsFocused = ko.observable(false).extend({throttle:200});\r\n\r\n this._subControls.subscribe((subControls) => {\r\n _.each(subControls,\r\n (control, index) => {\r\n control.SetSort(index * 10);\r\n });\r\n });\r\n\r\n this.GetTemplateName = ko.computed(() => {\r\n if(this._isHideIfDataLoading()){\r\n return 'Core/Controls/BaseControl/Templates/DataLoadTemplate';\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Design) {\r\n if (this._model().Predefined) {\r\n return 'Core/Controls/BaseControl/Templates/PredefinedDesignWrapper';\r\n }\r\n\r\n if (this._isStatic) {\r\n return 'Core/Controls/BaseControl/Templates/StaticDesignWrapper';\r\n }\r\n\r\n return 'Core/Controls/BaseControl/Templates/DesignWrapper';\r\n }\r\n\r\n let template = RenderModes[this._renderMode()];\r\n let templateName = `Core/Controls/${this.GetType()}/Templates/${template}`;\r\n\r\n return templateName;\r\n });\r\n\r\n //TODO use one model for icon\r\n this._model().Fields.map((field) => {\r\n if (field.EntityTypeName === 'Link' || this.CheckEntityTypeByName(field.EntityName)) {\r\n field.RelatedField = true;\r\n }\r\n\r\n if (field.EntityTypeName === 'Sub') {\r\n field.SubTableField = true;\r\n }\r\n\r\n return field;\r\n });\r\n var field = _.first(this._model().Fields);\r\n if (field) {\r\n if (this._model().IsComplexControl) {\r\n if (field.EntityIcon) {\r\n this._icon(new Icon(field.EntityIcon));\r\n }\r\n } else {\r\n if (field.FieldIcon) {\r\n this._icon(new Icon(field.FieldIcon));\r\n }\r\n }\r\n }\r\n\r\n this.AddEvent(\"READY\");\r\n this.AddEvent(\"AFTER_RENDER\");\r\n this.AddEvent(\"CONTROL_MODIFY\");\r\n\r\n if (this._renderMode() === RenderModes.View || this._renderMode() === RenderModes.Edit) {\r\n if (this._form) {\r\n if (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen]) {\r\n this._isReadonly = false;\r\n }\r\n }\r\n }\r\n\r\n this._enabled = ko.observable(false)\r\n this._backgroundColor = ko.observable(null);\r\n this._color = ko.observable(null);\r\n this._borderColor = ko.observable(null);\r\n this._border = ko.observable(false);\r\n this._style = ko.computed(() => {\r\n return null;\r\n });\r\n this.HideCaption = ko.observable(null);\r\n this.HideCaptionFromProperty = ko.observable(null);\r\n }\r\n\r\n public PostInit(){\r\n this.UpdateShowIfValue();\r\n };\r\n\r\n private InitShowIfCondition(){\r\n if(this.HideIfCondition){\r\n this.Screen?.On(SCREEN_EVENTS.DATA_CHANGED, this, (eventArgs) => {\r\n let screenData: IScreenVariable = eventArgs.data.ScreenVariable;\r\n var screenVariableCondition = ConditionBuilder.GetScreenVariableCondition(screenData, this.HideIfCondition);\r\n if (screenVariableCondition.length > 0) {\r\n this.SetConditionScreenData(screenVariableCondition, screenData.Value);\r\n this.UpdateShowIfValue();\r\n }\r\n });\r\n }\r\n }\r\n\r\n UpdateShowIfValue(){\r\n if(!this.HideIfCondition){\r\n return;\r\n }\r\n this._isHideIfDataLoading(true);\r\n BlockUI.Block({ Target: this._el });\r\n BaseControlStore.GetHideIfConditionValue({\r\n ControlId: this.GetControlId(),\r\n SubjectEntityId: this.Screen.GetEntityId(),\r\n SubjectRecordId: this.Screen.GetRecordId(),\r\n ConditionValues: this.MapConditionValues()\r\n })\r\n .always(()=>{\r\n this._isHideIfDataLoading(false);\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then(result=> {\r\n this._isVisible(!result);\r\n });\r\n }\r\n\r\n UpdateVariable(controlField: IControlAttachedField, value: string | number){\r\n this.Screen && this.Screen.UpdateVariable(controlField, value);\r\n }\r\n\r\n protected abstract ApplyProperties();\r\n\r\n private InitProperties(config: any){\r\n this._generalProperties = new GeneralProperties(config, this._model().Properties, this).Config;\r\n }\r\n\r\n set BackgroundColor(value: string){};\r\n\r\n get BackgroundColor(): string{\r\n return null;\r\n };\r\n\r\n SetData(data: ControlDataModel) {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n ControlModify() {\r\n this.Trigger('CONTROL_MODIFY', {Control: this});\r\n }\r\n\r\n private CheckEntityTypeByName(entityName: string): boolean {\r\n if (!entityName) return false;\r\n\r\n if (entityName.indexOf('SYS_') !== -1 || entityName.indexOf('CD_') !== -1) {\r\n return entityName.split('').filter(item => item === '_').length > 1;\r\n } else {\r\n return entityName.indexOf('_') !== -1;\r\n }\r\n }\r\n\r\n IsJsonString(str){\r\n try {\r\n JSON.parse(str);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n SetIsWrapped(isWrapped) {\r\n this._isWrapped(isWrapped);\r\n }\r\n\r\n SetWebSizeValue(value: IWebSizeValue){\r\n this._webSizeValue = value;\r\n }\r\n\r\n SetIsVisible(isVisible: boolean) {\r\n this._isVisible(isVisible);\r\n }\r\n\r\n GetIsVisible() {\r\n return this._isVisible();\r\n }\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n SetFocus(hasFocus: boolean): void {\r\n let isMobile = MobileChecker.IsMobile();\r\n this.IsFocused(isMobile ? false : hasFocus);\r\n }\r\n\r\n TrySetFocus(): boolean {\r\n let focusable = this.IsFocusable();\r\n\r\n if (focusable) {\r\n this.SetFocus(true);\r\n }\r\n\r\n return focusable;\r\n }\r\n\r\n GetDefaultName() {\r\n return \"Default name\";\r\n }\r\n\r\n GetDesignTemplateName(): string {\r\n return `Core/Controls/${this.GetType()}/Templates/${RenderModes[RenderModes.Design]}`;\r\n }\r\n\r\n private InitSubControls() {\r\n _.each(this._model().SubControls, (controlModel: ControlModel) => {\r\n var params: IControlParam = {\r\n Model: controlModel,\r\n Form: this._form,\r\n RenderMode: this._renderMode(),\r\n ParentControl: this\r\n };\r\n\r\n var control = this.CreateControl(params);\r\n if (control) {\r\n this._subControls.push(control);\r\n }\r\n });\r\n }\r\n\r\n get Guid(): string {\r\n return this._guid;\r\n }\r\n\r\n get IsStatic(): boolean {\r\n return this._isStatic;\r\n }\r\n\r\n GetControlId(): number {\r\n return this._model().Id;\r\n }\r\n\r\n GetControlTypeName(): string {\r\n return this._model().TypeName;\r\n }\r\n\r\n GetControlTypeTranslatedName(): string {\r\n return this._model().TypeTranslatedName ? this._model().TypeTranslatedName : this._model().TypeName;\r\n }\r\n\r\n GetFieldId(): number {\r\n var field = _.first(this._model().Fields);\r\n return field ? field.Id : null;\r\n }\r\n\r\n GetFieldModel(): AttachedFieldModel {\r\n return this.FieldModel;\r\n }\r\n\r\n HasOneField(): boolean {\r\n return this._model().Fields.length === 1;\r\n }\r\n\r\n GetDefaultIcon(): Icon {\r\n return this._defaultIcon;\r\n }\r\n\r\n SetDefaultIcon(icon: Icon) {\r\n this._defaultIcon = icon;\r\n\r\n if (!this._icon()) {\r\n this._icon(this._defaultIcon);\r\n }\r\n }\r\n\r\n get IsDisabledByCondition(): boolean {\r\n return this._model().IsDisabledByCondition;\r\n }\r\n\r\n get IsMailEnabled(): boolean {\r\n return this._model().IsMailEnabled;\r\n }\r\n\r\n get FieldModel(): AttachedFieldModel {\r\n return _.first(this._model().Fields);\r\n }\r\n\r\n get FormatName() {\r\n const fieldModel = _.first(this._model().Fields);\r\n\r\n return fieldModel ? (fieldModel.FormatName || '') : '';\r\n }\r\n\r\n\r\n get Name(): string {\r\n var name = this._model().Name;\r\n var self = this;\r\n if (this._model().NameTranslations) {\r\n _.each(self._model().NameTranslations, item => {\r\n if (item.Selected && item.Translation && item.Translation !== '' && item.Translation !== null) {\r\n name = item.Translation;\r\n return;\r\n }\r\n });\r\n }\r\n return name;\r\n }\r\n\r\n set Name(value: string) {\r\n this._model().Name = value;\r\n }\r\n\r\n get NameTranslations(): TranslationModel[] {\r\n return this._model().NameTranslations;\r\n }\r\n\r\n set NameTranslations(translations: TranslationModel[]) {\r\n this._model().NameTranslations = translations;\r\n }\r\n\r\n get Icon(): IconModel {\r\n return this._icon();\r\n }\r\n\r\n SetFontName(fontName: string) {\r\n this._icon().FontName = fontName;\r\n }\r\n\r\n get LabelPosition(): string {\r\n return this._model().LabelPosition;\r\n }\r\n\r\n get ExampleAlias(): string {\r\n return this._model().ExampleAlias;\r\n }\r\n\r\n get Description(): string {\r\n return this._model().Description;\r\n }\r\n\r\n get Properties(): any {\r\n return this._model().Properties;\r\n }\r\n\r\n SetProperties(properties): void {\r\n this._model().Properties = properties;\r\n }\r\n\r\n get Model(): ControlModel {\r\n return this._model();\r\n }\r\n\r\n get IsEditScreenExist(): boolean {\r\n return this._form ? this._form.GetScreen().IsEditScreenExist : false;\r\n }\r\n\r\n get IsListScreenExist(): boolean {\r\n return this._form ? this._form.GetScreen().IsListScreenExist : false;\r\n }\r\n\r\n get IsSpecialScreenExist(): boolean {\r\n return this._form ? this._form.GetScreen().IsSpecialScreenExist : false;\r\n }\r\n\r\n get IsDashboardScreenExist() : boolean {\r\n return this._form ? this._form.GetScreen().IsDashboardScreenExist : false;\r\n }\r\n\r\n get IsConsultScreenExist(): boolean {\r\n return this._form ? this._form.GetScreen().IsConsultScreenExist : false;\r\n }\r\n\r\n get IsStepsScreenExist(): boolean {\r\n return this._form ? this._form.GetScreen().IsStepsScreenExist : false;\r\n }\r\n\r\n IsFocusable(): boolean {\r\n return (focusableControls.indexOf(this.GetType()) >= 0) && !this.GetCombinedReadOnly();\r\n }\r\n\r\n get GeneralProperties(): ConfigModel {\r\n return this._generalProperties;\r\n }\r\n\r\n ChangeProperty(type: string, value) {\r\n if (this._generalProperties && this.Properties) {\r\n this._generalProperties.SetPropertyValue(type, value);\r\n }\r\n }\r\n\r\n GetSubControls(): Array {\r\n return this._subControls();\r\n }\r\n\r\n GetAllSubControls(): Array {\r\n var subControls = [];\r\n subControls = subControls.concat(this.GetSubControls());\r\n _.each(subControls, subControl => {\r\n subControls = subControls.concat(subControl.GetAllSubControls());\r\n\r\n });\r\n return subControls;\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n\r\n }\r\n\r\n SetDefaultValue(value: IControlValue): void {\r\n this.SetValue(value);\r\n this._initWithDefault = true;\r\n }\r\n\r\n\r\n SetRenderMode(renderMode: RenderModes): void {\r\n this._renderMode(renderMode);\r\n }\r\n\r\n GetRenderMode(): RenderModes {\r\n return this._renderMode();\r\n }\r\n\r\n SetReadOnly(readOnly: boolean): void {\r\n }\r\n\r\n GetType(): string {\r\n return this._model().TypeName;\r\n }\r\n\r\n GetIsReadOnly(): boolean {\r\n return this._model().IsReadOnly;\r\n }\r\n\r\n GetCombinedReadOnly() {\r\n return this._isReadonly || this.FieldModel.IsSystem;\r\n }\r\n\r\n GetIsRequired(): boolean {\r\n return this._model().IsRequired;\r\n }\r\n\r\n AfterRender(el: Array): void {\r\n if (el) {\r\n this._el = el[0];\r\n\t\t}\r\n\r\n this.CreateDescriptionToolTip();\r\n\r\n this._isRendered(true);\r\n this.Trigger('AFTER_RENDER');\r\n }\r\n\r\n AddStyle(name: string, value: string) {\r\n if (name === 'display') {\r\n this._display(value);\r\n }\r\n }\r\n\r\n IsDataControl(): boolean {\r\n return false;\r\n }\r\n\r\n IsLazyLoadData(): boolean {\r\n return false;\r\n }\r\n\r\n GetForm(): IForm {\r\n return this._form;\r\n }\r\n\r\n SetForm(form: IForm) {\r\n return this._form = form;\r\n }\r\n\r\n SetParentControl(control: IControl) {\r\n return this._parentControl = control;\r\n }\r\n\r\n AddSubControl(control: IControl) {\r\n this._subControls.push(control);\r\n }\r\n\r\n SetGuid(guid: string) {\r\n this._guid = guid;\r\n }\r\n\r\n GetGuid() {\r\n return this._guid;\r\n }\r\n\r\n Clone(): IControl {\r\n var model = clone(this._model());\r\n var controlParams: IControlParam = {\r\n Model: model,\r\n Form: this._form,\r\n ParentControl: this._parentControl,\r\n RenderMode: this._renderMode()\r\n }\r\n return this.CreateControl(controlParams);\r\n }\r\n\r\n ToDesignedControl(): IControl {\r\n var model = clone(this._model());\r\n model.Id = 0;\r\n var controlParams: IControlParam = {\r\n Model: model,\r\n Form: this._form,\r\n ParentControl: this._parentControl,\r\n RenderMode: RenderModes.Design\r\n }\r\n return this.CreateControl(controlParams);\r\n }\r\n\r\n RemoveControl(control: IControl) {\r\n this._subControls.remove(control);\r\n (this.GetForm().GetScreen() as any).OnControlRemoved(control);\r\n }\r\n\r\n GetValue(): any {}\r\n\r\n GetTranslations() {\r\n return [];\r\n }\r\n\r\n GetDefaultTranslation() {\r\n return null;\r\n }\r\n\r\n Deserialize() {\r\n return null;\r\n }\r\n\r\n GetModel(): ControlModel {\r\n return this._model();\r\n }\r\n\r\n SetModel(model: ControlModel) {\r\n this._model(model);\r\n }\r\n\r\n GetParentControl(): IControl {\r\n return this._parentControl;\r\n }\r\n\r\n ModelHasMutated() {\r\n this._model.valueHasMutated();\r\n }\r\n\r\n GetWidthSize(): string{\r\n let widthSizeValue = '';\r\n\r\n if (this.Model && this.Model.TypeName === 'Group'){\r\n if (this._webSizeValue){\r\n if (this._isWrapped()){\r\n widthSizeValue = `calc(${this._webSizeValue.Value}${this._webSizeValue.Unit.Value} - 5px)`;\r\n } else {\r\n widthSizeValue = `${this._webSizeValue.Value}${this._webSizeValue.Unit.Value}`;\r\n }\r\n } else {\r\n if (this._isWrapped()){\r\n widthSizeValue = \"calc(100% - 5px)\";\r\n } else {\r\n widthSizeValue = \"100%\";\r\n }\r\n }\r\n }\r\n return widthSizeValue;\r\n }\r\n\r\n GetWrapperClass(): string {\r\n var classes = '';\r\n\r\n if (this._isWrapped() && this.Model.TypeName === 'Memo') {\r\n classes += 'wrapped-image wrapped-memo ';\r\n } else if(this._isWrapped() && this.Model.TypeName === 'Group'){\r\n\r\n if (this._webSizeValue &&\r\n this._webSizeValue.Value == 100 &&\r\n this._webSizeValue.Unit.Value == '%'){\r\n classes += 'not-wrapped-group ';\r\n } else {\r\n classes += 'wrapped-group ';\r\n }\r\n\r\n } else if (this._isWrapped()) {\r\n classes += 'wrapped-image ';\r\n }\r\n\r\n if(this.Model.TypeName === 'Tab'){\r\n classes += 'tab-container ';\r\n }\r\n\r\n if(this.Model.TypeName === CONTROL_TYPES.Tag) {\r\n classes += 'tag-control-container ';\r\n }\r\n\r\n if (this.Model.TypeName === 'Memo') {\r\n classes += 'memo-container ';\r\n }\r\n\r\n if (this._model().IsParentControl) {\r\n classes += 'parent-control';\r\n }\r\n\r\n if (this._model().IsFieldAttached) {\r\n classes += 'field-attached';\r\n }\r\n\r\n if (this._model().IsParentForFields) {\r\n classes += 'parent-for-fields';\r\n }\r\n\r\n if (this._model().IsBlobFieldAttached) {\r\n classes += 'blob-field-attached';\r\n }\r\n if (this._model().IsLookupFieldAttached) {\r\n classes += 'lookup-field-attached';\r\n }\r\n\r\n if (this._model().IsColorFieldAttached) {\r\n classes += 'color-field-attached';\r\n }\r\n\r\n if (this._model().IsMultiSelectFieldAttached) {\r\n classes += 'multi-select-field-attached';\r\n }\r\n\r\n if (this._model().IsComplexControl) {\r\n classes += 'is-complex-control';\r\n }\r\n\r\n if (this.Model.TypeName === CONTROL_TYPES.ButtonEdit\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonDelete\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonListScreen\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonSpecialScreen\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonDashboardScreen\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonReturn\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonSecurityReset\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonFavorite\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonTemplate\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonConsultScreen\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonAdd\r\n || this.Model.TypeName === CONTROL_TYPES.GenericButton\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonCopy\r\n || this.Model.TypeName === CONTROL_TYPES.History\r\n || this.Model.TypeName === CONTROL_TYPES.Timer\r\n ){\r\n classes += 'templateButtonsGroup';\r\n }\r\n\r\n return classes;\r\n }\r\n\r\n HasSubControl(typeName: string): boolean {\r\n return _.some(this.Model.SubControls, (control: ControlModel)=> control.TypeName === typeName);\r\n }\r\n\r\n GetWrapper(): HTMLElement {\r\n return this._el;\r\n }\r\n\r\n IsModified(): boolean {\r\n return this._initWithDefault;\r\n }\r\n\r\n GetIsActive(): boolean {\r\n return this._isActive();\r\n }\r\n\r\n SetIsActive(value: boolean) {\r\n this._isActive(value);\r\n }\r\n\r\n GetSort(): number {\r\n return this._model().Sort;\r\n }\r\n\r\n SetSort(value: number) {\r\n this._model().Sort = value;\r\n }\r\n\r\n get IsNew(): boolean {\r\n return this._model().Id === 0 || this._model().Id === null;\r\n }\r\n\r\n IsValid(): boolean {\r\n return true;\r\n }\r\n\r\n IsPropertiesValid(): boolean {\r\n if (this._generalProperties) {\r\n return this._generalProperties.IsValid();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n IsPropertiesValidToSave(): boolean {\r\n if (this._generalProperties) {\r\n return this._generalProperties.IsValidToSave();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n GetPropertiesErrors(): string[] {\r\n if (this._generalProperties) {\r\n return this._generalProperties.GetPropertiesErrors();\r\n }\r\n\r\n return [];\r\n }\r\n\r\n IsTranslatable() {\r\n return FlagResolver.ContainsFlag(FieldFlags.Translate, this._model().FieldFlag);\r\n }\r\n\r\n GetTranslation(data: ControlDataModel): ITranslationValue {\r\n return TranslationManager.Instance.GetTranslation(data.DisplayValue, data.Translations);\r\n }\r\n\r\n GetIcon() {\r\n return this._model().Icon;\r\n }\r\n\r\n UpdateLabel() {\r\n this.Label(this.GetLabel());\r\n }\r\n\r\n protected GetLabel(): string {\r\n if (this._model().UseFieldName && (this._model().IsFieldAttached || this._model().IsLookupFieldAttached || this._model().IsMultiSelectFieldAttached)) {\r\n let fieldAttached = _.first(this._model().Fields);\r\n if (fieldAttached) {\r\n this._getCurrentName = fieldAttached.FieldNameTranslation;\r\n }\r\n } else {\r\n var translationList = this._model().NameTranslations;\r\n _.each(translationList, item => {\r\n\r\n if (item.Selected && item.Translation !== '' && item.Translation !== null) {\r\n this._getCurrentName = item.Translation;\r\n } else if (item.Selected) {\r\n this._getCurrentName = this._model().Label;\r\n }\r\n });\r\n\r\n if (!translationList.length) {\r\n return this._model().TranslatedName || this._model().Label;\r\n }\r\n }\r\n\r\n if (this._getCurrentName) {\r\n return this._getCurrentName;\r\n } else {\r\n return this._model().Label;\r\n }\r\n\t}\r\n\r\n CreateDescriptionToolTip() {\r\n\t this.DescriptionToolTip({\r\n\t\t content: this.DescriptionToolTipContent,\r\n\t\t onlyOnOverflow: true,\r\n\t\t position: { x: 'left', y: 'center' },\r\n\t\t outside: 'x',\r\n\t\t addClass: 'ellipsis-tooltip'\r\n\t });\r\n }\r\n\r\n get DescriptionToolTipContent(): string {\r\n\t const controlDescriptionTranslationModel = _.find(this._model().DescriptionTranslations, item => item.Selected && item.Translation !== '' && item.Translation !== null);\r\n\t const controlDescription = controlDescriptionTranslationModel\r\n\t\t ? controlDescriptionTranslationModel.Translation\r\n\t\t : this.Description;\r\n\r\n\t if (controlDescription) {\r\n\t\t return controlDescription;\r\n\t }\r\n\r\n\t const fieldAttached = _.first(this._model().Fields);\r\n\t\tif (fieldAttached) {\r\n\t\t return fieldAttached.MemoTranslation || fieldAttached.Memo;\r\n\t }\r\n\r\n\t return null;\r\n }\r\n\r\n public SetIsRequired(isRequired: boolean) {\r\n this._isRequired = isRequired;\r\n this._model().IsRequired = isRequired;\r\n }\r\n\r\n Dispose() {\r\n\r\n }\r\n\r\n get Screen(): IScreen {\r\n return this._form ? this._form.GetScreen() : null;\r\n }\r\n\r\n get EnableResetDependOnValue(): boolean {\r\n return this.FieldModel && this.FieldModel.DynamicFields.length > 0 && this.FieldModel.FilledById != 0;\r\n }\r\n\r\n protected GetDynamicFieldsData(): Array{\r\n let dynamicFieldValues: Array = [];\r\n if(!this._form){\r\n return dynamicFieldValues;\r\n }\r\n\r\n _.each(this._form.GetScreen().GetAllControls(), (control) => {\r\n if([CONTROL_TYPES.Text, CONTROL_TYPES.Dropdown, CONTROL_TYPES.MultiSelect, CONTROL_TYPES.DateTime].indexOf(control.GetType()) >= 0){\r\n dynamicFieldValues.push(\r\n {\r\n FieldId: control.GetFieldModel().Id, Value: control.GetValue()\r\n }\r\n );\r\n } \r\n });\r\n\r\n if(this.IsLinkEditor && (this.Screen as any).RelationTypeField){\r\n dynamicFieldValues.push(\r\n {\r\n FieldId: (this.Screen as any).RelationTypeField.Id, Value: (this.Screen as any).RelationTypeId\r\n }\r\n );\r\n }\r\n\r\n return dynamicFieldValues;\r\n }\r\n\r\n protected CalculateDependOnValue(): P.Promise {\r\n\r\n this._isDataLoading(true);\r\n\r\n const deferredResult = P.defer();\r\n\r\n if (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor]) {\r\n let screen = this._form.GetScreen() as any;\r\n let requestModel: IGetDynamicDependsOnValue = {\r\n SubjectRecordId: screen._mainRecordId,\r\n SubjectEntityId: screen._mainEntityId,\r\n RelatedEntityId: screen._relatedEntityId,\r\n RelatedRecordId: screen._relatedRecordId,\r\n KSeq: screen._kSeq,\r\n ScreenData: this.GetDynamicFieldsData(),\r\n FieldId: this.FieldModel.Id\r\n };\r\n\r\n RecordStore.GetDynamicDependsOnValues(requestModel)\r\n .always(()=>{\r\n this._isDataLoading(false);\r\n })\r\n .then((data) => {\r\n const dependsOnValue = (data.ResultObject && data.ResultObject.Value) || null;\r\n deferredResult.resolve(dependsOnValue);\r\n if (this._resetDependsOnValue()) {\r\n this._resetDependsOnValue(false);\r\n }\r\n }).fail((error) => {\r\n let notifier = new Notifier(null);\r\n notifier.Failed(error.message);\r\n });\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n get IsConsultScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsConsultScreen;\r\n }\r\n\r\n get IsListScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsListScreen;\r\n }\r\n\r\n get IsEditScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsEditScreen;\r\n }\r\n\r\n\r\n get IsProcessCardPageScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsProcessCardPageScreen;\r\n }\r\n get IsQueryScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsQueryScreen;\r\n }\r\n\r\n get IsLinkEditor(): boolean {\r\n return this._form && this._form.GetScreen().IsLinkEditor;\r\n }\r\n\r\n get IsLIsSpecialScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsSpecialScreen;\r\n }\r\n \r\n get IsPortlet(): boolean {\r\n return this._form && this._form.GetScreen().IsPortlet;\r\n }\r\n\r\n get IsEditMode(): boolean {\r\n return this._renderMode() === RenderModes.Edit;\r\n }\r\n\r\n get IsViewMode(): boolean {\r\n return this._renderMode() === RenderModes.View;\r\n }\r\n get IsHelpMode(): boolean {\r\n return this._renderMode() === RenderModes.HelpView;\r\n }\r\n\r\n get IsRunTime(){\r\n return this._form && this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar;\r\n }\r\n\r\n get IsDesignTime(){\r\n return this._renderMode() === RenderModes.Design;\r\n }\r\n\r\n get Fields(): Array{\r\n return this._model().Fields;\r\n }\r\n\r\n HasDynamicField(id: number): boolean{\r\n return !!_.find(this.FieldModel.DynamicFields, (field) => field === id );\r\n }\r\n\r\n MapConditionValues(): Array{\r\n let result: Array = [];\r\n \r\n if(this._conditionScreenData){\r\n this._conditionScreenData.forEach((value, key)=> {\r\n let res: IConditionValueDto = {\r\n Guid: key,\r\n Value: value\r\n } \r\n result.push(res);\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n SetConditionScreenData(conditions: Array, value: string){\r\n _.each(conditions, condition=> this._conditionScreenData.set(condition.Column.Guid, value));\r\n }\r\n\r\n get HideIfCondition(): QueryConditionGroupModel{\r\n let conditionString = this.GeneralProperties?.GetPropertyValue(GENERAL_PROPERTIES.HIDE_IF_CONDITION);\r\n if(!conditionString){\r\n return null;\r\n }\r\n \r\n let jsonObj = JSON.parse(conditionString);\r\n let condition = GenericDeserialize(jsonObj, QueryConditionGroupModel);\r\n if(condition.HasAnyConditions){\r\n return condition;\r\n }\r\n return null;\r\n }\r\n\r\n ForceFocus(){\r\n\r\n }\r\n\r\n SetGridRow(gridRow: any) {\r\n this._gridRow = gridRow;\r\n this._renderMode(RenderModes.GridRow);\r\n }\r\n\r\n RenderByTargetId(target: string){\r\n let container = document.getElementById(target);\r\n ko.cleanNode(container);\r\n ko.applyBindings(this, container);\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {deserialize} from 'libs/cerialize';\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\n\r\nexport class AttachedFieldModel {\r\n\r\n\t@deserialize\r\n\tFieldTypeName: string;\r\n\r\n\t@deserialize\r\n\tSize: number;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tFieldNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tMemoTranslation: string;\r\n\r\n\t@deserialize\r\n\tAllowCustomValue: boolean;\r\n\r\n\t@deserialize\r\n\tAllowCreatingRecords: boolean;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tEntityNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tEntityTypeName: string;\r\n\r\n\t@deserialize\r\n\tEntityTypeId: number;\r\n\r\n\t@deserialize\r\n\tPrimaryKeyName: string;\r\n\r\n\t@deserialize\r\n TableTypeId: number;\r\n\r\n\t@deserialize\r\n\tValFieldId: number;\r\n\r\n\t@deserialize\r\n\tValFieldTypeName: string;\r\n\r\n\t@deserialize\r\n\tValFieldFormatName: string;\r\n\r\n\t@deserialize\r\n\tValFieldSize: number;\r\n\r\n\t@deserialize\r\n\tValTableId: number;\r\n\r\n\t@deserialize\r\n\tValTableName: string;\r\n\r\n\t@deserialize\r\n\tFilledById: number;\r\n\r\n\t@deserialize\r\n\tDependsOnId: number;\r\n\r\n\t@deserialize\r\n\tValTableType: string;\r\n\r\n\t//TODO remove\r\n\t@deserialize\r\n\tAllowInsert: boolean;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tEntityIcon: IconModel;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tFieldIcon: IconModel;\r\n\r\n\t@deserialize\r\n\tFormatName: string;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tSort: number;\r\n\r\n\t@deserialize\r\n\tIsReadOnly: boolean;\r\n\r\n\t@deserialize\r\n\tIsRequired: boolean;\r\n\r\n\t@deserialize\r\n\tIsVirtual: boolean;\r\n\r\n\t@deserialize\r\n\tIsSystem: boolean;\r\n\r\n\t@deserialize\r\n\tIsInteger: boolean;\r\n\r\n\t@deserialize\r\n\tIsDecimal: boolean;\r\n\r\n\t@deserialize\r\n\tIsText: boolean;\r\n\r\n\t@deserialize\r\n\tIsDate: boolean;\r\n\r\n\t@deserialize\r\n\tIsDatetime: boolean;\r\n\r\n\t@deserialize\r\n\tRelatedField: boolean;\r\n\r\n\t@deserialize\r\n\tPropertyFieldId: number;\r\n\r\n\t@deserialize\r\n\tDynamicFields: Array;\r\n\r\n\t@deserialize\r\n\tSubTableField: boolean;\r\n\r\n\t@deserialize\r\n\tFilterByField: number;\r\n\r\n\t@deserialize\r\n\tLinkRequired: boolean;\r\n\r\n\t@deserialize\r\n\tHasFilter: boolean;\r\n\r\n\tLinkRequiredObservable: KnockoutObservable;\r\n\r\n\tHasDefaultValue: boolean;\r\n\tHasLinkEditorVisibility: boolean;\r\n\tFullWidth: boolean;\r\n\tFontStyles: Array<{Id: number, Name: string}>;\r\n\tFontColor: string;\r\n\r\n\tget FullName(){\r\n\t\treturn this.FieldNameTranslation || this.Name;\r\n\t}\r\n\r\n\tconstructor(init?: Partial) {\t\t\r\n\t\tthis.FormatName = '';\r\n\t\tthis.Sort = 0;\r\n\t\tthis.DynamicFields = [];\r\n\t\tObject.assign(this, init); \r\n\t\tthis.LinkRequiredObservable = ko.observable(false);\r\n\t}\r\n\r\n\tpublic static OnDeserialized(instance: AttachedFieldModel, json: any) : void {\r\n\t\tinstance.LinkRequiredObservable = ko.observable(!!instance.LinkRequired);\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\nimport {Icon} from 'Core/Icon/Icon';\r\n\r\nimport {TriggerModel} from 'Core/Controls/BaseControl/Models/TriggerModel';\r\n\r\nexport class ControlModel {\r\n private _isInitializedControl: boolean;\r\n\r\n constructor(init?: Partial) {\r\n this.Fields = [];\r\n this.SubControls = [];\r\n this.NameTranslations = [];\r\n this.DescriptionTranslations = [];\r\n this.Sort = 0;\r\n this.Triggers = [];\r\n this._isInitializedControl = true;\r\n Object.assign(this, init);\r\n }\r\n\r\n SetInitializedControl(value: boolean){\r\n this._isInitializedControl = value;\r\n }\r\n get InitializedControl(): boolean {\r\n return this._isInitializedControl;\r\n }\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n TypeTranslatedName: string; \r\n\r\n @deserialize\r\n TypeId: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n NameMaxSize: number;\r\n\r\n @deserialize\r\n FieldNameTranslation;\r\n\r\n @deserializeAs(Number)\r\n ToolBars: Array;\r\n\r\n @deserialize\r\n Label: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n EntityName: string;\r\n\r\n @deserialize\r\n EntityTypeName: string;\r\n\r\n SubTableId: number;\r\n\r\n @deserialize\r\n LabelPosition: string;\r\n\r\n @deserialize\r\n LabelPositionValue: number;\r\n\r\n @deserialize\r\n Properties: any;\r\n\r\n @deserializeAs(ControlModel)\r\n SubControls: Array;\r\n\r\n @deserializeAs(AttachedFieldModel)\r\n Fields: Array;\r\n\r\n @deserializeAs(TranslationModel)\r\n NameTranslations: Array;\r\n\r\n @deserializeAs(TranslationModel)\r\n DescriptionTranslations: Array;\r\n\r\n @deserialize\r\n IsParentControl: boolean;\r\n\r\n @deserialize\r\n IsFieldAttached: boolean;\r\n\r\n @deserialize\r\n IsParentForFields: boolean;\r\n\r\n @deserialize\r\n IsBlobFieldAttached: boolean;\r\n\r\n @deserialize\r\n IsLookupFieldAttached: boolean;\r\n\r\n @deserialize\r\n IsMultiSelectFieldAttached: boolean;\r\n\r\n @deserialize\r\n IsComplexControl: boolean;\r\n\r\n @deserialize\r\n IsColorFieldAttached: boolean;\r\n\r\n @deserialize\r\n IsReadOnly: boolean;\r\n\r\n @deserialize\r\n IsRequired: boolean;\r\n\r\n @deserialize\r\n Predefined: boolean;\r\n\r\n @deserialize\r\n Sort: number;\r\n\r\n @deserialize\r\n Description: string;\r\n\r\n @deserialize\r\n ExampleAlias: string;\r\n\r\n @deserialize\r\n FieldFlag: number;\r\n\r\n @deserialize\r\n IsMailEnabled: boolean;\r\n\r\n @deserializeAs(TriggerModel)\r\n Triggers: Array;\r\n\r\n @deserialize\r\n HasSpreadsheetData: boolean;\r\n\r\n @deserializeAs(IconModel)\r\n Icon: IconModel;\r\n\r\n @deserialize\r\n RecordLifeStatusId: number;\r\n\r\n @deserialize\r\n DestinationTypeId: number;\r\n\r\n @deserialize\r\n UseFieldName: boolean;\r\n\r\n\r\n @deserialize\r\n IsDisabledByCondition: boolean;\r\n\r\n @deserialize\r\n IsAutoStartByCondition: boolean;\r\n\r\n @deserialize\r\n IsLinkedDocumentsAmountLimitReached: boolean;\r\n\r\n @deserialize\r\n TitleFieldId: number;\r\n\r\n @deserialize\r\n KanbanSubjectId: number;\r\n\r\n @deserialize\r\n TodoEntityId: number;\r\n\r\n @deserialize\r\n TodoTypeId: number;\r\n\r\n @deserialize\r\n ScreenId: number;\r\n\r\n @deserialize\r\n TodoTypeName: string;\r\n\r\n @deserialize\r\n TodoFieldId: number;\r\n\r\n\tResetDependsOnValue: boolean;\r\n\r\n\tSkipTimeShifting: boolean;\r\n\r\n @deserialize\r\n SubFlowTypeId: number;\r\n\r\n SetBackgroundColor(color: string) {\r\n if (!this.Properties) {\r\n this.Properties = {};\r\n }\r\n\r\n this.Properties.BackgroundColor = color;\r\n }\r\n\r\n static OnDeserialized(instance: ControlModel, json: any): void {\r\n try {\r\n if (json.Properties) {\r\n instance.Properties = JSON.parse(json.Properties);\r\n }\r\n } catch (err) {\r\n }\r\n }\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport {FONT_NAME} from \"Core/Constant\";\r\n\r\nexport class IconModel {\r\n\r\n\tconstructor(init?: Partial) {\r\n\t\tObject.assign(this, init);\r\n\t}\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tFontName: string;\r\n\r\n\t@deserialize\r\n\tImage: string;\r\n\r\n\t@deserialize\r\n\tIsIcon: boolean;\r\n\r\n\t@deserialize\r\n\tIsImage: boolean;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\tstatic GetClasses(fontName, name):string {\r\n let classes:string = '';\r\n if (fontName === FONT_NAME.FONT_AWESOME) {\r\n classes = `${classes} fa`;\r\n } else if (fontName === FONT_NAME.SOCIAL_ICONS) {\r\n classes = `${classes} socicon-btn`;\r\n }\r\n classes = `${classes} ${name}`;\r\n\r\n return classes;\r\n }\r\n}\r\n\r\n","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {serialize} from 'libs/cerialize';\r\nimport {serializeAs} from 'libs/cerialize';\r\n\r\nexport class LanguageModel {\r\n\t@deserialize\r\n\t@serialize\r\n\tK_Language: number;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tShortName: string;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tEnabled: number;\r\n\r\n\t@deserialize\r\n\tFlagBase64: string;\r\n\r\n\tconstructor(k_Language?: number, name?: string, shortName?: string, enabled?: number, flagBase64?: string) {\r\n\t\tthis.K_Language = k_Language;\r\n\t\tthis.Name = name;\r\n\t\tthis.ShortName = shortName;\r\n\t\tthis.Enabled = enabled;\r\n\t\tthis.FlagBase64 = flagBase64;\r\n\t}\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {serialize} from 'libs/cerialize';\r\nimport {serializeAs} from 'libs/cerialize';\r\nimport {LanguageModel} from 'Core/Controls/BaseControl/Models/LanguageModel';\r\nimport * as ko from \"knockout\";\r\n\r\nexport class TranslationModel {\r\n\r\n\tIsFocusedItem: KnockoutObservable;\r\n\r\n\tconstructor(){\r\n\t\tthis.IsFocusedItem = ko.observable(false);\r\n\t}\r\n\r\n\t@deserializeAs(LanguageModel)\r\n\t@serializeAs(LanguageModel)\r\n\tLanguage: LanguageModel;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tTranslation: string;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tSelected: boolean;\r\n\r\n\tget IsDefault() {\r\n\t\treturn this.Language.K_Language === -1;\r\n\t}\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport { TriggerParamModel } from 'Core/Controls/BaseControl/Models/TriggerParamModel';\r\n\r\nexport class TriggerModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.Params = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tAction: string;\r\n\r\n\t@deserializeAs(TriggerParamModel)\r\n\tParams: Array;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class TriggerParamModel {\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class LifestatusModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tApprovalName: string;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tMemoTranslation: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n}\r\n\r\nexport class LifecycleModel {\r\n\t@deserializeAs(LifestatusModel)\r\n\tCurrentLifeStatus: LifestatusModel;\r\n\r\n\t@deserializeAs(LifestatusModel)\r\n\tLifeStatuses: Array;\r\n}\r\n\r\nexport class BasketRecordModel {\r\n\tconstructor() {\r\n\t\tthis.Records = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tIsDeletingAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsEditingAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tRecords: Array;\r\n\r\n\t@deserializeAs(LifecycleModel)\r\n\tLifeStatuses: LifecycleModel;\r\n}\r\n\r\nexport class BasketDataModel {\r\n\tconstructor() {\r\n\t\tthis.Records = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tIsAddingRecordAllowed: boolean;\r\n\r\n\t@deserializeAs(BasketRecordModel)\r\n\tRecords: Array;\r\n}","import * as _ from 'underscore';\r\n\r\nimport { URL } from 'Core/Common/Url';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { DropdownListModel } from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\nimport {BasketDataModel} from 'Core/Controls/Basket/Models/BasketDataModel';\r\n\r\nexport interface IGetBasketControlDataRequestModel {\r\n\tControlId: number;\r\n\tSubjectEntityId: number;\r\n};\r\n\r\nexport interface IRemoveFromBasketRequestModel {\r\n\tBasketEntityId: number;\r\n\tBasketRecordId: number;\r\n\tRelatedEntityId: number;\r\n\tRelatedRecordId: number;\r\n}\r\n\r\nexport interface INextStatusRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tLifestatusId: number;\r\n}\r\n\r\nexport class BasketStore {\r\n\tstatic GetData(params: IGetBasketControlDataRequestModel): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/BasketApi/GetData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic RemoveFromBasket(params: IRemoveFromBasketRequestModel): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/BasketApi/RemoveFromBasket',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateStatus(params: INextStatusRequestModel): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/BasketApi/UpdateStatus',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): BasketDataModel {\r\n\t\tvar model = GenericDeserialize(jsonObject.ResultObject, BasketDataModel);\r\n\t\treturn model;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {BasketRecordModel} from 'Core/Controls/Basket/Models/BasketDataModel';\r\nimport {FollowUpLifeStatuses} from 'Core/Controls/ButtonFollowUp/FollowUpLifeStatuses';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {FollowUpStore} from \"Core/Controls/ButtonFollowUp/Stores/FollowUpStore\";\r\nimport {FollowUpRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel\";\r\nimport { FollowUpOptionModel } from \"Core/Controls/ButtonFollowUp/Models/FollowUpOptionModel\";\r\n\r\nexport class BasketRecord extends Event {\r\n\tprivate _records: KnockoutObservableArray;\r\n\tprivate _isSelected: KnockoutObservable;\r\n\tprivate _recordsCount: KnockoutComputed;\r\n\tprivate _nextStatusSelector: FollowUpLifeStatuses;\r\n\tprivate _recordId: number;\r\n\tprivate _typeId: number;\r\n\tprivate _title: string;\r\n\r\n\tconstructor(model: BasketRecordModel, entityId: number) {\r\n\t\tsuper();\r\n\t\tthis.AddEvent('LIFESTATUS_CHOOSEN');\r\n\t\tthis._recordId = model.Id;\r\n\t\tthis._typeId = model.TypeId;\r\n\t\tthis._title = model.Name;\r\n\t\tthis._records = ko.observableArray(model.Records);\r\n\t\tthis._isSelected = ko.observable(false);\r\n\t\tthis._recordsCount = ko.computed(() => {\r\n\t\t\treturn this._records().length;\r\n\t\t});\r\n \r\n if (model.LifeStatuses && model.LifeStatuses.CurrentLifeStatus && model.LifeStatuses.LifeStatuses.length > 0) {\r\n\t\t\tthis._nextStatusSelector = new FollowUpLifeStatuses();\r\n\r\n\t\t\tconst followUpOption = new FollowUpOptionModel();\r\n\t\t\tfollowUpOption.LifeStatuses = model.LifeStatuses;\r\n\t\t\tthis._nextStatusSelector.Init(followUpOption, null, null);\r\n\r\n\t\t\tthis._nextStatusSelector.On('LIFESTATUS_CHOOSEN', this, (eventargs) => {\r\n\t\t\t\tif (eventargs.data.LifeStatus.Id) {\r\n\t\t\t\t\tthis.Trigger('LIFESTATUS_CHOOSEN', {LifestatusId: eventargs.data.LifeStatus.Id});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget RecordId(): number {\r\n\t\treturn this._recordId;\r\n\t}\r\n\r\n\tget TypeId(): number {\r\n\t\treturn this._typeId;\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\treturn this._title;\r\n\t}\r\n\r\n\tget Records(): KnockoutObservableArray {\r\n\t\treturn this._records;\r\n\t}\r\n\r\n\tSetIsSelected(value: boolean) {\r\n\t\tthis._isSelected(value);\r\n\t}\r\n\r\n\tget IsSelected(): KnockoutObservable {\r\n\t\treturn this._isSelected;\r\n\t}\r\n\r\n\tget RecordsCount(): KnockoutComputed {\r\n\t\treturn this._recordsCount;\r\n\t}\r\n\r\n\tget NextStatusSelector(): FollowUpLifeStatuses {\r\n\t\treturn this._nextStatusSelector;\r\n\t}\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport { DEFAULT_ICONS } from \"Core/Constant\";\r\n\r\nimport { IControlParam } from 'Core/Screens/IScreen';\r\nimport { RenderModes } from 'Core/Constant';\r\nimport { TypeScreen } from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { BasketStore } from 'Core/Controls/Basket/Stores/BasketStore';\r\nimport { EVENTS as TYPE_SCREEN_EVENTS } from 'Core/Screens/TypeScreen/Events';\r\nimport { EVENTS as EDIT_SCREEN_EVENTS } from 'Core/Screens/EditScreen/Events';\r\nimport { RecordLinker } from 'Core/Components/RecordLinker/RecordLinker';\r\nimport { EVENTS } from 'Core/Controls/Basket/Events';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { EVENTS as SCREEN_EVENTS } from 'Core/Screens/Events';\r\nimport { UserVarsManager } from 'Core/UserVarsManager/UserVarsManager';\r\nimport { BasketRecord } from 'Core/Controls/Basket/BasketRecord';\r\nimport { BasketDataModel } from 'Core/Controls/Basket/Models/BasketDataModel';\r\nimport { BasketRecordModel } from 'Core/Controls/Basket/Models/BasketDataModel';\r\nimport { GeneralProperties } from 'Core/GeneralProperties/GeneralProperties';\r\nimport Config from 'Core/Controls/Basket/Configs/basket-config.json';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport ViewTemplate from 'Core/Controls/Basket/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/Basket/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Basket/Templates/Design.html';\r\nimport { LOCK_EVENTS, LockManager } from \"Core/Components/Locker/LockManager\";\r\nimport { BaseControl } from \"../BaseControl/BaseControl\";\r\n\r\nko.templates['Core/Controls/Basket/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Basket/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Basket/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Basket/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Basket extends BaseControl {\r\n private _records: KnockoutObservableArray;\r\n private _selectedRecord: KnockoutObservable;\r\n private _enableAddButton: KnockoutObservable;\r\n private _selectedRecordId: number;\r\n private _gridEntityId: number;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, Config); \r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n Init() {\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.Basket));\r\n this.AddEvent(EVENTS.BASKET_SELECTED);\r\n this._records = ko.observableArray([]);\r\n this._selectedRecord = ko.observable(null);\r\n this._enableAddButton = ko.observable(false);\r\n this._selectedRecord.subscribe((newValue) => {\r\n if (newValue) {\r\n this._selectedRecordId = newValue.RecordId;\r\n this.Trigger(EVENTS.BASKET_SELECTED, { Records: newValue.Records() });\r\n UserVarsManager.Instance.SaveBasket(this.GetFieldModel().EntityId, newValue.RecordId, this._gridEntityId);\r\n } else {\r\n this.Trigger(EVENTS.BASKET_SELECTED, { Records: [] });\r\n UserVarsManager.Instance.SaveBasket(this.GetFieldModel().EntityId, 0, this._gridEntityId);\r\n }\r\n });\r\n }\r\n\r\n NewRecord() {\r\n if (this._enableAddButton()) {\r\n const typeScreen = new TypeScreen(this.GetFieldModel().EntityId, 0, false, false, null);\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPES_NOT_FOUND, this, (eventArgs) => {\r\n\t\t\t\tnew Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPE_SELECTED, this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n\r\n this.CreateRecord(typeId, kindId);\r\n });\r\n typeScreen.Show();\r\n }\r\n }\r\n\r\n async CreateRecord(typeId: number, kindId: number) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: this.GetFieldModel().EntityId,\r\n TableTypeId: typeId,\r\n KindId: kindId,\r\n RecordId: 0,\r\n LoadAsExample: false\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n }).then((screen) => {\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, eventArgs => {\r\n this._selectedRecordId = eventArgs.data.RecordId;\r\n this.LoadData();\r\n });\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n LoadData(subjectEntityId: number = null) {\r\n BlockUI.Block({ Target: this._el });\r\n\r\n this._records([]);\r\n if (!this._gridEntityId) {\r\n this._gridEntityId = subjectEntityId;\r\n }\r\n\r\n if (!this._selectedRecordId) {\r\n var selectedRecord = UserVarsManager.Instance.GetBasket(this.GetFieldModel().EntityId, this._gridEntityId);\r\n if (selectedRecord) {\r\n this._selectedRecordId = selectedRecord;\r\n }\r\n }\r\n\r\n BasketStore.GetData({ ControlId: this.GetControlId(), SubjectEntityId: this._gridEntityId })\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .fail((error) => {\r\n var notifier = new Notifier();\r\n notifier.Failed(error.message);\r\n })\r\n .then((data: BasketDataModel) => {\r\n this._enableAddButton(data.IsAddingRecordAllowed);\r\n _.each(data.Records, (record: BasketRecordModel) => {\r\n var basketRecord = new BasketRecord(record, this._gridEntityId);\r\n this._records.push(basketRecord);\r\n\r\n if (basketRecord.RecordId === this._selectedRecordId) {\r\n this.SelectRecord(basketRecord);\r\n }\r\n\r\n basketRecord.On('LIFESTATUS_CHOOSEN', this, (eventargs) => {\r\n this.UpdateStatus(eventargs.data.LifestatusId);\r\n });\r\n });\r\n });\r\n }\r\n\r\n UpdateStatus(lifestatusId: number) {\r\n BlockUI.Block();\r\n BasketStore.UpdateStatus({\r\n EntityId: this.GetFieldModel().EntityId,\r\n RecordId: this._selectedRecord().RecordId,\r\n LifestatusId: lifestatusId\r\n }).then(() => {\r\n this.LoadData();\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail((error) => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n });\r\n }\r\n\r\n async EditRecord(basketRecord: BasketRecord) {\r\n BlockUI.Block();\r\n LockManager.Instance.TryLock(this.GetFieldModel().EntityId, basketRecord.RecordId)\r\n .then(async () => {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: this.GetFieldModel().EntityId,\r\n TableTypeId: basketRecord.TypeId,\r\n RecordId: basketRecord.RecordId,\r\n LoadAsExample: false\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n }).then((screen) => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.EntityId === this.GetFieldModel().EntityId &&\r\n eventArgs.data.RecordId === basketRecord.RecordId) {\r\n screen.Close();\r\n }\r\n });\r\n screen.On(SCREEN_EVENTS.MODAL_CLOSE, this, () => {\r\n LockManager.Instance.ReleaseLock(this.GetFieldModel().EntityId, basketRecord.RecordId);\r\n });\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, eventArgs => this.LoadData());\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_DELETED, this, eventArgs => this.RemoveRecord(eventArgs.data.RecordId));\r\n screen.ShowInModal();\r\n });\r\n }).always(() => BlockUI.Unblock());\r\n }\r\n\r\n RemoveRecord(recordId: number) {\r\n if (this._selectedRecord() && this._selectedRecord().RecordId === recordId) {\r\n this._selectedRecord(null);\r\n }\r\n\r\n var deletedRecord = _.find(this._records(), (item: BasketRecord) => {\r\n return item.RecordId === recordId\r\n });\r\n if (deletedRecord) {\r\n this._records.splice(this._records.indexOf(deletedRecord), 1);\r\n }\r\n }\r\n\r\n get Records(): KnockoutObservableArray {\r\n return this._records;\r\n }\r\n\r\n get SelectedRecord(): KnockoutObservable {\r\n return this._selectedRecord;\r\n }\r\n\r\n SelectRecord(basketRecord: BasketRecord) {\r\n if (this._selectedRecord()) {\r\n this._selectedRecord().SetIsSelected(false);\r\n }\r\n basketRecord.SetIsSelected(true);\r\n this._selectedRecord(basketRecord);\r\n }\r\n\r\n AddRecordToBasket(recordId: number, entityId: number): P.Promise {\r\n var deferredResult = P.defer();\r\n var notifier = new Notifier();\r\n\r\n if (this._selectedRecord()) {\r\n BlockUI.Block();\r\n RecordLinker.LinkRecord({\r\n MainTableId: this._model().EntityId,\r\n MainRecordId: this._selectedRecord().RecordId,\r\n LinkedTableId: entityId,\r\n LinkedRecordId: recordId\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n this._selectedRecord().Records.push(recordId);\r\n notifier.Success(NOTIFICATIONS.RECORD_ADDED_TO_BASKET);\r\n deferredResult.resolve(result.ResultObject.Sequence);\r\n });\r\n } else {\r\n notifier.Warning(NOTIFICATIONS.PLEASE_CREATE_OR_SELECT_BASKET_RECORD);\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n RemoveRecordFromBasket(recordId: number, entityId: number): P.Promise {\r\n var deferredResult = P.defer();\r\n var notifier = new Notifier();\r\n\r\n if (this._selectedRecord()) {\r\n BlockUI.Block();\r\n BasketStore.RemoveFromBasket({\r\n BasketEntityId: this._model().EntityId,\r\n BasketRecordId: this._selectedRecord().RecordId,\r\n RelatedEntityId: entityId,\r\n RelatedRecordId: recordId\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then(() => {\r\n this._selectedRecord().Records.splice(this._selectedRecord().Records.indexOf(recordId), 1);\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED_FROM_BASKET);\r\n deferredResult.resolve(null);\r\n }).fail((error) => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n });\r\n } else {\r\n notifier.Warning(NOTIFICATIONS.PLEASE_SELECT_BASKET_RECORD);\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n get EnableAddButton(): KnockoutObservable {\r\n return this._enableAddButton;\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","export var EVENTS = {\r\n\tBASKET_SELECTED: 'BASKET_SELECTED'\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport AddButtonConfig from \"Core/Controls/ButtonAdd/Configs/add-button-config.json\";\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonAdd/Templates/View.html'\r\nimport DesignTemplate from 'Core/Controls/ButtonAdd/Templates/Design.html'\r\nimport ToolbarTemplate from 'Core/Controls/ButtonAdd/Templates/ToolBar.html'\r\nimport HelpViewTemplate from 'Core/Controls/ButtonAdd/Templates/HelpView.html'\r\n\r\nko.templates['Core/Controls/ButtonAdd/Templates/ToolBar'] = ToolbarTemplate;\r\nko.templates['Core/Controls/ButtonAdd/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonAdd/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonAdd/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/ButtonAdd/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport class ButtonAdd extends BaseControl {\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, AddButtonConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tscreen.Trigger('ADD_RECORD');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.Data && value.Data.Rights) {\r\n\t\t\tvar condition = value.Data.Rights.IsAddingRecordAllowed && value.Data.Rights.IsRecordSecurityOk && this.IsEditScreenExist;\r\n\t\t\tthis._enabled(condition);\r\n\t\t}\r\n\t}\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n this.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","export class MenuItemModel {\r\n\tconstructor(public Id: number,\r\n\t\tpublic Name: string,\r\n\t\tpublic TranslatedName: string) {\r\n\t}\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport { Deserialize, GenericDeserialize } from '../../../../libs/cerialize';\r\n\r\nexport interface CopyRecordsDto {\r\n\tSubjectEntityId: Number;\r\n\tSubjectRecordId: Number;\r\n\tSubjectTypeId: Number;\r\n\r\n\tEntityIdToCopy: Number;\r\n\r\n\tRecordsToCopy: Array;\r\n\r\n\tCopyRelations: boolean,\r\n\tIsLinkToSource: boolean;\r\n\tCopyToTypeId: number;\r\n\tAliasSuffix: string;\r\n}\r\n\r\nexport interface RecordToCopyDto {\r\n\tId: Number;\r\n\tTypeId: Number;\r\n}\r\n\r\nexport class ButtonCopyApi {\r\n\r\n\tstatic CopyRecords(params: CopyRecordsDto): P.Promise>{\r\n\t\tlet deferredResult = P.defer>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/ScreenFormApi/CopyRecords',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(Deserialize(data, Array));\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import { CONTROL_TYPES } from './../../Constant';\r\nimport * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen';\r\nimport {Behavior} from 'Core/Controls/ButtonCopy/Constants/Behavior';\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {MenuItemModel} from 'Core/Controls/ButtonCopy/Models/MenuItemModel';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel'\r\nimport type { Grid } from 'Core/Controls/Grid/Grid';\r\n\r\nimport CopyButtonConfig from \"Core/Controls/ButtonCopy/Configs/copy-button-config.json\";\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonCopy/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/ButtonCopy/Templates/HelpView.html'\r\nimport DesignTemplate from 'Core/Controls/ButtonCopy/Templates/Design.html'\r\nimport ToolBarTemplate from 'Core/Controls/ButtonCopy/Templates/ToolBar.html'\r\nimport { Notifier } from '../../Common/Notifier';\r\nimport { NOTIFICATIONS } from '../../Components/Translation/Locales';\r\nimport { ButtonCopyApi, CopyRecordsDto } from './Stores/ButtonCopyApi';\r\nimport { BlockUI } from '../../Common/BlockUi';\r\n\r\nko.templates['Core/Controls/ButtonCopy/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/ButtonCopy/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonCopy/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/ButtonCopy/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/ButtonCopy/Templates/Edit'] = ViewTemplate;\r\n\r\nexport class ButtonCopy extends BaseControl {\r\n\tprivate _menuItems: KnockoutObservableArray;\r\n private _config: any;\r\n\tprivate _mainRecordId: number;\r\n\tprivate _linkToSource: KnockoutObservable;\r\n\tprivate _behavior: KnockoutObservable;\r\n\tprivate _type: KnockoutObservable;\r\n\tprivate _aliasSuffix: KnockoutObservable;\r\n\r\n\tprivate _buttonClassName: KnockoutObservable;\r\n\tprivate _iconModel = IconModel;\r\n\tprivate _isCopyingInGrid: boolean;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, CopyButtonConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\r\n this._linkToSource = ko.observable(false);\r\n this._behavior = ko.observable(null);\r\n this._type = ko.observable(null);\r\n this._aliasSuffix = ko.observable('');\r\n\t\tthis._isCopyingInGrid = false;\r\n\r\n\t\tthis.Init();\r\n\r\n\t\tthis._icon(this._model().Icon);\r\n\t\tthis._buttonClassName = ko.observable(this._iconModel.GetClasses(this._model().Icon?.FontName, this._model().Icon?.Name));\r\n\t\tthis._icon.subscribe(() => {\r\n\t\t\tthis._buttonClassName(this._iconModel.GetClasses(this._model().Icon?.FontName, this._model().Icon?.Name))\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n \r\n\t\tlet copyMenuItem = new MenuItemModel(0, 'Copy', this._labels.COPY);\r\n\t\tlet copyWithRelationMenuItem = new MenuItemModel(1, 'Copy with relation', this._labels.COPY_WITH_RELATIONS);\r\n\r\n\t\tthis._menuItems = ko.observableArray([copyMenuItem, copyWithRelationMenuItem]);\r\n\t}\r\n\r\n\tget MenuItems(): KnockoutObservableArray {\r\n\t\treturn this._menuItems;\r\n\t}\r\n\r\n\tClick(menuItem: MenuItemModel) {\r\n\t\t\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tif(menuItem.Id === 0){\r\n\t\t\t\t\tif(this._isCopyingInGrid){\r\n\t\t\t\t\t\tthis.CopyInGrid({ linkToSource: this._linkToSource() });\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tscreen.Trigger('COPY_RECORD', { linkToSource: this._linkToSource() })\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(this._isCopyingInGrid){\r\n\t\t\t\t\t\tthis.CopyInGrid({ copyRelations: true, linkToSource: this._linkToSource() });\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tscreen.Trigger('COPY_RECORD_WITH_RELATIONS', { linkToSource: this._linkToSource() });\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\tprivate ClickRootCopyBtn(data?, event?): void {\r\n\t\tconst screen = this._form.GetScreen();\r\n\t\tif(this.IsInGrid && !this._isCopyingInGrid){\r\n\t\t\tthis.Grid.EnableRecordSelection();\r\n\t\t\tthis._isCopyingInGrid = true;\t\r\n\t\t\tevent.stopPropagation();\r\n\t\t}else if (this._help.IsHelpButtonPressed()) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else if (this._behavior() === Behavior.Copy) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tif(this._isCopyingInGrid){\r\n\t\t\t\tthis.CopyInGrid({ linkToSource: this._linkToSource() });\r\n\t\t\t}else{\r\n\t\t\t\tscreen && screen.Trigger('COPY_RECORD', { linkToSource: this._linkToSource() });\r\n\t\t\t}\r\n\t\t} else if (this._behavior() === Behavior.CopyWithRelations) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tif(this._isCopyingInGrid){\r\n\t\t\t\tthis.CopyInGrid({ copyRelations: true, linkToSource: this._linkToSource() });\r\n\t\t\t}else{\r\n\t\t\t\tscreen && screen.Trigger('COPY_RECORD_WITH_RELATIONS', { linkToSource: this._linkToSource() });\r\n\t\t\t}\r\n\t\t} else if (this._behavior() === Behavior.CopyToType && this._type()) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tif(this._isCopyingInGrid){\r\n\t\t\t\tthis.CopyInGrid({ copyRelations: true, copyToType: this._type(), linkToSource: this._linkToSource(), aliasSuffix: this._aliasSuffix() });\r\n\t\t\t}else{\r\n\t\t\t\tscreen && screen.Trigger('COPY_TO_TYPE', { linkToSource: this._linkToSource(), copyToType: this._type(), aliasSuffix: this._aliasSuffix() });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync CopyInGrid({ copyRelations = false, linkToSource = false, copyToType = 0, aliasSuffix = '' }: { copyRelations?: boolean, linkToSource?: boolean, copyToType?: number, aliasSuffix?: string }){\r\n\t\tlet selectedRecords = this.Grid.GetSelectRecords();\r\n\t\tlet recordsToCopy = _.map(selectedRecords, (selectedRecord) => {\r\n\t\t\treturn {\r\n\t\t\t\tId: selectedRecord.RecordId,\r\n\t\t\t\tTypeId: selectedRecord.RecordTypeId\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tif(recordsToCopy.length != 0){\r\n\t\t\tBlockUI.Block();\r\n\t\t\tlet params: CopyRecordsDto = {\r\n\t\t\t\tSubjectEntityId: this.Screen.GetEntityId(),\r\n\t\t\t\tSubjectRecordId: this.Screen.GetRecordId(),\r\n\t\t\t\tSubjectTypeId: this.Screen.GetTableTypeId(),\r\n\t\t\t\tEntityIdToCopy: this.GridEntityId,\r\n\t\t\t\tRecordsToCopy: recordsToCopy,\r\n\t\t\t\tCopyRelations: copyRelations,\r\n\t\t\t\tIsLinkToSource: linkToSource,\r\n\t\t\t\tCopyToTypeId: copyToType,\r\n\t\t\t\tAliasSuffix: aliasSuffix\r\n\t\t\t};\r\n\r\n\t\t\tawait ButtonCopyApi.CopyRecords(params).always(()=>BlockUI.Unblock()).fail((err)=>Notifier.Failed(err.message));\r\n\r\n\t\t\tthis.Grid.DisableRecordSelection();\r\n\t\t\tthis._isCopyingInGrid = false;\r\n\r\n\t\t\tthis.Screen.Refresh();\r\n\t\t}else{\r\n\t\t\tNotifier.Warning(NOTIFICATIONS.NO_SELECTED_RECORDS);\r\n\t\t};\r\n\t}\r\n\r\n\tget GridEntityId(): number{\r\n\t\tif(this.IsConsultScreen || this.IsEditScreen){\r\n\t\t\treturn this.Grid.GetGridSubject().Entity.Metadata.Id;\r\n\t\t}\r\n\t\tif(this.IsListScreen){\r\n\t\t\treturn this.Screen.GetEntityId();\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tget Grid(): Grid{\r\n\t\tif(this._parentControl?.GetType() === CONTROL_TYPES.Grid){\r\n\t\t\treturn this._parentControl as Grid;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif(this.IsInGrid){\r\n\t\t\tthis._enabled(true);\r\n\t\t}else if (value.Data && value.Data.Rights && !value.RecordSpecsModel?.IsNewRecord) {\r\n\t\t\tthis._enabled(value.Data.Rights.IsAddingRecordAllowed && value.Data.Rights.IsEditingAllowed && value.Data.Rights.IsRecordSecurityOk);\r\n\t\t} else if (value.RecordSpecsModel.IsNewRecord) {\r\n\t\t\tthis._enabled(true);\r\n\t\t} \r\n\t}\r\n\r\n\tget IsInGrid(): boolean {\r\n\t\treturn this._parentControl?.GetType() === CONTROL_TYPES.Grid;\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n \tthis.AssignProperty('General', 'LinkToSource', this._linkToSource);\r\n \tthis.AssignProperty('General', 'Behavior', this._behavior);\r\n\t\t\tthis.AssignProperty('General', 'Type', this._type);\r\n\t\t\tthis.AssignProperty('General', 'AliasSuffix', this._aliasSuffix);\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n\t\t\t\t\t\tconst propertyValue = property[propertyName].hasOwnProperty('Value')\r\n\t\t\t\t\t\t\t? property[propertyName].Value\r\n\t\t\t\t\t\t\t: property[propertyName];\r\n\t\t\t\t\t\tpropertyHolder(propertyValue);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n} ","// Module\nvar code = \" Copy \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \\\"\\\" \";\n// Exports\nexport default code;","export const Behavior = {\r\n Copy: 'Copy',\r\n CopyWithRelations: 'CopyWithRelations',\r\n Both: 'Both',\r\n CopyToType: 'CopyToType'\r\n};","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {RenderModes} from 'Core/Constant';\r\n\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\n\r\nimport {GeneralProperties} from '../../GeneralProperties/GeneralProperties';\r\nimport SpecialScreenButtonConfig\r\n from 'Core/Controls/ButtonDashboardScreen/Configs/dashboard-screen-button-config.json';\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport ViewTemplate from './Templates/View.html';\r\nimport DesignTemplate from './Templates/Design.html';\r\nimport HelpViewTemplate from './Templates/HelpView.html';\r\nimport ToolBarTemplate from './Templates/Toolbar.html';\r\n\r\nko.templates[\"Core/Controls/ButtonDashboardScreen/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/ButtonDashboardScreen/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonDashboardScreen/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ButtonDashboardScreen/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonDashboardScreen/Templates/View\"] = ViewTemplate;\r\n\r\nexport class ButtonDashboardScreen extends BaseControl {\r\n private _config: any;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, SpecialScreenButtonConfig);\r\n\r\n this._enabled = ko.observable(this.IsDashboardScreenExist);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\r\n this.Init();\r\n }\r\n\r\n OnClick() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n } else if(this._enabled()){\r\n const screen = this._form.GetScreen();\r\n screen.Trigger(\"SHOW_DASHBOARD_SCREEN\");\r\n }\r\n }\r\n\r\n private Init() {\r\n this.ApplyProperties();\r\n }\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n this.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport DeleteButtonConfig from \"Core/Controls/ButtonDelete/Configs/delete-button-config.json\";\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonDelete/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/ButtonDelete/Templates/HelpView.html'\r\nimport DesignTemplate from 'Core/Controls/ButtonDelete/Templates/Design.html'\r\nimport ToolBarTemplate from 'Core/Controls/ButtonDelete/Templates/ToolBar.html'\r\n\r\nko.templates['Core/Controls/ButtonDelete/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/ButtonDelete/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonDelete/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/ButtonDelete/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonDelete/Templates/Design'] = DesignTemplate;\r\n\r\nexport class ButtonDelete extends BaseControl {\r\n\tprivate _mainRecordId: number;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, DeleteButtonConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void { \r\n this.ApplyProperties();\r\n\t}\r\n\r\n\tClick() {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.IsDisabledByCondition) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar screen = this._form.GetScreen();\r\n\t\tif (screen) {\r\n\t\t\tscreen.Trigger('DELETE_RECORD');\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.RecordSpecsModel && value.RecordSpecsModel.IsNewRecord) {\r\n\t\t\tthis._model().IsDisabledByCondition = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (value.Data && value.Data.Rights) {\r\n\t\t\tvar enabledCondition = value.Data.Rights.IsDeletingAllowed && value.Data.Rights.IsRecordSecurityOk;\r\n\t\t\tthis._model().IsDisabledByCondition = !enabledCondition;\r\n\t\t}\r\n\t}\r\n\r\n\tSetHideCaption(data: boolean) {\r\n\t\tthis.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n\t}\r\n\r\n\tGetHideCaption(): boolean {\r\n\t\treturn this.HideCaption();\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n\t\t\tthis.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n\t\t\tthis.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n} ","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport EditButtonConfig from \"Core/Controls/ButtonEdit/Configs/edit-button-config.json\";\r\n\r\nimport ViewTemplate from \"Core/Controls/ButtonEdit/Templates/View.html\"\r\nimport HelpViewTemplate from \"Core/Controls/ButtonEdit/Templates/HelpView.html\"\r\nimport DesignTemplate from \"Core/Controls/ButtonEdit/Templates/Design.html\"\r\nimport ToolbarTemplate from \"Core/Controls/ButtonEdit/Templates/ToolBar.html\"\r\n\r\nko.templates[\"Core/Controls/ButtonEdit/Templates/ToolBar\"] = ToolbarTemplate;\r\nko.templates[\"Core/Controls/ButtonEdit/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonEdit/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonEdit/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonEdit/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonEdit extends BaseControl {\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, EditButtonConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties()\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tscreen.Trigger('EDIT_RECORD');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.Data && value.Data.Rights) {\r\n\t\t\tvar condition = value.Data.Rights.IsEditingAllowed && value.Data.Rights.IsRecordSecurityOk && this.IsEditScreenExist;\r\n\t\t\tthis._enabled(condition);\r\n\t\t}\r\n\t}\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n this.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from \"Core/Controls/BaseControl/BaseControl\";\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { UserVarsManager } from 'Core/UserVarsManager/UserVarsManager';\r\nimport { NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\n\r\nimport FavoriteButtonConfig from \"Core/Controls/ButtonFavorite/Configs/favorite-button-config.json\";\r\nimport ViewTemplate from \"Core/Controls/ButtonFavorite/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonFavorite/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/ButtonFavorite/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ButtonFavorite/Templates/Design.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonFavorite/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/ButtonFavorite/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonFavorite/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonFavorite/Templates/ToolBar\"] = ToolBarTemplate;\r\nexport class ButtonFavorite extends BaseControl {\r\n\tprivate _isFavorite: KnockoutObservable;\r\n\tprivate _isEnabled: KnockoutObservable;\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, FavoriteButtonConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis._isFavorite = ko.observable(false);\r\n\t\tthis._isEnabled = ko.observable(false);\r\n this.ApplyProperties();\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tvar self = this;\r\n\t\t\tif (this._isEnabled()) {\r\n\t\t\t\tif (self._isFavorite()) {\r\n\t\t\t\t\tUserVarsManager.Instance.RemoveFromFavorites(\r\n\t\t\t\t\t\tscreen.GetRecordId(),\r\n\t\t\t\t\t\tscreen.GetEntityId(),\r\n\t\t\t\t\t\tscreen.GetTableTypeId()\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tself._isFavorite(false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tUserVarsManager.Instance.AddToFavorites(\r\n\t\t\t\t\t\tscreen.GetRecordId(),\r\n\t\t\t\t\t\tscreen.GetEntityId(),\r\n\t\t\t\t\t\tscreen.GetTableTypeId()\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tself._isFavorite(true);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tNotifier.Warning(NOTIFICATIONS.PLEASE_SELECT_ANY_RECORD);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tvar screen = this._form.GetScreen();\r\n\t\tlet isRecordOnScreen = screen.GetRecordId() !== 0;\r\n\t\tthis._isEnabled(isRecordOnScreen);\r\n\r\n\t\tvar isInFavorites = UserVarsManager.Instance.IsInFavorites(\r\n\t\t\tscreen.GetRecordId(),\r\n\t\t\tscreen.GetEntityId(),\r\n\t\t\tscreen.GetTableTypeId()\r\n\t\t);\r\n\t\tthis._isFavorite(isInFavorites);\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" Favorite \";\n// Exports\nexport default code;","import {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {FlowOperationModel} from \"../Response/FlowOperationModel\";\r\nimport * as ko from 'knockout'\r\n\r\nexport class FlowRecordModel {\r\n EntityId:number;\r\n RecordId: number;\r\n TypeId: number;\r\n Id: number;\r\n Icon: IconModel;\r\n Name: string;\r\n FlowOperations: FlowOperationModel[];\r\n FlowOperationsSelectID: number;\r\n FlowOperationsSelect: KnockoutObservable\r\n\r\n constructor() {\r\n this.FlowOperations = [];\r\n this.FlowOperationsSelect = ko.observable(null);\r\n }\r\n Init(){\r\n this.FlowOperationsSelect(_.find(this.FlowOperations, select => select.Id == this.FlowOperationsSelectID ));\r\n }\r\n}","import * as ko from 'knockout'\r\nimport {Event} from 'Core/Common/Event';\r\nimport {FlowFolderModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderModel\";\r\nimport {FlowFolderStore} from \"Core/Components/ProgressBar/Stores/FlowFolderStore\";\r\nimport {FlowRecordModel} from \"Core/Components/ProgressBar/Models/View/FlowRecordModel\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport type {IDeleteFlowRecordRequestModel} from \"Core/Components/ProgressBar/Models/Request/IDeleteFlowRecordRequestModel\";\r\nimport type {IUpdateFlowRecordRequestModel} from \"Core/Components/ProgressBar/Models/Request/IUpdateFlowRecordRequestModel\";\r\nimport {\r\n ConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {FONT_NAME} from \"Core/Constant\";\r\n\r\nimport Template from 'Core/Controls/ButtonFollowUp/Templates/FlowFolderView.html';\r\nko.templates['Core/Controls/ButtonFollowUp/Templates/FlowFolderView'] = Template;\r\n\r\nexport class FlowFolder extends Event{\r\n private _isFlowFolder: boolean;\r\n private _flowFolder: KnockoutObservableArray\r\n private _entityId: number;\r\n private _labels = LABELS;\r\n\r\n constructor() {\r\n super();\r\n this._isFlowFolder = null;\r\n this._flowFolder = ko.observableArray([]);\r\n this._entityId = null;\r\n\r\n this.Trigger('CLOSE_FOLLOW_UP_LIFE_STATUSES');\r\n }\r\n\r\n Init(isFlowFolder:boolean, entityId, flowFolderModel?: FlowFolderModel ){\r\n this._isFlowFolder = isFlowFolder;\r\n\r\n if (this._isFlowFolder){\r\n this._entityId = entityId;\r\n this.FlowFolderInit(flowFolderModel);\r\n }\r\n }\r\n\r\n FlowFolderInit(flowFolderModel: FlowFolderModel){\r\n if (!!flowFolderModel){\r\n _.each(flowFolderModel.FlowItems, item => {\r\n let flowRecordModel = new FlowRecordModel();\r\n flowRecordModel.EntityId = item.EntityId;\r\n flowRecordModel.RecordId = item.RecordId;\r\n flowRecordModel.TypeId = item.TypeId;\r\n flowRecordModel.Id = item.Id;\r\n flowRecordModel.Icon = this.SelectIcon(item.Icon);\r\n flowRecordModel.Name = item.Name;\r\n flowRecordModel.FlowOperationsSelectID = item.FlowOperationId;\r\n\r\n flowRecordModel.FlowOperations = flowFolderModel.FlowOperations;\r\n flowRecordModel.Init();\r\n this._flowFolder.push(flowRecordModel);\r\n })\r\n }\r\n\r\n }\r\n\r\n SelectIcon(model: IconModel): Icon {\r\n if (model && model.Id > 0) {\r\n return new Icon(model);\r\n }\r\n\r\n const defaultIconModel = new IconModel();\r\n\r\n defaultIconModel.Name = 'fa-file';\r\n defaultIconModel.FontName = FONT_NAME.FONT_AWESOME;\r\n defaultIconModel.IsIcon = true;\r\n defaultIconModel.IsImage = false;\r\n\r\n return new Icon(defaultIconModel);\r\n }\r\n\r\n Click(data, event) {\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n this.Close();\r\n }\r\n\r\n ChangedOperations(value, flowModel, event){\r\n if (event.originalEvent) { //user changed\r\n const params: IUpdateFlowRecordRequestModel = {\r\n EntityId: this._entityId,\r\n FlowRecordId: flowModel.Id,\r\n FlowOperationId: value().Id\r\n }\r\n FlowFolderStore.UpdateFlowRecord(params)\r\n .then(result => result);\r\n }\r\n }\r\n\r\n DeleteFlowFolderItem(flowRecord){\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: `${CONFIRMATIONS.DO_YOU_WANT_TO_DELETE}?`,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n })\r\n\r\n const params: IDeleteFlowRecordRequestModel = {\r\n EntityId: this._entityId,\r\n FlowRecordId: flowRecord.Id\r\n }\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, (eventArgs) => {\r\n FlowFolderStore.DeleteFlowRecord(params)\r\n .then(()=> {\r\n this._flowFolder.splice(this._flowFolder().findIndex(record => record.Id == flowRecord.Id), 1)\r\n })\r\n .fail(error => {})\r\n })\r\n confirmationDialog.Show();\r\n }\r\n\r\n Close() {\r\n this.Trigger('CLOSE_FOLLOW_UP_LIFE_STATUSES',{data: null})\r\n }\r\n\r\n AfterRender(el: HTMLElement): void{\r\n\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Controls/ButtonFollowUp/Templates/FlowFolderView';\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport {MemoOperationModel} from \"../Response/MemoOperationModel\";\r\n\r\nexport class MemoRecordModel {\r\n EntityId: number;\r\n RecordId: number;\r\n Memo: KnockoutObservable;\r\n MemoPlaintext?: string;\r\n MemoTranslations: KnockoutObservableArray;\r\n Kseq?: number;\r\n FlowMemosOperations: MemoOperationModel[];\r\n FlowMemosOperationsSelectID: number;\r\n FlowMemosOperationsSelect: KnockoutObservable\r\n\r\n constructor() {\r\n this.Memo = ko.observable(null);\r\n this.MemoTranslations = ko.observableArray([]);\r\n\r\n this.FlowMemosOperations = [];\r\n this.FlowMemosOperationsSelect = ko.observable(null);\r\n }\r\n\r\n Init(){\r\n this.FlowMemosOperationsSelect(_.find(this.FlowMemosOperations, select => select.Id == this.FlowMemosOperationsSelectID ));\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Guid} from 'Core/Common/Guid';\r\n\r\nimport _ from \"underscore\";\r\nimport {\r\n ConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {LABELS, CONFIRMATIONS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {IDeleteMemoRecordRequestModel} from \"Core/Components/ProgressBar/Models/Request/IDeleteMemoRecordRequestModel\";\r\nimport {FlowFolderMemosModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderMemosModel\";\r\nimport {MemoRecordModel} from \"Core/Components/ProgressBar/Models/View/MemoRecordModel\";\r\nimport {ICreateMemoRecordRequestModel} from \"Core/Components/ProgressBar/Models/Request/ICreateMemoRecordRequestModel\";\r\nimport {FlowFolderStore} from \"Core/Components/ProgressBar/Stores/FlowFolderStore\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {IUpdateFlowMemoRecordRequestModel} from \"Core/Components/ProgressBar/Models/Request/IUpdateFlowMemoRecordRequestModel\";\r\nimport {ScreenParamsModel} from \"Core/Controls/ButtonFollowUp/Models/ScreenParamsModel\";\r\n\r\nimport AddMemoTemplate from \"Core/Controls/ButtonFollowUp/Templates/AddMemo.html\";\r\nimport MemoItems from 'Core/Controls/ButtonFollowUp/Templates/MemoItems.html';\r\nimport {BlockUI, TranslationManager} from '../Grid/BaseGrid/Index';\r\nimport {IUpdateFlowOperationRecordRequestModel} from \"Core/Components/ProgressBar/Models/Request/IUpdateFlowOperationRecordRequestModel\";\r\nimport {TranslationFieldEditor} from \"../../Components/TranslationFieldEditor/TranslationFieldEditor\";\r\nimport {TranslationModel} from \"../BaseControl/Models/TranslationModel\";\r\nimport {LanguageModel} from \"../BaseControl/Models/LanguageModel\";\r\nimport {GlobalManager, GLOBALS} from \"../../GlobalManager/GlobalManager\";\r\n\r\n\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/AddMemo\"] = AddMemoTemplate;\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/MemoItems\"] = MemoItems;\r\n\r\nexport class FlowFolderMemos extends Event {\r\n private _modal: Modal;\r\n private _guid: string;\r\n private _memoEditor: any;\r\n private _memo: KnockoutObservable;\r\n private _initialMemo: KnockoutObservable;\r\n private _isEditMode: KnockoutObservable;\r\n private _entityId: number;\r\n private _editMemoEntityId: KnockoutObservable;\r\n private _editMemoIndex: KnockoutObservable;\r\n private _editMemoKseq: KnockoutObservable;\r\n private _oldEditMemo: KnockoutObservable;\r\n private _isMemoTranslatable: boolean;\r\n private _recordId: number;\r\n private _selectedValueId: number;\r\n private _flowFolderMemoArrays: KnockoutObservableArray;\r\n private _translationFieldEditor: TranslationFieldEditor;\r\n private _labels = LABELS;\r\n private _originalValue: string;\r\n private _oldMemoTranslations: KnockoutObservableArray;\r\n\r\n constructor(flowFolderMemosModel: FlowFolderMemosModel, screenParams: ScreenParamsModel) {\r\n super();\r\n this._guid = Guid.NewGuid();\r\n this._memo = ko.observable(null);\r\n this._initialMemo = ko.observable(null);\r\n this._isEditMode = ko.observable(null);\r\n this._editMemoEntityId = ko.observable(null);\r\n this._editMemoIndex = ko.observable(null);\r\n this._editMemoKseq = ko.observable(null);\r\n this._oldEditMemo = ko.observable(null);\r\n this._isMemoTranslatable = flowFolderMemosModel.IsMemoTranslatable;\r\n this._recordId = screenParams.RecordId;\r\n this._entityId = screenParams.EntityId;\r\n this._flowFolderMemoArrays = ko.observableArray([]);\r\n this._oldMemoTranslations = ko.observableArray([]);\r\n this._translationFieldEditor = new TranslationFieldEditor();\r\n this.Trigger('DELETE_FLOW_FOLDER_MEMO_RECORD');\r\n this.Trigger('CREATE_FLOW_FOLDER_MEMO_RECORD');\r\n this.Trigger('CHANGE_FLOW_FOLDER_MEMO_RECORD');\r\n this.FlowFolderMemosInit(flowFolderMemosModel);\r\n }\r\n\r\n GetTemplate() {\r\n return MemoItems;\r\n }\r\n\r\n AfterRender(el: HTMLElement): void{\r\n\r\n }\r\n\r\n FlowFolderMemosInit(flowFolderMemosModel: FlowFolderMemosModel){\r\n if (!!flowFolderMemosModel){\r\n _.each(flowFolderMemosModel.MemoItems, memoItem => {\r\n let memoRecordModel = new MemoRecordModel();\r\n memoRecordModel.Kseq = memoItem.Kseq;\r\n memoRecordModel.RecordId = memoItem.RecordId;\r\n memoRecordModel.EntityId = memoItem.EntityId;\r\n\r\n memoRecordModel.Memo(memoItem.Memo);\r\n memoRecordModel.MemoTranslations(memoItem.MemoTranslations);\r\n\r\n memoRecordModel.FlowMemosOperationsSelectID = memoItem.FlowMemosOperationId;\r\n memoRecordModel.FlowMemosOperations = memoItem.FlowMemosOperations;\r\n\r\n memoRecordModel.Init();\r\n\r\n this._flowFolderMemoArrays.push(memoRecordModel);\r\n });\r\n }\r\n }\r\n\r\n ShowInModal() {\r\n let self = this;\r\n this._modal = new Modal({\r\n addClass: 'addMemoModal',\r\n width: '60vw',\r\n height: '60vh',\r\n closeOnEsc: false,\r\n onOpen: function () {\r\n $(this.closeButton[0]).off('click');\r\n this.closeButton[0].addEventListener('click', self.CloseMemoModal.bind(self, false));\r\n }\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n }\r\n\r\n ShowInMemoModal() {\r\n this.AddMemoMod();\r\n this.ShowInModal();\r\n\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n let memoTranslations = [], translations = this._translationFieldEditor.GetTranslations(false);\r\n\r\n _.each(translations, translation => {\r\n\r\n const selectedLanguage = TranslationManager.Instance.GetLanguageById(translation.LanguageId);\r\n\r\n let translationModel = new TranslationModel();\r\n translationModel.Translation = translation.Value;\r\n translationModel.Language = new LanguageModel(selectedLanguage.Id, selectedLanguage.Name, selectedLanguage.ShortName, Number(selectedLanguage.Enabled), selectedLanguage.Flag);\r\n translationModel.Selected = desktopLanguage === selectedLanguage.ShortName;\r\n\r\n memoTranslations.push(translationModel);\r\n });\r\n\r\n this._oldMemoTranslations(memoTranslations);\r\n }\r\n\r\n CloseMemoModal(isSave: boolean) {\r\n let newMemo = this._isMemoTranslatable ? this._translationFieldEditor.GetDefaultTranslation().Value : this._memo();\r\n let oldMemo = this._oldEditMemo();\r\n\r\n let currentTranslations = this._translationFieldEditor.GetTranslations(false), translationsHaveChanges = false, oldMemoTranslations = this._oldMemoTranslations();\r\n _.each(currentTranslations, translation => {\r\n if(translation.Value || oldMemoTranslations[currentTranslations.indexOf(translation)].Translation){\r\n if(translation.Value != oldMemoTranslations[currentTranslations.indexOf(translation)].Translation) {\r\n translationsHaveChanges = true;\r\n }\r\n }\r\n });\r\n\r\n if (!isSave && (newMemo !== oldMemo || translationsHaveChanges)){\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n if (this._modal) {\r\n this.Trigger('CHANGE_FLOW_FOLDER_MEMO_RECORD');\r\n this._modal.Close();\r\n }\r\n });\r\n confirmationDialog.Show();\r\n\r\n } else {\r\n if (this._modal) {\r\n this.Trigger('CHANGE_FLOW_FOLDER_MEMO_RECORD');\r\n this._modal.Close();\r\n }\r\n }\r\n }\r\n\r\n private GetLanguages() {\r\n if (this._isMemoTranslatable) {\r\n if (this._translationFieldEditor.TranslationItemsList.length == 0) {\r\n this._translationFieldEditor.LoadTranslationItems();\r\n }\r\n const languages = this._translationFieldEditor.TranslationItemsList.map(translation => translation.Language);\r\n const activeLanguage = this._translationFieldEditor.ActiveTranslation.Language;\r\n\r\n return {\r\n List: languages,\r\n Active: activeLanguage\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private OnChangeLanguage(id: number) {\r\n const selectedTranslation = this._translationFieldEditor.GetTranslationById(id);\r\n this._translationFieldEditor.SelectTranslation(selectedTranslation);\r\n\r\n const selectedValue = _.unescape(selectedTranslation.Value());\r\n this._memoEditor.setContent(selectedValue || '');\r\n this._memo(selectedValue);\r\n }\r\n\r\n EditMemo(data: MemoRecordModel) {\r\n this._isEditMode(true);\r\n\r\n this._editMemoEntityId(null);\r\n this._editMemoKseq(null);\r\n this._oldEditMemo(null);\r\n\r\n if (data.Memo){\r\n this._editMemoEntityId(data.EntityId);\r\n this._editMemoKseq(data.Kseq);\r\n this._oldEditMemo(data.Memo());\r\n this._oldMemoTranslations(data.MemoTranslations());\r\n this.SetMemo(data);\r\n }\r\n this.ShowInModal();\r\n }\r\n\r\n AddMemoMod(){\r\n this._isEditMode(false);\r\n this._memo(null);\r\n this._oldEditMemo('');\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Controls/ButtonFollowUp/Templates/AddMemo';\r\n }\r\n\r\n AfterChangeMemo(content) {\r\n this._memo(content);\r\n\r\n const currentValue = this._memo();\r\n\r\n if (this._isMemoTranslatable) {\r\n this._translationFieldEditor.ActiveTranslation.Value(currentValue);\r\n }\r\n }\r\n\r\n AfterInitMemo(editor) {\r\n this._memoEditor = editor;\r\n this._memoEditor.setContent(this._memo() || '');\r\n }\r\n\r\n SetMemo(data) {\r\n if(data) {\r\n this._initialMemo(this._memo());\r\n this._originalValue = data.Memo() && _.unescape(data.Memo()) || '';\r\n\r\n let currentValue = this._originalValue;\r\n\r\n if (this._isMemoTranslatable) {\r\n\r\n if(!this._translationFieldEditor) {\r\n this._translationFieldEditor = new TranslationFieldEditor();\r\n }\r\n\r\n const memoTranslations = _.map(data.MemoTranslations(), (memoItem: TranslationModel) => {\r\n return {\r\n LanguageId: memoItem.Language.K_Language,\r\n Value: memoItem.Translation\r\n }\r\n });\r\n\r\n const translation = TranslationManager.Instance.GetTranslation(data.Memo(), memoTranslations);\r\n\r\n currentValue = translation.TranslatedValue || translation.Value;\r\n\r\n this._translationFieldEditor.LoadTranslationItems();\r\n this._translationFieldEditor.SetTranslations(memoTranslations, data.Memo() === null ? '' : data.Memo());\r\n this._translationFieldEditor.SetActiveTranslation(translation.Language.Id);\r\n }\r\n\r\n this._memo(_.unescape(currentValue));\r\n\r\n if (this._memoEditor) {\r\n this._memoEditor.setContent(this._memo() || '');\r\n }\r\n }\r\n }\r\n\r\n GetUnescapeMemo(memo, memoTranslations): string {\r\n const flowMemoTranslations = _.map(memoTranslations(), (memoItem: TranslationModel) => {\r\n return {\r\n LanguageId: memoItem.Language.K_Language,\r\n Value: memoItem.Translation\r\n }\r\n });\r\n\r\n const translation = TranslationManager.Instance.GetTranslation(memo(), flowMemoTranslations);\r\n return _.unescape(translation.TranslatedValue);\r\n }\r\n\r\n GetOptionsMemoTooltip(content, translations){\r\n let isMobile = MobileChecker.IsMobile();\r\n\r\n let options = {};\r\n if (isMobile){\r\n options = {};\r\n } else {\r\n options = {\r\n content: this.GetUnescapeMemo(content, translations),\r\n position: {x: 'left', y: 'center'},\r\n outside: 'x'\r\n };\r\n }\r\n\r\n return options;\r\n }\r\n\r\n get MemoHasChanges() {\r\n return this._memo() !== this._initialMemo();\r\n }\r\n\r\n SaveMemoData(data){\r\n const memo = this._isMemoTranslatable ? this._translationFieldEditor.GetDefaultTranslation().Value : this._memo(),\r\n desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n let memoTranslations = [], translations = this._translationFieldEditor.GetTranslations(false);\r\n\r\n _.each(translations, translation => {\r\n\r\n const selectedLanguage = TranslationManager.Instance.GetLanguageById(translation.LanguageId);\r\n\r\n let translationModel = new TranslationModel();\r\n translationModel.Translation = translation.Value;\r\n translationModel.Language = new LanguageModel(selectedLanguage.Id, selectedLanguage.Name, selectedLanguage.ShortName, Number(selectedLanguage.Enabled), selectedLanguage.Flag);\r\n translationModel.Selected = desktopLanguage === selectedLanguage.ShortName;\r\n\r\n memoTranslations.push(translationModel);\r\n });\r\n\r\n if (this._isEditMode()){\r\n\r\n let params: IUpdateFlowMemoRecordRequestModel = {\r\n EntityId: this._editMemoEntityId(),\r\n Kseq: this._editMemoKseq(),\r\n Memo: memo,\r\n MemoTranslations: memoTranslations\r\n };\r\n this._editMemoIndex(null);\r\n\r\n let currentTranslations = this._translationFieldEditor.GetTranslations(false), translationsHaveChanges = false, oldMemoTranslations = this._oldMemoTranslations();\r\n _.each(currentTranslations, translation => {\r\n if(translation.Value !== oldMemoTranslations[currentTranslations.indexOf(translation)].Translation) {\r\n translationsHaveChanges = true;\r\n }\r\n });\r\n\r\n if (this._oldEditMemo() !== memo || translationsHaveChanges){\r\n BlockUI.Block();\r\n FlowFolderStore.UpdateFlowMemoRecord(params)\r\n .always(()=>BlockUI.Unblock())\r\n .then(data => {\r\n this._editMemoIndex(this._flowFolderMemoArrays().findIndex(record => record.Kseq == this._editMemoKseq()));\r\n _.each(this._flowFolderMemoArrays(), (record, index)=> {\r\n if (index === this._editMemoIndex()){\r\n record.Memo(memo);\r\n record.MemoTranslations(memoTranslations);\r\n }\r\n });\r\n this.CloseMemoModal(true);\r\n new Notifier().Success(NOTIFICATIONS.DATA_SAVED);\r\n })\r\n } else {\r\n new Notifier().Warning('No changes');\r\n }\r\n\r\n } else {\r\n\r\n let params: ICreateMemoRecordRequestModel = {\r\n EntityId: this._entityId,\r\n RecordId: this._recordId,\r\n Memo: memo,\r\n MemoTranslations: memoTranslations\r\n };\r\n\r\n FlowFolderStore.CreateFlowMemo(params)\r\n .then( data => {\r\n if (data){\r\n BlockUI.Block();\r\n FlowFolderStore.GetFlowMemo({EntityId: this._entityId, Kseq: data})\r\n .always(()=>BlockUI.Unblock())\r\n .then(memoData => {\r\n let memoRecordModel = new MemoRecordModel();\r\n memoRecordModel.RecordId = memoData.RecordId;\r\n memoRecordModel.EntityId = memoData.EntityId;\r\n memoRecordModel.Kseq = memoData.Kseq;\r\n\r\n memoRecordModel.Memo(memoData.Memo);\r\n memoRecordModel.MemoPlaintext = memoData.MemoPlaintext;\r\n memoRecordModel.MemoTranslations(memoData.MemoTranslations);\r\n\r\n memoRecordModel.FlowMemosOperations = memoData.FlowMemosOperations;\r\n memoRecordModel.FlowMemosOperationsSelectID = memoData.FlowMemosOperationId;\r\n\r\n this._flowFolderMemoArrays.unshift(memoRecordModel);\r\n this.CloseMemoModal(true);\r\n new Notifier().Success(NOTIFICATIONS.DATA_SAVED);\r\n })\r\n }\r\n\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message);\r\n })\r\n }\r\n }\r\n\r\n ChangedMemosOperations(value, flowMemoModel, event){\r\n if (event.originalEvent) { //user changed\r\n const params: IUpdateFlowOperationRecordRequestModel = {\r\n EntityId: this._entityId,\r\n Kseq: flowMemoModel.Kseq,\r\n FlowMemosOperationId: value().Id\r\n }\r\n\r\n BlockUI.Block();\r\n FlowFolderStore.UpdateFlowOperationRecord(params)\r\n .always(() => BlockUI.Unblock());\r\n }\r\n }\r\n\r\n DeleteMemoItem(memoRecord){\r\n const params: IDeleteMemoRecordRequestModel = {\r\n EntityId: memoRecord.EntityId,\r\n Kseq: memoRecord.Kseq\r\n }\r\n\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: `${CONFIRMATIONS.DO_YOU_WANT_TO_DELETE}?`,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n FlowFolderStore.DeleteFlowMemo(params)\r\n .then(data => {\r\n this._flowFolderMemoArrays.splice(this._flowFolderMemoArrays().findIndex(record => record.Kseq === params.Kseq), 1);\r\n this.Trigger('DELETE_FLOW_FOLDER_MEMO_RECORD', {data: null});\r\n new Notifier().Success(LABELS.RECORD_DELETED_LABEL);\r\n })\r\n });\r\n confirmationDialog.Show();\r\n }\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {FollowUpStore} from \"Core/Controls/ButtonFollowUp/Stores/FollowUpStore\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {MutationObserverConfig, RepositionModalObserver} from \"Core/Common/RepositionModalObserver\";\r\nimport {LifeStatusGroupEnum, LifeStatusGroups} from \"Core/Common/Enums/LifeStatusGroups\";\r\nimport {PromptDialog, Types} from 'Core/Components/Dialogs/PromptDialog/PromptDialog';\r\n\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {\r\n\tConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n\tEVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n\tTypes as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog'\r\n\r\nimport {LifeStatusSimpleModel} from \"./Models/LifestatusSimpleModel\";\r\nimport {FollowUpOptionModel} from \"./Models/FollowUpOptionModel\";\r\nimport {LIFE_STATUS_GROUPS} from \"../../Constant\";\r\n\r\nimport {FlowFolderMemos} from \"Core/Controls/ButtonFollowUp/FlowFolderMemos\";\r\n\r\nimport {FlowFolderModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderModel\";\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {FlowFolderMemosModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderMemosModel\";\r\nimport {FlowFolder} from \"./FlowFolder\";\r\nimport {ScreenParamsModel} from \"Core/Controls/ButtonFollowUp/Models/ScreenParamsModel\";\r\nimport {LifeStatusesGeneralModel} from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel\";\r\nimport {FlowFolderStore} from \"Core/Components/ProgressBar/Stores/FlowFolderStore\";\r\n\r\nimport LifeStatuses from \"Core/Controls/ButtonFollowUp/Templates/LifeStatuses.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/LifeStatuses\"] = LifeStatuses;\r\n\r\nexport class FollowUpLifeStatuses extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _options: KnockoutObservableArray;\r\n\tprivate _selectedOption: KnockoutObservable;\r\n\tprivate _childOption: FollowUpOptionModel;\r\n\tprivate _selectedParentOption: KnockoutObservable;\r\n\tprivate _parentOption: FollowUpOptionModel;\r\n\tprivate _caption: KnockoutObservable;\r\n private _clickedChildId: KnockoutObservable;\r\n\tprivate _labels = LABELS;\r\n\tprivate _isFlowFolder: boolean;\r\n\tprivate _isFollowUpDisabled: boolean;\r\n\tprivate _disabledReason: string;\r\n\tprivate _entityId: number;\r\n\tprivate _recordId: number;\r\n\tprivate _retireChildren: boolean;\r\n\tprivate _flowFolder: FlowFolder;\r\n\tprivate _flowFolderMemos: KnockoutObservable;\r\n\tprivate _observer: RepositionModalObserver;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis._options = ko.observableArray([]);\r\n\t\tthis._selectedOption = ko.observable(null);\r\n\t\tthis._caption = ko.observable(null);\r\n\t\tthis._selectedParentOption = ko.observable(null);\r\n this._clickedChildId = ko.observable(null);\r\n this._isFlowFolder = null;\r\n\t\tthis._isFollowUpDisabled = null;\r\n\t\tthis._disabledReason = null;\r\n\t\tthis._entityId = null;\r\n\t\tthis._recordId = null;\r\n\t\tthis._retireChildren = false;\r\n\t\tthis._flowFolder = null;\r\n\t\tthis._flowFolderMemos = ko.observable(null);\r\n\t\tthis._observer = null;\r\n\r\n\t\tthis.AddEvent('LIFESTATUS_CHOOSEN');\r\n\t\tthis.AddEvent('PARENT_LIFESTATUS_CHOOSEN');\r\n\t\tthis.AddEvent('CHILD_LIFESTATUS_CHOOSEN');\r\n this.AddEvent('DONE');\r\n\r\n }\r\n\r\n get IsCurrentDisabled(){\r\n\t\treturn this._selectedParentOption() || this._selectedOption().LifeStatuses.CurrentLifeStatus.IsFollowUpDisabled;\r\n\t}\r\n\r\n\tFlowMemoTab(){\r\n\t\tBlockUI.Block();\r\n\t\tFlowFolderStore.GetFlowMemos({EntityId: this._entityId, RecordId: this._recordId})\r\n\t\t\t.always(()=>BlockUI.Unblock())\r\n\t\t\t.then(data => {\r\n\t\t\t\tlet flowFolderMemosModel = new FlowFolderMemosModel();\r\n\r\n\t\t\t\tflowFolderMemosModel.IsMemoTranslatable = data.IsMemoTranslatable;\r\n\t\t\t\tflowFolderMemosModel.MemoItems = data.MemoItemModels;\r\n\r\n\t\t\t\tthis._flowFolderMemos(new FlowFolderMemos(flowFolderMemosModel, {EntityId: this._entityId, RecordId: this._recordId}));\r\n\t\t\t\tthis._flowFolderMemos().On('DELETE_FLOW_FOLDER_MEMO_RECORD', this, (eventArgs)=> {\r\n\t\t\t\t\tif (this._modal){\r\n\t\t\t\t\t\tthis._modal.OneRepositionModal();\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\tthis._flowFolderMemos().On('CHANGE_FLOW_FOLDER_MEMO_RECORD', this, (eventArgs)=> {\r\n\t\t\t\t\tif (this._modal){\r\n\t\t\t\t\t\tthis._modal.OneRepositionModal();\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\tShowInModal() {\r\n\t\tlet self = this;\r\n\t\tthis._modal = new Modal({\r\n\t\t\tminWidth: 350,\r\n\t\t\tminHeight: 150,\r\n\t\t\tmaxHeight: '85vh',\r\n\t\t\tmaxWidth: '60vw',\r\n\t\t\tcloseOnClick: 'overlay',\r\n\t\t\tblockScroll: true,\r\n\t\t\tcloseOnEsc: false,\r\n\t\t\tonOpen: function () {\r\n\t\t\t\tconst target: HTMLElement = this.wrapper.find('.jBox-content')[0];\r\n\t\t\t\tconst mutationObserverConfig: MutationObserverConfig = {\r\n\t\t\t\t\tattributes: true,\r\n\t\t\t\t\tchildList: true,\r\n\t\t\t\t\tcharacterData: true,\r\n\t\t\t\t\tsubtree: true,\r\n\t\t\t\t}\r\n\t\t\t\tself._observer = new RepositionModalObserver(target, mutationObserverConfig);\r\n\t\t\t}\r\n\t\t}, false);\r\n\t\tthis._modal.One('CLOSE', this, () => { this.Close() });\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t\tthis._modal.Show();\r\n\r\n\t}\r\n\r\n\tClose() {\r\n\t\tif (this._modal) {\r\n\t\t\tthis._observer && this._observer.Disconnect();\r\n\t\t\tthis._modal.Close();\r\n\t\t\tthis.Off(\"LIFESTATUS_CHOOSEN\");\r\n\t\t\tthis.Off(\"PARENT_LIFESTATUS_CHOOSEN\");\r\n\t\t\tthis.Off(\"CHILD_LIFESTATUS_CHOOSEN\");\r\n\t\t\tthis.Off(\"DONE\");\r\n\t\t\tif (this._selectedParentOption() === this._parentOption){\r\n\t\t\t\tthis._clickedChildId(null);\r\n\t\t\t\tthis._selectedParentOption(null);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tInitFlowFolder(isFlowFolder: boolean, _entityId: number, flowFolderModel?: FlowFolderModel, followUpData?: LifeStatusesGeneralModel){\r\n\t\tthis._isFlowFolder = isFlowFolder;\r\n\r\n\t\tif (followUpData) {\r\n\t\t\tthis._isFollowUpDisabled = followUpData.IsFollowUpDisabled;\r\n\t\t\tthis._disabledReason = followUpData.DisabledReason;\r\n\t\t}\r\n\r\n\t\tif (this._isFlowFolder) {\r\n\t\t\tthis._flowFolder = new FlowFolder();\r\n\t\t\tthis._flowFolder.Init(this._isFlowFolder, this._entityId, flowFolderModel);\r\n\t\t\tthis._flowFolder.On('CLOSE_FOLLOW_UP_LIFE_STATUSES', this, (eventArgs)=> {\r\n\t\t\t\tthis.Close();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tInit(childOption: FollowUpOptionModel, parentOption: FollowUpOptionModel, screenParams: ScreenParamsModel) {\r\n\t\tif (screenParams){\r\n\t\t\tthis._recordId = screenParams.RecordId;\r\n\t\t\tthis._entityId = screenParams.EntityId;\r\n\t\t}\r\n\t\tthis._options([childOption, parentOption]);\r\n\t\tthis._childOption = childOption;\r\n\t\tif (parentOption) {\r\n\t\t\tthis._parentOption = parentOption;\r\n }\r\n\t\tif (this._childOption) {\r\n\t\t\tthis._selectedOption(this._childOption);\r\n\t\t}\r\n\t}\r\n\r\n\tClick(data, event) {\r\n\t\tPubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n\t\tthis.Close();\r\n\t}\r\n\r\n\tSelectCurrent(disable?: boolean) {\r\n\t\tif(disable) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.UpdateLifeStatus(this._selectedOption().LifeStatuses.CurrentLifeStatus);\r\n }\r\n\r\n\tPickLifeStatus(lifeStatus: LifeStatusSimpleModel, disable?: boolean) {\r\n\t\tif(disable) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (LifeStatusGroups.GetLifeStatusGroup(lifeStatus.Sort) === LifeStatusGroupEnum.Retired) {\r\n\t\t\tthis.CheckRetiredChildrenAndApproval(lifeStatus);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.CheckApprovalAndUpdateLifeStatus(lifeStatus);\r\n\t}\r\n\r\n\tset Caption(value: string) {\r\n\t\tthis._caption(value);\r\n\t}\r\n\r\n\tget Caption():string {\r\n\t\treturn this._caption();\r\n\t}\r\n\r\n\tCheckApprovalAndUpdateLifeStatus(lifeStatus: LifeStatusSimpleModel) {\r\n\t\tconst confirmationText = CONFIRMATIONS.ARE_SURE_TO_CHANGE_LIFESTATUS\r\n\t\t\t.replace('{fromstatus}', this._selectedOption().LifeStatuses.CurrentLifeStatus.Name)\r\n\t\t\t.replace('{tostatus}', lifeStatus.Name);\r\n\r\n\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: confirmationText,\r\n\t\t\tType: ConfirmationTypes.Question\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n\t\t\tthis,\r\n\t\t\t() => {\r\n\t\t\t\tthis.UpdateLifeStatus(lifeStatus);\r\n\t\t\t});\r\n\r\n\t\tif (lifeStatus.Id === this._selectedOption().LifeStatuses.CurrentLifeStatus.Id) {\r\n\t\t\tthis.UpdateLifeStatus(lifeStatus);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst approvalName = lifeStatus.ApprovalName || 'Off';\r\n\t\tswitch (approvalName) {\r\n\t\t\tcase 'Off':\r\n\t\t\t\tthis.UpdateLifeStatus(lifeStatus);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Password':\r\n\t\t\t\tconst passwordPrompt = new PromptDialog(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tType: Types.Password,\r\n\t\t\t\t\t\tLabel: CONFIRMATIONS.PLEASE_TYPE_YOUR_PASSWORD_TO_CONFIRM,\r\n\t\t\t\t\t\tValue: '',\r\n\t\t\t\t\t\tMinHeight: 200,\r\n\t\t\t\t\t\tRequired: true,\r\n\t\t\t\t\t\tRequiredErrorMessage: LABELS.PASSWORD + ' ' + NOTIFICATIONS.IS_REQUIRED,\r\n\t\t\t\t\t\tShowNotification: false,\r\n\t\t\t\t\t\tCloseOnSave: false\r\n\t\t\t\t\t});\r\n\t\t\t\tpasswordPrompt.Show();\r\n\r\n\t\t\t\tpasswordPrompt.On('Save', this,\r\n\t\t\t\t\t(eventargs) => {\r\n\t\t\t\t\t\tconst password = eventargs.data.value;\r\n\t\t\t\t\t\tif (password) {\r\n\t\t\t\t\t\t\tBlockUI.Block();\r\n\r\n\t\t\t\t\t\t\tFollowUpStore.ConfirmPassword({password: password})\r\n\t\t\t\t\t\t\t\t.always(() => {\r\n\t\t\t\t\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t.then((response) => {\r\n\t\t\t\t\t\t\t\t\tif (response) {\r\n\t\t\t\t\t\t\t\t\t\tpasswordPrompt.Hide();\r\n\t\t\t\t\t\t\t\t\t\tthis.UpdateLifeStatus(lifeStatus, password);\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tpasswordPrompt.ExternalInvalidActionHandling(NOTIFICATIONS.INCORRECT_PASSWORD);\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.fail(error => {\r\n\t\t\t\t\t\t\t\t\tnew Notifier().Failed(error);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Yes/No':\r\n\t\t\t\tconfirmationDialog.Show();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tCheckRetiredChildrenAndApproval(lifeStatus: LifeStatusSimpleModel) {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst entityId = this._entityId || (this._selectedOption().LifeStatuses.ActionSubjectRecord\r\n\t\t\t&& this._selectedOption().LifeStatuses.ActionSubjectRecord.EntityId);\r\n\t\tconst recordId = this._recordId || (this._selectedOption().LifeStatuses.ActionSubjectRecord\r\n\t\t\t&& this._selectedOption().LifeStatuses.ActionSubjectRecord.RecordId);\r\n\r\n\t\tFollowUpStore.CheckRetiredChildren({\r\n\t\t\tParentEntityId: entityId,\r\n\t\t\tParentRecordId: recordId\r\n\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tif (!data.ChildrenToRetireExist) {\r\n\t\t\t\t\tthis.CheckApprovalAndUpdateLifeStatus(lifeStatus);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst retiredStatuses = data.RetiredStatuses.join(', ');\r\n\t\t\t\tconst confirmationText = CONFIRMATIONS.ALL_CHILD_RECORDS_WILL_BE_MOVED_TO_THE_RETIRED_STATUSES\r\n\t\t\t\t\t.replace('{RetiredStatuses}', retiredStatuses);\r\n\r\n\t\t\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\t\t\tText: confirmationText,\r\n\t\t\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\t\t\tTextConfirm: LABELS.YES,\r\n\t\t\t\t\tTextDecline: LABELS.NO\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis._retireChildren = data.ChildrenToRetireExist;\r\n\t\t\t\t\t\tthis.CheckApprovalAndUpdateLifeStatus(lifeStatus);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tconfirmationDialog.Show();\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tnew Notifier().Failed(error);\r\n\t\t\t});\r\n\t}\r\n\r\n\tUpdateLifeStatus(lifeStatus: LifeStatusSimpleModel, password?) {\r\n\t\t//Current follow up functionality was disabled according to CYB-15142\r\n\t\t/*if (this._parentOption) {\r\n\t\t\tif (this._selectedParentOption() === this._parentOption) {\r\n\t\t\t\tthis.Trigger('PARENT_LIFESTATUS_CHOOSEN', { Option: this._parentOption, LifeStatus: lifeStatus, Password: password });\r\n\t\t\t\tthis._modal.Close();\r\n\t\t\t} else {\r\n\t\t\t\tif (lifeStatus.Sort === LIFESTATUS_GROUPS.RETIRED) {\r\n\t\t\t\t\tthis._selectedParentOption(this._parentOption);\r\n\t\t\t\t\tthis._clickedChildId(lifeStatus.Id);\r\n\t\t\t\t\tthis.Trigger('CHILD_LIFESTATUS_CHOOSEN',\r\n\t\t\t\t\t\t{ Option: this._selectedOption(), LifeStatus: lifeStatus, Password: password });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.Trigger('LIFESTATUS_CHOOSEN', { Option: this._selectedOption(), LifeStatus: lifeStatus, Password: password });\r\n\t\t\t\t\tthis._modal.Close();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.Trigger('LIFESTATUS_CHOOSEN', { Option: this._selectedOption(), LifeStatus: lifeStatus, Password: password });\r\n\t\t\tthis._modal.Close();\r\n\t\t}*/\r\n\r\n\t\tthis.Trigger('LIFESTATUS_CHOOSEN', { Option: this._selectedOption(), LifeStatus: lifeStatus, Password: password, RetireChildren: this._retireChildren });\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/ButtonFollowUp/Templates/LifeStatuses';\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n}","import * as ko from 'knockout';\r\nimport { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { ActionModel } from \"Core/Controls/Kanban/Models/StatusModel\";\r\nimport { LifeStatusSimpleModel } from \"Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel\";\r\n\r\nexport class FollowUpBaseRecordModel {\r\n\tconstructor(password?: string) {\r\n\t\tthis.ConfirmationPassword = password;\r\n\t}\r\n\t\r\n\t@deserialize\r\n LifeStatusId: number;\r\n\r\n CurrentLifeStatus: LifeStatusSimpleModel;\r\n\r\n LifeStatusSort?: number;\r\n\r\n LifeStatusName?: string;\r\n\r\n LifeStatusNoActionNode: boolean;\r\n\r\n Actions?: Array;\r\n\r\n ConfirmationPassword?: string;\r\n\r\n RetireChildren?: boolean;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {LifeStatusesModel} from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesModel\";\r\n\r\nexport class FollowUpOptionModel {\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserializeAs(LifeStatusesModel)\r\n\tLifeStatuses: LifeStatusesModel;\r\n}","import * as ko from 'knockout';\r\nimport { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { ActionSubjectRecordModel } from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport {FollowUpBaseRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpBaseRecordModel\";\r\n\r\nexport class FollowUpParentRecordModel extends FollowUpBaseRecordModel {\r\n\tconstructor(password?: string) {\r\n\t\tsuper(password);\r\n\t}\r\n\tParentActionSubject?: ActionSubjectRecordModel;\r\n}\r\n","import * as ko from 'knockout';\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {ActionModel} from \"Core/Controls/Kanban/Models/StatusModel\";\r\nimport {FollowUpParentRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpParentRecordModel \";\r\nimport {FollowUpBaseRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpBaseRecordModel\";\r\n\r\nexport class FollowUpRecordModel extends FollowUpBaseRecordModel {\r\n constructor(password?: string) {\r\n super(password);\r\n }\r\n\r\n FollowUpParentRecord?: FollowUpParentRecordModel;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class SubjectActionModel {\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n LifeStatusId: number;\r\n\r\n @deserialize\r\n TypeId: number;\r\n\r\n @deserialize\r\n KindId: number;\r\n\r\n @deserialize\r\n TypeName: string;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport { LifeStatusesModel } from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesModel\";\r\nimport { SubjectActionModel } from \"Core/Controls/ButtonFollowUp/Models/SubjectActionModel\";\r\n\r\nexport class LifeStatusesGeneralModel {\r\n\t@deserializeAs(LifeStatusesModel)\r\n\tParent: LifeStatusesModel;\r\n\r\n\t@deserializeAs(LifeStatusesModel)\r\n Child: LifeStatusesModel;\r\n\r\n @deserializeAs(Boolean)\r\n IsManyActions: Boolean;\r\n\r\n @deserializeAs(SubjectActionModel)\r\n SubjectAction: SubjectActionModel;\r\n\r\n @deserialize\r\n IsFollowUpDisabled: boolean;\r\n\r\n @deserialize\r\n DisabledReason: string;\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class ActionCheckListItemDto {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n NameTranslation: string;\r\n\r\n @deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n Value: any;\r\n\r\n @deserialize\r\n Required: boolean;\r\n\r\n @deserialize\r\n ValField: number;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport {ActionCheckListItemDto} from \"./ActionCheckListItemDto\";\r\n\r\nexport class ActionCheckListDto {\r\n @deserialize\r\n LifeStatusId: number;\r\n\r\n @deserialize\r\n LifeStatusName: string;\r\n\r\n @deserialize\r\n LifeStatusMemo: string;\r\n\r\n @deserialize\r\n LifeStatusMemoTranslation: string;\r\n\r\n @deserialize\r\n LifeStatusApprovalName: string;\r\n\r\n @deserialize\r\n LifeStatusNoActionNode: boolean;\r\n\r\n @deserialize\r\n LifeStatusMultipleActions: boolean;\r\n\r\n @deserialize\r\n LifeStatusTranslatedName: string;\r\n\r\n @deserialize\r\n LifeStatusSort: number;\r\n\r\n @deserialize\r\n IsFollowUpDisabled: boolean;\r\n\r\n @deserialize\r\n DisabledReason: string;\r\n\r\n @deserializeAs(ActionCheckListItemDto)\r\n CheckItems: ActionCheckListItemDto[];\r\n\r\n constructor() {\r\n this.CheckItems = [];\r\n }\r\n}","import {deserializeAs} from 'libs/cerialize';\r\n\r\nimport {LifeStatusSimpleModel} from \"Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel\";\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport {ActionCheckListDto} from \"Core/Components/ActionCheckList/Models/Dto/ActionCheckListDto\";\r\n\r\nexport class LifeStatusesModel {\r\n @deserializeAs(LifeStatusSimpleModel)\r\n CurrentLifeStatus: LifeStatusSimpleModel;\r\n\r\n @deserializeAs(LifeStatusSimpleModel)\r\n LifeStatuses: Array;\r\n\r\n @deserializeAs(ActionSubjectRecordModel)\r\n ActionSubjectRecord: ActionSubjectRecordModel;\r\n\r\n @deserializeAs(ActionCheckListDto)\r\n CheckLists: Array;\r\n}","import * as ko from 'knockout';\r\nimport { deserialize } from 'libs/cerialize';\r\n\r\nexport class LifeStatusSimpleModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n Sort: number;\r\n\r\n @deserialize\r\n NoActionNode: boolean;\r\n\r\n @deserialize\r\n MultipleActions: boolean;\r\n\r\n\t@deserialize\r\n\tApprovalName: string;\r\n\r\n\t@deserialize\r\n TranslatedName: string;\r\n\r\n @deserialize\r\n Memo: string;\r\n\r\n @deserialize\r\n MemoTranslation: string;\r\n\r\n @deserialize\r\n NodeTypeId: number;\r\n\r\n @deserialize\r\n NodeTypeName: string;\r\n\r\n @deserialize\r\n FollowupModeId: number;\r\n\r\n @deserialize\r\n FollowupModeName: string;\r\n\r\n @deserialize\r\n IsFollowUpDisabled: boolean;\r\n\r\n @deserialize\r\n DisabledReason: string;\r\n\r\n @deserialize\r\n StepsScreenId: number;\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {LifeStatusesModel} from 'Core/Controls/ButtonFollowUp/Models/LifeStatusesModel';\r\nimport {LifeStatusesGeneralModel} from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel\";\r\nimport {CheckRetiredChildrenResponseModel} from \"Core/Controls/ButtonFollowUp/Models/CheckRetiredChildrenResponseModel\";\r\n\r\nexport interface ICheckRetiredChildrenRequestModel {\r\n\tParentEntityId: number;\r\n\tParentRecordId: number;\r\n}\r\n\r\nexport class FollowUpStore {\r\n static GetStatuses(params: { EntityId: number; RecordId: number; ActionEntityId?: number}): P.Promise {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.FOLLOWUP.GET_NEXT_LIFESTATUSES,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tconst model = GenericDeserialize(data.ResultObject, LifeStatusesGeneralModel);\r\n\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic ConfirmPassword(params: any): P.Promise {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.FOLLOWUP.CONFIRM_PASSWORD,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data.IsSuccessfull);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic CheckRetiredChildren(params: ICheckRetiredChildrenRequestModel): P.Promise {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.FOLLOWUP.CHECK_RETIRED_CHILDREN,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport ListButtonConfig from \"Core/Controls/ButtonListScreen/Configs/list-button-config.json\";\r\n\r\nimport 'Core/Controls/ButtonListScreen/Templates/Edit.html';\r\n\r\nimport ViewTemplate from \"Core/Controls/ButtonListScreen/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonListScreen/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/ButtonListScreen/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ButtonListScreen/Templates/Design.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonListScreen/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonListScreen/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonListScreen/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonListScreen/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ButtonListScreen/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonListScreen extends BaseControl {\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, ListButtonConfig);\r\n\r\n\t\tthis._enabled = ko.observable(this.IsListScreenExist);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n } \r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tscreen.Trigger(\"SHOW_LIST_SCREEN\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t}\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n this.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport {SelectUserStore} from 'Core/Controls/SelectUser/Stores/SelectUserStore';\r\nimport {RecordStore} from 'Core/Common/Stores/RecordStore';\r\n\r\nimport Config from \"Core/Controls/ButtonPlan/config.json\";\r\n\r\nimport ViewTemplate from \"Core/Controls/ButtonPlan/Templates/View.html\"\r\nimport HelpViewTemplate from \"Core/Controls/ButtonPlan/Templates/HelpView.html\"\r\nimport DesignTemplate from \"Core/Controls/ButtonPlan/Templates/Design.html\"\r\nimport ToolbarTemplate from \"Core/Controls/ButtonPlan/Templates/ToolBar.html\"\r\nimport { TableStore } from '../../Common/Stores/TableStore';\r\nimport { BlockUI } from '../../Common/BlockUi';\r\nimport { CONTROL_TYPES, GridStore, NOTIFICATIONS, Notifier, ScreenTypes } from '../Grid/BaseGrid/Index';\r\nimport { RecordLinker } from '../../Components/RecordLinker/RecordLinker';\r\nimport { RenderModes } from '../../Constant';\r\n\r\n\r\nko.templates[\"Core/Controls/ButtonPlan/Templates/ToolBar\"] = ToolbarTemplate;\r\nko.templates[\"Core/Controls/ButtonPlan/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonPlan/Templates/GridRow\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonPlan/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonPlan/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonPlan/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonPlan extends BaseControl {\r\n\tprivate _businessRoleId: KnockoutObservable;\r\n\tprivate _exampleAppointmentId: KnockoutObservable;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, Config);\r\n\t\tthis._businessRoleId = ko.observable(0);\r\n\t\tthis._exampleAppointmentId = ko.observable(0);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\r\n this._renderMode.subscribe((newValue)=>{ \r\n if(newValue === RenderModes.GridRow && this._model().SubFlowTypeId != 0){ \r\n this._isVisible(this._gridRow.RecordTypeId == this._model().SubFlowTypeId);\r\n }\r\n });\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n this._enabled(true);\r\n\r\n this.AddEvent('SELECT_USERS_BY_BUSINESS_ROLE');\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n this.ShowAgendaScreen();\r\n\t\t}\r\n\t}\r\n\r\n async ShowAgendaScreen(){\r\n BlockUI.Block();\r\n let agenda = await TableStore.Get({ TableName: \"AGENDA\" });\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n let screen = await screenManager.GetScreenByScreenType(agenda.Id, ScreenTypes.SpecialScreen);\r\n\r\n if (screen.ScreenDoesNotExistError) {\r\n Notifier.Failed(screen.ScreenDoesNotExistErrorMessage);\r\n }else{\r\n if (this._businessRoleId()) {\r\n const selectUserByBusinessRoleModel = await SelectUserStore.GetSelectUsersByBusinessRole(agenda.Id, Number(this._businessRoleId()));\r\n screen.Trigger('SELECT_USERS_BY_BUSINESS_ROLE', { SelectUserByBusinessRoleModel: selectUserByBusinessRoleModel });\r\n }\r\n\r\n if (this._exampleAppointmentId()) {\r\n const recordExists = await RecordStore.RecordExists({ TableId: agenda.Id, RecordId: this._exampleAppointmentId() });\r\n if (recordExists) {\r\n screen.ExampleAppointmentId = this._exampleAppointmentId();\r\n }\r\n }\r\n\r\n screen.On('RECORD_CREATED', this, async (eventArgs)=>{\r\n await this.LinkAgenda(eventArgs.data.RecordId,agenda.Id);\r\n await this.SwitchToSubFlowStatus();\r\n this.Screen.Refresh();\r\n screen.Close();\r\n });\r\n\r\n screen.ShowInModal();\r\n }\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n get SubjectEntityId(): number {\r\n if(this.IsInGrid){\r\n return this._gridRow.EntityId;\r\n };\r\n\r\n return this.Screen.GetEntityId();\r\n }\r\n\r\n get SubjectRecordId(): number {\r\n if(this.IsInGrid){\r\n return this._gridRow.RecordId;\r\n };\r\n\r\n return this.Screen.GetRecordId();\r\n }\r\n\r\n get IsInGrid(): boolean {\r\n return this._parentControl && this._parentControl.GetType() === CONTROL_TYPES.Grid;\r\n }\r\n\r\n async LinkAgenda(agendaRecordId: number, agendaEntityId: number){\r\n await RecordLinker.LinkRecord({ MainTableId: this.SubjectEntityId, MainRecordId: this.SubjectRecordId, LinkedTableId: agendaEntityId, LinkedRecordId: agendaRecordId })\r\n .then((result) => {\r\n if (!result.IsSuccessfull) {\r\n Notifier.Failed(NOTIFICATIONS.COULD_NOT_PROCEED_PLEASE_CREATE_THE_LINK_BETWEEN_ENTITIES\r\n .replace('{entity1}', this.Screen.GetEntityName())\r\n .replace('{entity2}', 'AGENDA'));\r\n }\r\n });\r\n }\r\n\r\n async SwitchToSubFlowStatus(){\r\n let subFlowId = this.GeneralProperties.GetPropertyValue(\"SubFlow\");\r\n if(subFlowId && !isNaN(subFlowId.Value)){\r\n await GridStore.SwitchToNextStatus({ EntityId: this.SubjectEntityId, RecordId: this.SubjectRecordId, NextStatusId: subFlowId.Value});\r\n } \r\n }\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t}\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('General', 'BusinessRole', this._businessRoleId);\r\n this.AssignProperty('General', 'ExampleAppointment', this._exampleAppointmentId);\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n this.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n const propertyValue = property[propertyName].hasOwnProperty('Value')\r\n ? property[propertyName].Value\r\n : property[propertyName];\r\n propertyHolder(propertyValue);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl } from \"Core/Controls/BaseControl/BaseControl\";\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\nimport { ScreenTypes } from 'Core/Common/Enums/ScreenTypes';\r\nimport { CHECKBOX_PROPERTIES } from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport SpecialScreenButtonConfig from \"Core/Controls/ButtonSpecialScreen/Configs/special-screen-button-config.json\";\r\n\r\nimport DesignTemplate from \"Core/Controls/ButtonSpecialScreen/Templates/Design.html\";\r\nimport EditTemplate from \"Core/Controls/ButtonSpecialScreen/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/ButtonSpecialScreen/Templates/Toolbar.html\";\r\nimport ViewTemplate from \"Core/Controls/ButtonSpecialScreen/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonSpecialScreen/Templates/HelpView.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonSpecialScreen/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/ButtonSpecialScreen/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/ButtonSpecialScreen/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ButtonSpecialScreen/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonSpecialScreen/Templates/View\"] = ViewTemplate;\r\n\r\nexport class ButtonSpecialScreen extends BaseControl {\r\n\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, SpecialScreenButtonConfig);\r\n\r\n\t\tthis._enabled = ko.observable(this.IsSpecialScreenExist || this.IsStepsScreenExist);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n this.ApplyProperties();\r\n\t}\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n this.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tOnClick() {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else if(this._enabled()) {\r\n\t\t\tconst screen = this._form.GetScreen();\r\n\t\t\tconst screenType = this.IsSpecialScreenExist ? ScreenTypes.SpecialScreen : ScreenTypes.StepsScreen;\r\n\r\n\t\t\tscreen.Trigger(\"SHOW_SPECIAL_SCREEN\", { ScreenType: screenType });\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { TypeScreen } from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { ButtonTemplateStore, IMergeAndSaveRequestModel, IGetTemplatesRequestModel } from 'Core/Controls/ButtonTemplate/Stores/ButtonTemplateStore';\r\nimport { ComplexControl } from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport { RequiredFieldModel } from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport { FIELD_TYPES, TABLE_TYPES, CONTROL_TYPES, SYSTEM_FIELD_NAMES } from 'Core/Constant';\r\nimport { TemplateModel } from 'Core/Controls/ButtonTemplate/Models/TemplateModel';\r\nimport { EntityTypes } from 'Core/Controls/Grid/BaseGrid/Enums/EntityTypes';\r\nimport { Grid } from 'Core/Controls/Grid/Grid';\r\nimport { EVENTS as TYPE_SCREEN_EVENTS } from 'Core/Screens/TypeScreen/Events';\r\nimport { ComposeMail } from 'Core/Controls/Mail/ComposeMail';\r\nimport { RecordLinker } from 'Core/Components/RecordLinker/RecordLinker';\r\nimport { MailStore } from '../Mail/Stores/MailStore';\r\nimport { MailTabModel } from '../Mail/Models/MailTabModel';\r\nimport { COMPOSER_EVENTS } from 'Core/Controls/Mail/Events';\r\nimport { Guid } from 'Core/Common/Guid';\r\nimport { AttachedFieldModel } from '../BaseControl/Models/AttachedFieldModel';\r\nimport { RecordStore } from 'Core/Common/Stores/RecordStore';\r\nimport { LABELS, NOTIFICATIONS, CONFIRMATIONS } from 'Core/Components/Translation/Locales';\r\nimport { JBoxDropDown } from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport { ZIndexManager } from \"Core/Common/ZIndexManager\";\r\n\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport { DEFAULT_ICONS } from \"Core/Constant\";\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport TemplateButtonConfig from \"Core/Controls/ButtonTemplate/Configs/template-button-config.json\";\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonTemplate/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/ButtonTemplate/Templates/HelpView.html';\r\nimport DesignTemplate from 'Core/Controls/ButtonTemplate/Templates/Design.html';\r\nimport ToolBarTemplate from 'Core/Controls/ButtonTemplate/Templates/ToolBar.html';\r\nimport GridRowTemplate from 'Core/Controls/ButtonTemplate/Templates/GridRow.html';\r\nimport DropdownTemplate from 'Core/Controls/ButtonTemplate/Templates/Dropdown.html';\r\nimport DropdownSubMenuTemplate from 'Core/Controls/ButtonTemplate/Templates/DropdownSubMenu.html';\r\nimport {MobileChecker} from \"../../Common/MobileChecker\";\r\n\r\nko.templates['Core/Controls/ButtonTemplate/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/ButtonTemplate/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonTemplate/Templates/GridRow'] = GridRowTemplate;\r\nko.templates['Core/Controls/ButtonTemplate/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/ButtonTemplate/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonTemplate/Templates/Design'] = ComplexControl.designTemplate;\r\n\r\nconst INTERNAL_MAIL_CLIENT = 'Internal';\r\n\r\nexport class ButtonTemplate extends ComplexControl {\r\n\tprivate _typeScreen: TypeScreen;\r\n\tprivate _items: KnockoutObservableArray;\r\n\tprivate _selectedItem: KnockoutObservable;\r\n\tprivate _hasData: KnockoutObservable;\r\n\tprivate _mails: KnockoutObservableArray;\r\n\tprivate _button: HTMLElement;\r\n\tprivate _buttonId: string;\r\n\r\n private _config: any;\r\n\tprivate _tooltip: KnockoutObservable;\r\n\tprivate _dropDown: JBoxDropDown;\r\n\tprivate _dropDownSubmenu: JBoxDropDown;\r\n\tprivate _currentHtmlTemplate:\tKnockoutObservable;\r\n\tprivate _isMobile: MobileChecker;\r\n\tprivate _dropDownOpened: boolean;\r\n\tprivate _dropDownSubmenuOpen: boolean;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, TemplateButtonConfig);\r\n\t\tthis._items = ko.observableArray([]);\r\n\t\tthis._selectedItem = ko.observable(null);\r\n\t\tthis._hasData = ko.observable(false);\r\n\t\tthis._mails = ko.observableArray([]);\r\n\t\tthis._buttonId = Guid.NewGuid();\r\n this._currentHtmlTemplate = ko.observable(null);\r\n this._border = ko.observable(false);\r\n\t\tthis._tooltip = ko.observable(LABELS.GENERATE_DOCUMENT_FROM_TEMPLATE);\r\n\t\tthis._isMobile = MobileChecker.IsMobile();\r\n\t\tthis._dropDownOpened = false;\r\n\t\tthis._dropDownSubmenuOpen = false;\r\n this._style = ko.computed(() => {\r\n \treturn {\r\n\t\t\t\tbackgroundColor: this._backgroundColor(),\r\n\t\t\t\tcolor: this._color(),\r\n\t\t\t\tborder: this._border() ? `1px` : '0',\r\n\t\t\t\tborderColor: this._borderColor(),\r\n\t\t\t\tborderStyle: 'initial'\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.SetDefaultIcon(new Icon(DEFAULT_ICONS.ButtonTemplate));\r\n this.ApplyProperties();\r\n\t\tthis._requiredFields([\r\n\t\t\tnew RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('TEMPLATE', FIELD_TYPES.Document, TABLE_TYPES.Entity, null)\r\n\t\t]);\r\n\r\n\t\tthis.InitRequiredFields();\r\n\t}\r\n\r\n\tprivate InitButtonTemplateDropdown(target) {\r\n\t\tthis._dropDown = new JBoxDropDown({\r\n\t\t\ttarget: target,\r\n\t\t\tbindTarget: target,\r\n\t\t\tbindComponent: this,\r\n\t\t\totherOptions: {\r\n\t\t\t\taddClass: \"js-button-template-dropdown\",\r\n\t\t\t\tcloseOnClick: this._isMobile ? 'body' : true,\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\theight: 'auto',\r\n\t\t\t\tadjustPosition: true,\r\n\t\t\t\tadjustTracker: true,\r\n\t\t\t\tisolateScroll: true,\r\n\t\t\t\tpointer: \"center\",\r\n\t\t\t\tmaxWidth: 380,\r\n\t\t\t\tmaxHeight: this._isMobile ? 170 : undefined,\r\n\t\t\t\tonCloseComplete: () => {\r\n\t\t\t\t\tthis._dropDownOpened = false;\r\n\t\t\t\t},\r\n\t\t\t\tzIndex: ZIndexManager.Instance.NextValue,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx: \"center\",\r\n\t\t\t\t\ty: \"bottom\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tonCreated: () => {\r\n\t\t\t\tthis._dropDown.SetContent({ content: DropdownTemplate as any });\r\n\t\t\t},\r\n\r\n\t\t\tonOpen: () => {}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InitButtonTemplateDropdownSubmenu(target) {\r\n\t\tthis._dropDownSubmenu = new JBoxDropDown({\r\n\t\t\ttarget: target,\r\n\t\t\tbindTarget: target,\r\n\t\t\tbindComponent: this,\r\n\t\t\totherOptions: {\r\n\t\t\t\taddClass: \"js-button-template-dropdown-submenu\",\r\n\t\t\t\tcloseOnClick: true,\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\theight: 'auto',\r\n\t\t\t\tadjustPosition: true,\r\n\t\t\t\tadjustTracker: true,\r\n\t\t\t\tisolateScroll: true,\r\n\t\t\t\tcloseOnMouseleave: true,\r\n\t\t\t\tpointer: \"top\",\r\n\t\t\t\tmaxWidth: 300,\r\n\t\t\t\tmaxHeight: this._isMobile ? 170 : undefined,\r\n\t\t\t\tonCloseComplete: () => {\r\n\t\t\t\t\tif (!this._isMobile) {\r\n\t\t\t\t\t\t$(\"body\").off('mousemove.jBoxButtonTemplate');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._dropDownSubmenuOpen = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tzIndex: ZIndexManager.Instance.NextValue,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx: this._isMobile ? \"left\" : \"right\",\r\n\t\t\t\t\ty: \"center\"\r\n\t\t\t\t},\r\n\t\t\t\toutside: 'x',\r\n\t\t\t\toffset: { x: 0, y: 0 }\r\n\t\t\t},\r\n\r\n\t\t\tonCreated: () => {\r\n\t\t\t\tthis._dropDownSubmenu.SetContent({ content: DropdownSubMenuTemplate as any });\r\n\t\t\t},\r\n\r\n\t\t\tonOpen: () => {\r\n\t\t\t\tif (!this._isMobile) {\r\n\t\t\t\t\t$(\"body\").on(\"mousemove.jBoxButtonTemplate\", (event) => {\r\n\t\t\t\t\t\tif (!event.target.closest(\".dropdown-submenu-button-template\") && !event.target.closest(\".js-button-template-dropdown-submenu\")) {\r\n\t\t\t\t\t\t\tthis.HideDropdownSubmenu();\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\tMergeAndSave(\r\n\t\ttemplate: TemplateModel,\r\n\t\tdestinationEntityId: number,\r\n\t\tdestinationTypeId: number,\r\n\t\tsaveIntoSubject: boolean = false,\r\n\t\tmail: MailTabModel,\r\n\t\tsaveDestinationTypeId: boolean = false\r\n\t) {\r\n\t\tlet requestModel: IMergeAndSaveRequestModel = {\r\n\t\t\tSubjectEntityId: this.SubjectEntityId,\r\n\t\t\tSubjectRecordId: this.SubjectRecordId,\r\n\t\t\tRecordId: template.Id,\r\n\t\t\tControlId: this.GetControlId(),\r\n\t\t\tDestinationEntityId: destinationEntityId,\r\n\t\t\tDestinationTypeId: destinationTypeId,\r\n\t\t\tSaveDestinationTypeId: saveDestinationTypeId,\r\n\t\t\tSaveIntoSubject: saveIntoSubject,\r\n\t\t\tMailAddress: mail ? mail.Login : null,\r\n\t\t\tClient: mail ? mail.Client : null\r\n\t\t};\r\n\r\n\t\tif (mail && (mail.Client === null || mail.Client === '')){\r\n\t\t\tmail.Client = INTERNAL_MAIL_CLIENT;\r\n\t\t}\r\n\r\n\r\n\t\tBlockUI.Block({ Target: this._button });\r\n\t\tButtonTemplateStore\r\n\t\t\t.MergeAndSave(requestModel)\r\n\t\t\t.fail(err => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUI.Unblock(this._button))\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (this._parentControl) {\r\n\t\t\t\t\tif (this._parentControl instanceof Grid) {\r\n\t\t\t\t\t\tthis._parentControl.LoadData();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (saveDestinationTypeId) {\r\n\t\t\t\t\t\tthis.LoadData();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (mail && mail.Client === INTERNAL_MAIL_CLIENT) {\r\n\t\t\t\t\t_.each(result.ResultObject, (item: any) => {\r\n\t\t\t\t\t\tlet composeMail = new ComposeMail({ SubjectEntityId: this.SubjectEntityId, SubjectRecordId: this.SubjectRecordId, SubjectTypeId: this.SubjectTypeId });\r\n\r\n\t\t\t\t\t\t_.each(item.Recipients, (item: any) => {\r\n\t\t\t\t\t\t\tif (item.Mail) {\r\n\t\t\t\t\t\t\t\tcomposeMail.AddMailWithRecord(item.Mail, item.TableId, item.RecordId);\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\tcomposeMail.AddBody(item.Content);\r\n\t\t\t\t\t\tcomposeMail.AddScreen(this._form.GetScreen());\r\n\t\t\t\t\t\tif(item.CC){\r\n\t\t\t\t\t\t\t_.each(item.CC.split(','), (cc: string) => composeMail.AddMailCC('', cc))\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(item.BCC){\r\n\t\t\t\t\t\t\t_.each(item.BCC.split(','), (bcc: string) => composeMail.AddMailBCC('', bcc))\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tcomposeMail.AddSubject(item.Subject || template.Name);\r\n\t\t\t\t\t\tcomposeMail.ShowInModal(mail.MailConnectionId);\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._form.GetScreen().Refresh();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tSelectTemplate(template: TemplateModel, mail: MailTabModel) {\r\n\t\tif (this._parentControl && this._parentControl.GetType() === CONTROL_TYPES.Grid) {\t\t\t\r\n\t\t\tlet destinationEntityId = this.GetDestinationEntityId(template);\r\n\r\n\t\t\tif (destinationEntityId) {\r\n\t\t\t\tif (mail) {\r\n\t\t\t\t\tthis.MergeAndSave(template, destinationEntityId, 0, false, mail);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (template.EntityTypeId) {\r\n\t\t\t\t\t\tthis.MergeAndSave(template, destinationEntityId, template.EntityTypeId, false, mail);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.ShowTypeScreen(template, mail, destinationEntityId);\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.MergeAndSave(template, 0, 0, true, mail);\r\n\t\t}\r\n\t}\r\n\r\n\tGetDestinationEntityId(template: TemplateModel){\r\n\t\tif(this._gridRow){\r\n\t\t\treturn template.DestinationEntityId;\r\n\t\t}\r\n\t\tvar gridSubjectField = _.find(this._parentControl.GetModel().Fields, (field) => field.EntityTypeName !== EntityTypes[EntityTypes.Link] );\r\n\t\treturn gridSubjectField?.EntityId;\r\n\t}\r\n\r\n\tShowTypeScreen(template: TemplateModel, mail: MailTabModel, entityId: number){\r\n\t\tvar typeScreen = new TypeScreen(entityId, 0, false, false);\r\n\t\ttypeScreen.On(TYPE_SCREEN_EVENTS.TYPE_SELECTED,\r\n\t\t\tthis,\r\n\t\t\t(eventArgs) => {\r\n\t\t\t\tthis.MergeAndSave(template, entityId, eventArgs.data.TypeId, false, mail, true);\r\n\t\t\t});\r\n\r\n\t\ttypeScreen.On(TYPE_SCREEN_EVENTS.TYPES_NOT_FOUND,\r\n\t\t\tthis,\r\n\t\t\t() => {\r\n\t\t\t\tthis.MergeAndSave(template, entityId, 0, false, mail);\r\n\t\t\t});\r\n\r\n\t\ttypeScreen.Show();\r\n\t}\t\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.SubjectRecordId !== 0 || this._gridRow) {\r\n\t\t\tthis.LoadData();\r\n\t\t}\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tget SubjectRecordId(): number {\r\n\t\tif(this._gridRow){\r\n\t\t\treturn this._gridRow.RecordId;\r\n\t\t}\r\n\t\treturn this._form.GetScreen().GetRecordId();\r\n\t}\r\n\r\n\tget SubjectEntityId(): number {\r\n\t\tif(this._gridRow){\r\n\t\t\treturn this._gridRow.EntityId;\r\n\t\t}\r\n\t\treturn this._form.GetScreen().GetEntityId();\r\n\t}\r\n\r\n\tget SubjectTypeId(): number {\r\n\t\tif(this._gridRow){\r\n\t\t\treturn this._gridRow.TypeId;\r\n\t\t}\r\n\t\treturn this._form.GetScreen().GetTableTypeId();\r\n\t}\r\n\r\n\tget ContextEntityId(): number {\r\n\t\tif(this._gridRow){\r\n\t\t\treturn this._gridRow.EntityId;\r\n\t\t}\r\n\t\treturn this._parentControl && this._parentControl.GetType() === CONTROL_TYPES.Grid\r\n\t\t? this._parentControl.GetModel().EntityId\r\n\t\t: this._form.GetScreen().GetEntityId();\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tconst requestModel: IGetTemplatesRequestModel = {\r\n\t\t\tSubjectEntityId: this.SubjectEntityId,\r\n\t\t\tObjectEntityId: this.ContextEntityId,\r\n\t\t\tControlId: this.GetControlId()\r\n\t\t};\r\n\r\n\t\tButtonTemplateStore\r\n\t\t\t.GetData(requestModel)\r\n\t\t\t.then((data) => {\r\n\t\t\t\tlet selectedTemplate = this.GeneralProperties.GetPropertyValue('DocumentTemplate');\r\n\t\t\t\t\r\n\t\t\t\tif(selectedTemplate){\r\n\t\t\t\t\tdata = [_.find(data, (template)=> template.Id === selectedTemplate)];\r\n\t\t\t\t}\t\t\t\t\r\n\r\n\t\t\t\tthis._items(data);\r\n\t\t\t\tthis._hasData(this._items().length > 0);\r\n\t\t\t});\r\n\r\n\r\n\t\tMailStore.GetMailTabs()\r\n\t\t\t.then((tabs: any) => {\r\n\t\t\t\t_.map(tabs, (tab: any) => {\r\n\t\t\t\t\tlet mail = new MailTabModel();\r\n\t\t\t\t\tmail.Login = tab.Login;\r\n\t\t\t\t\tmail.MailConnectionId = tab.MailConnectionId;\r\n\t\t\t\t\tmail.Client = tab.Client;\r\n\t\t\t\t\tthis._mails.push(mail);\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.always(() => this._button? BlockUI.Unblock(): null)\r\n\t\t\t.fail((err) => new Notifier().Failed(err.message));\r\n\t}\r\n\r\n\tShowTemplateHelp(data, event): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t}\r\n\r\n\t\tlet target = event.target.closest(\".template-btn\");\r\n\r\n\t\tif (this._dropDown) {\r\n\t\t\tif (this._dropDownOpened) {\r\n\t\t\t\tthis._dropDown.Close();\r\n\t\t\t\tthis._dropDownOpened = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis._dropDown.Open(target);\r\n\t\t\t\tthis._dropDownOpened = true;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.InitButtonTemplateDropdown(target);\r\n\t\t\tthis._dropDown.Open(target);\r\n\t\t\tthis._dropDownOpened = true;\r\n\t\t}\r\n\t}\r\n\r\n\tShowDropdownSubmenu(element, template): void {\r\n\t\tlet target = element.closest(\".dropdown-submenu-button-template\");\r\n\r\n\t\tif (this._isMobile) {\r\n\t\t\tif (this._dropDownSubmenu) {\r\n\t\t\t\tif (this._dropDownSubmenuOpen) {\r\n\t\t\t\t\tthis._dropDownSubmenu.Close();\r\n\t\t\t\t\tthis._dropDownSubmenuOpen = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._dropDownSubmenu.Open(element);\r\n\t\t\t\t\tthis._dropDownSubmenuOpen = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.InitButtonTemplateDropdownSubmenu(element);\r\n\t\t\t\tthis._dropDownSubmenu.Open(element);\r\n\t\t\t\tthis._dropDownSubmenuOpen = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._currentHtmlTemplate(template);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this._dropDownSubmenu) {\r\n\t\t\tthis._dropDownSubmenu.Open(target);\r\n\t\t} else {\r\n\t\t\tthis.InitButtonTemplateDropdownSubmenu(target);\r\n\t\t\tthis._dropDownSubmenu.Open(target);\r\n\t\t}\r\n\r\n\t\tthis._currentHtmlTemplate(template);\r\n\t}\r\n\r\n\tHideDropdownSubmenu(): void {\r\n\t\tif (this._dropDownSubmenu instanceof JBoxDropDown) {\r\n\t\t\tthis._dropDownSubmenu.Close();\r\n\t\t}\r\n\t}\r\n\r\n\tget Items(): KnockoutObservableArray {\r\n\t\treturn this._items;\r\n\t}\r\n\r\n\tget Mails(): KnockoutObservableArray {\r\n\t\treturn this._mails;\r\n\t}\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tthis._button = document.getElementById(this._buttonId);\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tasync MergeAndSaveForGridRow(){\r\n\r\n\t\tBlockUI.Block();\r\n\t\tlet record = await RecordStore.GetRecord({ TableId: this.SubjectEntityId, RecordId: this.SubjectRecordId });\r\n\t\tBlockUI.Unblock();\r\n\r\n\t\tlet template = _.first(this._items());\r\n\t\tlet mail = _.first(this._mails());\r\n\t\tif(!template){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet nameField = _.find(record.Fields, (field: any) => field.FieldName === 'NAME');\r\n\r\n\t\tlet confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: CONFIRMATIONS.GENERATE_DOCUMENT_FROM_TEMPLATE.replace('{templateName}', template.Name).replace('{recordName}', nameField.FieldValue || ''),\r\n\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\tTextConfirm: LABELS.YES,\r\n\t\t\tTextDecline: LABELS.NO\r\n\t\t});\r\n\r\n\t\tif(template.TypeName != 'html'){\r\n\t\t\tmail = null;\r\n\t\t}\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, ()=>this.SelectTemplate(template, mail));\r\n\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n} ","// Module\nvar code = \" Template \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class TemplateModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tEntityTypeId: number;\r\n\r\n\t@deserialize\r\n\tDestinationEntityId: number;\r\n}","import * as _ from 'underscore';\r\n\r\nimport { URL } from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {TemplateModel} from 'Core/Controls/ButtonTemplate/Models/TemplateModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nexport interface IMergeAndSaveRequestModel {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tRecordId: number;\r\n\tControlId: number;\r\n\tDestinationEntityId: number;\r\n\tDestinationTypeId: number;\r\n\tSaveDestinationTypeId: boolean;\r\n\tSaveIntoSubject: boolean;\r\n\tMailAddress: string;\r\n\tClient: string;\r\n}\r\n\r\nexport interface IGetTemplatesRequestModel {\r\n\tSubjectEntityId: number;\r\n\tObjectEntityId: number;\r\n\tControlId: number;\r\n}\r\n\r\nexport class ButtonTemplateStore {\r\n\tstatic GetData(params: IGetTemplatesRequestModel): P.Promise> {\r\n\t\tvar deferredResult = P.defer>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\tcacheRequest: true,\r\n\t\t\t\turl: URL.CONTROLS.BUTTON_TEMPLATE.GET_TEMPLATES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(Deserialize(data.ResultObject, TemplateModel));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic MergeAndSave(params: IMergeAndSaveRequestModel): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.BUTTON_TEMPLATE.MERGE_AND_SAVE,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tif (data.IsServerError) {\r\n\t\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\t\t\tnotifier.Failed(data.ErrorMessage);\r\n\t\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","export const EVENTS = {\r\n BACK_TO_DATA_SELECTOR: 'BACK_TO_DATA_SELECTOR',\r\n SHOW_FUNCTION_DESIGNER: 'SHOW_FUNCTION_DESIGNER',\r\n CLOSED_FUNCTION_DESIGNER: 'CLOSED_FUNCTION_DESIGNER',\r\n\tDEFAULT_VALUE_CHANGED: 'DEFAULT_VALUE_CHANGED',\r\n METHOD_SELECTED: 'METHOD_SELECTED',\r\n EDIT_QUERY: 'EDIT_QUERY',\r\n SHOW_FUNCTION_DESIGNER_REQUESTED: 'SHOW_FUNCTION_DESIGNER_REQUESTED'\r\n}","import { Modal } from \"Core/Common/Modal\";\r\nimport * as ko from 'knockout';\r\nimport Template from 'Core/Controls/CanvasDesigner/Templates/MethodsList.html';\r\nimport {CanvasItemModel} from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport {Event} from 'Core/Common/Event'\r\nimport {EVENTS} from \"../Shapes/Views/ParamView/Events\";\r\n\r\nko.templates['Core/Controls/CanvasDesigner/Templates/MethodsList'] = Template;\r\n\r\nexport class MethodsList extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _methods: Array;\r\n\r\n\tconstructor(methods: Array) {\r\n\t\tsuper();\r\n\t\tthis._methods = methods;\r\n\t\tthis.AddEvent(EVENTS.METHOD_SELECTED);\r\n\t}\r\n\r\n\tShowInModal() {\r\n\t\tlet modal = new Modal({\r\n\t\t\twidth: '350',\r\n\t\t\tminHeight: '300'\r\n\t\t}, false);\r\n\r\n\t\tthis._modal = modal\r\n\t\tko.cleanNode(modal.Wrapper);\r\n\t\tko.applyBindings(this, modal.Wrapper);\r\n\t\tmodal.Show();\r\n\t}\r\n\r\n\tClose(){\r\n\t\tif(this._modal){\r\n\t\t\tthis._modal.Close();\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/CanvasDesigner/Templates/MethodsList';\r\n\t}\r\n\r\n\tAfterRender(){}\r\n\r\n\tSelectMethod(item: CanvasItemModel){\r\n\t\tthis.Trigger(EVENTS.METHOD_SELECTED, { Id: item.Id })\r\n\t}\r\n}","// Module\nvar code = \"
    Name
    \";\n// Exports\nexport default code;","import { dia as Dia, shapes } from 'libs/rappid/build/rappid';\r\n\r\nDia.Link.define('cyberThing.Arrow', {\r\n\ttype: 'cyberThing.Arrow',\r\n\trouter: {\r\n\t\tname: 'normal'\r\n\t},\r\n\tconnector: {\r\n\t\tname: 'normal'\r\n\t},\r\n\tattrs: {\r\n\t\t'.marker-source': {\r\n\t\t\td: 'M 10 0 L 0 5 L 10 10 z',\r\n\t\t\tstroke: 'transparent',\r\n\t\t\tfill: '#222138',\r\n\t\t\ttransform: 'scale(0.001)'\r\n\t\t},\r\n\t\t'.marker-target': {\r\n\t\t\td: 'M 10 0 L 0 5 L 10 10 z',\r\n\t\t\tstroke: 'transparent',\r\n\t\t\tfill: '#222138',\r\n\t\t\ttransform: 'scale(1)'\r\n\t\t},\r\n\t\t'.connection': {\r\n\t\t\tstroke: '#222138',\r\n\t\t\tstrokeDasharray: '0',\r\n\t\t\tstrokeWidth: 1,\r\n\t\t\tfill: 'none'\r\n\t\t},\r\n\t\t'.connection-wrap': {\r\n\t\t\tfill: 'none'\r\n\t\t}\r\n\t},\r\n\ttoolMarkup: [\r\n\t\t'',\r\n '',\r\n\t\t'',\r\n\t\t'',\r\n\t\t'Remove link.',\r\n\t\t'',\r\n\t\t''\r\n\t].join('')\r\n});","import { dia as Dia, shapes } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Image.define('cyberThing.DecoratedRect',\r\n\t{\r\n\t\ttype: 'cyberThing.DecoratedRect',\r\n\t\tsize: { width: 53, height: 42 },\r\n\t\tattrs: {\r\n\t\t\timage: {\r\n\t\t\t\twidth: 53,\r\n\t\t\t\theight: 42,\r\n\t\t\t\t'xlink:href': './assets/image-icon1.svg'\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\ttext: '',\r\n\t\t\t\t'font-family': 'Roboto Condensed',\r\n\t\t\t\t'font-weight': 'Normal',\r\n\t\t\t\t'font-size': 9,\r\n\t\t\t\tdisplay: '',\r\n\t\t\t\tstroke: '#000',\r\n\t\t\t\t'stroke-width': 0,\r\n\t\t\t\t'fill': '#222138'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.DataSelector',\r\n\t{\r\n\t\ttype: 'cyberThing.DataSelector',\r\n\t\tsize: { width: 220, height: 710 }\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.Table',\r\n\t{\r\n\t\ttype: 'cyberThing.Table',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0.3\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tfill: '#383838'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.Trigger',\r\n\t{\r\n\t\ttype: 'cyberThing.Trigger',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0.3\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tfill: '#383838'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.JSFunction',\r\n\t{\r\n\t\ttype: 'cyberThing.JSFunction',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0.3\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tfill: '#383838'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.APIMethod',\r\n\t{\r\n\t\ttype: 'cyberThing.APIMethod',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0.3\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tfill: '#383838'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.CSharpFunction',\r\n\t{\r\n\t\ttype: 'cyberThing.CSharpFunction',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0.3\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tfill: '#383838'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes } from 'libs/rappid/build/rappid';\r\n\r\nshapes.devs.Model.define('cyberThing.Param', {\r\n\tports: {\r\n\t\tgroups: {\r\n\t\t\t'in': {\r\n\t\t\t\tmarkup: '',\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'.port-body': {\r\n\t\t\t\t\t\tfill: '#61549C',\r\n\t\t\t\t\t\tstrokeWidth: 0\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'.port-label': {\r\n\t\t\t\t\t\tfontSize: 11,\r\n\t\t\t\t\t\tfill: '#61549C',\r\n\t\t\t\t\t\tfontWeight: 800\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tlabel: {\r\n\t\t\t\t\tposition: {\r\n\t\t\t\t\t\tname: 'left',\r\n\t\t\t\t\t\targs: {\r\n\t\t\t\t\t\t\ty: 0\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\ttype: 'in'\r\n\t\t\t},\r\n\t\t\t'out': {\r\n\t\t\t\tmarkup: '',\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'.port-body': {\r\n\t\t\t\t\t\tfill: '#61549C',\r\n\t\t\t\t\t\tstrokeWidth: 0\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'.port-label': {\r\n\t\t\t\t\t\tfontSize: 11,\r\n\t\t\t\t\t\tfill: '#61549C',\r\n\t\t\t\t\t\tfontWeight: 800\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tlabel: {\r\n\t\t\t\t\tposition: {\r\n\t\t\t\t\t\tname: 'right',\r\n\t\t\t\t\t\targs: {\r\n\t\t\t\t\t\t\ty: 0\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\ttype: 'out'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});","import { dia as Dia, shapes } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.Source',\r\n\t{\r\n\t\ttype: 'cyberThing.Source',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.Destination',\r\n\t{\r\n\t\ttype: 'cyberThing.Destination',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.Group',\r\n\t{\r\n\t\ttype: 'cyberThing.Group',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0.3\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tfill: '#383838'\r\n\t\t\t}\r\n\t\t},\r\n\t\ttoolMarkup: ['',\r\n\t\t\t'',\r\n\t\t\t'',\r\n\t\t\t'Remove',\r\n\t\t\t'',\r\n\t\t\t''].join(''),\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/DecoratedRect';\r\n\r\nvar iconTemplate = V('');\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass DecoratedRectView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.DecoratedRectView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.vel.append(iconTemplate.clone());\r\n\t}\r\n});","import { dia as Dia, shapes, V, g } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/Table';\r\n\r\nvar template = V('</g>');\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass TableView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.TableView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.position(0, 0, { parentRelative: true });\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 15;\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.vel.append(template.clone());\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet toggleIcon = '\\uf062';\r\n\t\tlet propertyIcons = '';\r\n\r\n\t\tif(this.model.attributes.attrs.IsCollapsed){\r\n\t\t\ttoggleIcon = '\\uf063';\r\n\t\t}\r\n\r\n\t\tif(this.model.attributes.attrs.IsSearchExisting){\r\n\t\t\tpropertyIcons += '\\uf069';\r\n\t\t}\r\n\r\n\t\tif (this.model.attributes.attrs.UseMatching) {\r\n\t\t\tpropertyIcons += '\\uf24e';\r\n\t\t}\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.icons': {\r\n\t\t\t\t'ref-x': 0.9,\r\n\t\t\t\t'ref-y': 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\ttext: propertyIcons\r\n\t\t\t},\r\n\t\t\t'.toggle-icon': {\r\n\t\t\t\t\"ref-y\": 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\t\"ref-x\": 0,\r\n\t\t\t\trefX2: 10,\r\n\t\t\t\ttext: toggleIcon\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n});","import { dia as Dia, shapes, V, g } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport * as _ from 'underscore';\r\n\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/Trigger';\r\n\r\nvar template = V('<g class=\"rotatable\"><g class=\"scalable\"><rect/></g><text class=\"shape-label\"/><text class=\"toggle-icon fa\"/><title/></g>');\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass TriggerView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvar padding = { top: 25, left: 10, right: 20, bottom: 10 };\r\n\r\njoint.shapes.cyberThing.TriggerView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.position(0, 0, { parentRelative: true });\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 15;\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.vel.append(template.clone());\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet icon = '\\uf062';\r\n\r\n\t\tif(this.model.attributes.attrs.IsCollapsed){\r\n\t\t\ticon = '\\uf063';\r\n\t\t}\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.toggle-icon': {\r\n\t\t\t\t\"ref-y\": 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\t\"ref-x\": 0,\r\n\t\t\t\trefX2: 10,\r\n\t\t\t\ttext: icon\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n});","import { dia as Dia, shapes, V, g } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport * as _ from 'underscore';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/JSFunction';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { EVENTS } from \"./ParamView/Events\";\r\nconst _labels = LABELS;\r\n\r\nconst getTemplate = () => {\r\n\treturn V('<g class=\"rotatable\">' +\r\n\t\t'<g class=\"scalable\"><rect/></g>' +\r\n\t\t'<foreignObject class=\"fobj\" id=\"v-9\" width=\"40\" height=\"21\">' +\r\n\t\t' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n\t\t` <a class=\"stateButton\" id=\"showFunctionDesigner\" title=\"${_labels.FUNCTION_DESIGNER}\"><i class=\"fa fa-external-link\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t`</foreignObject><a title=\"${_labels.FUNCTION_DESIGNER}\"><text class=\"shape-label\"/></a>` +\r\n\t\t'<text class=\"toggle-icon fa\"/><title/>' +\r\n\t\t'</g>');\r\n}\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass JSFunctionView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.JSFunctionView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 15;\r\n\t\tthis.model.position(0, 0, { parentRelative: true });\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\t},\r\n\r\n\tbindEvents: function () {\r\n\r\n\t\tlet functionDesignerButtons = this.template.find('#showFunctionDesigner');\r\n\t\t_.each(functionDesignerButtons, (button: any) => {\r\n\t\t\tif (button && button.node) {\r\n\t\t\t\t$(button.node).on('click', () => {\r\n\t\t\t\t\tthis.model.trigger(EVENTS.SHOW_FUNCTION_DESIGNER, this.model.attributes.recordId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.template = getTemplate();\r\n\t\tthis.vel.append(this.template);\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet icon = '\\uf062';\r\n\r\n\t\tif(this.model.attributes.isCollapsed){\r\n\t\t\ticon = '\\uf063';\r\n\t\t}\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.toggle-icon': {\r\n\t\t\t\t\"ref-y\": 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\t\"ref-x\": 0,\r\n\t\t\t\trefX2: 10,\r\n\t\t\t\ttext: icon\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n});","import { dia as Dia, shapes, V, g } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport * as _ from 'underscore';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/APIMethod';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { EVENTS } from \"./ParamView/Events\";\r\nconst _labels = LABELS;\r\n\r\nconst getTemplate = () => {\r\n\treturn V('<g class=\"rotatable\">' +\r\n\t\t'<g class=\"scalable\"><rect/></g>' +\r\n\t\t'<foreignObject class=\"fobj\" id=\"v-9\" width=\"40\" height=\"21\">' +\r\n\t\t' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n\t\t` <a class=\"stateButton\" id=\"showFunctionDesigner\" title=\"${_labels.FUNCTION_DESIGNER}\"><i class=\"fa fa-external-link\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t`</foreignObject><a title=\"${_labels.FUNCTION_DESIGNER}\"><text class=\"shape-label\"/></a>` +\r\n\t\t'<text class=\"toggle-icon fa\"/><title/>' +\r\n\t\t'</g>');\r\n}\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass APIMethodView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.APIMethodView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 15;\r\n\t\tthis.model.position(0, 0, { parentRelative: true });\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.template = getTemplate();\r\n\t\tthis.vel.append(this.template);\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\tbindEvents: function () {\r\n\r\n\t\tlet functionDesignerButtons = this.template.find('#showFunctionDesigner');\r\n\t\t_.each(functionDesignerButtons, (button: any) => {\r\n\t\t\tif (button && button.node) {\r\n\t\t\t\t$(button.node).on('click', () => {\r\n\t\t\t\t\tthis.model.trigger(EVENTS.SHOW_FUNCTION_DESIGNER, this.model.attributes.recordId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet icon = '\\uf062';\r\n\r\n\t\tif(this.model.attributes.attrs.IsCollapsed){\r\n\t\t\ticon = '\\uf063';\r\n\t\t}\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.toggle-icon': {\r\n\t\t\t\t\"ref-y\": 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\t\"ref-x\": 0,\r\n\t\t\t\trefX2: 10,\r\n\t\t\t\ttext: icon\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n});","import { dia as Dia, shapes, V, g } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport * as _ from 'underscore';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/CSharpFunction';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { EVENTS } from \"./ParamView/Events\";\r\nconst _labels = LABELS;\r\n\r\nconst getTemplate = () => {\r\n\treturn V('<g class=\"rotatable\">' +\r\n\t\t'<g class=\"scalable\"><rect/></g>' +\r\n\t\t'<foreignObject class=\"fobj\" id=\"v-9\" width=\"40\" height=\"21\">' +\r\n\t\t' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n\t\t` <a class=\"stateButton\" id=\"showFunctionDesigner\" title=\"${_labels.FUNCTION_DESIGNER}\"><i class=\"fa fa-external-link\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t`</foreignObject><a title=\"${_labels.FUNCTION_DESIGNER}\"><text class=\"shape-label\"/></a>` +\r\n\t\t'<text class=\"toggle-icon fa\"/><title/>' +\r\n\t\t'</g>');\r\n}\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass CSharpFunctionView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.CSharpFunctionView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 15;\r\n\t\tthis.model.position(0, 0, { parentRelative: true });\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.template = getTemplate();\r\n\t\tthis.vel.append(this.template);\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\tbindEvents: function () {\r\n\r\n\t\tlet functionDesignerButtons = this.template.find('#showFunctionDesigner');\r\n\t\t_.each(functionDesignerButtons, (button: any) => {\r\n\t\t\tif (button && button.node) {\r\n\t\t\t\t$(button.node).on('click', () => {\r\n\t\t\t\t\tthis.model.trigger(EVENTS.SHOW_FUNCTION_DESIGNER, this.model.attributes.recordId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet icon = '\\uf062';\r\n\r\n\t\tif(this.model.attributes.attrs.IsCollapsed){\r\n\t\t\ticon = '\\uf063';\r\n\t\t}\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.toggle-icon': {\r\n\t\t\t\t\"ref-y\": 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\t\"ref-x\": 0,\r\n\t\t\t\trefX2: 10,\r\n\t\t\t\ttext: icon\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n});","const Palette_945d60 = '#945d60';\r\nconst Palette_383838 = '#383838';\r\nexport enum TextColour {\r\n\tSource = Palette_945d60,\r\n\tDestination = Palette_945d60,\r\n\tTable = Palette_383838,\r\n\tTrigger = Palette_383838,\r\n\tJSFunction = Palette_383838,\r\n\tCSharpFunction = Palette_383838,\r\n\tAPIMethod = Palette_383838,\r\n\tParam = '#fff'\r\n}","const Num_16 = 16;\r\nconst Num_18 = 18;\r\nexport enum FontSize {\r\n\tSource = Num_16,\r\n\tDestination = Num_16,\r\n\tTable = Num_18,\r\n\tTrigger = Num_18,\r\n\tJSFunction = Num_18,\r\n\tAPIMethod = Num_18,\r\n\tCSharpFunction = Num_18,\r\n\tParam = 13\r\n}","const Palette_945d60 = '#945d60';\r\nconst Palette_CCCCCC = '#CCCCCC';\r\nexport enum BackgroundColour {\r\n\tSource = Palette_945d60,\r\n\tDestination = Palette_945d60,\r\n\tTable = Palette_CCCCCC,\r\n\tGroup = Palette_CCCCCC,\r\n\tTrigger = Palette_CCCCCC,\r\n\tJSFunction = Palette_CCCCCC,\r\n\tCSharpFunction = Palette_CCCCCC,\r\n\tAPIMethod = Palette_CCCCCC,\r\n\tParam = '#EAC67A'\r\n}","const Palette_383838 = '#383838';\r\nexport enum BorderColour {\r\n\tSource = Palette_383838,\r\n\tDestination = Palette_383838,\r\n\tTable = Palette_383838,\r\n\tTrigger = Palette_383838,\r\n\tJSFunction = Palette_383838,\r\n\tAPIMethod = Palette_383838,\r\n\tCSharpFunction = Palette_383838,\r\n\tParam = '#A1ACB2',\r\n\tGroup = Palette_383838\r\n}","const Num_190 = 190;\r\nconst Num_205 = 205;\r\nexport enum CanvasShapeWidth {\r\n\tZone = Num_205,\r\n\tNode = Num_190,\r\n\tParam = 160,\r\n\tFunctionNode = 355,\r\n\tFunctionZone = 375,\r\n\tSource = Num_205,\r\n\tDestination = Num_205,\r\n\tTrigger = Num_190,\r\n\tJSFunction = Num_190,\r\n\tCSharpFunction = Num_190,\r\n\tTable = Num_190\r\n}","import * as joint from 'libs/rappid/build/rappid';\r\n\r\nimport { ICanvasItemSizeObject } from 'Core/Controls/CanvasDesigner/Interfaces/ICanvasItemSizeObject';\r\nimport { IPorts } from 'Core/Controls/CanvasDesigner/Interfaces/IPorts';\r\nimport { ICanvasItemPositionObject } from 'Core/Controls/CanvasDesigner/Interfaces/ICanvasItemPositionObject';\r\nimport { IOriginalCanvasItemSize } from 'Core/Controls/CanvasDesigner/Interfaces/IOriginalCanvasItemSize';\r\nimport { TextColour } from 'Core/Controls/CanvasDesigner/Enums/TextColour';\r\nimport { FontSize } from 'Core/Controls/CanvasDesigner/Enums/FontSize';\r\nimport { BackgroundColour } from 'Core/Controls/CanvasDesigner/Enums/BackgroundColour';\r\nimport { CanvasModelState } from 'Core/Controls/CanvasDesigner/Enums/CanvasModelState';\r\nimport { BorderColour } from 'Core/Controls/CanvasDesigner/Enums/BorderColour';\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nimport {\r\n\tCanvasItemModel,\r\n\tCanvasLinkModel,\r\n\tCanvasModel,\r\n\tCanvasIconModel,\r\n} from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\n\r\nfunction wrapText({\r\n\ttext,\r\n\twrapWidth,\r\n\tresultWidth,\r\n\twrapHeight,\r\n\tattributes\r\n}: {\r\n\ttext: string;\r\n\twrapWidth: number;\r\n\tresultWidth: number;\r\n\twrapHeight: number;\r\n\tattributes: joint.attributes.NativeSVGAttributes;\r\n}) {\r\n\tif(!text){\r\n\t\treturn text;\r\n\t}\r\n\tconst wrappedText = joint.util.breakText(text, { width: wrapWidth, height: wrapHeight }, attributes);\r\n\tif (text !== wrappedText) {\r\n\t\treturn `${joint.util.breakText(text, { width: resultWidth, height: wrapHeight }, attributes)}...`;\r\n\t}\r\n\treturn text;\r\n}\r\n\r\nexport class BasicCanvasItemViewModel {\r\n\tapiPackageId: number;\r\n\tid: number | string;\r\n\treplicationId: string;\r\n\trecordId: number;\r\n\tguid: string;\r\n\ttype: string;\r\n\tsize: ICanvasItemSizeObject;\r\n\tdefaultSize: ICanvasItemSizeObject;\r\n\tattrs: any;\r\n\tports: IPorts;\r\n\tposition: ICanvasItemPositionObject;\r\n\tangle: number;\r\n\tz: number;\r\n\tstate: number;\r\n\tnewlyCreated: boolean;\r\n\tinPorts: Array<string>;\r\n\toutPorts: Array<string>;\r\n\tsocketType: string;\r\n\tsort: number\r\n\tname: string;\r\n\ttranslatedName: string;\r\n\toriginalName: string;\r\n\tprotocolId: number;\r\n\tshapeId: number;\r\n\tshapeName: string;\r\n\tsideId: number;\r\n\tsideName: string;\r\n\tshapeSize: number;\r\n\tcollapsible: boolean;\r\n\ttoggled: boolean = false;\r\n\toriginalSize: IOriginalCanvasItemSize = null;\r\n\tgeneralProperties: any;\r\n\thidden: boolean = false;\r\n\ttabsArePresent: boolean = false;\r\n\ticon: CanvasIconModel;\r\n\ticonSize: ICanvasItemSizeObject;\r\n\tprotocolName: string;\r\n\tdefaultValue: string;\r\n\tproperties: string;\r\n\r\n\tconstructor(model: CanvasItemModel, defaultSize?: ICanvasItemSizeObject) {\r\n\t\tthis.id = model.Guid;\r\n\t\tthis.replicationId = model.ReplicationId;\r\n\t\tthis.recordId = model.Id;\r\n\t\tthis.guid = model.Guid;\r\n\t\tthis.type = `cyberThing.${model.TypeName}`;\r\n\t\tthis.size = defaultSize;\r\n\t\tthis.defaultSize = defaultSize;\r\n\t\tthis.originalName = model.Name;\r\n\t\tthis.position = { 'x': model.X, 'y': model.Y };\r\n\t\tthis.sort = model.Sort;\r\n\t\tthis.angle = 0;\r\n\t\tthis.z = model.Z;\r\n\t\tthis.state = model.State;\r\n\t\tthis.name = model.Name;\r\n\t\tthis.translatedName = model.TranslatedName;\r\n\t\tthis.protocolId = model.ProtocolId;\r\n\t\tthis.shapeId = model.ShapeId;\r\n\t\tthis.sideId = model.SideId;\r\n\t\tthis.shapeName = model.ShapeName;\r\n\t\tthis.sideName = model.SideName;\r\n\t\tthis.shapeSize = model.Size\r\n\t\tthis.newlyCreated = true;\r\n\t\tthis.collapsible = model.Collapsible;\r\n\t\tthis.icon = model.Icon;\r\n\t\tthis.attrs = this.GetDefaultAttrs(model);\r\n\t\tthis.protocolName = model.ProtocolName;\r\n\t\tthis.defaultValue = model.DefaultValue;\r\n\t\tthis.properties = model.Properties;\r\n\r\n\t\tconst properties = JSON.parse(this.properties);\r\n\r\n\t\tthis.apiPackageId = model.APIPackageId;\r\n\t}\r\n\r\n\tprivate GetDefaultAttrs(model) {\r\n\r\n\t\tconst initialName = model.TranslatedName || model.Name;\r\n\t\tlet name = initialName;\r\n\t\tconst hasIcon = model.Icon && model.Icon.IsImage || model.Icon && model.Icon.IsIcon;\r\n\r\n\t\tconst fontSettings = {\r\n\t\t\t\"font-size\": FontSize[model.TypeName],\r\n\t\t\t\"font-family\": \"Roboto Condensed\",\r\n\t\t\t\"font-weight\": 500\r\n\t\t};\r\n\r\n\t\tif (model.TypeName === CANVAS_TYPES.SOURCE || model.TypeName === CANVAS_TYPES.DESTINATION) {\r\n\t\t\tname = wrapText({\r\n\t\t\t\ttext: initialName,\r\n\t\t\t\twrapWidth: hasIcon ? 110 : 135,\r\n\t\t\t\tresultWidth: hasIcon ? 95 : 120,\r\n\t\t\t\twrapHeight: 20,\r\n\t\t\t\tattributes: fontSettings\r\n\t\t\t});\r\n\t\t} else if (\r\n\t\t\tmodel.TypeName === CANVAS_TYPES.TABLE ||\r\n\t\t\tmodel.TypeName === CANVAS_TYPES.TRIGGER ||\r\n\t\t\tmodel.TypeName === CANVAS_TYPES.JS_FUNCTION ||\r\n\t\t\tmodel.TypeName === CANVAS_TYPES.CSHARP_FUNCTION\r\n\t\t) {\r\n\t\t\tname = wrapText({\r\n\t\t\t\ttext: initialName,\r\n\t\t\t\twrapWidth: hasIcon ? 115 : 145,\r\n\t\t\t\tresultWidth: hasIcon ? 100 : 130,\r\n\t\t\t\twrapHeight: 25,\r\n\t\t\t\tattributes: fontSettings\r\n\t\t\t});\r\n\t\t} else if (model.TypeName === CANVAS_TYPES.PARAM) {\r\n\t\t\tname = wrapText({\r\n\t\t\t\ttext: initialName,\r\n\t\t\t\twrapWidth: hasIcon ? 105 : 130,\r\n\t\t\t\tresultWidth: hasIcon ? 95 : 120,\r\n\t\t\t\twrapHeight: 20,\r\n\t\t\t\tattributes: { // from css class \"label\"\r\n\t\t\t\t\t\"font-size\": 13,\r\n\t\t\t\t\t\"font-family\": '\"Open Sans\", sans-serif',\r\n\t\t\t\t\t\"font-weight\": 300\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else if (model.TypeName === CANVAS_TYPES.GROUP) {\r\n\t\t\tname = wrapText({\r\n\t\t\t\ttext: initialName,\r\n\t\t\t\twrapWidth: hasIcon ? 110 : 135,\r\n\t\t\t\tresultWidth: hasIcon ? 95 : 120,\r\n\t\t\t\twrapHeight: 20,\r\n\t\t\t\tattributes: { ...fontSettings, \"font-size\": 14 }\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttitle: { text: `${initialName}, ${model.Id}` },\r\n\t\t\t\".icons\": {\r\n\t\t\t\t\"text\": \"\",\r\n\t\t\t\t\"fill\": \"black\"\r\n\t\t\t},\r\n\t\t\t\".shape-label\":\r\n\t\t\t{\r\n\t\t\t\t\"fill\": TextColour[model.TypeName],\r\n\t\t\t\t\"text\": name,\r\n\t\t\t\t...fontSettings,\r\n\t\t\t\t\"stroke-width\": 0,\r\n\t\t\t\t\"y-alignment\": \"middle\"\r\n\t\t\t},\r\n\t\t\t\".\":\r\n\t\t\t{\r\n\t\t\t\t\"data-tooltip-position\": \"left\",\r\n\t\t\t\t\"data-tooltip-position-selector\": \".joint-stencil\",\r\n\r\n\t\t\t},\r\n\t\t\t\".body\":\r\n\t\t\t{\r\n\t\t\t\t\"stroke\": BorderColour[model.TypeName],\r\n\t\t\t\t\"fill\": BackgroundColour[model.TypeName],\r\n\t\t\t\t\"rx\": 0,\r\n\t\t\t\t\"ry\": 0,\r\n\t\t\t\t\"stroke-width\": 0.5,\r\n\t\t\t\t\"stroke-dasharray\": \"0\",\r\n\t\t\t\t\"shape-type\": model.ShapeId,\r\n\t\t\t\t\"protocol\": model.ProtocolId,\r\n\t\t\t\t\"size\": model.Size\r\n\t\t\t},\r\n\t\t\t\"rect\":\r\n\t\t\t{\r\n\t\t\t\t\"stroke\": BorderColour[model.TypeName],\r\n\t\t\t\t\"fill\": BackgroundColour[model.TypeName],\r\n\t\t\t\t\"width\": 30,\r\n\t\t\t\t\"height\": 50,\r\n\t\t\t\t\"stroke-width\": 0.5,\r\n\t\t\t\t\"stroke-dasharray\": \"0\"\r\n\t\t\t},\r\n\t\t\t'.tool-options': {\r\n\t\t\t\t'data-tooltip-class-name': 'small',\r\n\t\t\t\t'data-tooltip': initialName,\r\n\t\t\t\t'data-tooltip-position': 'left'\r\n\t\t\t},\r\n\r\n\t\t};\r\n\t}\r\n}","export class Utils {\r\n\tpublic static GetRandomArbitrary(min, max){\r\n\t\treturn Math.random() * (max - min) + min;\r\n\t};\r\n}","import { BasicCanvasItemViewModel } from 'Core/Controls/CanvasDesigner/Models/BasicCanvasItemViewModel';\r\nimport { CanvasItemModel, CanvasLinkModel } from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { CanvasShapeWidth } from 'Core/Controls/CanvasDesigner/Enums/CanvasShapeWidth';\r\nimport { ICanvasItemPositionObject } from 'Core/Controls/CanvasDesigner/Interfaces/ICanvasItemPositionObject';\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nexport class SourceViewModel extends BasicCanvasItemViewModel {\r\n\r\n\tparent: number | string = 0;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\tchildSocketsIds: Array<number> = [];\r\n\tattrs: any;\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { width: CanvasShapeWidth[CANVAS_TYPES.SOURCE], height: 420 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(30, 60);\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.EndPointUrl){\r\n\t\t\t\tthis.attrs.EndPointUrl = jsonProperties.EndPointUrl;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.CallbackUrl){\r\n\t\t\t\tthis.attrs.CallbackUrl = jsonProperties.CallbackUrl;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.ClientId){\r\n\t\t\t\tthis.attrs.ClientId = jsonProperties.ClientId;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.ClientSecret){\r\n\t\t\t\tthis.attrs.ClientSecret = jsonProperties.ClientSecret;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.SecretKey){\r\n\t\t\t\tthis.attrs.SecretKey = jsonProperties.SecretKey;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.Login){\r\n\t\t\t\tthis.attrs.Login = jsonProperties.Login;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.Password){\r\n\t\t\t\tthis.attrs.Password = jsonProperties.Password;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.Division){\r\n\t\t\t\tthis.attrs.Division = jsonProperties.Division;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.QueryString){\r\n\t\t\t\tthis.attrs.QueryString = jsonProperties.QueryString;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n\r\n\r\n\tSetEmbedds(link: CanvasLinkModel): void {\r\n\t\tthis.embeds.push(link.CanvasItem2Id || link.CanvasItem2Guid);\r\n\t}\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetPosition(position: ICanvasItemPositionObject): void {\r\n\t\tthis.position = position;\r\n\t}\r\n\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n}","import { BasicCanvasItemViewModel } from 'Core/Controls/CanvasDesigner/Models/BasicCanvasItemViewModel';\r\nimport { CanvasItemModel, CanvasLinkModel } from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { CanvasShapeWidth } from 'Core/Controls/CanvasDesigner/Enums/CanvasShapeWidth';\r\nimport { ICanvasItemPositionObject } from 'Core/Controls/CanvasDesigner/Interfaces/ICanvasItemPositionObject';\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nexport class DestinationViewModel extends BasicCanvasItemViewModel {\r\n\r\n\tparent: number | string = 0;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\tchildSocketsIds: Array<number> = [];\r\n\tattrs: any;\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { width: CanvasShapeWidth[CANVAS_TYPES.DESTINATION], height: 420 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(30, 60);\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.EndPointUrl){\r\n\t\t\t\tthis.attrs.EndPointUrl = jsonProperties.EndPointUrl;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.CallbackUrl){\r\n\t\t\t\tthis.attrs.CallbackUrl = jsonProperties.CallbackUrl;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.ClientId){\r\n\t\t\t\tthis.attrs.ClientId = jsonProperties.ClientId;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.ClientSecret){\r\n\t\t\t\tthis.attrs.ClientSecret = jsonProperties.ClientSecret;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.SecretKey){\r\n\t\t\t\tthis.attrs.SecretKey = jsonProperties.SecretKey;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.Login){\r\n\t\t\t\tthis.attrs.Login = jsonProperties.Login;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.Password){\r\n\t\t\t\tthis.attrs.Password = jsonProperties.Password;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.Division){\r\n\t\t\t\tthis.attrs.Division = jsonProperties.Division;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n\r\n\tSetEmbedds(link: CanvasLinkModel): void {\r\n\t\tthis.embeds.push(link.CanvasItem2Id || link.CanvasItem2Guid);\r\n\t}\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetPosition(position: ICanvasItemPositionObject): void {\r\n\t\tthis.position = position;\r\n\t}\r\n\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n}","import { BasicCanvasItemViewModel } from \"./BasicCanvasItemViewModel\";\r\nimport { CanvasItemModel } from \"./CanvasModel\";\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from \"../Enums/CanvasShapeWidth\";\r\nimport { JsonHubProtocol } from \"@microsoft/signalr\";\r\n\r\nexport class TableViewModel extends BasicCanvasItemViewModel {\r\n\tattrs: any;\r\n\tisCollapsed: boolean;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { 'width': CanvasShapeWidth['Node'], 'height': 30 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(60, 80);\r\n\t\tthis.attrs.cursor = 'grab';\r\n\t\tthis.attrs.IsCollapsed = false;\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\r\n\t\t\tif(jsonProperties.hasOwnProperty('Rappid') && !_.isNull(jsonProperties.Rappid) && !_.isUndefined(jsonProperties.Rappid) && jsonProperties.Rappid.hasOwnProperty('isCollapsed')){\r\n\t\t\t\tthis.attrs.IsCollapsed = jsonProperties.Rappid.isCollapsed;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsSearchExisting){\r\n\t\t\t\tthis.attrs.IsSearchExisting = jsonProperties.IsSearchExisting;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.UseMatching) {\r\n\t\t\t\tthis.attrs.UseMatching = jsonProperties.UseMatching;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.SkipCondition) {\r\n\t\t\t\tthis.attrs.SkipCondition = jsonProperties.SkipCondition;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.IsCheckOwnerProfile) {\r\n\t\t\t\tthis.attrs.IsCheckOwnerProfile = jsonProperties.IsCheckOwnerProfile;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.AddDaysToStart) {\r\n\t\t\t\tthis.attrs.AddDaysToStart = jsonProperties.AddDaysToStart;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.AddDaysToEnd) {\r\n\t\t\t\tthis.attrs.AddDaysToEnd = jsonProperties.AddDaysToEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.ODataFilter) {\r\n\t\t\t\tthis.attrs.ODataFilter = jsonProperties.ODataFilter;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.ExcludeCancelled) {\r\n\t\t\t\tthis.attrs.ExcludeCancelled = jsonProperties.ExcludeCancelled;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {\r\n\t\t}\r\n\t}\r\n}","export const PORT_ATTRIBUTES = {\r\n\t\"groups\":\r\n\t{\r\n\t\t\"in\":\r\n\t\t{\r\n\t\t\t\"markup\": \"<circle class=\\\"port-body\\\" r=\\\"10\\\"/>\",\r\n\t\t\t\"attrs\":\r\n\t\t\t{\r\n\t\t\t\t\".port-body\":\r\n\t\t\t\t{\r\n\t\t\t\t\t\"fill\": \"#5e738b\",\r\n\t\t\t\t\t\"strokeWidth\": 0,\r\n\t\t\t\t\t\"stroke\": \"#000\",\r\n\t\t\t\t\t\"r\": 10,\r\n\t\t\t\t\t\"magnet\": true\r\n\t\t\t\t},\r\n\t\t\t\t\".port-label\":\r\n\t\t\t\t{\r\n\t\t\t\t\t\"fontSize\": 11,\r\n\t\t\t\t\t\"fill\": \"#5e738b\",\r\n\t\t\t\t\t\"fontWeight\": 800\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"label\":\r\n\t\t\t{\r\n\t\t\t\t\"position\": {\r\n\t\t\t\t\t\"name\": \"left\",\r\n\t\t\t\t\t\"args\": {\r\n\t\t\t\t\t\t\"y\": 0\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"type\": \"in\",\r\n\t\t\t\"position\": {\r\n\t\t\t\t\"name\": \"left\"\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"out\":\r\n\t\t{\r\n\t\t\t\"markup\": \"<circle class=\\\"port-body\\\" r=\\\"10\\\"/>\",\r\n\t\t\t\"attrs\":\r\n\t\t\t{\r\n\t\t\t\t\".port-body\":\r\n\t\t\t\t{\r\n\t\t\t\t\t\"fill\": \"#5e738b\",\r\n\t\t\t\t\t\"strokeWidth\": 0,\r\n\t\t\t\t\t\"stroke\": \"#000\",\r\n\t\t\t\t\t\"r\": 10,\r\n\t\t\t\t\t\"magnet\": true\r\n\t\t\t\t},\r\n\t\t\t\t\".port-label\":\r\n\t\t\t\t{\r\n\t\t\t\t\t\"fontSize\": 11,\r\n\t\t\t\t\t\"fill\": \"#5e738b\",\r\n\t\t\t\t\t\"fontWeight\": 800\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"label\":\r\n\t\t\t{\r\n\t\t\t\t\"position\":\r\n\t\t\t\t{\r\n\t\t\t\t\t\"name\": \"right\",\r\n\t\t\t\t\t\"args\": {\r\n\t\t\t\t\t\t\"y\": 0\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"type\": \"out\",\r\n\t\t\t\"position\": {\r\n\t\t\t\t\"name\": \"right\"\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\"items\": [\r\n\t\t{ \"id\": \"in1\", \"group\": \"in\", \"attrs\": { \".port-label\": { \"text\": \"\" } } },\r\n\t\t{ \"id\": \"out\", \"group\": \"out\", \"attrs\": { \".port-label\": { \"text\": \"\" } } }\r\n\t]\r\n};","export const SIDES = {\r\n\tIN: 'IN',\r\n\tOUT: 'OUT'\r\n}","import { BasicCanvasItemViewModel } from './BasicCanvasItemViewModel';\r\nimport { CanvasItemModel, CanvasLinkModel } from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from 'Core/Controls/CanvasDesigner/Enums/CanvasShapeWidth';\r\nimport { PORT_ATTRIBUTES } from 'Core/Controls/CanvasDesigner/Constants/PortAttributes';\r\nimport { SIDES } from 'Core/Controls/CanvasDesigner/Constants/Sides';\r\nimport { SHAPES } from 'Core/Controls/CanvasDesigner/Constants/Shapes';\r\nimport {dia as Dia, shapes, dia} from 'libs/rappid/build/rappid';\r\n\r\nexport class ParamViewModel extends BasicCanvasItemViewModel {\r\n\r\n\tparent: number | string = 0;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\trelatedIconId: string;\r\n\tchildSocketsIds: Array<number> = [];\r\n\tattrs: any;\r\n\tports: any;\r\n\tinPorts: Array<string> = [];\r\n\toutPorts: Array<string> = [];\r\n\r\n\tuseSubKey: boolean;\r\n\tfilledFromField: number;\r\n\tfilledFromTable: number;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { 'width': CanvasShapeWidth['Param'], 'height': 30 });\r\n\r\n\t\tthis.useSubKey = false;\r\n\r\n\t\tthis.z = Utils.GetRandomArbitrary(80, 100);\r\n\t\tthis.ports = PORT_ATTRIBUTES;\r\n\r\n\t\tif (model.SideName === SIDES.IN) {\r\n\t\t\tthis.inPorts.push('');\r\n\t\t}\r\n\r\n\t\tif (model.SideName === SIDES.OUT) {\r\n\t\t\tthis.outPorts.push('');\r\n\t\t}\r\n\r\n\t\tif (model.ShapeName === SHAPES.LINK_FIELD) {\r\n\t\t\tthis.attrs.rect.fill = '#B8C4CC';\r\n\t\t}\r\n\r\n\t\tthis.filledFromField = model.FilledFromField;\r\n\t\tthis.filledFromTable = model.FilledFromTable;\t\t\r\n\t\tthis.InitProperties(model.Properties)\r\n\t}\r\n\r\n\tSetPorts(type, port): void {\r\n\t\tthis[`${type}Ports`].push(port);\r\n\t}\r\n\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\t\t\tif(jsonProperties && jsonProperties.UseSubKey){\r\n\t\t\t\tthis.useSubKey = jsonProperties.UseSubKey;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsRecordIdentifier){\r\n\t\t\t\tthis.attrs.IsRecordIdentifier = jsonProperties.IsRecordIdentifier;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsSearchBySubKey){\r\n\t\t\t\tthis.attrs.IsSearchBySubKey = jsonProperties.IsSearchBySubKey;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.UseSubKey){\r\n\t\t\t\tthis.attrs.UseSubKey = jsonProperties.UseSubKey;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.FileLocation){\r\n\t\t\t\tthis.attrs.FileLocation = jsonProperties.FileLocation;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.UsePrimaryKey){\r\n\t\t\t\tthis.attrs.UsePrimaryKey = jsonProperties.UsePrimaryKey;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.ImageFileLocation){\r\n\t\t\t\tthis.attrs.ImageFileLocation = jsonProperties.ImageFileLocation;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.FilledFrom){\r\n\t\t\t\tthis.attrs.FilledFrom = jsonProperties.FilledFrom;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n}","export const SHAPES = {\r\n\tDESTINATION_DB: 'DestinationDB',\r\n\tSOURCE_DB: 'SourceDB',\r\n\tLINK_FIELD: 'LinkField'\r\n};","import { BasicCanvasItemViewModel } from \"./BasicCanvasItemViewModel\";\r\nimport { ICanvasItemPositionObject } from \"../Interfaces/ICanvasItemPositionObject\";\r\nimport { CanvasItemModel, CanvasLinkModel } from \"./CanvasModel\";\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from \"../Enums/CanvasShapeWidth\";\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nexport class JSFunctionViewModel extends BasicCanvasItemViewModel {\r\n\tparent: number | string;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\tchildSocketsIds: Array<number> = [];\r\n\trelatedIconId: string;\r\n\tattrs: any;\r\n\ttoggled: boolean;\r\n\tsourceType: string;\r\n\tconnectedNode: number | string;\r\n\tinitialPosition: ICanvasItemPositionObject;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { width: CanvasShapeWidth[CANVAS_TYPES.TRIGGER], height: 35 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(60, 80);\r\n\t\tthis.attrs.cursor = 'grab';\r\n\t\tthis.attrs.IsCollapsed = false;\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tSetEmbedds(link: CanvasLinkModel): void {\r\n\t\tthis.embeds.push(link.CanvasItem2Id || link.CanvasItem2Guid);\r\n\t}\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetPosition(position: ICanvasItemPositionObject): void {\r\n\t\tthis.position = position;\r\n\t}\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\t\t\tif(jsonProperties.hasOwnProperty('Rappid') && jsonProperties.Rappid.hasOwnProperty('isCollapsed')){\r\n\t\t\t\tthis.attrs.IsCollapsed = jsonProperties.Rappid.isCollapsed;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsSearchExisting){\r\n\t\t\t\tthis.attrs.IsSearchExisting = jsonProperties.IsSearchExisting;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n}","import { BasicCanvasItemViewModel } from \"Core/Controls/CanvasDesigner/Models/BasicCanvasItemViewModel\";\r\nimport { ICanvasItemPositionObject } from \"Core/Controls/CanvasDesigner/Interfaces/ICanvasItemPositionObject\";\r\nimport { CanvasItemModel, CanvasLinkModel } from \"Core/Controls/CanvasDesigner/Models/CanvasModel\";\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from \"Core/Controls/CanvasDesigner/Enums/CanvasShapeWidth\";\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nexport class TriggerViewModel extends BasicCanvasItemViewModel {\r\n\tparent: number | string;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\tchildSocketsIds: Array<number> = [];\r\n\trelatedIconId: string;\r\n\tattrs: any;\r\n\ttoggled: boolean;\r\n\tsourceType: string;\r\n\tconnectedNode: number | string;\r\n\tinitialPosition: ICanvasItemPositionObject;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { width: CanvasShapeWidth[CANVAS_TYPES.TRIGGER], height: 35 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(60, 80);\r\n\t\tthis.attrs.cursor = 'grab';\r\n\t\tthis.attrs.IsCollapsed = false;\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tSetEmbedds(link: CanvasLinkModel): void {\r\n\t\tthis.embeds.push(link.CanvasItem2Id || link.CanvasItem2Guid);\r\n\t}\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetPosition(position: ICanvasItemPositionObject): void {\r\n\t\tthis.position = position;\r\n\t}\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\t\t\tif(jsonProperties.hasOwnProperty('Rappid') && jsonProperties.Rappid.hasOwnProperty('isCollapsed')){\r\n\t\t\t\tthis.attrs.IsCollapsed = jsonProperties.Rappid.isCollapsed;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsSearchExisting){\r\n\t\t\t\tthis.attrs.IsSearchExisting = jsonProperties.IsSearchExisting;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n}","import { BasicCanvasItemViewModel } from \"./BasicCanvasItemViewModel\";\r\nimport { ICanvasItemPositionObject } from \"../Interfaces/ICanvasItemPositionObject\";\r\nimport { CanvasItemModel, CanvasLinkModel } from \"./CanvasModel\";\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from \"../Enums/CanvasShapeWidth\";\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nexport class CSharpFunctionViewModel extends BasicCanvasItemViewModel {\r\n\tparent: number | string;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\tchildSocketsIds: Array<number> = [];\r\n\trelatedIconId: string;\r\n\tattrs: any;\r\n\ttoggled: boolean;\r\n\tsourceType: string;\r\n\tconnectedNode: number | string;\r\n\tinitialPosition: ICanvasItemPositionObject;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { width: CanvasShapeWidth[CANVAS_TYPES.TRIGGER], height: 35 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(60, 80);\r\n\t\tthis.attrs.cursor = 'grab';\r\n\t\tthis.attrs.IsCollapsed = false;\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tSetEmbedds(link: CanvasLinkModel): void {\r\n\t\tthis.embeds.push(link.CanvasItem2Id || link.CanvasItem2Guid);\r\n\t}\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetPosition(position: ICanvasItemPositionObject): void {\r\n\t\tthis.position = position;\r\n\t}\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\t\t\tif(jsonProperties.hasOwnProperty('Rappid') && jsonProperties.Rappid.hasOwnProperty('isCollapsed')){\r\n\t\t\t\tthis.attrs.IsCollapsed = jsonProperties.Rappid.isCollapsed;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsBulkSet){\r\n\t\t\t\tthis.attrs.IsBulkSet = jsonProperties.IsBulkSet;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n}","export enum CanvasModelState { NoChanges, New, Changed, Deleted }","import { CanvasModelState } from 'Core/Controls/CanvasDesigner/Enums/CanvasModelState';\r\nimport { ICanvasLinkTargets } from 'Core/Controls/CanvasDesigner/Interfaces/ICanvasLinkTargets';\r\nimport { CanvasLinkModel } from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\n\r\nexport class ArrowViewModel {\r\n\tid: string;\r\n\ttype: string = 'cyberThing.Arrow';\r\n\tstate: number = CanvasModelState.NoChanges;\r\n\tsource: ICanvasLinkTargets;\r\n\ttarget: ICanvasLinkTargets;\r\n\tvertices: Array<string>;\r\n\r\n\tconstructor(link: CanvasLinkModel) {\r\n\t\tthis.vertices = [];\r\n\t\tthis.id = link.CanvasItem1Guid + '' + link.CanvasItem2Guid;\r\n\r\n\t\tthis.source = {\r\n\t\t\tid: link.CanvasItem1Guid,\r\n\t\t\tselector: '.port-body'\r\n\t\t};\r\n\r\n\t\tthis.target = {\r\n\t\t\tid: link.CanvasItem2Guid,\r\n\t\t\tselector: '.port-body'\r\n\t\t};\r\n\r\n\t\tthis.InitProperties(link.Properties);\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\t\t\tif(jsonProperties.Rappid && jsonProperties.Rappid.vertices){\r\n\t\t\t\tthis.vertices = jsonProperties.Rappid.vertices\r\n\t\t\t}\r\n\t\t}catch (e) {}\r\n\t}\r\n}","import { BasicCanvasItemViewModel } from \"./BasicCanvasItemViewModel\";\r\nimport { ICanvasItemPositionObject } from \"../Interfaces/ICanvasItemPositionObject\";\r\nimport { CanvasItemModel, CanvasLinkModel } from \"./CanvasModel\";\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from \"../Enums/CanvasShapeWidth\";\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nexport class APIMethodViewModel extends BasicCanvasItemViewModel {\r\n\tparent: number | string;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\tchildSocketsIds: Array<number> = [];\r\n\trelatedIconId: string;\r\n\tattrs: any;\r\n\ttoggled: boolean;\r\n\tsourceType: string;\r\n\tconnectedNode: number | string;\r\n\tinitialPosition: ICanvasItemPositionObject;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { width: CanvasShapeWidth[CANVAS_TYPES.TRIGGER], height: 35 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(60, 80);\r\n\t\tthis.attrs.cursor = 'grab';\r\n\t\tthis.attrs.IsCollapsed = false;\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tSetEmbedds(link: CanvasLinkModel): void {\r\n\t\tthis.embeds.push(link.CanvasItem2Id || link.CanvasItem2Guid);\r\n\t}\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetPosition(position: ICanvasItemPositionObject): void {\r\n\t\tthis.position = position;\r\n\t}\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\t\t\tif(jsonProperties.hasOwnProperty('Rappid') && jsonProperties.Rappid.hasOwnProperty('isCollapsed')){\r\n\t\t\t\tthis.attrs.IsCollapsed = jsonProperties.Rappid.isCollapsed;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsSearchExisting){\r\n\t\t\t\tthis.attrs.IsSearchExisting = jsonProperties.IsSearchExisting;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n}","import { BasicCanvasItemViewModel } from \"./BasicCanvasItemViewModel\";\r\nimport { CanvasItemModel } from \"./CanvasModel\";\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from \"../Enums/CanvasShapeWidth\";\r\n\r\nexport class GroupViewModel extends BasicCanvasItemViewModel {\r\n\tattrs: any;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { 'width': CanvasShapeWidth.Table, 'height': 30 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(60, 80);\r\n\t}\r\n}","import * as joint from 'libs/rappid/build/rappid';\r\nimport * as _ from 'underscore';\r\n\r\nexport var GridLayout = {\r\n\r\n\tlayout: function (graphOrCells, opt) {\r\n\r\n\t\tvar graph;\r\n\r\n\t\tif (graphOrCells instanceof joint.dia.Graph) {\r\n\t\t\tgraph = graphOrCells;\r\n\t\t} else {\r\n\t\t\tgraph = (new joint.dia.Graph()).resetCells(graphOrCells, { dry: true });\r\n\t\t}\r\n\r\n\t\t// This is not needed anymore.\r\n\t\tgraphOrCells = null;\r\n\r\n\t\topt = opt || {};\r\n\r\n\t\tvar elements = graph.getElements();\r\n\r\n\t\telements = _.sortBy(elements, (item: any) => { return item.get('name'); });\r\n\t\telements = _.sortBy(elements, (item: any) => { return item.get('sort'); });\r\n\r\n\t\t// number of columns\r\n\t\tvar columns = opt.columns || 1;\r\n\t\tvar rows = Math.ceil(elements.length / columns);\r\n\t\t// shift the element horizontally by a given amount\r\n\t\tvar dx = opt.dx || 0;\r\n\r\n\t\t// shift the element vertically by a given amount\r\n\t\tvar dy = opt.dy || 0;\r\n\t\t// position the elements in the centre of a grid cell\r\n\t\tvar centre = opt.centre === undefined || opt.centre !== false;\r\n\r\n\t\t// resize the elements to fit a grid cell & preserves ratio\r\n\t\tvar resizeToFit = !!opt.resizeToFit;\r\n\r\n\t\t// coordinates of the most top-left element.\r\n\t\tvar marginX = opt.marginX || 0;\r\n\t\tvar marginY = opt.marginY || 0;\r\n\r\n\t\t// width of a column\r\n\t\tvar columnWidths = [];\r\n\t\tvar columnWidth = opt.columnWidth;\r\n\t\tif (columnWidth === 'compact') {\r\n\r\n\t\t\tfor (var cIndex = 0; cIndex < columns; cIndex++) {\r\n\t\t\t\tvar elementsAtColumn = this._elementsAtColumn(elements, cIndex, columns);\r\n\t\t\t\tcolumnWidths.push(this._maxDim(elementsAtColumn, 'width') + dx);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!columnWidth || joint.util.isString(columnWidth)) {\r\n\t\t\t\tcolumnWidth = this._maxDim(elements, 'width') + dx;\r\n\t\t\t}\r\n\t\t\tfor (var i = 0; i < columns; i++) {\r\n\t\t\t\tcolumnWidths.push(columnWidth);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar columnsX = this._accumulate(columnWidths, marginX);\r\n\r\n\t\tvar rowHeights = [];\r\n\t\telements.forEach(function(element, index) {\r\n\t\t\trowHeights.push(element.get('size').height + dy);\r\n\t\t});\r\n\r\n\t\tvar rowsY = this._accumulate(rowHeights, marginY);\r\n\r\n\t\tgraph.startBatch('layout');\r\n\r\n\t\telements.forEach(function (element, index) {\r\n\t\t\tvar cIndex = index % columns;\r\n\t\t\tvar rIndex = Math.floor(index / columns);\r\n\t\t\tvar cx = 0;\r\n\t\t\tvar cy = 0;\r\n\t\t\telement.position(columnsX[cIndex] + dx, rowsY[rIndex] + dy, opt);\r\n\t\t});\r\n\r\n\t\tgraph.stopBatch('layout');\r\n\t},\r\n\r\n\t_maxDim: function (elements, dimension) {\r\n\t\treturn elements.reduce(function (max, el) {\r\n\t\t\treturn Math.max(el.get('size')[dimension], max);\r\n\t\t}, 0);\r\n\t},\r\n\r\n\t_elementsAtRow: function (elements, rowIndex, numberOfColumns) {\r\n\t\tvar elementsAtRow = [];\r\n\t\tvar i = numberOfColumns * rowIndex;\r\n\t\tvar n = i + numberOfColumns;\r\n\t\tfor (; i < n; i++) {\r\n\t\t\telementsAtRow.push(elements[i]);\r\n\t\t}\r\n\t\treturn elementsAtRow;\r\n\t},\r\n\r\n\t_elementsAtColumn: function (elements, columnIndex, numberOfColumns) {\r\n\t\tvar elementsAtColumn = [];\r\n\t\tvar i = columnIndex;\r\n\t\tvar n = elements.length;\r\n\t\tfor (; i < n; i += numberOfColumns) {\r\n\t\t\telementsAtColumn.push(elements[i]);\r\n\t\t}\r\n\t\treturn elementsAtColumn;\r\n\t},\r\n\r\n\t_accumulate: function (array, baseVal) {\r\n\t\treturn array.reduce(function (res, val, i) {\r\n\t\t\tres.push(res[i] + val);\r\n\t\t\treturn res;\r\n\t\t}, [baseVal || 0]);\r\n\t}\r\n}","import * as joint from 'libs/rappid/build/rappid';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {CANVAS_TYPES} from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\nimport {\r\n CanvasItemModel,\r\n CanvasLinkModel,\r\n CanvasModel,\r\n CanvasIconModel,\r\n ShapeModel,\r\n} from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport {dia as Dia, shapes, dia} from 'libs/rappid/build/rappid';\r\nimport {SourceViewModel} from 'Core/Controls/CanvasDesigner/Models/SourceViewModel';\r\nimport {DestinationViewModel} from 'Core/Controls/CanvasDesigner/Models/DestinationViewModel';\r\nimport {TableViewModel} from 'Core/Controls/CanvasDesigner/Models/TableViewModel';\r\nimport {ParamViewModel} from 'Core/Controls/CanvasDesigner/Models/ParamViewModel';\r\nimport {JSFunctionViewModel} from 'Core/Controls/CanvasDesigner/Models/JSFunctionViewModel';\r\nimport {TriggerViewModel} from 'Core/Controls/CanvasDesigner/Models/TriggerViewModel';\r\nimport {CSharpFunctionViewModel} from 'Core/Controls/CanvasDesigner/Models/CSharpFunctionViewModel';\r\nimport {ArrowViewModel} from 'Core/Controls/CanvasDesigner/Models/ArrowViewModel';\r\nimport {APIMethodViewModel} from 'Core/Controls/CanvasDesigner/Models/APIMethodViewModel';\r\nimport {GroupViewModel} from 'Core/Controls/CanvasDesigner/Models/GroupViewModel';\r\n\r\nimport {GridLayout} from 'Core/Controls/CanvasDesigner/GridLayout';\r\nimport {SIDES} from \"../Constants/Sides\";\r\nimport {P} from 'Core/Common/Promise';\r\nimport {EVENTS} from \"Core/Controls/CanvasDesigner/Shapes/Views/ParamView/Events\";\r\nimport {CanvasModelState} from \"../Enums/CanvasModelState\";\r\nimport {Event} from \"../../../Common/Event\";\r\nimport {QueryBuilder} from \"../../../../QueryBuilder/QueryBuilder\";\r\nimport {EVENTS as QUERY_BUILDER_EVENTS} from \"../../../../QueryBuilder/Events\";\r\nimport {Modal} from \"../../../Common/Modal\";\r\nimport * as ko from \"knockout\";\r\nimport {GenericDeserialize} from \"../../../../libs/cerialize\";\r\nimport {QueryExpressionModel} from \"../../Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel\";\r\nimport {CanvasDesignerStore} from \"../Stores/CanvasDesignerStore\";\r\nimport {BlockUI} from \"../../../Common/BlockUi\";\r\n\r\nexport class ShapeFactory extends Event {\r\n private _graph: joint.dia.Graph;\r\n private _paper: joint.dia.Paper;\r\n private _paperScroller: joint.ui.PaperScroller;\r\n private _root: CanvasItemModel;\r\n\r\n constructor(graph: joint.dia.Graph, paper: joint.dia.Paper, paperScroller: joint.ui.PaperScroller) {\r\n super();\r\n this._graph = graph;\r\n this._paper = paper;\r\n this._paperScroller = paperScroller;\r\n this.AddEvent(EVENTS.BACK_TO_DATA_SELECTOR);\r\n this.AddEvent(EVENTS.SHOW_FUNCTION_DESIGNER_REQUESTED);\r\n }\r\n\r\n public InitRoot(model: CanvasModel){\r\n this._root = _.find(model.CanvasItems, (item)=> item.TypeName === CANVAS_TYPES.DW_PACKAGE);\r\n }\r\n\r\n get Root(): CanvasItemModel{\r\n return this._root;\r\n }\r\n\r\n public BuildShapes(model: CanvasModel): P.Promise<any> {\r\n const deferredResult = P.defer<any>();\r\n let sourceShape: Dia.Element = null;\r\n let destinationShape: Dia.Element = null;\r\n let cells = [];\r\n let embeds = [];\r\n let arrows = [];\r\n let renderElements = [];\r\n let groups = [];\r\n\r\n _.each(model.CanvasItems, (item) => {\r\n if (item.State === CanvasModelState.Deleted) {\r\n return;\r\n }\r\n\r\n if (item.TypeName === CANVAS_TYPES.PARAM) {\r\n let parent = this.GetParentByTypes(model, item, [CANVAS_TYPES.TABLE, CANVAS_TYPES.JS_FUNCTION, CANVAS_TYPES.API_METHOD, CANVAS_TYPES.CSHARP_FUNCTION, CANVAS_TYPES.TRIGGER]);\r\n if (parent) {\r\n let isCollapsed = false;\r\n try {\r\n let properties = JSON.parse(parent.Properties);\r\n if (properties.hasOwnProperty('Rappid') && properties.Rappid.hasOwnProperty('isCollapsed')) {\r\n isCollapsed = properties.Rappid.isCollapsed;\r\n }\r\n } catch (e) {\r\n }\r\n if (!isCollapsed) {\r\n renderElements.push(item)\r\n }\r\n } else {\r\n renderElements.push(item)\r\n }\r\n } else {\r\n renderElements.push(item);\r\n }\r\n });\r\n\r\n let dataSelectors = _.filter(this._graph.getCells(), (item) => {\r\n return item instanceof joint.shapes.cyberThing.DataSelector;\r\n });\r\n\r\n cells = cells.concat(dataSelectors);\r\n\r\n this._graph.removeCells(dataSelectors);\r\n\r\n this._paper.on('render:done', () => {\r\n this._graph.addCells(arrows);\r\n\r\n if (deferredResult.status === P.Status.Unfulfilled) {\r\n\r\n if (sourceShape) {\r\n let position = sourceShape.get('position');\r\n this.BuildLayout(sourceShape);\r\n sourceShape.position(position.x, position.y, {deep: true});\r\n }\r\n\r\n if (destinationShape) {\r\n let position = destinationShape.get('position');\r\n this.BuildLayout(destinationShape);\r\n destinationShape.position(position.x, position.y, {deep: true});\r\n }\r\n\r\n _.each(groups, (group) => {\r\n let position = group.get('position');\r\n this.BuildLayout(group);\r\n group.position(position.x, position.y, {deep: true});\r\n group.on('change:position', (element) => {\r\n let position = element.get('position');\r\n let canvasItem1Id = element.get('recordId');\r\n let canvasItem1Guid = element.get('guid');\r\n\r\n let canvasItem = _.find(model.CanvasItems, (item) => {\r\n return item.Id == canvasItem1Id && item.Guid === canvasItem1Guid;\r\n });\r\n\r\n if (canvasItem) {\r\n canvasItem.X = position.x;\r\n canvasItem.Y = position.y;\r\n }\r\n if (canvasItem.State != CanvasModelState.New && canvasItem.State != CanvasModelState.Deleted) {\r\n canvasItem.State = CanvasModelState.Changed;\r\n }\r\n });\r\n });\r\n\r\n _.each(cells, (cell: any) => {\r\n cell.attr('./visibility', 'visible');\r\n });\r\n\r\n deferredResult.resolve(null);\r\n this._paper.off('render:done');\r\n this._paperScroller.scroll(0, 0);\r\n }\r\n });\r\n\r\n renderElements = _.sortBy(renderElements, (item) => {\r\n return item.Sort\r\n });\r\n\r\n let params = _.filter(renderElements, (item) => {\r\n return item.TypeName === CANVAS_TYPES.PARAM\r\n });\r\n let renderParams = [];\r\n\r\n _.each(params, (item) => {\r\n\r\n let parent = this.GetParentByType(model, item, CANVAS_TYPES.GROUP)\r\n if (parent) {\r\n renderParams.push(item);\r\n }\r\n\r\n if (item.SideName === SIDES.IN) {\r\n let parent = this.GetParentByType(model, item, CANVAS_TYPES.SOURCE)\r\n if (!parent) {\r\n renderParams.push(item);\r\n }\r\n }\r\n\r\n if (item.SideName === SIDES.OUT) {\r\n let parent = this.GetParentByType(model, item, CANVAS_TYPES.DESTINATION)\r\n if (!parent) {\r\n renderParams.push(item);\r\n }\r\n }\r\n });\r\n\r\n _.each(renderParams, (param) => {\r\n if (param.TypeName === CANVAS_TYPES.PARAM) {\r\n let paramViewModel = new shapes.cyberThing.Param(new ParamViewModel(param));\r\n cells.push(paramViewModel);\r\n\r\n paramViewModel.on(EVENTS.DEFAULT_VALUE_CHANGED, (value: string) => {\r\n\r\n let canvasItem1Id = paramViewModel.get('recordId');\r\n let canvasItem1Guid = paramViewModel.get('guid');\r\n\r\n let canvasItem = _.find(model.CanvasItems, (item) => {\r\n return item.Id == canvasItem1Id && item.Guid === canvasItem1Guid;\r\n });\r\n\r\n if (canvasItem) {\r\n canvasItem.DefaultValue = value;\r\n }\r\n\r\n if (canvasItem.State != CanvasModelState.New && canvasItem.State != CanvasModelState.Deleted) {\r\n canvasItem.State = CanvasModelState.Changed;\r\n }\r\n });\r\n }\r\n });\r\n\r\n _.each(renderElements, (item) => {\r\n let view = this.GetViewModel(item);\r\n if (view) {\r\n cells.push(view);\r\n\r\n if (view instanceof shapes.cyberThing.Source) {\r\n sourceShape = view;\r\n\r\n view.on(EVENTS.BACK_TO_DATA_SELECTOR, () => {\r\n\r\n let canvasItem1Id = view.get('recordId');\r\n let canvasItem1Guid = view.get('guid');\r\n\r\n let canvasItem = _.find(model.CanvasItems, (item) => {\r\n return item.Id == canvasItem1Id && item.Guid === canvasItem1Guid;\r\n });\r\n\r\n this.DeleteItem(model, canvasItem, view.getEmbeddedCells());\r\n\r\n this.Trigger(EVENTS.BACK_TO_DATA_SELECTOR, {Type: CANVAS_TYPES.SOURCE});\r\n\r\n this._graph.removeCells([view as joint.dia.Cell]);\r\n\r\n });\r\n\r\n view.on(EVENTS.EDIT_QUERY, (query: JSON) => {\r\n let queryBuilder = new QueryBuilder(true, false, false, true);\r\n queryBuilder.EditFreeQuery(GenericDeserialize<QueryExpressionModel>(query, QueryExpressionModel), false);\r\n\r\n queryBuilder.On(QUERY_BUILDER_EVENTS.CLOSE, this, () => {\r\n modal.Close();\r\n });\r\n queryBuilder.On(QUERY_BUILDER_EVENTS.DATA_SAVED, this, (eventArgs: any) => {\r\n BlockUI.Block();\r\n this.GetByQuery(eventArgs.data.QueryText, CANVAS_TYPES.SOURCE)\r\n .then((result) => {\r\n let canvasItem1Guid = view.get('guid');\r\n let dataSourceModel = _.find(model.CanvasItems, (item) => {\r\n return item.Guid === canvasItem1Guid;\r\n });\r\n\r\n let dataSourceToTableLinks = _.filter(model.CanvasLinks, (link) => link.CanvasItem1Guid === dataSourceModel.Guid);\r\n\r\n let paramToParamLinks = [];\r\n _.each(dataSourceToTableLinks, (dataSourceToTableLink) => {\r\n let tableModel = _.find(model.CanvasItems, (param) => param.Guid === dataSourceToTableLink.CanvasItem2Guid);\r\n\r\n let tableToParamLinks = _.filter(model.CanvasLinks, (link) => {\r\n let child = _.find(model.CanvasItems, (item) => item.Guid === link.CanvasItem2Guid && item.TypeName === CANVAS_TYPES.PARAM);\r\n return link.CanvasItem1Guid === tableModel.Guid && !!child;\r\n });\r\n\r\n _.each(tableToParamLinks, (tableToParamLink) => {\r\n\r\n let links = _.filter(model.CanvasLinks, (link) => {\r\n let child = _.find(model.CanvasItems, (item) => item.Guid === link.CanvasItem2Guid && item.TypeName === CANVAS_TYPES.PARAM);\r\n return link.CanvasItem1Guid === tableToParamLink.CanvasItem2Guid && !!child;\r\n });\r\n paramToParamLinks.push(...links);\r\n });\r\n });\r\n\r\n _.each(result.CanvasItems, (newQueryParam) => {\r\n let newQueryParamProperties = this.GetProperties(newQueryParam.Properties);\r\n\r\n let existsQueryParam = _.find(model.CanvasItems, (item) => {\r\n return item.SideName === newQueryParam.SideName\r\n && this.GetProperties(item.Properties).QueryColumnGuid === newQueryParamProperties.QueryColumnGuid\r\n && item.Name === newQueryParam.Name;\r\n }\r\n );\r\n\r\n if (existsQueryParam) {\r\n newQueryParamProperties.UseSubKey = this.GetProperties(existsQueryParam.Properties).UseSubKey;\r\n newQueryParam.Properties = JSON.stringify(newQueryParamProperties);\r\n }\r\n });\r\n\r\n let newLinks = [];\r\n\r\n _.each(paramToParamLinks, (link: CanvasLinkModel) => {\r\n let queryParam = _.find(model.CanvasItems, (param) => param.Guid === link.CanvasItem1Guid);\r\n let properties = this.GetProperties(queryParam.Properties);\r\n\r\n let newQueryParam = _.find(result.CanvasItems, (item) => item.SideName === 'OUT'\r\n && this.GetProperties(item.Properties).QueryColumnGuid === properties.QueryColumnGuid\r\n && item.Name === queryParam.Name\r\n );\r\n\r\n if (newQueryParam) {\r\n let newLink = new CanvasLinkModel();\r\n newLink.CanvasItem1Id = newQueryParam.Id;\r\n newLink.CanvasItem1Guid = newQueryParam.Guid;\r\n newLink.CanvasItem2Id = link.CanvasItem2Id;\r\n newLink.CanvasItem2Guid = link.CanvasItem2Guid;\r\n newLink.State = CanvasModelState.New;\r\n newLink.Properties = link.Properties;\r\n newLinks.push(newLink);\r\n\r\n\r\n let parent = this.GetParentByType(model, queryParam, CANVAS_TYPES.GROUP);\r\n\r\n if (!parent) {\r\n parent = this.GetParentByType(model, _.find(model.CanvasItems, (param) => param.Guid === link.CanvasItem2Guid), CANVAS_TYPES.GROUP);\r\n }\r\n\r\n if (parent) {\r\n newLink.RootRecordId = parent.Id;\r\n newLink.RootRecordGuid = parent.Guid;\r\n } else {\r\n newLink.RootRecordId = this._root.Id;\r\n newLink.RootRecordGuid = this._root.Guid;\r\n }\r\n\r\n }\r\n });\r\n\r\n this.DeleteItem(model, dataSourceModel, view.getEmbeddedCells());\r\n\r\n model.CanvasItems.push(...result.CanvasItems);\r\n model.CanvasLinks.push(...result.CanvasLinks, ...newLinks);\r\n this.BuildShapes(model)\r\n .fail(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n BlockUI.Unblock();\r\n this._graph.removeCells([view as joint.dia.Cell]);\r\n });\r\n });\r\n\r\n modal.Close();\r\n\r\n });\r\n\r\n let modal = new Modal({});\r\n ko.cleanNode(modal.Wrapper);\r\n ko.applyBindings(queryBuilder, modal.Wrapper);\r\n modal.Show();\r\n });\r\n view.on(EVENTS.SHOW_FUNCTION_DESIGNER, (packageId: number) => {\r\n this.Trigger(EVENTS.SHOW_FUNCTION_DESIGNER_REQUESTED, { PackageId: packageId });\r\n });\r\n\r\n }\r\n\r\n if (view instanceof shapes.cyberThing.Destination) {\r\n destinationShape = view;\r\n\r\n view.on(EVENTS.BACK_TO_DATA_SELECTOR, () => {\r\n\r\n let canvasItem1Id = view.get('recordId');\r\n let canvasItem1Guid = view.get('guid');\r\n\r\n let canvasItem = _.find(model.CanvasItems, (item) => {\r\n return item.Id == canvasItem1Id && item.Guid === canvasItem1Guid;\r\n });\r\n\r\n this.DeleteItem(model, canvasItem, view.getEmbeddedCells());\r\n\r\n this.Trigger(EVENTS.BACK_TO_DATA_SELECTOR, {Type: CANVAS_TYPES.DESTINATION});\r\n\r\n this._graph.removeCells([view as joint.dia.Cell]);\r\n });\r\n\r\n view.on(EVENTS.EDIT_QUERY, (query: JSON) => {\r\n let queryBuilder = new QueryBuilder(true, false, false, true);\r\n\r\n if(query){\r\n queryBuilder.EditFreeQuery(GenericDeserialize<QueryExpressionModel>(query, QueryExpressionModel), false);\r\n }else{\r\n queryBuilder.NewFreeQuery();\r\n }\r\n\r\n queryBuilder.On(QUERY_BUILDER_EVENTS.CLOSE, this, () => {\r\n modal.Close();\r\n });\r\n queryBuilder.On(QUERY_BUILDER_EVENTS.DATA_SAVED, this, (eventArgs: any) => {\r\n BlockUI.Block();\r\n this.GetByQuery(eventArgs.data.QueryText, CANVAS_TYPES.DESTINATION)\r\n .then((result) => {\r\n let canvasItem1Guid = view.get('guid');\r\n let dataSourceModel = _.find(model.CanvasItems, (item) => {\r\n return item.Guid === canvasItem1Guid;\r\n });\r\n\r\n let dataSourceToTableLinks = _.filter(model.CanvasLinks, (link) => link.CanvasItem1Guid === dataSourceModel.Guid);\r\n\r\n let paramToParamLinks = [];\r\n _.each(dataSourceToTableLinks, (dataSourceToTableLink) => {\r\n let tableModel = _.find(model.CanvasItems, (param) => param.Guid === dataSourceToTableLink.CanvasItem2Guid);\r\n\r\n let tableToParamLinks = _.filter(model.CanvasLinks, (link) => {\r\n let child = _.find(model.CanvasItems, (item) => item.Guid === link.CanvasItem2Guid && item.TypeName === CANVAS_TYPES.PARAM);\r\n return link.CanvasItem1Guid === tableModel.Guid && !!child;\r\n });\r\n\r\n _.each(tableToParamLinks, (tableToParamLink) => {\r\n\r\n let links = _.filter(model.CanvasLinks, (link) => {\r\n let child = _.find(model.CanvasItems, (item) => item.Guid === link.CanvasItem2Guid && item.TypeName === CANVAS_TYPES.PARAM);\r\n return link.CanvasItem2Guid === tableToParamLink.CanvasItem2Guid && !!child;\r\n });\r\n paramToParamLinks.push(...links);\r\n });\r\n });\r\n\r\n _.each(result.CanvasItems, (newQueryParam) => {\r\n let newQueryParamProperties = this.GetProperties(newQueryParam.Properties);\r\n\r\n let existsQueryParam = _.find(model.CanvasItems, (item) => {\r\n return item.SideName === newQueryParam.SideName\r\n && this.GetProperties(item.Properties).QueryColumnGuid === newQueryParamProperties.QueryColumnGuid\r\n && item.Name === newQueryParam.Name;\r\n }\r\n );\r\n\r\n if (existsQueryParam) {\r\n newQueryParamProperties.UseSubKey = this.GetProperties(existsQueryParam.Properties).UseSubKey;\r\n newQueryParam.Properties = JSON.stringify(newQueryParamProperties);\r\n }\r\n });\r\n\r\n let newLinks = [];\r\n\r\n _.each(paramToParamLinks, (link: CanvasLinkModel) => {\r\n let queryParam = _.find(model.CanvasItems, (param) => param.Guid === link.CanvasItem2Guid);\r\n let properties = this.GetProperties(queryParam.Properties);\r\n\r\n let newQueryParam = _.find(result.CanvasItems, (item) => item.SideName === 'IN'\r\n && this.GetProperties(item.Properties).QueryColumnGuid === properties.QueryColumnGuid\r\n && item.Name === queryParam.Name\r\n );\r\n\r\n if (newQueryParam) {\r\n let newLink = new CanvasLinkModel();\r\n newLink.CanvasItem2Id = newQueryParam.Id;\r\n newLink.CanvasItem2Guid = newQueryParam.Guid;\r\n newLink.CanvasItem1Id = link.CanvasItem1Id;\r\n newLink.CanvasItem1Guid = link.CanvasItem1Guid;\r\n newLink.State = CanvasModelState.New;\r\n newLink.Properties = link.Properties;\r\n newLinks.push(newLink);\r\n\r\n\r\n let parent = this.GetParentByType(model, queryParam, CANVAS_TYPES.GROUP);\r\n\r\n if (!parent) {\r\n parent = this.GetParentByType(model, _.find(model.CanvasItems, (param) => param.Guid === link.CanvasItem2Guid), CANVAS_TYPES.GROUP);\r\n }\r\n\r\n if (parent) {\r\n newLink.RootRecordId = parent.Id;\r\n newLink.RootRecordGuid = parent.Guid;\r\n } else {\r\n newLink.RootRecordId = this._root.Id;\r\n newLink.RootRecordGuid = this._root.Guid;\r\n }\r\n\r\n }\r\n });\r\n\r\n this.DeleteItem(model, dataSourceModel, view.getEmbeddedCells());\r\n\r\n model.CanvasItems.push(...result.CanvasItems);\r\n model.CanvasLinks.push(...result.CanvasLinks, ...newLinks);\r\n this.BuildShapes(model)\r\n .fail(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n BlockUI.Unblock();\r\n this._graph.removeCells([view as joint.dia.Cell]);\r\n });\r\n });\r\n\r\n modal.Close();\r\n\r\n });\r\n\r\n let modal = new Modal({});\r\n ko.cleanNode(modal.Wrapper);\r\n ko.applyBindings(queryBuilder, modal.Wrapper);\r\n modal.Show();\r\n });\r\n\r\n view.on(EVENTS.SHOW_FUNCTION_DESIGNER, (packageId: number) => {\r\n this.Trigger(EVENTS.SHOW_FUNCTION_DESIGNER_REQUESTED, { PackageId: packageId });\r\n });\r\n }\r\n\r\n\t\t\t\tif (view instanceof shapes.cyberThing.Group) {\r\n\t\t\t\t\tgroups.push(view);\r\n\r\n view.on(EVENTS.SHOW_FUNCTION_DESIGNER, (packageId: number) => {\r\n this.Trigger(EVENTS.SHOW_FUNCTION_DESIGNER_REQUESTED, { PackageId: packageId });\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n if (view instanceof shapes.cyberThing.CSharpFunction || view instanceof shapes.cyberThing.JSFunction|| view instanceof shapes.cyberThing.APIMethod) {\r\n view.on(EVENTS.SHOW_FUNCTION_DESIGNER, () => { \r\n let parent = this._graph.getCell(view.get('parent'));\r\n this.Trigger(EVENTS.SHOW_FUNCTION_DESIGNER_REQUESTED, { PackageId: parent.attributes.apiPackageId, FunctionId: view.attributes.recordId });\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 this._graph.resetCells(cells);\r\n\r\n _.each(model.CanvasLinks, (link: CanvasLinkModel) => {\r\n if (link.State === CanvasModelState.Deleted) {\r\n return;\r\n }\r\n let parent = this._graph.getCell(link.CanvasItem1Guid);\r\n let child = this._graph.getCell(link.CanvasItem2Guid);\r\n\r\n if (parent && child) {\r\n if (parent instanceof shapes.cyberThing.Table && child instanceof shapes.cyberThing.Table) {\r\n\r\n } else if (parent instanceof shapes.cyberThing.Param && child instanceof shapes.cyberThing.Param) {\r\n let arrowViewModel = new ArrowViewModel(link);\r\n let arrowShape = new shapes.cyberThing.Arrow(arrowViewModel);\r\n arrows.push(arrowShape);\r\n } else {\r\n embeds.push({parent: parent, child: child});\r\n }\r\n }\r\n });\r\n\r\n _.each(embeds, (item) => {\r\n item.parent.embed(item.child);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n GetProperties(properties: string) {\r\n if (properties && properties != '') {\r\n return JSON.parse(properties);\r\n }\r\n return {}\r\n }\r\n\r\n public DeleteItem(\r\n model: CanvasModel,\r\n item: CanvasItemModel,\r\n embeddedCells: Array<any>\r\n ) {\r\n if (item.State === CanvasModelState.New) {\r\n model.CanvasItems.splice(model.CanvasItems.indexOf(item), 1);\r\n } else {\r\n item.State = CanvasModelState.Deleted;\r\n }\r\n\r\n let linksToDelete = _.filter(model.CanvasLinks, (link: CanvasLinkModel) => {\r\n return (link.CanvasItem1Guid === item.Guid || link.CanvasItem2Guid === item.Guid);\r\n });\r\n\r\n _.each(linksToDelete, (link: CanvasLinkModel) => {\r\n if (link.State === CanvasModelState.New) {\r\n model.CanvasLinks.splice(model.CanvasLinks.indexOf(link), 1);\r\n } else {\r\n link.State = CanvasModelState.Deleted;\r\n }\r\n });\r\n\r\n _.each(embeddedCells, (cell) => {\r\n let canvasItemGuid = cell.get('guid');\r\n\r\n let item = _.find(model.CanvasItems, (item: CanvasItemModel) => {\r\n return item.Guid === canvasItemGuid;\r\n });\r\n\r\n if (item) {\r\n if (item.State === CanvasModelState.New) {\r\n model.CanvasItems.splice(model.CanvasItems.indexOf(item), 1);\r\n } else {\r\n item.State = CanvasModelState.Deleted;\r\n }\r\n }\r\n\r\n let linksToDelete = _.filter(model.CanvasLinks, (link: CanvasLinkModel) => {\r\n return (link.CanvasItem1Guid === canvasItemGuid || link.CanvasItem2Guid === canvasItemGuid);\r\n });\r\n\r\n _.each(linksToDelete, (link: CanvasLinkModel) => {\r\n if (link.State === CanvasModelState.New) {\r\n model.CanvasLinks.splice(model.CanvasLinks.indexOf(link), 1);\r\n } else {\r\n link.State = CanvasModelState.Deleted;\r\n }\r\n\r\n let child = _.find(model.CanvasItems, (item: CanvasItemModel) => {\r\n return item.Guid === link.CanvasItem2Guid;\r\n });\r\n\r\n let parent = _.find(model.CanvasItems, (item: CanvasItemModel) => {\r\n return item.Guid === link.CanvasItem1Guid;\r\n });\r\n\r\n\r\n if (child && child.TypeName === CANVAS_TYPES.PARAM && ((parent && parent.TypeName != CANVAS_TYPES.PARAM) || _.isEmpty(parent))) {\r\n if (child.State === CanvasModelState.New) {\r\n model.CanvasItems.splice(model.CanvasItems.indexOf(child, 1), 1);\r\n } else {\r\n child.State = CanvasModelState.Deleted;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n private GetViewModel(canvasItem: CanvasItemModel) {\r\n let view = null\r\n if (canvasItem.TypeName === CANVAS_TYPES.SOURCE) {\r\n view = new shapes.cyberThing.Source(new SourceViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.DESTINATION) {\r\n view = new shapes.cyberThing.Destination(new DestinationViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.TABLE) {\r\n view = new shapes.cyberThing.Table(new TableViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.JS_FUNCTION) {\r\n view = new shapes.cyberThing.JSFunction(new JSFunctionViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.CSHARP_FUNCTION) {\r\n view = new shapes.cyberThing.CSharpFunction(new CSharpFunctionViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.API_METHOD) {\r\n view = new shapes.cyberThing.APIMethod(new APIMethodViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.TRIGGER) {\r\n view = new shapes.cyberThing.Trigger(new TriggerViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.GROUP) {\r\n view = new shapes.cyberThing.Group(new GroupViewModel(canvasItem));\r\n }\r\n\r\n return view;\r\n }\r\n\r\n private GetParentByTypes(model: CanvasModel, item: CanvasItemModel, typeNames: Array<string>): CanvasItemModel {\r\n let result = null;\r\n _.each(typeNames, (typeName) => {\r\n let parent = this.GetParentByType(model, item, typeName);\r\n if (parent) {\r\n result = parent;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n GetParentByType(model: CanvasModel, item: CanvasItemModel, typeName: string): CanvasItemModel {\r\n let result = null;\r\n let parentLinks = _.filter(model.CanvasLinks, (link) => {\r\n return link.CanvasItem2Guid === item.Guid && link.CanvasItem2Id === item.Id\r\n });\r\n\r\n _.each(parentLinks, (parentLink) => {\r\n let parents = _.filter(model.CanvasItems, (canvasItem) => {\r\n return canvasItem.Id === parentLink.CanvasItem1Id && canvasItem.Guid === parentLink.CanvasItem1Guid;\r\n });\r\n\r\n _.each(parents, (parent) => {\r\n if (parent.TypeName === CANVAS_TYPES.PARAM) {\r\n return;\r\n }\r\n\r\n if (parent.TypeName === typeName) {\r\n result = parent;\r\n } else {\r\n let parentParent = this.GetParentByType(model, parent, typeName);\r\n if (parentParent) {\r\n result = parentParent;\r\n }\r\n }\r\n });\r\n });\r\n\r\n return result;\r\n }\r\n\r\n public static GetRoot(cell: any, graph: joint.dia.Graph) {\r\n let parentId = cell.get('parent');\r\n\r\n if (!parentId) {\r\n return null;\r\n }\r\n\r\n let parent = graph.get('cells').get(parentId);\r\n\r\n if (!parent.get('parent')) {\r\n return parent;\r\n } else {\r\n return this.GetRoot(parent, graph);\r\n }\r\n }\r\n\r\n public BuildLayout(cell: any) {\r\n let embeddeds = cell.getEmbeddedCells();\r\n embeddeds = _.sortBy(embeddeds, (item: any) => {\r\n return item.get('sort')\r\n });\r\n\r\n if (embeddeds.length > 0) {\r\n\r\n _.each(embeddeds, (embedded) => {\r\n this.BuildLayout(embedded);\r\n });\r\n\r\n GridLayout.layout(embeddeds, {\r\n parentRelative: true,\r\n deep: true,\r\n dy: 5,\r\n resizeToFit: true\r\n });\r\n\r\n cell.fitEmbeds({\r\n padding: {\r\n top: 25,\r\n left: 10,\r\n right: 20,\r\n bottom: 10\r\n }, deep: true\r\n });\r\n }\r\n }\r\n\r\n GetByQuery(query: string, canvasType: string): P.Promise<CanvasModel> {\r\n const deferredResult = P.defer<CanvasModel>();\r\n CanvasDesignerStore\r\n .GetNodesByQuery(query, this._root.Guid, canvasType)\r\n .always(() => {\r\n }).then((result) => {\r\n deferredResult.resolve(result);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n public Expand(cellView: any, model: CanvasModel, graph: joint.dia.Graph, paper: joint.dia.Paper) {\r\n let cells = [];\r\n let canvasItem1Id = cellView.model.get('recordId');\r\n let canvasItem1Guid = cellView.model.get('guid');\r\n let arrows = [];\r\n let items = [];\r\n let params = _.filter(model.CanvasLinks, (link) => {\r\n return link.CanvasItem1Guid === canvasItem1Guid && link.CanvasItem1Id === canvasItem1Id;\r\n });\r\n\r\n _.each(params, (param) => {\r\n let itemModel = _.find(model.CanvasItems, (item) => {\r\n return item.Id === param.CanvasItem2Id && item.Guid === param.CanvasItem2Guid;\r\n });\r\n\r\n if (itemModel) {\r\n if (itemModel.TypeName === CANVAS_TYPES.PARAM) {\r\n\r\n items.push(itemModel);\r\n\r\n if (itemModel.SideName === SIDES.IN) {\r\n let parent = this.GetParentByType(model, itemModel, CANVAS_TYPES.SOURCE)\r\n if (!parent) {\r\n cells.push(new shapes.cyberThing.Param(new ParamViewModel(itemModel)));\r\n }\r\n }\r\n\r\n if (itemModel.SideName === SIDES.OUT) {\r\n let parent = this.GetParentByType(model, itemModel, CANVAS_TYPES.DESTINATION)\r\n if (!parent) {\r\n cells.push(new shapes.cyberThing.Param(new ParamViewModel(itemModel)));\r\n }\r\n }\r\n } else {\r\n let view = this.GetViewModel(itemModel);\r\n if (view) {\r\n cells.push(view);\r\n }\r\n }\r\n }\r\n });\r\n\r\n paper.on('render:done', () => {\r\n paper.off('render:done');\r\n\r\n graph.addCells(arrows);\r\n\r\n _.each(cells, (cell: any) => {\r\n cell.attr('./visibility', 'visible');\r\n });\r\n\r\n let parent = ShapeFactory.GetRoot(cellView.model, graph);\r\n if (parent) {\r\n let position = parent.get('position');\r\n GridLayout.layout(cellView.model.getEmbeddedCells(), {\r\n parentRelative: true,\r\n deep: true,\r\n dy: 5,\r\n resizeToFit: true\r\n });\r\n\r\n cellView.model.fitEmbeds({\r\n padding: {\r\n top: 25,\r\n left: 10,\r\n right: 20,\r\n bottom: 10\r\n }, deep: true\r\n });\r\n\r\n GridLayout.layout(parent.getEmbeddedCells(), {\r\n parentRelative: true,\r\n deep: true,\r\n dy: 5,\r\n resizeToFit: true\r\n });\r\n\r\n parent.fitEmbeds({\r\n padding: {\r\n top: 25,\r\n left: 10,\r\n right: 20,\r\n bottom: 10\r\n }, deep: true\r\n });\r\n\r\n parent.position(position.x, position.y, {deep: true});\r\n }\r\n });\r\n\r\n graph.addCells(cells);\r\n\r\n _.each(cells, (item) => {\r\n cellView.model.embed(item);\r\n });\r\n\r\n _.each(items, (itemModel) => {\r\n let links = _.filter(model.CanvasLinks, (link) => {\r\n return (link.CanvasItem1Id === itemModel.Id && link.CanvasItem1Guid === itemModel.Guid) || (link.CanvasItem2Id === itemModel.Id && link.CanvasItem2Guid === itemModel.Guid);\r\n });\r\n\r\n _.each(links, (link: CanvasLinkModel) => {\r\n let parent = graph.getCell(link.CanvasItem1Guid);\r\n let child = graph.getCell(link.CanvasItem2Guid);\r\n\r\n if (parent && child) {\r\n if (parent instanceof shapes.cyberThing.Table && child instanceof shapes.cyberThing.Table) {\r\n\r\n } else if (parent instanceof shapes.cyberThing.Param && child instanceof shapes.cyberThing.Param) {\r\n let arrowViewModel = new ArrowViewModel(link);\r\n let arrowShape = new shapes.cyberThing.Arrow(arrowViewModel);\r\n arrows.push(arrowShape);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n}","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/Param';\r\nimport {EVENTS} from \"../ParamView/Events\";\r\nimport { ShapeFactory } from '../../../Views/ShapeFactory';\r\n\r\nlet generalTemplate = V('<g class= \"rotatable\"><rect class=\"body\"/><text class=\"label shape-label\"/><text class=\"icons fa\"/><title/></g>');\r\n\r\nlet constantTemplate = V('<g class= \"rotatable\"><rect class=\"body\"/>' +\r\n\t'<foreignObject class=\"fobj\" id=\"v-9\" width=\"160\" height=\"30\">' +\r\n\t' <input xmlns=\"http://www.w3.org/1999/xhtml\" type=\"text\" id=\"defaultValueEditor\" style=\"width: 160px; height:30px;\" />' +\r\n\t'</foreignObject>'+\r\n\t'</g>');\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass ParamView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.ParamView = Dia.ElementView.extend({\r\n\r\n\ttemplate: {},\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.position(0, 0, { parentRelative: true });\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0.5;\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\r\n\t\tif(this.model.attributes.shapeName === 'Constant'){\r\n\t\t\tthis.template = constantTemplate.clone();\r\n\t\t}else{\r\n\t\t\tthis.template = generalTemplate.clone();\r\n\t\t}\r\n\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.vel.append(this.template);\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet icons = '';\r\n\r\n\t\tif(this.model.attributes.attrs.UseSubKey){\r\n\t\t\ticons = '\\uf112';\r\n\t\t}\r\n\r\n\t\tif(this.model.attributes.attrs.IsRecordIdentifier){\r\n\t\t\ticons += '\\uf084';\r\n\t\t}\r\n\r\n\t\tif(this.model.attributes.attrs.IsSearchBySubKey){\r\n\t\t\ticons += '\\uf002';\r\n\t\t}\r\n\r\n\t\tif(this.model.attributes.filledFromField){\r\n\t\t\ticons += '\\uf08e';\r\n\t\t}\r\n\t\tif(this.model.attributes.attrs.FilledFrom){\r\n\r\n\t\t\tlet root = ShapeFactory.GetRoot(this.model, this.paper.model);\r\n\t\t\troot.get('replicationId');\r\n\r\n\t\t\tlet filledFrom = this.model.attributes.attrs.FilledFrom[root.get('replicationId')] || '';\r\n\t\t\tif(filledFrom != ''){\r\n\t\t\t\ticons += '\\uf058';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.icons': {\r\n\t\t\t\t'ref-x': 0.84,\r\n\t\t\t\trefY2: 5,\r\n\t\t\t\ttext: icons\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tbindEvents: function(){\r\n\t\tlet self = this;\r\n\r\n\t\tlet defaultValueEditor = this.template.findOne('#defaultValueEditor');\r\n\t\tif(defaultValueEditor && defaultValueEditor.node){\r\n\t\t\t$(defaultValueEditor.node).val(this.model.attributes.defaultValue);\r\n\t\t\t$(defaultValueEditor.node).on('click', ()=>{\r\n\t\t\t\t$(defaultValueEditor.node).focus();\r\n\t\t\t});\r\n\r\n\t\t\t$(defaultValueEditor.node).on(\"input\", function(){\r\n\t\t\t\tself.model.trigger(EVENTS.DEFAULT_VALUE_CHANGED, $(this).val());\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n});","export const DATA_TYPES = {\r\n\tDATABASE: {Name: 'Database', Icon: 'fa fa-database'},\r\n\tSPREADSHEET: {Name: 'Spreadsheet', Icon: 'fa fa-file-excel-o'},\r\n\tQUERY: {Name: 'Query', Icon: 'fa fa-code'},\r\n\tAPI: {Name: 'API', Icon: 'fa fa-server'},\r\n\tTRIGGER: {Name: 'Trigger', Icon: 'fa fa-bolt'},\r\n\tDW_PACKAGE: {Name: 'DwPackage', Icon: 'fa fa-cube'},\r\n\tEXACT_ONLINE: {Name: 'ExactOnline', Icon: 'fa fa-bicycle'},\r\n\tEWS: {Name: 'EWS', Icon: 'fa fa-envelope'},\r\n\tOCI_PUNCH_OUT: {Name: 'OCI PunchOut', Icon: 'icon-boxing-glove'},\r\n\tMS_ACCESS: {Name: 'MS Access', Icon: 'fa fa-align-justify'},\r\n\tDESKTOP_FOLDER: { Name: 'Desktop folder', Icon: 'fa fa-folder-open'}\r\n}\r\n\r\nexport enum DataTypes {\r\n\tCyberbase,\r\n\tDatabase,\r\n\tFile,\r\n\tService,\r\n\tQuery,\r\n\tApiPackage,\r\n\tTrigger,\r\n\tDwPackage,\r\n\tExactOnline,\r\n\tEWS,\r\n\tOCIPunchOut,\r\n\tMsAccess,\r\n\tDesktopFolder\r\n}","import {dia as Dia, V} from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/Source';\r\nimport {DataTypes, DATA_TYPES} from 'Core/Controls/CanvasDesigner/Constants/DataTypes';\r\nimport {EVENTS} from \"./ParamView/Events\";\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nconst _labels = LABELS;\r\nlet properties = null;\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n namespace shapes {\r\n namespace cyberThing {\r\n class SourceView extends Dia.ElementView {\r\n }\r\n }\r\n }\r\n}\r\nconst getBackButtonTemplate = () => {\r\n\r\n let shapeLabel = '<text class=\"shape-label\"/>';\r\n if (properties && properties.DataType === 5) {\r\n shapeLabel = '<foreignObject class=\"fobj\" id=\"v-9\" width=\"40\" height=\"21\">' +\r\n ' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n ` <a class=\"stateButton\" id=\"showFunctionDesigner\" title=\"${_labels.FUNCTION_DESIGNER}\"><i class=\"fa fa-external-link\"></i></a>` +\r\n ' </div>' +\r\n `</foreignObject><a title=\"${_labels.FUNCTION_DESIGNER}\"><text class=\"shape-label\"/></a>`;\r\n }\r\n\r\n\treturn V('<g class=\"rotatable\">' +\r\n '<g class=\"scalable\"><rect/></g>' + shapeLabel + '<title/>' +\r\n\t\t'<foreignObject class=\"fobj back\" id=\"v-9\" width=\"40\" height=\"21\">' +\r\n\t\t' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n\t\t` <a class=\"stateButton\" id=\"backButton\" title=\"${_labels.BACK}\"><i class=\"fa fa-arrow-left\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t'</foreignObject>' +\r\n ((properties && properties.DataType === DataTypes.ApiPackage) ? '' : `<text class=\"propertyIcon fa ${properties && properties.DataType === 10 ? 'icon-boxing-glove' : ''}\"></text>`) +\r\n\t\t'</g>');\r\n};\r\n\r\nconst getEditQueryButtonTemplate = () => {\r\n\r\n\treturn V('<g class=\"rotatable\">' +\r\n\t\t'<g class=\"scalable\"><rect/></g><text class=\"shape-label\"/><title/>' +\r\n\t\t'<foreignObject class=\"back\" id=\"v-9\" width=\"50\" height=\"21\">' +\r\n\t\t` <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" title=\"${_labels.EDIT}\" style=\"padding-top: 2px\" display=\"none\" xml:space=\"preserve\">` +\r\n\t\t` <a class=\"stateButton\" id=\"editQueryButton\" title=\"${_labels.EDIT}\"><i class=\"fa fa-edit\"></i></a>` +\r\n\t\t` <a class=\"stateButton\" id=\"backButton\" title=\"${_labels.BACK}\"><i class=\"fa fa-arrow-left\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t'</foreignObject>'+\r\n '<text class=\"propertyIcon fa\"></text>' +\r\n\t\t'</g>');\r\n};\r\n\r\njoint.shapes.cyberThing.SourceView = Dia.ElementView.extend({\r\n template: {},\r\n query: {},\r\n\r\n initialize: function () {\r\n joint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n this.model.position(100, 100);\r\n this.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n this.model.get('attrs')['.shape-label'].refY2 = 10;\r\n this.model.get('attrs')['.back'] = {'ref-y': 0, 'ref-x': 0, refY2: 0, refX2: 160};\r\n\r\n this.model.attr('./visibility', 'hidden');\r\n\r\n this.template = getBackButtonTemplate();\r\n this.initProperties();\r\n\r\n this.bindEvents();\r\n },\r\n\r\n renderMarkup: function () {\r\n this.initIcons();\r\n this.vel.append(this.template);\r\n },\r\n\r\n initIcons: function(){\r\n let properties = JSON.parse(this.model.attributes.properties);\r\n let icon;\r\n\r\n switch (properties.DataType) {\r\n case DataTypes.Cyberbase : icon = \"\\uf1c0\";\r\n break;\r\n case DataTypes.File : icon = \"\\uf1c3\";\r\n break;\r\n case DataTypes.ApiPackage: icon = \"\\uf233\";\r\n break;\r\n case DataTypes.Query: icon = \"\\uf121\";\r\n break;\r\n case DataTypes.Trigger: icon = \"\\uf0e7\";\r\n break;\r\n case DataTypes.DwPackage: icon = \"\\uf1b2\";\r\n break;\r\n case DataTypes.ExactOnline: icon = \"\\uf206\";\r\n break;\r\n case DataTypes.EWS: icon = \"\\uf0e0\";\r\n break;\r\n case DataTypes.OCIPunchOut: icon = \"\\ue900\";\r\n break;\r\n case DataTypes.MsAccess: icon = \"\\uf039\";\r\n break;\r\n case DataTypes.DesktopFolder: icon = \"\\uf07c\";\r\n break;\r\n\r\n default: icon = 'null';\r\n }\r\n\r\n this.model.attr({\r\n '.propertyIcon': {\r\n \"ref-y\": 0,\r\n refY2: 10,\r\n \"ref-x\": 10,\r\n refX2: 10,\r\n text: icon\r\n }\r\n });\r\n\r\n },\r\n\r\n initProperties: function () {\r\n try {\r\n properties = JSON.parse(this.model.attributes.properties);\r\n\r\n if (properties.DataType === DataTypes.Query) {\r\n this.template = getEditQueryButtonTemplate();\r\n this.query = properties.Query;\r\n } else if (properties.DataType === DataTypes.Trigger) {\r\n this.model.attr({\r\n '.shape-label': {\r\n text: DATA_TYPES.TRIGGER.Name\r\n }\r\n });\r\n }\r\n } catch (e) {\r\n }\r\n },\r\n\r\n bindEvents: function () {\r\n let backButton = this.template.findOne('#backButton');\r\n if (backButton && backButton.node) {\r\n $(backButton.node).on('click', () => {\r\n this.model.trigger(EVENTS.BACK_TO_DATA_SELECTOR);\r\n });\r\n }\r\n\r\n let functionDesignerButtons = this.template.find('#showFunctionDesigner');\r\n _.each(functionDesignerButtons, (button : any) => {\r\n if (button && button.node) {\r\n $(button.node).on('click', () => {\r\n this.model.trigger(EVENTS.SHOW_FUNCTION_DESIGNER, this.model.attributes.apiPackageId);\r\n });\r\n }\r\n });\r\n\r\n let editQueryButton = this.template.find('#editQueryButton')[0];\r\n if (editQueryButton && editQueryButton.node) {\r\n $(editQueryButton.node).on('click', () => {\r\n this.model.trigger(EVENTS.EDIT_QUERY, this.query);\r\n });\r\n }\r\n }\r\n});","import { dia as Dia, V } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/Destination';\r\nimport {EVENTS} from \"./ParamView/Events\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport { DataTypes } from '../../Constants/DataTypes';\r\n\r\nconst _labels = LABELS;\r\nlet properties = null;\r\n\r\nconst backButtonTemplate = () => {\r\n\r\n\tlet shapeLabel = '<text class=\"shape-label\"/>';\r\n\tif (properties && properties.DataType === 5) {\r\n\t\tshapeLabel = '<foreignObject class=\"fobj\" id=\"v-9\" width=\"40\" height=\"21\">' +\r\n\t\t\t' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n\t\t\t` <a class=\"stateButton\" id=\"showFunctionDesigner\" title=\"${_labels.FUNCTION_DESIGNER}\"><i class=\"fa fa-external-link\"></i></a>` +\r\n\t\t\t' </div>' +\r\n\t\t\t`</foreignObject><a title=\"${_labels.FUNCTION_DESIGNER}\"><text class=\"shape-label\"/></a>`;\r\n\t}\r\n\r\n\treturn V('<g class=\"rotatable\">' +\r\n\t\t'<g class=\"scalable\"><rect/></g>' + shapeLabel + '<title/>' +\r\n\t\t'<foreignObject class=\"fobj back\" id=\"v-9\" width=\"36\" height=\"21\">' +\r\n\t\t' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n\t\t` <a class=\"stateButton\" id=\"backButton\" title=\"${_labels.BACK}\"><i class=\"fa fa-arrow-left\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t'</foreignObject>'+\r\n\t\t((properties && properties.DataType === DataTypes.ApiPackage) ? '' :'<text class=\"propertyIcon fa\"></text>') +\r\n\t\t'</g>');\r\n};\r\n\r\nconst getEditQueryButtonTemplate = () => {\r\n\r\n\treturn V('<g class=\"rotatable\">' +\r\n\t\t'<g class=\"scalable\"><rect/></g><text class=\"shape-label\"/><title/>' +\r\n\t\t'<foreignObject class=\"back\" id=\"v-9\" width=\"50\" height=\"21\">' +\r\n\t\t` <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" title=\"${_labels.EDIT}\" style=\"padding-top: 2px\" display=\"none\" xml:space=\"preserve\">` +\r\n\t\t` <a class=\"stateButton\" id=\"editQueryButton\" title=\"${_labels.EDIT}\"><i class=\"fa fa-edit\"></i></a>` +\r\n\t\t` <a class=\"stateButton\" id=\"backButton\" title=\"${_labels.BACK}\"><i class=\"fa fa-arrow-left\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t'</foreignObject>'+\r\n '<text class=\"propertyIcon fa\"></text>' +\r\n\t\t'</g>');\r\n};\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass DestinationView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.DestinationView = Dia.ElementView.extend({\r\n\ttemplate: {},\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.position(1050, 100);\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 10;\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\t\tthis.model.get('attrs')['.back'] = { 'ref-y': 0, 'ref-x': 0, refY2: 0, refX2: 160 };\r\n\r\n\t\tthis.template = backButtonTemplate();\r\n\t\tthis.initProperties();\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.vel.append(this.template);\r\n\t},\r\n\r\n\tinitProperties: function () {\r\n\t\ttry {\r\n\t\t\tproperties = JSON.parse(this.model.attributes.properties);\r\n\r\n\t\t\tif (properties.DataType === DataTypes.Query) {\r\n this.template = getEditQueryButtonTemplate();\r\n this.query = properties.Query;\r\n } \r\n\r\n\t\t} catch (e) {\r\n\t\t}\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet properties = JSON.parse(this.model.attributes.properties);\r\n\t\tlet icon;\r\n\r\n\t\tswitch (properties.DataType) {\r\n case DataTypes.Cyberbase : icon = \"\\uf1c0\";\r\n break;\r\n case DataTypes.File : icon = \"\\uf1c3\";\r\n break;\r\n case DataTypes.ApiPackage: icon = \"\\uf233\";\r\n break;\r\n case DataTypes.Query: icon = \"\\uf121\";\r\n break;\r\n case DataTypes.Trigger: icon = \"\\uf0e7\";\r\n break;\r\n case DataTypes.DwPackage: icon = \"\\uf1b2\";\r\n break;\r\n\t\t\tcase DataTypes.ExactOnline: icon = \"\\uf206\";\r\n break;\r\n\t\t\tcase DataTypes.EWS: icon = \"\\uf0e0\";\r\n break;\r\n\t\t\tcase DataTypes.DesktopFolder: icon = \"\\uf07c\";\r\n break;\r\n\r\n default: icon = 'null';\r\n\t\t}\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.propertyIcon': {\r\n\t\t\t\t\"ref-y\": 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\t\"ref-x\": 10,\r\n\t\t\t\trefX2: 10,\r\n\t\t\t\ttext: icon\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tbindEvents: function(){\r\n\t\tlet backButton = this.template.findOne('#backButton');\r\n\t\tif(backButton && backButton.node){\r\n\t\t\t$(backButton.node).on('click', ()=>{\r\n\t\t\t\tthis.model.trigger(EVENTS.BACK_TO_DATA_SELECTOR);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet functionDesignerButtons = this.template.find('#showFunctionDesigner');\r\n\t\t_.each(functionDesignerButtons, (button: any) => {\r\n\t\t\tif (button && button.node) {\r\n\t\t\t\t$(button.node).on('click', () => {\r\n\t\t\t\t\tthis.model.trigger(EVENTS.SHOW_FUNCTION_DESIGNER, this.model.attributes.apiPackageId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet editQueryButton = this.template.find('#editQueryButton')[0];\r\n if (editQueryButton && editQueryButton.node) {\r\n $(editQueryButton.node).on('click', () => {\r\n this.model.trigger(EVENTS.EDIT_QUERY, this.query);\r\n });\r\n }\r\n\t}\r\n});","export const EVENTS = {\r\n\tSPREADSHEET_SELECTED: 'SPREADSHEET_SELECTED',\r\n\tENTITY_SELECTED: 'ENTITY_SELECTED',\r\n\tAPI_PACKAGE_SELECTED: 'API_PACKAGE_SELECTED',\r\n\tTRIGGER_SELECTED: 'TRIGGER_SELECTED',\r\n\tQUERY_SELECTED: 'QUERY_SELECTED',\r\n\tDW_PACKAGE_SELECTED: 'DW_PACKAGE_SELECTED',\r\n\tEXACT_ONLINE_ENTITY_SELECTED: 'EXACT_ONLINE_ENTITY_SELECTED',\r\n\tEWS_ENTITY_SELECTED: 'EWS_ENTITY_SELECTED',\r\n\tOCI_PUNCH_OUT_SELECTED: 'OCI_PUNCH_OUT_SELECTED',\r\n\tMS_ACCESS_ENTITY_SELECTED: 'MS_ACCESS_ENTITY_SELECTED',\r\n\tDESKTOP_FOLDER_SELECTED: 'DESKTOP_FOLDER_SELECTED'\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport { TriggerDto } from './Dto/TriggerDto';\r\n\r\nexport class TriggerGroupViewModel {\r\n \r\n Group: string;\r\n \r\n Triggers: Array<TriggerDto>;\r\n\r\n IsExpanded: KnockoutObservable<boolean>;\r\n\r\n constructor(group: string, triggers: Array<TriggerDto>){\r\n this.Group = group;\r\n this.IsExpanded = ko.observable(false);\r\n this.Triggers = _.filter(triggers, (trigger) => trigger.Group == group);\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport Template from 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Templates/DataSelectorTemplate.html'\r\nimport { DATA_TYPES } from 'Core/Controls/CanvasDesigner/Constants/DataTypes';\r\n\r\nimport { EVENTS as QUERY_BUILDER_EVENTS } from 'QueryBuilder/Events';\r\nimport { Event } from 'Core/Common/Event'\r\nimport { EVENTS } from 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Events';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { CanvasDesignerStore } from 'Core/Controls/CanvasDesigner/Stores/CanvasDesignerStore';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { CanvasItemModel } from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { QueryBuilder } from 'QueryBuilder/QueryBuilder';\r\nimport { CANVAS_TYPES } from \"Core/Controls/CanvasDesigner/Constants/CanvasTypes\";\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { MsAccessSchemaDto } from 'Core/Controls/CanvasDesigner/Models/Dto/MsAccessSchemaDto';\r\nimport { MsAccessTableDto } from 'Core/Controls/CanvasDesigner/Models/Dto/MsAccessTableDto';\r\nimport { TriggerDto } from 'Core/Controls/CanvasDesigner/Models/Dto/TriggerDto';\r\nimport { TriggerGroupViewModel } from 'Core/Controls/CanvasDesigner/Models/TriggerGroupViewModel';\r\n\r\nko.templates['Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Templates/DataSelectorTemplate'] = Template;\r\n\r\nexport class DataSelector extends Event {\r\n\r\n\tprivate _labels = LABELS;\r\n\tprivate _data_types = DATA_TYPES;\r\n\r\n\tTitle: string;\r\n\tDataTypes: KnockoutObservableArray<string>;\r\n\tIsEnabled: KnockoutObservable<boolean>;\r\n\tNextStep: KnockoutObservable<boolean>;\r\n\tSelectedDataType: KnockoutObservable<string>;\r\n\tTriggers: KnockoutObservableArray<TriggerGroupViewModel>;\r\n\tFunctionPackages: KnockoutObservableArray<CanvasItemModel>;\r\n\tDataWizardPackages: KnockoutObservableArray<CanvasItemModel>;\r\n\tEntities: KnockoutObservableArray<any>;\r\n\tExactOnlineEntities: KnockoutObservableArray<string>;\r\n\tEWSEntities: KnockoutObservableArray<string>;\r\n\r\n\tIsShowFileUpload: KnockoutObservable<boolean>;\r\n\tIsShowTriggerList: KnockoutObservable<boolean>;\r\n\tIsShowFunctionPackageList: KnockoutObservable<boolean>;\r\n\tIsShowEntityList: KnockoutObservable<boolean>;\r\n\tIsShowNewQueryButton: KnockoutObservable<boolean>;\r\n\tIsShowDwPackageList: KnockoutObservable<boolean>;\r\n\tIsShowExactOnlineEntityList: KnockoutObservable<boolean>;\r\n\tIsShowEWSEntityList: KnockoutObservable<boolean>;\r\n\tIsShowMsAccessEntityList: KnockoutObservable<boolean>;\r\n\tMsAccessSchema: KnockoutObservable<MsAccessSchemaDto>;\r\n\r\n\tconstructor(title: string, dataTypes: Array<string>) {\r\n\t\tsuper();\r\n\t\tthis.Title = title;\r\n\t\tthis.DataTypes = ko.observableArray(dataTypes);\r\n\t\tthis.IsEnabled = ko.observable(false);\r\n\t\tthis.NextStep = ko.observable(false);\r\n\t\tthis.IsShowFileUpload = ko.observable(false);\r\n\t\tthis.IsShowTriggerList = ko.observable(false);\r\n\t\tthis.IsShowFunctionPackageList = ko.observable(false);\r\n\t\tthis.IsShowDwPackageList = ko.observable(false);\r\n\t\tthis.IsShowEntityList = ko.observable(false);\r\n\t\tthis.IsShowNewQueryButton = ko.observable(false);\r\n\t\tthis.IsShowExactOnlineEntityList = ko.observable(false);\r\n\t\tthis.IsShowEWSEntityList = ko.observable(false);\r\n\t\tthis.IsShowMsAccessEntityList = ko.observable(false);\r\n\t\tthis.MsAccessSchema = ko.observable(null);\r\n\r\n\t\tthis.SelectedDataType = ko.observable('');\r\n\t\tthis.Triggers = ko.observableArray([]);\r\n\t\tthis.FunctionPackages = ko.observableArray([]);\r\n\t\tthis.Entities = ko.observableArray([]);\r\n\t\tthis.DataWizardPackages = ko.observableArray([]);\r\n\t\tthis.ExactOnlineEntities = ko.observableArray([]);\r\n\t\tthis.EWSEntities = ko.observableArray([]);\r\n\r\n\t\tthis.AddEvent(EVENTS.SPREADSHEET_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.TRIGGER_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.API_PACKAGE_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.QUERY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.DW_PACKAGE_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.EXACT_ONLINE_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.EWS_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.OCI_PUNCH_OUT_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.MS_ACCESS_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.DESKTOP_FOLDER_SELECTED);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Templates/DataSelectorTemplate';\r\n\t}\r\n\r\n\tAfterRender() {}\r\n\r\n\tRender(target: HTMLElement) {\r\n\t\tko.cleanNode(target);\r\n\t\tko.applyBindings(this, target);\r\n\t}\r\n\r\n\tSetIsEnabled(value: boolean) {\r\n\t\tthis.IsEnabled(value);\r\n\t}\r\n\r\n\tasync SelectDataType(dataType: string) {\r\n\r\n\t\tthis.SelectedDataType(dataType);\r\n\r\n\t\tif (dataType == DATA_TYPES.OCI_PUNCH_OUT.Name) {\r\n\t\t\tthis.Trigger(EVENTS.OCI_PUNCH_OUT_SELECTED);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif (dataType == DATA_TYPES.DATABASE.Name) {\r\n\t\t\tthis.ShowEntityList();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.SPREADSHEET.Name) {\r\n\t\t\tthis.ShowFileUpload();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.QUERY.Name) {\r\n\t\t\tthis.ShowQueryNewQueryButton();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.API.Name) {\r\n\t\t\tthis.ShowFunctionPackageList();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.TRIGGER.Name) {\r\n\t\t\tthis.ShowTriggerList();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.DW_PACKAGE.Name) {\r\n\t\t\tthis.ShowDWPackageList();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.EXACT_ONLINE.Name) {\r\n\t\t\tthis.ShowExactOnlineEntityList();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.EWS.Name) {\r\n\t\t\tthis.ShowEWSEntityList();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.MS_ACCESS.Name) {\r\n\t\t\tthis.MsAccessSchema(await this.GetMSAccessFilePath());\r\n\t\t\tthis.Title = this.MsAccessSchema().Path;\r\n\t\t\tthis.IsShowMsAccessEntityList(true);\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.DESKTOP_FOLDER.Name) {\r\n\t\t\tlet path = await this.GetDesktopFolderPath();\r\n\t\t\tif(path && path != ''){\r\n\t\t\t\tthis.Trigger(EVENTS.DESKTOP_FOLDER_SELECTED, { Path: path });\r\n\t\t\t}else{\r\n\t\t\t\treturn;\r\n\t\t\t}\t\t\t\r\n\t\t}\r\n\r\n\t\tthis.NextStep(true);\r\n\t}\r\n\r\n\tasync GetDesktopFolderPath(): Promise<string>{\r\n\t\tBlockUI.Block();\r\n\r\n\t\tlet result = await CanvasDesignerStore.GetDesktopFolderPath()\r\n\t\t\t.always(() => BlockUI.Unblock())\r\n\t\t\t.fail(err => Notifier.Failed(err.message));\r\n\r\n\t\treturn result.Path;\r\n\t}\r\n\r\n\tasync GetMSAccessFilePath(): Promise<MsAccessSchemaDto>{\r\n\t\tBlockUI.Block();\r\n\r\n\t\tlet result = await CanvasDesignerStore.GetMsAccessSchema()\r\n\t\t\t.always(() => BlockUI.Unblock())\r\n\t\t\t.fail(err => Notifier.Failed(err.message));\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tShowEWSEntityList(){\r\n\t\tBlockUI.Block();\r\n\t\t\r\n\t\tCanvasDesignerStore.GetEWSEntities()\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\t\t\t\t\r\n\t\t\t\tthis.EWSEntities(result);\r\n\t\t\t\tthis.IsShowEWSEntityList(true);\r\n\t\t\t});\r\n\t}\r\n\r\n\tShowExactOnlineEntityList(){\r\n\t\tBlockUI.Block();\r\n\t\t\r\n\t\tCanvasDesignerStore.GetExactOnlineEntities()\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.ExactOnlineEntities(result);\r\n\t\t\t\tthis.IsShowExactOnlineEntityList(true);\r\n\t\t\t});\r\n\t}\r\n\r\n\tShowDWPackageList(){\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore.GetDataWizardPackages()\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.DataWizardPackages(result);\r\n\t\t\t\tthis.IsShowDwPackageList(true);\r\n\t\t\t});\r\n\t}\r\n\r\n\tShowTriggerList() {\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore.GetTriggers()\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.PrepareTriggerData(result);\r\n\t\t\t\tthis.IsShowTriggerList(true);\r\n\t\t});\r\n\t}\r\n\r\n\tToggle(triggerGroup: TriggerGroupViewModel){\r\n\t\ttriggerGroup.IsExpanded(!triggerGroup.IsExpanded());\r\n\t}\r\n\r\n\tprivate PrepareTriggerData(triggers: Array<TriggerDto>){\r\n\t\tlet groups = ['General', 'GenericButton', 'Grid', 'LifeStatus', 'Other'];\r\n\t\t_.each(groups, (group)=>{\r\n\t\t\tthis.Triggers.push(new TriggerGroupViewModel(group, triggers));\t\r\n\t\t});\r\n\t}\r\n\r\n\tShowFunctionPackageList() {\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore.GetFunctionPackages()\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.FunctionPackages(result);\r\n\t\t\t\tthis.IsShowFunctionPackageList(true);\r\n\t\t\t});\r\n\t}\r\n\r\n\tShowQueryBuilder() {\r\n\t\tlet queryBuilder = new QueryBuilder(true, false, false, true);\r\n\t\tqueryBuilder.NewFreeQuery();\r\n\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.CLOSE, this, () => { modal.Close(); });\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.DATA_SAVED, this, (eventArgs: any) => {\r\n\t\t\tmodal.Close();\r\n\t\t\tthis.Trigger(EVENTS.QUERY_SELECTED, { Query: eventArgs.data.QueryText });\r\n\t\t});\r\n\r\n\t\tlet modal = new Modal({});\r\n\t\tko.cleanNode(modal.Wrapper);\r\n\t\tko.applyBindings(queryBuilder, modal.Wrapper);\r\n\t\tmodal.Show();\r\n\t}\r\n\r\n\tShowQueryNewQueryButton() {\r\n\t\tthis.IsShowNewQueryButton(true);\r\n\t}\r\n\r\n\tShowFileUpload() {\r\n\t\tthis.IsShowFileUpload(true);\r\n\t}\r\n\r\n\tShowEntityList() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tCanvasDesignerStore.GetEntities({ IncludeDeleted: this.Title === CANVAS_TYPES.SOURCE })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.IsShowFileUpload(false);\r\n\t\t\t\tthis.IsShowTriggerList(false);\r\n\t\t\t\tthis.IsShowFunctionPackageList(false);\r\n\t\t\t\tthis.IsShowEntityList(true);\r\n\t\t\t\tthis.Entities(result);\r\n\t\t\t});\r\n\t}\r\n\r\n\tSelectTrigger(trigger: CanvasItemModel) {\r\n\t\tthis.Trigger(EVENTS.TRIGGER_SELECTED, { Id: trigger.Id });\r\n\t}\r\n\r\n\r\n\tSelectEntity(trigger: CanvasItemModel) {\r\n\t\tthis.Trigger(EVENTS.ENTITY_SELECTED, { Id: trigger.Id });\r\n\t}\r\n\r\n\tSelectPackage(apiPackage: CanvasItemModel) {\r\n\t\tthis.Trigger(EVENTS.API_PACKAGE_SELECTED, { Id: apiPackage.Id });\r\n\t}\r\n\r\n\tUploadFile(fileInput: HTMLInputElement) {\r\n\t\tlet file = fileInput.files[0];\r\n\t\tthis.Trigger(EVENTS.SPREADSHEET_SELECTED, { File: file });\r\n\t}\r\n\r\n\tSelectDataWizardPackage(dwPackage: CanvasItemModel){\r\n\t\tthis.Trigger(EVENTS.DW_PACKAGE_SELECTED, { Id: dwPackage.Id });\r\n\t}\r\n\r\n\tSelectExactOnlineEntity(name: string){\r\n\t\tthis.Trigger(EVENTS.EXACT_ONLINE_ENTITY_SELECTED, { Name: name });\r\n\t}\r\n\r\n\tSelectEWSEntity(name: string){\r\n\t\tthis.Trigger(EVENTS.EWS_ENTITY_SELECTED, { Name: name });\r\n\t}\r\n\r\n\tSelectMsAccessEntity(table: MsAccessTableDto){\r\n\t\tthis.Trigger(EVENTS.MS_ACCESS_ENTITY_SELECTED, { Table: table, Path: this.MsAccessSchema().Path });\r\n\t}\r\n\r\n\tBack() {\r\n\t\tthis.Entities([]);\r\n\t\tthis.Triggers([]);\r\n\t\tthis.ExactOnlineEntities([]);\r\n\t\tthis.DataWizardPackages([]);\r\n\t\tthis.EWSEntities([]);\r\n\t\tthis.MsAccessSchema(null);\r\n\r\n\t\tthis.IsShowFileUpload(false);\r\n\t\tthis.IsShowTriggerList(false);\r\n\t\tthis.IsShowFunctionPackageList(false);\r\n\t\tthis.IsShowEntityList(false);\r\n\t\tthis.NextStep(false);\r\n\t\tthis.IsShowNewQueryButton(false);\r\n\t\tthis.IsShowExactOnlineEntityList(false);\r\n\t\tthis.IsShowEWSEntityList(false);\r\n\t\tthis.IsShowDwPackageList(false);\r\n\t\tthis.IsShowMsAccessEntityList(false);\r\n\t}\r\n\r\n\tFormatTriggerTitle(triggerDto: TriggerDto){\r\n\t\treturn `${triggerDto.Name} ${triggerDto.Description}`;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"header\\\"> <!-- ko ifnot: NextStep --> <label data-bind=\\\"text: Title\\\"></label> <!--/ko--> <!-- ko if: NextStep --> <!-- ko if: IsShowEntityList --> <label> <i data-bind=\\\"class: _data_types.DATABASE.Icon\\\"></i> <!-- ko text: _data_types.DATABASE.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowFileUpload --> <label> <i data-bind=\\\"class: _data_types.SPREADSHEET.Icon\\\"></i> <!-- ko text: _data_types.SPREADSHEET.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowNewQueryButton --> <label> <i data-bind=\\\"class: _data_types.QUERY.Icon\\\"></i> <!-- ko text: _data_types.QUERY.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowFunctionPackageList --> <label> <i data-bind=\\\"class: _data_types.API.Icon\\\"></i> <!-- ko text: _data_types.API.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowTriggerList --> <label> <i data-bind=\\\"class: _data_types.TRIGGER.Icon\\\"></i> <!-- ko text: _data_types.TRIGGER.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowDwPackageList --> <label> <i data-bind=\\\"class: _data_types.DW_PACKAGE.Icon\\\"></i> <!-- ko text: _data_types.DW_PACKAGE.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowExactOnlineEntityList --> <label> <i data-bind=\\\"class: _data_types.EXACT_ONLINE.Icon\\\"></i> <!-- ko text: _data_types.EXACT_ONLINE.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowEWSEntityList --> <label> <i data-bind=\\\"class: _data_types.EWS.Icon\\\"></i> <!-- ko text: _data_types.EWS.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowMsAccessEntityList --> <label> <i data-bind=\\\"class: _data_types.MS_ACCESS.Icon\\\"></i> <!-- ko text: _data_types.MS_ACCESS.Name --><!-- /ko --> </label> <!--/ko--> <!--/ko--> </div> <div> <!-- ko if: NextStep --> <a data-bind=\\\"attr:{title: _labels.BACK}, click: $data.Back.bind($data)\\\" class=\\\"backButton stateButton\\\"><i class=\\\"fa fa-arrow-left\\\"></i></a> <!--/ko--> <!-- ko ifnot: NextStep --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: DataTypes --> <li> <a data-bind=\\\"click: $parent.SelectDataType.bind($parent, $data.Name)\\\" class=\\\"optionLink\\\"> <i data-bind=\\\"class: $data.Icon\\\"></i> <!-- ko text: $data.Name --><!-- /ko --> </a> </li> <!--/ko--> </ul> <!--/ko--> <!-- ko if: NextStep --> <!-- ko if: IsShowFileUpload --> <label data-bind=\\\"text: $data.SelectedDataType\\\"></label> <label class=\\\"fileInputLabel\\\" for=\\\"spreadSheetFile\\\">Path</label> <input data-bind=\\\"event: { change: $data.UploadFile.bind($data, $element) }\\\" accept=\\\".xlsx\\\" name=\\\"spreadsheet\\\" id=\\\"spreadSheetFile\\\" type=\\\"file\\\"/> <!--/ko--> <!-- ko if: IsShowTriggerList --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: Triggers --> <li> <a data-bind=\\\"text: Group, click: $parent.Toggle.bind($parent, $data)\\\"> <span data-bind=\\\"text: Group\\\" class=\\\"entityName\\\"></span> </a> <div data-bind=\\\"visible: $data.IsExpanded\\\"> <!-- ko foreach: Triggers --> <a data-bind=\\\"click: $parents[1].SelectTrigger.bind($parents[1], $data)\\\" class=\\\"trigger\\\"><span data-bind=\\\"text: Name, tooltip: { content: $parents[1].FormatTriggerTitle($data) }\\\" class=\\\"entityName\\\"></span></a> <!--/ko--> </div> </li> <!--/ko--> </ul> <!--/ko--> <!-- ko if: IsShowFunctionPackageList --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: FunctionPackages --> <li><a data-bind=\\\"click: $parent.SelectPackage.bind($parent, $data)\\\"><span data-bind=\\\"text: Name, tooltip: { content: Name }\\\" class=\\\"entityName\\\"></span></a></li> <!--/ko--> </ul> <!--/ko--> <!--/ko--> <!-- ko if: IsShowEntityList --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: Entities --> <li><a data-bind=\\\"click: $parent.SelectEntity.bind($parent, $data)\\\"><span data-bind=\\\"text: Name, tooltip: { content: Name }\\\" class=\\\"entityName\\\"></span></a></li> <!--/ko--> </ul> <!--/ko--> <!-- ko if: IsShowNewQueryButton --> <ul id=\\\"optionsList\\\"> <li><a data-bind=\\\"click: $data.ShowQueryBuilder.bind($data)\\\"><span class=\\\"entityName\\\">NEW QUERY</span></a></li> </ul> <!--/ko--> <!-- ko if: IsShowDwPackageList --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: DataWizardPackages --> <li><a data-bind=\\\"click: $parent.SelectDataWizardPackage.bind($parent, $data)\\\"><span data-bind=\\\"text: Name, tooltip: { content: Name }\\\" class=\\\"entityName\\\"></span></a></li> <!--/ko--> </ul> <!--/ko--> <!-- ko if: IsShowExactOnlineEntityList --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: ExactOnlineEntities --> <li><a data-bind=\\\"click: $parent.SelectExactOnlineEntity.bind($parent, $data)\\\"><span data-bind=\\\"text: $data, tooltip: { content: $data }\\\" class=\\\"entityName\\\"></span></a></li> <!--/ko--> </ul> <!--/ko--> <!-- ko if: IsShowEWSEntityList --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: EWSEntities --> <li><a data-bind=\\\"click: $parent.SelectEWSEntity.bind($parent, $data)\\\"><span data-bind=\\\"text: $data, tooltip: { content: $data }\\\" class=\\\"entityName\\\"></span></a></li> <!--/ko--> </ul> <!--/ko--> <!-- ko if: IsShowMsAccessEntityList --> <ul id=\\\"optionsList\\\"> <!-- ko with: MsAccessSchema --> <!-- ko foreach: Tables --> <li><a data-bind=\\\"click: $parents[1].SelectMsAccessEntity.bind($parents[1], $data)\\\"><span data-bind=\\\"text: Name, tooltip: { content: Name }\\\" class=\\\"entityName\\\"></span></a></li> <!--/ko--> <!--/ko--> </ul> <!--/ko--> </div>\";\n// Exports\nexport default code;","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport Template from 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Templates/DataSelectorViewTemplate.html'\r\nimport { DataSelector } from 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/DataSelector';\r\nimport { EVENTS } from 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Events';\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass DataSelectorView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.DataSelectorView = Dia.ElementView.extend({\r\n\r\n\ttemplate: Template,\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.$box = $(this.template);\r\n\r\n\t\tif (!this.model._events.remove) {\r\n\t\t\tthis.model.on('remove', this.removeBox, this);\r\n\t\t}\r\n\t},\r\n\r\n\trender: function () {\r\n\t\tjoint.dia.ElementView.prototype.render.apply(this, arguments);\r\n\t\tthis.paper.$el.prepend(this.$box);\r\n\t\tlet dataSelector = new DataSelector(this.model.title, this.model.dataTypes);\r\n\t\tdataSelector.Render(this.$box[0]);\r\n\t\tdataSelector.On(EVENTS.SPREADSHEET_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.SPREADSHEET_SELECTED, eventArgs.data.File);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.OCI_PUNCH_OUT_SELECTED, this, () => {\r\n\t\t\tthis.model.trigger(EVENTS.OCI_PUNCH_OUT_SELECTED);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.TRIGGER_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.TRIGGER_SELECTED, eventArgs.data.Id);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.API_PACKAGE_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.API_PACKAGE_SELECTED, eventArgs.data.Id);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.ENTITY_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.ENTITY_SELECTED, eventArgs.data.Id);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.QUERY_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.QUERY_SELECTED, eventArgs.data.Query);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.DW_PACKAGE_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.DW_PACKAGE_SELECTED, eventArgs.data.Id);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.EXACT_ONLINE_ENTITY_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.EXACT_ONLINE_ENTITY_SELECTED, eventArgs.data.Name);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.EWS_ENTITY_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.EWS_ENTITY_SELECTED, eventArgs.data.Name);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.MS_ACCESS_ENTITY_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.MS_ACCESS_ENTITY_SELECTED, eventArgs.data.Table, eventArgs.data.Path);\r\n\t\t});\r\n\r\n\r\n\t\tdataSelector.On(EVENTS.DESKTOP_FOLDER_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.DESKTOP_FOLDER_SELECTED, eventArgs.data.Path);\r\n\t\t});\r\n\t\t\r\n\t\tthis.updateBox();\r\n\t\treturn this;\r\n\t},\r\n\r\n\tupdateBox: function () {\r\n\t\tlet bbox = this.model.getBBox();\r\n\t\tthis.$box.css({\r\n\t\t\twidth: bbox.width,\r\n\t\t\theight: bbox.height,\r\n\t\t\tleft: bbox.x,\r\n\t\t\ttop: bbox.y,\r\n\t\t\ttransform: 'rotate(' + (this.model.get('angle') || 0) + 'deg)'\r\n\t\t});\r\n\t},\r\n\r\n\tremoveBox: function () {\r\n\t\tthis.$box.remove();\r\n\t}\r\n});","// Module\nvar code = \"<div class=\\\"html-element\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div>\";\n// Exports\nexport default code;","import { dia as Dia, shapes, V, g } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/Table';\r\nimport { EVENTS } from \"./ParamView/Events\";\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\n\r\nconst _labels = LABELS;\r\n\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass GroupView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\nconst getTemplate = () => {\r\n\treturn V('<g class=\"rotatable\"><text class=\"shape-label\"/><g class=\"scalable\"><rect/></g></g>');\r\n}\r\n\r\njoint.shapes.cyberThing.GroupView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\r\n\t\tif(this.model.attributes.position.x === 0){\r\n\t\t\tthis.model.attributes.position.x = 600;\r\n\t\t}\r\n\r\n\t\tif(this.model.attributes.position.y === 0){\r\n\t\t\tthis.model.attributes.position.y = 100;\r\n\t\t}\r\n\r\n\t\tthis.model.position(this.model.attributes.position.x, this.model.attributes.position.y);\r\n\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 10;\r\n\r\n\t\tthis.template = getTemplate();\r\n\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.vel.append(this.template);\r\n\t},\r\n\r\n\tbindEvents: function () {\r\n\r\n\t\tlet functionDesignerButtons = this.template.find('#showFunctionDesigner');\r\n\t\t_.each(functionDesignerButtons, (button: any) => {\r\n\t\t\tif (button && button.node) {\r\n\t\t\t\t$(button.node).on('click', () => {\r\n\t\t\t\t\tconst temp = this.model.attributes.apiPackageId;\r\n\t\t\t\t\tthis.model.trigger(EVENTS.SHOW_FUNCTION_DESIGNER, this.model.attributes.apiPackageId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\trender: function () {\r\n\r\n\t\tjoint.dia.ElementView.prototype.render.apply(this, arguments);\r\n\r\n\t\tthis.renderTools();\r\n\t\tthis.update();\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\trenderTools: function () {\r\n\r\n\t\tvar toolMarkup = this.model.toolMarkup || this.model.get('toolMarkup');\r\n\r\n\t\tif (toolMarkup) {\r\n\r\n\t\t\tvar nodes = V(toolMarkup);\r\n\t\t\tV(this.el).append(nodes);\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n});","import * as _ from 'underscore';\r\nimport { iconsArrayFA, iconsArraySI, iconsArraySoc } from 'Core/Controls/CanvasDesigner/Configuration/Icons';\r\nimport {\r\n\tCanvasItemModel,\r\n\tCanvasLinkModel,\r\n\tCanvasModel,\r\n\tCanvasIconModel,\r\n\tShapeModel,\r\n} from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { SourceViewModel } from 'Core/Controls/CanvasDesigner/Models/SourceViewModel';\r\nimport { DestinationViewModel } from 'Core/Controls/CanvasDesigner/Models/DestinationViewModel';\r\nimport { TableViewModel } from 'Core/Controls/CanvasDesigner/Models/TableViewModel';\r\nimport { TriggerViewModel } from 'Core/Controls/CanvasDesigner/Models/TriggerViewModel';\r\nimport { JSFunctionViewModel } from 'Core/Controls/CanvasDesigner/Models/JSFunctionViewModel';\r\nimport { ParamViewModel } from 'Core/Controls/CanvasDesigner/Models/ParamViewModel';\r\nimport { ArrowViewModel } from 'Core/Controls/CanvasDesigner/Models/ArrowViewModel';\r\nimport { DecoratedRect } from 'Core/Controls/CanvasDesigner/Models/DecoratedRect';\r\nimport { CanvasShapeWidth } from 'Core/Controls/CanvasDesigner/Enums/CanvasShapeWidth';\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\nimport {dia as Dia, shapes, dia} from 'libs/rappid/build/rappid';\r\n\r\nexport class CanvasViewModel {\r\n\tCells: Array<SourceViewModel | TableViewModel | ParamViewModel | ArrowViewModel | DecoratedRect | TriggerViewModel | DestinationViewModel | JSFunctionViewModel>;\r\n\tCanvasLinks: Array<CanvasLinkModel>;\r\n\tNodes: Array<CanvasItemModel>;\r\n\ttabZonesEmbeds: any;\r\n\ttabsArePresent: boolean = false;\r\n\tfunctionsHeight: number;\r\n\tcombinedExistingHeight: number = 0;\r\n\tRecordId: number;\r\n\tShapes: Array<ShapeModel>;\r\n\tSource: SourceViewModel;\r\n\tDestination: DestinationViewModel;\r\n\r\n\tconstructor(model: CanvasModel, topPosition?: number) {\r\n\t\tthis.Cells = [];\r\n\t\tthis.CanvasLinks = model.CanvasLinks;\r\n\t\tthis.Nodes = [];\r\n\t\tthis.functionsHeight = topPosition;\r\n\t\tthis.Shapes = model.Shapes;\r\n\t\tthis.Init(model);\r\n\t}\r\n\r\n\tInit(model: CanvasModel) {\r\n\t\tmodel.CanvasItems.map((cell: CanvasItemModel) => {\r\n\t\t\tswitch (cell.TypeName) {\r\n\t\t\t\tcase CANVAS_TYPES.DW_PACKAGE:\r\n\t\t\t\t\tthis.RecordId = cell.Id;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CANVAS_TYPES.SOURCE:\r\n\t\t\t\t\tvar source = new SourceViewModel(cell);\r\n\t\t\t\t\tthis.Source = source;\r\n\t\t\t\t\tthis.Cells.push(source);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CANVAS_TYPES.DESTINATION:\r\n\t\t\t\t\tvar destination = new DestinationViewModel(cell);\r\n\t\t\t\t\tthis.Destination = destination;\r\n\t\t\t\t\tthis.Cells.push(destination);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CANVAS_TYPES.TABLE:\r\n\t\t\t\t\tthis.Nodes.push(cell);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CANVAS_TYPES.TRIGGER:\r\n\t\t\t\t\tthis.Cells.push(new TriggerViewModel(cell));\r\n\t\t\t\t\tthis.Nodes.push(cell);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CANVAS_TYPES.JS_FUNCTION:\r\n\t\t\t\t\tthis.Cells.push(new JSFunctionViewModel(cell));\r\n\t\t\t\t\tthis.Nodes.push(cell);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CANVAS_TYPES.PARAM:\r\n\t\t\t\t\tthis.Cells.push(new ParamViewModel(cell));\r\n\t\t\t\t\tbreak;\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t\r\n\t\tmodel.CanvasLinks.map((link: CanvasLinkModel) => {\r\n\t\t\tconst parentItem: any = _.findWhere(this.Cells, { id: link.CanvasItem1Id || link.CanvasItem1Guid });\r\n\t\t\tconst childItem: any = _.findWhere(this.Cells, { id: link.CanvasItem2Id || link.CanvasItem2Guid });\r\n\t\t\tif (!parentItem || !childItem) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst bothSocket = parentItem.type.split('.')[1] === CANVAS_TYPES.PARAM && childItem.type.split('.')[1] === CANVAS_TYPES.PARAM;\r\n\r\n\t\t\tif (!bothSocket) {\r\n\t\t\t\t\tparentItem.SetEmbedds(link);\r\n\t\t\t\t\tchildItem.SetParentId(link);\r\n\t\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import * as joint from 'libs/rappid/build/rappid';\r\nimport {dia as Dia, shapes, dia} from 'libs/rappid/build/rappid';\r\nimport { DropdownDataStore } from 'Core/Controls/Dropdown/Stores/DropDownDataStore';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport { RecordStore } from '../../../Common/Stores/RecordStore';\r\nimport { ShapeFactory } from '../Views/ShapeFactory';\r\nimport { BlockUI } from '../../../Common/BlockUi';\r\nexport class FunctionParamInspector {\r\n public static Build(shape: joint.shapes.cyberThing.ParamView, graph: Dia.Graph): joint.ui.Inspector{\r\n \r\n\t\tlet tableId = parseInt(shape.model.attributes.filledFromTable);\r\n\r\n\t\tif(Number.isNaN(tableId) || tableId == 0){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n const inspector = joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: shape.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'FilledFrom': {\r\n\t\t\t\t\t\ttype: 'filledFrom',\r\n\t\t\t\t\t\tlabel: 'Filled from',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t},\r\n renderFieldContent: function(options, path, value) {\r\n\t\t\t\tlet fillFromValue = '';\r\n\t\t\t\tlet root = ShapeFactory.GetRoot(shape.model, graph);\r\n\t\t\t\tif(value){\r\n\t\t\t\t\tfillFromValue = value[root.get('replicationId')] || '';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(path === 'attrs/FilledFrom'){\r\n\t\t\t\t\tvar $buttonSet = $('<div>');\r\n\r\n const $searchButton = $(`\r\n <div class=\"field select-field\">\r\n <label>Fill from</label>\r\n <div class=\"form-control\">\r\n\t\t\t\t\t\t\t\t<input style=\"width: 90%;\" type=\"text\" value='${fillFromValue}'/>\r\n <a class=\"search-magnifier\"><span class=\"icon-magnifier\"></span></a>\r\n </div>\r\n </div>`\r\n\t\t\t\t\t)\r\n \r\n\t\t\t\t\t$buttonSet.append([$searchButton]);\r\n\r\n\t\t\t\t\t$searchButton.find('input').on(\"keyup change\", (evt)=>{\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/FilledFrom', (evt.target as HTMLInputElement).value);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$searchButton.find('.search-magnifier').on('click', function() {\r\n const searchScreen = new SearchScreen({ EntityId: shape.model.attributes.filledFromTable });\r\n searchScreen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n\r\n\t\t\t\t\t\tBlockUI.Block({ Target: $buttonSet[0] });\r\n RecordStore\r\n .GetRecord({ TableId: shape.model.attributes.filledFromTable, RecordId: evtArgs.data.RecordId })\r\n .always(()=>BlockUI.Unblock($buttonSet[0]))\r\n\t\t\t\t\t\t.then(record=>{\r\n const field = _.find(record.Fields, (field: any)=>field.FieldId === shape.model.attributes.filledFromField);\r\n let $fillValueInput = $searchButton.find('input');\r\n $fillValueInput.val(field.FieldValue);\r\n inspector.trigger('change:attrs/FilledFrom', field.FieldValue);\r\n });\r\n });\r\n searchScreen.Show();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn $buttonSet;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t});\r\n\r\n return inspector;\r\n }\r\n}","import * as joint from 'libs/rappid/build/rappid';\r\nimport {dia as Dia, shapes, dia} from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Shapes';\r\nimport { FunctionParamInspector } from './FunctionParamInspector';\r\n\r\nexport class InspectorFactory {\r\n public static BuildInspector(shape: joint.shapes.cyberThing.ParamView, graph: Dia.Graph): joint.ui.Inspector {\r\n let parent = graph.get('cells').get(shape.model.get('parent'));\r\n\t\tif(parent instanceof shapes.cyberThing.CSharpFunction || parent instanceof shapes.cyberThing.JSFunction){\r\n return FunctionParamInspector.Build(shape, graph); \r\n }\r\n return null;\r\n }\t\r\n}\r\n","import * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Shapes';\r\nimport { CanvasModelState } from 'Core/Controls/CanvasDesigner/Enums/CanvasModelState';\r\nimport { CanvasViewModel } from 'Core/Controls/CanvasDesigner/Models/CanvasViewModel';\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\nimport { DataTypes, DATA_TYPES } from 'Core/Controls/CanvasDesigner/Constants/DataTypes';\r\nimport { EVENTS as DATA_SELECTOR_EVENTS } from 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Events';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { CanvasDesignerStore, IExactOnlineSettingDto } from 'Core/Controls/CanvasDesigner/Stores/CanvasDesignerStore';\r\nimport {\r\n\tCanvasModel,\r\n\tCanvasLinkModel,\r\n\tCanvasItemModel\r\n} from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { ShapeFactory } from 'Core/Controls/CanvasDesigner/Views/ShapeFactory';\r\nimport {GridLayout} from \"../GridLayout\";\r\nimport { EVENTS } from \"Core/Controls/CanvasDesigner/Shapes/Views/ParamView/Events\";\r\nimport {dia as Dia, shapes, dia} from 'libs/rappid/build/rappid';\r\nimport { Notifier } from '../../../Common/Notifier';\r\nimport { Tooltip } from '../../../Common/Tooltip';\r\nimport { ModelState } from '../../../Common/Enums/ModelState';\r\nimport { FileDownloader } from 'Core/Components/FileDownloader/FileDownloader';\r\nimport { MsAccessTableDto } from '../Models/Dto/MsAccessTableDto';\r\nimport { InspectorFactory } from '../Inspector/InspectorFactory';\r\n\r\nexport class CanvasManager {\r\n\tprivate _graph: joint.dia.Graph;\r\n\tprivate _paper: joint.dia.Paper;\r\n\tprivate _paperScroller: joint.ui.PaperScroller;\r\n\tprivate _viewModel: CanvasViewModel;\r\n\tprivate _dataModel: CanvasModel;\r\n\tprivate _dwPackage: CanvasItemModel;\r\n\tprivate _toogleExpanding: boolean;\r\n\tprivate _shapeFactory: ShapeFactory;\r\n\tprivate _inspector: joint.ui.Inspector;\r\n\tprivate _selectedCellView: any;\r\n\tprivate _arrowTooltip: Tooltip;\r\n\r\n\tprivate GetCellType(cell: joint.dia.Cell): string {\r\n\t\treturn cell.get('type').split('.')[1];\r\n\t}\r\n\r\n\tconstructor(dataModel: CanvasModel) {\r\n\t\tthis._viewModel = new CanvasViewModel(dataModel);\r\n\t\tthis._dataModel = dataModel;\r\n\t\tthis._toogleExpanding = false;\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tGetShapeFactory() {\r\n\t\treturn this._shapeFactory;\r\n }\r\n\r\n\tget PackageName(){\r\n\t\tlet dwPackageItem = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\treturn item.TypeName === CANVAS_TYPES.DW_PACKAGE;\r\n\t\t});\r\n\t\tif(dwPackageItem){\r\n\t\t\treturn dwPackageItem.Name;\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tget DestinationDataType(){\r\n\t\tlet dwPackageItem = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\treturn item.TypeName === CANVAS_TYPES.DESTINATION;\r\n\t\t});\r\n\t\tif(dwPackageItem){\r\n\t\t\tlet properties = JSON.parse(dwPackageItem.Properties);\r\n\t\t\tif(properties){\r\n\t\t\t\treturn properties.DataType;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tInit() {\r\n\t\tthis.InitializePaper();\r\n\t\tthis.PopulateGraph();\r\n\t}\r\n\r\n\tPopulateGraph() {\r\n\t\tthis._graph.clear();\r\n\t\tthis._shapeFactory.InitRoot(this._dataModel);\r\n\t\tthis._dwPackage = this._shapeFactory.Root;\r\n\t\tthis._shapeFactory.BuildShapes(this._dataModel)\r\n\t\t\t.then(()=>{\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t});\r\n\r\n\t\tif (!this._viewModel.Source) {\r\n\t\t\tthis.AddDataSelector(CANVAS_TYPES.SOURCE);\r\n\t\t}\r\n\r\n\t\tif (!this._viewModel.Destination) {\r\n\t\t\tthis.AddDataSelector(CANVAS_TYPES.DESTINATION);\r\n\t\t}\r\n\t}\r\n\r\n\tInitializePaper() {\r\n\t\tconst graph = this._graph = new joint.dia.Graph;\r\n\r\n\t\tgraph.on('change:parent', (element: joint.dia.Cell, newParent, opt) => {});\r\n\r\n\t\tgraph.on('change', (element: joint.dia.Cell, newParent, opt) => {\r\n\t\t\telement.set('state', CanvasModelState.Changed);\r\n\t\t});\r\n\r\n\t\tgraph.on('remove', (element: joint.dia.Cell, collection, opt) => {\r\n\t\t\tlet source = element.get('source');\r\n\t\t\tlet target = element.get('target');\r\n\r\n\t\t\tif (source && target && !this._toogleExpanding) {\r\n\t\t\t\tlet link = _.find(this._dataModel.CanvasLinks, (item) => {\r\n\t\t\t\t\treturn ((item.CanvasItem1Id === source.id || item.CanvasItem1Guid === source.id) && (item.CanvasItem2Id === target.id || item.CanvasItem2Guid === target.id));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (link && link.State === CanvasModelState.NoChanges) {\r\n\t\t\t\t\tlink.State = CanvasModelState.Deleted;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (link && link.State === CanvasModelState.New) {\r\n\t\t\t\t\tthis._dataModel.CanvasLinks.splice(this._dataModel.CanvasLinks.indexOf(link), 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst paper = this._paper = new joint.dia.Paper({\r\n\t\t\tasync: { batchSize: 50 },\r\n\t\t\twidth: 1271,\r\n\t\t\theight: 700,\r\n\t\t\tgridSize: 5,\r\n\t\t\tdrawGrid: false,\r\n\t\t\tmodel: graph,\r\n\t\t\tembeddingMode: true,\r\n\t\t\tperpendicularLinks: false,\r\n\t\t\tclickThreshold: 1,\r\n\t\t\tdefaultLink: new joint.shapes.cyberThing.Arrow(),\r\n\t\t\tmultiLinks: false,\r\n\r\n\t\t\tinteractive: (cellView, evt) => {\r\n\t\t\t\tlet allowMovement = false;\r\n\r\n\t\t\t\tif(cellView instanceof joint.shapes.cyberThing.GroupView){\r\n\t\t\t\t\tallowMovement = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (cellView.model.isLink()) {\r\n\t\t\t\t\tallowMovement = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\telementMove: allowMovement,\r\n\t\t\t\t\taddLinkFromMagnet: true\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tvalidateEmbedding: (childview: any, parentview: any) => {\r\n\t\t\t\tif (this.GetCellType(childview.model) === 'Node' && this.GetCellType(parentview.model) === 'Zone') {\r\n\t\t\t\t\tchildview.model.set({ 'embeddingInvalid': false, 'embedded': true });\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else if (this.GetCellType(childview.model) === 'Param' && this.GetCellType(parentview.model) === 'Node') {\r\n\t\t\t\t\tchildview.model.set({ 'embeddingInvalid': false, 'embedded': true });\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else if (this.GetCellType(childview.model) === this.GetCellType(parentview.model)) {\r\n\t\t\t\t\tchildview.model.set({ 'embeddingInvalid': true, 'embedded': true });\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchildview.model.set({ 'embeddingInvalid': true, 'embedded': true });\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tvalidateConnection: (cellViewS: joint.dia.CellView, magnetS, cellViewT: joint.dia.CellView, magnetT, end, linkView) => {\r\n\t\t\t\t// Prevent linking from input ports;\r\n\t\t\t\tif (magnetS && magnetS.getAttribute('port-group') === 'in') return false;\r\n\t\t\t\t// Prevent linking from output ports to input ports within one element;\r\n\t\t\t\tif (cellViewS === cellViewT) return false;\r\n\t\t\t\t// Prevent linking to input ports;\r\n\t\t\t\treturn magnetT && magnetT.getAttribute('port-group') === 'in';\r\n\t\t\t},\r\n\t\t\tvalidateMagnet: (cellView: joint.dia.CellView, magnet) => {\r\n\t\t\t\t// Note that this is the default behaviour. Just showing it here for reference.\r\n\t\t\t\t// Disable linking interaction for magnets marked as passive (see below `.inPorts circle`).\r\n\t\t\t\treturn magnet.getAttribute('magnet') !== 'passive';\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tpaper.on('link:pointermove', (link) => {});\r\n\r\n\t\tpaper.on('blank:pointerclick', () => {\r\n\t\t\tthis.HideInpector();\r\n\r\n\t\t\tif(this._inspector){\r\n\t\t\t\tthis._inspector.remove();\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tif(this._selectedCellView){\r\n\t\t\t\tthis._selectedCellView.unhighlight();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tpaper.on('cell:mouseover', (cellView: any, evt)=>{\r\n\r\n\t\t\tif(cellView.model instanceof joint.shapes.cyberThing.Arrow){\r\n\r\n\t\t\t\tvar scrollX = document.body.scrollLeft + document.documentElement.scrollLeft;\r\n\t\t\t\tvar scrollY = document.body.scrollTop + document.documentElement.scrollTop;\r\n\t\t\t\t$('#tooltip-container').offset({top: evt.clientY + scrollY + 10, left: evt.clientX + scrollX + 10 });\r\n\r\n\t\t\t\tif (cellView.sourceView instanceof joint.shapes.cyberThing.ParamView && cellView.targetView instanceof joint.shapes.cyberThing.ParamView) {\r\n\t\t\t\t\tlet sourceParent = graph.get('cells').get(cellView.sourceView.model.get('parent'));\r\n\t\t\t\t\tlet targetParent = graph.get('cells').get(cellView.targetView.model.get('parent'));\r\n\t\t\t\t\tlet content = `${sourceParent.get('originalName')}.${cellView.sourceView.model.get('originalName')} > ${targetParent.get('originalName')}.${cellView.targetView.model.get('originalName')}`;\r\n\t\t\t\t\tthis._arrowTooltip.SetContent(content);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$('#tooltip-container').trigger('mouseenter');\r\n\t\t\t}\r\n\r\n\t\t\tcellView.highlight(null, { highlighter: {\r\n\t\t\t\t\tname: 'addClass',\r\n\t\t\t\t\toptions: {\r\n\t\t\t\t\t\tclassName: 'highlighted'\r\n\t\t\t\t\t}\r\n\t\t\t\t}});\r\n\t\t});\r\n\r\n\t\tpaper.on('cell:mouseout', (cellView: any)=>{\r\n\r\n\t\t\tif(cellView.model instanceof joint.shapes.cyberThing.Arrow){\r\n\t\t\t\t$('#tooltip-container').trigger('mouseout');\r\n\t\t\t}\r\n\r\n\t\t\tcellView.unhighlight(null, { highlighter: {\r\n\t\t\t\t\tname: 'addClass',\r\n\t\t\t\t\toptions: {\r\n\t\t\t\t\t\tclassName: 'highlighted'\r\n\t\t\t\t\t}\r\n\t\t\t\t}});\r\n\t\t});\r\n\r\n\t\tpaper.on('link:pointerup', (link: any) => {\r\n\t\t\tif (link.sourceView instanceof joint.shapes.cyberThing.ParamView && link.targetView instanceof joint.shapes.cyberThing.ParamView) {\r\n\t\t\t\tlet linkModel = new CanvasLinkModel();\r\n\t\t\t\tlinkModel.CanvasItem1Id = link.sourceView.model.get('recordId');\r\n\t\t\t\tlinkModel.CanvasItem1Guid = link.sourceView.model.get('guid');\r\n\t\t\t\tlinkModel.CanvasItem2Id = link.targetView.model.get('recordId');\r\n\t\t\t\tlinkModel.CanvasItem2Guid = link.targetView.model.get('guid');\r\n\t\t\t\tlinkModel.State = CanvasModelState.New;\r\n\t\t\t\tlinkModel.RootRecordId = this._dwPackage.Id;\r\n\t\t\t\tlinkModel.RootRecordGuid = this._dwPackage.Guid;\r\n\r\n\t\t\t\tlet rightItemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Id === linkModel.CanvasItem2Id && item.Guid === linkModel.CanvasItem2Guid;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet leftItemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Id === linkModel.CanvasItem1Id && item.Guid === linkModel.CanvasItem1Guid;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet parent = this._shapeFactory.GetParentByType(this._dataModel, rightItemModel, CANVAS_TYPES.GROUP);\r\n\r\n\t\t\t\tif(!parent){\r\n\t\t\t\t\tparent = this._shapeFactory.GetParentByType(this._dataModel, leftItemModel, CANVAS_TYPES.GROUP);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(parent){\r\n\t\t\t\t\tlinkModel.RootRecordId = parent.Id;\r\n\t\t\t\t\tlinkModel.RootRecordGuid = parent.Guid;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tlinkModel.RootRecordId = this._dwPackage.Id;\r\n\t\t\t\t\tlinkModel.RootRecordGuid = this._dwPackage.Guid;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet existsLink = _.find(this._dataModel.CanvasLinks, (item) => {\r\n\t\t\t\t\treturn item.CanvasItem1Guid === linkModel.CanvasItem1Guid\r\n\t\t\t\t\t\t&& item.CanvasItem1Id === linkModel.CanvasItem1Id\r\n\t\t\t\t\t\t&& item.CanvasItem2Guid === linkModel.CanvasItem2Guid\r\n\t\t\t\t\t\t&& item.CanvasItem2Id === linkModel.CanvasItem2Id\r\n\t\t\t\t\t\t&& item.State != ModelState.Deleted\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!existsLink){\r\n\t\t\t\t\tthis._dataModel.CanvasLinks.push(linkModel);\r\n\t\t\t\t\tthis.UpdateLinkProperties(link, linkModel);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.UpdateLinkProperties(link, existsLink);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tgraph.attributes.cells.remove(link.model.cid);\r\n\t\t\t\tlink.remove();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tpaper.on('cell:pointerdown', (cellView: any, evt: any) => {\r\n\t\t\tlet targetClass = evt.target.parentNode.getAttribute('class');\r\n\t\t\tif( targetClass=== 'fa fa-arrow-left' || targetClass === 'stateButton'){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\r\n\t\t\tif(this._inspector){\r\n\t\t\t\tthis._inspector.remove();\t\r\n\t\t\t\tthis._inspector = null;\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tif(this._selectedCellView){\r\n\t\t\t\tthis._selectedCellView.unhighlight();\r\n\t\t\t}\r\n\r\n\t\t\tif(cellView instanceof joint.shapes.cyberThing.ParamView) {\r\n\t\t\t\tthis.RenderInspector(cellView);\r\n\t\t\t\tcellView.highlight();\r\n\t\t\t\tthis._selectedCellView = cellView;\r\n\t\t\t}\r\n\r\n\t\t\tif(cellView instanceof joint.shapes.cyberThing.GroupView) {\r\n\t\t\t\tlet className = evt.target.parentNode.getAttribute('class');\r\n\t\t\t\tswitch (className) {\r\n\t\t\t\t\tcase 'element-tool-remove':\r\n\t\t\t\t\t\tthis._shapeFactory.DeleteItem(this._dataModel, itemModel, cellView.model.getEmbeddedCells());\r\n\t\t\t\t\t\tthis._graph.removeCells(cellView.model.getEmbeddedCells());\r\n\t\t\t\t\t\tcellView.remove();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(\r\n\t\t\t\t(\r\n\t\t\t\t\t(cellView instanceof joint.shapes.cyberThing.SourceView || cellView instanceof joint.shapes.cyberThing.DestinationView)\r\n\t\t\t\t\t&&\r\n\t\t\t\t\t(itemModel.JsonProperties.DataType === DataTypes.ExactOnline || itemModel.JsonProperties.DataType === DataTypes.EWS || itemModel.JsonProperties.DataType === DataTypes.OCIPunchOut)\r\n\t\t\t\t)\r\n\t\t\t\t|| cellView instanceof joint.shapes.cyberThing.TableView\r\n\t\t\t\t|| cellView instanceof joint.shapes.cyberThing.CSharpFunctionView\r\n\t\t\t\t|| cellView instanceof joint.shapes.cyberThing.TriggerView\r\n\t\t\t\t|| cellView instanceof joint.shapes.cyberThing.JSFunctionView\r\n\t\t\t\t|| cellView instanceof joint.shapes.cyberThing.APIMethodView){\r\n\t\t\t\tthis._toogleExpanding = true;\r\n\r\n\t\t\t\tif(evt.target.parentNode.getAttribute('class') === 'toggle-icon fa') {\r\n\t\t\t\t\tthis.ToggleCollapse(cellView, itemModel, graph, paper);\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.RenderInspector(cellView);\r\n\t\t\t\t\tcellView.highlight();\r\n\t\t\t\t\tthis._selectedCellView = cellView;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!this._inspector){\r\n\t\t\t\tthis.HideInpector();\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tthis._paperScroller = new joint.ui.PaperScroller({\r\n\t\t\tpadding: 10,\r\n\t\t\tpaper: paper,\r\n\t\t\tautoResizePaper: true\r\n\t\t});\r\n\r\n\t\tthis._shapeFactory = new ShapeFactory(this._graph, this._paper, this._paperScroller);\r\n\t\tthis._shapeFactory.On(EVENTS.BACK_TO_DATA_SELECTOR, this, (evtArgs)=>{\r\n\t\t\tthis.AddDataSelector(evtArgs.data.Type);\r\n\t\t});\r\n\r\n\t\t$('#paper-container').append(this._paperScroller.el);\t\t\r\n\t\t$('#tooltip-container').remove();\r\n\t\t$('body').append('<div id=\"tooltip-container\" style=\"position: absolute; top: 0px; left: 0px;\"></div>');\r\n\r\n\t\tthis._arrowTooltip = new Tooltip('#tooltip-container', \"test\", {\r\n\t\t\tposition: {x: 'right', y: 'center'},\r\n\t\t\toutside: 'x'\r\n\t\t});\r\n\r\n\t\tthis._paperScroller.render();\r\n\t\tthis._paperScroller.scroll(0,0);\r\n\t}\r\n\r\n\tHideInpector(){\r\n\t\tif(this._inspector){\r\n\t\t\tlet inputs = this._inspector.$el.find('input');\r\n\t\t\tinputs.trigger('change');\r\n\t\t}\r\n\r\n\t\t$(\"#paper-container\").animate({right: 0}, ()=>{\r\n\t\t\t$(\"#inspector-container\").hide();\r\n\t\t});\r\n\t}\r\n\r\n\tToggleCollapse(cellView: any, itemModel: CanvasItemModel, graph: joint.dia.Graph, paper: joint.dia.Paper){\r\n\t\tthis.UpdateItemProperties(cellView, itemModel);\r\n\t\tif (cellView.model.attributes.attrs.IsCollapsed) {\r\n\t\t\tthis._shapeFactory.Expand(cellView, this._dataModel, graph, paper);\r\n\t\t\tcellView.model.attributes.attrs.IsCollapsed = false;\r\n\t\t\tthis._toogleExpanding = false;\r\n\t\t} else {\r\n\t\t\tcellView.model.on('transition:end', () => {\r\n\t\t\t\tlet embeds = cellView.model.getEmbeddedCells();\r\n\t\t\t\tthis._graph.removeCells(embeds);\r\n\t\t\t\tthis._toogleExpanding = false;\r\n\r\n\t\t\t\tlet parent = ShapeFactory.GetRoot(cellView.model, this._graph);\r\n\t\t\t\tif (parent) {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tlet position = parent.get('position');\r\n\r\n\t\t\t\t\t\tGridLayout.layout(parent.getEmbeddedCells(), {\r\n\t\t\t\t\t\t\tparentRelative: true,\r\n\t\t\t\t\t\t\tdeep: true,\r\n\t\t\t\t\t\t\tdy: 5,\r\n\t\t\t\t\t\t\tresizeToFit: true\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tparent.fitEmbeds({\r\n\t\t\t\t\t\t\tpadding: {\r\n\t\t\t\t\t\t\t\ttop: 25,\r\n\t\t\t\t\t\t\t\tleft: 10,\r\n\t\t\t\t\t\t\t\tright: 20,\r\n\t\t\t\t\t\t\t\tbottom: 10\r\n\t\t\t\t\t\t\t}, deep: true\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tparent.position(position.x, position.y, {deep: true});\r\n\t\t\t\t\t}, 0);\r\n\t\t\t\t}\r\n\t\t\t\tcellView.off('transition:end');\r\n\t\t\t});\r\n\r\n\t\t\t_.each(cellView.model.getEmbeddedCells(), (cell: any) => {\r\n\t\t\t\tcell.attr('./visibility', 'hidden');\r\n\t\t\t});\r\n\r\n\t\t\tcellView.model.transition(\r\n\t\t\t\t'size/height',\r\n\t\t\t\tcellView.model.attributes.defaultSize.height,\r\n\t\t\t\t{\r\n\t\t\t\t\tduration: 250,\r\n\t\t\t\t\tdelay: 10,\r\n\t\t\t\t\ttimingFunction: joint.util.timing.linear,\r\n\t\t\t\t\tvalueFunction: joint.util.interpolate.number\r\n\t\t\t\t});\r\n\r\n\t\t\tcellView.model.attributes.attrs.IsCollapsed = true;\r\n\t\t}\r\n\t\tthis.ReRender(cellView);\r\n\t}\r\n\r\n\tBuildExactOnlineInspector(cellView): joint.ui.Inspector {\r\n\t\tlet inspector = joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'ButtonTest': {\r\n\t\t\t\t\t\ttype: 'buttonTest',\r\n\t\t\t\t\t\tlabel: 'Test',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'EndPointUrl': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'EndPointUrl',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 2\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'CallbackUrl': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'CallbackUrl',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 3\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'ClientId': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'ClientId',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 4\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'ClientSecret': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'ClientSecret',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 5\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'SecretKey': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'SecretKey',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 6\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Login': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Login',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 6\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Password': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Password',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 7\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Division': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Division',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 8\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'ExactOnline': {\r\n\t\t\t\t\tlabel: 'ExactOnline options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgetFieldValue: function(attribute, type) {\r\n\t\t\t\tif (type === 'buttonTest') {\r\n\t\t\t\t\treturn { value: $(attribute).data('result') };\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\trenderFieldContent: function(options, path, value) {\r\n\t\t\t\tif(path === 'attrs/ButtonTest'){\r\n\t\t\t\t\tvar $buttonSet = $('<div>');\r\n\t\t\t\t\tvar $testBtn = $('<a title=\"Test credentials\"><i class=\"fa fa-stack fa-2x fa-exclamation\"></i></a>');\r\n\t\t\t\t\tvar $createWebhookBtn = $('<a class=\"webhook-btn\" title=\"Create webhook\"><img src=\"img/Custom/webhook.png\"></i></a>');\r\n\t\t\t\t\tvar $exportBtn = $('<a title=\"Export settings\"><i class=\"fa fa-stack fa-2x fa-upload\"></i></a>');\r\n\t\t\t\t\tvar $importBtn = $('<a title=\"Import settings\"><i class=\"fa fa-stack fa-2x fa-download\"></i></a>');\r\n\t\t\t\t\tvar $uploadSettings = $('<input type=\"file\" style=\"display:none\"/>');\r\n\r\n\t\t\t\t\t$buttonSet.append([$exportBtn, $importBtn, $testBtn, $createWebhookBtn]);\r\n\r\n\t\t\t\t\t$testBtn.on('click', function() {\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'test');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$createWebhookBtn.on('click', function() {\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'webhook');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$exportBtn.on('click', function() {\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'export');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$uploadSettings.on('change',()=>{\r\n\t\t\t\t\t\tvar input = $uploadSettings[0] as HTMLInputElement;\r\n\t\t\t\t\t\tif ( input.files && input.files[0] ) {\r\n\t\t\t\t\t\t\tlet file = input.files[0];\r\n\t\t\t\t\t\t\tlet fr = new FileReader();\r\n\t\t\t\t\t\t\tfr.onload = function () {\r\n\t\t\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'import', fr.result);\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\tfr.readAsText(file);\r\n\t\t\t\t\t\t}\t\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$importBtn.on('click', function() {\r\n\t\t\t\t\t\t$uploadSettings.click();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn $buttonSet;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn inspector;\r\n\t}\r\n\r\n\tBuildOCIInspector(cellView): joint.ui.Inspector {\r\n\t\tlet inspector = joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'ButtonTest': {\r\n\t\t\t\t\t\ttype: 'buttonTest',\r\n\t\t\t\t\t\tlabel: 'Test',\r\n\t\t\t\t\t\tgroup: 'OCI',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'EndPointUrl': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'EndPointUrl',\r\n\t\t\t\t\t\tgroup: 'OCI',\r\n\t\t\t\t\t\tindex: 2\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'CallbackUrl': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'CallbackUrl',\r\n\t\t\t\t\t\tgroup: 'OCI',\r\n\t\t\t\t\t\tindex: 3\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'QueryString': {\r\n\t\t\t\t\t\ttype: 'textarea',\r\n\t\t\t\t\t\tlabel: 'QueryString',\r\n\t\t\t\t\t\tgroup: 'OCI',\r\n\t\t\t\t\t\tindex: 4\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Login': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Login',\r\n\t\t\t\t\t\tgroup: 'OCI',\r\n\t\t\t\t\t\tindex: 5\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Password': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Password',\r\n\t\t\t\t\t\tgroup: 'OCI',\r\n\t\t\t\t\t\tindex: 6\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'OCI': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgetFieldValue: function(attribute, type) {\r\n\t\t\t\tif (type === 'buttonTest') {\r\n\t\t\t\t\treturn { value: $(attribute).data('result') };\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\trenderFieldContent: function(options, path, value) {\r\n\t\t\t\tif(path === 'attrs/ButtonTest'){\r\n\t\t\t\t\tvar $buttonSet = $('<div>');\r\n\t\t\t\t\tvar $createWebhookBtn = $('<a><i class=\"fa fa-stack fa-2x fa-shopping-cart\"></i></a>');\r\n\t\t\t\t\tvar $exportBtn = $('<a title=\"Export settings\"><i class=\"fa fa-stack fa-2x fa-upload\"></i></a>');\r\n\t\t\t\t\tvar $importBtn = $('<a title=\"Import settings\"><i class=\"fa fa-stack fa-2x fa-download\"></i></a>');\r\n\t\t\t\t\tvar $uploadSettings = $('<input type=\"file\" style=\"display:none\"/>');\r\n\r\n\t\t\t\t\t$buttonSet.append([$exportBtn, $importBtn, $createWebhookBtn]);\r\n\r\n\t\t\t\t\t$createWebhookBtn.on('click', function() {\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'createOCIWebhook');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$exportBtn.on('click', function() {\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'export');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$uploadSettings.on('change',()=>{\r\n\t\t\t\t\t\tvar input = $uploadSettings[0] as HTMLInputElement;\r\n\t\t\t\t\t\tif ( input.files && input.files[0] ) {\r\n\t\t\t\t\t\t\tlet file = input.files[0];\r\n\t\t\t\t\t\t\tlet fr = new FileReader();\r\n\t\t\t\t\t\t\tfr.onload = function () {\r\n\t\t\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'import', fr.result);\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\tfr.readAsText(file);\r\n\t\t\t\t\t\t}\t\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$importBtn.on('click', function() {\r\n\t\t\t\t\t\t$uploadSettings.click();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn $buttonSet;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn inspector;\r\n\t}\r\n\r\n\tBuildEWSInspector(cellView): joint.ui.Inspector {\r\n\t\tlet inspector = joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'ButtonTest': {\r\n\t\t\t\t\t\ttype: 'buttonTest',\r\n\t\t\t\t\t\tgroup: 'EWS',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Login': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Login',\r\n\t\t\t\t\t\tgroup: 'EWS',\r\n\t\t\t\t\t\tindex: 2\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Password': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Password',\r\n\t\t\t\t\t\tgroup: 'EWS',\r\n\t\t\t\t\t\tindex: 3\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'EWS': {\r\n\t\t\t\t\tlabel: 'EWS options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\trenderFieldContent: function(options, path, value) {\r\n\t\t\t\tif(path === 'attrs/ButtonTest'){\r\n\t\t\t\t\tvar $buttonSet = $('<div>');\r\n\t\t\t\t\tvar $exportBtn = $('<a title=\"Export settings\"><i class=\"fa fa-stack fa-2x fa-upload\"></i></a>');\r\n\t\t\t\t\tvar $importBtn = $('<a title=\"Import settings\"><i class=\"fa fa-stack fa-2x fa-download\"></i></a>');\r\n\t\t\t\t\tvar $uploadSettings = $('<input type=\"file\" style=\"display:none\"/>');\r\n\r\n\t\t\t\t\t$buttonSet.append([$exportBtn, $importBtn]);\r\n\r\n\t\t\t\t\t$exportBtn.on('click', function() {\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'export');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$uploadSettings.on('change',()=>{\r\n\t\t\t\t\t\tvar input = $uploadSettings[0] as HTMLInputElement;\r\n\t\t\t\t\t\tif ( input.files && input.files[0] ) {\r\n\t\t\t\t\t\t\tlet file = input.files[0];\r\n\t\t\t\t\t\t\tlet fr = new FileReader();\r\n\t\t\t\t\t\t\tfr.onload = function () {\r\n\t\t\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'import', fr.result);\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\tfr.readAsText(file);\r\n\t\t\t\t\t\t}\t\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$importBtn.on('click', function() {\r\n\t\t\t\t\t\t$uploadSettings.click();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn $buttonSet;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn inspector;\r\n\t}\r\n\r\n\tGetItemByGuid(guid: string){\t\r\n\t\treturn _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\treturn item.Guid === guid;\r\n\t\t});\t\r\n\t}\r\n\r\n\tBuildFunctionInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'IsBulkSet': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Bulk set',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildTableInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'IsSearchExisting': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Search Existing',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 2\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'IsCheckOwnerProfile': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Check owner profile',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 3\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'UseMatching': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Enable matching',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'SkipCondition': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Skip condition',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 4\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildEWSTableInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'AddDaysToStart': {\r\n\t\t\t\t\t\ttype: 'number',\r\n\t\t\t\t\t\tlabel: 'Add days to start',\r\n\t\t\t\t\t\tgroup: 'Filters',\r\n\t\t\t\t\t\tindex: 0\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'AddDaysToEnd': {\r\n\t\t\t\t\t\ttype: 'number',\r\n\t\t\t\t\t\tlabel: 'Add days to end',\r\n\t\t\t\t\t\tgroup: 'Filters',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'ExcludeCancelled': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Filter on cancelled appointments',\r\n\t\t\t\t\t\tgroup: 'Filters',\r\n\t\t\t\t\t\tindex: 2\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Filters': {\r\n\t\t\t\t\tlabel: 'Filters',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildExactOnlineTableInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'ODataFilter': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: '$filter',\r\n\t\t\t\t\t\tgroup: 'OData',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'OData': {\r\n\t\t\t\t\tlabel: 'OData',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildSourcePrimaryKeyInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'UseSubKey': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Use SubKey',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildDestinationPrimaryKeyInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'UsePrimaryKey': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Use Primary key',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildLookupInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'IsSearchBySubKey': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Search by SubKey',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildParamInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'IsRecordIdentifier': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Record identifier',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildMemoParamInspector(cellView): joint.ui.Inspector{\r\n\t\tlet inspector = joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'ImageFileLocation': {\r\n\t\t\t\t\t\ttype: 'fileLocation',\r\n\t\t\t\t\t\tlabel: 'File type',\r\n\t\t\t\t\t\toptions: ['Base64', 'Curl', 'Desktop'],\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\trenderFieldContent: function(options, path, value) {\r\n\t\t\t\tif(path === 'attrs/ImageFileLocation'){\r\n\r\n\t\t\t\t\tlet $buttonSet = $('<div/>');\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet $imageCheckBox = $(`\r\n\t\t\t\t\t<div class=\"field select-field\">\r\n\t\t\t\t\t\t<label>Image</label>\r\n\t\t\t\t\t\t<input type=\"checkbox\">\r\n\t\t\t\t\t</div>`);\r\n\r\n\t\t\t\t\tlet $fileLocationSelect = $(`\r\n\t\t\t\t\t\t<div class=\"field select-field\">\r\n\t\t\t\t\t\t\t<label>File type</label>\r\n\t\t\t\t\t\t\t<select class=\"select\" data-type=\"select\">\r\n\t\t\t\t\t\t\t\t<option value=\"Base64\">Base64</option>\r\n\t\t\t\t\t\t\t\t<option value=\"Curl\">Curl</option>\r\n\t\t\t\t\t\t\t\t<option value=\"Desktop\">Desktop</option>\r\n\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t</div>`);\r\n\r\n\t\t\t\t\tif(!!value && value != ''){\r\n\t\t\t\t\t\t$imageCheckBox.find('input').prop('checked', true);\r\n\t\t\t\t\t\t$fileLocationSelect.find('select').val(value);\t\t\t\t\t\t\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t$fileLocationSelect.hide();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$buttonSet.append([$imageCheckBox, $fileLocationSelect]);\r\n\r\n\t\t\t\t\t$imageCheckBox.find('input').on('change', (evt)=>{\r\n\t\t\t\t\t\tif((evt.target as HTMLInputElement).checked){\r\n\t\t\t\t\t\t\t$fileLocationSelect.show();\r\n\t\t\t\t\t\t\tinspector.trigger('change:attrs/ImageFileLocation', $fileLocationSelect.find('select').val());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t$fileLocationSelect.hide();\r\n\t\t\t\t\t\t\t$fileLocationSelect.find('select').val('Base64');\r\n\t\t\t\t\t\t\tinspector.trigger('change:attrs/ImageFileLocation', null);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$fileLocationSelect.find('select').on('change', (evt)=>{\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ImageFileLocation', (evt.target as HTMLInputElement).value);\t\t\t\t\t\t\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn $buttonSet;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn inspector;\r\n\t}\r\n\r\n\r\n\tBuildBinaryParamInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'FileLocation': {\r\n\t\t\t\t\t\ttype: 'select',\r\n\t\t\t\t\t\tlabel: 'File type',\r\n\t\t\t\t\t\toptions: ['Base64', 'Curl', 'Desktop'],\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tRenderInspector(cellView){\r\n\t\tthis._inspector = null;\r\n\t\tlet root = ShapeFactory.GetRoot(cellView.model, this._graph);\r\n\r\n\t\tif(cellView instanceof joint.shapes.cyberThing.SourceView || cellView instanceof joint.shapes.cyberThing.DestinationView){\r\n\t\t\tlet canvasItemGuid = cellView.model.get('guid');\r\n\t\t\tlet itemModel = this.GetItemByGuid(canvasItemGuid);\r\n\r\n\t\t\tif(itemModel.JsonProperties.DataType === DataTypes.ExactOnline){\r\n\t\t\t\tthis._inspector = this.BuildExactOnlineInspector(cellView);\r\n\t\t\t}\r\n\r\n\t\t\tif(itemModel.JsonProperties.DataType === DataTypes.OCIPunchOut){\r\n\t\t\t\tthis._inspector = this.BuildOCIInspector(cellView);\r\n\t\t\t}\r\n\r\n\t\t\tif(itemModel.JsonProperties.DataType === DataTypes.EWS){\r\n\t\t\t\tthis._inspector = this.BuildEWSInspector(cellView);\r\n\t\t\t}\t\t\t\r\n\t\t}else if(cellView instanceof joint.shapes.cyberThing.CSharpFunctionView){\r\n\t\t\tif(root instanceof shapes.cyberThing.Destination){\r\n\t\t\t\tthis._inspector = this.BuildFunctionInspector(cellView);\r\n\t\t\t}\r\n\t\t}else if(cellView instanceof joint.shapes.cyberThing.TableView){\r\n\t\t\tif(root instanceof shapes.cyberThing.Destination){\r\n\t\t\t\tlet parentModel = this.GetItemByGuid(root.get('guid'));\r\n\t\t\t\tif(parentModel.JsonProperties.DataType === DataTypes.Cyberbase){\r\n\t\t\t\t\tthis._inspector = this.BuildTableInspector(cellView);\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(root instanceof shapes.cyberThing.Source){\r\n\t\t\t\tlet parentModel = this.GetItemByGuid(root.get('guid'));\r\n\t\t\t\tif(parentModel.JsonProperties.DataType === DataTypes.EWS){\r\n\r\n\t\t\t\t\tif(cellView.model.attributes.name === 'Appointment'){\r\n\t\t\t\t\t\tthis._inspector = this.BuildEWSTableInspector(cellView);\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(parentModel.JsonProperties.DataType === DataTypes.ExactOnline){\r\n\t\t\t\t\tthis._inspector = this.BuildExactOnlineTableInspector(cellView);\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else if(cellView.model.attributes.protocolName === 'PKey') {\r\n\t\t\t\r\n\t\t\tif(root instanceof shapes.cyberThing.Source){\r\n\t\t\t\tlet parentModel = this.GetItemByGuid(root.get('guid'));\r\n\t\t\t\tif(parentModel.JsonProperties.DataType === DataTypes.Cyberbase || parentModel.JsonProperties.DataType === DataTypes.Query){\r\n\t\t\t\t\tthis._inspector = this.BuildSourcePrimaryKeyInspector(cellView);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(root instanceof shapes.cyberThing.Destination){\r\n\t\t\t\tlet parentModel = this.GetItemByGuid(root.get('guid'));\r\n\t\t\t\tif(parentModel.JsonProperties.DataType === DataTypes.Cyberbase){\r\n\t\t\t\t\tthis._inspector = this.BuildDestinationPrimaryKeyInspector(cellView);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(cellView.model.attributes.protocolName === 'Lookup' || cellView.model.attributes.protocolName === 'MultiSelect') {\r\n\t\t\tthis._inspector = this.BuildLookupInspector(cellView);\r\n\t\t}else if(cellView instanceof joint.shapes.cyberThing.ParamView){\r\n\r\n\t\t\tif(root instanceof shapes.cyberThing.Destination){\r\n\t\t\t\tlet parentModel = this.GetItemByGuid(root.get('guid'));\r\n\t\t\t\tif(parentModel.JsonProperties.DataType === DataTypes.Cyberbase){\r\n\r\n\t\t\t\t\tif(cellView.model.attributes.protocolName === 'Binary'){\r\n\t\t\t\t\t\tthis._inspector = this.BuildBinaryParamInspector(cellView);\r\n\t\t\t\t\t}else if(cellView.model.attributes.protocolName === 'Memo'){\r\n\t\t\t\t\t\tthis._inspector = this.BuildMemoParamInspector(cellView);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis._inspector = this.BuildParamInspector(cellView);\r\n\t\t\t\t\t}\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}\t\r\n\r\n\t\t\tif(root instanceof shapes.cyberThing.Destination && !this._inspector){\r\n\t\t\t\tthis._inspector = InspectorFactory.BuildInspector(cellView, this._graph);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this._inspector) {\r\n\t\t\tthis._inspector.on('change:attrs/IsSearchExisting', () => {\t\t\t\t\r\n\t\t\t\tthis.UpdateProperty(cellView, 'IsSearchExisting');\r\n\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/IsRecordIdentifier', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'IsRecordIdentifier');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/IsCheckOwnerProfile', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'IsCheckOwnerProfile');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/IsSearchBySubKey', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'IsSearchBySubKey');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis._inspector.on('change:attrs/UseMatching', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'UseMatching');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/UseSubKey', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'UseSubKey');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/UsePrimaryKey', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'UsePrimaryKey');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/IsBulkSet', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'IsBulkSet');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/ImageFileLocation', (val) => {\t\t\r\n\t\t\t\tcellView.model.attributes.attrs['ImageFileLocation'] = val;\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'ImageFileLocation');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis._inspector.on('change:attrs/ExcludeCancelled', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'ExcludeCancelled');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/SkipCondition', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'SkipCondition');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis._inspector.on('change:attrs/EndPointUrl', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'EndPointUrl');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/CallbackUrl', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'CallbackUrl');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/ClientId', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'ClientId');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/ClientSecret', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'ClientSecret');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/SecretKey', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'SecretKey');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/Login', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'Login');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/Password', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'Password');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/Division', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'Division');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/QueryString', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'QueryString');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/AddDaysToStart', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'AddDaysToStart');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/AddDaysToEnd', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'AddDaysToEnd');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/ODataFilter', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'ODataFilter');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/FileLocation', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'FileLocation');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/FilledFrom', (val) => {\t\t\t\t\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tif(!cellView.model.attributes.attrs['FilledFrom']){\r\n\t\t\t\t\tcellView.model.attributes.attrs['FilledFrom'] = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet root = ShapeFactory.GetRoot(cellView.model, this._graph);\t\t\t\t\r\n\t\t\t\tcellView.model.attributes.attrs['FilledFrom'][root.get('replicationId')] = val;\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'FilledFrom');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/ButtonTest', (value, data) => {\r\n\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(value === 'test'){\r\n\t\t\t\t\tif (itemModel) {\r\n\t\t\t\t\t\tthis.CheckExactOnlineSettings(itemModel);\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(value === 'webhook'){\r\n\t\t\t\t\tthis.SubscribeExactOnlineWebhook();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value === 'createOCIWebhook'){\r\n\t\t\t\t\tthis.GetProductCatalogUrl();\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value === 'export'){\r\n\t\t\t\t\tthis.ExportSettings(itemModel);\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\tif(value === 'import'){\r\n\t\t\t\t\tthis.ImportSettings(itemModel, data, cellView);\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.render();\r\n\r\n\t\t\t$(\"#paper-container\").animate({right: 320}, ()=>{\r\n\t\t\t\t$(\"#inspector-container\").show();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ImportSettings(item: CanvasItemModel, data: string, cell: any){\r\n\t\ttry{\r\n\t\t\tlet jsonData = JSON.parse(data);\r\n\t\t\tcell.model.attributes.attrs['EndPointUrl'] = jsonData.EndPointUrl;\r\n\t\t\tcell.model.attributes.attrs['CallbackUrl'] = jsonData.CallbackUrl;\r\n\t\t\tcell.model.attributes.attrs['ClientId'] = jsonData.ClientId;\r\n\t\t\tcell.model.attributes.attrs['ClientSecret'] = jsonData.ClientSecret;\r\n\t\t\tcell.model.attributes.attrs['Login'] = jsonData.Login;\r\n\t\t\tcell.model.attributes.attrs['Password'] = jsonData.Password;\r\n\t\t\tcell.model.attributes.attrs['SecretKey'] = jsonData.SecretKey;\r\n\t\t\tcell.model.attributes.attrs['QueryString'] = jsonData.QueryString;\r\n\r\n\t\t\tthis.UpdateProperty(cell, 'EndPointUrl');\r\n\t\t\tthis.UpdateProperty(cell, 'CallbackUrl');\r\n\t\t\tthis.UpdateProperty(cell, 'ClientId');\r\n\t\t\tthis.UpdateProperty(cell, 'ClientSecret');\r\n\t\t\tthis.UpdateProperty(cell, 'Login');\r\n\t\t\tthis.UpdateProperty(cell, 'Password');\r\n\t\t\tthis.UpdateProperty(cell, 'SecretKey');\r\n\t\t\tthis.UpdateProperty(cell, 'QueryString');\r\n\r\n\t\t\tthis._inspector.render();\r\n\t\t}catch{}\r\n\t}\r\n\r\n\tprivate ExportSettings(item: CanvasItemModel){\r\n\t\tlet properties = JSON.parse(item.Properties);\r\n\t\tlet settings: IExactOnlineSettingDto = {\r\n\t\t\tEndPointUrl: properties.EndPointUrl,\r\n\t\t\tCallbackUrl: properties.CallbackUrl,\r\n\t\t\tClientId: properties.ClientId,\r\n\t\t\tClientSecret: properties.ClientSecret,\r\n\t\t\tLogin: properties.Login,\r\n\t\t\tPassword: properties.Password,\r\n\t\t\tSecretKey: properties.SecretKey,\r\n\t\t\tQueryString: properties.QueryString\r\n\t\t};\r\n\r\n\t\tFileDownloader.DownloadBase64(btoa(JSON.stringify(settings, (key, value) => { if (value !== null) return value})), \"settings.json\");\r\n\t}\r\n\r\n\tprivate SubscribeExactOnlineWebhook(){\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore.SubscribeExactOnlineWebhook(this._dwPackage.Id)\r\n\t\t.always(()=>{\r\n\t\t\tBlockUI.Unblock();\r\n\t\t})\r\n\t\t.then(()=>{\r\n\t\t\tnew Notifier().Success('OK');\r\n\t\t})\r\n\t\t.fail((err)=>{\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate GetProductCatalogUrl(){\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore.GetProductCatalogUrl(this._dwPackage.Id)\r\n\t\t.always(()=>{\r\n\t\t\tBlockUI.Unblock();\r\n\t\t})\r\n\t\t.then((url)=>{\r\n\t\t\twindow.open(url);\r\n\t\t})\r\n\t\t.fail((err)=>{\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate CheckExactOnlineSettings(item: CanvasItemModel){\r\n\t\tlet properties = JSON.parse(item.Properties);\r\n\t\tlet settings: IExactOnlineSettingDto = {\r\n\t\t\tEndPointUrl: properties.EndPointUrl,\r\n\t\t\tCallbackUrl: properties.CallbackUrl,\r\n\t\t\tClientId: properties.ClientId,\r\n\t\t\tClientSecret: properties.ClientSecret,\r\n\t\t\tLogin: properties.Login,\r\n\t\t\tPassword: properties.Password,\r\n\t\t\tSecretKey: properties.SecretKey,\r\n\t\t\tQueryString: properties.QueryString\r\n\t\t};\r\n\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore.CheckExactOnlineSettings({Settings: settings})\r\n\t\t.always(()=>{\r\n\t\t\tBlockUI.Unblock();\r\n\t\t})\r\n\t\t.then(()=>{\r\n\t\t\tnew Notifier().Success('OK');\r\n\t\t})\r\n\t\t.fail((err)=>{\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate ReRender(cellView: any){\r\n\t\tcellView.initIcons();\r\n\t}\r\n\r\n\tprivate UpdateProperty(cell: any, propertyName: string) {\r\n\t\tlet item = this.GetItemByGuid(cell.model.get('guid'));\r\n\r\n\t\tlet value = cell.model.attributes.attrs[propertyName];\r\n\t\ttry {\r\n\t\t\tlet properties = JSON.parse(item.Properties) || {};\r\n\t\t\tproperties[propertyName] = value;\r\n\t\t\titem.Properties = JSON.stringify(properties);\r\n\t\t} catch (e) {\r\n\t\t\tlet properties = {};\r\n\t\t\tproperties[propertyName] = value;\r\n\t\t\titem.Properties = JSON.stringify(properties);\r\n\t\t}\r\n\r\n\t\tif (item.State != CanvasModelState.New && item.State != CanvasModelState.Deleted) {\r\n\t\t\titem.State = CanvasModelState.Changed;\r\n\t\t}\r\n\t}\r\n\r\n\tUpdateLinkProperties(link: any, linkModel: CanvasLinkModel){\r\n\t\tlet vertices = link.model.get('vertices');\r\n\t\ttry{\r\n\t\t\tlet properties = JSON.parse(link.Properties);\r\n\t\t\tif(!properties.Rappid){\r\n\t\t\t\tproperties.Rappid = {};\r\n\t\t\t}\r\n\t\t\tproperties.Rappid.vertices = vertices;\r\n\t\t\tlinkModel.Properties = JSON.stringify(properties);\r\n\t\t}catch (e) {\r\n\t\t\tlinkModel.Properties = JSON.stringify( { Rappid: { vertices: vertices } });\r\n\t\t}\r\n\r\n\t\tif(linkModel.State != CanvasModelState.New && linkModel.State != CanvasModelState.Deleted){\r\n\t\t\tlinkModel.State = CanvasModelState.Changed;\r\n\t\t}\r\n\t}\r\n\r\n\tUpdateItemProperties(cell: any, itemModel: CanvasItemModel){\r\n\t\tlet isCollapsed = !cell.model.attributes.attrs.IsCollapsed;\r\n\r\n\t\ttry{\r\n\t\t\tlet properties = JSON.parse(itemModel.Properties);\r\n\t\t\tif(!properties.Rappid){\r\n\t\t\t\tproperties.Rappid = {};\r\n\t\t\t}\r\n\t\t\tproperties.Rappid.isCollapsed = isCollapsed;\r\n\t\t\titemModel.Properties = JSON.stringify(properties);\r\n\t\t}catch (e) {\r\n\t\t\titemModel.Properties = JSON.stringify( { Rappid: { isCollapsed: isCollapsed } });\r\n\t\t}\r\n\r\n\t\tif(itemModel.State != CanvasModelState.New && itemModel.State != CanvasModelState.Deleted){\r\n\t\t\titemModel.State = CanvasModelState.Changed;\r\n\t\t}\r\n\t}\r\n\r\n\tAddDataSelector(canvasType: string) {\r\n\r\n\t\tlet dataSelector = null;\r\n\t\tif (canvasType === CANVAS_TYPES.SOURCE) {\r\n\t\t\tdataSelector = _.extend(new joint.shapes.cyberThing.DataSelector({\r\n\t\t\t\tposition: { x: 100, y: 100 }\r\n\t\t\t}, {}),\r\n\t\t\t\t{\r\n\t\t\t\t\tdwType: canvasType,\r\n\t\t\t\t\ttitle: canvasType,\r\n\t\t\t\t\tdataTypes: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.DATABASE.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.DATABASE.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.SPREADSHEET.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.SPREADSHEET.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.QUERY.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.QUERY.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.API.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.API.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.TRIGGER.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.TRIGGER.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.EXACT_ONLINE.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.EXACT_ONLINE.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.EWS.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.EWS.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.OCI_PUNCH_OUT.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.OCI_PUNCH_OUT.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.MS_ACCESS.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.MS_ACCESS.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.DESKTOP_FOLDER.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.DESKTOP_FOLDER.Icon\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\tif (canvasType === CANVAS_TYPES.DESTINATION) {\r\n\t\t\tdataSelector = _.extend(new joint.shapes.cyberThing.DataSelector({\r\n\t\t\t\tposition: { x: 1050, y: 100 }\r\n\t\t\t}, {}),\r\n\t\t\t\t{\r\n\t\t\t\t\tdwType: canvasType,\r\n\t\t\t\t\ttitle: canvasType,\r\n\t\t\t\t\tdataTypes: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.DATABASE.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.DATABASE.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.SPREADSHEET.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.SPREADSHEET.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.API.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.API.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.DW_PACKAGE.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.DW_PACKAGE.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.EXACT_ONLINE.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.EXACT_ONLINE.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.EWS.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.EWS.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.DESKTOP_FOLDER.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.DESKTOP_FOLDER.Icon\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\tif (dataSelector) {\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.OCI_PUNCH_OUT_SELECTED, () => {\r\n\t\t\t\tthis.GetByOCIPunchOut(canvasType).then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.SPREADSHEET_SELECTED, (file: File) => {\r\n\t\t\t\tthis.GetBySpreadsheet(file, canvasType).then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.TRIGGER_SELECTED, (Id: number) => {\r\n\t\t\t\tthis.GetByTrigger(Id, canvasType).then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.API_PACKAGE_SELECTED, (Id: number) => {\r\n\t\t\t\tthis.GetFunctionsByPackage(Id, canvasType).then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.DW_PACKAGE_SELECTED, (Id: number) => {\r\n\t\t\t\tthis.GetDwPackageById(Id, canvasType).then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.ENTITY_SELECTED, (Id: number) => {\r\n\t\t\t\tBlockUI.Block();\r\n\t\t\t\tthis.GetByEntity(Id, canvasType)\r\n\t\t\t\t\t.fail(()=>{\r\n\t\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.QUERY_SELECTED, (Query: string) => {\r\n\t\t\t\tBlockUI.Block();\r\n\t\t\t\tthis.GetByQuery(Query, canvasType)\r\n\t\t\t\t\t.fail(()=>{\r\n\t\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.EXACT_ONLINE_ENTITY_SELECTED, (name: string) => {\r\n\t\t\t\tthis.GetByExactOnlineEntity(name, canvasType)\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.EWS_ENTITY_SELECTED, (name: string) => {\r\n\t\t\t\tthis.GetByEWSEntity(name, canvasType)\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.MS_ACCESS_ENTITY_SELECTED, (table: MsAccessTableDto, path: string) => {\t\t\t\t\r\n\t\t\t\tthis.GetByMsAccessEntity(table, path, canvasType)\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.DESKTOP_FOLDER_SELECTED, (path: string) => {\t\t\t\t\r\n\t\t\t\tthis.GetByDesktopFolder(path, canvasType)\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tthis._graph.addCell(dataSelector);\r\n\t\t}\r\n\t}\r\n\r\n\tBuildShapes(model: CanvasModel) {\r\n\t\tthis._dataModel.CanvasItems = this._dataModel.CanvasItems.concat(model.CanvasItems);\r\n\t\tthis._dataModel.CanvasLinks = this._dataModel.CanvasLinks.concat(model.CanvasLinks);\r\n\r\n\t\tthis._shapeFactory.BuildShapes(this._dataModel)\r\n\t\t\t.fail(()=>{\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(()=>{\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t});\r\n\t}\r\n\r\n\tGetBySpreadsheet(file: File, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tvar convertedResult = null;\r\n\t\tconst reader = new FileReader();\r\n\t\treader.onload = () => {\r\n\t\t\tconvertedResult = btoa(reader.result as string);\r\n\t\t\tBlockUI.Block();\r\n\t\t\tCanvasDesignerStore\r\n\t\t\t\t.GetNodesBySpreadsheet(convertedResult, file.name, parentType, this._dwPackage.Id, this._dwPackage.Guid)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t}).then((result) => {\r\n\t\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t\t}).fail((err)=> Notifier.Failed(err.message));\r\n\t\t};\r\n\t\treader.readAsBinaryString(file);\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByTrigger(id: number, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferedResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetTrigger({ DwPackageGuid: this._dwPackage.Guid, TriggerId: id, ParentType: parentType})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tGetFunctionsByPackage(id: number, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferedResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetFunctionPackage({ DwPackageGuid: this._dwPackage.Guid, PackageId: id, ParentType: parentType })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tGetDwPackageById(id: number, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetDwPackageById({ DwPackageGuid: this._dwPackage.Guid, PackageId: id, ParentType: parentType })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\tdeferredResult.resolve(result);\r\n\t\t}).fail(err=>{\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByEntity(id: number, canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetNodesByEntity(this._dwPackage.Guid, id, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByQuery(query: string, canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetNodesByQuery(query, this._dwPackage.Guid, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByExactOnlineEntity(name: string, canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetNodesByExactOnlineEntity(name, this._dwPackage.Guid, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByMsAccessEntity(table: MsAccessTableDto, path: string, canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetNodesByMsAccessEntity(table, path, this._dwPackage.Guid, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t}).fail(err=>{\r\n\t\t\t\tNotifier.Failed(err.message);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\t\r\n\tGetByDesktopFolder(path: string, canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetNodesByDesktopFolder(path, this._dwPackage.Guid, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t}).fail(err=>{\r\n\t\t\t\tNotifier.Failed(err.message);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByEWSEntity(name: string, canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetNodesByEWSEntity(name, this._dwPackage.Guid, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByOCIPunchOut(canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetByOCIPunchOut(this._dwPackage.Guid, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\t\r\n}","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._isDataLoading\\\" id=\\\"wrapper\\\"> <div class=\\\"canvasDesigner-screen form-designer\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"canvasDesigner-screen-content\\\"> <input id=\\\"formId\\\" type=\\\"hidden\\\" value=\\\"0\\\"/> <div class=\\\"actionBarSubForm clearfix\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body clearfix\\\"> <div class=\\\"action-bar-wrapper\\\"> <div class=\\\"bar-left formDesignerTitle\\\"> <!-- ko if: !$data._isForLifeStatusDesigner() --> <input data-bind=\\\"textInput: $data._searchTerm, hasFocus: true, enterKey: $data.Search.bind($data), attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"formBtnTitle search-input typeahead input-medium subFormControl\\\"> <a data-bind=\\\"click: $data.Search.bind($data,true)\\\" class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> <!-- /ko --> <button data-bind=\\\"enable: $data.CanvasRendered, click: Save\\\" class=\\\"btn green subFormControl\\\"><i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --></button> <!-- ko if: !$data._isForLifeStatusDesigner() --> <button data-bind=\\\"enable: $data.CanvasRendered, click: EditPackage\\\" class=\\\"btn yellow subFormControl\\\"><i class=\\\"fa fa-edit\\\"></i> <!-- ko text: _labels.EDIT --><!-- /ko --></button> <button data-bind=\\\"enable: $data.CanvasRendered, click: Delete\\\" class=\\\"btn red subFormControl\\\"><i class=\\\"fa fa-trash\\\"></i> <!-- ko text: _labels.DELETE --><!-- /ko --></button> <button data-bind=\\\"visible: $data.CanvasRendered, click: Execute\\\" class=\\\"btn grey subFormControl\\\"> <!-- ko text: _labels.EXECUTE --><!-- /ko --></button> <!-- ko if: $data._showRollbackButton --> <button data-bind=\\\"visible: $data.CanvasRendered, click: ExecuteRollback, attr: { disabled: !$data._hasRollback() }\\\" class=\\\"btn grey subFormControl\\\">Rollback</button> <!-- /ko --> <!-- /ko --> <button data-bind=\\\"visible: $data.CanvasRendered, click: ShowFunctionList\\\" class=\\\"btn grey subFormControl\\\">Add function</button> <button data-bind=\\\"visible: $data.CanvasRendered, click: AddConstant\\\" class=\\\"btn grey subFormControl\\\">Add constant</button> <div data-bind=\\\"visible: $data.CanvasRendered\\\" class=\\\"custom-select additionalSettingsBtn\\\"> <div class=\\\"trigger formBtnTitle btn grey subFormControl\\\"> <span>Additional Settings</span> <span class=\\\"arrow-icon\\\"><i class=\\\"fa fa-angle-down\\\"></i></span> </div> <div class=\\\"custom-options\\\"> <div class=\\\"form-check inline formBtnTitle formBtnTitle--disableDel\\\"> <input class=\\\"form-check-input formBtnTitle__formCheckInput\\\" data-bind=\\\"checked: _disableOnDelete\\\" type=\\\"checkbox\\\" id=\\\"defaultCheck1\\\"> <label class=\\\"form-check-label\\\" for=\\\"defaultCheck1\\\" data-bind=\\\"text: _labels.DISABLE_ON_DELETE\\\"></label> </div> <div class=\\\"form-check inline formBtnTitle formBtnTitle--disableDel\\\"> <input class=\\\"form-check-input formBtnTitle__formCheckInput\\\" data-bind=\\\"checked: _ignoreMissingSubKeys\\\" type=\\\"checkbox\\\" id=\\\"IgnoreMissingSubKeysCheck\\\"> <label class=\\\"form-check-label\\\" for=\\\"IgnoreMissingSubKeysCheck\\\" data-bind=\\\"text: _labels.IGNORE_MISSING_SUB_KEY\\\">Ignore missing subKeys</label> </div> <div class=\\\"form-check inline formBtnTitle formBtnTitle--disableDel\\\"> <input class=\\\"form-check-input formBtnTitle__formCheckInput\\\" data-bind=\\\"checked: _debugMode\\\" type=\\\"checkbox\\\" id=\\\"DebugMode\\\"> <label class=\\\"form-check-label\\\" for=\\\"DebugMode\\\">Debug mode</label> </div> </div> </div> </div> <div class=\\\"bar-right entity-heading\\\"> <div class=\\\"formDesignerTitle__Item formDesignerTitle__Item--right\\\"> <!-- ko ifnot: $data._isForLifeStatusDesigner --> <div data-bind=\\\"visible: $data.CanvasRendered\\\" class=\\\"lifestatus-bar well formDesignerTitle__packageName\\\"> <!-- ko text: $data._packageName --><!-- /ko --> </div> <!-- /ko --> <!-- ko if: $data._isForLifeStatusDesigner --> <div data-bind=\\\"visible: $data.CanvasRendered\\\"> <input data-bind=\\\"value: $data._packageName\\\" class=\\\"form-control\\\"> </div> <!-- /ko --> <div class=\\\"entity-icon-container\\\"> <span class=\\\"fa fa-exchange\\\" aria-hidden=\\\"true\\\"></span> </div> <div class=\\\"entity-name custom-color-option formDesignerTitle__entityName\\\"> <!-- ko text: _labels.CANVAS_DESIGNER --><!-- /ko --> </div> </div> </div> <!--<div class=\\\"edit-screen-block\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<div data-bind=\\\"visible: HasData\\\" class=\\\"portlet light row-no-padding\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<div id=\\\"designScreenCanvas\\\" class=\\\"portlet-body\\\"></div>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</div>--> </div> </div> </form> </div> <!-- ko if: _canvasSelected() --> <div class=\\\"clearfix middle-block\\\"> <div class=\\\"content-block transition\\\"> <div class=\\\"full-width-block\\\"> <div id=\\\"canvasContainer\\\"> <div class=\\\"box-shadow-wrapper\\\"> <div id=\\\"theme-container\\\"></div> <div id=\\\"stencil-container\\\" class=\\\"hidden\\\"></div> <div id=\\\"papers-container\\\"> <div class=\\\"papers onTop\\\" id=\\\"paper-container\\\"></div> </div> <div id=\\\"toolbar-container\\\"></div> <div id=\\\"inspector-container\\\" class=\\\"canvas-designer-inspector\\\"></div> </div> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\nimport { CanvasModel } from './Models/CanvasModel';\r\nimport * as ko from 'knockout';\r\nimport 'pubsub';\r\nimport * as $ from \"jquery\";\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {CONTROL_TYPES, RenderModes} from 'Core/Constant';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {CanvasDesignerStore} from 'Core/Controls/CanvasDesigner/Stores/CanvasDesignerStore';\r\nimport {CanvasDesignerMetadataModel} from 'Core/Controls/CanvasDesigner/Models/CanvasDesignerMetadataModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\n\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {MethodsList} from 'Core/Controls/CanvasDesigner/Views/MethodsList';\r\nimport {CanvasManager} from 'Core/Controls/CanvasDesigner/Views/CanvasManager';\r\nimport {CanvasItemModel, CanvasLinkModel} from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport {NOTIFICATIONS, CONFIRMATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport ViewTemplate from 'Core/Controls/CanvasDesigner/Templates/View.html';\r\nimport {FUNCTION_TYPES} from \"../FunctionDesigner/FunctionTypes\";\r\nimport {EVENTS as SEARCH_SCREEN_EVENTS} from \"../../Screens/SearchScreen/Events\";\r\nimport {EVENTS} from \"./Shapes/Views/ParamView/Events\";\r\nimport {CanvasModelState} from \"./Enums/CanvasModelState\";\r\nimport {FunctionDesignerMethodModel} from \"../FunctionDesigner/Models/FunctionDesignerMethodModel\";\r\nimport {LockManager} from \"../../Components/Locker/LockManager\";\r\nimport {EVENTS as EDIT_SCREEN_EVENTS} from \"../../Screens/EditScreen/Events\";\r\nimport {EntityTypesStore} from \"../../Screens/TypeScreen/Stores/EntityTypesStore\";\r\nimport {Modal} from \"../../Common/Modal\";\r\nimport {P} from \"../../Common/Promise\";\r\nimport {ControlModel} from \"../BaseControl/Models/ControlModel\";\r\nimport {FunctionDesigner} from \"../FunctionDesigner/FunctionDesigner\";\r\nimport {\r\n DecisionDialog,\r\n EVENTS as DECISION_DIALOG_EVENTS,\r\n Types as DecisionDialogTypes\r\n} from \"../../Components/Dialogs/DecisionDialog/DecisionDialog\";\r\n\r\n\r\nimport ace from 'ace-builds';\r\nimport 'ace-builds/src-noconflict/ext-language_tools';\r\nimport 'ace-builds/src-noconflict/mode-csharp';\r\nimport 'ace-builds/src-noconflict/mode-javascript';\r\nimport 'ace-builds/src-noconflict/snippets/text';\r\nimport 'ace-builds/src-noconflict/worker-javascript';\r\n\r\n\r\nimport { SignalRNotificationManager } from 'Core/Components/SignalR/SignalRNotificationManager';\r\nimport { DataTypes } from './Constants/DataTypes';\r\n\r\nimport AdditionalSettingsDropDownTemplate from 'Core/Controls/CanvasDesigner/Templates/AdditionalSettingsDropDown.html';\r\nimport { ModelState } from '../../Common/Enums/ModelState';\r\nko.templates['Core/Controls/CanvasDesigner/Templates/AdditionalSettingsDropDown'] = AdditionalSettingsDropDownTemplate;\r\n\r\nko.templates['Core/Controls/CanvasDesigner/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/CanvasDesigner/Templates/Edit'] = ViewTemplate;\r\n\r\nexport class CanvasDesigner extends BaseControl {\r\n private _metadata: CanvasDesignerMetadataModel;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _recordId: number;\r\n private _hasData: KnockoutObservable<boolean>;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _canvas: CanvasManager;\r\n private _canvasRendered: KnockoutObservable<boolean>;\r\n private _canvasSelected: KnockoutObservable<boolean>;\r\n private _disableOnDelete: KnockoutObservable<boolean>;\r\n private _ignoreMissingSubKeys: KnockoutObservable<boolean>;\r\n private _dataModel: CanvasModel;\r\n private _packageName: KnockoutObservable<string>;\r\n private _debugMode: KnockoutObservable<boolean>;\r\n private _hasRollback: KnockoutObservable<boolean>;\r\n private _showRollbackButton: KnockoutObservable<boolean>;\r\n private _modal: Modal;\r\n\r\n validationIsActive: KnockoutObservable<boolean>;\r\n private _isForLifeStatusDesigner: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._searchTerm = ko.observable('');\r\n this._isReady = ko.observable(true);\r\n this._hasData = ko.observable(false);\r\n this._canvasRendered = ko.observable(false);\r\n this._canvasSelected = ko.observable(false);\r\n this.validationIsActive = ko.observable(false);\r\n this._disableOnDelete = ko.observable(false);\r\n this._ignoreMissingSubKeys = ko.observable(false);\r\n this._packageName = ko.observable('');\r\n this._debugMode = ko.observable(false);\r\n this._hasRollback = ko.observable(false);\r\n this._showRollbackButton = ko.observable(false);\r\n this._isDataLoading = ko.observable(false);\r\n this._isForLifeStatusDesigner = ko.observable(false);\r\n this._packageName.subscribe((newValue)=>{\r\n this.Root.Name = newValue;\r\n if(this.Root.State != ModelState.New){\r\n this.Root.State = ModelState.Changed;\r\n } \r\n });\r\n\r\n this.AddEvent('CANVAS_CREATED');\r\n this.AddEvent('ON_EDIT_CANVAS');\r\n this.AddEvent('ON_DELETE_CANVAS');\r\n this.AddEvent('CLOSE_MODAL');\r\n this.AddEvent('SAVE');\r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private Init(): void {\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar) {\r\n if(!this._isForLifeStatusDesigner()){\r\n CanvasDesignerStore.GetCanvasDesignerMetaData()\r\n .then((result) => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier(this._el).Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n this._metadata = result.ResultObject;\r\n }).fail(err => new Notifier().Failed(err.message));\r\n }\r\n }\r\n\r\n this._ignoreMissingSubKeys.subscribe((newValue) => {\r\n this.UpdateIgnoreSubKeyProperty(newValue);\r\n });\r\n\r\n this._debugMode.subscribe((newValue) => {\r\n this.UpdateDebugModeProperty(newValue);\r\n });\r\n }\r\n\r\n EditPackage() {\r\n BlockUI.Block();\r\n\r\n LockManager.Instance.TryLock(this._metadata.EntityId, this._recordId)\r\n .then(() => {\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n RecordId: this._recordId\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((screen: EditScreen) => {\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n this.Trigger('ON_EDIT_CANVAS', eventArgs.data);\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, this._recordId);\r\n LockManager.Instance.ReleaseLock(this._metadata.EntityId, this._recordId);\r\n this.LoadScreenFor(this._recordId, true);\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(this._metadata.EntityId, this._recordId));\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n });\r\n }\r\n\r\n get Root(){\r\n return this._dataModel.CanvasItems.find(item=>item.TypeName === CANVAS_TYPES.DW_PACKAGE);\r\n }\r\n\r\n UpdateDebugModeProperty(value: boolean) {\r\n let root = _.find(this._dataModel.CanvasItems, (item) => {\r\n return item.Id == this._recordId;\r\n });\r\n\r\n if (root) {\r\n try {\r\n let properties = JSON.parse(root.Properties);\r\n if (properties.DebugMode === value) return;\r\n properties.DebugMode = value;\r\n root.Properties = JSON.stringify(properties);\r\n } catch (e) {\r\n root.Properties = JSON.stringify({DebugMode: value});\r\n }\r\n if (root.State != CanvasModelState.New && root.State != CanvasModelState.Deleted) {\r\n root.State = CanvasModelState.Changed;\r\n }\r\n }\r\n }\r\n\r\n ShowInModal(event) {\r\n let self = this;\r\n this._modal = new Modal({\r\n addClass: 'compose-email',\r\n closeOnEsc: false,\r\n onOpen: function () {\r\n $(this.closeButton[0]).off('click');\r\n this.closeButton[0].addEventListener('click', self.PreventCloseModal.bind(self, self._modal, event));\r\n }\r\n });\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n PreventCloseModal(modal, event) {\r\n event.stopImmediatePropagation();\r\n\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.CLOSE,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, (eventArgs) => {\r\n modal.Close();\r\n this.Trigger('CLOSE_MODAL', eventArgs.data);\r\n });\r\n confirmationDialog.Show();\r\n }\r\n\r\n UpdateIgnoreSubKeyProperty(value: boolean) {\r\n let root = _.find(this._dataModel.CanvasItems, (item) => {\r\n return item.Id == this._recordId;\r\n });\r\n\r\n if (root) {\r\n try {\r\n let properties = JSON.parse(root.Properties);\r\n if (properties.IgnoreMissingSubKey === value) return;\r\n properties.IgnoreMissingSubKey = value;\r\n root.Properties = JSON.stringify(properties);\r\n } catch (e) {\r\n root.Properties = JSON.stringify({IgnoreMissingSubKey: value});\r\n }\r\n if (root.State != CanvasModelState.New && root.State != CanvasModelState.Deleted) {\r\n root.State = CanvasModelState.Changed;\r\n }\r\n }\r\n }\r\n\r\n GetProperties() {\r\n let root = _.find(this._dataModel.CanvasItems, (item) => {\r\n return item.Id == this._recordId;\r\n });\r\n\r\n if (root) {\r\n try {\r\n return JSON.parse(root.Properties) || {};\r\n } catch (e) {\r\n return {};\r\n }\r\n }\r\n }\r\n\r\n private InitCanvas() {\r\n this._canvasSelected(true);\r\n $('#theme-container, #stencil-container, #papers-container, #inspector-container, .tabs-buttons-container').empty();\r\n $('#papers-container').append('<div class=\"papers\" id=\"paper-container\"></div>');\r\n this._canvas = new CanvasManager(this._dataModel);\r\n this._packageName(this._canvas.PackageName);\r\n\r\n this._canvas.GetShapeFactory().On(EVENTS.SHOW_FUNCTION_DESIGNER_REQUESTED, this, (evtArgs) => {\r\n if (this.HasChanges()) {\r\n const decisionDialog = new DecisionDialog({\r\n Text: LABELS.CONFIRMATION_FOR_UNSAVED_CHANGES,\r\n Type: DecisionDialogTypes.Question,\r\n });\r\n\r\n decisionDialog.On(DECISION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.Save().then(() => this.ShowFunctionDesigner(evtArgs.data.PackageId, evtArgs.data.FunctionId));\r\n });\r\n decisionDialog.On(DECISION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n this.ShowFunctionDesigner(evtArgs.data.PackageId, evtArgs.data.FunctionId);\r\n });\r\n decisionDialog.Show();\r\n } else {\r\n this.ShowFunctionDesigner(evtArgs.data.PackageId, evtArgs.data.FunctionId);\r\n }\r\n });\r\n }\r\n\r\n private ShowFunctionDesigner(packageId: number, functionId: number) {\r\n const controlModel = new ControlModel();\r\n controlModel.TypeName = CONTROL_TYPES.FunctionDesigner;\r\n\r\n const functionDesigner = new FunctionDesigner({\r\n Model: controlModel,\r\n Form: null,\r\n RenderMode: RenderModes.View\r\n });\r\n functionDesigner.GetPackage(packageId).then(()=>functionDesigner.SelectMethodById(functionId));\r\n functionDesigner.HideButtonContainer();\r\n functionDesigner._functionSelected(true);\r\n\r\n const modal = new Modal({});\r\n\r\n ko.cleanNode(modal.Wrapper);\r\n ko.applyBindings(functionDesigner, modal.Wrapper);\r\n\r\n modal.Show();\r\n\r\n modal.One(\"CLOSE\", this, (eventArgs: any) => {\r\n modal.Close();\r\n BlockUI.Block();\r\n this.LoadScreenFor(this._recordId);\r\n });\r\n }\r\n\r\n get HasData() {\r\n return this._hasData;\r\n }\r\n\r\n get Canvas() {\r\n return this._canvas;\r\n }\r\n\r\n Save(): P.Promise<any> {\r\n\r\n if(this._isForLifeStatusDesigner()){\r\n this.Trigger('SAVE', { dwPackage: this._dataModel });\r\n this._modal.Close();\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n let deferredResult = P.defer<any>();\r\n CanvasDesignerStore.SaveCanvas(this._dataModel)\r\n .then((result) => {\r\n new Notifier().Success(NOTIFICATIONS.CANVAS_UPDATED);\r\n this.LoadScreenFor(this._recordId);\r\n deferredResult.resolve(result);\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(err.message);\r\n deferredResult.reject({message: err.message});\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n ShowFunctionList() {\r\n BlockUI.Block();\r\n EntityTypesStore.GetTypes({\r\n EntityId: this._metadata.EntityId,\r\n ParentTypeId: 0,\r\n WithRoot: false,\r\n OnlyEnabled: true\r\n })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n let apiPackageType = _.find(result.TableTypes, (item) => item.Name === FUNCTION_TYPES.API_PACKAGE);\r\n if (apiPackageType) {\r\n const searchScreen = new SearchScreen({\r\n EntityName: 'CD_CANVASES',\r\n SearchTerm: this._searchTerm(),\r\n IsRootForFormDesigner: true,\r\n ButtonAdd: false,\r\n SearchByTypes: [apiPackageType.Id]\r\n });\r\n\r\n searchScreen.On(SEARCH_SCREEN_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.TypeName === FUNCTION_TYPES.API_PACKAGE) {\r\n this.ShowMethodList(eventArgs.data.RecordId);\r\n } else {\r\n new Notifier().Warning(`${eventArgs.data.TypeName} is not allowed`);\r\n }\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n });\r\n }\r\n\r\n ShowMethodList(apiPackageId: number) {\r\n CanvasDesignerStore.GetMethods(apiPackageId)\r\n .then((result: Array<CanvasItemModel>) => {\r\n let methodListModal = new MethodsList(result);\r\n methodListModal.On(EVENTS.METHOD_SELECTED, this, (evtArgs) => {\r\n this.AddFunction(evtArgs.data.Id);\r\n methodListModal.Close();\r\n });\r\n\r\n\r\n methodListModal.ShowInModal();\r\n });\r\n }\r\n\r\n AddFunction(id: number) {\r\n CanvasDesignerStore.GetFunctionGroup(this._recordId, id)\r\n .then((methodGroup: CanvasModel) => {\r\n this._canvas.BuildShapes(methodGroup);\r\n });\r\n }\r\n\r\n AddConstant() {\r\n BlockUI.Block();\r\n CanvasDesignerStore\r\n .GetConstantGroup(this._recordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((data) => {\r\n this._canvas.BuildShapes(data);\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message)\r\n });\r\n }\r\n\r\n Delete() {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ARE_YOUR_SURE_TO_DELETE_RECORDS,\r\n Type: ConfirmationTypes.Question,\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, eventArgs => {\r\n BlockUI.Block();\r\n CanvasDesignerStore.DeleteCanvas({Id: this._recordId})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n this.Trigger('ON_DELETE_CANVAS', eventArgs.data);\r\n new Notifier().Success(NOTIFICATIONS.RECORD_REMOVED);\r\n PubSub.publish('GO_TO_CANVAS_DESIGNER', null);\r\n })\r\n .fail(err => new Notifier().Failed(err.message));\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n ZoomInCanvas() {\r\n //this.Canvas.paperScroller.zoom(0.2, { max: 5, grid: 0.2 });\r\n }\r\n\r\n ZoomOutCanvas() {\r\n //this.Canvas.paperScroller.zoom(-0.2, { min: 0.2, grid: 0.2 });\r\n }\r\n\r\n EnableSocketsProtocolValidation() {\r\n this.validationIsActive(!this.validationIsActive());\r\n //this.Canvas.enableSocketsProtocolValidation();\r\n }\r\n\r\n CheckForChanges() {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.CANVAS_DATA_HAS_BEEN_CHANGED,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, eventArgs => {\r\n this.TriggerExecution();\r\n });\r\n\r\n if (this.HasChanges()) {\r\n confirmationDialog.Show();\r\n } else {\r\n this.TriggerExecution();\r\n }\r\n }\r\n\r\n Execute() {\r\n this.CheckForChanges();\r\n }\r\n\r\n TriggerExecution() {\r\n let modalHeight = this._debugMode() ? 800 : 100;\r\n let modal = new Modal(\r\n {\r\n closeButton: this._debugMode() ? 'box' : null,\r\n height: `'${modalHeight}'`,\r\n closeOnEsc: this._debugMode()\r\n }, false ); \r\n modal.On('CLOSE', this, ()=> SignalRNotificationManager.Instance.SetDebugEditor(null));\r\n\r\n let content = `<div class='row'>\r\n <div style='text-align: center; background-color: white; width: 800px;' id='dw-progress'>\r\n <h2>Execution...</h2>\r\n </div>\r\n </div>`;\r\n\r\n if(this._debugMode()){\r\n content +=`<div class='row'>\r\n <div id='dw-debugger' style='height: 500px; margin-right: 5px;'></div>\r\n </div>`;\r\n }\r\n\r\n modal.SetContent($(content));\r\n modal.Show();\r\n\r\n\t\tvar editor = ace.edit(document.getElementById('dw-debugger'));\r\n SignalRNotificationManager.Instance.SetDebugEditor(editor);\r\n\r\n CanvasDesignerStore\r\n .Execute({Id: this._recordId})\r\n .then(() => {\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.DATAWIZARD_EXECUTED);\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier();\r\n notifier.Failed(err.message);\r\n })\r\n .always(() => {\r\n this.CheckHasRollback();\r\n if(!this._debugMode()){\r\n modal.Close();\r\n } \r\n });\r\n }\r\n\r\n get CanvasRendered() {\r\n return this._canvasRendered;\r\n }\r\n\r\n SetRecordId(id) {\r\n this._recordId = id;\r\n }\r\n\r\n Search(): void {\r\n BlockUI.Block(); \r\n EntityTypesStore.GetTypes({\r\n EntityId: this._metadata.EntityId,\r\n ParentTypeId: 0,\r\n WithRoot: false,\r\n OnlyEnabled: true\r\n })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n\r\n let dwPackage = _.find(result.TableTypes, (item) => item.Name === CANVAS_TYPES.DW_PACKAGE);\r\n if (dwPackage) {\r\n\r\n const searchScreen = new SearchScreen({\r\n EntityId: this._metadata.EntityId,\r\n SearchTerm: this._searchTerm(),\r\n IsRootForFormDesigner: true,\r\n SearchByTypes: [dwPackage.Id]\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs) => {\r\n if (eventArgs.data.TypeName === CANVAS_TYPES.DW_PACKAGE) {\r\n this._canvasRendered(false);\r\n this._recordId = eventArgs.data.RecordId;\r\n BlockUI.Block();\r\n CanvasDesignerStore.GetCanvas({Id: this._recordId})\r\n .then((response) => {\r\n this._dataModel = response;\r\n this._ignoreMissingSubKeys(this.GetProperties().IgnoreMissingSubKey);\r\n this._debugMode(this.GetProperties().DebugMode);\r\n this._canvasRendered(true);\r\n this.InitCanvas();\r\n this.CheckHasRollback();\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(err.message)\r\n });\r\n } else {\r\n new Notifier().Warning(`${eventArgs.data.TypeName} is not allowed`);\r\n }\r\n });\r\n\r\n searchScreen.On('NEW_RECORD',\r\n this,\r\n () => {\r\n this._canvasRendered(false);\r\n let typeScreen = new TypeScreen(this._metadata.EntityId, 0, true);\r\n typeScreen.On(\"TYPES_NOT_FOUND\", this, (eventArgs) => {\r\n\t\t\t\t\t\t\t\tnew Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n if (eventArgs.data.TypeName === CANVAS_TYPES.DW_PACKAGE) {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n this.NewRecord(typeId, kindId, exampleRecordId);\r\n } else {\r\n new Notifier().Warning(`${eventArgs.data.TypeName} is not allowed`);\r\n }\r\n });\r\n this.On('CANVAS_CREATED', this, () => {\r\n searchScreen.Cancel();\r\n });\r\n typeScreen.Show();\r\n });\r\n searchScreen.Show();\r\n }\r\n });\r\n }\r\n\r\n\r\n LoadScreenFor(recordId: number, resetCache: boolean = false) {\r\n this._isDataLoading(true);\r\n CanvasDesignerStore.GetCanvas({Id: recordId, ResetCache: resetCache})\r\n .always(()=>this._isDataLoading(false))\r\n .then((response) => {\r\n this._dataModel = response;\r\n this._ignoreMissingSubKeys(this.GetProperties().IgnoreMissingSubKey);\r\n this._debugMode(this.GetProperties().DebugMode);\r\n this._canvasRendered(true);\r\n this.InitCanvas();\r\n }).fail(err => new Notifier().Failed(err.message));\r\n }\r\n\r\n\r\n NewRecord(tableTypeId: number, kinId: number, exampleRecordId: number) {\r\n BlockUI.Block();\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kinId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = exampleRecordId;\r\n editScreen.UseLinking = true;\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.Trigger('CANVAS_CREATED');\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadScreenFor(eventArgs.data.RecordId);\r\n this._recordId = eventArgs.data.RecordId;\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, tableTypeId);\r\n });\r\n\r\n screen.On('RECORD_REMOVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n this.LoadScreenFor(null);\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n private HasChanges() {\r\n const hasNewItem = _.find(this._dataModel.CanvasItems, (item: CanvasItemModel) => {\r\n return item.State !== CanvasModelState.NoChanges\r\n });\r\n\r\n if (hasNewItem) {\r\n return true;\r\n }\r\n\r\n const hasNewLink = _.find(this._dataModel.CanvasLinks, (item: CanvasLinkModel) => {\r\n return item.State !== CanvasModelState.NoChanges\r\n });\r\n\r\n return hasNewLink;\r\n }\r\n\r\n ExecuteRollback(){\r\n\t\r\n let modalHeight = this._debugMode() ? 800 : 100;\r\n let modal = new Modal(\r\n {\r\n closeButton: this._debugMode() ? 'box' : null,\r\n height: `'${modalHeight}'`,\r\n closeOnEsc: this._debugMode()\r\n }, false ); \r\n modal.On('CLOSE', this, ()=> SignalRNotificationManager.Instance.SetDebugEditor(null));\r\n\r\n let content = `<div class='row'>\r\n <div style='text-align: center; background-color: white; width: 800px;' id='dw-progress'>\r\n <h2>Rolling back...</h2>\r\n </div>\r\n </div>`;\r\n\r\n if(this._debugMode()){\r\n content +=`<div class='row'>\r\n <div id='dw-debugger' style='height: 500px; margin-right: 5px;'></div>\r\n </div>`;\r\n }\r\n\r\n modal.SetContent($(content));\r\n modal.Show();\r\n\r\n\t\tvar editor = ace.edit(document.getElementById('dw-debugger'));\r\n SignalRNotificationManager.Instance.SetDebugEditor(editor);\r\n \r\n BlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.ExecuteRollback(this._recordId)\r\n .then(()=>{\r\n\r\n if(!this._debugMode()){\r\n modal.Close();\r\n } \r\n\r\n new Notifier($(this._el)).Success(NOTIFICATIONS.ROLLBACK_APPLIED);\r\n this.CheckHasRollback();\r\n })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n\t}\r\n\r\n CheckHasRollback(){\r\n if(this._isForLifeStatusDesigner()){\r\n return;\r\n }\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.HasRollback(this._recordId)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((res)=>{\r\n this._showRollbackButton(this._canvas.DestinationDataType === DataTypes.Cyberbase);\r\n this._hasRollback(res);\r\n })\r\n .fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n\t}\r\n\r\n async BuildLifeStatusTriggerFlow(lifeStatusName: string){\r\n this._isForLifeStatusDesigner(true);\r\n let canvas = await CanvasDesignerStore.BuildLifeStatusTriggerFlow(lifeStatusName);\r\n this._dataModel = canvas;\r\n this._canvasRendered(true);\r\n this.InitCanvas();\r\n this.CheckHasRollback();\r\n }\r\n\r\n set IsForLifeStatusDesigner(value: boolean){\r\n this._isForLifeStatusDesigner(value);\r\n }\r\n\r\n SetDataModel(canvas: CanvasModel){\r\n this._dataModel = canvas;\r\n this._canvasRendered(true);\r\n this.InitCanvas();\r\n this.CheckHasRollback();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"custom-options\\\"> <div class=\\\"form-check inline formBtnTitle formBtnTitle--disableDel\\\"> <input class=\\\"form-check-input formBtnTitle__formCheckInput\\\" data-bind=\\\"checked: _disableOnDelete\\\" type=\\\"checkbox\\\" id=\\\"defaultCheck1\\\"> <label class=\\\"form-check-label\\\" for=\\\"defaultCheck1\\\" data-bind=\\\"text: _labels.DISABLE_ON_DELETE, attr: {'title': _labels.DISABLE_ON_DELETE}\\\"></label> </div> <div class=\\\"form-check inline formBtnTitle formBtnTitle--disableDel\\\"> <input class=\\\"form-check-input formBtnTitle__formCheckInput\\\" data-bind=\\\"checked: _ignoreMissingSubKeys\\\" type=\\\"checkbox\\\" id=\\\"IgnoreMissingSubKeysCheck\\\"> <label class=\\\"form-check-label\\\" for=\\\"IgnoreMissingSubKeysCheck\\\" data-bind=\\\"text: _labels.IGNORE_MISSING_SUB_KEY, attr: {'title': _labels.IGNORE_MISSING_SUB_KEY}\\\">Ignore missing subKeys</label> </div> <div class=\\\"form-check inline formBtnTitle formBtnTitle--disableDel\\\"> <input class=\\\"form-check-input formBtnTitle__formCheckInput\\\" data-bind=\\\"checked: _debugMode\\\" type=\\\"checkbox\\\" id=\\\"DebugMode\\\"> <label class=\\\"form-check-label\\\" for=\\\"DebugMode\\\" data-bind=\\\"attr: {'title': 'Debug mode'}\\\">Debug mode</label> </div> </div>\";\n// Exports\nexport default code;","export const CANVAS_TYPES = {\r\n\tDW_PACKAGE: 'DWPackage',\r\n\tSOURCE: 'Source',\r\n\tTABLE: 'Table',\r\n\tPARAM: 'Param',\r\n\tDESTINATION: 'Destination',\r\n\tTRIGGER: 'Trigger',\r\n\tAPI_PACKAGE: 'APIPackage',\r\n\tAPI_METHOD: 'APIMethod',\r\n\tCSHARP_FUNCTION: 'CSharpFunction',\r\n\tJS_FUNCTION: 'JSFunction',\r\n\tGROUP: 'Group'\r\n}","import { deserialize, deserializeAs } from 'libs/cerialize';\r\n\r\nexport class ShapeModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}\r\n\r\nexport class CanvasIconModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tFontName: string;\r\n\r\n\t@deserialize\r\n\tImage: string;\r\n\r\n\t@deserialize\r\n\tIsIcon: boolean;\r\n\r\n\t@deserialize\r\n\tIsImage: boolean;\r\n}\r\n\r\nexport class CanvasItemModel {\r\n\r\n\t@deserialize\r\n\tAPIPackageId: number;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tReplicationId: string;\r\n\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tLifeStatus: number;\r\n\r\n\t@deserialize\r\n\tProperties: string;\r\n\r\n\t@deserialize\r\n\tX: number;\r\n\r\n\t@deserialize\r\n\tY: number;\r\n\r\n\t@deserialize\r\n\tZ: number;\r\n\r\n\t@deserialize\r\n\tProtocolId: number;\r\n\r\n\t@deserialize\r\n\tProtocolName: string;\r\n\r\n\t@deserialize\r\n\tShapeId: number;\r\n\r\n\t@deserialize\r\n\tShapeName: string;\r\n\r\n\t@deserialize\r\n\tSideId: number;\r\n\r\n\t@deserialize\r\n\tSideName: string;\r\n\r\n\t@deserialize\r\n\tSize: number;\r\n\r\n\t@deserialize\r\n\tSort: number;\r\n\r\n\t@deserialize\r\n\tCollapsible: boolean;\r\n\r\n\t@deserializeAs(CanvasIconModel)\r\n\tIcon: CanvasIconModel;\r\n\r\n\t@deserialize\r\n\tFilledFromField: number;\r\n\r\n\t@deserialize\r\n\tFilledFromTable: number;\r\n\r\n\t@deserialize\r\n\tState: number;\r\n\r\n\t@deserialize\r\n\tDefaultValue: string;\r\n\r\n\tget JsonProperties(){\r\n\t\treturn JSON.parse(this.Properties) || {};\r\n\t}\r\n}\r\n\r\nexport class CanvasLinkModel {\r\n\t@deserialize\r\n\tCanvasItem1Id: number;\r\n\r\n\t@deserialize\r\n\tCanvasItem2Id: number;\r\n\r\n\t@deserialize\r\n\tCanvasItem1Guid: string;\r\n\r\n\t@deserialize\r\n\tCanvasItem2Guid: string;\r\n\r\n\t@deserialize\r\n\tProperties: string;\r\n\r\n\t@deserialize\r\n\tState: number;\r\n\r\n\t@deserialize\r\n\tRootRecordId: number;\r\n\r\n\t@deserialize\r\n\tRootRecordGuid: string;\r\n}\r\n\r\nexport class CanvasModel {\r\n\t@deserializeAs(CanvasItemModel)\r\n\tCanvasItems: Array<CanvasItemModel>;\r\n\r\n\t@deserializeAs(CanvasLinkModel)\r\n\tCanvasLinks: Array<CanvasLinkModel>;\r\n\r\n\t@deserializeAs(ShapeModel)\r\n\tShapes: Array<ShapeModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.CanvasItems = [];\r\n\t\tthis.CanvasLinks = [];\r\n\t\tthis.Shapes = [];\r\n\t}\r\n}","import {deserialize, serialize, serializeAs} from 'libs/cerialize';\r\n\r\nexport class MsAccessColumnDto {\r\n\t@deserialize\r\n\tName: string;\r\n\r\n @deserialize\r\n\tType: string;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from 'libs/cerialize';\r\nimport { MsAccessColumnDto } from './MsAccessColumnDto';\r\n\r\nexport class MsAccessTableDto {\r\n\r\n\tconstructor(){\r\n\t\tthis.Columns = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserializeAs(MsAccessColumnDto)\r\n\tColumns: Array<MsAccessColumnDto>;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from 'libs/cerialize';\r\nimport { MsAccessTableDto } from './MsAccessTableDto';\r\n\r\nexport class MsAccessSchemaDto {\r\n\t\r\n constructor(){\r\n this.Tables = [];\r\n }\r\n\r\n @deserializeAs(MsAccessTableDto)\r\n\tTables: Array<MsAccessTableDto>;\r\n\r\n @deserialize\r\n Path: string;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from 'libs/cerialize';\r\nimport { MsAccessColumnDto } from './MsAccessColumnDto';\r\n\r\nexport class DesktopFolderDto {\r\n\r\n\r\n\t@deserialize\r\n\tPath: string;\r\n}\r\n","import { deserialize } from \"libs/cerialize\";\r\n\r\nexport class TriggerDto {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n Description: string;\r\n\r\n @deserialize\r\n Group: string;\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport { EntitiesListModel } from 'Core/Controls/CanvasDesigner/Models/EntitiesListModel';\r\nimport { Deserialize, GenericDeserialize } from 'libs/cerialize';\r\nimport { CanvasModel, ShapeModel, CanvasItemModel } from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { MsAccessSchemaDto } from 'Core/Controls/CanvasDesigner//Models/Dto/MsAccessSchemaDto';\r\nimport { MsAccessTableDto } from 'Core/Controls/CanvasDesigner//Models/Dto/MsAccessTableDto';\r\nimport { DesktopFolderDto } from 'Core/Controls/CanvasDesigner//Models/Dto/DesktopFolderDto';\r\nimport { TriggerDto } from 'Core/Controls/CanvasDesigner/Models/Dto/TriggerDto';\r\n\r\nexport interface IExactOnlineSettingDto{\r\n\tEndPointUrl: string;\r\n\tCallbackUrl: string;\r\n\tClientId: string;\r\n\tClientSecret: string;\r\n\tLogin: string;\r\n\tPassword: string;\r\n\tSecretKey: string;\r\n\tQueryString: string;\r\n}\r\n\r\nexport interface ICheckExactOnlineSettingsDto {\r\n\tSettings: IExactOnlineSettingDto;\r\n}\r\n\r\nexport interface IExecuteRequestModel {\r\n\tId: number;\r\n}\r\n\r\nexport interface IGetCanvasRequestModel {\r\n\tId: number;\r\n\tResetCache?: boolean;\r\n}\r\n\r\nexport interface IGetEntitiesRequestModel {\r\n\tIncludeDeleted: boolean;\r\n}\r\n\r\nexport interface IGetNodesByFunctionPackageRequestModel {\r\n\tId: number;\r\n\tShape: any;\r\n}\r\n\r\nexport interface IGetFunctionPackageRequestModel {\r\n\tDwPackageGuid: string;\r\n\tPackageId: number;\r\n\tParentType: string;\r\n}\r\n\r\nexport interface IGetTriggerRequestModel {\t\r\n\tDwPackageGuid: string;\r\n\tTriggerId: number;\r\n\tParentType: string;\r\n}\r\n\r\nexport class CanvasDesignerStore {\r\n\r\n\tstatic CheckExactOnlineSettings(params: ICheckExactOnlineSettingsDto): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/CanvasApi/CheckExactOnlineSettings',\r\n type: 'POST'\r\n },\r\n params: params\r\n };\r\n Request.Send(requestParams)\r\n .then((result) => {\r\n deferredResult.resolve(null);\r\n }).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\r\n\tstatic GetCanvasDesignerMetaData(): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetCanvasDesignerMetaData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeleteCanvas(canvasId: any): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/DeleteCanvas',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: canvasId\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic SaveCanvas(canvas: CanvasModel): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/Save',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: canvas\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\r\n\t\t\t\t\r\n\t\t\t}).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferedResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic SubscribeExactOnlineWebhook(packageId: number): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/SubscribeExactOnlineWebhook',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: {dwPackageId: packageId}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\r\n\t\t\t\t\r\n\t\t\t}).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferedResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetProductCatalogUrl(packageId: number): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetProductCatalogUrl',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: {dwPackageId: packageId}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\r\n\t\t\t\t\r\n\t\t\t}).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferedResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetEntities(params: IGetEntitiesRequestModel): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetEntities',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByEntity(dwPackageGuid: string, entityId, parentType): P.Promise<CanvasModel> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\t\t\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByEntity',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { dwPackageGuid: dwPackageGuid, Id: entityId, ParentType: parentType }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel))\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByQuery(query: string, rootGuid: string, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\t\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByQuery',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { query: query, rootGuid: rootGuid, parentType: parentType }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByExactOnlineEntity(name: string, dwPackageGuid: string, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\t\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByExactOnlineEntity',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { Name: name, DWPackageGuid: dwPackageGuid, parentType: parentType }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByEWSEntity(name: string, dwPackageGuid: string, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\t\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByEWSEntity',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { Name: name, DWPackageGuid: dwPackageGuid, parentType: parentType }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByMsAccessEntity(table: MsAccessTableDto, path: string, dwPackageGuid: string, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\t\r\n\t\tRequest\r\n\t\t.For('api/CanvasApi/GetNodesByMsAccessEntity')\r\n\t\t.Post({ DWPackageGuid: dwPackageGuid, ParentType: parentType, Table: table, Path: path })\r\n\t\t.then(data => deferredResult.resolve(<CanvasModel>Deserialize(data, CanvasModel)))\r\n\t\t.fail(data => deferredResult.reject({ message: JSON.parse(data.message).Message }));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\t\r\n\tstatic GetNodesByDesktopFolder( path: string, dwPackageGuid: string, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\t\r\n\t\tRequest\r\n\t\t.For('api/CanvasApi/GetNodesByDesktopFolder')\r\n\t\t.Post({ DWPackageGuid: dwPackageGuid, ParentType: parentType, Path: path })\r\n\t\t.then(data => deferredResult.resolve(<CanvasModel>Deserialize(data, CanvasModel)))\r\n\t\t.fail(data => deferredResult.reject({ message: JSON.parse(data.message).Message }));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetByOCIPunchOut(dwPackageGuid: string, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\t\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByOCIPunchOut',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { DWPackageGuid: dwPackageGuid, parentType: parentType }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetConstantGroup(dwPackageId: number): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetConstantGroup',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { DWPackageId: dwPackageId }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetFunctionGroup(dwPackageId: number, methodId: number): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetFunctionGroup',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { DWPackageId: dwPackageId, MethodId: methodId }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic GetNodesBySpreadsheet(file: string, fileName: string, parentType: string, dwPackageId: number, dwPackageGuid: string): P.Promise<CanvasModel> {\r\n\t\tconst deferedResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesBySpreadsheet',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { UploadFile: { Base64Data: file, Name: fileName }, parentType: parentType, dwPackageGuid: dwPackageGuid, dwPackageId: dwPackageId }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\t\tdeferedResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic GetCanvas(params: IGetCanvasRequestModel): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetCanvas',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(<CanvasModel>Deserialize(data, CanvasModel)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Execute(params: IExecuteRequestModel): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/Execute',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetFunctionPackages(): P.Promise<Array<CanvasItemModel>> {\r\n\t\tconst deferedResult = P.defer<Array<CanvasItemModel>>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetPackages',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(<Array<CanvasItemModel>>Deserialize(data.ResultObject, CanvasItemModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetDataWizardPackages(): P.Promise<Array<CanvasItemModel>> {\r\n\t\tconst deferedResult = P.defer<Array<CanvasItemModel>>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetDataWizardPackages',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(<Array<CanvasItemModel>>Deserialize(data.ResultObject, CanvasItemModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetEWSEntities(): P.Promise<Array<string>> {\r\n\t\tconst deferredResult = P.defer<Array<string>>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetEWSEntities',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n Request.Send(requestParams)\r\n .then((result) => {\r\n deferredResult.resolve(Deserialize(result, String));\r\n }).fail(data => { deferredResult.reject({ message: JSON.parse(data.message).Message }) });\r\n\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMsAccessSchema(): P.Promise<MsAccessSchemaDto> {\r\n\t\tconst deferredResult = P.defer<MsAccessSchemaDto>();\r\n\r\n Request\r\n\t\t.For('api/CanvasApi/GetMsAccessSchema')\r\n\t\t.Get()\r\n .then((result) => {\t\t\t\r\n deferredResult.resolve(GenericDeserialize(result, MsAccessSchemaDto));\r\n }).fail(data => {\r\n\t\t\t deferredResult.reject({ message: JSON.parse(data.message).Message });\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic GetDesktopFolderPath(): P.Promise<DesktopFolderDto> {\r\n\t\tconst deferredResult = P.defer<DesktopFolderDto>();\r\n\r\n Request\r\n\t\t.For('api/CanvasApi/GetDesktopFolderPath')\r\n\t\t.Get()\r\n .then((result) => {\t\t\t\r\n\t\t\tdeferredResult.resolve(GenericDeserialize(result, DesktopFolderDto));\r\n }).fail(data => {\r\n\t\t\t deferredResult.reject({ message: JSON.parse(data.message).Message });\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetExactOnlineEntities(): P.Promise<Array<string>> {\r\n\t\tconst deferredResult = P.defer<Array<string>>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetExactOnlineEntities',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n Request.Send(requestParams)\r\n .then((result) => {\r\n deferredResult.resolve(Deserialize(result, String));\r\n }).fail(data => { deferredResult.reject({ message: JSON.parse(data.message).Message }) });\r\n\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByPackage(params: IGetNodesByFunctionPackageRequestModel): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByPackage',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(data.ResultObject)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByPackage2(params: any): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByMethod',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(data.ResultObject)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetTriggers(): P.Promise<Array<TriggerDto>> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetTriggers',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferedResult.resolve(<Array<TriggerDto>>Deserialize(data, TriggerDto));\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetTrigger(params: IGetTriggerRequestModel): P.Promise<CanvasModel> {\r\n\t\tconst deferedResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetTrigger',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel))\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetFunctionPackage(params: IGetFunctionPackageRequestModel): P.Promise<CanvasModel> {\r\n\t\tconst deferedResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetFunctionPackage',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel))\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetDwPackageById(params: IGetFunctionPackageRequestModel): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/BuildByDwPackage',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel))\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMethods(apiPackageId: number): P.Promise<Array<CanvasItemModel>> {\r\n\t\tconst deferedResult = P.defer<Array<CanvasItemModel>>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetMethods',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: { ApiPackageId: apiPackageId }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(<Array<CanvasItemModel>>Deserialize(data.ResultObject, CanvasItemModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic ExecuteRollback(packageId: number): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/ExecuteRollback',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: { DwPackageId: packageId }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\r\n\t\t\t\t\r\n\t\t\t}).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferedResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic HasRollback(packageId: number): P.Promise<boolean> {\r\n\t\tconst deferedResult = P.defer<boolean>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/HasRollback',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { DwPackageId: packageId }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\t\t\t\t\r\n\t\t\t}).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferedResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic BuildLifeStatusTriggerFlow(lifeStatusName: string, exampleTriggerId?: number): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\r\n\t\tRequest.For('api/CanvasApi/BuildLifeStatusTriggerFlow')\r\n\t\t.Get({ LifeStatusName: lifeStatusName, ExampleStatusId: exampleTriggerId })\r\n\t\t.then(data => deferredResult.resolve(<CanvasModel>Deserialize(data, CanvasModel)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","export const PROPERTIES = {\r\n\tSETTINGS: 'Settings',\r\n\tCHART_TYPE: 'ChartType',\r\n\tCHART_TITLE: 'ChartTitle',\r\n\tX_AXIS: 'XAxis',\r\n\tX_AXIS_LABEL: 'XAxisLabel',\r\n\tY_AXIS: 'YAxis',\r\n\tY_AXIS_LABEL: 'YAxisLabel',\r\n\tSORT_BY: 'SortBy',\r\n SERIES: 'Series'\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam as ControlParam} from 'Core/Screens/IScreen';\r\nimport {EntityModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/EntityModel';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nimport DesignTemplate from 'Core/Controls/ComplexControl/Templates/Design.html'\r\nimport {RequiredFieldModel} from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport { CONTROL_TYPES } from '../../Constant';\r\n\r\n\r\nexport abstract class ComplexControl extends BaseControl {\r\n static designTemplate = DesignTemplate;\r\n private _isExpanded: KnockoutObservable<boolean>;\r\n protected _requiredFields: KnockoutObservableArray<RequiredFieldModel>;\r\n private _title: KnockoutObservable<string>;\r\n\r\n protected _enabled: KnockoutObservable<boolean>;\r\n protected _backgroundColor: KnockoutObservable<string>;\r\n protected _color: KnockoutObservable<string>;\r\n protected _borderColor: KnockoutObservable<string>;\r\n protected _border: KnockoutObservable<boolean>;\r\n protected _style: KnockoutComputed<{}>;\r\n IsEntitySelected: KnockoutObservable<boolean>;\r\n protected HideCaption: KnockoutObservable<boolean>;\r\n protected HideCaptionFromProperty: KnockoutObservable<boolean>;\r\n\r\n constructor(params: ControlParam, config: JSON = null) {\r\n super(params, config);\r\n this._model().IsComplexControl = true;\r\n this._requiredFields = ko.observableArray([]);\r\n this._isExpanded = ko.observable(false);\r\n this.IsEntitySelected = ko.observable(false);\r\n this._title = ko.observable('');\r\n this._style = ko.computed(() => {\r\n return null;\r\n });\r\n\r\n this._enabled = ko.observable(false);\r\n this._backgroundColor = ko.observable(null);\r\n this._color = ko.observable(null);\r\n this._borderColor = ko.observable(null);\r\n this._border = ko.observable(false);\r\n\r\n this._model.subscribe(() => {\r\n this.InitRequiredFields();\r\n });\r\n }\r\n\r\n protected abstract ApplyProperties();\r\n\r\n InitRequiredFields() {\r\n _.each(this._requiredFields(), (requiredField, index) => {\r\n const attachedField = _.find(this._model().Fields, (field) => field.Sort === index * 10);\r\n if (attachedField) {\r\n requiredField.AttachedField(attachedField);\r\n } else {\r\n requiredField.AttachedField(null);\r\n }\r\n });\r\n\r\n this._title(this.Name);\r\n \r\n this.InitIcon();\r\n\r\n this.IsEntitySelected(this._model().Fields.length > 0);\r\n }\r\n\r\n InitIcon(){\r\n if(this._model().Icon?.Id > 0 && this.GetControlTypeName() === CONTROL_TYPES.ButtonTemplate){\r\n this._icon(new Icon(this._model().Icon));\r\n return;\r\n }\r\n\r\n this._icon(this.GetDefaultIcon());\r\n\r\n var firstField = _.first(this._model().Fields);\r\n\r\n if (firstField) {\r\n if (firstField.EntityIcon) {\r\n this._icon(new Icon(firstField.EntityIcon));\r\n }\r\n }\r\n }\r\n\r\n Expand() {\r\n this._isExpanded(!this._isExpanded());\r\n }\r\n\r\n get IsExpanded(): KnockoutObservable<boolean> {\r\n return this._isExpanded;\r\n }\r\n\r\n get RequiredFields(): KnockoutObservableArray<RequiredFieldModel> {\r\n return this._requiredFields;\r\n }\r\n\r\n get Title(): KnockoutObservable<string> {\r\n return this._title;\r\n }\r\n\r\n IsDesignValid() {\r\n return _.filter(this._requiredFields(), field => !(field.AttachedField())).length === 0;\r\n }\r\n\r\n AutoSelectFieldsFromStruct(tablesStruct: any[]) {\r\n this._model().Fields = [];\r\n\r\n _.each(tablesStruct, tableStruct => {\r\n _.each(this._requiredFields(), (requiredField, index) => {\r\n if (requiredField.EntityType && requiredField.EntityType !== tableStruct.Type) {\r\n return;\r\n }\r\n\r\n const attachedField = _.find(tableStruct.Fields, (field: any) => {\r\n return field.Name === requiredField.DefaultName && field.Type === requiredField.Type;\r\n });\r\n\r\n if (attachedField) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = attachedField.Id;\r\n attachedFieldModel.Name = attachedField.Name;\r\n attachedFieldModel.EntityName = tableStruct.Name;\r\n attachedFieldModel.EntityId = tableStruct.Id;\r\n attachedFieldModel.Sort = index * 10;\r\n attachedFieldModel.FieldTypeName = attachedField.Type;\r\n requiredField.AttachedField(attachedFieldModel);\r\n this._model().Fields.push(attachedFieldModel);\r\n }\r\n });\r\n });\r\n }\r\n\r\n AutoSelectFields(entityModels: Array<EntityModel>) {\r\n this._model().Fields = [];\r\n _.each(entityModels, (entityModel) => {\r\n _.each(this._requiredFields(), (requiredField, index) => {\r\n const tableFits = !requiredField.EntityType || requiredField.EntityType === entityModel.TypeName;\r\n const attachedField = tableFits && _.find(entityModel.Fields, entityField => {\r\n return entityField.FieldName === requiredField.DefaultName && entityField.FieldTypeName === requiredField.Type;\r\n });\r\n\r\n if (attachedField) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = attachedField.FieldId;\r\n attachedFieldModel.Name = attachedField.FieldName;\r\n attachedFieldModel.EntityName = entityModel.EntityName;\r\n attachedFieldModel.EntityId = entityModel.EntityId;\r\n attachedFieldModel.EntityTypeName = entityModel.TypeName;\r\n attachedFieldModel.Sort = index * 10;\r\n attachedFieldModel.FieldTypeName = attachedField.FieldTypeName;\r\n requiredField.AttachedField(attachedFieldModel);\r\n this._model().Fields.push(attachedFieldModel);\r\n }\r\n });\r\n });\r\n\r\n }\r\n}\r\n","// Module\nvar code = \"<div data-bind=\\\"style: _style\\\" class=\\\"FormDesignerView complex-control form-designer-view drop-control-container form-standart-control new-control\\\"> <div class=\\\"portlet light drop-control-portlet\\\"> <div data-bind=\\\"click: Expand, preventBubble: ['click'], css: { expanded: _isExpanded() }\\\" class=\\\"collapse-button toggle-button\\\" data-button=\\\"collapse\\\"> <span data-button=\\\"collapse\\\" class=\\\"link-entity-arrow\\\"></span> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"portlet-title\\\"> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: Title, style: {'color': _color}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control complex-control-input\\\" aria-describedby=\\\"sizing-addon1\\\" placeholder=\\\"\\\" readonly=\\\"readonly\\\"/> <span class=\\\"input-group-addon\\\"> <input data-bind=\\\"uniform: IsEntitySelected, enableAttr: false\\\" type=\\\"checkbox\\\"> </span> <span class=\\\"input-group-btn\\\"> <button class=\\\"btn setting-button\\\" type=\\\"button\\\">...</button> </span> </div> </div> <div data-bind=\\\"visible: IsExpanded\\\" class=\\\"portlet-content\\\"> <div class=\\\"\\\"> <!-- ko foreach: RequiredFields --> <div class=\\\"portlet-body\\\"> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: FieldName\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"\\\" aria-describedby=\\\"sizing-addon1\\\" readonly=\\\"readonly\\\"> <span class=\\\"input-group-addon\\\"> <input data-bind=\\\"uniform: IsSelected, enableAttr: false\\\" type=\\\"checkbox\\\"> </span> <span class=\\\"input-group-btn\\\"> <button class=\\\"btn\\\" type=\\\"button\\\">...</button> </span> </div> </div> <!-- /ko --> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nexport class RequiredFieldModel {\r\n\t\r\n\tFieldName: KnockoutComputed<string>;\r\n\tIsSelected: KnockoutComputed<boolean>;\r\n\r\n\tconstructor(defaultName: string, typeName: string, entityTypeName: string, attachedField: AttachedFieldModel = null) {\r\n\t\tthis.DefaultName = defaultName;\r\n\t\tthis.Type = typeName;\r\n\t\tthis.EntityType = entityTypeName;\r\n\t\tthis.AttachedField = ko.observable(attachedField);\r\n\r\n\t\tthis.FieldName = ko.computed(() => {\r\n\t\t\treturn this.AttachedField() ? this.AttachedField().Name : this.DefaultName;\r\n\t\t});\r\n\r\n\t\tthis.IsSelected = ko.computed(() => {\r\n\t\t\treturn this.AttachedField() != null;\r\n\t\t});\r\n\t}\r\n\r\n\tDefaultName: string;\r\n\tType: string;\r\n\tEntityType: string;\r\n\tAttachedField: KnockoutObservable<AttachedFieldModel>;\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {\r\n\tRecordSharingModel,\r\n\tUserGroupModel,\r\n\tTableModel,\r\n\tRightsModel\r\n}from \"Core/Controls/RecordSharing/Models/RecordSharingModel\";\r\n\r\nexport class UserGroupViewModel {\r\n\tId: number;\r\n\tName: string;\r\n\tAllSelected: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(model: UserGroupModel) {\r\n\t\tthis.Id = model.Id;\r\n\t\tthis.Name = !!model.Name && model.Name.trim().length > 0 ? model.Name : '(no name)';\r\n\t\tthis.AllSelected = ko.observable(false);\r\n\t}\r\n}\r\n\r\nexport class RightsViewModel {\r\n\tUserGroupId: number;\r\n\tIsShared: KnockoutObservable<boolean>;\r\n\tValue: number;\r\n\r\n\tconstructor(model: RightsModel) {\r\n\t\tthis.UserGroupId = model.UserGroupId;\r\n\t\tthis.IsShared = ko.observable(model.IsShared);\r\n\t\tthis.Value = 512;\r\n\t}\r\n}\r\n\r\nclass TableViewModel {\r\n\tId: number;\r\n\tName: string;\r\n\tRights: KnockoutObservableArray<RightsViewModel>;\r\n\r\n\tconstructor(model: TableModel) {\r\n\t\tthis.Id = model.Id;\r\n\t\tthis.Name = model.Name;\r\n\r\n\t\tlet rights = model.Rights.map(right => new RightsViewModel(right));\r\n\t\tthis.Rights = ko.observableArray(rights);\r\n\t}\r\n}\r\n\r\nexport class RecordSharingViewModel {\r\n\tUserGroups: Array<UserGroupViewModel>;\r\n\tTables: Array<TableViewModel>;\r\n\r\n\tconstructor(model: RecordSharingModel) {\r\n\t\tthis.UserGroups = model.UserGroups.map(userGroup => new UserGroupViewModel(userGroup));\r\n\t\tthis.Tables = model.Tables.map(table => new TableViewModel(table));\r\n\t}\r\n}","import {RecordSharingViewModel, RightsViewModel} from \"Core/Controls/RecordSharing/Models/RecordSharingViewModel\";\r\n\r\nclass RightUnitModel {\r\n\tUserGroupId: number;\r\n\tTableId: number;\r\n\tRightsValue: number;\r\n\r\n\tconstructor(tableId: number, right: RightsViewModel) {\r\n\t\tthis.TableId = tableId;\r\n\t\tthis.UserGroupId = right.UserGroupId;\r\n\t\tthis.RightsValue = right.IsShared() ? right.Value : 0;\r\n\t}\r\n}\r\n\r\nexport class RecordSharingSerializedModel {\r\n\tSecurityProfileId: number;\r\n\tRightUnits: Array<RightUnitModel>;\r\n\r\n\tconstructor(securityProfileId: number, recordSharingViewModel: RecordSharingViewModel) {\r\n\t\tthis.SecurityProfileId = securityProfileId;\r\n\t\tthis.RightUnits= [];\r\n\r\n\t\trecordSharingViewModel.Tables.forEach(table => {\r\n\t\t\tlet tableRights = table.Rights().map(right => new RightUnitModel(table.Id, right));\r\n\t\t\tthis.RightUnits = this.RightUnits.concat(tableRights);\r\n\t\t});\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\"\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\"\r\nimport {IControlParam} from \"Core/Screens/IScreen\"\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\n\r\nimport ViewTemplate from \"Core/Controls/RecordSharing/Templates/View.html\"\r\nimport EditTemplate from \"Core/Controls/RecordSharing/Templates/Edit.html\"\r\nimport ToolBarTemplate from \"Core/Controls/RecordSharing/Templates/ToolBar.html\"\r\nimport DesignTemplate from \"Core/Controls/RecordSharing/Templates/Design.html\"\r\n\r\nimport {RecordSharingModel} from \"Core/Controls/RecordSharing/Models/RecordSharingModel\"\r\nimport {RecordSharingViewModel} from \"Core/Controls/RecordSharing/Models/RecordSharingViewModel\"\r\nimport {RecordSharingSerializedModel} from \"Core/Controls/RecordSharing/Models/RecordSharingSerializedModel\"\r\nimport { RecordSharingStore } from \"Core/Controls/RecordSharing/Stores/RecordSharingStore\"\r\nimport { UserGroupViewModel } from \"Core/Controls/RecordSharing/Models/RecordSharingViewModel\"\r\n\r\n\r\nko.templates[\"Core/Controls/RecordSharing/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/RecordSharing/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/RecordSharing/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/RecordSharing/Templates/Design\"] = DesignTemplate;\r\n\r\nenum Statuses {\r\n\tOk,\r\n\tError\r\n}\r\n\r\nexport class RecordSharing extends BaseControl {\r\n\tprivate _profileId: number;\r\n\tprivate _data: KnockoutObservable<RecordSharingViewModel>;\r\n\tprivate _status: KnockoutObservable<Statuses>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._data = ko.observable(null);\r\n\t\tthis._status = ko.observable(Statuses.Ok);\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis._profileId = value.SubjectRecordId;\r\n\t\tBlockUI.Block();\r\n\t\tRecordSharingStore.GetRecordSharingScreen(value.SubjectRecordId)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tthis._status(Statuses.Error);\r\n\t\t\t\t\tthis._errorMessage(result.ErrorMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet recordSharingModel: RecordSharingModel = result.ResultObject;\r\n\t\t\t\tlet recordSharingViewModel = new RecordSharingViewModel(recordSharingModel);\r\n\r\n\t\t\t\tthis._data(recordSharingViewModel);\r\n\r\n\t\t\t\t_.each(this._data().UserGroups, (userGroup) => {\r\n\t\t\t\t\tlet countCheckedValues = 0;\r\n\r\n\t\t\t\t\t_.each(this._data().Tables, (tableItem) => {\r\n\t\t\t\t\t\tconst selectedRight = _.findWhere(tableItem.Rights(), { UserGroupId: userGroup.Id });\r\n\t\t\t\t\t\tif (selectedRight && selectedRight.IsShared()) {\r\n\t\t\t\t\t\t\tcountCheckedValues++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tconst isUserGroupChecked = countCheckedValues === this._data().Tables.length;\r\n\t\t\t\t\tuserGroup.AllSelected(isUserGroupChecked);\r\n\t\t\t\t});\r\n\r\n\t\t\t\t_.each(this._data().Tables, (table) => {\r\n\t\t\t\t\t_.each(table.Rights(), (right) => {\r\n\t\t\t\t\t\tright.IsShared.subscribe(() => {\r\n\t\t\t\t\t\t\tlet countCheckedValues = 0;\r\n\t\t\t\t\t\t\tconst selectedUserGroup = _.findWhere(this._data().UserGroups, { Id: right.UserGroupId });\r\n\r\n\t\t\t\t\t\t\t_.each(this._data().Tables, (tableItem) => {\r\n\t\t\t\t\t\t\t\tconst selectedRight = _.findWhere(tableItem.Rights(), { UserGroupId: selectedUserGroup.Id });\r\n\t\t\t\t\t\t\t\tif (selectedRight && selectedRight.IsShared()) {\r\n\t\t\t\t\t\t\t\t\tcountCheckedValues++;\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 isUserGroupChecked = countCheckedValues === this._data().Tables.length;\r\n\t\t\t\t\t\t\tselectedUserGroup.AllSelected(isUserGroupChecked);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._status(Statuses.Ok);\r\n\t\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tCheckAll(userGroup: UserGroupViewModel) {\r\n\t\tthis.SelectAll(userGroup);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tSelectAll(userGroup: UserGroupViewModel) {\r\n\t\tconst isUserGroupChecked = !userGroup.AllSelected();\r\n\t\t_.each(this._data().Tables, (table) => {\r\n\t\t\t_.each(table.Rights(), (rightItem) => {\r\n\t\t\t\tif (rightItem.UserGroupId === userGroup.Id) {\r\n\t\t\t\t\trightItem.IsShared(isUserGroupChecked);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tDeserialize(): RecordSharingSerializedModel {\r\n\t\tif (this._status() === Statuses.Error) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn new RecordSharingSerializedModel(this._profileId, this._data());\r\n\t}\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\n\r\nexport class RecordSharingStore {\r\n\tstatic GetRecordSharingScreen(securityProfileId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\t\tproxy: {\r\n\t\t\t\t\turl: '/api/RecordSharingApi/GetRecordSharingScreen',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\ttype: 'GET'\r\n\t\t\t\t},\r\n\t\t\t\tparams: { id: securityProfileId }\r\n\t\t}).then(result => deferredResult.resolve(result));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-hover dataTable record-sharing table-striped\\\"> <thead> <tr> <th></th> <!-- ko foreach: UserGroups --> <th class=\\\"security-th\\\" data-bind=\\\"text: Name\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: Tables --> <tr> <td data-bind=\\\"text: Name\\\"></td> <!-- ko foreach: Rights --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: IsShared, value: Value\\\" type=\\\"checkbox\\\" disabled=\\\"disabled\\\"/> </td> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-hover dataTable record-sharing table-striped\\\"> <thead> <tr> <th></th> <!-- ko foreach: UserGroups --> <th class=\\\"security-th\\\"> <input class=\\\"security-group-input\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: $data.AllSelected(), attr: { id: 'userGroup' + Id }, click: $parents[1].CheckAll.bind($parents[1], $data)\\\"> <label class=\\\"security-group-label\\\" data-bind=\\\"text: Name, attr: { for: 'userGroup' + Id }, click: $parents[1].SelectAll.bind($parents[1], $data)\\\"></label> </th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: Tables --> <tr> <td data-bind=\\\"text: Name\\\"></td> <!-- ko foreach: Rights --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: IsShared, value: Value\\\" type=\\\"checkbox\\\"/> </td> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-striped table-hover\\\"> <thead> <tr> <th><!-- ko text: $parent._labels.ACCOUNT_NAME_LABEL --><!-- /ko --></th> <!-- ko foreach: RoleUnits --> <th class=\\\"security-rights-th\\\" data-bind=\\\"text: $data.TranslationUserSecurityRoleName\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <tr> <td data-bind=\\\"text: UserName\\\"></td> <!-- ko foreach: RoleUnits --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: $data.IsUserInRole\\\" type=\\\"checkbox\\\" class=\\\"disabled\\\" disabled=\\\"disabled\\\"/> </td> <!-- /ko --> </tr> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport { BaseControl, IControlValue } from \"Core/Controls/BaseControl/BaseControl\";\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\n\r\nimport { UserRoles } from 'User/UserManager';\r\n\r\nimport ViewTemplate from \"Core/Controls/UserSecurity/Templates/View.html\";\r\nimport EditTemplate from \"Core/Controls/UserSecurity/Templates/Edit.html\";\r\nimport ToolBarTemplate from \"Core/Controls/UserSecurity/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/UserSecurity/Templates/Design.html\";\r\n\r\nimport { UserSecurityModel } from \"Core/Controls/UserSecurity/Models/UserSecurityModel\";\r\nimport { UserSecurityViewModel, RoleUnitViewModel } from \"Core/Controls/UserSecurity/Models/UserSecurityViewModel\";\r\nimport { UserSecuritySerializedModel } from \"Core/Controls/UserSecurity/Models/UserSecuritySerializedModel\";\r\nimport { UserSecurityStore } from \"Core/Controls/UserSecurity/Stores/UserSecurityStore\";\r\n\r\nko.templates[\"Core/Controls/UserSecurity/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/UserSecurity/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/UserSecurity/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/UserSecurity/Templates/Design\"] = DesignTemplate;\r\n\r\nenum Statuses {\r\n\tOk,\r\n\tError\r\n}\r\n\r\nlet UserTypes = {\r\n\tUser: \"User\",\r\n\tPortal: \"Portal\"\r\n}\r\n\r\nexport class UserSecurity extends BaseControl {\r\n\r\n\tprivate _userId: number;\r\n\tprivate _data: KnockoutObservable<UserSecurityViewModel>;\r\n\tprivate _status: KnockoutObservable<Statuses>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._data = ko.observable(null);\r\n\t\tthis._status = ko.observable(Statuses.Ok);\r\n\t}\r\n\r\n\tApplyProperties() {}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis._userId = value.SubjectRecordId;\r\n\t\tBlockUI.Block();\r\n\t\tUserSecurityStore.GetUserSecurityData(value.SubjectRecordId)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tthis._status(Statuses.Error);\r\n\t\t\t\t\tthis._errorMessage(result.ErrorMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet userSecurityModel: UserSecurityModel = result.ResultObject;\r\n\t\t\t\tlet userSecurityViewModel = new UserSecurityViewModel(userSecurityModel.UserId,\r\n\t\t\t\t\tuserSecurityModel.UserName,\r\n\t\t\t\t\tuserSecurityModel.RoleUnits);\r\n\r\n\t\t\t\tif (value.RecordSpecsModel.IsNewRecord) {\r\n\t\t\t\t\tthis.SelectRole(userSecurityViewModel);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._data(userSecurityViewModel);\r\n\t\t\t\tthis._status(Statuses.Ok);\r\n\t\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tDeserialize(): UserSecuritySerializedModel {\r\n\t\tif (this._status() === Statuses.Error) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet userRolesKey = this._data()\r\n\t\t\t.RoleUnits\r\n\t\t\t.reduce((suma, current) => {\r\n\t\t\t\treturn current.IsUserInRole()\r\n\t\t\t\t\t? suma + current.RoleValue\r\n\t\t\t\t\t: suma;\r\n\t\t\t}, 0);\r\n\r\n\t\treturn new UserSecuritySerializedModel(this._userId, userRolesKey);\r\n\t}\r\n\r\n\tprivate SelectRole(userSecurityViewModel: UserSecurityViewModel) {\r\n\t\tlet recordType = this.GetForm().GetScreen().GetTableTypeName();\r\n\t\tif (recordType === UserTypes.User) {\r\n\t\t\tuserSecurityViewModel.SelectRole(recordType);\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {RoleUnitModel} from \"Core/Controls/UserSecurity/Models/UserSecurityModel\";\r\nimport {UserRoles} from 'User/UserManager';\r\n\r\nexport class UserSecurityViewModel {\r\n UserId: number;\r\n UserName: string;\r\n RoleUnits: RoleUnitViewModel[];\r\n\r\n constructor(userId: number, userName: string, roleUnits: RoleUnitModel[]) {\r\n this.UserId = userId;\r\n this.UserName = userName;\r\n\r\n const roleUnitsOrder = Object.values(UserRoles);\r\n this.RoleUnits = roleUnits\r\n .map(roleUnit => RoleUnitViewModel.Map(roleUnit))\r\n .sort((a, b) => roleUnitsOrder.indexOf(a.RoleValue) - roleUnitsOrder.indexOf(b.RoleValue));\r\n }\r\n\r\n SelectRole(roleName: string) {\r\n let selectedRole = _.find(this.RoleUnits, unit => unit.RoleName === roleName);\r\n if (selectedRole) {\r\n selectedRole.IsUserInRole(true);\r\n }\r\n }\r\n}\r\n\r\nexport class RoleUnitViewModel {\r\n RoleName: string;\r\n RoleValue: number;\r\n IsUserInRole: KnockoutObservable<boolean>;\r\n CouldBeChanged: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n this.IsUserInRole = ko.observable(false);\r\n this.CouldBeChanged = ko.observable(false);\r\n }\r\n\r\n //Translation for UserSecurity - Role\r\n get TranslationUserSecurityRoleName() {\r\n switch (this.RoleValue) {\r\n case UserRoles.User :\r\n return LABELS.USER;\r\n case UserRoles.SuperUser :\r\n return LABELS.SUPER_USER;\r\n case UserRoles.DataRole :\r\n return LABELS.DATA_ROLE;\r\n case UserRoles.DesignerLevel1 :\r\n return LABELS.DESIGNER_LEVEL1;\r\n case UserRoles.DesignerLevel2 :\r\n return LABELS.DESIGNER_LEVEL2;\r\n case UserRoles.DesignerLevel3 :\r\n return LABELS.DESIGNER_LEVEL3;\r\n case UserRoles.NetworkManager:\r\n return LABELS.NETWORK_MANAGER;\r\n case UserRoles.US :\r\n return LABELS.US;\r\n default :\r\n return this.RoleName;\r\n }\r\n }\r\n\r\n static Map(roleUnit: RoleUnitModel) {\r\n const viewModel = new RoleUnitViewModel();\r\n\r\n viewModel.RoleName = roleUnit.RoleName;\r\n viewModel.RoleValue = roleUnit.RoleValue;\r\n viewModel.IsUserInRole(roleUnit.IsUserInRole);\r\n viewModel.CouldBeChanged(roleUnit.CouldBeChanged);\r\n\r\n return viewModel;\r\n }\r\n}","export class UserSecuritySerializedModel {\r\n\tconstructor(\r\n\t\tpublic UserId: number,\r\n\t\tpublic SecurityRolesKey: number) {\r\n\r\n\t}\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {UserSecurityModel} from \"Core/Controls/UserSecurity/Models/UserSecurityModel\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\n\r\nexport class UserSecurityStore {\r\n\tstatic GetUserSecurityData(userId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/UserSecurityApi/GetUserSecurityScreen',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t},\r\n\t\t\tparams: { id: userId }\r\n\t\t}).then(result => deferredResult.resolve(result));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-striped table-hover\\\"> <thead> <tr> <th><!-- ko text: $parent._labels.ACCOUNT_NAME_LABEL --><!-- /ko --></th> <!-- ko foreach: RoleUnits --> <th class=\\\"security-rights-th\\\" data-bind=\\\"text: $data.TranslationUserSecurityRoleName\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <tr> <td data-bind=\\\"text: UserName\\\"></td> <!-- ko foreach: RoleUnits --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: $data.IsUserInRole, value: $data.RoleValue, attr:{disabled: !$data.CouldBeChanged()}\\\" type=\\\"checkbox\\\"/> </td> <!-- /ko --> </tr> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-striped table-hover\\\"> <thead> <tr> <th><!-- ko text: $parent._labels.ACCOUNT_NAME_LABEL --><!-- /ko --></th> <!-- ko foreach: Flags --> <th class=\\\"security-rights-th\\\" data-bind=\\\"text: TranslationFlagName\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <tr> <td class=\\\"security-rights-td\\\" data-bind=\\\"text: UserName\\\"></td> <!-- ko foreach: Flags --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: UserHasFlag\\\" type=\\\"checkbox\\\" disabled=\\\"disabled\\\"/> </td> <!-- /ko --> </tr> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport ViewTemplate from \"Core/Controls/UserAllowance/Templates/View.html\";\r\nimport EditTemplate from \"Core/Controls/UserAllowance/Templates/Edit.html\";\r\nimport ToolBarTemplate from \"Core/Controls/UserAllowance/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/UserAllowance/Templates/Design.html\";\r\n\r\nimport {UserAllowanceModel} from \"Core/Controls/UserAllowance/Models/UserAllowanceModel\";\r\nimport {UserAllowanceViewModel} from \"Core/Controls/UserAllowance/Models/UserAllowanceViewModel\";\r\nimport {UserAllowanceSerializedModel} from \"Core/Controls/UserAllowance/Models/UserAllowanceSerializedModel\";\r\nimport {UserAllowanceStore} from \"Core/Controls/UserAllowance/Stores/UserAllowanceStore\";\r\n\r\n\r\nko.templates[\"Core/Controls/UserAllowance/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/UserAllowance/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/UserAllowance/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/UserAllowance/Templates/Design\"] = DesignTemplate;\r\n\r\nenum Statuses {\r\n\tOk,\r\n\tError\r\n}\r\n\r\nexport class UserAllowance extends BaseControl {\r\n\tprivate _userProfileId: number;\r\n\tprivate _data: KnockoutObservable<UserAllowanceViewModel>;\r\n\tprivate _status: KnockoutObservable<Statuses>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._data = ko.observable(null);\r\n\t\tthis._status = ko.observable(Statuses.Ok);\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis._userProfileId = value.SubjectRecordId;\r\n\t\tBlockUI.Block();\r\n\t\tUserAllowanceStore.GetUserAllowanceScreen(value.SubjectRecordId)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tthis._status(Statuses.Error);\r\n\t\t\t\t\tthis._errorMessage(result.ErrorMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet userAllowanceModel: UserAllowanceModel = result.ResultObject;\r\n\t\t\t\tlet userAllowanceViewModel = new UserAllowanceViewModel(userAllowanceModel);\r\n\r\n\t\t\t\tthis._data(userAllowanceViewModel);\r\n\t\t\t\tthis._status(Statuses.Ok);\r\n\t\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tDeserialize(): UserAllowanceSerializedModel {\r\n\t\tif (this._status() === Statuses.Error) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn new UserAllowanceSerializedModel(this._userProfileId, this._data());\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport {UserAllowanceModel, FlagModel} from \"Core/Controls/UserAllowance/Models/UserAllowanceModel\";\r\nimport {LABELS} from \"../../../Components/Translation/Locales\";\r\n\r\nclass FlagViewModel {\r\n\tName: string;\r\n\tValue: number;\r\n\tUserHasFlag: boolean;\r\n\r\n\tconstructor(model: FlagModel) {\r\n\t\tthis.Name = model.Name;\r\n\t\tthis.Value = model.Value;\r\n\t\tthis.UserHasFlag = model.UserHasFlag;\r\n\t}\r\n\r\n\t//Translation for User Allowance - Flag Name\r\n\tget TranslationFlagName(){\r\n\t\tif(this.Value === 1){\r\n\t\t\treturn LABELS.OVERRIDE_SECURITY;\r\n\t\t}else if(this.Value === 2){\r\n\t\t\treturn LABELS.CHANGE_RECORD_SECURITY;\r\n\t\t}else if(this.Value === 4){\r\n\t\t\treturn LABELS.NATIVE_SQL;\r\n\t\t}else if(this.Value === 8){\r\n\t\t\treturn LABELS.PLANNING;\r\n\t\t}else if(this.Value === 32){\r\n\t\t\treturn LABELS.MAKE_PERSONAL_LABEL;\r\n\t\t}else if(this.Value === 64){\r\n\t\t\treturn LABELS.EXPORT_DATA;\r\n\t\t}else if(this.Value === 128){\r\n\t\t\treturn LABELS.MAKE_EXAMPLE_LABLE;\r\n\t\t}\r\n\r\n\t\treturn this.Name;\r\n\t}\r\n}\r\n\r\nexport class UserAllowanceViewModel {\r\n\tUserId: number;\r\n\tUserName: string;\r\n\tFlags: KnockoutObservableArray<FlagViewModel>;\r\n\r\n\tconstructor(model: UserAllowanceModel) {\r\n\t\tthis.UserId = model.UserId;\r\n\t\tthis.UserName = model.UserName;\r\n\r\n\t\tlet flags = model.Flags.map(flag => new FlagViewModel(flag));\r\n\t\tthis.Flags = ko.observableArray(flags);\r\n\t}\r\n}","import {UserAllowanceViewModel} from \"Core/Controls/UserAllowance/Models/UserAllowanceViewModel\";\r\n\r\nexport class UserAllowanceSerializedModel {\r\n\tUserId: number;\r\n\tUserAllowanceValue: number;\r\n\r\n\tconstructor(userId: number, userAllowanceViewModel: UserAllowanceViewModel) {\r\n\t\tthis.UserId = userId;\r\n\r\n\t\tlet rightsValue = 0;\r\n\r\n\t\tuserAllowanceViewModel.Flags().forEach(right => rightsValue += right.UserHasFlag ? right.Value : 0);\r\n\r\n\t\tthis.UserAllowanceValue = rightsValue;\r\n\t}\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\n\r\nexport class UserAllowanceStore {\r\n\tstatic GetUserAllowanceScreen(userId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\t\tproxy: {\r\n\t\t\t\t\turl: '/api/UserAllowanceApi/GetUserAllowanceScreen',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\ttype: 'GET'\r\n\t\t\t\t},\r\n\t\t\t\tparams: { id: userId }\r\n\t\t\t})\r\n\t\t\t.then(result => deferredResult.resolve(result))\r\n\t\t\t.fail(error => console.log(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-striped table-hover\\\"> <thead> <tr> <th><!-- ko text: $parent._labels.ACCOUNT_NAME_LABEL --><!-- /ko --></th> <!-- ko foreach: Flags --> <th data-bind=\\\"text: TranslationFlagName\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <tr> <td data-bind=\\\"text: UserName\\\"></td> <!-- ko foreach: Flags --> <td> <input data-bind=\\\"checked: UserHasFlag, value: Value\\\" type=\\\"checkbox\\\"/> </td> <!-- /ko --> </tr> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-hover dataTable table-security table-striped\\\"> <thead> <tr> <th></th> <!-- ko foreach: Rights --> <th class=\\\"security-th\\\"> <div data-type=\\\"security-scope-group\\\" class=\\\"\\\"> <div class=\\\"\\\"> <label data-bind=\\\"text: $data.Name\\\"></label> </div> </div> </th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: Tables --> <tr> <td data-bind=\\\"text: Name\\\"></td> <!-- ko foreach: Rights --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: IsChecked\\\" type=\\\"checkbox\\\" disabled=\\\"disabled\\\"/> </td> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from \"libs/cerialize\";\r\n\r\nexport enum Rights {\r\n\tShow = 2,\r\n\tEdit = 4,\r\n\tDelete = 8,\r\n\tCreate = 1024\r\n}\r\n\r\nexport class TalbeModel {\r\n\tId: number;\r\n\tName: string;\r\n}\r\n\r\nexport class RightModel {\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tValue: number;\r\n\r\n\t@deserialize\r\n\tIsChecked: boolean;\r\n}\r\n\r\nexport class TableModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserializeAs(RightModel)\r\n\tRights: Array<RightModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Rights = [];\r\n\t}\r\n}\r\n\r\nexport class TableSecurityModel {\r\n\t@deserializeAs(TableModel)\r\n\tTables: Array<TableModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Tables = [];\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\"\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\"\r\nimport {IControlParam} from \"Core/Screens/IScreen\"\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\n\r\nimport ViewTemplate from \"Core/Controls/TableSecurity/Templates/View.html\"\r\nimport EditTemplate from \"Core/Controls/TableSecurity/Templates/Edit.html\"\r\nimport ToolBarTemplate from \"Core/Controls/TableSecurity/Templates/ToolBar.html\"\r\nimport DesignTemplate from \"Core/Controls/TableSecurity/Templates/Design.html\"\r\n\r\nimport {TableSecurityModel} from \"Core/Controls/TableSecurity/Models/TableSecurityModel\";\r\nimport { TableSecurityViewModel, TableViewModel, RightViewModel, TableGroupViewModel} from \"Core/Controls/TableSecurity/Models/TableSecurityViewModel\";\r\nimport {TableSecuritySerializedModel} from \"Core/Controls/TableSecurity/Models/TableSecuritySerializedModel\";\r\nimport {TableSecurityStore} from \"Core/Controls/TableSecurity/Stores/TableSecurityStore\";\r\n\r\nko.templates[\"Core/Controls/TableSecurity/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/TableSecurity/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/TableSecurity/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/TableSecurity/Templates/Design\"] = DesignTemplate;\r\n\r\nenum Statuses {\r\n\tOk,\r\n\tError\r\n}\r\n\r\nexport class TableSecurity extends BaseControl {\r\n\tprivate _userGroupId: number;\r\n\tprivate _data: KnockoutObservable<TableSecurityViewModel>;\r\n\tprivate _status: KnockoutObservable<Statuses>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._data = ko.observable(null);\r\n\t\tthis._status = ko.observable(Statuses.Ok);\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis._userGroupId = value.SubjectRecordId;\r\n\t\tBlockUI.Block();\r\n\t\tTableSecurityStore.GetTableSecurityScreen(value.SubjectRecordId)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tthis._status(Statuses.Error);\r\n\t\t\t\t\tthis._errorMessage(result.ErrorMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet tableSecurityModel: TableSecurityModel = result.ResultObject;\r\n\t\t\t\tlet tableSecurityViewModel = new TableSecurityViewModel(tableSecurityModel);\r\n\r\n\t\t\t\tthis._data(tableSecurityViewModel);\r\n\r\n\t\t\t\t_.each(this._data().Rights, (right) => {\r\n\t\t\t\t\tlet countCheckedValues = 0;\r\n\t\t\t\t\t_.each(this._data().Tables, (table) => {\r\n\t\t\t\t\t\t_.each(table.Rights(), (rightItem) => {\r\n\t\t\t\t\t\t\tif (rightItem.IsChecked() && rightItem.TableGroupId === right.Id) {\r\n\t\t\t\t\t\t\t\tcountCheckedValues += 1;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif (countCheckedValues === this._data().Tables.length) {\r\n\t\t\t\t\t\t\tright.AllSelected(true);\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_.each(this._data().Tables, (table) => {\r\n\t\t\t\t\t_.each(table.Rights(), (right) => {\r\n\t\t\t\t\t\tright.IsChecked.subscribe((val) => {\r\n\t\t\t\t\t\t\tlet countCheckedValues = 0;\r\n\t\t\t\t\t\t\t_.each(this._data().Tables, (tableItem) => {\r\n\t\t\t\t\t\t\t\t_.each(tableItem.Rights(), (rightItem) => {\r\n\t\t\t\t\t\t\t\t\tif (right.TableGroupId === rightItem.TableGroupId && rightItem.IsChecked()) {\r\n\t\t\t\t\t\t\t\t\t\tcountCheckedValues += 1;\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\tif (countCheckedValues === this._data().Tables.length) {\r\n\t\t\t\t\t\t\t\t_.each(this._data().Rights, (tableGroup) => {\r\n\t\t\t\t\t\t\t\t\tif (tableGroup.Id === right.TableGroupId) {\r\n\t\t\t\t\t\t\t\t\t\ttableGroup.AllSelected(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\telse {\r\n\t\t\t\t\t\t\t\t_.each(this._data().Rights, (tableGroup) => {\r\n\t\t\t\t\t\t\t\t\tif (tableGroup.Id === right.TableGroupId) {\r\n\t\t\t\t\t\t\t\t\t\ttableGroup.AllSelected(false);\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\tthis._status(Statuses.Ok);\r\n\t\t\t}).always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tCheckAll(tableGroup: TableGroupViewModel) {\r\n\t\tthis.SelectAll(tableGroup);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tSelectAll(tableGroup: TableGroupViewModel) {\r\n\t\tlet tableChecking = !tableGroup.AllSelected();\r\n\t\t_.each(this._data().Tables, (table) => {\r\n\t\t\t_.each(table.Rights(), (rightItem) => {\r\n\t\t\t\tif (rightItem.TableGroupId === tableGroup.Id) {\r\n\t\t\t\t\trightItem.IsChecked(tableChecking);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tDeserialize(): TableSecuritySerializedModel {\r\n\t\tif (this._status() === Statuses.Error) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn new TableSecuritySerializedModel(this._userGroupId, this._data());\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport { TableSecurityModel, TableModel, RightModel, Rights, TalbeModel } from \"Core/Controls/TableSecurity/Models/TableSecurityModel\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class TableGroupViewModel {\r\n\tId: number;\r\n\tName: string;\r\n\tAllSelected: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(model: TalbeModel) {\r\n\t\tthis.Id = model.Id;\r\n\t\tthis.Name = model.Name;\r\n\t\tthis.AllSelected = ko.observable(false);\r\n\t}\r\n}\r\n\r\n\r\nexport class RightViewModel {\r\n\tTableGroupId: number;\r\n\tName: string;\r\n\tValue: number;\r\n\tIsChecked: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(right: RightModel) {\r\n\t\tthis.TableGroupId = right.Value;\r\n\t\tthis.Name = right.Name;\r\n\t\tthis.Value = right.Value;\r\n\t\tthis.IsChecked = ko.observable(right.IsChecked);\r\n\t}\r\n}\r\n\r\nexport class TableViewModel {\r\n\tId: number;\r\n\tName: string;\r\n\tRights: KnockoutObservableArray<RightViewModel>;\r\n\r\n\tconstructor(table: TableModel) {\r\n\t\tthis.Id = table.Id;\r\n\t\tthis.Name = table.Name;\r\n\t\tlet rights = table.Rights.map(right => new RightViewModel(right));\r\n\t\tthis.Rights = ko.observableArray(rights);\r\n\t}\r\n}\r\n\r\nexport class TableSecurityViewModel {\r\n\tRights: Array<TableGroupViewModel>;\r\n\tTables: Array<TableViewModel>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(model: TableSecurityModel) {\r\n\t\tthis.Rights = [this._labels.SHOW, this._labels.EDIT, this._labels.DELETE, this._labels.CREATE]\r\n\t\t\t.map((rightsTranslation) =>\r\n\t\t\t\tnew TableGroupViewModel({\r\n\t\t\t\t\tName: rightsTranslation,\r\n\t\t\t\t\tId: this.GetRightsValue(rightsTranslation)\r\n\t\t\t\t}));\r\n\t\tthis.Tables = model.Tables.map(table => new TableViewModel(table));\r\n\t}\r\n\r\n\tprivate GetRightsValue(rightsTranslation: string) {\r\n\t\tconst rightsValue = [\r\n\t\t\t{\r\n\t\t\t\tTranslation: this._labels.SHOW,\r\n\t\t\t\tValue: Rights.Show\r\n\t\t\t}, {\r\n\t\t\t\tTranslation: this._labels.EDIT,\r\n\t\t\t\tValue: Rights.Edit\r\n\t\t\t}, {\r\n\t\t\t\tTranslation: this._labels.DELETE,\r\n\t\t\t\tValue: Rights.Delete\r\n\t\t\t}, {\r\n\t\t\t\tTranslation: this._labels.CREATE,\r\n\t\t\t\tValue: Rights.Create\r\n\t\t\t}];\r\n\t\treturn _.find(rightsValue, rights => rights.Translation === rightsTranslation).Value\r\n\t}\r\n}","import {TableSecurityViewModel, RightViewModel} from \"Core/Controls/TableSecurity/Models/TableSecurityViewModel\";\r\n\r\nclass RightUnitModel {\r\n\tconstructor(\r\n\t\tpublic TableId: number,\r\n\t\tpublic RightsValue: number) { }\r\n}\r\n\r\nexport class TableSecuritySerializedModel {\r\n\tUserGroupId: number;\r\n\tRightUnits: Array<RightUnitModel>;\r\n\r\n\tconstructor(userGroupId: number, tableSecurityViewModel: TableSecurityViewModel) {\r\n\t\tthis.UserGroupId = userGroupId;\r\n\r\n\t\tthis.RightUnits = tableSecurityViewModel.Tables.map(table => {\r\n\t\t\tconst tableId = table.Id;\r\n\t\t\tlet rightsValue = 0;\r\n\r\n\t\t\ttable.Rights().forEach(right => rightsValue += right.IsChecked() ? right.Value : 0);\r\n\r\n\t\t\treturn new RightUnitModel(tableId, rightsValue);\r\n\t\t});\r\n\t}\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\n\r\ninterface ICheckRightsDto{\r\n\tTableId: number;\r\n\tSecurityWord: number;\r\n}\r\n\r\nexport class TableSecurityStore {\r\n\tstatic GetTableSecurityScreen(userGroupId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\t\tproxy: {\r\n\t\t\t\t\turl: '/api/TableSecurityApi/GetTableSecurityScreen',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\ttype: 'GET'\r\n\t\t\t\t},\r\n\t\t\t\tparams: { id: userGroupId }\r\n\t\t\t}).then(result => deferredResult.resolve(result));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic IsUserAllowedTo(request :ICheckRightsDto): P.Promise<boolean> {\r\n\t\tlet deferredResult = P.defer<boolean>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\t\tproxy: {\r\n\t\t\t\t\tcacheRequest: true,\r\n\t\t\t\t\turl: '/api/TableSecurityApi/IsUserAllowedTo',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\ttype: 'POST'\r\n\t\t\t\t},\r\n\t\t\t\tparams: request\r\n\t\t\t}).then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: result.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-hover dataTable table-security table-striped\\\"> <thead> <tr> <th></th> <!-- ko foreach: Rights --> <th class=\\\"security-th\\\"> <div data-type=\\\"security-scope-group\\\" class=\\\"\\\"> <input class=\\\"security-group-input\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: $data.AllSelected(), attr: { id: 'tableGroup' + $data.Id }, click: $parents[1].CheckAll.bind($parents[1], $data)\\\"> <label class=\\\"security-group-label\\\" data-bind=\\\"text: $data.Name, attr: { for: 'tableGroup' + $data.Id }, click: $parents[1].SelectAll.bind($parents[1], $data)\\\"></label> <!--<label data-bind=\\\"text: $data\\\"></label>--> </div> </th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: Tables --> <tr> <td data-bind=\\\"text: Name\\\"></td> <!-- ko foreach: Rights --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: IsChecked, value: Value\\\" type=\\\"checkbox\\\"/> </td> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","import {P} from \"Core/Common/Promise\";\r\nimport {Request} from \"Core/Common/Request\";\r\nimport {TypeSecurityModel} from \"Core/Controls/TypeSecurity/Models/TypeSecurityModel\";\r\n\r\nexport class TypeSecurityStore {\r\n static GetTypeSecurityData(userId: number): P.Promise<TypeSecurityModel> {\r\n let deferredResult = P.defer<TypeSecurityModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TypeSecurityApi/GetTypeSecurityScreen',\r\n type: \"GET\"\r\n },\r\n params: { userId: userId }\r\n })\r\n .then(result => deferredResult.resolve(result))\r\n .fail(error => deferredResult.reject(this.GetResponseError(error, 'Error getting type security')));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import {TableModel} from \"Core/Controls/TypeSecurity/Models/TableModel\";\r\nimport {TypeModel} from \"./TypeModel\";\r\n\r\nexport class TypeSecurityViewModel {\r\n TablesView: TableViewModel[]\r\n constructor(tables: TableModel[]) {\r\n this.TablesView = tables.map((table: TableModel)=> {\r\n let tableView = new TableViewModel();\r\n tableView.Id = table.Id;\r\n tableView.Name = table.Name;\r\n tableView.NameTranslation = table.NameTranslation;\r\n tableView.DisplayName = table.NameTranslation || table.Name;\r\n\r\n tableView.TypesView = table.Types.map((tableType: TypeModel)=> {\r\n let tableTypeView: TypeViewModel = new TypeViewModel();\r\n tableTypeView.Id = tableType.Id;\r\n tableTypeView.Name = tableType.Name;\r\n tableTypeView.NameTranslation = tableType.NameTranslation;\r\n tableTypeView.DisplayName = tableType.NameTranslation || tableType.Name;\r\n tableTypeView.IsSelected(tableType.IsSelected);\r\n\r\n return tableTypeView;\r\n });\r\n\r\n tableView.NotTypes = !table.Types.length;\r\n tableView.NotSelectedTypes = table.Types.length && !_.some(table.Types, (type: TypeModel)=> type.IsSelected);\r\n tableView.SelectedAll(!table.Types.length || tableView.NotSelectedTypes);\r\n\r\n return tableView;\r\n })\r\n }\r\n}\r\n\r\nexport class TableViewModel {\r\n Id: number;\r\n Name: string;\r\n NameTranslation: string;\r\n DisplayName: string;\r\n TypesView: Array<TypeViewModel>;\r\n NotSelectedTypes: boolean;\r\n NotTypes: boolean;\r\n SelectedAll: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n this.SelectedAll = ko.observable(null);\r\n }\r\n}\r\n\r\nexport class TypeViewModel {\r\n Id: number;\r\n Name: string;\r\n NameTranslation: string;\r\n DisplayName: string;\r\n IsSelected: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n this.IsSelected = ko.observable(null);\r\n }\r\n}","export class TypeSecuritySerializedModel {\r\n constructor(\r\n public UserId: number,\r\n public SelectedTypes: Array<number>) {\r\n }\r\n}","import * as ko from \"knockout\"\r\n\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\"\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {TypeSecurityStore} from \"Core/Controls/TypeSecurity/Stores/TypeSecurityStore\";\r\nimport {TypeSecurityModel} from \"Core/Controls/TypeSecurity/Models/TypeSecurityModel\";\r\n\r\nimport {\r\n TableViewModel,\r\n TypeSecurityViewModel,\r\n TypeViewModel\r\n} from \"Core/Controls/TypeSecurity/Models/TypeSecurityViewModel\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\nimport {TypeSecuritySerializedModel} from \"./Models/TypeSecuritySerializedModel\";\r\nimport {TypeModel} from \"./Models/TypeModel\";\r\n\r\nimport ViewTemplate from \"Core/Controls/TypeSecurity/Templates/View.html\"\r\nimport EditTemplate from \"Core/Controls/TypeSecurity/Templates/Edit.html\"\r\nimport ToolBarTemplate from \"Core/Controls/TypeSecurity/Templates/ToolBar.html\"\r\nimport DesignTemplate from \"Core/Controls/TypeSecurity/Templates/Design.html\"\r\nimport TypeSecurityDropdownTemplate from \"Core/Controls/TypeSecurity/Templates/TypeSecurityDropdownTemplate.html\";\r\n\r\nko.templates[\"Core/Controls/TypeSecurity/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/TypeSecurity/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/TypeSecurity/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/TypeSecurity/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class TypeSecurity extends BaseControl {\r\n private _userId: number;\r\n private _data: KnockoutObservable<TypeSecurityViewModel>;\r\n private _typeData: KnockoutObservable<TableViewModel>;\r\n private _selectedTypes: Array<number>;\r\n private _dropDown: JBoxDropDown;\r\n private _allText: string;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._data = ko.observable(null);\r\n this._typeData = ko.observable(null);\r\n this._selectedTypes = [];\r\n this._dropDown = null;\r\n this._allText = this._labels.ALL;\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n SetValue(value: IControlValue): void {\r\n this._userId = value.SubjectRecordId;\r\n\r\n BlockUI.Block();\r\n TypeSecurityStore.GetTypeSecurityData(value.SubjectRecordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((result: TypeSecurityModel) => {\r\n let typeSecurityViewModel: TypeSecurityViewModel = new TypeSecurityViewModel(result.Tables);\r\n\r\n _.each(typeSecurityViewModel.TablesView, (table: TableViewModel)=> {\r\n _.each(table.TypesView, (typeView: TypeViewModel)=> {\r\n if (typeView.IsSelected()){\r\n this._selectedTypes.push(typeView.Id);\r\n table.SelectedAll(false);\r\n }\r\n })\r\n })\r\n this._data(typeSecurityViewModel);\r\n });\r\n }\r\n\r\n RemoveTypeItem(tablesView:TypeSecurityViewModel, typeItem:TypeViewModel) {\r\n let tableView = _.find(tablesView.TablesView, (table: TableViewModel)=> {\r\n return _.find(table.TypesView, (type)=>{\r\n return type.Id === typeItem.Id;\r\n })\r\n })\r\n\r\n typeItem.IsSelected(false);\r\n this._selectedTypes.splice(this._selectedTypes.indexOf(typeItem.Id), 1);\r\n\r\n tableView.SelectedAll(!_.some(tableView.TypesView, (type: TypeViewModel)=> type.IsSelected()));\r\n }\r\n SelectTypeItem(tableView:TableViewModel, typeItem:TypeViewModel): void {\r\n typeItem.IsSelected(true);\r\n this._selectedTypes.push(typeItem.Id);\r\n tableView.SelectedAll(false);\r\n }\r\n\r\n ShowTypeSecurityDropDown(tableView: TableViewModel, evt: MouseEvent){\r\n const target: any = evt.currentTarget;\r\n this._typeData(tableView);\r\n\r\n if (!this._dropDown) {\r\n this._dropDown = new JBoxDropDown({\r\n bindComponent: this,\r\n target: target,\r\n otherOptions: {\r\n addClass: \"multi-select-dropdown\",\r\n attach: undefined,\r\n pointer: \"\",\r\n isolateScroll: true,\r\n content: TypeSecurityDropdownTemplate as any,\r\n position: {\r\n x: \"right\",\r\n y: \"bottom\"\r\n },\r\n height: 'auto',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n onCloseComplete: () => {\r\n this._dropDown.Destroy()\r\n this._dropDown = null;\r\n },\r\n maxHeight: 200\r\n },\r\n bindTarget: target,\r\n bindOnCreate: true\r\n });\r\n }\r\n\r\n this._dropDown.Toggle();\r\n }\r\n\r\n Deserialize(): TypeSecuritySerializedModel {\r\n return new TypeSecuritySerializedModel(this._userId, this._selectedTypes);\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>): void {\r\n super.AfterRender(el);\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container type-security-control\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-striped table-hover table-type-security\\\"> <thead> <tr> <th><!-- ko text: '' --><!-- /ko --></th> <th class=\\\"security-rights-th\\\" data-bind=\\\"text: 'Types'\\\"></th> </tr> </thead> <tbody> <!-- ko foreach: TablesView --> <tr> <td data-bind=\\\"text: DisplayName\\\"></td> <td class=\\\"security-rights-td type-security-td\\\"> <!-- ko if: NotTypes --> <span class=\\\"all-name\\\" data-bind=\\\"text: $parents[1]._allText\\\"></span> <!-- /ko --> <!-- ko if: !NotTypes --> <div class=\\\"type-security--multi-select\\\"> <div class=\\\"type-security--multi-options-list\\\"> <!-- ko foreach: TypesView --> <!-- ko if: IsSelected() --> <span class=\\\"multi-option-item type-security--multi-select_item\\\"> <span class=\\\"type-security--multi-select_remove-btn\\\" data-bind=\\\"click: $parents[2].RemoveTypeItem.bind($parents[2], $parents[1])\\\"> <i class=\\\"fa fa-times-circle\\\" aria-hidden=\\\"true\\\"></i> </span> <span class=\\\"type-security--multi-select_name\\\" data-bind=\\\"text: DisplayName\\\"></span> </span> <!-- /ko --> <!-- /ko --> <!-- ko if: SelectedAll() --> <span class=\\\"all-text\\\" data-bind=\\\"text: $parents[1]._allText\\\"></span> <!-- /ko --> </div> <span class=\\\"btn default dropdown-search-icon type-security--multi-select_show-drop-down-btn\\\" data-bind=\\\"click: $parents[1].ShowTypeSecurityDropDown.bind($parents[1])\\\"> <i class=\\\"fa fa-caret-down\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> </td> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-striped table-hover table-type-security\\\"> <thead> <tr> <th><!-- ko text: '' --><!-- /ko --></th> <th class=\\\"security-rights-th\\\" data-bind=\\\"text: 'Types'\\\"></th> </tr> </thead> <tbody> <!-- ko foreach: TablesView --> <tr> <td data-bind=\\\"text: DisplayName\\\"></td> <td class=\\\"security-rights-td type-security-td\\\"> <!-- ko if: SelectedAll() --> <span class=\\\"all-name\\\" data-bind=\\\"text: $parents[1]._allText\\\"></span> <!-- /ko --> <!-- ko if: !SelectedAll() --> <!-- ko foreach: TypesView --> <!-- ko if: IsSelected() --> <span class=\\\"type-security-td__selected-name\\\" data-bind=\\\"text: DisplayName\\\"></span> <!-- /ko --> <!-- /ko --> <!-- /ko --> </td> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _typeData --> <!-- ko foreach: TypesView --> <div class=\\\"multi-select-item\\\" data-bind=\\\"css: {active: IsSelected(), disabled: IsSelected() }\\\"> <a data-bind=\\\"text: DisplayName, click: $parents[1].SelectTypeItem.bind($parents[1], $parent)\\\" href=\\\"javascript:;\\\"> </a> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"clearfix\\\"> <div class=\\\"form-group pull-right\\\"> <label><!-- ko text: $parent._labels.PRIMARY_GROUP --><!-- /ko --></label> <select class=\\\"form-control input-medium inline-block\\\" disabled=\\\"disabled\\\" data-bind=\\\"options: UserGroupSelector.UserGroups, optionsText: 'Name', value: UserGroupSelector.CurrentUserGroup\\\"></select> </div> </div> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent),\\r\\n\\t\\t\\t\\tsyncScroll: {topScroll: '.scroll-header-wrap', bottomScroll: '.scroll-body-wrap'}\\\"> <div class=\\\"sys-table clearfix\\\"> <div class=\\\"sys-table-header clearfix\\\"> <div class=\\\"table-name-column\\\"></div> <div class=\\\"scroll-header-wrap header-wrap clearfix\\\"> <div class=\\\"scroll-header\\\"> <!-- ko foreach: UserGroups --> <div class=\\\"table-name-column\\\"> <!-- ko if: $parents[1].GetIsVisibleReservationToggler($data) --> <!-- ko ifnot: IsReservationBanned --> <!-- ko ifnot: IsReserved --> <i class=\\\"fa fa-unlock transition\\\"></i> <!-- /ko --> <!-- ko if: IsReserved --> <i class=\\\"fa fa-lock transition\\\" data-bind=\\\"tooltip: { content: $parents[1]._labels.GROUP_IS_LOCKED }\\\"></i> <!-- /ko --> <!-- /ko --> <!-- ko if: IsReservationBanned --> <i data-bind=\\\"tooltip: { content: $parents[1].GetBanTitle($data) }\\\" class=\\\"fa fa-ban transition\\\"></i> <!-- /ko --> <!-- /ko --> <!-- ko text: TranslationGroupName --><!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <div class=\\\"sys-table-body clearfix\\\"> <div class=\\\"table-title\\\"> <!-- ko foreach: Tables --> <div data-bind=\\\"text: Name\\\" class=\\\"table-title-text\\\"></div> <!-- /ko --> </div> <div data-bind=\\\"customTable: {}\\\" class=\\\"table-body scroll-body-wrap\\\"> <!-- ko foreach: Tables --> <div class=\\\"sys-table-line clearfix\\\"> <!-- ko foreach: Rights --> <div class=\\\"body-column\\\"> <select data-bind=\\\"options: Options, optionsText: 'Translation', value: SelectedOption\\\" class=\\\"form-control input-medium\\\" disabled=\\\"disabled\\\"></select> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport {\r\n RecordSecurityModel,\r\n UserGroupModel,\r\n RecordRightsModel,\r\n TableModel,\r\n RightUnitModel\r\n} from \"Core/Controls/RecordSecurity/Models/RecordSecurityModel\";\r\nimport {RecordSecurityRights} from \"Core/Common/Enums/RecordSecurityRights\";\r\nimport {LABELS} from \"../../../Components/Translation/Locales\";\r\n\r\nexport class UserGroupViewModel extends Event {\r\n Id: number;\r\n Name: string;\r\n ProfileReservationId: KnockoutObservable<number>;\r\n Options: Array<RecordRightsViewModel>;\r\n SelectedOption: KnockoutObservable<RecordRightsViewModel>;\r\n\r\n IsReserved: KnockoutComputed<boolean>;\r\n\r\n IsReservationBanned: boolean;\r\n\r\n UsesInGroups: Array<string>;\r\n\r\n constructor(profileId: number, model: UserGroupModel, options: Array<RecordRightsViewModel>, activeOption: RecordRightsViewModel) {\r\n super();\r\n\r\n this.Id = model.Id;\r\n this.Name = !!model.Name && model.Name.trim().length > 0 ? model.Name : '(no name)';\r\n this.Options = options;\r\n this.ProfileReservationId = ko.observable(model.ProfileReservationId);\r\n this.SelectedOption = ko.observable(activeOption);\r\n this.IsReserved = ko.computed(()=>{\r\n return this.ProfileReservationId() == profileId;\r\n });\r\n\r\n this.IsReservationBanned = model.UsesInGroups.length > 0;\r\n this.UsesInGroups = model.UsesInGroups;\r\n }\r\n\r\n //Translation for UserGroups\r\n get TranslationGroupName() {\r\n if (this.Id === 0) {\r\n return LABELS.OWNER_LABEL;\r\n }\r\n return this.Name;\r\n }\r\n\r\n private BlockCaption(option, item) {\r\n const index = this.Options.indexOf(item);\r\n ko.applyBindingsToNode(option, {disable: index === 0}, item);\r\n }\r\n}\r\n\r\nclass RecordRightsViewModel {\r\n constructor(public Name: string, public Value: number) {\r\n }\r\n}\r\n\r\nclass RightUnitViewModel extends Event {\r\n UserGroupId: number;\r\n Value: number;\r\n\r\n Options: Array<RecordRightsViewModel>;\r\n SelectedOption: KnockoutObservable<RecordRightsViewModel>;\r\n\r\n constructor(model: RightUnitModel, options: Array<RecordRightsViewModel>) {\r\n super();\r\n\r\n this.UserGroupId = model.UserGroupId;\r\n this.Value = model.Value;\r\n\r\n this.Options = options;\r\n\r\n let optionsReversed = options.slice().reverse();\r\n\r\n this.SelectedOption = ko.observable(_.find(optionsReversed, option => (option.Value & model.Value) === option.Value));\r\n this.SelectedOption.subscribe(newRights => this.Trigger('RightsChanged', {\r\n UserGroupId: this.UserGroupId,\r\n Value: newRights.Value\r\n }));\r\n }\r\n}\r\n\r\nclass TableViewModel extends Event {\r\n Id: number;\r\n Name: string;\r\n Rights: KnockoutObservableArray<RightUnitViewModel>;\r\n\r\n constructor(model: TableModel, rightOptions: Array<RecordRightsViewModel>) {\r\n super();\r\n\r\n this.Id = model.Id;\r\n this.Name = model.Name;\r\n\r\n let rights = model.Rights.map(right => {\r\n const rightUnit = new RightUnitViewModel(right, rightOptions);\r\n rightUnit.On('RightsChanged', this, eventArgs => this.Trigger('RightsChanged', eventArgs.data));\r\n return rightUnit;\r\n });\r\n\r\n this.Rights = ko.observableArray(rights);\r\n }\r\n}\r\n\r\nclass UserGroupSelectorItemViewModel {\r\n constructor(public Id: number, public Name: string) {\r\n }\r\n}\r\n\r\nclass UserGroupSelectorViewModel {\r\n UserGroups: KnockoutObservableArray<UserGroupSelectorItemViewModel>;\r\n CurrentUserGroup: KnockoutObservable<UserGroupSelectorItemViewModel>;\r\n\r\n constructor(currentGroupId: number, userGroups: UserGroupModel[], tables: TableModel[]) {\r\n const groups = [new UserGroupSelectorItemViewModel(null, LABELS.SELECT_GROUP)];\r\n\r\n for (const table of tables) {\r\n const tableUserGroups = table.Rights\r\n .filter(rights => rights.UserGroupId > 0 && rights.Value > RecordSecurityRights.Instance.NoAccess.Value)\r\n .map(rights => rights.UserGroupId);\r\n\r\n for (const tableUserGroup of tableUserGroups) {\r\n const userGroupAdded = _.any(groups, userGroup => userGroup.Id === tableUserGroup);\r\n\r\n if (!userGroupAdded) {\r\n const userGroup = _.find(userGroups, userGroup => userGroup.Id === tableUserGroup);\r\n groups.push(new UserGroupSelectorItemViewModel(userGroup.Id, userGroup.Name));\r\n }\r\n }\r\n\r\n if (groups.length == userGroups.length) {\r\n break;\r\n }\r\n }\r\n\r\n this.UserGroups = ko.observableArray(groups);\r\n\r\n let currentGroupItem = _.find(groups, group => group.Id == currentGroupId)\r\n if (currentGroupItem) {\r\n this.CurrentUserGroup = ko.observable(currentGroupItem);\r\n return;\r\n }\r\n\r\n const currentGroup = _.find(userGroups, group => group.Id === currentGroupId);\r\n if (currentGroup) {\r\n currentGroupItem = new UserGroupSelectorItemViewModel(currentGroup.Id, currentGroup.Name);\r\n this.CurrentUserGroup = ko.observable(currentGroupItem);\r\n return;\r\n }\r\n\r\n this.CurrentUserGroup = ko.observable(groups[0]);\r\n }\r\n}\r\n\r\nexport class RecordSecurityViewModel {\r\n UserGroups: Array<UserGroupViewModel>;\r\n UserGroupSelector: UserGroupSelectorViewModel;\r\n\r\n Rights: Array<RecordRightsViewModel>;\r\n Tables: Array<TableViewModel>;\r\n\r\n constructor(profileId: number, model: RecordSecurityModel) {\r\n this.Rights = RecordSecurityRights.Instance.GetAll();\r\n this.Tables = model.Tables.map(table => {\r\n const tableView = new TableViewModel(table, this.Rights.slice(1));\r\n tableView.On('RightsChanged', this, eventArgs => {\r\n this.UpdateCurrentGroup(eventArgs.data);\r\n this.UpdateGeneralRightsSelector(eventArgs.data);\r\n });\r\n return tableView;\r\n });\r\n this.UserGroups = this.GetUserGroups(model, profileId);\r\n this.UserGroupSelector = new UserGroupSelectorViewModel(model.CurrentUserGroup, model.UserGroups, model.Tables);\r\n }\r\n\r\n private GetUserGroups(model, profileId: number) {\r\n return model.UserGroups.map(userGroup => {\r\n let activeGeneralOption = this.Rights[0];\r\n const rights = _.flatten(this.Tables.map(table => _.filter(table.Rights(), right => right.UserGroupId === userGroup.Id)));\r\n const rightsValues = _.map(rights, right => right.Value);\r\n const ifAllAreSame = () => {\r\n return (rightsValues[0] < 512)\r\n ? _.every(rightsValues, value => value === rightsValues[0] || value - 512 === rightsValues[0])\r\n : _.every(rightsValues, value => value === rightsValues[0] || value + 512 === rightsValues[0])\r\n };\r\n const allRightsAreSame = rightsValues.length > 0\r\n ? ifAllAreSame()\r\n : false;\r\n\r\n const checkValue = (right) => {\r\n return (rightsValues[0] < 512) ?\r\n right.Value - 512 === rightsValues[0]\r\n : right.Value + 512 === rightsValues[0]\r\n };\r\n\r\n if (allRightsAreSame) {\r\n activeGeneralOption = _.find(this.Rights, right => right.Value === rightsValues[0] || checkValue(right));\r\n }\r\n\r\n return new UserGroupViewModel(profileId, userGroup, this.Rights, activeGeneralOption);\r\n });\r\n }\r\n\r\n private UpdateGeneralRightsSelector(rights) {\r\n const userGroup = _.find(this.UserGroups, userGroup => userGroup.Id === rights.UserGroupId);\r\n\r\n const groupRights = _.flatten(_.map(this.Tables, table => _.filter(table.Rights(), right => right.UserGroupId === rights.UserGroupId)));\r\n const allRightsAreSame = _.every(groupRights, groupRight => groupRight.SelectedOption().Value == rights.Value);\r\n\r\n const rightsOptions = allRightsAreSame ? _.find(userGroup.Options, option => option.Value == rights.Value) : userGroup.Options[0];\r\n userGroup.SelectedOption(rightsOptions);\r\n }\r\n\r\n private UpdateCurrentGroup(rights) {\r\n const groupIndex = _.findIndex(this.UserGroupSelector.UserGroups(), userGroup => userGroup.Id === rights.UserGroupId);\r\n const userGroup = _.find(this.UserGroups, userGroup => userGroup.Id === rights.UserGroupId);\r\n const groupHasAnyRights = this.UserGroupHasAnyRights(rights.UserGroupId);\r\n\r\n if (rights.UserGroupId === 0) {\r\n return;\r\n }\r\n\r\n //Remove userGroup from dropdown if it does not have any rights\r\n if (groupIndex > -1 && !groupHasAnyRights) {\r\n this.UserGroupSelector.UserGroups.splice(groupIndex, 1);\r\n return;\r\n }\r\n\r\n //Add group to dropdown if it received first rights\r\n if (groupIndex == -1 && rights.Value > RecordSecurityRights.Instance.NoAccess.Value) {\r\n this.UserGroupSelector.UserGroups.push(new UserGroupSelectorItemViewModel(userGroup.Id, userGroup.Name));\r\n return;\r\n }\r\n }\r\n\r\n private UserGroupHasAnyRights(userGroupId: number) {\r\n const groupHasTableRights = (userGroupId: number, right: RightUnitViewModel) => {\r\n return right.UserGroupId === userGroupId && right.SelectedOption().Value > RecordSecurityRights.Instance.NoAccess.Value;\r\n };\r\n\r\n return _.any(this.Tables, table => _.any(table.Rights(), right => groupHasTableRights(userGroupId, right)));\r\n }\r\n}","import {RecordSecurityViewModel} from \"Core/Controls/RecordSecurity/Models/RecordSecurityViewModel\";\r\n\r\nclass RightUnitModel {\r\n\tconstructor(\r\n\t\tpublic UserGroupId: number,\r\n\t\tpublic TableId: number,\r\n\t\tpublic RightsValue: number) { }\r\n}\r\n\r\nexport class RecordSecuritySerializedModel {\r\n\tSecurityProfileId: number;\r\n\tRightUnits: Array<RightUnitModel>;\r\n\tCurrentUserGroup: number;\r\n\r\n\tProfileReservationGroups: Array<number>;\r\n\tProfileUnReservationGroups: Array<number>;\r\n\r\n\tconstructor(securityProfileId: number, recordSecurityViewModel: RecordSecurityViewModel) {\r\n\t\tthis.SecurityProfileId = securityProfileId;\r\n\t\tthis.CurrentUserGroup = recordSecurityViewModel.UserGroupSelector.CurrentUserGroup().Id;\r\n\t\tthis.RightUnits = [];\r\n\t\tthis.ProfileReservationGroups = _.map(_.filter(recordSecurityViewModel.UserGroups, (userGroup) => userGroup.ProfileReservationId() > 0), (group) => group.Id);\r\n\t\tthis.ProfileUnReservationGroups = _.map(_.filter(recordSecurityViewModel.UserGroups, (userGroup) => userGroup.ProfileReservationId() == 0 || userGroup.ProfileReservationId() == null), (group) => group.Id);\r\n\r\n\t\trecordSecurityViewModel.Tables.forEach(table => {\r\n\t\t\tlet tableRights = table.Rights().map(right => new RightUnitModel(right.UserGroupId, table.Id, right.SelectedOption().Value));\r\n\t\t\tthis.RightUnits = this.RightUnits.concat(tableRights);\r\n\t\t});\r\n\t}\r\n}","import * as ko from \"knockout\"\r\n\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\"\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\"\r\nimport {IControlParam} from \"Core/Screens/IScreen\"\r\n\r\nimport ViewTemplate from \"Core/Controls/RecordSecurity/Templates/View.html\"\r\nimport EditTemplate from \"Core/Controls/RecordSecurity/Templates/Edit.html\"\r\nimport ToolBarTemplate from \"Core/Controls/RecordSecurity/Templates/ToolBar.html\"\r\nimport DesignTemplate from \"Core/Controls/RecordSecurity/Templates/Design.html\"\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\n\r\nimport {RecordSecurityModel} from \"Core/Controls/RecordSecurity/Models/RecordSecurityModel\"\r\nimport {RecordSecurityViewModel, UserGroupViewModel} from \"Core/Controls/RecordSecurity/Models/RecordSecurityViewModel\"\r\nimport {RecordSecuritySerializedModel} from \"Core/Controls/RecordSecurity/Models/RecordSecuritySerializedModel\"\r\nimport {RecordSecurityStore} from \"Core/Controls/RecordSecurity/Stores/RecordSecurityStore\";\r\nimport { UserManager, UserRoles } from \"../../../User/UserManager\"\r\n\r\nko.templates[\"Core/Controls/RecordSecurity/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/RecordSecurity/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/RecordSecurity/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/RecordSecurity/Templates/Design\"] = DesignTemplate;\r\n\r\nenum Statuses {\r\n Ok,\r\n Error\r\n}\r\n\r\nexport class RecordSecurity extends BaseControl {\r\n private _profileId: number;\r\n private _data: KnockoutObservable<RecordSecurityViewModel>;\r\n private _status: KnockoutObservable<Statuses>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this.Init();\r\n }\r\n\r\n private Init(): void {\r\n this._data = ko.observable(null);\r\n this._status = ko.observable(Statuses.Ok);\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n SetValue(value: IControlValue): void {\r\n this._profileId = value.SubjectRecordId;\r\n BlockUI.Block();\r\n RecordSecurityStore.GetRecordSecurityScreen(value.SubjectRecordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n this._status(Statuses.Error);\r\n this._errorMessage(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n let recordSecurityModel: RecordSecurityModel = result.ResultObject;\r\n let recordSecurityViewModel = new RecordSecurityViewModel(this.Screen.GetRecordId(), recordSecurityModel);\r\n\r\n this._data(recordSecurityViewModel);\r\n\r\n this._data().UserGroups.map((userGroup) => {\r\n userGroup.SelectedOption.subscribe((option) => {\r\n if (userGroup.Options.indexOf(option) == 0) {\r\n return;\r\n }\r\n\r\n const allRightsAreSetAlready = _.every(this._data().Tables, table => {\r\n const selectedRight = _.findWhere(table.Rights(), {UserGroupId: userGroup.Id});\r\n return selectedRight.SelectedOption().Value == option.Value;\r\n });\r\n\r\n if (allRightsAreSetAlready) {\r\n return;\r\n }\r\n\r\n this._data().Tables.map((tableITem) => {\r\n const selectedRight = _.findWhere(tableITem.Rights(), {UserGroupId: userGroup.Id});\r\n selectedRight && selectedRight.SelectedOption(option);\r\n });\r\n\r\n });\r\n });\r\n\r\n this._status(Statuses.Ok);\r\n });\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>): void {\r\n super.AfterRender(el);\r\n }\r\n\r\n Deserialize(): RecordSecuritySerializedModel {\r\n if (this._status() === Statuses.Error) {\r\n return null;\r\n }\r\n\r\n return new RecordSecuritySerializedModel(this._profileId, this._data());\r\n }\r\n\r\n Reset() {\r\n\r\n }\r\n\r\n async Reserve(userGroup: UserGroupViewModel){\r\n if(!this.IsEditScreen){\r\n return;\r\n }\r\n if(this.IsConsultScreen){\r\n await RecordSecurityStore.ReserveGroup(this.Screen.GetRecordId(), userGroup.Id);\r\n }\r\n userGroup.ProfileReservationId(this.Screen.GetRecordId());\r\n }\r\n\r\n async UnReserve(userGroup: UserGroupViewModel){\r\n if(!this.IsEditScreen){\r\n return;\r\n }\r\n if(this.IsConsultScreen){\r\n await RecordSecurityStore.ReserveGroup(null, userGroup.Id);\r\n }\r\n userGroup.ProfileReservationId(null);\r\n }\r\n\r\n GetIsVisibleReservationToggler(userGroup: UserGroupViewModel){ \r\n return this.Screen.GetTableTypeName() === 'Profile' && userGroup.Name != 'Owner'\r\n &&\r\n UserManager.Instance.IsUserInRole(UserRoles.SuperUser)\r\n }\r\n\r\n GetBanTitle(userGroup: UserGroupViewModel){\r\n return this._labels.USED_IN_PROFILES.replace('{Profiles}', userGroup.UsesInGroups.join(', '));\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"clearfix\\\"> <div class=\\\"form-group pull-right\\\"> <label><!-- ko text: $parent._labels.PRIMARY_GROUP--><!-- /ko --></label> <select class=\\\"form-control input-medium inline-block\\\" data-bind=\\\"options: UserGroupSelector.UserGroups, optionsText: 'Name', value: UserGroupSelector.CurrentUserGroup\\\"></select> </div> </div> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tsyncScroll: {topScroll: '.scroll-header-wrap', bottomScroll: '.scroll-body-wrap'}\\\"> <div class=\\\"sys-table clearfix\\\"> <div class=\\\"sys-table-header clearfix scrollbar-padding\\\"> <div class=\\\"table-name-column\\\"></div> <div class=\\\"scroll-header-wrap header-wrap record-security-header clearfix\\\"> <div class=\\\"scroll-header\\\"> <!-- ko foreach: UserGroups --> <div class=\\\"table-name-column\\\"> <span> <!-- ko if: $parents[1].GetIsVisibleReservationToggler($data) --> <!-- ko ifnot: IsReservationBanned --> <!-- ko ifnot: IsReserved --> <a title=\\\"\\\" href=\\\"javascript:;\\\" data-bind=\\\"click: $parents[1].Reserve.bind($parents[1], $data), attr: { title: $parents[1]._labels.CLICK_TO_LOCK_GROUP}\\\"><i class=\\\"fa fa-unlock transition\\\"></i></a> <!-- /ko --> <!-- ko if: IsReserved --> <a title=\\\"\\\" href=\\\"javascript:;\\\" data-bind=\\\"click: $parents[1].UnReserve.bind($parents[1], $data), attr: { title: $parents[1]._labels.GROUP_IS_LOCKED}\\\"><i class=\\\"fa fa-lock transition\\\"></i></a> <!-- /ko --> <!-- /ko --> <!-- ko if: IsReservationBanned --> <i data-bind=\\\"attr: { title: $parents[1].GetBanTitle($data)}\\\" class=\\\"fa fa-ban transition\\\"></i> <!-- /ko --> <!-- /ko --> <!-- ko text: TranslationGroupName --><!-- /ko --> </span> <div class=\\\"body-column\\\"> <select style=\\\"width:180px\\\" data-bind=\\\"options: Options, optionsText: 'Translation', value: SelectedOption, optionsAfterRender: $data.BlockCaption.bind($data)\\\" class=\\\"form-control input-medium\\\"> </select> </div> </div> <!-- /ko --> </div> </div> </div> <div data-bind=\\\"scrollFixer: {}\\\" class=\\\"sys-table-body clearfix\\\"> <div class=\\\"table-title\\\"> <!-- ko foreach: Tables --> <div data-bind=\\\"text: Name\\\" class=\\\"table-title-text\\\"></div> <!-- /ko --> </div> <div data-bind=\\\"customTable: {}\\\" class=\\\"scroll-body-wrap table-body\\\"> <!-- ko foreach: Tables --> <div class=\\\"sys-table-line clearfix\\\"> <!-- ko foreach: Rights --> <div class=\\\"body-column\\\"> <select data-bind=\\\"options: Options, optionsText: 'Translation', value: SelectedOption\\\" class=\\\"form-control input-medium\\\"></select> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\"\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\"\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\"\r\nimport {IControlParam} from \"Core/Screens/IScreen\"\r\n\r\nimport ViewTemplate from \"Core/Controls/LifestatusDesigner/Templates/View.html\"\r\nimport ToolBarTemplate from \"Core/Controls/LifestatusDesigner/Templates/ToolBar.html\"\r\nimport DesignTemplate from \"Core/Controls/LifestatusDesigner/Templates/Design.html\"\r\n\r\nko.templates[\"Core/Controls/LifestatusDesigner/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/LifestatusDesigner/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/LifestatusDesigner/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/LifestatusDesigner/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class LifestatusDesigner extends BaseControl {\r\n\tprivate _value: KnockoutObservable<string>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._value = ko.observable(\"\");\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.Data) {\r\n\t\t\tthis._value(value.Data.Value);\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-exchange\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"LifestatusDesigner\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport ViewTemplate from \"Core/Controls/DatabaseDesigner/Templates/View.html\";\r\nko.templates[\"Core/Controls/DatabaseDesigner/Templates/View\"] = ViewTemplate;\r\n\r\nimport ToolBarTemplate from \"Core/Controls/DatabaseDesigner/Templates/ToolBar.html\";\r\nko.templates[\"Core/Controls/DatabaseDesigner/Templates/ToolBar\"] = ToolBarTemplate;\r\n\r\nexport class DatabaseDesigner extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-database\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","export enum MailFolder {\r\n\tInbox,\r\n\tSent,\r\n\tDraft,\r\n\tCyberBox\r\n}","import * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\n\r\nimport {Detail} from 'Core/Controls/Mail/Detail';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {MailStore, IMailListModelRequestModel} from 'Core/Controls/Mail/Stores/MailStore';\r\nimport {MailItemModel} from 'Core/Controls/Mail/Models/MailItemModel';\r\nimport {MailFolder} from 'Core/Controls/Mail/Enums/MailFolder';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {MAIL_LIST_EVENTS} from 'Core/Controls/Mail/Events';\r\nimport {NOTIFICATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport MailListTemplate from 'Core/Controls/Mail/Templates/MailListTemplate.html';\r\n\r\nexport class MailList extends Event {\r\n\tprivate _selectAll: KnockoutObservable<boolean>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _mailItems: KnockoutObservableArray<MailItemModel>;\r\n\tprivate _detailView: KnockoutObservable<Detail>;\r\n\tprivate _mailFolder: MailFolder;\r\n\tprivate _mailConnectionId: number;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(mailItems: Array<MailItemModel>, mailFolder: MailFolder, mailConnectionId) {\r\n\t\tsuper();\r\n\r\n\t\tthis._selectAll = ko.observable(false);\r\n\t\tthis._mailFolder = mailFolder;\r\n\t\tthis._mailItems = ko.observableArray(mailItems);\r\n\t\tthis.FormatDateCreated(this._mailItems());\r\n\t\tthis._detailView = ko.observable(null);\r\n\t\tthis._mailConnectionId = mailConnectionId;\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tInit() {\r\n\t\tthis.AddEvent(MAIL_LIST_EVENTS.SAVE_TO_CYBER_BOX);\r\n\t\tthis.AddEvent(MAIL_LIST_EVENTS.LOAD_DATA);\r\n\r\n\t\tthis._mailItems().forEach(item => item.IsReadObservable(item.IsRead));\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn MailListTemplate;\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\treturn MailFolder[this._mailFolder];\r\n\t}\r\n\r\n\tSelectAll() {\r\n\t\tthis._mailItems().forEach(item => item.IsSelected(this._selectAll()));\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tMarkAsReadByGuid(guid: string): void {\r\n\t\tconst requestModel = {\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tGuids: [guid],\r\n\t\t\tIsCyberBox: false\r\n\t\t};\r\n\r\n\t\tMailStore.MarkAsRead(requestModel)\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis._mailItems().forEach(item => {\r\n\t\t\t\t\tif (item.Guid === guid) {\r\n\t\t\t\t\t\titem.IsReadObservable(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tMarkAsRead() {\r\n\t\tconst requestModel = this.GetActionModel();\r\n\r\n\t\tif (requestModel) {\r\n\t\t\tBlockUI.Block();\r\n\r\n\t\t\tMailStore.MarkAsRead(requestModel)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock(this._el);\r\n\t\t\t\t})\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tthis.Trigger(MAIL_LIST_EVENTS.LOAD_DATA);\r\n\r\n\t\t\t\t\tnew Notifier().Success(NOTIFICATIONS.MARKED_AS_READ);\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tMarkAsUnRead() {\r\n\t\tconst requestModel = this.GetActionModel();\r\n\r\n\t\tif (requestModel) {\r\n\t\t\tBlockUI.Block();\r\n\t\t\tMailStore.MarkAsUnRead(requestModel)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock(this._el);\r\n\t\t\t\t})\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tthis.Trigger(MAIL_LIST_EVENTS.LOAD_DATA);\r\n\r\n\t\t\t\t\tnew Notifier().Success(NOTIFICATIONS.MARKED_AS_UNREAD);\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate FormatDateCreated(mailitems: MailItemModel[]): void {\r\n\t\tconst dateNow: moment.Moment = moment();\r\n\r\n\t\tmailitems.forEach((item) => {\r\n\t\t\tconst date: moment.Moment = moment(item.DateTimeCreated);\r\n\t\t\tlet formattedDate: string;\r\n\r\n\t\t\tconst isToday: boolean = dateNow.format('L') === date.format('L');\r\n\r\n\t\t\tif (isToday) {\r\n\t\t\t\tformattedDate = date.format('LT');\r\n\t\t\t} else {\r\n\t\t\t\tconst isThisYear: boolean = dateNow.format('YYYY') === date.format('YYYY');\r\n\r\n\t\t\t\tif (!isThisYear) {\r\n\t\t\t\t\tformattedDate = date.format('L');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst _date: string = date.format('ll');\r\n\t\t\t\t\tconst yearSeparatorIndex: number = _date.indexOf(' ', 5);\r\n\r\n\t\t\t\t\tformattedDate = _date.slice(0, yearSeparatorIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\titem.DateTimeCreated = formattedDate;\r\n\t\t});\r\n\t}\r\n\r\n\tDelete() {\r\n\t\tconst requestModel = this.GetActionModel();\r\n\r\n\t\tif (requestModel) {\r\n\t\t\tBlockUI.Block();\r\n\r\n\t\t\tMailStore.DeleteMails(requestModel)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock(this._el);\r\n\t\t\t\t})\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tnew Notifier().Success(NOTIFICATIONS.RECORD_REMOVED);\r\n\r\n\t\t\t\t\t_.each(requestModel.Guids,\r\n\t\t\t\t\t\t(guid) => {\r\n\t\t\t\t\t\t\tconst deleteItem = _.find(this._mailItems(), (item) => item.Guid === guid);\r\n\r\n\t\t\t\t\t\t\tif (deleteItem) {\r\n\t\t\t\t\t\t\t\tthis._mailItems.splice(this._mailItems.indexOf(deleteItem), 1);\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\tthis.Trigger('LOAD_DATA', 'delete');\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tGetActionModel(): IMailListModelRequestModel {\r\n\t\tconst items = <any>this._mailItems();\r\n\t\tlet guids;\r\n\r\n\t\tconst selectedItems = _.filter(items, (mailItem: MailItemModel) => mailItem.IsSelected());\r\n\r\n\t\tif (selectedItems.length === 0) {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.PLEASE_SELECT_ANY_EMAIL);\r\n\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\tguids = selectedItems.map(item => item.Guid);\r\n\t\t}\r\n\r\n\t\tconst requestModel: IMailListModelRequestModel = {\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tGuids: guids,\r\n\t\t\tIsCyberBox: false\r\n\t\t};\r\n\r\n\t\treturn requestModel;\r\n\t}\r\n\r\n\tSaveToCyberBox(itemData: MailItemModel) {\r\n\t\tthis.Trigger(MAIL_LIST_EVENTS.SAVE_TO_CYBER_BOX, itemData);\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"inbox-body\\\"> <div class=\\\"tabNamesBox\\\"> <!-- ko foreach: $parent._tabNames --> <span class=\\\"btn btn-default mail-control-tab-btn\\\" data-bind=\\\"text: Login,\\r\\n\\t\\t\\t \\t\\t\\t css: {'active': MailConnectionId === $parents[1]._mailConnectionId},\\r\\n\\t\\t\\t \\t\\t\\t click: $parents[1].SwitchTab.bind($parents[1], MailConnectionId)\\\"> </span> <!-- /ko --> </div> <div class=\\\"inbox-content table-responsive\\\"> <table class=\\\"table table-striped table-advance table-hover mailTableControl\\\"> <thead> <tr> <th colspan=\\\"4\\\" align=\\\"left\\\"> <label class=\\\"mt-checkbox mt-checkbox-single mt-checkbox-outline\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"checked: _selectAll, click: SelectAll\\\" class=\\\"mail-group-checkbox\\\"> <span></span> </label> <div class=\\\"mail-btn-group\\\"> <div class=\\\"btn-group input-actions\\\"> <a data-toggle=\\\"dropdown\\\" href=\\\"javascript:;\\\" class=\\\"btn blue btn-outline dropdown-toggle sbold\\\"> <!-- ko text: _labels.ACTIONS --><!-- /ko --> <i class=\\\"fa fa-angle-down\\\"></i> </a> <ul class=\\\"dropdown-menu\\\"> <li data-bind=\\\"click: $data.MarkAsRead.bind($data)\\\"> <a class=\\\"mark-as-read\\\"> <i class=\\\"fa fa-pencil\\\"></i> <!-- ko text: _labels.MARK_AS_READ --><!-- /ko --> </a> </li> <li data-bind=\\\"click: $data.MarkAsUnRead.bind($data)\\\"> <a class=\\\"mark-as-unread\\\"> <i class=\\\"fa fa-pencil-square\\\"></i> <!-- ko text: _labels.MARK_AS_UNREAD --><!-- /ko --> </a> </li> <li data-bind=\\\"click: $data.Delete.bind($data)\\\"> <a class=\\\"delete-selected-mail\\\"> <i class=\\\"fa fa-trash-o\\\"></i> <!-- ko text: _labels.DELETE --><!-- /ko --> </a> </li> </ul> </div> <a data-bind=\\\"click: $parent.Compose.bind($parent)\\\" class=\\\"btn red compose-btn btn-block pull-left\\\" data-title=\\\"Compose\\\" href=\\\"javascript:;\\\"> <i class=\\\"fa fa-edit\\\"></i> <!-- ko text: _labels.SEND_EMAIL --><!-- /ko --> </a> </div> </th> <th class=\\\"pagination-control\\\" colspan=\\\"4\\\"> <div class=\\\"switch-buttons\\\"> <div class=\\\"btn-group\\\"> <button data-bind=\\\"click: $parent.SwitchItemPerPage.bind($parent, 10, $element), css: {'active': $parent.IsDefaultNumber(10)}\\\" type=\\\"button\\\" data-switch-toggle=\\\"state\\\" class=\\\"btn grey-mint btn-outline record-per-page-10\\\">10 </button> <button data-bind=\\\"click: $parent.SwitchItemPerPage.bind($parent, 25, $element), css: {'active': $parent.IsDefaultNumber(25)}\\\" type=\\\"button\\\" data-switch-set=\\\"state\\\" class=\\\"btn grey-mint btn-outline record-per-page-25\\\">25 </button> <button data-bind=\\\"click: $parent.SwitchItemPerPage.bind($parent, 50, $element), css: {'active': $parent.IsDefaultNumber(50)}\\\" type=\\\"button\\\" data-switch-set=\\\"state\\\" class=\\\"btn grey-mint btn-outline record-per-page-50\\\">50 </button> </div> </div> <div class=\\\"pagination-info-block\\\"> <span class=\\\"pagination-info\\\"> <span data-bind=\\\"text: $parent._firstMailIndex()\\\">1</span> - <span data-bind=\\\"text: $parent._lastMailIndex()\\\">30</span> <!-- ko text: _labels.OF --><!-- /ko --> <span data-bind=\\\"text: $parent._mailsCount()\\\">789</span> </span> <a data-bind=\\\"click: $parent.PrevPage.bind($parent)\\\" class=\\\"btn blue btn-outline\\\"> <i class=\\\"fa fa-angle-left\\\"></i> </a> <a data-bind=\\\"click: $parent.NextPage.bind($parent)\\\" class=\\\"btn blue btn-outline\\\"> <i class=\\\"fa fa-angle-right\\\"></i> </a> </div> </th> </tr> <tr> <td class=\\\"inbox-small-cells\\\"></td> <td class=\\\"view-message\\\"></td> <td class=\\\"view-message\\\">From</td> <td class=\\\"view-message\\\">Address</td> <td class=\\\"view-message hidden-xs\\\">Subject</td> <td class=\\\"view-message text-body\\\">Topic</td> <td class=\\\"view-message inbox-small-cells\\\"> <i class=\\\"fa fa-paperclip\\\"></i> </td> <td class=\\\"view-message\\\">Date</td> </tr> </thead> <tbody class=\\\"tab-key-navigation\\\"> <!-- ko foreach: _mailItems --> <tr data-bind=\\\"click: $parents[1].Detail.bind($parents[1]),\\r\\n\\t\\t\\t\\t\\t\\t enterKey: $parents[1].Detail.bind($parents[1], $data),\\r\\n\\t\\t\\t\\t\\t\\t css: {'unread': !IsReadObservable()}\\\" tabindex=\\\"1\\\" class=\\\"base-mail-item\\\"> <td class=\\\"inbox-small-cells\\\"> <label class=\\\"mt-checkbox mt-checkbox-single mt-checkbox-outline\\\"> <input data-bind=\\\"preventBubble: ['click'], checked: IsSelected\\\" type=\\\"checkbox\\\" value=\\\"1\\\" class=\\\"mail-checkbox\\\"> <span></span> </label> </td> <td class=\\\"inbox-small-cells\\\"> <!--<pre data-bind=\\\"text: TypeName\\\"></pre>--> <i data-bind=\\\"click: $parent.SaveToCyberBox.bind($parent), preventBubble: ['click']\\\" class=\\\"fa fa-floppy-o inbox-started save-to-cyberbox\\\"></i> </td> <td data-bind=\\\"text: FromName\\\" class=\\\"view-message\\\"></td> <td data-bind=\\\"text: FromAddress\\\" class=\\\"view-message\\\"></td> <td data-bind=\\\"text: Subject\\\" class=\\\"view-message hidden-xs subject-mail-data\\\"></td> <td data-bind=\\\"text: BodyText\\\" class=\\\"view-message text-body\\\"></td> <td class=\\\"view-message inbox-small-cells attachment-cell\\\"> <!--ko if: AttachmentsCount --> <i data-bind=\\\"text: AttachmentsCount\\\" class=\\\"fa fa-paperclip\\\"></i> <!-- /ko --> </td> <td class=\\\"view-message\\\"> <span class=\\\"mail-timestamp\\\" data-bind=\\\"text: DateTimeCreated\\\"> </span> </td> </tr> <!-- /ko --> </tbody> </table> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _mailItem --> <div class=\\\"inbox\\\"> <div class=\\\"inbox-body\\\"> <div class=\\\"inbox-header\\\"> </div> <div class=\\\"inbox-content\\\"> <!-- ko with: _mailItem --> <!--<a href=\\\"#\\\" class=\\\"inbox-anchor\\\"> Inbox </a>--> <div class=\\\"inbox-header inbox-view-header\\\"> <span class=\\\"\\\" data-bind=\\\"text: Subject\\\"></span> <div class=\\\"\\\"></div> </div> <div class=\\\"inbox-view-info\\\"> <div class=\\\"row\\\"> <div class=\\\"col-md-6 mail-info\\\"> <div class=\\\"\\\"> <div class=\\\"mail-info-label\\\">From:</div> <img class=\\\"inbox-author\\\" src=\\\"/img/Custom/Calendar-Time-256x256.png\\\"> <span data-bind=\\\"text: FromName\\\"></span> <span data-bind=\\\"text: FromAddress\\\"></span> <!--<span class=\\\"mail-timestamp\\\"--> <!--data-bind=\\\"text: $parent._dateTimeCreated\\\">--> <!--</span>--> </div> <div class=\\\"to-adresses\\\"> <div class=\\\"mail-info-label\\\">To:</div> <!-- ko foreach: $parent._toAdresses --> <span data-bind=\\\"text: $data\\\"></span> <!-- /ko --> </div> <!-- ko if: $parent._ccAdresses.length --> <div class=\\\"cc-adresses\\\"> <div class=\\\"mail-info-label\\\">cc:</div> <!-- ko foreach: $parent._ccAdresses --> <span data-bind=\\\"text: $data\\\"></span> <!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"col-md-6 inbox-info-btn pull-right\\\"> <div class=\\\"btn-group action-buttons\\\"> <span class=\\\"mail-timestamp pull-left sbold\\\" data-bind=\\\"text: $parent._dateTimeCreated\\\"> </span> <!-- ko if: $parent._mailComposer() --> <button data-bind=\\\"click: $parent.CancelAction.bind($parent)\\\" class=\\\"btn default\\\"> Cancel </button> <!-- /ko --> <!-- ko ifnot: $parent._mailComposer() --> <button data-bind=\\\"click: $parent.Forward.bind($parent)\\\" class=\\\"btn green\\\"> <i class=\\\"fa fa-arrow-right\\\"></i><!--ko text: $parent._labels.FORWARD --><!--/ko--> </button> <button data-bind=\\\"click: $parent.Reply.bind($parent)\\\" class=\\\"btn green\\\"> <i class=\\\"fa fa-reply\\\"></i><!--ko text: $parent._labels.REPLY --><!--/ko--> </button> <!-- ko if: $parent._recipientsCount > 1 --> <button data-bind=\\\"click: $parent.ReplyAll.bind($parent)\\\" class=\\\"btn green\\\"> <i class=\\\"fa fa-reply\\\"></i><!--ko text: $parent._labels.REPLY_TO_ALL --><!--/ko--> </button> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> <textarea data-bind=\\\"attr: { id: $parent._detailTinyGuid },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t tinymce : {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t \\t\\tisMailControl: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmin_height: '500',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tautoresize_min_height: '160',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tautoresize: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\theight: '100%',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treadOnly: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tguid: $parent._detailTinyGuid,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tafterChange: $parent.AfterDetailTinyChange.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tafterInit: $parent.AfterDetailTinyInit.bind($parent)\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\" style=\\\"display:none\\\" aria-hidden=\\\"true\\\">\\r\\n\\t\\t\\t</textarea> <hr> <div class=\\\"inbox-attached\\\"> <table class=\\\"table margin-top-10\\\" role=\\\"presentation\\\"> <tbody class=\\\"files\\\"> <!-- ko foreach: Attachments --> <tr class=\\\"template-download fade in\\\"> <td class=\\\"name\\\" style=\\\"padding-left:0!important\\\"> <span data-bind=\\\"text: Name\\\" style=\\\"background:rgba(204,204,204,.3);float:left;display:block;line-height:27px;padding:0 5px;margin:0\\\"></span> <a data-bind=\\\"click: $parents[1].Download.bind($parents[1], $data)\\\" class=\\\"btn default btn-sm\\\" data-type=\\\"\\\" data-url=\\\"\\\"> Download </a> </td> <!--<td class=\\\"delete\\\" width=\\\"10%\\\" align=\\\"right\\\"></td>--> </tr> <!-- /ko --> </tbody> </table> <!-- ko foreach: Attachments --> <!--<div class=\\\"margin-bottom-25\\\">\\r\\n\\t\\t\\t\\t\\t<div>\\r\\n\\t\\t\\t\\t\\t\\t<strong>\\r\\n\\t\\t\\t\\t\\t\\t\\t<pre data-bind=\\\"text: $data.Name\\\"></pre>\\r\\n\\t\\t\\t\\t\\t\\t</strong>\\r\\n\\t\\t\\t\\t\\t\\t<a data-bind=\\\"click: $parents[1].Download.bind($parents[1], $data)\\\" href=\\\"javascript:;\\\">Download</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>--> <!-- /ko --> </div> <!-- /ko --> <!-- ko with: MailComposer --> <!--ko template: {html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\nimport 'lockr';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {MailStore, IDownloadAttachmentRequestModel} from 'Core/Controls/Mail/Stores/MailStore';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport {ComposeMail} from 'Core/Controls/Mail/ComposeMail';\r\nimport {MailItemExtendedModel} from 'Core/Controls/Mail//Models/MailItemExtendedModel';\r\nimport {COMPOSER_EVENTS} from 'Core/Controls/Mail/Events';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {FileDownloader} from 'Core/Components/FileDownloader/FileDownloader';\r\n\r\nimport DetailTemplate from 'Core/Controls/Mail/Templates/DetailTemplate.html';\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\nimport {LABELS} from \"../../Components/Translation/Locales\";\r\nimport { IComposerOptionsModel } from './Models/ComposerOptionsModel';\r\n\r\nko.templates['Core/Controls/Mail/Templates/DetailTemplate'] = DetailTemplate;\r\n\r\nexport class Detail extends Event {\r\n\tprivate _labels: LABELS;\r\n\tprivate _mailItem: MailItemExtendedModel;\r\n\tprivate _showReplyEditor: KnockoutObservable<boolean>;\r\n\tprivate _replyTinyGuid: string;\r\n\tprivate _detailTinyGuid: string;\r\n\tprivate _mailBody: KnockoutObservable<string>;\r\n\tprivate _subject: KnockoutObservable<string>;\r\n\tprivate _dateTimeCreated: KnockoutObservable<string>;\r\n\tprivate _mailConnectionId: number;\r\n\tprivate _modal: Modal;\r\n\tprivate _mailComposer: KnockoutObservable<ComposeMail>;\r\n\tprivate _recipientsCount: number;\r\n\tprivate _toAdresses: string[];\r\n\tprivate _ccAdresses: string[];\r\n\r\n\tconstructor(mailItem: MailItemExtendedModel) {\r\n\t\tsuper();\r\n\r\n\t\tthis._replyTinyGuid = Guid.NewGuid();\r\n\t\tthis._detailTinyGuid = Guid.NewGuid();\r\n\t\tthis._showReplyEditor = ko.observable(false);\r\n\t\tthis._mailComposer = ko.observable(null);\r\n\t\tthis._mailItem = mailItem;\r\n\t\tthis._mailConnectionId = null;\r\n\t\tthis._mailBody = ko.observable('');\r\n\t\tthis._subject = ko.observable('');\r\n\t\tthis._dateTimeCreated = ko.observable(this.FormatDateCreated(this._mailItem.DateTimeCreated));\r\n\t\tthis._labels = LABELS;\r\n\r\n\t\tthis.CountRecipients();\r\n\t}\r\n\r\n\t@enumerable get MailComposer(): KnockoutObservable<ComposeMail> {\r\n\t\treturn this._mailComposer;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn DetailTemplate;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/Mail/Templates/DetailTemplate';\r\n\t}\r\n\r\n\tShowInModal(mailConnectionId) {\r\n\t\tthis._mailConnectionId = mailConnectionId;\r\n\t\tthis._modal = new Modal();\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tCountRecipients() {\r\n\t\tconst destinationMails = [];\r\n\r\n\t\tthis._mailItem.DestinationMails.forEach((el) => {\r\n\t\t\tif (el.DestinationMails.length) {\r\n\t\t\t\tel.DestinationMails.map((destMail) => {\r\n\t\t\t\t\tdestinationMails.push(destMail.Mail);\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tdestinationMails.push(el.Address);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet recipients = destinationMails.concat(this._mailItem.Cc);\r\n\r\n\t\trecipients = _.uniq(recipients);\r\n\r\n\t\tthis._recipientsCount = recipients.length;\r\n\r\n\t\tconst ccAdresses = _.uniq(this._mailItem.Cc);\r\n\r\n\t\tconst toAdresses =\r\n\t\t\t_.uniq(destinationMails)\r\n\t\t\t.filter((el) => {\r\n\t\t\t\tlet isInCc = false;\r\n\r\n\t\t\t\tccAdresses.forEach((cc) => {\r\n\t\t\t\t\tif (cc === el) {\r\n\t\t\t\t\t\tisInCc = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn !isInCc;\r\n\t\t\t});\r\n\r\n\t\tthis._toAdresses = toAdresses;\r\n\t\tthis._ccAdresses = ccAdresses;\r\n\t}\r\n\r\n\tReply() {\r\n\t\tconst composerOptions: IComposerOptionsModel = {\r\n\t\t\tResponseMailItem: this._mailItem,\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tIsReply: true,\r\n\t\t\tDateTimeCreated: this._dateTimeCreated()\r\n\t\t};\r\n\r\n\t\tconst composer = new ComposeMail(composerOptions);\r\n\r\n\t\tthis._mailComposer(composer);\r\n\r\n\t\tcomposer.On(COMPOSER_EVENTS.DISCARD, this, (eventArgs) => this._mailComposer(null));\r\n\t\tcomposer.On(COMPOSER_EVENTS.EMAIL_SENT, this, (eventArgs) => this._modal.Close());\r\n\t}\r\n\r\n\tReplyAll() {\r\n\t\tconst composerOptions: IComposerOptionsModel = {\r\n\t\t\tResponseMailItem: this._mailItem,\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tIsReplyAll: true,\r\n\t\t\tDateTimeCreated: this._dateTimeCreated()\r\n\t\t};\r\n\r\n\t\tconst composer = new ComposeMail(composerOptions);\r\n\r\n\t\tthis._mailComposer(composer);\r\n\r\n\t\tcomposer.On(COMPOSER_EVENTS.DISCARD, this, (eventArgs) => this._mailComposer(null));\r\n\t\tcomposer.On(COMPOSER_EVENTS.EMAIL_SENT, this, (eventArgs) => this._modal.Close());\r\n\t}\r\n\r\n\tForward() {\r\n\t\tconst composerOptions: IComposerOptionsModel = {\r\n\t\t\tResponseMailItem: this._mailItem,\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tIsForward: true,\r\n\t\t\tDateTimeCreated: this._dateTimeCreated()\r\n\t\t};\r\n\r\n\t\tconst composer = new ComposeMail(composerOptions);\r\n\r\n\t\tthis._mailComposer(composer);\r\n\r\n\t\tcomposer.On(COMPOSER_EVENTS.DISCARD, this, (eventArgs) => this._mailComposer(null));\r\n\t\tcomposer.On(COMPOSER_EVENTS.EMAIL_SENT, this, (eventArgs) => this._modal.Close());\r\n\t}\r\n\r\n\tCancelAction() {\r\n\t\tthis._mailComposer(null);\r\n\t}\r\n\r\n\tprivate FormatDateCreated(date) {\r\n\t\treturn moment(date).format('LLLL');\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tif (!this._mailItem.IsRead) {\r\n\t\t\tthis.Trigger(COMPOSER_EVENTS.EMAIL_WAS_READ, {guid: this._mailItem.Guid});\r\n\t\t}\r\n\t}\r\n\r\n\tAfterDetailTinyInit(editor) {\r\n\t\teditor.setContent(this._mailItem.Body || '');\r\n\t}\r\n\r\n\tAfterDetailTinyChange(content) {\r\n\t}\r\n\r\n\tDownload(attachment: any) {\r\n\t\tconst requestModel: IDownloadAttachmentRequestModel = {\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tName: attachment.Name,\r\n\t\t\tGuid: this._mailItem.Guid\r\n\t\t};\r\n\r\n\t\tBlockUI.Block({ZIndex: ZIndexManager.Instance.NextValue});\r\n\t\tMailStore\r\n\t\t\t.DownloadAttachment(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tFileDownloader.DownloadBase64(data.ResultObject, attachment.Name);\r\n\t\t\t});\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {DEFAULT_ICONS} from \"Core/Constant\";\r\nimport {IControlParam, IScreen} from 'Core/Screens/IScreen';\r\nimport {MailStore} from 'Core/Controls/Mail/Stores/MailStore';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {RenderModes, FIELD_TYPES, TABLE_TYPES} from 'Core/Constant';\r\nimport {ComposeMail} from 'Core/Controls/Mail/ComposeMail';\r\nimport {MailList} from 'Core/Controls/Mail/MailList';\r\nimport {Detail} from 'Core/Controls/Mail/Detail';\r\nimport {MailItemModel} from 'Core/Controls/Mail/Models/MailItemModel';\r\nimport {GetMailsResponseModel} from 'Core/Controls/Mail/Models/GetMailsResponseModel';\r\nimport {GetTabsResponseModel} from 'Core/Controls/Mail/Models/GetTabsResponseModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport {RequiredFieldModel} from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport {MailFolder} from 'Core/Controls/Mail/Enums/MailFolder';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\n\r\nimport {MailItemExtendedModel} from 'Core/Controls/Mail/Models/MailItemExtendedModel';\r\nimport {ScreenDataModel} from '../../ScreenManager/Models/ScreenDataModel';\r\nimport {ControlDataModel} from '../../ScreenManager/Models/ControlDataModel';\r\n\r\nimport {InsertOrUpdateRecordStore} from 'Core/Screens/EditScreen/Stores/InsertOrUpdateRecordStore';\r\nimport {DataModel} from 'Core/Screens/EditScreen/Models/DataModel';\r\nimport {ISendMailRequestModel} from 'Core/Controls/Mail/Stores/MailStore';\r\nimport {COMPOSER_EVENTS, MAIL_LIST_EVENTS} from 'Core/Controls/Mail/Events';\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {CONTROL_TYPES} from \"Core/Constant\";\r\nimport {LinkList} from \"Core/Controls/LinkList/LinkList\";\r\nimport {EditScreen} from \"Core/Screens/EditScreen/EditScreen\";\r\nimport {NewRelationModel} from \"Core/Controls/LinkList/Models/NewRelationModel\";\r\n\r\nimport {DocumentStore} from 'Core/Controls/Document/Stores/DocumentStore';\r\nimport { SECURITY_LEVELS } from \"Core/Constants/SecurityLevels\";\r\n\r\n\r\nimport ViewTemplate from 'Core/Controls/Mail/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/Mail/Templates/ToolBar.html';\r\nimport EditTemplate from 'Core/Controls/Mail/Templates/Edit.html';\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\n\r\nko.templates['Core/Controls/Mail/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Mail/Templates/Design'] = ComplexControl.designTemplate;\r\nko.templates['Core/Controls/Mail/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Mail/Templates/Edit'] = EditTemplate;\r\n\r\nenum MailTypes {\r\n\tIn,\r\n\tOut\r\n}\r\n\r\nexport class Mail extends ComplexControl {\r\n\tprivate _mailList: KnockoutObservable<MailList>;\r\n\tprivate _currentFolder: KnockoutObservable<MailFolder>;\r\n\tprivate _loadInProgress: boolean;\r\n\tprivate _mailItems: KnockoutObservableArray<MailItemModel>;\r\n\r\n\tprivate _recordNameField: AttachedFieldModel;\r\n\tprivate _recordTypeField: AttachedFieldModel;\r\n\tprivate _mailBodyField: AttachedFieldModel;\r\n\tprivate _mailFromField: AttachedFieldModel;\r\n\tprivate _mailGuidField: AttachedFieldModel;\r\n\r\n\tprivate _mailsCount: KnockoutObservable<number>;\r\n\tprivate _itemPerPage: KnockoutObservable<number>;\r\n\tprivate _currentPage: KnockoutObservable<number>;\r\n\tprivate _firstMailIndex: KnockoutObservable<number>;\r\n\tprivate _lastMailIndex: KnockoutObservable<number>;\r\n\tprivate _totalPage: KnockoutObservable<number>;\r\n\tprivate _tabNames: KnockoutObservable<object>;\r\n\tprivate _mailConnectionId: number;\r\n\tprivate _oldMailContentId: number;\r\n\tprivate _tabNumber: number;\r\n\tprivate _isLoad: boolean;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\r\n\t\tthis._model().IsComplexControl = true;\r\n\t\tthis._currentFolder = ko.observable(MailFolder.Inbox);\r\n\t\tthis._mailsCount = ko.observable(0);\r\n\t\tthis._itemPerPage = ko.observable(10);\r\n\t\tthis._currentPage = ko.observable(1);\r\n\t\tthis._firstMailIndex = ko.observable(1);\r\n\t\tthis._lastMailIndex = ko.observable(0);\r\n\t\tthis._totalPage = ko.observable(0);\r\n\t\tthis._mailList = ko.observable(null);\r\n\t\tthis._isLoad = false;\r\n\t\tthis._mailConnectionId = 0;\r\n\t\tthis._tabNumber = 0;\r\n\t\tthis._tabNames = ko.observable(null);\r\n\t\tthis._mailItems = ko.observableArray([]);\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.SetDefaultIcon(new Icon(DEFAULT_ICONS.Mail));\r\n\t\t//TODO save mail body as document\r\n\t\tif (this.GetRenderMode() === RenderModes.View) {\r\n\t\t\tthis._recordNameField = this._model().Fields[0];\r\n\t\t\tthis._recordTypeField = this._model().Fields[1];\r\n\t\t\t//this._mailBodyField = this._model().Fields[2];\r\n\t\t\tthis._mailFromField = this._model().Fields[2];\r\n\t\t\tthis._mailGuidField = this._model().Fields[3];\r\n\t\t\tthis.LoadTabs();\r\n\t\t\tthis._loadInProgress = true;\r\n\t\t}\r\n\r\n\r\n\t\tthis._requiredFields([\r\n\t\t\tnew RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('BODY', FIELD_TYPES.Document, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('SERVERMAILID', FIELD_TYPES.Text, TABLE_TYPES.Entity, null)\r\n\t\t]);\r\n\r\n\t\tthis.InitRequiredFields();\r\n\t}\r\n\r\n\t@enumerable get CurrentFolder(): string {\r\n\t\treturn MailFolder[this._currentFolder()];\r\n\t}\r\n\r\n\tCompose() {\r\n\t\tthis._currentFolder(null);\r\n\r\n\t\tconst composeMail = new ComposeMail({ResponseMailItem: null});\r\n\r\n\t\tcomposeMail.AddScreen(this._form.GetScreen());\r\n\t\tcomposeMail.ShowInModal(this._mailConnectionId);\r\n\r\n\t\t//composeMail.On(COMPOSER_EVENTS.EMAIL_SENT, this, (eventArgs) => {\r\n\t\t//\tthis.SaveEmail(eventArgs.data.Mail, eventArgs.data.Guid);\r\n\t\t//});\r\n\t}\r\n\r\n\tSaveEmail(sendMail: ISendMailRequestModel, Guid: string) {\r\n\r\n\t\t// TODO provide as complex control\r\n\t\tDocumentStore.GetDocumentEntityId().then(documentEntityId => {\r\n\t\t\tEntityTypesStore\r\n\t\t\t\t.GetTypes({\r\n\t\t\t\t\tEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\t\t\tParentTypeId: 0,\r\n\t\t\t\t\tWithRoot: false,\r\n\t\t\t\t\tOnlyEnabled: true\r\n\t\t\t\t})\r\n\t\t\t\t.then((entityTypes) => {\r\n\t\t\t\t\tconst outType = _.find(entityTypes.TableTypes, (type) => {\r\n\t\t\t\t\t\treturn type.Name === MailTypes[MailTypes.Out];\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (outType) {\r\n\t\t\t\t\t\tconst dataModel = new DataModel();\r\n\r\n\t\t\t\t\t\tdataModel.EntityTypeId = outType.Id;\r\n\t\t\t\t\t\tdataModel.EntityId = this._form.GetScreen().GetEntityId();\r\n\r\n\t\t\t\t\t\tconst guidData = [];\r\n\r\n\t\t\t\t\t\tguidData.push(`${this._mailGuidField.EntityName}.${this._mailGuidField.Name}`);\r\n\t\t\t\t\t\tguidData.push(Guid);\r\n\t\t\t\t\t\tdataModel.FieldValueList.push(guidData);\r\n\r\n\t\t\t\t\t\tconst nameData = [];\r\n\r\n\t\t\t\t\t\tnameData.push(`${this._recordNameField.EntityName}.${this._recordNameField.Name}`);\r\n\t\t\t\t\t\tnameData.push(sendMail.Subject);\r\n\t\t\t\t\t\tdataModel.FieldValueList.push(nameData);\r\n\r\n\t\t\t\t\t\tconst bodyData = [];\r\n\r\n\t\t\t\t\t\tif (this._mailBodyField) {\r\n\t\t\t\t\t\t\tbodyData.push(`${this._mailBodyField.EntityName}.${this._mailBodyField.Name}`);\r\n\t\t\t\t\t\t\tbodyData.push(sendMail.Body);\r\n\t\t\t\t\t\t\tdataModel.FieldValueList.push(bodyData);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst fromMailData = [];\r\n\r\n\t\t\t\t\t\tfromMailData.push(`${this._mailFromField.EntityName}.${this._mailFromField.Name}`);\r\n\r\n\t\t\t\t\t\tlet fromMail = '';\r\n\r\n\t\t\t\t\t\t_.each(sendMail.Recipients, (recipient) => fromMail = `${recipient.Mail}`);\r\n\r\n\t\t\t\t\t\tfromMailData.push(fromMail);\r\n\t\t\t\t\t\tdataModel.FieldValueList.push(fromMailData);\r\n\r\n\t\t\t\t\t\tconst newRelations = [];\r\n\r\n\t\t\t\t\t\t_.each(sendMail.Attachements, (attachment) => {\r\n\t\t\t\t\t\t\tnewRelations.push({\r\n\t\t\t\t\t\t\t\tControlId: 0,\r\n\t\t\t\t\t\t\t\tRecordId: 0,\r\n\t\t\t\t\t\t\t\tRelatedEntityId: documentEntityId,\r\n\t\t\t\t\t\t\t\tRelatedRecordId: attachment.DocumentId\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\tdataModel.LinklistChanges = {NewRelations: newRelations};\r\n\r\n\t\t\t\t\t\tInsertOrUpdateRecordStore.UpdateData(dataModel)\r\n\t\t\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\t\t\tnew Notifier().Success(NOTIFICATIONS.RECORD_SAVED);\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnew Notifier().Failed(NOTIFICATIONS.OUT_TYPE_NOT_FOUND);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tUpdatePagination() {\r\n\t\tthis._totalPage(Math.ceil(this._mailsCount() / this._itemPerPage()));\r\n\r\n\t\tthis._firstMailIndex(this._currentPage() * this._itemPerPage() - this._itemPerPage() + 1);\r\n\r\n\t\tlet expectedLastNumber = this._currentPage() * this._itemPerPage();\r\n\r\n\t\tif (expectedLastNumber < this._mailsCount()) {\r\n\t\t\tthis._lastMailIndex(expectedLastNumber);\r\n\t\t} else {\r\n\t\t\tthis._lastMailIndex(this._mailsCount());\r\n\t\t}\r\n\t}\r\n\r\n\tPrevPage() {\r\n\t\tlet expectedPage = this._currentPage() - 1;\r\n\r\n\t\tif (expectedPage >= 1) {\r\n\t\t\tthis._currentPage(this._currentPage() - 1);\r\n\t\t}\r\n\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tNextPage() {\r\n\t\tlet expectedPage = this._currentPage() + 1;\r\n\r\n\t\tif (expectedPage <= this._totalPage()) {\r\n\t\t\tthis._currentPage(this._currentPage() + 1);\r\n\t\t}\r\n\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tSwitchItemPerPage(number, element, bindedData) {\r\n\t\tthis._itemPerPage(number);\r\n\t\tthis._currentPage(1);\r\n\t\tthis._firstMailIndex(1);\r\n\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tIsDefaultNumber(number) {\r\n\t\treturn this._itemPerPage() === number;\r\n\t}\r\n\r\n\tLoadTabs() {\r\n\t\tlet self = this;\r\n\r\n\t\tthis.BlockUI();\r\n\r\n\t\tMailStore.GetMailTabs()\r\n\t\t\t.always(() => {\r\n\t\t\t\tself.UnblockUI();\r\n\t\t\t})\r\n\t\t\t.then((tabs: GetTabsResponseModel) => {\r\n\t\t\t\tthis._tabNames(tabs);\r\n\t\t\t\tlet count = 0;\r\n\t\t\t\tlet i;\r\n\r\n\t\t\t\tfor (i in tabs) {\r\n\t\t\t\t\tif (tabs.hasOwnProperty(i)) {\r\n\t\t\t\t\t\tcount++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._tabNumber >= count) {\r\n\t\t\t\t\tnew Notifier().Warning(NOTIFICATIONS.PLEASE_ADD_ACCOUNT);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._mailConnectionId = tabs[this._tabNumber].MailConnectionId ?\r\n\t\t\t\t\t\ttabs[this._tabNumber].MailConnectionId :\r\n\t\t\t\t\t\ttabs[this._tabNumber + 1].MailConnectionId;\r\n\r\n\t\t\t\t\tthis.LoadData();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tSwitchTab(mailConnectionId) {\r\n\t\tthis._oldMailContentId = this._mailConnectionId;\r\n\t\tthis._mailConnectionId = mailConnectionId;\r\n\t\tthis._currentPage(1);\r\n\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tthis.BlockUI();\r\n\r\n\t\tconst self = this;\r\n\r\n\t\tMailStore.GetMailFolder({\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tPageSize: this._itemPerPage(),\r\n\t\t\tPage: this._currentPage()\r\n\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tself.UnblockUI();\r\n\r\n\t\t\t\tthis._loadInProgress = false;\r\n\t\t\t})\r\n\t\t\t.then((mailItems: GetMailsResponseModel) => {\r\n\r\n\r\n\t\t\t\tthis._mailsCount(mailItems.TotalItems);\r\n\t\t\t\tthis.UpdatePagination();\r\n\t\t\t\tthis._totalPage(Math.ceil(this._mailsCount() / this._itemPerPage()));\r\n\t\t\t\tthis._mailItems(mailItems.Items);\r\n\r\n\t\t\t\tthis.InitView(this._mailItems);\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tif (this._oldMailContentId) {\r\n\t\t\t\t\tthis._mailConnectionId = this._oldMailContentId;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._tabNumber = this._tabNumber + 1;\r\n\t\t\t\t\tthis.LoadTabs();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tBlockUI() {\r\n\t\tif (this._el) {\r\n\t\t\tBlockUI.Block({Target: this._el});\r\n\t\t} else {\r\n\t\t\tBlockUI.Block();\r\n\t\t}\r\n\t}\r\n\r\n\tUnblockUI() {\r\n\t\tif (this._el) {\r\n\t\t\tBlockUI.Unblock(this._el);\r\n\t\t} else {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t}\r\n\t}\r\n\r\n\tInitView(mailItems: KnockoutObservableArray<MailItemModel>) {\r\n\t\tthis._mailList(new MailList(mailItems(), this._currentFolder(), this._mailConnectionId));\r\n\r\n\t\tthis._mailList().On(MAIL_LIST_EVENTS.LOAD_DATA, this, (eventArgs: any) => {\r\n\t\t\tif (!_.isEmpty(eventArgs.data)) {\r\n\t\t\t\tthis._isLoad = false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.LoadData();\r\n\t\t});\r\n\r\n\t\tthis._mailList().On(MAIL_LIST_EVENTS.SAVE_TO_CYBER_BOX, this, (eventArgs) => {\r\n\t\t\tconst mailItem = eventArgs.data as MailItemModel;\r\n\r\n\t\t\tBlockUI.Block();\r\n\r\n\t\t\tMailStore\r\n\t\t\t\t.GetMailById({\r\n\t\t\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\t\t\tGuid: mailItem.Guid,\r\n\t\t\t\t\tIsIncludeAttachmentContent: true\r\n\t\t\t\t})\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.then((data) => {\r\n\t\t\t\t\tthis.SaveToEditScreen(data);\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tShowEditScreen(screenData: ScreenDataModel, mailItemDetail: MailItemExtendedModel) {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tEntityTypesStore\r\n\t\t\t.GetTypes({\r\n\t\t\t\tEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\t\tParentTypeId: 0,\r\n\t\t\t\tWithRoot: false,\r\n\t\t\t\tOnlyEnabled: true\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(async(entityTypes) => {\r\n\t\t\t\tconst inType = _.find(entityTypes.TableTypes, (type) => type.Name === MailTypes[MailTypes.In]);\r\n\t\t\t\tif (inType) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tconst screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;;\r\n\r\n\t\t\t\t\tscreenManager.GetEditScreen({\r\n\t\t\t\t\t\tEntityId: this.GetForm().GetScreen().GetEntityId(),\r\n\t\t\t\t\t\tTableTypeId: inType.Id\r\n\t\t\t\t\t}).always(() => {\r\n\t\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t\t}).fail((err) => {\r\n\t\t\t\t\t\tvar notifier = new Notifier();\r\n\t\t\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t\t\t}).then(screen => {\r\n\t\t\t\t\t\tscreen.ShowInModal();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tscreen.SetDefaultData(screenData, [CONTROL_TYPES.LinkList]);\r\n\t\t\t\t\t\tscreen.On('LINK_LIST_DATA_LOADED', this, () => {\r\n\t\t\t\t\t\t\tthis.LinkMailRelatedData(screen, mailItemDetail);\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\tnew Notifier().Failed(NOTIFICATIONS.IN_TYPE_NOT_FOUND);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate LinkMailRelatedData(screen: IScreen, mailItemDetail: MailItemExtendedModel) {\r\n\t\t\r\n\t\tlet isLinkListExist = screen.HasControl(CONTROL_TYPES.LinkList);\r\n\r\n\t\tif (!isLinkListExist) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst linkList = screen.GetControl(CONTROL_TYPES.LinkList) as LinkList;\r\n\r\n\t\tconst usersRelationModel = linkList.DataModel().UserRelation();\r\n\t\tmailItemDetail.MailRelatedData.Users.forEach(user => {\r\n\t\t\tconst existingLink = linkList.FindLinkByRecord(user.Id, usersRelationModel);\r\n\t\t\tif (existingLink) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet newRelation = new NewRelationModel();\r\n\t\t\tnewRelation.Name = user.Name;\r\n\t\t\tnewRelation.Id = user.Id;\r\n\t\t\tnewRelation.IsMain = false;\r\n\t\t\tnewRelation.Level = SECURITY_LEVELS.SHARED;\r\n\r\n\t\t\tlinkList.AddRecord(user.Id, usersRelationModel, newRelation);\r\n\t\t});\r\n\r\n\t\tmailItemDetail.MailRelatedData.Entities.forEach(entity => {\r\n\t\t\tconst relationModel = _.find(linkList.DataModel().Entities(), relatedEntity => {\r\n\t\t\t\treturn relatedEntity.EntityId === entity.Id;\r\n\t\t\t});\r\n\r\n\t\t\tif (!relationModel) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (entity.Items.length === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst groupsById = _.groupBy(entity.Items, item => item.Id);\r\n\r\n\t\t\tfor (const groupIndex in groupsById) {\r\n\t\t\t\tconst item = groupsById[groupIndex][0];\r\n\t\t\t\tconst addressTypesId = groupsById[groupIndex].map(item => item.AddressTypeId).join(';');\r\n\r\n\t\t\t\tlet newRelation = new NewRelationModel();\r\n\t\t\t\tnewRelation.Name = item.Name;\r\n\t\t\t\tnewRelation.Id = item.Id;\r\n\t\t\t\tnewRelation.IsMain = false;\r\n\r\n\t\t\t\tconst guid = linkList.AddRecord(item.Id, relationModel, newRelation);\r\n\t\t\t\tlinkList.UpdateCustomDataByGuid(guid,\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tFieldId: entity.AddressTypeFieldId,\r\n\t\t\t\t\t\t\tFieldValue: addressTypesId\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\t}\r\n\r\n\tSaveToEditScreen(mailItemDetail: MailItemExtendedModel) {\r\n\t\tconst DOCUMENT_FIELD_ID = 680;\r\n\r\n\t\tconst screenData = new ScreenDataModel();\r\n\t\tconst nameControlData = new ControlDataModel();\r\n\r\n\t\tif (this._recordNameField) {\r\n\t\t\tnameControlData.FieldId = this._recordNameField.Id;\r\n\t\t\tnameControlData.Value = mailItemDetail.Subject;\r\n\t\t\tscreenData.ControlsData.push(nameControlData);\r\n\t\t}\r\n\r\n\t\tif (this._mailBodyField) {\r\n\t\t\tconst mailBodyControlData = new ControlDataModel();\r\n\r\n\t\t\tmailBodyControlData.FieldId = this._mailBodyField.Id;\r\n\t\t\tmailBodyControlData.Value = mailItemDetail.Body;\r\n\t\t\tscreenData.ControlsData.push(mailBodyControlData);\r\n\t\t}\r\n\r\n\t\tif (this._mailFromField) {\r\n\t\t\tconst mailFromControlData = new ControlDataModel();\r\n\r\n\t\t\tmailFromControlData.FieldId = this._mailFromField.Id;\r\n\t\t\tmailFromControlData.Value = mailItemDetail.FromAddress;\r\n\t\t\tscreenData.ControlsData.push(mailFromControlData);\r\n\t\t}\r\n\r\n\t\tif (this._mailGuidField) {\r\n\t\t\tconst serverMailIdControlData = new ControlDataModel();\r\n\r\n\t\t\tserverMailIdControlData.FieldId = this._mailGuidField.Id;\r\n\t\t\tserverMailIdControlData.Value = mailItemDetail.Guid;\r\n\t\t\tscreenData.ControlsData.push(serverMailIdControlData);\r\n\t\t}\r\n\r\n\t\tconst dropControlData = new ControlDataModel();\r\n\r\n\t\tdropControlData.FieldId = DOCUMENT_FIELD_ID;\r\n\r\n\t\tif (mailItemDetail.Attachments.length > 0) {\r\n\t\t\tconst dropControlValues = [];\r\n\r\n\t\t\t_.each(mailItemDetail.Attachments, (attachment) => {\r\n\t\t\t\tdropControlValues.push({FileName: attachment.Name, Content: attachment.Content});\r\n\t\t\t\tdropControlData.Values = dropControlValues;\r\n\t\t\t});\r\n\r\n\t\t\tscreenData.ControlsData.push(dropControlData);\r\n\t\t}\r\n\r\n\t\tthis.ShowEditScreen(screenData, mailItemDetail);\r\n\t}\r\n\r\n\tDetail(mailItem: MailItemModel) {\r\n\t\tthis.BlockUI();\r\n\r\n\t\tMailStore\r\n\t\t\t.GetMailById({\r\n\t\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\t\tGuid: mailItem.Guid,\r\n\t\t\t\tIsIncludeAttachmentContent: false\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnblockUI();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tconst detail = new Detail(data);\r\n\r\n\t\t\t\tdetail.On(COMPOSER_EVENTS.EMAIL_WAS_READ, this, (eventArgs) => {\r\n\t\t\t\t\tthis._mailList().MarkAsReadByGuid(eventArgs.data.guid);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdetail.ShowInModal(this._mailConnectionId);\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\r\n\t\tif (this._loadInProgress) {\r\n\t\t\tthis.BlockUI();\r\n\t\t} else {\r\n\t\t\tthis.UnblockUI();\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-envelope-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"afterRender: AfterRender, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"mail-base-container\\\"> <div class=\\\"inbox\\\"> <div class=\\\"row\\\"> <div class=\\\"mail-folder-root col-md-12\\\"> <!-- ko with: _mailList --> <!--ko template: {html: GetTemplate.bind($rawData), afterRender: AfterRender.bind($rawData)} --><!-- /ko --> <!-- /ko --> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","const Cultures = {\r\n 'nl-nl': 'nl'\r\n};\r\n\r\nexport class FullCalendarCultures {\r\n static Get(culture: string) {\r\n if (Cultures.hasOwnProperty(culture.toLowerCase())) {\r\n return Cultures[culture.toLowerCase()];\r\n }\r\n return culture;\r\n }\r\n}\r\n","import {deserialize, deserializeAs} from \"libs/cerialize\";\r\n\r\nexport class UserModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tUserName: string;\r\n\r\n\t@deserialize\r\n\tUserTypeName: string;\r\n\r\n\t@deserialize\r\n\tUserTypeNameTranslation: string;\r\n\r\n\tChecked: boolean;\r\n}\r\n\r\nexport class UserGroupModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tUserIds: Array<number>;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tTypeNameTranslation: string;\r\n\r\n\tChecked: boolean | null;\r\n\r\n\tUsers?: Array<UserModel>\r\n}\r\n\r\nexport class SelectUserModel {\r\n\r\n\t@deserializeAs(UserModel)\r\n\tUsers: Array<UserModel>;\r\n\r\n\t@deserializeAs(UserGroupModel)\r\n\tUserGroups: Array<UserGroupModel>;\r\n}\r\n","import * as ko from \"knockout\";\r\nimport {SelectUserModel, UserModel, UserGroupModel } from \"Core/Controls/SelectUser/Models/SelectUserModel\";\r\n\r\nexport class SelectUserFormModel {\r\n\tUsers: Array<UserFormModel>;\r\n\tUserGroups: Array<UserGroupFormModel>;\r\n\r\n\tconstructor(model: SelectUserModel) {\r\n\t\tthis.Users = model.Users.map(user => new UserFormModel(user));\r\n\t\tthis.UserGroups = model.UserGroups.map(userGroup => new UserGroupFormModel(userGroup));\r\n\t}\r\n\r\n\tToSelectUserModel() {\r\n\t\tconst model = new SelectUserModel();\r\n\t\tmodel.Users = this.Users.map(user => user.ToUserModel());\r\n\t\tmodel.UserGroups = this.UserGroups.map(userGroup => userGroup.ToUserGroupModel());\r\n\r\n\t\treturn model;\r\n\t}\r\n}\r\n\r\nexport class UserFormModel {\r\n\tId: number;\r\n\tName: string;\r\n\tChecked: KnockoutObservable<boolean>;\r\n\tUserTypeName: string;\r\n\tUserTypeNameTranslation: string;\r\n\r\n\tconstructor(model: UserModel) {\r\n\t\tthis.Id = model.Id;\r\n\t\tthis.Name = model.Name;\r\n\t\tthis.Checked = ko.observable(model.Checked);\r\n\t\tthis.UserTypeName = model.UserTypeName;\r\n\t\tthis.UserTypeNameTranslation = model.UserTypeNameTranslation;\r\n\t}\r\n\r\n\tToUserModel() {\r\n\t\tconst user = new UserModel;\r\n\r\n\t\tuser.Id = this.Id;\r\n\t\tuser.Name = this.Name;\r\n\t\tuser.Checked = this.Checked();\r\n\t\tuser.UserTypeName = this.UserTypeName;\r\n\t\tuser.UserTypeNameTranslation = this.UserTypeNameTranslation;\r\n\r\n\t\treturn user;\r\n\t}\r\n}\r\n\r\nexport class UserGroupFormModel {\r\n\tId: number;\r\n\tName: string;\r\n\tChecked: KnockoutObservable<boolean>;\r\n\tTypeId: number;\r\n\tTypeName: string;\r\n\tTypeNameTranslation: string;\r\n\r\n\tconstructor(model: UserGroupModel) {\r\n\t\tthis.Id = model.Id;\r\n\t\tthis.Name = model.Name;\r\n\t\tthis.Checked = ko.observable(model.Checked);\r\n\t\tthis.TypeId = model.TypeId;\r\n\t\tthis.TypeName = model.TypeName;\r\n\t\tthis.TypeNameTranslation = model.TypeNameTranslation;\r\n\t}\r\n\r\n\tToUserGroupModel() {\r\n\t\tconst userGroup = new UserGroupModel();\r\n\r\n\t\tuserGroup.Id = this.Id;\r\n\t\tuserGroup.Name = this.Name;\r\n\t\tuserGroup.Checked = this.Checked();\r\n\t\tuserGroup.TypeId = this.TypeId;\r\n\t\tuserGroup.TypeName = this.TypeName;\r\n\t\tuserGroup.TypeNameTranslation = this.TypeNameTranslation;\r\n\r\n\t\treturn userGroup;\r\n\t}\r\n}\r\n","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._loadInProgress,\\r\\n click: _help.ShowControlHelp.bind(_help, $data),\\r\\n css:{'small-appointments': $data._isSmallAppointments && $data._isInteractionWithUserSelect()}\\\" class=\\\"ConsultScreenView agenda-control-result form-standart-control\\\" style=\\\"display:block\\\"> <div class=\\\"portlet light portlet-fit bordered calendar\\\"> <!--\\r\\n <div class=\\\"portlet-title\\\">\\r\\n <div class=\\\"caption\\\">\\r\\n <i class=\\\"fa fa-3x fa-stack fa-calendar font-green\\\"></i>\\r\\n <span class=\\\"caption-subject font-green sbold uppercase\\\">Agenda</span>\\r\\n </div>\\r\\n </div>\\r\\n --> <div class=\\\"portlet-body\\\"> <div class=\\\"flex-container clearfix\\\"> <!-- BEGIN DRAGGABLE EVENTS PORTLET--> <!-- ko if: !$data._isReadonly --> <div data-bind=\\\"css: {'hidden-block': !_isVisibleTodoBlock()}\\\" class=\\\"todo-block transition\\\"> <div id=\\\"external-events\\\" class=\\\"external-events\\\"> <div class=\\\"margin-bottom-10\\\"> <div class=\\\"clearfix\\\"> <!-- ko foreach: TodoEvents --> <div data-bind=\\\"draggable: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thelper: 'clone',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstart: $parent.StartDrag.bind($parent, $data)\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\" class=\\\"todo-item clearfix external-event label label-default\\\" style=\\\"position:relative\\\"> <span data-bind=\\\"text: $parent.EventTitle($data)\\\"></span> <span data-bind=\\\"click: $parent.RemoveTodoItem.bind($parent, $data)\\\" class=\\\"remove\\\"> x </span> </div> <!-- /ko --> </div> </div> <form> <input type=\\\"checkbox\\\" data-bind=\\\"checked: _checkedRemoveToDo\\\" class=\\\"group-checkable\\\"> <label for=\\\"drop-remove\\\" class=\\\"mt-checkbox mt-checkbox-single mt-checkbox-outline\\\"> <!-- ko text: _labels.REMOVE_AFTER_DROP --><!-- /ko --> </label> </form> <br/> <!-- ko with: _appointmentAttendees --> <div class=\\\"user-group-container\\\"> <span class=\\\"user-group-title\\\" data-bind=\\\"text: $parent._labels.ATTENDEES\\\"></span> <!-- ko foreach: Users --> <div class=\\\"user-group-item\\\"> <input data-bind=\\\"checked: Checked\\\" type=\\\"checkbox\\\"> <span class=\\\"additional-icon fa fa-user\\\"></span> <span class=\\\"select-user-name\\\" data-bind=\\\"attr:{ title: Name }, text: Name\\\"></span> </div> <!-- /ko --> <!-- ko foreach: UserGroups --> <div class=\\\"user-group-item\\\"> <input data-bind=\\\"checked: Checked\\\" type=\\\"checkbox\\\"> <span class=\\\"additional-icon fa fa-users\\\"></span> <span class=\\\"select-user-name\\\" data-bind=\\\"text: Name\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> <!-- /ko --> <!-- END DRAGGABLE EVENTS PORTLET--> <div class=\\\"calendar-block transition\\\"> <!-- ko if: !$data._isReadonly --> <form class=\\\"todo-btn-block\\\" data-bind=\\\"\\\"> <label class=\\\"toggler-container\\\"> <input type=\\\"checkbox\\\" class=\\\"toggler\\\" data-bind=\\\"checked: _isVisibleTodoBlock\\\"> <span class=\\\"arrow-icon\\\"><i class=\\\"fa fa-angle-right\\\"></i></span> </label> </form> <!-- /ko --> <div class=\\\"agenda-wrapper\\\"> <form class=\\\"inline-form\\\"> <div class=\\\"display-i-b\\\" data-bind=\\\"visible: _isToDoVisible\\\"> <a data-bind=\\\"click: AddNewTodo, tooltip: {content: _labels.ADD_TODO}\\\" class=\\\"btn btn-primary\\\"> <i class=\\\"fa fa-check\\\"></i> </a> </div> <div class=\\\"display-i-b\\\" data-bind=\\\"visible: _isSpecialDayVisible\\\"> <a data-bind=\\\"click: AddSpecialDay, tooltip: {content: _labels.SPECIAL_DAY}\\\" class=\\\"btn btn-primary\\\"> <i class=\\\"fa fa-calendar\\\"></i> </a> </div> <div class=\\\"display-i-b\\\" data-bind=\\\"visible: _isRequestLeaveVisible\\\"> <a data-bind=\\\"click: AddHoliday, tooltip: {content: _labels.REQUEST_LEAVE}\\\" class=\\\"btn btn-primary\\\"> <i class=\\\"fa fa-calendar-minus-o\\\"></i> </a> </div> <div class=\\\"display-i-b\\\" data-bind=\\\"visible: _isReportIllnessVisible\\\"> <a data-bind=\\\"click: AddIllness, tooltip: {content: _labels.REPORT_ILLNESS}\\\" class=\\\"btn btn-primary\\\"> <i class=\\\"fa fa-medkit\\\"></i> </a> </div> <div class=\\\"display-i-b\\\" data-bind=\\\"visible: _isRecurrentVisible\\\"> <a data-bind=\\\"click: AddRecurrent, tooltip: {content: _labels.RECURRENT}\\\" class=\\\"btn recurrent-btn btn-primary\\\"> <i class=\\\"fa fa-retweet\\\"></i> </a> </div> </form> <div id=\\\"agendaCalendar\\\" data-bind=\\\"fullCalendar: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: $data.GetFullCalendarOptions(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevents: $data._calendarEvents.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tresources: $data._owners,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tbusinessHours: $data._businessHours.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tspecialDays: $data._specialDays.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgroupByResource: $data._groupByResource\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\" class=\\\"has-toolbar fc fc-ltr fc-unthemed\\\"> </div> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { backgroundColor: BackgroundColor }, css: {opened: ActionToggle, specialDay: SpecialDay}\\\" class=\\\"custom-agenda-event\\\"> <!-- ko ifnot: SpecialDay --> <div data-bind=\\\"style: TimeBeforeHeight, css:{'hidden': !TimeBefore}\\\" class=\\\"start-date\\\"></div> <!-- /ko --> <div class=\\\"event-main\\\" data-bind=\\\"css:{'isIllness': IsIllness, 'isHoliday': IsHoliday}\\\"> <!-- ko ifnot: SpecialDay --> <!-- ko if: IsHoliday && IsHolidayIcon --> <div data-bind=\\\"tooltip: {content: HolidayTooltip}\\\" class=\\\"iconBox\\\"><i class=\\\"fa fa-question-circle\\\"></i></div> <!-- /ko --> <div data-bind=\\\"html: Title,\\r\\n\\t\\t\\t\\t\\t\\t\\tellipsisTooltip: {\\r\\n \\t\\t\\t\\t\\t\\t\\t\\tcontent: Title,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tisLineClampMode: true\\r\\n\\t\\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\\tpreventBubble: ['mouseover']\\\" class=\\\"event-content line-clamp-overflowed\\\"></div> <!-- /ko --> <!-- ko if: SpecialDay --> <div data-bind=\\\"tippy: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: Country+': ' +Title,\\r\\n\\t\\t\\t\\t\\t\\t\\ttheme: 'light',\\r\\n\\t\\t\\t\\t\\t\\t\\tfollowCursor: true\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\\" class=\\\"event-content entity-overflowed title\\\"> </div> <!-- /ko --> </div> <!-- ko if: Links --> <div class=\\\"agenda-links-container\\\"> <!-- ko foreach: Links --> <div data-bind=\\\"css: {'invited': Name === 'SYS_USERS'}\\\" class=\\\"agenda-links-body clearfix\\\"> <span class=\\\"agenda-linked-icon\\\"> <!-- ko with: IconComponent --> <!-- ko template: { name: GetTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </span> <span class=\\\"entity-name\\\"></span> <!-- ko foreach: LinkRecords --> <div data-bind=\\\"click: function(linkedRecord, event) { $parents[1].Agenda.NavigateToLinkedRecord(linkedRecord, $parent, event); }\\\" class=\\\"entity-link\\\"><span data-bind=\\\"text: NameTranslation || Name\\\" class=\\\"underlined\\\"></span></div> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: SpecialDay --> <div data-bind=\\\"style: TimeAfterHeight, css:{'hidden': !TimeAfter}\\\" class=\\\"end-date\\\"></div> <!-- /ko --> </div> <!--ko if: !$data.Event.allDay && !$data.Event.specialDay --> <div class=\\\"actionMenuBox\\\" data-bind=\\\"css: {opened: ActionToggle}\\\"> <button class=\\\"btn btn-icon-only actionToggleMenu\\\" data-bind=\\\"click: Agenda.ActionToggleMenu.bind(Agenda, $data, event),\\r\\n\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\tcss: {opened: ActionToggle}\\\"> <!-- ko if: ActionToggle--> <i class=\\\"fa fa-times\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> <!-- ko ifnot: ActionToggle--> <i class=\\\"fa fa-bars\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> </button> <!-- ko if: ActionToggle--> <button class=\\\"btn btn-icon-only btn-replanning\\\" data-bind=\\\"click: Agenda.GoToScheduler.bind(Agenda, $data, event),\\r\\n\\t\\t\\t\\t\\t\\tcss: { 'disabled': !Editable},\\r\\n\\t\\t\\t\\t\\t\\ttooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: Agenda._labels.CLICK_TO_RESCHEDULE,\\r\\n\\t\\t\\t\\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tx: 'left',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ty: 'center'\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\t\\taddClass: 'jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor }\\\"><i class=\\\"fa fa-retweet\\\"></i></button> <!--ko if: !Accepted--> <button class=\\\"btn btn-icon-only accept-appointment\\\" data-bind=\\\"attr:{disabled: !$data.PossibleToAccept() || $data.Accepting()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcss: {'hidden': !$data.PossibleToAccept() || $data.Accepting()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcontent: $data.PossibleToAccept() ? Agenda._labels.BOOK_TIME : Agenda._labels.STARTING_DATE_IS_OUT_OF_FREEZE_TIME,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tx: 'left',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ty: 'center'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taddClass: 'jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tclick: Agenda.AcceptAppointment.bind(Agenda, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['click']\\\"><i class=\\\"fa fa-clock-o\\\" aria-hidden=\\\"true\\\"></i></button> <!--/ko--> <!--ko if: !$data.PossibleToAccept() || $data.Accepting() --> <span class=\\\"btn btn-icon-only accept-appointment cursorDisabled\\\" data-bind=\\\"tooltip: {\\r\\n\\t\\t \\t\\t\\t\\tcontent: Agenda._labels.CANNOT_ACCEPT_APPOINTMENT,\\r\\n\\t\\t \\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\t\\tx: 'left',\\r\\n\\t\\t\\t\\t\\t\\t\\ty: 'center'\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\taddClass: 'jBox-padding-5px'\\r\\n\\t\\t \\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\tpreventBubble: ['click']\\\"><i class=\\\"fa fa-clock-o\\\" aria-hidden=\\\"true\\\"></i></span> <!--/ko --> <!--ko if: $data.RecurrentRecordId --> <button class=\\\"btn btn-icon-only btn-recurrence-pattern\\\" data-bind=\\\"tooltip: {content: Agenda._labels.RECURRENCE_PATTERN},\\r\\n\\t\\t\\t\\t\\t style: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t click: Agenda.EditRecurrent.bind(Agenda, $data.RecurrentRecordId),\\r\\n\\t\\t\\t\\t\\t preventBubble: ['click']\\\"><i class=\\\"fa fa-refresh\\\"></i></button> <!--/ko --> <!--/ko --> </div> <!--/ko--> <!--ko if: !!Description && EnableTooltip --> <div class=\\\"custom-agenda-event__descriptionButton\\\"> <span class=\\\"info-circle\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcontent: Description,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tposition: {x: 'right', y: 'center'},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taddClass: 'ellipsis-tooltip custom-agenda-event__descriptionTooltip jBox-padding-5px'\\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\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['mouseover']\\\"> <i class=\\\"fa fa-info\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { backgroundColor: BackgroundColor }, css: {specialDay: SpecialDay, 'isIllness': IsIllness, 'isHoliday': IsHoliday}\\\" class=\\\"custom-agenda-event custom-agenda-event--month\\\"> <!-- ko ifnot: SpecialDay --> <!-- ko if: IsHoliday && IsHolidayIcon --> <div data-bind=\\\"tooltip: {content: HolidayTooltip}\\\" class=\\\"iconBox\\\"><i class=\\\"fa fa-question-circle\\\"></i></div> <!-- /ko --> <div data-bind=\\\"html: Title,\\r\\n\\t\\t\\t\\t\\tellipsisTooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: Title,\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tisLineClampMode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tposition: {x: 'left', y: 'center'},\\r\\n \\toutside: 'x',\\r\\n \\taddClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"event-content\\\"></div> <!-- /ko --> <!-- ko if: SpecialDay --> <div data-bind=\\\"html: Country+': ' +Title\\\" class=\\\"event-content\\\"></div> <!-- /ko --> <div data-bind=\\\"html: StartTime\\\" class=\\\"event-content-left\\\"></div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data.Event.planning--> <div data-bind=\\\"style: { backgroundColor: BackgroundColor }, css: {opened: ActionToggle}\\\" class=\\\"custom-agenda-event\\\"> <div data-bind=\\\"style: TimeBeforeHeight, css:{'hidden': !TimeBefore}\\\" class=\\\"start-date\\\"></div> <div class=\\\"event-main\\\"> <div data-bind=\\\"html: Title, ellipsisTooltip: {content: Title}, preventBubble: ['mouseover']\\\" class=\\\"event-content entity-overflowed\\\"> </div> </div> <div class=\\\"agenda-links-container\\\"> <!-- ko foreach: Links --> <div class=\\\"agenda-links-body clearfix\\\"> <span class=\\\"agenda-linked-icon\\\"> <!-- ko with: IconComponent --> <!-- ko template: { name: GetTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </span> <span class=\\\"entity-name\\\"></span> <!-- ko foreach: LinkRecords --> <div data-bind=\\\"ellipsisTooltip: {content: Name},\\r\\n\\t\\t\\t\\t\\t\\t\\tclick: function(linkedRecord, event) {$parents[1].Agenda.NavigateToLinkedRecord(linkedRecord, $parent, event);}\\\" class=\\\"entity-overflowed entity-link\\\"><span data-bind=\\\"text: NameTranslation || Name\\\" class=\\\"underlined\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko with: Users --> <div class=\\\"agenda-links-body clearfix invited\\\"> <span class=\\\"agenda-linked-icon\\\"> <!-- ko with: IconComponent --> <!-- ko template: { name: GetTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </span> <span class=\\\"entity-name\\\"></span> <!-- ko foreach: LinkRecords --> <div data-bind=\\\"ellipsisTooltip: {content: $parents[1].Event.getUserTitle($data)},\\r\\n\\t\\t\\t\\t\\t\\t\\tclick: function(linkedRecord, event) {$parents[1].Agenda.NavigateToLinkedRecord(linkedRecord, $parent, event);}\\\" class=\\\"entity-overflowed entity-link\\\"><span data-bind=\\\"text: $parents[1].Event.getUserTitle($data)\\\" class=\\\"underlined\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> </div> <div data-bind=\\\"style: TimeAfterHeight, css:{'hidden': !TimeAfter}\\\" class=\\\"end-date\\\"></div> </div> <div class=\\\"actionMenuBox\\\" data-bind=\\\"css: {opened: ActionToggle}\\\"> <button class=\\\"btn btn-icon-only actionToggleMenu\\\" data-bind=\\\"click: Agenda.ActionToggleMenu.bind(Agenda, $data, event),\\r\\n\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\tcss: {opened: ActionToggle}\\\"> <!-- ko if: ActionToggle--> <i class=\\\"fa fa-times\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> <!-- ko ifnot: ActionToggle--> <i class=\\\"fa fa-bars\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> </button> <!-- ko if: ActionToggle--> <button type=\\\"button\\\" class=\\\"btn btn-icon-only btn-week\\\" data-bind=\\\"click: Agenda.ToggleAppointmentsWeekMenu,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: { opened: ShowAppointmentsWeekMenu() }\\\"> <i class=\\\"fa fa-caret-left\\\"></i> <i class=\\\"fa fa-plus\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-icon-only accept-appointment\\\" data-bind=\\\"visible: VisibleBookingsWeekButton,\\r\\n click: Agenda.ToggleBookingsWeekMenu,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: { opened: ShowBookingsWeekMenu() }\\\"> <i class=\\\"fa fa-caret-left\\\"></i> <i class=\\\"fa fa-clock-o\\\" aria-hidden=\\\"true\\\"></i> </button> <!-- ko if: ShowAppointmentsWeekMenu--> <div class=\\\"week-menu appointments-week-menu\\\"> <!-- ko foreach: AppointmentsWeekButtons --> <div class=\\\"week-menu-btn\\\" data-bind=\\\"text: Name, click: $parent.Agenda.CreateAppointmentFromPlanner.bind($parent.Agenda, $parent, $data), css:{'disabled': Disabled}\\\"></div> <!--/ko --> <div class=\\\"week-menu-btn\\\" data-bind=\\\"text: Distribute, click: Agenda.DistributeAppointmentsForPlanning.bind(Agenda, $data), css: {'disabled': !$data.AppointmentsCanBeDistributed}\\\"></div> </div> <!--/ko --> <!-- ko if: ShowBookingsWeekMenu--> <div class=\\\"week-menu bookings-week-menu\\\"> <!-- ko foreach: BookingsWeekButtons --> <div class=\\\"tooltip-wrapper\\\" data-bind=\\\"tooltip: {content: $data.DisabledReason}\\\"> <div class=\\\"week-menu-btn\\\" data-bind=\\\"\\r\\n text: Name,\\r\\n click: $parent.Agenda.BookFromPlanner.bind($parent.Agenda, $parent, $data),\\r\\n css: {'disabled': Disabled}\\\"></div> </div> <!--/ko --> </div> <!--/ko --> <!--/ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"\\\"> <div class=\\\"agenda-links-container_tooltip\\\"> <!-- ko foreach: links --> <div data-bind=\\\"css: {'invited': Name === 'SYS_USERS'}\\\" class=\\\"agenda-links-body clearfix\\\"> <span class=\\\"agenda-linked-icon\\\"> <!-- ko with: IconComponent --> <!-- ko template: { name: GetTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </span> <span class=\\\"entity-name\\\"></span> <!-- ko foreach: LinkRecords --> <div data-bind=\\\"click: function(linkedRecord, event) { $parents[1].agenda.NavigateToLinkedRecord(linkedRecord, $parent, event); }\\\" class=\\\"entity-link entity-overflowed\\\"> <span data-bind=\\\"text: NameTranslation || Name\\\" class=\\\"underlined\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"fc-widget-content fc-list-item-time custom-agenda-event custom-agenda-event--list\\\" data-bind=\\\"css: {specialDay: SpecialDay, 'isIllness': IsIllness, 'isHoliday': IsHoliday}\\\"> <span class=\\\"fc-event-resource\\\" data-bind=\\\"text: ListModeTime\\\"></span> </td> <td class=\\\"fc-widget-content fc-list-item-marker custom-agenda-event custom-agenda-event--list\\\" data-bind=\\\"css: {specialDay: SpecialDay, 'isIllness': IsIllness, 'isHoliday': IsHoliday}\\\"> <span class=\\\"fc-event-dot\\\" data-bind=\\\"style: { backgroundColor: BackgroundColor }\\\"></span> </td> <td class=\\\"fc-widget-content fc-list-item-title custom-agenda-event custom-agenda-event--list\\\" data-bind=\\\"css: {specialDay: SpecialDay, 'isIllness': IsIllness, 'isHoliday': IsHoliday}\\\"> <div class=\\\"custom-agenda-list-event--title\\\"> <!-- ko ifnot: SpecialDay --> <!-- ko if: IsHoliday && IsHolidayIcon --> <div data-bind=\\\"tooltip: {content: HolidayTooltip}\\\" class=\\\"iconBox\\\"><i class=\\\"fa fa-question-circle\\\"></i></div> <!-- /ko --> <div data-bind=\\\"html: Title,\\r\\n \\t\\t\\t\\t\\tellipsisTooltip: {\\r\\n \\t\\t\\t\\t\\t\\t\\tcontent: Title ? Title : '',\\r\\n \\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n \\t\\t\\t\\t\\t\\t\\t\\tisLineClampMode: true,\\r\\n \\t\\t\\t\\t\\t\\t\\t\\tposition: {x: 'left', y: 'center'},\\r\\n \\toutside: 'x',\\r\\n \\taddClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n \\t\\t\\t\\t\\t\\t\\t}\\r\\n \\t\\t\\t\\t\\t}\\\" class=\\\"event-content\\\"></div> <!-- <div data-bind=\\\"html: Title\\\" class=\\\"event-content\\\"></div>--> <!-- /ko --> <!-- ko if: SpecialDay --> <div data-bind=\\\"html: Country+': ' +Title\\\" class=\\\"event-content\\\"></div> <!-- /ko --> </div> <!--ko if: !!Description && EnableTooltip --> <div class=\\\"custom-agenda-event__descriptionButton\\\"> <span class=\\\"info-circle\\\" data-bind=\\\"\\r\\n tooltip: {\\r\\n content: Description,\\r\\n position: {x: 'right', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip custom-agenda-event__descriptionTooltip jBox-padding-5px'\\r\\n },\\r\\n style: { backgroundColor: BackgroundColor },\\r\\n preventBubble: ['mouseover']\\\"> <i class=\\\"fa fa-info\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!--/ko--> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { backgroundColor: BackgroundColor }, css: {opened: ActionToggle, specialDay: SpecialDay}\\\" class=\\\"custom-agenda-event custom-agenda-time-event\\\"> <!-- ko ifnot: SpecialDay --> <!--\\t<div data-bind=\\\"style: TimeBeforeHeight, css:{'hidden': !TimeBefore}\\\" class=\\\"start-date\\\"></div>--> <!-- /ko --> <div class=\\\"event-main\\\" data-bind=\\\"css:{'isIllness': IsIllness, 'isHoliday': IsHoliday}\\\"> <!-- ko ifnot: SpecialDay --> <!-- ko if: IsHoliday && IsHolidayIcon --> <div data-bind=\\\"tooltip: {content: HolidayTooltip}\\\" class=\\\"iconBox\\\"><i class=\\\"fa fa-question-circle\\\"></i></div> <!-- /ko --> <div data-bind=\\\"html: Title,\\r\\n\\t\\t\\t\\t\\t\\t\\tellipsisTooltip: {\\r\\n \\t\\t\\t\\t\\t\\t\\t\\tcontent: Title,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tisLineClampMode: true\\r\\n\\t\\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\\tpreventBubble: ['mouseover']\\\" class=\\\"event-content line-clamp-overflowed\\\"></div> <!-- /ko --> <!-- ko if: SpecialDay --> <div data-bind=\\\"tippy: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: Country+': ' +Title,\\r\\n\\t\\t\\t\\t\\t\\t\\ttheme: 'light',\\r\\n\\t\\t\\t\\t\\t\\t\\tfollowCursor: true\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\\" class=\\\"event-content entity-overflowed title\\\"> </div> <!-- /ko --> </div> <!-- ko if: Links --> <div class=\\\"agenda-links-container\\\"> <!-- ko foreach: Links --> <div data-bind=\\\"css: {'invited': Name === 'SYS_USERS'}\\\" class=\\\"agenda-links-body clearfix\\\"> <span class=\\\"agenda-linked-icon\\\"> <!-- ko with: IconComponent --> <!-- ko template: { name: GetTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </span> <span class=\\\"entity-name\\\"></span> <!-- ko foreach: LinkRecords --> <div data-bind=\\\"click: function(linkedRecord, event) { $parents[1].Agenda.NavigateToLinkedRecord(linkedRecord, $parent, event); }\\\" class=\\\"entity-link\\\"><span data-bind=\\\"text: NameTranslation || Name\\\" class=\\\"underlined\\\"></span></div> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: SpecialDay --> <!--\\t<div data-bind=\\\"style: TimeAfterHeight, css:{'hidden': !TimeAfter}\\\" class=\\\"end-date\\\"></div>--> <!-- /ko --> </div> <!--ko if: !$data.Event.allDay && !$data.Event.specialDay --> <div class=\\\"actionMenuBox\\\" data-bind=\\\"css: {opened: ActionToggle}\\\"> <button class=\\\"btn btn-icon-only actionToggleMenu\\\" data-bind=\\\"click: Agenda.ActionToggleMenu.bind(Agenda, $data, event),\\r\\n\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\tcss: {opened: ActionToggle}\\\"> <!-- ko if: ActionToggle--> <i class=\\\"fa fa-times\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> <!-- ko ifnot: ActionToggle--> <i class=\\\"fa fa-bars\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> </button> <!-- ko if: ActionToggle--> <button class=\\\"btn btn-icon-only btn-replanning\\\" data-bind=\\\"click: Agenda.GoToScheduler.bind(Agenda, $data, event),\\r\\n\\t\\t\\t\\t\\t\\tcss: { 'disabled': !Editable},\\r\\n\\t\\t\\t\\t\\t\\ttooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: Agenda._labels.CLICK_TO_RESCHEDULE,\\r\\n\\t\\t\\t\\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tx: 'left',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ty: 'center'\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\t\\taddClass: 'jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor }\\\"><i class=\\\"fa fa-retweet\\\"></i></button> <!--ko if: !Accepted--> <button class=\\\"btn btn-icon-only accept-appointment\\\" data-bind=\\\"attr:{disabled: !$data.PossibleToAccept() || $data.Accepting()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcss: {'hidden': !$data.PossibleToAccept() || $data.Accepting()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcontent: $data.PossibleToAccept() ? Agenda._labels.BOOK_TIME : Agenda._labels.STARTING_DATE_IS_OUT_OF_FREEZE_TIME,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tx: 'left',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ty: 'center'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taddClass: 'jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tclick: Agenda.AcceptAppointment.bind(Agenda, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['click']\\\"><i class=\\\"fa fa-clock-o\\\" aria-hidden=\\\"true\\\"></i></button> <!--/ko--> <!--ko if: !$data.PossibleToAccept() || $data.Accepting() --> <span class=\\\"btn btn-icon-only accept-appointment cursorDisabled\\\" data-bind=\\\"tooltip: {\\r\\n\\t\\t \\t\\t\\t\\tcontent: Agenda._labels.CANNOT_ACCEPT_APPOINTMENT,\\r\\n\\t\\t \\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\t\\tx: 'left',\\r\\n\\t\\t\\t\\t\\t\\t\\ty: 'center'\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\taddClass: 'jBox-padding-5px'\\r\\n\\t\\t \\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\tpreventBubble: ['click']\\\"><i class=\\\"fa fa-clock-o\\\" aria-hidden=\\\"true\\\"></i></span> <!--/ko --> <!--ko if: $data.RecurrentRecordId --> <button class=\\\"btn btn-icon-only btn-recurrence-pattern\\\" data-bind=\\\"tooltip: {content: Agenda._labels.RECURRENCE_PATTERN},\\r\\n\\t\\t\\t\\t\\t style: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t click: Agenda.EditRecurrent.bind(Agenda, $data.RecurrentRecordId),\\r\\n\\t\\t\\t\\t\\t preventBubble: ['click']\\\"><i class=\\\"fa fa-refresh\\\"></i></button> <!--/ko --> <!--/ko --> </div> <!--/ko--> <!--ko if: !!Description && EnableTooltip --> <div class=\\\"custom-agenda-event__descriptionButton\\\"> <span class=\\\"info-circle\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcontent: Description,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tposition: {x: 'right', y: 'center'},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taddClass: 'ellipsis-tooltip custom-agenda-event__descriptionTooltip jBox-padding-5px'\\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\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['mouseover']\\\"> <i class=\\\"fa fa-info\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\nimport * as _ from \"underscore\";\r\nimport 'fullcalendar';\r\nimport 'jquery';\r\n\r\nimport {AGENDA_LIFE_STATUSES, AGENDA_TYPES} from \"Core/Constants/AgendaTypes\";\r\nimport {LifeStatuses} from \"Core/Enums/LifeStatuses\";\r\nimport {P} from 'Core/Common/Promise';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {AgendaDataStore, ICreateAppointmentFromTodoRequestModel} from 'Core/Controls/Agenda/Stores/AgendaDataStore';\r\nimport {\r\n CONTROL_TYPES,\r\n DEFAULT_ICONS,\r\n FIELD_TYPES,\r\n RenderModes,\r\n SYSTEM_TABLE_NAMES,\r\n TABLE_TYPES,\r\n LIFE_STATUS_GROUPS\r\n} from 'Core/Constant';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {ScreenDataModel} from 'Core/ScreenManager/Models/ScreenDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport {RequiredFieldModel} from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport {TableTypesModel} from 'Core/Screens/TypeScreen/Models/TableTypesModel';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {\r\n AgendaItemModel,\r\n AgendaItemPerDay,\r\n DaysSchedule,\r\n LinkRecord,\r\n LinkTableModel\r\n} from 'Core/Controls/Agenda/Models/AgendaItemModel';\r\nimport {UserEntityRelationsViewModel} from 'Core/Controls/LinkList/Models/LinkListRelationsViewModel';\r\nimport {PlanningItemModel, PlannerItemWeekButton, UserProgress} from 'Core/Controls/Agenda/Models/PlanningItemModel'\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {RecordStore} from 'Core/Screens/Stores/RecordStore';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {\r\n DeletionModeDialog,\r\n EVENTS as DELETION_MODE_DIALOG_EVENTS\r\n} from 'Core/Components/Dialogs/DeletionModeDialog/DeletionModeDialog';\r\nimport {DeletionModeModel} from \"Core/Screens/Models/DeletionModeModel\";\r\nimport {Tooltip} from 'Core/Common/Tooltip';\r\nimport {UserManager} from 'User/UserManager';\r\nimport {Icon} from 'Core/Icon/Icon';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {ColorConverter} from \"Core/Components/ColorSelector/ColorConverter\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\nimport {FullCalendarCultures} from 'Core/FullCalendar/FullCalendarCultures';\r\n\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {Tab} from \"../Tab/Tab\";\r\nimport {TabPage} from \"../TabPage/TabPage\";\r\nimport {Scheduler} from \"../Scheduler/Scheduler\";\r\nimport {DataModes} from 'Core/Enums/DataModes';\r\nimport {FollowUpRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel\";\r\nimport {TABLE_SECURITY_WORDS} from \"Core/Constants/TableSecurityWords\";\r\nimport {SECURITY_LEVELS} from \"Core/Constants/SecurityLevels\";\r\nimport {IControlValue} from \"../BaseControl/BaseControl\";\r\nimport {UserVarsManager} from \"../../UserVarsManager/UserVarsManager\";\r\nimport {SelectUser} from '../SelectUser/SelectUser';\r\nimport {SelectUserFormModel} from 'Core/Controls/SelectUser/Models/SelectUserFormModel';\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList';\r\nimport {NewRelationModel} from \"Core/Controls/LinkList/Models/NewRelationModel\";\r\nimport {FollowupModes} from 'Core/Constants/FollowupModes';\r\n\r\nimport {GeneralProperties} from \"../../GeneralProperties/GeneralProperties\";\r\nimport AgendaConfig from 'Core/Controls/Agenda/Configs/agenda-config.json';\r\nimport {PROPERTIES} from \"./Constants\";\r\nimport { ILinkedResources, IRePlanningData } from 'Core/Controls/Scheduler/Interfaces';\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\n\r\n//Templates\r\nimport ViewTemplate from 'Core/Controls/Agenda/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/Agenda/Templates/ToolBar.html';\r\nimport EventTemplate from 'Core/Controls/Agenda/Templates/EventTemplate.html';\r\nimport EventMonthTemplate from 'Core/Controls/Agenda/Templates/EventMonthTemplate.html';\r\nimport PlanningTemplate from 'Core/Controls/Agenda/Templates/PlanningTemplate.html';\r\nimport LinksTooltipTemplate from 'Core/Controls/Agenda/Templates/LinksTooltip.html';\r\nimport EventListTemplate from 'Core/Controls/Agenda/Templates/EventListTemplate.html';\r\nimport EventTimeTemplate from 'Core/Controls/Agenda/Templates/EventTimeTemplate.html';\r\nimport {TableTypeModel} from \"../../Screens/TypeScreen/Models/TableTypeModel\";\r\n\r\nko.templates['Core/Controls/Agenda/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/List'] = ViewTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/Design'] = ComplexControl.designTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/EventTemplate'] = EventTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/EventMonthTemplate'] = EventMonthTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/PlanningTemplate'] = PlanningTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/LinksTooltip'] = LinksTooltipTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/EventListTemplate.html'] = EventListTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/EventTimeTemplate.html'] = EventTimeTemplate;\r\n\r\nconst FULL_CALENDAR_VIEW = {\r\n MONTH: 'month',\r\n AGENDA_WEEK: 'agendaWeek',\r\n AGENDA_FIVE_DAY: 'agendaFiveDay',\r\n AGENDA_DAY: 'agendaDay',\r\n AGENDA_LIST_WEEK : 'listWeek',\r\n AGENDA_TIME_LINE_WEEK: 'timelineWeek'\r\n};\r\nconst DEFAULT_APPOINTMENT_DURATION = 30;\r\n\r\n(moment as any).createFromInputFallback = config => {\r\n config._d = new Date(config._i);\r\n};\r\n\r\nfunction isMobileWidth() {\r\n return $(window).width() <= 700;\r\n}\r\n\r\nexport class Agenda extends ComplexControl {\r\n private _value: KnockoutObservable<string>;\r\n private _firstFreezeTimeDate: moment.Moment;\r\n private _loadInProgress: KnockoutObservable<boolean>;\r\n private _checkedRemoveToDo: KnockoutObservable<boolean>;\r\n private _calendarEvents: KnockoutObservableArray<any>;\r\n private _isVisibleTodoBlock: KnockoutObservable<boolean>;\r\n private _tablesTypes: TableTypesModel;\r\n private _allEvents: Array<AgendaItemModel>;\r\n private _plannings: Array<PlanningItemModel>;\r\n private _agendaItemsPerDay: Array<AgendaItemPerDay>;\r\n private _todoEvents: KnockoutObservableArray<AgendaItemModel>;\r\n private _recordTypeField: AttachedFieldModel;\r\n private _recordNameField: AttachedFieldModel;\r\n private _startDateField: AttachedFieldModel;\r\n private _eventColorField: AttachedFieldModel;\r\n private _timeBeforeField: AttachedFieldModel;\r\n private _timeAfterField: AttachedFieldModel;\r\n private _natureField: AttachedFieldModel;\r\n private _placeField: AttachedFieldModel;\r\n private _durationField: AttachedFieldModel;\r\n private _descriptionField: AttachedFieldModel;\r\n private _endingField: AttachedFieldModel;\r\n private _completenessField: AttachedFieldModel;\r\n private _enableTooltip: boolean;\r\n private _todoEventName: KnockoutObservable<string>;\r\n private _todoToAppointmentItem: AgendaItemModel;\r\n private _selectedUsers: number[];\r\n private _appointmentAttendees: KnockoutObservable<SelectUserFormModel>;\r\n private _showPlanned: boolean;\r\n private _owners: KnockoutObservableArray<any>;\r\n private _groupByResource: KnockoutObservable<boolean>;\r\n private _isInteractionWithUserSelect: KnockoutObservable<boolean>;\r\n private _timeoutId: number;\r\n private _disableDropEvtsBtwnDiffRes: boolean;\r\n private _selectedStartDate: string;\r\n private _selectedEndDate: string;\r\n private _viewRenderMode: string;\r\n private _appointmentEvents: Array<AgendaItemModel>;\r\n private _businessHours: any;\r\n private _specialDays: KnockoutObservableArray<any>;\r\n private _currentDay: any;\r\n private _isReturned: boolean;\r\n private _controlId: number;\r\n private _viewModels: KnockoutObservableArray<any>;\r\n private _isDataLoaded: boolean;\r\n protected _isRendered: KnockoutObservable<boolean>;\r\n private _agendaViewContainer: any;\r\n\r\n private _isToDoVisible: KnockoutObservable<boolean>;\r\n private _isSpecialDayVisible: KnockoutObservable<boolean>;\r\n private _isRequestLeaveVisible: KnockoutObservable<boolean>;\r\n private _isReportIllnessVisible: KnockoutObservable<boolean>;\r\n private _isRecurrentVisible: KnockoutObservable<boolean>;\r\n private _isSmallAppointments: boolean;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, AgendaConfig);\r\n\r\n this._calendarEvents = ko.observableArray([]);\r\n this._isVisibleTodoBlock = ko.observable(false);\r\n this._allEvents = [];\r\n this._todoEvents = ko.observableArray([]);\r\n this._todoEventName = ko.observable('');\r\n this._selectedUsers = [];\r\n this._appointmentAttendees = ko.observable(null);\r\n this._loadInProgress = ko.observable(false);\r\n this._checkedRemoveToDo = ko.observable(false);\r\n this._enableTooltip = true;\r\n this._owners = ko.observableArray([]);\r\n this._groupByResource = ko.observable(false);\r\n this._isInteractionWithUserSelect = ko.observable(null);\r\n this._timeoutId = null;\r\n this._disableDropEvtsBtwnDiffRes = false; //Disable drop events between different Resources/Groups/Owners\r\n this._viewRenderMode = FULL_CALENDAR_VIEW.AGENDA_FIVE_DAY;\r\n this._appointmentEvents = [];\r\n this._viewModels = ko.observableArray([]);\r\n this._businessHours = ko.observable(false);\r\n this._specialDays = ko.observableArray([]);\r\n this._currentDay = new Date();\r\n this._isDataLoaded = false;\r\n this._isReturned = false;\r\n this._agendaViewContainer = null;\r\n this._controlId = params.Model.Id;\r\n this._isSmallAppointments = false;\r\n\r\n this.Init();\r\n }\r\n\r\n private Init(): void {\r\n if (this.GetRenderMode() !== RenderModes.Design && this.GetRenderMode() !== RenderModes.ToolBar) {\r\n [\r\n this._recordNameField,\r\n this._recordTypeField,\r\n this._natureField,\r\n this._placeField,\r\n this._startDateField,\r\n this._durationField,\r\n this._eventColorField,\r\n this._timeBeforeField,\r\n this._timeAfterField,\r\n this._descriptionField,\r\n this._endingField,\r\n this._completenessField\r\n ] = this._model().Fields;\r\n }\r\n\r\n this._requiredFields([\r\n new RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_NATURE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_PLACE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('STARTING', FIELD_TYPES.DateTime, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('DURATION', FIELD_TYPES.TimeSpan, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('COLOR', FIELD_TYPES.Color, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('TIMEBEFORE', FIELD_TYPES.TimeSpan, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('TIMEAFTER', FIELD_TYPES.TimeSpan, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('MEMO', FIELD_TYPES.Memo, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('ENDING', FIELD_TYPES.DateTime, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('COMPLETENESS', FIELD_TYPES.Decimal, TABLE_TYPES.Entity, null)\r\n ]);\r\n\r\n this.ApplyProperties();\r\n this.InitRequiredFields();\r\n\r\n if (this._renderMode() === RenderModes.View) {\r\n const screen = this._form && this._form.GetScreen();\r\n\r\n screen.On('UsersSelectionChanged', this, eventArgs => {\r\n const uniqueGroupIds = _.uniq(_.pluck(eventArgs.data.SelectedUsersAndGroups, 'GroupId'));\r\n const uniqueUserIds = _.uniq(_.flatten(_.pluck(eventArgs.data.SelectedUsersAndGroups, 'UserIds')));\r\n\r\n this._selectedUsers = _.union(uniqueGroupIds, uniqueUserIds);\r\n if (this._selectedUsers && this._selectedUsers.length > 0) {\r\n this._selectedUsers = this._selectedUsers.filter(userId => userId !== null);\r\n }\r\n this._showPlanned = eventArgs.data.ShowPlanned;\r\n\r\n let appointmentAttendees = eventArgs.data.AppointmentAttendees;\r\n if (appointmentAttendees?.UserGroups.length === 0 && appointmentAttendees?.Users.length === 0) {\r\n appointmentAttendees = null;\r\n }\r\n this._appointmentAttendees(appointmentAttendees ? new SelectUserFormModel(appointmentAttendees) : null);\r\n\r\n if (this._selectedUsers.length === 0) {\r\n this._selectedUsers.push(UserManager.Instance.CurrentUser.Id);\r\n }\r\n\r\n if (this._selectedStartDate && this._selectedEndDate && this._isRendered()) {\r\n this.Clean(this._agendaViewContainer);\r\n this._isInteractionWithUserSelect(true);\r\n\r\n if (!this._appointmentAttendees()) {\r\n this._isInteractionWithUserSelect(false);\r\n }\r\n\r\n this.LoadData(this._isInteractionWithUserSelect());\r\n }\r\n });\r\n\r\n this.AddEvent('AGENDA_CHANGED');\r\n this.On('AGENDA_CHANGED', this, () => screen.Trigger('AGENDA_CHANGED'));\r\n\r\n if (this._selectedUsers.length === 0) {\r\n this._selectedUsers.push(UserManager.Instance.CurrentUser.Id);\r\n }\r\n }\r\n\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.Agenda));\r\n }\r\n\r\n get IsWeekView() {\r\n return this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_WEEK;\r\n }\r\n\r\n get IsWorkWeekView() {\r\n return this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_FIVE_DAY;\r\n }\r\n\r\n ApplyProperties() {\r\n this._isToDoVisible = this.GeneralProperties.GetPropertyValue(PROPERTIES.TODO);\r\n this._isSpecialDayVisible = this.GeneralProperties.GetPropertyValue(PROPERTIES.SPECIAL_DAY);\r\n this._isRequestLeaveVisible = this.GeneralProperties.GetPropertyValue(PROPERTIES.REQUEST_LEAVE);\r\n this._isReportIllnessVisible = this.GeneralProperties.GetPropertyValue(PROPERTIES.REPORT_ILLNESS);\r\n this._isRecurrentVisible = this.GeneralProperties.GetPropertyValue(PROPERTIES.ADD_RECURRENT);\r\n this._isSmallAppointments = this.GeneralProperties.GetPropertyValue(PROPERTIES.SMALL_APPOINTMENTS);\r\n }\r\n\r\n SetLastDate() {\r\n const lastDate = UserVarsManager.Instance.GetAgendaDate(this._controlId);\r\n if (lastDate) {\r\n this._selectedStartDate = moment(lastDate).format();\r\n } else {\r\n this.SetDate(this._controlId, this._selectedStartDate);\r\n }\r\n }\r\n\r\n SetDate(controlId: number, date: string) {\r\n UserVarsManager.Instance.SetAgendaDate(controlId, date);\r\n const screen = this._form && this._form.GetScreen();\r\n const schedulers = screen.GetControlsByType(CONTROL_TYPES.Scheduler);\r\n\r\n _.each(schedulers, scheduler => {\r\n UserVarsManager.Instance.SetSchedulerDate(scheduler.GetControlId(), date);\r\n });\r\n }\r\n\r\n\r\n private Clean(element?: JQuery) {\r\n this._todoEvents([]);\r\n this._allEvents = [];\r\n this._calendarEvents([]);\r\n this._owners([]);\r\n this._businessHours = ko.observable(false);\r\n\r\n if (element){\r\n element.find('.fc-nonbusiness').remove();\r\n }\r\n }\r\n\r\n private SetSpecialDays(userSpecialDays: Array<any>) {\r\n if (userSpecialDays.length > 0 && this._viewRenderMode !== FULL_CALENDAR_VIEW.AGENDA_DAY) {\r\n let dataspecialDays = userSpecialDays[0].SpecialDays;\r\n let specialDays = [];\r\n _.each(dataspecialDays, (day: any) => {\r\n if (day.FreeDay) {\r\n let date = FormatConverter.FormatToDay(day.Date);\r\n let start = date.format(DATE_FORMATS.FULL_DATETIME.Format);\r\n let end = date.add(1, 'days').format(DATE_FORMATS.FULL_DATETIME.Format);\r\n specialDays.push({\r\n title: day.Name,\r\n start: start,\r\n end: end,\r\n rendering: 'background',\r\n backgroundColor: 'red',\r\n country: day.Country && day.Country.Name,\r\n allDay: false,\r\n specialDay: true\r\n })\r\n }\r\n\r\n if (this._viewRenderMode === FULL_CALENDAR_VIEW.MONTH) {\r\n _.each(specialDays, (value: any) => {\r\n value.allDay = true;\r\n });\r\n }\r\n });\r\n this._specialDays(specialDays);\r\n } else {\r\n this._specialDays([]);\r\n }\r\n }\r\n\r\n private SetUsersSchedule(usersSchedule: Array<any>) {\r\n if (usersSchedule.length === 1 && this._viewRenderMode !== FULL_CALENDAR_VIEW.AGENDA_DAY) {\r\n let daysSchedule = usersSchedule[0].DaysSchedule;\r\n let businessHours = [];\r\n _.each(daysSchedule, (day: DaysSchedule) => {\r\n const start = moment(FormatConverter.CorrectTimezone(day.Starting));\r\n const end = moment(FormatConverter.CorrectTimezone(day.Ending));\r\n const weekday = start.day();\r\n businessHours.push({\r\n dow: [weekday],\r\n start: start.format(DATE_FORMATS.TIME.Format),\r\n end: end.format(DATE_FORMATS.TIME.Format)\r\n });\r\n });\r\n this._businessHours = ko.observableArray(businessHours);\r\n\r\n } else {\r\n this._businessHours = ko.observable(false);\r\n }\r\n }\r\n\r\n private SetAgendaDayData(agendaItemsPerDay, tablesTypes, usersSchedule, userSpecialDays) {\r\n this._agendaItemsPerDay = agendaItemsPerDay;\r\n this._tablesTypes = tablesTypes;\r\n this._allEvents = [];\r\n this._agendaItemsPerDay.map((agendaPerDay) => {\r\n agendaPerDay.Item.SharedWith = {\r\n UserId: agendaPerDay.UserId,\r\n Name: agendaPerDay.Name\r\n };\r\n this._allEvents.push(agendaPerDay.Item);\r\n });\r\n\r\n _.each(this._agendaItemsPerDay, (item: any) => {\r\n let currentSpecialDay = _.find(userSpecialDays, (user: any) => {\r\n return item.UserId === user.UserId;\r\n });\r\n\r\n item.FreeDay = false;\r\n\r\n if (currentSpecialDay && currentSpecialDay.SpecialDays.length) {\r\n let currentDay = _.find(currentSpecialDay.SpecialDays, (day: any) => {\r\n let date = FormatConverter.FormatToDay(day.Date, DATE_FORMATS.SHORT_DATE.Format);\r\n return this._currentDay === date;\r\n });\r\n\r\n if (currentDay) {\r\n item.FreeDay = currentDay.FreeDay;\r\n let date = FormatConverter.FormatToDay(currentDay.Date);\r\n\r\n item.SpecialDayStart = date.format(DATE_FORMATS.FULL_DATETIME.Format);\r\n item.SpecialDayEnd = date.add(1, 'days').format(DATE_FORMATS.FULL_DATETIME.Format);\r\n }\r\n }\r\n\r\n let current = _.find(usersSchedule, (user: any) => {\r\n return item.UserId === user.UserId;\r\n });\r\n\r\n if (current && current.DaysSchedule.length) {\r\n const daySchedule = _.find(current.DaysSchedule, (schedule: any) => {\r\n const date = moment(schedule.Starting).format(DATE_FORMATS.SHORT_DATE.Format);\r\n return this._currentDay === date;\r\n });\r\n\r\n if (daySchedule) {\r\n const start = moment(FormatConverter.CorrectTimezone(daySchedule.Starting));\r\n const end = moment(FormatConverter.CorrectTimezone(daySchedule.Ending));\r\n\r\n item.Start = start.format(DATE_FORMATS.TIME.Format);\r\n item.End = end.format(DATE_FORMATS.TIME.Format);\r\n }\r\n }\r\n\r\n item.Rendering = 'background';\r\n item.BackgroundColor = 'red';\r\n });\r\n\r\n }\r\n\r\n private SetAgendaWeakOrWorkWeekData(agendaItemsPerDay, tablesTypes, usersSchedule, userSpecialDays) {\r\n this._agendaItemsPerDay = agendaItemsPerDay;\r\n this._tablesTypes = tablesTypes;\r\n this._allEvents = [];\r\n this._agendaItemsPerDay.map((agendaPerDay: AgendaItemPerDay) => {\r\n agendaPerDay.Item.SharedWith = {\r\n UserId: agendaPerDay.UserId,\r\n Name: agendaPerDay.Name\r\n };\r\n this._allEvents.push(agendaPerDay.Item);\r\n });\r\n\r\n _.each(this._agendaItemsPerDay, (item: AgendaItemPerDay) => {\r\n let currentSpecialDay = _.find(userSpecialDays, (user: any) => {\r\n return item.UserId === user.UserId;\r\n });\r\n\r\n item.FreeDay = false;\r\n\r\n if (currentSpecialDay && currentSpecialDay.SpecialDays.length) {\r\n let currentDay = _.find(currentSpecialDay.SpecialDays, (day: any) => {\r\n let date = FormatConverter.FormatToDay(day.Date, DATE_FORMATS.SHORT_DATE.Format);\r\n return this._currentDay === date;\r\n });\r\n\r\n if (currentDay) {\r\n item.FreeDay = currentDay.FreeDay;\r\n let date = FormatConverter.FormatToDay(currentDay.Date);\r\n\r\n item.SpecialDayStart = date.format(DATE_FORMATS.FULL_DATETIME.Format);\r\n item.SpecialDayEnd = date.add(1, 'days').format(DATE_FORMATS.FULL_DATETIME.Format);\r\n }\r\n }\r\n\r\n let current = _.find(usersSchedule, (user: any) => {\r\n return item.UserId === user.UserId;\r\n });\r\n\r\n if (current && current.DaysSchedule.length) {\r\n const daySchedule = _.find(current.DaysSchedule, (schedule: any) => {\r\n const date = moment(schedule.Starting).format(DATE_FORMATS.SHORT_DATE.Format);\r\n\r\n return this._currentDay === date;\r\n });\r\n\r\n if (daySchedule) {\r\n const start = moment(FormatConverter.CorrectTimezone(daySchedule.Starting));\r\n const end = moment(FormatConverter.CorrectTimezone(daySchedule.Ending));\r\n\r\n item.Start = start.format(DATE_FORMATS.TIME.Format);\r\n item.End = end.format(DATE_FORMATS.TIME.Format);\r\n }\r\n }\r\n\r\n item.Rendering = 'background';\r\n item.BackgroundColor = 'red';\r\n });\r\n\r\n }\r\n\r\n GetShortDateFormat() {\r\n return DATE_FORMATS.SHORT_DATE['Format'];\r\n }\r\n\r\n GetMonthAndYearFormat() {\r\n return DATE_FORMATS.MONTH_AND_YEAR['Format'];\r\n }\r\n\r\n LoadData(groupByResource: boolean = false): P.Promise<any> {\r\n this.RemoveDuplicatesNonBusiness();\r\n\r\n this._loadInProgress(true);\r\n\r\n const params = {\r\n ControlId: this.GetControlId(),\r\n UsersId: this._selectedUsers,\r\n ShowPlanned: this._showPlanned,\r\n SubjectId: this.GetForm().GetScreen().GetEntityId(),\r\n SubjectRecordId: this.GetForm().GetScreen().GetRecordId(),\r\n StartDate: this._selectedStartDate,\r\n EndDate: this._selectedEndDate,\r\n\r\n GetScheduleRequestModel: {\r\n StartDate: FormatConverter.ShiftTimeZone(this._selectedStartDate),\r\n EndDate: FormatConverter.ShiftTimeZone(this._selectedEndDate),\r\n UsersId: this._selectedUsers\r\n },\r\n GetSpecialDaysRequestModel: {\r\n StartDate: this._selectedStartDate,\r\n EndDate: this._selectedEndDate,\r\n UsersId: this._selectedUsers\r\n },\r\n GetTableTypesModel: {\r\n EntityId: this.FieldModel.EntityId,\r\n ParentTypeId: 0,\r\n WithRoot: false,\r\n OnlyEnabled: true\r\n }\r\n };\r\n\r\n var deferredResult = P.defer<any>();\r\n\r\n AgendaDataStore.GetData(params)\r\n .always(() => {\r\n this._loadInProgress(false);\r\n })\r\n .then((data: any) => {\r\n const {\r\n AGENDA_DAY,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_WEEK,\r\n AGENDA_LIST_WEEK,\r\n AGENDA_TIME_LINE_WEEK\r\n } = FULL_CALENDAR_VIEW;\r\n const isAgendaDayOrListOrTime = [AGENDA_DAY, AGENDA_LIST_WEEK, AGENDA_TIME_LINE_WEEK].includes(this._viewRenderMode);\r\n const isAgendaWeakOrWorkWeek = [AGENDA_WEEK, AGENDA_FIVE_DAY].includes(this._viewRenderMode);\r\n\r\n this._firstFreezeTimeDate = moment(data.FirstFreezeTimeDate);\r\n\r\n let userSpecialDays = data.UserSpecialDays.UserSpecialDays;\r\n let usersSchedule = data.UserSchedule.UsersSchedule;\r\n\r\n this.SetSpecialDays(userSpecialDays);\r\n this.SetUsersSchedule(usersSchedule);\r\n\r\n this._allEvents = data.AgendaItems;\r\n\r\n if (isAgendaDayOrListOrTime) {\r\n const { AgendaItemsPerDay, TableTypes } = data;\r\n this.SetAgendaDayData(AgendaItemsPerDay, TableTypes, usersSchedule, userSpecialDays);\r\n if (this._isDataLoaded || !isMobileWidth()) {\r\n this.ShowToDoBlock();\r\n }\r\n } else if (isAgendaWeakOrWorkWeek){\r\n const { AgendaItemsPerDay, TableTypes } = data;\r\n this.SetAgendaWeakOrWorkWeekData(AgendaItemsPerDay, TableTypes, usersSchedule, userSpecialDays);\r\n } else {\r\n this._plannings = data.PlanningItems;\r\n this._tablesTypes = data.TableTypes;\r\n }\r\n this.mapOwnersList();\r\n this.PrepareData();\r\n this._isDataLoaded = true;\r\n deferredResult.resolve(null);\r\n this._groupByResource(groupByResource);\r\n this.CustomScrollToHour(8);\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n this.Clean();\r\n deferredResult.reject({message: error.message});\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n mapOwnersList() {\r\n let ids = [];\r\n let owners = {};\r\n\r\n const {\r\n AGENDA_WEEK,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_DAY,\r\n AGENDA_LIST_WEEK,\r\n AGENDA_TIME_LINE_WEEK\r\n } = FULL_CALENDAR_VIEW;\r\n const isAgendaDayOrListOrTime = [AGENDA_DAY, AGENDA_LIST_WEEK, AGENDA_TIME_LINE_WEEK].includes(this._viewRenderMode);\r\n const isAgendaWeakOrWorkWeek = [AGENDA_WEEK, AGENDA_FIVE_DAY].includes(this._viewRenderMode);\r\n\r\n if (isAgendaDayOrListOrTime) {\r\n this._agendaItemsPerDay.forEach((el) => {\r\n ids.push(el.UserId);\r\n\r\n owners[el.UserId] = {\r\n id: el.UserId,\r\n title: el.Name,\r\n businessHours: {\r\n start: el.Start || '00:00',\r\n end: el.End || '00:00'\r\n },\r\n freeDay: el.FreeDay,\r\n start: el.SpecialDayStart,\r\n end: el.SpecialDayEnd\r\n };\r\n });\r\n\r\n } else if (isAgendaWeakOrWorkWeek) {\r\n\r\n this._agendaItemsPerDay.forEach((el) => {\r\n ids.push(el.UserId);\r\n\r\n owners[el.UserId] = {\r\n id: el.UserId,\r\n title: el.Name,\r\n businessHours: {\r\n start: el.Start || '00:00',\r\n end: el.End || '00:00'\r\n }\r\n // freeDay: el.FreeDay,\r\n // start: el.SpecialDayStart,\r\n // end: el.SpecialDayEnd\r\n };\r\n });\r\n\r\n } else {\r\n this._allEvents.forEach((el) => {\r\n ids.push(el.Owner.Id);\r\n owners[el.Owner.Id] = {'id': el.Owner.Id, 'title': el.Owner.Name};\r\n });\r\n }\r\n\r\n ids = _.uniq(ids);\r\n this._owners(ids.map((id) => owners[id]));\r\n\r\n\r\n if (this._timeoutId) {\r\n // console.log('clear Timeout - '+ this._timeoutId);\r\n clearTimeout(this._timeoutId);\r\n }\r\n if (isAgendaWeakOrWorkWeek) {\r\n const days = this._viewRenderMode === AGENDA_FIVE_DAY ? 5 :\r\n this._viewRenderMode === AGENDA_WEEK ? 7 : null;\r\n if (days) {\r\n let minColumnWidth = this._isSmallAppointments ? 20 : 100;\r\n this._timeoutId = setTimeout(() => {\r\n this.SetCellMinWidthOfDays(minColumnWidth, days);\r\n }, 200);\r\n // console.log('timeoutId - '+this._timeoutId)\r\n }\r\n } else if (this._viewRenderMode === AGENDA_DAY) {\r\n this._timeoutId = setTimeout(() => {\r\n this.SetCellMinWidthOfDays(200);\r\n }, 200);\r\n }\r\n }\r\n\r\n private RemoveDuplicatesNonBusiness() {\r\n if (this._groupByResource() && this._agendaViewContainer){\r\n const element = this._agendaViewContainer.find('.fc-time-grid-container .fc-content-skeleton');\r\n $(element).remove();\r\n }\r\n }\r\n\r\n private SetCellMinWidthOfDays(minColumnWidth: number, days: number = 1): void {\r\n const minColumnW: number = minColumnWidth;\r\n const numberOfDays = days;\r\n const $el = $(this._el);\r\n const elW = $el.width();\r\n const ownersQty = this._owners().length * numberOfDays;\r\n const minWidth = minColumnW * ownersQty;\r\n let agendaWeekWorkWekDay = $el.find('.fc-agendaFiveDay-view, .fc-agendaWeek-view, .fc-agendaDay-view');\r\n\r\n agendaWeekWorkWekDay.css('min-width', minWidth > elW ? minWidth + 'px' : 'unset');\r\n }\r\n\r\n private PrepareData() {\r\n const todoEvents: Array<AgendaItemModel> = [];\r\n const appointmentEvents: Array<AgendaItemModel> = [];\r\n\r\n const appoitmentType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Appointment);\r\n\r\n const todoType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Todo);\r\n\r\n const taskType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Task);\r\n\r\n const holidayType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Holiday);\r\n\r\n const illnessType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Illness);\r\n\r\n const calendarEvents = [];\r\n\r\n if (this._allEvents.length > 0) {\r\n _.each(this._allEvents, event => {\r\n _.each(event.Values, value => {\r\n if (value.FieldTypeName === FIELD_TYPES.DateTime || value.FieldTypeName === FIELD_TYPES.Time) {\r\n value.Value = FormatConverter.CorrectTimezone(value.Value, false);\r\n }\r\n\r\n if (value.FieldTypeName === FIELD_TYPES.Color) {\r\n value.Value = ColorConverter.ToHex(value.Value);\r\n }\r\n\r\n if (value.FieldId === this._recordTypeField.Id) {\r\n if (parseInt(value.Value) === todoType.Id) {\r\n todoEvents.push(event);\r\n }\r\n\r\n if (parseInt(value.Value) === appoitmentType.Id || parseInt(value.Value) === taskType.Id) {\r\n appointmentEvents.push(event);\r\n }\r\n\r\n if (parseInt(value.Value) === holidayType.Id || parseInt(value.Value) === illnessType.Id) {\r\n const fullCalendarEventModel = this.GetFullCalendarHolidayAndIllnessEventModel(event);\r\n calendarEvents.push(fullCalendarEventModel);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n this._todoEvents(todoEvents);\r\n this._appointmentEvents = appointmentEvents;\r\n\r\n _.each(appointmentEvents, event => {\r\n const fullCalendarEventModel = this.GetFullCalendarEventModel(event);\r\n\r\n if (fullCalendarEventModel) {\r\n calendarEvents.push(fullCalendarEventModel);\r\n }\r\n });\r\n\r\n const {AGENDA_WEEK, AGENDA_FIVE_DAY} = FULL_CALENDAR_VIEW;\r\n const isAgendaWeekAndWorkWeek = [AGENDA_FIVE_DAY, AGENDA_WEEK].includes(this._viewRenderMode);\r\n if (isAgendaWeekAndWorkWeek) {\r\n _.each(this._plannings, event => {\r\n const fullCalendarEventModel = this.GetFullCalendarPlanningEventModel(event);\r\n calendarEvents.push(fullCalendarEventModel);\r\n });\r\n }\r\n\r\n this._calendarEvents(calendarEvents);\r\n }\r\n\r\n private GetHoliday(eventModel: AgendaItemModel): boolean {\r\n let typeIdValue = +this.GetValueByFieldId(eventModel, this._recordTypeField.Id);\r\n let holidayType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Holiday);\r\n\r\n return holidayType.Id === typeIdValue;\r\n }\r\n\r\n private GetLifeStatusName(eventModel: AgendaItemModel): string {\r\n return eventModel && !!eventModel.LifeStatusInfo && !!eventModel.LifeStatusInfo.LifeStatusName ? eventModel.LifeStatusInfo.LifeStatusName : null;\r\n }\r\n\r\n private GetCalendarEventColor(eventModel: AgendaItemModel, eventColor: string, defaultColor: string): string {\r\n const disabledColor = this.IsLifeStatusDisabled(eventModel) ? '#c6c6c6' : null;\r\n return disabledColor || eventColor || defaultColor;\r\n }\r\n\r\n private IsHolidayIcon(eventModel: AgendaItemModel): boolean {\r\n return this.GetLifeStatusName(eventModel) === AGENDA_LIFE_STATUSES.Requested;\r\n }\r\n\r\n private IsLifeStatusDisabled(eventModel: AgendaItemModel): boolean {\r\n return this.GetLifeStatusName(eventModel) === LifeStatuses.Disabled.Name;\r\n }\r\n\r\n private GetHolidayTranslatedTooltip(eventModel: AgendaItemModel): string {\r\n let tooltipText = null;\r\n if (eventModel && !!eventModel.LifeStatusInfo) {\r\n tooltipText = !!eventModel.LifeStatusInfo.LifeStatusTranslatedName ? eventModel.LifeStatusInfo.LifeStatusTranslatedName : eventModel.LifeStatusInfo.LifeStatusName;\r\n }\r\n return tooltipText;\r\n }\r\n\r\n private GetFullCalendarEventModel(eventModel: AgendaItemModel) {\r\n let fullCalendarEventModel = null;\r\n const nameValue = this.GetValueByFieldId(eventModel, this._recordNameField.Id);\r\n const nameTranslatedValue = this.GetTranslatedValueByFieldId(eventModel, this._recordNameField.Id);\r\n const typeIdValue = +this.GetValueByFieldId(eventModel, this._recordTypeField.Id);\r\n\r\n const illnessType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Illness);\r\n\r\n const typeNameValue = _.find(this._tablesTypes.TableTypes, tableType => tableType.Id === typeIdValue).Name;\r\n const owner = eventModel.Owner.Name;\r\n const ownerId = eventModel.Owner.Id;\r\n const sharedWith = eventModel.SharedWith;\r\n const startDateValue = this.GetValueByFieldId(eventModel, this._startDateField.Id);\r\n const eventColorValue = this.GetValueByFieldId(eventModel, this._eventColorField.Id);\r\n const placeColorValue = this.GetValueByFieldId(eventModel, this._placeField.Id);\r\n const timeBeforeValue = this.GetValueByFieldId(eventModel, this._timeBeforeField.Id);\r\n const timeAfterValue = this.GetValueByFieldId(eventModel, this._timeAfterField.Id);\r\n const durationValue = this.GetValueByFieldId(eventModel, this._durationField.Id);\r\n const descriptionValue = this.GetValueByFieldId(eventModel, this._descriptionField.Id);\r\n const translatedDescriptionValue = this.GetTranslatedValueByFieldId(eventModel, this._descriptionField.Id);\r\n const endingValue = this.GetValueByFieldId(eventModel, this._endingField.Id);\r\n\r\n const calendarEventColor = this.GetCalendarEventColor(eventModel, eventColorValue, placeColorValue);\r\n\r\n const startDate = moment(startDateValue);\r\n const timeBefore = moment(timeBeforeValue);\r\n const timeAfter = moment(timeAfterValue);\r\n const duration = moment(durationValue);\r\n const hoursDuration = moment.duration(duration.hours(), 'hours');\r\n const minutesDuration = moment.duration(duration.minutes(), 'minutes');\r\n\r\n let endDate = moment(startDate).add(hoursDuration);\r\n endDate = endingValue ? moment(endingValue) : moment(endDate).add(minutesDuration);\r\n\r\n const isAllDay = typeNameValue === AGENDA_TYPES.Task;\r\n\r\n let start = timeBeforeValue ? this.ShiftBackDate(startDate, timeBefore) : startDate;\r\n let end = timeAfterValue ? this.ShiftForwardDate(endDate, timeAfter) : endDate;\r\n\r\n if (isAllDay) {\r\n //end date is exclusive according to library\r\n end.add(1, 'days').add(-1, 'seconds');\r\n }\r\n\r\n if (nameValue && startDateValue) {\r\n fullCalendarEventModel = {\r\n id: this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? null : eventModel.RecordId,\r\n eventRecordId: eventModel.RecordId,\r\n title: nameTranslatedValue || nameValue,\r\n owner: owner,\r\n start: start.format(),\r\n end: end.format(),\r\n allDay: isAllDay,\r\n color: calendarEventColor,\r\n timeBefore: this.FormatTime(timeBeforeValue),\r\n timeBeforeHeigth: this.TimeShiftHeight(timeBefore),\r\n timeAfterHeigth: this.TimeShiftHeight(timeAfter),\r\n timeAfter: this.FormatTime(timeAfterValue),\r\n description: translatedDescriptionValue || descriptionValue,\r\n accepted: eventModel.Accepted,\r\n possibleToAccept: ko.observable(eventModel.PossibleToAccept),\r\n recurrentRecordId: eventModel.RecurrentRecordId,\r\n links: eventModel.Links,\r\n resourceId: sharedWith && sharedWith.UserId || ownerId,\r\n editable: eventModel.Editable && typeNameValue === AGENDA_TYPES.Appointment && !this.IsLifeStatusDisabled(eventModel),\r\n editableWithDisabledLifeStatus: eventModel.Editable && typeNameValue === AGENDA_TYPES.Appointment && this.IsLifeStatusDisabled(eventModel),\r\n isIllness: illnessType.Id === typeIdValue,\r\n isHoliday: this.GetHoliday(eventModel),\r\n isHolidayIcon: this.GetHoliday(eventModel) && this.IsHolidayIcon(eventModel),\r\n lifeStatusName: this.GetLifeStatusName(eventModel),\r\n holidayTooltip: this.GetHoliday(eventModel) ? this.GetHolidayTranslatedTooltip(eventModel) : null,\r\n originalResourceId: ko.observable(eventModel.OriginalResourceId),\r\n agenda: this\r\n };\r\n }\r\n\r\n return fullCalendarEventModel;\r\n }\r\n\r\n private GetFullCalendarHolidayAndIllnessEventModel(eventModel) {\r\n const nameValue = this.GetValueByFieldId(eventModel, this._recordNameField.Id);\r\n const nameTranslatedValue = this.GetTranslatedValueByFieldId(eventModel, this._recordNameField.Id);\r\n const owner = eventModel.Owner.Name;\r\n const ownerId = eventModel.Owner.Id;\r\n\r\n const typeIdValue = +this.GetValueByFieldId(eventModel, this._recordTypeField.Id);\r\n\r\n const illnessType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Illness);\r\n\r\n const isIllness = illnessType.Id === typeIdValue;\r\n\r\n const typeNameValue = _.find(this._tablesTypes.TableTypes, tableType => tableType.Id === typeIdValue).Name;\r\n\r\n const eventColorValue = this.GetValueByFieldId(eventModel, this._eventColorField.Id);\r\n const defaultColor = typeNameValue == 'Holiday' ? '#6ddba8' : '#c9db6d';\r\n const calendarEventColor = this.GetCalendarEventColor(eventModel, eventColorValue, defaultColor);\r\n\r\n const startDateValue = this.GetValueByFieldId(eventModel, this._startDateField.Id);\r\n const timeBeforeValue = this.GetValueByFieldId(eventModel, this._timeBeforeField.Id);\r\n const timeAfterValue = this.GetValueByFieldId(eventModel, this._timeAfterField.Id);\r\n const durationValue = this.GetValueByFieldId(eventModel, this._durationField.Id);\r\n const endingValue = this.GetValueByFieldId(eventModel, this._endingField.Id);\r\n\r\n const startDate = moment(FormatConverter.CorrectTimezone(startDateValue));\r\n const timeBefore = moment(timeBeforeValue);\r\n const timeAfter = moment(timeAfterValue);\r\n const duration = moment(durationValue);\r\n const hoursDuration = moment.duration(duration.hours(), 'hours');\r\n const minutesDuration = moment.duration(duration.minutes(), 'minutes');\r\n\r\n let endDate = moment(startDate).add(hoursDuration);\r\n endDate = endingValue ? moment(FormatConverter.CorrectTimezone(endingValue)).add(hoursDuration) : moment(endDate).add(minutesDuration);\r\n\r\n let currentDay = moment(FormatConverter.CorrectTimezone(new Date().toDateString()));\r\n if (isIllness && !endingValue && moment(startDate).isBefore(currentDay)) { //if the start is less than the current day\r\n endDate = currentDay;\r\n }\r\n\r\n let start = timeBeforeValue ? this.ShiftBackDate(startDate, timeBefore) : startDate;\r\n let end = timeAfterValue ? this.ShiftForwardDate(endDate, timeAfter) : endDate;\r\n end.add(1, 'days');\r\n\r\n const fullCalendarEventModel = {\r\n id: this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? null : eventModel.RecordId,\r\n eventRecordId: eventModel.RecordId,\r\n title: nameTranslatedValue || nameValue,\r\n owner: owner,\r\n allDay: true,\r\n start: start.format(),\r\n end: end.format(),\r\n color: calendarEventColor,\r\n editable: eventModel.Editable && !this.IsLifeStatusDisabled(eventModel),\r\n editableWithDisabledLifeStatus: eventModel.Editable && this.IsLifeStatusDisabled(eventModel),\r\n resourceId: ownerId,\r\n isIllness: isIllness,\r\n isHoliday: this.GetHoliday(eventModel),\r\n isHolidayIcon: this.GetHoliday(eventModel) && this.IsHolidayIcon(eventModel),\r\n lifeStatusName: this.GetLifeStatusName(eventModel),\r\n holidayTooltip: this.GetHoliday(eventModel) ? this.GetHolidayTranslatedTooltip(eventModel) : null,\r\n originalResourceId: ko.observable(eventModel.OriginalResourceId),\r\n agenda: this\r\n };\r\n\r\n return fullCalendarEventModel;\r\n }\r\n\r\n private GetFullCalendarPlanningEventModel(eventModel: PlanningItemModel) {\r\n\r\n const end = moment.utc(this._selectedEndDate).add(1, 'days').add(-1, 'seconds');\r\n const planningsAppointments = eventModel.PlanningAppointments.map(date => moment(FormatConverter.CorrectTimezone(date)));\r\n\r\n const appointmentsButtons = this.BuildAppointmentsWeekButtons(planningsAppointments);\r\n const bookingsButtons = this.BuildBookTimeWeekButtons();\r\n\r\n return {\r\n id: this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? null : eventModel.Id,\r\n eventRecordId: eventModel.Id,\r\n title: eventModel.CompetenceName,\r\n allDay: true,\r\n start: this._selectedStartDate,\r\n end: end,\r\n links: eventModel.Links,\r\n users: eventModel.Users,\r\n planning: true,\r\n appointmentsWeekButtons: appointmentsButtons,\r\n bookingsWeekButtons: bookingsButtons,\r\n getUserTitle: (user: UserProgress) => {\r\n return `${user.Name}: ${user.BookedHours} of ${user.DecHours}`\r\n }\r\n };\r\n }\r\n\r\n private BuildAppointmentsWeekButtons(plannigns: moment.Moment[]) {\r\n const appointmentsWeekButtons: Array<PlannerItemWeekButton> = this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_FIVE_DAY\r\n ? this.BuildWeekButtons().slice(0, 5)\r\n : this.BuildWeekButtons();\r\n\r\n appointmentsWeekButtons.forEach((button: any) => button.Disabled = _.any(plannigns, planning => planning.isSame(moment(button.Date), 'day')));\r\n return appointmentsWeekButtons;\r\n }\r\n\r\n private BuildBookTimeWeekButtons() {\r\n //Only working days should be in the book time week buttons list\r\n const bookTimeWeekButtons = this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_FIVE_DAY\r\n ? this.BuildWeekButtons().slice(0, 5)\r\n : this.BuildWeekButtons();\r\n bookTimeWeekButtons.forEach((button: any) => {\r\n //if difference in minutes is negative - then button's date is in future\r\n const isFuture = moment().diff(button.Date, 'minutes') < 0;\r\n //if difference in minutes is negative - then we are out of freeze time\r\n const isOutOfFreezeTime = moment(button.Date).diff(this._firstFreezeTimeDate, 'minutes') < 0;\r\n\r\n if (isFuture) {\r\n button.Disabled = true;\r\n button.DisabledReason = this._labels.WRITING_TIME_FOR_FUTURE_NOT_ALLOWED;\r\n return;\r\n }\r\n\r\n if (isOutOfFreezeTime) {\r\n button.Disabled = true;\r\n button.DisabledReason = this._labels.STARTING_DATE_IS_OUT_OF_FREEZE_TIME;\r\n return;\r\n }\r\n });\r\n\r\n return bookTimeWeekButtons;\r\n }\r\n\r\n private BuildWeekButtons() {\r\n const weekButtons: Array<PlannerItemWeekButton> = [];\r\n\r\n for (let dayOfWeek = 0; dayOfWeek < 7; dayOfWeek++) {\r\n const date = moment(this._selectedStartDate).hours(9).add(dayOfWeek, 'days').format();\r\n const name = moment(this._selectedStartDate).add(dayOfWeek, 'days').format('dd');\r\n\r\n weekButtons.push({Name: name, Date: date, Disabled: false});\r\n }\r\n\r\n return weekButtons;\r\n }\r\n\r\n TimeShiftHeight(shiftTime: moment.Moment) {\r\n const hours = shiftTime.hours();\r\n const minutes = shiftTime.minutes();\r\n const totalMinutes = hours * 60 + minutes;\r\n const height = 66 / 60 * totalMinutes;\r\n\r\n return height;\r\n }\r\n\r\n ShiftBackDate(date: moment.Moment, shiftDate: moment.Moment) {\r\n const hoursDuration = moment.duration(shiftDate.hours() * -1, 'hours');\r\n const minutesDuration = moment.duration(shiftDate.minutes() * -1, 'minutes');\r\n\r\n date = moment(date).add(hoursDuration);\r\n date = moment(date).add(minutesDuration);\r\n\r\n return date;\r\n }\r\n\r\n ShiftForwardDate(date: moment.Moment, shiftDate: moment.Moment) {\r\n const hoursDuration = moment.duration(shiftDate.hours(), 'hours');\r\n const minutesDuration = moment.duration(shiftDate.minutes(), 'minutes');\r\n\r\n date = moment(date).add(hoursDuration);\r\n date = moment(date).add(minutesDuration);\r\n\r\n return date;\r\n }\r\n\r\n //TODO use formater\r\n private FormatTime(value: string): string {\r\n return value ? moment(value).format() : '';\r\n }\r\n\r\n private GetValueByFieldId(event: AgendaItemModel, fieldId: number): string {\r\n const fieldValue = _.find(event.Values, value => value.FieldId === fieldId);\r\n\r\n return fieldValue ?\r\n fieldValue.DisplayValue || fieldValue.Value :\r\n null;\r\n }\r\n\r\n private GetTranslatedValueByFieldId(event: AgendaItemModel, fieldId: number): string {\r\n const fieldValue = _.find(event.Values, value => value.FieldId === fieldId);\r\n\r\n return fieldValue ?\r\n fieldValue.TranslatedDisplayValue || fieldValue.TranslatedValue :\r\n null;\r\n }\r\n\r\n EventTitle(item: AgendaItemModel): string {\r\n const nameField = _.find(item.Values, value => value.FieldId === this._recordNameField.Id);\r\n return nameField ? nameField.TranslatedValue || nameField.Value : '';\r\n }\r\n\r\n get TodoEvents(): KnockoutObservableArray<AgendaItemModel> {\r\n return this._todoEvents;\r\n }\r\n\r\n get TodoEventName(): KnockoutObservable<string> {\r\n return this._todoEventName;\r\n }\r\n\r\n AddNewTodo() {\r\n const todoType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Todo);\r\n\r\n if (todoType) {\r\n const screenData = new ScreenDataModel();\r\n const startDateControlData = new ControlDataModel();\r\n\r\n startDateControlData.FieldId = this._recordNameField.Id;\r\n startDateControlData.Value = this._todoEventName();\r\n screenData.ControlsData.push(startDateControlData);\r\n\r\n this.NewRecord(screenData, todoType.Id, null, DataModes.Default, null, null, true);\r\n }\r\n }\r\n\r\n async AddSpecialDay() {\r\n const specialDayType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.SpecialDay);\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n BlockUI.Block();\r\n screenManager.GetEditScreen({\r\n EntityId: this.FieldModel.EntityId,\r\n TableTypeId: specialDayType.Id\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => screen.ShowInModal())\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n AddHoliday() {\r\n const screenData = new ScreenDataModel();\r\n const holidayType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Holiday);\r\n this.NewRecord(screenData, holidayType.Id);\r\n }\r\n\r\n AddIllness() {\r\n const screenData = new ScreenDataModel();\r\n const illnessType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Illness);\r\n this.NewRecord(screenData, illnessType.Id);\r\n }\r\n\r\n AddRecurrent() {\r\n const screenData = new ScreenDataModel();\r\n const recurrentType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Recurrent);\r\n this.NewRecord(screenData, recurrentType.Id, null, DataModes.Default, null, null, true);\r\n }\r\n\r\n EditRecurrent(id: number) {\r\n const recurrentType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Recurrent);\r\n this.EditRecord(id, recurrentType.Id);\r\n }\r\n\r\n RemoveTodoItem(todoEvent: AgendaItemModel) {\r\n const notifier = new Notifier();\r\n\r\n RecordStore.GetDeletionMode({EntityId: this.FieldModel.EntityId, RecordId: todoEvent.RecordId})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage || NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n return;\r\n }\r\n\r\n const deletionMode = result.ResultObject;\r\n\r\n if (deletionMode.OnDelete || deletionMode.OnDelete === 0) {\r\n this.ShowDeletionModeDialog(deletionMode, todoEvent);\r\n } else {\r\n this.ShowConfirmationDialog(todoEvent);\r\n }\r\n });\r\n }\r\n\r\n private ShowDeletionModeDialog(deletionModeModel: DeletionModeModel, todoEvent: AgendaItemModel) {\r\n const deletionModeDialog = new DeletionModeDialog({\r\n DeletionMode: deletionModeModel.OnDelete,\r\n HasCustomLifeStatus: deletionModeModel.HasCustomLifeStatus\r\n });\r\n\r\n deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DELETE_SELECTED, this, () => {\r\n this.UseDeleteDeletionMode(todoEvent);\r\n });\r\n\r\n deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DISABLE_SELECTED, this, () => {\r\n this.UseDisableDeletionMode(todoEvent);\r\n });\r\n\r\n deletionModeDialog.Show();\r\n }\r\n\r\n private ShowConfirmationDialog(todoEvent: AgendaItemModel) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ARE_YOUR_SURE_TO_DELETE_RECORDS,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.UseDeleteDeletionMode(todoEvent);\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n private UseDeleteDeletionMode(todoEvent: AgendaItemModel) {\r\n BlockUI.Block();\r\n\r\n const notifier = new Notifier();\r\n RecordStore.DeleteRecord({EntityId: this.FieldModel.EntityId, RecordId: todoEvent.RecordId})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage || NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n return;\r\n }\r\n\r\n if (result.Warnings && result.Warnings.length > 0) {\r\n _.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n } else {\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n this._todoEvents.splice(this._todoEvents.indexOf(todoEvent), 1);\r\n }\r\n })\r\n .fail(error => {\r\n notifier.Warning(error.message);\r\n });\r\n }\r\n\r\n private UseDisableDeletionMode(todoEvent: AgendaItemModel) {\r\n BlockUI.Block();\r\n\r\n const notifier = new Notifier();\r\n RecordStore.DeleteRecord({EntityId: this.FieldModel.EntityId, RecordId: todoEvent.RecordId, Disable: true})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n })\r\n .fail(error => {\r\n notifier.Warning(error.message);\r\n });\r\n }\r\n\r\n ShowToDoBlock() {\r\n this._isVisibleTodoBlock(true);\r\n }\r\n\r\n AddNewAppointment(startDate: string, durationMinutes: number = null, calendarUserId: number = null) {\r\n const duration = Agenda.ConvertDefaultAppointmentToDateTime(durationMinutes);\r\n\r\n const appointmentType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Appointment);\r\n\r\n const screenData = new ScreenDataModel();\r\n const startDateControlData = new ControlDataModel();\r\n\r\n startDateControlData.FieldId = this._startDateField.Id;\r\n startDateControlData.Value = moment(startDate).format();\r\n\r\n const durationControlData = new ControlDataModel();\r\n\r\n durationControlData.FieldId = this._durationField.Id;\r\n durationControlData.Value = duration;\r\n\r\n screenData.ControlsData.push(startDateControlData);\r\n screenData.ControlsData.push(durationControlData);\r\n\r\n const exampleAppointmentId = this.GetForm() && this.GetForm().GetScreen() && this.GetForm().GetScreen().ExampleAppointmentId;\r\n\r\n this.NewRecord(screenData, appointmentType.Id, exampleAppointmentId, DataModes.Default, null, null, true, calendarUserId);\r\n }\r\n\r\n static ConvertDefaultAppointmentToDateTime(minutes: number) {\r\n let h: string | number = Math.floor(minutes / 60);\r\n let m: string | number = minutes % 60;\r\n\r\n h = h < 10 ? '0' + h : h;\r\n m = m < 10 ? '0' + m : m;\r\n\r\n return moment(`1970-01-01 ${h}:${m}:00`).format();\r\n }\r\n\r\n EditEvent(id: number) {\r\n const eventModel = _.find(this._allEvents, event => event.RecordId === id);\r\n if (eventModel) {\r\n const typeId = +this.GetValueByFieldId(eventModel, this._recordTypeField.Id);\r\n this.EditRecord(eventModel.RecordId, typeId);\r\n }\r\n }\r\n\r\n UpdateAppointment(id: number, startDate: moment.Moment, duration?: moment.Duration) {\r\n const notifier = new Notifier();\r\n const eventModel = _.find(this._allEvents, event => event.RecordId === id);\r\n\r\n if (eventModel) {\r\n const startDateFieldValue = _.find(eventModel.Values, value => value.FieldId === this._startDateField.Id);\r\n const timeBeforeFieldValue = _.find(eventModel.Values, value => value.FieldId === this._timeBeforeField.Id);\r\n const timeBefore = moment(timeBeforeFieldValue.Value);\r\n\r\n startDateFieldValue.Value = this.ShiftForwardDate(startDate, timeBefore).format();\r\n\r\n const durationFieldValue = _.find(eventModel.Values, value => value.FieldId === this._durationField.Id);\r\n let durationValue = moment(durationFieldValue.Value);\r\n\r\n if (duration) {\r\n const hoursDuration = moment.duration(duration.hours(), 'hours');\r\n const minutesDuration = moment.duration(duration.minutes(), 'minutes');\r\n\r\n durationValue = moment(durationValue).add(hoursDuration);\r\n durationValue = moment(durationValue).add(minutesDuration);\r\n durationFieldValue.Value = durationValue.format();\r\n }\r\n\r\n this.BlockUi();\r\n\r\n return AgendaDataStore.UpdateAgenda(eventModel)\r\n .always(() => {\r\n this.UnBlockUi();\r\n })\r\n .then(() => {\r\n this.Trigger('AGENDA_CHANGED');\r\n notifier.Success(NOTIFICATIONS.EVENT_UPDATED);\r\n }).fail(error => notifier.Failed(error.message));\r\n }\r\n }\r\n\r\n CreateAppointmentFromPlanner(item: PlanningItemModel, button: PlannerItemWeekButton) {\r\n const notifier = new Notifier();\r\n const userId = this._selectedUsers.length === 1 ? this._selectedUsers[0] : UserManager.Instance.CurrentUser.Id;\r\n\r\n const params = {\r\n PlanningId: item.Id,\r\n StartDate: button.Date,\r\n UserId: userId\r\n };\r\n\r\n\r\n this.BlockUi();\r\n\r\n return AgendaDataStore.CreatePlanningAppointment(params)\r\n .always(() => {\r\n this.UnBlockUi();\r\n })\r\n .then(() => {\r\n this.Trigger('AGENDA_CHANGED');\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(this._groupByResource());\r\n }).fail(error => notifier.Failed(NOTIFICATIONS.SOMETHING_WENT_WRONG));\r\n }\r\n\r\n DistributeAppointmentsForPlanning(item: PlanningItemModel) {\r\n const notifier = new Notifier();\r\n const userId = this._selectedUsers.length === 1 ? this._selectedUsers[0] : UserManager.Instance.CurrentUser.Id;\r\n\r\n this.BlockUi();\r\n\r\n return AgendaDataStore.CreatePlanningAppointments(item.Id, userId)\r\n .always(() => {\r\n this.UnBlockUi();\r\n })\r\n .then(() => {\r\n this.Trigger('AGENDA_CHANGED');\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(this._groupByResource());\r\n }).fail(error => notifier.Failed(NOTIFICATIONS.SOMETHING_WENT_WRONG));\r\n }\r\n\r\n BookFromPlanner(item: PlanningItemModel, button: PlannerItemWeekButton) {\r\n const notifier = new Notifier();\r\n\r\n const params = {\r\n PlanningId: item.Id,\r\n StartDate: button.Date,\r\n AgendaTableId: this.FieldModel.EntityId\r\n };\r\n\r\n this.BlockUi();\r\n\r\n return AgendaDataStore.BookPlanning(params)\r\n .always(() => {\r\n this.UnBlockUi();\r\n })\r\n .then(() => {\r\n this.Trigger('AGENDA_CHANGED');\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(this._groupByResource());\r\n }).fail(error => notifier.Failed(error.message));\r\n }\r\n\r\n AcceptAppointment(appointment) {\r\n appointment.Accepting(true);\r\n const screen = this.GetForm().GetScreen();\r\n const isSubjectScreen = screen.IsSubjectScreen();\r\n\r\n AgendaDataStore.AcceptAppointment({\r\n AgendaTableId: this.FieldModel.EntityId,\r\n AppointmentId: appointment.Id,\r\n ScreenSubjectEntityId: isSubjectScreen && screen.GetEntityId(),\r\n ScreenSubjectRecordId: isSubjectScreen && screen.GetRecordId()\r\n })\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n new Notifier().Success(NOTIFICATIONS.BOOKED_TIME_RECORD_WAS_CREATED_SUCCESSFULLY);\r\n this.Trigger('AGENDA_CHANGED');\r\n this.LoadData(this._groupByResource());\r\n } else {\r\n new Notifier().Failed(result.ErrorMessage);\r\n appointment.Accepting(false);\r\n }\r\n })\r\n .fail(() => {\r\n appointment.Accepting(false);\r\n new Notifier().Failed('Error accepting appointment');\r\n });\r\n }\r\n\r\n StartDrag(item: AgendaItemModel, evt, ui) {\r\n this._todoToAppointmentItem = item;\r\n }\r\n\r\n ConvertTodoToAppointment(eventModel: AgendaItemModel, startDate: string) {\r\n const notifier = new Notifier();\r\n const appointmentDuration = GlobalManager.Instance.GetGlobal(GLOBALS.APPOINTMENT_DURATION);\r\n let appointmentDurationNumber = parseInt(appointmentDuration);\r\n\r\n if (isNaN(appointmentDurationNumber)) {\r\n appointmentDurationNumber = DEFAULT_APPOINTMENT_DURATION;\r\n }\r\n\r\n const cloneEventModel = _.clone(eventModel);\r\n\r\n const duration = Agenda.ConvertDefaultAppointmentToDateTime(appointmentDurationNumber);\r\n const startDateFieldValue = _.find(cloneEventModel.Values, value => value.FieldId === this._startDateField.Id);\r\n\r\n startDateFieldValue.Value = startDate;\r\n\r\n const durationFieldValue = _.find(cloneEventModel.Values, value => value.FieldId === this._durationField.Id);\r\n\r\n durationFieldValue.Value = duration;\r\n\r\n const appointmentType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Appointment);\r\n const eventTypeFieldValue = _.find(cloneEventModel.Values, value => value.FieldId === this._recordTypeField.Id);\r\n\r\n eventTypeFieldValue.Value = String(appointmentType.Id);\r\n\r\n this.BlockUi();\r\n\r\n let createAppointmentFromTodoModel: ICreateAppointmentFromTodoRequestModel = {\r\n AgendaEntityId: this.FieldModel.EntityId,\r\n TodoItemId: eventModel.RecordId,\r\n Starting: startDate,\r\n Duration: duration,\r\n RemoveTodo: this._checkedRemoveToDo(),\r\n AppointmentAttendeesId: this.GetSelectedAppointmentAttendees()\r\n };\r\n\r\n AgendaDataStore.CreateAppointmentFromTodo(createAppointmentFromTodoModel)\r\n .always(() => {\r\n this.UnBlockUi();\r\n })\r\n .then((result) => {\r\n this.Trigger('AGENDA_CHANGED');\r\n if (this._checkedRemoveToDo()) {\r\n this._todoEvents.splice(this._todoEvents.indexOf(eventModel), 1);\r\n this._checkedRemoveToDo(false);\r\n }\r\n\r\n cloneEventModel.RecordId = result.Id;\r\n\r\n notifier.Success(NOTIFICATIONS.EVENT_UPDATED);\r\n let fullCalendarEventModel = this.GetFullCalendarEventModel(cloneEventModel);\r\n this._calendarEvents.push(fullCalendarEventModel);\r\n this.LoadData(this._groupByResource())\r\n .then((result) => {\r\n this.EditRecord(cloneEventModel.RecordId, appointmentType.Id);\r\n });\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private IsUserAllowedToCreate() {\r\n return AgendaDataStore.GetUserAllowance({\r\n TableId: this.FieldModel.EntityId,\r\n SecurityWord: TABLE_SECURITY_WORDS.CREATE\r\n });\r\n }\r\n\r\n private InitDateTimePicker(element: JQuery) {\r\n let self = this;\r\n //Date picker on click of the current period\r\n const fullCalendarBox = element.parent().parent(); //FullCalendar Obj\r\n const headerToolbar = fullCalendarBox.find('div.fc-toolbar.fc-header-toolbar');\r\n const centerBlock = headerToolbar.find('div.fc-center');\r\n const headerDateBtn = centerBlock.find('h2'); //find \"h2\" element\r\n headerDateBtn.append(`<input type='text' class=\"form-control\" style=\"display: none;\" />`); //added input, need to work dateTimePicker\r\n headerDateBtn.addClass('activeClick');\r\n\r\n if (!headerDateBtn.data(\"DateTimePicker\")) { //default start DateTimePicker\r\n\r\n headerDateBtn.datetimepicker({\r\n minDate: '1990-01-01'\r\n // defaultDate: this._selectedStartDate\r\n });\r\n\r\n headerDateBtn.on('dp.change', function (e) {\r\n fullCalendarBox.fullCalendar('gotoDate', e.date);\r\n });\r\n\r\n function alignDateTimePicker() {\r\n headerDateBtn.find('.bootstrap-datetimepicker-widget').css(\r\n centerBlock.width() === headerToolbar.width()\r\n ? {left: '50%', transform: 'translateX(-50%)'}\r\n : {transform: ''}\r\n );\r\n }\r\n\r\n headerDateBtn.on('dp.show', () => {\r\n alignDateTimePicker();\r\n\r\n $(window).on('resize', alignDateTimePicker);\r\n });\r\n\r\n headerDateBtn.on('dp.hide', () => {\r\n $(window).off('resize', alignDateTimePicker);\r\n });\r\n\r\n $(headerDateBtn).on('click', function () {\r\n let currentDate = moment(self._selectedStartDate);\r\n if (self._viewRenderMode == FULL_CALENDAR_VIEW.MONTH) { // DateTimePicker new options if(MONTH)\r\n headerDateBtn.data(\"DateTimePicker\").date(fullCalendarBox.fullCalendar('getDate').format(DATE_FORMATS.MONTH_AND_YEAR.Format));\r\n } else { // DateTimePicker default options\r\n headerDateBtn.data(\"DateTimePicker\").date(currentDate);\r\n }\r\n $(this).data(\"DateTimePicker\").toggle();\r\n });\r\n $(headerDateBtn).on('mouseleave', function () {\r\n $(this).data(\"DateTimePicker\").hide();\r\n });\r\n }\r\n\r\n switch (self._viewRenderMode) {\r\n case FULL_CALENDAR_VIEW.AGENDA_FIVE_DAY : // DateTimePicker new options if(AGENDA_FIVE_DAY)\r\n headerDateBtn.data(\"DateTimePicker\") && headerDateBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'days',\r\n locale: FullCalendarCultures.Get(FormatConverter.GetLocale()),\r\n format: this.GetShortDateFormat(),\r\n daysOfWeekDisabled: [0, 6],\r\n });\r\n break;\r\n case FULL_CALENDAR_VIEW.MONTH : // DateTimePicker new options if(MONTH)\r\n headerDateBtn.data(\"DateTimePicker\") && headerDateBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'months',\r\n locale: FullCalendarCultures.Get(FormatConverter.GetLocale()),\r\n format: this.GetMonthAndYearFormat(),\r\n });\r\n break;\r\n default : // DateTimePicker default options\r\n headerDateBtn.data(\"DateTimePicker\") && headerDateBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'days',\r\n locale: FullCalendarCultures.Get(FormatConverter.GetLocale()),\r\n format: this.GetShortDateFormat(),\r\n daysOfWeekDisabled: false,\r\n });\r\n break;\r\n }\r\n }\r\n\r\n private GetFullCalendarOptions(): any {\r\n const self = this;\r\n\r\n if (this._appointmentAttendees() && this._appointmentAttendees().Users.length && !self._groupByResource()) {\r\n self._groupByResource(true)\r\n }\r\n\r\n this.SetLastDate();\r\n\r\n return {\r\n defaultDate: this._selectedStartDate,\r\n views: {\r\n agendaFiveDay: {\r\n type: 'agendaWeek',\r\n weekends: false,\r\n groupByResource: self._groupByResource(),\r\n columnFormat: 'ddd M/D'\r\n },\r\n agendaWeek: {\r\n groupByResource: self._groupByResource(),\r\n columnFormat: 'ddd M/D'\r\n },\r\n month: {\r\n eventLimit: 4,\r\n groupByResource: false\r\n },\r\n listWeek: {\r\n groupByResource: false,\r\n noEventsMessage: LABELS.AGENDA_NO_EVENTS_TO_DISPLAY\r\n },\r\n timelineWeek: {\r\n resourceLabelText: LABELS.AGENDA_USERS\r\n }\r\n\r\n },\r\n allDaySlot: true,\r\n firstDay: 1,\r\n locale: FullCalendarCultures.Get(FormatConverter.GetLocale()),\r\n header: {\r\n center: 'prev, title, next',\r\n right: 'today, month, agendaWeek, agendaFiveDay, agendaDay, listWeek, timelineWeek',\r\n left: ''\r\n },\r\n buttonIcons: {\r\n prev: 'left-triangle',\r\n next: 'right-triangle',\r\n prevYear: 'left-double-arrow',\r\n nextYear: 'right-double-arrow'\r\n },\r\n buttonText: {\r\n today: LABELS.AGENDA_TODAY,\r\n month: LABELS.AGENDA_MONTH,\r\n agendaWeek: LABELS.AGENDA_WEEK,\r\n agendaFiveDay: LABELS.AGENDA_WORK_WEEK,\r\n agendaDay: LABELS.AGENDA_DAY,\r\n listWeek: LABELS.AGENDA_LIST,\r\n timelineWeek: LABELS.AGENDA_TIMELINE_WEEK\r\n },\r\n scrollTime: '08:00:00',\r\n slotEventOverlap: false,\r\n timeFormat: ' ',\r\n defaultView: MobileChecker.IsMobile() ? FULL_CALENDAR_VIEW.AGENDA_DAY : (this._isReturned ? this._viewRenderMode : FULL_CALENDAR_VIEW.AGENDA_FIVE_DAY),\r\n slotMinutes: 15,\r\n editable: !this._isReadonly,\r\n droppable: true,\r\n forceEventDuration: true,\r\n defaultTimedEventDuration: '00:30:00',\r\n selectable: !MobileChecker.IsMobile(),\r\n weekNumbers: true,\r\n navLinks: true,\r\n longPressDelay: 1000,\r\n eventLongPressDelay: 1000,\r\n resources: callback => callback(this._owners()),\r\n eventRenderWait: 300,\r\n\r\n viewRender: (view, element) => {\r\n const {\r\n MONTH,\r\n AGENDA_WEEK,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_DAY\r\n } = FULL_CALENDAR_VIEW;\r\n const viewName = view.name;\r\n const isAgendaDayOrMonth = [AGENDA_DAY, MONTH].includes(viewName);\r\n const isAgendaFiveDayOrWeek = [AGENDA_FIVE_DAY, AGENDA_WEEK].includes(viewName);\r\n const groupByResource = self._groupByResource();\r\n\r\n const todoBlock = document.getElementById('external-events');\r\n const agendaCalendar = document.getElementById('agendaCalendar');\r\n if (agendaCalendar && todoBlock) {\r\n todoBlock.style.maxHeight = `${agendaCalendar.offsetHeight}px`;\r\n }\r\n\r\n if(isAgendaDayOrMonth) {\r\n self._groupByResource(false);\r\n } else if (isAgendaFiveDayOrWeek && !groupByResource && self._isInteractionWithUserSelect()) {\r\n self._groupByResource(true);\r\n }\r\n\r\n if (isAgendaFiveDayOrWeek && groupByResource && self._isInteractionWithUserSelect()) {\r\n const days = viewName === AGENDA_FIVE_DAY ? 5 :\r\n viewName === AGENDA_WEEK ? 7 : null;\r\n if (days) {\r\n let minColumnWidth = this._isSmallAppointments ? 20 : 100;\r\n self._timeoutId = setTimeout(() => {\r\n self.SetCellMinWidthOfDays(minColumnWidth, days);\r\n }, 200);\r\n // console.log('timeoutId - '+self._timeoutId)\r\n }\r\n }\r\n\r\n if (groupByResource && (viewName === AGENDA_FIVE_DAY || viewName === AGENDA_WEEK)) {\r\n element.find('.fc-day-grid-container').hide(); // Hide the default grid\r\n }\r\n\r\n if (viewName === MONTH) { // add .fc-disabled-day css class\r\n $('#agendaCalendar').find('.fc-day').each(function() {\r\n var date = $(this).data('date');\r\n var day = moment(date).day();\r\n if (day === 0 || day === 6) {\r\n $(this).addClass('fc-disabled-day');\r\n }\r\n });\r\n } else {\r\n $('#agendaCalendar').find('.fc-day').removeClass('fc-disabled-day');\r\n }\r\n\r\n this._currentDay = moment(view.start._i).format(DATE_FORMATS.SHORT_DATE.Format);\r\n this._viewRenderMode = view.type;\r\n this._agendaViewContainer = element;\r\n\r\n const startDate = FormatConverter.CorrectTimezone(moment(view.start._i).startOf('day').format());\r\n const endDate = FormatConverter.CorrectTimezone(moment(view.end._i).subtract(1, \"days\").endOf('day').format());\r\n\r\n if (!this._isReturned) {\r\n if (this._selectedStartDate !== startDate || this._selectedEndDate !== endDate) {\r\n this.Clean(element);\r\n this._selectedStartDate = startDate;\r\n this._selectedEndDate = endDate;\r\n\r\n if (this._selectedUsers.length !== 0 && (this.SelectUserIsInitialized() || !this.SelectUserWillProvideEventOnLoad())) {\r\n this.LoadData(self._groupByResource());\r\n }\r\n }\r\n } else {\r\n this.Clean(element);\r\n this._selectedStartDate = startDate;\r\n this.Trigger('AGENDA_CHANGED');\r\n this.LoadData();\r\n }\r\n\r\n this.SetDate(this._controlId, startDate);\r\n this._isReturned = false;\r\n this.InitDateTimePicker(element);\r\n },\r\n\r\n viewDestroy: (view, element)=> {\r\n self.RemoveDuplicatesNonBusiness();\r\n },\r\n\r\n dayClick: (start: moment.Moment, jsEvent, view, resource) => {\r\n if (!MobileChecker.IsMobile()) return;\r\n const calendarUserId = resource && resource.id && Number(resource.id);\r\n this.AddNewAppointment(start.format(), this.GetAppointmentDuration(), calendarUserId);\r\n },\r\n\r\n drop: function (date, jsEvent, ui) {\r\n if (date._ambigTime && (self._viewRenderMode !== FULL_CALENDAR_VIEW.MONTH)) { //prohibit drag and drop from hours to all-day\r\n return false;\r\n }\r\n let droppedEvent = $(this).data(\"eventObj\");\r\n const eventId = $(this).data(\"event-id\");\r\n\r\n let allDayArr = _.find(self._calendarEvents(), (event_) => event_.allDay == true && droppedEvent && event_.eventRecordId === eventId);\r\n if (allDayArr) { //prohibit drag and drop from all-day to hours\r\n return false;\r\n }\r\n if (self._todoToAppointmentItem && !jsEvent.ctrlKey) {\r\n self.ConvertTodoToAppointment(self._todoToAppointmentItem, FormatConverter.ShiftTimeZone(FormatConverter.CorrectTimezone(date.format()), true));\r\n self._todoToAppointmentItem = null;\r\n }\r\n if (jsEvent.ctrlKey) {\r\n self.IsUserAllowedToCreate()\r\n .then((res) => {\r\n const isMonthView = self._viewRenderMode === FULL_CALENDAR_VIEW.MONTH;\r\n if (res) {\r\n isMonthView && (date._ambigTime = false);\r\n const droppedEvent = $(this).data(\"eventObj\");\r\n let startDate = !isMonthView ? moment(date) : moment(date).set({\r\n hours: droppedEvent.dateProfile.start.hours(),\r\n minutes: droppedEvent.dateProfile.start.minutes(),\r\n seconds: droppedEvent.dateProfile.start.seconds()\r\n });\r\n const eventId = $(this).data(\"event-id\");\r\n const recordId = +eventId;\r\n const appointment: TableTypeModel = _.find(self._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Appointment);\r\n const starting = FormatConverter.ShiftTimeZone(FormatConverter.CorrectTimezone(startDate.format()), true);\r\n self.CopyRecord(null, appointment.Id, recordId, DataModes.CopyWithRelations, null, starting);\r\n } else {\r\n const notifier = new Notifier();\r\n notifier.Failed(NOTIFICATIONS.NOT_ALLOWED_ACTION);\r\n }\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier();\r\n notifier.Failed(err.message);\r\n });\r\n (self._viewRenderMode === FULL_CALENDAR_VIEW.MONTH) && (date._ambigTime = true);\r\n }\r\n },\r\n\r\n eventDragStart(event) {\r\n if (self._disableDropEvtsBtwnDiffRes) {\r\n // Store original resource ID\r\n if (self._groupByResource()) {\r\n // console.log('eventDragStart originalResourceId -'+event.originalResourceId()+' event.resourceId -'+event.resourceId);\r\n event.originalResourceId(event.resourceId);\r\n }\r\n }\r\n\r\n self._enableTooltip = false;\r\n\r\n const eventId = self._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? event.eventRecordId : event.id;\r\n const appointment = _.find(self._appointmentEvents, (event_) => event_.RecordId === eventId);\r\n if (!appointment) {\r\n const notifier = new Notifier();\r\n notifier.Warning(NOTIFICATIONS.EDIT__ONLY_APPOINTMENT_EVENTS);\r\n return;\r\n }\r\n\r\n const durationFieldValue = _.find(appointment.Values, value => value.FieldId === self._durationField.Id);\r\n const hasDuration = durationFieldValue && durationFieldValue.Value;\r\n if (!hasDuration) {\r\n new Notifier().Warning('Appointment does not have duration');\r\n return;\r\n }\r\n\r\n },\r\n\r\n eventDrop: (event, delta, revertFunc, jsEvent, ui, view) => {\r\n const {\r\n MONTH,\r\n AGENDA_WEEK,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_DAY\r\n } = FULL_CALENDAR_VIEW;\r\n const agendaDayOrWeek = [AGENDA_FIVE_DAY, AGENDA_WEEK].includes(view.name);\r\n\r\n if (self._disableDropEvtsBtwnDiffRes && self._groupByResource() && agendaDayOrWeek) {\r\n let originalResourceId = event.originalResourceId();\r\n let newResourceId = $(jsEvent.target).closest('.fc-event').data('resource-id');\r\n // console.log(`originalResourceId - ${+originalResourceId}`)\r\n // console.log(`newResourceId - ${newResourceId}`)\r\n\r\n if (!newResourceId || +originalResourceId !== newResourceId) {\r\n revertFunc(); // revert the drop\r\n new Notifier().Warning('Cannot move events between different resources');\r\n return\r\n }\r\n }\r\n\r\n self._enableTooltip = true;\r\n if (event.editable) {\r\n const eventId = self._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? event.eventRecordId : event.id;\r\n\r\n this.UpdateAppointment(eventId, moment(event.start._i))\r\n .then(() => {\r\n let currentEvent = null;\r\n if (self._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK) {\r\n currentEvent = _.find(this._calendarEvents(), (event_) => event_.eventRecordId === eventId);\r\n } else {\r\n currentEvent = _.find(this._calendarEvents(), (event_) => event_.id === eventId);\r\n }\r\n\r\n if (currentEvent) {\r\n currentEvent.start = event.start.format();\r\n currentEvent.end = event.end.format();\r\n\r\n let start = moment(event.start.format()).format(\"MM-DD-YYYY\");\r\n let current = moment().format(\"MM-DD-YYYY\");\r\n\r\n if (moment(start).isBefore(current) ||\r\n moment(start).isSame(current)) {\r\n\r\n currentEvent.possibleToAccept(true);\r\n } else {\r\n\r\n currentEvent.possibleToAccept(false);\r\n }\r\n }\r\n })\r\n .fail(() => revertFunc());\r\n }\r\n },\r\n\r\n eventAllow: function (dropLocation, event) {\r\n if (event.allDay) { //prohibit drag and drop from hours to all-day\r\n return false;\r\n }\r\n const eventId = self._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? event.eventRecordId : event.id;\r\n const appointment: AgendaItemModel = _.find(self._appointmentEvents, (event_: AgendaItemModel) => event_.RecordId === eventId);\r\n if (!appointment) return false;\r\n\r\n const durationFieldValue = _.find(appointment.Values, value => value.FieldId === self._durationField.Id);\r\n const hasDuration = durationFieldValue && durationFieldValue.Value;\r\n\r\n if (!hasDuration) return false;\r\n },\r\n\r\n eventClick: (event) => {\r\n if (!this._isReadonly && (event.editable || event.editableWithDisabledLifeStatus)) {\r\n const eventId = this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? event.eventRecordId : event.id;\r\n this.EditEvent(eventId);\r\n }\r\n },\r\n\r\n eventResizeStart: (event) => {\r\n self._enableTooltip = false;\r\n\r\n if (event.Tooltip) {\r\n event.Tooltip.Destroy();\r\n }\r\n },\r\n\r\n eventResize: (event, delta, revertFunc) => {\r\n if (event.editable) {\r\n const eventId = this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? event.eventRecordId : event.id;\r\n this.UpdateAppointment(eventId, moment(event.start._i), delta)\r\n .fail(() => revertFunc());\r\n }\r\n },\r\n\r\n select: (start: moment.Moment, end: moment.Moment, jsEvent, view, resource) => {\r\n if (this._isReadonly) return;\r\n\r\n const calendarUserId = resource && resource.id && Number(resource.id);\r\n\r\n if (view.name === FULL_CALENDAR_VIEW.MONTH) {\r\n this.AddNewAppointment(start.format(), this.GetAppointmentDuration(), calendarUserId);\r\n return;\r\n }\r\n const duration = end.diff(start, 'minutes');\r\n if (duration !== DEFAULT_APPOINTMENT_DURATION) {\r\n if (end.diff(start, 'days') === 0) {\r\n this.AddNewAppointment(start.format(), duration, calendarUserId);\r\n return;\r\n }\r\n\r\n new Notifier().Warning(NOTIFICATIONS.SELECT_ONLY_WITHIN_DAY);\r\n return;\r\n }\r\n\r\n this.AddNewAppointment(start.format(), this.GetAppointmentDuration(), calendarUserId);\r\n },\r\n\r\n eventResizeStop(event) {\r\n self._enableTooltip = true;\r\n },\r\n\r\n eventRender: (event, element: JQuery, view) => {\r\n element.attr('data-event-id', event.eventRecordId);\r\n if (self._disableDropEvtsBtwnDiffRes) {\r\n element.attr('data-resource-id', event.resourceId);\r\n // console.log('eventRender data-resource-id - ' + event.resourceId)\r\n }\r\n\r\n if (event.lifeStatusName === AGENDA_LIFE_STATUSES.Denied) {\r\n return false;\r\n }\r\n\r\n _.each(event.links, (link: any) => {\r\n link.IconComponent = this.GetLinkedIcon(link.Icon);\r\n });\r\n\r\n if (event.users) {\r\n event.users.IconComponent = this.GetLinkedIcon(event.users.Icon);\r\n }\r\n\r\n const startDate = moment(event.start);\r\n\r\n const beforeTime = moment(event.timeBefore).format(DATE_FORMATS.TIME.Format),\r\n stringParts = beforeTime.split(':'),\r\n resHours = +stringParts[0],\r\n resMinutes = +(parseInt(stringParts[1]));\r\n\r\n startDate.add({hours: resHours, minutes: resMinutes});\r\n\r\n const eventId = this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? event.eventRecordId : event.id;\r\n\r\n const startTime = this._viewRenderMode === FULL_CALENDAR_VIEW.MONTH && (!eventId || event.allDay) ? '' : this._viewRenderMode === FULL_CALENDAR_VIEW.MONTH ? startDate.format(DATE_FORMATS.TIME.Format) : moment(event.start).format(DATE_FORMATS.TIME.Format);\r\n const visibleBookingsWeekButton = self._selectedUsers.length === 0 ||\r\n (self._selectedUsers.length == 1 && self._selectedUsers[0] === UserManager.Instance.CurrentUser.Id);\r\n\r\n const startListTime = moment(event.start).format('hh:mm a');\r\n const endListTime = moment(event.end).format('hh:mm a');\r\n const listTime = event.allDay ? `all-day` : startTime ? `${startListTime} - ${endListTime}` : startTime || null;\r\n\r\n const viewModel = {\r\n Id: eventId,\r\n BackgroundColor: event.color ? event.color : event.placeColor,\r\n TimeBefore: event.timeBefore,\r\n Title: event.title,\r\n Owner: event.owner,\r\n TimeAfter: event.timeAfter,\r\n Description: event.description,\r\n TimeBeforeHeight: ko.observable({height: event.timeBeforeHeigth - 2 + 'px'}),\r\n TimeAfterHeight: ko.observable({height: event.timeAfterHeigth - 2 + 'px'}),\r\n Accepting: ko.observable(false),\r\n Accepted: event.accepted,\r\n PossibleToAccept: event.possibleToAccept,\r\n RecurrentRecordId: event.recurrentRecordId,\r\n Links: event.links,\r\n Users: event.users || [],\r\n AppointmentsWeekButtons: event.appointmentsWeekButtons,\r\n AppointmentsCanBeDistributed: _.any(event.appointmentsWeekButtons, (button: any) => {\r\n const dayNumber = moment(button.Date).day();\r\n return dayNumber > 0 && dayNumber < 6 && !button.Disabled;\r\n }),\r\n BookingsWeekButtons: event.bookingsWeekButtons,\r\n Distribute: LABELS.DISTRIBUTE,\r\n Event: event,\r\n Agenda: this,\r\n ActionToggle: ko.observable(false),\r\n ShowAppointmentsWeekMenu: ko.observable(false),\r\n ShowBookingsWeekMenu: ko.observable(false),\r\n VisibleBookingsWeekButton: visibleBookingsWeekButton,\r\n Editable: event.editable || event.editableWithDisabledLifeStatus,\r\n StartTime: startTime,\r\n Country: event.country,\r\n SpecialDay: event.specialDay,\r\n IsIllness: event.isIllness,\r\n IsHoliday: event.isHoliday,\r\n IsHolidayIcon: event.isHolidayIcon,\r\n HolidayTooltip: !!event.holidayTooltip ? event.holidayTooltip : null,\r\n EnableTooltip: this._enableTooltip,\r\n ListModeTime: listTime,\r\n ViewType: view.type\r\n };\r\n\r\n event.agenda = this;\r\n self._viewModels.push(viewModel);\r\n\r\n self.RenderAllCustomEvents(event, element, viewModel);\r\n },\r\n\r\n eventAfterRender: (event, element, view) => {\r\n self.ToggleSmallMode(event, element, view);\r\n self.EventTitleFix(element);\r\n\r\n if (self._enableTooltip) {\r\n self.AgendaLinksEllipsisTooltip(event, element, view);\r\n }\r\n },\r\n\r\n eventDestroy: (event, element, view) =>{\r\n\r\n }\r\n };\r\n }\r\n\r\n RenderAllCustomEvents(event, element, viewModel) {\r\n const {\r\n MONTH,\r\n AGENDA_WEEK,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_DAY,\r\n AGENDA_LIST_WEEK\r\n } = FULL_CALENDAR_VIEW;\r\n const isAgendaListWeek = [AGENDA_LIST_WEEK].includes(viewModel.ViewType);\r\n\r\n if (isAgendaListWeek) {\r\n element.find('.fc-widget-content').remove();\r\n }\r\n\r\n element.find('.fc-content').remove();\r\n element.find('.fc-bg').remove();\r\n ko.cleanNode(element[0]);\r\n element[0].setAttribute('data-bind', 'allowBindings: false');\r\n\r\n const template = (ko as any).renderTemplateX(this.GetEventTemplate(viewModel), viewModel);\r\n\r\n element.prepend(template);\r\n if (event.editable) {\r\n element.addClass(\"fc-appointment\");\r\n }\r\n\r\n if (event.isSpecial) {\r\n let tooltipContent = event.title;\r\n\r\n if (event.country) {\r\n tooltipContent += `: ${event.country}`;\r\n }\r\n\r\n event.Tooltip = new Tooltip(element, tooltipContent, {\r\n position: {x: 'right', y: 'center'},\r\n outside: 'x'\r\n });\r\n event.Tooltip.AddClass('ellipsis-tooltip isSpecialTooltip');\r\n }\r\n }\r\n\r\n GetLinkedIcon(iconModel) {\r\n const linkedIconModel = new IconModel();\r\n\r\n linkedIconModel.FontName = iconModel.FontName;\r\n linkedIconModel.Name = iconModel.Name;\r\n linkedIconModel.Image = iconModel.Image;\r\n linkedIconModel.IsIcon = iconModel.IsIcon;\r\n linkedIconModel.IsImage = iconModel.IsImage;\r\n\r\n const linkedIcon = new Icon(linkedIconModel);\r\n\r\n return linkedIcon;\r\n }\r\n\r\n IsUseDefaultDuration(calendarView: string): boolean {\r\n return calendarView === FULL_CALENDAR_VIEW.MONTH;\r\n }\r\n\r\n BlockUi() {\r\n BlockUI.Block({Target: this._el});\r\n }\r\n\r\n GetEventTemplate(viewModel) {\r\n if (viewModel.Event.planning) {\r\n return PlanningTemplate;\r\n }\r\n\r\n const {\r\n MONTH,\r\n AGENDA_WEEK,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_DAY,\r\n AGENDA_LIST_WEEK,\r\n AGENDA_TIME_LINE_WEEK\r\n } = FULL_CALENDAR_VIEW;\r\n const agendaMonth = [MONTH].includes(viewModel.ViewType);\r\n const agendaListWeek = [AGENDA_LIST_WEEK].includes(viewModel.ViewType);\r\n const agendaTimeLineWeek = [AGENDA_TIME_LINE_WEEK].includes(viewModel.ViewType);\r\n\r\n if (agendaListWeek) {\r\n return EventListTemplate;\r\n }\r\n\r\n if (agendaTimeLineWeek) {\r\n return EventTimeTemplate;\r\n }\r\n\r\n return agendaMonth ? EventMonthTemplate : EventTemplate;\r\n }\r\n\r\n UnBlockUi() {\r\n BlockUI.Unblock(this._el);\r\n }\r\n\r\n EventTitleFix(element: JQuery){\r\n const startDateElem = element.find('.start-date'),\r\n eventContent = element.find('.event-content'),\r\n descriptionButton = element.find('.custom-agenda-event__descriptionButton');\r\n\r\n if (startDateElem.outerHeight() >= 60 && descriptionButton.length ||\r\n startDateElem.outerHeight() >= 30 && !descriptionButton.length) {\r\n eventContent.css({\r\n \"width\": \"100%\"\r\n });\r\n }\r\n\r\n }\r\n\r\n AgendaLinksEllipsisTooltip(event, element: JQuery, view) {\r\n const {\r\n MONTH,\r\n AGENDA_WEEK,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_DAY,\r\n AGENDA_LIST_WEEK,\r\n AGENDA_TIME_LINE_WEEK\r\n } = FULL_CALENDAR_VIEW;\r\n const isAgendaListOrTimeWeek = [AGENDA_LIST_WEEK, AGENDA_TIME_LINE_WEEK].includes(view.type);\r\n\r\n const startDateElem = element.find('.start-date'),\r\n eventMain = element.find('.event-main'),\r\n eventContent = element.find('.event-content'),\r\n agendaLinksElem = element.find('.agenda-links-container'),\r\n endDateElem = element.find('.end-date'),\r\n elemEventHeight = element.outerHeight() - startDateElem.outerHeight();\r\n\r\n const allContentHeight = eventMain.outerHeight() + agendaLinksElem.outerHeight(); //startDateElem.outerHeight() + eventMain.outerHeight() + agendaLinksElem.outerHeight() + endDateElem.outerHeight();\r\n\r\n if ( allContentHeight > elemEventHeight || (this._groupByResource() && this._isSmallAppointments) || isAgendaListOrTimeWeek ){\r\n let _self = this;\r\n if ( this.GetLinkedUsers(event.links).length ) {\r\n event.LinksEllipsisTooltip = new Tooltip(element, LinksTooltipTemplate as any,\r\n {\r\n position: {x: 'left', y: 'center'},\r\n outside: 'x',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n onCreated: () => {\r\n ko.cleanNode(event.LinksEllipsisTooltip._jbox.content[0]);\r\n ko.applyBindings(event, event.LinksEllipsisTooltip._jbox.content[0]);\r\n },\r\n onClose: ()=> {\r\n\r\n }\r\n });\r\n event.LinksEllipsisTooltip.AddClass('agenda-links-ellipsis-tooltip jBox-padding-5px');\r\n }\r\n }\r\n }\r\n\r\n ToggleSmallMode(event, element: JQuery, view) {\r\n let actionMenuBox = element.find('.actionMenuBox'),\r\n customAgendaEvent = element.find('.custom-agenda-event'),\r\n descriptionButton = element.find('.custom-agenda-event__descriptionButton'),\r\n outerHeight = element.outerHeight();\r\n\r\n if (outerHeight <= 30) {\r\n customAgendaEvent.addClass('custom-agenda-event__smallMode');\r\n actionMenuBox.addClass('smallMode');\r\n descriptionButton.addClass('smallMode');\r\n } else if (outerHeight <= 32) {\r\n descriptionButton.addClass('smallMode_V2');\r\n customAgendaEvent.addClass('custom-agenda-event__smallMode_V2');\r\n }\r\n }\r\n\r\n CopyRecord(\r\n screenData: ScreenDataModel,\r\n tableTypeId: number,\r\n exampleRecordId: number = null,\r\n dataMode: DataModes = DataModes.Default,\r\n subjectLifestatusId: number = null,\r\n starting: string = null) {\r\n BlockUI.Block();\r\n\r\n AgendaDataStore\r\n .CopyRecord({\r\n TableId: this.FieldModel.EntityId,\r\n TableTypeId: tableTypeId,\r\n RecordId: exampleRecordId,\r\n Starting: starting,\r\n AppointmentAttendeesId: this.GetSelectedAppointmentAttendees()\r\n })\r\n .then((result: any) => {\r\n this.Trigger('AGENDA_CHANGED');\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(this._groupByResource());\r\n })\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n return;\r\n }\r\n\r\n async NewRecord(\r\n screenData: ScreenDataModel,\r\n tableTypeId: number,\r\n exampleRecordId: number = null,\r\n dataMode: DataModes = DataModes.Default,\r\n subjectLifestatusId: number = null,\r\n defaultValues?: Array<{ FieldName: string, FieldValue: string, Type: string }>,\r\n shouldLinkAppointmentAttendees: boolean = false,\r\n calendarUserId: number = null,\r\n linkToSource: boolean = false,\r\n aliasSuffix: string = '') {\r\n BlockUI.Block();\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen(\r\n {\r\n EntityId: this.FieldModel.EntityId,\r\n TableTypeId: tableTypeId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n SubjectLifestatusId: subjectLifestatusId,\r\n DataMode: dataMode,\r\n AliasSuffix: aliasSuffix\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n if (screenData) {\r\n screenData.ControlsData.forEach(controlData => {\r\n const screenControl = screen.GetControlBy(control => control.HasOneField() && control.GetFieldModel().Id === controlData.FieldId);\r\n if (screenControl) {\r\n screenControl.SetDefaultValue({\r\n SubjectRecordId: screen.GetRecordId(),\r\n SubjectEntityId: screen.GetEntityId(),\r\n Data: controlData,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n })\r\n }\r\n });\r\n }\r\n\r\n let relatedRecordId = this.GetForm().GetScreen().GetRecordId();\r\n screen.IsDataFromExample = exampleRecordId > 0;\r\n screen.LinkToSource = linkToSource;\r\n\r\n const linkList = screen.GetControl(CONTROL_TYPES.LinkList) as LinkList;\r\n if (linkList) {\r\n screen.On('LINK_LIST_DATA_LOADED', this, () => {\r\n if (relatedRecordId > 0) {\r\n let relatedEntityId = this.GetForm().GetScreen().GetEntityId();\r\n screen.AddInnerRelation(relatedEntityId, relatedRecordId);\r\n }\r\n\r\n if (shouldLinkAppointmentAttendees) {\r\n this.LinkAppointmentAttendees(linkList, calendarUserId);\r\n }\r\n });\r\n }\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.Screen.Trigger('RECORD_CREATED', { RecordId: eventArgs.data.RecordId });\r\n this.Trigger('AGENDA_CHANGED');\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(this._groupByResource());\r\n });\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || tableTypeId;\r\n this.NewRecord(null, copyTableType, eventArgs.data.recordId, eventArgs.data.dataMode, null, null, false, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n if (defaultValues) {\r\n _.forEach(defaultValues, (item) => {\r\n const control = screen.GetControlByFieldName(item.FieldName, item.Type);\r\n let startingModel = new ControlDataModel();\r\n startingModel.Value = item.FieldValue;\r\n control.SetDefaultValue({\r\n SubjectRecordId: screen.GetRecordId(),\r\n SubjectEntityId: screen.GetEntityId(),\r\n Data: startingModel,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n });\r\n });\r\n }\r\n\r\n screen.ShowInModal();\r\n\r\n if (!linkList && shouldLinkAppointmentAttendees && this.GetSelectedAppointmentAttendees().length > 0) {\r\n new Notifier().Warning(NOTIFICATIONS.ATTENDEES_CANNOT_BE_ADDED_DUE_TO_MISSING_LINK_LIST);\r\n }\r\n })\r\n .fail(err => new Notifier($(this._el)).Warning(err.message));\r\n }\r\n\r\n async EditRecord(recordId: number, tableTypeId: number) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n BlockUI.Block();\r\n\r\n LockManager.Instance.TryLock(this.FieldModel.EntityId, recordId)\r\n .then(() => {\r\n screenManager.GetEditScreen({\r\n EntityId: this.FieldModel.EntityId,\r\n TableTypeId: tableTypeId,\r\n RecordId: recordId\r\n })\r\n .always(() => BlockUI.Unblock())\r\n .then((screen: EditScreen) => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === this.FieldModel.EntityId && eventArgs.data.RecordId === recordId) {\r\n screen.Close();\r\n }\r\n });\r\n screen.On('MODAL_CLOSE', this, () => {\r\n LockManager.Instance.ReleaseLock(this.FieldModel.EntityId, recordId);\r\n });\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.Trigger('AGENDA_CHANGED');\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n this.LoadData(this._groupByResource());\r\n });\r\n\r\n screen.On('RECORD_REMOVED', this, () => {\r\n this.Trigger('AGENDA_CHANGED');\r\n this.LoadData(this._groupByResource());\r\n });\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableTypeId = eventArgs.data.copyToType || tableTypeId;\r\n this.NewRecord(null, copyTableTypeId, eventArgs.data.recordId, eventArgs.data.dataMode, null, null, false, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n screen.On('FOLLOWUP_RECORD', this, (eventArgs) => {\r\n const followUp = eventArgs.data.followUpRecordModel as FollowUpRecordModel;\r\n\r\n if (!followUp) {\r\n this.NewRecord(null, tableTypeId, eventArgs.data.recordId, DataModes.FollowUp);\r\n } else if (followUp.LifeStatusSort !== null\r\n && followUp.LifeStatusSort !== LIFE_STATUS_GROUPS.RETIRED\r\n && !followUp.LifeStatusNoActionNode\r\n && (followUp.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT_AND_NEW\r\n || followUp.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW)) {\r\n this.NewRecord(null, tableTypeId, eventArgs.data.recordId, DataModes.FollowUp, followUp.LifeStatusId);\r\n }\r\n });\r\n\r\n screen.ShowInModal();\r\n })\r\n .fail(err => {\r\n LockManager.Instance.ReleaseLock(this.FieldModel.EntityId, recordId);\r\n let notifier = new Notifier();\r\n notifier.Failed(err.message);\r\n });\r\n }).always(() => BlockUI.Unblock());\r\n }\r\n\r\n private GetLinkedUsers(linkTable: LinkTableModel[]) {\r\n let linkIds = [];\r\n const userTable = _.find(linkTable, (table) => table.Name === SYSTEM_TABLE_NAMES.SYS_USERS);\r\n if (userTable) {\r\n _.forEach(userTable.LinkRecords, (record) => {\r\n linkIds.push(record.Id);\r\n });\r\n }\r\n return linkIds;\r\n }\r\n\r\n private GetLinkedResources(linkTable: LinkTableModel[]): ILinkedResources {\r\n let linkedResources: ILinkedResources = {};\r\n _.forEach(linkTable, (table) => {\r\n if (table.Name !== SYSTEM_TABLE_NAMES.SYS_USERS) {\r\n linkedResources[table.Id] = _.map(table.LinkRecords, (record) => record.Id);\r\n }\r\n });\r\n return linkedResources;\r\n }\r\n\r\n private ActionToggleMenu(data): any {\r\n this._viewModels().forEach(item => {\r\n (item !== data) && item.ActionToggle(false)\r\n });\r\n data.ActionToggle(!data.ActionToggle());\r\n }\r\n\r\n private ToggleAppointmentsWeekMenu(data) {\r\n data.ShowAppointmentsWeekMenu(!data.ShowAppointmentsWeekMenu());\r\n }\r\n\r\n private ToggleBookingsWeekMenu(data) {\r\n data.ShowBookingsWeekMenu(!data.ShowBookingsWeekMenu());\r\n }\r\n\r\n private GoToScheduler(agenda, event) {\r\n event.stopPropagation();\r\n\r\n const appointment = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Appointment);\r\n const params: IRePlanningData = {\r\n StartTime: agenda.Event.start,\r\n EndTime: agenda.Event.end,\r\n Id: agenda.Event.id,\r\n LinkedRecords: {\r\n Links: agenda.Event.links,\r\n Users: this.GetLinkedUsers(agenda.Event.links),\r\n Resources: this.GetLinkedResources(agenda.Event.links)\r\n },\r\n Name: agenda.Event.title,\r\n Agenda: this,\r\n IsInTab: false,\r\n TableTypeId: appointment ? appointment.Id : null,\r\n LinkedSubGroups: []\r\n };\r\n\r\n if (agenda.Editable) {\r\n const parent = this.GetParentControl();\r\n if (parent && parent.GetType() === CONTROL_TYPES.TabPage && parent.GetParentControl().GetType() === CONTROL_TYPES.Tab) {\r\n const tabControl = parent.GetParentControl() as Tab;\r\n let tabWithScheduler: TabPage,\r\n tabWithSchedulerIndex,\r\n schedulerControlInTab: Scheduler;\r\n\r\n const controls = tabControl.GetAllSubControls();\r\n\r\n if (controls) {\r\n controls.find((control, index) => {\r\n if (control.GetType() === CONTROL_TYPES.TabPage) {\r\n const subControls = control.GetAllSubControls();\r\n if (subControls) {\r\n const scheduler = subControls.find(subControl => subControl.GetType() === CONTROL_TYPES.Scheduler) as Scheduler;\r\n if (scheduler) {\r\n schedulerControlInTab = scheduler;\r\n tabWithScheduler = control as TabPage;\r\n tabWithSchedulerIndex = index;\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n if (schedulerControlInTab) {\r\n params.IsInTab = true;\r\n params.TabIndex = _.indexOf(this.GetParentControl().GetParentControl().GetAllSubControls(), this.GetParentControl());\r\n tabControl.SetActiveTab(tabWithSchedulerIndex, {\r\n controlId: schedulerControlInTab.GetModel().Id,\r\n params: params,\r\n control: schedulerControlInTab,\r\n action: 'OpenReplanMode'\r\n });\r\n } else {\r\n this.ScrollToScheduler(params);\r\n }\r\n } else {\r\n this.ScrollToScheduler(params);\r\n }\r\n }\r\n }\r\n\r\n private ScrollToScheduler(params) {\r\n const allSchedulers = this.GetForm().GetScreen().GetControlsByType(CONTROL_TYPES.Scheduler);\r\n let scheduler = allSchedulers.find((control: Scheduler) => !control.GetParentControl()) as Scheduler;\r\n\r\n if (scheduler) {\r\n let isLoaded = false;\r\n $([document.documentElement, document.body]).animate({\r\n scrollTop: $(scheduler.GetWrapper()).offset().top - 60\r\n }, 1000, () => {\r\n if (!isLoaded) {\r\n const $scheduler = $(scheduler.GetWrapper());\r\n //remember the previous height to prevent control jumping\r\n $scheduler.css('min-height', `${$scheduler.height()}px`).css('z-index', '1');\r\n scheduler.LoadData(params);\r\n isLoaded = true;\r\n }\r\n });\r\n } else {\r\n new Notifier().Warning(this._labels.SCHEDULER_NOT_FOUND);\r\n }\r\n }\r\n\r\n async NavigateToLinkedRecord(linkedRecord: LinkRecord, linkTable: LinkTableModel, event) {\r\n event.stopPropagation();\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n BlockUI.Block();\r\n screenManager.GetScreenByScreenType(\r\n linkTable.Id,\r\n ScreenTypes.ConsultScreen,\r\n linkedRecord.Id\r\n )\r\n .always(() => BlockUI.Unblock())\r\n .then(screen => screen.ShowInModal())\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n GetAppointmentDuration() {\r\n let appointmentDuration = GlobalManager.Instance.GetGlobal(GLOBALS.APPOINTMENT_DURATION);\r\n let appointmentDurationMinutes = parseInt(appointmentDuration);\r\n\r\n if (isNaN(appointmentDurationMinutes)) {\r\n appointmentDurationMinutes = DEFAULT_APPOINTMENT_DURATION;\r\n }\r\n\r\n return appointmentDurationMinutes;\r\n }\r\n\r\n GetSelectedAppointmentAttendees() {\r\n const appointmentAttendees = this._appointmentAttendees();\r\n if (!appointmentAttendees) {\r\n return [];\r\n }\r\n\r\n const selectedUsers = appointmentAttendees.Users.filter(user => user.Checked()).map(user => user.Id);\r\n\r\n const selectedUserGroups =\r\n appointmentAttendees.UserGroups\r\n .filter(userGroup => userGroup.Checked())\r\n .map(userGroup => userGroup.Id);\r\n\r\n return selectedUsers.concat(selectedUserGroups);\r\n }\r\n\r\n ReturnFromScheduler(params: IRePlanningData) {\r\n this._isReturned = true;\r\n this._selectedStartDate = params.Agenda._selectedStartDate;\r\n this._selectedEndDate = params.Agenda._selectedEndDate;\r\n this._viewRenderMode = params.Agenda._viewRenderMode;\r\n }\r\n\r\n SetStarting(starting: string) {\r\n this._isReturned = true;\r\n this._selectedStartDate = moment(starting).startOf('day').format();\r\n this._selectedEndDate = moment(starting).endOf('day').add(4, 'd').format();\r\n\r\n const $agenda = $(this.GetWrapper()).find('#agendaCalendar');\r\n if ($agenda.length) {\r\n $agenda.fullCalendar('gotoDate', this._selectedStartDate);\r\n $([document.documentElement, document.body]).animate({\r\n scrollTop: $agenda.offset().top - 60\r\n }, 1000)\r\n }\r\n\r\n }\r\n \r\n CustomScrollToHour(scrollToHour: number){\r\n const screen = this._form && this._form.GetScreen();\r\n if (screen.IsInModal()) {\r\n const $agenda = $(this.GetWrapper()).find('#agendaCalendar');\r\n if ($agenda.length) {\r\n let scroller = $agenda.find('.fc-scroller');\r\n if (scroller.length) {\r\n const fixHour: number = 1;\r\n let scrollPosition = (scrollToHour + fixHour) * 60;\r\n scroller.scrollTop(scrollPosition);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private SelectUserWillProvideEventOnLoad() {\r\n const screenData = this.GetForm().GetScreen().GetDataModel();\r\n\r\n if (screenData) {\r\n const screen = this._form && this._form.GetScreen();\r\n const selectUser = screen.GetControl(CONTROL_TYPES.SelectUser) as SelectUser;\r\n return selectUser ? selectUser.IsRememberMe : false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private SelectUserIsInitialized() {\r\n const screenData = this.GetForm().GetScreen().GetDataModel();\r\n\r\n if (screenData) {\r\n const screen = this._form && this._form.GetScreen();\r\n const selectUser = screen.GetControl(CONTROL_TYPES.SelectUser) as SelectUser;\r\n return selectUser ? selectUser.Initialized : false;\r\n }\r\n\r\n return false\r\n }\r\n\r\n private LinkAppointmentAttendees(linkList: LinkList, calendarUserId: number) {\r\n const appointmentAttendees = this._appointmentAttendees();\r\n if (!appointmentAttendees) {\r\n return;\r\n }\r\n\r\n const usersRelationModel = linkList.DataModel().UserRelation();\r\n\r\n const selectedUsers = appointmentAttendees.Users.filter(user => user.Checked());\r\n selectedUsers.forEach(user => this.LinkAppointmentAttendee(user.Id, user.Name, user.UserTypeName, user.UserTypeNameTranslation, linkList, usersRelationModel));\r\n\r\n const selectedUserGroups = appointmentAttendees.UserGroups.filter(userGroup => userGroup.Checked());\r\n selectedUserGroups.forEach(userGroup => this.LinkAppointmentAttendee(userGroup.Id, userGroup.Name, userGroup.TypeName, userGroup.TypeNameTranslation, linkList, usersRelationModel));\r\n\r\n if (!_.any(selectedUsers) && !_.any(selectedUserGroups) && calendarUserId\r\n && _.any(appointmentAttendees.Users, user => user.Id === calendarUserId)) {\r\n const calendarUserModel = _.find(appointmentAttendees.Users, user => user.Id === calendarUserId);\r\n this.LinkAppointmentAttendee(calendarUserModel.Id, calendarUserModel.Name, calendarUserModel.UserTypeName, calendarUserModel.UserTypeNameTranslation, linkList, usersRelationModel);\r\n }\r\n }\r\n\r\n private LinkAppointmentAttendee(userId: number, userName: string, userTypeName: string, userTypeNameTranslation: string, linkList: LinkList, usersRelationModel: UserEntityRelationsViewModel) {\r\n const existingLink = linkList.FindLinkByRecord(userId, usersRelationModel);\r\n if (existingLink) {\r\n return;\r\n }\r\n\r\n let newRelation = new NewRelationModel();\r\n newRelation.Name = userName;\r\n newRelation.Id = userId;\r\n newRelation.IsMain = false;\r\n newRelation.Level = SECURITY_LEVELS.SHARED;\r\n newRelation.TypeName = userTypeName;\r\n newRelation.TypeTranslatedName = userTypeNameTranslation;\r\n\r\n linkList.AddRecord(userId, usersRelationModel, newRelation);\r\n }\r\n\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-calendar-check-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","export const PROPERTIES = {\r\n TODO: 'AddToDo',\r\n SPECIAL_DAY: 'SpecialDay',\r\n REQUEST_LEAVE: 'RequestLeave',\r\n REPORT_ILLNESS: 'ReportIllness',\r\n ADD_RECURRENT: 'AddRecurrent',\r\n SMALL_APPOINTMENTS: 'SmallAppointments'\r\n};","import * as moment from \"moment\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {GroupEditor} from \"Core/Components/Controls/Scheduler/Utils/GroupEditor\";\r\nimport {LABELS} from \"../../../../Translation/Locales\";\r\n\r\nexport class SchedulerViewModel {\r\n Week: number;\r\n Date: Date;\r\n StartingTime: String;\r\n NumberOfPeriods: number;\r\n Periods: Array<Period>;\r\n HeaderColumns: Array<HeaderColumn>;\r\n PeriodDuration: number;\r\n Groups: Array<GroupEditor>;\r\n AgendaConnection: boolean;\r\n CreatingData: boolean;\r\n IsValid: boolean;\r\n\tReadingData: boolean;\r\n\tScreenSubjectRecordName: string;\r\n Errors: Array<string>;\r\n Month: String;\r\n MonthDayYear: String;\r\n CurrentDate: any;\r\n AvailablePeriods: {\r\n [key: number]: {\r\n [key: number]: Array<{a: moment.Moment, b: moment.Moment}>\r\n }\r\n };\r\n\r\n constructor() {\r\n this.Date = new Date();\r\n }\r\n\r\n get WeekNumber() {\r\n return `${this.Week}`;\r\n }\r\n\r\n AfterRender(columnNumber, isRePlanMode: boolean, el, headerCol: HeaderColumn) {\r\n if (isRePlanMode && (this.HeaderColumns[columnNumber] === headerCol)) {\r\n const parent = $(el).parent(),\r\n scrollElem = $(el).filter('.scheduler__header__column'),\r\n scrollSize = scrollElem.offset().left - ($(window).width() - parent.width());\r\n parent.animate({\r\n scrollLeft: scrollSize\r\n });\r\n }\r\n }\r\n\r\n GetGetColumnWidthClass() {\r\n return 'header__subcolumn--width-' + this.Periods.length;\r\n }\r\n\r\n GetHeaderWidthClass() {\r\n return 'header__subcolumns--wrapper-' + this.Periods.length;\r\n }\r\n\r\n GetPeriods(): Array<Period> {\r\n return this.Periods;\r\n }\r\n}\r\n\r\nexport class Period {\r\n Start: string;\r\n Duration: number;\r\n\r\n constructor(start: string, duration: number) {\r\n this.Start = start;\r\n this.Duration = duration;\r\n }\r\n\r\n get DisplayValue() {\r\n if (moment(this.Start).isValid()) {\r\n return moment(this.Start).format(DATE_FORMATS.TIME.Format);\r\n } else {\r\n return moment(moment().format(DATE_FORMATS.SHORT_DATE.Format) + \" \" + this.Start).format(DATE_FORMATS.TIME.Format);\r\n }\r\n }\r\n}\r\n\r\nexport class HeaderColumn {\r\n Day: moment.Moment;\r\n Periods: Array<Period>;\r\n DisplayValue: string;\r\n private _labels = LABELS;\r\n\r\n constructor(day: moment.Moment, periods: Array<Period>, screen: string) {\r\n this.Day = day;\r\n this.Periods = periods;\r\n\r\n switch (screen) {\r\n case this._labels.AGENDA_MONTH:\r\n this.DisplayValue = this.Day.format(DATE_FORMATS.DAY_OF_WEK_ddd.MomentFormat)+', '+ this.Day.format(DATE_FORMATS.SHORT_DATE_SHORT_WEEK.Format)+', '+ this._labels.NUMBER_WEEKS +this.Day.format(DATE_FORMATS.WEEK_OF_YEAR_WW.Format);\r\n break;\r\n case this._labels.AGENDA_WEEK:\r\n this.DisplayValue = this.Day.format(DATE_FORMATS.DAY_OF_WEK_ddd.MomentFormat)+', '+ this.Day.format(DATE_FORMATS.SHORT_DATE_SHORT_WEEK.Format);\r\n break;\r\n case this._labels.AGENDA_WORK_WEEK:\r\n this.DisplayValue = this.Day.format(DATE_FORMATS.DAY_OF_WEK_ddd.MomentFormat)+', '+ this.Day.format(DATE_FORMATS.SHORT_DATE_SHORT_WEEK.Format);\r\n break;\r\n case this._labels.AGENDA_DAY:\r\n this.DisplayValue = this.Day.format(DATE_FORMATS.DAY_OF_WEK_ddd.MomentFormat)+', '+ this.Day.format(DATE_FORMATS.SHORT_DATE_SHORT_WEEK.Format);\r\n break;\r\n default:\r\n this.DisplayValue = this.Day.format(DATE_FORMATS.SHORT_DATE_SHORT_WEEK.Format);\r\n }\r\n }\r\n}","import * as moment from \"moment\";\r\n\r\nimport {Period} from \"../Models/View/SchedulerViewModel\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\n\r\nexport class PeriodsMapping {\r\n static OnViewModel(startingTime: string, periodDuration: number, numberOfPeriods: number): Array<Period> {\r\n let periods: Array<Period> = [];\r\n let periodStart = moment(startingTime, DATE_FORMATS.TIME.Format);\r\n let duration = periodDuration;\r\n\r\n for (let i = 0; i < numberOfPeriods; i++) {\r\n periods.push(new Period(periodStart.format(DATE_FORMATS.TIME.Format), duration));\r\n\r\n const periodEnd = periodStart.clone().add(duration, 'h');\r\n\r\n if (periodStart.isSame(periodEnd, 'day')) {\r\n periodStart = periodEnd;\r\n } else {\r\n periods[i].Duration = periodEnd.diff(periodStart, 'hours');\r\n break;\r\n }\r\n }\r\n\r\n return periods;\r\n }\r\n}","import * as _ from \"underscore\";\r\nimport * as moment from \"moment\";\r\nimport clone from 'clone';\r\n\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {HeaderColumn, Period} from \"../Models/View/SchedulerViewModel\";\r\n\r\nexport class HeaderColumnMapping {\r\n static OnViewModel(startDate: moment.Moment, endDate: moment.Moment, periods: Period[], screen: string): HeaderColumn[] {\r\n const days: HeaderColumn[] = [];\r\n const daysAmount = endDate.diff(startDate, 'days');\r\n\r\n const starting = startDate.clone();\r\n\r\n for (let i = 0; i <= daysAmount; i++) {\r\n const dayPeriods = HeaderColumnMapping.ConvertPeriodsToWeekDay(periods, starting.clone());\r\n days.push(new HeaderColumn(starting.clone(), dayPeriods, screen));\r\n starting.add(1, 'd');\r\n }\r\n\r\n return days;\r\n }\r\n\r\n static ConvertPeriodsToWeekDay(periods: Period[], day: moment.Moment) {\r\n const dayPeriods = _.map(periods, item => clone(item));\r\n\r\n _.forEach(dayPeriods, (period) => {\r\n let date = day.clone().format(DATE_FORMATS.SHORT_DATE.Format);\r\n if (moment(period.Start).isValid()) {\r\n period.Start = moment(date + \" \" + moment(period.Start).format(DATE_FORMATS.TIME.Format)).format(DATE_FORMATS.DATE_TIME.Format);\r\n } else {\r\n period.Start = moment(date + \" \" + period.Start).format(DATE_FORMATS.DATE_TIME.Format);\r\n }\r\n });\r\n\r\n return dayPeriods;\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as moment from 'moment';\r\n\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {Period} from \"../Models/View/SchedulerViewModel\";\r\nimport {IAppointment} from \"../Models/Store/Response/SchedulerResponseModel\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {SchedulerView} from \"../Views/SchedulerView\";\r\nimport {IRePlanningData} from \"Core/Controls/Scheduler/Interfaces\";\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nexport interface ICellEditor {\r\n count: number,\r\n isAvailable: boolean,\r\n isFreeDay: boolean,\r\n period: Period,\r\n schedulerView: SchedulerView,\r\n isGroupCell?: boolean,\r\n rePlanningData?: IRePlanningData,\r\n isSelected: boolean,\r\n columnIndex: string\r\n appointments: Array<IAppointment>;\r\n}\r\n\r\nexport class CellEditor {\r\n _count: number;\r\n _isAvailable: boolean;\r\n _IsGroupCell: boolean;\r\n _isFreeDay: boolean;\r\n _period: Period;\r\n _appointments: KnockoutObservableArray<IAppointment>;\r\n _isAvailableForReplan: KnockoutObservable<boolean>;\r\n _view: SchedulerView;\r\n _isReplanningCell: KnockoutObservable<boolean>;\r\n _availableForReplanRanges: Array<{Start: moment.Moment, End: moment.Moment, DisplayValue: string}>;\r\n private _dropDown: JBoxDropDown;\r\n private _replanningData: IRePlanningData;\r\n private _columnIndex: string;\r\n private _labels = LABELS;\r\n\r\n constructor(model: ICellEditor) {\r\n this._count = model.count;\r\n this._isAvailable = model.isAvailable;\r\n this._isFreeDay = model.isFreeDay;\r\n this._IsGroupCell = model.isGroupCell || false;\r\n this._period = model.period;\r\n this._appointments = ko.observableArray([]);\r\n this._view = model.schedulerView;\r\n this._replanningData = model.rePlanningData;\r\n this._isReplanningCell = ko.observable(false);\r\n this._isAvailableForReplan = ko.observable(false);\r\n this._columnIndex = `column-${model.columnIndex}`;\r\n this._availableForReplanRanges = [];\r\n this.InitAppointments(model.appointments);\r\n\r\n if (model.isSelected) {\r\n this.IsReplanAppointment();\r\n this.IsAvailableForReplan();\r\n }\r\n }\r\n\r\n IsAvailableForReplan() {\r\n if (this._isAvailable) {\r\n const appointDuration = this._replanningData.EndTime.diff(this._replanningData.StartTime, 'hours', true);\r\n if ((this._period.Duration - this._count) >= appointDuration) {\r\n this._isAvailableForReplan(true);\r\n }\r\n }\r\n }\r\n\r\n private IsReplanAppointment() {\r\n const start = this._replanningData.StartTime;\r\n const end = this._replanningData.EndTime;\r\n const periodStart = moment(this._period.Start);\r\n const periodEnd = periodStart.clone().add(this._period.Duration, 'h');\r\n this._isReplanningCell((start < periodEnd) && (end > periodStart));\r\n }\r\n\r\n GetClassName(qty: number): string {\r\n let classes = this._columnIndex;\r\n if (this._isFreeDay) {\r\n classes = classes + ' subcol--red';\r\n }\r\n if (this._IsGroupCell && this._count) {\r\n classes = classes + ' subcol--green';\r\n } else if (this._IsGroupCell && !this._count) {\r\n classes = classes + ' subcol--white';\r\n }\r\n if (this._isAvailable) {\r\n if (this._count) {\r\n classes = classes + ' subcol--blue';\r\n } else {\r\n classes = classes + ' subcol--white';\r\n }\r\n } else {\r\n classes = classes + ' subcol--grey'\r\n }\r\n classes = classes + ' subcol-' + qty;\r\n return classes;\r\n }\r\n\r\n\tget DisplayValue(): string {\r\n return this._count ? this.ConvertValue(this._count) : null;\r\n }\r\n\r\n private ConvertValue(value: number): string {\r\n let rounded = Math.round(value * 100) / 100;\r\n return FormatConverter.ConvertDecimal(rounded.toString());\r\n }\r\n\r\n private DisplayRanges(ranges: Array<{Start: moment.Moment, End: moment.Moment, DisplayValue: string}>, cell, event) {\r\n if (this._availableForReplanRanges.length > 1) {\r\n this.InitDropdown(event.currentTarget);\r\n this._dropDown.Toggle();\r\n }\r\n }\r\n\r\n private InitAppointments(agenda: Array<IAppointment>) {\r\n if (this._count && agenda.length && !this._appointments().length) {\r\n let appointments = [];\r\n _.forEach(agenda, (item) => {\r\n const start = moment(FormatConverter.CorrectTimezone(item.Starting));\r\n const end = moment(start.clone()).add(moment.duration(moment(item.Duration).format(DATE_FORMATS.TIME.Format)));\r\n\r\n const periodStart = moment(this._period.Start);\r\n const periodEnd = periodStart.clone().add(this._period.Duration, 'h');\r\n\r\n if ((start < periodEnd) && (end > periodStart)){\r\n appointments.push({\r\n Id: item.Id,\r\n Name: item.Name,\r\n Duration: start.format(DATE_FORMATS.TIME.Format) + ' - ' + end.format(DATE_FORMATS.TIME.Format),\r\n Subjects: item.AgendaSubjects\r\n });\r\n }\r\n });\r\n this._appointments(appointments);\r\n }\r\n }\r\n\r\n private DisplayAppointments(cell, event) {\r\n if (this._replanningData)\r\n return;\r\n\r\n if (this._appointments().length) {\r\n this.InitDropdown(event.currentTarget);\r\n this._dropDown.Toggle();\r\n }\r\n }\r\n\r\n private InitDropdown(el: HTMLElement) {\r\n if (!this._dropDown) {\r\n const self = this;\r\n this._dropDown = new JBoxDropDown({\r\n onCreated: () => {\r\n this._dropDown.SetContent();\r\n },\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n onOpen: function() {\r\n $(this.container.parent()).on('mouseleave.Appointment', function (ev) {\r\n self._dropDown && self._dropDown.Close();\r\n }.bind(this));\r\n\r\n $(el).on('mouseleave.Appointment', function (ev) {\r\n if(!$(ev.toElement).parent(this.container.parent()).is(this.container.parent()) && !$(ev.toElement).is(this.container.parent())) {\r\n self._dropDown && self._dropDown.Close();\r\n }\r\n }.bind(this));\r\n },\r\n otherOptions: {\r\n closeOnMouseleave: true,\r\n closeOnClick: false,\r\n attach: $(el),\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: function() {\r\n self._dropDown.Destroy();\r\n self._dropDown = null;\r\n $(el).off('mouseleave.Appointment');\r\n $(this.container.parent()).off('mouseleave.Appointment');\r\n },\r\n offset: {\r\n x: 15\r\n },\r\n pointer: 'left',\r\n addClass: 'scheduler-appointments-dropdown',\r\n maxWidth: 200,\r\n zIndex: 10\r\n }\r\n });\r\n }\r\n }\r\n\r\n ShowAppointment(data, event) {\r\n const typeScreen = new TypeScreen(this._view.GetEntityId(), 0, false, false, null, ['Appointment']);\r\n\r\n typeScreen\r\n .On('TYPE_SELECTED', this, eventArgs => {\r\n this._view.OnShowDefaultScreen(data, eventArgs.data.EntityId, event, eventArgs.data.TypeId);\r\n })\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n private ShowDefaultScreen(entityId, data, event) {\r\n this._view.OnShowDefaultScreen(data, entityId, event);\r\n }\r\n\r\n private OnReplan(start, allowClick, el, event) {\r\n if (allowClick) {\r\n this._view.OnReplan(moment(start));\r\n } else if (this._availableForReplanRanges.length === 1) {\r\n this._view.OnReplan(moment(start));\r\n }\r\n }\r\n\r\n private CheckIsAfter():boolean {\r\n return moment().isAfter(this._period.Start);\r\n }\r\n}\r\n","import {CellEditor} from \"./CellEditor\";\r\n\r\nexport class ColumnEditor {\r\n _cellsEditors: CellEditor[];\r\n constructor() {\r\n this._cellsEditors = [];\r\n }\r\n}","export class ColumnFirstEditor {\r\n _name: string;\r\n _id: number;\r\n _entityId: number;\r\n _type: string;\r\n _recordTypeId: number;\r\n _recordTypeName: string;\r\n\r\n constructor(name: string, id: number, entityId: number, type: string, recordTypeId: number, recordTypeName: string) {\r\n this._name = name;\r\n this._id = id;\r\n this._entityId = entityId;\r\n this._type = type;\r\n this._recordTypeId = recordTypeId;\r\n this._recordTypeName = recordTypeName;\r\n }\r\n}\r\n","import * as ko from \"knockout\";\r\nimport * as $ from 'jquery';\r\n\r\nimport {SubGroupEditor} from \"./SubGroupEditor\";\r\nimport {ColumnEditor} from \"./ColumnEditor\";\r\n\r\nexport class GroupEditor {\r\n _$collapse: JQuery;\r\n _subGroupEditors: SubGroupEditor[];\r\n _columnsEditors: ColumnEditor[];\r\n _name: string;\r\n _isCollapsed: KnockoutObservable<boolean>;\r\n _sortOrder: KnockoutObservable<number>;\r\n _isSelected: KnockoutObservable<boolean>;\r\n private _oldSortOrder: number;\r\n _selectedCount: KnockoutObservable<number>;\r\n\r\n constructor(name: string, order: number, isSelected: boolean) {\r\n this._name = name;\r\n this._sortOrder = ko.observable(order);\r\n this._subGroupEditors = [];\r\n this._columnsEditors = [];\r\n this._isCollapsed = ko.observable(true);\r\n this._oldSortOrder = order;\r\n this._isSelected = ko.observable(isSelected);\r\n this._selectedCount = ko.observable(this.GetSelectedCount());\r\n }\r\n\r\n ToggleSelection() {\r\n _.forEach(this._subGroupEditors, (subGroup) => {\r\n subGroup._isSelected(this._isSelected());\r\n });\r\n this.UpdateSelectedCount();\r\n return true;\r\n }\r\n\r\n UpdateSelectedCount() {\r\n this._selectedCount(this.GetSelectedCount());\r\n }\r\n\r\n GetSelectedCount(): number {\r\n let selected = 0;\r\n _.forEach(this._subGroupEditors, (subGroup) => {\r\n if (subGroup._isSelected()) {\r\n selected++;\r\n }\r\n });\r\n return selected;\r\n }\r\n\r\n OnOpenGroup() {\r\n this._isCollapsed(false);\r\n this._$collapse.addClass('opened');\r\n }\r\n\r\n OnCloseGroup() {\r\n this._isCollapsed(true);\r\n this._$collapse.removeClass('opened');\r\n }\r\n\r\n OnCollapseReady($collapse) {\r\n this._$collapse = $collapse;\r\n }\r\n\r\n OpenGroup() {\r\n this._$collapse && this._$collapse.find('a').click();\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport {ColumnEditor} from \"./ColumnEditor\";\r\nimport {ColumnFirstEditor} from \"./ColumnFirstEditor\";\r\nimport {GroupEditor} from \"./GroupEditor\";\r\nimport {IAppointment} from \"../Models/Store/Response/SchedulerResponseModel\";\r\n\r\nexport class SubGroupEditor {\r\n _columnFirst: ColumnFirstEditor;\r\n _columnsEditors: ColumnEditor[];\r\n _isSelected: KnockoutObservable<boolean>;\r\n _group: GroupEditor;\r\n _agenda: Array<IAppointment>;\r\n\r\n constructor(group: GroupEditor, appointments: Array<IAppointment>, isSelected: boolean) {\r\n this._columnsEditors = [];\r\n this._isSelected = ko.observable(isSelected);\r\n this._group = group;\r\n this._agenda = appointments;\r\n }\r\n\r\n GetGroup() {\r\n return this._group;\r\n }\r\n\r\n CloneToNewGroup(group: GroupEditor, appointments: Array<IAppointment>, isSelected) {\r\n const newSubGroupEditor = new SubGroupEditor(group, appointments, isSelected);\r\n\r\n if (this._isSelected()) {\r\n newSubGroupEditor._isSelected = this._isSelected;\r\n }\r\n\r\n newSubGroupEditor._columnFirst = _.clone(this._columnFirst);\r\n newSubGroupEditor._columnsEditors = _.map(this._columnsEditors, _.clone);\r\n newSubGroupEditor._agenda = _.map(this._agenda, _.clone);\r\n\r\n return newSubGroupEditor;\r\n }\r\n}","import * as _ from \"underscore\";\r\nimport * as moment from 'moment';\r\n\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\n\r\nimport {CellEditor} from \"../Utils/CellEditor\";\r\nimport {ColumnEditor} from \"../Utils/ColumnEditor\";\r\nimport {SubGroupEditor} from \"../Utils/SubGroupEditor\";\r\nimport {Period} from \"../Models/View/SchedulerViewModel\";\r\nimport {HeaderColumnMapping} from \"./HeaderColumnMapping\";\r\nimport {SchedulerView} from \"../Views/SchedulerView\";\r\nimport {IRePlanningData} from \"Core/Controls/Scheduler/Interfaces\";\r\n\r\nexport interface ISubGroupsMapping {\r\n userEditor: SubGroupEditor,\r\n timeStructure: any,\r\n startDate: moment.Moment,\r\n endDate: moment.Moment,\r\n periods: Array<Period>,\r\n schedulerView: SchedulerView,\r\n scheduleStructure: any,\r\n freeDaysStructure: any,\r\n rePlanningData: IRePlanningData\r\n}\r\n\r\nexport interface ISubResourcesMapping {\r\n subGroupEditor: SubGroupEditor,\r\n timeStructure: any,\r\n startDate: moment.Moment,\r\n endDate: moment.Moment,\r\n periods: Array<Period>,\r\n schedulerView: SchedulerView,\r\n scheduleStructure?: any,\r\n freeDaysStructure?: any,\r\n rePlanningData: IRePlanningData\r\n}\r\n\r\nexport class SubGroupsMapping {\r\n static OnUserViewModel(model: ISubGroupsMapping) {\r\n const starting = model.startDate.clone();\r\n const diff = moment(model.endDate).diff(starting, \"days\");\r\n\r\n for (let i = 0; i <= diff; i++) {\r\n model.userEditor._columnsEditors.push(new ColumnEditor());\r\n\r\n const dayPeriods = HeaderColumnMapping.ConvertPeriodsToWeekDay(model.periods, starting);\r\n\r\n _.forEach(dayPeriods, (dayPeriod) => {\r\n const currentDate = moment(dayPeriod.Start);\r\n const endDate = currentDate.clone().add(dayPeriod.Duration, 'h');\r\n\r\n let workMinutes = 0;\r\n let workSchedMinutes = 0;\r\n let freeDaysMinutes = 0;\r\n\r\n while (currentDate.isBefore(endDate)) {\r\n const currentTime = currentDate.format(DATE_FORMATS.DATE_TIME.Format);\r\n\r\n workMinutes += model.timeStructure[currentTime] || 0;\r\n workSchedMinutes += model.scheduleStructure[currentTime] || 0;\r\n freeDaysMinutes += model.freeDaysStructure[currentTime] || 0;\r\n\r\n currentDate.add(1, 'm');\r\n }\r\n\r\n const workHours = workMinutes / 60;\r\n let workSchedHours = workSchedMinutes / 60;\r\n let isAvailable = workSchedHours >= dayPeriod.Duration;\r\n\r\n const cellEditorModel = {\r\n count: workHours,\r\n isAvailable: isAvailable,\r\n isFreeDay: !!freeDaysMinutes,\r\n period: dayPeriod,\r\n schedulerView: model.schedulerView,\r\n rePlanningData: model.rePlanningData,\r\n isSelected: model.userEditor._isSelected(),\r\n columnIndex: `${i}-${model.userEditor._columnsEditors[i]._cellsEditors.length}`,\r\n appointments: model.userEditor._agenda\r\n };\r\n\r\n const cellEditor = new CellEditor(cellEditorModel);\r\n\r\n model.userEditor._columnsEditors[i]._cellsEditors.push(cellEditor);\r\n\r\n });\r\n\r\n starting.add(1, 'd');\r\n }\r\n }\r\n\r\n static OnViewModel(model: ISubResourcesMapping) {\r\n const starting = model.startDate.clone();\r\n const diff = moment(model.endDate).diff(starting, \"days\");\r\n\r\n for (let i = 0; i <= diff; i++) {\r\n model.subGroupEditor._columnsEditors.push(new ColumnEditor());\r\n\r\n const dayPeriods = HeaderColumnMapping.ConvertPeriodsToWeekDay(model.periods, starting);\r\n\r\n _.forEach(dayPeriods, (dayPeriod) => {\r\n const currentDate = moment(dayPeriod.Start);\r\n const endDate = currentDate.clone().add(dayPeriod.Duration, 'h');\r\n\r\n let workMinutes = 0;\r\n let freeDaysMinutes = 0;\r\n while (currentDate.isBefore(endDate)) {\r\n const currentTime = currentDate.format(DATE_FORMATS.DATE_TIME.Format);\r\n\r\n workMinutes += model.timeStructure[currentTime] || 0;\r\n currentDate.add(1, 'm');\r\n }\r\n\r\n const workHours = workMinutes / 60;\r\n\r\n const cellEditorModel = {\r\n count: workHours,\r\n isAvailable: true,\r\n isFreeDay: !!freeDaysMinutes,\r\n period: dayPeriod,\r\n schedulerView: model.schedulerView,\r\n rePlanningData: model.rePlanningData,\r\n isSelected: model.subGroupEditor._isSelected(),\r\n columnIndex: `${i}-${model.subGroupEditor._columnsEditors[i]._cellsEditors.length}`,\r\n appointments: model.subGroupEditor._agenda\r\n };\r\n model.subGroupEditor._columnsEditors[i]._cellsEditors.push(new CellEditor(cellEditorModel));\r\n });\r\n starting.add(1, 'd');\r\n }\r\n }\r\n}","import * as _ from \"underscore\";\r\nimport * as moment from 'moment';\r\n\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\n//Utils\r\nimport {CellEditor} from \"../Utils/CellEditor\";\r\nimport {ColumnEditor} from \"../Utils/ColumnEditor\";\r\nimport {ColumnFirstEditor} from \"../Utils/ColumnFirstEditor\";\r\nimport {GroupEditor} from \"../Utils/GroupEditor\";\r\nimport {SubGroupEditor} from \"../Utils/SubGroupEditor\";\r\n\r\nimport {SchedulerView} from \"../Views/SchedulerView\";\r\nimport {Period} from \"../Models/View/SchedulerViewModel\";\r\nimport {ISubResourcesMapping, SubGroupsMapping} from \"./SubGroupsMapping\";\r\n\r\nimport {\r\n IResource,\r\n ISchedularResponseModel,\r\n IUser, UserGroup\r\n} from \"../Models/Store/Response/SchedulerResponseModel\";\r\nimport {IRePlanningData} from \"Core/Controls/Scheduler/Interfaces\";\r\n\r\nexport interface IGroupsMapping {\r\n responseModel: ISchedularResponseModel,\r\n userGroups: string,\r\n periods: Array<Period>,\r\n startDate: moment.Moment,\r\n endDate: moment.Moment,\r\n schedulerView: SchedulerView,\r\n rePlanningData: IRePlanningData\r\n}\r\n\r\nexport class GroupsMapping {\r\n static OnViewModel(model: IGroupsMapping) {\r\n let groups = model.userGroups.split(';');\r\n let users = model.responseModel.Users;\r\n let resourceGroups = model.responseModel.ResourceGroups;\r\n let schGroups: Array<GroupEditor> = [];\r\n let sortOrder = 10;\r\n\r\n const processedUsers = [];\r\n let usersGroups = [];\r\n if (model.rePlanningData) {\r\n usersGroups = this.GetLinkedGroups(users, model.rePlanningData.LinkedRecords.Users);\r\n }\r\n\r\n _.forEach(groups, (group) => {\r\n let groupEditor;\r\n if (usersGroups) {\r\n groupEditor = new GroupEditor(group, sortOrder, _.contains(usersGroups, group));\r\n } else {\r\n groupEditor = new GroupEditor(group, sortOrder,false);\r\n }\r\n\r\n _.forEach(users, (user) => {\r\n let processedUser = _.find(processedUsers, pu => pu.UserId === user.UserId);\r\n\r\n if (!processedUser) {\r\n processedUser = {\r\n UserId: user.UserId,\r\n TimeStructure: this.CreateTimeStructure(user),\r\n ScheduleStructure: this.CreateScheduleStructure(user),\r\n FreeDaysStructure: this.CreateFreeDaysStructure(user),\r\n Editor: null,\r\n Agenda: user.Agenda\r\n };\r\n\r\n processedUsers.push(processedUser);\r\n }\r\n\r\n let usersGroup = _.find(user.UsersGroups, (usersGroup) => {\r\n return usersGroup.GroupName === group;\r\n });\r\n\r\n if (usersGroup) {\r\n let userEditor = null;\r\n let isUserSelected = false;\r\n\r\n //select user if one of his groups is linked\r\n if (model.rePlanningData && model.rePlanningData.LinkedRecords) {\r\n _.forEach(user.UsersGroups, (uGroup) => {\r\n _.forEach(model.rePlanningData.LinkedRecords.Users, (subject: number) => {\r\n if (uGroup.GroupId === subject) {\r\n isUserSelected = true;\r\n }\r\n });\r\n });\r\n }\r\n //select user if one of his groups is linked\r\n\r\n if (processedUser.Editor) {\r\n userEditor = processedUser.Editor.CloneToNewGroup(groupEditor, processedUser.Agenda, isUserSelected);\r\n } else {\r\n let iseSelected = isUserSelected || ( model.rePlanningData && _.contains(model.rePlanningData.LinkedRecords.Users, processedUser.UserId));\r\n userEditor = new SubGroupEditor(groupEditor, processedUser.Agenda, iseSelected);\r\n userEditor._columnFirst = new ColumnFirstEditor(user.UserName, user.UserId, null, 'Subject', user.UserTypeId, user.UserTypeName);\r\n SubGroupsMapping.OnUserViewModel({\r\n userEditor: userEditor,\r\n timeStructure: processedUser.TimeStructure,\r\n startDate: model.startDate,\r\n endDate: model.endDate,\r\n periods: model.periods,\r\n schedulerView: model.schedulerView,\r\n scheduleStructure: processedUser.ScheduleStructure,\r\n freeDaysStructure: processedUser.FreeDaysStructure,\r\n rePlanningData: model.rePlanningData\r\n });\r\n\r\n processedUser.Editor = userEditor;\r\n }\r\n groupEditor._subGroupEditors.push(userEditor);\r\n }\r\n });\r\n this.GenerateCellEditors(groupEditor, model.rePlanningData);\r\n if (groupEditor._subGroupEditors.length) {\r\n schGroups.push(groupEditor);\r\n sortOrder = sortOrder + 10;\r\n }\r\n\r\n const selectedSubGroups = _.filter(groupEditor._subGroupEditors, (subGroup: SubGroupEditor) => {\r\n return subGroup._isSelected() === true;\r\n });\r\n\r\n if (selectedSubGroups.length === groupEditor._subGroupEditors.length) {\r\n groupEditor._isSelected(true);\r\n }\r\n groupEditor._selectedCount(selectedSubGroups.length);\r\n });\r\n\r\n _.forEach(resourceGroups, (resourceGroup) => {\r\n if (resourceGroup.Resources.length) {\r\n const linkedEntity = model.rePlanningData && model.rePlanningData.LinkedRecords.Resources[resourceGroup.EntityId];\r\n\r\n let groupEditor = new GroupEditor(resourceGroup.ResourceGroupName, sortOrder, false);\r\n _.forEach(resourceGroup.Resources, (resource) => {\r\n const isResourceSelected = (model.rePlanningData && _.contains(linkedEntity, resource.ResourceId));\r\n let subGroupEditor = new SubGroupEditor(groupEditor, resource.Agenda, isResourceSelected);\r\n subGroupEditor._columnFirst = new ColumnFirstEditor(resource.ResourceName, resource.ResourceId, resourceGroup.EntityId, 'Resource', resource.ResourceTypeId, resource.ResourceTypeName);\r\n groupEditor._subGroupEditors.push(subGroupEditor);\r\n let timeStructure = this.CreateTimeStructure(resource);\r\n\r\n const resourcesMapModel: ISubResourcesMapping = {\r\n subGroupEditor: subGroupEditor,\r\n timeStructure: timeStructure,\r\n startDate: model.startDate,\r\n endDate: model.endDate,\r\n periods: model.periods,\r\n schedulerView: model.schedulerView,\r\n rePlanningData: model.rePlanningData\r\n };\r\n SubGroupsMapping.OnViewModel(resourcesMapModel);\r\n });\r\n this.GenerateCellEditors(groupEditor, model.rePlanningData);\r\n schGroups.push(groupEditor);\r\n sortOrder = sortOrder + 10;\r\n\r\n const selectedSubGroups = _.filter(groupEditor._subGroupEditors, (subGroup: SubGroupEditor) => {\r\n return subGroup._isSelected() === true;\r\n });\r\n\r\n if (selectedSubGroups.length === groupEditor._subGroupEditors.length) {\r\n groupEditor._isSelected(true);\r\n }\r\n groupEditor._selectedCount(selectedSubGroups.length);\r\n }\r\n });\r\n\r\n return schGroups;\r\n }\r\n\r\n static GenerateCellEditors(groupEditor: GroupEditor, replanningData? : IRePlanningData) {\r\n _.forEach(groupEditor._subGroupEditors, (subGroupEditor, subGroupIter) => {\r\n _.forEach(subGroupEditor._columnsEditors, (columnsEditor, columnIter) => {\r\n if (subGroupIter === 0) {\r\n groupEditor._columnsEditors.push(new ColumnEditor());\r\n }\r\n _.forEach(columnsEditor._cellsEditors, (cellEditor, cellIter) => {\r\n if (subGroupIter === 0) {\r\n let count = cellEditor._isAvailable && !cellEditor._isFreeDay && !cellEditor._count ? 1 : 0;\r\n const cellEditorModel = {\r\n count: count,\r\n isAvailable: true,\r\n isFreeDay: false,\r\n period: cellEditor._period,\r\n schedulerView: cellEditor._view,\r\n isGroupCell: true,\r\n isSelected: false,\r\n columnIndex: '',\r\n appointments: []\r\n };\r\n const cell = new CellEditor(cellEditorModel);\r\n if (replanningData) {\r\n cell._isReplanningCell(cellEditor._isReplanningCell());\r\n }\r\n groupEditor._columnsEditors[columnIter]._cellsEditors.push(cell);\r\n } else {\r\n let currentCount = groupEditor._columnsEditors[columnIter]._cellsEditors[cellIter]._count;\r\n groupEditor._columnsEditors[columnIter]._cellsEditors[cellIter]._count =\r\n cellEditor._isAvailable && !cellEditor._isFreeDay && !cellEditor._count ? currentCount + 1 : currentCount;\r\n if (replanningData && !groupEditor._columnsEditors[columnIter]._cellsEditors[cellIter]._isReplanningCell()) {\r\n groupEditor._columnsEditors[columnIter]._cellsEditors[cellIter]._isReplanningCell(cellEditor._isReplanningCell());\r\n }\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n static GetUserGroups(users: Array<IUser>): Array<UserGroup> {\r\n let usersGroups = [];\r\n _.forEach(users, (user) => {\r\n usersGroups = usersGroups.concat(user.UsersGroups);\r\n });\r\n return _.uniq(usersGroups, (us) => us.GroupId);\r\n }\r\n\r\n static GetLinkedGroups(users: Array<IUser>, linkedUsers: Array<number>): Array<string> {\r\n const allGroups = this.GetUserGroups(users);\r\n let intersection = [];\r\n _.forEach(allGroups, (group) => {\r\n if (_.contains(linkedUsers, group.GroupId)) {\r\n intersection.push(group.GroupName);\r\n }\r\n });\r\n return intersection;\r\n }\r\n\r\n static CreateTimeStructure(item: IUser | IResource) {\r\n const timeStructure = {};\r\n\r\n _.forEach(item.Agenda, (event) => {\r\n const start = moment(FormatConverter.CorrectTimezone(event.Starting));\r\n const endDate = moment(start).add(moment.duration(moment(event.Duration).format(DATE_FORMATS.TIME.Format)));\r\n while (start.isBefore(endDate)) {\r\n const startTime = start.format(DATE_FORMATS.DATE_TIME.Format);\r\n timeStructure[startTime] = timeStructure[startTime] && timeStructure[startTime] + 1 || 1;\r\n start.add(1, 'm');\r\n }\r\n });\r\n\r\n return timeStructure;\r\n }\r\n\r\n static CreateScheduleStructure(item: IUser) {\r\n const timeStructure = {};\r\n\r\n _.forEach(item.WorkingSchedule, (event) => {\r\n let endDate: moment.Moment,\r\n currentDate: moment.Moment;\r\n if (event.IsDefault) {\r\n endDate = moment(event.Ending);\r\n currentDate = moment(event.Starting);\r\n } else {\r\n endDate = moment(FormatConverter.CorrectTimezone(event.Ending));\r\n currentDate = moment(FormatConverter.CorrectTimezone(event.Starting));\r\n }\r\n\r\n while (currentDate.isBefore(endDate)) {\r\n const currentTime = currentDate.format(DATE_FORMATS.DATE_TIME.Format);\r\n timeStructure[currentTime] = timeStructure[currentTime] && timeStructure[currentTime] + 1 || 1;\r\n currentDate.add(1, 'm');\r\n }\r\n });\r\n return timeStructure;\r\n }\r\n\r\n static CreateFreeDaysStructure(item: IUser) {\r\n const timeStructure = {};\r\n\r\n _.forEach(item.FreeDays, (event) => {\r\n if (event.FreeDay) {\r\n const endDate = moment(FormatConverter.CorrectTimezone(event.Date)).endOf('day');\r\n const currentDate = moment(FormatConverter.CorrectTimezone(event.Date)).startOf('day');\r\n\r\n while (currentDate.isBefore(endDate)) {\r\n const currentTime = currentDate.format(DATE_FORMATS.DATE_TIME.Format);\r\n timeStructure[currentTime] = timeStructure[currentTime] && timeStructure[currentTime] + 1 || 1;\r\n currentDate.add(1, 'm');\r\n }\r\n }\r\n });\r\n return timeStructure;\r\n }\r\n}","import * as moment from \"moment\";\r\n\r\nimport {ISchedularResponseModel} from \"../Models/Store/Response/SchedulerResponseModel\";\r\nimport {HeaderColumn, SchedulerViewModel} from \"../Models/View/SchedulerViewModel\";\r\nimport {SchedulerView} from \"../Views/SchedulerView\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {PeriodsMapping} from \"./PeriodsMappings\";\r\nimport {HeaderColumnMapping} from \"./HeaderColumnMapping\";\r\nimport {GroupsMapping} from \"./GroupsMapping\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {IRePlanningData} from \"Core/Controls/Scheduler/Interfaces\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\nexport interface ISchedulerMappingProfile {\r\n model: ISchedularResponseModel,\r\n startDate: moment.Moment,\r\n endDate: moment.Moment,\r\n numberOfPeriods: number,\r\n periodDuration: number,\r\n startingTime: string,\r\n schedulerView: SchedulerView,\r\n rePlanningData: IRePlanningData\r\n}\r\n\r\nexport class SchedulerMappingProfile {\r\n static OnViewModel(model: ISchedulerMappingProfile): SchedulerViewModel {\r\n const viewModel = new SchedulerViewModel();\r\n const userGroups = GlobalManager.Instance.GetGlobal(GLOBALS.USER_GROUPS);\r\n viewModel.NumberOfPeriods = model.numberOfPeriods;\r\n viewModel.StartingTime = model.startingTime;\r\n viewModel.PeriodDuration = model.periodDuration;\r\n viewModel.Periods = PeriodsMapping.OnViewModel(model.startingTime, model.periodDuration, model.numberOfPeriods);\r\n viewModel.HeaderColumns = HeaderColumnMapping.OnViewModel(model.startDate, model.endDate, viewModel.Periods, model.schedulerView._screen);\r\n viewModel.Groups = GroupsMapping.OnViewModel({\r\n responseModel: model.model,\r\n userGroups: userGroups,\r\n periods: viewModel.Periods,\r\n startDate: model.startDate,\r\n endDate: model.endDate,\r\n schedulerView: model.schedulerView,\r\n rePlanningData: model.rePlanningData\r\n });\r\n\r\n if (model.rePlanningData) {\r\n let selectedRows: Array<{id: number, rows: any}> = [];\r\n _.forEach(viewModel.Groups, (group) => {\r\n _.forEach(group._subGroupEditors, (subGroup) => {\r\n if (subGroup._isSelected()) {\r\n const selectedRow = {\r\n id: subGroup._columnFirst._id,\r\n rows: {}\r\n };\r\n _.forEach(subGroup._columnsEditors, (column, columnIter) => {\r\n _.forEach(column._cellsEditors, (cell, cellIter) => {\r\n if (!selectedRow.rows[columnIter]) {\r\n selectedRow.rows[columnIter] = {};\r\n }\r\n selectedRow.rows[columnIter][cellIter] = cell._isAvailableForReplan();\r\n });\r\n });\r\n selectedRows.push(selectedRow);\r\n }\r\n });\r\n });\r\n\r\n const uniqSelectedRows = _.uniq(selectedRows, (row) => row.id);\r\n let availableModel = [];\r\n if (uniqSelectedRows.length) {\r\n availableModel = selectedRows[0].rows;\r\n for (let i = 1; i < uniqSelectedRows.length; i++) {\r\n _.forEach(uniqSelectedRows[i].rows, (column: Array<boolean>, columnIter) => {\r\n _.forEach(column, (cell, cellIter) => {\r\n availableModel[columnIter][cellIter] = availableModel[columnIter][cellIter] && cell;\r\n });\r\n });\r\n }\r\n }\r\n\r\n const agenda = {};\r\n\r\n _.forEach(viewModel.Groups, (group) => {\r\n _.forEach(group._subGroupEditors, (subGroup) => {\r\n if (subGroup._isSelected()) {\r\n _.forEach(subGroup._columnsEditors, (column, columnIter) => {\r\n if (!agenda[columnIter]) {\r\n agenda[columnIter] = {};\r\n }\r\n _.forEach(column._cellsEditors, (cell, cellIter) => {\r\n if (!agenda[columnIter][cellIter]) {\r\n agenda[columnIter][cellIter] = [];\r\n }\r\n cell._isAvailableForReplan(availableModel[columnIter][cellIter]);\r\n if (availableModel[columnIter][cellIter]) {\r\n if (subGroup._agenda.length) {\r\n _.forEach(subGroup._agenda, (item) => {\r\n const start = moment(FormatConverter.CorrectTimezone(item.Starting));\r\n const end = moment(start.clone()).add(moment.duration(moment(item.Duration).format(DATE_FORMATS.TIME.Format)));\r\n\r\n const periodStart = moment(cell._period.Start);\r\n const periodEnd = periodStart.clone().add(cell._period.Duration, 'h');\r\n\r\n if ((start < periodEnd) && (end > periodStart)){\r\n agenda[columnIter][cellIter].push({\r\n id: item.Id,\r\n start: moment(FormatConverter.CorrectTimezone(item.Starting)),\r\n end: moment(start.clone()).add(moment.duration(moment(item.Duration).format(DATE_FORMATS.TIME.Format)))\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (agenda[columnIter][cellIter].length > 1) {\r\n agenda[columnIter][cellIter] = _.uniq(agenda[columnIter][cellIter], (ag: any) => ag.id);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n });\r\n viewModel.AvailablePeriods = this.AvailablePeriodsForReplanning(agenda, viewModel.HeaderColumns, model.rePlanningData);\r\n\r\n _.forEach(viewModel.Groups, (group) => {\r\n _.forEach(group._subGroupEditors, (subGroup) => {\r\n if (subGroup._isSelected()) {\r\n _.forEach(subGroup._columnsEditors, (column, columnIter) => {\r\n _.forEach(column._cellsEditors, (cell, cellIter) => {\r\n cell._availableForReplanRanges = _.map(viewModel.AvailablePeriods[columnIter][cellIter], (range) => {\r\n return {\r\n Start: range.a.clone(),\r\n End: range.b.clone(),\r\n DisplayValue: `${range.a.clone().format(DATE_FORMATS.TIME.Format)} - ${range.b.clone().format(DATE_FORMATS.TIME.Format)}`\r\n }\r\n });\r\n })\r\n })\r\n }\r\n });\r\n });\r\n }\r\n\r\n viewModel.AgendaConnection = model.model.AgendaConnection;\r\n viewModel.CreatingData = model.model.CreatingData;\r\n viewModel.IsValid = model.model.IsValid;\r\n\t\tviewModel.ReadingData = model.model.ReadingData;\r\n\t viewModel.ScreenSubjectRecordName = model.model.ScreenSubjectRecordName;\r\n viewModel.Errors = model.model.Errors;\r\n viewModel.Month = moment(model.startDate).format(DATE_FORMATS.MONTH_AND_YEAR.Format);\r\n viewModel.MonthDayYear = moment(model.startDate).format(DATE_FORMATS.SHORT_DATE_SHORT_WEEK.Format)+', '+ moment(model.startDate).format(DATE_FORMATS.ONLY_A_YEAR.Format);\r\n viewModel.CurrentDate = moment(model.startDate).format();\r\n return viewModel;\r\n }\r\n\r\n\r\n static AvailablePeriodsForReplanning(agenda: any, headerColumns: Array<HeaderColumn>, rePlanningData: IRePlanningData) {\r\n const base = {};\r\n _.forEach(agenda, (column: Array<any>, colIndex) => {\r\n if (!base[colIndex]) {\r\n base[colIndex] = {};\r\n }\r\n _.forEach(column, (cell: Array<any>, cellIndex) => {\r\n if (!base[colIndex][cellIndex]) {\r\n base[colIndex][cellIndex] = [];\r\n }\r\n const period = headerColumns[colIndex].Periods[cellIndex];\r\n base[colIndex][cellIndex] = [Object.assign({},{a: moment(period.Start).clone(), b: moment(period.Start).clone().add(period.Duration, 'hours')})];\r\n\r\n for (let i =0; i<cell.length; i++){\r\n let newBase = [];\r\n for(let j=0; j<base[colIndex][cellIndex].length; j++) {\r\n const {start:c, end:d} = cell[i];\r\n newBase = newBase.concat(this.Compare(base[colIndex][cellIndex][j],{c, d}));\r\n }\r\n base[colIndex][cellIndex] = _.filter(newBase, (item) => {\r\n return item.b.diff(item.a, 'hours', true) >=\r\n rePlanningData.EndTime.diff(rePlanningData.StartTime, 'hours', true);\r\n });\r\n\r\n }\r\n })\r\n });\r\n return base;\r\n }\r\n\r\n static Compare({a, b}, {c, d}) {\r\n if ( (c > a) && (b > d) )\r\n return [{a,b:c}, {a:d,b}];\r\n if ( (a >= c) && (d >= b) )\r\n return [{a,b}];\r\n if ( (a >= c) && ( b > d) && (d > a))\r\n return [{a:d,b}];\r\n if ( (c > a) && (d >= b) && (b > c))\r\n return [{a,b:c}];\r\n return [{a,b}];\r\n }\r\n}","//Common\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\nimport { Request } from \"Core/Common/Request\";\r\n\r\n//Models\r\nimport { ISchedulerRequestModel } from \"../Models/Store/Request/SchedularRequestModel\";\r\nimport { ISchedularResponseModel } from \"../Models/Store/Response/SchedulerResponseModel\";\r\n\r\nexport class SchedulerStore {\r\n\r\n\tstatic GetScheduler(params: ISchedulerRequestModel, isBlockingNeed: boolean = true): P.Promise<ISchedularResponseModel> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tisBlockingNeed && BlockUI.Block();\r\n\r\n\t\tRequest.Send({\r\n\t\t\t\tproxy: {\r\n\t\t\t\t\turl: \"api/SchedulerApi/GetScheduler\",\r\n\t\t\t\t\ttype: \"POST\",\r\n\t\t\t\t\tdataType: \"json\"\r\n\t\t\t\t},\r\n\t\t\t\tparams: params\r\n\t\t\t}).then(response => {\r\n\t\t\t\tthis.ResolveObjectResponse(response, deferredResult)\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tvar errorException = JSON.parse(error.message);\r\n\t\t\t\tthis.RejectResponse(errorException.ExceptionMessage, deferredResult);\r\n\t\t\t})\r\n\t\t\t.always(() => isBlockingNeed && BlockUI.Unblock());\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tprivate static ResolveObjectResponse<T>(response, deferredResult: P.Deferred<T>) {\r\n\t\tif (response) {\r\n\t\t\tdeferredResult.resolve(response);\r\n\t\t} else {\r\n\t\t\tdeferredResult.reject({ message: response.ErrorMessage });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static RejectResponse<T>(message: string, deferredResult: P.Deferred<T>) {\r\n\t\tdeferredResult.reject({ message: message });\r\n\t}\r\n}\r\n","import * as ko from \"knockout\";\r\nimport * as moment from 'moment';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport {Period} from \"../Models/View/SchedulerViewModel\";\r\n\r\nexport interface ILinkedModel {\r\n GroupEntityId: number;\r\n ResourceId: number;\r\n Name: string;\r\n TypeId: number;\r\n TypeName: string;\r\n}\r\n\r\nexport class ButtonCellEditor {\r\n _isAvailable: KnockoutObservable<boolean>;\r\n _linkedSubGroups: ILinkedModel[];\r\n _period: Period;\r\n IsDisabled: boolean;\r\n\r\n constructor(isAvailable: boolean, period: Period, isDisabled: boolean) {\r\n this._period = period;\r\n this._linkedSubGroups = [];\r\n this.IsDisabled = isDisabled || this.CheckIsAfter();\r\n this._isAvailable = ko.observable(isAvailable);\r\n }\r\n\r\n GetClassName(qty: number): string {\r\n return ' subcol-' + qty;\r\n }\r\n\r\n private CheckIsAfter():boolean {\r\n return moment().isAfter(this._period.Start);\r\n }\r\n\r\n private GetTooltipMessage(): string {\r\n\t\treturn this.CheckIsAfter() ? LABELS.NO_POSSIBLE_TO_CREATE_APPOINTMENT_IN_THE_PAST : '';\r\n }\r\n}","import {ButtonCellEditor} from \"./ButtonCellEditor\";\r\n\r\nexport class ColumnButtonsEditor {\r\n _cellsEditors: ButtonCellEditor[];\r\n\r\n constructor() {\r\n this._cellsEditors = [];\r\n }\r\n}","export const PROPERTIES = {\r\n REFRESH_SCREEN: 'RefreshScreen'\r\n};\r\n\r\nexport const SCHEDULER_EVENTS = {\r\n CREATE_SCREEN: \"CreateScreenFromScheduler\",\r\n OPEN_DEFAULT_SCREEN: \"OpenDefaultScreen\",\r\n RETURN_TO_AGENDA: \"ReturnToAgenda\",\r\n SWITCH_TO_DEFAULT: \"SwitchToDefault\",\r\n REPLAN_APPOINTMENT: \"ReplanAppointment\",\r\n SET_DATA: \"SetData\",\r\n};","// Module\nvar code = \"<!-- ko with: _view --> <!--ko if: _ready--> <!-- ko with: _viewModel --> <div data-control-type=\\\"scheduler-control\\\" class=\\\"ConsultScreenView scheduler-control-container form-standart-control clearfix\\\"> <div class=\\\"scheduler\\\" data-bind=\\\"css: $parent.GetClass(), syncScroll: {topScroll: '.scheduler__header__wrapper', bottomScroll: '.scroll-wrapper'}\\\" data-control-type=\\\"scheduler-control\\\"> <!-- ko with: $parent --> <!--ko if: _isRePlanMode --> <div class=\\\"lifestatus-bar well inline-block replanning-header\\\"> <i class=\\\"fa fa-info-circle\\\" aria-hidden=\\\"true\\\"></i> <!--ko text: _labels.RE_PLANNING --> <!-- /ko -->: <span class=\\\"u-underlined\\\" data-bind=\\\"text: _rePlanningData.Name\\\"></span> <button class=\\\"btn btn-default btn-xs\\\" data-bind=\\\"text: _labels.CANCEL, click: ReturnToAgenda\\\"></button> </div> <!-- /ko --> <!-- /ko --> <div class=\\\"u-relative\\\" data-bind=\\\"hasScrollBar: {addClass: 'u-with-scroll', position: 'vertical', isReady: $parent._isUnblocked(), checkElement: '.scroll-wrapper'}\\\"> <div class=\\\"scheduler__title text-center row\\\"> <div class=\\\"header__centered\\\"> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnPrevClick.bind($parent)\\\"> <i class=\\\"fa fa-chevron-left\\\" aria-hidden=\\\"true\\\"></i> </button> <!-- ko if: $parent._screen === $parent._labels.AGENDA_MONTH --> <span class=\\\"schedulerPickerPagination scheduler__week\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" style=\\\"display:none\\\"> <!-- ko text: Month --><!-- /ko --> </span> <!-- /ko --> <!-- ko if: $parent._screen === $parent._labels.AGENDA_DAY --> <!-- <span data-bind=\\\"click: $parent.InitSchedulerDateTimePicker.bind($parent)\\\" class=\\\"scheduler__day\\\">--> <span class=\\\"schedulerPickerPagination scheduler__day\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" style=\\\"display:none\\\"> <!-- ko text: MonthDayYear --><!-- /ko --> </span> <!-- /ko --> <!-- ko if: $parent._screen !== $parent._labels.AGENDA_MONTH && $parent._screen !== $parent._labels.AGENDA_DAY --> <span class=\\\"schedulerPickerPagination scheduler__week\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" style=\\\"display:none\\\"> <!-- ko text: $parent._labels.AGENDA_WEEK --><!-- /ko --><!-- ko text: WeekNumber --><!-- /ko --> </span> <!-- /ko --> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-next scheduler__btn\\\" aria-label=\\\"next\\\" data-bind=\\\"click: $parent.OnNextClick.bind($parent)\\\"> <i class=\\\"fa fa-chevron-right\\\" aria-hidden=\\\"true\\\"></i> </button> </div> <div class=\\\"scheduler__nav pull-right\\\"> <!-- ko fastForEach: $parent.Views --> <button class=\\\"btn btn-link scheduler__nav__btn\\\" data-bind=\\\"text: $data,\\r\\n click: $parents[1].ChangeView.bind($parents[1], $data),\\r\\n css: $parents[1].GetActiveClass($data)\\\"></button> <!-- /ko --> </div> </div> <div class=\\\"scheduler__globals\\\"> <!--ko if: $parent._subjectGlobal --> <div class=\\\"scheduler__global\\\"> <label class=\\\"ellipsis-block\\\" data-bind=\\\"ellipsisTooltip: {content: $parent._subjectGlobal}\\\"> <!-- ko text: $parent._subjectGlobal --> <!-- /ko -->:</label> <div class=\\\"scheduler__global__value subject-toggle\\\"> <a data-bind=\\\"click: $parent.ChangeProvideSubject.bind($parent),\\r\\n css: {'disabledClass': $parent._numberOfPeriods() > 2},\\r\\n tooltip: {content: $parent._numberOfPeriods() > 2 ? $parent._subjectTooltip : ''}\\\" href=\\\"javascript:void(0)\\\"> <i data-bind=\\\"css: {'fa-toggle-off': !$parent._subjectGlobalValue(), 'fa-toggle-on': $parent._subjectGlobalValue()}\\\" class=\\\"fa fa-toggle-off\\\"></i> </a> </div> </div> <!-- /ko --> <div class=\\\"scheduler__global\\\"> <label class=\\\"ellipsis-block\\\"><!-- ko text: $parent._labels.PERIOD --> <!-- /ko -->:</label> <div class=\\\"scheduler__global__value\\\"> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnDecreasePeriods.bind($parent)\\\"> <i class=\\\"fa fa-chevron-left\\\" aria-hidden=\\\"true\\\"></i> </button> <span data-bind=\\\"text: $parent._numberOfPeriods\\\"></span> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnIncreasePeriods.bind($parent)\\\"> <i class=\\\"fa fa-chevron-right\\\" aria-hidden=\\\"true\\\"></i> </button> </div> </div> <div class=\\\"scheduler__global\\\"> <label class=\\\"ellipsis-block\\\"><!-- ko text: $parent._labels.STARTING --><!-- /ko -->:</label> <div class=\\\"scheduler__global__value\\\"> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnDecreaseStarting.bind($parent)\\\"> <i class=\\\"fa fa-chevron-left\\\" aria-hidden=\\\"true\\\"></i> </button> <span data-bind=\\\"text: $parent._starting\\\"></span> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnIncreaseStarting.bind($parent)\\\"> <i class=\\\"fa fa-chevron-right\\\" aria-hidden=\\\"true\\\"></i> </button> </div> </div> <div class=\\\"scheduler__global\\\"> <label class=\\\"ellipsis-block\\\"><!-- ko text: $parent._labels.DURATION --><!-- /ko -->:</label> <div class=\\\"scheduler__global__value\\\"> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnDecreasePeriodDuration.bind($parent), css: {'disabled-btn': $parent.DisableBtnDecreasePeriodBtn()}\\\"> <i class=\\\"fa fa-chevron-left\\\" aria-hidden=\\\"true\\\"></i> </button> <span data-bind=\\\"text: $parent.GetDisplayPeriodDuration()\\\"></span> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnIncreasePeriodDuration.bind($parent)\\\"> <i class=\\\"fa fa-chevron-right\\\" aria-hidden=\\\"true\\\"></i> </button> </div> </div> </div> <div class=\\\"scheduler__header clearfix\\\"> <div class=\\\"scheduler__header--first text-right\\\"> <div class=\\\"scheduler__qty\\\">#</div> </div> <div class=\\\"text-left u-ws-nowrap scheduler__header__wrapper\\\"> <!-- ko fastForEach: { data: HeaderColumns, afterRender: AfterRender.bind($data, $parent._columnToScroll, $parent._isRePlanMode) } --> <div class=\\\"scheduler__header__column text-center\\\"> <div class=\\\"scheduler__date\\\" data-bind=\\\"text: DisplayValue\\\"></div> <div class=\\\"scheduler__header--subcolumns clearfix u-font-size-0\\\" data-bind=\\\"css: $parent.GetHeaderWidthClass()\\\"> <!-- ko fastForEach: Periods --> <div class=\\\"scheduler__header--subcolumn\\\" data-bind=\\\"text: $data.DisplayValue, css: $parents[1].GetGetColumnWidthClass()\\\"></div> <!-- /ko --> </div> </div> <!-- /ko --> </div> </div> <div class=\\\"scroll-wrapper\\\" data-bind='niceScroll: { zindex: 10,\\r\\n cursorwidth:6,\\r\\n cursoropacitymin:0.8,\\r\\n cursorcolor:\\\"rgba(193,193,193,0.51)\\\",\\r\\n cursorborder:\\\"none\\\",\\r\\n cursorborderradius:4,\\r\\n emulatetouch: false,\\r\\n scrollForMobile: false,\\r\\n autohidemode:\\\"leave\\\",\\r\\n horizontalScrollWithShift: true\\r\\n }'> <div class=\\\"scroll-inner\\\"> <div class=\\\"scheduler__body text-center clearfix\\\"> <!-- ko fastForEach: { data : $parent._groupEditors } --> <div class=\\\"scheduler__body__group clearfix\\\" aria-expanded=\\\"false\\\" data-bind=\\\"collapse: {onOpen: OnOpenGroup.bind($data), onClose: OnCloseGroup.bind($data), onReady: OnCollapseReady.bind($data)}, attr : {id: 'group' + $index()}\\\"> <div class=\\\"scheduler__body__group__col--first text-left\\\"> <a role=\\\"button\\\" data-toggle=\\\"collapse\\\" aria-expanded=\\\"false\\\" data-bind=\\\"attr: {href: '#collapse' + $index(), 'aria-controls': 'collapse' + $index()}\\\"> </a> <label class=\\\"customcheck font-weight-bold\\\" data-bind=\\\"attr: {for: 'checkboxOption' + $index()}\\\"> <span class=\\\"name\\\"> <span class=\\\"scheduler__customcheck-name-content\\\"> <!--ko text: _name --><!-- /ko --> <!-- ko if: _sortOrder() < 0 --> [<!--ko text: _selectedCount --><!-- /ko -->] <!-- /ko --> </span> </span> <input type=\\\"checkbox\\\" data-bind=\\\"attr: {id: 'checkboxOption' + $index()},\\r\\n groupedCheckbox: $data,\\r\\n checked: _isSelected,\\r\\n click: $parents[1].OnGroupClick.bind($parents[1], $data)\\\"> <span class=\\\"checkmark\\\"></span> </label> <div class=\\\"scheduler__qty pull-right\\\"> <!--ko text: _subGroupEditors.length --> <!-- /ko --></div> </div> <div class=\\\"scheduler__body__group--collapsed clearfix text-left u-ws-nowrap\\\"> <!-- ko fastForEach: _columnsEditors --> <div class=\\\"scheduler__body__group__col\\\"> <!-- ko fastForEach: _cellsEditors --> <!-- ko if: _isReplanningCell--> <div class=\\\"scheduler__body__group__subcol jBox-content-target replan-blue u-cursor-pointer\\\" data-bind=\\\"text: DisplayValue,\\r\\n css: GetClassName($parent._cellsEditors.length),\\r\\n click: $parents[5].SwitchToDefaultMode.bind($parents[5])\\\"> </div> <!-- /ko --> <!-- ko ifnot: _isReplanningCell--> <div class=\\\"scheduler__body__group__subcol\\\" data-bind=\\\"text: DisplayValue, css: GetClassName($parent._cellsEditors.length)\\\"></div> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"scheduler__body__subgroup--wrapper collapse clearfix\\\" data-bind=\\\"attr: {id: 'collapse' + $index()}\\\"> <!-- ko if: !_isCollapsed() --> <!-- ko fastForEach: _subGroupEditors --> <div class=\\\"scheduler__body__subgroup\\\"> <!-- ko with: _columnFirst --> <div class=\\\"scheduler__body__group__col--first text-left\\\"> <label class=\\\"customcheck\\\"> <span class=\\\"name\\\"> <span class=\\\"scheduler__customcheck-name-content\\\" data-bind=\\\"text: _name, ellipsisTooltip: {content: _name}\\\"></span> </span> <input type=\\\"checkbox\\\" data-bind=\\\"attr: {'data-option': 'checkboxOption' + $parentContext.$parentContext.$index(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t 'checkbox-id': 'checkboxOption' + _id,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t 'data-type': _type},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t checked: $parent._isSelected, click: $parents[3].OnSubGroupClick.bind($parents[3], $parent)\\\"> <span class=\\\"checkmark\\\"></span> </label> <div class=\\\"scheduler__qty pull-right\\\">1</div> </div> <!-- /ko --> <div class=\\\"scheduler__body__group__col-container u-ws-nowrap u-font-size-0\\\"> <!-- ko fastForEach: _columnsEditors --> <div class=\\\"scheduler__body__group__col\\\"> <!-- ko fastForEach: _cellsEditors --> <!-- ko if: _isReplanningCell--> <div class=\\\"scheduler__body__group__subcol jBox-content-target replan-blue u-cursor-pointer\\\" data-bind=\\\"text: DisplayValue,\\r\\n css: GetClassName($parent._cellsEditors.length),\\r\\n click: $parents[6].SwitchToDefaultMode.bind($parents[6])\\\"> </div> <!-- /ko --> <!-- ko ifnot: _isReplanningCell--> <!-- ko ifnot: _isAvailableForReplan--> <div class=\\\"scheduler__body__group__subcol jBox-content-target\\\" data-bind=\\\"css: GetClassName($parent._cellsEditors.length),\\r\\n event: {mouseover: DisplayAppointments.bind($data)}\\\" data-jbox-content=\\\"\\r\\n <div class='scheduler-appointments'>\\r\\n <!-- ko fastForEach: _appointments -->\\r\\n <div class='scheduler-appointments-item'>\\r\\n <div class='sch-item-duration' data-bind='text: Duration'></div>\\r\\n <div class='sch-item-name u-ws-nowrap ellipsis-block hyperlink' data-bind='text: Name, click: $parent.ShowAppointment.bind($parent)'></div>\\r\\n </div>\\r\\n <!-- /ko -->\\r\\n </div>\\\"> <!-- ko if: _view._subjectGlobalValue--> <!-- ko fastForEach: _appointments --> <div class=\\\"scheduler-appointments-item text-left\\\"> <div class=\\\"sch-item-duration bold\\\" data-bind=\\\"text: Duration\\\"></div> <!-- ko if: $parent._view._subjectIcon && $parent._view._subjectIcon.Id --> <!-- ko ifnot: $parent._view._subjectIcon.Image --> <i class=\\\"sch-icon\\\" data-bind=\\\"css: $parent._view.IconModel.GetClasses( $parent._view._subjectIcon.FontName, $parent._view._subjectIcon.Name)\\\"></i> <!-- /ko --> <!-- ko if: $parent._view._subjectIcon.Image--> <img class=\\\"img-responsive image-centered sch-image\\\" data-bind=\\\"attr: {src: $parent._view._subjectIcon.Image}\\\"> <!-- /ko --> <!-- /ko --> <!-- ko fastForEach: Subjects --> <a class=\\\"sch-item-subject hyperlink\\\" href=\\\"javascript:void(0);\\\" data-bind=\\\"text: Name,\\r\\n click: $parents[1].ShowDefaultScreen.bind($parents[1], $parents[1]._view._subjectEntityId)\\\"></a><span data-bind=\\\"ifnot: ($index() === ($parent.Subjects.length - 1))\\\">, </span> <!-- /ko --> <!-- ko ifnot: Subjects.length -->-<!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: _view._subjectGlobalValue--> <!--ko text: DisplayValue --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!-- ko if: _isAvailableForReplan--> <div class=\\\"scheduler__body__group__subcol jBox-content-target replan-green\\\" data-bind=\\\"text: DisplayValue,\\r\\n css: GetClassName($parent._cellsEditors.length),\\r\\n click: OnReplan.bind($data, $data._period.Start, false),\\r\\n tooltip: {content: _availableForReplanRanges.length === 1 ? _labels.RE_PLAN_APPOINTMENT_TO_PERIOD : null},\\r\\n event: {mouseover: DisplayRanges.bind($data, $parents[1]._availableForReplanRanges)},\\r\\n addCssForAll: {eventAdd: 'mouseenter', eventRemove: 'mouseleave', class: $data._columnIndex, toggleClass: 'replan-green-hovered'}\\\" data-jbox-content=\\\"\\r\\n <div class='scheduler-appointments'>\\r\\n <!-- ko fastForEach: _availableForReplanRanges -->\\r\\n <div class='scheduler-appointments-item u-cursor-pointer hovered'\\r\\n data-bind='text: DisplayValue, click: $parent.OnReplan.bind($parent, $data.Start, true)'></div>\\r\\n <!-- /ko -->\\r\\n </div>\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> <!--ko if: $data._isCollapsed() && $parents[1]._lastCollapsed() === $data._sortOrder()--> <div class=\\\"scheduler__body__group scheduler__body__group--bordered clearfix\\\"> <div class=\\\"scheduler__body__group__col--first text-left\\\"> <label class=\\\"label--free-capacity font-weight-bold\\\" data-bind=\\\"text: $parents[1]._labels.SCHEDULER_FREE_CAPACITY\\\"></label> <div class=\\\"scheduler__qty pull-right\\\"></div> </div> <div class=\\\"scheduler__body__group--collapsed clearfix text-left u-ws-nowrap\\\"> <!-- ko fastForEach: $parents[1]._freeCapacity --> <div class=\\\"scheduler__body__group__col\\\"> <!-- ko fastForEach: _cellsEditors --> <div class=\\\"scheduler__body__group__subcol\\\" data-bind=\\\"css: $parents[3].GetBottomColumnWidthClass()\\\"> <!-- ko if: _isAvailable()--> <a type=\\\"button\\\" href=\\\"javascript:void(0)\\\" class=\\\"btn btn-success btn-scheduler-plus\\\" data-bind=\\\"\\r\\n click: $parents[3].OnCreateEvent.bind($parents[3], $data),\\r\\n attr: {disabled: IsDisabled}\\\"> + </a> <!-- /ko --> </div> <!--/ko--> </div> <!-- /ko --> </div> </div> <!--/ko--> <!-- /ko --> </div> </div> <!-- ko with: $parent --> <!-- ko if: _commonFreeTime().length --> <div class=\\\"scheduler__body__group scheduler__body__group--bordered clearfix u-sticky-bottom\\\"> <div class=\\\"scheduler__body__group--collapsed clearfix text-left u-ws-nowrap\\\"> <div class=\\\"scheduler__body__group__col--first text-left\\\"> <label class=\\\"font-weight-bold label--free-time\\\" data-bind=\\\"text: _labels.SCHEDULER_COMMON_FREE_TIME\\\"></label> <div class=\\\"scheduler__qty pull-right\\\"></div> </div> <!-- ko fastForEach: _commonFreeTime --> <div class=\\\"scheduler__body__group__col\\\"> <!-- ko fastForEach: _cellsEditors --> <div class=\\\"scheduler__body__group__subcol\\\" data-bind=\\\"css: $parents[3].GetBottomColumnWidthClass()\\\"> <!-- ko if: _isAvailable()--> <a type=\\\"button\\\" href=\\\"javascript:void(0)\\\" class=\\\"btn btn-success btn-scheduler-plus\\\" data-bind=\\\"\\r\\n click: $parents[3].OnCreateEvent.bind($parents[3], $data),\\r\\n attr: {disabled: IsDisabled}\\\"> + </a> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> <!-- /ko --> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\nimport * as moment from \"moment\";\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {P} from \"Core/Common/Promise\";\r\n\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {GlobalModel} from \"Core/GlobalManager/Models/GlobalModel\";\r\nimport {ISchedulerParams} from \"../ISchedulerParams\";\r\nimport {SchedulerMappingProfile} from \"../Mappings/SchedulerMappingProfile\";\r\nimport {IResources, ISchedulerRequestModel} from \"../Models/Store/Request/SchedularRequestModel\";\r\nimport {ISchedularResponseModel} from \"../Models/Store/Response/SchedulerResponseModel\";\r\nimport {SchedulerViewModel} from \"../Models/View/SchedulerViewModel\";\r\nimport {SchedulerStore} from \"../Stores/SchedulerStore\";\r\nimport {ButtonCellEditor, ILinkedModel} from \"../Utils/ButtonCellEditor\";\r\nimport {ColumnButtonsEditor} from \"../Utils/ColumnButtonsEditor\";\r\nimport {GroupEditor} from \"../Utils/GroupEditor\";\r\nimport {SubGroupEditor} from \"../Utils/SubGroupEditor\";\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {PROPERTIES, SCHEDULER_EVENTS} from \"Core/Controls/Scheduler/Constants\";\r\nimport { IRePlanningData } from \"Core/Controls/Scheduler//Interfaces\";\r\n\r\n//Templates\r\nimport SchedulerTemplate from \"Core/Components/Controls/Scheduler/Templates/Scheduler.html\";\r\n\r\nexport class SchedulerCultures {\r\n static Get(culture: string) {\r\n const Cultures = {\r\n 'nl-nl': 'nl'\r\n };\r\n\r\n if (Cultures.hasOwnProperty(culture.toLowerCase())) {\r\n return Cultures[culture.toLowerCase()];\r\n }\r\n return culture;\r\n }\r\n}\r\n\r\nexport class SchedulerView extends Event {\r\n private _viewModel: SchedulerViewModel;\r\n private _lastCollapsed: KnockoutObservable<number>;\r\n private _groupEditors: KnockoutObservableArray<GroupEditor>;\r\n private _labels = LABELS;\r\n _screen: string;\r\n private _startDate: moment.Moment;\r\n private _endDate: moment.Moment;\r\n private _baseDatePicker: moment.Moment;\r\n private _baseDateStartClickingArrow: moment.Moment;\r\n private _settings: ISchedulerParams;\r\n private _freeCapacity: KnockoutObservableArray<ColumnButtonsEditor>;\r\n private _commonFreeTime: KnockoutObservableArray<ColumnButtonsEditor>;\r\n private _notValidGlobals: KnockoutObservableArray<string>;\r\n private _ready: KnockoutObservable<boolean>;\r\n private _loadInProgres: KnockoutObservable<boolean>;\r\n private _parentElement: HTMLElement = null;\r\n private _numberOfPeriods: KnockoutObservable<number>;\r\n private _periodsDuration: KnockoutObservable<number>;\r\n private _starting: KnockoutObservable<string>;\r\n private _columnToScroll: number;\r\n private _isRePlanMode: boolean;\r\n\r\n private _updateTimeout: any;\r\n private _updateTimeoutValue: number;\r\n private _globalsToUpdate: GlobalModel[];\r\n private _subjectIcon: IconModel;\r\n private IconModel = IconModel;\r\n private _subjectEntityId: number;\r\n private _isUnblocked: KnockoutObservable<boolean>;\r\n private _controlId: number;\r\n private recentLoaded: boolean = false;\r\n _subjectGlobalValue: KnockoutObservable<boolean>;\r\n _subjectGlobal: string;\r\n private _subjectTooltip: string;\r\n\r\n _rePlanningData: IRePlanningData;\r\n Views: Array<string>;\r\n GlobalValid: KnockoutObservable<boolean>;\r\n AgendaConnection: KnockoutObservable<boolean>;\r\n ReadingData: KnockoutObservable<boolean>;\r\n\r\n constructor(settings: ISchedulerParams) {\r\n super();\r\n\r\n this._controlId = settings.ControlId;\r\n this._screen = null;\r\n this._groupEditors = ko.observableArray([]);\r\n\r\n this._lastCollapsed = ko.observable(0);\r\n\r\n this._startDate = moment().startOf('isoWeek');\r\n this._endDate = moment().endOf('isoWeek').subtract(2, 'days');\r\n\r\n this._settings = settings;\r\n this._freeCapacity = ko.observableArray([]);\r\n this._commonFreeTime = ko.observableArray([]);\r\n this.AgendaConnection = ko.observable(true);\r\n this.ReadingData = ko.observable(true);\r\n this._notValidGlobals = ko.observableArray([]);\r\n this._ready = ko.observable(false);\r\n this._starting = ko.observable(GlobalManager.Instance.GetGlobal(GLOBALS.STARTING_TIME));\r\n\r\n this.InitPeriodDuration();\r\n this.InitNumberOfPeriods();\r\n\r\n this.GlobalValid = ko.observable(this.IsGlobalValid());\r\n this._loadInProgres = ko.observable(false);\r\n this.Views = [\r\n this._labels.AGENDA_MONTH,\r\n this._labels.AGENDA_WORK_WEEK,\r\n this._labels.AGENDA_WEEK,\r\n this._labels.AGENDA_DAY];\r\n this._columnToScroll = 0;\r\n this._isRePlanMode = false;\r\n this._updateTimeoutValue = 1000;\r\n this._globalsToUpdate = [];\r\n this._subjectGlobal = null;\r\n this._subjectGlobalValue = ko.observable(UserVarsManager.Instance.GetSchedulerSubjectToggle(this._controlId));\r\n this._subjectIcon = null;\r\n this._subjectEntityId = null;\r\n this._isUnblocked = ko.observable(false);\r\n this._baseDatePicker = null;\r\n this._baseDateStartClickingArrow = null;\r\n this._subjectTooltip = null;\r\n\r\n if (settings.RePlanningData) {\r\n this.SetDefaultValues(settings.RePlanningData);\r\n }\r\n\r\n this.AddEvent(SCHEDULER_EVENTS.CREATE_SCREEN);\r\n this.AddEvent(SCHEDULER_EVENTS.OPEN_DEFAULT_SCREEN);\r\n this.AddEvent(SCHEDULER_EVENTS.RETURN_TO_AGENDA);\r\n this.AddEvent(SCHEDULER_EVENTS.SWITCH_TO_DEFAULT);\r\n this.AddEvent(SCHEDULER_EVENTS.REPLAN_APPOINTMENT);\r\n this.AddEvent(SCHEDULER_EVENTS.SET_DATA);\r\n }\r\n\r\n Capitalize(s: string) {\r\n return s.charAt(0).toUpperCase() + s.slice(1).toLowerCase();\r\n }\r\n\r\n GetScreenSubjectRecordName() {\r\n return this._viewModel.ScreenSubjectRecordName;\r\n }\r\n\r\n GetDisplayPeriodDuration() {\r\n return moment().startOf('day').add(this._periodsDuration(), 'hours').format(DATE_FORMATS.TIME.Format);\r\n }\r\n\r\n SetLastDate() {\r\n this.SetDate(this._controlId, this._startDate.format());\r\n }\r\n\r\n SetDate(controlId: number, date: string) {\r\n UserVarsManager.Instance.SetSchedulerDate(controlId, date);\r\n this.Trigger(SCHEDULER_EVENTS.SET_DATA, {Date: date});\r\n }\r\n\r\n SetDefaultValues(defaultValues) {\r\n this._isRePlanMode = true;\r\n this._startDate = defaultValues.StartTime.clone().startOf('isoWeek');\r\n this._endDate = defaultValues.StartTime.clone().endOf('isoWeek').subtract(2, 'days');\r\n this._rePlanningData = defaultValues;\r\n }\r\n\r\n GetEntityId() {\r\n return this._settings.EntityId;\r\n }\r\n\r\n GetTemplate() {\r\n return SchedulerTemplate;\r\n }\r\n\r\n GetClass() {\r\n let classes = '';\r\n if (this._subjectGlobalValue() && (this._numberOfPeriods() <= 2)) {\r\n classes = 'scheduler-subject ';\r\n }\r\n\r\n switch (this._screen) {\r\n case this._labels.AGENDA_WEEK :\r\n classes = classes + 'scheduler--week';\r\n break;\r\n\r\n case this._labels.AGENDA_WORK_WEEK :\r\n classes = classes + 'scheduler--work-week';\r\n break;\r\n\r\n case this._labels.AGENDA_MONTH :\r\n classes = classes + 'scheduler--month';\r\n break;\r\n case this._labels.AGENDA_DAY :\r\n classes = classes + 'scheduler--day';\r\n break;\r\n }\r\n return classes;\r\n }\r\n\r\n GetActiveClass(screen: string) {\r\n if (this._screen == screen) {\r\n return 'active';\r\n }\r\n }\r\n\r\n ChangeView(view: string) {\r\n if (this._screen === view) return;\r\n\r\n switch (view) {\r\n case this._labels.AGENDA_MONTH :\r\n this.ChangeDateAndSortDates('month', null, null);\r\n break;\r\n\r\n case this._labels.AGENDA_WEEK :\r\n this.ChangeDateAndSortDates('isoWeek', null, null);\r\n break;\r\n\r\n case this._labels.AGENDA_WORK_WEEK :\r\n this.ChangeDateAndSortDates('isoWeek', 'days', 2);\r\n break;\r\n\r\n case this._labels.AGENDA_DAY :\r\n this.ChangeDateAndSortDates('day', null, null);\r\n break;\r\n }\r\n\r\n UserVarsManager.Instance.SetSchedulerView(this._controlId, view);\r\n\r\n this._screen = view;\r\n\r\n this.Show();\r\n }\r\n\r\n ChangeDateAndSortDates(sort: moment.unitOfTime.StartOf, period?: moment.DurationInputArg2, subtract?: moment.DurationInputArg1){\r\n if (this._baseDateStartClickingArrow){ // is arrow click Date\r\n this._startDate = moment(this._baseDateStartClickingArrow).startOf(sort);\r\n if (!!period && !!subtract){\r\n this._endDate = moment(this._baseDateStartClickingArrow).endOf(sort).subtract(subtract, period);\r\n } else{\r\n this._endDate = moment(this._baseDateStartClickingArrow).endOf(sort);\r\n }\r\n\r\n } else if (this._baseDatePicker) { // is Picker click Date\r\n this._startDate = moment(this._baseDatePicker).startOf(sort);\r\n if (!!period && !!subtract){\r\n this._endDate = moment(this._baseDatePicker).endOf(sort).subtract(subtract, period);\r\n } else{\r\n this._endDate = moment(this._baseDatePicker).endOf(sort);\r\n }\r\n\r\n } else { // is default click date\r\n this._startDate = moment(this._startDate).startOf(sort);\r\n if (!!period && !!subtract){\r\n this._endDate = moment(this._startDate).endOf(sort).subtract(subtract, period);\r\n } else{\r\n this._endDate = moment(this._startDate).endOf(sort);\r\n }\r\n\r\n }\r\n }\r\n\r\n private RenderData(model: ISchedularResponseModel) {\r\n this.AgendaConnection(model.AgendaConnection);\r\n this.ReadingData(model.ReadingData);\r\n\r\n if (!model.AgendaConnection || !model.ReadingData) {\r\n this._ready(true);\r\n this._groupEditors().forEach(editor => editor.OpenGroup()); //if you need to open only the first 2 groups, then do - this._groupEditors().slice(0, 2)\r\n return;\r\n }\r\n\r\n const schedulerMappingProfile = {\r\n model: model,\r\n startDate: this._startDate,\r\n endDate: this._endDate,\r\n numberOfPeriods: this._numberOfPeriods(),\r\n periodDuration: this._periodsDuration(),\r\n startingTime: this._starting(),\r\n rePlanningData: this._rePlanningData,\r\n schedulerView: this\r\n };\r\n\r\n if (model.SubjectTable) {\r\n if (!model.SubjectIsValid) {\r\n this._subjectGlobalValue(false);\r\n new Notifier().Warning(NOTIFICATIONS.INVALID_SCHEDULER_SUBJECT);\r\n } else if (model.SubjectTable.Name !== 'AGENDA') {\r\n this._subjectIcon = model.SubjectTable.Icon;\r\n this._subjectEntityId = model.SubjectTable.Id;\r\n this._subjectGlobal = this.Capitalize(model.SubjectTable.TranslatedName || model.SubjectTable.Name);\r\n this._subjectTooltip = this._labels.SUBJECT_TOOLTIP.replace('{entityname}', this._subjectGlobal);\r\n } else if (model.SubjectTable.Name === 'AGENDA') {\r\n this._subjectGlobalValue(false);\r\n }\r\n }\r\n\r\n if (schedulerMappingProfile.numberOfPeriods > 2) {\r\n this._subjectGlobalValue(false);\r\n }\r\n\r\n const viewModel = SchedulerMappingProfile.OnViewModel(schedulerMappingProfile);\r\n\r\n if (this._viewModel) {\r\n this.RestoreSelectedItems(viewModel);\r\n this.UpdateRow(this._freeCapacity);\r\n this.UpdateRow(this._commonFreeTime, true, !!this._rePlanningData);\r\n }\r\n\r\n this._groupEditors(viewModel.Groups);\r\n viewModel.Week = this._startDate.isoWeek();\r\n\r\n this._viewModel = viewModel;\r\n this.InitGroupEditors(viewModel);\r\n\r\n _.forEach(model.Errors, err => this.ShowError(err));\r\n\r\n this._ready(true);\r\n this._groupEditors().forEach(editor => editor.OpenGroup()); //if you need to open only the first 2 groups, then do - this._groupEditors().slice(0, 2)\r\n this.InitSchedulerDateTimePicker(this._viewModel, this._parentElement);\r\n }\r\n\r\n private RestoreSelectedItems(viewModel: SchedulerViewModel) {\r\n const selectedItems = _.flatten(this._viewModel.Groups\r\n .map(group => group._subGroupEditors\r\n .filter(subGroup => subGroup._isSelected())));\r\n\r\n for (const group of viewModel.Groups) {\r\n for (const subGroup of group._subGroupEditors) {\r\n const selectedItem = _.find(selectedItems, i =>\r\n i._columnFirst._entityId === subGroup._columnFirst._entityId && i._columnFirst._id === subGroup._columnFirst._id);\r\n\r\n if (selectedItem) {\r\n subGroup._isSelected(true);\r\n }\r\n }\r\n\r\n group.UpdateSelectedCount();\r\n\r\n if (group.GetSelectedCount() === group._subGroupEditors.length) {\r\n group._isSelected(true);\r\n }\r\n }\r\n }\r\n\r\n private SortGroups(x: GroupEditor, y: GroupEditor) {\r\n return x._sortOrder() - y._sortOrder();\r\n }\r\n\r\n BlockUI() {\r\n this._isUnblocked(false);\r\n BlockUI.Block({Target: this._parentElement});\r\n }\r\n\r\n\r\n UnBlockUI() {\r\n BlockUI.Unblock(this._parentElement, false,() => {\r\n this._isUnblocked(true);\r\n });\r\n }\r\n\r\n AfterRender(elementArray: HTMLElement[]): void {\r\n this._parentElement = elementArray[0].parentElement;\r\n if (this.recentLoaded) {\r\n return;\r\n }\r\n this.recentLoaded = true;\r\n\r\n setTimeout(() => {\r\n this.recentLoaded = false;\r\n }, 5000);\r\n\r\n const lastView = UserVarsManager.Instance.GetSchedulerView(this._controlId);\r\n\r\n this.SetLastDate();\r\n\r\n if (lastView) {\r\n this.ChangeView(lastView);\r\n } else {\r\n this.ChangeView(this._labels.AGENDA_WEEK);\r\n }\r\n if (this._rePlanningData) {\r\n this._columnToScroll = this._rePlanningData.StartTime.diff(this._startDate, 'days');\r\n }\r\n }\r\n\r\n OnPrevClick() {\r\n this._columnToScroll = 0;\r\n this._baseDatePicker = null;\r\n switch (this._screen) {\r\n case this._labels.AGENDA_MONTH :\r\n this._baseDateStartClickingArrow = moment(this._startDate).subtract(1, 'months').startOf('day');\r\n this._startDate.subtract(1, 'months');\r\n this._endDate.subtract(1, 'months');\r\n break;\r\n\r\n case this._labels.AGENDA_WEEK :\r\n this._baseDateStartClickingArrow = moment(this._startDate).subtract(7, 'days').startOf('day');\r\n this._startDate.subtract(7, 'days');\r\n this._endDate.subtract(7, 'days');\r\n break;\r\n\r\n case this._labels.AGENDA_WORK_WEEK :\r\n this._baseDateStartClickingArrow = moment(this._startDate).subtract(7, 'days').startOf('day');\r\n this._startDate.subtract(7, 'days');\r\n this._endDate.subtract(7, 'days');\r\n break;\r\n\r\n case this._labels.AGENDA_DAY :\r\n this._baseDateStartClickingArrow = moment(this._startDate).subtract(1, 'days').startOf('day');\r\n this._startDate.subtract(1, 'days');\r\n this._endDate.subtract(1, 'days');\r\n break;\r\n }\r\n this.SetDate(this._controlId, this._startDate.format());\r\n this.Show();\r\n }\r\n\r\n OnNextClick() {\r\n this._columnToScroll = 0;\r\n this._baseDatePicker = null;\r\n switch (this._screen) {\r\n case this._labels.AGENDA_MONTH :\r\n this._baseDateStartClickingArrow = moment(this._startDate).add(1, 'months').startOf('day');\r\n this._startDate.add(1, 'months');\r\n this._endDate.add(1, 'months');\r\n break;\r\n\r\n case this._labels.AGENDA_WEEK :\r\n this._baseDateStartClickingArrow = moment(this._startDate).add(7, 'days').startOf('day');\r\n this._startDate.add(7, 'days');\r\n this._endDate.add(7, 'days');\r\n break;\r\n\r\n case this._labels.AGENDA_WORK_WEEK :\r\n this._baseDateStartClickingArrow = moment(this._startDate).add(7, 'days').startOf('day');\r\n this._startDate.add(7, 'days');\r\n this._endDate.add(7, 'days');\r\n break;\r\n\r\n case this._labels.AGENDA_DAY :\r\n this._baseDateStartClickingArrow = moment(this._startDate).add(1, 'days').startOf('day');\r\n this._startDate.add(1, 'days');\r\n this._endDate.add(1, 'days');\r\n break;\r\n }\r\n this.SetDate(this._controlId, this._startDate.format());\r\n this.Show();\r\n }\r\n\r\n GetDateFromTimePicker(view: SchedulerViewModel, pickerDate: any){\r\n let newPickerDateShortFormat = moment(pickerDate.date.toDate().toString()).format(DATE_FORMATS.SHORT_DATE.Format),\r\n currentDateShortFormat = moment(view.CurrentDate).format(DATE_FORMATS.SHORT_DATE.Format),\r\n newDate = moment(pickerDate.date.toDate().toString()),\r\n isWeekOrWorkWeek = this._screen === this._labels.AGENDA_WEEK || this._screen === this._labels.AGENDA_WORK_WEEK,\r\n dateComparison: boolean;\r\n\r\n if (isWeekOrWorkWeek){\r\n if ( moment(newPickerDateShortFormat).isSame(moment(new Date()).format(DATE_FORMATS.SHORT_DATE.Format)) ){ // is current week\r\n return false\r\n }\r\n let newDateWeek = moment(moment(newDate).startOf('isoWeek').toDate()).format(DATE_FORMATS.SHORT_DATE.Format);\r\n dateComparison = moment(currentDateShortFormat).isSame(newDateWeek);\r\n } else if (this._screen === this._labels.AGENDA_MONTH) {\r\n let firstDayCurrentMonth = moment(currentDateShortFormat).startOf('month').format();\r\n let firstDayNewDateMonth = moment(newDate).startOf('month').format();\r\n\r\n dateComparison = moment(firstDayCurrentMonth).isSame(firstDayNewDateMonth);\r\n } else {\r\n dateComparison = moment(currentDateShortFormat).isSame(newDate);\r\n }\r\n\r\n if (!dateComparison){\r\n this._columnToScroll = 0;\r\n let isOK: boolean;\r\n if(this._baseDateStartClickingArrow){\r\n this._baseDateStartClickingArrow = null;\r\n }\r\n\r\n switch (this._screen){\r\n case this._labels.AGENDA_MONTH :\r\n this._baseDatePicker = moment(newDate).startOf('day');\r\n this._startDate = moment(newDate).startOf('month');\r\n this._endDate = moment(newDate).endOf('month');\r\n isOK = true;\r\n break;\r\n\r\n case this._labels.AGENDA_WEEK :\r\n this._baseDatePicker = moment(newDate).startOf('day');\r\n this._startDate = moment(newDate).startOf('isoWeek');\r\n this._endDate = moment(newDate).endOf('isoWeek');\r\n isOK = true;\r\n break;\r\n\r\n case this._labels.AGENDA_WORK_WEEK :\r\n this._baseDatePicker = moment(newDate).startOf('day');\r\n this._startDate = moment(newDate).startOf('isoWeek');\r\n this._endDate = moment(newDate).endOf('isoWeek').subtract(2, 'days');\r\n isOK = true;\r\n break;\r\n\r\n case this._labels.AGENDA_DAY :\r\n this._baseDatePicker = moment(newDate).startOf('day');\r\n this._startDate = moment(newDate).startOf('day');\r\n this._endDate = moment(newDate).endOf('day');\r\n isOK = true;\r\n break;\r\n }\r\n\r\n if (isOK){\r\n this.SetDate(this._controlId, this._startDate.format());\r\n this.Show();\r\n }\r\n }\r\n }\r\n\r\n InitSchedulerDateTimePicker(view: SchedulerViewModel, element){\r\n let self = this,\r\n pickerPaginationBtn = $(element).find('.schedulerPickerPagination'),\r\n pickerBtn = $(pickerPaginationBtn);\r\n\r\n if (pickerBtn.length === 0) return;\r\n\r\n if (!pickerBtn.data(\"DateTimePicker\")) {\r\n pickerBtn.datetimepicker({\r\n minDate: '1900-01-01'\r\n });\r\n\r\n pickerBtn.on('dp.change', function (e) {\r\n self.GetDateFromTimePicker(view, e);\r\n });\r\n\r\n pickerBtn.on('click', function () {\r\n let currentDate;\r\n if(!!self._baseDatePicker){\r\n currentDate = moment(self._baseDatePicker);\r\n\r\n } else if (!!self._baseDateStartClickingArrow) {\r\n currentDate = moment(self._baseDateStartClickingArrow);\r\n\r\n } else {\r\n currentDate = moment(view.CurrentDate);\r\n }\r\n $(this).data(\"DateTimePicker\").date(currentDate);\r\n $(this).data(\"DateTimePicker\").toggle();\r\n });\r\n pickerBtn.on('mouseleave', function () {\r\n $(this).data(\"DateTimePicker\").hide();\r\n\t\t\t});\r\n }\r\n\r\n switch (this._screen) {\r\n case this._labels.AGENDA_MONTH :\r\n pickerBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'months',\r\n locale: SchedulerCultures.Get(FormatConverter.GetLocale()),\r\n format: DATE_FORMATS.MONTH_AND_YEAR.Format,\r\n });\r\n break;\r\n\r\n case this._labels.AGENDA_WEEK :\r\n pickerBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'days',\r\n locale: SchedulerCultures.Get(FormatConverter.GetLocale()),\r\n format: DATE_FORMATS.SHORT_DATE.Format,\r\n daysOfWeekDisabled: false,\r\n });\r\n break;\r\n\r\n case this._labels.AGENDA_WORK_WEEK :\r\n pickerBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'days',\r\n locale: SchedulerCultures.Get(FormatConverter.GetLocale()),\r\n format: DATE_FORMATS.SHORT_DATE.Format,\r\n daysOfWeekDisabled: [0, 6],\r\n });\r\n break;\r\n\r\n case this._labels.AGENDA_DAY :\r\n pickerBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'days',\r\n locale: SchedulerCultures.Get(FormatConverter.GetLocale()),\r\n format: DATE_FORMATS.SHORT_DATE.Format,\r\n daysOfWeekDisabled: false,\r\n });\r\n break;\r\n }\r\n\r\n }\r\n\r\n DelayedUpdate(target: string, value: string) {\r\n if (this._updateTimeout) clearTimeout(this._updateTimeout);\r\n this._updateTimeout = setTimeout(() => {\r\n this.AddGlobalToUpdate(target, value);\r\n this.Show();\r\n }, this._updateTimeoutValue);\r\n }\r\n\r\n OnIncreasePeriods() {\r\n let newNumberOfPeriods = this._numberOfPeriods() + 1;\r\n\r\n if (newNumberOfPeriods > 48) {\r\n newNumberOfPeriods = 1;\r\n }\r\n\r\n this._numberOfPeriods(newNumberOfPeriods);\r\n this._periodsDuration(this.CalculatePeriodDuration(newNumberOfPeriods));\r\n\r\n this.DelayedUpdate(GLOBALS.NUMBER_OF_PERIODS, this._numberOfPeriods().toString())\r\n\r\n if (newNumberOfPeriods >= 5 && this._screen !== this._labels.AGENDA_DAY){\r\n this.ChangeView(this._labels.AGENDA_DAY);\r\n }\r\n }\r\n\r\n OnDecreasePeriods() {\r\n let newNumberOfPeriods = this._numberOfPeriods() - 1;\r\n\r\n if (newNumberOfPeriods === 0) {\r\n newNumberOfPeriods = 48;\r\n }\r\n\r\n this._numberOfPeriods(newNumberOfPeriods);\r\n this._periodsDuration(this.CalculatePeriodDuration(newNumberOfPeriods));\r\n\r\n this.DelayedUpdate(GLOBALS.NUMBER_OF_PERIODS, this._numberOfPeriods().toString())\r\n\r\n if (newNumberOfPeriods >= 5 && this._screen !== this._labels.AGENDA_DAY){\r\n this.ChangeView(this._labels.AGENDA_DAY);\r\n }\r\n }\r\n\r\n OnIncreasePeriodDuration() {\r\n let defaultStep_30_minutes = 30 / 60, // 30 minutes ÷ 60 minutes = 0.5 hours.\r\n step_15_minutes = 15 / 60, // 15 minutes ÷ 60 minutes = 0.25 hours.\r\n step_10_minutes = 10 / 60, // 10 minutes ÷ 60 minutes = 0.16666666667 hours.\r\n step_05_minutes = 5 / 60; // 5 minutes ÷ 60 minutes = 0.08333333333 hours.\r\n\r\n let newPeriodDuration = this._periodsDuration() + defaultStep_30_minutes,\r\n fixed_10_minutes = +step_10_minutes.toFixed(3),\r\n fixed_05_minutes = +step_05_minutes.toFixed(3),\r\n calculate;\r\n\r\n switch (this._periodsDuration()) {\r\n case fixed_10_minutes :\r\n calculate = this._periodsDuration() + fixed_05_minutes;\r\n newPeriodDuration = +calculate.toFixed(3);\r\n break;\r\n case step_15_minutes :\r\n calculate = this._periodsDuration() + step_15_minutes;\r\n newPeriodDuration = +calculate.toFixed(3);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (newPeriodDuration === 24) {\r\n newPeriodDuration = defaultStep_30_minutes;\r\n }\r\n\r\n this._periodsDuration(newPeriodDuration);\r\n this.CalculateDecreasePeriods();\r\n this.DelayedUpdate(GLOBALS.PERIOD_DURATION, this._periodsDuration().toString())\r\n }\r\n\r\n OnDecreasePeriodDuration() {\r\n let defaultStep_30_minutes = 30 / 60, // 30 minutes ÷ 60 minutes = 0.5 hours.\r\n step_15_minutes = 15 / 60, // 15 minutes ÷ 60 minutes = 0.25 hours.\r\n step_10_minutes = 10 / 60, // 10 minutes ÷ 60 minutes = 0.16666666667 hours.\r\n step_05_minutes = 5 / 60; // 5 minutes ÷ 60 minutes = 0.08333333333 hours.\r\n\r\n let newPeriodDuration = this._periodsDuration() - defaultStep_30_minutes,\r\n fixed_10_minutes = +step_10_minutes.toFixed(3),\r\n fixed_05_minutes = +step_05_minutes.toFixed(3),\r\n calculate;\r\n\r\n switch (this._periodsDuration()) {\r\n case defaultStep_30_minutes :\r\n calculate = this._periodsDuration() - step_15_minutes;\r\n newPeriodDuration = +calculate.toFixed(3);\r\n break;\r\n case step_15_minutes :\r\n calculate = this._periodsDuration() - fixed_05_minutes;\r\n newPeriodDuration = +calculate.toFixed(3);\r\n break;\r\n case fixed_10_minutes :\r\n return false;\r\n default:\r\n break;\r\n }\r\n\r\n\r\n if (newPeriodDuration === 0) {\r\n newPeriodDuration = 23.5;\r\n }\r\n\r\n this._periodsDuration(newPeriodDuration);\r\n\r\n this.DelayedUpdate(GLOBALS.PERIOD_DURATION, this._periodsDuration().toString())\r\n }\r\n\r\n DisableBtnDecreasePeriodBtn(): boolean {\r\n let step_10_minutes = 10 / 60, // 10 minutes ÷ 60 minutes = 0.16666666667 hours.\r\n fixed_10_minutes = +step_10_minutes.toFixed(3);\r\n\r\n return this._periodsDuration() === fixed_10_minutes;\r\n }\r\n\r\n OnIncreaseStarting() {\r\n if (this._starting() === '23:00') {\r\n this._starting('00:00');\r\n } else {\r\n this._starting(moment(moment().format(DATE_FORMATS.SHORT_DATE.Format) + \" \" + this._starting()).add(1, 'hours').format(DATE_FORMATS.TIME.Format));\r\n }\r\n this.CalculateDecreasePeriods();\r\n this.DelayedUpdate(GLOBALS.STARTING_TIME, this._starting().toString());\r\n }\r\n\r\n OnDecreaseStarting() {\r\n if (this._starting() === '00:00') {\r\n this._starting('23:00');\r\n } else {\r\n this._starting(moment(moment().format(DATE_FORMATS.SHORT_DATE.Format) + \" \" + this._starting()).subtract(1, 'hours').format(DATE_FORMATS.TIME.Format));\r\n }\r\n\r\n this.DelayedUpdate(GLOBALS.STARTING_TIME, this._starting().toString());\r\n }\r\n\r\n ChangeProvideSubject() {\r\n if (this._numberOfPeriods() > 2)\r\n return;\r\n this._subjectGlobalValue(!this._subjectGlobalValue());\r\n UserVarsManager.Instance.SetSchedulerSubjectToggle(this._controlId, this._subjectGlobalValue());\r\n this.Show();\r\n }\r\n\r\n RoundHalf(num: number): number {\r\n return Math.round(num * 2) / 2;\r\n }\r\n\r\n CalculateDecreasePeriods() {\r\n const periods = this._numberOfPeriods();\r\n const duration = this._periodsDuration();\r\n const start = +this._starting().substr(0, 2);\r\n const end = start + duration * periods;\r\n\r\n let maxPeriods = Math.min(periods, Math.floor((24 - start) / duration));\r\n if(maxPeriods < 1){\r\n maxPeriods = 1;\r\n }\r\n\r\n if (end > 24 && periods > 1) {\r\n\t this._numberOfPeriods(maxPeriods);\r\n }\r\n }\r\n\r\n Show() {\r\n this._ready(false);\r\n\r\n if (this._globalsToUpdate.length > 0) {\r\n GlobalManager.Instance.UpdateUserGlobals(this._globalsToUpdate)\r\n .then(() => this._globalsToUpdate = [])\r\n .fail(() => new Notifier().Warning('Error updating scheduler globals'));\r\n }\r\n\r\n this.BlockUI();\r\n this.LoadData()\r\n .then((schedularResponseModel: ISchedularResponseModel) => this.RenderData(schedularResponseModel))\r\n .fail(error => this.ShowError(error.message))\r\n .always(() => this.UnBlockUI());\r\n }\r\n\r\n private CalculatePeriodDuration(numberOfPeriods: number) {\r\n let periodDuration = 8 / numberOfPeriods;\r\n\r\n if (periodDuration < 0.5) {\r\n periodDuration = 0.5;\r\n }\r\n\r\n return Math.round(periodDuration * 2) / 2;\r\n }\r\n\r\n private InitNumberOfPeriods() {\r\n let globalValue = Math.round(+GlobalManager.Instance.GetGlobal(GLOBALS.NUMBER_OF_PERIODS));\r\n\r\n if (globalValue <= 0) {\r\n globalValue = 1;\r\n }\r\n\r\n if (globalValue > 48) {\r\n globalValue = 48;\r\n }\r\n\r\n this._numberOfPeriods = ko.observable(globalValue);\r\n this.CalculateDecreasePeriods();\r\n };\r\n\r\n private InitPeriodDuration() {\r\n let globalValue = Math.round(+GlobalManager.Instance.GetGlobal(GLOBALS.PERIOD_DURATION));\r\n\r\n if (globalValue <= 0) {\r\n globalValue = 0.5;\r\n }\r\n\r\n if (globalValue > 23.5) {\r\n globalValue = 23.5;\r\n }\r\n\r\n this._periodsDuration = ko.observable(globalValue);\r\n }\r\n\r\n private IsGlobalValid(): boolean {\r\n this._notValidGlobals([]);\r\n let isValid = true;\r\n if (isNaN(this._numberOfPeriods()) || !this.IsInteger(this._numberOfPeriods()) || this._numberOfPeriods() <= 0) {\r\n this._notValidGlobals.push(GLOBALS.NUMBER_OF_PERIODS);\r\n isValid = false;\r\n }\r\n if (isNaN(this._periodsDuration()) || !this.IsDecimal(this._periodsDuration()) || this._periodsDuration() <= 0) {\r\n this._notValidGlobals.push(GLOBALS.PERIOD_DURATION);\r\n isValid = false;\r\n }\r\n\r\n if (!moment(this._starting(), DATE_FORMATS.TIME.Format).isValid()) {\r\n this._notValidGlobals.push(GLOBALS.STARTING_TIME);\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n private AddGlobalToUpdate(name: string, value: string) {\r\n let globalToUpdate = _.find(this._globalsToUpdate, global => global.Name === name);\r\n\r\n if (globalToUpdate) {\r\n globalToUpdate.Value = value;\r\n } else {\r\n globalToUpdate = new GlobalModel();\r\n\r\n globalToUpdate.Name = name;\r\n globalToUpdate.Value = value;\r\n\r\n this._globalsToUpdate.push(globalToUpdate);\r\n }\r\n }\r\n\r\n private IsInteger(num: number) {\r\n return (num ^ 0) === num;\r\n }\r\n\r\n private IsDecimal(num: number) {\r\n return num % 1 != 0 || this.IsInteger(num);\r\n }\r\n\r\n private LoadData(): P.Promise<ISchedularResponseModel> {\r\n let params: ISchedulerRequestModel = {\r\n Ending: this._endDate.format(),\r\n Starting: this._startDate.format(),\r\n ScreenSubjectEntityId: this._settings.ScreenSubjectEntityId,\r\n ScreenSubjectRecordId: this._settings.ScreenSubjectRecordId,\r\n ProvideSubjects: this._subjectGlobalValue()\r\n };\r\n return SchedulerStore.GetScheduler(params, false);\r\n }\r\n\r\n UpdateRow(row: KnockoutObservableArray<ColumnButtonsEditor>, isFreeTime: boolean = false, recountAvailable: boolean = false) {\r\n const newRow = this.GenerateRow();\r\n\r\n const anyResourceSelected = _.any(this._groupEditors(), (groupEditor: GroupEditor) => groupEditor._selectedCount() > 0);\r\n if (!anyResourceSelected) {\r\n row(newRow);\r\n return;\r\n }\r\n\r\n const freeCapacity: { columnEditorIndex: number, cellEditorIndex: number, available: boolean }[] = [];\r\n\r\n let selectedRows: Array<{ id: number, rows: any }> = [];\r\n\r\n if (recountAvailable) {\r\n this._rePlanningData.LinkedSubGroups = [];\r\n }\r\n\r\n _.forEach(this._groupEditors(), (groupEditor) => {\r\n if (groupEditor._sortOrder() < 0 && groupEditor._isSelected() || isFreeTime) {\r\n _.forEach(groupEditor._subGroupEditors, (subGroupEditor) => {\r\n if (subGroupEditor._isSelected()) {\r\n\r\n const selectedRow = {\r\n id: subGroupEditor._columnFirst._id,\r\n rows: {}\r\n };\r\n\r\n _.forEach(subGroupEditor._columnsEditors, (columnEditor, columnEditorIter) => {\r\n _.forEach(columnEditor._cellsEditors, (cellEditor, cellEditorIter, arr) => {\r\n recountAvailable && cellEditor.IsAvailableForReplan();\r\n\r\n if (!selectedRow.rows[columnEditorIter]) {\r\n selectedRow.rows[columnEditorIter] = {};\r\n }\r\n selectedRow.rows[columnEditorIter][cellEditorIter] = cellEditor._isAvailableForReplan();\r\n\r\n // if group is closed and subGroup is selected\r\n let freeCapacityCell = newRow[columnEditorIter]._cellsEditors[cellEditorIter];\r\n if (cellEditor._isAvailable && !cellEditor._isFreeDay && !cellEditor._count) {\r\n let linkedModel: ILinkedModel = {\r\n GroupEntityId: subGroupEditor._columnFirst._entityId,\r\n ResourceId: subGroupEditor._columnFirst._id,\r\n Name: subGroupEditor._columnFirst._name,\r\n TypeId: subGroupEditor._columnFirst._recordTypeId,\r\n TypeName: subGroupEditor._columnFirst._recordTypeName\r\n };\r\n\r\n freeCapacityCell._linkedSubGroups.push(linkedModel);\r\n if (this._rePlanningData) {\r\n this._rePlanningData.LinkedSubGroups.push(linkedModel);\r\n }\r\n }\r\n\r\n //make freecapacity button available if subgroupCell available\r\n let freeCapacitySpecs = freeCapacity.find(fc => fc.columnEditorIndex === columnEditorIter && fc.cellEditorIndex === cellEditorIter);\r\n\r\n if (isFreeTime) {\r\n if (!freeCapacitySpecs) {\r\n freeCapacitySpecs = {\r\n columnEditorIndex: columnEditorIter,\r\n cellEditorIndex: cellEditorIter,\r\n available: cellEditor._isAvailable && !cellEditor._isFreeDay && !cellEditor._count\r\n };\r\n freeCapacity.push(freeCapacitySpecs);\r\n } else {\r\n freeCapacitySpecs.available = freeCapacitySpecs.available && !cellEditor._isFreeDay && cellEditor._isAvailable && !cellEditor._count;\r\n }\r\n } else {\r\n if (!freeCapacitySpecs) {\r\n freeCapacitySpecs = {\r\n columnEditorIndex: columnEditorIter,\r\n cellEditorIndex: cellEditorIter,\r\n available: cellEditor._isAvailable || !cellEditor._isFreeDay && !cellEditor._count\r\n };\r\n freeCapacity.push(freeCapacitySpecs);\r\n } else {\r\n freeCapacitySpecs.available = freeCapacitySpecs.available || !cellEditor._isFreeDay && cellEditor._isAvailable && !cellEditor._count;\r\n }\r\n }\r\n });\r\n });\r\n\r\n selectedRows.push(selectedRow);\r\n } else {\r\n _.forEach(subGroupEditor._columnsEditors, (columnEditor, columnEditorIter) => {\r\n _.forEach(columnEditor._cellsEditors, (cellEditor, cellEditorIter, arr) => {\r\n cellEditor._isAvailableForReplan(false);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (recountAvailable && this._isRePlanMode) {\r\n const uniqSelectedRows = _.uniq(selectedRows, (row) => row.id);\r\n\r\n if (uniqSelectedRows.length > 1) {\r\n let availableModel = selectedRows[0].rows;\r\n for (let i = 1; i < uniqSelectedRows.length; i++) {\r\n _.forEach(uniqSelectedRows[i].rows, (column: Array<boolean>, columnIter) => {\r\n _.forEach(column, (cell, cellIter) => {\r\n availableModel[columnIter][cellIter] = availableModel[columnIter][cellIter] && cell;\r\n });\r\n });\r\n }\r\n\r\n const agenda = {};\r\n\r\n _.forEach(this._groupEditors(), (group) => {\r\n _.forEach(group._subGroupEditors, (subGroup) => {\r\n if (subGroup._isSelected()) {\r\n _.forEach(subGroup._columnsEditors, (column, columnIter) => {\r\n if (!agenda[columnIter]) {\r\n agenda[columnIter] = {};\r\n }\r\n _.forEach(column._cellsEditors, (cell, cellIter) => {\r\n if (!agenda[columnIter][cellIter]) {\r\n agenda[columnIter][cellIter] = [];\r\n }\r\n cell._isAvailableForReplan(availableModel[columnIter][cellIter]);\r\n\r\n if (availableModel[columnIter][cellIter]) {\r\n if (subGroup._agenda.length) {\r\n _.forEach(subGroup._agenda, (item) => {\r\n const start = moment(FormatConverter.CorrectTimezone(item.Starting));\r\n const end = moment(start.clone()).add(moment.duration(moment(item.Duration).format(DATE_FORMATS.TIME.Format)));\r\n\r\n const periodStart = moment(cell._period.Start);\r\n const periodEnd = periodStart.clone().add(cell._period.Duration, 'h');\r\n\r\n if ((start < periodEnd) && (end > periodStart)) {\r\n agenda[columnIter][cellIter].push({\r\n id: item.Id,\r\n start: moment(FormatConverter.CorrectTimezone(item.Starting)),\r\n end: moment(start.clone()).add(moment.duration(moment(item.Duration).format(DATE_FORMATS.TIME.Format)))\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (agenda[columnIter][cellIter].length > 1) {\r\n agenda[columnIter][cellIter] = _.uniq(agenda[columnIter][cellIter], (ag: any) => ag.id);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n });\r\n //recount available periods for cell\r\n this._viewModel.AvailablePeriods = SchedulerMappingProfile.AvailablePeriodsForReplanning(agenda, this._viewModel.HeaderColumns, this._rePlanningData);\r\n\r\n _.forEach(this._groupEditors(), (group) => {\r\n _.forEach(group._subGroupEditors, (subGroup) => {\r\n if (subGroup._isSelected()) {\r\n _.forEach(subGroup._columnsEditors, (column, columnIter) => {\r\n _.forEach(column._cellsEditors, (cell, cellIter) => {\r\n cell._availableForReplanRanges = _.map(this._viewModel.AvailablePeriods[columnIter][cellIter], (range) => {\r\n return {\r\n Start: range.a,\r\n End: range.b,\r\n DisplayValue: `${range.a.format(DATE_FORMATS.TIME.Format)} - ${range.b.format(DATE_FORMATS.TIME.Format)}`\r\n }\r\n });\r\n })\r\n })\r\n }\r\n });\r\n });\r\n //recount available periods for cell\r\n }\r\n this._rePlanningData.LinkedSubGroups = _.uniq(this._rePlanningData.LinkedSubGroups, (record) => record.ResourceId && record.Name);\r\n }\r\n\r\n if (freeCapacity && _.any(this._groupEditors(), ge => ge._sortOrder() < 0)) {\r\n const collapsedGroups = this._groupEditors()\r\n .filter(ge => ge._sortOrder() < 0)\r\n .map(ge => ge._sortOrder());\r\n\r\n this._lastCollapsed(collapsedGroups.length ? _.max(collapsedGroups) : 0);\r\n }\r\n\r\n freeCapacity.forEach(freeCapacitySpecs => {\r\n const freeCapacityCell = newRow[freeCapacitySpecs.columnEditorIndex]._cellsEditors[freeCapacitySpecs.cellEditorIndex];\r\n freeCapacityCell._isAvailable(freeCapacitySpecs.available);\r\n });\r\n\r\n row(newRow);\r\n }\r\n\r\n private GenerateRow() {\r\n let row: Array<ColumnButtonsEditor> = [];\r\n if (this._groupEditors()[0]) {\r\n _.forEach(this._groupEditors()[0]._columnsEditors, (col, i) => {\r\n row.push(new ColumnButtonsEditor());\r\n _.forEach(col._cellsEditors, (cell, j) => {\r\n let period = this._viewModel.HeaderColumns[i].Periods[j];\r\n row[i]._cellsEditors.push(new ButtonCellEditor(false, period, !this._viewModel.CreatingData));\r\n });\r\n });\r\n }\r\n return row;\r\n }\r\n\r\n private ChangeSameSubgroups(subgroup) {\r\n _.forEach(this._groupEditors(), (group) => {\r\n _.forEach(group._subGroupEditors, (item) => {\r\n if (item._columnFirst._id === subgroup._columnFirst._id && item._columnFirst._type === subgroup._columnFirst._type) {\r\n item._isSelected(subgroup._isSelected());\r\n }\r\n });\r\n if (group.GetSelectedCount()) {\r\n group._isSelected(true);\r\n } else {\r\n group._isSelected(false);\r\n }\r\n })\r\n }\r\n\r\n private InitGroupEditors(viewModel: SchedulerViewModel) {\r\n viewModel.Groups.sort(this.SortGroups);\r\n this.UpdateRow(this._commonFreeTime, true);\r\n _.forEach(viewModel.Groups, (groupEditor: GroupEditor) => {\r\n groupEditor._sortOrder.subscribe(() => {\r\n this.UpdateRow(this._freeCapacity);\r\n this._groupEditors.sort(this.SortGroups);\r\n\r\n });\r\n });\r\n\r\n this._groupEditors(viewModel.Groups);\r\n }\r\n\r\n OnGroupClick(group: GroupEditor) {\r\n group.ToggleSelection();\r\n _.forEach(group._subGroupEditors, (subGroup) => {\r\n this.ChangeSameSubgroups(subGroup);\r\n });\r\n\r\n this.UpdateRow(this._freeCapacity);\r\n this.UpdateRow(this._commonFreeTime, true, !!this._rePlanningData);\r\n group._selectedCount(group.GetSelectedCount());\r\n return true;\r\n }\r\n\r\n OnSubGroupClick(subGroup: SubGroupEditor) {\r\n const group = subGroup.GetGroup();\r\n group.UpdateSelectedCount();\r\n if (group.GetSelectedCount()) {\r\n group._isSelected(true);\r\n } else {\r\n group._isSelected(false);\r\n }\r\n this.ChangeSameSubgroups(subGroup);\r\n this.UpdateRow(this._freeCapacity);\r\n this.UpdateRow(this._commonFreeTime, true, !!this._rePlanningData);\r\n return true;\r\n }\r\n\r\n OnCreateEvent(data: ButtonCellEditor) {\r\n if (!data.IsDisabled) {\r\n data._linkedSubGroups = _.uniq(data._linkedSubGroups);\r\n this.Trigger(SCHEDULER_EVENTS.CREATE_SCREEN, data);\r\n }\r\n }\r\n\r\n OnReplan(start: moment.Moment) {\r\n this.Trigger(SCHEDULER_EVENTS.REPLAN_APPOINTMENT, {Start: start});\r\n }\r\n\r\n OnShowDefaultScreen(data, entityId: number, event, typeId?: number) {\r\n this.Trigger(SCHEDULER_EVENTS.OPEN_DEFAULT_SCREEN, {\r\n Id: data.Id,\r\n Event: event,\r\n EntityId: entityId,\r\n TypeId: typeId\r\n });\r\n }\r\n\r\n private ShowError(message: string) {\r\n new Notifier().Failed(message);\r\n }\r\n\r\n private ReturnToAgenda() {\r\n this.Trigger(SCHEDULER_EVENTS.RETURN_TO_AGENDA);\r\n }\r\n\r\n private SwitchToDefaultMode() {\r\n this.Trigger(SCHEDULER_EVENTS.SWITCH_TO_DEFAULT);\r\n }\r\n\r\n GetBottomColumnWidthClass(): string {\r\n let periodsLength = this._viewModel && this._viewModel.GetPeriods().length;\r\n return 'bottom__subcolumn--width-' + periodsLength;\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {ISchedulerParams} from \"./ISchedulerParams\";\r\nimport {SchedulerView} from \"Core/Components/Controls/Scheduler/Views/SchedulerView\";\r\n\r\nimport SchedulerTemplate from \"Core/Components/Controls/Scheduler/Templates/Scheduler.html\";\r\nimport AgendaConnection from \"Core/Components/Controls/Scheduler/Templates/AgendaConnection.html\";\r\nimport ReadingData from \"Core/Components/Controls/Scheduler/Templates/ReadingData.html\";\r\nimport UsersNotDefined from \"Core/Components/Controls/Scheduler/Templates/UsersNotDefined.html\";\r\nimport GlobalNotValid from \"Core/Components/Controls/Scheduler/Templates/GlobalNotValid.html\";\r\n\r\nexport class Scheduler extends Event {\r\n _entityId: number;\r\n _screenSubjectEntityId: number;\r\n _screenSubjectRecordId: number | null;\r\n _view: KnockoutObservable<SchedulerView>;\r\n\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _currentDate: KnockoutObservable<Date>;\r\n private _viewModel: SchedulerView;\r\n private _labels = LABELS;\r\n\r\n constructor(params: ISchedulerParams) {\r\n super();\r\n\r\n this._entityId = params.EntityId;\r\n this._screenSubjectEntityId = params.ScreenSubjectEntityId;\r\n this._screenSubjectRecordId = params.ScreenSubjectRecordId;\r\n this._isReady = ko.observable(false);\r\n this._currentDate = ko.observable(null);\r\n\r\n this._viewModel = new SchedulerView({\r\n EntityId: this._entityId,\r\n ScreenSubjectEntityId: this._screenSubjectEntityId,\r\n ScreenSubjectRecordId: this._screenSubjectRecordId,\r\n RePlanningData: params.RePlanningData,\r\n ControlId: params.ControlId\r\n });\r\n this._view = ko.observable(this._viewModel);\r\n }\r\n\r\n get SetupValid() {\r\n const view = this._view();\r\n return view.AgendaConnection() && view.ReadingData() && view.GlobalValid();\r\n }\r\n\r\n GetScreenSubjectRecordName() {\r\n return this._viewModel.GetScreenSubjectRecordName();\r\n }\r\n\r\n UpdateSchedulerView() {\r\n this._view().Show();\r\n }\r\n\r\n Render(node: HTMLElement) {\r\n ko.cleanNode(node);\r\n ko.applyBindings(this, node);\r\n }\r\n\r\n GetSchedulerTemplate() {\r\n return SchedulerTemplate;\r\n }\r\n\r\n AfterRender() {\r\n this._isReady(true);\r\n }\r\n\r\n GetInvalidSetupTemplate() {\r\n const view = this._view();\r\n\r\n if (!view.AgendaConnection()) {\r\n return AgendaConnection;\r\n }\r\n\r\n if (!view.ReadingData()) {\r\n return ReadingData;\r\n }\r\n\r\n if (!view.GlobalValid()) {\r\n return GlobalNotValid;\r\n }\r\n }\r\n\r\n GetAgendaConnectionTemplate() {\r\n return \"Core/Components/Controls/Scheduler/Templates/AgendaConnection\";\r\n }\r\n\r\n GetReadingDataTemplate() {\r\n return \"Core/Components/Controls/Scheduler/Templates/ReadingData\";\r\n }\r\n\r\n GetNotDefinedUsersTemplate() {\r\n return \"Core/Components/Controls/Scheduler/Templates/UsersNotDefined\";\r\n }\r\n\r\n GetGlobalNotValidTemplate() {\r\n return \"Core/Components/Controls/Scheduler/Templates/GlobalNotValid\";\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"scheduler scheduler--error text-center\\\"> <!--ko if: _viewModel._notValidGlobals().length === 1 --> Value of the <!-- ko text: _viewModel._notValidGlobals()[0] --><!--/ko --> global variable is not valid. <!--/ko --> <!--ko if: _viewModel._notValidGlobals().length > 1 --> Values of the following global variables are not valid: <!-- ko fastForEach: _viewModel._notValidGlobals --> <!-- ko text: $data --><!--/ko --><!-- ko if: ($index() === ($parent._viewModel._notValidGlobals().length - 1)) -->.<!--/ko --><!-- ko ifnot: ($index() === ($parent._viewModel._notValidGlobals().length - 1)) -->,<!--/ko --> <!--/ko --> <!--/ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"scheduler scheduler--error text-center\\\" data-bind=\\\"text: _labels.AGENDA_IS_NOT_AVAILABLE\\\"> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"scheduler scheduler--error text-center\\\" data-bind=\\\"text: _labels.AGENDA_IS_NOT_CONNECTED\\\"> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"u-min-h-40\\\"> <!--ko with: _component--> <!--ko if: SetupValid--> <!--ko template: {html: GetSchedulerTemplate, afterRender: _view().AfterRender.bind(_view())}--><!--/ko--> <!--/ko--> <!--ko ifnot: SetupValid--> <!--ko template: {html: $data.GetInvalidSetupTemplate.bind($data)}--><!--/ko--> <!--/ko--> <!--/ko--> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as $ from \"jquery\";\r\nimport * as moment from 'moment';\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {IControlParam, IScreen} from \"Core/Screens/IScreen\";\r\nimport {CONTROL_TYPES, FIELD_TYPES, TABLE_TYPES, DEFAULT_ICONS} from \"Core/Constant\";\r\n\r\nimport {ControlDataModel} from \"Core/ScreenManager/Models/ControlDataModel\";\r\nimport {RecordSpecsModel} from \"Core/ScreenManager/Models/RecordSpecsModel\";\r\nimport {ComplexControl} from \"Core/Controls/ComplexControl/ComplexControl\";\r\nimport {RequiredFieldModel} from \"../ComplexControl/Models/RequiredFieldModel\";\r\nimport {ButtonCellEditor, ILinkedModel} from \"Core/Components/Controls/Scheduler/Utils/ButtonCellEditor\";\r\n\r\nimport {LinkList} from \"../LinkList/LinkList\";\r\nimport {Agenda} from \"../Agenda/Agenda\";\r\n\r\nimport {Scheduler as SchedulerComponent} from \"Core/Components/Controls/Scheduler/Scheduler\";\r\nimport {NewRelationModel} from \"../LinkList/Models/NewRelationModel\";\r\nimport {EntityRelationsViewModel} from \"../LinkList/Models/LinkListRelationsViewModel\";\r\n\r\nimport ViewTemplate from \"Core/Controls/Scheduler/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/Scheduler/Templates/ToolBar.html\";\r\nimport {IControlValue} from \"../BaseControl/BaseControl\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {UserManager} from \"User/UserManager\";\r\nimport {SECURITY_LEVELS} from \"Core/Constants/SecurityLevels\";\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\n\r\nimport {TabPage} from \"../TabPage/TabPage\";\r\nimport {Tab} from \"../Tab/Tab\";\r\nimport {LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {UserVarsManager} from \"../../UserVarsManager/UserVarsManager\";\r\nimport SchedulerConfigJson from \"Core/Controls/Scheduler/Config/scheduler-config.json\"\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {PROPERTIES, SCHEDULER_EVENTS} from \"./Constants\";\r\nimport { IRePlanningData } from \"./Interfaces\";\r\n\r\n\r\nko.templates[\"Core/Controls/Scheduler/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/Scheduler/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/Scheduler/Templates/Design\"] = ComplexControl.designTemplate;\r\n\r\nexport class Scheduler extends ComplexControl {\r\n private _component: KnockoutObservable<SchedulerComponent>;\r\n private _isLinkListLoaded: boolean;\r\n private _isRePlanningMode: boolean;\r\n private screenSubjectEntityId: number;\r\n private screenSubjectRecordId: number;\r\n private _rePlanningData: IRePlanningData;\r\n private _isFromAgenda: boolean;\r\n private isDestroyed = true;\r\n private _isRefreshScreen: boolean;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, SchedulerConfigJson);\r\n \r\n this._isRePlanningMode = false;\r\n this._isFromAgenda = false;\r\n\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.Scheduler));\r\n this._isLinkListLoaded = false;\r\n this._requiredFields([\r\n new RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('STARTING', FIELD_TYPES.DateTime, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('DURATION', FIELD_TYPES.TimeSpan, TABLE_TYPES.Entity, null)\r\n ]);\r\n\r\n this.InitRequiredFields();\r\n this.ApplyProperties();\r\n\r\n this._component = ko.observable(null);\r\n }\r\n\r\n ApplyProperties(){\r\n this._isRefreshScreen = this.GeneralProperties.GetPropertyValue(PROPERTIES.REFRESH_SCREEN);\r\n }\r\n\r\n LoadData(rePlanningData?: IRePlanningData) {\r\n if (rePlanningData) {\r\n this._rePlanningData = rePlanningData;\r\n this._isRePlanningMode = true;\r\n } else if (!this._isFromAgenda) {\r\n this._rePlanningData = null;\r\n this._isRePlanningMode = false;\r\n }\r\n const screenType = this.GetForm().GetScreen().GetType();\r\n const filterBySubject = ScreenTypes[screenType] === ScreenTypes.ConsultScreen || ScreenTypes[screenType] === ScreenTypes.EditScreen;\r\n let screenSubjectEntityId = null,\r\n screenSubjectRecordId = null;\r\n\r\n if (filterBySubject) {\r\n screenSubjectEntityId = this.screenSubjectEntityId;\r\n screenSubjectRecordId = this.screenSubjectRecordId;\r\n }\r\n\r\n this._component(new SchedulerComponent({\r\n EntityId: this._model().EntityId,\r\n ScreenSubjectEntityId: screenSubjectEntityId,\r\n ScreenSubjectRecordId: screenSubjectRecordId,\r\n RePlanningData: this._rePlanningData,\r\n ControlId: this.GetControlId()\r\n }));\r\n this.BindEvents();\r\n this._isFromAgenda = false;\r\n }\r\n\r\n SetValue(value: IControlValue) {\r\n this.screenSubjectEntityId = value.SubjectEntityId;\r\n this.screenSubjectRecordId = value.SubjectRecordId;\r\n }\r\n\r\n SetRePlanMode(params: IRePlanningData) {\r\n this._isFromAgenda = true;\r\n this._isRePlanningMode = true;\r\n this._rePlanningData = params;\r\n this.LoadData(params);\r\n }\r\n\r\n private BindEvents() {\r\n this._component()._view().On(SCHEDULER_EVENTS.CREATE_SCREEN, this, eventArgs => this.ShowEditScreen(eventArgs.data));\r\n this._component()._view().On(SCHEDULER_EVENTS.OPEN_DEFAULT_SCREEN, this, eventArgs => this.ShowDefaultScreen(eventArgs.data.Id, eventArgs.data.Event, eventArgs.data.EntityId, eventArgs.data.TypeId));\r\n this._component()._view().On(SCHEDULER_EVENTS.RETURN_TO_AGENDA, this, eventArgs => this.ReturnToAgenda());\r\n this._component()._view().On(SCHEDULER_EVENTS.SWITCH_TO_DEFAULT, this, eventArgs => this.SwitchToDefaultMode());\r\n this._component()._view().On(SCHEDULER_EVENTS.REPLAN_APPOINTMENT, this, eventArgs => this.ReplanAppointment(eventArgs.data.Start));\r\n this._component()._view().On(SCHEDULER_EVENTS.SET_DATA, this, eventArgs => this.OnSetData(eventArgs.data.Date));\r\n }\r\n\r\n private SwitchToDefaultMode() {\r\n this._isRePlanningMode = false;\r\n this._rePlanningData = null;\r\n this.LoadData();\r\n }\r\n\r\n private OnSetData(date: string) {\r\n const screen = this._form && this._form.GetScreen();\r\n const agendas = screen.GetControlsByType(CONTROL_TYPES.Agenda);\r\n\r\n _.each(agendas, agenda => {\r\n UserVarsManager.Instance.SetAgendaDate(agenda.GetControlId(), date);\r\n });\r\n }\r\n\r\n private async ReplanAppointment(start: moment.Moment) {\r\n BlockUI.Block();\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n LockManager.Instance.TryLock(this.FieldModel.EntityId, this._rePlanningData.Id)\r\n .then(() => {\r\n screenManager.GetEditScreen({\r\n EntityId: this._component()._entityId,\r\n RecordId: this._rePlanningData.Id,\r\n TableTypeId: this._rePlanningData.TableTypeId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n const recordId = this._rePlanningData.Id;\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(this.FieldModel.EntityId, recordId));\r\n\r\n screen.On('RECORD_SAVED', this, () => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this._isRePlanningMode = false;\r\n this._rePlanningData = null;\r\n this.LoadData();\r\n });\r\n\r\n this.SetStartingValue(screen, start.format());\r\n\r\n screen.ShowInModal();\r\n })\r\n .fail(err => {\r\n LockManager.Instance.ReleaseLock(this.FieldModel.EntityId, this._rePlanningData.Id);\r\n let notifier = new Notifier();\r\n notifier.Warning(err.message);\r\n });\r\n });\r\n }\r\n\r\n private ReturnToAgenda() {\r\n if (this._rePlanningData.IsInTab) {\r\n const tabPage = this._rePlanningData.Agenda.GetParentControl() as TabPage;\r\n (tabPage.GetParentControl() as Tab).SetActiveTab(this._rePlanningData.TabIndex, {\r\n controlId: this._rePlanningData.Agenda.GetModel().Id,\r\n params: this._rePlanningData,\r\n action: 'ReturnFromScheduler'\r\n });\r\n this._isRePlanningMode = false;\r\n this._rePlanningData = null;\r\n } else {\r\n let isLoaded = false;\r\n $([document.documentElement, document.body]).animate({\r\n scrollTop: $(this._rePlanningData.Agenda.GetWrapper()).offset().top - 60\r\n }, 1000, () => {\r\n if (!isLoaded) {\r\n this._rePlanningData.Agenda.LoadData();\r\n this.SwitchToDefaultMode();\r\n isLoaded = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n private ShowDefaultScreen(id: number, evt, entityId?: number, typeId?: number) {\r\n const params = {\r\n EntityId: entityId ? entityId : this.GetForm().GetScreen().GetEntityId(),\r\n RecordId: id,\r\n IsOpenInModal: evt.ctrlKey ? evt.ctrlKey : this._form.GetScreen().IsInModal(),\r\n ShowInModal: evt.ctrlKey,\r\n Owner: this.GetForm().GetScreen(),\r\n TypeId: typeId\r\n };\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, params);\r\n }\r\n\r\n private get AgendaRequestData() {\r\n return {\r\n EntityId: this._component()._entityId,\r\n TableTypeName: 'Appointment'\r\n }\r\n }\r\n\r\n private LinkResources(screen: IScreen, resources: Array<ILinkedModel>) {\r\n let currentUser = UserManager.Instance.CurrentUser;\r\n let linkList = screen.GetControl(CONTROL_TYPES.LinkList) as LinkList;\r\n\r\n let screenSubjectRecordName = this._component().GetScreenSubjectRecordName();\r\n if (this._component()._screenSubjectEntityId && this._component()._screenSubjectRecordId && screenSubjectRecordName) {\r\n resources.push({\r\n GroupEntityId: this._component()._screenSubjectEntityId,\r\n ResourceId: this._component()._screenSubjectRecordId,\r\n Name: screenSubjectRecordName,\r\n TypeId: null,\r\n TypeName: null\r\n });\r\n }\r\n\r\n if (linkList) {\r\n _.forEach(resources, (user) => {\r\n let model: EntityRelationsViewModel;\r\n\r\n if (!user.GroupEntityId) {\r\n model = linkList.DataModel().UserRelation();\r\n } else {\r\n model = _.find(linkList.DataModel().Entities(), (entity) => {\r\n return user.GroupEntityId === entity.EntityId;\r\n });\r\n }\r\n\r\n if (model) {\r\n const record = _.find(model.Records(), (record) => {\r\n return record.Id === user.ResourceId;\r\n });\r\n\r\n if (!record) {\r\n let newRelation = new NewRelationModel();\r\n newRelation.Name = user.Name;\r\n newRelation.Id = user.ResourceId;\r\n newRelation.TypeName = user.TypeName;\r\n newRelation.IsMain = false;\r\n newRelation.Level = SECURITY_LEVELS.SHARED;\r\n linkList.AddRecord(user.ResourceId, model, newRelation);\r\n }\r\n }\r\n });\r\n\r\n const currentUserIsResource = _.any(resources, resource =>\r\n resource.GroupEntityId === null && resource.ResourceId === currentUser.Id\r\n );\r\n\r\n if (!currentUserIsResource) {\r\n linkList.EnablePlanner();\r\n }\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(el[0].parentElement, () => {\r\n this._isRePlanningMode = false;\r\n this._rePlanningData = null;\r\n this._component(null);\r\n this.isDestroyed = true;\r\n });\r\n if (this.isDestroyed) {\r\n this.isDestroyed = false;\r\n this.LoadData();\r\n }\r\n }\r\n\r\n private SetStartingValue(screen: IScreen, start: string) {\r\n const startingControl = screen.GetControlByFieldName('STARTING', CONTROL_TYPES.DateTime);\r\n let startingModel = new ControlDataModel();\r\n startingModel.Value = moment(start).clone().format();\r\n startingControl.SetDefaultValue({\r\n SubjectRecordId: this._component()._screenSubjectRecordId,\r\n SubjectEntityId: this._component()._screenSubjectEntityId,\r\n Data: startingModel,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n });\r\n }\r\n\r\n private SetDurationValue(screen: IScreen, duration: number) {\r\n const durationControl = screen.GetControlByFieldName('DURATION', CONTROL_TYPES.DateTime);\r\n let durationModel = new ControlDataModel();\r\n durationModel.Value = Agenda.ConvertDefaultAppointmentToDateTime(duration * 60);\r\n durationControl.SetDefaultValue({\r\n SubjectRecordId: this._component()._screenSubjectRecordId,\r\n SubjectEntityId: this._component()._screenSubjectEntityId,\r\n Data: durationModel,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n });\r\n }\r\n\r\n private SetEditScreenValues(screen: IScreen, data: ButtonCellEditor) {\r\n this.SetStartingValue(screen, data._period.Start);\r\n this.SetDurationValue(screen, data._period.Duration);\r\n }\r\n\r\n private async ShowEditScreen(data: ButtonCellEditor) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n BlockUI.Block();\r\n screenManager.GetEditScreen(this.AgendaRequestData)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n screen.ShowInModal();\r\n this.SetEditScreenValues(screen, data);\r\n\r\n screen.On('LINK_LIST_DATA_LOADED', this, () => {\r\n this.LinkResources(screen, data._linkedSubGroups);\r\n });\r\n\r\n screen.On('RECORD_SAVED', this, () => {\r\n const notifier = new Notifier($(this._el));\r\n if (this._isRefreshScreen){\r\n this._form && this._form.GetScreen().Refresh();\r\n } else {\r\n this._component().UpdateSchedulerView();\r\n }\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n });\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"scheduler-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-calendar-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport {ColorSelector as Component} from 'Core/Components/ColorSelector/ColorSelector';\r\n\r\nimport ToolBarTemplate from \"Core/Controls/ColorSelector/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ColorSelector/Templates/Design.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ColorSelector/Templates/HelpView.html\";\r\nimport ViewTemplate from \"Core/Controls/ColorSelector/Templates/View.html\";\r\nimport EditTemplate from \"Core/Controls/ColorSelector/Templates/Edit.html\";\r\nimport {RenderModes} from \"../../Constant\";\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport {ColorDescription} from \"../../Components/ColorSelector/ColorDescription\";\r\n\r\nko.templates[\"Core/Controls/ColorSelector/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ColorSelector/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/ColorSelector/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ColorSelector/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ColorSelector/Templates/Edit\"] = EditTemplate;\r\n\r\nexport class ColorSelector extends BaseControl {\r\n private _colorDescription: KnockoutObservable<ColorDescription>;\r\n\r\n private _component: Component;\r\n private _initialColor: string;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar) {\r\n this._colorDescription = ko.observable(null);\r\n this._component = new Component({\r\n\t\t\t\tLabel: null,\r\n\t\t\t\tLabelStyle: this.GetLabelStyle()\r\n });\r\n\r\n this.BindComponentEvents();\r\n }\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n GetValue() {\r\n return this._colorDescription() && this._colorDescription().Name;\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n this._initialColor = value.Data.Value;\r\n this._component.SetColor(this._initialColor);\r\n this._colorDescription(this._component.SelectedColorDescription);\r\n\r\n this.BindComponentEvents();\r\n }\r\n\r\n IsDataControl(): boolean {\r\n return true;\r\n }\r\n\r\n IsModified(): boolean {\r\n return this._initialColor !== this._component.SelectedColorName;\r\n }\r\n\r\n Deserialize() {\r\n const field = _.first(this._model().Fields);\r\n if (field) {\r\n if (!this._isReadonly) {\r\n return [`${field.EntityName}.${field.Name}`, this._component.SelectedColorName];\r\n } else {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this._isRequired && !this._component.SelectedColorName) {\r\n this._isValid(false);\r\n } else {\r\n this._isValid(true);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n\tprivate GetLabelStyle() {\r\n\t\treturn this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor]) &&\r\n\t\t\tthis.Properties && this.Properties.BackgroundColor\r\n\t\t\t? { backgroundColor: this.Properties.BackgroundColor }\r\n\t\t\t: null;\r\n\t}\r\n\r\n private BindComponentEvents() {\r\n this._component\r\n .On('COLOR_SET', this, () => this._colorDescription(this._component.SelectedColorDescription))\r\n .On('COLOR_RESET', this, () => this._colorDescription(this._component.SelectedColorDescription))\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"colorselector-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-paint-brush\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"colorselector-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"attr: { 'data-text': Label }, css: {'with-icon': _isIconVisible}\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"></div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"colorselector-control\\\" data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"color-selector-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <!-- ko if: _colorDescription() --> <input data-bind=\\\"value: _colorDescription().Name,\\r\\n\\t\\t\\t\\t\\t\\t style: {backgroundColor: _colorDescription().Color}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\"/> <!-- /ko --> <!-- ko ifnot: _colorDescription() --> <input autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control placeholder\\\"/> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"colorselector-control\\\" data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"color-selector-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko if: _colorDescription() --> <input data-bind=\\\"value: _colorDescription().Name,\\r\\n\\t\\t\\t\\t\\t\\t style: {backgroundColor: _colorDescription().Color},\\r\\n css: {'with-icon': _isIconVisible}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control color-selector\\\" disabled=\\\"disabled\\\"/> <!-- /ko --> <!-- ko ifnot: _colorDescription() --> <input data-bind=\\\"attr: {value: Label}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control placeholder\\\" disabled=\\\"disabled\\\"/> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"text-control\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\"> <div data-control-type=\\\"colorselector-control\\\" class=\\\"EditScreenView form-standart-control clearfix label-input\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition }, click: _help.ShowControlHelp.bind(_help, $data)\\\"> <!-- ko with: _component --> <label data-bind=\\\"style: $data._options.LabelStyle, text: $parent.Label, tooltip: $parent.DescriptionToolTip\\\"></label> <!-- ko template: {html: $data.GetTemplate.bind($data)} --> <!-- /ko --> <!-- /ko --> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"></i> </div> </div>\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport * as ko from \"knockout\";\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport 'Core/Controls/ButtonGoogleMaps/Templates/Edit.html';\r\nimport ViewTemplate from \"Core/Controls/ButtonGoogleMaps/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonGoogleMaps/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/ButtonGoogleMaps/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ButtonGoogleMaps/Templates/Design.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonGoogleMaps/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonGoogleMaps/Templates/View\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonGoogleMaps/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ButtonGoogleMaps/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonGoogleMaps extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp subFormControl\\\"> <i class=\\\"icon-pointer\\\"></i> Google Maps </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-sharp subFormControl\\\"> <i class=\\\"icon-pointer\\\"></i> Google Maps </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-sharp subFormControl\\\"> <i class=\\\"icon-pointer\\\"></i> Google Maps </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-sharp subFormControl\\\"> <i class=\\\"icon-pointer\\\"></i> Google Maps </a>\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport * as ko from \"knockout\";\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport 'Core/Controls/ButtonPrint/Templates/Edit.html';\r\n\r\nimport ViewTemplate from \"Core/Controls/ButtonPrint/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonPrint/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/ButtonPrint/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ButtonPrint/Templates/Design.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonPrint/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonPrint/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonPrint/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ButtonPrint/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonPrint extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn print-btn transition subFormControl\\\"> <i class=\\\"fa fa-print\\\"></i> Print </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn print-btn transition subFormControl\\\"> <i class=\\\"fa fa-print\\\"></i> Print </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn print-btn transition subFormControl\\\"> <i class=\\\"fa fa-print\\\"></i> Print </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn print-btn transition subFormControl\\\"> <i class=\\\"fa fa-print\\\"></i> Print </a>\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport * as ko from \"knockout\";\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\n\r\nimport HelpViewTemplate from \"Core/Controls/ButtonLinkedIn/Templates/HelpView.html\";\r\nimport ViewTemplate from \"Core/Controls/ButtonLinkedIn/Templates/View.html\";\r\nimport ToolbarTemplate from \"Core/Controls/ButtonLinkedIn/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ButtonLinkedIn/Templates/Design.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonLinkedIn/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonLinkedIn/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonLinkedIn/Templates/ToolBar\"] = ToolbarTemplate;\r\nko.templates[\"Core/Controls/ButtonLinkedIn/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonLinkedIn extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tClick(): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-dark subFormControl\\\"> <i class=\\\"fa fa-linkedin\\\" align=\\\"center\\\"></i> Linked In </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-dark subFormControl\\\"> <i class=\\\"fa fa-linkedin\\\" align=\\\"center\\\"></i> Linked In </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-dark subFormControl\\\"> <i class=\\\"fa fa-linkedin\\\" align=\\\"center\\\"></i> Linked In </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-dark subFormControl\\\"> <i class=\\\"fa fa-linkedin\\\" align=\\\"center\\\"></i> Linked In </a>\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport * as ko from \"knockout\";\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport 'Core/Controls/ButtonTree/Templates/Edit.html';\r\nimport ViewTemplate from \"Core/Controls/ButtonTree/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonTree/Templates/HelpView.html\";\r\nimport ToolbarTemplate from \"Core/Controls/ButtonTree/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ButtonTree/Templates/Design.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonTree/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonTree/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonTree/Templates/ToolBar\"] = ToolbarTemplate;\r\nko.templates[\"Core/Controls/ButtonTree/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonTree extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} \r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-tree\\\"></i> Tree </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-tree\\\"></i> Tree </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-tree\\\"></i> Tree </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-tree\\\"></i> Tree </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click\\\" class=\\\"btn red ui-icon-cancel subFormControl cancelBtn\\\" tabindex=\\\"-1\\\" id=\\\"cancelBtn\\\"> <i class=\\\"fa fa-close\\\"></i><span><!-- ko text: _labels.CANCEL --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport { BaseControl } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { SubForm } from 'Core/Screens/Forms/SubForm/SubForm'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonCancel/Templates/View.html'\r\nimport ToolbarTemplate from 'Core/Controls/ButtonCancel/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/ButtonCancel/Templates/Design.html'\r\nimport HelpViewTemplate from \"Core/Controls/ButtonCancel/Templates/HelpView.html\";\r\n\r\nko.templates['Core/Controls/ButtonCancel/Templates/ToolBar'] = ToolbarTemplate;\r\nko.templates['Core/Controls/ButtonCancel/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonCancel/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonCancel/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/ButtonCancel/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport class ButtonCancel extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tClick(): void {\r\n\r\n\t\tif (!this._help.IsHelpButtonPressed()) {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n screen.Trigger('CANCEL');\r\n screen.Trigger('CLOSE');\r\n }\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\" id=\\\"cancelBtn\\\"> <i class=\\\"fa fa-close\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn red ui-icon-cancel subFormControl cancelBtn\\\" id=\\\"cancelBtn\\\"> <i class=\\\"fa fa-close\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn red ui-icon-cancel subFormControl\\\" tabindex=\\\"-1\\\" id=\\\"cancelBtn\\\"> <i class=\\\"fa fa-close\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click, tooltip: {content: SaveBtnText}\\\" tabindex=\\\"-1\\\" class=\\\"btn green subFormControl saveButton\\\" id=\\\"saveBtn\\\"> <i class=\\\"fa fa-save\\\"></i><span><!-- ko text: _labels.SAVE --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonSave/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/ButtonSave/Templates/HelpView.html'\r\nimport ToolbarTemplate from 'Core/Controls/ButtonSave/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/ButtonSave/Templates/Design.html'\r\n\r\nko.templates['Core/Controls/ButtonSave/Templates/ToolBar'] = ToolbarTemplate;\r\nko.templates['Core/Controls/ButtonSave/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/ButtonSave/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonSave/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonSave/Templates/Design'] = DesignTemplate;\r\n\r\nexport class ButtonSave extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tget SaveBtnText(): any{\r\n\t\treturn this._form.GetScreen().IsEditScreen ? this._labels.CTRL_S_SAVE : null;\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (!this._help.IsHelpButtonPressed()) {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tscreen.Trigger('SAVE');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\" id=\\\"saveBtn\\\"> <i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn green subFormControl\\\" id=\\\"saveBtn\\\"> <i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green subFormControl saveBtn\\\" id=\\\"saveBtn\\\"> <i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click, enableAttr: _enabled, style: _style\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\" class=\\\"btn yellow subFormControl securityReset-button\\\"> <i class=\\\"fa fa-lock\\\"></i><span><!-- ko text: _labels.RESET_SECURITY --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as ConfirmationDialogEvents,\r\n\tTypes as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\n\r\nimport SecurityResetButtonConfig from \"Core/Controls/ButtonSecurityReset/Configs/security-reset-button-config.json\";\r\n\r\nimport HelpViewTemplate from \"Core/Controls/ButtonSecurityReset/Templates/HelpView.html\"\r\nimport ViewTemplate from \"Core/Controls/ButtonSecurityReset/Templates/View.html\"\r\nimport DesignTemplate from \"Core/Controls/ButtonSecurityReset/Templates/Design.html\"\r\nimport ToolbarTemplate from \"Core/Controls/ButtonSecurityReset/Templates/ToolBar.html\"\r\n\r\nko.templates[\"Core/Controls/ButtonSecurityReset/Templates/ToolBar\"] = ToolbarTemplate;\r\nko.templates[\"Core/Controls/ButtonSecurityReset/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonSecurityReset/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonSecurityReset/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonSecurityReset/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonSecurityReset extends BaseControl {\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, SecurityResetButtonConfig);\r\n\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tlet confirmationDialog = new ConfirmationDialog({\r\n\t\t\t\t\tText: \"Reset security?\",\r\n\t\t\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\t\t\tTextConfirm: 'Yes'\r\n\t\t\t\t});\r\n\t\t\t\tconfirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED,\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\teventArgs => {\r\n\t\t\t\t\t\tscreen.Trigger('SECURITY_RESET');\r\n\t\t\t\t\t});\r\n\t\t\t\tconfirmationDialog.Show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.Data) {\r\n\t\t\tthis._enabled(true);\r\n\t\t}\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn yellow subFormControl\\\"> <i class=\\\"fa fa-lock\\\"></i> <!-- ko text: _labels.RESET_SECURITY --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn yellow subFormControl\\\" data-bind=\\\"style: _style\\\"> <i class=\\\"fa fa-lock\\\"></i> <!-- ko text: _labels.RESET_SECURITY --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn yellow subFormControl\\\" data-bind=\\\"style: _style\\\"> <i class=\\\"fa fa-lock\\\"></i> <!-- ko text: _labels.RESET_SECURITY --><!-- /ko --> </a> \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {FollowUpRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel\";\r\nimport {FollowUpStore} from \"Core/Controls/ButtonFollowUp/Stores/FollowUpStore\";\r\nimport {FollowUpLifeStatuses} from \"Core/Controls/ButtonFollowUp/FollowUpLifeStatuses\";\r\nimport {LifeStatusesModel} from 'Core/Controls/ButtonFollowUp/Models/LifeStatusesModel';\r\nimport {FollowUpOptionModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpOptionModel\";\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport DesignTemplate from \"Core/Controls/ButtonFollowUp/Templates/Design.html\"\r\nimport EditTemplate from \"Core/Controls/ButtonFollowUp/Templates/Edit.html\"\r\nimport ViewTemplate from \"Core/Controls/ButtonFollowUp/Templates/View.html\"\r\nimport HelpViewTemplate from \"Core/Controls/ButtonFollowUp/Templates/HelpView.html\"\r\nimport LifeStatuses from \"Core/Controls/ButtonFollowUp/Templates/LifeStatuses.html\"\r\nimport {FollowUpParentRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpParentRecordModel \";\r\nimport {ActionCheckList} from \"../../Components/ActionCheckList/ActionCheckList\";\r\nimport { LifeStatusesGeneralModel } from \"./Models/LifeStatusesGeneralModel\";\r\nimport { LifeStatusSimpleModel } from \"Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel\";\r\n\r\n\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/LifeStatuses\"] = LifeStatuses;\r\n\r\nexport class ButtonFollowUp extends BaseControl {\r\n private _followUpRecord: FollowUpRecordModel;\r\n private _followUpLifeStatuses: FollowUpLifeStatuses;\r\n private _checkList: ActionCheckList;\r\n private _lifeStatuses: LifeStatusesModel;\r\n private _choosenLifeStatus: any;\r\n private _currentLifeStatus: any;\r\n private _disableReason: KnockoutObservable<string>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._disableReason = ko.observable(null);\r\n this._lifeStatuses = null;\r\n this._followUpLifeStatuses = null;\r\n this._choosenLifeStatus = null;\r\n this._currentLifeStatus = null;\r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n get IsEnabled() {\r\n return this._enabled();\r\n }\r\n\r\n private Init(): void {\r\n this._followUpRecord = null;\r\n }\r\n\r\n GetRecord(): FollowUpRecordModel {\r\n return this._followUpRecord;\r\n }\r\n\r\n SetRecord(value: FollowUpRecordModel) {\r\n this._followUpRecord = value;\r\n }\r\n\r\n Click() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n } else {\r\n var screen = this._form.GetScreen() as any;\r\n if (screen && (screen.IsConsultScreen || screen.ValidateData())) {\r\n if (this._followUpRecord && this._followUpRecord.LifeStatusId) {\r\n screen.Trigger('FOLLOWUP');\r\n return;\r\n }\r\n\r\n const actionSubject = screen.GetActionSubjectRecord();\r\n FollowUpStore.GetStatuses(actionSubject).then(result => this.ProcessingStatuses(result, screen));\r\n }\r\n }\r\n }\r\n\r\n ProcessingStatuses(result: LifeStatusesGeneralModel, screen: any) {\r\n if (result == null || !result.Child) {\r\n screen.Trigger('FOLLOWUP');\r\n return;\r\n }\r\n\r\n if (!this._followUpRecord) {\r\n this._followUpRecord = new FollowUpRecordModel();\r\n }\r\n\r\n if (result.Child.CurrentLifeStatus === null && result.Child.LifeStatuses.length === 1) {\r\n const firstStatus = result.Child.LifeStatuses[0];\r\n this._followUpRecord.LifeStatusId = firstStatus.Id;\r\n this._followUpRecord.LifeStatusSort = firstStatus.Sort;\r\n this._followUpRecord.LifeStatusName = firstStatus.Name;\r\n this._followUpRecord.LifeStatusNoActionNode = firstStatus.NoActionNode;\r\n this.GetForm().GetScreen().Trigger('FOLLOWUP');\r\n return;\r\n }\r\n\r\n this._followUpRecord.CurrentLifeStatus = result.Child.CurrentLifeStatus;\r\n\r\n this._lifeStatuses = result.Child;\r\n const showCheckLists = _.any(this._lifeStatuses.CheckLists, checkList => checkList.CheckItems.length > 0)\r\n && (!result.IsManyActions || result.Child.CurrentLifeStatus.MultipleActions);\r\n\r\n if (!result.IsManyActions && showCheckLists) {\r\n this.ShowCheckLists(result);\r\n return;\r\n }\r\n\r\n this._followUpLifeStatuses = new FollowUpLifeStatuses();\r\n if (result.IsManyActions && !result.Child.CurrentLifeStatus.MultipleActions) {\r\n result.Child.LifeStatuses = [result.Child.CurrentLifeStatus];\r\n this._followUpLifeStatuses.Caption = LABELS.EXIST_ACTIVE_ACTIONS;\r\n } else if (showCheckLists && result.Child.CurrentLifeStatus.MultipleActions) {\r\n this.ShowCheckLists(result);\r\n return;\r\n }\r\n\r\n const followUpOption = new FollowUpOptionModel();\r\n followUpOption.LifeStatuses = result.Child;\r\n\r\n let followUpParentOption: FollowUpOptionModel;\r\n if (result.Parent) {\r\n followUpParentOption = new FollowUpOptionModel();\r\n followUpParentOption.LifeStatuses = result.Parent;\r\n }\r\n\r\n if (this._lifeStatuses.LifeStatuses.length === 0) {\r\n new Notifier().Warning(NOTIFICATIONS.NEXT_STATUS_NOT_AVAILABLE);\r\n }\r\n\r\n\r\n this._followUpLifeStatuses.Init(followUpOption, followUpParentOption, null);\r\n this.ShowStandardFollowUp(result);\r\n }\r\n\r\n Close() {\r\n if (this._followUpLifeStatuses) {\r\n this._followUpLifeStatuses.Close();\r\n }\r\n\r\n if (this._checkList) {\r\n this._checkList.Close();\r\n }\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.RecordSpecsModel) {\r\n if (value.RecordSpecsModel.IsNewRecord) {\r\n this._enabled(false);\r\n this._disableReason(LABELS.NEW_RECORD);\r\n return;\r\n }\r\n if (value.RecordSpecsModel.IsDisabled) {\r\n this._enabled(false);\r\n this._disableReason(NOTIFICATIONS.RECORD_DISABLED);\r\n return;\r\n }\r\n }\r\n\r\n var condition = true;\r\n let disableReason = null;\r\n var screen = this._form.GetScreen();\r\n if (screen) {\r\n if (screen.GetActionSubjectRecord()) {\r\n condition = !screen.GetActionSubjectRecord().IsFollowUpDisabled;\r\n disableReason = screen.GetActionSubjectRecord().DisabledReason;\r\n } else if (screen.IsConsultScreen) {\r\n condition = false;\r\n }\r\n }\r\n\r\n if (value.Data && value.Data.Rights) {\r\n condition = condition && value.Data.Rights.IsEditingAllowed && value.Data.Rights.IsRecordSecurityOk && this.IsEditScreenExist;\r\n this._enabled(condition);\r\n this._disableReason(disableReason);\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n private ShowCheckLists(result: LifeStatusesGeneralModel) {\r\n const actionSubject = result.Child.ActionSubjectRecord;\r\n const checkLists = result.Child.CheckLists;\r\n\r\n if (!this._checkList) {\r\n this._checkList = new ActionCheckList({\r\n EntityId: actionSubject.EntityId,\r\n RecordId: actionSubject.RecordId,\r\n FollowUpMode: true,\r\n CurrentLifestatus: result.Child.CurrentLifeStatus\r\n });\r\n this._checkList.On('LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n this._followUpRecord.LifeStatusId = eventArgs.data.LifeStatus.Id || eventArgs.data.LifeStatus.LifeStatusId;\r\n this._followUpRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort || eventArgs.data.LifeStatus.LifeStatusSort;\r\n this._followUpRecord.LifeStatusName = eventArgs.data.LifeStatus.Name || eventArgs.data.LifeStatus.LifeStatusName;\r\n this._followUpRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode || eventArgs.data.LifeStatus.LifeStatusNoActionNode;\r\n this._followUpRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.RetireChildren = eventArgs.data.RetireChildren;\r\n this.GetForm().GetScreen().Trigger('FOLLOWUP');\r\n });\r\n }\r\n\r\n this._checkList.ProvideData(checkLists);\r\n this._checkList.Show();\r\n }\r\n\r\n private ShowStandardFollowUp(result: LifeStatusesGeneralModel) {\r\n this._followUpLifeStatuses.On('LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n this._followUpRecord.LifeStatusId = eventArgs.data.LifeStatus.Id;\r\n this._followUpRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort;\r\n this._followUpRecord.LifeStatusName = eventArgs.data.LifeStatus.Name;\r\n this._followUpRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode;\r\n this._followUpRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.RetireChildren = eventArgs.data.RetireChildren;\r\n this.GetForm().GetScreen().Trigger('FOLLOWUP');\r\n });\r\n\r\n this._followUpLifeStatuses.On('PARENT_LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n const parentRecord = new FollowUpParentRecordModel();\r\n parentRecord.ParentActionSubject = result.Parent.ActionSubjectRecord;\r\n parentRecord.CurrentLifeStatus = result.Parent.CurrentLifeStatus;\r\n parentRecord.LifeStatusId = eventArgs.data.LifeStatus.Id;\r\n parentRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort;\r\n parentRecord.LifeStatusName = eventArgs.data.LifeStatus.Name;\r\n parentRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode;\r\n parentRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.FollowUpParentRecord = parentRecord;\r\n this.GetForm().GetScreen().Trigger('FOLLOWUP');\r\n });\r\n\r\n this._followUpLifeStatuses.On('CHILD_LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n this._followUpRecord.LifeStatusId = eventArgs.data.LifeStatus.Id;\r\n this._followUpRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort;\r\n this._followUpRecord.LifeStatusName = eventArgs.data.LifeStatus.Name;\r\n this._followUpRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode;\r\n });\r\n\r\n this._followUpLifeStatuses.On('DONE',\r\n this,\r\n () => {\r\n this.GetForm().GetScreen().Trigger('FOLLOWUP_DONE');\r\n });\r\n\r\n this._followUpLifeStatuses.ShowInModal();\r\n }\r\n}","// Module\nvar code = \"<div style=\\\"display:inline-block\\\" data-bind=\\\"tooltip: {content: _disableReason()}\\\"> <button type=\\\"button\\\" data-bind=\\\"click: $data.Click.bind($data), visible: _enabled\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\" class=\\\"btn yellow edit-button subFormControl\\\"> <i class=\\\"fa fa-arrow-up\\\"></i><span><!-- ko text: _labels.FOLLOW_UP --><!-- /ko --></span> </button> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div style=\\\"display:inline-block\\\" data-bind=\\\"tooltip: {content: _disableReason()}\\\"> <button type=\\\"button\\\" data-bind=\\\"click: $data.Click.bind($data), enableAttr: _enabled\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\" class=\\\"btn yellow edit-button subFormControl\\\"> <i class=\\\"fa fa-arrow-up\\\"></i><span><!-- ko text: _labels.FOLLOW_UP --><!-- /ko --></span> </button> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn yellow edit-button subFormControl\\\"> <i class=\\\"fa fa-arrow-up\\\"></i><span><!-- ko text: _labels.FOLLOW_UP --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn yellow edit-button subFormControl\\\"> <i class=\\\"fa fa-arrow-up\\\"></i><span><!-- ko text: _labels.FOLLOW_UP --><!-- /ko --></span> </a> \";\n// Exports\nexport default code;","export const PROPERTIES = {\r\n QUERY_CONDITION: 'QueryCondition',\r\n SHOW_CONDITION_TOGGLE: 'ShowConditionToggle',\r\n AUTO_SELECT: 'AutoselectIfOneRecord',\r\n BACKGROUND_COLOR: 'BackgroundColor',\r\n COLOR: 'Color'\r\n}\r\n\r\nexport const PROPERTY_GROUPS = {\r\n LABEL: 'Label',\r\n TEXT_INPUT: 'TextInput'\r\n}\r\n\r\nexport const EVENTS = {\r\n DROPDOWN_VALUE_SELECTED: 'DROPDOWN_VALUE_SELECTED',\r\n REFRESH: 'REFRESH',\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport 'knockout-selectize';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam, ISearchScreenParam} from 'Core/Screens/IScreen'\r\nimport {DropdownDataStore, IGetDropdownControlDataRequestModel} from 'Core/Controls/Dropdown/Stores/DropDownDataStore'\r\nimport {DropdownItemModel} from 'Core/Controls/Dropdown/Models/DropdownListModel'\r\nimport {CONTROL_TYPES, FIELD_TYPES, FONT_STYLES, RenderModes, TABLE_TYPES} from 'Core/Constant';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {QueryConditionGroupModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {ConditionBuilder} from 'QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder';\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {EVENTS} from 'Core/Controls/Dropdown/Constants';\r\n\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\nimport {IDynamicFieldData, RecordStore} from \"Core/Common/Stores/RecordStore\";\r\nimport {SERVER_REQUEST_ERRORS} from \"Core/Common/Enums/ServerRequestErrors\";\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport { EVENTS as SCREEN_EVENTS } from 'Core/Screens/Events';\r\n\r\nimport type {NewRecordScreen} from \"LookupEditor/NewRecord/NewRecordScreen\";\r\nimport {NewRecordModel} from \"LookupEditor/NewRecord/Models/NewRecordModel\";\r\nimport {LookupModel} from \"LookupEditor/Store/Models/LookupModel\";\r\nimport {TablesStore} from \"LookupEditor/Store/TablesStore\";\r\nimport {LookupEditorStore} from \"LookupEditor/Store/LookupEditorStore\";\r\n\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\n\r\nimport DropdownConfig from 'Core/Controls/Dropdown/Configs/dropdown-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/Dropdown/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/Dropdown/Templates/HelpView.html';\r\nimport ToolBarTemplate from 'Core/Controls/Dropdown/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Dropdown/Templates/Design.html';\r\nimport EditTemplate from 'Core/Controls/Dropdown/Templates/Edit.html';\r\nimport DropdownTemplate from 'Core/Controls/Dropdown/Templates/Dropdown.html';\r\nimport SearchTemplate from 'Core/Controls/Dropdown/Templates/Search.html';\r\nimport {RecordSpecsModel} from \"../../ScreenManager/Models/RecordSpecsModel\";\r\nimport { TableSecurityStore } from '../TableSecurity/Stores/TableSecurityStore';\r\nimport { TABLE_SECURITY_WORDS } from 'Core/Constants/TableSecurityWords';\r\nimport { PROPERTIES, PROPERTY_GROUPS } from './Constants';\r\nimport { IScreenVariable } from 'Core/Screens/BaseScreen';\r\n\r\nko.templates['Core/Controls/Dropdown/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Dropdown/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Dropdown/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Dropdown/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Dropdown/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Dropdown/Templates/Dropdown'] = DropdownTemplate;\r\nko.templates['Core/Controls/Dropdown/Templates/Search'] = SearchTemplate;\r\n\r\nconst TYPE_FIELD_NAME = 'F_TYPE';\r\n\r\nexport class Dropdown extends BaseControl {\r\n private _value: number;\r\n private _originalValue: number;\r\n private _displayValue: string;\r\n private _subjectRecordId: number;\r\n private _dropdownPlugins: string[];\r\n private _labelStyle: KnockoutObservable<any>;\r\n private _textInputStyle: KnockoutObservable<any>;\r\n private _selectedItem: KnockoutObservable<DropdownItemModel>;\r\n private _selectedValueId: KnockoutObservable<number>;\r\n private _selectedValueLabel: KnockoutObservable<string>;\r\n private _initialValueLabel: KnockoutObservable<string>;\r\n private _items: KnockoutObservableArray<DropdownItemModel>;\r\n private _showSearchScreenButton: KnockoutObservable<boolean>;\r\n private _autoSelectIfOneRecord: KnockoutObservable<boolean>;\r\n private _searchScreenIfRecordsCount: number;\r\n private _searchScreen: SearchScreen;\r\n private _totalRecordsCount: number;\r\n private _conditions: QueryConditionGroupModel;\r\n private _searchTerm: string;\r\n private _allowInsert: KnockoutObservable<boolean>;\r\n private _clearAllowed: KnockoutObservable<boolean>;\r\n private _isCustomValueEntered: KnockoutObservable<boolean>;\r\n private _customPlaceholder: KnockoutObservable<string>;\r\n private _showConditionToggle: KnockoutObservable<boolean>;\r\n private _isEnableFilter: KnockoutObservable<boolean>;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _isDisableDropDown: KnockoutObservable<boolean>;\r\n private _isPreselect: KnockoutObservable<boolean>;\r\n private _label = LABELS;\r\n private _defaultPlaceholder = `${LABELS.SELECT_LABEL}...`;\r\n private _select: HTMLSelectElement;\r\n private _subjectRecordSpecsModel: RecordSpecsModel;\r\n private _newLookupRecordScreen: NewRecordScreen;\r\n private IsAllowInsert: KnockoutComputed<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, DropdownConfig);\r\n\r\n this._value = null;\r\n this._displayValue = null;\r\n this._showSearchScreenButton = ko.observable(false);\r\n this._selectedItem = ko.observable(null);\r\n this._selectedValueId = ko.observable(null);\r\n this._selectedValueLabel = ko.observable(null);\r\n this._initialValueLabel = ko.observable(null);\r\n this._allowInsert = ko.observable(false);\r\n this._clearAllowed = ko.observable(false);\r\n this._isCustomValueEntered = ko.observable(false);\r\n this._customPlaceholder = ko.observable(this._defaultPlaceholder);\r\n this._totalRecordsCount = 0;\r\n this._autoSelectIfOneRecord = ko.observable(false);\r\n this._showConditionToggle = ko.observable(this.FieldModel && this.FieldModel.HasFilter);\r\n this._labelStyle = ko.observable(null);\r\n this._textInputStyle = ko.observable(null);\r\n this._items = ko.observableArray([]);\r\n var searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n this._searchScreenIfRecordsCount = Number.isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n this.Init();\r\n this._conditions = null;\r\n this._searchTerm = '';\r\n this._isEnableFilter = ko.observable(false);\r\n this._isReady = ko.observable(true);\r\n this._isDisableDropDown = ko.observable(false);\r\n this._isPreselect = ko.observable(false);\r\n this._newLookupRecordScreen = null;\r\n\r\n this.ApplyProperties();\r\n this.InitDropdownPlugins();\r\n\r\n this.AddEvent(EVENTS.DROPDOWN_VALUE_SELECTED);\r\n this.AddEvent(EVENTS.REFRESH);\r\n\r\n this.IsAllowInsert = ko.computed(()=>{\r\n if (this._allowInsert()) {\r\n if (this._showConditionToggle()) {\r\n return true;\r\n }\r\n \r\n if (!this._conditions) {\r\n return true;\r\n }\r\n \r\n if (!(this._conditions.Items.length || this._conditions.ConditionGroups.length)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return false;\r\n });\r\n this.CheckCreateRecordAllowance();\r\n }\r\n\r\n GetDropdownTemplateName() {\r\n return 'Core/Controls/Dropdown/Templates/Dropdown';\r\n }\r\n\r\n GetSearchTemplateName() {\r\n return 'Core/Controls/Dropdown/Templates/Search';;\r\n }\r\n\r\n ApplyProperties() {\r\n\r\n let labelBackgroundColor = this.GeneralProperties.GetPropertyValue(PROPERTIES.BACKGROUND_COLOR, PROPERTY_GROUPS.LABEL);\r\n let labelColor = this.GeneralProperties.GetPropertyValue(PROPERTIES.COLOR, PROPERTY_GROUPS.LABEL);\r\n let inputBackgroundColor = this.GeneralProperties.GetPropertyValue(PROPERTIES.BACKGROUND_COLOR, PROPERTY_GROUPS.TEXT_INPUT);\r\n\r\n this._labelStyle({ backgroundColor: labelBackgroundColor, color: labelColor });\r\n this._textInputStyle({ backgroundColor: inputBackgroundColor });\r\n\r\n let condition = this.GeneralProperties.GetPropertyValue(PROPERTIES.QUERY_CONDITION);\r\n\r\n if(condition){\r\n var jsonObj = JSON.parse(condition);\r\n var conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n this._conditions = conditions;\r\n\r\n this._autoSelectIfOneRecord(this.GeneralProperties.GetPropertyValue(PROPERTIES.AUTO_SELECT));\r\n let showConditionToggle = this.GeneralProperties.GetPropertyValue(PROPERTIES.SHOW_CONDITION_TOGGLE);\r\n\r\n showConditionToggle = this._conditions?.HasAnyConditions && showConditionToggle;\r\n this._showConditionToggle(showConditionToggle);\r\n }\r\n \r\n this.ApplyLinkEditorStyles();\r\n\r\n if(this.HideIfCondition){\r\n if(this.IsRunTime){\r\n this._isVisible(false);\r\n }\r\n }\r\n }\r\n\r\n set AutoSelectIfOneRecord(value: boolean){\r\n this._autoSelectIfOneRecord (value);\r\n }\r\n\r\n private InitDropdownPlugins() {\r\n if(!this.IsRunTime) return;\r\n this._dropdownPlugins = ['dropdown_direction'];\r\n\r\n if (!this.FieldModel.AllowCustomValue) {\r\n this._dropdownPlugins.push('hidden_textfield');\r\n }\r\n }\r\n\r\n get DefaultFontWeight(){\r\n return FONT_STYLES.NORMAL;\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if (!this.IsLinkEditor || !this.FieldModel.HasLinkEditorVisibility) {\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = this.DefaultFontWeight;\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch (style.Name.toLowerCase()) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n });\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n private Init(): void {\r\n if (this.IsRunTime && this.Screen) {\r\n this.Screen.On(SCREEN_EVENTS.DATA_CHANGED, this, (eventArgs) => {\r\n let screenData: IScreenVariable = eventArgs.data.ScreenVariable;\r\n var screenVariableCondition = ConditionBuilder.GetScreenVariableCondition(screenData, this._conditions);\r\n if (screenVariableCondition.length > 0) {\r\n this.SetConditionScreenData(screenVariableCondition, screenData.Value);\r\n if (screenData.Field.FieldTypeName === FIELD_TYPES.Text) {\r\n this._searchTerm = screenData.Value;\r\n }\r\n this.LoadData(); \r\n }\r\n\r\n if (screenData && this.FieldModel.FilterByField != 0 && this.HasDynamicField(screenData.Field.Id)) {\r\n this.LoadData();\r\n }\r\n\r\n if (screenData && this.FieldModel.FilledById != 0 && this.HasDynamicField(screenData.Field.Id)) {\r\n this.UpdateDependsOnValue();\r\n }\r\n });\r\n }\r\n\r\n this.InitChangeEvent();\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.Data) {\r\n this._value = value.Data.Value === null && value.Data.DisplayValue ? -1 : +value.Data.Value;\r\n this._originalValue = this._value;\r\n this._displayValue = this.FormatValue(value.Data.LabelOriginalValue, value.Data.DisplayValue, value.Data.ValFieldTypeName);\r\n\r\n let dropDownItemModel = new DropdownItemModel({\r\n RecordId: this._value,\r\n Label: this._displayValue\r\n });\r\n\r\n\r\n if (!this.IsEditMode) {\r\n this.PreselectOption(dropDownItemModel);\r\n } else if (this._value === -1) {\r\n this._selectedItem(dropDownItemModel);\r\n }\r\n }\r\n\r\n this._isEnableFilter(!this.HasValue || !this._showConditionToggle());\r\n\r\n this._subjectRecordId = value.SubjectRecordId;\r\n this._subjectRecordSpecsModel = value.RecordSpecsModel;\r\n\r\n if (this.IsEditMode) {\r\n this.LoadData();\r\n }\r\n }\r\n\r\n get HasValue(): boolean{\r\n return this._value != 0 && this._value != -1;\r\n }\r\n\r\n ShowOptionCreate(data, esc) {\r\n return `<div class=\"create\">${this._label.ADD} <strong> ${esc(data.input)} </strong>…</div>`;\r\n }\r\n\r\n InitChangeEvent() {\r\n this._selectedItem.subscribe((newValue) => {\r\n var value = newValue ? String(newValue.RecordId) : null;\r\n this._value = newValue?.RecordId;\r\n this.UpdateVariable({ Field: this.GetFieldModel(), ControlType: CONTROL_TYPES.Dropdown }, value);\r\n });\r\n }\r\n\r\n ResetSelection() {\r\n this._isReady(false);\r\n\t\tthis._isCustomValueEntered(false);\r\n\t\tthis.RemoveCustomOption();\r\n const recordId = 0;\r\n\r\n this._selectedItem(null);\r\n this._selectedValueId(null);\r\n this._selectedValueLabel(null);\r\n this._value = null;\r\n\r\n this.GetForm().GetScreen().UpdateDependsOnValues(recordId, this.FieldModel.Id);\r\n this.Trigger(EVENTS.DROPDOWN_VALUE_SELECTED, {recordId: recordId});\r\n this._isReady(true);\r\n\r\n this._select = this._el.parentElement.querySelector(\"select.dropdownselect\");\r\n this._select && this._select.dispatchEvent(new Event(\"resizeTable\", {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n\r\n get ShowAddButton(): boolean {\r\n return this.FieldModel.ValTableType !== TABLE_TYPES.Sub && (this.FieldModel.ValTableType !== TABLE_TYPES.Lookup || this.FieldModel.AllowCreatingRecords) && !this.IsCdTable(this.FieldModel.ValTableName) && this.FieldModel.AllowInsert;\r\n }\r\n\r\n get HasFilter(){\r\n return this.FieldModel.HasFilter || this._conditions?.HasAnyConditions;\r\n }\r\n\r\n ShowSearchScreen() {\r\n let attachedFieldModel = this.FieldModel;\r\n if (attachedFieldModel) {\r\n let params: ISearchScreenParam = {\r\n DropDownFilterState: this._isEnableFilter(),\r\n HasLinkingCondition: this.HasFilter,\r\n ConditionToggler: this.HasFilter,\r\n EntityId: attachedFieldModel.ValTableId,\r\n SearchTerm: this._searchTerm,\r\n EntityType: attachedFieldModel.ValTableType,\r\n SearchFieldId: attachedFieldModel.ValFieldId,\r\n ControlId: this.GetControlId(),\r\n FieldId: this.FieldModel.Id,\r\n ScreenData: this.GetDynamicFieldsData(),\r\n ConditionValues: this.MapConditionValues(),\r\n ButtonAdd: this.ShowAddButton\r\n };\r\n\r\n if (this._form &&\r\n (this.FieldModel.ValTableType === TABLE_TYPES.Entity || this.FieldModel.ValTableType === TABLE_TYPES.Lookup || this.FieldModel.ValTableType === TABLE_TYPES.Sub)\r\n ) {\r\n params.SubjectEntityId = this.GetForm().GetScreen().GetEntityId();\r\n params.SubjectRecordId = this.GetForm().GetScreen().GetRecordId();\r\n }\r\n\r\n if (this.IsLinkEditor) {\r\n const linkEditor = this.Screen as any;\r\n\r\n params.LeftEntityId = linkEditor.GetEntityId();\r\n params.RightEntityId = linkEditor.GetRelatedEntityId();\r\n params.LeftRecordId = linkEditor.GetRecordId();\r\n params.RightRecordId = linkEditor.GetRelatedRecordId();\r\n params.KSeq = linkEditor.KSeq;\r\n }\r\n\r\n this._searchScreen = new SearchScreen(params);\r\n this._searchScreen.On('RECORD_SELECTED', this, (evtArgs) => this.ReplaceSelectedValue(evtArgs.data.RecordId));\r\n this._searchScreen.On('NEW_RECORD', this, () => this.NewTypeScreen());\r\n this._searchScreen.Show();\r\n }\r\n }\r\n\r\n /**\r\n * dispatch event to parents\r\n * @param $drDown {[Element]} -> jQuery element\r\n */\r\n OnDropDownOpen = ($drDown) => {\r\n $drDown[0].dispatchEvent(new Event(\"resizeTable\", {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n };\r\n\r\n OnInitialize = () => {\r\n setTimeout(() => {\r\n this._select && this._select.dispatchEvent(new Event(\"resizeTable\", {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }, 150);\r\n };\r\n\r\n /**\r\n * dispatch event to parents\r\n * @param $drDown {[Element]} -> jQuery element\r\n */\r\n OnDropDownClose = ($drDown) => {\r\n $drDown[0].dispatchEvent(new Event(\"onDropDownClose\", {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n };\r\n\r\n OnSelectControl(recordId) {\r\n recordId = +recordId;\r\n\r\n if (recordId !== -1) {\r\n this.RemoveCustomOption();\r\n }\r\n\r\n const selectedItem = _.find(this._items(), item => item.RecordId === recordId);\r\n this._selectedValueLabel(!!selectedItem ? selectedItem.Label : null);\r\n this.GetForm() && this.GetForm().GetScreen().UpdateDependsOnValues(recordId, this.FieldModel.Id, this._isPreselect());\r\n this.Trigger('DROPDOWN_VALUE_SELECTED', {recordId: recordId === -1 ? null : recordId});\r\n this._select && this._select.dispatchEvent(new Event(\"resizeTable\", {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n\r\n OnCustomSearchFocused() {\r\n if (this._selectedValueLabel()) {\r\n const initialLabel = this._selectedValueLabel();\r\n this._initialValueLabel(initialLabel);\r\n this._customPlaceholder(initialLabel);\r\n }\r\n\r\n this._selectedValueLabel(null);\r\n }\r\n\r\n OnCustomSearchBlur() {\r\n if (!this._selectedValueLabel()) {\r\n this._selectedValueLabel(this._initialValueLabel());\r\n }\r\n\r\n this._initialValueLabel(null);\r\n this._customPlaceholder(this._defaultPlaceholder);\r\n }\r\n\r\n OnCustomValueEntered(element, event) {\r\n if (event.target.value) {\r\n this._isCustomValueEntered(true);\r\n } else {\r\n this._isCustomValueEntered(false);\r\n }\r\n }\r\n\r\n AddCustomValue(text: string) {\r\n this.RemoveCustomOption();\r\n\r\n const newCustomItem = this.AddCustomOption(text);\r\n\r\n this._selectedItem(newCustomItem);\r\n this._selectedValueId(newCustomItem.RecordId);\r\n this._selectedValueLabel(newCustomItem.Label);\r\n\r\n return {text: text, value: -1};\r\n }\r\n\r\n GetSelectedItem() {\r\n return this._selectedItem();\r\n }\r\n\r\n private PreselectOption(value: DropdownItemModel) {\r\n const optionFromList = _.find(this._items(), item => item.RecordId === value.RecordId);\r\n\r\n if (!optionFromList) {\r\n this._items.push(value);\r\n }\r\n\r\n this._isPreselect(true);\r\n\r\n this._selectedItem(value);\r\n this._selectedValueId(value.RecordId);\r\n this._selectedValueLabel(value.Label ? value.Label : LABELS.EMPTY_VALUE);\r\n\r\n this._isPreselect(false);\r\n }\r\n\r\n private RemoveCustomOption() {\r\n const oldCustomValueIndex = _.findIndex(this._items(), item => item.RecordId === -1);\r\n\r\n if (oldCustomValueIndex !== -1) {\r\n this._items.splice(oldCustomValueIndex, 1);\r\n }\r\n }\r\n\r\n private AddCustomOption(text) {\r\n const newCustomItem = new DropdownItemModel();\r\n\r\n newCustomItem.RecordId = -1;\r\n newCustomItem.Label = text;\r\n\r\n this._items.push(newCustomItem);\r\n return newCustomItem;\r\n }\r\n\r\n private ReplaceSelectedValue(recordId: number) {\r\n const valFieldId = this.FieldModel.ValFieldId;\r\n BlockUI.Block();\r\n\r\n RecordStore.GetRecord({TableId: this.FieldModel.ValTableId, RecordId: recordId})\r\n .always(() => BlockUI.Unblock())\r\n .then((record: any) => {\r\n this._isCustomValueEntered(false);\r\n\r\n if (this._showSearchScreenButton()) {\r\n this._items([]);\r\n this._selectedItem(null);\r\n this._selectedValueId(null);\r\n this._selectedValueLabel(null);\r\n }\r\n\r\n const selected = _.find(record.Fields, (item: any) => item.FieldId === valFieldId);\r\n\r\n if (selected) {\r\n this.RemoveCustomOption();\r\n\r\n selected.FieldValue = this.FormatValue(selected.FieldValue, selected.FieldValue, selected.FieldTypeName);\r\n const itemTranslation = _.find(selected.FieldValueTranslations, (item: any) => item.Selected);\r\n selected.FieldValue = itemTranslation && itemTranslation.Value ? itemTranslation.Value : selected.FieldValue;\r\n\r\n const newItem = DropdownItemModel.Create(recordId, selected.FieldValue ? selected.FieldValue : LABELS.EMPTY_VALUE, true, true);\r\n this._items.push(newItem);\r\n this._selectedItem(newItem);\r\n this._selectedValueId(newItem.RecordId);\r\n this._selectedValueLabel(newItem.Label);\r\n\r\n this._form && this.GetForm().GetScreen().UpdateDependsOnValues(recordId, this.FieldModel.Id);\r\n this.Trigger('DROPDOWN_VALUE_SELECTED', {recordId: recordId});\r\n }\r\n })\r\n .fail((error) => {\r\n if (error.requestError === SERVER_REQUEST_ERRORS.NOT_FOUND) {\r\n const newItem = DropdownItemModel.Create(recordId, NOTIFICATIONS.RECORD_NOT_FOUND, true, true);\r\n this._selectedItem(newItem);\r\n this._selectedValueId(newItem.RecordId);\r\n this._selectedValueLabel(newItem.Label);\r\n } else if (error.requestError === SERVER_REQUEST_ERRORS.INTERNAL) {\r\n Notifier.Failed('Error applying created record');\r\n }\r\n });\r\n }\r\n\r\n private FormatValue(value: string, displayValue: string, type: string) {\r\n let result = displayValue;\r\n if (this.IsDate(type)) {\r\n const dateTimeFormat = FormatConverter.GetDateFormatFromFieldModel(\r\n {Type: type, FormatName: this.FieldModel.ValFieldFormatName},\r\n true\r\n );\r\n\r\n if (this.HasTime(type))\r\n value = FormatConverter.CorrectTimezone(value);\r\n\r\n result = moment(value).isValid() ? moment(value).format(dateTimeFormat) : value;\r\n } else if (_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], type)) {\r\n result = FormatConverter.LocalizeDecimalOrInteger(\r\n displayValue && this.FieldModel.ValFieldFormatName === 'Percentage'\r\n ? (Number(displayValue.replace(/[.,]/g, '.')) * 100).toFixed(\r\n this.FieldModel.ValFieldSize < 2 ? 0 : this.FieldModel.ValFieldSize - 2\r\n )\r\n : displayValue\r\n );\r\n }\r\n\r\n return result ? result : LABELS.EMPTY_VALUE;\r\n }\r\n\r\n private IsDate(fieldType: string) {\r\n return fieldType === FIELD_TYPES.Date ||\r\n fieldType === FIELD_TYPES.DateTime ||\r\n fieldType === FIELD_TYPES.Time ||\r\n fieldType === FIELD_TYPES.TimeSpan;\r\n }\r\n\r\n private HasTime(fieldType: string) {\r\n return fieldType === FIELD_TYPES.DateTime ||\r\n fieldType === FIELD_TYPES.Time;\r\n }\r\n\r\n private NewTypeScreen() {\r\n const attachedFieldModel = this.FieldModel;\r\n const typeScreen = new TypeScreen(attachedFieldModel.ValTableId);\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => Notifier.Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n if (this._searchScreen) {\r\n this._searchScreen.Cancel();\r\n }\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, attachedFieldModel.ValTableId, attachedFieldModel.AllowCreatingRecords);\r\n });\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n private async NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, entityId: number, allowCreatingRecords: boolean) {\r\n if (allowCreatingRecords) {\r\n this.NewLookupRecord(entityId);\r\n } else {\r\n this.NewEntityRecord(tableTypeId, kindId, exampleRecordId, entityId);\r\n }\r\n }\r\n\r\n private NewLookupRecord(valTableId: number) {\r\n if (!valTableId) {\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n TablesStore.GetLookup(valTableId)\r\n .then(async result => {\r\n if (!result.IsSuccessfull) {\r\n BlockUI.Unblock();\r\n Notifier.Warning(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n (await import(\"LookupEditor/NewRecord/NewRecordScreen\")).NewRecordScreen\r\n .GenerateScreen(GenericDeserialize(result.ResultObject, LookupModel))\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(newLookupRecordScreen => {\r\n\r\n newLookupRecordScreen.ShowInModal('newLookupRecord');\r\n\r\n newLookupRecordScreen.On('SAVE_DATA', this, eventArgs => this.AddLookupRecord(eventArgs.data));\r\n\r\n this._newLookupRecordScreen = newLookupRecordScreen;\r\n });\r\n }).fail(error => {\r\n BlockUI.Unblock();\r\n Notifier.Failed(error.message);\r\n });\r\n }\r\n\r\n private AddLookupRecord(newRecordModel: NewRecordModel) {\r\n BlockUI.Block();\r\n LookupEditorStore.AddRecord(newRecordModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n this._newLookupRecordScreen.Close();\r\n this._newLookupRecordScreen = null;\r\n\r\n const recordId = result;\r\n\r\n Notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n this.ReplaceSelectedValue(recordId);\r\n }).fail(error => Notifier.Failed(error.message));\r\n }\r\n\r\n private async NewEntityRecord(tableTypeId: number, kindId: number, exampleRecordId: number, entityId: number) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: true\r\n })\r\n .then((screen: EditScreen) => {\r\n if (!screen) {\r\n new Notifier($(this._el)).Warning(NOTIFICATIONS.EDIT_SCREEN_NOT_EXISTS);\r\n return;\r\n }\r\n\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.UseLinking = true;\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const recordId = eventArgs.data.RecordId;\r\n\r\n Notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n this.ReplaceSelectedValue(recordId);\r\n });\r\n\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n\r\n LoadData() {\r\n let attachedField = this.FieldModel;\r\n let getDataRequestModel: IGetDropdownControlDataRequestModel = {\r\n FieldId: attachedField.Id,\r\n RecordId: this._value,\r\n SubjectRecordId: this._subjectRecordId,\r\n SubjectTypeId: this._form && this._form.GetScreen().GetTableTypeId(),\r\n SubjectKindId: this._form && this._form.GetScreen().GetKindId(),\r\n SubjectStatusId: this._subjectRecordSpecsModel && this._subjectRecordSpecsModel.LifeStatusInfo ? this._subjectRecordSpecsModel.LifeStatusInfo.Id : 0,\r\n ScreenData: this._form && this.GetDynamicFieldsData(),\r\n ControlId: this.GetControlId(),\r\n IsEnableFilter: this._isEnableFilter(),\r\n ConditionValues: this.MapConditionValues()\r\n };\r\n\r\n const screen = this._form && this.GetForm().GetScreen();\r\n\r\n if (screen && screen.GetType() === ScreenTypes[ScreenTypes.LinkEditor]) {\r\n const linkEditor = screen as any;\r\n\r\n getDataRequestModel.LeftEntityId = linkEditor.GetEntityId();\r\n getDataRequestModel.RightEntityId = linkEditor.GetRelatedEntityId();\r\n getDataRequestModel.LeftRecordId = linkEditor.GetRecordId();\r\n getDataRequestModel.RightRecordId = linkEditor.GetRelatedRecordId();\r\n getDataRequestModel.KSeq = linkEditor.GetKseq();\r\n }\r\n\r\n this._clearAllowed(!(attachedField.IsRequired || attachedField.IsReadOnly || attachedField.IsSystem));\r\n\r\n this._isDataLoading(true);\r\n\r\n if (this.GetFieldModel().Name === TYPE_FIELD_NAME && !(this._form && this._form.GetScreen().IsLookupEditorNewRecord)) {\r\n const fieldEntityId = this.GetFieldModel().EntityId;\r\n const parentTypeId = this._form ?\r\n this.GetForm().GetScreen().GetEntityId() === fieldEntityId\r\n ? this._form.GetScreen().GetTableTypeId()\r\n : undefined\r\n : undefined;\r\n\r\n \r\n EntityTypesStore.GetTypes({\r\n EntityId: this.GetFieldModel().EntityId,\r\n EntityName: this.GetFieldModel().EntityName,\r\n ParentTypeId: parentTypeId,\r\n WithRoot: true, OnlyEnabled: true\r\n })\r\n .always(() => {\r\n this._isDataLoading(false);\r\n })\r\n .then((result) => {\r\n this._items([]);\r\n var selectedItem;\r\n _.each(result.TableTypes,\r\n (item) => {\r\n const label = item.TranslatedName ? item.TranslatedName : item.Name;\r\n\r\n var dropdownItem = new DropdownItemModel();\r\n dropdownItem.RecordId = item.Id;\r\n dropdownItem.Label = label ? label : LABELS.EMPTY_VALUE;\r\n dropdownItem.IsEnabled = item.IsEnabled;\r\n this._items.push(dropdownItem);\r\n });\r\n\r\n selectedItem = _.find(this._items(), item => item.RecordId === this._value);\r\n if (selectedItem && selectedItem.IsEnabled) {\r\n this.PreselectOption(selectedItem);\r\n }else{\r\n selectedItem = this._autoSelectIfOneRecord() &&\r\n this._items().length === 1 &&\r\n this._items()[0];\r\n\r\n this.PreselectOption(selectedItem);\r\n }\r\n });\r\n } else {\r\n DropdownDataStore.Get(getDataRequestModel)\r\n .always(() => {\r\n this._isDataLoading(false);\r\n })\r\n .then(data => {\r\n\r\n\t\t\t\t\tconst isDisableDropdown = data.Items.length === 0 && !this.GetFieldModel().AllowCustomValue;\r\n this._isDisableDropDown(isDisableDropdown);\r\n\r\n _.each(data.Items, (item) => {\r\n item.Label = this.FormatValue(item.Value, item.Label, item.Type);\r\n });\r\n\r\n this._items(data.Items);\r\n this._totalRecordsCount = data.RecordsCount;\r\n this._showSearchScreenButton(this._totalRecordsCount > this._searchScreenIfRecordsCount);\r\n const selectedItem = this._value === -1\r\n ? this._selectedItem()\r\n : _.find(data.Items, item => item.RecordId === this._value);\r\n\r\n if (selectedItem) {\r\n this.PreselectOption(selectedItem);\r\n } else {\r\n const selectedItem = this._autoSelectIfOneRecord() &&\r\n !this._showSearchScreenButton() &&\r\n data.Items.length === 1 &&\r\n data.Items[0];\r\n\r\n if (selectedItem) {\r\n this.PreselectOption(selectedItem);\r\n } else if (this._value) {\r\n let item = new DropdownItemModel();\r\n item.Label = NOTIFICATIONS.RECORD_NOT_FOUND;\r\n item.RecordId = this._value;\r\n\r\n this.PreselectOption(item);\r\n }\r\n }\r\n\r\n if (data.ErrorMessage) {\r\n Notifier.Failed(NOTIFICATIONS.ERROR_GETTING_DROPDOWN_DATA.replace('{fieldName}', this.FieldModel.Name));\r\n }\r\n }).fail(error => {\r\n Notifier.Failed(NOTIFICATIONS.ERROR_GETTING_DROPDOWN_DATA.replace('{fieldName}', this.FieldModel.Name));\r\n });\r\n }\r\n }\r\n\r\n CheckCreateRecordAllowance(){\r\n if(!this.IsEditMode){\r\n return;\r\n }\r\n\r\n let field = this.GetFieldModel();\r\n if(field && field.ValTableId){\r\n TableSecurityStore\r\n .IsUserAllowedTo(\r\n {\r\n TableId: this.GetFieldModel().ValTableId,\r\n SecurityWord: TABLE_SECURITY_WORDS.CREATE\r\n }).then((result)=>{\r\n this._allowInsert(result && (field.ValTableType === TABLE_TYPES.Entity || field.AllowCreatingRecords) && !this.IsCdTable(field.ValTableName) && !field.IsReadOnly && !field.IsSystem);\r\n });\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._select = el[0].parentElement.querySelector(\"select.dropdownselect\");\r\n }\r\n\r\n SetOptionDisable(option, item) {\r\n if (!item) {\r\n ko.applyBindingsToNode(option, {disable: ko.observable(true)}, item);\r\n } else {\r\n ko.applyBindingsToNode(option, {disable: !item.IsEnabled && this.GetFieldModel().Name === TYPE_FIELD_NAME ? ko.observable(true) : ko.observable(false)}, item);\r\n }\r\n }\r\n\r\n Deserialize() {\r\n var field = _.first(this._model().Fields);\r\n var item = this._selectedItem();\r\n if (field && item) {\r\n if (!this._isReadonly) {\r\n const id = +this._selectedValueId() === -1 ? null : this._selectedValueId();\r\n const customValue = this.FieldModel.AllowCustomValue && this._selectedItem() && this._selectedItem().Label;\r\n return [`${field.EntityName}.${field.Name}`, id, customValue];\r\n } else {\r\n return [`${field.EntityName}.${field.Name}`, null, null];\r\n }\r\n } else {\r\n return [`${field.EntityName}.${field.Name}`, null, null];\r\n }\r\n }\r\n\r\n IsModified(): boolean {\r\n if (super.IsModified()) return true;\r\n\r\n if (this._selectedItem()) {\r\n return this._originalValue !== this._selectedItem().RecordId || this._displayValue !== this._selectedValueLabel();\r\n }\r\n\r\n return !!this._originalValue;\r\n }\r\n\r\n IsValid(): boolean {\r\n const isTypeField = this.GetFieldModel().Name === TYPE_FIELD_NAME;\r\n const isNotForNewRecordScreen = !(this._form && this._form.GetScreen().IsLookupEditorNewRecord);\r\n\r\n if (this._isRequired && !this._selectedItem()) {\r\n this._isValid(false);\r\n } else if (isTypeField && isNotForNewRecordScreen) {\r\n const typeSelected = !!this._selectedItem();\r\n this._isValid(typeSelected);\r\n } else {\r\n this._isValid(true);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n GetValue() {\r\n if (this._selectedItem()) {\r\n return this._selectedItem().RecordId === -1 || isNaN(this._selectedItem().RecordId) ? null : this._selectedItem().RecordId;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n GetDisplayValue(): string {\r\n if (this._selectedItem()) {\r\n return this._selectedItem().Label;\r\n }\r\n return null;\r\n }\r\n\r\n Dispose() {\r\n super.Dispose();\r\n if (this._searchScreen) {\r\n this._searchScreen.Close();\r\n }\r\n }\r\n\r\n DisableFilter() {\r\n this._isEnableFilter(!this._isEnableFilter());\r\n this.LoadData()\r\n }\r\n\r\n private UpdateDependsOnValue() {\r\n\r\n this.CalculateDependOnValue()\r\n .then(dependsOnValue=>{\r\n let val = Number(dependsOnValue);\r\n if(!isNaN(val)){\r\n this._value = val;\r\n this.LoadData();\r\n }\r\n }); \r\n }\r\n\r\n private IsCdTable(tableName: string) {\r\n return tableName && tableName.startsWith('CD_');\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"dropdown-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-list\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-control-type=\\\"dropdown-control\\\" data-bind=\\\"blockElement: $data._isDataLoading,\\r\\n\\t \\t\\t\\tattr: { 'data-control-position': LabelPosition },\\r\\n\\t \\t\\t\\tstyle: {display: _display},\\r\\n\\t \\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView search-placeholder select-wrapper form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko if: _selectedItem --> <!-- ko with: _selectedItem --> <div data-bind=\\\"style: $data._textInputStyle,\\r\\n\\t\\t\\t\\t\\ttext: $data.Label || $parent.Label,\\r\\n\\t\\t\\t\\t\\tcss: {placeholder: !$data.Label || $data.Label === $parent._label.EMPTY_VALUE, 'with-icon': $parent._isIconVisible},\\r\\n\\t\\t\\t\\t\\tclass: $data.Label && $data.Label !== $parent._label.EMPTY_VALUE ? $parent.FieldModel.ValFieldFormatName : 'None',\\r\\n\\t\\t\\t\\t\\tattr: { 'data-text': $parent.Label }\\\" class=\\\"textarea-control form-control control record-field\\\" disabled=\\\"disabled\\\" data-value=\\\"true\\\"> </div> <!-- /ko --> <!-- /ko --> <span class=\\\"search-caret\\\"></span> <!-- ko ifnot: _selectedItem --> <div data-bind=\\\"style: $data._textInputStyle,\\r\\n\\t \\t\\t\\t\\tattr: {'data-text': $data.Label || $parent.Label}\\\" class=\\\"textarea-control form-control control record-field\\\" disabled=\\\"disabled\\\"></div> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"dropdown-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition, 'title': Label }\\\" class=\\\"FormDesignerView select-wrapper label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"style: $data._textInputStyle, text: Label\\\" class=\\\"textarea-control form-control control record-field\\\"></div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"dropdown-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition, 'title': Label }\\\" class=\\\"FormDesignerView select-wrapper label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"style: $data._textInputStyle, text: Label, css: {'with-icon': _isIconVisible}\\\" class=\\\"textarea-control form-control control record-field\\\"></div> <span class=\\\"search-caret\\\"></span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-control-type=\\\"dropdown-control\\\" data-bind=\\\"blockElement: $data._isDataLoading, \\r\\n attr: {'data-control-position': LabelPosition},\\r\\n\\t\\t\\t\\tstyle: {display: _display},\\r\\n\\t\\t\\t\\tcss: {'search-placeholder': _showSearchScreenButton(), 'has-error': !_isValid(), 'full-width-control': FieldModel.FullWidth},\\r\\n\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"EditScreenView label-input form-standart-control dropdown-container clearfix\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> </label> <!-- ko if: _showSearchScreenButton --> <!--ko template: {name: GetSearchTemplateName }--><!--/ko--> <!-- /ko --> <!-- ko ifnot: _showSearchScreenButton --> <!--ko template: {name: GetDropdownTemplateName }--><!--/ko--> <!-- /ko --> </div> <!-- /ko --> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _isReady --> <div class=\\\"dropdown-wraper\\\" data-bind=\\\"css: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'with-reset-button': _clearAllowed() && _selectedItem() || _showConditionToggle(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'with-reset-button-and-condition': _clearAllowed() && _selectedItem() && _showConditionToggle(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'allowInsert-btn': IsAllowInsert }\\\"> <!--ko ifnot: GetCombinedReadOnly() || _isDisableDropDown() --> <select data-bind=\\\"\\r\\n\\t\\t\\tselectize: _items,\\r\\n\\t\\t\\tvalue: _selectedValueId,\\r\\n\\t\\t\\toptionsText: 'Label',\\r\\n\\t\\t\\toptionsValue: 'RecordId',\\r\\n\\t\\t\\tobject: _selectedItem,\\r\\n\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\tdropdownParent: 'body',\\r\\n\\t\\t\\t\\tdropdownDirection: 'auto',\\r\\n\\t\\t\\t\\tonDropdownOpen: OnDropDownOpen,\\r\\n\\t\\t\\t\\tonDropdownClose: OnDropDownClose,\\r\\n\\t\\t\\t\\tonInitialize: OnInitialize,\\r\\n\\t\\t\\t onChange: OnSelectControl.bind($data),\\r\\n\\t\\t\\t create: $data.FieldModel.AllowCustomValue && AddCustomValue.bind($data),\\r\\n\\t\\t\\t createOnBlur: true,\\r\\n\\t\\t\\t copyClassesToDropdown: true,\\r\\n\\t\\t\\t plugins: $data._dropdownPlugins,\\r\\n\\t\\t\\t placeholder: _label.SELECT_LABEL + '...',\\r\\n\\t\\t\\t render: {option_create: ShowOptionCreate.bind($data)}\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tattr: {\\r\\n 'disabled': GetCombinedReadOnly(),\\r\\n 'required': _isRequired,\\r\\n 'tabindex': GetCombinedReadOnly() ? -1 : 1\\r\\n }\\\" class=\\\"form-control control record-field drop-down dropdownselect customDropDown\\\"></select> <!--/ko--> <!--ko if: GetCombinedReadOnly() || _isDisableDropDown() --> <div data-val-search=\\\"\\\" data-bind=\\\"attr: {'disabled': GetCombinedReadOnly(),\\r\\n\\t\\t\\t\\t\\t\\t'required': $data._isRequired,\\r\\n\\t\\t\\t\\t\\t\\t'tabindex': GetCombinedReadOnly() ? -1 : 1},\\r\\n\\t\\t\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly() || _isDisableDropDown()}\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--ko if: _selectedItem--> <span data-bind=\\\"text: _selectedItem().Label\\\"></span> <!--/ko--> <!--ko ifnot: _selectedItem--> <span class=\\\"no-record\\\" data-bind=\\\"text: _label.NO_RECORD\\\"></span> <!--/ko--> </div> <!--/ko--> <div class=\\\"dropdown-controls\\\"> <!-- ko if: _showConditionToggle --> <a data-bind=\\\"click: $data.DisableFilter.bind($data), css: { 'toggle-cross' : _isEnableFilter }\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-add green\\\"> <i class=\\\"fa fa-filter fa-times\\\"></i> </a> <!-- /ko --> <!-- ko if: IsAllowInsert --> <a data-bind=\\\"click: $data.NewTypeScreen.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-add blue\\\"><i class=\\\"fa fa-plus\\\"></i></a> <!-- /ko --> <a data-bind=\\\"visible: _clearAllowed() && _selectedItem(),\\r\\n\\t\\t\\t\\t\\t\\t click: $data.ResetSelection.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-reset red\\\"><i class=\\\"fa fa-times\\\"></i></a> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _isReady --> <div class=\\\"dropdown-wraper input-group\\\"> <!--ko if: $data.FieldModel.AllowCustomValue--> <input type=\\\"text\\\" data-bind=\\\"\\r\\n\\t\\t \\t\\tvalue: _selectedValueLabel,\\r\\n\\t\\t \\t\\tevent: {change: AddCustomValue.bind($data, $data._selectedValueLabel()),\\r\\n\\t\\t\\t\\t\\t\\tfocus: OnCustomSearchFocused, blur: OnCustomSearchBlur, keyup: OnCustomValueEntered},\\r\\n\\t\\t \\t\\tstyle: $data._textInputStyle,\\r\\n\\t\\t \\t\\tattr: {'disabled': GetCombinedReadOnly(), 'required': $data._isRequired, 'tabindex': GetCombinedReadOnly() ? -1 : 1,\\r\\n\\t\\t \\t\\t 'placeholder': _customPlaceholder()},\\r\\n\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly()},\\r\\n\\t\\t\\t\\thasFocus: $data.IsFocused\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--/ko--> <!--ko ifnot: $data.FieldModel.AllowCustomValue--> <!--ko ifnot: GetCombinedReadOnly() --> <div data-val-search=\\\"True\\\" data-bind=\\\"style: $data._textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\thasFocus: $data.IsFocused,\\r\\n\\t\\t\\t\\t\\t\\tevent: { click: $data.ShowSearchScreen.bind($data)},\\r\\n\\t\\t\\t\\t\\t\\tenterKey: $data.ShowSearchScreen.bind($data),\\r\\n\\t\\t\\t\\t\\t\\tattr: {'disabled': GetCombinedReadOnly(), 'required': $data._isRequired, 'tabindex': GetCombinedReadOnly() ? -1 : 1},\\r\\n\\t\\t\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly()}\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--ko if: _selectedItem--> <span data-bind=\\\"text: _selectedItem().Label\\\"></span> <!--/ko--> <!--ko ifnot: _selectedItem--> <span class=\\\"selectText\\\" data-bind=\\\"text: _label.SELECT_LABEL + '...'\\\"></span> <!--/ko--> </div> <!--/ko--> <!--ko if: GetCombinedReadOnly() --> <div data-val-search=\\\"\\\" data-bind=\\\"attr: {'disabled': GetCombinedReadOnly(),\\r\\n\\t\\t\\t\\t\\t\\t'required': $data._isRequired,\\r\\n\\t\\t\\t\\t\\t\\t'tabindex': GetCombinedReadOnly() ? -1 : 1},\\r\\n\\t\\t\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly()}\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--ko if: _selectedItem--> <span data-bind=\\\"text: _selectedItem().Label\\\"></span> <!--/ko--> <!--ko ifnot: _selectedItem--> <span class=\\\"selectText\\\" data-bind=\\\"text: _label.SELECT_LABEL + '...'\\\"></span> <!--/ko--> </div> <!--/ko--> <!--/ko--> <div class=\\\"dropdown-controls\\\"> <!--ko ifnot: GetCombinedReadOnly() --> <span data-bind=\\\"event: { click: $data.ShowSearchScreen.bind($data)}\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> <!--/ko--> <!--ko if: GetCombinedReadOnly() --> <span data-bind=\\\"css: { 'disabled': GetCombinedReadOnly() }\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> <!--/ko--> <!-- ko if: (IsEditScreen || IsLinkEditor) && _showConditionToggle --> <a data-bind=\\\"click: $data.DisableFilter.bind($data), css: { 'toggle-cross' : _isEnableFilter }\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-add green\\\"> <i class=\\\"fa fa-filter fa-times\\\"></i> </a> <!-- /ko --> <!-- ko if: IsAllowInsert() --> <a data-bind=\\\"click: $data.NewTypeScreen.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-add blue\\\"><i class=\\\"fa fa-plus\\\"></i></a> <!-- /ko --> <!-- ko if: _clearAllowed() && (_selectedItem() || _isCustomValueEntered()) --> <a data-bind=\\\"click: $data.ResetSelection.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-reset red\\\"><i class=\\\"fa fa-times\\\"></i></a> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import {Request, IRequestOptions} from \"Core/Common/Request\";\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {URL} from \"Core/Common/Url\";\r\nimport {GenericDeserialize} from \"libs/cerialize\";\r\nimport {MultiSelectListModel} from \"Core/Controls/MultiSelect/Models/MultiSelectListModel\";\r\nimport { IDynamicFieldData } from \"Core/Common/Stores/RecordStore\";\r\n\r\nexport interface IGetMultiSelectControlDataRequestModel {\r\n ControlId: number;\r\n FieldId: number;\r\n RecordIds: Array<number>;\r\n ScreenVariables?: any;\r\n LeftEntityId?: number;\r\n RightEntityId?: number;\r\n LeftRecordId?: number;\r\n RightRecordId?: number;\r\n ScreenData?: Array<IDynamicFieldData>;\r\n}\r\n\r\nexport class MultiSelectDataStore {\r\n static GetOptions(requestData: IGetMultiSelectControlDataRequestModel): P.Promise<any> {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.GET_MULTISELECT_CONTROL_DATA,\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params: requestData\r\n };\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n var test = GenericDeserialize<MultiSelectListModel>(data.ResultObject, MultiSelectListModel);\r\n\r\n deferredResult.resolve(test);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"multi-select-control clearfix\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }, style: {display: _display}\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko if: _anySelectedItems --> <div data-bind=\\\"style: $data._textInputStyle, css: {'with-icon': _isIconVisible},\\\" class=\\\"multi-options-list textarea-control\\\"> <span class=\\\"search-caret\\\"></span> <!--ko foreach: SelectedItems --> <span data-bind=\\\"text: $parent.FormatValue(Label)\\\" class=\\\"multi-option-item\\\"></span> <!--/ko--> </div> <!--/ko--> <!-- ko ifnot: _anySelectedItems --> <div data-bind=\\\"style: $data._textInputStyle, css: {'with-icon': _isIconVisible}, attr: {'data-text': $data._labels.SELECT_VALUE_LABEL}\\\" class=\\\"empty multi-options-list textarea-control\\\"> <span class=\\\"search-caret\\\"></span> </div> <!--/ko--> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {MultiSelectListModel, ItemModel} from 'Core/Controls/MultiSelect/Models/MultiSelectListModel';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {\r\n IGetMultiSelectControlDataRequestModel,\r\n MultiSelectDataStore\r\n} from 'Core/Controls/MultiSelect/Stores/MultiSelectDataStore';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\n\r\nimport ViewTemplate from 'Core/Controls/MultiSelect/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/MultiSelect/Templates/HelpView.html';\r\nimport EditTemplate from 'Core/Controls/MultiSelect/Templates/Edit.html';\r\nimport ToolBarTemplate from 'Core/Controls/MultiSelect/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/MultiSelect/Templates/Design.html';\r\nimport DropDownContentTemplate from 'Core/Controls/MultiSelect/Templates/DropDownContent.html';\r\nimport {CONTROL_TYPES, FIELD_TYPES, FONT_STYLES, RenderModes, TABLE_TYPES} from 'Core/Constant';\r\nimport {SearchScreen, ISelectedRecord} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\nimport {EditScreen} from \"Core/Screens/EditScreen/EditScreen\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\nimport {FieldFormat} from \"Core/Common/FieldFormat\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport { EVENTS as SCREEN_EVENTS } from 'Core/Screens/Events';\r\n\r\nimport MultiSelectConfig from 'Core/Controls/MultiSelect/Configs/multiselect-config.json';\r\n\r\nimport {GeneralProperties} from \"../../GeneralProperties/GeneralProperties\";\r\nimport {ConditionBuilder} from \"../../../QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder\";\r\nimport {GenericDeserialize} from \"../../../libs/cerialize\";\r\nimport {QueryConditionGroupModel} from \"../Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup\";\r\nimport { IScreenVariable } from 'Core/Screens/BaseScreen';\r\n\r\nko.templates['Core/Controls/MultiSelect/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/MultiSelect/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/MultiSelect/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/MultiSelect/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/MultiSelect/Templates/Design'] = DesignTemplate;\r\n\r\nexport class MultiSelect extends BaseControl {\r\n Items: KnockoutObservableArray<ItemModel>;\r\n SelectedItems: KnockoutObservableArray<ItemModel>;\r\n private _searchScreenIfRecordsCount: number;\r\n private _separator: string;\r\n private _labelStyle: KnockoutObservable<any>;\r\n private _textInputStyle: KnockoutObservable<any>;\r\n private _showSearchScreen: KnockoutObservable<boolean>;\r\n private _searchScreen: SearchScreen;\r\n private _value: Array<number>;\r\n private _originalValue: Array<number>;\r\n private _totalRecordsCount: number;\r\n private _anySelectedItems: KnockoutComputed<boolean>;\r\n private _tooltip: JBoxDropDown;\r\n private _showMultiSelectText: KnockoutObservable<boolean>;\r\n private _conditions: QueryConditionGroupModel;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, MultiSelectConfig);\r\n \r\n this.Items = ko.observableArray([]);\r\n this._separator = ';';\r\n this.SelectedItems = ko.observableArray([]);\r\n this._labelStyle = ko.observable(null);\r\n this._textInputStyle = ko.observable(null);\r\n this._showSearchScreen = ko.observable(false);\r\n this._value = [];\r\n this._originalValue = [];\r\n this._totalRecordsCount = 0;\r\n this._showMultiSelectText = ko.observable(true);\r\n this._conditions = null;\r\n\r\n this._anySelectedItems = ko.computed(() => this.SelectedItems().length > 0, this);\r\n\r\n this.Init();\r\n this.ApplyProperties();\r\n\r\n var searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n this._searchScreenIfRecordsCount = Number.isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n }\r\n\r\n ApplyProperties() {\r\n\r\n if (this.Properties) {\r\n if (this.Properties.Label) {\r\n var labelStyle = {backgroundColor: null, color: null};\r\n _.each(this.Properties.Label.Properties, (property: any) => {\r\n if (property.BackgroundColor) {\r\n labelStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n\r\n if (property.Color) {\r\n labelStyle.color = property.Color;\r\n }\r\n });\r\n\r\n this._labelStyle(labelStyle);\r\n }\r\n if (this.Properties.TextInput) {\r\n var textInputStyle = {backgroundColor: null};\r\n _.each(this.Properties.TextInput.Properties, (property: any) => {\r\n if (property.BackgroundColor) {\r\n textInputStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n });\r\n\r\n this._textInputStyle(textInputStyle);\r\n }\r\n\r\n //Condition\r\n if (this.Properties.Condition) {\r\n let condition = _.find(this.Properties.Condition.Properties, (item) => item.hasOwnProperty('QueryCondition')) as any;\r\n\r\n if (condition && condition.QueryCondition) {\r\n let jsonObj = JSON.parse(condition.QueryCondition);\r\n let conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n this._conditions = conditions;\r\n }\r\n }\r\n }\r\n if (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n this.ApplyLinkEditorStyles();\r\n }\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if (!this.FieldModel.HasLinkEditorVisibility) {\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = FONT_STYLES.NORMAL; //default fontWeight\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch (style.Name.toLowerCase()) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n })\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n ShowListSearchScreen(model, evt: MouseEvent) {\r\n if (this._totalRecordsCount > this._searchScreenIfRecordsCount) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n\r\n let attachedFieldModel = this.FieldModel;\r\n\r\n if (attachedFieldModel && attachedFieldModel.ValTableId) {\r\n this._searchScreen = new SearchScreen({\r\n EntityId: attachedFieldModel.ValTableId,\r\n ControlId: this.GetControlId(),\r\n ScreenData: this._form && this.GetDynamicFieldsData(),\r\n SearchTerm: '',\r\n ButtonAdd: attachedFieldModel.ValTableType !== TABLE_TYPES.Lookup,\r\n MultiSelectMode: true,\r\n\t\t\t\t\tSelectedRecordIds: _.map(this.SelectedItems(), (item) => item.RecordId)\r\n });\r\n\r\n this._searchScreen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n if (this._value.indexOf(evtArgs.data.RecordId) < 0) {\r\n this._value.push(evtArgs.data.RecordId);\r\n }\r\n this.LoadData(this._value);\r\n });\r\n\r\n this._searchScreen.On('RECORDS_SELECTED', this, (eventArgs) => {\r\n let selectedRecordIds = eventArgs.data.Ids;\r\n\r\n if (!_.isEqual([...this._value].sort(), selectedRecordIds.sort())) {\r\n this._value = selectedRecordIds;\r\n this.LoadData(this._value);\r\n }\r\n });\r\n }\r\n\r\n this._searchScreen.On('NEW_RECORD', this, (eventArgs) => {\r\n const typeScreen = new TypeScreen(attachedFieldModel.ValTableId);\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n\r\n typeScreen.On('TYPES_FOUND', this, (eventArgs) => this._searchScreen.Cancel());\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n this.NewRecord(typeId, kindId, exampleRecordId, attachedFieldModel.ValTableId);\r\n });\r\n\r\n typeScreen.Show();\r\n });\r\n this._searchScreen.Show();\r\n } else {\r\n if (this.Items().length > 0 && !this.GetCombinedReadOnly()) {\r\n\r\n if (!this._tooltip) {\r\n const target: any = evt.currentTarget;\r\n this._tooltip = new JBoxDropDown({\r\n bindComponent: this,\r\n target: target,\r\n otherOptions: {\r\n addClass: \"multi-select-dropdown\",\r\n attach: undefined,\r\n pointer: \"\",\r\n isolateScroll: true,\r\n content: DropDownContentTemplate as any,\r\n position: {\r\n x: \"right\",\r\n y: \"bottom\"\r\n },\r\n height: 'auto',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n maxHeight: 200\r\n },\r\n bindTarget: target,\r\n bindOnCreate: true\r\n });\r\n }\r\n\r\n this._tooltip.Toggle();\r\n }\r\n }\r\n }\r\n\r\n private Init() {\r\n if(this.IsRunTime){\r\n this.Screen.On(SCREEN_EVENTS.DATA_CHANGED, this, (eventArgs) => {\r\n let screenData: IScreenVariable = eventArgs.data.ScreenVariable;\r\n let screenVariableCondition = ConditionBuilder.GetScreenVariableCondition(screenData, this._conditions);\r\n if (screenVariableCondition.length > 0) {\r\n this.SetConditionScreenData(screenVariableCondition, screenData.Value);\r\n this.LoadData([]);\r\n }\r\n });\r\n\r\n this.InitChangeEvent();\r\n }\r\n }\r\n\r\n private async NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, entityId: number) {\r\n \r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: true\r\n })\r\n .then((screen: EditScreen) => {\r\n if (!screen) {\r\n new Notifier($(this._el)).Warning(NOTIFICATIONS.EDIT_SCREEN_NOT_EXISTS);\r\n return;\r\n }\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.UseLinking = true;\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const recordId = eventArgs.data.RecordId;\r\n\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n this._value.push(recordId);\r\n\r\n this.SetValue({\r\n SubjectEntityId: this.FieldModel.ValTableId,\r\n SubjectRecordId: recordId,\r\n RecordSpecsModel: null\r\n });\r\n });\r\n\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.Data && value.Data.Value) {\r\n this._value = this.ParseOptionsValue(value.Data.Value);\r\n this._originalValue = _.map(this._value, val => val);\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Edit) {\r\n this.LoadData(this._value);\r\n } else {\r\n if (value.Data && (value.Data.DisplayValue || value.Data.DisplayValue === \"\")) {\r\n var selectedItemsDisplayValue = this.ParseOptionsLabels(value.Data.DisplayValue);\r\n var selectedItems = [];\r\n _.each(selectedItemsDisplayValue,\r\n item => {\r\n var selectedItem = new ItemModel();\r\n selectedItem.Label = item;\r\n selectedItems.push(selectedItem);\r\n });\r\n this.SelectedItems(selectedItems);\r\n if (selectedItems.length == 0) {\r\n this._showMultiSelectText(true);\r\n } else {\r\n this._showMultiSelectText(false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n InitChangeEvent() {\r\n this.SelectedItems.subscribe((newValue) => {\r\n var ids = _.map(newValue, (value) => value.RecordId);\r\n this.UpdateVariable({ Field: this.GetFieldModel(), ControlType: CONTROL_TYPES.MultiSelect }, ids.join(';'));\r\n });\r\n }\r\n\r\n FormatValue(value: string) {\r\n if (!value) {\r\n return this._labels.EMPTY_VALUE;\r\n }\r\n\r\n if (_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], this.FieldModel.ValFieldTypeName)) {\r\n return FormatConverter.LocalizeDecimalOrInteger(\r\n this.FieldModel.ValFieldFormatName === FieldFormat.PERCENTAGE\r\n ? (Number(value.replace(/[.,]/g, '.')) * 100).toFixed(\r\n this.FieldModel.ValFieldSize < 2 ? 0 : this.FieldModel.ValFieldSize - 2\r\n )\r\n : value\r\n );\r\n }\r\n\r\n return value;\r\n }\r\n\r\n ParseOptionsValue(selectedOptionsString: string): Array<number> {\r\n if (selectedOptionsString) {\r\n return selectedOptionsString.split(this._separator)\r\n .map(id => parseInt(id));\r\n }\r\n\r\n return [];\r\n }\r\n\r\n ParseOptionsLabels(selectedOptionsString: string): Array<string> {\r\n if (selectedOptionsString) {\r\n return selectedOptionsString.split(this._separator);\r\n } else if (selectedOptionsString === \"\") {\r\n return [\"\"];\r\n }\r\n\r\n return [];\r\n }\r\n\r\n private LoadData(recordIds: Array<number>) {\r\n var attachedField: any = _.first(this._model().Fields);\r\n if (this._el) {\r\n BlockUI.Block({Target: this._el});\r\n }\r\n\r\n const requestData: IGetMultiSelectControlDataRequestModel = {\r\n FieldId: attachedField.Id,\r\n RecordIds: recordIds,\r\n ControlId: this.GetControlId(),\r\n ScreenData: this._form && this.GetDynamicFieldsData(),\r\n };\r\n\r\n const screen = this._form && this.GetForm().GetScreen();\r\n\r\n if (screen && screen.GetType() === ScreenTypes[ScreenTypes.LinkEditor]) {\r\n const linkEditor = screen as any;\r\n\r\n requestData.LeftEntityId = linkEditor.GetEntityId();\r\n requestData.RightEntityId = linkEditor.GetRelatedEntityId();\r\n requestData.LeftRecordId = linkEditor.GetRecordId();\r\n requestData.RightRecordId = linkEditor.GetRelatedRecordId();\r\n }\r\n\r\n MultiSelectDataStore.GetOptions(requestData)\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then((dataModel: MultiSelectListModel) => {\r\n this._totalRecordsCount = dataModel.RecordsCount;\r\n _.each(dataModel.Items,\r\n item => {\r\n item.IsSelected(recordIds.indexOf(item.RecordId) >= 0);\r\n });\r\n this.Items(dataModel.Items);\r\n this.UpdateSelectedItems();\r\n\r\n if (this._totalRecordsCount > this._searchScreenIfRecordsCount) {\r\n this._showSearchScreen(true);\r\n } else {\r\n this._showSearchScreen(false);\r\n }\r\n }).fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n SelectedOptionsToString(): string {\r\n var selectedItems = _.filter(this.Items(), item => {\r\n return item.IsSelected()\r\n });\r\n var value = '';\r\n _.each(selectedItems, item => {\r\n value = value + item.RecordId + this._separator;\r\n });\r\n return value;\r\n }\r\n\r\n Deserialize() {\r\n let field = _.first(this._model().Fields);\r\n\r\n if (field) {\r\n if (!this.GetCombinedReadOnly()) {\r\n let result = this.SelectedOptionsToString();\r\n return [`${field.EntityName}.${field.Name}`, result];\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n IsValid(): boolean {\r\n var selectedItems = _.filter(this.Items(), item => {\r\n return item.IsSelected()\r\n });\r\n if (this._isRequired) {\r\n this._isValid(selectedItems && selectedItems.length > 0);\r\n } else {\r\n this._isValid(true);\r\n }\r\n\r\n return this._isValid();\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n SelectItem(item: ItemModel) {\r\n item.IsSelected(true);\r\n this.UpdateSelectedItems();\r\n this._value.push(item.RecordId);\r\n }\r\n\r\n RemoveItem(item: ItemModel) {\r\n item.IsSelected(false);\r\n this.UpdateSelectedItems();\r\n this._value.splice(this._value.indexOf(item.RecordId), 1);\r\n }\r\n\r\n UpdateSelectedItems() {\r\n var selectedItems = [];\r\n _.each(this.Items(),\r\n item => {\r\n if (item.IsSelected()) {\r\n selectedItems.push(item);\r\n }\r\n });\r\n this.SelectedItems(selectedItems);\r\n if (selectedItems.length == 0) {\r\n this._showMultiSelectText(true);\r\n } else {\r\n this._showMultiSelectText(false);\r\n }\r\n }\r\n\r\n GetValue(): any {\r\n let result = this.SelectedOptionsToString();\r\n return result;\r\n }\r\n\r\n IsModified(): boolean {\r\n let rightDifference = _.difference(this._value, this._originalValue);\r\n let leftDifference = _.difference(this._originalValue, this._value);\r\n\r\n return super.IsModified() || rightDifference.length > 0 || leftDifference.length > 0;\r\n\r\n }\r\n}\r\n","// Module\nvar code = \"<div class=\\\"multi-select-control clearfix\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition, 'title': Label }, style: {display: _display}\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko if: _anySelectedItems --> <div data-bind=\\\"style: $data._textInputStyle\\\" class=\\\"multi-options-list textarea-control\\\"> <span class=\\\"search-caret\\\"></span> <!--ko foreach: SelectedItems --> <span data-bind=\\\"text: Label\\\" class=\\\"multi-option-item\\\"></span> <!--/ko--> </div> <!--/ko--> <!-- ko ifnot: _anySelectedItems --> <div data-bind=\\\"style: $data._textInputStyle, attr: {'data-text': $data.Label}\\\" class=\\\"empty multi-options-list textarea-control\\\"> <span class=\\\"search-caret\\\"></span> </div> <!--/ko--> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: {'data-control-position': LabelPosition},\\r\\n\\t\\t\\t\\tstyle: {display: _display},\\r\\n\\t\\t\\t\\tcss: {'search-placeholder': _showSearchScreen,\\r\\n\\t\\t\\t\\t\\t\\t'has-error': !_isValid(),\\r\\n\\t\\t\\t\\t\\t\\t'full-width-control': FieldModel.FullWidth,\\r\\n\\t\\t\\t\\t\\t\\tdisabled: !_showSearchScreen() && !Items().length > 0 || GetCombinedReadOnly()},\\r\\n\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"EditScreenView label-input form-standart-control dropdown-container multiselect clearfix\\\"> <!-- ko if: (!_isValid || Label)--> <label data-bind=\\\"style: _labelStyle\\\" class=\\\"multi-select-label\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <!-- ko if: !_isValid--> <i data-bind=\\\"tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> <!-- /ko --> </label> <!-- /ko --> <div class=\\\"multi-select-container\\\" data-bind=\\\"css: {'edit-screen__multi-select-dropdown': !_showSearchScreen()}\\\"> <div data-bind=\\\"attr: { 'data-val-search': _showSearchScreen() ? 'True' : 'False'},\\r\\n\\t\\t\\t\\t\\t\\tcss: { disabled: !_showSearchScreen() && !Items().length > 0 || GetCombinedReadOnly() }\\\" class=\\\"form-control multi-options-list textarea-control\\\"> <!-- ko foreach: SelectedItems --> <span class=\\\"multi-option-item\\\"> <!--ko ifnot: $parent.GetCombinedReadOnly()--> <a data-bind=\\\"click: $parent.RemoveItem.bind($parent, $data), preventBubble: ['click']\\\" href=\\\"javascript:;\\\"><i class=\\\"fa fa-times-circle\\\" aria-hidden=\\\"true\\\"></i></a> <!-- /ko --> <span><!--ko text: $parent.FormatValue(Label) --><!-- /ko --></span> </span> <!-- /ko --> <!-- ko if: _showMultiSelectText() --> <span class=\\\"selectText\\\" data-bind=\\\"text: !_showSearchScreen() && !Items().length > 0 || GetCombinedReadOnly() ? $data._labels.NO_RECORDS_TO_SELECT : $data._labels.SELECT_LABEL + '...'\\\"></span> <!-- /ko --> </div> <!-- ko if: _showSearchScreen() --> <!-- ko if: GetCombinedReadOnly() --> <span class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\" data-bind=\\\"css: { disabled: GetCombinedReadOnly() },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr : {'disabled' : GetCombinedReadOnly()}\\\"></span> <!-- /ko --> <!-- ko ifnot: GetCombinedReadOnly() --> <span class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\" data-bind=\\\"click: $data.ShowListSearchScreen.bind($data)\\\"></span> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: _showSearchScreen() --> <span class=\\\"btn default dropdown-search-icon\\\" data-bind=\\\"click: $data.ShowListSearchScreen.bind($data)\\\"><i class=\\\"fa fa-caret-down\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-ellipsis-v\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"multiSelect-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition, 'title': Label }\\\" class=\\\"FormDesignerView select-wrapper label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <span class=\\\"search-caret\\\"></span> <div data-bind=\\\"style: $data._textInputStyle, text: Label, css: {'with-icon': _isIconVisible}\\\" class=\\\"textarea-control form-control control record-field\\\"></div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-control-type=\\\"checkbox-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition }, style: { display: _display, backgroundColor: _backgroundColor }, click: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\" class=\\\"EditScreenView clearfix form-standart-control label-input checkbox-control\\\"> <div class=\\\"clearfix checker\\\" data-bind=\\\"css: {'has-error': !_isValid()}\\\"> <label class=\\\"checker-container\\\"> <div data-bind=\\\"style: _labelStyle, text: Label, tooltip: DescriptionToolTip\\\" class=\\\"checkbox-label-name\\\"></div> <span class=\\\"checkedBox\\\" data-bind=\\\"css: {checked: IsChecked}\\\"> <input tabindex=\\\"1\\\" data-bind=\\\"hasFocus: IsFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tchecked: IsChecked,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: { disabled: GetCombinedReadOnly()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tattr : {'disabled' : GetCombinedReadOnly()}\\\" type=\\\"checkbox\\\" class=\\\"control record-field\\\"/> </span> </label> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\n\r\nimport EditTemplate from 'Core/Controls/Checkbox/Templates/Edit.html';\r\nimport ViewTemplate from 'Core/Controls/Checkbox/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/Checkbox/Templates/HelpView.html';\r\nimport ToolBarTemplate from 'Core/Controls/Checkbox/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Checkbox/Templates/Design.html';\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport {CONTROL_TYPES, FONT_STYLES} from \"../../Constant\";\r\nimport Config from 'Core/Controls/Checkbox/Configs/config.json';\r\n\r\nko.templates['Core/Controls/Checkbox/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Checkbox/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Checkbox/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Checkbox/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Checkbox/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Checkbox extends BaseControl {\r\n\tprivate _checked: KnockoutObservable<boolean>;\r\n\tprivate _originalValue: boolean;\r\n\tprivate _labelStyle: KnockoutObservable<any>;\r\n\tprivate _textInputStyle: KnockoutObservable<any>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, Config);\r\n\t\tthis._checked = ko.observable(false);\r\n\t\tthis._labelStyle = ko.observable(null);\r\n\t\tthis._textInputStyle = ko.observable(null);\r\n\t\tthis.Init();\r\n\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\t//BackgroundColor\r\n\t\t\tif (this.Properties.BackgroundColor) {\r\n\t\t\t\tconst backgroundColor = this.Properties.BackgroundColor;\r\n\t\t\t\tthis._backgroundColor(backgroundColor);\r\n\t\t\t}\r\n\r\n\t\t\t//Label\r\n\t\t\tif (this.Properties.Label) {\r\n\t\t\t\tvar labelStyle = {backgroundColor: null, color: null};\r\n\t\t\t\t_.each(this.Properties.Label.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\tlabelStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (property.Color) {\r\n\t\t\t\t\t\tlabelStyle.color = property.Color;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._labelStyle(labelStyle);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.Properties) {\r\n\t\t\t//TextInput\r\n\t\t\tif (this.Properties.TextInput) {\r\n\t\t\t\tvar textInputStyle = {backgroundColor: null};\r\n\t\t\t\t_.each(this.Properties.TextInput.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\ttextInputStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._textInputStyle(textInputStyle);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n\t\t\tthis.ApplyLinkEditorStyles();\r\n\t\t}\r\n\r\n\t\tif(this.HideIfCondition){\r\n if(this.IsRunTime){\r\n this._isVisible(false);\r\n }\r\n }\r\n\t}\r\n\r\n\tprivate ApplyLinkEditorStyles() {\r\n\t\tif(!this.FieldModel.HasLinkEditorVisibility){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst labelStyle = {\r\n\t\t\tcolor: null,\r\n\t\t\tfontWeight: null,\r\n\t\t\tfontStyle: null,\r\n\t\t\ttextDecoration: null\r\n\t\t};\r\n\t\tif (this.FieldModel.FontColor) {\r\n\t\t\tlabelStyle.color = this.FieldModel.FontColor;\r\n\t\t}\r\n\t\tlabelStyle.fontWeight = FONT_STYLES.NORMAL;\r\n\r\n\t\tif (this.FieldModel.FontStyles) {\r\n\t\t\t_.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n\t\t\t\tswitch ( style.Name.toLowerCase() ) {\r\n\t\t\t\t\tcase FONT_STYLES.BOLD:\r\n\t\t\t\t\t\tlabelStyle.fontWeight = FONT_STYLES.BOLD;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FONT_STYLES.UNDERLINE:\r\n\t\t\t\t\t\tlabelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FONT_STYLES.ITALIC:\r\n\t\t\t\t\t\tlabelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis.Extend(labelStyle, this._labelStyle());\r\n\t\tthis._labelStyle(labelStyle);\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tvar isChecked = value.Data ? value.Data.Value === 'True'\r\n\t\t\t|| value.Data.Value === true : false;\r\n\t\tthis._originalValue = isChecked;\r\n\r\n\t\tthis._checked(isChecked);\r\n\r\n\t\tthis._checked.subscribe(() => \r\n\t\t\tthis.UpdateVariable({ Field: this.GetFieldModel(), ControlType: CONTROL_TYPES.Checkbox }, this._checked().toString())\r\n\t\t);\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tget IsChecked(): KnockoutObservable<boolean> {\r\n\t\treturn this._checked;\r\n\t}\r\n\r\n\tDeserialize() {\r\n\t\tvar field = _.first(this._model().Fields);\r\n\t\tif (field) {\r\n\t\t\treturn [`${field.EntityName}.${field.Name}`, this._checked() ? 'True' : 'False'];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tIsModified(): boolean {\r\n\t\treturn super.IsModified() || this._originalValue !== this._checked();\r\n\t}\r\n\r\n\tGetValue(): any {\r\n\t\treturn this._checked();\r\n }\r\n\r\n IsValid(): boolean {\r\n \r\n if (this._isRequired) {\r\n this._isValid(this._checked());\r\n } else {\r\n this._isValid(true);\r\n }\r\n\r\n return this._isValid();\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"checkbox-control\\\" class=\\\"ToolBarPreview\\\"> <div data-bind=\\\"attr{ title: Label }\\\" class=\\\"control-preview-container\\\"> <i class=\\\"fa fa-check-square-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }, click: _help.ShowControlHelp.bind(_help, $data)\\\" data-control-type=\\\"checkbox-control\\\" class=\\\"ConsultScreenView label-input clearfix form-standart-control\\\"> <div data-bind=\\\"style: { display: _display, backgroundColor: _backgroundColor }\\\" class=\\\"label label-input clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label class=\\\"checkbox-label\\\" data-bind=\\\"tooltip: DescriptionToolTip\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span class=\\\"labelText\\\" data-bind=\\\"text: Label\\\"></span> </label> <input data-bind=\\\"checked: IsChecked\\\" type=\\\"checkbox\\\" class=\\\"control record-field\\\" disabled=\\\"disabled\\\"/> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"checkbox-control\\\" class=\\\"ConsultScreenView label-input clearfix form-standart-control\\\"> <div data-bind=\\\"style: { display: _display, backgroundColor: _backgroundColor }\\\" class=\\\"label label-input clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span class=\\\"labelText\\\" data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <input type=\\\"checkbox\\\" class=\\\"control record-field\\\"/> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"checkbox-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input clearfix form-standart-control\\\"> <div data-bind=\\\"style: { display: _display }\\\" class=\\\"label label-input clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label class=\\\"checkbox-label\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <input type=\\\"checkbox\\\" class=\\\"control record-field\\\" disabled=\\\"disabled\\\"/> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {CONTROL_TYPES, FIELD_TYPES, FONT_STYLES, RenderModes} from 'Core/Constant';\r\n\r\nimport DateTimeConfig from 'Core/Controls/DateTime/Configs/date-time-config.json';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {ICON_CLASSES} from 'Core/Controls/DateTime/Icons';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\nimport ViewTemplate from 'Core/Controls/DateTime/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/DateTime/Templates/HelpView.html';\r\nimport ToolBarTempalte from 'Core/Controls/DateTime/Templates/ToolBar.html';\r\nimport DesignTempalte from 'Core/Controls/DateTime/Templates/Design.html';\r\nimport EditTemplate from 'Core/Controls/DateTime/Templates/Edit.html';\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport { EVENTS } from 'Core/Screens/Events';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nko.templates['Core/Controls/DateTime/Templates/ToolBar'] = ToolBarTempalte;\r\nko.templates['Core/Controls/DateTime/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/DateTime/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/DateTime/Templates/Design'] = DesignTempalte;\r\nko.templates['Core/Controls/DateTime/Templates/Edit'] = EditTemplate;\r\n\r\nexport class DateTime extends BaseControl {\r\n\tprivate _value: KnockoutObservable<Date>;\r\n\tprivate _originalValue: string;\r\n\tprivate _labelStyle: KnockoutObservable<any>;\r\n\tprivate _textInputStyle: KnockoutObservable<any>;\r\n\tprivate _datetimeFormat: string;\r\n\tprivate _initialDateChange: boolean;\r\n\tprivate _skipTimeShifting: boolean;\r\n\tprivate _calculatedDependsOnValue: string;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, DateTimeConfig);\r\n\r\n\t\tthis._value = ko.observable(null);\r\n\t\tthis._initialDateChange = true;\r\n\r\n\t\tthis._skipTimeShifting = params.Model.SkipTimeShifting;\r\n\r\n\t\tthis.GetDateFormat();\r\n\r\n\t\tthis._labelStyle = ko.observable(null);\r\n\t\tthis._textInputStyle = ko.observable(null);\r\n\r\n\t\tthis._model.subscribe(() => {\r\n\t\t\tif (this.Properties) {\r\n\t\t\t\tthis.ApplyProperties();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst screen = this._form && this._form.GetScreen();\r\n if (screen) {\r\n screen.On(EVENTS.DATA_CHANGED, this, (evt) => {\r\n if (evt.data && evt.data.ScreenVariable && this.FieldModel.FilledById != 0) {\r\n\r\n let dynamicField = _.find(this.FieldModel.DynamicFields, (field) => {\r\n return field === evt.data.ScreenVariable.Field.Id\r\n });\r\n\r\n if (dynamicField) {\r\n this.UpdateDependsOnValue();\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.ApplyProperties();\r\n }\r\n\r\n\tprivate UpdateDependsOnValue() {\r\n\r\n\t\tthis.CalculateDependOnValue()\r\n\t\t.then(dependsOnValue=>{\r\n\t\t\tlet valueWithTimezone = this.PrepareValue(dependsOnValue)\r\n\t\t\tthis._originalValue = valueWithTimezone;\r\n\t\t\tthis._calculatedDependsOnValue = dependsOnValue;\r\n\t\t\tlet momentDate = moment(valueWithTimezone);\r\n\t\t\tif(momentDate.isValid()){\r\n\t\t\t\tthis._value(momentDate.toDate());\r\n\t\t\t}else{\r\n\t\t\t\tthis._value(null);\r\n\t\t\t}\t\t\t\r\n\t\t});\r\n\t}\r\n\r\n\tGetDateFormat() {\r\n\t\tthis._datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(this.FieldModel, true, this._model());\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\t// label\r\n\t\t\tif (this.Properties.Label) {\r\n\t\t\t\tconst labelStyle = {backgroundColor: null, color: null};\r\n\r\n\t\t\t\t_.each(this.Properties.Label.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\tlabelStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (property.Color) {\r\n\t\t\t\t\t\tlabelStyle.color = property.Color;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._labelStyle(labelStyle);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.Properties) {\r\n\t\t\t// textInput\r\n\t\t\tif (this.Properties.TextInput) {\r\n\t\t\t\tconst textInputStyle = {backgroundColor: null};\r\n\r\n\t\t\t\t_.each(this.Properties.TextInput.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\ttextInputStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._textInputStyle(textInputStyle);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n\t\t\tthis.ApplyLinkEditorStyles();\r\n\t\t}\r\n\r\n\t\tif(this.HideIfCondition){\r\n if(this.IsRunTime){\r\n this._isVisible(false);\r\n }\r\n }\r\n\t}\r\n\r\n\tprivate ApplyLinkEditorStyles() {\r\n\t\tif(!this.FieldModel.HasLinkEditorVisibility){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst labelStyle = {\r\n\t\t\tcolor: null,\r\n\t\t\tfontWeight: null,\r\n\t\t\tfontStyle: null,\r\n\t\t\ttextDecoration: null\r\n\t\t};\r\n\t\tif (this.FieldModel.FontColor) {\r\n\t\t\tlabelStyle.color = this.FieldModel.FontColor;\r\n\t\t}\r\n\t\tlabelStyle.fontWeight = FONT_STYLES.NORMAL;\r\n\r\n\t\tif (this.FieldModel.FontStyles) {\r\n\t\t\t_.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n\t\t\t\tswitch ( style.Name.toLowerCase() ) {\r\n\t\t\t\t\tcase FONT_STYLES.BOLD:\r\n\t\t\t\t\t\tlabelStyle.fontWeight = FONT_STYLES.BOLD;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FONT_STYLES.UNDERLINE:\r\n\t\t\t\t\t\tlabelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FONT_STYLES.ITALIC:\r\n\t\t\t\t\t\tlabelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis.Extend(labelStyle, this._labelStyle());\r\n\t\tthis._labelStyle(labelStyle);\r\n\t}\r\n\r\n\tSetValue(controlValue: IControlValue): void {\r\n\t\tif (controlValue.Data && controlValue.Data.Value) {\r\n\t\t\r\n\t\t\tlet valueWithTimezone = this.PrepareValue(controlValue.Data.Value)\r\n\t\t\tthis._value(moment(valueWithTimezone).toDate());\r\n\t\t\tthis._originalValue = valueWithTimezone;\r\n\t\t} else {\r\n\t\t\tthis._value(null);\r\n\t\t}\r\n\t\tthis._resetDependsOnValue(false);\r\n\t}\r\n\t\r\n ResetDependOnValue() {\r\n this.UpdateDependsOnValue();\r\n }\r\n\r\n\tPrepareValue(value: string){\r\n\t\tconst firstAttachedField = _.first(this._model().Fields);\r\n\t\tconst fieldType = firstAttachedField.FieldTypeName || this._model() && this._model().TypeName;\r\n\r\n\t\tvar valueWithTimezone = \r\n\t\t\tthis._datetimeFormat === DATE_FORMATS.TIME_SPAN.Format\r\n\t\t\t|| this._datetimeFormat === DATE_FORMATS.TIME_SPAN_LONG.Format\r\n\t\t\t|| fieldType === FIELD_TYPES.Date\r\n\t\t\t|| this._skipTimeShifting\r\n\t\t\t\t? value\r\n\t\t\t\t: FormatConverter.CorrectTimezone(value);\r\n\t\treturn valueWithTimezone;\t\t\t\t\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tDeserialize() {\r\n\t\tconst field = _.first(this._model().Fields);\r\n\t\tconst saveValue = this.ConvertDateToUTC(this._value());\r\n\r\n\t\tif (field && !this._isReadonly) {\r\n\t\t\treturn [`${field.EntityName}.${field.Name}`, saveValue];\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tConvertDateToUTC(date: Date): string {\r\n\t\tif (!date) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn moment(date).format();\r\n\t}\r\n\r\n\tGetDateFormatIconClass(): string {\r\n\t\tconst iconClassName =\r\n\t\t\t(this.FormatName && this.FormatName !== 'None' && ICON_CLASSES[this.FormatName]) ||\r\n\t\t\t(this.FieldModel.FieldTypeName && ICON_CLASSES[this.FieldModel.FieldTypeName]) ||\r\n\t\t\tICON_CLASSES[this._model().TypeName];\r\n\r\n\t\treturn `${iconClassName} ${this.GetCombinedReadOnly() ? 'disabled' : ''}`;\r\n\t}\r\n\r\n\t// method fired when value was changed via datepicker UI either as value was setted from model at first time\r\n\tDateChanged(event): void {\r\n\t\t// return if date was changed after setting initial and value is not empty\r\n\t\tif (this._initialDateChange && this._value()) {\r\n\t\t\tthis._initialDateChange = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._initialDateChange = false;\r\n\r\n\t\t// update value with new date\r\n\t\tthis._value(event || null);\r\n\r\n\t\tconst saveValue = this.ConvertDateToUTC(this._value());\r\n\r\n\t\tthis.UpdateVariable({ Field: this.GetFieldModel(), ControlType: CONTROL_TYPES.DateTime }, saveValue);\t\t\r\n\t}\r\n\r\n\tIsModified(): boolean {\r\n\t\tconst saveValue = this.ConvertDateToUTC(this._value());\r\n\r\n\t\tif (this._originalValue != saveValue && (!this._originalValue || !saveValue)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst difference = moment(saveValue).diff(moment(this._originalValue));\r\n\r\n\t\treturn !!difference || super.IsModified();\r\n\t}\r\n\r\n\tGetValue(): any {\r\n\t\treturn this.ConvertDateToUTC(this._value());\r\n\t}\r\n\r\n\tGetDisplayValue(): any {\r\n\t\tconst value = this._value();\r\n\r\n\t\treturn value && moment(value).format(this._datetimeFormat);\r\n\t}\r\n\r\n\tIsValid(): boolean {\r\n\t\tthis._isValid(!this._isRequired || !!this._value());\r\n\r\n\t\treturn this._isValid();\r\n\t}\r\n\r\n\tGetLocale() {\r\n\t\treturn moment.locale();\r\n\t}\r\n}","// Module\nvar code = \"<div data-control-type=\\\"datetime-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-calendar\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-control-type=\\\"datetime-control\\\" data-bind=\\\"blockElement: $data._isDataLoading, style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"date-time-control-container\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition },\\r\\n\\t\\t\\t\\t\\tdatetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\tvalue: $data._value,\\r\\n\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\tlocale: $data.GetLocale(),\\r\\n\\t\\t\\t\\t\\t\\t\\tformat: $data._datetimeFormat\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"form-standart-control ConsultScreenView label-input control input-group date form_datetime date-time-control\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko if: $data._value --> <input autocomplete=\\\"off\\\" type=\\\"text\\\" data-bind=\\\"style: _textInputStyle,\\r\\n\\t\\t\\t \\t\\t\\t\\tcss: {passwordRefreshedInput: Label().toLowerCase() === 'passwordrefresh'}\\\" class=\\\"control form-control record-field datepickerinput\\\" readonly=\\\"readonly\\\"> <!-- /ko --> <!-- ko ifnot: $data._value --> <input autocomplete=\\\"off\\\" type=\\\"text\\\" data-bind=\\\"attr: {value: Label}\\\" class=\\\"control form-control record-field placeholder\\\" readonly=\\\"readonly\\\"> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"datetime-control\\\" class=\\\"date-time-control-container new-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition, 'title': Label }, {display: _display}\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\" data-bind=\\\"style: _textInputStyle,\\r\\n text: Label\\\"> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"datetime-control\\\" class=\\\"date-time-control-container new-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition, 'title': Label }, {display: _display}\\\" class=\\\"FormDesignerView form-designer-view text-center calendar-control form-standart-control\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <span data-bind=\\\"style: _textInputStyle\\\" class=\\\"image-background\\\"><img alt=\\\"ImageControl\\\" class=\\\"\\\" src=\\\"/img/Custom/Calendar-Time-256x256.png\\\"/></span> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-bind=\\\"blockElement: $data._isDataLoading, click: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\" data-control-type=\\\"datetime-control\\\" class=\\\"EditScreenView datetime-control-container\\\"> <div data-bind=\\\"css: {'has-error': !_isValid()},\\r\\n\\t\\t\\t\\t\\tattr: { 'data-control-position': LabelPosition }\\\" class=\\\"control label-input form-standart-control\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> </label> <div data-bind=\\\"datetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue: $data._value,\\r\\n\\t\\t\\t\\t\\t\\t\\tfieldModel: $data.FieldModel,\\r\\n\\t\\t\\t\\t\\t\\t\\tonUpdate: $data.DateChanged.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\tonClear: $data.DateChanged.bind($data, null),\\r\\n\\t\\t\\t\\t\\t\\t\\tnotFormatted: true,\\r\\n\\t\\t\\t\\t\\t\\t\\tchangeTheCaret: true,\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlocale: $data.GetLocale(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tformat: $data._datetimeFormat,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\twidgetPositioning: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thorizontal: 'right',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvertical: 'bottom',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tforceParse: 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}\\\" class=\\\"input-group date form_datetime date-time-control control record-field with-label\\\"> <input data-bind=\\\"hasFocus: IsFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t attr: { 'readonly': GetCombinedReadOnly(), 'required': _isRequired, 'tabindex': GetCombinedReadOnly() ? -1 : 1 },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcss: {'isDependsOnValue': EnableResetDependOnValue && _resetDependsOnValue}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"control form-control record-field datepickerinput\\\"> <div class=\\\"datetime-controls\\\"> <span data-bind=\\\"css: { 'disabled': GetCombinedReadOnly() }\\\" class=\\\"btn default glyphicon glyphicon-trash date-remove\\\"> </span> <span class=\\\"input-group-addon custom time-picker-button\\\"> <span data-bind=\\\"css: $data.GetDateFormatIconClass()\\\" class=\\\"btn default date-set glyphicon\\\"></span> </span> <!-- ko if: EnableResetDependOnValue --> <!-- ko if: _resetDependsOnValue --> <span class=\\\"btn default resetDependOnValueBtn\\\" data-bind=\\\"click: $data.ResetDependOnValue\\\"> <i class=\\\"fa fa-refresh\\\"></i> </span> <!--/ko--> <!--/ko--> </div> </div> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from \"libs/cerialize\";\r\n\r\nexport class ItemModel {\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tLabel: string;\r\n}\r\n\r\nexport class RadioButtonOptionsModel {\r\n\t@deserializeAs(ItemModel)\r\n\tItems: Array<ItemModel>;\r\n\r\n\t@deserialize\r\n\tRecordsCount: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.Items = [];\r\n\t}\r\n}\r\n","import {Request, IRequestOptions} from \"Core/Common/Request\";\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {URL} from \"Core/Common/Url\";\r\n\r\nimport {GenericDeserialize} from \"libs/cerialize\";\r\n\r\nimport {IGetRadioButtonControlDataRequestModel} from \"Core/Controls/RadioButton/Models/Request/IGetRadioButtonControlDataRequestModel\";\r\nimport {RadioButtonOptionsModel} from \"Core/Controls/RadioButton/Models/Data/RadioButtonOptionsModel\";\r\n\r\n\r\nexport class RadioButtonDataStore {\r\n static GetOptions(params: IGetRadioButtonControlDataRequestModel): P.Promise<any> {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/ScreenFormApi/GetRadioData',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(this.Deserialize(data.ResultObject));\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static Deserialize(jsonObject: any): RadioButtonOptionsModel {\r\n var model = GenericDeserialize<RadioButtonOptionsModel>(jsonObject, RadioButtonOptionsModel);\r\n return model;\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\nexport class RadioButtonOptionViewModel {\r\n\tText: string;\r\n\tValue: number;\r\n\tprivate _isSelected: KnockoutObservable<boolean> = ko.observable(false);\r\n\tprivate _isEnabled: boolean;\r\n\r\n\tconstructor(params?: IRadioButtonViewModelParams) {\r\n\t\tif (params) {\r\n\t\t\tthis.Text = params.Text;\r\n\t\t\tthis.Value = params.Value;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic Create(value: number, text: string, isEnabled: boolean, isSelected: boolean) {\r\n\t\tconst item = new RadioButtonOptionViewModel();\r\n\r\n\t\titem.Value = value;\r\n\t\titem.Text = text;\r\n\t\titem._isEnabled = isEnabled;\r\n\t\titem._isSelected(isSelected);\r\n\r\n\t\treturn item;\r\n\t}\r\n}\r\n\r\nexport interface IRadioButtonViewModelParams {\r\n\tText: string;\r\n\tValue: number;\r\n}","// Module\nvar code = \"<div class=\\\"EditScreenView label-input clearfix text-control\\\" data-bind=\\\"css: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'full-width-control': FieldModel.FullWidth,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'searchMod': _showSearchScreenButton}\\\"> <div class=\\\"radio-list radio-button-control form-standart-control\\\" data-bind=\\\"css: {'has-error': !_isValid(),\\r\\n\\t\\t \\t\\t\\t\\t\\t'radio-button-container': !_showSearchScreenButton()},\\r\\n\\t\\t \\t\\t\\tattr: { 'data-control-position': LabelPosition },\\r\\n\\t\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data),\\r\\n\\t\\t \\t\\t\\tstyle: {display: _display}\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> </label> <!-- ko if: _showSearchScreenButton() --> <!--ko template: {html: GetSearchTemplate, afterRender: AfterSearchTemplateRender.bind($data)}--><!--/ko--> <!-- /ko --> <!-- ko ifnot: _showSearchScreenButton() --> <div class=\\\"radio-button-control form-control\\\"> <!--ko template: {html: GetRadioButtonTemplate}--><!--/ko--> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _isReady --> <div class=\\\"dropdown-wraper input-group\\\"> <!--ko if: $data.FieldModel.AllowCustomValue--> <input type=\\\"text\\\" data-bind=\\\"\\r\\n\\t\\t \\t\\tvalue: _selectedValueLabel,\\r\\n\\t\\t \\t\\tevent: {change: AddCustomValue.bind($data, $data._selectedValueLabel())},\\r\\n\\t\\t \\t\\tstyle: $data._textInputStyle,\\r\\n\\t\\t \\t\\tattr: {'disabled': $data.GetCombinedReadOnly(), 'required': $data._isRequired, 'tabindex': GetCombinedReadOnly() ? -1 : 1,\\r\\n\\t\\t \\t\\t 'placeholder': _labels.SELECT_LABEL + '...'},\\r\\n\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly()},\\r\\n\\t\\t\\t\\thasFocus: $data.IsFocused\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--/ko--> <!--ko ifnot: $data.FieldModel.AllowCustomValue--> <!--ko ifnot: GetCombinedReadOnly() --> <div data-val-search=\\\"True\\\" data-bind=\\\"style: $data._textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\thasFocus: $data.IsFocused,\\r\\n\\t\\t\\t\\t\\t\\tevent: { click: $data.ShowSearchScreen.bind($data)},\\r\\n\\t\\t\\t\\t\\t\\tenterKey: $data.ShowSearchScreen.bind($data),\\r\\n\\t\\t\\t\\t\\t\\tattr: {'disabled': $data.GetCombinedReadOnly(), 'required': $data.GetCombinedReadOnly(), 'tabindex': GetCombinedReadOnly() ? -1 : 1},\\r\\n\\t\\t\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly()}\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--ko if: _selectedItem--> <span class=\\\"selectedItem\\\" data-bind=\\\"text: _selectedItem().Text\\\"></span> <!--/ko--> <!--ko ifnot: _selectedItem--> <span class=\\\"selectText\\\" data-bind=\\\"text: _labels.SELECT_LABEL + '...'\\\"></span> <!--/ko--> </div> <!--/ko--> <!--ko if: GetCombinedReadOnly() --> <div data-val-search=\\\"\\\" data-bind=\\\"attr: {'disabled': $data.GetCombinedReadOnly(),\\r\\n\\t\\t\\t\\t\\t\\t'required': $data._isRequired,\\r\\n\\t\\t\\t\\t\\t\\t'tabindex': GetCombinedReadOnly() ? -1 : 1},\\r\\n\\t\\t\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly()}\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--ko if: _selectedItem--> <span class=\\\"selectedItem\\\" data-bind=\\\"text: _selectedItem().Text\\\"></span> <!--/ko--> <!--ko ifnot: _selectedItem--> <span class=\\\"empty-value\\\" data-bind=\\\"text: _labels.EMPTY_VALUE + '...'\\\"></span> <!--/ko--> </div> <!--/ko--> <!--/ko--> <div class=\\\"dropdown-controls\\\"> <!--ko ifnot: GetCombinedReadOnly() --> <span data-bind=\\\"event: { click: $data.ShowSearchScreen.bind($data)}\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> <!--/ko--> <!--ko if: GetCombinedReadOnly() --> <span data-bind=\\\"css: { 'disabled': $data.GetCombinedReadOnly() }\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> <!--/ko--> <!-- ko if: _clearAllowed() && _selectedItem()--> <a data-bind=\\\"click: $data.ResetSelection.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-reset red\\\"><i class=\\\"fa fa-times\\\"></i></a> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: (Items().length > 0)--> <div data-bind=\\\"foreach: Items\\\" class=\\\"radio-list control record-field\\\"> <div class=\\\"radio-item\\\"> <span class=\\\"radioInputTypeRadio\\\"> <input tabindex=\\\"1\\\" data-bind=\\\"attr: { name: 'radio-button-' + $parent._guid, 'disabled': $parent.GetCombinedReadOnly(), 'required': $parent._isRequired },\\r\\n\\t\\t\\t\\t\\t\\t \\t\\t\\t value: Value, checked: $parent._value\\\" type=\\\"radio\\\" class=\\\"control record-field radio-btn-item\\\"/> </span> <span class=\\\"radioItem-text\\\" data-bind=\\\"text: Text\\\"></span> </div> </div> <!--/ko--> <!--ko ifnot: _isValueSet --> <label>Radio button control</label> <!--/ko--> <!--ko if: _isItemsEmpty --> <label>Incorrect lookup for radio button</label> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport {GenericDeserialize} from \"libs/cerialize\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {P} from \"Core/Common/Promise\";\r\n\r\nimport {RecordStore} from \"Core/Common/Stores/RecordStore\";\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\";\r\nimport {IControlParam, ISearchScreenParam} from \"Core/Screens/IScreen\";\r\nimport {CONTROL_TYPES, FIELD_TYPES, FONT_STYLES, RenderModes, TABLE_TYPES} from 'Core/Constant';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {RadioButtonDataStore} from \"Core/Controls/RadioButton/Stores/RadioButtonDataStore\";\r\n\r\nimport {RadioButtonOptionsModel} from \"Core/Controls/RadioButton/Models/Data/RadioButtonOptionsModel\";\r\nimport {RadioButtonOptionViewModel} from \"Core/Controls/RadioButton/Models/View/RadioButtonOptionViewModel\";\r\n\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {SERVER_REQUEST_ERRORS} from \"Core/Common/Enums/ServerRequestErrors\";\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\n\r\nimport EditTemplate from \"Core/Controls/RadioButton/Templates/Edit.html\";\r\nimport HelpViewTemplate from \"Core/Controls/RadioButton/Templates/HelpView.html\";\r\nimport ViewTemplate from \"Core/Controls/RadioButton/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/RadioButton/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/RadioButton/Templates/Design.html\";\r\nimport SearchTemplate from 'Core/Controls/RadioButton/Templates/Search.html';\r\nimport RadioButtonTemplate from 'Core/Controls/RadioButton/Templates/RadioButton.html';\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport {IGetRadioButtonControlDataRequestModel} from './Models/Request/IGetRadioButtonControlDataRequestModel';\r\nimport {Guid} from \"Core/Common/Guid\";\r\n\r\nko.templates[\"Core/Controls/RadioButton/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/RadioButton/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/RadioButton/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/RadioButton/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/RadioButton/Templates/Design\"] = DesignTemplate;\r\nko.templates['Core/Controls/RadioButton/Templates/Search'] = SearchTemplate;\r\nko.templates['Core/Controls/RadioButton/Templates/RadioButton'] = RadioButtonTemplate;\r\n\r\nexport class RadioButton extends BaseControl {\r\n private _originalValue: any;\r\n private _value: KnockoutObservable<any>;\r\n private _subjectRecordId: number;\r\n private _isItemsEmpty: KnockoutObservable<boolean>;\r\n private _isValueSet: KnockoutObservable<boolean>;\r\n private _labelStyle: KnockoutObservable<any>;\r\n Items: KnockoutObservableArray<RadioButtonOptionViewModel>;\r\n private _showSearchScreenButton: KnockoutObservable<boolean>;\r\n private _items: KnockoutObservableArray<RadioButtonOptionViewModel>;\r\n private _selectedItem: KnockoutObservable<RadioButtonOptionViewModel>;\r\n private _selectedValueId: KnockoutObservable<number>;\r\n private _selectedValueLabel: KnockoutObservable<string>;\r\n private _searchScreenIfRecordsCount: number;\r\n private _searchScreeen: SearchScreen;\r\n private _totalRecordsCount: number;\r\n private _searchTerm: string;\r\n private _isEnableFilter: KnockoutObservable<boolean>;\r\n private _clearAllowed: KnockoutObservable<boolean>;\r\n private _isReady: KnockoutObservable<boolean>;\r\n protected _guid: string;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._isItemsEmpty = ko.observable(false);\r\n this.Items = ko.observableArray([]);\r\n this._value = ko.observable(null);\r\n this._guid = Guid.NewGuid();\r\n this._isValueSet = ko.observable(false);\r\n this._labelStyle = ko.observable(null);\r\n this._showSearchScreenButton = ko.observable(false);\r\n this._selectedItem = ko.observable(null);\r\n this._selectedValueId = ko.observable(null);\r\n this._selectedValueLabel = ko.observable(null);\r\n this._clearAllowed = ko.observable(false);\r\n this._totalRecordsCount = 0;\r\n this._searchTerm = '';\r\n this._isEnableFilter = ko.observable(true);\r\n this._isReady = ko.observable(true);\r\n var searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n this._searchScreenIfRecordsCount = Number.isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n this.InitChangeEvent();\r\n if (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n this.ApplyLinkEditorStyles();\r\n }\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n GetRadioButtonTemplate() {\r\n return RadioButtonTemplate;\r\n }\r\n\r\n GetSearchTemplate() {\r\n return SearchTemplate;\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n AfterSearchTemplateRender() {\r\n this._el.dispatchEvent(\r\n new CustomEvent('resizeTable', {\r\n bubbles: true,\r\n cancelable: true\r\n })\r\n );\r\n }\r\n\r\n InitChangeEvent() {\r\n this._value.subscribe((newValue) => {\r\n var value = newValue ? String(newValue) : null;\r\n this.UpdateVariable({ Field: this.GetFieldModel(), ControlType: CONTROL_TYPES.RadioButton }, value);\r\n });\r\n }\r\n\r\n ResetSelection(data) {\r\n this._isReady(false);\r\n const recordId = 0;\r\n\r\n this._selectedItem(null);\r\n this._selectedValueId(null);\r\n this._selectedValueLabel(null);\r\n this._value(null);\r\n\r\n this._form && this.GetForm().GetScreen().UpdateDependsOnValues(recordId, this.FieldModel.Id);\r\n this._isReady(true);\r\n }\r\n\r\n\r\n ShowSearchScreen(model, evt) {\r\n if (this._totalRecordsCount > this._searchScreenIfRecordsCount) {\r\n let attachedFieldModel = this.FieldModel;\r\n if (attachedFieldModel) {\r\n let params: ISearchScreenParam = {\r\n EntityId: attachedFieldModel.ValTableId,\r\n SearchTerm: this._searchTerm,\r\n EntityType: attachedFieldModel.ValTableType,\r\n SearchFieldId: attachedFieldModel.ValFieldId,\r\n ControlId: this._isEnableFilter() ? this.GetControlId() : 0,\r\n ScreenData: this.GetDynamicFieldsData(),\r\n ButtonAdd: false\r\n };\r\n\r\n if (this._form && this.FieldModel.ValTableType === TABLE_TYPES.Entity) {\r\n params = _.extend(params, {\r\n SubjectEntityId: this.GetForm().GetScreen().GetEntityId(),\r\n SubjectRecordId: this.GetForm().GetScreen().GetRecordId()\r\n });\r\n }\r\n\r\n this._searchScreeen = new SearchScreen(params);\r\n this._searchScreeen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n const recordId = evtArgs.data.RecordId;\r\n this.ReplaceSelectedValue(recordId);\r\n });\r\n this._searchScreeen.Show();\r\n }\r\n }\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if (!this.FieldModel.HasLinkEditorVisibility) {\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = FONT_STYLES.NORMAL; //default fontWeight\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch (style.Name.toLowerCase()) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n })\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n private ReplaceSelectedValue(recordId: number) {\r\n const valFieldId = this.FieldModel.ValFieldId;\r\n if (this._el) {\r\n BlockUI.Block({Target: this._el});\r\n }\r\n\r\n RecordStore.GetRecord({TableId: this.FieldModel.ValTableId, RecordId: recordId})\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n this._el.dispatchEvent(\r\n new CustomEvent('resizeTable', {\r\n bubbles: true,\r\n cancelable: true\r\n })\r\n );\r\n })\r\n .then((record: any) => {\r\n this._selectedItem(null);\r\n this._selectedValueId(null);\r\n this._selectedValueLabel(null);\r\n\r\n const selected = _.find(record.Fields, (item: any) => item.FieldId === valFieldId);\r\n\r\n if (selected) {\r\n\r\n selected.FieldValue = this.PrepareFormattedValue(selected.FieldValue, selected.FieldValue, selected.FieldTypeName);\r\n const itemTranslation = _.find(selected.FieldValueTranslations, (item: any) => item.Selected);\r\n selected.FieldValue = itemTranslation && itemTranslation.Value ? itemTranslation.Value : selected.FieldValue;\r\n\r\n const newItem = RadioButtonOptionViewModel.Create(recordId, selected.FieldValue ? selected.FieldValue : LABELS.EMPTY_VALUE, true, true);\r\n this._selectedItem(newItem);\r\n this._selectedValueId(newItem.Value);\r\n this._selectedValueLabel(newItem.Text);\r\n this._value(newItem.Value);\r\n\r\n this._form && this.GetForm().GetScreen().UpdateDependsOnValues(recordId, this.FieldModel.Id);\r\n }\r\n })\r\n .fail((error) => {\r\n if (error.requestError === SERVER_REQUEST_ERRORS.NOT_FOUND) {\r\n const newItem = RadioButtonOptionViewModel.Create(recordId, NOTIFICATIONS.RECORD_NOT_FOUND, true, true);\r\n\r\n this._selectedItem(newItem);\r\n this._selectedValueId(newItem.Value);\r\n this._selectedValueLabel(newItem.Text);\r\n this._value(newItem.Value);\r\n\r\n this.Items().push(newItem);\r\n this.Items(this.Items());\r\n\r\n } else if (error.requestError === SERVER_REQUEST_ERRORS.INTERNAL) {\r\n new Notifier().Failed('Error applying created record');\r\n }\r\n });\r\n }\r\n\r\n private PrepareFormattedValue(value, displayValue, type) {\r\n let result = displayValue;\r\n if (this.IsDate(type)) {\r\n const datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(\r\n {Type: type, FormatName: this.FieldModel.ValFieldFormatName},\r\n true\r\n );\r\n\r\n if (this.HasTime(type))\r\n value = FormatConverter.CorrectTimezone(value);\r\n\r\n result = moment(value).isValid() ? moment(value).format(datetimeFormat) : value;\r\n } else if (_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], type)) {\r\n result = FormatConverter.LocalizeDecimalOrInteger(\r\n displayValue && this.FieldModel.ValFieldFormatName === 'Percentage'\r\n ? (Number(displayValue.replace(/[.,]/g, '.')) * 100).toFixed(\r\n this.FieldModel.ValFieldSize < 2 ? 0 : this.FieldModel.ValFieldSize - 2\r\n )\r\n : displayValue\r\n );\r\n }\r\n\r\n return result ? result : \"\";\r\n }\r\n\r\n private IsDate(fieldType: string) {\r\n return fieldType === FIELD_TYPES.Date ||\r\n fieldType === FIELD_TYPES.DateTime ||\r\n fieldType === FIELD_TYPES.Time ||\r\n fieldType === FIELD_TYPES.TimeSpan;\r\n }\r\n\r\n private HasTime(fieldType: string) {\r\n return fieldType === FIELD_TYPES.DateTime ||\r\n fieldType === FIELD_TYPES.Time;\r\n }\r\n\r\n private LoadData(recordId: number): P.Promise<any> {\r\n let attachedField = this.FieldModel;\r\n let deferredResult = P.defer();\r\n\r\n\r\n this._clearAllowed(!(attachedField.IsRequired || attachedField.IsReadOnly || attachedField.IsSystem));\r\n\r\n if (attachedField) {\r\n if (this._el) {\r\n BlockUI.Block({Target: this._el});\r\n }\r\n\r\n const getDataRequestModel: IGetRadioButtonControlDataRequestModel = {\r\n FieldId: attachedField.Id,\r\n ControlId: this.GetControlId()\r\n };\r\n\r\n const screen = this._form && this.GetForm().GetScreen();\r\n\r\n if (screen && screen.GetType() === ScreenTypes[ScreenTypes.LinkEditor]) {\r\n const linkEditor = screen as any;\r\n\r\n getDataRequestModel.LeftEntityId = linkEditor.GetEntityId();\r\n getDataRequestModel.RightEntityId = linkEditor.GetRelatedEntityId();\r\n getDataRequestModel.LeftRecordId = linkEditor.GetRecordId();\r\n getDataRequestModel.RightRecordId = linkEditor.GetRelatedRecordId();\r\n getDataRequestModel.Kseq = linkEditor.GetKseq();\r\n }\r\n\r\n RadioButtonDataStore.GetOptions(getDataRequestModel)\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then((dataModel: RadioButtonOptionsModel) => {\r\n this._totalRecordsCount = dataModel.RecordsCount;\r\n this._showSearchScreenButton(this._totalRecordsCount > this._searchScreenIfRecordsCount);\r\n let options = dataModel.Items.map(option =>\r\n new RadioButtonOptionViewModel({\r\n Text: option.Label ? option.Label : LABELS.EMPTY_VALUE,\r\n Value: option.RecordId\r\n }));\r\n\r\n if (!attachedField.IsRequired && !attachedField.IsSystem && !attachedField.IsReadOnly) {\r\n options.push(new RadioButtonOptionViewModel({\r\n Text: LABELS.SELECT_LABEL + '...',\r\n Value: null\r\n }));\r\n }\r\n\r\n this.Items(options);\r\n\r\n deferredResult.resolve({});\r\n }).fail(error => {\r\n new Notifier().Failed(error.message);\r\n deferredResult.reject(error);\r\n });\r\n } else {\r\n deferredResult.reject({message: \"Relation is not setup\"});\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n this._isValueSet(true);\r\n\r\n let selectedValue = null;\r\n if (value.Data && isNaN(parseInt(value.Data.Value))) {\r\n selectedValue = null;\r\n } else {\r\n selectedValue = parseInt(value.Data.Value);\r\n }\r\n\r\n let recordId = value.SubjectRecordId;\r\n if (!this.ItemsAreLoaded()) {\r\n this.LoadData(recordId).then(() => {\r\n this._originalValue = selectedValue;\r\n this._value(selectedValue);\r\n if (this.Items.length == 0 && selectedValue != null) {\r\n this.ReplaceSelectedValue(selectedValue);\r\n }\r\n }).fail(() => this._isItemsEmpty(true));\r\n }\r\n }\r\n\r\n Deserialize() {\r\n let attachedField = this.FieldModel;\r\n\r\n if (attachedField) {\r\n if (!this.GetCombinedReadOnly()) {\r\n return [`${attachedField.EntityName}.${attachedField.Name}`, this._value() || \"\"];\r\n } else {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private ItemsAreLoaded(): boolean {\r\n return this.Items().length > 0;\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this._isRequired) {\r\n if (this._value()) {\r\n this._isValid(true);\r\n } else {\r\n this._isValid(false);\r\n }\r\n } else {\r\n this._isValid(true);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n GetValue() {\r\n if (this._value()) {\r\n return this._value();\r\n }\r\n return null;\r\n }\r\n\r\n GetDisplayValue(): string {\r\n if (this._value()) {\r\n const selectedValue = this.Items().find(item => item.Value == this._value());\r\n return selectedValue ? selectedValue.Text : this._selectedValueLabel();\r\n }\r\n return null;\r\n }\r\n\r\n IsModified(): boolean {\r\n let originalValue = this._originalValue,\r\n newValue = this._value();\r\n\r\n if (isNaN(originalValue))\r\n originalValue = 'valueNaN';\r\n\r\n if (isNaN(newValue))\r\n newValue = 'valueNaN';\r\n\r\n return super.IsModified() || originalValue != newValue;\r\n }\r\n} ","// Module\nvar code = \"<div class=\\\"clearfix\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition },\\r\\n\\t \\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data),\\r\\n\\t \\t\\t\\t\\tstyle: {display: _display},\\r\\n\\t\\t\\t\\t\\tcss: {'radio-button-container': !_showSearchScreenButton()}\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko ifnot: _showSearchScreenButton() --> <!--ko if: (Items().length > 0)--> <div class=\\\"radio-button-control form-control\\\"> <div data-bind=\\\"foreach: Items\\\" class=\\\"radio-list control record-field\\\"> <div class=\\\"radio-item\\\"> <span> <input data-bind=\\\"attr: { name: 'radio-button-' + $parent.GetControlId()}, value: Value, checked: $parent._value\\\" disabled=\\\"disabled\\\" type=\\\"radio\\\" class=\\\"control record-field radio-btn-item\\\"/> </span> <span data-bind=\\\"text: Text\\\"></span> </div> </div> </div> <!--/ko--> <!--ko ifnot: (Items().length > 0)--> <div data-bind=\\\"style: $data._textInputStyle, attr: {'data-text': $data.Label}\\\" class=\\\"empty multi-options-list textarea-control\\\"> </div> <!--/ko--> <!--/ko--> <!-- ko if: _showSearchScreenButton() --> <!-- ko if: _selectedItem --> <div data-bind=\\\"style: $data._textInputStyle\\\" class=\\\"multi-options-list textarea-control\\\"> <span class=\\\"selectedItem\\\" data-bind=\\\"text: _selectedItem().Text\\\"></span> </div> <!--/ko--> <!-- ko ifnot: _selectedItem --> <div data-bind=\\\"attr: {'data-text': _labels.EMPTY_VALUE}\\\" class=\\\"empty multi-options-list textarea-control\\\"> </div> <!--/ko--> <!--/ko--> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input clearfix form-standart-control\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <input type=\\\"radio\\\" class=\\\"control record-field input-radio\\\" disabled=\\\"disabled\\\"/> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <div data-bind=\\\"attr: { title: Label }\\\" class=\\\"control-preview-container\\\"> <i class=\\\"fa fa-dot-circle-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input clearfix form-standart-control\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <input type=\\\"radio\\\" class=\\\"control record-field input-radio\\\" disabled=\\\"disabled\\\"/> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {RenderModes} from 'Core/Constant';\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport GroupConfig from 'Core/Controls/Group/Configs/group-config.json';\r\nimport {PROPERTIES} from \"Core/Controls/Group/Constants\";\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\n\r\nimport 'Core/Controls/Group/Templates/Edit.html';\r\n\r\nimport HelpViewTemplate from 'Core/Controls/Group/Templates/HelpView.html';\r\nimport ViewTemplate from 'Core/Controls/Group/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/Group/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Group/Templates/Design.html';\r\nimport EditTemplate from 'Core/Controls/Group/Templates/Edit.html';\r\n\r\nko.templates['Core/Controls/Group/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Group/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Group/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Group/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Group/Templates/Edit'] = EditTemplate;\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\nexport class Group extends BaseControl {\r\n\tprivate _controlContainerWidth: KnockoutObservable<number>\r\n\tprivate _controlLabelWidth: KnockoutObservable<number>\r\n\tprivate _elem: KnockoutObservableArray<HTMLElement>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, GroupConfig);\r\n\t\tthis._controlContainerWidth = ko.observable(null);\r\n\t\tthis._controlLabelWidth = ko.observable(null);\r\n\t\tthis._elem = ko.observableArray(null);\r\n\t\tthis.Init();\r\n\t\tthis.BindEvents();\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\t\tif (this._renderMode() === RenderModes.Design) {\r\n\t\t\tthis._model.subscribe(() => this.Init());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\tif (this.Properties.Appearance && this.Properties.Appearance.Properties) {\r\n\t\t\t\tthis._webSizeValue = this.GeneralProperties.GetPropertyValue(PROPERTIES.GROUP_WEB_SIZE);\r\n\t\t\t\tthis._isWrapped(this.GeneralProperties.GetPropertyValue(PROPERTIES.GROUP_WRAPPED));\r\n\r\n\t\t\t\tthis._form && this._form.Wrap(this, this._isWrapped());\r\n\t\t\t\tif (this._parentControl) {\r\n\t\t\t\t\tthis._parentControl.SetWebSizeValue(this._webSizeValue);\r\n\t\t\t\t\tthis._parentControl.SetIsWrapped(this._isWrapped());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tGetWidth(): string {\r\n\t\tif (this._webSizeValue){\r\n\t\t\tif (this._isWrapped()){\r\n\r\n\t\t\t\tif (this._webSizeValue.Value == 100 && this._webSizeValue.Unit.Value == '%'){\r\n\t\t\t\t\treturn `${this._webSizeValue.Value}${this._webSizeValue.Unit.Value}`;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn `calc(${this._webSizeValue.Value}${this._webSizeValue.Unit.Value} - 5px)`;\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\t\t\t\treturn `${this._webSizeValue.Value}${this._webSizeValue.Unit.Value}`;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn \"100%\";\r\n\t\t}\r\n\t}\r\n\r\n\tGetWrapped():boolean{\r\n\t\tif (this._isWrapped() && this._webSizeValue){\r\n\t\t\treturn !(this._webSizeValue.Value == 100 && this._webSizeValue.Unit.Value == '%');\r\n\t\t} else {\r\n\t\t\treturn this._isWrapped();\r\n\t\t}\r\n\t}\r\n\r\n\tget IsWrapped():boolean{\r\n\t\treturn this.GetWrapped();\r\n\t}\r\n\r\n\tget Width(): string {\r\n\t\treturn this.GetWidth();\r\n\t}\r\n\r\n\tSetValue(value: any): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\r\n\t\tif (this._elem().length === 0){\r\n\t\t\tthis._elem(el);\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-object-group\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ConsultScreenView EditScreenView\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <fieldset class=\\\"group-control\\\"> <!-- ko if: !!Label --> <legend class=\\\"group-control-label\\\" data-bind=\\\"text: Label\\\"></legend> <!-- /ko --> <div class=\\\"group-elements\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> </fieldset> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ConsultScreenView EditScreenView group-control--container\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: {'width': Width},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'isWrapped': IsWrapped}\\\"> <fieldset class=\\\"group-control\\\"> <!-- ko if: !!Name --> <legend class=\\\"group-control-label\\\" data-bind=\\\"text: Name\\\"></legend> <!-- /ko --> <div class=\\\"group-elements\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> </fieldset> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"FormDesignerView group-control--container\\\"> <fieldset class=\\\"group-control grid\\\"> <!-- ko if: !!Label --> <legend class=\\\"group-control-label\\\"> <!-- ko text: Label --><!-- /ko --> </legend> <!-- /ko --> <div data-bind=\\\"dragula: { data: _subControls, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropControl.bind($root) }\\\" class=\\\"group-elements dropcontrol-container group-elements\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> </fieldset> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ConsultScreenView EditScreenView group-control--container\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: {'width': Width},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'isWrapped': IsWrapped}\\\"> <fieldset class=\\\"group-control\\\"> <!-- ko if: !!Name --> <legend class=\\\"group-control-label\\\" data-bind=\\\"text: Name\\\"></legend> <!-- /ko --> <div class=\\\"group-elements\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> </fieldset> </div>\";\n// Exports\nexport default code;","export const PROPERTIES = {\r\n GROUP_WEB_SIZE: 'GroupWebSize',\r\n GROUP_WRAPPED: 'GroupWrapped'\r\n};","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data),\\r\\n\\tcss: {\\r\\n\\t\\t'aling-left': $data._alignment() === 'text-left',\\r\\n\\t \\t'aling-center': $data._alignment() === 'text-center',\\r\\n\\t \\t'aling-right': $data._alignment() === 'text-right'\\r\\n\\t }\\\" class=\\\"ConsultScreenView EditScreenView FormDesignerView new-control label-control\\\"> <label data-bind=\\\"text: Name, tooltip: DescriptionToolTip,\\r\\n\\t\\t \\t css: {\\r\\n\\t\\t'underlined': $data._isUnderlined,\\r\\n\\t\\t'h1': $data._selectHeader() === 'h1',\\r\\n\\t \\t'h2': $data._selectHeader() === 'h2',\\r\\n\\t \\t'h3': $data._selectHeader() === 'h3',\\r\\n\\t \\t'h4': $data._selectHeader() === 'h4',\\r\\n\\t \\t'h5': $data._selectHeader() === 'h5',\\r\\n\\t \\t'h6': $data._selectHeader() === 'h6'\\r\\n\\t }\\\" class=\\\"header-number selectHeaderBtn\\\"></label> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\n\r\nimport {RenderModes} from 'Core/Constant';\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport LabelConfig from \"Core/Controls/Label/Configs/label-config.json\";\r\n\r\n\r\nimport HelpViewTemplate from 'Core/Controls/Label/Templates/HelpView.html'\r\nimport ViewTemplate from 'Core/Controls/Label/Templates/View.html'\r\nimport ToolBarTemplate from 'Core/Controls/Label/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/Label/Templates/Design.html'\r\n\r\nko.templates['Core/Controls/Label/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Label/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Label/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Label/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Label/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Label extends BaseControl {\r\n\tprivate _isUnderlined: KnockoutObservable<boolean>;\r\n\tprivate _alignment: KnockoutObservable<string>;\r\n\tprivate _selectHeader: KnockoutObservable<string>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, LabelConfig);\r\n\r\n\t\tthis._isUnderlined = ko.observable(null);\r\n\t\tthis._selectHeader = ko.observable('h3');\r\n\t\tthis._alignment = ko.observable(null);\r\n\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tlet headerProperty = this.GeneralProperties.GetPropertyValue(\"SelectHeader\");\r\n\t\tlet underlinedButtonProperty = this.GeneralProperties.GetPropertyValue(\"UnderlinedButton\");\r\n\t\tlet selectAlignmentProperty = this.GeneralProperties.GetPropertyValue(\"SelectAlignment\");\r\n\t\t\t\r\n\t\tthis._isUnderlined(underlinedButtonProperty);\r\n\t\tthis._selectHeader(headerProperty ? headerProperty.Value : null);\r\n\t\tthis._alignment(selectAlignmentProperty ? selectAlignmentProperty.Value : null);\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-pencil\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"css: {\\r\\n\\t\\t'aling-left': $data._alignment() === 'text-left',\\r\\n\\t \\t'aling-center': $data._alignment() === 'text-center',\\r\\n\\t \\t'aling-right': $data._alignment() === 'text-right'\\r\\n\\t }\\\" class=\\\"ConsultScreenView EditScreenView FormDesignerView new-control margin-b-5px label-control\\\"> <label data-bind=\\\"text: Label,\\r\\n\\t\\t \\t css: {\\r\\n\\t\\t'underlined': $data._isUnderlined,\\r\\n\\t\\t'h1': $data._selectHeader() === 'h1',\\r\\n\\t \\t'h2': $data._selectHeader() === 'h2',\\r\\n\\t \\t'h3': $data._selectHeader() === 'h3',\\r\\n\\t \\t'h4': $data._selectHeader() === 'h4',\\r\\n\\t \\t'h5': $data._selectHeader() === 'h5',\\r\\n\\t \\t'h6': $data._selectHeader() === 'h6'\\r\\n\\t }\\\" class=\\\"header-number selectHeaderBtn\\\"></label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"css: {\\r\\n\\t\\t'aling-left': $data._alignment() === 'text-left',\\r\\n\\t \\t'aling-center': $data._alignment() === 'text-center',\\r\\n\\t \\t'aling-right': $data._alignment() === 'text-right'\\r\\n\\t }\\\" class=\\\"ConsultScreenView EditScreenView FormDesignerView new-control margin-b-5px label-control\\\"> <label data-bind=\\\"text: Name,\\r\\n\\t\\t \\t css: {\\r\\n\\t\\t'underlined': $data._isUnderlined,\\r\\n\\t\\t'h1': $data._selectHeader() === 'h1',\\r\\n\\t \\t'h2': $data._selectHeader() === 'h2',\\r\\n\\t \\t'h3': $data._selectHeader() === 'h3',\\r\\n\\t \\t'h4': $data._selectHeader() === 'h4',\\r\\n\\t \\t'h5': $data._selectHeader() === 'h5',\\r\\n\\t \\t'h6': $data._selectHeader() === 'h6'\\r\\n\\t }\\\" class=\\\"header-number\\\"></label> </div>\";\n// Exports\nexport default code;","\r\nexport const PROPERTIES = {\r\n HEIGHT_PX: 'HeightPX',\r\n HEIGHT_AUTO: 'HeightAuto',\r\n}","import * as ko from 'knockout'\r\nimport * as _ from \"underscore\";\r\n\r\nimport {EventTracker, EVENTS_TO_LISTEN} from \"Core/Common/EventTracker\";\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {TranslationModel} from \"Core/ScreenManager/Models/TranslationModel\";\r\nimport {TranslationFieldEditor} from \"Core/Components/TranslationFieldEditor/TranslationFieldEditor\";\r\n\r\nimport {FONT_STYLES, RenderModes} from 'Core/Constant';\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport MemoConfig from 'Core/Controls/Memo/Configs/memo-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/Memo/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/Memo/Templates/HelpView.html'\r\nimport ToolBarTemplate from 'Core/Controls/Memo/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/Memo/Templates/Design.html'\r\nimport EditTemplate from 'Core/Controls/Memo/Templates/Edit.html'\r\nimport {TranslationManager} from \"../../Components/Translation/TranslationManager\";\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport {PROPERTIES} from \"Core/Controls/Memo/Constants\";\r\nimport { data } from 'jquery';\r\n\r\nko.templates['Core/Controls/Memo/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Memo/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Memo/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Memo/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Memo/Templates/Edit'] = EditTemplate;\r\n\r\nexport class Memo extends BaseControl {\r\n private _isNewRecord: boolean;\r\n\r\n private _value: KnockoutObservable<string>;\r\n private _editor: any;\r\n private _originalValue: string;\r\n private _labelStyle: KnockoutObservable<any>;\r\n\r\n private _serverTranslations: TranslationModel[];\r\n private _translationFieldEditor: TranslationFieldEditor;\r\n private _memoHeightPX: KnockoutObservable<number>;\r\n private _memoHeightAuto: KnockoutObservable<string>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, MemoConfig);\r\n this._value = ko.observable('');\r\n this._labelStyle = ko.observable(null);\r\n this._memoHeightPX = ko.observable(null);\r\n this._memoHeightAuto = ko.observable(null);\r\n\r\n this._translationFieldEditor = new TranslationFieldEditor();\r\n\r\n this.Init();\r\n this.BindEvents();\r\n\r\n if (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n this.ApplyLinkEditorStyles();\r\n }\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if(!this.FieldModel.HasLinkEditorVisibility){\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = FONT_STYLES.NORMAL;\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch ( style.Name.toLowerCase() ) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n })\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n GetDefaultTranslation() {\r\n return this._translationFieldEditor.GetDefaultTranslation();\r\n }\r\n\r\n GetTranslations() {\r\n return this._translationFieldEditor.GetTranslations(false);\r\n }\r\n\r\n private Init(): void {\r\n this.ApplyProperties();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n if (this.Properties.IsWrapped) {\r\n _.each(this.Properties.IsWrapped.Properties, (item: any) => {\r\n this.ApplyWrapTextProperty(item.WrapText);\r\n });\r\n }\r\n\r\n this._memoHeightPX(!!this.GeneralProperties.GetPropertyValue(PROPERTIES.HEIGHT_PX) ? this.GeneralProperties.GetPropertyValue(PROPERTIES.HEIGHT_PX) : '');\r\n this._memoHeightAuto(!!this.GeneralProperties.GetPropertyValue(PROPERTIES.HEIGHT_AUTO) ? this.GeneralProperties.GetPropertyValue(PROPERTIES.HEIGHT_AUTO) : false);\r\n }\r\n }\r\n\r\n private GetLanguages() {\r\n if (this.IsTranslatable()) {\r\n if (this._translationFieldEditor.TranslationItemsList.length == 0) {\r\n this._translationFieldEditor.LoadTranslationItems();\r\n }\r\n const languages = this._translationFieldEditor.TranslationItemsList.map(translation => translation.Language);\r\n const activeLanguage = this._translationFieldEditor.ActiveTranslation.Language;\r\n\r\n return {\r\n List: languages,\r\n Active: activeLanguage\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private OnChangeLanguage(id: number) {\r\n const selectedTranslation = this._translationFieldEditor.GetTranslationById(id);\r\n this._translationFieldEditor.SelectTranslation(selectedTranslation);\r\n\r\n const selectedValue = selectedTranslation.Value();\r\n this._editor.setContent(selectedValue || '');\r\n this._value(selectedValue);\r\n }\r\n\r\n ApplyWrapTextProperty(wrapText) {\r\n this._isWrapped(wrapText);\r\n this._form && this._form.Wrap(this, wrapText);\r\n if (this._parentControl) {\r\n this._parentControl.SetIsWrapped(true);\r\n }\r\n\r\n }\r\n\r\n private BindEvents() {\r\n if (this._renderMode() === RenderModes.Design) {\r\n this._model.subscribe(() => this.Init());\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.Data) {\r\n this._isNewRecord = value.RecordSpecsModel && value.RecordSpecsModel.IsNewRecord;\r\n this._originalValue = value.Data.Value && _.unescape(value.Data.Value) || '';\r\n\r\n let currentValue = this._originalValue;\r\n\r\n if (this.IsTranslatable()) {\r\n this._serverTranslations = value.Data.Translations;\r\n\r\n const translation = this.GetTranslation(value.Data);\r\n currentValue = translation.TranslatedValue || translation.Value;\r\n\r\n this._translationFieldEditor.LoadTranslationItems();\r\n this._translationFieldEditor.SetTranslations(value.Data.Translations, value.Data.Value === null ? '' : value.Data.Value);\r\n this._translationFieldEditor.SetActiveTranslation(translation.Language.Id);\r\n }\r\n\r\n this._value(currentValue);\r\n\r\n if (this._editor) {\r\n this._editor.setContent(this._value() || '');\r\n }\r\n }\r\n }\r\n\r\n AfterInit(editor) {\r\n this._editor = editor;\r\n this._editor.setContent(this._value() || '');\r\n this.Trigger('READY');\r\n }\r\n\r\n Deserialize() {\r\n const field = _.first(this._model().Fields);\r\n\r\n if (this._editor && field && !this._isReadonly) {\r\n\r\n const serializedValue = [`${field.EntityName}.${field.Name}`];\r\n\r\n if (this.IsTranslatable()) {\r\n const defaultTranslation = this._translationFieldEditor.GetDefaultTranslation().Value;\r\n serializedValue.push(defaultTranslation);\r\n\r\n const activeTranslations = this._translationFieldEditor.GetTranslations(false);\r\n const changedTranslations = activeTranslations.map(translation => {\r\n const languageShortName = TranslationManager.Instance.GetLanguageById(translation.LanguageId).ShortName;\r\n return !translation.Value ? `${languageShortName}_` : `${languageShortName}_${translation.Value}`;\r\n });\r\n\r\n serializedValue.push(...changedTranslations);\r\n return serializedValue;\r\n }\r\n\r\n serializedValue.push(this._value());\r\n return serializedValue;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n AfterChange(content) {\r\n EventTracker.Instance.RegisterEvent(EVENTS_TO_LISTEN.KEYUP);\r\n\r\n this._value(content);\r\n\r\n const currentValue = this._value();\r\n\r\n if (this.IsTranslatable()) {\r\n this._translationFieldEditor.ActiveTranslation.Value(currentValue);\r\n }\r\n }\r\n\r\n IsModified(): boolean {\r\n if (super.IsModified()) {\r\n return true;\r\n }\r\n\r\n if (!this.IsTranslatable()) {\r\n return this._value() !== this._originalValue;\r\n }\r\n\r\n const defaultTranslation = this._translationFieldEditor.GetDefaultTranslation().Value;\r\n const activeTranslations = this._translationFieldEditor.GetTranslations(false);\r\n\r\n if (this._isNewRecord) {\r\n return defaultTranslation !== this._originalValue || _.any(activeTranslations, activeTranslation => !!activeTranslation.Value);\r\n }\r\n\r\n const translationDiffExists = _.any(activeTranslations, activeTranslation => {\r\n const serverTranslation = _.find(this._serverTranslations, serverTranslation => serverTranslation.LanguageId === activeTranslation.LanguageId);\r\n return serverTranslation && activeTranslation.Value !== serverTranslation.Value;\r\n });\r\n\r\n return defaultTranslation !== this._originalValue || translationDiffExists;\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this._isRequired && (this._value() === '' || this._value() === undefined)) {\r\n this._isValid(false);\r\n } else {\r\n this._isValid(true);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n GetValue() {\r\n return `${this._value()}`;\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"memo-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-lightbulb-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"memo-control\\\" data-bind=\\\"css: {'wrapped-memo': _isWrapped()}, attr: { 'data-control-position': LabelPosition }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView memo-control-container form-standart-control clearfix\\\"> <label data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></label> <textarea data-bind=\\\"attr: {id: _guid},\\r\\n\\t\\t\\t\\t\\t tinymce : {\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tguid: _guid,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tafterInit: $data.AfterInit.bind($data),\\r\\n\\t\\t\\t\\t\\t \\t\\t\\treadOnly: true,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\theight: _memoHeightPX(),\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tautoresize: _memoHeightAuto(),\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tquickEdit: $parents[1].IsEditMode\\r\\n\\t\\t\\t\\t\\t \\t\\t}\\\" cols=\\\"50\\\" rows=\\\"5\\\" placeholder=\\\"Memo\\\" readonly=\\\"\\\" style=\\\"display:none\\\" aria-hidden=\\\"true\\\">\\r\\n\\t</textarea> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"memo-control\\\" data-bind=\\\"css: {'wrapped-memo': _isWrapped()}, attr: { 'data-control-position': LabelPosition }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView memo-control-container form-standart-control clearfix\\\"> <label data-bind=\\\"text: Label, attr: {'title': Label }\\\"></label> <textarea data-bind=\\\"attr: {id: _guid},\\r\\n\\t\\t\\t\\t\\t tinymce : {\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tguid: _guid,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tafterInit: $data.AfterInit.bind($data),\\r\\n\\t\\t\\t\\t\\t \\t\\t\\treadOnly: true,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tmin_height: '100'\\r\\n\\t\\t\\t\\t\\t \\t\\t}\\\" cols=\\\"50\\\" rows=\\\"5\\\" placeholder=\\\"Memo\\\" readonly=\\\"\\\" style=\\\"display:none\\\" aria-hidden=\\\"true\\\">\\r\\n\\t</textarea> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"memo-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView memo-control-container form-standart-control\\\"> <label data-bind=\\\"text: Label, attr: {'title': Label }\\\"></label> <textarea data-bind=\\\"attr: { placeholder: Label }\\\" class=\\\"form-control control\\\" rows=\\\"5\\\" readonly=\\\"\\\"></textarea> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"memo-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition },\\r\\n\\t \\t\\t\\tcss: {'has-error': !_isValid(), 'wrapped-memo': _isWrapped(), 'full-width-control': FieldModel.FullWidth},\\r\\n\\t \\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"EditScreenView memo-control-container form-standart-control\\\"> <div data-bind=\\\"tooltip: DescriptionToolTip\\\" class=\\\"clearfix\\\"> <label data-bind=\\\"text: Label, style: _labelStyle\\\"></label> </div> <textarea data-bind=\\\"hasFocus: IsFocused,\\r\\n\\t\\t\\t\\t\\t\\t attr: {id: _guid, 'tabindex': GetCombinedReadOnly() ? -1 : 1},\\r\\n\\t\\t\\t\\t\\t\\t tinymce : {guid: _guid,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tafterChange: $data.AfterChange.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tafterInit: $data.AfterInit.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treadOnly: GetCombinedReadOnly(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlanguages: $data.GetLanguages(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tonChangeLanguage: $data.OnChangeLanguage.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tautoresize: _memoHeightAuto(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\theight: _memoHeightPX(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tquickEdit: $parents[1].IsGridRow}\\\" cols=\\\"50\\\" rows=\\\"5\\\" placeholder=\\\"Memo\\\" readonly=\\\"\\\" style=\\\"display:none\\\" aria-hidden=\\\"true\\\">\\r\\n\\t</textarea> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport { DEFAULT_ICONS } from \"Core/Constant\";\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam, IScreen} from 'Core/Screens/IScreen';\r\nimport {DocumentStore, IGetDocumentDataRequestModel} from 'Core/Controls/Document/Stores/DocumentStore';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {DocumentManager} from 'Core/Components/Controls/DocumentManager/DocumentManager';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {DocumentDataModel} from 'Core/Controls/Document/DocumentDataModel';\r\nimport {EVENTS} from 'Core/Components/Controls/DocumentManager/Events';\r\n\r\nimport EditTemplate from 'Core/Controls/Document/Templates/Edit.html';\r\nimport HelpViewTempalte from 'Core/Controls/Document/Templates/HelpView.html';\r\nimport ViewTempalte from 'Core/Controls/Document/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/Document/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Document/Templates/Design.html';\r\n\r\nko.templates['Core/Controls/Document/Templates/View'] = ViewTempalte;\r\nko.templates['Core/Controls/Document/Templates/HelpView'] = HelpViewTempalte;\r\nko.templates['Core/Controls/Document/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Document/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Document/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Document extends BaseControl {\r\n\tprivate _documentManager: KnockoutObservable<DocumentManager>;\r\n\tprivate _notifier: Notifier;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.SetDefaultIcon(new Icon(DEFAULT_ICONS.Document));\r\n\t\tthis._notifier = new Notifier();\r\n\t\tthis._documentManager = ko.observable(null);\r\n\t}\r\n\r\n\tget DocumentManager(): KnockoutObservable<DocumentManager> {\r\n\t\treturn this._documentManager;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.SubjectRecordId !== 0) {\r\n\t\t\tthis.LoadData();\r\n\t\t}\r\n\t}\r\n\r\n\tget ScreenType(): string {\r\n\t\treturn this._form ? this._form.GetScreen().GetType() : null;\r\n\t}\r\n\r\n\tget Screen(): IScreen {\r\n\t\treturn this._form ? this._form.GetScreen() : null;\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tif (this._form) {\r\n\t\t\tconst subjectEntityId = this._form.GetScreen().GetEntityId();\r\n\t\t\tconst subjectRecordId = this._form.GetScreen().GetRecordId();\r\n\r\n\t\t\tconst requestModel: IGetDocumentDataRequestModel = {\r\n\t\t\t\tSubjectEntityId: subjectEntityId,\r\n\t\t\t\tSubjectRecordId: subjectRecordId,\r\n\t\t\t\tFieldId: this.GetFieldId()\r\n\t\t\t};\r\n\r\n\t\t\tDocumentStore.GetData(requestModel)\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tthis._notifier.Failed(err.message);\r\n\t\t\t\t})\r\n\t\t\t\t.then((data: DocumentDataModel) => {\r\n\t\t\t\t\tconst documentManager =\r\n\t\t\t\t\t\tnew DocumentManager(\r\n\t\t\t\t\t\t\tthis.ScreenType,\r\n\t\t\t\t\t\t\tthis.Screen,\r\n\t\t\t\t\t\t\tdata,\r\n\t\t\t\t\t\t\tthis.GetFieldModel().EntityId,\r\n\t\t\t\t\t\t\tthis.GetFieldModel().EntityTypeName,\r\n\t\t\t\t\t\t\tthis.GetFieldModel().Id,\r\n\t\t\t\t\t\t\tthis.GetFieldModel().Name,\r\n\t\t\t\t\t\t\tdata && data.IsEnableMail\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\tthis._documentManager(documentManager);\r\n\t\t\t\t\tthis._documentManager().On(EVENTS.UPDATED, this, (eventArgs) => this.LoadData());\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<div> <!-- ko with: DocumentManager --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <!-- ko with: DocumentManager --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-file-text-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"visible: true, click: Click, style: _style\\\" class=\\\"btn blue-dark subFormControl return-button\\\"> <i class=\\\"fa fa-mail-reply-all\\\" align=\\\"center\\\"></i><span><!-- ko text: _labels.RETURN --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\n\r\nimport ReturnButtonConfig from \"Core/Controls/ButtonReturn/Configs/return-button-config.json\";\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonReturn/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/ButtonReturn/Templates/HelpView.html'\r\nimport ToolBarTemplate from 'Core/Controls/ButtonReturn/Templates/ToolBar.html'\r\n\r\nko.templates['Core/Controls/ButtonReturn/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/ButtonReturn/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonReturn/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonReturn/Templates/Design'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonReturn/Templates/ToolBar'] = ToolBarTemplate;\r\n\r\nexport class ButtonReturn extends BaseControl {\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, ReturnButtonConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n\t}\r\n\r\n Click(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tscreen.Trigger(\"SHOW_PREVIOUS_SCREEN\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a class=\\\"btn blue-dark subFormControl return-button\\\" data-bind=\\\"style: _style\\\"> <i class=\\\"fa fa-mail-reply-all\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.RETURN --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-dark subFormControl return-button\\\"> <i class=\\\"fa fa-mail-reply-all\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.RETURN --><!-- /ko --> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore'\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {SubForm} from 'Core/Screens/Forms/SubForm/SubForm'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {Notifier} from \"Core/Common/Notifier\"\r\nimport {RenderModes, PASSWORD, FONT_STYLES} from 'Core/Constant'\r\n\r\nimport PasswordConfig from 'Core/Controls/Password/Configs/password-config.json'\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties'\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport HelpViewTemplate from 'Core/Controls/Password/Templates/HelpView.html'\r\nimport ViewTemplate from 'Core/Controls/Password/Templates/View.html'\r\nimport EditTemplate from 'Core/Controls/Password/Templates/Edit.html'\r\nimport ToolBarTemplate from 'Core/Controls/Password/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/Password/Templates/Design.html'\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\n\r\nko.templates['Core/Controls/Password/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Password/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Password/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Password/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Password/Templates/Design'] = DesignTemplate;\r\n\r\nexport const events = {PasswordApplied: \"PasswordActionApplied\"};\r\n\r\nexport enum PasswordActions {\r\n None,\r\n Revoke\r\n};\r\n\r\nexport class Password extends BaseControl {\r\n private _value: KnockoutObservable<string>;\r\n private _labelStyle: KnockoutObservable<any>;\r\n private _textInputStyle: KnockoutObservable<any>;\r\n private _actionsIsVisible: boolean;\r\n private _action: number;\r\n private _isHidden: KnockoutObservable<boolean>;\r\n private _isFirstChange: boolean;\r\n private _isEyeEnable: KnockoutObservable<boolean>;\r\n private _isModified: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, PasswordConfig);\r\n this._value = ko.observable(PASSWORD.DefaultValue);\r\n this.AddEvent(events.PasswordApplied);\r\n this._labelStyle = ko.observable(null);\r\n this._textInputStyle = ko.observable(null);\r\n this._action = PasswordActions.None;\r\n this._isHidden = ko.observable(true);\r\n this._isFirstChange = false;\r\n this._isEyeEnable = ko.observable(true);\r\n this._isModified = ko.observable(false);\r\n\r\n\r\n this.ApplyProperties();\r\n this._value.subscribe((value) => {\r\n this._action = PasswordActions.None;\r\n if (value && value[value.length - 1] === ' ') {\r\n this._value(value.trim());\r\n }\r\n });\r\n this.On(events.PasswordApplied, this, eventArgs => this.PasswordActionApplied(eventArgs.data.Action));\r\n }\r\n\r\n get SelectedAction() {\r\n return this._action;\r\n }\r\n\r\n private PasswordActionApplied(passwordAction: PasswordActions) {\r\n const notificationText = {};\r\n notificationText[PasswordActions.None] = '';\r\n notificationText[PasswordActions.Revoke] = NOTIFICATIONS.PASSWORD_REVOKED;\r\n\r\n var target = this.GetForm().GetScreen().GetWrapper();\r\n new Notifier($(target)).Success(notificationText[passwordAction]);\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n //Label\r\n if (this.Properties.Label) {\r\n var labelStyle = {backgroundColor: null, color: null};\r\n _.each(this.Properties.Label.Properties,\r\n (property: any) => {\r\n if (property.BackgroundColor) {\r\n labelStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n\r\n if (property.Color) {\r\n labelStyle.color = property.Color;\r\n }\r\n });\r\n\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n //TextInput\r\n if (this.Properties.TextInput) {\r\n var textInputStyle = {backgroundColor: null};\r\n _.each(this.Properties.TextInput.Properties,\r\n (property: any) => {\r\n if (property.BackgroundColor) {\r\n textInputStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n });\r\n\r\n this._textInputStyle(textInputStyle);\r\n }\r\n\r\n //PasswordActions\r\n if (this.Properties.PasswordActions) {\r\n _.each(this.Properties.PasswordActions.Properties,\r\n (property: any) => {\r\n if (property.DisplayActions) {\r\n this._actionsIsVisible = property.DisplayActions;\r\n }\r\n });\r\n }\r\n }\r\n if (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n this.ApplyLinkEditorStyles();\r\n }\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if (!this.FieldModel.HasLinkEditorVisibility) {\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = FONT_STYLES.NORMAL; //default fontWeight\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch (style.Name.toLowerCase()) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n })\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n PasswordFocused() {\r\n if (this._value() == PASSWORD.DefaultValue) {\r\n this._value('');\r\n this._isModified(true);\r\n }\r\n this._isEyeEnable(true);\r\n }\r\n\r\n TryToRefill() {\r\n if (!this._value()) {\r\n this._isEyeEnable(false);\r\n this._isHidden(true);\r\n }\r\n }\r\n\r\n PasswordRevoke(): void {\r\n this._value(null);\r\n this._action = PasswordActions.Revoke;\r\n this.Trigger(events.PasswordApplied, {Action: PasswordActions.Revoke});\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.RecordSpecsModel && value.RecordSpecsModel.IsNewRecord) {\r\n this._isModified(true);\r\n if (value.RecordSpecsModel.IsExample) {\r\n return;\r\n }\r\n }\r\n\r\n if (value.Data) {\r\n this._value(value.Data.Value);\r\n this._isEyeEnable(false);\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>): void {\r\n super.AfterRender(el);\r\n }\r\n\r\n Deserialize() {\r\n var field = _.first(this._model().Fields);\r\n if (field) {\r\n if (!this.GetCombinedReadOnly()) {\r\n return [`${field.EntityName}.${field.Name}`, this._value()];\r\n } else {\r\n return PASSWORD.DefaultValue;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n\r\n IsValid(): boolean {\r\n if (this._action === PasswordActions.Revoke) {\r\n this._isValid(true);\r\n return this._isValid();\r\n }\r\n\r\n if (!this._value()) {\r\n this._isValid(!this._isRequired);\r\n return this._isValid();\r\n }\r\n\r\n if (this._isModified() && this._value().length < PASSWORD.MinimumLength) {\r\n this._isValid(false);\r\n const passwordValidationMessage = NOTIFICATIONS.INCORECT_PASSWORD_LENGTH.replace('{MinimumLength}', PASSWORD.MinimumLength.toString());\r\n let wrapper = null;\r\n if (this.GetForm()) {\r\n wrapper = $(this.GetForm().GetScreen().GetWrapper());\r\n }\r\n new Notifier(wrapper).Warning(passwordValidationMessage);\r\n return this._isValid();\r\n }\r\n\r\n this._isValid(true);\r\n return this._isValid();\r\n }\r\n\r\n GetValue(): any {\r\n return this._value();\r\n }\r\n\r\n IsModified(): boolean {\r\n return this._isModified();\r\n }\r\n\r\n ShowOrHidePassword() {\r\n this._isHidden(!this._isHidden());\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div data-bind=\\\"style: _textInputStyle, text: Label\\\" type=\\\"password\\\" class=\\\"form-control control record-field with-label textarea-control password\\\"></div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"password-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div data-bind=\\\"text: Label, style: _textInputStyle\\\" type=\\\"password\\\" class=\\\"form-control control record-field with-label textarea-control password\\\"></div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display },\\r\\n\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\" class=\\\"password-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition },\\r\\n\\t\\t\\t\\t\\tcss: {'has-error': !_isValid()}\\\" class=\\\"EditScreenView label-input form-standart-control clearfix\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> </label> <textarea data-bind=\\\"textInput: _value, \\r\\n\\t\\t\\t\\t\\t\\t event: {focus: $data.PasswordFocused.bind($data), blur: $data.TryToRefill.bind($data)},\\r\\n\\t\\t\\t\\t\\t\\t style: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t attr: {'readonly': GetCombinedReadOnly(), 'required': _isRequired, 'tabindex': GetCombinedReadOnly() ? -1 : 1 },\\r\\n\\t\\t\\t\\t\\t\\t css: {'password': _isHidden, 'actionsIsVisible': $data._actionsIsVisible}\\\" class=\\\"form-control control record-field with-label es-textarea-control subFormControl password-input\\\" type=\\\"text\\\" rows=\\\"1\\\">\\r\\n\\t\\t</textarea> <div class=\\\"input-group-btn password-actions\\\" data-bind=\\\"css: {'actionsIsVisible': $data._actionsIsVisible}\\\"> <!-- ko ifnot: GetCombinedReadOnly() --> <button data-bind=\\\"click: ShowOrHidePassword,\\r\\n\\t\\t\\t\\t\\t\\t\\t enable: _isEyeEnable,\\r\\n\\t\\t\\t\\t\\t\\t\\t css: {'float-right': !$data._actionsIsVisible}\\\" type=\\\"button\\\" class=\\\"btn show-hide-password-btn grey\\\"> <i data-bind=\\\"css: {'fa-eye': _isHidden, 'fa-eye-slash': !_isHidden()}\\\" class=\\\"fa\\\" aria-hidden=\\\"true\\\"> </i> </button> <button data-bind=\\\"css: {hidden: !$data._actionsIsVisible}\\\" type=\\\"button\\\" class=\\\"btn dropdown-toggle reset-password-btn grey\\\" data-toggle=\\\"dropdown\\\"> <i class=\\\"fa fa-cog\\\" aria-hidden=\\\"true\\\"> </i> </button> <ul class=\\\"dropdown-menu pull-right\\\"> <li> <a class=\\\"password-action\\\" data-bind=\\\"click: PasswordRevoke\\\"> <!-- ko text: _labels.REVOKE_LABEL --><!-- /ko --> </a> </li> </ul> <!--/ko--> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div data-bind=\\\"style: _textInputStyle, text: Label\\\" type=\\\"password\\\" class=\\\"form-control control record-field with-label textarea-control password\\\"></div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport _ from \"underscore\";\r\n\r\nimport {SelectUserModel, UserGroupModel, UserModel} from \"./SelectUserModel\";\r\n\r\nexport class SelectUserFormViewModel {\r\n\tUserGroups: KnockoutObservableArray<UserGroupViewModel>;\r\n\tUsers: KnockoutObservableArray<UserViewModel>;\r\n\tAllUsersGroupChecked: KnockoutObservable<boolean>\r\n\r\n\tconstructor(data: SelectUserModel) {\r\n\t\tthis.UserGroups = ko.observableArray(data.UserGroups.map(group => new UserGroupViewModel(group, group.Users)));\r\n\t\tthis.Users = ko.observableArray( data.Users.map(user=> new UserViewModel(user) ) );\r\n\r\n\t\tthis.AllUsersGroupChecked = ko.observable(null);\r\n\t\tthis.Users().forEach(user => {\r\n\t\t\tuser.Checked.subscribe(() => this.UpdateAllUsersGroupChecked());\r\n\t\t});\r\n\r\n\t\tthis.UpdateAllUsersGroupChecked();\r\n\t}\r\n\r\n\tUpdateAllUsersGroupChecked() {\r\n\t\tif (this.Users().some(user => user.Checked())) {\r\n\t\t\tthis.AllUsersGroupChecked(true);\r\n\t\t} else {\r\n\t\t\tthis.AllUsersGroupChecked(false);\r\n\t\t}\r\n\t}\r\n\r\n\tToSelectUserViewModel() {\r\n\t\tconst model = new SelectUserModel();\r\n\t\tmodel.Users = this.Users().map(user => user.ToUserViewModel());\r\n\r\n\t\tmodel.UserGroups = this.UserGroups().map((userGroup: UserGroupViewModel) => {\r\n\t\t\treturn userGroup.ToUserViewGroupModel(userGroup);\r\n\t\t});\r\n\t\treturn model\r\n\t}\r\n}\r\n\r\nexport class UserViewModel {\r\n\tId: number;\r\n\tName: string;\r\n\tUserName: string;\r\n\tUserTypeName: string;\r\n\tChecked: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(data: UserModel) {\r\n\t\tthis.Id = data.Id;\r\n\t\tthis.Name = data.Name;\r\n\t\tthis.UserName = data.UserName;\r\n\t\tthis.UserTypeName = data.UserTypeName;\r\n\t\tthis.Checked = ko.observable(data.Checked || false);\r\n\t}\r\n\r\n\tToUserViewModel() {\r\n\t\tconst user = new UserModel;\r\n\t\tuser.Id = this.Id;\r\n\t\tuser.Name = this.Name;\r\n\t\tuser.UserTypeName = this.UserTypeName;\r\n\t\tuser.Checked = this.Checked();\r\n\r\n\t\treturn user;\r\n\t}\r\n}\r\n\r\nexport class UserGroupViewModel {\r\n\tId: number;\r\n\tName: string;\r\n\tChecked: KnockoutObservable<boolean>;\r\n\tUsers: KnockoutObservableArray<UserViewModel>;\r\n\tAllUsersChecked: KnockoutComputed<boolean>\r\n\r\n\tconstructor(data: UserGroupModel, users: Array<UserModel>) {\r\n\t\tthis.Id = data.Id;\r\n\t\tthis.Name = data.Name;\r\n\t\tthis.Checked = ko.observable(data.Checked || false);\r\n\t\tthis.Users = ko.observableArray(users.map(user => new UserViewModel(user)));\r\n\r\n\t\tthis.AllUsersChecked = ko.computed({\r\n\t\t\tread: () => {\r\n\t\t\t\tconst users = this.Users();\r\n\t\t\t\tif (_.every(users, user => user.Checked())) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else if (_.some(users, user => user.Checked())) {\r\n\t\t\t\t\treturn null; // a special intermediate state\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\twrite: (value) => {\r\n\t\t\t\tif (value === true) {\r\n\t\t\t\t\t_.each(this.Users(), user => user.Checked(true));\r\n\t\t\t\t} else if (value === false) {\r\n\t\t\t\t\t_.each(this.Users(), user => user.Checked(false));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Synchronize group checkbox with individual checkboxes\r\n\t\t_.each(this.Users(), user => {\r\n\t\t\tuser.Checked.subscribe((value: boolean) => {\r\n\t\t\t\tconst allUsersChecked = _.every(this.Users(), u => u.Checked());\r\n\t\t\t\tconst someUsersChecked = _.some(this.Users(), u => u.Checked());\r\n\r\n\t\t\t\tif (allUsersChecked) {\r\n\t\t\t\t\tthis.AllUsersChecked(true);\r\n\t\t\t\t} else if (someUsersChecked) {\r\n\t\t\t\t\tthis.AllUsersChecked(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.AllUsersChecked(false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tToUserViewGroupModel(userGroup: UserGroupViewModel): UserGroupModel {\r\n\t\tconst newUserGroup = new UserGroupModel();\r\n\t\tnewUserGroup.Id = userGroup.Id;\r\n\t\tnewUserGroup.Name = userGroup.Name;\r\n\t\tnewUserGroup.Users = userGroup.Users().map((user: UserViewModel) => user.ToUserViewModel());\r\n\r\n\t\tlet groupChecked: boolean | null;\r\n\t\tif (_.every(newUserGroup.Users, user => user.Checked)) {\r\n\t\t\tgroupChecked = true;\r\n\t\t} else if (_.some(newUserGroup.Users, user => user.Checked)) {\r\n\t\t\tgroupChecked = null; // a special intermediate state\r\n\t\t} else {\r\n\t\t\tgroupChecked = false;\r\n\t\t}\r\n\t\tnewUserGroup.Checked = groupChecked;\r\n\r\n\t\treturn newUserGroup;\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {SelectUserModel} from 'Core/Controls/SelectUser/Models/SelectUserModel';\r\nimport {SelectUserFormModel} from 'Core/Controls/SelectUser/Models/SelectUserFormModel';\r\nimport {NOTIFICATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\n\r\nimport FormTemplate from 'Core/Controls/SelectUser/Form/Template/Form.html';\r\nimport {SelectUserFormViewModel} from \"Core/Controls/SelectUser/Models/SelectUserFormViewModel\";\r\n\r\nko.templates['Core/Controls/SelectUser/Form/Template/Form'] = FormTemplate;\r\n\r\nexport const EVENTS = {\r\n\tUSERS_SELECTION_CHANGED: 'UsersSelectionChanged'\r\n};\r\n\r\nexport class SelectUserForm extends Event {\r\n\tprivate _model: KnockoutObservable<SelectUserFormViewModel>;\r\n\tprivate _modal: Modal;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(model: SelectUserModel) {\r\n\t\tsuper();\r\n\t\tthis._model = ko.observable(new SelectUserFormViewModel(model));\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tShow() {\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tApplySelection() {\r\n\t\tconst model = this._model().ToSelectUserViewModel();\r\n\t\tnew Notifier().Success(NOTIFICATIONS.SELECTION_APPLIED);\r\n\t\tthis.Close();\r\n\t\tthis.Trigger(EVENTS.USERS_SELECTION_CHANGED, model);\r\n\t}\r\n\r\n\tResetSelection() {\r\n\t\tthis._model().Users().forEach(user => user.Checked(false));\r\n\t\tthis._model().UserGroups().forEach((userGroup ) => {\r\n\t\t\tuserGroup.Checked(false);\r\n\t\t\tuserGroup.Users().forEach(user => user.Checked(false))\r\n\t\t});\r\n\t}\r\n\r\n\tClose() {\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/SelectUser/Form/Template/Form';\r\n\t}\r\n\r\n\tAfterRender(el) {\r\n\t\t$(document).ready(function () {\r\n\t\t\t// Add 'panel-open' class when the collapse is shown\r\n\t\t\t$('.panel-collapse').on('show.bs.collapse', function () {\r\n\t\t\t\t$(this).closest('.panel').addClass('panel-open');\r\n\t\t\t});\r\n\r\n\t\t\t// Remove 'panel-open' class when the collapse is hidden\r\n\t\t\t$('.panel-collapse').on('hide.bs.collapse', function () {\r\n\t\t\t\t$(this).closest('.panel').removeClass('panel-open');\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tthis._modal = new Modal({\r\n\t\t\twidth: MobileChecker.IsMobile() ? '100vw' : '700',\r\n\t\t\theight: MobileChecker.IsMobile() ? '100vh' : '600',\r\n\t\t\taddClass: MobileChecker.IsMobile() ? 'mobileSelectUser' : 'desktop-selectUser',\r\n\t\t\tminHeight: '300'\r\n\t\t}, false);\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t}\r\n}","// Module\nvar code = \"<b class=\\\"spacer-background-select-user\\\"></b> <div class=\\\"clearfix select-user-popup\\\"> <!-- ko with: _model --> <div class=\\\"items-list box-shadow-wrapper\\\"> <div class=\\\"user-group-container\\\"> <div class=\\\"panel-group user-group-accordion\\\" id=\\\"\\\" role=\\\"tablist\\\" aria-multiselectable=\\\"false\\\"> <!-- ko foreach: UserGroups --> <div class=\\\"panel panel-default\\\" data-bind=\\\"css:{'panel-open': AllUsersChecked() === null || AllUsersChecked()}\\\"> <div class=\\\"panel-heading\\\" data-bind=\\\"attr:{'id': 'headingGroup'+Id}\\\" role=\\\"tab\\\"> <div class=\\\"panel-title\\\"> <input class=\\\"group-checkmark\\\" data-bind=\\\"checked: AllUsersChecked, css: {'indeterminate': AllUsersChecked() === null}\\\" type=\\\"checkbox\\\"> <span class=\\\"group-checkmark-custom-checkbox\\\" data-bind=\\\"css: {'indeterminate': AllUsersChecked() === null}\\\"></span> <a role=\\\"button\\\" data-toggle=\\\"collapse\\\" data-bind=\\\"attr: {\\r\\n 'href': '#collapseGroup'+Id,\\r\\n 'aria-expanded': AllUsersChecked() === null || AllUsersChecked() ? 'true' : 'false',\\r\\n 'aria-controls': 'collapseGroup'+Id\\r\\n }\\\"> <i></i> <i class=\\\"panel-icon align-middle icon-users\\\"></i> <span class=\\\"select-group-name\\\" data-bind=\\\"text: Name\\\"></span> </a> </div> </div> <div data-bind=\\\"attr:{\\r\\n 'id': 'collapseGroup'+Id,\\r\\n 'aria-labelledby': 'headingGroup'+Id\\r\\n },\\r\\n css: {'in': AllUsersChecked() === null || AllUsersChecked()}\\\" class=\\\"panel-collapse collapse\\\" role=\\\"tabpanel\\\"> <div class=\\\"panel-body\\\"> <div class=\\\"user-group-container\\\"> <!-- ko foreach: Users --> <div class=\\\"user-group-item\\\" data-bind=\\\"css:{'user-active': Checked()}\\\"> <span class=\\\"additional-icon fa fa-user\\\"></span> <label class=\\\"item-label\\\"> <input class=\\\"select-user-input\\\" data-bind=\\\"checked: Checked\\\" type=\\\"checkbox\\\"> <span class=\\\"select-user-name\\\" data-bind=\\\"attr:{ title: Name }, text: Name\\\"></span> </label> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> <div class=\\\"panel-group all-users-group user-group-accordion\\\" id=\\\"\\\" role=\\\"tablist\\\" aria-multiselectable=\\\"false\\\"> <div class=\\\"panel panel-default\\\" data-bind=\\\"css:{'panel-open': AllUsersGroupChecked()}\\\"> <div class=\\\"panel-heading\\\" role=\\\"tab\\\" id=\\\"headingTwo\\\"> <h4 class=\\\"panel-title\\\"> <a class=\\\"collapsed\\\" role=\\\"button\\\" data-bind=\\\"attr: {'aria-expanded': AllUsersGroupChecked() ? 'true' : 'false'}\\\" data-toggle=\\\"collapse\\\" href=\\\"#collapseTwo\\\" aria-controls=\\\"collapseTwo\\\"> <span class=\\\"select-group-name\\\">All Users</span> </a> </h4> </div> <div id=\\\"collapseTwo\\\" class=\\\"panel-collapse collapse\\\" data-bind=\\\"css: {'in': AllUsersGroupChecked()}\\\" role=\\\"tabpanel\\\" aria-labelledby=\\\"headingTwo\\\"> <div class=\\\"panel-body\\\"> <div class=\\\"user-group-container\\\"> <!-- ko foreach: Users --> <div class=\\\"user-group-item\\\" data-bind=\\\"css:{'user-active': Checked()}\\\"> <span class=\\\"additional-icon fa fa-user\\\"></span> <label class=\\\"item-label\\\"> <input class=\\\"select-user-input\\\" data-bind=\\\"checked: Checked\\\" type=\\\"checkbox\\\"> <span class=\\\"select-user-name\\\" data-bind=\\\"attr:{ title: Name }, text: Name\\\"></span> </label> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div> <div class=\\\"clearfix buttons-line\\\"> <a href=\\\"#\\\" class=\\\"btn btn-ok btn-success\\\" data-bind=\\\"click: $parent.ApplySelection.bind($parent)\\\"> <!-- ko text: $parent._labels.OK --><!-- /ko --></a> <a href=\\\"#\\\" class=\\\"reset-btn btn btn-warning\\\" data-bind=\\\"click: $parent.ResetSelection.bind($parent)\\\"> <!-- ko text: $parent._labels.RESET --><!-- /ko --></a> <a href=\\\"#\\\" class=\\\"cancel-btn btn btn-default\\\" data-bind=\\\"click: $parent.Close.bind($parent)\\\"> <!-- ko text: $parent._labels.CANCEL --><!-- /ko --></a> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"select-user-list\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <a class=\\\"btn blue\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\" data-bind=\\\"tooltip:{content:_labels.SELECT_USER}, css: {['selectUserTooltip' + _id] : 'selectUserTooltip' + _id},\\r\\n\\t\\t\\t\\tclick: ShowSelectUserTooltip.bind($data)\\\"> <i class=\\\"fa fa-user-circle\\\"></i> </a> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<ul class=\\\"multi-level\\\"> <li class=\\\"user-group-item\\\"> <a data-bind=\\\"click: Click\\\"> <i class=\\\"fa fa-user-circle\\\"></i> <!-- ko text: _labels.NEW_SELECTION --><!-- /ko --> </a> </li> <!-- ko if: _isShowPlanner() --> <li class=\\\"user-group-item remember-me-item\\\"> <a> <label> <input input type=\\\"checkbox\\\" class=\\\"dropdownSetRemberMe\\\" data-bind=\\\"checked: _isPlanner, click: TogglePlanner.bind($data)\\\"/> <!-- ko text: _labels.PLANNER_LABEL --><!-- /ko --> </label> </a> </li> <!-- /ko --> <!-- ko if: _isShowRememberMe() && _activeSelection() --> <li class=\\\"user-group-item remember-me-item\\\"> <a> <label> <input input type=\\\"checkbox\\\" class=\\\"dropdownSetRemberMe\\\" data-bind=\\\"checked: _isRememberMe, click: SetRememberMe.bind($data)\\\"> <!-- ko text: _labels.REMEMBER_ME --><!-- /ko --> </label> </a> </li> <!-- /ko --> <hr> <li> <!-- ko with: _userSelection --> <!-- ko foreach: UserSelection --> <div class=\\\"user-group-item user-selections\\\" data-bind=\\\"css: {'active-selection': Guid && $parents[1]._activeSelection() && Guid === $parents[1]._activeSelection().Guid},\\r\\n click: $parents[1].ChooseSelection.bind($parents[1], $data)\\\"> <label class=\\\"item-label\\\"> <!-- ko if: Guid && $parents[1]._activeSelection() && Guid === $parents[1]._activeSelection().Guid --> <span class=\\\"active-selection-wrap\\\"> <i class=\\\"fa fa-check active-selection-icon\\\"></i> </span> <!-- /ko --> <div class=\\\"remove-selection-box\\\" data-bind=\\\"click: $parents[1].RemoveSelection.bind($parents[1], $data), preventBubble: ['click']\\\"> <i class=\\\"fa fa-trash\\\"></i> </div> <!-- ko foreach: $data.Users --> <span class=\\\"user-group-item-with-icon\\\"> <!-- ko if: $data.userTypeName && $data.userTypeName !== \\\"\\\" --> <i class=\\\"additional-icon fa fa-user\\\"></i> <!-- /ko --> <!-- ko ifnot: $data.userTypeName && $data.userTypeName !== \\\"\\\" --> <i class=\\\"additional-icon fa fa-users\\\"></i> <!-- /ko --> <a class=\\\"user-group-item-link\\\" data-bind=\\\"text: $data.name\\\"> </a> </span> <!-- /ko --> </label> </div> <!-- /ko --> <!-- /ko --> </li> <!-- ko if: _activeSelection --> <li class=\\\"user-group-item clear-selection-wrap\\\"> <a data-bind=\\\"click: ClearSelection\\\" class=\\\"clear-selection-btn\\\"> <i class=\\\"fa fa-user-times\\\"></i> <span><!-- ko text: _labels.NONE --><!-- /ko --></span> </a> </li> <!-- /ko --> </ul>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {UserManager} from 'User/UserManager';\r\nimport {USER_ALLOWANCE} from 'Core/Constants/UserAllowance';\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam as ControlParam} from 'Core/Screens/IScreen';\r\nimport {EVENTS as SELECT_USER_FORM_EVENTS, SelectUserForm} from 'Core/Controls/SelectUser/Form/SelectUserForm';\r\nimport {SelectUserStore} from 'Core/Controls/SelectUser/Stores/SelectUserStore';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {SelectUserModel, UserGroupModel, UserModel} from 'Core/Controls/SelectUser/Models/SelectUserModel';\r\nimport {SelectUserByBusinessRoleModel} from 'Core/Controls/SelectUser/Models/SelectUserByBusinessRoleModel';\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\n\r\nimport HelpViewTemplate from 'Core/Controls/SelectUser/Templates/HelpView.html';\r\nimport ViewTemplate from 'Core/Controls/SelectUser/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/SelectUser/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/SelectUser/Templates/Design.html';\r\nimport SelectUserPopUpContent from 'Core/Controls/SelectUser/Templates/SelectUserPopUp.html';\r\nimport {RenderModes} from 'Core/Constant';\r\nimport {ISelection, IUserSelection, UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\nimport {util} from \"../../../libs/rappid/build/rappid\";\r\nimport string = util.format.string;\r\n\r\nko.templates['Core/Controls/SelectUser/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/SelectUser/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/SelectUser/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/SelectUser/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/SelectUser/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/SelectUser/Templates/SelectUserPopUp'] = SelectUserPopUpContent;\r\n\r\nexport const EVENTS = {\r\n USERS_SELECTION_CHANGED: 'UsersSelectionChanged'\r\n};\r\n\r\nexport interface CheckedUserAndGroup {\r\n GroupId: number | null;\r\n UserIds: number[];\r\n}\r\n\r\nexport type SelectedUserType = { name: string; userTypeName: string; };\r\n\r\nclass SelectUserState {\r\n ShowPlanned: boolean;\r\n\tSelectedUsersAndGroups: CheckedUserAndGroup[];\r\n\tAppointmentAttendees: SelectUserModel;\r\n\r\n constructor() {\r\n this.SelectedUsersAndGroups = [];\r\n }\r\n\r\n UserSelected(userId: number, userGroupId: number | null) {\r\n return _.some(this.SelectedUsersAndGroups, group => {\r\n if (group.GroupId === userGroupId) {\r\n return group.UserIds.indexOf(userId) > -1;\r\n }\r\n });\r\n }\r\n\r\n UserGroupSelected(userId: number, userGroupId: number | null) {\r\n return _.some(this.SelectedUsersAndGroups, group => {\r\n if (userGroupId !== null && group.GroupId === userGroupId) {\r\n return group.UserIds.indexOf(userId) > -1;\r\n }\r\n return false\r\n });\r\n }\r\n}\r\n\r\nexport class SelectUser extends BaseControl {\r\n private _initialized: boolean;\r\n private _selectUserForm: SelectUserForm;\r\n private _state: SelectUserState;\r\n private _entityId: number;\r\n private _userSelection: KnockoutObservable<ISelection>;\r\n private _isShowRememberMe: KnockoutObservable<boolean>;\r\n private _isRememberMe: KnockoutObservable<boolean>;\r\n private _isShowPlanner: KnockoutObservable<boolean>;\r\n private _isPlanner: KnockoutObservable<boolean>;\r\n private _activeSelection: KnockoutObservable<any>;\r\n private _dropDown: JBoxDropDown;\r\n private _dropDownTooltip: JBoxDropDown;\r\n private _id: string;\r\n\r\n constructor(params: ControlParam) {\r\n super(params);\r\n\r\n this._initialized = false;\r\n\r\n this._userSelection = ko.observable(null);\r\n this._isShowRememberMe = ko.observable(this.RememberMeGlobalEnabled());\r\n this._isRememberMe = ko.observable(null);\r\n this._isShowPlanner = ko.observable(false);\r\n this._isPlanner = ko.observable(false);\r\n this._activeSelection = ko.observable(null);\r\n\r\n if (this.GetTemplateName() !== 'Core/Controls/SelectUser/Templates/HelpView') {\r\n this.Init();\r\n }\r\n this._id = JBoxDropDown.GetDropDownId();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n\r\n const target = \".\" + this._id;\r\n let contentAdded = false;\r\n this._dropDown = new JBoxDropDown({\r\n bindTarget: el[0],\r\n bindComponent: this,\r\n target: target,\r\n onOpen: () => {\r\n if (contentAdded) return;\r\n contentAdded = true;\r\n this._dropDown.SetContent();\r\n },\r\n otherOptions: {\r\n addClass: \"selectUser-dropdown\",\r\n closeOnClick: 'body',\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n offset: {\r\n x: 15\r\n },\r\n }\r\n });\r\n }\r\n\r\n TogglePlanner() {\r\n this._state.ShowPlanned = this._isPlanner();\r\n\r\n if (this._state.ShowPlanned) {\r\n\t\t\tthis._state.SelectedUsersAndGroups = [];\r\n\t\t\tthis.SetAppointmentAttendees(null);\r\n this._activeSelection(null);\r\n }\r\n\r\n const screen = this.GetForm().GetScreen();\r\n\r\n if (screen) {\r\n screen.Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n AddingUsersToGroups(model: SelectUserModel): Array<UserGroupModel>{\r\n return model.UserGroups.map((group: UserGroupModel) => {\r\n let userGroup = new UserGroupModel();\r\n userGroup.Id = group.Id;\r\n userGroup.Name = group.Name;\r\n userGroup.TypeId = group.TypeId;\r\n userGroup.TypeName = group.TypeName;\r\n userGroup.TypeNameTranslation = group.TypeNameTranslation;\r\n userGroup.UserIds = group.UserIds;\r\n userGroup.Users = _.filter(model.Users, (item)=> _.includes(group.UserIds, item.Id))\r\n .map((user: UserModel) => {\r\n let userModel = new UserModel();\r\n userModel.Id = user.Id;\r\n userModel.Name = user.Name;\r\n userModel.UserName = user.UserName;\r\n userModel.UserTypeName = user.UserTypeName;\r\n userModel.UserTypeNameTranslation = user.UserTypeNameTranslation;\r\n userModel.Checked = null; // userModel.Checked = user.Checked;\r\n return userModel;\r\n })\r\n return userGroup;\r\n });\r\n }\r\n\r\n Click() {\r\n BlockUI.Block();\r\n SelectUserStore.GetSelectUserModel(this._entityId)\r\n .then((model: SelectUserModel) => {\r\n model.UserGroups = this.AddingUsersToGroups(model);\r\n this.ShowModal(this.RestoreState(model));\r\n this._dropDown.Close();\r\n this._dropDownTooltip.Close();\r\n })\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n ShowSelectUserTooltip(){\r\n this.IsShowPlanner();\r\n const targetTooltip = \".selectUserTooltip\" + this._id;\r\n this._dropDownTooltip = new JBoxDropDown({\r\n target: targetTooltip,\r\n otherOptions: {\r\n addClass: \"selectUser-dropdown\",\r\n attach: undefined,\r\n closeOnClick: 'body',\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: () => this._dropDownTooltip.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue\r\n },\r\n onOpen: () => {\r\n this._dropDownTooltip.SetContent({ content: SelectUserPopUpContent as any });\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDownTooltip.Open();\r\n }\r\n\r\n get Initialized() {\r\n return this._initialized;\r\n }\r\n\r\n get IsRememberMe() {\r\n return this._isRememberMe();\r\n }\r\n\r\n private Init() {\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar) {\r\n const screen = this.GetForm().GetScreen();\r\n\r\n this._state = new SelectUserState();\r\n this._entityId = screen.GetEntityId();\r\n\r\n this.AddEvent(EVENTS.USERS_SELECTION_CHANGED);\r\n\r\n this.GetForm().GetScreen().On('SELECT_USERS_BY_BUSINESS_ROLE', this, eventArgs => this.SelectByBusinessRole(eventArgs.data.SelectUserByBusinessRoleModel));\r\n\r\n this.GetSelection();\r\n\r\n this._isRememberMe(this._isShowRememberMe() && this.GetRememberMeValue());\r\n\r\n if (!screen.GetDataModel()) {\r\n return;\r\n }\r\n this.IsShowPlanner();\r\n }\r\n }\r\n\r\n private RestoreState(model: SelectUserModel) {\r\n model.UserGroups.forEach((userGroup) => {\r\n // userGroup.Checked = this._state.UserSelected(userGroup.Id)\r\n userGroup.Users?.length && userGroup.Users.forEach((user: UserModel) => {\r\n user.Checked = this._state.UserGroupSelected(user.Id, userGroup.Id);\r\n });\r\n });\r\n model.Users.forEach(user => user.Checked = this._state.UserSelected(user.Id, null));\r\n\r\n return model;\r\n }\r\n\r\n private ShowModal(model: SelectUserModel) {\r\n this._selectUserForm = new SelectUserForm(model);\r\n\r\n this._selectUserForm.On(\r\n SELECT_USER_FORM_EVENTS.USERS_SELECTION_CHANGED,\r\n this,\r\n eventArgs => this.ApplySelection(eventArgs.data)\r\n );\r\n\r\n this._selectUserForm.Show();\r\n\r\n }\r\n\r\n private ApplySelection(model: SelectUserModel, byBusinessRole: boolean = false) {\r\n const allCheckedUserIds: number[] = model.Users\r\n .filter(user => user.Checked)\r\n .map(user => user.Id);\r\n const combinedCheckedUserGroup: CheckedUserAndGroup = {\r\n GroupId: null,\r\n UserIds: allCheckedUserIds\r\n };\r\n\r\n const selectedUserGroups: CheckedUserAndGroup[] = _.chain(model.UserGroups)\r\n .map(group => {\r\n const checkedUsers = _.pluck(_.where(group.Users, { Checked: true }), 'Id');\r\n return { GroupId: group.Id, UserIds: checkedUsers };\r\n })\r\n .filter(group => group.UserIds.length > 0)\r\n .value();\r\n\r\n let combinedArray: CheckedUserAndGroup[] = selectedUserGroups.concat(combinedCheckedUserGroup);\r\n if (combinedArray.length === 1 && combinedArray[0].GroupId === null && combinedArray[0].UserIds.length == 0){\r\n combinedArray = []\r\n }\r\n\t\tthis._state.SelectedUsersAndGroups = combinedArray;\r\n\t\tthis.SetAppointmentAttendees(model);\r\n\r\n const screen = this.GetForm().GetScreen();\r\n let users: SelectedUserType[] = []; // let users: [{name: string, userTypeName: string}] = [{name: '', userTypeName: ''}]\r\n\r\n model.UserGroups.forEach((group) => {\r\n const selectedGroup = this._state.SelectedUsersAndGroups.find(\r\n (checkedGroup: CheckedUserAndGroup) => checkedGroup.GroupId === group.Id\r\n );\r\n if (selectedGroup) {\r\n users.push({\r\n name: group.Name,\r\n userTypeName: ''\r\n });\r\n selectedGroup.UserIds.forEach((userId) => {\r\n const userInGroup = model.Users.find(user => user.Id === userId);\r\n if (userInGroup) {\r\n users.push({\r\n name: userInGroup.Name,\r\n userTypeName: userInGroup.UserTypeName\r\n });\r\n } else {\r\n users.push({\r\n name: group.Name,\r\n userTypeName: ''\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n model.Users.forEach((user) => {\r\n const selectedUser = this._state.SelectedUsersAndGroups.find(\r\n (checkedGroup: CheckedUserAndGroup) => checkedGroup.GroupId === null\r\n );\r\n if (selectedUser) {\r\n selectedUser.UserIds.forEach((userId) => {\r\n const userInGroup = user.Id === userId;\r\n if (userInGroup) {\r\n users.push({\r\n name: user.Name,\r\n userTypeName: user.UserTypeName\r\n });\r\n }\r\n });\r\n }\r\n });\r\n users = _.uniq(users, (user) => `${user.name}-${user.userTypeName}`);\r\n\r\n const usersWithGroups = combinedArray;\r\n const screenId = this.GetForm().GetScreen().GetId();\r\n const userVarsManager = UserVarsManager.Instance;\r\n\r\n if (byBusinessRole) {\r\n this._isRememberMe(false);\r\n const guid = Guid.NewGuid();\r\n\r\n const selectionByBusinessRole: IUserSelection = {\r\n Guid: guid,\r\n Users: users,\r\n UserGroups: usersWithGroups,\r\n Checked: true\r\n };\r\n\r\n if (this._userSelection()) {\r\n this._userSelection().UserSelection.unshift(selectionByBusinessRole);\r\n } else {\r\n this._userSelection({\r\n RememberMe: false,\r\n ScreenId: screenId,\r\n UserSelection: [selectionByBusinessRole]\r\n });\r\n }\r\n\r\n if (screen) {\r\n screen.Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n }\r\n\r\n this._activeSelection({Guid: guid, Users: users});\r\n return;\r\n } else if (usersWithGroups.length) {\r\n userVarsManager.AddSelection(screenId, usersWithGroups, users, this._isRememberMe());\r\n this.CreateNewSelection();\r\n } else {\r\n this._isRememberMe(false);\r\n this.SetRememberMe();\r\n\r\n if (screen) {\r\n screen.Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n }\r\n }\r\n\r\n this._activeSelection({Guid: Guid.NewGuid(), Users: users});\r\n }\r\n\r\n private CreateNewSelection() {\r\n const userVarsManager = UserVarsManager.Instance;\r\n const userSelection = userVarsManager.GetUserSelection(this.GetForm().GetScreen().GetId());\r\n this.ChooseSelection(_.first(userSelection.UserSelection));\r\n\r\n this._userSelection(userSelection);\r\n\r\n if (userSelection) {\r\n this._isRememberMe(userSelection.RememberMe);\r\n }\r\n }\r\n\r\n private GetSelection() {\r\n const userVarsManager = UserVarsManager.Instance;\r\n const userSelection = userVarsManager.GetUserSelection(this.GetForm().GetScreen().GetId());\r\n\r\n let filteredUserSelection = userSelection;\r\n if (filteredUserSelection) {\r\n filteredUserSelection.UserSelection = _.filter(filteredUserSelection.UserSelection, item => item.UserGroups !== undefined);\r\n\r\n filteredUserSelection.UserSelection.forEach((user) => {\r\n if (!user.Guid) {\r\n user.Guid = Guid.NewGuid();\r\n }\r\n });\r\n }\r\n\r\n this._userSelection(filteredUserSelection);\r\n\r\n const screen = this.GetForm().GetScreen();\r\n\r\n if (!this._isShowRememberMe()) {\r\n this._initialized = true;\r\n screen.Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n return;\r\n }\r\n\r\n if (filteredUserSelection) {\r\n this._isRememberMe(filteredUserSelection.RememberMe);\r\n }\r\n\r\n if (filteredUserSelection && filteredUserSelection.RememberMe && this._isShowRememberMe()) {\r\n const checkedSelection = _.find(filteredUserSelection.UserSelection, item => item.Checked);\r\n\r\n if (checkedSelection) {\r\n this.ChooseSelection(checkedSelection);\r\n } else {\r\n this._initialized = true;\r\n screen.Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n }\r\n } else {\r\n this._initialized = true;\r\n }\r\n }\r\n\r\n private ChooseSelection(data: IUserSelection) {\r\n SelectUserStore.GetSelectUserModel(this._entityId)\r\n .then((model: SelectUserModel) => {\r\n model.UserGroups = this.AddingUsersToGroups(model);\r\n model = this.RestoreState(model);\r\n\r\n const users = _.intersection(model.Users.map(user => user.Id), _.flatten(data.UserGroups.map(group => group.UserIds)));\r\n const userGroups = _.intersection(model.UserGroups.map(group => group.Id), data.UserGroups.map(group => group.GroupId));\r\n this._state.SelectedUsersAndGroups = data.UserGroups\r\n .filter(group => userGroups.includes(group.GroupId) || _.intersection(group.UserIds, users).length > 0);\r\n\r\n\t\t\t\tthis.SetAppointmentAttendees(model);\r\n\r\n const screen = this.GetForm().GetScreen();\r\n const screenId = screen && screen.GetId();\r\n\r\n this._isPlanner(false);\r\n this._state.ShowPlanned = false;\r\n\r\n if (screen) {\r\n this._activeSelection({Guid: data.Guid, Name: data.Users});\r\n\r\n // Change order of selection on UI\r\n const selectionUIIndex = this._userSelection().UserSelection.findIndex(s => s.Guid === data.Guid);\r\n const selectionUI = this._userSelection().UserSelection[selectionUIIndex];\r\n\r\n this._userSelection().UserSelection.splice(selectionUIIndex, 1);\r\n this._userSelection().UserSelection.unshift(selectionUI);\r\n this._userSelection.valueHasMutated();\r\n\r\n // Change order of selection in user vars\r\n const userVarsManager = UserVarsManager.Instance;\r\n\r\n const userSelectionData = userVarsManager.GetUserSelections();\r\n let selectionByScreenId = _.find(userSelectionData, (selection: ISelection) => selection.ScreenId === screenId);\r\n\r\n if (this._isRememberMe()) {\r\n _.forEach(selectionByScreenId.UserSelection, (item: IUserSelection) => {\r\n item.Checked = item.Guid === data.Guid;\r\n });\r\n }\r\n\r\n const selectionIndex = selectionByScreenId.UserSelection.findIndex(s => s && s.Guid === data.Guid);\r\n if (selectionIndex !== -1) {\r\n const selection = selectionByScreenId.UserSelection[selectionIndex];\r\n\r\n selectionByScreenId.UserSelection.splice(selectionIndex, 1);\r\n selectionByScreenId.UserSelection.unshift(selection);\r\n\r\n userVarsManager.SetUserSelection(screenId, userSelectionData);\r\n }\r\n\r\n this._initialized = true;\r\n screen.Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n\r\n if(this._dropDownTooltip) {\r\n this._dropDownTooltip.Close();\r\n }\r\n }\r\n\r\n this._initialized = true;\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n this._initialized = true;\r\n })\r\n .always(() => BlockUI.Unblock());\r\n\r\n }\r\n\r\n private IsShowPlanner(){\r\n UserManager.Instance.GetUserAllowance()\r\n .then((userAllowance: number) => {\r\n const planningAllowed = USER_ALLOWANCE.PlanningAllowed(userAllowance);\r\n this._isShowPlanner(planningAllowed);\r\n });\r\n }\r\n\r\n private RemoveSelection(data: IUserSelection) {\r\n\r\n //Remove clicked selection from list\r\n const userSelection = this._userSelection();\r\n\r\n const index = userSelection.UserSelection.indexOf(data);\r\n userSelection.UserSelection.splice(index, 1);\r\n\r\n this._userSelection(userSelection);\r\n\r\n //Remove clicked selection from user vars\r\n const screenId = this.GetForm().GetScreen().GetId();\r\n const userSelectionData = UserVarsManager.Instance.GetUserSelections();\r\n\r\n const selectionByScreenIdIndex = _.findIndex(userSelectionData, (selection: ISelection) => selection.ScreenId === screenId);\r\n userSelectionData.splice(selectionByScreenIdIndex, 1, userSelection);\r\n\r\n UserVarsManager.Instance.SetUserSelection(screenId, userSelectionData);\r\n\r\n //Active selection has been removed\r\n if (this._activeSelection() && this._activeSelection().Guid === data.Guid) {\r\n this._activeSelection(null);\r\n\r\n\t\t\tthis._state.SelectedUsersAndGroups = [];\r\n\t\t\tthis.SetAppointmentAttendees(null);\r\n this.GetForm().GetScreen().Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n }\r\n }\r\n\r\n private ClearSelection() {\r\n const triggerChanges = !!this._activeSelection();\r\n\r\n this._activeSelection(null);\r\n\t\tthis._state.SelectedUsersAndGroups = [];\r\n\t\tthis.SetAppointmentAttendees(null);\r\n\r\n if (this._isShowRememberMe()) {\r\n this.SetRememberMe();\r\n }\r\n\r\n if (triggerChanges) {\r\n this.GetForm().GetScreen().Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n }\r\n }\r\n\r\n private RememberMeGlobalEnabled(): boolean {\r\n const globalManager = GlobalManager.Instance;\r\n const global = globalManager.GetGlobal(GLOBALS.REMEMBER_SELECT_USER);\r\n\r\n return !!parseInt(global);\r\n }\r\n\r\n private SetRememberMe() {\r\n if (!this._activeSelection()) {\r\n this._isRememberMe(false);\r\n }\r\n\r\n const screenId = this.GetForm().GetScreen().GetId();\r\n const userVarsManager = UserVarsManager.Instance;\r\n userVarsManager.SetRememberUserSelection(screenId, this._isRememberMe());\r\n\r\n return true;\r\n }\r\n\r\n private GetRememberMeValue(): boolean {\r\n const screenId = this.GetForm().GetScreen().GetId();\r\n const userVarsManager = UserVarsManager.Instance;\r\n let data = userVarsManager.GetUserSelection(screenId);\r\n\r\n return data && _.find(data.UserSelection, us => us.Checked) ? data.RememberMe : false;\r\n\t}\r\n\r\n\tprivate SetAppointmentAttendees(model: SelectUserModel) {\r\n\t\tif (!model) {\r\n\t\t\tthis._state.AppointmentAttendees = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n const appointmentAttendees = new SelectUserModel();\r\n const selectedAllUserIds = _.flatten(\r\n _.pluck(\r\n _.filter(this._state.SelectedUsersAndGroups, group => group.GroupId === null),\r\n 'UserIds'\r\n )\r\n );\r\n const users: Array<UserModel> = _.filter(model.Users, user => _.includes(selectedAllUserIds, user.Id));\r\n\r\n const selectedGroups: UserGroupModel[] = _.filter(model.UserGroups, userGroup => _.some(this._state.SelectedUsersAndGroups, selectedGroup => selectedGroup.GroupId === userGroup.Id));\r\n const usersByGroup: UserGroupModel[] = selectedGroups.map(group => {\r\n const selectedGroup = _.find(this._state.SelectedUsersAndGroups, sg => sg.GroupId === group.Id);\r\n if (selectedGroup) {\r\n group.Users = _.filter(group.Users, user => _.includes(selectedGroup.UserIds, user.Id))\r\n }\r\n return group;\r\n });\r\n\r\n appointmentAttendees.Users = _.uniq([\r\n ...users,\r\n ..._.flatten(usersByGroup.map(group => group.Users))\r\n ], false, user => user.Id);\r\n appointmentAttendees.UserGroups = selectedGroups;\r\n\r\n\t\t_.each(appointmentAttendees.Users, user => user.Checked = false);\r\n\t\t_.each(appointmentAttendees.UserGroups, userGroup => userGroup.Checked = false);\r\n\r\n\t\tthis._state.AppointmentAttendees = appointmentAttendees;\r\n\t}\r\n\r\n\tprivate SelectByBusinessRole(selectUserByBusinessRoleModel: SelectUserByBusinessRoleModel) {\r\n\t\tif (!selectUserByBusinessRoleModel || !selectUserByBusinessRoleModel.SelectedUsers || !_.any(selectUserByBusinessRoleModel.SelectedUsers)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet model = this.MapToSelectUserModel(selectUserByBusinessRoleModel);\r\n\t\tif (!_.any(model.Users, user => user.Checked) && !_.any(model.UserGroups, userGroup => userGroup.Checked)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.ApplySelection(model, true);\r\n\t}\r\n\r\n\tprivate MapToSelectUserModel(selectUserByBusinessRoleModel: SelectUserByBusinessRoleModel) {\r\n\t\tconst selectedUserIds = selectUserByBusinessRoleModel.SelectedUsers;\r\n\r\n\t\tlet model = new SelectUserModel();\r\n\t\tmodel.Users = selectUserByBusinessRoleModel.Users;\r\n\t\tmodel.UserGroups = selectUserByBusinessRoleModel.UserGroups;\r\n\t\tmodel.UserGroups = this.AddingUsersToGroups(model);\r\n\r\n\t\tmodel.Users.forEach(user => user.Checked = _.contains(selectedUserIds, user.Id));\r\n\t\tmodel.UserGroups.forEach(group => {\r\n\t\t\tconst groupIsChecked = _.contains(selectedUserIds, group.Id);\r\n\t\t\tgroup.Checked = groupIsChecked;\r\n\t\t\tgroup.Users.forEach(user => user.Checked = groupIsChecked);\r\n\t\t});\r\n\r\n\t\treturn model;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-user\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"dropdown select-user-list subFormControl\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <a class=\\\"btn blue\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\" data-bind=\\\"css: {[_id] : _id}\\\" disabled=\\\"disabled\\\"> <i class=\\\"fa fa-user-circle\\\"></i> </a> <span class=\\\"jBox-content-target\\\" data-bind=\\\"attr: {'data-jbox-content' : _popUpContent}\\\"></span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn blue subFormControl\\\"> <i class=\\\"fa fa-user-circle\\\"></i> </a>\";\n// Exports\nexport default code;","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class UrlCommandModel {\r\n\t@deserialize\r\n\tId: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tType: string;\r\n}\r\nexport class EditTemplateModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.UrlCommands = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tContent: string;\r\n\r\n\t@deserialize\r\n\tFileName: string;\r\n\r\n\t@deserialize\r\n\tQueryId: number;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tKSeq: number;\r\n\r\n\t@deserializeAs(UrlCommandModel)\r\n\tUrlCommands: Array<UrlCommandModel>;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class TemplateLanguageModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tHasTemplate: boolean;\r\n\r\n\t@deserialize\r\n\tIsDefault: boolean;\r\n}","import * as _ from 'underscore';\r\n\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { Deserialize } from 'libs/cerialize';\r\nimport { EditTemplateModel } from 'Core/Controls/TemplateDesigner/Models/EditTemplateModel';\r\nimport { TemplateLanguageModel } from 'Core/Controls/TemplateDesigner/Models/TemplateLanguageModel';\r\n\r\nexport interface IGetLanguagesDto {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tControlId: number;\r\n};\r\n\r\nexport interface ICreateTemplateDto {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tLanguageId: number;\r\n\tControlId: number;\r\n};\r\n\r\nexport interface IEditTemplateDto {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tLanguageId: number;\r\n\tControlId: number;\r\n};\r\n\r\nexport interface ISaveTemplateDto {\r\n\tFileName: string;\r\n\tContent: string;\r\n\tQueryId: number;\r\n\tControlId: number;\r\n\tRecordId: number;\r\n\tKSeq: number;\r\n};\r\n\r\nexport interface IPreviewHtmlTemplateDto {\r\n\tData: string;\r\n\tRecordId: number;\r\n\tQueryId: number;\r\n};\r\n\r\nexport class TemplateDesignerStore {\r\n\r\n\tstatic GetLanguages(params: IGetLanguagesDto): P.Promise<Array<TemplateLanguageModel>> {\r\n\t\tvar deferredResult = P.defer<Array<TemplateLanguageModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentTemplatesApi/GetLanguages',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\t\tdeferredResult.resolve(Deserialize(data, TemplateLanguageModel));\r\n\t\t\t}).fail(data => { deferredResult.reject({ message: JSON.parse(data.message).Message }) });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Edit(params: IEditTemplateDto): P.Promise<EditTemplateModel> {\r\n\t\tvar deferredResult = P.defer<EditTemplateModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentTemplatesApi/Edit',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(Deserialize(data, EditTemplateModel));\r\n\t\t\t}).fail(data => { deferredResult.reject({ message: JSON.parse(data.message).Message }) });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Create(params: ICreateTemplateDto): P.Promise<EditTemplateModel> {\r\n\t\tvar deferredResult = P.defer<EditTemplateModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentTemplatesApi/Create',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t.then((data) => deferredResult.resolve(Deserialize(data, EditTemplateModel)))\r\n\t\t.fail(err => { deferredResult.reject({ message: JSON.parse(err.message).Message }) });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Save(params: ISaveTemplateDto): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentTemplatesApi/Save',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t.then(() => deferredResult.resolve(null))\r\n\t\t.fail(err => { deferredResult.reject({ message: JSON.parse(err.message).Message }) });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Preview(params: IPreviewHtmlTemplateDto): P.Promise<string> {\r\n\t\tvar deferredResult = P.defer<string>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentTemplatesApi/PreviewHtmlTemplate',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t.then((data) => {\r\n\t\t\tdeferredResult.resolve(Deserialize(data, String))\r\n\t\t})\r\n\t\t.fail(err => { deferredResult.reject({ message: JSON.parse(err.message).Message }) });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport Template from 'Desktop/Toolbar/ToolbarQueryColumn/Templates/Template.html';\r\nimport 'pubsub';\r\n\r\nexport class ToolbarQueryColumn {\r\n\r\n\tprivate _model: QueryColumnModel;\r\n\r\n\tconstructor(model: QueryColumnModel, private _isLinkColumn = false) {\r\n\t\tthis._model = model;\r\n\t}\r\n\r\n\tget Name(): string {\r\n\t\treturn this._model.Metadata.NameTranslation || this._model.Metadata.Name;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tPasteFieldCode(entityName: string, entityIndex: number, element: HTMLElement) {\r\n\t\tif (entityIndex > 1) {\r\n\t\t\tentityName = `${entityName}${entityIndex}`;\r\n\t\t}\r\n\r\n\t\tvar translation = '';\r\n\t\tif (this._model.Metadata.NameTranslation) {\r\n\t\t\ttranslation = `(${this._model.Metadata.NameTranslation})`;\r\n\t\t};\r\n\r\n\t\tPubSub.publish('PASTE_FIELD_CODE', { EntityName: entityName, FieldName: `${this._model.Metadata.Name}${translation}`, Element: element });\r\n\t}\r\n\r\n\tget IsLinkColumn(): boolean {\r\n\t\treturn this._isLinkColumn;\r\n\t}\r\n\r\n\tget Model(): QueryColumnModel {\r\n\t\treturn this._model;\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko ifnot: IsLinkColumn --> <div data-bind=\\\"event: {\\r\\n\\t\\t\\t\\t\\tmousedown: $data.PasteFieldCode.bind($data, $parent.Model.Metadata.Name, $parent.Model.Index, $element)\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tcss: {\\r\\n\\t\\t\\t\\t\\trelatedField: IsLinkColumn\\r\\n\\t\\t\\t\\t}\\\" class=\\\"alert alert-warning clearfix draggable-field\\\"> <span data-bind=\\\"text: Name\\\" class=\\\"field-name\\\"></span> </div> <!-- /ko --> <!-- ko if: IsLinkColumn --> <div data-bind=\\\"event: {\\r\\n\\t\\t\\t\\t\\tmousedown: $data.PasteFieldCode.bind($data, $parent.Model.Metadata.Name, $parent.Model.Index, $element) },\\r\\n\\t\\t\\t\\t\\tcss: { relatedField: IsLinkColumn\\r\\n\\t\\t\\t\\t}\\\" class=\\\"alert alert-warning clearfix draggable-field\\\"> <span data-bind=\\\"text: Name\\\" class=\\\"field-name\\\"></span> </div> <!-- /ko -->\";\n// Exports\nexport default code;","export class SpheeresLink {}","export class OpenRecordLink {};","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { ToolbarQueryColumn } from 'Desktop/Toolbar/ToolbarQueryColumn/ToolbarQueryColumn';\r\nimport { EntityTypes } from 'Core/Controls/Grid/BaseGrid/Enums/EntityTypes';\r\nimport { SpheeresLink } from 'Desktop/Toolbar/SpheeresLink';\r\nimport { OpenRecordLink } from 'Desktop/Toolbar/OpenRecordLink';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport Template from 'Desktop/Toolbar/ToolbarQueryEntity/Templates/Template.html';\r\n\r\n\r\nexport class ToolbarQueryEntity {\r\n\tprivate _model: QueryEntityModel;\r\n\tprivate _columns: Array<ToolbarQueryColumn>;\r\n\tprivate _isExpanded: KnockoutObservable<boolean>;\r\n\tprivate _isDesktop: boolean;\r\n\tprivate _spheeresLink: SpheeresLink;\r\n\tprivate _openRecordLink: OpenRecordLink;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(\r\n\t\tmodel: QueryEntityModel,\r\n\t\tisDesktop: boolean\r\n\t) {\r\n\t\tthis._model = model;\r\n\t\tthis._isDesktop = isDesktop;\r\n\t\tthis._columns = [];\r\n\t\tthis._isExpanded = ko.observable(false);\r\n\t\tthis.Init();\r\n\t\tthis._spheeresLink = new SpheeresLink();\r\n\t\tthis._openRecordLink = new OpenRecordLink();\r\n\t}\r\n\r\n\tInit() {\r\n\t\tif (this._model) {\r\n\t\t\t_.each(this._model.Columns, (column) => {\r\n\t\t\t\tvar toolbarQueryColumn = new ToolbarQueryColumn(column, this._model.Metadata.Type === EntityTypes[EntityTypes.Link]);\r\n\t\t\t\tthis._columns.push(toolbarQueryColumn);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tExpand() {\r\n\t\tthis._isExpanded(!this._isExpanded());\r\n\t}\r\n\r\n\tget IsExpanded(): KnockoutObservable<boolean> {\r\n\t\treturn this._isExpanded;\r\n\t}\r\n\r\n\tget Name() {\r\n\t\treturn this._model.Metadata.NameTranslation || this._model.Metadata.Name;\r\n\t}\r\n\r\n\tget Title() {\r\n\t\tvar name = this._model.Metadata.NameTranslation || this._model.Metadata.Name;\r\n\t\tif (this._model.Index > 1) {\r\n\t\t\tname = `${name}${this._model.Index}`;\r\n\t\t}\r\n\t\treturn name;\r\n\t}\r\n\r\n\tget Columns(): Array<ToolbarQueryColumn> {\r\n\t\treturn this._columns;\r\n\t}\r\n\r\n\tget Model(): QueryEntityModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tPasteTable() {}\r\n}","// Module\nvar code = \"<div class=\\\"panel panel-info\\\"> <div data-bind=\\\"click: $data.Expand.bind($data)\\\" class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <h5 data-bind=\\\"text: Title\\\" class=\\\"panel-title clip panel-name subject\\\"></h5> <!-- ko ifnot: _isDesktop --> <a data-bind=\\\"dragula: { data: [$data._openRecordLink], group: 'ToolBarToTemplateEditor' }, tooltip: {content: _labels.RECORD_LINK}\\\" href=\\\"javascript:;\\\" class=\\\"pull-right open-record-link\\\"> <i class=\\\"fa fa-external-link\\\"></i> </a> <!-- /ko --> <!-- ko ifnot: _isDesktop --> <a data-bind=\\\"dragula: { data: [$data._spheeresLink], group: 'ToolBarToTemplateEditor' }, tooltip: {content: _labels.SPHEERES_LINK}\\\" href=\\\"javascript:;\\\" class=\\\"pull-right\\\"> <i class=\\\"fa fa-link\\\"></i> </a> <!-- /ko --> </div> </div> <div data-bind=\\\"style: { display: IsExpanded() ? 'block' : 'none' }\\\" class=\\\"panel-collapse collapse\\\"> <!-- ko ifnot: _isDesktop --> <div data-bind=\\\"dragula: { data: Columns, group: 'ToolBarToTemplateEditor' }\\\" class=\\\"field-container\\\"> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko if: _isDesktop --> <!-- ko foreach: Columns --> <div class=\\\"field-container\\\"> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","export const EVENTS = {\r\n\tDROP_FIELD: 'DROP_FIELD',\r\n\tDROP_ENTITY: 'DROP_ENTITY',\r\n\tDROP_SPHEERES_LINK: 'DROP_SPHEERES_LINK',\r\n\tDROP_OPEN_RECORD_LINK: 'DROP_OPEN_RECORD_LINK',\r\n\tDROP_URL_COMMAND: 'DROP_URL_COMMAND',\r\n\tDROP_EMAIL_SUBJECT: 'DROP_EMAIL_SUBJECT',\r\n\tDROP_VARIABLE: 'DROP_VARIABLE',\r\n\tDROP_CC: 'DROP_CC',\r\n\tDROP_BCC: 'DROP_BCC',\r\n\tDROP_TO: 'DROP_TO',\r\n\tDROP_SCRIPT: 'DROP_SCRIPT',\r\n\tSAVE: 'SAVE',\r\n\tPREVIEW: 'PREVIEW'\r\n}","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { ToolbarQueryEntity } from 'Desktop/Toolbar/ToolbarQueryEntity/ToolbarQueryEntity';\r\n\r\nimport Template from 'Desktop/Toolbar/ToolbarQueryEntityJoin/Templates/Template.html';\r\n\r\nexport class ToolbarQueryEntityJoin {\r\n\tprivate _isExpanded: KnockoutObservable<boolean>;\r\n\tprivate _toolbarQueryEntity: ToolbarQueryEntity;\r\n\tprivate _toolbarQueryLinkEntity: ToolbarQueryEntity;\r\n\tprivate _model: QueryEntityJoinModel;\r\n\tprivate _isDesktop: boolean;\r\n\tprivate _isRoot: boolean;\r\n\tprivate _joins: KnockoutObservableArray<ToolbarQueryEntityJoin>;\r\n\r\n\tconstructor(\r\n\t\tqueryEntityJoin: QueryEntityJoinModel,\r\n\t\tisDesktop: boolean,\r\n\t\tisRoot: boolean = false\r\n\t) {\r\n\t\tthis._model = queryEntityJoin;\r\n\t\tthis._isDesktop = isDesktop;\r\n\t\tthis._isExpanded = ko.observable(false);\r\n\t\tthis._joins = ko.observableArray([]);\r\n\t\t\r\n\t\tthis._isRoot = isRoot;\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tget Style() {\r\n\t\treturn !this._isRoot ? { margin: '5px' } : {};\r\n\t}\r\n\r\n\tInit() {\r\n\t\tif (this._model.Entity) {\r\n\t\t\tthis._toolbarQueryEntity = new ToolbarQueryEntity(this._model.Entity, this._isDesktop);\r\n\t\t}\r\n\r\n\t\tif (this._model.LinkEntity) {\r\n\t\t\tthis._toolbarQueryLinkEntity = new ToolbarQueryEntity(this._model.LinkEntity, this._isDesktop);\r\n\t\t}\r\n\r\n\r\n\t\tlet allJoins = this._model.Joins\r\n\t\t.concat(this._model.SubEntityJoins)\r\n\t\t.concat(this._model.LookupEntityJoins)\r\n\t\t.concat(this._model.ReferenceEntityJoins)\r\n\t\t.concat(this._model.ReferenceLookupEntityJoins);\t\t\t\t\t\r\n\r\n\t\tthis._joins(allJoins.map(item=> new ToolbarQueryEntityJoin(item, this._isDesktop, false)));\r\n\t}\r\n\r\n\tget Entity(): ToolbarQueryEntity {\r\n\t\treturn this._toolbarQueryEntity;\r\n\t}\r\n\r\n\tget LinkEntity(): ToolbarQueryEntity {\r\n\t\treturn this._toolbarQueryLinkEntity;\r\n\t}\r\n\r\n\tget EntityModel(): QueryEntityModel {\r\n\t\treturn this._model.Entity;\r\n\t}\r\n\r\n\tget LinkEntityModel(): QueryEntityModel {\r\n\t\treturn this._model.LinkEntity;\r\n\t}\r\n\r\n\tget Name() {\r\n\t\treturn this._model.Entity.Metadata.NameTranslation || this._model.Entity.Metadata.Name;\r\n\t}\r\n\r\n\tget Title() {\r\n\t\tvar name = this._model.Entity.Metadata.NameTranslation || this._model.Entity.Metadata.Name;\r\n\t\tif (this._model.Entity.Index > 1) {\r\n\t\t\tname = `${name}${this._model.Entity.Index}`;\r\n\t\t}\r\n\t\treturn name;\r\n\t}\r\n\r\n\tget LinkName() {\r\n\t\treturn this._model.LinkEntity.Metadata.Name;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tExpand() {\r\n\t\tthis._isExpanded(!this._isExpanded());\r\n\t}\r\n\r\n\tget IsExpanded(): KnockoutObservable<boolean> {\r\n\t\treturn this._isExpanded;\r\n\t}\r\n\r\n\tget Joins(): KnockoutObservableArray<ToolbarQueryEntityJoin> {\r\n\t\treturn this._joins;\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"style: Style\\\" class=\\\"panel panel-info\\\"> <div data-bind=\\\"click: $data.Expand.bind($data)\\\" class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <h5 data-bind=\\\"text: Title\\\" class=\\\"panel-title clip panel-name subject\\\"></h5> <!-- ko ifnot: _isDesktop --> <a data-bind=\\\"dragula: { data: [$data], group: 'ToolBarToTemplateEditor' }\\\" href=\\\"javascript:;\\\" class=\\\"pull-right\\\"> <img class=\\\"draggable-field\\\" style=\\\"background-color:rgba(142,174,189,.3);height:24px;width:24px\\\" src=\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAASFBMVEUAAAApgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLn59WPfAAAAF3RSTlMAAQhAQW17f6Cipbe8vsPFx8jP0e35++rah8AAAACQSURBVCjPnZDRDoIwFEMPKqiMwmBI//9PfVjAEJiJ9u2ku7e9g6Kuzf2g5ga1T1UznxszLghPAEyuAKoNsQCQc5UPlo3iqmK4B0mDPUnStCEeABjWjH7Fcnh+0u8nemN3IYTOHkMIYdzwS6sEQNrfkf75kmUEYFyNmPHF01FStJMkpXx59INLuxwrLe2Fn/UGiXUYMi9HL3cAAAAASUVORK5CYII=\\\"/> </a> <!-- /ko --> <!-- ko if: _isDesktop --> <a href=\\\"javascript:;\\\" class=\\\"pull-right\\\"> <img data-bind=\\\"event: { mousedown: $root.PasteTable.bind($root, $data) }\\\" class=\\\"draggable-field\\\" style=\\\"background-color:rgba(142,174,189,.3);height:24px;width:24px\\\" src=\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAASFBMVEUAAAApgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLn59WPfAAAAF3RSTlMAAQhAQW17f6Cipbe8vsPFx8jP0e35++rah8AAAACQSURBVCjPnZDRDoIwFEMPKqiMwmBI//9PfVjAEJiJ9u2ku7e9g6Kuzf2g5ga1T1UznxszLghPAEyuAKoNsQCQc5UPlo3iqmK4B0mDPUnStCEeABjWjH7Fcnh+0u8nemN3IYTOHkMIYdzwS6sEQNrfkf75kmUEYFyNmPHF01FStJMkpXx59INLuxwrLe2Fn/UGiXUYMi9HL3cAAAAASUVORK5CYII=\\\"/> </a> <!-- /ko --> </div> </div> <div data-bind=\\\"style: { display: IsExpanded() ? 'block' : 'none' }\\\" class=\\\"panel-collapse collapse\\\"> <div class=\\\"field-container\\\"> <!--ko if: _isDesktop --> <!--ko with: LinkEntity --> <!--ko foreach: Columns --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!--ko ifnot: _isDesktop --> <!--ko with: LinkEntity --> <div data-bind=\\\"dragula: { data: Columns, group: 'ToolBarToTemplateEditor' }\\\"> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!--ko if: _isDesktop --> <!--ko with: Entity --> <!--ko foreach: Columns --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!--ko ifnot: _isDesktop --> <!--ko with: Entity --> <div data-bind=\\\"dragula: { data: Columns, group: 'ToolBarToTemplateEditor' }\\\"> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!--ko foreach: Joins --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { ToolbarQueryEntity } from 'Desktop/Toolbar/ToolbarQueryEntity/ToolbarQueryEntity';\r\nimport { GetQueryStore } from 'QueryBuilder/Stores/GetQueryStore';\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { QueryBuilder } from '../../../../QueryBuilder/QueryBuilder';\r\nimport { EVENTS as QUERY_BUILDER_EVENTS } from '../../../../QueryBuilder/Events';\r\nimport { DragulaExtention } from 'Core/KnockoutExtentions/DragulaExtention';\r\nimport { ToolbarQueryColumn } from 'Desktop/Toolbar/ToolbarQueryColumn/ToolbarQueryColumn';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { EVENTS } from 'Core/Controls/TemplateDesigner/QueryToolbar/Events';\r\nimport { ViewModes } from \"Core/Controls/Grid/BaseGrid/Enums/ViewModes\";\r\nimport { GlobalManager, GLOBALS } from 'Core/GlobalManager/GlobalManager';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { SpheeresLink } from 'Desktop/Toolbar/SpheeresLink';\r\nimport { ToolbarQueryEntityJoin } from 'Desktop/Toolbar/ToolbarQueryEntityJoin/ToolbarQueryEntityJoin';\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport { EditQueryModel } from 'QueryBuilder/Models/EditQueryModel';\r\nimport { UrlCommandModel } from 'Core/Controls/TemplateDesigner/Models/EditTemplateModel';\r\n\r\nimport Template from 'Core/Controls/TemplateDesigner/QueryToolbar/Templates/QueryToolbar.html';\r\nimport { OpenRecordLink } from '../../../../Desktop/Toolbar/OpenRecordLink';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\n\r\n\r\nconst DRAGULA_EVENTS = {\r\n\tDROP: 'drop',\r\n\tDRAG: 'drag',\r\n\tDRAG_END: 'dragend',\r\n\tCLONED: 'cloned'\r\n}\r\n\r\nexport class EmailSubject {\r\n\tTitle: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class EmailCC {\r\n\tTitle: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class EmailBCC {\r\n\tTitle: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class EmailTo {\r\n\tTitle: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class Script {\r\n\tconstructor(title: string, value: string){\r\n\t\tthis.Title = title;\r\n\t\tthis.Value = value;\r\n\t}\r\n\r\n\tTitle: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class Variable {\r\n\tconstructor(title: string, value: string){\r\n\t\tthis.Title = title;\r\n\t\tthis.Value = value;\r\n\t}\r\n\r\n\tTitle: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class QueryToolbar extends Event {\r\n\tprivate _subjectEntity: KnockoutObservable<ToolbarQueryEntity>;\r\n\tprivate _joins: KnockoutObservableArray<ToolbarQueryEntityJoin>;\r\n\tprivate _isLoadInProgress: KnockoutObservable<boolean>;\r\n\tprivate _queryId: number;\r\n\tprivate _iframeBlocks: JQuery;\r\n\tprivate _original: any;\r\n\tprivate _dragulaGroup: any;\r\n\tprivate _labels = LABELS;\r\n\tprivate _urlCommands: KnockoutObservableArray<UrlCommandModel>;\r\n\r\n\tprivate _variables: KnockoutObservableArray<Variable>;\r\n\tprivate __urlCommands: Array<UrlCommandModel>;\r\n\tprivate _email: KnockoutObservableArray<any>;\r\n\tprivate _scripting: KnockoutObservableArray<Script>;\r\n\tprivate IsScriptingExpanded: KnockoutObservable<boolean>;\r\n\r\n\t\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.AddEvent(EVENTS.DROP_FIELD);\r\n\t\tthis.AddEvent(EVENTS.DROP_ENTITY);\r\n\t\tthis.AddEvent(EVENTS.SAVE);\r\n\t\tthis.AddEvent(EVENTS.DROP_SPHEERES_LINK);\r\n\t\tthis.AddEvent(EVENTS.DROP_OPEN_RECORD_LINK);\r\n\t\tthis.AddEvent(EVENTS.DROP_URL_COMMAND);\r\n\t\tthis.AddEvent(EVENTS.DROP_EMAIL_SUBJECT);\r\n\t\tthis.AddEvent(EVENTS.DROP_TO);\r\n\t\tthis.AddEvent(EVENTS.DROP_CC);\r\n\t\tthis.AddEvent(EVENTS.DROP_BCC);\r\n\t\tthis.AddEvent(EVENTS.DROP_SCRIPT);\r\n\t\tthis.AddEvent(EVENTS.PREVIEW);\r\n\t\tthis.AddEvent(EVENTS.DROP_VARIABLE);\r\n\t\tthis._subjectEntity = ko.observable(null);\r\n\t\tthis._joins = ko.observableArray([]);\r\n\t\tthis._isLoadInProgress = ko.observable(false);\r\n\t\tthis._iframeBlocks = null;\r\n\t\tthis._queryId = null;\r\n\t\tthis._urlCommands = ko.observableArray([]);\r\n\t\tthis._email = ko.observableArray([]);\r\n\t\tthis.__urlCommands = [];\r\n\t\tthis.IsScriptingExpanded = ko.observable(false);\r\n\t\tthis._scripting = ko.observableArray();\r\n\t\tthis._variables = ko.observableArray([]);\r\n\t}\r\n\r\n\tSetCommands(commands: Array<UrlCommandModel>) {\r\n\t\tthis.__urlCommands = commands;\r\n\t}\r\n\r\n\tInitDragula() {\r\n\t\t_.each(DragulaExtention.FindGroups('ToolBarToTemplateEditor'), (item) => { DragulaExtention.DestroyGroup(item); });\r\n\r\n\t\tthis._dragulaGroup = DragulaExtention.AddGroupWithOptions('ToolBarToTemplateEditor', {\r\n\t\t\tcopy: (el, source) => {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._dragulaGroup.drake\r\n\t\t\t.on(DRAGULA_EVENTS.DROP, (el, target, source, sibling) => {\r\n\r\n\t\t\t\tlet elementModel = ko.dataFor(this._original);\r\n\t\t\t\tlet sourceModel = ko.dataFor(source);\r\n\t\t\t\tif (sourceModel instanceof ToolbarQueryEntity && elementModel instanceof ToolbarQueryColumn) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_FIELD, { Field: elementModel, Entity: sourceModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof ToolbarQueryEntityJoin) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_ENTITY, { Entity: sourceModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof SpheeresLink) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_SPHEERES_LINK);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof OpenRecordLink) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_OPEN_RECORD_LINK);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof EmailSubject) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_EMAIL_SUBJECT, { EmailSubject: elementModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof EmailCC) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_CC, { EmailSubject: elementModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof EmailBCC) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_BCC, { EmailSubject: elementModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof EmailTo) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_TO, { EmailSubject: elementModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof Script) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_SCRIPT, { Script: elementModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof Variable) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_VARIABLE, { Variable: elementModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof UrlCommandModel) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_URL_COMMAND, { Id: elementModel.Id, Name: elementModel.Name, Type: elementModel.Type });\r\n\t\t\t\t}\r\n\r\n\t\t\t})\r\n\t\t\t.on(DRAGULA_EVENTS.DRAG, (el) => {\r\n\t\t\t\tthis.BlockFrames();\r\n\t\t\t})\r\n\t\t\t.on(DRAGULA_EVENTS.DRAG_END, (el) => {\r\n\t\t\t\tthis.UnblockFrames();\r\n\t\t\t})\r\n\t\t\t.on(DRAGULA_EVENTS.CLONED, (clone, original, type) => {\r\n\t\t\t\tthis._original = original;\r\n\t\t\t});\r\n\t}\r\n\r\n\tBlockFrames() {\r\n\t\tthis._iframeBlocks = $('iframe').map((indx, element) => {\r\n\t\t\tvar iframe = $(element);\r\n\t\t\treturn $('<div>')\r\n\t\t\t\t.css('position', 'absolute')\r\n\t\t\t\t.appendTo(iframe.parent())\r\n\t\t\t\t.outerWidth(iframe.outerWidth())\r\n\t\t\t\t.outerHeight(iframe.outerHeight())\r\n\t\t\t\t.offset(iframe.offset())[0];\r\n\t\t});\r\n\t}\r\n\r\n\tUnblockFrames() {\r\n\t\tif (this._iframeBlocks) {\r\n\t\t\tthis._iframeBlocks.remove();\r\n\t\t\tdelete this._iframeBlocks;\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tRefresh() {\r\n\t\tif (this._queryId) {\r\n\t\t\tthis._isLoadInProgress(true);\r\n\t\t\tGetQueryStore.GetToolbarQuery({ Id: this._queryId })\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tthis._isLoadInProgress(false);\r\n\t\t\t\t}).then((data) => {\r\n\t\t\t\t\tthis.SetData(data);\r\n\t\t\t\t}).fail(err=>{\r\n\t\t\t\t\tnew Notifier().Failed(err.message);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tSetData(editQuery: EditQueryModel) {\r\n\t\tthis._subjectEntity(null);\t\t\r\n\t\tthis._joins([]);\r\n\t\tthis._email([]);\r\n\t\tthis._scripting([]);\r\n\t\tthis._urlCommands([]);\r\n\t\tthis._variables([]);\r\n\t\t\r\n\t\tthis.InitDragula();\r\n\t\tthis._urlCommands(this.__urlCommands);\r\n\r\n\t\tlet emailSubject = new EmailSubject();\r\n\t\temailSubject.Title = 'SUBJECT';\r\n\t\temailSubject.Value = '{SUBJECT}{/SUBJECT}';\r\n\r\n\t\tlet emailCC = new EmailCC();\r\n\t\temailCC.Title = 'CC';\r\n\t\temailCC.Value = '{CC}{/CC}';\r\n\r\n\r\n\t\tlet emailBCC= new EmailBCC();\r\n\t\temailBCC.Title = 'BCC';\r\n\t\temailBCC.Value = '{BCC}{/BCC}';\r\n\r\n\t\tlet emailTo= new EmailTo();\r\n\t\temailTo.Title = 'TO';\r\n\t\temailTo.Value = '{TO}{/TO}';\r\n\r\n\t\tthis._email([emailSubject, emailTo, emailCC, emailBCC]);\r\n\r\n\t\tthis._scripting([\r\n\t\t\tnew Script('<%%>', '<% %>' ),\r\n\t\t\tnew Script('IIF', 'IIF();'),\r\n\t\t\tnew Script('COUNT', 'COUNT();'),\r\n\t\t\tnew Script('TOTAL', 'TOTAL();'),\r\n\t\t\tnew Script('ROUND', 'ROUND();'),\r\n\t\t\tnew Script('GROUP', \"{GROUP('TABLE_NAME.FIELD_NAME', 'ASC')}\\n\\n{/GROUP}\"),\r\n\t\t\tnew Script('SHOWIF', \"{SHOWIF('CONDITION')}\\n\\n{/SHOWIF}\"),\r\n\t\t\tnew Script('HIDEIF', \"{HIDEIF('CONDITION')}\\n\\n{/HIDEIF}\"),\r\n\t\t\tnew Script('SIGNATURE', \"{SIGNATURE('USER NAME')}\"),\r\n\t\t\tnew Script('MOLLIE', \"{MOLLIE}TableName; RecordId; EUR; Amount; Description{/MOLLIE}\"),\r\n\t\t\tnew Script('QRCODE', \"{QRCODE}\\n\\n{/QRCODE}\"),\r\n\t\t]);\t\r\n\t\t\r\n\t\tthis._variables([new Variable ('FLOW FOLDER FILES', '{FLOW_FOLDER_FILES}' )]);\r\n\r\n\t\tif(editQuery.Query){\r\n\t\t\tthis._subjectEntity(new ToolbarQueryEntity(editQuery.Query.Entity, false));\r\n\t\t\t\t\r\n\t\t\tlet query = editQuery.Query;\r\n\t\r\n\t\t\tlet allJoins = query.EntityJoins\r\n\t\t\t\t.concat(query.SubEntityJoins)\r\n\t\t\t\t.concat(query.LookupEntityJoins)\r\n\t\t\t\t.concat(query.ReferenceEntityJoins)\r\n\t\t\t\t.concat(query.ReferenceLookupEntityJoins);\t\t\t\t\t\r\n\t\r\n\t\t\tthis._joins(allJoins.map(item=> new ToolbarQueryEntityJoin(item, false, true)));\r\n\t\t}\t\r\n\t}\r\n\r\n\tget QueryEntity(): KnockoutObservable<ToolbarQueryEntity> {\r\n\t\treturn this._subjectEntity;\r\n\t}\r\n\r\n\tget Joins(): KnockoutObservableArray<ToolbarQueryEntityJoin>{\r\n\t\treturn this._joins;\r\n\t}\r\n\r\n\tShowQueryBuilder() {\r\n\t\tconst modal = new Modal();\r\n\t\tmodal.Show();\r\n\t\tconst queryBuilder = new QueryBuilder(true, false, true);\r\n\t\tqueryBuilder.QueryTypeName = ViewModes.Template;\r\n\t\tko.cleanNode(modal.Wrapper);\r\n\t\tko.applyBindings(queryBuilder, modal.Wrapper);\r\n\t\tvar recordsPerPageGlobalValue = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n\t\tvar recordsPerPage = parseInt(recordsPerPageGlobalValue) || 10;\r\n\t\tif (this._queryId) {\r\n\t\t\tqueryBuilder.EditQuery(this._queryId, recordsPerPage);\r\n\t\t} else {\r\n\t\t\tqueryBuilder.InitTemplateQuery(recordsPerPage, '', []);\r\n\t\t}\r\n\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.CLOSE, this, (eventArgs) => { modal.Close(); });\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.DATA_SAVED, this, (eventArgs: any) => {\r\n\t\t\tmodal.Close();\r\n\t\t\tif (eventArgs.data) {\r\n\t\t\t\tthis._queryId = eventArgs.data.RecordId;\r\n\t\t\t\tthis.Refresh();\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tSave() {\r\n\t\tthis.Trigger(EVENTS.SAVE);\r\n\t}\r\n\r\n\tPasteTable() { }\r\n\r\n\tPasteFieldCode() { }\r\n\r\n\tget QueryId(): number {\r\n\t\treturn this._queryId;\r\n\t}\r\n\r\n\tset QueryId(queryId: number) {\r\n\t\tthis._queryId = queryId;\r\n\t}\r\n\r\n\tprivate Preview(){\r\n\t\tthis.Trigger(EVENTS.PREVIEW, { EntityId: this._subjectEntity().Model.Metadata.Id }); \r\n\t}\r\n\r\n\tExpandScripting(){\r\n\t\tthis.IsScriptingExpanded(!this.IsScriptingExpanded())\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._isLoadInProgress\\\" class=\\\"form-designer\\\"> <div class=\\\"panel-group\\\"> <div class=\\\"util-btn-margin-bottom-5\\\"> <button data-bind=\\\"click: $data.Save.bind($data)\\\" type=\\\"button\\\" class=\\\"btn green-meadow btn-save-template\\\"><!--ko text: _labels.SAVE --><!-- /ko --></button> <button data-bind=\\\"click: $data.ShowQueryBuilder.bind($data)\\\" type=\\\"button\\\" class=\\\"btn green-meadow btn-save-query\\\"><!--ko text: _labels.QUERY --><!-- /ko --></button> <!--ko if: _subjectEntity --> <button data-bind=\\\"click: $data.Preview.bind($data)\\\" type=\\\"button\\\" class=\\\"btn green-meadow btn-save-query\\\"><!--ko text: _labels.PREVIEW --><!-- /ko --></button> <!-- /ko --> </div> <div data-bind=\\\"\\\" class=\\\"panel panel-success\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"></h4> </div> <div class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"true\\\" style=\\\"display:block\\\"> <div class=\\\"panel-body scroll-y entity-container\\\"> <div class=\\\"panel panel-info\\\"> <div class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <h5 class=\\\"panel-title clip panel-name subject\\\">COMMANDS</h5> </div> </div> <div class=\\\"panel-collapse collapse\\\" style=\\\"display:block\\\"> <!--ko if: _urlCommands().length > 0 --> <div data-bind=\\\"dragula: { data: _urlCommands, group: 'ToolBarToTemplateEditor' }\\\" class=\\\"field-container\\\"> <div class=\\\"alert alert-warning clearfix draggable-field\\\"> <span data-bind=\\\"text: $data.Name\\\" class=\\\"field-name\\\"></span> </div> </div> <!-- /ko --> </div> </div> <div class=\\\"panel panel-info\\\"> <div class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <h5 class=\\\"panel-title clip panel-name subject\\\">VARIABLES</h5> </div> </div> <div class=\\\"panel-collapse collapse\\\" style=\\\"display:block\\\"> <!--ko if: _variables().length > 0 --> <div data-bind=\\\"dragula: { data: _variables, group: 'ToolBarToTemplateEditor' }\\\" class=\\\"field-container\\\"> <div class=\\\"alert alert-warning clearfix draggable-field\\\"> <span data-bind=\\\"text: $data.Title\\\" class=\\\"field-name\\\"></span> </div> </div> <!-- /ko --> </div> </div> <div class=\\\"panel panel-info\\\"> <div class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <h5 class=\\\"panel-title clip panel-name subject\\\">EMAIL</h5> </div> </div> <div class=\\\"panel-collapse collapse\\\" style=\\\"display:block\\\"> <!--ko if: _email().length > 0 --> <div data-bind=\\\"dragula: { data: _email, group: 'ToolBarToTemplateEditor' }\\\" class=\\\"field-container\\\"> <div class=\\\"alert alert-warning clearfix draggable-field\\\"> <span data-bind=\\\"text: $data.Title\\\" class=\\\"field-name\\\"></span> </div> </div> <!-- /ko --> </div> </div> <div class=\\\"panel panel-info\\\"> <div data-bind=\\\"click: $data.ExpandScripting.bind($data)\\\" class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <h5 class=\\\"panel-title clip panel-name subject\\\">SCRIPT</h5> </div> </div> <div data-bind=\\\"style: { display: IsScriptingExpanded() ? 'block' : 'none' }\\\" class=\\\"panel-collapse collapse\\\"> <!--ko if: _scripting().length > 0 --> <div data-bind=\\\"dragula: { data: _scripting, group: 'ToolBarToTemplateEditor' }\\\" class=\\\"field-container\\\"> <div class=\\\"alert alert-warning clearfix draggable-field\\\"> <span data-bind=\\\"text: $data.Title\\\" class=\\\"field-name\\\"></span> </div> </div> <!-- /ko --> </div> </div> </div> </div> </div> <div data-bind=\\\"\\\" class=\\\"panel panel-success\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"><!--ko text: _labels.ENTITIES --><!-- /ko --></h4> </div> <!--ko if: QueryEntity --> <div class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"true\\\" style=\\\"display:block\\\"> <div class=\\\"panel-body scroll-y entity-container\\\"> <!--ko with: QueryEntity --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!--ko foreach: Joins --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <div class=\\\"btn-group\\\"> <div class=\\\"dropdown\\\"> <button data-bind=\\\"css: { 'disabled': _templateLanguages().length == 0 },\\r\\n\\t\\t\\t\\t\\t\\t\\talignDropdown: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttype: 'bootstrap',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdirections: {vertical: true, horizontal: true},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taddEventOnclick: true\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\\" type=\\\"button\\\" class=\\\"btn btn-primary dropdown-toggle\\\" data-toggle=\\\"dropdown\\\"> <!-- ko text: _labels.TEMPLATES --><!-- /ko --> <i class=\\\"fa fa-angle-down\\\"></i> </button> <ul class=\\\"dropdown-menu\\\" role=\\\"menu\\\" data-bind=\\\"css: { 'template-designer__scrollable-menu': _templateLanguages().length >= 8 }\\\"> <!-- ko foreach: _templateLanguages --> <li> <!-- ko ifnot: HasTemplate --> <a data-bind=\\\"click: $parent.CreateTemplate.bind($parent, $data)\\\" href=\\\"javascript:;\\\"> <span><!-- ko text: $parent._labels.CREATE_TEMPLATE_IN --> <!-- /ko --> <!-- ko text: Name --><!-- /ko --><!-- ko if: IsDefault -->(default)<!-- /ko --></span> </a> <!-- /ko --> <!-- ko if: HasTemplate --> <a data-bind=\\\"click: $parent.UpdateTemplate.bind($parent, $data)\\\" href=\\\"javascript:;\\\"> <span><!-- ko text: $parent._labels.UPDATE_TEMPLATE_IN --><!-- /ko --> <!-- ko text: Name --><!-- /ko --><!-- ko if: IsDefault -->(default)<!-- /ko --></span> </a> <!-- /ko --> </li> <!-- /ko --> </ul> </div> </div> </div> <!-- ko if: _hasData --> <div class=\\\"row template-designer\\\"> <div class=\\\"col-md-2 explorer-block\\\"> <!-- ko with: _toolBar --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"col-md-10\\\"> <textarea data-bind=\\\"attr: { id: _guid }, tinymce : { guid: _guid, readOnly: false, autofocus: true, min_height: '500', height: '700', afterInit: $data.AfterTinyInit.bind($data), afterChange: $data.AfterTinyChange.bind($data) }\\\" rows=\\\"20\\\"></textarea> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\"html: $data\\\"></span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\"html: $data\\\"></span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"text: name, attr: {\\r\\n 'next-status': 'Next status',\\r\\n 'command-type': type,\\r\\n title: name,\\r\\n href: 'http://{URL_COMMAND=' + id + '}'\\r\\n }\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\"></a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore'\r\n\r\nimport { ComplexControl } from 'Core/Controls/ComplexControl/ComplexControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { TemplateDesignerStore, IEditTemplateDto, ISaveTemplateDto, IGetLanguagesDto, ICreateTemplateDto, IPreviewHtmlTemplateDto } from 'Core/Controls/TemplateDesigner/Stores/TemplateDesignerStore';\r\nimport { IControlValue } from 'Core/Controls/BaseControl/BaseControl';\r\nimport { RequiredFieldModel } from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { RenderModes, FIELD_TYPES, TABLE_TYPES } from 'Core/Constant'\r\nimport {EmailSubject, QueryToolbar, Script, Variable} from 'Core/Controls/TemplateDesigner/QueryToolbar/QueryToolbar';\r\nimport { EVENTS as QEUERY_TOOLBAR_EVENTS } from 'Core/Controls/TemplateDesigner/QueryToolbar/Events';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { ToolbarQueryEntityJoin } from 'Desktop/Toolbar/ToolbarQueryEntityJoin/ToolbarQueryEntityJoin';\r\nimport { TemplateLanguageModel } from 'Core/Controls/TemplateDesigner/Models/TemplateLanguageModel';\r\nimport { EditTemplateModel } from 'Core/Controls/TemplateDesigner/Models/EditTemplateModel';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { SearchScreen } from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport { Modal } from 'Core/Common/Modal';\r\n\r\nimport ViewTemplate from 'Core/Controls/TemplateDesigner/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/TemplateDesigner/Templates/ToolBar.html';\r\nimport FieldVariableTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/Field.html';\r\nimport TableVariableTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/Table.html';\r\nimport EmailSubjectTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/EmailSubject.html';\r\nimport OpenRecordLinkTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/OpenRecordLink.html';\r\n\r\nimport LoginURLCommandTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/LoginURLCommand.html';\r\nimport NextStatusURLCommandTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/NextStatusURLCommand.html';\r\nimport StepsNextStatusURLCommandTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/StepsNextStatusURLCommand.html';\r\nimport ConfirmedOptinURLCommandTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/ConfirmedOptinURLCommand.html';\r\nimport UnsubscribeMeURLCommandTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/UnsubscribeMeURLCommand.html';\r\nimport ScriptTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/Script.html';\r\nimport VariableTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/Variable.html';\r\n\r\nko.templates['Core/Controls/TemplateDesigner/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/TemplateDesigner/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/TemplateDesigner/Templates/Design'] = ComplexControl.designTemplate;\r\nko.templates['Core/Controls/TemplateDesigner/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/TemplateDesigner/Templates/NextStatusURLCommand'] = NextStatusURLCommandTemplate;\r\nko.templates['Core/Controls/TemplateDesigner/Templates/Variables/EmailSubject'] = EmailSubjectTemplate;\r\n\r\nconst HTML_TEMPLATE = 'html';\r\n\r\nconst TINYMCE_COMMANDS = {\r\n\tINSERT_CONTENT: 'mceInsertContent'\r\n}\r\n\r\nconst URL_COMMANDS = {\r\n\tSTEPS_NEXT_STATUS: 'StepsNextStatus',\r\n\tNEXT_STATUS: 'NextStatus',\r\n\tUNSUBSCRIBE_ME : 'UnsubscribeMe',\r\n\tCONFIRMED_OPTIN : 'ConfirmedOptin',\r\n\tLOGIN_GUEST: 'LoginGuest',\r\n\tLOGIN_GDPR: 'LoginGDPR',\r\n\tLOGIN_CONTACT: 'LoginContactUser'\r\n}\r\n\r\ndeclare function unescape(s:string): string;\r\ndeclare function escape(s:string): string;\r\n\r\nexport class TemplateDesigner extends ComplexControl {\r\n\tprivate _enableEditButton: KnockoutObservable<boolean>;\r\n\tprivate _isWebTemplate: KnockoutObservable<boolean>;\r\n\tprivate _toolBar: KnockoutObservable<QueryToolbar>;\r\n\tprivate _tinyEditor: any;\r\n\tprivate _htmlTemplate: string;\r\n\tprivate _fileName: string;\r\n\tprivate _templateFileId: number;\r\n\tprivate _templateFileKSeq: number;\r\n\tprivate _templateLanguages: KnockoutObservableArray<TemplateLanguageModel>;\r\n\tprivate _hasData: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._isWebTemplate = ko.observable(false);\r\n\t\tthis._toolBar = ko.observable(null);\r\n\t\tthis._templateLanguages = ko.observableArray([]);\r\n\t\tthis._hasData = ko.observable(false);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties() {}\r\n\r\n\tInit() {\r\n\t\tthis._enableEditButton = ko.observable(false);\r\n\t\tif (this.IsRunTime) {\r\n\t\t\tif (this._form && this._form.GetScreen()) {\r\n\t\t\t\tif (this._form.GetScreen().GetTableTypeName().replace('.', '') === HTML_TEMPLATE) {\r\n\t\t\t\t\tthis._isWebTemplate(true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._requiredFields([\r\n\t\t\tnew RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('TEMPLATE', FIELD_TYPES.Document, TABLE_TYPES.Entity, null)\r\n\t\t]);\r\n\r\n\t\tthis.InitRequiredFields();\r\n\r\n\t\tif (this._isWebTemplate()) {\r\n\t\t\tthis._toolBar(new QueryToolbar());\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_FIELD,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (eventArgs.data) {\r\n\t\t\t\t\t\tif (eventArgs.data.Field && eventArgs.data.Entity) {\r\n\t\t\t\t\t\t\tvar entityName = eventArgs.data.Entity.Model.Metadata.Name;\r\n\t\t\t\t\t\t\tif (eventArgs.data.Entity.Model.Index > 1) {\r\n\t\t\t\t\t\t\t\tentityName = `${entityName}${eventArgs.data.Entity.Model.Index}`;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tvar variable = this.GetFieldTemplate(entityName, eventArgs.data.Field.Model.Metadata.Name, eventArgs.data.Field.Model.Metadata.NameTranslation);\r\n\t\t\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, variable);\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\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_ENTITY,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (eventArgs.data) {\r\n\t\t\t\t\t\tif (eventArgs.data.Entity) {\r\n\t\t\t\t\t\t\tvar table = this.GetTableTemplate(eventArgs.data.Entity);\r\n\t\t\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, table);\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\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_SPHEERES_LINK,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetSpheeresLinkTemplate());\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_OPEN_RECORD_LINK,\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetOpenRecordLinkTemplate());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_EMAIL_SUBJECT,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetEmailSubjectTemplate(eventArgs.data.EmailSubject));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_CC,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetEmailSubjectTemplate(eventArgs.data.EmailSubject));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_TO,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetEmailSubjectTemplate(eventArgs.data.EmailSubject));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_BCC,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetEmailSubjectTemplate(eventArgs.data.EmailSubject));\r\n\t\t\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_SCRIPT,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetScriptTemplate(eventArgs.data.Script));\r\n\t\t\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_VARIABLE,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetVariableTemplate(eventArgs.data.Variable));\r\n\t\t\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_URL_COMMAND,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetUrlCommandTemplate(eventArgs.data.Id, eventArgs.data.Name, eventArgs.data.Type));\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.SAVE,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tthis.SaveTemplate();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.PREVIEW,\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\t\tthis.Preview(eventArgs.data.EntityId);\r\n\t\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Preview(entityId: number){\r\n\t\tconst searchScreen = new SearchScreen({\r\n\t\t\tButtonAdd: false,\r\n\t\t\tEntityId: entityId,\r\n\t\t\tSearchTerm: '',\r\n\t\t\tControlId: 0,\r\n\t\t\tConditionToggler: false\r\n\t\t});\r\n\r\n\t\tsearchScreen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n\t\t\tBlockUI.Block();\r\n\t\t\tTemplateDesignerStore\r\n\t\t\t\t.Preview({ RecordId: evtArgs.data.RecordId, QueryId: this._toolBar().QueryId, Data: this.ToBase64(this._tinyEditor.getContent()) })\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.then((data) => {\r\n\t\t\t\t\tlet modal = new Modal();\r\n\t\t\t\t\tmodal.SetContent(this.FromBase64(data));\r\n\t\t\t\t\tmodal.Show();\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t\t});\r\n\r\n\t\t});\r\n\r\n\t\tsearchScreen.Show();\r\n\t}\r\n\r\n\tGetTableTemplate(join: any) {\r\n\t\tvar fields = [];\r\n\t\tvar titles = [];\r\n\t\tif (join instanceof ToolbarQueryEntityJoin) {\r\n\t\t\t_.each(join.Entity.Columns, (column) => {\r\n\t\t\t\tvar entityName = join.Entity.Model.Metadata.Name;\r\n\t\t\t\tif (join.Entity.Model.Index > 1) {\r\n\t\t\t\t\tentityName = `${entityName}${join.Entity.Model.Index}`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar translation = '';\r\n\t\t\t\tif (column.Model.Metadata.NameTranslation) {\r\n\t\t\t\t\ttranslation = `(${column.Model.Metadata.NameTranslation})`;\r\n\t\t\t\t};\r\n\r\n\t\t\t\tfields.push(`${entityName}.${column.Model.Metadata.Name}${translation}`);\r\n\t\t\t\tvar title = column.Model.Metadata.NameTranslation ? column.Model.Metadata.NameTranslation : `${join.Entity.Model.Metadata.Name}.${column.Model.Metadata.Name}`;\r\n\t\t\t\ttitles.push(title);\r\n\t\t\t});\r\n\r\n\t\t\tif(join.LinkEntity){\r\n\t\t\t\t_.each(join.LinkEntity.Columns, (column) => {\r\n\t\t\t\t\tvar entityName = join.LinkEntity.Model.Metadata.Name;\r\n\t\t\t\t\tif (join.LinkEntity.Model.Index > 1) {\r\n\t\t\t\t\t\tentityName = `${entityName}${join.LinkEntity.Model.Index}`;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar translation = '';\r\n\t\t\t\t\tif (column.Model.Metadata.NameTranslation) {\r\n\t\t\t\t\t\ttranslation = `(${column.Model.Metadata.NameTranslation})`;\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfields.push(`${entityName}.${column.Model.Metadata.Name}${translation}`);\r\n\t\t\t\t\tvar title = column.Model.Metadata.NameTranslation ? column.Model.Metadata.NameTranslation : `${join.LinkEntity.Model.Metadata.Name}.${column.Model.Metadata.Name}`;\r\n\t\t\t\t\ttitles.push(title);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar variables = [];\r\n\r\n\t\t_.each(fields, field => {\r\n\t\t\tvariables.push(`{REPEAT ${field}}`);\r\n\t\t});\r\n\r\n\t\treturn (ko as any).renderTemplateXHtml(TableVariableTemplate, { Columns: titles, Fields: variables });\r\n\t}\r\n\r\n\tGetFieldTemplate(entityName: string, fieldName: string, fieldNameTranslation: string) {\r\n\t\tvar translation = '';\r\n\t\tif (fieldNameTranslation) { translation = `(${fieldNameTranslation})`; }\r\n\t\treturn (ko as any).renderTemplateXHtml(FieldVariableTemplate, `{SINGLE ${entityName}.${fieldName}${translation}}`);\r\n\t}\r\n\r\n\tGetEmailSubjectTemplate(subject: EmailSubject) {\r\n\t\treturn (ko as any).renderTemplateXHtml(EmailSubjectTemplate, `${subject.Value}`);\r\n\t}\r\n\r\n\tGetScriptTemplate(script: Script) {\r\n\t\treturn (ko as any).renderTemplateXHtml(ScriptTemplate, `${script.Value}`);\r\n\t}\r\n\r\n\tGetVariableTemplate(variable: Variable) {\r\n\t\treturn (ko as any).renderTemplateXHtml(VariableTemplate, `${variable.Value}`);\r\n\t}\r\n\r\n\tGetSpheeresLinkTemplate() {\r\n\t\treturn (ko as any).renderTemplateXHtml(FieldVariableTemplate, '{SPHEERES_LINK}');\r\n\t}\r\n\r\n\tGetOpenRecordLinkTemplate(){\r\n\t\treturn OpenRecordLinkTemplate;\r\n\t}\r\n\r\n\tGetUrlCommandTemplate(id: string, name: string, type: string) {\r\n\r\n\t\tif(URL_COMMANDS.STEPS_NEXT_STATUS === type){\r\n\t\t\treturn (ko as any).renderTemplateXHtml(StepsNextStatusURLCommandTemplate, { id: id, name: name, type: type });\r\n\t\t}\r\n\r\n\t\tif(URL_COMMANDS.NEXT_STATUS === type){\r\n\t\t\treturn (ko as any).renderTemplateXHtml(NextStatusURLCommandTemplate, { id: id, name: name, type: type });\r\n\t\t}\r\n\r\n\t\tif(URL_COMMANDS.CONFIRMED_OPTIN === type){\r\n\t\t\treturn (ko as any).renderTemplateXHtml(ConfirmedOptinURLCommandTemplate, { id: id, name: name, type: type });\r\n\t\t}\r\n\r\n\t\tif(URL_COMMANDS.UNSUBSCRIBE_ME === type){\r\n\t\t\treturn (ko as any).renderTemplateXHtml(UnsubscribeMeURLCommandTemplate, { id: id, name: name, type: type });\r\n\t\t}\r\n\t\t\r\n\t\tif(URL_COMMANDS.LOGIN_GUEST === type || URL_COMMANDS.LOGIN_CONTACT === type || URL_COMMANDS.LOGIN_GDPR === type){\r\n\t\t\treturn (ko as any).renderTemplateXHtml(LoginURLCommandTemplate, { id: id, name: name, type: type });\r\n\t\t}\r\n\r\n\t\treturn '';\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value && value.SubjectRecordId > 0) {\r\n\t\t\tthis._enableEditButton(true);\r\n\t\t\tthis.LoadData();\r\n\t\t}\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tlet request: IGetLanguagesDto = {\r\n\t\t\tSubjectEntityId: this.GetForm().GetScreen().GetEntityId(),\r\n\t\t\tSubjectRecordId: this.GetForm().GetScreen().GetRecordId(),\r\n\t\t\tControlId: this.GetControlId()\r\n\t\t};\r\n\t\t\r\n\t\tTemplateDesignerStore.GetLanguages(request).then((languages)=>{\r\n\t\t\tthis._templateLanguages(languages);\r\n\t\t}).fail(err=>{\r\n\t\t\tnew Notifier(null).Failed(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\tUpdateTemplate(template: TemplateLanguageModel) {\r\n\t\tthis.SelectTemplateLanguage();\r\n\r\n\t\tvar requestModel: IEditTemplateDto = {\r\n\t\t\tSubjectRecordId: this._form.GetScreen().GetRecordId(),\r\n\t\t\tSubjectEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\tLanguageId: template.Id,\r\n\t\t\tControlId: this.GetControlId()\r\n\t\t};\r\n\r\n\t\tBlockUI.Block();\r\n\t\tTemplateDesignerStore\r\n\t\t\t.Edit(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((template) => {\r\n\t\t\t\tthis.SetTemplate(template);\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tSetTemplate(template: EditTemplateModel){\r\n\t\tif(this._isWebTemplate()){\r\n\t\t\tthis._toolBar().QueryId = template.QueryId;\r\n\t\t\tthis._fileName = template.FileName;\r\n\t\t\tthis._templateFileId = template.RecordId\r\n\t\t\tthis._templateFileKSeq = template.KSeq;\r\n\t\t\tthis._toolBar().SetCommands(template.UrlCommands);\r\n\t\t\tthis._toolBar().Refresh();\r\n\r\n\t\t\tif (this._tinyEditor) {\r\n\t\t\t\tthis._tinyEditor.setContent(this.FromBase64(template.Content));\r\n\t\t\t} else {\r\n\t\t\t\tthis._htmlTemplate = this.FromBase64(template.Content);\r\n\t\t\t}\r\n\t\t\tthis._hasData(true);\r\n\t\t}\r\n\t}\r\n\r\n\tSaveTemplate() {\r\n\t\tvar requestModel: ISaveTemplateDto = {\r\n\t\t\tFileName: this._fileName,\r\n\t\t\tContent: this.ToBase64(this._tinyEditor.getContent()),\r\n\t\t\tQueryId: this._toolBar().QueryId,\r\n\t\t\tControlId: this.GetControlId(),\r\n\t\t\tRecordId: this._templateFileId,\r\n\t\t\tKSeq: this._templateFileKSeq\r\n\t\t}\r\n\r\n\t\tBlockUI.Block();\r\n\t\tTemplateDesignerStore\r\n\t\t\t.Save(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(() => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate ToBase64(str: string): string {\r\n\t\treturn window.btoa(unescape(encodeURIComponent(str)));\r\n\t}\r\n\t\r\n\tprivate FromBase64(str: string):string {\r\n\t\treturn decodeURIComponent(escape(window.atob(str)));\r\n\t}\r\n\r\n\tAfterTinyInit(editor) {\r\n\t\tthis._tinyEditor = editor;\r\n\t\tif (this._htmlTemplate) {\r\n\t\t\tthis._tinyEditor.setContent(this._htmlTemplate);\r\n\t\t}\r\n\t}\r\n\r\n\tSelectTemplateLanguage(){\r\n\t\tthis._hasData(false);\r\n\t\tthis._tinyEditor = null;\r\n\t}\r\n\r\n\tCreateTemplate(templateLanguage: TemplateLanguageModel){\r\n\r\n\t\tvar requestModel: ICreateTemplateDto = {\r\n\t\t\tSubjectRecordId: this._form.GetScreen().GetRecordId(),\r\n\t\t\tSubjectEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\tLanguageId: templateLanguage.Id,\r\n\t\t\tControlId: this.GetControlId()\r\n\t\t};\r\n\r\n\t\tBlockUI.Block();\r\n\t\tTemplateDesignerStore\r\n\t\t\t.Create(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\tthis.LoadData();\r\n\t\t\t})\r\n\t\t\t.then((template) => { \r\n\t\t\t\ttemplateLanguage.HasTemplate = true;\r\n\t\t\t\tthis._templateLanguages.valueHasMutated();\r\n\t\t\t\tthis.SetTemplate(template);\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tAfterTinyChange() { }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-file-text\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<table style=\\\"border-collapse:collapse;border:1px solid #000\\\"> <tbody> <tr> <!-- ko foreach: Columns --><td data-bind=\\\"text: $data\\\" style=\\\"border-collapse:collapse;border:1px solid #000\\\"></td><!-- /ko --> </tr> <tr> <!-- ko foreach: Fields --> <td style=\\\"border-collapse:collapse;border:1px solid #000\\\"> <span style=\\\"white-space:unset\\\" data-bind=\\\"html: $data\\\"></span> </td> <!-- /ko --> </tr> </tbody> </table>\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\"html: $data\\\"></span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\"html: $data\\\"></span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"{OPEN_RECORD}\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">Click here to open the record</a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"text: name, attr: {\\r\\n 'next-status': 'Next status',\\r\\n 'command-type': type,\\r\\n title: name,\\r\\n href: 'http://{URL_COMMAND=' + id + '}'\\r\\n }\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\"></a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a subscription-entity=\\\"CONTACTS\\\" data-bind=\\\"text: name, attr: {\\r\\n 'command-type': type,\\r\\n title: name,\\r\\n href: 'http://{URL_COMMAND=' + id + '}'\\r\\n }\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\"></a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"text: name, attr: {\\r\\n 'command-type': type,\\r\\n title: name,\\r\\n href: 'http://{URL_COMMAND=' + id + '}'\\r\\n }\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\"></a>\";\n// Exports\nexport default code;","import { deserialize, deserializeAs } from \"libs/cerialize\";\r\nexport class Posts {\r\n\t@deserialize\r\n\tPosts: Array<Post>;\r\n\r\n\t@deserialize\r\n\tTitle: string;\r\n}\r\nexport class Post {\r\n\t@deserialize\r\n\tTitle: string;\r\n\r\n\t@deserialize\r\n\tBody: string;\r\n\r\n\t@deserialize\r\n\tUrl: string;\r\n\r\n\t@deserialize\r\n\tDateTimePosted: string;\r\n}","import {Post} from \"Core/Controls/RssFeed/Models/Post\";\r\nimport { deserialize, deserializeAs } from \"libs/cerialize\";\r\n\r\nexport class RssFeedModel {\r\n\t@deserialize\r\n\tTitle: string;\r\n\t\r\n\t@deserializeAs(Post)\r\n\tPosts: Array<Post>;\r\n}","import { Request, IRequestOptions } from \"Core/Common/Request\";\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { URL } from \"Core/Common/Url\";\r\nimport { GenericDeserialize } from \"libs/cerialize\";\r\nimport { RssFeedModel } from \"Core/Controls/RssFeed/Models/RssFeedModel\";\r\nimport { IRssFeedRequestModel } from \"Core/Controls/RssFeed/Models/IRssFeedRequestModel\";\r\n\r\nexport class RssFeedStore {\r\n\tstatic GetRssFeed(params: IRssFeedRequestModel): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.RSSFEED.GET_RSS_FEED,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tvar result = GenericDeserialize<RssFeedModel>(data.ResultObject, RssFeedModel);\r\n\t\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail((err) => deferredResult.reject({message: err.message}));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"scrollFixer: {}, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView EditScreenView feed-control form-standart-control\\\"> <!-- start template --> <div class=\\\"slimScrollDiv\\\"> <div class=\\\"scroller\\\" data-always-visible=\\\"1\\\" data-rail-visible=\\\"0\\\" data-initialized=\\\"1\\\"> <ul class=\\\"feeds\\\"> <!-- ko foreach: _rssPosts --> <li> <div class=\\\"col1\\\"> <div class=\\\"cont\\\"> <div class=\\\"cont-col1\\\"> <div class=\\\"label label-sm label-default\\\"> <i class=\\\"fa fa-bullhorn\\\"></i> </div> </div> <div class=\\\"cont-col2\\\"> <div class=\\\"desc name\\\"> <a tabindex=\\\"-1\\\" data-bind=\\\"text: Title, attr: {'href': Url}\\\" target=\\\"_blank\\\" href=\\\"#\\\">Egyptian artist creates portraits out of burnt tobacco.</a> </div> <div data-bind=\\\"html: Body\\\" class=\\\"desc\\\"> ALEXANDRIA, Egypt (Reuters) - In a small studio littered with empty cigarette packets in Egypt's second city, Alexandria, Abdelrahman al-Habrouk sits hunched over a sheet of paper making portraits with tobacco. </div> <!--\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tCustom CyberActions for Rss \\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<div class=\\\"desc clearfix\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"label label-sm label-danger \\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tEmail this\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<i class=\\\"fa fa-share\\\"></i>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</span>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"label label-sm label-warning \\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tSave to \\\"CyberBox\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<i class=\\\"fa fa-share\\\"></i>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</span>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"label label-sm label-success \\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tAnother one action\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<i class=\\\"fa fa-share\\\"></i>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</span>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"label label-sm label-info \\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tBlue action\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<i class=\\\"fa fa-share\\\"></i>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</span>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t--> </div> </div> </div> <div class=\\\"col2\\\"> <div data-bind=\\\"text: DateTimePosted\\\" class=\\\"date\\\"> 3 hours </div> </div> </li> <!-- /ko --> </ul> </div> </div> <!-- end template --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {RenderModes} from \"Core/Constant\";\r\n\r\nimport { RssFeedStore } from \"Core/Controls/RssFeed/Stores/RssFeedStore\";\r\nimport { Posts } from \"Core/Controls/RssFeed/Models/Post\";\r\nimport { IRssFeedRequestModel } from \"Core/Controls/RssFeed/Models/IRssFeedRequestModel\";\r\n\r\nimport RssFeedConfigJson from 'Core/Controls/RssFeed/Configs/rssfeed-config.json';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport ViewTemplate from 'Core/Controls/RssFeed/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/RssFeed/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/RssFeed/Templates/Design.html';\r\n\r\nko.templates['Core/Controls/RssFeed/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/RssFeed/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/RssFeed/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/RssFeed/Templates/Design'] = DesignTemplate;\r\n\r\nexport class RssFeed extends BaseControl {\r\n\tprivate _url: KnockoutObservable<string>;\r\n\tprivate _rssPosts: KnockoutObservable<any>;\r\n\tprivate _labelStyle: KnockoutObservable<any>;\r\n\tprivate _textInputStyle: KnockoutObservable<any>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, RssFeedConfigJson);\r\n\r\n\t\tthis._labelStyle = ko.observable(null);\r\n\t\tthis._textInputStyle = ko.observable(null);\r\n\t\tthis._url = ko.observable('');\r\n\t\tthis.Init();\r\n\t\tthis.BindEvents();\r\n\t\tthis._rssPosts = ko.observable(null);\r\n\t\tthis._model.subscribe(() => {\r\n\t\t\tif (this.Properties) {\r\n\t\t\t\tthis.ApplyProperties();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tInit(): void {\r\n\t\tthis._url = ko.observable('');\r\n\t\tthis.ApplyProperties();\r\n\t\tif (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar) {\r\n\t\t\tthis.LoadData();\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\t\r\n\t}\r\n\r\n\tprivate SetUrlProperty() {\r\n\t\tif (this.Properties) {\r\n\t\t\tif (this.Properties.Url) {\r\n\t\t\t\t_.each(this.Properties.Url.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.Url) {\r\n\t\t\t\t\t\tthis._url(property.Url);\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\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\t//Label\r\n\t\t\tif (this.Properties.Label) {\r\n\t\t\t\tvar labelStyle = { backgroundColor: null, color: null };\r\n\t\t\t\t_.each(this.Properties.Label.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\tlabelStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (property.Color) {\r\n\t\t\t\t\t\tlabelStyle.color = property.Color;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._labelStyle(labelStyle);\r\n\t\t\t}\r\n\r\n\t\t\t//TextInput\r\n\t\t\tif (this.Properties.TextInput) {\r\n\t\t\t\tvar textInputStyle = { backgroundColor: null };\r\n\t\t\t\t_.each(this.Properties.TextInput.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\ttextInputStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._textInputStyle(textInputStyle);\r\n\t\t\t}\r\n\r\n\t\t\t//Url\r\n\t\t\tthis.SetUrlProperty();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate LoadData() {\r\n\t\tRssFeedStore.GetRssFeed({ Url: this._url()})\r\n\t\t\t.then((data: Posts) => {\r\n\t\t\t\tthis._rssPosts(data.Posts);\r\n\t\t\t\tlet linkArray = $(this._el).find('a');\r\n\t\t\t\t_.each(linkArray, link => {\r\n\t\t\t\t\t$(link).attr('tabindex', '-1');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-rss\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"rss-control\\\" class=\\\"FormDesignerView label-input form-standart-control\\\"> <label data-bind=\\\"style: _labelStyle\\\" class=\\\"header-number rssFeed\\\"> <span class=\\\"text-left additional-icon custom-color-option fa fa-3x fa-stack fa-rss\\\"></span> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> <div data-bind=\\\"style: _textInputStyle, attr: { 'data-text': _url() ? _url() : 'Url not specifed' }\\\" class=\\\"form-control control with-label textarea-control\\\"></div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { EditScreen } from 'Core/Screens/EditScreen/EditScreen';\r\n\r\nimport HelpViewTemplate from 'Core/Controls/Alias/Templates/HelpView.html'\r\nimport ViewTemplate from 'Core/Controls/Alias/Templates/View.html'\r\nimport ToolbarTemplate from 'Core/Controls/Alias/Templates/ToolBar.html'\r\nimport EditTemplate from 'Core/Controls/Alias/Templates/Edit.html'\r\nimport DesignTemplate from 'Core/Controls/Alias/Templates/Design.html'\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport {FIELD_TYPES, FONT_STYLES, TABLE_TYPES} from \"../../Constant\";\r\nimport {PUB_SUB_EVENTS} from \"../../../MenuManager/PubSubEvents\";\r\n\r\nko.templates['Core/Controls/Alias/Templates/ToolBar'] = ToolbarTemplate;\r\nko.templates['Core/Controls/Alias/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Alias/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Alias/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Alias/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Alias extends BaseControl {\r\n\tprivate _value: string;\r\n\tprivate _labelStyle: KnockoutObservable<any>;\r\n private _isHyperlink: KnockoutObservable<boolean>;\r\n private _dataRecordId: number;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t\tthis._labelStyle = ko.observable(null);\r\n this._isHyperlink = ko.observable(false);\r\n\t\tthis.BindEvents();\r\n\t\tthis._model.subscribe(() => {\r\n\t\t\tif (this.Properties) {\r\n\t\t\t\tthis.ApplyProperties();\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.ApplyProperties();\r\n\t\tthis._value = '';\r\n\t}\r\n\r\n\tGetValue() {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\t ApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\t//Label\r\n\t\t\tif (this.Properties.Label) {\r\n\t\t\t\tvar labelStyle = { backgroundColor: null, color: null };\r\n\t\t\t\t_.each(this.Properties.Label.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\tlabelStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (property.Color) {\r\n\t\t\t\t\t\tlabelStyle.color = property.Color;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._labelStyle(labelStyle);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n\t\t\tthis.ApplyLinkEditorStyles();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ApplyLinkEditorStyles() {\r\n\t\tif(!this.FieldModel.HasLinkEditorVisibility){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst labelStyle = {\r\n\t\t\tcolor: null,\r\n\t\t\tfontWeight: null,\r\n\t\t\tfontStyle: null,\r\n\t\t\ttextDecoration: null\r\n\t\t};\r\n\t\tif (this.FieldModel.FontColor) {\r\n\t\t\tlabelStyle.color = this.FieldModel.FontColor;\r\n\t\t}\r\n\t\tlabelStyle.fontWeight = FONT_STYLES.NORMAL; //default fontWeight\r\n\r\n\t\tif (this.FieldModel.FontStyles) {\r\n\t\t\t_.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n\t\t\t\tswitch ( style.Name.toLowerCase() ) {\r\n\t\t\t\t\tcase FONT_STYLES.BOLD:\r\n\t\t\t\t\t\tlabelStyle.fontWeight = FONT_STYLES.BOLD;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FONT_STYLES.UNDERLINE:\r\n\t\t\t\t\t\tlabelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FONT_STYLES.ITALIC:\r\n\t\t\t\t\t\tlabelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis.Extend(labelStyle, this._labelStyle());\r\n\t\tthis._labelStyle(labelStyle);\r\n\t}\r\n\r\n\tprivate GetClassName(): string {\r\n\t\tconst classes = [this.FormatName, this._isIconVisible && 'with-icon' ];\r\n\t\treturn classes.join(' ');\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.Data) {\r\n this._dataRecordId = value.Data.RecordId;\r\n\r\n let currentValue = this.ApplyAliasSuffix(value.Data.DisplayValue || value.Data.Value);\r\n currentValue = this.ApplyMaxLengthFormatter(currentValue);\r\n\r\n this._isHyperlink(\r\n this._form &&\r\n this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.ConsultScreen] &&\r\n this.FormatName === 'None' &&\r\n this.FieldModel.FieldTypeName === FIELD_TYPES.Alias &&\r\n this.FieldModel.EntityId !== this._form.GetScreen().GetEntityId() &&\r\n this.FieldModel.EntityTypeName === TABLE_TYPES.Entity &&\r\n !!currentValue\r\n );\r\n\r\n\t\t\tthis._value = currentValue;\r\n\t\t}\r\n\t}\r\n\r\n\tApplyAliasSuffix(value: string): string {\r\n\t\tif (!this._form || this._form.GetScreen().GetTypeName() !== ScreenTypes[ScreenTypes.EditScreen]) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tconst screen = this._form.GetScreen() as EditScreen;\r\n\t\tconst aliasSuffix = screen.AliasSuffix;\r\n\r\n\t\tif (!aliasSuffix) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\treturn `${value || ''}${aliasSuffix}`;\r\n\t}\r\n\r\n\tApplyMaxLengthFormatter(value: string) {\r\n\t\tconst maxFieldSize = this.GetFieldMaxLength();\r\n\r\n\t\tif (!value || maxFieldSize <= 0 || value.length <= maxFieldSize) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\treturn value.slice(0, maxFieldSize);\r\n\t}\r\n\r\n\tGetFieldMaxLength(): number {\r\n\t\tconst fieldData = this._model().Fields[0];\r\n\t\tif (!fieldData) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst maxLength = (fieldData.FieldTypeName === FIELD_TYPES.Alias) ? fieldData.Size : -1;\r\n\r\n\t\treturn maxLength > 0 ? maxLength : -1;\r\n\t}\r\n\r\n\tDeserialize() {\r\n\t\tconst field = _.first(this._model().Fields);\r\n\t\tif (!field) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn [`${field.EntityName}.${field.Name}`, this._value];\r\n\t}\r\n\r\n OpenRecordScreen(_, data, evt) {\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {EntityId: this.FieldModel.EntityId, RecordId: this._dataRecordId, IsOpenInModal: evt.ctrlKey });\r\n }\r\n\r\n private Init(): void {\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\r\n\t}\r\n\r\n\tAliasValue() {\r\n\t\treturn this._value || this.ExampleAlias;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<div data-control-type=\\\"alias-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-align-center\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\" data-control-type=\\\"alias-control\\\" class=\\\"clearfix\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko if: _isHyperlink --> <div data-bind=\\\"\\r\\n attr: { 'data-text': Label },\\r\\n text: _value,\\r\\n click: OpenRecordScreen.bind($data, $data)\\r\\n \\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control textarea-control_hyperlink\\\"></div> <!-- /ko --> <!-- ko ifnot: _isHyperlink --> <div data-bind=\\\"\\r\\n \\t\\tcss: GetClassName(),\\r\\n attr: { 'data-text': Label },\\r\\n text: _value\\r\\n \\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"></div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"alias-control\\\" class=\\\"clearfix\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"attr: { 'data-text': Label }, text: _value\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"></div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\" data-control-type=\\\"alias-control\\\" class=\\\"alias-control clearfix\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"alias-control\\\" class=\\\"EditScreenView label-input form-standart-control clearfix\\\"> <label data-bind=\\\"text: Label, tooltip: DescriptionToolTip, style: _labelStyle\\\"></label> <div data-bind=\\\"attr: { 'data-text': Label }, text: AliasValue()\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"></div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"alias-control\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"attr: { 'data-text': Label }, css: {'with-icon': _isIconVisible}\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"></div> </div>\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\n\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\n\r\n\r\nexport interface IRunReportRequestModel {\r\n\tControlId: number;\r\n\tExportFormat?: number;\r\n}\r\n\r\nexport class CrystalReportViewerStore {\r\n\tstatic RunReport(params: IRunReportRequestModel): P.Promise<string> {\r\n\t\tvar deferredResult = P.defer<string>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/CrystalReportViewerApi/RunReport\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail((data)=>{\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"text-control ConsultScreenView label-input form-standart-control clearfix crystal-viewer-control\\\" data-control-type=\\\"crystal-viewer-control\\\"> <a data-bind=\\\"enableAttr: $data._enablePreviousPageButton, click: FirstPage\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default\\\"> <i class=\\\"fa fa-angle-double-left\\\"></i> </a> <a data-bind=\\\"enableAttr: $data._enablePreviousPageButton, click: PreviousPage\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default\\\"> <i class=\\\"fa fa-angle-left\\\"></i> </a> <a data-bind=\\\"enableAttr: $data._enableNextPageButton, click: NextPage\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default\\\"> <i class=\\\"fa fa-angle-right\\\"></i> </a> <a data-bind=\\\"enableAttr: $data._enableNextPageButton, click: LastPage\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default\\\"> <i class=\\\"fa fa-angle-double-right\\\"></i> </a> <a data-bind=\\\"enableAttr: $data._hasData, click: ZoomIn\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default\\\"> <i class=\\\"fa fa-search-plus\\\"></i> </a> <a data-bind=\\\"enableAttr: $data._hasData, click: ZoomOut\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default\\\"> <i class=\\\"fa fa-search-minus\\\"></i> </a> <select data-bind=\\\"enableAttr: $data._hasData, options: _exportFormats, optionsText: 'Title', value: _exportFormat, optionsCaption: 'Export'\\\"></select> <canvas data-bind=\\\"canvas: { context: _canvasContext }, attr: { width: _canvasWidth, height: _canvasHeight }\\\"></canvas> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport 'pdfjs-dist/build/pdf';\r\n\r\nimport { BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {CrystalReportViewerStore} from 'Core/Controls/CrystalViewer/Stores/CrystalReportViewerStore';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { RenderModes } from 'Core/Constant';\r\nimport { FileDownloader } from 'Core/Components/FileDownloader/FileDownloader';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\n\r\nimport { GeneralProperties } from 'Core/GeneralProperties/GeneralProperties';\r\nimport ConfigJson from 'Core/Controls/CrystalViewer/Configs/crystal-report-viewer-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/CrystalViewer/Templates/View.html'\r\nimport ToolBarTemplate from 'Core/Controls/CrystalViewer/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/CrystalViewer/Templates/Design.html'\r\n\r\nko.templates['Core/Controls/CrystalViewer/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/CrystalViewer/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/CrystalViewer/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/CrystalViewer/Templates/Edit'] = ViewTemplate;\r\n\r\ninterface IExportFormat {\r\n\tTitle: string;\r\n\tValue: number;\r\n\tExtention: string;\r\n}\r\n\r\nconst EXPORT_FORMATS: Array<IExportFormat> = [\r\n\t{\r\n\t\tTitle: 'PDF',\r\n\t\tValue: 5,\r\n\t\tExtention: '.pdf'\r\n\t},\r\n\t{\r\n\t\tTitle: 'Excel',\r\n\t\tValue: 4,\r\n\t\tExtention: '.xls'\r\n\t},\r\n\t{\r\n\t\tTitle: 'Word',\r\n\t\tValue: 3,\r\n\t\tExtention: '.doc'\r\n\t}\r\n];\r\n\r\nconst PROPERTIES = {\r\n\tCRYSTAL_REPORT: 'CrystalReport'\r\n}\r\n\r\n//TODO move PDF viewer to components\r\nexport class CrystalReportViewer extends BaseControl {\r\n\tprivate _content: Uint8Array;\r\n\tprivate _canvasContext: KnockoutObservable<CanvasRenderingContext2D>;\r\n\tprivate _canvasWidth: KnockoutObservable<number>;\r\n\tprivate _canvasHeight: KnockoutObservable<number>;\r\n\tprivate _pdfDocument: PDFDocumentProxy;\r\n\tprivate _loadInProgress: boolean;\r\n\tprivate _currentPage: KnockoutObservable<number>;\r\n\tprivate _totalPages: KnockoutObservable<number>;\r\n\tprivate _scale: number;\r\n\tprivate _exportFormats = EXPORT_FORMATS;\r\n\tprivate _exportFormat: KnockoutObservable<IExportFormat>;\r\n\tprivate _enablePreviousPageButton: KnockoutObservable<boolean>;\r\n\tprivate _enableNextPageButton: KnockoutObservable<boolean>;\r\n\tprivate _fileName: KnockoutObservable<string>;\r\n\t\r\n\tprivate _hasData: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, ConfigJson);\r\n\t\tthis._exportFormat = ko.observable(null);\r\n\t\tthis._canvasContext = ko.observable(null);\r\n\t\tthis._canvasWidth = ko.observable(0);\r\n\t\tthis._canvasHeight = ko.observable(0);\r\n\t\tthis._pdfDocument = null;\r\n\t\tthis._loadInProgress = false;\r\n\t\tthis._currentPage = ko.observable(null);\r\n\t\tthis._totalPages = ko.observable(null);\r\n\t\tthis._scale = 1;\r\n\t\tthis._enablePreviousPageButton = ko.observable(false);\r\n\t\tthis._enableNextPageButton = ko.observable(false);\r\n\t\tthis._hasData = ko.observable(false);\r\n\t\tthis._fileName = ko.observable('');\r\n\r\n\t\tif (this._renderMode() === RenderModes.View) {\r\n\r\n\t\t\tthis._isRendered.subscribe(() => { this.LoadReport(); });\r\n\r\n\t\t\tthis._exportFormat.subscribe((newValue) => {\r\n\t\t\t\tif (newValue) {\r\n\t\t\t\t\tthis.ExportReport(newValue);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._currentPage.subscribe((newValue) => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\tthis._enablePreviousPageButton(newValue > 1);\r\n\t\t\t\tthis._enableNextPageButton(newValue + 1<= this._totalPages());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._canvasContext.subscribe((newValue) => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\tif (this._hasData()) {\r\n\t\t\t\t\tthis.RenderPage();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tconst crystalReport = this.GeneralProperties.GetPropertyValue(PROPERTIES.CRYSTAL_REPORT);\r\n\r\n\t\tif (crystalReport) {\r\n\t\t\tthis._fileName(crystalReport.FileName);\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue) {\r\n\t}\r\n\r\n\tLoadReport() {\r\n\t\tthis._loadInProgress = true;\r\n\t\tCrystalReportViewerStore.RunReport({ ControlId: this.GetControlId(), ExportFormat: 5 })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis._loadInProgress = false;\r\n\t\t\t\tBlockUI.Unblock( this._el );\r\n\t\t\t})\r\n\t\t\t.then((content) => {\r\n\t\t\t\tthis.DisplayReport(content);\r\n\t\t\t}).fail((err) => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tExportReport(format: IExportFormat) {\r\n\t\tBlockUI.Block({ Target: this._el });\r\n\t\tCrystalReportViewerStore.RunReport({ ControlId: this.GetControlId(), ExportFormat: format.Value })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock(this._el);\r\n\t\t\t})\r\n\t\t\t.then((base64) => {\r\n\t\t\t\tthis.DownloadReport(base64, format.Extention);\r\n\t\t\t}).fail((err) => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t});;\r\n\t}\r\n\r\n\tDownloadReport(base64: string, extention: string) {\r\n\t\tFileDownloader.DownloadBase64(base64, `report${extention}`);\r\n\t}\r\n\r\n\tDisplayReport(base64Pdf: string) {\r\n\t\tvar byteArray = this.Base64ToUint8Array(base64Pdf);\r\n\t\tPDFJS.disableWorker = true;\r\n\t\tPDFJS.getDocument({ data: byteArray }).then((pdf) => {\r\n\t\t\tthis._pdfDocument = pdf;\r\n\t\t\tthis._totalPages(pdf.numPages);\r\n\t\t\tthis._hasData(true);\r\n\t\t\tthis._currentPage(1);\r\n\t\t\tthis.RenderPage();\r\n\t\t});\r\n\t}\r\n\r\n\tRenderPage() {\r\n\t\tthis._pdfDocument.getPage(this._currentPage()).then((page) => {\r\n\t\t\tvar viewport = page.getViewport(this._scale);\r\n\t\t\tthis._canvasWidth(viewport.width);\r\n\t\t\tthis._canvasHeight(viewport.height);\r\n\r\n\t\t\tif (this._canvasContext()) {\r\n\t\t\t\tvar renderContext = {\r\n\t\t\t\t\tcanvasContext: this._canvasContext(),\r\n\t\t\t\t\tviewport: viewport\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar renderTask = page.render(renderContext);\r\n\t\t\t\trenderTask.then(() => { });\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tBase64ToUint8Array(base64Pdf: string): Uint8Array {\r\n\t\tvar pdfData = atob(base64Pdf);\r\n\t\tvar array = new Uint8Array(new ArrayBuffer(pdfData.length));\r\n\t\tfor (var i = 0; i < pdfData.length; i++) {\r\n\t\t\tarray[i] = pdfData.charCodeAt(i);\r\n\t\t};\r\n\t\treturn array;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\r\n\t\tif (this._loadInProgress) {\r\n\t\t\tBlockUI.Block({ Target: this._el });\r\n\t\t}\r\n\t}\r\n\r\n\tFirstPage() {\r\n\t\tthis._currentPage(1);\r\n\t\tthis.RenderPage();\r\n\t}\r\n\r\n\tLastPage() {\r\n\t\tthis._currentPage(this._totalPages());\r\n\t\tthis.RenderPage();\r\n\t}\r\n\r\n\tPreviousPage() {\r\n\t\tif (this._enablePreviousPageButton()) {\r\n\t\t\tthis._currentPage(this._currentPage() - 1);\r\n\t\t\tthis.RenderPage();\r\n\t\t}\r\n\t}\r\n\r\n\tNextPage() {\r\n\t\tif (this._enableNextPageButton()) {\r\n\t\t\tthis._currentPage(this._currentPage() + 1);\r\n\t\t\tthis.RenderPage();\r\n\t\t}\r\n\t}\r\n\r\n\tZoomOut() {\r\n\t\tif(this._scale === 0.5) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._scale = this._scale - 0.5;\r\n\t\tthis.RenderPage();\r\n\t}\r\n\r\n\tZoomIn() {\r\n\t\tif(this._scale === 4) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._scale = this._scale + 0.5;\r\n\t\tthis.RenderPage();\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-file-pdf-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <label class=\\\"crystalViewer\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"attr: { 'data-text': _fileName() ? _fileName() : 'Select file' }\\\" class=\\\"form-control control with-label textarea-control\\\"></div> </div>\";\n// Exports\nexport default code;","export enum ViewModes {\r\n\tView,\r\n\tEdit,\r\n\tDesign\r\n}","import { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport enumerable from '../../../../Common/Decorators/EnumerableDecorator';\r\nexport class DataRole {\r\n\tconstructor(public Name: string, public ShortName: string, public Type: string, public Sort: number) {\r\n\t}\r\n}\r\n\r\nexport class DataRoles {\r\n\tDPO: DataRole;\r\n\tVO: DataRole;\r\n\tSO: DataRole;\r\n\tDO: DataRole;\r\n\tPO: DataRole;\r\n\tDEP: DataRole;\r\n\r\n\tprivate static _instance;\r\n\r\n\tprivate constructor() {\r\n\t\tthis.DPO = new DataRole(LABELS.DATA_PROTECTION_OFFICER, \"DPO\", \"Gdpr\", 0);\r\n\t\tthis.VO = new DataRole(LABELS.VAULT_OWNER, \"VO\", \"Vault\", 1);\r\n\t\tthis.SO = new DataRole(LABELS.SAFE_OVNER, \"SO\", \"Safe\", 2);\r\n\t\tthis.DO = new DataRole(LABELS.DISCLOSURE_OFFICER, \"DO\", \"Disclosed\", 3);\r\n\t\tthis.PO = new DataRole(LABELS.PUBLICATION_OFFICER, \"PO\", \"Public\", 4);\r\n\t\tthis.DEP = new DataRole(LABELS.DEPUTY, \"DEP\", null, 5);\r\n\t}\r\n\r\n\tstatic get Instance() {\r\n\t\treturn this._instance || (this._instance = new DataRoles());\r\n\t}\r\n\r\n\tGetAllDataRoles() {\r\n\t\treturn Object.keys(this).filter(key => this[key] instanceof DataRole)\r\n\t\t\t.sort((leftKey, rightKey) => this[leftKey].Sort - this[rightKey].Sort)\r\n\t\t\t.map(key => this[key]);\r\n\t}\r\n\r\n\tGetThirdPartyDataRoles(){\r\n\t\treturn [this.PO, this.DO, this.DPO];\r\n\t}\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {Request} from \"Core/Common/Request\";\r\nimport Rejection = P.Rejection;\r\n\r\nimport {GetDataRolesResponseModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/GetDataRolesResponseModel\";\r\nimport { GetFieldCollectionsResponseModel } from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/GetFieldCollectionsResponseModel\";\r\n\r\nimport {AssigneeDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/AssigneeDTOModel\";\r\n\r\n\r\nexport class FieldSecurityStore {\r\n\tstatic GetDataRoles(userId): P.Promise<GetDataRolesResponseModel> {\r\n\t\tconst deferred = P.defer<GetDataRolesResponseModel>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ControlsApi/GetDataRoles',\r\n\t\t\t\ttype: 'Get',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: {id: userId}\r\n\t\t}).then(response => this.ResolveResponse(deferred, response))\r\n\t\t\t.fail(error => this.RejectResponse(deferred, error));\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetUsers(userTypeName): P.Promise<AssigneeDTOModel[]> {\r\n\t\tconst deferred = P.defer<AssigneeDTOModel[]>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ControlsApi/GetUsersWithoutCollections',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: {\r\n\t\t\t\ttypeName: userTypeName\r\n\t\t\t}\r\n\t\t}).then(response => response.IsSuccessfull\r\n\t\t\t? this.ResolveResponse(deferred, response.ResultObject)\r\n\t\t\t: this.RejectResponse(deferred, {message: response.ErrorMessage})\r\n\t\t).fail(error => this.RejectResponse(deferred, error));\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetUserFieldCollections(): P.Promise<GetFieldCollectionsResponseModel> {\r\n\t\tconst deferred = P.defer<GetFieldCollectionsResponseModel>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FieldCollectionDesignerApi/GetUserCollection',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t}).then(response => this.ResolveResponse(deferred, response))\r\n\t\t\t.fail(error => this.RejectResponse(deferred, error));\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tprivate static ResolveResponse<T>(deferred: P.Deferred<T>, response: T) {\r\n\t\tdeferred.resolve(response);\r\n\t}\r\n\r\n\tprivate static RejectResponse<T>(deferred: P.Deferred<T>, error: Rejection) {\r\n\t\tdeferred.reject(error);\r\n\t}\r\n}","export class AssigneeModel {\r\n\tId: number;\r\n\tName: string;\r\n\r\n\tconstructor(id: number, name: string) {\r\n\t\tthis.Id = id;\r\n\t\tthis.Name = name;\r\n\t}\r\n}","import { AssigneeDTOModel } from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/AssigneeDTOModel\";\r\nimport { AssigneeModel } from \"Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel\";\r\n\r\nexport class AssigneeMappings {\r\n\tstatic MapToAssignee(assigneeDto: AssigneeDTOModel): AssigneeModel {\r\n\t\treturn new AssigneeModel(assigneeDto.Id, assigneeDto.Name);\r\n\t}\r\n\r\n\tstatic MapToNewAssignee(assignee: AssigneeModel) {\r\n\t\treturn assignee && assignee.Id;\r\n\t}\r\n}","import {Guid} from \"Core/Common/Guid\";\r\n\r\nimport {AssigneeModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel\";\r\n\r\nexport class FieldCollectionModel {\r\n\tId: number;\r\n\tName: string;\r\n\tAssignee: AssigneeModel;\r\n\r\n\tGuid: string;\r\n\r\n\tconstructor(id: number, name: string, assignee: AssigneeModel){\r\n\t\tthis.Id = id;\r\n\t\tthis.Name = name;\r\n\t\tthis.Assignee = assignee;\r\n\r\n\t\tthis.Guid = Guid.NewGuid();\r\n\t}\r\n\r\n\tget AssigneeName() {\r\n\t\treturn this.Assignee && this.Assignee.Name;\r\n\t}\r\n}","import {AssigneeMappings} from \"Core/Controls/FieldSecurity/Mappings/AssigneeMappings\";\r\n\r\nimport {FieldCollectionDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/FieldCollectionDTOModel\";\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\n\r\nexport class FieldCollectionMappings {\r\n\tstatic MapToFieldCollection(fieldCollectionDto: FieldCollectionDTOModel): FieldCollectionModel {\r\n\t\tconst assignee = fieldCollectionDto.Assignee && AssigneeMappings.MapToAssignee(fieldCollectionDto.Assignee);\r\n\t\treturn new FieldCollectionModel(fieldCollectionDto.Id, fieldCollectionDto.Name, assignee);\r\n\t}\r\n}","import {Guid} from 'Core/Common/Guid';\r\n\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\n\r\nexport class DataRoleModel {\r\n\tId: number;\r\n\tName: string;\r\n\tFieldCollection: FieldCollectionModel;\r\n\r\n\tGuid: string;\r\n\r\n\tconstructor(id: number, name: string, fieldCollection: FieldCollectionModel){\r\n\t\tthis.Id = id;\r\n\t\tthis.Name = name;\r\n\t\tthis.FieldCollection = fieldCollection;\r\n\r\n\t\tthis.Guid = Guid.NewGuid();\r\n\t}\r\n}","export class NewDataRoleDTOModel {\r\n\tDataRole: string;\r\n\tFieldCollectionName: string;\r\n\tAssigneeId: number;\r\n\r\n\tconstructor(dataRole: string, fieldCollectionName: string, assigneeId: number) {\r\n\t\tthis.DataRole = dataRole;\r\n\t\tthis.FieldCollectionName = fieldCollectionName;\r\n\t\tthis.AssigneeId = assigneeId;\r\n\t}\r\n}","import {FieldCollectionMappings} from \"Core/Controls/FieldSecurity/Mappings/FieldCollectionMappings\";\r\n\r\nimport {DataRoleDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/DataRoleDTOModel\";\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\n\r\nimport {NewDataRoleDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/NewDataRoleDTOModel\";\r\nimport {AssigneeMappings} from \"Core/Controls/FieldSecurity/Mappings/AssigneeMappings\";\r\n\r\n\r\nexport class DataRoleMappings {\r\n\tstatic MapToDataRole(dataRoleDto: DataRoleDTOModel): DataRoleModel {\r\n\t\tconst fieldCollection = FieldCollectionMappings.MapToFieldCollection(dataRoleDto.FieldCollection);\r\n\t\treturn new DataRoleModel(dataRoleDto.Id, dataRoleDto.Name, fieldCollection);\r\n\t}\r\n\r\n\tstatic MapToNewDataRole(newRole: DataRoleModel) {\r\n\t\tconst assignee = AssigneeMappings.MapToNewAssignee(newRole.FieldCollection.Assignee);\r\n\t\treturn new NewDataRoleDTOModel(newRole.Name, newRole.FieldCollection.Name, assignee);\r\n\t}\r\n}","import {NewDataRoleDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/NewDataRoleDTOModel\";\r\nimport {NewDeputyDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/NewDeputyDTOModel\";\r\nimport {DeletedRoleDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/DeletedRoleDTOModel\";\r\n\r\nexport class PostDataRolesRequestModel {\r\n\tNewRoles: NewDataRoleDTOModel[];\r\n\tNewDeputies: NewDeputyDTOModel[];\r\n\r\n\tDeletedRoles: DeletedRoleDTOModel[];\r\n\tDeletedDeputies: DeletedRoleDTOModel[];\r\n\r\n\tconstructor(\r\n\t\tnewRoles: NewDataRoleDTOModel[],\r\n\t\tnewDeputies: NewDeputyDTOModel[],\r\n\t\tdeletedRoles: DeletedRoleDTOModel[],\r\n\t\tdeletedDeputies: DeletedRoleDTOModel[]) {\r\n\r\n\t\tthis.NewRoles = newRoles;\r\n\t\tthis.NewDeputies = newDeputies;\r\n\r\n\t\tthis.DeletedRoles = deletedRoles;\r\n\t\tthis.DeletedDeputies = deletedDeputies;\r\n\t}\r\n}\r\n","export class NewDeputyDTOModel {\r\n\tFieldCollectionId: number;\r\n\r\n\tconstructor(fieldCollectionId: number) {\r\n\t\tthis.FieldCollectionId = fieldCollectionId;\r\n\t}\r\n}","export class DeletedRoleDTOModel {\r\n\tFieldCollectionId: number;\r\n\r\n\tconstructor(fieldCollectionId: number) {\r\n\t\tthis.FieldCollectionId = fieldCollectionId;\r\n\t}\r\n}","import {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nimport {DataRoleMappings} from \"Core/Controls/FieldSecurity/Mappings/DataRoleMappings\";\r\n\r\nimport {DataRoleDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/DataRoleDTOModel\";\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\n\r\nimport {FieldSecurityChangesModel} from \"Core/Controls/FieldSecurity/Shared/Models/State/FieldSecurityChangesModel\";\r\n\r\nimport {PostDataRolesRequestModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/PostDataRolesRequestModel\";\r\nimport {NewDeputyDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/NewDeputyDTOModel\";\r\nimport {DeletedRoleDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/DeletedRoleDTOModel\";\r\n\r\nexport class FieldSecurityMappings {\r\n\tstatic MapToDataRoles(dataRoleDto: DataRoleDTOModel): DataRoleModel {\r\n\t\treturn DataRoleMappings.MapToDataRole(dataRoleDto);\r\n\t}\r\n\r\n\tstatic MapToPostModel(changes: FieldSecurityChangesModel) {\r\n\t\tconst newRoles =\r\n\t\t\tchanges.NewRoles\r\n\t\t\t\t.filter(newRole => newRole.Name !== DataRoles.Instance.DEP.ShortName)\r\n\t\t\t\t.map(newRole => DataRoleMappings.MapToNewDataRole(newRole));\r\n\r\n\t\tconst newDeputies =\r\n\t\t\tchanges.NewRoles\r\n\t\t\t\t.filter(newRole => newRole.Name === DataRoles.Instance.DEP.ShortName)\r\n\t\t\t\t.map(newRole => new NewDeputyDTOModel(newRole.FieldCollection.Id));\r\n\r\n\t\tconst deletedRoles =\r\n\t\t\tchanges.DeletedRoles\r\n\t\t\t\t.filter(deletedRole => deletedRole.Name !== DataRoles.Instance.DEP.ShortName)\r\n\t\t\t\t.map(deletedRole => new DeletedRoleDTOModel(deletedRole.FieldCollection.Id));\r\n\r\n\t\tconst deletedDeputies =\r\n\t\t\tchanges.DeletedRoles\r\n\t\t\t\t.filter(deletedRole => deletedRole.Name === DataRoles.Instance.DEP.ShortName)\r\n\t\t\t\t.map(deletedRole => new DeletedRoleDTOModel(deletedRole.FieldCollection.Id));\r\n\r\n\t\treturn new PostDataRolesRequestModel(newRoles, newDeputies, deletedRoles, deletedDeputies);\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport {IFieldSecuritySettings} from \"Core/Controls/FieldSecurity/Shared/Interfaces/IFieldSecuritySettings\";\r\n\r\nimport {ViewModes} from \"Core/Controls/FieldSecurity/Shared/Enums/ViewModes\";\r\n\r\nexport abstract class FieldSecurityComponent extends Event {\r\n\tprotected Settings: IFieldSecuritySettings;\r\n\tprotected Templates: { View: any, Edit: any, Design: any };\r\n\tprotected ManipulationsEnabled: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(settings: IFieldSecuritySettings) {\r\n\t\tsuper();\r\n\r\n\t\tthis.Settings = settings;\r\n\t\tthis.ManipulationsEnabled = ko.observable(true);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\tconst viewModeTemplateMapping = {};\r\n\r\n\t\tviewModeTemplateMapping[ViewModes.View] = this.Templates.View;\r\n\t\tviewModeTemplateMapping[ViewModes.Edit] = this.Templates.Edit;\r\n\t\tviewModeTemplateMapping[ViewModes.Design] = this.Templates.Design;\r\n\r\n\t\treturn viewModeTemplateMapping[this.Settings.ViewMode];\r\n\t}\r\n\r\n\tChangeManipulations(enable: boolean) {\r\n\t\tthis.ManipulationsEnabled(enable);\r\n\t}\r\n}","// Module\nvar code = \"<tr class=\\\"table-head\\\"> <th><!-- ko text: _labels.USER --><!-- /ko --></th> <th><!-- ko text: _labels.FIELD_COLLECTION --><!-- /ko --></th> </tr>\";\n// Exports\nexport default code;","// Module\nvar code = \"<tr class=\\\"table-head\\\"> <th><!-- ko text: _labels.USER --><!-- /ko --></th> <th colspan=\\\"2\\\"><!-- ko text: _labels.FIELD_COLLECTION --><!-- /ko --></th> </tr>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { IFieldSecuritySettings } from \"Core/Controls/FieldSecurity/Shared/Interfaces/IFieldSecuritySettings\";\r\nimport { FieldSecurityComponent } from \"Core/Controls/FieldSecurity/Components/Base/FieldSecurityComponent\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport ViewTemplate from 'Core/Controls/FieldSecurity/Components/Header/View.html';\r\nimport EditTemplate from 'Core/Controls/FieldSecurity/Components/Header/Edit.html';\r\n\r\nko.templates['Core/Controls/FieldSecurity/Components/Header/View'] = ViewTemplate;\r\nko.templates['Core/Controls/FieldSecurity/Components/Header/Edit'] = EditTemplate;\r\n\r\nexport class HeaderComponent extends FieldSecurityComponent {\r\n\tprivate _labels = LABELS;\r\n\tconstructor(settings: IFieldSecuritySettings) {\r\n\t\tsuper(settings);\r\n\r\n\t\tthis.Templates = { View: ViewTemplate, Edit: EditTemplate, Design: ViewTemplate };\r\n\t}\r\n}","// Module\nvar code = \"<tr> <td colspan=\\\"2\\\" class=\\\"table-sub-head\\\"> <span data-bind=\\\"text: _dataRole.Name\\\"></span> </td> </tr>\";\n// Exports\nexport default code;","// Module\nvar code = \"<tr> <td colspan=\\\"3\\\" class=\\\"table-sub-head\\\"> <!--ko if: ManipulationsEnabled--> <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" data-bind=\\\"click: OnDataRoleAdding.bind($data)\\\"> <i class=\\\"fa fa-plus\\\"></i> </button> <!--/ko--> <span data-bind=\\\"text: _dataRole.Name\\\"></span> </td> </tr>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {FieldSecurityComponent} from \"Core/Controls/FieldSecurity/Components/Base/FieldSecurityComponent\";\r\nimport {IFieldSecuritySettings} from \"Core/Controls/FieldSecurity/Shared/Interfaces/IFieldSecuritySettings\";\r\n\r\nimport {DataRole} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nimport ViewTemplate from 'Core/Controls/FieldSecurity/Components/DataRole/Header/View.html';\r\nimport EditTemplate from 'Core/Controls/FieldSecurity/Components/DataRole/Header/Edit.html';\r\n\r\nko.templates['Core/Controls/FieldSecurity/Components/DataRole/Header/View'] = ViewTemplate;\r\nko.templates['Core/Controls/FieldSecurity/Components/DataRole/Header/Edit'] = EditTemplate;\r\n\r\nexport class HeaderComponent extends FieldSecurityComponent {\r\n\tprivate _dataRole: DataRole;\r\n\r\n\tconstructor(settings: IFieldSecuritySettings, dataRole: DataRole) {\r\n\t\tsuper(settings);\r\n\r\n\t\tthis._dataRole = dataRole;\r\n\r\n\t\tthis.Templates = {View: ViewTemplate, Edit: EditTemplate, Design: ViewTemplate};\r\n\t}\r\n\r\n\tOnDataRoleAdding() {\r\n\t\tthis.Trigger('DataRoleAdding');\r\n\t}\r\n}","// Module\nvar code = \"<tr> <td data-bind=\\\"text: _model.AssigneeName\\\"></td> <td data-bind=\\\"text: _model.Name\\\"></td> </tr>\";\n// Exports\nexport default code;","import {FieldSecurityComponent} from \"Core/Controls/FieldSecurity/Components/Base/FieldSecurityComponent\";\r\nimport {IFieldSecuritySettings} from \"Core/Controls/FieldSecurity/Shared/Interfaces/IFieldSecuritySettings\";\r\n\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\n\r\nimport ViewTemplate from 'Core/Controls/FieldSecurity/Components/DataRole/FieldCollection/View.html';\r\nimport EditTemplate from 'Core/Controls/FieldSecurity/Components/DataRole/FieldCollection/Edit.html';\r\n\r\nexport class FieldCollectionComponent extends FieldSecurityComponent {\r\n\tprivate _model: FieldCollectionModel;\r\n\r\n\tconstructor(settings: IFieldSecuritySettings, model: FieldCollectionModel) {\r\n\t\tsuper(settings);\r\n\r\n\t\tthis._model = model;\r\n\r\n\t\tthis.Templates = {View: ViewTemplate, Edit: EditTemplate, Design: ViewTemplate};\r\n\t}\r\n\r\n\tget FieldCollectionId() {\r\n\t\treturn this._model.Id;\r\n\t}\r\n\r\n\tget FieldCollectionName() {\r\n\t\treturn this._model.Name;\r\n\t}\r\n\r\n\tget Assignee() {\r\n\t\treturn this._model.Assignee;\r\n\t}\r\n\r\n\tOnDataRoleRemoving() {\r\n\t\tthis.Trigger('DataRoleRemoving', {DataRole: this._model});\r\n\t}\r\n}","// Module\nvar code = \"<tr class=\\\"field-collections\\\"> <td data-bind=\\\"text: _model.AssigneeName\\\"></td> <td data-bind=\\\"text: _model.Name\\\"></td> <td class=\\\"btn-remove-container\\\"> <div class=\\\"data-role-actions\\\"> <!--ko if: ManipulationsEnabled--> <button type=\\\"button\\\" class=\\\"btn btn-sm btn-danger\\\" data-bind=\\\"click: OnDataRoleRemoving.bind($data)\\\"> <i class=\\\"fa fa-times\\\"></i> </button> <!--/ko--> </div> </td> </tr>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\n\r\nexport abstract class NewDataRoleComponent extends Event {\r\n\tprotected Template: any;\r\n\r\n\tconstructor(template: any) {\r\n\t\tsuper();\r\n\r\n\t\tthis.Template = template;\r\n\r\n\t\tthis.InitValidation();\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn this.Template;\r\n\t}\r\n\r\n\tabstract AfterRender();\r\n\r\n\tabstract ValidateForm();\r\n\r\n\tprotected OnRoleAdding() {\r\n\t\tconst valid = this.ValidateForm();\r\n\r\n\t\tif (valid) {\r\n\t\t\tconst dataRole = this.MapToNewDataRole();\r\n\t\t\tthis.Trigger('DataRoleAdded', {DataRole: dataRole});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected OnRoleAddingCancel() {\r\n\t\tthis.Trigger('AddingCancelled');\r\n\t}\r\n\r\n\tprotected abstract MapToNewDataRole(): DataRoleModel;\r\n\r\n\tprivate InitValidation() {\r\n\t\tko.validation.init({insertMessages: false}, true);\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {AssigneeModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport class NewThirdPartyDataRoleModel {\r\n\tUsers: KnockoutObservableArray<AssigneeModel>;\r\n\tSelectedUser: KnockoutObservable<AssigneeModel>;\r\n\r\n\tFieldCollectionName: KnockoutObservable<string>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = ko.observableArray([]);\r\n\r\n\t\tthis.SelectedUser = ko.observable(null).extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: LABELS.USER + ' ' + NOTIFICATIONS.IS_REQUIRED\r\n\t\t\t},\r\n\t\t});\r\n\t\tthis.SelectedUser.subscribe(user => this.FieldCollectionName(user && user.Name));\r\n\r\n\t\tthis.FieldCollectionName = ko.observable(null).extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: LABELS.COLLECTION_NAME + ' ' + NOTIFICATIONS.IS_REQUIRED\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {P} from \"Core/Common/Promise\";\r\n\r\nimport {NewDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDataRoleComponent\";\r\nimport {FieldSecurityStore} from \"Core/Controls/FieldSecurity/Stores/FieldSecurityStore\";\r\nimport {AssigneeDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/AssigneeDTOModel\";\r\nimport {AssigneeModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel\";\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\nimport {DataRole} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\nimport {NewThirdPartyDataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/NewThirdPartyDataRoleModel\";\r\nimport {AssigneeMappings} from \"Core/Controls/FieldSecurity/Mappings/AssigneeMappings\";\r\n\r\nimport Template from 'Core/Controls/FieldSecurity/Shared/Templates/NewDataRole/NewThirdPartyDataRole.html';\r\n\r\nexport class NewThirdPartyDataRoleComponent extends NewDataRoleComponent {\r\n\tprotected Model: KnockoutValidatedObservable<NewThirdPartyDataRoleModel>;\r\n\tprotected DataRole: DataRole;\r\n\r\n\tconstructor(dataRole: DataRole) {\r\n\t\tsuper(Template);\r\n\r\n\t\tthis.Model = ko.validatedObservable(new NewThirdPartyDataRoleModel());\r\n\t\tthis.DataRole = dataRole;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\tValidateForm() {\r\n\t\tconst valid = this.Model.isValid();\r\n\r\n\t\tif(!valid){\r\n\t\t\tthis.Model.errors.showAllMessages();\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tprotected LoadUsers(userType: string): P.Promise<AssigneeDTOModel[]> {\r\n\t\treturn FieldSecurityStore.GetUsers(userType);\r\n\t}\r\n\r\n\tprotected UsersLoaded(usersDto: AssigneeDTOModel[]) {\r\n const users = usersDto.map(user => AssigneeMappings.MapToAssignee(user));\r\n this.Trigger(\"UsersLoaded\", {DataRole: this.DataRole, Model: this.Model(), Users: users});\r\n\t}\r\n\r\n\tprotected MapToNewDataRole() {\r\n\t\tconst assignee = new AssigneeModel(this.Model().SelectedUser().Id, this.Model().SelectedUser().Name);\r\n\t\tconst fieldCollection = new FieldCollectionModel(null, this.Model().FieldCollectionName(), assignee);\r\n\r\n\t\treturn new DataRoleModel(null, this.DataRole.ShortName, fieldCollection);\r\n\t}\r\n}","// Module\nvar code = \"<tr class=\\\"new-role-wrapper\\\"> <td> <!--ko with: Model--> <select class=\\\"form-control new-role-input\\\" data-bind=\\\"options: Users, optionsText: 'Name', value: SelectedUser\\\"></select> <span data-bind=\\\"validationMessage: SelectedUser\\\" class=\\\"text-red\\\"></span> <!--/ko--> </td> <td> <!--ko with: Model--> <input type=\\\"text\\\" class=\\\"form-control new-role-input\\\" data-bind=\\\"value: FieldCollectionName\\\"> <span data-bind=\\\"validationMessage: FieldCollectionName\\\" class=\\\"text-red\\\"></span> <!--/ko--> </td> <td class=\\\"data-role-actions-container\\\"> <div class=\\\"data-role-actions\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: OnRoleAdding\\\"> <i class=\\\"fa fa-check\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger btn-cancel\\\" data-bind=\\\"click: OnRoleAddingCancel\\\"> <i class=\\\"fa fa-times\\\"></i> </button> </div> </td> </tr>w\";\n// Exports\nexport default code;","import {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {NewThirdPartyDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewThirdPartyDataRoleComponent\";\r\n\r\nimport {UserTypes} from \"User/UserManager\";\r\nimport {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nexport class NewDORoleComponent extends NewThirdPartyDataRoleComponent {\r\n\tconstructor() {\r\n\t\tsuper(DataRoles.Instance.DO);\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis.LoadUsers(UserTypes.Portal)\r\n\t\t\t.then(users => this.UsersLoaded(users))\r\n\t\t\t.fail(error => new Notifier().Failed(error.message));\r\n\t}\r\n}","import {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {NewThirdPartyDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewThirdPartyDataRoleComponent\";\r\n\r\nimport {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\nimport {UserTypes} from \"User/UserManager\";\r\n\r\nexport class NewPORoleComponent extends NewThirdPartyDataRoleComponent {\r\n\tconstructor() {\r\n\t\tsuper(DataRoles.Instance.PO);\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis.LoadUsers(UserTypes.Guest)\r\n\t\t\t.then(users => this.UsersLoaded(users))\r\n\t\t\t.fail(error => new Notifier().Failed(error.message));\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nexport class NewPersonalDataRoleModel {\r\n\tFieldCollectionName: KnockoutObservable<string>;\r\n\r\n\tconstructor() {\r\n\t\tthis.FieldCollectionName = ko.observable(null).extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: 'Collection name required'\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {NewDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDataRoleComponent\";\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\nimport {DataRole} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\nimport {NewPersonalDataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/NewPersonalDataRoleModel\";\r\n\r\nimport Template from 'Core/Controls/FieldSecurity/Shared/Templates/NewDataRole/NewPersonalDataRole.html';\r\n\r\nexport class NewPersonalDataRoleComponent extends NewDataRoleComponent {\r\n\tprotected Model: KnockoutValidatedObservable<NewPersonalDataRoleModel>;\r\n\tprotected DataRole: DataRole;\r\n\r\n\tconstructor(dataRole: DataRole) {\r\n\t\tsuper(Template);\r\n\r\n\t\tthis.Model = ko.validatedObservable(new NewPersonalDataRoleModel());\r\n\t\tthis.DataRole = dataRole;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\tValidateForm() {\r\n\t\tconst valid = this.Model.isValid();\r\n\r\n\t\tif (!valid) {\r\n\t\t\tthis.Model.errors.showAllMessages();\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tprotected MapToNewDataRole(): DataRoleModel {\r\n\t\tconst fieldCollection = new FieldCollectionModel(null, this.Model().FieldCollectionName(), null);\r\n\t\treturn new DataRoleModel(null, this.DataRole.ShortName, fieldCollection);\r\n\t}\r\n}\r\n","// Module\nvar code = \"<tr class=\\\"new-role-wrapper\\\"> <td></td> <td> <!--ko with: Model--> <input type=\\\"text\\\" class=\\\"form-control new-role-input\\\" data-bind=\\\"value: FieldCollectionName\\\"> <span data-bind=\\\"validationMessage: FieldCollectionName\\\" class=\\\"text-red\\\"></span> <!--/ko--> </td> <td class=\\\"data-role-actions-container\\\"> <div class=\\\"data-role-actions\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: OnRoleAdding\\\"> <i class=\\\"fa fa-check\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger btn-cancel\\\" data-bind=\\\"click: OnRoleAddingCancel\\\"> <i class=\\\"fa fa-times\\\"></i> </button> </div> </td> </tr>w\";\n// Exports\nexport default code;","import {NewPersonalDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewPersonalDataRoleComponent\";\r\nimport {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nexport class NewSORoleComponent extends NewPersonalDataRoleComponent {\r\n\tconstructor() {\r\n\t\tsuper(DataRoles.Instance.SO);\r\n\t}\r\n}","import {NewPersonalDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewPersonalDataRoleComponent\";\r\nimport {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nexport class NewVORoleComponent extends NewPersonalDataRoleComponent {\r\n\tconstructor() {\r\n\t\tsuper(DataRoles.Instance.VO);\r\n\t}\r\n}","import {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {NewThirdPartyDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewThirdPartyDataRoleComponent\";\r\n\r\nimport {UserTypes} from \"User/UserManager\";\r\nimport {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nexport class NewDPORoleComponent extends NewThirdPartyDataRoleComponent {\r\n\tconstructor() {\r\n\t\tsuper(DataRoles.Instance.DPO);\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis.LoadUsers(UserTypes.Gdpr)\r\n .then(users => this.UsersLoaded(users))\r\n\t\t\t.fail(error => new Notifier().Failed(error.message));\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nexport class NewDEPRoleModel {\r\n\tFieldCollections: KnockoutObservableArray<FieldCollection>;\r\n\tSelectedFieldCollection: KnockoutObservable<FieldCollection>;\r\n\r\n\tconstructor() {\r\n\t\tthis.FieldCollections = ko.observableArray([]);\r\n\t\tthis.SelectedFieldCollection = ko.observable(null);\r\n\t}\r\n}\r\n\r\nexport class FieldCollection {\r\n\tId: number;\r\n\tName: string;\r\n}","// Module\nvar code = \"<tr class=\\\"new-role-wrapper\\\"> <td> </td> <td> <!--ko with: _model--> <select class=\\\"form-control new-role-input\\\" data-bind=\\\"options: FieldCollections, optionsText: 'Name', value: SelectedFieldCollection\\\"></select> <!--/ko--> </td> <td class=\\\"data-role-actions-container\\\"> <div class=\\\"data-role-actions\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: OnRoleAdding\\\"> <i class=\\\"fa fa-check\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger btn-cancel\\\" data-bind=\\\"click: OnRoleAddingCancel\\\"> <i class=\\\"fa fa-times\\\"></i> </button> </div> </td> </tr>w\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {NewDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDataRoleComponent\";\r\n\r\nimport {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nimport {FieldSecurityStore} from \"Core/Controls/FieldSecurity/Stores/FieldSecurityStore\";\r\nimport {FieldCollectionDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/FieldCollectionDTOModel\";\r\n\r\nimport {NewDEPRoleModel} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDEPRole/NewDEPRoleModel\";\r\n\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\n\r\nimport Template from 'Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDEPRole/NewDEPRole.html'\r\nimport {FieldCollectionMappings} from \"Core/Controls/FieldSecurity/Mappings/FieldCollectionMappings\";\r\n\r\nko.templates['Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDEPRole/NewDEPRole'] = Template;\r\n\r\nexport class NewDEPRoleComponent extends NewDataRoleComponent {\r\n\tprivate _model: KnockoutValidatedObservable<NewDEPRoleModel>;\r\n\r\n\tconstructor() {\r\n\t\tsuper(Template);\r\n\r\n\t\tthis._model = ko.validatedObservable(new NewDEPRoleModel());\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tFieldSecurityStore.GetUserFieldCollections()\r\n\t\t\t.then(response => this.FieldCollectionsLoaded(response.FieldCollections))\r\n\t\t\t.fail(error => new Notifier().Failed(error.message));\r\n\t}\r\n\r\n\tValidateForm() {\r\n\t\tconst valid = this._model.isValid();\r\n\r\n\t\tif(!valid){\r\n\t\t\tthis._model.errors.showAllMessages();\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tprivate FieldCollectionsLoaded(fieldCollectionDto: FieldCollectionDTOModel[]){\r\n\t\tconst fieldCollections = fieldCollectionDto\r\n\t\t\t.filter(collection => collection.Type === DataRoles.Instance.VO.Type)\r\n\t\t\t.map(collection => FieldCollectionMappings.MapToFieldCollection(collection));\r\n\t\t\r\n\t\tthis._model().FieldCollections(fieldCollections);\r\n\t}\r\n\r\n\tprotected MapToNewDataRole(): DataRoleModel {\r\n\t\tconst selectedFieldCollection = this._model().SelectedFieldCollection();\r\n\r\n\t\tconst fieldCollection = new FieldCollectionModel(\r\n\t\t\tselectedFieldCollection.Id,\r\n\t\t\tselectedFieldCollection.Name,\r\n\t\t\tnull);\r\n\r\n\t\treturn new DataRoleModel(null, DataRoles.Instance.DEP.ShortName, fieldCollection);\r\n\t}\r\n\r\n}","// Module\nvar code = \"<!--ko with: _header--> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> <!--/ko--> <!--ko foreach: _fieldCollections--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> <!--ko with: _newRoleForm--> <!--ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)}--><!--/ko--> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as CONFIRMATION_EVENTS,\r\n\tTypes as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport {FieldSecurityComponent} from \"Core/Controls/FieldSecurity/Components/Base/FieldSecurityComponent\";\r\nimport {IFieldSecuritySettings} from \"Core/Controls/FieldSecurity/Shared/Interfaces/IFieldSecuritySettings\";\r\n\r\nimport {HeaderComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/Header/HeaderComponent\";\r\nimport {FieldCollectionComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/FieldCollection/FieldCollectionComponent\";\r\n\r\nimport {NewDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDataRoleComponent\";\r\nimport {NewDORoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDORole/NewDORoleComponent\";\r\nimport {NewPORoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewPORole/NewPORoleComponent\";\r\nimport {NewSORoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewSORole/NewSORoleComponent\";\r\nimport {NewVORoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewVORole/NewVORoleComponent\";\r\nimport {NewDPORoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDPORole/NewDPORoleComponent\";\r\nimport { NewDEPRoleComponent } from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDEPRole/NewDEPRoleComponent\";\r\n\r\nimport { NewThirdPartyDataRoleModel } from \"Core/Controls/FieldSecurity/Shared/Models/Business/NewThirdPartyDataRoleModel\";\r\nimport { AssigneeModel } from \"Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel\";\r\n\r\nimport {DataRole, DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport ViewTemplate from 'Core/Controls/FieldSecurity/Components/DataRole/View.html';\r\n\r\nko.templates['Core/Controls/FieldSecurity/Components/DataRole/View'] = ViewTemplate;\r\n\r\nexport class DataRoleComponent extends FieldSecurityComponent {\r\n\tprivate _dataRole: DataRole;\r\n\tprivate _header: HeaderComponent;\r\n\tprivate _fieldCollections: KnockoutObservableArray<FieldCollectionComponent>;\r\n\tprivate _newRoleForm: KnockoutObservable<NewDataRoleComponent>;\r\n\r\n\tconstructor(settings: IFieldSecuritySettings, dataRole: DataRole) {\r\n\t\tsuper(settings);\r\n\r\n\t\tthis._dataRole = dataRole;\r\n\r\n\t\tthis._header = new HeaderComponent(settings, dataRole);\r\n\t\tthis._header.On('DataRoleAdding', this, () => {\r\n\t\t\tthis.Trigger('DataRoleAdding');\r\n\t\t\tthis.ShowNewRoleForm();\r\n\t\t});\r\n\r\n\t\tthis._fieldCollections = ko.observableArray([]);\r\n\t\tthis._newRoleForm = ko.observable(null);\r\n\r\n\t\tthis.Templates = {View: ViewTemplate, Edit: ViewTemplate, Design: ViewTemplate};\r\n\t}\r\n\r\n\tget DataRole() {\r\n\t\treturn this._dataRole;\r\n\t}\r\n\r\n\tAddCollections(fieldCollections: FieldCollectionModel[]) {\r\n\t\tconst newCollections = fieldCollections.map(fieldCollection => new FieldCollectionComponent(this.Settings, fieldCollection));\r\n\t\tnewCollections.forEach(fieldCollection => fieldCollection.On('DataRoleRemoving', this, eventArgs => this.RemoveDataRole(fieldCollection, eventArgs.data.DataRole)));\r\n\t\tthis._fieldCollections(this._fieldCollections().concat(newCollections));\r\n\t}\r\n\r\n\tRemoveCollectionComponent(fieldCollectionId: number) {\r\n\t\tconst component = _.find(this._fieldCollections(), fieldCollection => fieldCollection.FieldCollectionId === fieldCollectionId);\r\n\t\tthis._fieldCollections.remove(component);\r\n\t}\r\n\r\n\tChangeManipulations(enable: boolean) {\r\n\t\tsuper.ChangeManipulations(enable);\r\n\r\n\t\tthis._header.ChangeManipulations(enable);\r\n\t\tthis._fieldCollections().forEach(component => component.ChangeManipulations(enable));\r\n\r\n\t\tif (enable) {\r\n\t\t\tthis._newRoleForm(null);\r\n\t\t}\r\n\t}\r\n\r\n\tHasFieldCollection(name: string) {\r\n\t\treturn _.any(this._fieldCollections(), fieldCollection => fieldCollection.FieldCollectionName === name);\r\n\t}\r\n\r\n\tHasAssignee(assigneeId: number){\r\n\t\treturn _.any(this._fieldCollections(), fieldCollection => fieldCollection.Assignee && fieldCollection.Assignee.Id === assigneeId);\r\n\t}\r\n\r\n\tprivate ShowNewRoleForm() {\r\n\t\tthis._newRoleForm(this.SelectNewRoleComponent());\r\n\r\n\t\tif (this._newRoleForm()) {\r\n this._newRoleForm().On('UsersLoaded', this, eventArgs => this.OnUsersLoad(eventArgs.data.DataRole, eventArgs.data.Model, eventArgs.data.Users));\r\n\r\n this._newRoleForm().On('DataRoleAdded', this, eventArgs => this.OnNewDataRoleSaving(eventArgs.data.DataRole));\r\n this._newRoleForm().On('AddingCancelled', this, () => this.OnCancelNewDataRole());\r\n\t\t} else {\r\n\t\t\tnew Notifier().Failed(NOTIFICATIONS.DATA_ROLE_IS_NOT_SUPPORTED);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate SelectNewRoleComponent() {\r\n\t\tswitch (this._dataRole) {\r\n\t\t\tcase DataRoles.Instance.DPO:\r\n\t\t\t\treturn new NewDPORoleComponent();\r\n\t\t\tcase DataRoles.Instance.VO:\r\n\t\t\t\treturn new NewVORoleComponent();\r\n\t\t\tcase DataRoles.Instance.SO:\r\n\t\t\t\treturn new NewSORoleComponent();\r\n\t\t\tcase DataRoles.Instance.DO:\r\n\t\t\t\treturn new NewDORoleComponent();\r\n\t\t\tcase DataRoles.Instance.PO:\r\n\t\t\t\treturn new NewPORoleComponent();\r\n\t\t\tcase DataRoles.Instance.DEP:\r\n\t\t\t\treturn new NewDEPRoleComponent();\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n }\r\n\r\n private OnUsersLoad(dataRole: DataRoleModel, model: NewThirdPartyDataRoleModel, users: AssigneeModel[]) {\r\n this.Trigger(\"UsersLoaded\", {DataRole: dataRole, Model: model, Users: users });\r\n }\r\n\r\n\tprivate OnNewDataRoleSaving(dataRole: DataRoleModel) {\r\n\t\tthis.Trigger('DataRoleAdded', {DataRole: dataRole});\r\n\t}\r\n\r\n\tprivate OnCancelNewDataRole() {\r\n\t\tthis._newRoleForm(null);\r\n\t\tthis.Trigger('AddingCancelled');\r\n\t}\r\n\r\n\tprivate RemoveDataRole(component: FieldCollectionComponent, fieldCollection: FieldCollectionModel) {\r\n\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: \"Remove this role?\",\r\n\t\t\tType: ConfirmationTypes.Question\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\tthis._fieldCollections.remove(component);\r\n\r\n\t\t\tconst dataRole = new DataRoleModel(null, this.DataRole.ShortName, fieldCollection);\r\n\t\t\tthis.Trigger('DataRoleRemoved', {DataRole: dataRole});\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n}","import {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\n\r\nexport class FieldSecurityChangesModel {\r\n\tStartRoles: DataRoleModel[];\r\n\tNewRoles: DataRoleModel[];\r\n\tDeletedRoles: DataRoleModel[];\r\n\r\n\tconstructor() {\r\n\t\tthis.StartRoles = [];\r\n\t\tthis.NewRoles = [];\r\n\t\tthis.DeletedRoles = [];\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {RenderModes} from \"Core/Constant\";\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport {IFieldSecuritySettings} from \"Core/Controls/FieldSecurity/Shared/Interfaces/IFieldSecuritySettings\";\r\n\r\nimport {ViewModes} from \"Core/Controls/FieldSecurity/Shared/Enums/ViewModes\";\r\nimport {DataRole, DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\n\r\nimport {FieldSecurityStore} from \"Core/Controls/FieldSecurity/Stores/FieldSecurityStore\";\r\nimport {FieldSecurityMappings} from \"Core/Controls/FieldSecurity/Mappings/FieldSecurityMappings\";\r\n\r\nimport {HeaderComponent} from \"Core/Controls/FieldSecurity/Components/Header/HeaderComponent\";\r\nimport {DataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/DataRoleComponent\";\r\n\r\nimport {GetDataRolesResponseModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/GetDataRolesResponseModel\";\r\nimport {FieldSecurityChangesModel} from \"Core/Controls/FieldSecurity/Shared/Models/State/FieldSecurityChangesModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport { NewThirdPartyDataRoleModel } from \"Core/Controls/FieldSecurity/Shared/Models/Business/NewThirdPartyDataRoleModel\";\r\nimport { AssigneeModel } from \"Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel\";\r\n\r\nimport ViewTemplate from 'Core/Controls/FieldSecurity/Templates/View.html';\r\nimport EditTemplate from 'Core/Controls/FieldSecurity/Templates/Edit.html';\r\nimport ToolBarTemplate from 'Core/Controls/FieldSecurity/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/FieldSecurity/Templates/Design.html';\r\n\r\nko.templates['Core/Controls/FieldSecurity/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/FieldSecurity/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/FieldSecurity/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/FieldSecurity/Templates/Design'] = DesignTemplate;\r\n\r\nexport class FieldSecurity extends BaseControl {\r\n private _params: IControlParam;\r\n\r\n private _changes: FieldSecurityChangesModel;\r\n\r\n private _header: HeaderComponent;\r\n private _dataRoles: DataRoleComponent[];\r\n\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n\r\n this._params = params;\r\n this._changes = new FieldSecurityChangesModel();\r\n\r\n this._header = this.CreateHeaderComponent();\r\n this._dataRoles = this.CreateDataRoleComponents();\r\n \r\n this._dataRoles.forEach(dataRoleComponent => {\r\n dataRoleComponent.On('DataRoleAdding', this, () => this.ChangeRolesManipulations(false));\r\n dataRoleComponent.On('AddingCancelled', this, () => this.ChangeRolesManipulations(true));\r\n dataRoleComponent.On('DataRoleAdded', this, eventArgs => this.AddNewDataRole(dataRoleComponent, eventArgs.data.DataRole));\r\n dataRoleComponent.On('DataRoleRemoved', this, eventArgs => this.RemoveDataRole(eventArgs.data.DataRole));\r\n\r\n dataRoleComponent.On('UsersLoaded', this, eventArgs => this.OnUsersLoad(eventArgs.data.DataRole, eventArgs.data.Model, eventArgs.data.Users));\r\n });\r\n }\r\n\r\n\tApplyProperties() {\t}\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n\r\n if (this.GetForm().GetScreen().GetDataModel() && _.contains(this.GetOperationalModes(), this._params.RenderMode)) {\r\n this.RequestDataRoles();\r\n }\r\n }\r\n\r\n Deserialize() {\r\n return FieldSecurityMappings.MapToPostModel(this._changes);\r\n }\r\n\r\n private GetOperationalModes() {\r\n return [RenderModes.View, RenderModes.Edit];\r\n }\r\n\r\n private GetInitModes() {\r\n return this.GetOperationalModes().concat(RenderModes.Design);\r\n }\r\n\r\n private GetSettings(): IFieldSecuritySettings {\r\n return {\r\n ViewMode: this.GetViewMode(this._params.RenderMode)\r\n }\r\n }\r\n\r\n private GetViewMode(renderMode: RenderModes) {\r\n const renderViewModeMapping = {};\r\n\r\n renderViewModeMapping[RenderModes.View] = ViewModes.View;\r\n renderViewModeMapping[RenderModes.Edit] = ViewModes.Edit;\r\n renderViewModeMapping[RenderModes.Design] = ViewModes.Design;\r\n\r\n return renderViewModeMapping[renderMode];\r\n }\r\n\r\n private RequestDataRoles() {\r\n FieldSecurityStore.GetDataRoles(this.GetForm().GetScreen().GetRecordId())\r\n .then(response => this.DataRolesLoaded(response))\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private CreateHeaderComponent(): HeaderComponent {\r\n if (_.contains(this.GetInitModes(), this._params.RenderMode)) {\r\n return new HeaderComponent(this.GetSettings());\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private CreateDataRoleComponents(): DataRoleComponent[] {\r\n if (_.contains(this.GetInitModes(), this._params.RenderMode)) {\r\n const dataRoles = DataRoles.Instance.GetAllDataRoles();\r\n return dataRoles.map(dataRole => new DataRoleComponent(this.GetSettings(), dataRole));\r\n }\r\n\r\n return [];\r\n }\r\n\r\n private DataRolesLoaded(response: GetDataRolesResponseModel) {\r\n const userDataRoles = response.ResultList.map(dataRole => FieldSecurityMappings.MapToDataRoles(dataRole));\r\n this._changes.StartRoles = userDataRoles;\r\n\r\n this._dataRoles.forEach(dataRoleComponent => {\r\n const particularDataRole = userDataRoles.filter(userDataRole => DataRoles.Instance[userDataRole.Name] === dataRoleComponent.DataRole);\r\n const fieldCollections = particularDataRole.map(userDataRole => userDataRole.FieldCollection);\r\n dataRoleComponent.AddCollections(fieldCollections);\r\n });\r\n }\r\n\r\n private OnUsersLoad(dataRole: DataRole, model: NewThirdPartyDataRoleModel, users: AssigneeModel[]) {\r\n const newAssigneesIds = _.chain(this._changes.NewRoles)\r\n .filter(newRole => newRole.Name === dataRole.ShortName)\r\n .map(newRole => newRole.FieldCollection.Assignee.Id)\r\n .value();\r\n\r\n const deleteAssignees = _.chain(this._changes.DeletedRoles)\r\n .filter(deletedRole => deletedRole.Name === dataRole.ShortName)\r\n .map(deletedRole => deletedRole.FieldCollection.Assignee)\r\n .value();\r\n\r\n users = _.union(users, deleteAssignees);\r\n users = _.filter(users, user => !_.contains(newAssigneesIds, user.Id));\r\n \r\n model.Users(users); \r\n }\r\n\r\n private AddNewDataRole(component: DataRoleComponent, dataRole: DataRoleModel) {\r\n const validationError = this.ValidateDataRole(dataRole);\r\n\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const deletedDataRole = _.find(this._changes.DeletedRoles, deletedRole => deletedRole.FieldCollection.Guid === dataRole.FieldCollection.Guid);\r\n if (deletedDataRole) {\r\n const deletedDataRoleIndex = this._changes.DeletedRoles.indexOf(deletedDataRole);\r\n this._changes.DeletedRoles.splice(deletedDataRoleIndex, 1);\r\n }\r\n\r\n this._changes.NewRoles.push(dataRole);\r\n component.AddCollections([dataRole.FieldCollection]);\r\n this.ChangeRolesManipulations(true);\r\n\r\n if (dataRole.Name === DataRoles.Instance.DEP.ShortName) {\r\n new Notifier().Warning(NOTIFICATIONS.PLEASE_UPDATE_VIEW);\r\n }\r\n }\r\n\r\n private RemoveDataRole(dataRole: DataRoleModel) {\r\n const newDataRole = _.find(this._changes.NewRoles, newRole => newRole.FieldCollection.Guid === dataRole.FieldCollection.Guid);\r\n\r\n if (newDataRole) {\r\n const newDataRoleIndex = this._changes.NewRoles.indexOf(newDataRole);\r\n this._changes.NewRoles.splice(newDataRoleIndex, 1);\r\n } else {\r\n this._changes.DeletedRoles.push(dataRole);\r\n\r\n const deputyComponent = _.find(this._dataRoles, component => component.DataRole === DataRoles.Instance.DEP);\r\n deputyComponent.RemoveCollectionComponent(dataRole.FieldCollection.Id);\r\n }\r\n }\r\n\r\n private ChangeRolesManipulations(enable: boolean) {\r\n this._dataRoles.forEach(component => component.ChangeManipulations(enable));\r\n }\r\n\r\n private ValidateDataRole(dataRole: DataRoleModel) {\r\n return this.ValidateDeputy(dataRole)\r\n || this.ValidateUniqueDataRole(dataRole)\r\n || this.ValidateThirdPartyDataRole(dataRole);\r\n }\r\n\r\n private ValidateDeputy(dataRole: DataRoleModel) {\r\n const alreadyAssignedCollection = _.find(this._dataRoles, component => component.HasFieldCollection(dataRole.FieldCollection.Name));\r\n return alreadyAssignedCollection && `${dataRole.FieldCollection.Name} is assigned more than once`;\r\n }\r\n\r\n private ValidateUniqueDataRole(dataRole: DataRoleModel) {\r\n const isUnique = !_.any(this._dataRoles, component => component.HasFieldCollection(dataRole.FieldCollection.Name));\r\n return isUnique ? null : `Field collection ${dataRole.FieldCollection.Name} is not unique`;\r\n }\r\n\r\n private ValidateThirdPartyDataRole(dataRole: DataRoleModel) {\r\n const thirdPartyDataRoles = DataRoles.Instance.GetThirdPartyDataRoles();\r\n const dataRoleIsThirdParty = _.any(thirdPartyDataRoles, (thirdPartyDataRole: DataRole) => thirdPartyDataRole.ShortName === dataRole.Name);\r\n const hasAssignee = dataRoleIsThirdParty && _.any(this._dataRoles, component => component.HasAssignee(dataRole.FieldCollection.Assignee.Id));\r\n return hasAssignee && `${dataRole.FieldCollection.Assignee.Name} should have only one field collection`;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"field-security-control\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <table class=\\\"table table-bordered table-hovered table-striped\\\"> <thead> <!--ko with: _header--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </thead> <tbody> <!--ko foreach: _dataRoles--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </tbody> </table> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"field-security-control\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <table class=\\\"table table-bordered table-hovered table-striped\\\"> <thead> <!--ko with: _header--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </thead> <tbody> <!--ko foreach: _dataRoles--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </tbody> </table> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"FieldSecurity\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"field-security-control\\\"> <table class=\\\"table table-bordered table-hovered table-striped\\\"> <thead> <!--ko with: _header--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </thead> <tbody> <!--ko foreach: _dataRoles--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </tbody> </table> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn blue-dark subFormControl\\\" data-bind=\\\"enableAttr: _enabled, click: OnClick, style: _style\\\"> <i class=\\\"fa fa-desktop\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.CONSULT --><!-- /ko --> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport { BaseControl } from \"Core/Controls/BaseControl/BaseControl\";\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\n\r\nimport ConsultScreenButtonConfig from \"Core/Controls/ButtonConsultScreen/Configs/consult-screen-button-config.json\";\r\n\r\nimport DesignTemplate from \"Core/Controls/ButtonConsultScreen/Templates/Design.html\";\r\nimport EditTemplate from \"Core/Controls/ButtonConsultScreen/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/ButtonConsultScreen/Templates/Toolbar.html\";\r\nimport ViewTemplate from \"Core/Controls/ButtonConsultScreen/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonConsultScreen/Templates/HelpView.html\";\r\nimport * as _ from \"underscore\";\r\n\r\nko.templates[\"Core/Controls/ButtonConsultScreen/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/ButtonConsultScreen/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/ButtonConsultScreen/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ButtonConsultScreen/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonConsultScreen/Templates/HelpView\"] = HelpViewTemplate;\r\n\r\n\r\nexport class ButtonConsultScreen extends BaseControl {\r\n\tprivate _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n super(params, ConsultScreenButtonConfig);\r\n this._enabled = ko.observable(this.IsConsultScreenExist);\r\n\t\tthis._style = ko.computed(() => {\r\n\t\t\treturn {\r\n\t\t\t\tbackgroundColor: this._backgroundColor(),\r\n\t\t\t\tcolor: this._color(),\r\n\t\t\t\tborderColor: this._borderColor(),\r\n\t\t\t\tborderWidth: this._border() ? '1px' : '0',\r\n\t\t\t\tpadding: this._border() ? '6px 14px' : '7px 14px'\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tApplyProperties(){\r\n\t\tif (this.Properties) {\r\n\t\t\tthis.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n\t\t\tthis.AssignProperty('Styling', 'TextColor', this._color);\r\n\t\t\tthis.AssignProperty('Styling', 'Border', this._border);\r\n\t\t\tthis.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n\t\tif (this.Properties[groupedBy]) {\r\n\t\t\t_.each(this.Properties[groupedBy].Properties,\r\n\t\t\t\t(property: any) => {\r\n\t\t\t\t\tif (property.hasOwnProperty(propertyName)) {\r\n\t\t\t\t\t\tpropertyHolder(property[propertyName]);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tOnClick() {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tconst screen = this._form.GetScreen();\r\n\t\t\tscreen.Trigger(\"SHOW_CONSULT_SCREEN\");\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<a class=\\\"btn blue-dark subFormControl\\\" data-bind=\\\"style: _style\\\"> <i class=\\\"fa fa-desktop\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.CONSULT --><!-- /ko --> </a> \";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-dark subFormControl\\\"> <i class=\\\"fa fa-desktop\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.CONSULT --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn blue-dark subFormControl\\\" data-bind=\\\"style: _style\\\"> <i class=\\\"fa fa-desktop\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.CONSULT --><!-- /ko --> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {QueryResultPage} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/QueryResultPage\";\r\nimport {QueryParamsPage} from 'QueryBuilder/QueryParamsPage/QueryParamsPage';\r\nimport {EVENTS as QUERY_PARAMS_PAGE_EVENTS} from 'QueryBuilder/QueryParamsPage/Events';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport QueryResultConfig from 'Core/Controls/QueryResult/Configs/query-result-config.json';\r\n\r\nimport ViewTemplate from \"Core/Controls/QueryResult/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/QueryResult/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/QueryResult/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/QueryResult/Templates/Design.html\";\r\nimport EditTemplate from \"Core/Controls/QueryResult/Templates/Edit.html\";\r\nimport {BlockUI} from \"../../Common/BlockUi\";\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\n\r\nko.templates['Core/Controls/QueryResult/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/QueryResult/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/QueryResult/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/QueryResult/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/QueryResult/Templates/Edit'] = EditTemplate;\r\n\r\nexport class QueryResult extends BaseControl {\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, QueryResultConfig);\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tInit(){}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tRunQuery() {\r\n\t\tif(this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tconst queryProperties = this.Properties\r\n\t\t\t\t&& this.Properties.Query\r\n\t\t\t\t&& this.Properties.Query.Properties;\r\n\r\n\t\t\tconst queryExpressionProperty = _.find<any>(queryProperties, property => property.Query);\r\n\r\n\t\t\tif (queryExpressionProperty) {\r\n\t\t\t\tvar queryModel = GenericDeserialize<QueryExpressionModel>(JSON.parse(queryExpressionProperty.Query), QueryExpressionModel);\r\n\t\t\t\tvar paramsPage = new QueryParamsPage(queryModel, '');\r\n\t\t\t\tif (paramsPage.HasShowParameters()) {\r\n\t\t\t\t\tparamsPage.On(QUERY_PARAMS_PAGE_EVENTS.SAVE, this, (evtArgs) => {\r\n\t\t\t\t\t\tif (queryModel.QueryScreenId && queryModel.QueryScreenId > 0) {\r\n\t\t\t\t\t\t\tthis.ShowQueryScreen(queryModel);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.ShowStaticQueryScreen(queryModel);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tparamsPage.Show();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (queryModel.QueryScreenId && queryModel.QueryScreenId > 0) {\r\n\t\t\t\t\t\tthis.ShowQueryScreen(queryModel);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.ShowStaticQueryScreen(queryModel);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\t\t\t\tnew Notifier().Warning('Query expression was not created');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async ShowQueryScreen(queryModel: QueryExpressionModel) {\r\n\t\tconst screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n\t\tBlockUI.Block();\r\n\t\tscreenManager.GetScreenById({ ScreenId: queryModel.QueryScreenId, RaiseNotImplemented: false })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((screen: any) => {\r\n\t\t\t\tif (screen.GetTypeName() === ScreenTypes[ScreenTypes.QueryScreen]) {\r\n\t\t\t\t\tscreen.SetRecordId(this.GetForm().GetScreen().GetRecordId());\r\n\t\t\t\t\tscreen.SetQuery(queryModel);\r\n\t\t\t\t\tscreen.ShowInModal();\r\n\t\t\t\t}\r\n\t\t\t}).fail((err) => { new Notifier().Failed(err.message); });\r\n\t}\r\n\r\n\tprivate ShowStaticQueryScreen(queryModel: QueryExpressionModel) {\r\n\t\tvar queryResultPage = new QueryResultPage(true, ScreenTypes.ListScreen);\r\n\t\tqueryResultPage.RecordId = this.GetForm().GetScreen().GetRecordId();\r\n\t\tqueryResultPage.ShowQueryResult(queryModel);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"#\\\" data-bind=\\\"click: RunQuery\\\" class=\\\"runQuery-button\\\"> <i class=\\\"fa transition fa-play run-query-icon\\\"></i><span><!-- ko text: _labels.RUN_QUERY --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"#\\\"> <i class=\\\"fa transition fa-play run-query-icon\\\"></i> <!-- ko text: _labels.RUN_QUERY --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa transition fa-play run-query-icon\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"#\\\"> <i class=\\\"fa transition fa-play run-query-icon\\\"></i> Run query </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"#\\\" data-bind=\\\"click: RunQuery\\\" class=\\\"runQuery-button\\\"> <i class=\\\"fa transition fa-play run-query-icon\\\"></i><span><!-- ko text: _labels.RUN_QUERY --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nexport class AssignmentModel {\r\n Effort: number;\r\n EditingEffort: KnockoutObservable<number>;\r\n Editing: KnockoutObservable<boolean>;\r\n\r\n constructor(public Id: string,\r\n public ResourceId: number,\r\n public ResourceName: string,\r\n public ResourceEntity: string,\r\n effort: number) {\r\n\r\n this.Effort = Math.floor(effort / 1000 / 60 / 60 * 1000) / 1000;\r\n this.EditingEffort = ko.observable(this.Effort);\r\n this.Editing = ko.observable(false);\r\n }\r\n\r\n SaveChanges() {\r\n this.Effort = this.EditingEffort();\r\n this.Editing(false);\r\n }\r\n\r\n CancelChanges() {\r\n this.EditingEffort(this.Effort);\r\n this.Editing(false);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Guid} from 'Core/Common/Guid';\r\n\r\nimport {AssignmentModel} from './AssignmentModel';\r\nimport {Resource} from 'ganttChart';\r\n\r\nexport class AssignmentsPopupModel {\r\n Assignments: KnockoutObservableArray<AssignmentModel>;\r\n\r\n FreeAssignments: KnockoutObservableArray<AssignmentModel>;\r\n NewAssignment: KnockoutObservable<AssignmentModel>;\r\n\r\n constructor(assignments: AssignmentModel[], resources: Resource<number>[]) {\r\n this.Assignments = ko.observableArray(assignments);\r\n\r\n const freeAssignments = _.chain(resources)\r\n .map(r => new AssignmentModel(Guid.NewGuid(), r.id, r.name, r.entity, 0))\r\n .filter(fa => !_.any(this.Assignments(), a => a.ResourceId === fa.ResourceId && a.ResourceEntity === fa.ResourceEntity))\r\n .value();\r\n\r\n this.FreeAssignments = ko.observableArray(freeAssignments);\r\n this.NewAssignment = ko.observable(null);\r\n }\r\n\r\n EditAssignment(assignment: AssignmentModel) {\r\n assignment.Editing(true);\r\n }\r\n\r\n SaveAssignmentChanges(assignment: AssignmentModel) {\r\n assignment.SaveChanges();\r\n }\r\n\r\n CancelAssignmentChanges(assignment: AssignmentModel) {\r\n assignment.CancelChanges();\r\n }\r\n\r\n RemoveAssignment(assignment: AssignmentModel) {\r\n this.Assignments.remove(assignment);\r\n\r\n const freeAssignment = new AssignmentModel(assignment.Id, assignment.ResourceId, assignment.ResourceName, assignment.ResourceEntity, 0);\r\n this.FreeAssignments.push(freeAssignment);\r\n }\r\n\r\n CreateAssignment() {\r\n const freeAssignment = this.FreeAssignments()[0];\r\n this.NewAssignment(freeAssignment);\r\n }\r\n\r\n SaveNewAssignment() {\r\n const newAssignment = this.NewAssignment();\r\n\r\n const occupiedAssignment = _.find(this.FreeAssignments(), a => a.Id === newAssignment.Id);\r\n this.FreeAssignments.remove(occupiedAssignment);\r\n\r\n this.Assignments.push(newAssignment);\r\n this.NewAssignment(null);\r\n }\r\n\r\n CancelNewAssignment() {\r\n this.NewAssignment(null);\r\n }\r\n\r\n GetAssignments() {\r\n return this.Assignments();\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\n\r\nimport {Resource, Task} from 'ganttChart';\r\n\r\nimport {AssignmentsPopupModel} from './Models/AssignmentsPopupModel';\r\nimport {AssignmentModel} from './Models/AssignmentModel';\r\n\r\nimport Template from './Templates/Template.html';\r\n\r\nko.templates['Core/Components/Controls/GanttChart/AssignmentsPopup/Templates/Template'] = Template;\r\n\r\nexport class AssignmentsPopup extends Event {\r\n private _model: AssignmentsPopupModel;\r\n private _modal: Modal;\r\n\r\n constructor(private _task: Task<number>, resources: Resource<number>[]) {\r\n super();\r\n\r\n const assignments = this._task.assigs.map(a => {\r\n const resource = _.find(resources, r => r.id === a.resourceId && r.entity === a.entity);\r\n return new AssignmentModel(a.id, resource.id, resource.name, resource.entity, a.effort);\r\n });\r\n\r\n this._model = new AssignmentsPopupModel(assignments, resources);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/Controls/GanttChart/AssignmentsPopup/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Show() {\r\n this._modal = new Modal({\r\n width: 700,\r\n height: 500\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n Close() {\r\n this._modal.Close()\r\n }\r\n\r\n SaveChanges() {\r\n this._task.assigs = this._model.GetAssignments().map(a => {\r\n return {\r\n id: a.Id,\r\n resourceId: a.ResourceId,\r\n entity: a.ResourceEntity,\r\n effort: a.Effort * 60 * 60 * 1000,\r\n roleId: null\r\n }\r\n });\r\n\r\n this.Trigger('SAVE_CHANGES', this._task);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"resources-popup\\\"> <fieldset> <legend> Task Assignments </legend> <div class=\\\"pull-right\\\"> <!--ko ifnot: _model.NewAssignment--> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: $data.SaveChanges.bind($data)\\\"> <i class=\\\"fa fa-save\\\"> Save</i> </button> <!--/ko--> </div> <table class=\\\"table\\\"> <thead> <tr> <th>Resource</th> <th>Effort, h</th> <th></th> </tr> </thead> <tbody> <!--ko with: _model--> <!--ko foreach: Assignments--> <tr> <td data-bind=\\\"text: ResourceName\\\"></td> <td> <!--ko if: Editing--> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"value: EditingEffort\\\"> <!--/ko--> <!--ko ifnot: Editing--> <span data-bind=\\\"text: Effort\\\"></span> <!--/ko--> </td> <td> <!--ko if: Editing--> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: $parent.SaveAssignmentChanges.bind($parent, $data)\\\"> <i class=\\\"fa fa-save\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: $parent.CancelAssignmentChanges.bind($parent, $data)\\\"> <i class=\\\"fa fa-times\\\"></i> </button> <!--/ko--> <!--ko ifnot: Editing--> <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" data-bind=\\\"click: $parent.EditAssignment.bind($parent, $data)\\\"> <i class=\\\"fa fa-edit\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: $parent.RemoveAssignment.bind($parent, $data)\\\"> <i class=\\\"fa fa-times\\\"></i> </button> <!--/ko--> </td> </tr> <!--/ko--> <!--/ko--> <tr> <td> <!--ko if: _model.NewAssignment--> <select class=\\\"form-control\\\" data-bind=\\\"options: _model.FreeAssignments, optionsText: 'ResourceName', value: _model.NewAssignment\\\"></select> <!--/ko--> </td> <td> <!--ko if: _model.NewAssignment--> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"value: _model.NewAssignment().Effort\\\"> <!--/ko--> </td> <td> <!--ko if: _model.NewAssignment--> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: _model.SaveNewAssignment.bind(_model)\\\"> <i class=\\\"fa fa-save\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: _model.CancelNewAssignment.bind(_model)\\\"> <i class=\\\"fa fa-times\\\"></i> </button> <!--/ko--> <!--ko ifnot: _model.NewAssignment--> <!--ko if: _model.FreeAssignments().length--> <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" data-bind=\\\"click: _model.CreateAssignment.bind(_model)\\\"> <i class=\\\"fa fa-plus\\\"></i> </button> <!--/ko--> <!--/ko--> </td> </tr> </tbody> </table> </fieldset> </div>\";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {GanttChartInfoDto} from './Models/GanttChartInfoDto';\r\nimport {SaveGanttChartInfoDto} from './Models/SaveGanttChartInfoDto';\r\nimport { PlanVersionDto } from './Models/PlanVersionDto';\r\n\r\nexport class GanttChartStore {\r\n\r\n GetPlanVersions(subjectEntityId: number, rootId: number): P.Promise<Array<PlanVersionDto>> {\r\n const deferred = P.defer<Array<PlanVersionDto>>();\r\n Request.Send({\r\n proxy: {\r\n url: '/api/GanttChartApi/GetVersions',\r\n type: 'GET',\r\n dataType: 'json'\r\n },\r\n params: {\r\n SubjectEntityId: subjectEntityId,\r\n RootId: rootId\r\n }\r\n })\r\n .then(data => deferred.resolve(data))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting Gantt Chart info')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetGanttChartInfo(version: number, subTableView: string, resourcesView: string, rootId: number): P.Promise<GanttChartInfoDto> {\r\n const deferred = P.defer<GanttChartInfoDto>();\r\n Request.Send({\r\n proxy: {\r\n url: '/api/GanttChartApi/GetGanttChartInfo',\r\n type: 'GET',\r\n dataType: 'json'\r\n },\r\n params: {\r\n Version: version,\r\n SubTableView: subTableView,\r\n ResourcesView: resourcesView,\r\n RootId: rootId\r\n }\r\n })\r\n .then(data => deferred.resolve(data))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting Gantt Chart info')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n CreateNewVersion(info: SaveGanttChartInfoDto): P.Promise<number> {\r\n const deferred = P.defer<number>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/GanttChartApi/CreateNewVersion',\r\n type: 'POST'\r\n },\r\n params: info\r\n })\r\n .then((data) => deferred.resolve(data))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error saving Gantt Chart info')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n SaveGanttChartInfo(info: SaveGanttChartInfoDto) {\r\n const deferred = P.defer<void>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/GanttChartApi/SaveGanttChartInfo',\r\n type: 'POST'\r\n },\r\n params: info\r\n })\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error saving Gantt Chart info')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import {TaskDto} from './TaskDto';\r\n\r\nexport class SaveGanttChartInfoDto {\r\n constructor(public Version, public SubTableView: string, public ResourcesView: string, public Tasks: TaskDto[]) {\r\n }\r\n}","import * as _ from 'underscore';\r\n\r\nimport {Guid} from 'Core/Common/Guid';\r\n\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {ColorConverter} from 'Core/Components/ColorSelector/ColorConverter';\r\n\r\nimport {TaskDto} from '../Stores/Models/TaskDto';\r\nimport {AssignmentDto} from '../Stores/Models/AssignmentDto';\r\nimport {ResourceDto} from '../Stores/Models/ResourceDto';\r\n\r\nimport {Assignment, Resource, ResourceHolder, Role, Task} from 'ganttChart';\r\nimport {DependencyDto} from '../Stores/Models/DependencyDto';\r\nimport {ResourceHolderDto} from '../Stores/Models/ResourceHolderDto';\r\nimport { RoleDto } from '../Stores/Models/RoleDto';\r\n\r\nexport class OnViewModelMappings {\r\n AsTasks(dtos: TaskDto[]): Task<number>[] {\r\n const tasks = dtos.map(dto => this.AsTask(dto));\r\n this.ResolveDependencies(tasks, dtos);\r\n\r\n return tasks;\r\n }\r\n\r\n AsTask(dto: TaskDto): Task<number> {\r\n const task = new Task<number>();\r\n task.parentEntity = dto.Parent?.Entity;\r\n task.childEntity = dto.ChildEntity;\r\n task.parentRecordId = dto.Parent?.Id;\r\n task.entity = dto.Entity;\r\n task.id = dto.Id;\r\n task.name = dto.Name;\r\n task.level = dto.Level;\r\n task.start = this.AsMilliseconds(dto.Starting);\r\n task.end = this.AsMilliseconds(dto.Ending);\r\n task.progress = dto.Completeness * 100;\r\n task.status = task.progress === 100 ? 'STATUS_DONE' : 'STATUS_ACTIVE';\r\n task.assigs = this.AsAssignees(dto.Assignments);\r\n task.color = ColorConverter.ToHex(dto.BarColor);\r\n task.startIsMilestone = false;\r\n task.endIsMilestone = false;\r\n task.duration = dto.Duration;\r\n task.startIsMilestone = dto.StartIsMilestone;\r\n task.endIsMilestone = dto.EndIsMilestone;\r\n\r\n return task;\r\n }\r\n\r\n AsAssignees(dtos: AssignmentDto[]): Assignment<Guid, number, number>[] {\r\n return dtos.map(dto => this.AsAssignee(dto));\r\n }\r\n\r\n AsAssignee(dto: AssignmentDto): Assignment<Guid, number, number> {\r\n return {\r\n id: Guid.NewGuid(),\r\n entity: dto.Entity,\r\n resourceId: dto.Id,\r\n roleId: dto.RoleId,\r\n effort: dto.Effort * 60 * 60 * 1000\r\n };\r\n }\r\n\r\n AsResources(dtos: ResourceDto[]): Resource<number>[] {\r\n return dtos.map(dto => this.AsResource(dto));\r\n }\r\n\r\n AsRoles(dtos: RoleDto[]): Role<number>[] {\r\n return dtos.map(dto => this.AsRole(dto));\r\n }\r\n\r\n AsRole(dto: RoleDto): Role<number> {\r\n return {\r\n id: dto.Id,\r\n name: dto.Name\r\n };\r\n }\r\n\r\n AsResource(dto: ResourceDto): Resource<number> {\r\n return {\r\n id: dto.Id,\r\n entity: dto.Entity,\r\n name: dto.Name,\r\n holders: this.AsResourceHolders(dto.ResourceHolders)\r\n };\r\n }\r\n\r\n private AsResourceHolders(dtos: ResourceHolderDto[]): ResourceHolder<number>[] {\r\n return dtos.map(dto => this.AsResourceHolder(dto));\r\n }\r\n\r\n private AsResourceHolder(dto: ResourceHolderDto): ResourceHolder<number> {\r\n return {\r\n id: dto.Id,\r\n entity: dto.Entity\r\n };\r\n }\r\n\r\n private AsMilliseconds(utcDateTime: string): number {\r\n const shiftedDateTime = FormatConverter.CorrectTimezone(utcDateTime);\r\n return new Date(shiftedDateTime).getTime();\r\n }\r\n\r\n private ResolveDependencies(tasks: Task<number>[], taskDtos: TaskDto[]) {\r\n taskDtos.forEach(taskDto => {\r\n const task = _.find(tasks, t => t.id === taskDto.Id && t.entity === taskDto.Entity);\r\n\r\n const dependencies = [];\r\n taskDto.Dependencies.forEach(dependencyDto => {\r\n const dependencyTask = _.find(tasks, t => t.id == dependencyDto.RecordId && t.entity === dependencyDto.Entity);\r\n if (!dependencyTask) return;\r\n\r\n const dependencyRowNumber = tasks.indexOf(dependencyTask) + 1;\r\n const dependencyString = dependencyDto.StartAfterDays ? `${dependencyRowNumber}:${dependencyDto.StartAfterDays}` : `${dependencyRowNumber}`;\r\n dependencies.push(dependencyString);\r\n });\r\n\r\n task.depends = dependencies.join(',');\r\n });\r\n }\r\n}","import {TaskParentDto} from './TaskParentDto';\r\nimport {AssignmentDto} from './AssignmentDto';\r\nimport {DependencyDto} from './DependencyDto';\r\n\r\nexport class TaskDto {\r\n Entity: string;\r\n ChildEntity: string;\r\n Id: number;\r\n Name: string;\r\n Level: number;\r\n Starting: string;\r\n Ending: string;\r\n StartIsMilestone: boolean;\r\n EndIsMilestone: boolean;\r\n Completeness: number;\r\n Duration: number;\r\n Dependencies: DependencyDto[];\r\n Parent: TaskParentDto;\r\n Assignments: AssignmentDto[];\r\n BarColor: string;\r\n\r\n constructor() {\r\n this.Dependencies = [];\r\n this.Assignments = [];\r\n }\r\n}","export class AssignmentDto {\r\n Id: number;\r\n Entity: string;\r\n Effort: number;\r\n RoleId: number;\r\n}","export class DependencyDto {\r\n Entity: string;\r\n RecordId: number;\r\n StartAfterDays: number;\r\n}","export class TaskParentDto {\r\n Entity: string;\r\n Id: number;\r\n}","import * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\nimport {Assignment, Task} from 'ganttChart';\r\n\r\nimport {TaskDto} from '../Stores/Models/TaskDto';\r\nimport {AssignmentDto} from '../Stores/Models/AssignmentDto';\r\nimport {DependencyDto} from '../Stores/Models/DependencyDto';\r\nimport { TaskParentDto } from '../Stores/Models/TaskParentDto';\r\n\r\nexport class OnDtoModelMappings {\r\n AsTasksDto(tasks: Task<number>[]): TaskDto[] {\r\n const dtos = tasks.map(task => this.AsTaskDto(task));\r\n this.ResolveDependencies(dtos, tasks);\r\n\r\n return dtos;\r\n }\r\n\r\n AsTaskDto(task: Task<number>): TaskDto {\r\n const dto = new TaskDto();\r\n\r\n if(task.parentEntity && task.parentRecordId){\r\n let taskParent = new TaskParentDto();\r\n taskParent.Entity = task.parentEntity;\r\n taskParent.Id = task.parentRecordId;\r\n dto.Parent = taskParent;\r\n }\r\n\r\n dto.Entity = task.entity;\r\n dto.Id = task.id;\r\n dto.Name = task.name;\r\n dto.Duration = task.duration;\r\n dto.Level = task.level;\r\n dto.Starting = this.AsUtc(task.start);\r\n dto.Ending = this.AsUtc(task.end);\r\n dto.StartIsMilestone = task.startIsMilestone;\r\n dto.EndIsMilestone = task.endIsMilestone;\r\n dto.Completeness = task.progress / 100;\r\n dto.Assignments = this.AsAssigneesDto(task.assigs);\r\n\r\n return dto;\r\n }\r\n\r\n private AsAssigneesDto(assignments: Assignment<string, number, number>[]): AssignmentDto[] {\r\n return assignments.map(assignment => this.AsAssigneeDto(assignment));\r\n }\r\n\r\n private AsAssigneeDto(assignment: Assignment<string, number, number>): AssignmentDto {\r\n const dto = new AssignmentDto();\r\n\r\n dto.Id = assignment.resourceId;\r\n dto.Entity = assignment.entity;\r\n dto.RoleId = assignment.roleId;\r\n dto.Effort = assignment.effort / 60 / 60 / 1000;\r\n return dto;\r\n }\r\n\r\n private ResolveDependencies(taskDtos: TaskDto[], tasks: Task<number>[]) {\r\n tasks.forEach(task => {\r\n if (!task.depends) return;\r\n\r\n const taskDto = _.find(taskDtos, d => d.Id === task.id && d.Entity === task.entity);\r\n\r\n const dependencyStrings = task.depends.split(',');\r\n dependencyStrings.forEach(dependencyString => {\r\n const depSplit = dependencyString.split(':');\r\n const depIndex = +depSplit[0] - 1;\r\n const startAfterDays = depSplit[1] && +depSplit[1];\r\n\r\n const depTaskDto = taskDtos[depIndex];\r\n const dependency = this.AsDependencyDto(depTaskDto.Id, depTaskDto.Entity, startAfterDays);\r\n\r\n taskDto.Dependencies.push(dependency);\r\n });\r\n });\r\n }\r\n\r\n private AsDependencyDto(id: number, entity: string, startAfterDays: number) {\r\n const dto = new DependencyDto();\r\n\r\n dto.Entity = entity;\r\n dto.RecordId = id;\r\n dto.StartAfterDays = startAfterDays;\r\n\r\n return dto;\r\n }\r\n\r\n private AsUtc(milliseconds: number): string {\r\n return moment(milliseconds).set({hours: 0, minutes: 0, seconds: 0}).utcOffset(0, true).format();\r\n }\r\n}","import {OnViewModelMappings} from './OnViewModelMappings';\r\nimport {OnDtoModelMappings} from './OnDtoModelMappings';\r\n\r\nexport class GanttChartMappings {\r\n private _onViewModel: OnViewModelMappings;\r\n private _onDtoModel: OnDtoModelMappings;\r\n\r\n constructor() {\r\n this._onViewModel = new OnViewModelMappings();\r\n this._onDtoModel = new OnDtoModelMappings();\r\n }\r\n\r\n get OnViewModel() {\r\n return this._onViewModel;\r\n }\r\n\r\n get OnDtoModel() {\r\n return this._onDtoModel;\r\n }\r\n}","import * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {IGanttChartDataOptions} from './IGanttChartDataOptions';\r\n\r\nimport {AssignmentsPopup} from './AssignmentsPopup/AssignmentsPopup';\r\n\r\nimport {GanttChartStore} from './Stores/GanttChartStore';\r\nimport {GanttChartInfoDto} from './Stores/Models/GanttChartInfoDto';\r\nimport {SaveGanttChartInfoDto} from './Stores/Models/SaveGanttChartInfoDto';\r\n\r\nimport {GanttChartMappings} from './Mappings/GanttChartMappings';\r\n\r\nimport {GanttMaster, Project, Resource} from 'ganttChart';\r\n\r\nimport Template from './Templates/Templates.html';\r\nimport { PlanVersionDto } from './Stores/Models/PlanVersionDto';\r\nimport { Modal } from '../../../Common/Modal';\r\n\r\n\r\n($ as any).JST.loadDecorator(\"RESOURCE_ROW\", function(resTr, res){\r\n resTr.find(\".delRes\").click(function(){$(this).closest(\"tr\").remove()});\r\n });\r\n\r\n ($ as any).JST.loadDecorator(\"ASSIGNMENT_ROW\", function(assigTr, taskAssig){\r\n var resEl = assigTr.find(\"[name=resourceId]\");\r\n var opt = $(\"<option>\");\r\n resEl.append(opt);\r\n for(var i=0; i< taskAssig.task.master.resources.length;i++){\r\n var res = taskAssig.task.master.resources[i];\r\n opt = $(\"<option>\");\r\n opt.val(res.id).html(res.name);\r\n if(taskAssig.assig.resourceId == res.id)\r\n opt.attr(\"selected\", \"true\");\r\n resEl.append(opt);\r\n }\r\n var roleEl = assigTr.find(\"[name=roleId]\");\r\n for(var i=0; i< taskAssig.task.master.roles.length;i++){\r\n var role = taskAssig.task.master.roles[i];\r\n var optr = $(\"<option>\");\r\n optr.val(role.id).html(role.name);\r\n if(taskAssig.assig.roleId == role.id)\r\n optr.attr(\"selected\", \"true\");\r\n roleEl.append(optr);\r\n }\r\n\r\n if(taskAssig.task.master.permissions.canWrite && taskAssig.task.canWrite){\r\n assigTr.find(\".delAssig\").click(function(){\r\n var tr = $(this).closest(\"[assId]\").fadeOut(200, function(){$(this).remove()});\r\n });\r\n }\r\n });\r\n\r\nexport class GanttChartComponent extends Event {\r\n private _wrapperId: string;\r\n private _wrapper: HTMLElement;\r\n\r\n private _store: GanttChartStore;\r\n private _mappings: GanttChartMappings;\r\n\r\n private _ge: GanttMaster;\r\n private _project: Project;\r\n\r\n private _dataOptions: IGanttChartDataOptions;\r\n\r\n private _defaultScale: string | undefined;\r\n private _versions: Array<PlanVersionDto>;\r\n private _version: number;\r\n\r\n constructor({ defaultScale }: { defaultScale: string | undefined }) {\r\n super();\r\n\r\n this._versions = [];\r\n this._wrapperId = Guid.NewGuid();\r\n\r\n this._store = new GanttChartStore();\r\n this._mappings = new GanttChartMappings();\r\n\r\n this._ge = new GanttMaster();\r\n\r\n this._defaultScale = defaultScale;\r\n\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n this._wrapper = document.getElementById(this._wrapperId);\r\n this.Trigger('RENDERED');\r\n }\r\n\r\n async Refresh(options: IGanttChartDataOptions) {\r\n this._dataOptions = options;\r\n this.RenderChart();\r\n await this.LoadVersions();\r\n this.LoadData();\r\n }\r\n\r\n private async LoadVersions(){\r\n const $wrapper = $(this._wrapper);\r\n this._versions = await this._store.GetPlanVersions(this._dataOptions.SubjectEntityId, this._dataOptions.RootId);\r\n\r\n if(!this._version){\r\n this._version = this._versions.length > 0 ? _.last(this._versions).Version : null;\r\n }\r\n\r\n let versionSelect = $wrapper.find('#plan-version');\r\n versionSelect.empty();\r\n\r\n versionSelect.off('change');\r\n versionSelect.on('change', ()=>{\r\n this._version = versionSelect.val() ? Number(versionSelect.val()) : null;\r\n this.LoadData();\r\n });\r\n\r\n var option = $('<option></option>')\r\n .val('-1')\r\n .text('No version');\r\n versionSelect.append(option);\r\n\r\n _.each(this._versions, (version)=>{\r\n var option = $('<option></option>')\r\n .val(version.Version)\r\n .text(version.Version);\r\n versionSelect.append(option);\r\n });\r\n versionSelect.val(this._version);\r\n }\r\n\r\n ShowCriticalPath() {\r\n this._ge.gantt.showCriticalPath = !this._ge.gantt.showCriticalPath;\r\n this._ge.redraw();\r\n }\r\n\r\n Resize(value: number) {\r\n this._ge.splitter.resize(value);\r\n }\r\n\r\n ShowAssignmentsPopup(taskId) {\r\n const task = this._ge.getTask(taskId);\r\n\r\n const hasChildren = task.getChildren().length > 0;\r\n if (hasChildren) {\r\n return;\r\n }\r\n\r\n //const resourcesHolder = task.getParent();\r\n //const resources = _.filter(this._project.resources, r => _.any(r.holders, rh => rh.id == resourcesHolder.id && rh.entity == resourcesHolder.entity));\r\n\r\n const popup = new AssignmentsPopup(task, this._project.resources);\r\n\r\n popup.On('SAVE_CHANGES', this, () => {\r\n popup.Close();\r\n this._ge.redraw();\r\n });\r\n\r\n popup.Show();\r\n }\r\n\r\n Save() {\r\n BlockUI.Block({Target: this._wrapper});\r\n const project = this._ge.saveProject();\r\n const tasksDto = this._mappings.OnDtoModel.AsTasksDto(project.tasks);\r\n\r\n this._store.SaveGanttChartInfo(new SaveGanttChartInfoDto(this._version, this._dataOptions.SourceTable, this._dataOptions.ResourcesTable, tasksDto))\r\n .then(() => {\r\n this.LoadData();\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock(this._wrapper));\r\n }\r\n\r\n CreateNewVersion() {\r\n BlockUI.Block({Target: this._wrapper});\r\n const project = this._ge.saveProject();\r\n const tasksDto = this._mappings.OnDtoModel.AsTasksDto(project.tasks);\r\n\r\n this._store.CreateNewVersion(new SaveGanttChartInfoDto(this._version, this._dataOptions.SourceTable, this._dataOptions.ResourcesTable, tasksDto))\r\n .then(async (version) => {\r\n this._version = version;\r\n await this.LoadVersions();\r\n this.LoadData();\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock(this._wrapper));\r\n }\r\n\r\n private LoadData() {\r\n BlockUI.Block({Target: this._wrapper});\r\n this._store.GetGanttChartInfo(this._version, this._dataOptions.SourceTable, this._dataOptions.ResourcesTable, this._dataOptions.RootId)\r\n .then(dto => {\r\n this.InitProject(dto);\r\n this.LoadProject();\r\n this.BindRowEvents();\r\n this.EnableScrollOnTimelineDrag();\r\n this.ApplyColors();\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock(this._wrapper));\r\n }\r\n\r\n private InitProject(dto: GanttChartInfoDto) {\r\n const defaultScaleZoomMap = {\r\n 'Year - Semester': '2y',\r\n 'Semester - Month': '1y',\r\n 'Quarter - Month (small)': '2Q',\r\n 'Quarter - Month (large)': '1Q',\r\n 'Month - Date': '1M',\r\n 'Week - Day (small)': '2w',\r\n 'Week - Day (medium)': '1w',\r\n 'Week - Day (large)': '3d'\r\n };\r\n\r\n this._project = {\r\n tasks: this._mappings.OnViewModel.AsTasks(dto.Tasks),\r\n canWrite: true,\r\n canDelete: true,\r\n canWriteOnParent: true,\r\n canAdd: true,\r\n canSeePopEdit: true,\r\n canSeeFullEdit: true,\r\n resources: this._mappings.OnViewModel.AsResources(dto.Resources),\r\n roles: this._mappings.OnViewModel.AsRoles(dto.Roles),\r\n zoom: defaultScaleZoomMap[this._defaultScale]\r\n };\r\n }\r\n\r\n private LoadProject(){\r\n this._ge.reset();\r\n this._ge.loadProject(this._project);\r\n }\r\n\r\n private RenderChart() {\r\n const $wrapper = $(this._wrapper);\r\n\r\n this._ge.init($wrapper);\r\n\r\n // Fix event handler context\r\n this._ge.element\r\n .off('saveRequired.gantt', this._ge.manageSaveRequired)\r\n .on('saveRequired.gantt', this._ge.manageSaveRequired.bind(this._ge)); \r\n \r\n this._ge.checkpoint();\r\n\r\n this.BindEvents();\r\n\r\n // Scroll to current date\r\n // Based on Ganttalendar.prototype.goToMillis and Ganttalendar.prototype.centerOnToday from ganttDrawerSVG.js\r\n setTimeout(() => {\r\n const {\r\n gantt,\r\n splitter: { secondBox }\r\n } = this._ge;\r\n\r\n secondBox.scrollLeft(\r\n (Date.now() - gantt.startMillis) * gantt.fx + secondBox.width() / 2 - secondBox.prop('scrollWidth')\r\n );\r\n }, 200); // 200ms from GanttMaster.prototype.loadProject\r\n }\r\n\r\n private BindRowEvents(){\r\n const $wrapper = $(this._wrapper);\r\n $wrapper.find('.taskAssigs').on('click', event => {\r\n var row = $(event.target).closest(\"tr\");\r\n var taskId = row.attr(\"taskId\");\r\n this.ShowAssignmentsPopup(taskId);\r\n });\r\n }\r\n\r\n private BindEvents() {\r\n const $wrapper = $(this._wrapper);\r\n\r\n $wrapper.find('#gantt-save-btn').on('click', () => this.Save());\r\n $wrapper.find('#gantt-create-new-version-btn').on('click', () => this.CreateNewVersion());\r\n $wrapper.find('#gantt-show-critical-path-btn').on('click', () => this.ShowCriticalPath());\r\n $wrapper.find('#show-gantt-only-btn').on('click', () => this.Resize(.1));\r\n $wrapper.find('#show-both-btn').on('click', () => this.Resize(50));\r\n $wrapper.find('#show-table-only-btn').on('click', () => this.Resize(100));\r\n $wrapper.find('#gantt-edit-resources').on('click', () => this.EditResources());\r\n\r\n $wrapper.find('#gantt-zoom-minus').on('click', () => this.EnableScrollOnTimelineDrag());\r\n $wrapper.find('#gantt-zoom-plus').on('click', () => this.EnableScrollOnTimelineDrag());\r\n\r\n const splitBox1 = this._wrapper.querySelector<HTMLDivElement>('.splitBox1');\r\n splitBox1.addEventListener(\r\n 'wheel',\r\n event => {\r\n if (event.shiftKey) {\r\n splitBox1.scrollLeft += event.deltaY;\r\n }\r\n },\r\n true\r\n );\r\n\r\n this.EnableScrollOnTimelineDrag();\r\n }\r\n\r\n private EnableScrollOnTimelineDrag() {\r\n setTimeout(() => {\r\n const splitBox2 = this._wrapper.querySelector<HTMLDivElement>('.splitBox2');\r\n const ganttFixHead = splitBox2.querySelector<HTMLDivElement>('.ganttFixHead');\r\n\r\n let initialScrollLeft: number | undefined;\r\n let initialClientX: number | undefined;\r\n\r\n function scroll(event: PointerEvent) {\r\n splitBox2.scrollLeft = initialScrollLeft - (event.clientX - initialClientX);\r\n }\r\n\r\n ganttFixHead.addEventListener('pointerdown', event => {\r\n initialScrollLeft = splitBox2.scrollLeft;\r\n initialClientX = event.clientX;\r\n\r\n ganttFixHead.addEventListener('pointermove', scroll);\r\n ganttFixHead.setPointerCapture(event.pointerId);\r\n });\r\n\r\n ganttFixHead.addEventListener('pointerup', event => {\r\n ganttFixHead.removeEventListener('pointermove', scroll);\r\n ganttFixHead.releasePointerCapture(event.pointerId);\r\n });\r\n }, 50); // 50ms from GanttMaster.prototype.taskIsChanged\r\n }\r\n\r\n private ApplyColors() {\r\n for (const task of this._ge.tasks) {\r\n if (task.color) {\r\n task.rowElement.find('.taskStatus').css('background-color', task.color);\r\n }\r\n }\r\n\r\n // Gantt colors\r\n const mutationObserver = new MutationObserver(mutationList => {\r\n const ganttBars = _.flatten(\r\n mutationList.map(mutation =>\r\n Array.prototype.filter.call(mutation.addedNodes,\r\n node => node instanceof SVGElement && node.classList.contains('taskStatusSVG')\r\n )\r\n )\r\n );\r\n\r\n for (const bar of ganttBars) {\r\n const fill = bar.getAttribute('fill');\r\n if (fill !== '#eee') { // if not default value\r\n bar.style.fill = fill;\r\n }\r\n }\r\n });\r\n\r\n const splitBox2 = this._wrapper.querySelector<HTMLDivElement>('.splitBox2');\r\n\r\n mutationObserver.observe(splitBox2, { childList: true, subtree: true });\r\n }\r\n\r\n private EditResources(){\r\n let modal = new Modal({ height: 600, width: 400 }, false); \r\n modal.AddClass('gantt-chart-wrapper');\r\n //make resource editor\r\n var resourceEditor = ($ as any).JST.createFromTemplate({}, \"RESOURCE_EDITOR\");\r\n var resTbl=resourceEditor.find(\"#resourcesTable\");\r\n \r\n for (var i=0;i<(this._ge as any).resources.length;i++){\r\n var res=(this._ge as any).resources[i];\r\n resTbl.append(($ as any).JST.createFromTemplate(res, \"RESOURCE_ROW\"))\r\n }\r\n \r\n \r\n //bind add resource\r\n resourceEditor.find(\"#addResource\").click(function(){\r\n resTbl.append(($ as any).JST.createFromTemplate({id:\"new\",name:\"resource\"}, \"RESOURCE_ROW\"))\r\n });\r\n \r\n //bind save event\r\n resourceEditor.find(\"#resSaveButton\").click(function(){\r\n var newRes=[];\r\n //find for deleted res\r\n for (var i=0;i<(this._ge as any).resources.length;i++){\r\n var res=(this._ge as any).resources[i];\r\n var row = resourceEditor.find(\"[resId=\"+res.id+\"]\");\r\n if (row.length>0){\r\n //if still there save it\r\n var name = row.find(\"input[name]\").val();\r\n if (name && name!=\"\")\r\n res.name=name;\r\n newRes.push(res);\r\n } else {\r\n //remove assignments\r\n for (var j=0;j<(this._ge as any).tasks.length;j++){\r\n var task=(this._ge as any).tasks[j];\r\n var newAss=[];\r\n for (var k=0;k<task.assigs.length;k++){\r\n var ass=task.assigs[k];\r\n if (ass.resourceId!=res.id)\r\n newAss.push(ass);\r\n }\r\n task.assigs=newAss;\r\n }\r\n }\r\n }\r\n \r\n var cnt=0\r\n resourceEditor.find(\"[resId=new]\").each(function(){\r\n cnt++;\r\n var row = $(this);\r\n var name = row.find(\"input[name]\").val();\r\n if (name && name!=\"\")\r\n newRes.push (new (Resource as any)(\"tmp_\"+new Date().getTime()+\"_\"+cnt,name));\r\n });\r\n \r\n (this._ge as any).resources=newRes;\r\n \r\n modal.Close();\r\n (this._ge as any).redraw();\r\n });\r\n \r\n\r\n modal.SetContent(resourceEditor);\r\n modal.Show();\r\n } \r\n}","// Module\nvar code = \"<div data-bind=\\\"attr: {id: _wrapperId}\\\" class=\\\"gantt-chart-wrapper\\\"></div> <div class=\\\"gantEditorTemplates\\\" style=\\\"display:none\\\"> <div class=\\\"__template__\\\" type=\\\"GANTBUTTONS\\\"> <!--\\r\\n <div class=\\\"ganttButtonBar noprint\\\">\\r\\n <div class=\\\"buttons\\\">\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('undo.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite\\\" title=\\\"undo\\\"><span class=\\\"teamworkIcon\\\">'</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('redo.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite\\\" title=\\\"redo\\\"><span class=\\\"teamworkIcon\\\">·</span></button>\\r\\n <span class=\\\"ganttButtonSeparator requireCanWrite requireCanAdd\\\"></span>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('addAboveCurrentTask.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite requireCanAdd\\\" title=\\\"insert above\\\"><span class=\\\"teamworkIcon\\\">l</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('addBelowCurrentTask.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite requireCanAdd\\\" title=\\\"insert below\\\"><span class=\\\"teamworkIcon\\\">X</span></button>\\r\\n <span class=\\\"ganttButtonSeparator requireCanWrite requireCanInOutdent\\\"></span>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('outdentCurrentTask.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite requireCanInOutdent\\\" title=\\\"un-indent task\\\"><span class=\\\"teamworkIcon\\\">.</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('indentCurrentTask.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite requireCanInOutdent\\\" title=\\\"indent task\\\"><span class=\\\"teamworkIcon\\\">:</span></button>\\r\\n <span class=\\\"ganttButtonSeparator requireCanWrite requireCanMoveUpDown\\\"></span>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('moveUpCurrentTask.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite requireCanMoveUpDown\\\" title=\\\"move up\\\"><span class=\\\"teamworkIcon\\\">k</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('moveDownCurrentTask.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite requireCanMoveUpDown\\\" title=\\\"move down\\\"><span class=\\\"teamworkIcon\\\">j</span></button>\\r\\n <span class=\\\"ganttButtonSeparator requireCanWrite requireCanDelete\\\"></span>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('deleteFocused.gantt');return false;\\\" class=\\\"button textual icon delete requireCanWrite\\\" title=\\\"Elimina\\\"><span class=\\\"teamworkIcon\\\">¢</span></button>\\r\\n <span class=\\\"ganttButtonSeparator\\\"></span>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('expandAll.gantt');return false;\\\" class=\\\"button textual icon \\\" title=\\\"EXPAND_ALL\\\"><span class=\\\"teamworkIcon\\\">6</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('collapseAll.gantt'); return false;\\\" class=\\\"button textual icon \\\" title=\\\"COLLAPSE_ALL\\\"><span class=\\\"teamworkIcon\\\">5</span></button>\\r\\n\\r\\n <span class=\\\"ganttButtonSeparator\\\"></span>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('zoomMinus.gantt'); return false;\\\" id=\\\"gantt-zoom-minus\\\" class=\\\"button textual icon \\\" title=\\\"zoom out\\\"><span class=\\\"teamworkIcon\\\">)</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('zoomPlus.gantt');return false;\\\" id=\\\"gantt-zoom-plus\\\" class=\\\"button textual icon \\\" title=\\\"zoom in\\\"><span class=\\\"teamworkIcon\\\">(</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('fullScreen.gantt');return false;\\\" class=\\\"button textual icon\\\" title=\\\"FULLSCREEN\\\" id=\\\"fullscrbtn\\\"><span class=\\\"teamworkIcon\\\">@</span></button>\\r\\n\\r\\n <span class=\\\"ganttButtonSeparator\\\"></span>\\r\\n <button id=\\\"gantt-show-critical-path-btn\\\" class=\\\"button textual icon requireCanSeeCriticalPath\\\" title=\\\"CRITICAL_PATH\\\"><span class=\\\"teamworkIcon\\\">£</span></button>\\r\\n <span class=\\\"ganttButtonSeparator requireCanSeeCriticalPath\\\"></span>\\r\\n <button id=\\\"show-gantt-only-btn\\\" class=\\\"button textual icon\\\" ><span class=\\\"teamworkIcon\\\">F</span></button>\\r\\n <button id=\\\"show-both-btn\\\" class=\\\"button textual icon\\\" ><span class=\\\"teamworkIcon\\\">O</span></button>\\r\\n <button id=\\\"show-table-only-btn\\\" class=\\\"button textual icon\\\"><span class=\\\"teamworkIcon\\\">R</span></button>\\r\\n\\r\\n <button id=\\\"gantt-edit-resources\\\" class=\\\"button textual requireWrite\\\" title=\\\"edit resources\\\"><span class=\\\"teamworkIcon\\\">M</span></button>\\r\\n\\r\\n <span class=\\\"ganttButtonSeparator\\\"></span>\\r\\n\\r\\n <select id=\\\"plan-version\\\" name=\\\"plan-version\\\">\\r\\n </select>\\r\\n\\r\\n <button id=\\\"gantt-save-btn\\\" class=\\\"button first big requireWrite\\\" title=\\\"Save\\\">Save</button>\\r\\n <button id=\\\"gantt-create-new-version-btn\\\" class=\\\"button first big requireWrite\\\" title=\\\"Save new\\\">Save new</button>\\r\\n </div>\\r\\n \\r\\n </div>\\r\\n --> </div> <div class=\\\"__template__\\\" type=\\\"TASKSEDITHEAD\\\"><!--\\r\\n <table class=\\\"gdfTable\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\\r\\n <thead>\\r\\n <tr style=\\\"height:40px\\\">\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:35px; border-right: none\\\"></th>\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:25px;\\\"></th>\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:300px;\\\">Name</th>\\r\\n <th class=\\\"gdfColHeader\\\" align=\\\"center\\\" style=\\\"width:17px;\\\" title=\\\"Start date is a milestone.\\\"><span class=\\\"teamworkIcon\\\" style=\\\"font-size: 8px;\\\">^</span></th>\\r\\n <th class=\\\"gdfColHeader gdfResizable\\\" style=\\\"width:80px;\\\">Start</th>\\r\\n <th class=\\\"gdfColHeader\\\" align=\\\"center\\\" style=\\\"width:17px;\\\" title=\\\"End date is a milestone.\\\"><span class=\\\"teamworkIcon\\\" style=\\\"font-size: 8px;\\\">^</span></th>\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:80px;\\\">End</th>\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:40px;\\\">Dur.</th>\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:40px;\\\">%</th>\\r\\n <th class=\\\"gdfColHeader requireCanSeeDep\\\" style=\\\"width:80px;\\\">Dep.</th>\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:1000px; text-align: left; padding-left: 10px;\\\">Assignees</th>\\r\\n </tr>\\r\\n </thead>\\r\\n </table>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"TASKROW\\\"><!--\\r\\n <tr id=\\\"tid_(#=obj.id#)\\\" taskId=\\\"(#=obj.id#)\\\" class=\\\"taskEditRow (#=obj.isParent()?'isParent':''#) (#=obj.collapsed?'collapsed':''#)\\\" level=\\\"(#=level#)\\\">\\r\\n <th class=\\\"gdfCell edit\\\" align=\\\"right\\\" style=\\\"cursor:pointer;\\\"><span class=\\\"taskRowIndex\\\">(#=obj.getRow()+1#)</span> <span class=\\\"teamworkIcon\\\" style=\\\"font-size:12px;\\\" >e</span></th>\\r\\n <td class=\\\"gdfCell noClip\\\" align=\\\"center\\\"><div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"(#=obj.status#)\\\"></div></td>\\r\\n <td class=\\\"gdfCell indentCell\\\" style=\\\"padding-left:(#=obj.level*10+18#)px;\\\">\\r\\n <div class=\\\"exp-controller\\\" align=\\\"center\\\"></div>\\r\\n <input type=\\\"text\\\" name=\\\"name\\\" value=\\\"(#=obj.name#)\\\" placeholder=\\\"name\\\" disabled>\\r\\n </td>\\r\\n <td class=\\\"gdfCell\\\" align=\\\"center\\\"><input type=\\\"checkbox\\\" name=\\\"startIsMilestone\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"><input type=\\\"text\\\" name=\\\"start\\\" value=\\\"\\\" class=\\\"date\\\"></td>\\r\\n <td class=\\\"gdfCell\\\" align=\\\"center\\\"><input type=\\\"checkbox\\\" name=\\\"endIsMilestone\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"><input type=\\\"text\\\" name=\\\"end\\\" value=\\\"\\\" class=\\\"date\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"><input type=\\\"text\\\" name=\\\"duration\\\" autocomplete=\\\"off\\\" value=\\\"(#=obj.duration#)\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"><input type=\\\"text\\\" name=\\\"progress\\\" class=\\\"validated\\\" entrytype=\\\"PERCENTILE\\\" autocomplete=\\\"off\\\" value=\\\"(#=obj.progress?obj.progress:''#)\\\" (#=obj.progressByWorklog?\\\"readOnly\\\":\\\"\\\"#)></td>\\r\\n <td class=\\\"gdfCell requireCanSeeDep\\\"><input type=\\\"text\\\" name=\\\"depends\\\" autocomplete=\\\"off\\\" value=\\\"(#=obj.depends#)\\\" (#=obj.hasExternalDep?\\\"readonly\\\":\\\"\\\"#)></td>\\r\\n <td class=\\\"gdfCell taskAssigs\\\">(#=obj.getAssigsString()#)</td>\\r\\n </tr>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"TASKEMPTYROW\\\"><!--\\r\\n <tr class=\\\"taskEditRow emptyRow\\\" >\\r\\n <th class=\\\"gdfCell\\\" align=\\\"right\\\"></th>\\r\\n <td class=\\\"gdfCell noClip\\\" align=\\\"center\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell requireCanSeeDep\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n </tr>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"TASKBAR\\\"><!--\\r\\n <div class=\\\"taskBox taskBoxDiv\\\" taskId=\\\"(#=obj.id#)\\\" >\\r\\n <div class=\\\"layout (#=obj.hasExternalDep?'extDep':''#)\\\">\\r\\n <div class=\\\"taskStatus\\\" status=\\\"(#=obj.status#)\\\"></div>\\r\\n <div class=\\\"taskProgress\\\" style=\\\"width:(#=obj.progress>100?100:obj.progress#)%; background-color:(#=obj.progress>100?'red':'rgb(153,255,51);'#);\\\"></div>\\r\\n <div class=\\\"milestone (#=obj.startIsMilestone?'active':''#)\\\" ></div>\\r\\n\\r\\n <div class=\\\"taskLabel\\\"></div>\\r\\n <div class=\\\"milestone end (#=obj.endIsMilestone?'active':''#)\\\" ></div>\\r\\n </div>\\r\\n </div>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"CHANGE_STATUS\\\"><!--\\r\\n <div class=\\\"taskStatusBox\\\">\\r\\n <div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"STATUS_ACTIVE\\\" title=\\\"Active\\\"></div>\\r\\n <div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"STATUS_DONE\\\" title=\\\"Completed\\\"></div>\\r\\n <div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"STATUS_FAILED\\\" title=\\\"Failed\\\"></div>\\r\\n <div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"STATUS_SUSPENDED\\\" title=\\\"Suspended\\\"></div>\\r\\n <div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"STATUS_WAITING\\\" title=\\\"Waiting\\\" style=\\\"display: none;\\\"></div>\\r\\n <div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"STATUS_UNDEFINED\\\" title=\\\"Undefined\\\"></div>\\r\\n </div>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"TASK_EDITOR\\\"><!--\\r\\n <div class=\\\"ganttTaskEditor\\\">\\r\\n <h2 class=\\\"taskData\\\">Task editor</h2>\\r\\n <table cellspacing=\\\"1\\\" cellpadding=\\\"5\\\" width=\\\"100%\\\" class=\\\"taskData table\\\" border=\\\"0\\\">\\r\\n <tr>\\r\\n <td width=\\\"200\\\" style=\\\"height: 80px\\\" valign=\\\"top\\\">\\r\\n <label for=\\\"code\\\">code/short name</label><br>\\r\\n <input type=\\\"text\\\" name=\\\"code\\\" id=\\\"code\\\" value=\\\"\\\" size=15 class=\\\"formElements\\\" autocomplete='off' maxlength=255 style='width:100%' oldvalue=\\\"1\\\">\\r\\n </td>\\r\\n <td colspan=\\\"3\\\" valign=\\\"top\\\"><label for=\\\"name\\\" class=\\\"required\\\">name</label><br><input type=\\\"text\\\" name=\\\"name\\\" id=\\\"name\\\"class=\\\"formElements\\\" autocomplete='off' maxlength=255 style='width:100%' value=\\\"\\\" required=\\\"true\\\" oldvalue=\\\"1\\\"></td>\\r\\n </tr>\\r\\n\\r\\n\\r\\n <tr class=\\\"dateRow\\\">\\r\\n <td nowrap=\\\"\\\">\\r\\n <div style=\\\"position:relative\\\">\\r\\n <label for=\\\"start\\\">start</label>    \\r\\n <input type=\\\"checkbox\\\" id=\\\"startIsMilestone\\\" name=\\\"startIsMilestone\\\" value=\\\"yes\\\">  <label for=\\\"startIsMilestone\\\">is milestone</label> \\r\\n <br><input type=\\\"text\\\" name=\\\"start\\\" id=\\\"start\\\" size=\\\"8\\\" class=\\\"formElements dateField validated date\\\" autocomplete=\\\"off\\\" maxlength=\\\"255\\\" value=\\\"\\\" oldvalue=\\\"1\\\" entrytype=\\\"DATE\\\">\\r\\n <span title=\\\"calendar\\\" id=\\\"starts_inputDate\\\" class=\\\"teamworkIcon openCalendar\\\" onclick=\\\"$(this).dateField({inputField:$(this).prevAll(':input:first'),isSearchField:false});\\\">m</span> </div>\\r\\n </td>\\r\\n <td nowrap=\\\"\\\">\\r\\n <label for=\\\"end\\\">End</label>    \\r\\n <input type=\\\"checkbox\\\" id=\\\"endIsMilestone\\\" name=\\\"endIsMilestone\\\" value=\\\"yes\\\">  <label for=\\\"endIsMilestone\\\">is milestone</label> \\r\\n <br><input type=\\\"text\\\" name=\\\"end\\\" id=\\\"end\\\" size=\\\"8\\\" class=\\\"formElements dateField validated date\\\" autocomplete=\\\"off\\\" maxlength=\\\"255\\\" value=\\\"\\\" oldvalue=\\\"1\\\" entrytype=\\\"DATE\\\">\\r\\n <span title=\\\"calendar\\\" id=\\\"ends_inputDate\\\" class=\\\"teamworkIcon openCalendar\\\" onclick=\\\"$(this).dateField({inputField:$(this).prevAll(':input:first'),isSearchField:false});\\\">m</span>\\r\\n </td>\\r\\n <td nowrap=\\\"\\\" >\\r\\n <label for=\\\"duration\\\" class=\\\" \\\">Days</label><br>\\r\\n <input type=\\\"text\\\" name=\\\"duration\\\" id=\\\"duration\\\" size=\\\"4\\\" class=\\\"formElements validated durationdays\\\" title=\\\"Duration is in working days.\\\" autocomplete=\\\"off\\\" maxlength=\\\"255\\\" value=\\\"\\\" oldvalue=\\\"1\\\" entrytype=\\\"DURATIONDAYS\\\"> \\r\\n </td>\\r\\n </tr>\\r\\n\\r\\n <tr>\\r\\n <td colspan=\\\"2\\\">\\r\\n <label for=\\\"status\\\" class=\\\" \\\">status</label><br>\\r\\n <select id=\\\"status\\\" name=\\\"status\\\" class=\\\"taskStatus\\\" status=\\\"(#=obj.status#)\\\" onchange=\\\"$(this).attr('STATUS',$(this).val());\\\">\\r\\n <option value=\\\"STATUS_ACTIVE\\\" class=\\\"taskStatus\\\" status=\\\"STATUS_ACTIVE\\\" >active</option>\\r\\n <option value=\\\"STATUS_WAITING\\\" class=\\\"taskStatus\\\" status=\\\"STATUS_WAITING\\\" >suspended</option>\\r\\n <option value=\\\"STATUS_SUSPENDED\\\" class=\\\"taskStatus\\\" status=\\\"STATUS_SUSPENDED\\\" >suspended</option>\\r\\n <option value=\\\"STATUS_DONE\\\" class=\\\"taskStatus\\\" status=\\\"STATUS_DONE\\\" >completed</option>\\r\\n <option value=\\\"STATUS_FAILED\\\" class=\\\"taskStatus\\\" status=\\\"STATUS_FAILED\\\" >failed</option>\\r\\n <option value=\\\"STATUS_UNDEFINED\\\" class=\\\"taskStatus\\\" status=\\\"STATUS_UNDEFINED\\\" >undefined</option>\\r\\n </select>\\r\\n </td>\\r\\n\\r\\n <td valign=\\\"top\\\" nowrap>\\r\\n <label>progress</label><br>\\r\\n <input type=\\\"text\\\" name=\\\"progress\\\" id=\\\"progress\\\" size=\\\"7\\\" class=\\\"formElements validated percentile\\\" autocomplete=\\\"off\\\" maxlength=\\\"255\\\" value=\\\"\\\" oldvalue=\\\"1\\\" entrytype=\\\"PERCENTILE\\\">\\r\\n </td>\\r\\n </tr>\\r\\n\\r\\n </tr>\\r\\n <tr>\\r\\n <td colspan=\\\"4\\\">\\r\\n <label for=\\\"description\\\">Description</label><br>\\r\\n <textarea rows=\\\"3\\\" cols=\\\"30\\\" id=\\\"description\\\" name=\\\"description\\\" class=\\\"formElements\\\" style=\\\"width:100%\\\"></textarea>\\r\\n </td>\\r\\n </tr>\\r\\n </table>\\r\\n\\r\\n <h2>Assignments</h2>\\r\\n <table cellspacing=\\\"1\\\" cellpadding=\\\"0\\\" width=\\\"100%\\\" id=\\\"assigsTable\\\">\\r\\n <tr>\\r\\n <th style=\\\"width:100px;\\\">name</th>\\r\\n <th style=\\\"width:70px;\\\">Role</th>\\r\\n <th style=\\\"width:30px;\\\">est.wklg.</th>\\r\\n <th style=\\\"width:30px;\\\" id=\\\"addAssig\\\"><span class=\\\"teamworkIcon\\\" style=\\\"cursor: pointer\\\">+</span></th>\\r\\n </tr>\\r\\n </table>\\r\\n\\r\\n <div style=\\\"text-align: right; padding-top: 20px\\\">\\r\\n <span id=\\\"saveButton\\\" class=\\\"button first\\\" onClick=\\\"$(this).trigger('saveFullEditor.gantt');\\\">Save</span>\\r\\n </div>\\r\\n\\r\\n </div>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"ASSIGNMENT_ROW\\\"><!--\\r\\n <tr taskId=\\\"(#=obj.task.id#)\\\" assId=\\\"(#=obj.assig.id#)\\\" class=\\\"assigEditRow\\\" >\\r\\n <td ><select name=\\\"resourceId\\\" class=\\\"formElements\\\" (#=obj.assig.id.indexOf(\\\"tmp_\\\")==0?\\\"\\\":\\\"disabled\\\"#) ></select></td>\\r\\n <td ><select type=\\\"select\\\" name=\\\"roleId\\\" class=\\\"formElements\\\"></select></td>\\r\\n <td ><input type=\\\"text\\\" name=\\\"effort\\\" value=\\\"(#=obj.getMillisInHoursMinutes(obj.assig.effort)#)\\\" size=\\\"5\\\" class=\\\"formElements\\\"></td>\\r\\n <td align=\\\"center\\\"><span class=\\\"teamworkIcon delAssig del\\\" style=\\\"cursor: pointer\\\">d</span></td>\\r\\n </tr>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"RESOURCE_EDITOR\\\"><!--\\r\\n <div class=\\\"resourceEditor\\\" style=\\\"padding: 5px;\\\">\\r\\n\\r\\n <h2>Project team</h2>\\r\\n <table cellspacing=\\\"1\\\" cellpadding=\\\"0\\\" width=\\\"100%\\\" id=\\\"resourcesTable\\\">\\r\\n <tr>\\r\\n <th style=\\\"width:100px;\\\">name</th>\\r\\n <th style=\\\"width:30px;\\\" id=\\\"addResource\\\"><span class=\\\"teamworkIcon\\\" style=\\\"cursor: pointer\\\">+</span></th>\\r\\n </tr>\\r\\n </table>\\r\\n\\r\\n <div style=\\\"text-align: right; padding-top: 20px\\\"><button id=\\\"resSaveButton\\\" class=\\\"button big\\\">Save</button></div>\\r\\n </div>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"RESOURCE_ROW\\\"><!--\\r\\n <tr resId=\\\"(#=obj.id#)\\\" class=\\\"resRow\\\" >\\r\\n <td ><input type=\\\"text\\\" name=\\\"name\\\" value=\\\"(#=obj.name#)\\\" style=\\\"width:100%;\\\" class=\\\"formElements\\\"></td>\\r\\n <td align=\\\"center\\\"><span class=\\\"teamworkIcon delRes del\\\" style=\\\"cursor: pointer\\\">d</span></td>\\r\\n </tr>\\r\\n --></div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {DEFAULT_ICONS, FIELD_TYPES, RenderModes, TABLE_TYPES} from \"Core/Constant\";\r\n\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nimport {ComplexControl} from \"../ComplexControl/ComplexControl\";\r\nimport {RequiredFieldModel} from \"../ComplexControl/Models/RequiredFieldModel\";\r\n\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\n\r\nimport {GanttChartComponent} from 'Core/Components/Controls/GanttChart/GanttChartComponent';\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {IPropertyOption} from 'Core/GeneralProperties/Managers/BaseProperty';\r\n\r\nimport GanttChartConfig from 'Core/Controls/GanttChart/Configs/gantt-chart-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/GanttChart/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/GanttChart/Templates/ToolBar.html';\r\nimport { SubjectEntity } from '../FormDesigner/ToolBar/EntityToolBar/SubjectEntity';\r\n\r\nko.templates['Core/Controls/GanttChart/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/GanttChart/Templates/Design'] = ComplexControl.designTemplate;\r\nko.templates['Core/Controls/GanttChart/Templates/View'] = ViewTemplate;\r\n\r\nexport class GanttChart extends ComplexControl {\r\n private _ganttChartViewName: string;\r\n private _resourcesViewName: string;\r\n\r\n private _component: KnockoutObservable<GanttChartComponent>;\r\n private _initialValue: IControlValue;\r\n private _componentRendered: boolean;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, GanttChartConfig);\r\n\r\n this._component = ko.observable(null);\r\n\r\n this.Init();\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n this._initialValue = value;\r\n\r\n if (this._componentRendered) {\r\n this._component().Refresh({\r\n SourceTable: this._ganttChartViewName,\r\n ResourcesTable: this._resourcesViewName,\r\n RootId: this._initialValue.SubjectRecordId,\r\n SubjectEntityId: this._initialValue.SubjectEntityId\r\n });\r\n }\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private Init() { \r\n this.InitRuntime();\r\n this.InitDesignTime();\r\n }\r\n\r\n private InitRuntime() {\r\n if (!this.IsRunTime) {\r\n return;\r\n }\r\n this._ganttChartViewName = this.FieldModel.EntityName;\r\n this._resourcesViewName = _.find(this.Model.Fields, f => f.EntityId !== this.FieldModel.EntityId).EntityName;\r\n\r\n const defaultScale: IPropertyOption | undefined = this.GeneralProperties.GetPropertyValue('DefaultScale');\r\n\r\n this._component(new GanttChartComponent({ defaultScale: defaultScale && defaultScale.Value }));\r\n\r\n this._component().On('RENDERED', this, () => {\r\n this._componentRendered = true;\r\n\r\n if (this._initialValue) {\r\n this._component().Refresh({\r\n SourceTable: this._ganttChartViewName,\r\n ResourcesTable: this._resourcesViewName,\r\n RootId: this._initialValue.SubjectRecordId,\r\n SubjectEntityId: this._initialValue.SubjectEntityId\r\n });\r\n }\r\n });\r\n }\r\n\r\n private InitDesignTime() {\r\n if(!this.IsDesignTime){\r\n return;\r\n }\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.Agenda));\r\n this._requiredFields([\r\n new RequiredFieldModel('LEVEL0_ENTITY', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_ID', FIELD_TYPES.Integer, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_NAME', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_STARTING', FIELD_TYPES.DateTime, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_ENDING', FIELD_TYPES.DateTime, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_COMPLETENESS', FIELD_TYPES.Decimal, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_DEPENDENCIES', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_RESOURCE_ENTITY', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_RESOURCE_ID', FIELD_TYPES.Integer, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_RESOURCE_NAME', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_RESOURCE_EFFORT', FIELD_TYPES.Decimal, TABLE_TYPES.Sub, null),\r\n ]);\r\n this.InitRequiredFields();\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"text-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-bar-chart\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko with: _component--> <!--ko template: {html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)}--><!--/ko--> <!--/ko-->\";\n// Exports\nexport default code;","import * as _ from'underscore';\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {LinkListRelationsModel} from 'Core/Controls/LinkList/Models/LinklistRelationsModel';\r\n\r\ninterface IGetAddressDto {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tControlId: number;\r\n}\r\n\r\nexport class MapsStore {\r\n\tpublic static GetAddress(params: IGetAddressDto): P.Promise<string> {\r\n\t\tvar deferredResult = P.defer<string>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/MapsApi/GetAddress',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest\r\n\t\t.Send(requestParams)\r\n\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tpublic static CheckGoogleMapsKey(key: string): P.Promise<boolean> {\r\n\t\tvar deferredResult = P.defer<boolean>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/MapsApi/CheckKey',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: { key : key }\r\n\t\t};\r\n\r\n\t\tRequest\r\n\t\t.Send(requestParams)\r\n\t\t.then(data => {\r\n\t\t\t deferredResult.resolve(data);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView EditScreenView maps-control form-standart-control\\\"> <!-- ko if: $data._address --> <iframe data-bind=\\\"attr: { src: $data._query}\\\" frameborder=\\\"0\\\" scrolling=\\\"no\\\" height=\\\"100\\\" class=\\\"iframe-element\\\"></iframe> <!-- /ko --> <!-- ko if: $data._keyIsNotValidMessage --> <!-- ko text: $data._keyIsNotValidMessage --><!-- /ko --> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { MapsStore } from './Stores/MapsStore';\r\n\r\nimport ViewTemplate from 'Core/Controls/Maps/Templates/View.html'\r\nimport DesignTemplate from 'Core/Controls/Maps/Templates/Design.html'\r\nimport ToolbarTemplate from 'Core/Controls/Maps/Templates/ToolBar.html'\r\nimport HelpViewTemplate from 'Core/Controls/Maps/Templates/HelpView.html'\r\nimport { GlobalManager, GLOBALS } from 'Core/GlobalManager/GlobalManager';\r\nimport { NOTIFICATIONS } from '../Grid/BaseGrid/Index';\r\n\r\nko.templates['Core/Controls/Maps/Templates/ToolBar'] = ToolbarTemplate;\r\nko.templates['Core/Controls/Maps/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Maps/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Maps/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Maps/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport class Maps extends BaseControl {\r\n\tprivate _query: KnockoutComputed<string>;\r\n\tprivate _keyIsNotValidMessage: KnockoutObservable<string>;\r\n\tprivate _address: KnockoutObservable<string>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\r\n\t\tthis._address = ko.observable('');\r\n\t\tthis._keyIsNotValidMessage = ko.observable('');\r\n\t\tthis._query = ko.computed(()=> `https://www.google.com/maps/embed/v1/place?q=${this._address()}&key=${GlobalManager.Instance.GetGlobal(GLOBALS.GOOGLE_MAPS_API_KEY)}`);\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n\t}\r\n\r\n\tprivate LoadData(){\r\n\r\n\t\tMapsStore.CheckGoogleMapsKey(GlobalManager.Instance.GetGlobal(GLOBALS.GOOGLE_MAPS_API_KEY))\r\n\t\t.then((data)=>{\r\n\t\t\tif(data){\r\n\t\t\t\tMapsStore.GetAddress(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tSubjectEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\t\t\t\tSubjectRecordId: this._form.GetScreen().GetRecordId(),\r\n\t\t\t\t\t\tControlId : this.GetControlId()\r\n\t\t\t\t\t}).then((data)=> this._address(data));\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis._keyIsNotValidMessage(NOTIFICATIONS.GOOGLE_KEY_IS_NOT_VALID);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n ApplyProperties() {\r\n }\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-map-marker\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-map-marker\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp subFormControl\\\" id=\\\"addButton\\\" data-bind=\\\"style: _style\\\"> <i class=\\\"fa fa-plus-circle\\\"></i> <span data-bind=\\\"text: _labels.ADD\\\"></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport ViewTemplate from 'Core/Controls/PortletSpace/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/PortletSpace/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/PortletSpace/Templates/Design.html';\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {Guid} from \"Core/Common/Guid\";\r\n\r\nko.templates['Core/Controls/PortletSpace/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/PortletSpace/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/PortletSpace/Templates/Design'] = DesignTemplate;\r\n\r\nexport class PortletSpace extends BaseControl {\r\n\tprivate _portletSpaceManager: KnockoutObservable<any>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\r\n\t\tthis._portletSpaceManager = ko.observable(null);\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tAfterRender(container: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(container);\r\n\r\n\t\tif (this._renderMode() === RenderModes.View) {\r\n\t\t\tconst portletSpaceManagerModule = require('Core/Portlets/Managers/Runtime/PortletSpaceManager');\r\n\r\n\t\t\tconst screen = this.GetForm().GetScreen();\r\n\t\t\tconst portletSpaceManager = new portletSpaceManagerModule.PortletSpaceManager({\r\n\t\t\t\tSubject: screen.IsDashboard ? null : {\r\n\t\t\t\t\tEntityId: screen.GetEntityId(),\r\n\t\t\t\t\tRecordId: screen.GetRecordId()\r\n\t\t\t\t},\r\n\t\t\t\tControl: {\r\n\t\t\t\t\tId: this._model().Id\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tportletSpaceManager.Load();\r\n\r\n\t\t\tthis._portletSpaceManager(portletSpaceManager);\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _portletSpaceManager --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-columns\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-columns\\\"></i> <!--ko text: Label--><!--/ko--> </label> </div>\";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {URL} from \"Core/Common/Url\";\r\nimport {ConfigureBulkEmailDto} from \"./Models/ConfigureBulkEmailDto\";\r\nimport {CreateNewGroupDto} from \"./Models/CreateNewGroupDto\";\r\n\r\nexport class BulkEmailStore {\r\n\tstatic GetConfig(subjectTableId: number, subjectRecordId: number, templateTableId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\turl: URL.BULK_EMAIL.GET_CONFIG,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t},\r\n\t\t\tparams: {groupTableId: subjectTableId, groupId: subjectRecordId, templateTableId: templateTableId}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic GetTemplates(entityId: number, templateTableId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\turl: URL.BULK_EMAIL.GET_TEMPLATES,\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: {groupTableId: entityId, templateTableId: templateTableId}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic Start(subjectTableId: number, subjectRecordId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\turl: URL.BULK_EMAIL.START,\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: {GroupTableId: subjectTableId, GroupId: subjectRecordId}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic Stop(subjectTableId: number, subjectRecordId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\turl: URL.BULK_EMAIL.STOP,\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: {GroupTableId: subjectTableId, GroupId: subjectRecordId}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic ConfigureBulkEmails(sendModel: ConfigureBulkEmailDto) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\turl: URL.BULK_EMAIL.CONFIGURE_BULK_EMAILS,\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: sendModel\r\n\t\t});\r\n\t}\r\n\r\n\tstatic CreateNewGroup(createModel: CreateNewGroupDto) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\turl: URL.BULK_EMAIL.CREATE_NEW_GROUP,\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: createModel\r\n\t\t});\r\n\t}\r\n}","export class ConfigureBulkEmailDto {\r\n\r\n\tconstructor(public GroupTableId: number,\r\n\t\t\t\tpublic GroupId: number,\r\n\t\t\t\tpublic MailFieldId: number,\r\n\t\t\t\tpublic TemplateId: number,\r\n\t\t\t\tpublic RequestTemplateId: number,\r\n\t\t\t\tpublic TemplateEntityId: number) {\r\n\t}\r\n}","export class CreateNewGroupDto {\r\n\r\n\tconstructor(public GroupTableId: number,\r\n\t\t\t\tpublic GroupId: number,\r\n\t\t\t\tpublic TemplateId: number) {\r\n\r\n\t}\r\n}","import {BulkEmailEntity} from \"./BulkEmailEntity\";\r\nimport {BulkEmailTemplate} from './BulkEmailTemplate';\r\n\r\nexport class BulkEmailConfig {\r\n\tMailFieldId: number;\r\n\tTemplateId: number;\r\n\tRequestTemplateId: number;\r\n\tProcessStatusId: number;\r\n\tTemplateEntityId: number;\r\n\tRegistered: boolean;\r\n\tRunning: boolean;\r\n\r\n\tSubjects: BulkEmailEntity[];\r\n\tTemplates: BulkEmailTemplate[];\r\n}","export class BulkEmailEntity {\r\n\tFields: BulkEmailField[];\r\n\r\n\tconstructor(public Id: number, public Name: string) {\r\n\t\tthis.Fields = [];\r\n\t}\r\n}\r\n\r\nexport class BulkEmailField {\r\n\tconstructor(public Id: number, public Name: string) {\r\n\t}\r\n}","export class BulkEmailTemplate {\r\n\tconstructor(public Id: number, public Name: string) {\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-envelope\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"bulk-email-control\\\" data-bind=\\\"click: $data.ShowBulkEmailHelp.bind($data)\\\"> <fieldset> <legend data-bind=\\\"text: _headerLabel\\\"></legend> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.RECIPIENTS --><!-- /ko --></label> <select class=\\\"form-control\\\" data-bind=\\\"options: _bulkEntities, optionsText: 'Name', value: _selectedBulkEmailEntity\\\"></select> </div> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.ADDRESS_FIELD --><!-- /ko --></label> <select class=\\\"form-control\\\" data-bind=\\\"options: _bulkFields, optionsText: 'Name', value: _selectedBulkEmailField\\\"></select> </div> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.MAILING_TEMPLATE --><!-- /ko --></label> <select class=\\\"form-control\\\" data-bind=\\\"options: _templates, optionsText: 'Name', value: _selectedTemplate\\\"></select> </div> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.REQUEST_TEMPLATE --><!-- /ko --></label> <select class=\\\"form-control\\\" data-bind=\\\"options: _templates, optionsText: 'Name', value: _selectedRequestTemplate\\\"></select> </div> <button class=\\\"btn btn-info\\\" data-bind=\\\"attr: {disabled: !_enabled()}, css: {disabled: !_enabled()}, click: $data.OnCopyClick.bind($data)\\\"> <i class=\\\"fa fa-files-o\\\"></i> <!-- ko text: _labels.COPY --><!-- /ko --> </button> <button class=\\\"btn btn-primary\\\" data-bind=\\\"attr: {disabled: !_enabled()}, css: {disabled: !_enabled()}, click: $data.OnConfigureClick.bind($data)\\\"> <i class=\\\"fa fa-cog\\\"></i> <!-- ko text: _labels.CONFIGURE --><!-- /ko --> </button> <button class=\\\"btn\\\" data-bind=\\\"attr: {disabled: !_enabled() || !_registered()}, css: {disabled: !_enabled() || !_registered(), 'btn-success': !_running(), 'btn-danger': _running()}, click: $data.OnRunningToggle.bind($data)\\\"> <span data-bind=\\\"if: _running\\\"> <i class=\\\"fa fa-stop\\\"></i> <!-- ko text: _labels.STOP--><!-- /ko --> </span> <span data-bind=\\\"ifnot: _running\\\"> <i class=\\\"fa fa-play\\\"></i> <!-- ko text: _labels.START--><!-- /ko --> </span> </button> </fieldset> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport {NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {SelectDialog, EVENTS as SELECT_DIALOG_EVENTS} from \"Core/Components/Dialogs/SelectDialog/SelectDialog\";\r\n\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\n\r\nimport {ComplexControl} from \"Core/Controls/ComplexControl/ComplexControl\";\r\nimport {RequiredFieldModel} from \"Core/Controls/ComplexControl/Models/RequiredFieldModel\";\r\nimport {FIELD_TYPES, TABLE_TYPES, DEFAULT_ICONS, RenderModes} from \"Core/Constant\";\r\n\r\nimport {BulkEmailStore} from \"./Store/BulkEmailStore\";\r\nimport {BulkEmailConfigDto} from \"./Store/Models/BulkEmailConfigDto\";\r\nimport {BulkEmailTemplateDto} from \"./Store/Models/BulkEmailTemplateDto\";\r\nimport {ConfigureBulkEmailDto} from \"./Store/Models/ConfigureBulkEmailDto\";\r\nimport {CreateNewGroupDto} from \"./Store/Models/CreateNewGroupDto\";\r\nimport {NewGroupDto} from \"./Store/Models/NewGroupDto\";\r\n\r\nimport {BulkEmailConfig} from \"./Models/BulkEmailConfig\";\r\nimport {BulkEmailEntity, BulkEmailField} from \"Core/Controls/BulkEmail/Models/BulkEmailEntity\";\r\nimport {BulkEmailTemplate} from \"Core/Controls/BulkEmail/Models/BulkEmailTemplate\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nimport ToolBarTemplate from 'Core/Controls/BulkEmail/Templates/ToolBar.html';\r\nimport HelpViewTemplate from 'Core/Controls/BulkEmail/Templates/HelpView.html';\r\nimport ViewTemplate from 'Core/Controls/BulkEmail/Templates/View.html';\r\nimport {LockManager} from \"../../Components/Locker/LockManager\";\r\n\r\nko.templates['Core/Controls/BulkEmail/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/BulkEmail/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/BulkEmail/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/BulkEmail/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/BulkEmail/Templates/Design'] = ComplexControl.designTemplate;\r\n\r\nexport class BulkEmail extends ComplexControl {\r\n private _subjectEntityId: number;\r\n private _subjectRecordId: number;\r\n private _headerLabel: KnockoutObservable<string>;\r\n private _bulkEntities: KnockoutObservableArray<BulkEmailEntity>;\r\n private _selectedBulkEmailEntity: KnockoutObservable<BulkEmailEntity>;\r\n\r\n private _bulkFields: KnockoutObservableArray<BulkEmailField>;\r\n private _selectedBulkEmailField: KnockoutObservable<BulkEmailField>;\r\n\r\n private _templates: KnockoutObservableArray<BulkEmailTemplate>;\r\n private _selectedTemplate: KnockoutObservable<BulkEmailTemplate>;\r\n private _selectedRequestTemplate: KnockoutObservable<BulkEmailTemplate>;\r\n\r\n private _registered: KnockoutObservable<boolean>;\r\n private _running: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._headerLabel = ko.observable(this._labels.BULK_EMAIL);\r\n this._bulkEntities = ko.observableArray([]);\r\n this._selectedBulkEmailEntity = ko.observable(null);\r\n\r\n this._bulkFields = ko.observableArray([]);\r\n this._selectedBulkEmailField = ko.observable(null);\r\n\r\n this._templates = ko.observableArray([]);\r\n this._selectedTemplate = ko.observable(null);\r\n this._selectedRequestTemplate = ko.observable(null);\r\n\r\n this._registered = ko.observable(false);\r\n this._running = ko.observable(false);\r\n\r\n this.Init();\r\n\r\n if (this._renderMode() === RenderModes.Design) {\r\n this.BindDesignEvents();\r\n }\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n SetValue(value: IControlValue): void {\r\n this._subjectEntityId = value.SubjectEntityId;\r\n this._subjectRecordId = value.SubjectRecordId;\r\n\r\n if (this._subjectRecordId) {\r\n this.GetConfig()\r\n .then(config => {\r\n if (config.Registered) {\r\n this.PrepareExistingConfiguration(config);\r\n } else {\r\n this.PrepareNewConfiguration(config);\r\n }\r\n\r\n this.BindRuntimeEvents();\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n }\r\n\r\n private Init() {\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.BulkMail));\r\n\r\n this._requiredFields([\r\n new RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('TEMPLATE', FIELD_TYPES.Document, TABLE_TYPES.Entity, null)\r\n ]);\r\n\r\n this.InitRequiredFields();\r\n this.RefreshHeaderLabel();\r\n }\r\n\r\n private BindDesignEvents() {\r\n this._model.subscribe(() => {\r\n this.RefreshHeaderLabel();\r\n });\r\n }\r\n\r\n private BindRuntimeEvents() {\r\n this._selectedBulkEmailEntity.subscribe(entity => {\r\n if (entity) {\r\n this._bulkFields(entity.Fields);\r\n this._selectedBulkEmailField(entity.Fields[0]);\r\n\r\n this.GetTemplates(entity.Id).then(templates => {\r\n this._templates(templates);\r\n this._selectedTemplate(templates[0]);\r\n this._selectedRequestTemplate(templates[0]);\r\n });\r\n }\r\n });\r\n }\r\n\r\n private RefreshHeaderLabel() {\r\n this._headerLabel(this.Name);\r\n }\r\n\r\n private GetConfig() {\r\n const deferred = P.defer<BulkEmailConfig>();\r\n\r\n const templateTableId = this.GetFieldModel().EntityId;\r\n BulkEmailStore.GetConfig(this._subjectEntityId, this._subjectRecordId, templateTableId)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(this.MapToConfig(result.ResultObject));\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetTemplates(entityId: number) {\r\n const templateTableId = this.GetFieldModel().EntityId;\r\n\r\n if (!templateTableId) {\r\n new Notifier().Warning(NOTIFICATIONS.TABLE_IS_NOT_SELECTED);\r\n return;\r\n }\r\n\r\n const deferred = P.defer<BulkEmailTemplate[]>();\r\n BulkEmailStore.GetTemplates(entityId, templateTableId)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n const templates = this.MapToTemplates(result.ResultObject);\r\n this._enabled(templates.length > 0);\r\n deferred.resolve(templates);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private MapToConfig(configDto: BulkEmailConfigDto) {\r\n const config = new BulkEmailConfig();\r\n\r\n config.MailFieldId = configDto.MailFieldId;\r\n config.TemplateId = configDto.TemplateId;\r\n config.RequestTemplateId = configDto.RequestTemplateId;\r\n config.ProcessStatusId = configDto.ProcessStatusId;\r\n config.TemplateEntityId = configDto.TemplateEntityId;\r\n config.Running = configDto.Running;\r\n config.Registered = configDto.Registered;\r\n\r\n config.Subjects = configDto.Subjects.map(entityDto => {\r\n const entity = new BulkEmailEntity(entityDto.Id, entityDto.TranslatedName || entityDto.Name);\r\n entity.Fields = entityDto.Fields && entityDto.Fields.map(fieldDto => new BulkEmailField(fieldDto.Id, fieldDto.TranslatedName || fieldDto.Name));\r\n return entity;\r\n });\r\n\r\n config.Templates = this.MapToTemplates(configDto.Templates);\r\n\r\n return config;\r\n }\r\n\r\n private MapToTemplates(templatesDto: BulkEmailTemplateDto[]) {\r\n return templatesDto.map(template => new BulkEmailTemplate(template.Id, template.TranslatedName || template.Name));\r\n }\r\n\r\n private PrepareNewConfiguration(config: BulkEmailConfig) {\r\n const currentEntity = config.Subjects[0];\r\n const currentField = currentEntity && currentEntity.Fields[0];\r\n const currentTemplate = config.Templates[0];\r\n const currentRequestTemplate = config.Templates[0];\r\n\r\n this._bulkEntities(config.Subjects);\r\n this._selectedBulkEmailEntity(currentEntity);\r\n\r\n this._bulkFields(currentEntity && currentEntity.Fields);\r\n this._selectedBulkEmailField(currentField);\r\n\r\n this._templates(config.Templates);\r\n this._selectedTemplate(currentTemplate);\r\n this._selectedRequestTemplate(currentRequestTemplate);\r\n\r\n this._registered(false);\r\n this._running(false);\r\n\r\n const enabled = !!(currentEntity && currentField && currentTemplate && currentRequestTemplate);\r\n this._enabled(enabled);\r\n }\r\n\r\n\r\n private PrepareExistingConfiguration(config: BulkEmailConfig) {\r\n const currentEntity = _.find(config.Subjects, subject => _.any(subject.Fields, field => field.Id === config.MailFieldId));\r\n const currentField = _.find(currentEntity.Fields, field => field.Id === config.MailFieldId);\r\n const currentTemplate = _.find(config.Templates, template => template.Id === config.TemplateId);\r\n const currentRequestTemplate = _.find(config.Templates, template => template.Id === config.RequestTemplateId);\r\n\r\n this._bulkEntities(config.Subjects);\r\n this._selectedBulkEmailEntity(currentEntity);\r\n\r\n this._bulkFields(currentEntity.Fields);\r\n this._selectedBulkEmailField(currentField);\r\n\r\n this._templates(config.Templates);\r\n this._selectedTemplate(currentTemplate);\r\n this._selectedRequestTemplate(currentRequestTemplate);\r\n\r\n this._registered(true);\r\n this._running(config.Running);\r\n\r\n const enabled = !!(currentEntity && currentField && currentTemplate && currentRequestTemplate);\r\n this._enabled(enabled);\r\n }\r\n\r\n private OnCopyClick() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n return;\r\n }\r\n\r\n const templates = this._templates().map(template => {\r\n return {\r\n Text: template.Name,\r\n Value: template.Id\r\n }\r\n });\r\n\r\n const dialog = new SelectDialog({\r\n Label: 'Select new template',\r\n Options: templates\r\n });\r\n\r\n dialog.On(SELECT_DIALOG_EVENTS.SAVE, this, eventArgs => this.CreateNewGroup(eventArgs.data.Value));\r\n\r\n dialog.Show();\r\n }\r\n\r\n private OnConfigureClick() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n return;\r\n }\r\n\r\n BlockUI.Block({Target: this._el});\r\n\r\n const mailFieldId = this._selectedBulkEmailField().Id;\r\n const templateId = this._selectedTemplate().Id;\r\n const requestTemplateId = this._selectedRequestTemplate().Id;\r\n const templateEntityId = this._selectedBulkEmailEntity().Id;\r\n\r\n const sendModel = new ConfigureBulkEmailDto(\r\n this._subjectEntityId,\r\n this._subjectRecordId,\r\n mailFieldId,\r\n templateId,\r\n requestTemplateId,\r\n templateEntityId\r\n );\r\n\r\n BulkEmailStore.ConfigureBulkEmails(sendModel)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n new Notifier().Success(NOTIFICATIONS.MAILING_CONFIGURED);\r\n this._registered(true);\r\n } else {\r\n new Notifier().Failed(result.ErrorMessage);\r\n }\r\n })\r\n .always(() => BlockUI.Unblock(this._el));\r\n }\r\n\r\n private OnRunningToggle() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n return;\r\n }\r\n\r\n BlockUI.Block({Target: this._el});\r\n\r\n const promise = this._running()\r\n ? BulkEmailStore.Stop(this._subjectEntityId, this._subjectRecordId)\r\n : BulkEmailStore.Start(this._subjectEntityId, this._subjectRecordId);\r\n\r\n promise.then(result => {\r\n if (result.IsSuccessfull) {\r\n this._running(!this._running());\r\n } else {\r\n new Notifier().Failed(result.ErrorMessage);\r\n }\r\n }).always(() => BlockUI.Unblock(this._el));\r\n }\r\n\r\n private CreateNewGroup(templateId: number) {\r\n BlockUI.Block();\r\n\r\n const createGroupPromise = BulkEmailStore.CreateNewGroup(new CreateNewGroupDto(\r\n this._subjectEntityId,\r\n this._subjectRecordId,\r\n templateId)\r\n );\r\n\r\n createGroupPromise\r\n .then(result => {\r\n const showScreenPromise = P.defer<NewGroupDto>();\r\n\r\n if (!result.IsSuccessfull) {\r\n showScreenPromise.reject({message: result.ErrorMessage});\r\n } else {\r\n const group: NewGroupDto = result.ResultObject;\r\n LockManager.Instance.TryLock(group.EntityId, group.RecordId)\r\n .then(() => showScreenPromise.resolve(group))\r\n .fail(error => showScreenPromise.reject(error));\r\n }\r\n\r\n return showScreenPromise.promise();\r\n }\r\n )\r\n .then((group: NewGroupDto) => this.ShowEditScreen(group)\r\n .then(screen => {\r\n if (!screen) {\r\n new Notifier($(this._el)).Warning(NOTIFICATIONS.EDIT_SCREEN_NOT_EXISTS);\r\n return;\r\n }\r\n screen.ShowInModal();\r\n })) \r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private ShowBulkEmailHelp(data, event): void {\r\n if (this._help.IsHelpButtonPressed()) {\r\n $(event.target).blur();\r\n this._help.ShowControlHelp(this);\r\n }\r\n }\r\n\r\n private async ShowEditScreen(group: NewGroupDto) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n return screenManager.GetEditScreen({\r\n EntityId: group.EntityId,\r\n RecordId: group.RecordId\r\n });\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"bulk-email-control\\\"> <fieldset> <legend><!-- ko text: _labels.BULK_EMAIL --><!-- /ko --></legend> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.RECIPIENTS --><!-- /ko --></label> <select class=\\\"form-control helpPageSelect\\\" disabled=\\\"disabled\\\"></select> </div> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.ADDRESS_FIELD --><!-- /ko --></label> <select class=\\\"form-control helpPageSelect\\\" disabled=\\\"disabled\\\"></select> </div> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.MAILING_TEMPLATE --><!-- /ko --></label> <select class=\\\"form-control helpPageSelect\\\" disabled=\\\"disabled\\\"></select> </div> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.REQUEST_TEMPLATE --><!-- /ko --></label> <select class=\\\"form-control helpPageSelect\\\" disabled=\\\"disabled\\\"></select> </div> <button class=\\\"btn btn-info\\\"> <i class=\\\"fa fa-files-o\\\"></i> <!-- ko text: _labels.COPY --><!-- /ko --> </button> <button class=\\\"btn btn-primary\\\"> <i class=\\\"fa fa-cog\\\"></i> <!-- ko text: _labels.CONFIGURE --><!-- /ko --> </button> <button class=\\\"btn btn-success\\\"> <i class=\\\"fa fa-play\\\"></i> <!-- ko text: _labels.START--><!-- /ko --> </button> </fieldset> </div>\";\n// Exports\nexport default code;","export enum JournalsState {\r\n NotExist,\r\n Deleted,\r\n Disabled,\r\n Ok\r\n}","export enum AccountsState {\r\n NotExist,\r\n Deleted,\r\n Disabled,\r\n NotLinkedToJournals,\r\n Ok\r\n}","import {Request} from 'Core/Common/Request';\r\n\r\nimport {IConvertToInvoiceParams} from \"./Models/IConvertToInvoiceParams\";\r\n\r\nexport class InvoicingStore {\r\n\tstatic CreateInvoices(params: IConvertToInvoiceParams) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FinancialApi/CreateInvoices',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t});\r\n\t}\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {FIELD_TYPES, TABLE_TYPES} from \"Core/Constant\";\r\n\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport {ComplexControl} from \"Core/Controls/ComplexControl/ComplexControl\";\r\nimport { RequiredFieldModel } from \"Core/Controls/ComplexControl/Models/RequiredFieldModel\";\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nimport {IControlValue} from \"../BaseControl/BaseControl\";\r\n\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {DEFAULT_ICONS} from \"Core/Constant\";\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\n\r\nimport InvoicingConfigJson from \"Core/Controls/Invoicing/Configs/invoicing-config.json\"\r\n\r\nimport ToolBarTemplate from \"Core/Controls/Invoicing/Templates/Toolbar.html\";\r\nimport ViewTemplate from \"Core/Controls/Invoicing/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/Invoicing/Templates/HelpView.html\";\r\nimport {InvoicingStore} from \"./Stores/InvoicingStore\";\r\nimport {BlockUI} from \"../../Common/BlockUi\";\r\nimport {Notifier} from \"../../Common/Notifier\";\r\n\r\nko.templates['Core/Controls/Invoicing/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Invoicing/Templates/Design'] = ComplexControl.designTemplate;\r\nko.templates['Core/Controls/Invoicing/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Invoicing/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport class InvoicingControl extends ComplexControl {\r\n private _avalableForScreen: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, InvoicingConfigJson);\r\n\r\n this._avalableForScreen = ko.observable(false);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0'\r\n };\r\n });\r\n\r\n this.Init();\r\n }\r\n\r\n SetValue(value: IControlValue) {\r\n if (!value.SubjectRecordId) return;\r\n\r\n const currentLifeStatus = value.RecordSpecsModel.LifeStatusInfo && value.RecordSpecsModel.LifeStatusInfo.Id;\r\n if (!currentLifeStatus) return;\r\n\r\n const validLifeStatus = this.GetModel().RecordLifeStatusId;\r\n\r\n if ((!validLifeStatus || currentLifeStatus === validLifeStatus) && !this.IsDisabledByCondition) {\r\n this._enabled(true);\r\n }\r\n }\r\n\r\n ConvertToInvoice() {\r\n if(this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n } else {\r\n const screen = this.GetForm().GetScreen();\r\n\r\n const entityId = screen.GetEntityId();\r\n const recordId = screen.GetRecordId();\r\n const controlId = this.GetModel().Id;\r\n\r\n BlockUI.Block();\r\n\r\n InvoicingStore.CreateInvoices({\r\n EntityId: entityId,\r\n RecordId: recordId,\r\n ControlId: controlId\r\n })\r\n .then(() => {\r\n this._enabled(!this.GetModel().RecordLifeStatusId);\r\n const attachedField = _.find(this.GetModel().Fields,\r\n (field: AttachedFieldModel) => field.EntityTypeName === TABLE_TYPES.Entity);\r\n const entityName = attachedField ? attachedField.EntityNameTranslation : '';\r\n\r\n new Notifier().Success(this._labels.RECORD_FOR_TABLE_CREATED.replace('{table}', entityName));\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n }\r\n\r\n private Init(): void {\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.Invoicing));\r\n\r\n this._requiredFields([\r\n new RequiredFieldModel('DOCUMENT_DATE', FIELD_TYPES.Date, TABLE_TYPES.Entity, null)\r\n ]);\r\n\r\n this.InitRequiredFields();\r\n\r\n this._model.subscribe(() => this.ApplyProperties());\r\n\r\n this.ApplyProperties();\r\n }\r\n\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n const availability = this.GeneralProperties.GetPropertyValue('Availability');\r\n if (availability.Value === 'OnScreen' || availability.Value === 'Both') {\r\n this._avalableForScreen(true);\r\n }\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-calculator\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _avalableForScreen --> <a class=\\\"btn btn-primary subFormControl btn-invoicing\\\" data-bind=\\\"tooltip: {content: Name}, css: {disabled: !_enabled()}, click: ConvertToInvoice, style: _style\\\"> <i class=\\\"fa fa-book\\\" aria-hidden=\\\"true\\\"></i> <span><!-- ko text: Name--><!-- /ko --></span> </a> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _avalableForScreen --> <a class=\\\"btn btn-primary subFormControl btn-invoicing\\\" data-bind=\\\"tooltip: {content: Name}, click: ConvertToInvoice, style: _style\\\"> <i class=\\\"fa fa-book\\\" aria-hidden=\\\"true\\\"></i> <span><!-- ko text: Name--><!-- /ko --></span> </a> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { IconModel } from 'Core/Controls/BaseControl/Models/IconModel';\r\n\r\nimport { SourceTableTypeViewModel } from \"./SourceTableTypeViewModel\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nexport class SourceTableViewModel {\r\n\tExpanded: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tpublic Id: number,\r\n\t\tpublic Name: string,\r\n\t\tpublic TranslatedName: string,\r\n\t\tpublic Icon: IconModel,\r\n\t\tpublic Types: SourceTableTypeViewModel[]) {\r\n\r\n\t\tthis.Expanded = ko.observable(true);\r\n\t}\r\n\r\n\tget TotalAmount() {\r\n\t\treturn this.Types.map(type => type.TotalAmount).reduce((sum, current) => sum + current, 0);\r\n\t}\r\n\r\n\tToggleExpansion() {\r\n\t\tthis.Expanded(!this.Expanded());\r\n\t}\r\n\r\n\tGetIconTemplate() {\r\n\t\tlet classes: string = this.Icon && this.Icon.IsImage ? 'height-20x20' : '';\r\n\t\treturn new Icon(this.Icon).GetIconTemplate(classes);\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport { InvoicingControlViewModel } from 'Core/Components/Dashboards/FinancialDashboard/Models/View/InvoicingControlViewModel';\r\n\r\nexport class SourceTableTypeViewModel {\r\n\tExpanded: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tpublic Id: number,\r\n\t\tpublic Name: string,\r\n\t\tpublic Controls: InvoicingControlViewModel[]) {\r\n\r\n\t\tthis.Expanded = ko.observable(true);\r\n\t}\r\n\r\n\tget TotalAmount() {\r\n\t\treturn this.Controls.map(control => control.RecordsAmount).reduce((sum, current) => sum + current, 0);\r\n\t}\r\n\r\n\tToggleExpansion() {\r\n\t\tthis.Expanded(!this.Expanded());\r\n\t}\r\n}\r\n","export class InvoicingControlViewModel {\r\n\tconstructor(\r\n\t\tpublic Id: number,\r\n\t\tpublic TableId: number,\r\n\t\tpublic Name: string,\r\n\t\tpublic RecordsAmount: number) {\r\n\t}\r\n}","export class FinancialProcessorRunnerViewModel {\r\n\tconstructor(\r\n\t\tpublic Id: number,\r\n\t\tpublic Name: string,\r\n\t\tpublic RecordsAmount: number) { }\r\n}","export class InvoicingResultsViewModel {\r\n\tconstructor(public Results: InvoicingResultViewModel[]) {\r\n\r\n\t}\r\n}\r\n\r\nexport class InvoicingResultViewModel {\r\n\tconstructor(\r\n\t\tpublic RecordId: number,\r\n\t\tpublic RecordName: string,\r\n\t\tpublic Result: string,\r\n\t\tpublic IsSuccessfull: boolean) {\r\n\r\n\t}\r\n}","import {JournalsState} from \"Core/Components/Dashboards/FinancialDashboard/Enums/JournalsState\";\r\nimport {AccountsState} from \"Core/Components/Dashboards/FinancialDashboard/Enums/AccountsState\";\r\n\r\nimport {AccountsViewModel} from \"./AccountsViewModel\";\r\nimport {SubAdministrationViewModel} from \"./SubAdministrationViewModel\";\r\n\r\nexport class LedgerViewModel {\r\n\tconstructor(\r\n\t\tpublic Accounts: AccountsViewModel,\r\n public SubAdministrations: SubAdministrationViewModel[],\r\n public JournalsState: JournalsState,\r\n public AccountsState: AccountsState) {\r\n }\r\n\r\n get AccountsBtnEnabled() {\r\n return this.JournalsState=== JournalsState.Ok && this.AccountsState === AccountsState.Ok;\r\n }\r\n\r\n get AccountDisabledReason() {\r\n switch (this.JournalsState) {\r\n case JournalsState.Deleted:\r\n return 'JOURNALS table is deleted';\r\n\r\n case JournalsState.Disabled:\r\n return 'JOURNALS table is disabled';\r\n\r\n case JournalsState.NotExist:\r\n return 'JOURNALS table does not exist';\r\n }\r\n\r\n switch (this.AccountsState) {\r\n case AccountsState.Deleted:\r\n return 'ACCOUNTS table is deleted';\r\n\r\n case AccountsState.Disabled:\r\n return 'ACCOUNTS table is disabled';\r\n\r\n case AccountsState.NotExist:\r\n return 'ACCOUNTS table does not exist';\r\n\r\n case AccountsState.NotLinkedToJournals:\r\n return 'ACCOUNTS not linked to JOURNALS';\r\n }\r\n\r\n return 'Will be implemented soon';\r\n }\r\n}","import {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nexport class AccountsViewModel {\r\n constructor(\r\n public TableId: number,\r\n public Icon: IconModel) {\r\n }\r\n\r\n GetIconTemplate() {\r\n let classes: string = this.Icon && this.Icon.IsImage ? 'height-20x20' : '';\r\n return new Icon(this.Icon).GetIconTemplate(classes);\r\n }\r\n}","import {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nexport class SubAdministrationViewModel {\r\n constructor(\r\n public TableId: number,\r\n public Name: string,\r\n public Icon: IconModel) {\r\n }\r\n\r\n GetIconTemplate() {\r\n let classes: string = this.Icon && this.Icon.IsImage ? 'height-20x20' : '';\r\n return new Icon(this.Icon).GetIconTemplate(classes);\r\n }\r\n}","export class FinancialProcessorViewModel {\r\n constructor(public Id: number, public Name: string, public TypeId: number) {\r\n }\r\n}","import {JournalsState} from \"../Enums/JournalsState\";\r\nimport {AccountsState} from \"../Enums/AccountsState\";\r\n\r\nimport { SourceTableDtoModel } from \"../Models/Dto/Response/SourceTableDtoModel\";\r\nimport { SourceTableTypeDtoModel } from \"../Models/Dto/Response/SourceTableTypeDtoModel\";\r\nimport { InvoicingControlDtoModel } from \"../Models/Dto/Response/InvoicingControlDtoModel\";\r\nimport { InvoicingResultsDtoModel, InvoicingResultDtoModel } from \"../Models/Dto/Response/InvoicingResultsDtoModel\";\r\nimport { FinancialProcessorRunnerDtoModel } from \"../Models/Dto/Response/FinancialProcessorRunnerDtoModel\";\r\nimport {LedgerDtoModel} from \"../Models/Dto/Response/LedgerDtoModel\";\r\nimport {AccountsDtoModel} from \"../Models/Dto/Response/AccountsDtoModel\";\r\nimport {SubAdministrationDtoModel} from \"../Models/Dto/Response/SubAdministrationDtoModel\";\r\nimport {ReadyForProcessingDataDtoModel} from \"../Models/Dto/Response/ReadyForProcessingDataDtoModel\";\r\nimport {FinancialProcessorDtoModel} from \"../Models/Dto/Response/FinacialProcessorDtoModel\";\r\n\r\nimport { SourceTableViewModel } from \"../Models/View/SourceTableViewModel\";\r\nimport { SourceTableTypeViewModel } from \"../Models/View/SourceTableTypeViewModel\";\r\nimport { InvoicingControlViewModel } from \"../Models/View/InvoicingControlViewModel\";\r\nimport { FinancialProcessorRunnerViewModel } from \"../Models/View/FinancialProcessorRunnerViewModel\";\r\nimport { InvoicingResultsViewModel, InvoicingResultViewModel } from \"../Models/View/InvoicingResultsViewModel\";\r\nimport {LedgerViewModel} from \"../Models/View/LedgerViewModel\";\r\nimport {AccountsViewModel} from \"../Models/View/AccountsViewModel\";\r\nimport {SubAdministrationViewModel} from \"../Models/View/SubAdministrationViewModel\";\r\nimport {ReadyForProcessingDataViewModel} from \"../Models/View/ReadyForProcessingDataViewModel\";\r\nimport {ReadyForInvoicingDataDtoModel} from \"../Models/Dto/Response/ReadyForInvoicingDataDtoModel\";\r\nimport {ReadyForInvoicingDataViewModel} from \"../Models/View/ReadyForInvoicingDataViewModel\";\r\nimport {FinancialProcessorViewModel} from \"../Models/View/FinancialProcessorViewModel\";\r\n\r\nexport class FinancialDashboardMappingProfile {\r\n\tstatic MapToSourceTableViewModel(dtoModel: SourceTableDtoModel): SourceTableViewModel {\r\n\t\treturn new SourceTableViewModel(\r\n\t\t\tdtoModel.Id,\r\n\t\t\tdtoModel.Name,\r\n\t\t\tdtoModel.TranslatedName,\r\n\t\t\tdtoModel.Icon,\r\n\t\t\tdtoModel.Types.map(sourceTableType => this.MapToSourceTableTypeViewModel(sourceTableType, dtoModel.Id))\r\n\t\t);\r\n\t}\r\n\r\n\tstatic MapToSourceTableTypeViewModel(dtoModel: SourceTableTypeDtoModel, tableId: number): SourceTableTypeViewModel {\r\n\t\treturn new SourceTableTypeViewModel(\r\n\t\t\tdtoModel.Id,\r\n\t\t\tdtoModel.Name,\r\n\t\t\tdtoModel.Controls.map(invoicingControl => this.MapToInvoicingControlViewModel(invoicingControl, tableId))\r\n\t\t);\r\n\t}\r\n\r\n\tstatic MapToInvoicingControlViewModel(dtoModel: InvoicingControlDtoModel, tableId: number): InvoicingControlViewModel {\r\n\t\treturn new InvoicingControlViewModel(dtoModel.Id, tableId, dtoModel.Name, dtoModel.RecordsAmount);\r\n\t}\r\n\r\n\tstatic MapToFinancialProcessorRunner(dtoModel: FinancialProcessorRunnerDtoModel): FinancialProcessorRunnerViewModel {\r\n\t\treturn new FinancialProcessorRunnerViewModel(dtoModel.Id, dtoModel.Name, dtoModel.RecordsAmount);\r\n\t}\r\n\r\n\tstatic MapToLedgerViewModel(dtoModel: LedgerDtoModel, journalsState: JournalsState, accountsState: AccountsState): LedgerViewModel {\r\n\t\treturn new LedgerViewModel(\r\n\t\t\tthis.MapToAccountsViewModel(dtoModel.Accounts),\r\n\t\t\tdtoModel.SubAdministrations.map(subAdministration => this.MapToSubAdministrationViewModel(subAdministration)),\r\n\t\t\tjournalsState,\r\n\t\t\taccountsState\r\n\t\t);\r\n\t}\r\n\r\n\tstatic MapToAccountsViewModel(dtoModel: AccountsDtoModel): AccountsViewModel {\r\n\t\treturn new AccountsViewModel(dtoModel.TableId, dtoModel.Icon);\r\n\t}\r\n\r\n\tstatic MapToSubAdministrationViewModel(dtoModel: SubAdministrationDtoModel): SubAdministrationViewModel {\r\n\t\treturn new SubAdministrationViewModel(dtoModel.TableId, dtoModel.Name, dtoModel.Icon);\r\n\t}\r\n\r\n\tstatic MapToInvoicingResultsViewModel(dtoModel: InvoicingResultsDtoModel): InvoicingResultsViewModel {\r\n\t\treturn new InvoicingResultsViewModel(\r\n\t\t\tdtoModel.Results.map(invoicingResult => this.MapToInvoicingResultViewModel(invoicingResult))\r\n\t\t);\r\n\t}\r\n\r\n\tstatic MapToInvoicingResultViewModel(dtoModel: InvoicingResultDtoModel): InvoicingResultViewModel {\r\n\t\treturn new InvoicingResultViewModel(\r\n\t\t\tdtoModel.RecordId,\r\n\t\t\tdtoModel.RecordName,\r\n\t\t\tdtoModel.Result,\r\n\t\t\tdtoModel.IsSuccessfull\r\n\t\t);\r\n\t}\r\n\r\n\tstatic MapToReadyForInvoicingData(dtoModel: ReadyForInvoicingDataDtoModel): ReadyForInvoicingDataViewModel {\r\n\t\treturn dtoModel;\r\n\t}\r\n\r\n static MapToReadyForProcessingData(dtoModel: ReadyForProcessingDataDtoModel): ReadyForProcessingDataViewModel {\r\n return dtoModel;\r\n }\r\n\r\n static MapToFinancialProcessor(dtoModel: FinancialProcessorDtoModel) {\r\n\t\treturn new FinancialProcessorViewModel(dtoModel.Id, dtoModel.Name, dtoModel.TypeId);\r\n\t}\r\n}","import { Event } from 'Core/Common/Event';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport { IReadyForInvoicingParams } from './Params/IReadyForInvoicingParams';\r\n\r\nimport { IReadyForInvoicingEventData } from './Events/IReadyForInvoicingEventData';\r\n\r\nimport { SourceTableViewModel } from 'Core/Components/Dashboards/FinancialDashboard/Models/View/SourceTableViewModel';\r\nimport { InvoicingControlViewModel } from 'Core/Components/Dashboards/FinancialDashboard/Models/View/InvoicingControlViewModel';\r\n\r\nimport { FinancialDashboardMappingProfile } from 'Core/Components/Dashboards/FinancialDashboard/Mappings/FinancialDashboardMappings';\r\n\r\nimport Template from 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicing/Templates/Template.html';\r\nimport NoControlsTemplate from 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicing/Templates/NoControlsTemplate.html';\r\n\r\nexport class ReadyForInvoicing extends Event {\r\n\tprivate _labels = LABELS;\r\n\r\n\tSourceTables: SourceTableViewModel[];\r\n\r\n\tconstructor(params: IReadyForInvoicingParams) {\r\n\t\tsuper();\r\n\r\n\t\tthis.Init(params)\r\n\t}\r\n\r\n\tprivate Init(params: IReadyForInvoicingParams) {\r\n\t\tthis.SourceTables = params.SourceTables.map(sourceTable => FinancialDashboardMappingProfile.MapToSourceTableViewModel(sourceTable));\r\n\t}\r\n\r\n\tOnInvoiceBtnClick(control: InvoicingControlViewModel) {\r\n\t\tconst eventData: IReadyForInvoicingEventData = { ControlId: control.Id, TableId: control.TableId };\r\n\t\tthis.Trigger('INVOICING_REQUESTED', eventData);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\tif (this.SourceTables.length === 0) {\r\n\t\t\treturn NoControlsTemplate;\r\n\t\t}\r\n\r\n\t\treturn Template;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"splash-message text-center\\\" data-bind=\\\"text: _labels.NO_CONTROLS_OF_TYPE_INVOICING\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko foreach: SourceTables --> <div class=\\\"portlet body-space box blue-hoki\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span> <!-- ko template: {html: $data.GetIconTemplate.bind($data)} --> <!-- /ko --> </span> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: TranslatedName ? TranslatedName : Name\\\"></span> <span class=\\\"badge\\\" data-bind=\\\"visible: !Expanded(), text: TotalAmount\\\"></span> </div> <div class=\\\"tools\\\"> <a class=\\\"collapse\\\" data-bind=\\\"click: ToggleExpansion\\\"></a> </div> </div> <div class=\\\"portlet-body\\\"> <!-- ko foreach: Types --> <div class=\\\"portlet box blue\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject\\\" data-bind=\\\"text: Name\\\"></span> <span class=\\\"badge\\\" data-bind=\\\"visible: !Expanded(), text: TotalAmount\\\"></span> </div> <div class=\\\"tools\\\"> <a class=\\\"collapse\\\" data-bind=\\\"click: ToggleExpansion\\\"></a> </div> </div> <div class=\\\"portlet-body\\\"> <!-- ko foreach: Controls --> <button class=\\\"btn btn-block blue portletItem\\\" data-bind=\\\"click: $parents[2].OnInvoiceBtnClick.bind($parents[2], $data)\\\"> <span class=\\\"textBox\\\"> <span data-bind=\\\"text: Name\\\"></span> </span> <span class=\\\"badge\\\" data-bind=\\\"text: RecordsAmount\\\"></span> </button> <!-- /ko --> </div> </div> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {IReadyForProcessingParams} from './Params/IReadyForProcessingParams';\r\n\r\nimport {ISendToFPEventData} from './Events/ISendToFPEventData';\r\n\r\nimport {JournalsState} from \"Core/Components/Dashboards/FinancialDashboard/Enums/JournalsState\";\r\nimport {AccountsState} from \"Core/Components/Dashboards/FinancialDashboard/Enums/AccountsState\";\r\n\r\nimport {FinancialProcessorRunnerViewModel} from 'Core/Components/Dashboards/FinancialDashboard/Models/View/FinancialProcessorRunnerViewModel';\r\n\r\nimport {FinancialDashboardMappingProfile} from 'Core/Components/Dashboards/FinancialDashboard/Mappings/FinancialDashboardMappings';\r\n\r\nimport Template\r\n from 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForProcessing/Templates/Template.html';\r\n\r\nexport class ReadyForProcessing extends Event {\r\n private _labels = LABELS;\r\n\r\n Expanded: KnockoutObservable<boolean>;\r\n\r\n JournalsState: JournalsState;\r\n AccountsState: AccountsState;\r\n FinancialProcessorRunners: FinancialProcessorRunnerViewModel[];\r\n\r\n constructor(params: IReadyForProcessingParams) {\r\n super();\r\n\r\n this.Expanded = ko.observable(true);\r\n\r\n this.Init(params);\r\n }\r\n\r\n get IsAvailable() {\r\n return this.JournalsState === JournalsState.Ok && this.AccountsState === AccountsState.Ok;\r\n }\r\n\r\n get NotAvailableReason() {\r\n switch (this.JournalsState) {\r\n case JournalsState.Deleted:\r\n return 'JOURNALS table is deleted';\r\n\r\n case JournalsState.Disabled:\r\n return 'JOURNALS table is disabled';\r\n\r\n case JournalsState.NotExist:\r\n return 'JOURNALS table does not exist';\r\n }\r\n\r\n switch (this.AccountsState) {\r\n case AccountsState.Deleted:\r\n return 'ACCOUNTS table is deleted';\r\n\r\n case AccountsState.Disabled:\r\n return 'ACCOUNTS table is disabled';\r\n\r\n case AccountsState.NotExist:\r\n return 'ACCOUNTS table does not exist';\r\n\r\n case AccountsState.NotLinkedToJournals:\r\n return 'ACCOUNTS not linked to JOURNALS';\r\n }\r\n\r\n return null;\r\n }\r\n\r\n get TotalAmount() {\r\n return this.FinancialProcessorRunners.map(runner => runner.RecordsAmount).reduce((sum, current) => sum + current, 0);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n ToggleExpansion() {\r\n this.Expanded(!this.Expanded());\r\n }\r\n\r\n private Init(params: IReadyForProcessingParams) {\r\n this.FinancialProcessorRunners = params.FinancialProcessorRunners.map(runner => FinancialDashboardMappingProfile.MapToFinancialProcessorRunner(runner));\r\n this.JournalsState = params.JournalsState;\r\n this.AccountsState = params.AccountsState;\r\n }\r\n\r\n OnSendToFPBtnClick(runner: FinancialProcessorRunnerViewModel) {\r\n const eventData: ISendToFPEventData = {QueryResultId: runner.Id, PageNumber: 1};\r\n this.Trigger('SEND_TO_FP_REQUESTED', eventData);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet box yellow\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: _labels.INVOICED\\\"></span> <span class=\\\"badge\\\" data-bind=\\\"visible: !Expanded(), text: TotalAmount\\\"></span> </div> </div> <div class=\\\"portlet-body\\\"> <!--ko if: IsAvailable--> <!-- ko foreach: FinancialProcessorRunners --> <button class=\\\"btn btn-block yellow portletItem\\\" data-bind=\\\"click: $parent.OnSendToFPBtnClick.bind($parent, $data)\\\"> <span class=\\\"textBox\\\"> <span data-bind=\\\"text: Name\\\"></span> </span> <span class=\\\"badge\\\" data-bind=\\\"text: RecordsAmount\\\"></span> </button> <!-- /ko --> <!--/ko--> <!--ko ifnot: IsAvailable--> <div class=\\\"splash-message\\\" data-bind=\\\"text: NotAvailableReason\\\"></div> <!--/ko--> </div> </div> \";\n// Exports\nexport default code;","import {Event} from \"Core/Common/Event\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {ILedgerParams} from \"./Params/ILedgerParams\";\r\n\r\nimport {FinancialDashboardMappingProfile} from \"Core/Components/Dashboards/FinancialDashboard/Mappings/FinancialDashboardMappings\";\r\n\r\nimport {LedgerViewModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/View/LedgerViewModel\";\r\nimport {SubAdministrationViewModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/View/SubAdministrationViewModel\";\r\n\r\nimport Template\r\n from 'Core/Components/Dashboards/FinancialDashboard/Components/Ledger/Templates/Template.html';\r\n\r\nexport class Ledger extends Event {\r\n private _labels = LABELS;\r\n\r\n Ledger: LedgerViewModel;\r\n\r\n constructor(params: ILedgerParams) {\r\n super();\r\n\r\n this.Init(params);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AccountsBtnClicked() {\r\n }\r\n\r\n SubAdminBtnClicked(subAdministration: SubAdministrationViewModel) {\r\n }\r\n\r\n private Init(params: ILedgerParams) {\r\n this.Ledger = FinancialDashboardMappingProfile.MapToLedgerViewModel(params.Ledger, params.JournalsState, params.AccountsState);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet body-space box purple\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: _labels.LEDGER\\\"></span> </div> </div> <div class=\\\"portlet-body\\\"> <!--ko with: Ledger--> <button class=\\\"btn btn-block uppercase purple disabled\\\" data-bind=\\\"\\r\\n tooltip: {content: AccountDisabledReason},\\r\\n click: $parent.AccountsBtnClicked.bind($parent)\\r\\n \\\"> <span> <!-- ko template: {html: Accounts.GetIconTemplate.bind(Accounts)} --><!-- /ko --> </span> <span data-bind=\\\"text: $parent._labels.ACCOUNTS\\\"></span> </button> <!--ko foreach: SubAdministrations--> <button class=\\\"btn btn-block purple uppercase disabled\\\" data-bind=\\\"\\r\\n tooltip: {content: $parent.AccountDisabledReason},\\r\\n click: $parents[1].SubAdminBtnClicked.bind($parents[1], $data)\\\"> <span> <!-- ko template: {html: $data.GetIconTemplate.bind($data)} --><!-- /ko --> </span> <span data-bind=\\\"text: Name\\\"></span> </button> <!--/ko--> <!--/ko--> </div> </div>\";\n// Exports\nexport default code;","import {CONTROL_TYPES, RenderModes} from \"Core/Constant\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport {IFinancialAPIParams} from \"./Params/IFinancialAPIParams\";\r\n\r\nimport {GenericButton} from \"Core/Controls/GenericButton/GenericButton\";\r\n\r\nimport Template from './Templates/Template.html';\r\nimport DesignTemplate from './Templates/DesignTemplate.html';\r\nimport NoControlsTemplate from './Templates/NoControlsTemplate.html';\r\nimport {LABELS} from \"../../../../Translation/Locales\";\r\n\r\nexport class FinancialAPI extends Event {\r\n private _renderMode: RenderModes;\r\n private _financialButtons: GenericButton[];\r\n private _labels = LABELS;\r\n\r\n constructor(params: IFinancialAPIParams) {\r\n super();\r\n\r\n this._renderMode = params.RenderMode;\r\n this._financialButtons = params.RenderMode === RenderModes.View ? params.FinancialButtons : [];\r\n }\r\n\r\n get ButtonsPresent() {\r\n return this._financialButtons.length > 0;\r\n }\r\n\r\n get NoControlsMessage() {\r\n return `No controls of type ${CONTROL_TYPES.GenericButton}`\r\n }\r\n\r\n GetTemplate() {\r\n if (this._renderMode === RenderModes.Design) {\r\n return DesignTemplate;\r\n }\r\n\r\n return Template;\r\n }\r\n\r\n GetNoControlsTemplate() {\r\n return NoControlsTemplate;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet body-space box red\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: _labels.FINANCIAL\\\"></span> </div> </div> <div class=\\\"portlet-body\\\" style=\\\"display:none\\\"> <div class=\\\"financial-button\\\"> <a href=\\\"#\\\" class=\\\"btn red\\\"> Import from Exact <i class=\\\"fa fa-cloud-download\\\"></i> </a> </div> <div class=\\\"financial-button\\\"> <a href=\\\"#\\\" class=\\\"btn red\\\"> Export to Exact <i class=\\\"fa fa-cloud-upload\\\"></i> </a> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: ButtonsPresent--> <div class=\\\"portlet body-space box red\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: _labels.FINANCIAL\\\"></span> </div> </div> <div class=\\\"portlet-body\\\"> <!--ko foreach: _financialButtons--> <div class=\\\"financial-button\\\"> <!--ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)}--> <!--/ko--> </div> <!--/ko--> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"splash-message text-center\\\" data-bind=\\\"text: NoControlsMessage\\\"></div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport { Event } from \"Core/Common/Event\";\r\nimport { Modal } from \"Core/Common/Modal\";\r\n\r\nimport { InvoicingResultsDtoModel } from 'Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/InvoicingResultsDtoModel';\r\n\r\nimport { InvoicingResultsViewModel } from 'Core/Components/Dashboards/FinancialDashboard/Models/View/InvoicingResultsViewModel';\r\n\r\nimport { FinancialDashboardMappingProfile } from 'Core/Components/Dashboards/FinancialDashboard/Mappings/FinancialDashboardMappings';\r\n\r\nimport Template from 'Core/Components/Dashboards/FinancialDashboard/Components/InvoicingResults/Templates/Template.html';\r\n\r\nko.templates['Core/Components/Dashboards/FinancialDashboard/Components/InvoicingResults/Templates/Template'] = Template;\r\n\r\nexport class InvoicingResults extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _model: InvoicingResultsViewModel;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(model: InvoicingResultsDtoModel) {\r\n\t\tsuper();\r\n\r\n\t\tthis._model = FinancialDashboardMappingProfile.MapToInvoicingResultsViewModel(model);\r\n\t}\r\n\r\n\tShow() {\r\n\t\tthis._modal = new Modal();\r\n\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Components/Dashboards/FinancialDashboard/Components/InvoicingResults/Templates/Template';\r\n\t}\r\n\r\n\tAfterRender() {\r\n\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _model --> <h2 data-bind=\\\"text: $parent._labels.RESULTS\\\"></h2> <table class=\\\"table table-striped table-hover\\\"> <thead> <tr> <th></th> <th data-bind=\\\"text: $parent._labels.ID\\\"></th> <th data-bind=\\\"text: $parent._labels.NAME\\\"></th> <th data-bind=\\\"text: $parent._labels.MESSAGE\\\"></th> </tr> </thead> <tbody data-bind=\\\"foreach: Results\\\"> <tr> <td> <!-- ko if: IsSuccessfull --> <div class=\\\"alert alert-success\\\" data-bind=\\\"text: $parents[1]._labels.SUCCESSFUL\\\"></div> <!-- /ko --> <!-- ko ifnot: IsSuccessfull --> <div class=\\\"alert alert-danger\\\" data-bind=\\\"text: $parents[1]._labels.ERRORS\\\"></div> <!-- /ko --> </td> <td> <strong data-bind=\\\"text: RecordId\\\"></strong> </td> <td> <strong data-bind=\\\"text: RecordName\\\"></strong> </td> <td> <strong data-bind=\\\"text: Result\\\"></strong> </td> </tr> </tbody> </table> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport 'pubsub';\r\n\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport {SearchScreen} from \"Core/Screens/SearchScreen/SearchScreen\";\r\n\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {SortModel} from \"Core/Controls/Grid/Models/SortModel\";\r\n\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\n\r\nimport {Toolbar} from \"Core/Controls/Grid/Toolbar/Toolbar\";\r\n\r\nimport {ViewModes} from \"Core/Controls/Grid/BaseGrid/Enums/ViewModes\";\r\n\r\nimport {EVENTS as PAGINATOR_EVENTS} from \"Core/Components/Paginator/Constants\";\r\n\r\nimport {ReadyForProcessingDataDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/ReadyForProcessingDataDtoModel\";\r\nimport {ISendToFPDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Request/ISendToFPDtoModel\";\r\n\r\nimport {FinancialDashboardMappingProfile} from \"Core/Components/Dashboards/FinancialDashboard/Mappings/FinancialDashboardMappings\";\r\n\r\nimport {FinancialProcessorViewModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/View/FinancialProcessorViewModel\";\r\n\r\nimport {IReadyForProcessingDataParams} from \"./Params/IReadyForProcessingDataParams\";\r\n\r\nimport Template\r\n from 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForProcessingData/Templates/Template.html';\r\n\r\nko.templates['Core/Components/Dashboards/FinancialDashboard/Components/ReadyForProcessingData/Templates/Template'] = Template;\r\n\r\nexport class ReadyForProcessingData extends Event {\r\n private _labels = LABELS;\r\n\r\n private _modal: Modal;\r\n\r\n private _selectProcessorFromSearch: KnockoutObservable<boolean>;\r\n private _financialProcessors: KnockoutObservableArray<FinancialProcessorViewModel>;\r\n private _financialProcessor: KnockoutObservable<FinancialProcessorViewModel>;\r\n\r\n private _searchPhrase: KnockoutObservable<string>;\r\n\r\n private _grid: BaseGrid;\r\n private _sort: SortModel[];\r\n private _paginationToolbar: Toolbar;\r\n\r\n constructor(private _params: IReadyForProcessingDataParams) {\r\n super();\r\n\r\n this._modal = new Modal();\r\n\r\n this._selectProcessorFromSearch = ko.observable(true);\r\n this._financialProcessors = ko.observableArray([]);\r\n this._financialProcessor = ko.observable(null);\r\n\r\n this._searchPhrase = ko.observable(null);\r\n\r\n this._paginationToolbar = this.BuildPaginationToolbar();\r\n\r\n this._grid = new BaseGrid({\r\n isPrioritiesDisabled: true,\r\n isQueryResultGrid: true,\r\n isEnableSelectRecord: ko.observable(true),\r\n enabledFavorite: false\r\n });\r\n this._sort = [];\r\n\r\n this._grid.On(EVENTS.SORT, this, eventArgs => {\r\n this._sort = eventArgs.data.SortColumns;\r\n this.LoadGridData(1);\r\n });\r\n\r\n this._grid.On(EVENTS.OPEN_HYPERLINK, this, eventArgs => {\r\n const data = _.clone(eventArgs.data);\r\n data.IsOpenInModal = true;\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n this._financialProcessor = ko.observable(null);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForProcessingData/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Show() {\r\n this.LoadFinancialProcessors();\r\n this.LoadGridData(1)\r\n .then(() => this._modal.Show());\r\n }\r\n\r\n SearchFinancialProcessor() {\r\n const searchScreen = new SearchScreen({\r\n SearchTerm: '',\r\n EntityName: 'SYS_QUEUES',\r\n ButtonAdd: false,\r\n CloseAfterSelectingRecord: false\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n const selectedRecord = eventArgs.data;\r\n\r\n const desiredQueueType = 'Financial';\r\n if (selectedRecord.TypeName !== desiredQueueType) {\r\n new Notifier().Warning(`Please, select a queue of type ${desiredQueueType}`);\r\n return;\r\n }\r\n\r\n const selectedFinancialProcessor = new FinancialProcessorViewModel(selectedRecord.RecordId, selectedRecord.Name, selectedRecord.TypeId);\r\n this._financialProcessor(selectedFinancialProcessor);\r\n\r\n searchScreen.Close();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n OnStartProcessing() {\r\n const selectedRecords = this._grid.GetSelectRecords().map(row => row.RecordId);\r\n\r\n const validationError = this.ValidateProcessor() || this.ValidateSelectedRecords(selectedRecords);\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n this.SendToFinancialProcessor({\r\n FinancialProcessorId: this._financialProcessor().Id,\r\n QueryResultId: this._params.QueryResultId,\r\n SelectedRecords: selectedRecords\r\n });\r\n }\r\n\r\n private BuildPaginationToolbar() {\r\n const toolbar = new Toolbar(\r\n false,\r\n false,\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n null,\r\n null,\r\n ko.observable(false),\r\n ko.observable(true),\r\n null,\r\n false,\r\n false,\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n true,\r\n false,\r\n []\r\n );\r\n\r\n toolbar.Paginator().On(PAGINATOR_EVENTS.CHANGE, this, eventArgs => this.LoadGridData(eventArgs.data.pageNumber));\r\n\r\n return toolbar;\r\n }\r\n\r\n private LoadFinancialProcessors() {\r\n const maxDropdownItemsAmount = +GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT);\r\n this._params.Store.GetFinancialProcessors({Amount: maxDropdownItemsAmount, PageNumber: 1})\r\n .then(pagedResult => {\r\n const financialProcessors = pagedResult.Items.map(financialProcessor => FinancialDashboardMappingProfile.MapToFinancialProcessor(financialProcessor));\r\n this._financialProcessors(financialProcessors);\r\n this._selectProcessorFromSearch(pagedResult.TotalRecords > pagedResult.Items.length);\r\n });\r\n }\r\n\r\n private LoadGridData(pageNumber: number) {\r\n const params = {\r\n PageNumber: pageNumber,\r\n Query: this._params.QueryExpression,\r\n RecordsPerPage: this._params.RecordsPerPage,\r\n ViewMode: ViewModes.Query,\r\n RecordId: 0,\r\n FilterByOwners: false,\r\n SearchPhrase: this._searchPhrase(),\r\n Sort: this._sort\r\n };\r\n\r\n BlockUI.Block();\r\n\r\n const getDataPromise = this._params.Store.GetReadyForProcessingData(params);\r\n\r\n getDataPromise\r\n .then(data => this.SetGridData(pageNumber, data))\r\n .fail((error) => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n\r\n return getDataPromise;\r\n }\r\n\r\n private SetGridData(pageNumber: number, data: ReadyForProcessingDataDtoModel) {\r\n this._grid.SetData(FinancialDashboardMappingProfile.MapToReadyForProcessingData(data), true);\r\n\r\n this._paginationToolbar.Paginator().PageNumber = pageNumber;\r\n this._paginationToolbar.Paginator().RecordsPerPage = this._params.RecordsPerPage;\r\n this._paginationToolbar.Paginator().TotalRecords = data.TotalRecords;\r\n this._paginationToolbar.Enable();\r\n }\r\n\r\n private SendToFinancialProcessor(sendToFPDtoModel: ISendToFPDtoModel) {\r\n BlockUI.Block();\r\n\r\n this._params.Store.SendToFinancialProcessor(sendToFPDtoModel)\r\n .then(() => {\r\n this.Trigger('FINANCIAL_PROCESSING_STARTED');\r\n this._modal.Close();\r\n })\r\n .fail(error => this.Trigger('FINANCIAL_PROCESSING_FAILED', {error: error}))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private ValidateProcessor() {\r\n if (!this._financialProcessor()) {\r\n return 'Please select Financial Processor';\r\n }\r\n }\r\n\r\n private ValidateSelectedRecords(selectedRecords: number[]) {\r\n if (selectedRecords.length === 0) {\r\n return 'Please select records to process';\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ready-for-processing-data\\\"> <div class=\\\"actionBarSubForm\\\"> <h3 class=\\\"ready-for-processing-data__title\\\" data-bind=\\\"text: _labels.READY_FOR_PROCESSING_DATA\\\"></h3> <div class=\\\"clearfix\\\"> <div class=\\\"dropdown-search-wrapper pull-left\\\"> <div class=\\\"dropdown-wraper\\\"> <!--ko if: _selectProcessorFromSearch--> <div data-bind=\\\"click: $data.SearchFinancialProcessor.bind($data)\\\" class=\\\"form-control input-medium\\\"> <!--ko if: _financialProcessor--> <span data-bind=\\\"text: _financialProcessor().Name\\\"></span> <!--/ko--> <!--ko ifnot: _financialProcessor--> <span data-bind=\\\"text: _labels.SELECT_FINANCIAL_PROCESSOR + '...'\\\"></span> <!--/ko--> </div> <div class=\\\"dropdown-controls\\\"> <span data-bind=\\\"click: $data.SearchFinancialProcessor.bind($data)\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> </div> <!--/ko--> <!--ko ifnot: _selectProcessorFromSearch--> <div class=\\\"dropdown-wraper\\\"> <select class=\\\"form-control input-medium\\\" data-bind=\\\"options: _financialProcessors, optionsText: 'Name', value: _financialProcessor\\\"></select> </div> <!--/ko--> <button type=\\\"button\\\" class=\\\"btn btn-success margin-l-5px\\\" data-bind=\\\"click: OnStartProcessing\\\"> <i class=\\\"fa fa-check\\\"></i> <!--ko text: _labels.PROCESS--><!--/ko--> </button> </div> </div> <div class=\\\"pull-right\\\"> <input type=\\\"text\\\" class=\\\"subFormControl input-medium\\\" data-bind=\\\"textInput: _searchPhrase, searchExtention: {search: $data.LoadGridData.bind($data, 1)}, attr: { placeholder: _labels.SEARCH }\\\"> </div> </div> </div> <div class=\\\"grid-container box-shadow-wrapper\\\"> <!-- ko with: _grid --> <div class=\\\"table-scrollable\\\"> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"grid-pagination\\\"> <!-- ko with: _paginationToolbar --> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {IReadyForInvoicingDataParams} from \"./Params/IReadyForInvoicingDataParams\";\r\n\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {Toolbar} from \"Core/Controls/Grid/Toolbar/Toolbar\";\r\nimport {SortModel} from \"Core/Controls/Grid/Models/SortModel\";\r\nimport { EditScreen } from 'Core/Screens/EditScreen/EditScreen';\r\nimport { IScreen } from 'Core/Screens/IScreen';\r\nimport { UserVarsManager } from 'Core/UserVarsManager/UserVarsManager';\r\nimport { MobileChecker } from \"Core/Common/MobileChecker\";\r\n\r\nimport {EVENTS as BASE_GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {EVENTS as PAGINATOR_EVENTS} from \"Core/Components/Paginator/Constants\";\r\n\r\nimport {ReadyForInvoicingDataDtoModel} from \"../../Models/Dto/Response/ReadyForInvoicingDataDtoModel\";\r\nimport {FinancialDashboardMappingProfile} from \"../../Mappings/FinancialDashboardMappings\";\r\nimport { QueryDropdowns } from 'Core/Components/QueryDropdowns/QueryDropdowns';\r\nimport {ViewGridModel} from 'Core/Controls/Grid/Models/ViewGridModel';\r\nimport {GridStore} from \"Core/Controls/Grid/Stores/GridStore\";\r\nimport { TableStore } from 'Core/Common/Stores/TableStore';\r\nimport { DeleteQueryStore } from 'QueryBuilder/Stores/DeleteQueryStore';\r\nimport {ViewModes} from \"Core/Controls/Grid/BaseGrid/Enums/ViewModes\";\r\nimport {QueryBuilder as QueryBuilderControl} from \"Core/Controls/QueryBuilder/QueryBuilder\";\r\nimport { CONTROL_TYPES } from 'Core/Constant';\r\nimport { NOTIFICATIONS } from 'Core/Components/Translation/Locales';\r\nimport { ViewGridListStore } from 'Core/Controls/Grid/Stores/ViewGridListStore';\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport Template\r\n from 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicingData/Templates/Template.html';\r\n\r\nko.templates['Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicingData/Templates/Template'] = Template;\r\n\r\nexport class ReadyForInvoicingData extends Event {\r\n private _labels = LABELS;\r\n\r\n private _modal: Modal;\r\n\r\n private _searchPhrase: KnockoutObservable<string>;\r\n\r\n private _grid: BaseGrid;\r\n private _sort: SortModel[];\r\n private _paginationToolbar: Toolbar;\r\n private _queryDropdown: QueryDropdowns;\r\n private _gridViews: KnockoutObservableArray<ViewGridModel>;\r\n private _gridView: KnockoutObservable<ViewGridModel>;\r\n\r\n private _isEditingAllowed: KnockoutObservable<boolean>;\r\n private _isDeletingAllowed: KnockoutObservable<boolean>;\r\n private _isGridPrioritiesDisabled: KnockoutObservable<boolean>;\r\n private _canHide: KnockoutObservable<boolean>;\r\n private _canShow: KnockoutObservable<boolean>;\r\n\r\n\r\n constructor(private _params: IReadyForInvoicingDataParams) {\r\n super();\r\n\r\n this._modal = new Modal();\r\n\r\n this._searchPhrase = ko.observable(null);\r\n this._gridViews = ko.observableArray([]);\r\n this._gridView = ko.observable(null);\r\n this._isEditingAllowed = ko.observable(false);\r\n this._isDeletingAllowed = ko.observable(false);\r\n this._isGridPrioritiesDisabled = ko.observable(false);\r\n this._canHide = ko.observable(false);\r\n this._canShow = ko.observable(false);\r\n\r\n this._grid = new BaseGrid({\r\n isPrioritiesDisabled: this.GetGridPriorityToggle(),\r\n isQueryResultGrid: true,\r\n isEnableSelectRecord: ko.observable(true),\r\n enabledFavorite: false,\r\n ToggleAllShownColumns: this.ToggleAllShownColumns.bind(this)\r\n });\r\n\r\n this._queryDropdown = new QueryDropdowns({\r\n showElement: ko.observable(true),\r\n showViewLookup: true,\r\n showFunctionLookup: true,\r\n view: this._gridView,\r\n isEnabled: ko.observable(true),\r\n viewList: this._gridViews,\r\n allowViewListUnset: true,\r\n isAddingRecordAllowed: ko.observable(true),\r\n enableEditView: this._isEditingAllowed,\r\n enableDeleteView: this._isDeletingAllowed,\r\n enableLockItem: ko.observable(false),\r\n withExportFeatures: false,\r\n showLockItem: false,\r\n queryLocked: ko.observable(true),\r\n exportDataAllowed: ko.observable(false),\r\n newView: () => this.NewTableView(),\r\n editView: () => this.EditTableView(),\r\n copyView: () => this.CopyTableView(),\r\n deleteView: () => this.DeleteTableView(),\r\n toggleLock: () => {},\r\n exportToCSV: () => {},\r\n exportToExcel: () => {},\r\n });\r\n\r\n this._sort = [];\r\n this._paginationToolbar = this.BuildPaginationToolbar();\r\n\r\n this._grid.On(BASE_GRID_EVENTS.SORT, this, eventArgs => {\r\n this._sort = eventArgs.data.SortColumns;\r\n this.LoadGridData();\r\n });\r\n\r\n this._grid.On(BASE_GRID_EVENTS.OPEN_HYPERLINK, this, eventArgs => {\r\n const data = _.clone(eventArgs.data);\r\n data.IsOpenInModal = true;\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n \r\n this.LoadTableViewList();\r\n\r\n this._gridView.subscribe((newValue)=>{ \r\n this.GridViewId = newValue.Id;\r\n this.LoadGridData()\r\n this._isEditingAllowed(newValue.IsEditingAllowed);\r\n this._isDeletingAllowed(newValue.IsDeletingAllowed);\r\n });\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n private async ShowQueryEditScreen(screen: IScreen){\r\n screen.ShowInModal();\r\n\r\n let defaultView = await GridStore.GetDefaultTableView({\r\n ControlId: 0,\r\n ViewMode: ViewModes.InvoicingQuery,\r\n SubjectEntityId: this._params.TableId\r\n });\r\n\r\n const queryBuilderControl = screen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl != null) {\r\n queryBuilderControl.SetSubjectEntityId(this._params.TableId);\r\n queryBuilderControl.SetQueryTypeName( ViewModes.InvoicingQuery);\r\n queryBuilderControl.InitQuery(defaultView);\r\n\r\n screen.On('RECORD_SAVED', this, async (eventArgs) => {\r\n this.GridViewId = eventArgs.data.RecordId;\r\n await this.LoadTableViewList();\r\n });\r\n } \r\n }\r\n\r\n async LoadTableViewList(){\r\n let viewList = await ViewGridListStore.GetInvoicingGridViewList(this._params.TableId);\r\n let defaultView = new ViewGridModel(0, \"Default\");\r\n defaultView.IsEditingAllowed = false;\r\n defaultView.IsDeletingAllowed = false;\r\n let selectedView = _.find(viewList.GridViews, (view)=>view.Id === this.GridViewId) || defaultView;\r\n this._gridViews([defaultView, ...viewList.GridViews]);\r\n this._gridView(selectedView);\r\n }\r\n\r\n async NewTableView(){\r\n BlockUI.Block();\r\n let queryTable = await this.GetQueryTable();\r\n\r\n let screenManager = (await import ('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({ EntityId: queryTable.Id, TableTypeName: 'InvoicingQuery' })\r\n .always(()=> BlockUI.Unblock())\r\n .then((editScreen) => this.ShowQueryEditScreen(editScreen))\r\n .fail((err)=>Notifier.Failed(err.message));\r\n }\r\n\r\n async GetQueryTable(){\r\n return await TableStore.Get({ TableName: 'QUERIES' }).fail((err)=>Notifier.Failed(err.message));\r\n }\r\n\r\n async EditTableView(){\r\n let queryTable = await this.GetQueryTable();\r\n let viewId = this._gridView()?.Id;\r\n if(!viewId){\r\n return;\r\n }\r\n\r\n await LockManager.Instance.TryLock(queryTable.Id, viewId);\r\n let screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n \r\n BlockUI.Block();\r\n let editScreen = await screenManager.GetEditScreen({ EntityId: queryTable.Id, RecordId: viewId }).fail((err)=>Notifier.Failed(err.message));\r\n BlockUI.Unblock();\r\n\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === queryTable.Id && eventArgs.data.RecordId === viewId) {\r\n editScreen.Close();\r\n }\r\n });\r\n\r\n editScreen.On('MODAL_CLOSE', this, () => {\r\n LockManager.Instance.ReleaseLock(queryTable.id, viewId);\r\n });\r\n\r\n editScreen.ShowInModal();\r\n\r\n editScreen.On('RECORD_DELETED', this, () => {\r\n this._gridView(null);\r\n this.LoadTableViewList();\r\n });\r\n\r\n const queryBuilderControl = editScreen.GetControl<QueryBuilderControl>(CONTROL_TYPES.QueryBuilder);\r\n\r\n if (queryBuilderControl != null) {\r\n queryBuilderControl.SetQueryTypeName(ViewModes.InvoicingQuery);\r\n\r\n editScreen.On('RECORD_SAVED', this, () => {\r\n this.LoadGridData();\r\n });\r\n }\r\n }\r\n\r\n async CopyTableView(){\r\n let viewId = this._gridView()?.Id;\r\n if(!viewId){\r\n return;\r\n }\r\n\r\n let queryTable = await this.GetQueryTable();\r\n let screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n let editScreen = (await screenManager.GetEditScreen({ EntityId: queryTable.Id, RecordId: viewId, LoadAsExample: true })) as EditScreen;\r\n editScreen.IsDataFromExample = true;\r\n editScreen.ShowInModal();\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl != null) {\r\n queryBuilderControl.SetQueryTypeName(ViewModes.InvoicingQuery);\r\n queryBuilderControl.SetFilterByOwners(true);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.GridViewId = eventArgs.data.RecordId;\r\n this.LoadTableViewList();\r\n });\r\n }\r\n }\r\n\r\n async DeleteTableView(){\r\n let viewId = this._gridView()?.Id;\r\n if(!viewId){\r\n return;\r\n }\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: 'Are you sure?',\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: 'Yes',\r\n TextDecline: 'Cancel'\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, async () => {\r\n await DeleteQueryStore.Delete({Id: viewId});\r\n this.LoadTableViewList();\r\n });\r\n \r\n confirmationDialog.Show();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicingData/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Show() {\r\n this.LoadGridData()\r\n .then(() => this._modal.Show())\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n }\r\n\r\n GetGridPriorityToggle(): boolean {\r\n if (MobileChecker.IsMobile()) {\r\n return this._isGridPrioritiesDisabled();\r\n }\r\n\r\n const subjectEntityId = this._params.TableId;\r\n const gridSubjectEntityId = 0;\r\n this._isGridPrioritiesDisabled(UserVarsManager.Instance.GetGridPriority(subjectEntityId, gridSubjectEntityId, this._isGridPrioritiesDisabled()));\r\n return UserVarsManager.Instance.GetGridPriority(subjectEntityId, gridSubjectEntityId, this._isGridPrioritiesDisabled());\r\n }\r\n\r\n TogglePriorities() {\r\n this._isGridPrioritiesDisabled(!this._isGridPrioritiesDisabled());\r\n\r\n const subjectEntityId = this._params.TableId;\r\n const gridSubjectEntityId = this._grid.SubjectEntityId;\r\n !MobileChecker.IsMobile() && UserVarsManager.Instance.SetGridPriority(subjectEntityId, gridSubjectEntityId, this._isGridPrioritiesDisabled());\r\n this.LoadGridData();\r\n }\r\n\r\n ToggleAllShownColumns(canHide: boolean, canShow: boolean) {\r\n this._canHide(canHide);\r\n this._canShow(canShow);\r\n }\r\n\r\n private BuildPaginationToolbar() {\r\n const toolbar = new Toolbar(\r\n false,\r\n false,\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n null,\r\n null,\r\n ko.observable(false),\r\n ko.observable(true),\r\n null,\r\n false,\r\n false,\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n true,\r\n false,\r\n []\r\n );\r\n\r\n toolbar.Paginator().On(PAGINATOR_EVENTS.CHANGE, this, () => this.LoadGridData());\r\n\r\n return toolbar;\r\n }\r\n\r\n private LoadGridData() {\r\n BlockUI.Block();\r\n\r\n return this._params.Store.GetReadyForInvoicingData({\r\n ViewId: this._gridView()?.Id,\r\n ControlId: this._params.ControlId,\r\n PageNumber: this._paginationToolbar.Paginator().PageNumber,\r\n RecordsPerPage: this._params.RecordsPerPage,\r\n SearchPhrase: this._searchPhrase(),\r\n Sort: this._sort\r\n })\r\n .then(data => this.SetGridData(this._paginationToolbar.Paginator().PageNumber, data))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private SetGridData(pageNumber: number, data: ReadyForInvoicingDataDtoModel) {\r\n this._grid.SetData(FinancialDashboardMappingProfile.MapToReadyForInvoicingData(data), true, this.GetGridPriorityToggle());\r\n\r\n this._paginationToolbar.Paginator().PageNumber = pageNumber;\r\n this._paginationToolbar.Paginator().RecordsPerPage = this._params.RecordsPerPage;\r\n this._paginationToolbar.Paginator().TotalRecords = data.TotalRecords;\r\n this._paginationToolbar.Enable();\r\n }\r\n\r\n private OnStartProcessing() {\r\n const selectedRecords = this._grid.GetSelectRecords().map(row => row.RecordId);\r\n\r\n const validationError = this.ValidateSelectedRecords(selectedRecords);\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n this.Invoice(selectedRecords);\r\n }\r\n\r\n private Invoice(selectedRecords: number[]) {\r\n BlockUI.Block();\r\n\r\n this._params.Store.Invoice({\r\n ControlId: this._params.ControlId,\r\n Records: selectedRecords\r\n })\r\n .then(invoicingResults => {\r\n this.Trigger('INVOICING_DONE', invoicingResults);\r\n this._modal.Close();\r\n })\r\n .fail(error => this.Trigger('INVOICING_FAILED', {error: error}))\r\n .always(() => BlockUI.Unblock())\r\n }\r\n\r\n private ValidateSelectedRecords(selectedRecords: number[]) {\r\n if (selectedRecords.length === 0) {\r\n return 'Please select records to process';\r\n }\r\n }\r\n\r\n get GridViewId() {\r\n return UserVarsManager.Instance.GetFinancialDashboardGridView(this._params.ControlId);\r\n }\r\n\r\n set GridViewId(value: number) {\r\n UserVarsManager.Instance.SetFinancialDashboardGridView(this._params.ControlId, value);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ready-for-invoicing-data\\\"> <div class=\\\"actionBarSubForm\\\"> <h3 class=\\\"ready-for-invoicing-data__title\\\" data-bind=\\\"text: _labels.READY_FOR_INVOICING_DATA\\\"></h3> <div class=\\\"clearfix table-toolbar-line\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success subFormControl pull-left ready-for-invoicing-data-process-btn\\\" data-bind=\\\"click: OnStartProcessing\\\"> <i class=\\\"fa fa-check\\\"></i> <!--ko text: _labels.PROCESS--><!--/ko--> </button> <div class=\\\"ready-for-invoicing-data-query-dropdown\\\"> <!-- ko with: _queryDropdown --> <!-- ko template: { name: GetTemplateName, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"action-button\\\"> <!-- ko if: _canHide() || _canShow() --> <span class=\\\"action-button-box\\\"> <a data-bind=\\\"click: $data.TogglePriorities.bind($data)\\\" class=\\\"btn btn-secondary toggle-priorities-button pull-left\\\"> <!-- ko if: _isGridPrioritiesDisabled() --> <i class=\\\"fa fa-eye\\\" data-bind=\\\"tooltip: {content: _labels.HIDE_COLUMNS_BY_PRIORITY}\\\"></i> <!-- /ko --> <!-- ko if: !_isGridPrioritiesDisabled() --> <i class=\\\"fa fa-eye-slash priorities-button-off\\\" data-bind=\\\"tooltip: {content: _labels.SHOW_ALL_COLUMNS}\\\"></i> <!-- /ko --> </a> </span> <!-- /ko --> </div> <input type=\\\"text\\\" class=\\\"subFormControl input-medium pull-right\\\" data-bind=\\\"textInput: _searchPhrase, searchExtention: {search: $data.LoadGridData.bind($data, 1)}, attr: { placeholder: _labels.SEARCH }\\\"> </div> </div> <div class=\\\"grid-container box-shadow-wrapper\\\"> <!-- ko with: _grid --> <div class=\\\"table-scrollable\\\"> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"grid-pagination\\\"> <!-- ko with: _paginationToolbar --> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import {AccountsState} from \"Core/Components/Dashboards/FinancialDashboard/Enums/AccountsState\";\r\nimport {JournalsState} from \"Core/Components/Dashboards/FinancialDashboard/Enums/JournalsState\";\r\n\r\nimport { SourceTableDtoModel } from \"./SourceTableDtoModel\";\r\nimport { FinancialProcessorRunnerDtoModel } from \"./FinancialProcessorRunnerDtoModel\";\r\nimport {LedgerDtoModel} from \"./LedgerDtoModel\";\r\n\r\nexport class FinancialDashboardDtoModel {\r\n\tJournalsState: JournalsState;\r\n\tAccountsState: AccountsState;\r\n\r\n\tSourceTables: SourceTableDtoModel[];\r\n\tFinancialProcessorRunners: FinancialProcessorRunnerDtoModel[];\r\n\tLedger: LedgerDtoModel;\r\n}","import { SourceTableTypeDtoModel } from \"./SourceTableTypeDtoModel\";\r\nimport { IconModel } from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class SourceTableDtoModel {\r\n\tId: number;\r\n\tName: string;\r\n\tTranslatedName: string;\r\n\tIcon: IconModel;\r\n\tTypes: SourceTableTypeDtoModel[];\r\n}","import { InvoicingControlDtoModel } from \"./InvoicingControlDtoModel\";\r\n\r\nexport class SourceTableTypeDtoModel {\r\n\tId: number;\r\n\tName: string;\r\n\tControls: InvoicingControlDtoModel[];\r\n}","export class InvoicingControlDtoModel {\r\n\tId: number;\r\n\tName: string;\r\n\tRecordsAmount: number;\r\n}","export class InvoicingResultsDtoModel {\r\n\tResults: InvoicingResultDtoModel[];\r\n}\r\n\r\nexport class InvoicingResultDtoModel {\r\n\tRecordId: number;\r\n\tRecordName: string;\r\n\tResult: string;\r\n\tIsSuccessfull: boolean;\r\n}","export class FinancialProcessorRunnerDtoModel {\r\n\tId: number;\r\n\tName: string;\r\n\tRecordsAmount: number;\r\n}","import { AccountsDtoModel } from \"./AccountsDtoModel\";\r\nimport { SubAdministrationDtoModel } from \"./SubAdministrationDtoModel\";\r\n\r\nexport class LedgerDtoModel {\r\n\tAccounts: AccountsDtoModel;\r\n\tSubAdministrations: SubAdministrationDtoModel[];\r\n\r\n\tconstructor() {\r\n\t\tthis.SubAdministrations = [];\r\n\t}\r\n}","import {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class AccountsDtoModel {\r\n\tTableId: number;\r\n\tIcon: IconModel;\r\n}","import {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class SubAdministrationDtoModel {\r\n TableId: number;\r\n Name: string;\r\n Icon: IconModel;\r\n}","import {P} from 'Core/Common/Promise';\r\n\r\nimport {JournalsState} from \"../Enums/JournalsState\";\r\nimport {AccountsState} from \"../Enums/AccountsState\";\r\n\r\nimport {IFinancialDashboardStore} from './IFinancialDashboardStore';\r\n\r\nimport {ICreateInvoiceDtoModel} from 'Core/Components/Dashboards/FinancialDashboard/Models/Dto/Request/ICreateInvoiceDtoModel';\r\nimport {ISendToFPDtoModel} from 'Core/Components/Dashboards/FinancialDashboard/Models/Dto/Request/ISendToFPDtoModel';\r\nimport {PagedResult} from \"Core/Results/ResultModels/PagedResult\";\r\n\r\nimport {IGetGridDataRequestModel} from \"QueryBuilder/QueryResultGrid/Stores/QueryResultStore\";\r\n\r\nimport {FinancialDashboardDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/FinancialDashboardDtoModel\";\r\nimport {SourceTableDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/SourceTableDtoModel\";\r\nimport {SourceTableTypeDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/SourceTableTypeDtoModel\";\r\nimport {InvoicingControlDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/InvoicingControlDtoModel\";\r\nimport {\r\n InvoicingResultDtoModel,\r\n InvoicingResultsDtoModel\r\n} from 'Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/InvoicingResultsDtoModel';\r\nimport {FinancialProcessorRunnerDtoModel} from 'Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/FinancialProcessorRunnerDtoModel';\r\nimport {LedgerDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/LedgerDtoModel\";\r\nimport {AccountsDtoModel} from \"../Models/Dto/Response/AccountsDtoModel\";\r\nimport {SubAdministrationDtoModel} from \"../Models/Dto/Response/SubAdministrationDtoModel\";\r\nimport {FinancialProcessorDtoModel} from \"../Models/Dto/Response/FinacialProcessorDtoModel\";\r\nimport {ReadyForProcessingDataDtoModel} from \"../Models/Dto/Response/ReadyForProcessingDataDtoModel\";\r\nimport {ReadyForInvoicingDataDtoModel} from \"../Models/Dto/Response/ReadyForInvoicingDataDtoModel\";\r\nimport {IGetReadyForInvoicingDataDtoModel} from \"../Models/Dto/Request/IGetReadyForInvoicingDataDtoModel\";\r\nimport {IGetFinancialProcessorsDtoModel} from \"../Models/Dto/Request/IGetFinancialProcessorsDtoModel\";\r\n\r\nexport class FinancialDashboardMockStore implements IFinancialDashboardStore {\r\n GetData(controlId: number): P.Promise<FinancialDashboardDtoModel> {\r\n const dashboardModel = new FinancialDashboardDtoModel();\r\n\r\n const projects = this.GetSourceTable(1, 'PROJECTS', [{\r\n Id: 1,\r\n Name: 'Startup',\r\n InvoicingControlsName: ['Invoice', 'Purchase']\r\n }]);\r\n\r\n const orders = this.GetSourceTable(2, 'ORDERS', [{\r\n Id: 2, Name: 'Shipping',\r\n InvoicingControlsName: ['Shipping']\r\n }]);\r\n\r\n const contracts = this.GetSourceTable(3, 'CONTRACTS', [{\r\n Id: 3,\r\n Name: 'Service',\r\n InvoicingControlsName: ['Invoice']\r\n }, {\r\n Id: 4,\r\n Name: 'Lease',\r\n InvoicingControlsName: ['Create lease']\r\n }]);\r\n\r\n dashboardModel.SourceTables = [projects, orders, contracts];\r\n\r\n dashboardModel.FinancialProcessorRunners = [\r\n this.GetFinancialProcessorRunner(1, 'Send to FP1', 10),\r\n this.GetFinancialProcessorRunner(2, 'Send to FP2', 15),\r\n this.GetFinancialProcessorRunner(3, 'Send to FP3', 20)\r\n ];\r\n\r\n dashboardModel.JournalsState = JournalsState.Ok;\r\n dashboardModel.AccountsState = AccountsState.Ok;\r\n dashboardModel.Ledger = this.GetLedger();\r\n\r\n const deferred = P.defer<FinancialDashboardDtoModel>();\r\n deferred.resolve(dashboardModel);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n Invoice(createInvoiceParams: ICreateInvoiceDtoModel) {\r\n const results = new InvoicingResultsDtoModel();\r\n\r\n results.Results = [\r\n this.GetInvoicingResult(1, 'Spheeres.com'),\r\n this.GetInvoicingResult(2, \"Bad guys company\", \"Because it's bad\")\r\n ];\r\n\r\n const deferred = P.defer<InvoicingResultsDtoModel>();\r\n deferred.resolve(results);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetFinancialProcessors(params: IGetFinancialProcessorsDtoModel): P.Promise<PagedResult<FinancialProcessorDtoModel>> {\r\n const deferred = P.defer<PagedResult<FinancialProcessorDtoModel>>();\r\n deferred.resolve(null);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetReadyForInvoicingData(params: IGetReadyForInvoicingDataDtoModel): P.Promise<ReadyForInvoicingDataDtoModel> {\r\n const deferred = P.defer<any>();\r\n deferred.resolve(null);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetReadyForProcessingData(params: IGetGridDataRequestModel): P.Promise<ReadyForProcessingDataDtoModel> {\r\n const deferred = P.defer<any>();\r\n deferred.resolve(null);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n SendToFinancialProcessor(sendToFPParams: ISendToFPDtoModel) {\r\n const deferred = P.defer<any>();\r\n deferred.resolve(null);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetSourceTable(id: number, name: string, types: { Id: number, Name: string, InvoicingControlsName: string[] }[]) {\r\n const sourceTable = new SourceTableDtoModel();\r\n\r\n sourceTable.Id = id;\r\n sourceTable.Name = name;\r\n sourceTable.Types = types.map((type, index) => this.GetSourceTableType(index + 1, type.Name, type.InvoicingControlsName));\r\n\r\n return sourceTable;\r\n }\r\n\r\n private GetSourceTableType(id: number, name: string, invoicingControlsName: string[]) {\r\n const sourceTableType = new SourceTableTypeDtoModel();\r\n\r\n sourceTableType.Id = id;\r\n sourceTableType.Name = name;\r\n sourceTableType.Controls = invoicingControlsName.map((invoicingControlName, index) => this.GetInvoicingControl(index + 1, invoicingControlName, index + 1));\r\n\r\n return sourceTableType;\r\n }\r\n\r\n private GetInvoicingControl(id: number, name: string, recordsAmount: number) {\r\n const invoicingControl = new InvoicingControlDtoModel();\r\n\r\n invoicingControl.Id = id;\r\n invoicingControl.Name = name;\r\n invoicingControl.RecordsAmount = recordsAmount;\r\n\r\n return invoicingControl;\r\n }\r\n\r\n private GetFinancialProcessorRunner(id: number, name: string, recordsAmount: number) {\r\n const fpRunner = new FinancialProcessorRunnerDtoModel();\r\n\r\n fpRunner.Id = id;\r\n fpRunner.Name = name;\r\n fpRunner.RecordsAmount = recordsAmount;\r\n\r\n return fpRunner;\r\n }\r\n\r\n private GetLedger(): LedgerDtoModel {\r\n const ledger = new LedgerDtoModel();\r\n\r\n ledger.Accounts = this.GetAccounts(1);\r\n ledger.SubAdministrations = [\r\n this.GetSubAdministration(1, 'PROJECTS SA'),\r\n this.GetSubAdministration(2, 'COMPANIES SA'),\r\n ];\r\n\r\n return ledger;\r\n }\r\n\r\n private GetAccounts(id: number): AccountsDtoModel {\r\n const accounts = new AccountsDtoModel();\r\n\r\n accounts.TableId = id;\r\n\r\n return accounts;\r\n }\r\n\r\n private GetSubAdministration(id: number, name: string): SubAdministrationDtoModel {\r\n const subAdministration = new SubAdministrationDtoModel();\r\n\r\n subAdministration.TableId = id;\r\n subAdministration.Name = name;\r\n\r\n return subAdministration;\r\n }\r\n\r\n private GetInvoicingResult(id: number, name: string, error?: string) {\r\n const result = new InvoicingResultDtoModel();\r\n\r\n result.RecordId = id;\r\n result.RecordName = name;\r\n result.Result = error;\r\n result.IsSuccessfull = !error;\r\n\r\n return result;\r\n }\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {URL} from 'Core/Common/Url';\r\n\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {PagedResult} from \"Core/Results/ResultModels/PagedResult\";\r\n\r\nimport {IFinancialDashboardStore} from './IFinancialDashboardStore';\r\n\r\nimport {IGetGridDataRequestModel} from \"QueryBuilder/QueryResultGrid/Stores/QueryResultStore\";\r\nimport {ICreateInvoiceDtoModel} from '../Models/Dto/Request/ICreateInvoiceDtoModel';\r\nimport {IGetFinancialProcessorsDtoModel} from \"../Models/Dto/Request/IGetFinancialProcessorsDtoModel\";\r\nimport {ISendToFPDtoModel} from '../Models/Dto/Request/ISendToFPDtoModel';\r\nimport {IGetReadyForInvoicingDataDtoModel} from \"../Models/Dto/Request/IGetReadyForInvoicingDataDtoModel\";\r\n\r\nimport {FinancialProcessorDtoModel} from \"../Models/Dto/Response/FinacialProcessorDtoModel\";\r\nimport {ReadyForProcessingDataDtoModel} from \"../Models/Dto/Response/ReadyForProcessingDataDtoModel\";\r\nimport {ReadyForInvoicingDataDtoModel} from \"../Models/Dto/Response/ReadyForInvoicingDataDtoModel\";\r\n\r\nexport class FinancialDashboardStore implements IFinancialDashboardStore {\r\n GetData(controlId: number) {\r\n return Request.Send({\r\n proxy: {\r\n url: 'api/FinancialApi/GetDashboardData',\r\n type: 'GET',\r\n dataType: 'json',\r\n },\r\n params: {controlId: controlId}\r\n });\r\n }\r\n\r\n Invoice(createInvoiceParams: ICreateInvoiceDtoModel) {\r\n return Request.Send({\r\n proxy: {\r\n url: 'api/FinancialApi/ConvertToInvoiceBatch',\r\n type: 'POST',\r\n dataType: 'json'\r\n }, params: createInvoiceParams\r\n });\r\n }\r\n\r\n GetFinancialProcessors(params: IGetFinancialProcessorsDtoModel): P.Promise<PagedResult<FinancialProcessorDtoModel>> {\r\n return Request.Send({\r\n proxy: {\r\n url: 'api/FinancialApi/GetFinancialProcessors',\r\n dataType: 'json',\r\n type: 'GET',\r\n }, params: params\r\n });\r\n }\r\n\r\n GetReadyForInvoicingData(params: IGetReadyForInvoicingDataDtoModel): P.Promise<ReadyForInvoicingDataDtoModel> {\r\n return Request.Send({\r\n proxy: {\r\n url: 'api/FinancialApi/GetReadyForInvoicingData',\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: params\r\n });\r\n }\r\n\r\n GetReadyForProcessingData(params: IGetGridDataRequestModel): P.Promise<ReadyForProcessingDataDtoModel> {\r\n const deferred = P.defer<ReadyForProcessingDataDtoModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: URL.CONTROLS.GET_GRID_DATA,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n }).fail(() => deferred.reject({message: 'Error loading ready for processing data'}));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n SendToFinancialProcessor(sendToFPParams: ISendToFPDtoModel) {\r\n return Request.Send({\r\n proxy: {\r\n url: 'api/FinancialApi/SendToFinancialProcessor',\r\n type: 'POST'\r\n }, params: sendToFPParams\r\n });\r\n }\r\n}\r\n\r\n","import { RenderModes } from \"Core/Constant\";\r\n\r\nimport { IFinancialDashboardStore } from \"../Stores/IFinancialDashboardStore\";\r\nimport { FinancialDashboardMockStore } from \"../Stores/FinancialDashboardMockStore\";\r\nimport { FinancialDashboardStore } from \"../Stores/FinancialDashboardStore\";\r\n\r\nexport class StoreFactory {\r\n\tstatic GetStore(renderMode: RenderModes): IFinancialDashboardStore {\r\n\t\treturn renderMode === RenderModes.Design\r\n\t\t\t? new FinancialDashboardMockStore()\r\n\t\t\t: new FinancialDashboardStore();\r\n\t}\r\n}","import * as ko from 'knockout'\r\n\r\nimport {RenderModes} from 'Core/Constant';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {IFinancialDashboardParams} from 'Core/Components/Dashboards/FinancialDashboard/Params/IFinancialDashboardParams';\r\n\r\nimport {IReadyForInvoicingEventData} from './Components/ReadyForInvoicing/Events/IReadyForInvoicingEventData';\r\nimport {ISendToFPEventData} from './Components/ReadyForProcessing/Events/ISendToFPEventData';\r\n\r\nimport {IFinancialDashboardStore} from './Stores/IFinancialDashboardStore';\r\n\r\nimport {ReadyForInvoicing} from './Components/ReadyForInvoicing/ReadyForInvoicing';\r\nimport {ReadyForProcessing} from './Components/ReadyForProcessing/ReadyForProcessing';\r\nimport {Ledger} from './Components/Ledger/Ledger';\r\nimport {FinancialAPI} from \"./Components/FinancialAPI/FinancialAPI\";\r\n\r\nimport {InvoicingResults} from './Components/InvoicingResults/InvoicingResults';\r\nimport {ReadyForProcessingData} from \"./Components/ReadyForProcessingData/ReadyForProcessingData\";\r\nimport {ReadyForInvoicingData} from \"./Components/ReadyForInvoicingData/ReadyForInvoicingData\";\r\n\r\nimport {StoreFactory} from './Factories/StoreFactory';\r\n\r\nimport {FinancialDashboardDtoModel} from './Models/Dto/Response/FinancialDashboardDtoModel';\r\nimport {InvoicingResultsDtoModel} from './Models/Dto/Response/InvoicingResultsDtoModel';\r\n\r\nimport Template from 'Core/Components/Dashboards/FinancialDashboard/Templates/Template.html';\r\n\r\nexport class FinancialDashboard {\r\n private _store: IFinancialDashboardStore;\r\n\r\n private _readyForInvoicingComponent: KnockoutObservable<ReadyForInvoicing>;\r\n private _readyForProcessingComponent: KnockoutObservable<ReadyForProcessing>;\r\n private _ledgerComponent: KnockoutObservable<Ledger>;\r\n private _financialAPIComponent: KnockoutObservable<FinancialAPI>;\r\n private _loadInProgres: KnockoutObservable<boolean>;\r\n\r\n constructor(private _params: IFinancialDashboardParams) {\r\n this._store = StoreFactory.GetStore(this._params.RenderMode);\r\n\r\n this._readyForInvoicingComponent = ko.observable(null);\r\n this._readyForProcessingComponent = ko.observable(null);\r\n this._ledgerComponent = ko.observable(null);\r\n this._financialAPIComponent = ko.observable(null);\r\n this._loadInProgres = ko.observable(false);\r\n }\r\n\r\n get IsDesignMode() {\r\n return this._params.RenderMode === RenderModes.Design;\r\n }\r\n\r\n get IsViewMode() {\r\n return this._params.RenderMode === RenderModes.View;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n Render() {\r\n this.Refresh();\r\n }\r\n\r\n private InitComponents(model: FinancialDashboardDtoModel) {\r\n this._readyForInvoicingComponent(new ReadyForInvoicing({SourceTables: model.SourceTables}));\r\n\r\n this._readyForProcessingComponent(new ReadyForProcessing({\r\n FinancialProcessorRunners: model.FinancialProcessorRunners,\r\n JournalsState: model.JournalsState,\r\n AccountsState: model.AccountsState\r\n }));\r\n\r\n this._ledgerComponent(new Ledger({\r\n Ledger: model.Ledger,\r\n JournalsState: model.JournalsState,\r\n AccountsState: model.AccountsState\r\n }));\r\n\r\n this._financialAPIComponent(new FinancialAPI({\r\n RenderMode: this._params.RenderMode,\r\n FinancialButtons: this._params.FinancialButtons\r\n }));\r\n\r\n this.BindEvents();\r\n }\r\n\r\n private ShowBadRequestError(error: P.Rejection) {\r\n const errorMessage = JSON.parse(error.message).Message;\r\n new Notifier().Failed(errorMessage);\r\n }\r\n\r\n private BindEvents() {\r\n this._readyForInvoicingComponent().On('INVOICING_REQUESTED', this, eventArgs => this.RequestReadyForInvoicingData(eventArgs.data));\r\n this._readyForProcessingComponent().On('SEND_TO_FP_REQUESTED', this, eventArgs => this.RequestReadyForProcessingData(eventArgs.data));\r\n }\r\n\r\n private RequestReadyForInvoicingData(readyForInvoicingEventData: IReadyForInvoicingEventData) {\r\n if (!this.IsViewMode) return;\r\n\r\n const otherGridPageLines = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n const recordsPerPage = +otherGridPageLines || 10;\r\n\r\n const readyForInvoicingDataModal = new ReadyForInvoicingData({\r\n ControlId: readyForInvoicingEventData.ControlId,\r\n TableId: readyForInvoicingEventData.TableId,\r\n RecordsPerPage: recordsPerPage,\r\n Store: this._store\r\n });\r\n\r\n readyForInvoicingDataModal.On('INVOICING_DONE', this, eventArgs => this.OnInvoicesCreated(eventArgs.data));\r\n readyForInvoicingDataModal.On('INVOICING_FAILED', this, eventArgs => this.ShowBadRequestError(eventArgs.data));\r\n\r\n readyForInvoicingDataModal.Show();\r\n }\r\n\r\n private RequestReadyForProcessingData(sendToFPEventData: ISendToFPEventData) {\r\n if (!this.IsViewMode) return;\r\n\r\n const readyForProcessingQuery = this._params.ReadyForProcessingQueries.find(q => q.QueryResultId === sendToFPEventData.QueryResultId);\r\n if (!readyForProcessingQuery || !readyForProcessingQuery.QueryExpression) {\r\n new Notifier().Warning(NOTIFICATIONS.QUERY_EXPRESSION_WAS_NOT_CREATED);\r\n return;\r\n }\r\n\r\n const otherGridPageLines = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n const recordsPerPage = +otherGridPageLines || 10;\r\n\r\n const readyForProcessingDataModal = new ReadyForProcessingData({\r\n QueryResultId: sendToFPEventData.QueryResultId,\r\n QueryExpression: readyForProcessingQuery.QueryExpression,\r\n RecordsPerPage: recordsPerPage,\r\n Store: this._store\r\n });\r\n\r\n readyForProcessingDataModal.On('FINANCIAL_PROCESSING_STARTED', this, () => this.OnFinancialProcessingStarted());\r\n readyForProcessingDataModal.On('FINANCIAL_PROCESSING_FAILED', this, eventArgs => this.ShowBadRequestError(eventArgs.data));\r\n\r\n readyForProcessingDataModal.Show();\r\n }\r\n\r\n private Refresh() {\r\n this._loadInProgres(true);\r\n\r\n this._store.GetData(this._params.Control.GetControlId())\r\n .then(model => this.InitComponents(model))\r\n .fail(error => this.ShowBadRequestError(error))\r\n .always(() => {\r\n this._loadInProgres(false);\r\n });\r\n }\r\n\r\n private ShowInvoicingResults(model: InvoicingResultsDtoModel) {\r\n new InvoicingResults(model).Show();\r\n }\r\n\r\n private OnInvoicesCreated(model: InvoicingResultsDtoModel) {\r\n this.Refresh();\r\n this.ShowInvoicingResults(model);\r\n }\r\n\r\n private OnFinancialProcessingStarted() {\r\n new Notifier().Success(NOTIFICATIONS.DOCUMENTS_HAS_BEEN_SENT_TO_FINANCIAL_PROCESSOR);\r\n this.Refresh();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"financial-dashboard\\\"> <div class=\\\"row u-min-h-40\\\"> <div class=\\\"col-md-3\\\"> <!-- ko with: _readyForInvoicingComponent --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"col-md-3\\\"> <!-- ko with: _readyForProcessingComponent --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"col-md-3\\\"> <!-- ko with: _ledgerComponent --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"col-md-3\\\"> <!--ko with: _financialAPIComponent--> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!--/ko--> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {GenericDeserialize} from \"libs/cerialize\";\r\n\r\nimport {CONTROL_TYPES, RenderModes} from 'Core/Constant';\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport {QueryResult} from \"Core/Controls/QueryResult/QueryResult\";\r\nimport {GenericButton} from \"Core/Controls/GenericButton/GenericButton\";\r\n\r\nimport {QueryExpressionModel} from \"Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel\";\r\n\r\nimport {IReadyForProcessingQuery} from \"Core/Components/Dashboards/FinancialDashboard/Params/IFinancialDashboardParams\";\r\nimport {FinancialDashboard as FinancialDashboardComponent} from 'Core/Components/Dashboards/FinancialDashboard/FinancialDashboard';\r\n\r\nimport ToolBarTemplate from 'Core/Controls/FinancialDashboard/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/FinancialDashboard/Templates/Design.html';\r\nimport ViewTemplate from 'Core/Controls/FinancialDashboard/Templates/View.html';\r\n\r\nko.templates['Core/Controls/FinancialDashboard/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/FinancialDashboard/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/FinancialDashboard/Templates/View'] = ViewTemplate;\r\n\r\nexport class FinancialDashboard extends BaseControl {\r\n private _component: FinancialDashboardComponent;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n\r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private Init() {\r\n if (this._renderMode() !== RenderModes.ToolBar) {\r\n this._component = new FinancialDashboardComponent({\r\n Control: this,\r\n RenderMode: this._renderMode(),\r\n ReadyForProcessingQueries: this.GetReadyForProcessingQueries(),\r\n FinancialButtons: this.GetFinancialButtons(),\r\n });\r\n\r\n this._component.Render();\r\n }\r\n }\r\n\r\n private GetReadyForProcessingQueries(): IReadyForProcessingQuery[] {\r\n return this._subControls()\r\n .filter(subControl => subControl.GetType() == CONTROL_TYPES.QueryResult)\r\n .map(queryResult => this.GetReadyForProcessingQuery(queryResult as QueryResult))\r\n }\r\n\r\n private GetFinancialButtons(): GenericButton[] {\r\n return <GenericButton[]>this._subControls()\r\n .filter(subControl => subControl.GetType() === CONTROL_TYPES.GenericButton)\r\n }\r\n\r\n private GetReadyForProcessingQuery(queryResult: QueryResult): IReadyForProcessingQuery {\r\n const queryProperties = queryResult.Properties\r\n && queryResult.Properties.Query\r\n && queryResult.Properties.Query.Properties;\r\n\r\n const queryExpressionProperty = _.find<any>(queryProperties, property => property.Query);\r\n\r\n if (queryExpressionProperty) {\r\n const queryExpression = GenericDeserialize<QueryExpressionModel>(JSON.parse(queryExpressionProperty.Query), QueryExpressionModel);\r\n\r\n return {\r\n QueryResultId: queryResult.GetControlId(),\r\n QueryExpression: queryExpression\r\n };\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-tachometer\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <!-- ko with: _component --> <!-- ko template: {html: GetTemplate} --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"edit-grid-root dropfield-container group-elements\\\"> <!-- ko if: !_subControls().length --> <div class=\\\"group-control-placeholder\\\">Controls</div> <!-- /ko --> <div data-bind=\\\"dragula: { data: _subControls,\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t group: 'ToolBarToDesigner',\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t afterDrop: $root.AfterDropControl.bind($root) }\\\" subControls class=\\\"tab-drop-container\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _component --> <div data-bind=\\\"blockElement: $data._loadInProgres\\\"> <!-- ko template: {html: GetTemplate} --><!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport Rejection = P.Rejection;\r\n\r\nexport interface ICurrency {\r\n Id: number;\r\n Name: string;\r\n IsoCode: string;\r\n Icon: any;\r\n}\r\n\r\nexport class CurrencyStore {\r\n static GetNativeCurrency(): P.Promise<ICurrency> {\r\n const deferred = P.defer<ICurrency>();\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"api/CurrencyApi/GetNativeCurrency\",\r\n dataType: \"json\",\r\n type: \"GET\"\r\n },\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(response => this.ResolveResponse(deferred, response))\r\n .fail(error => this.RejectResponse(deferred, error));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static GetCurrencies(): P.Promise<Array<ICurrency>> {\r\n const deferred = P.defer<Array<ICurrency>>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"api/CurrencyApi/GetCurrencies\",\r\n dataType: \"json\",\r\n type: \"GET\"\r\n },\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(response => this.ResolveResponse(deferred, response))\r\n .fail(error => this.RejectResponse(deferred, error));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private static ResolveResponse<T>(deferred: P.Deferred<T>, response: T) {\r\n deferred.resolve(response);\r\n }\r\n\r\n private static RejectResponse<T>(deferred: P.Deferred<T>, error: Rejection) {\r\n deferred.reject(error);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore'\r\nimport 'datetimepicker';\r\nimport * as moment from 'moment';\r\n\r\nimport {BaseControl, IControlValue} from \"../BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {CurrencyStore, ICurrency} from \"./Stores/CurrencyStore\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {FIELD_TYPES, FONT_STYLES, RenderModes} from \"Core/Constant\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport ToolBarTemplate from 'Core/Controls/Currency/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Currency/Templates/Design.html';\r\nimport HelpViewTemplate from 'Core/Controls/Currency/Templates/HelpView.html';\r\nimport ViewTemplate from 'Core/Controls/Currency/Templates/View.html';\r\nimport EditTemplate from 'Core/Controls/Currency/Templates/Edit.html';\r\n\r\nko.templates['Core/Controls/Currency/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Currency/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Currency/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Currency/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Currency/Templates/Edit'] = EditTemplate;\r\n\r\nexport interface ICurrencyValueModel {\r\n CurrencyId?: number;\r\n Currency: ICurrency;\r\n RateDate: string;\r\n Value: string;\r\n}\r\n\r\nexport class Currency extends BaseControl {\r\n private _value: KnockoutObservable<string>;\r\n private _labelStyle: KnockoutObservable<any>;\r\n private _textInputStyle: KnockoutObservable<any>;\r\n private _rateDate: KnockoutObservable<string>;\r\n private _selectedCurrency: KnockoutObservable<ICurrency>;\r\n private _availableCurrencies: KnockoutObservableArray<ICurrency>;\r\n private _dropDown: JBoxDropDown;\r\n private _originalCurrency: ICurrencyValueModel;\r\n private _errorResolving: KnockoutObservable<boolean>;\r\n private _originalValue: { RateDate: string, Value: string, CurrencyId: number };\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n\r\n this._value = ko.observable('');\r\n this._labelStyle = ko.observable(null);\r\n this._textInputStyle = ko.observable(null);\r\n this._rateDate = ko.observable(null);\r\n this._selectedCurrency = ko.observable(null);\r\n this._availableCurrencies = ko.observableArray([]);\r\n this._errorResolving = ko.observable(true);\r\n\r\n this.ApplyProperties();\r\n }\r\n\r\n GetRateTitle() {\r\n const date = moment(this._rateDate()).format('L');\r\n if ((this._form && this._form.GetScreen() && this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]) || this._renderMode() === RenderModes.Edit) {\r\n return `<div class=\"origin-tooltip\"> ${date} </div>`;\r\n } else if (this._originalCurrency && this._originalCurrency.Currency) {\r\n const icon = new Icon(this._originalCurrency.Currency.Icon);\r\n const template = `<div class=\"origin-tooltip\"> ${icon.GetTemplate()}${this._originalCurrency.Value} - ${date} </div>`;\r\n return (ko as any).renderTemplateXHtml(template, icon);\r\n }\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.Data) {\r\n if (value.Data.Value) {\r\n const currencyModel: { Origin: ICurrencyValueModel, Converted: ICurrencyValueModel } = this.ParseValue(value);\r\n\r\n let showCurrency = currencyModel.Converted ? currencyModel.Converted : currencyModel.Origin;\r\n if (this._renderMode() === RenderModes.Edit) {\r\n if (!currencyModel.Origin) {\r\n showCurrency = JSON.parse(value.Data.Value);\r\n showCurrency.Currency.Icon = showCurrency.Currency.Icon._model;\r\n } else {\r\n showCurrency = currencyModel.Origin;\r\n }\r\n }\r\n\r\n showCurrency.Value = this.ApplyCulture(showCurrency.Value.toString());\r\n\r\n this._value(showCurrency.Value);\r\n currencyModel.Origin? this._rateDate(currencyModel.Origin.RateDate) : this._rateDate(showCurrency.RateDate);\r\n\r\n this._originalValue = {\r\n Value: showCurrency.Value,\r\n RateDate: this._rateDate(),\r\n CurrencyId: showCurrency.Currency ? showCurrency.Currency.Id : null\r\n };\r\n\r\n this._originalCurrency = currencyModel.Origin ? currencyModel.Origin : showCurrency;\r\n\r\n if(showCurrency.Currency) {\r\n this._selectedCurrency({\r\n IsoCode: showCurrency.Currency.IsoCode,\r\n Icon: new Icon(showCurrency.Currency.Icon),\r\n Id: showCurrency.Currency.Id,\r\n Name: showCurrency.Currency.Name\r\n });\r\n }\r\n this._errorResolving(false);\r\n } else {\r\n CurrencyStore.GetCurrencies()\r\n .then((response) => {\r\n if (!response.length) {\r\n this._errorResolving(true);\r\n return;\r\n }\r\n\r\n const userCurrencyIso = GlobalManager.Instance.GetGlobal(GLOBALS.DEFAULT_CURRENCY).toLowerCase();\r\n const userCurrency = _.find(response, currencyModel => currencyModel.IsoCode\r\n && currencyModel.IsoCode.toLowerCase() === userCurrencyIso);\r\n const defaultCurrency = userCurrency ? userCurrency : response[0];\r\n\r\n _.forEach(response,\r\n (currency: ICurrency) => {\r\n const icon = new Icon(currency.Icon);\r\n this._availableCurrencies.push({\r\n IsoCode: currency.IsoCode,\r\n Icon: icon,\r\n Id: currency.Id,\r\n Name: currency.Name\r\n });\r\n });\r\n\r\n const icon = new Icon(defaultCurrency.Icon);\r\n this._rateDate(moment().format());\r\n this._selectedCurrency({\r\n IsoCode: defaultCurrency.IsoCode,\r\n Icon: icon,\r\n Id: defaultCurrency.Id,\r\n Name: defaultCurrency.Name\r\n });\r\n this._errorResolving(false);\r\n })\r\n .fail((error) => {\r\n // JSON.parse(error.message).ErrorMessage;\r\n });\r\n }\r\n }\r\n }\r\n\r\n ApplyCulture(value: string): string {\r\n if (!!value && this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Currency) {\r\n return FormatConverter.ConvertDecimal(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n get FormatDisplayValue() {\r\n const value = this._value();\r\n\r\n if (!!value && this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Currency) {\r\n return FormatConverter.LocalizeDecimalOrInteger(\r\n Number(value.replace(/[.,]/g, '.')).toFixed(this.FieldModel.Size)\r\n );\r\n }\r\n\r\n return value;\r\n }\r\n\r\n Deserialize() {\r\n const field = _.first(this._model().Fields);\r\n if (field) {\r\n if (!this._isReadonly) {\r\n const value = {\r\n CurrencyId: this._selectedCurrency().Id,\r\n Currency: this._selectedCurrency(),\r\n Value: this._value(),\r\n RateDate: this._rateDate()\r\n };\r\n return [`${field.EntityName}.${field.Name}`, JSON.stringify(value)];\r\n } else {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n GetValue(){\r\n let currencyValue: ICurrencyValueModel =\r\n {\r\n CurrencyId: this._selectedCurrency().Id,\r\n Currency: {\r\n Id: this._selectedCurrency().Id,\r\n Name: this._selectedCurrency().Name,\r\n IsoCode: this._selectedCurrency().IsoCode,\r\n Icon: this._selectedCurrency().Icon.Model\r\n },\r\n RateDate: this._rateDate(),\r\n Value: this._value()\r\n };\r\n\r\n return currencyValue\r\n }\r\n\r\n private ParseValue(value: IControlValue) {\r\n let currencyModel: { Origin: ICurrencyValueModel, Converted: ICurrencyValueModel } = value.Data.Value;\r\n if (!currencyModel.Origin) {\r\n currencyModel = JSON.parse(value.Data.Value);\r\n }\r\n\r\n return currencyModel;\r\n }\r\n\r\n private ChangeRate(newDate: Date) {\r\n const rateDate = moment(newDate).format(DATE_FORMATS.SHORT_DATE.Format);\r\n this._rateDate(rateDate);\r\n }\r\n\r\n private OnSelectCurrency(currency: ICurrency) {\r\n this._selectedCurrency(currency);\r\n this._dropDown.Toggle();\r\n }\r\n\r\n private InitCurrencyDropdown(el: HTMLElement) {\r\n this._dropDown = new JBoxDropDown({\r\n onCreated: () => {\r\n this._dropDown.SetContent();\r\n },\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n otherOptions: {\r\n addClass: \"currency-dropdown\",\r\n closeOnClick: 'body',\r\n attach: undefined,\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n offset: {\r\n x: 36,\r\n y: -11\r\n }\r\n }\r\n });\r\n }\r\n\r\n SetAvailableCurrencies(response: Array<ICurrency>) {\r\n if (!response.length)\r\n return;\r\n let defaultCurrency = response[0];\r\n _.forEach(response, (currency: ICurrency) => {\r\n const icon = new Icon(currency.Icon);\r\n if (currency.Icon.IsDefault) {\r\n defaultCurrency = currency;\r\n }\r\n this._availableCurrencies.push({\r\n IsoCode: currency.IsoCode,\r\n Icon: icon,\r\n Id: currency.Id,\r\n Name: currency.Name\r\n });\r\n\r\n });\r\n }\r\n\r\n private ShowAvailableCurrencies(data, event) {\r\n if (!this._availableCurrencies().length && !this._isReadonly) {\r\n CurrencyStore.GetCurrencies()\r\n .then((response) => {\r\n if (!response.length) {\r\n this._errorResolving(true);\r\n return;\r\n }\r\n this.SetAvailableCurrencies(response);\r\n this._errorResolving(false);\r\n this.InitCurrencyDropdown(event.currentTarget);\r\n this._dropDown.Open();\r\n })\r\n } else {\r\n if (this._dropDown) {\r\n this._dropDown.Toggle();\r\n } else {\r\n this.InitCurrencyDropdown(event.currentTarget);\r\n this._dropDown.Open();\r\n }\r\n }\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n // label\r\n if (this.Properties.Label) {\r\n const labelStyle = {backgroundColor: null, color: null};\r\n\r\n _.each(this.Properties.Label.Properties, (property: any) => {\r\n if (property.BackgroundColor) {\r\n labelStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n\r\n if (property.Color) {\r\n labelStyle.color = property.Color;\r\n }\r\n });\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n // textInput\r\n if (this.Properties.TextInput) {\r\n const textInputStyle = {backgroundColor: null};\r\n\r\n _.each(this.Properties.TextInput.Properties, (property: any) => {\r\n if (property.BackgroundColor) {\r\n textInputStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n });\r\n\r\n this._textInputStyle(textInputStyle);\r\n }\r\n }\r\n\r\n if (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n this.ApplyLinkEditorStyles();\r\n }\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if(!this.FieldModel.HasLinkEditorVisibility){\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = FONT_STYLES.NORMAL; //default fontWeight\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch ( style.Name.toLowerCase() ) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n })\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n IsValid(): boolean {\r\n this._isValid(!this._isRequired || (!!this._value() && !!this._rateDate() && !!this._selectedCurrency()));\r\n return this._isValid();\r\n }\r\n\r\n IsModified(): boolean {\r\n const value = {\r\n CurrencyId: this._selectedCurrency().Id,\r\n Value: this._value(),\r\n RateDate: this._rateDate()\r\n };\r\n return this._originalValue !== value;\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"text-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-money\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix currency\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div class=\\\"input-group\\\"> <span class=\\\"input-group-addon\\\"><i class=\\\"fa fa-eur\\\"></i></span> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"attr: {placeholder: Label}\\\"> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"currency-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div data-bind=\\\"tooltip: {content: GetRateTitle()}\\\" type=\\\"text\\\" class=\\\"input-group control record-field with-label\\\"> <!-- ko with: _selectedCurrency --> <span class=\\\"input-group-addon jBox-content-target\\\" data-bind=\\\"attr: {title: IsoCode}\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </span> <!-- /ko --> <div type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\" data-bind=\\\"text: FormatDisplayValue,\\r\\n style: _textInputStyle,\\r\\n attr: { 'data-text': Label,\\r\\n 'data-value': !!_value() }\\\"> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, attr: { 'data-control-position': LabelPosition }\\\" class=\\\"currency-control\\\"> <div class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div type=\\\"text\\\" class=\\\"input-group control record-field with-label\\\"> <!-- ko with: _selectedCurrency --> <span class=\\\"input-group-addon jBox-content-target\\\" data-bind=\\\"attr: {title: IsoCode}\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName } --><!-- /ko --> <!-- /ko --> </span> <!-- /ko --> <div type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control help-currency-control\\\" data-bind=\\\"text: FormatDisplayValue,\\r\\n style: _textInputStyle,\\r\\n attr: { 'data-text': Label,\\r\\n 'data-value': !!_value() }\\\"> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display },\\r\\n\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\" class=\\\"currency-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition },\\r\\n\\t\\t\\t\\t\\tcss: {'has-error': !_isValid()}\\\" class=\\\"EditScreenView label-input form-standart-control clearfix\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> </label> <!-- ko ifnot: _errorResolving --> <div class=\\\"input-group\\\"> <!-- ko ifnot: _isReadonly --> <span class=\\\"btn default input-group-addon jBox-content-target\\\" data-bind=\\\"click: ShowAvailableCurrencies, attr: { title: _selectedCurrency() ? _selectedCurrency().IsoCode : '' }\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t <div class='currency-dropdown-wrapper'>\\r\\n\\t\\t\\t <!-- ko foreach: $data._availableCurrencies -->\\r\\n\\t\\t\\t\\t <div class='currency-dropdown-item'>\\r\\n\\t\\t\\t\\t <span class='input-group-addon' data-bind='click: $parent.OnSelectCurrency.bind($parent, $data), attr: {title: IsoCode}'>\\r\\n <!-- ko with: Icon -->\\r\\n <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko -->\\r\\n <!-- /ko -->\\r\\n </span>\\r\\n\\t\\t\\t\\t </div>\\r\\n\\t\\t\\t\\t <!-- /ko -->\\r\\n\\t\\t\\t\\t</div>\\\"> <!-- ko with: _selectedCurrency --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> </span> <!-- /ko --> <!-- ko if: _isReadonly --> <span class=\\\"input-group-addon disabled\\\"> <span class=\\\"text-left additional-icon fa-stack fa fa-3x fa-eur\\\"></span> </span> <!-- /ko --> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"\\r\\n textInput: _value,\\r\\n style: _textInputStyle,\\r\\n attr: {'readonly': _isReadonly, 'required': _isRequired, 'tabindex': _isReadonly ? -1 : 1 },\\r\\n inputMask: { fieldModel: FieldModel, value: _value }\\r\\n \\\" data-with-number-group-separators=\\\"true\\\"> <!-- ko if: _selectedCurrency --> <!-- ko ifnot: _isReadonly --> <div class=\\\"input-group-addon input-group date calendar-wrapper\\\" data-bind=\\\"datetimepicker: {\\r\\n value: _rateDate(),\\r\\n onUpdate: function(newDate) { ChangeRate(newDate) },\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tformat: 'MM/DD/YYYY',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\twidgetPositioning: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thorizontal: 'right',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvertical: 'bottom',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tforceParse: 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}, tooltip: { content: GetRateTitle() }\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" style=\\\"display:none\\\"/> <span class=\\\"input-group-addon custom time-picker-button\\\"> <span class=\\\"btn default glyphicon glyphicon-calendar\\\"></span> </span> </div> <!-- /ko --> <!-- ko if: _isReadonly --> <div class=\\\"input-group-addon input-group date calendar-wrapper disabled\\\"> <span class=\\\"glyphicon glyphicon-calendar\\\"></span> </div> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!-- ko if: _errorResolving --> <input class=\\\"form-control control record-field es-textarea-control subFormControl currency-error\\\" readonly=\\\"readonly\\\" data-bind=\\\"style: _textInputStyle, value: 'Error resolving currency rate'\\\"> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView EditScreenView iframe-control form-standart-control\\\"> <iframe data-bind=\\\"attr: {src: _url, height: _heightPX || ''}, css: {'isHeight': !!+_heightPX()}\\\" frameborder=\\\"0\\\" scrolling=\\\"no\\\" height=\\\"200\\\" class=\\\"iframe-element\\\"></iframe> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl';\r\nimport { IControlParam } from 'Core/Screens/IScreen';\r\nimport { RenderModes } from \"Core/Constant\";\r\n\r\nimport IFrameConfigJson from 'Core/Controls/IFrame/Configs/iframe-config.json';\r\nimport { GeneralProperties } from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport ViewTemplate from 'Core/Controls/IFrame/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/IFrame/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/IFrame/Templates/Design.html';\r\nimport { CookieManager } from '../../Common/CookieManager';\r\n\r\nko.templates['Core/Controls/IFrame/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/IFrame/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/IFrame/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/IFrame/Templates/Design'] = DesignTemplate;\r\n\r\nexport class IFrame extends BaseControl {\r\n\tprivate _url: KnockoutObservable<string>;\r\n\tprivate _heightPX: KnockoutObservable<number>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, IFrameConfigJson);\r\n\r\n\t\tthis._url = ko.observable('');\r\n\t\tthis.Init();\r\n\t\tthis._model.subscribe(() => {\r\n\t\t\tif (this.Properties) {\r\n\t\t\t\tthis.ApplyProperties();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tInit(): void {\r\n\t\tthis._url = ko.observable('');\r\n\t\tthis._heightPX = ko.observable(null);\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tGetDesignerHeight(): string {\r\n\t\treturn `${+this._heightPX()}px`;\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\tif (this.Properties.Url) {\r\n\t\t\t\t_.each(this.Properties.Url.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.Url) {\r\n\t\t\t\t\t\tlet url = property.Url as string;\r\n\r\n\t\t\t\t\t\tif(url.indexOf('api/BIApi/GetDashboard?')){\r\n\t\t\t\t\t\t\turl = url.replace('api/BIApi/GetDashboard?', `api/BIApi/GetDashboard?access_token=${CookieManager.GetAuthToken()}&`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis._url(url);\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.Properties.Height) {\r\n\t\t\t\t_.each(this.Properties.Height.Properties, (property: any) => {\r\n\t\t\t\t\tif (!!property.HeightPX){\r\n\t\t\t\t\t\tthis._heightPX(property.HeightPX);\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}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-window-maximize\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"iframe-control\\\" class=\\\"FormDesignerView label-input form-standart-control\\\"> <label class=\\\"header-number iFrameLabel\\\"> <span class=\\\"text-left additional-icon custom-color-option fa fa-3x fa-stack fa-window-maximize\\\"></span> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> <div data-bind=\\\"attr: { 'data-text': _url() ? _url() : 'Url not specifed' }, style: { height: GetDesignerHeight() }, css: {'isHeight': !!+_heightPX()}\\\" class=\\\"form-control control with-label textarea-control\\\"></div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport {DEFAULT_ICONS, FIELD_TYPES, RenderModes, TABLE_TYPES} from \"Core/Constant\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\n\r\nimport {ComplexControl} from \"Core/Controls/ComplexControl/ComplexControl\";\r\nimport {RequiredFieldModel} from \"Core/Controls/ComplexControl/Models/RequiredFieldModel\";\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {IPropertyOption} from 'Core/GeneralProperties/Managers/BaseProperty';\r\n\r\nimport ProductConfiguratorConfig from 'Core/Controls/ProductConfigurator/Configs/product-configurator-config.json';\r\n\r\nimport {ProductConfigurator as ProductConfiguratorComponent} from 'Core/Components/Controls/ProductConfigurator/ProductConfigurator';\r\n\r\nimport ToolBarTemplate from \"Core/Controls/ProductConfigurator/Templates/ToolBar.html\";\r\nimport ViewTemplate from \"Core/Controls/ProductConfigurator/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ProductConfigurator/Templates/HelpView.html\";\r\n\r\nko.templates['Core/Controls/ProductConfigurator/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/ProductConfigurator/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ProductConfigurator/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/ProductConfigurator/Templates/Design'] = ComplexControl.designTemplate;\r\n\r\nexport class ProductConfigurator extends ComplexControl {\r\n private _component: ProductConfiguratorComponent;\r\n\r\n private _subjectEntityId: number;\r\n private _subjectRecordId: number;\r\n\r\n private _productsEntityId: number;\r\n private _rootProductsViewId?: number;\r\n private _descriptionFieldId?: number;\r\n\r\n private _config: any;\r\n\r\n Disabled: KnockoutObservable<boolean>;\r\n Tooltip: KnockoutObservable<string>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, ProductConfiguratorConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0'\r\n };\r\n });\r\n\r\n this.Disabled = ko.observable(false);\r\n this.Tooltip = ko.observable(null);\r\n\r\n this.Init();\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n this._subjectEntityId = value.SubjectEntityId;\r\n this._subjectRecordId = value.SubjectRecordId;\r\n\r\n if (!this._subjectEntityId || !this._subjectRecordId) {\r\n this.Disabled(true);\r\n this.Tooltip('Subject record is required to open product configurator');\r\n return;\r\n }\r\n\r\n this._component = new ProductConfiguratorComponent({\r\n OrdersEntityId: this._subjectEntityId,\r\n ProductsEntityId: this._productsEntityId,\r\n RootProductsViewId: this._rootProductsViewId,\r\n DescriptionFieldId: this._descriptionFieldId,\r\n OrderId: this._subjectRecordId,\r\n ControlId: this.GetControlId(),\r\n Screen: this.Screen,\r\n General: {\r\n ReloadScreen: this.GetConfigurationBooleanPropertyValue('ReloadScreen')\r\n },\r\n HidePCFGROUPIfEmpty: {\r\n HiddenPCFGROUPSIfEmpty: this.GetHiddenPCFGROUPSIfEmpty('HidePCFGROUPIfEmpty')\r\n },\r\n ImageSizes: {\r\n RootProductsPage: {\r\n ProductSelection: this.GetImageSize('ProductSelectionPopup')\r\n },\r\n StartPage: {\r\n OrderedProduct: this.GetImageSize('OrderedProduct')\r\n },\r\n ConfigurationPage: {\r\n SelectedComponent: this.GetImageSize('SelectedComponent'),\r\n Tiles: this.GetImageSize('Tiles'),\r\n InEx: this.GetImageSize('InExPopup')\r\n }\r\n },\r\n ConfigurationRoles: {\r\n Level1Value: this.GetConfigurationRoleValue('Level1'),\r\n Level2Value: this.GetConfigurationRoleValue('Level2'),\r\n LockLevel1: this.GetConfigurationBooleanPropertyValue('LockLevel1')\r\n },\r\n Annotations: {\r\n UseAnnotations: this.GetConfigurationAnnotationsValue('Annotations'),\r\n ShowAnnotationsModeByDefault: this.GetConfigurationAnnotationsValue('ShowAnnotations')\r\n },\r\n AlternativePrice: {\r\n EnableAlternativePriceCalculation: this.GetConfigurationAlternativePriceValue('EnableAlternativePriceCalculation'),\r\n AlternativePriceCalculationRule: this.GetConfigurationAlternativePriceValue('AlternativePriceCalculationRule')\r\n }\r\n });\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n ShowConfigurator() {\r\n this._component.FlushNavigationStack();\r\n this._component.ShowStartPage();\r\n }\r\n\r\n private Init() {\r\n this.ApplyProperties();\r\n switch (this._renderMode()) {\r\n case RenderModes.Design:\r\n this.InitForDesignTime();\r\n return;\r\n\r\n case RenderModes.View:\r\n case RenderModes.Edit:\r\n this.InitForRuntime();\r\n return;\r\n }\r\n }\r\n\r\n private InitForDesignTime() {\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.ProductConfigurator));\r\n\r\n this._requiredFields([\r\n new RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('IMAGE', FIELD_TYPES.Image, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('PRICE', FIELD_TYPES.Decimal, TABLE_TYPES.Entity, null)\r\n ]);\r\n\r\n this.InitRequiredFields();\r\n }\r\n\r\n private InitForRuntime() {\r\n const attachedFields = this.Model.Fields;\r\n\r\n this._productsEntityId = attachedFields[0].EntityId;\r\n\r\n const lastField = attachedFields[attachedFields.length - 1];\r\n if (lastField.EntityTypeName === TABLE_TYPES.Link) {\r\n this._descriptionFieldId = lastField.Id;\r\n this._rootProductsViewId = attachedFields[attachedFields.length - 2].EntityTypeName === TABLE_TYPES.Sub && attachedFields[attachedFields.length - 2].EntityId;\r\n } else if (lastField.EntityTypeName === TABLE_TYPES.Sub) {\r\n this._rootProductsViewId = lastField.EntityId;\r\n }\r\n }\r\n\r\n private GetHiddenPCFGROUPSIfEmpty(hidePCFGROUPIfEmptyParam: string) {\r\n const propertyValue = this.GeneralProperties.GetPropertyValue(hidePCFGROUPIfEmptyParam);\r\n\r\n const hiddenPCFGROUPSIfEmpty = [];\r\n if (propertyValue) {\r\n const hiddenPCFGROUPSIfEmptyString = propertyValue.split(';');\r\n _.each(hiddenPCFGROUPSIfEmptyString, groupString => {\r\n if (groupString && !isNaN(Number(groupString))) {\r\n hiddenPCFGROUPSIfEmpty.push(Number(groupString));\r\n }\r\n });\r\n }\r\n\r\n return hiddenPCFGROUPSIfEmpty;\r\n }\r\n\r\n private GetImageSize(typeName: string) {\r\n const propertyValue = this.GeneralProperties.GetPropertyValue(typeName);\r\n const value = propertyValue ? +propertyValue.Value : null;\r\n\r\n switch (value) {\r\n case 1:\r\n return 60;\r\n case 2:\r\n return 70;\r\n case 3:\r\n return 80;\r\n case 4:\r\n return 90;\r\n default:\r\n return 100;\r\n }\r\n }\r\n\r\n private GetConfigurationRoleValue(relationTypeValue: string) {\r\n const propertyValue = this.GeneralProperties.GetPropertyValue(relationTypeValue);\r\n\r\n return propertyValue ? propertyValue : null;\r\n }\r\n\r\n private GetConfigurationBooleanPropertyValue(booleanParam: string) {\r\n const propertyValue = this.GeneralProperties.GetPropertyValue(booleanParam);\r\n\r\n return !!propertyValue;\r\n }\r\n\r\n private GetConfigurationAnnotationsValue(annotationParam: string) {\r\n const propertyValue = this.GeneralProperties.GetPropertyValue(annotationParam);\r\n\r\n return propertyValue;\r\n }\r\n\r\n private GetConfigurationAlternativePriceValue(alternativePriceParam: string) {\r\n const propertyValue = this.GeneralProperties.GetPropertyValue(alternativePriceParam);\r\n\r\n return propertyValue;\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"product-configurator-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-industry\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"configureBtnBox\\\"> <a href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl configureBtn\\\" data-bind=\\\"click: ShowConfigurator, css: {disabled: Disabled}, tooltip: {content: Tooltip()}, style: _style\\\"> <i class=\\\"fa fa-industry\\\" aria-hidden=\\\"true\\\"></i><span><!-- ko text: _labels.CONFIGURE --><!-- /ko --></span> </a> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"configureBtnBox\\\"> <a href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl configureBtn\\\" data-bind=\\\"click: ShowConfigurator, css: {disabled: Disabled}, tooltip: {content: Tooltip()}, style: _style\\\"> <i class=\\\"fa fa-industry\\\" aria-hidden=\\\"true\\\"></i><span><!-- ko text: _labels.CONFIGURE --><!-- /ko --></span> </a> </div>\";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {DropdownValuesDto} from \"./Models/DropdownValuesDto\";\r\n\r\nexport class SpimStore {\r\n GetAlphaNumericValues(params: { FieldId: number, RecordId: number }): P.Promise<DropdownValuesDto> {\r\n const deferred = P.defer<DropdownValuesDto>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: 'api/ScreenFormApi/GetAlphaNumericValues',\r\n type: 'GET',\r\n dataType: 'json',\r\n },\r\n params: params\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject);\r\n } else {\r\n deferred.reject({message: 'Error getting alphanumeric values'})\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n}","import {SpimValueModel} from \"Core/Controls/Grid/Models/GridDataModel/GridCellValueModel\";\r\n\r\nexport abstract class SpimValueViewModel {\r\n protected constructor(protected recordId: number) {\r\n }\r\n\r\n abstract GetTemplate(): any;\r\n abstract GetValue(): SpimValueModel;\r\n}","import * as ko from 'knockout';\r\n\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {FeatureTypes} from \"Core/Common/Enums/FeatureTypes\";\r\n\r\nimport {SpimValueModel} from \"Core/Controls/Grid/Models/GridDataModel/GridCellValueModel\";\r\n\r\nimport {SpimValueViewModel} from \"./SpimValueViewModel\";\r\n\r\nimport NumericTemplate from '../Templates/FeatureTypes/Numeric.html';\r\n\r\nexport class NumericValueViewModel extends SpimValueViewModel {\r\n DisplayValue: KnockoutObservable<string>;\r\n\r\n constructor(recordId: number, value: number) {\r\n super(recordId);\r\n\r\n this.DisplayValue = ko.observable(FormatConverter.ConvertDecimal(value && value.toString()));\r\n }\r\n\r\n GetTemplate() {\r\n return NumericTemplate;\r\n }\r\n\r\n GetValue() {\r\n const spimValue = new SpimValueModel();\r\n spimValue.RecordId = this.recordId;\r\n\r\n spimValue.FeatureType = FeatureTypes.Numeric;\r\n\r\n const value = parseFloat(this.DisplayValue() && this.DisplayValue().replace(',', '.'));\r\n\r\n if (!isNaN(value)) {\r\n spimValue.NumericValue = value;\r\n }\r\n\r\n return spimValue;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"spim\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"inputMask: { type: 'Decimal', decimalSize: 2, value: DisplayValue}, textInput: DisplayValue\\\" data-with-number-group-separators=\\\"true\\\"/> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\nimport {FeatureTypes} from \"Core/Common/Enums/FeatureTypes\";\r\n\r\nimport {SpimValueModel} from \"Core/Controls/Grid/Models/GridDataModel/GridCellValueModel\";\r\n\r\nimport {SpimValueViewModel} from \"./SpimValueViewModel\";\r\n\r\nimport RangeTemplate from '../Templates/FeatureTypes/Range.html';\r\n\r\nexport class RangeValueViewModel extends SpimValueViewModel {\r\n RangeLowDisplayValue: KnockoutObservable<string>;\r\n RangeHighDisplayValue: KnockoutObservable<string>;\r\n\r\n constructor(recordId: number, rangeLow: number, rangeHigh: number) {\r\n super(recordId);\r\n\r\n this.RangeLowDisplayValue = ko.observable(FormatConverter.ConvertDecimal(rangeLow && rangeLow.toString()));\r\n this.RangeHighDisplayValue = ko.observable(FormatConverter.ConvertDecimal(rangeHigh && rangeHigh.toString()));\r\n }\r\n\r\n GetTemplate(): any {\r\n return RangeTemplate;\r\n }\r\n\r\n GetValue(): any {\r\n const spimValue = new SpimValueModel();\r\n\r\n spimValue.RecordId = this.recordId;\r\n spimValue.FeatureType = FeatureTypes.Range;\r\n\r\n let lowValue = parseFloat(this.RangeLowDisplayValue() && this.RangeLowDisplayValue().replace(',', '.'));\r\n spimValue.RangeLow = isNaN(lowValue) ? null : lowValue;\r\n\r\n let highValue = parseFloat(this.RangeHighDisplayValue() && this.RangeHighDisplayValue().replace(',', '.'));\r\n spimValue.RangeHigh = isNaN(highValue) ? null : highValue;\r\n\r\n return spimValue;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"spim\\\"> <div class=\\\"range-value\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"\\r\\n inputMask: { type: 'Decimal', decimalSize: 2, value: RangeLowDisplayValue },\\r\\n textInput: RangeLowDisplayValue\\r\\n \\\" data-with-number-group-separators=\\\"true\\\"/> </div> <div class=\\\"delimiter\\\">-</div> <div class=\\\"range-value\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"\\r\\n inputMask: { type: 'Decimal', decimalSize: 2, value: RangeHighDisplayValue },\\r\\n textInput: RangeHighDisplayValue\\r\\n \\\" data-with-number-group-separators=\\\"true\\\"/> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {FeatureTypes} from \"Core/Common/Enums/FeatureTypes\";\r\n\r\nimport {SpimValueModel} from \"Core/Controls/Grid/Models/GridDataModel/GridCellValueModel\";\r\n\r\nimport {SpimValueViewModel} from \"./SpimValueViewModel\";\r\n\r\nimport LogicTemplate from '../Templates/FeatureTypes/Logic.html';\r\n\r\nexport class LogicValueViewModel extends SpimValueViewModel {\r\n private Checked: KnockoutObservable<boolean>;\r\n\r\n constructor(recordId: number, value: boolean) {\r\n super(recordId);\r\n\r\n this.Checked = ko.observable(value);\r\n }\r\n\r\n GetTemplate(): any {\r\n return LogicTemplate;\r\n }\r\n\r\n GetValue(): SpimValueModel {\r\n const spimValue = new SpimValueModel();\r\n\r\n spimValue.RecordId = this.recordId;\r\n spimValue.FeatureType = FeatureTypes.Logic;\r\n spimValue.LogicalValue = this.Checked();\r\n\r\n return spimValue;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"spim\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"uniform: Checked, checked: Checked\\\"> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {FeatureTypes} from \"Core/Common/Enums/FeatureTypes\";\r\n\r\nimport {SpimValueModel} from \"Core/Controls/Grid/Models/GridDataModel/GridCellValueModel\";\r\n\r\nimport {SpimValueViewModel} from \"./SpimValueViewModel\";\r\nimport {DropdownValueDto, DropdownValuesDto} from \"../Store/Models/DropdownValuesDto\";\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport AlphaNumericTemplate from '../Templates/FeatureTypes/AlphaNumeric.html';\r\n\r\nexport class AlphaNumericValueViewModel extends SpimValueViewModel {\r\n private _items: KnockoutObservableArray<DropdownValueDto>;\r\n private _selectedItem: KnockoutObservable<DropdownValueDto>;\r\n private _selectedItemId: KnockoutObservable<number>;\r\n private _label = LABELS;\r\n\r\n constructor(recordId: number, value: number, displayValue: string, dropdownValues: DropdownValuesDto) {\r\n super(recordId);\r\n\r\n this._items = ko.observableArray(dropdownValues.Items);\r\n\r\n const selectedValue = _.find(dropdownValues.Items, item => item.RecordId === value);\r\n this._selectedItem = ko.observable(selectedValue);\r\n this._selectedItemId = ko.observable(selectedValue && selectedValue.RecordId);\r\n }\r\n\r\n GetTemplate(): any {\r\n return AlphaNumericTemplate;\r\n }\r\n\r\n GetValue(): SpimValueModel {\r\n const spimValue = new SpimValueModel();\r\n\r\n spimValue.RecordId = this.recordId;\r\n spimValue.FeatureType = FeatureTypes.AlphaNumeric;\r\n spimValue.AlphaNumericValue = this._selectedItem().RecordId;\r\n spimValue.AlphaNumericDisplayValue = this._selectedItem().Label;\r\n\r\n return spimValue;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"EditScreenView label-input form-standart-control dropdown-container spim-container\\\"> <div class=\\\"spim\\\"> <div class=\\\"dropdown-wraper\\\"> <select data-bind=\\\"selectize: _items,\\r\\n value: _selectedItemId,\\r\\n optionsText: 'Label',\\r\\n optionsValue: 'RecordId',\\r\\n object: _selectedItem,\\r\\n options: {\\r\\n dropdownParent: 'body',\\r\\n\\t\\t\\t\\t dropdownDirection: 'auto',\\r\\n plugins: ['hidden_textfield','dropdown_direction'],\\r\\n placeholder: _label.SELECT_LABEL + '...'\\r\\n }\\\" class=\\\"form-control control record-field drop-down dropdownselect customDropDown\\\"></select> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport 'knockout-selectize';\r\n\r\nimport {FeatureTypes} from \"Core/Common/Enums/FeatureTypes\";\r\n\r\nimport {BaseControl, IControlValue} from \"../BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport {SpimStore} from \"./Store/SpimStore\";\r\n\r\nimport {SpimValueModel} from \"Core/Controls/Grid/Models/GridDataModel/GridCellValueModel\";\r\n\r\nimport {SpimValueViewModel} from \"./Model/SpimValueViewModel\";\r\nimport {NumericValueViewModel} from \"./Model/NumericValueViewModel\";\r\nimport {RangeValueViewModel} from \"./Model/RangeValueViewModel\";\r\nimport {LogicValueViewModel} from \"./Model/LogicValueViewModel\";\r\nimport {AlphaNumericValueViewModel} from \"./Model/AlphaNumericValueViewModel\";\r\n\r\nimport EditTemplate from './Templates/Edit.html';\r\nimport {Notifier} from \"../../Common/Notifier\";\r\n\r\nko.templates['Core/Controls/Spim/Templates/Edit'] = EditTemplate;\r\n\r\nexport class Spim extends BaseControl {\r\n private _store: SpimStore;\r\n\r\n private _originalValue: SpimValueModel;\r\n private _viewModel: KnockoutObservable<SpimValueViewModel>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n\r\n this._store = new SpimStore();\r\n this._viewModel = ko.observable(null);\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n SetValue(value: IControlValue): void {\r\n this._originalValue = value.Data.Value as SpimValueModel;\r\n this.LoadData();\r\n }\r\n\r\n GetValue(): SpimValueModel {\r\n return this._viewModel() && this._viewModel().GetValue() || null;\r\n }\r\n\r\n Deserialize() {\r\n return this.GetValue();\r\n }\r\n\r\n IsModified(): boolean {\r\n return _.isEqual(this._originalValue, this.GetValue());\r\n }\r\n\r\n private LoadData() {\r\n switch (this._originalValue.FeatureType) {\r\n case FeatureTypes.Numeric:\r\n this._viewModel(new NumericValueViewModel(this._originalValue.RecordId, this._originalValue.NumericValue));\r\n break;\r\n\r\n case FeatureTypes.Range:\r\n this._viewModel(new RangeValueViewModel(this._originalValue.RecordId, this._originalValue.RangeLow, this._originalValue.RangeHigh));\r\n break;\r\n\r\n case FeatureTypes.Logic:\r\n this._viewModel(new LogicValueViewModel(this._originalValue.RecordId, this._originalValue.LogicalValue));\r\n break;\r\n\r\n case FeatureTypes.AlphaNumeric:\r\n this._store.GetAlphaNumericValues({FieldId: this.FieldModel.Id, RecordId: this._originalValue.RecordId})\r\n .then(values => this._viewModel(new AlphaNumericValueViewModel(this._originalValue.RecordId, this._originalValue.AlphaNumericValue, this._originalValue.AlphaNumericDisplayValue, values)))\r\n .fail(error => new Notifier().Failed(error.message));\r\n\r\n break;\r\n }\r\n }\r\n}\r\n","// Module\nvar code = \"<!--ko with: _viewModel--> <!--ko template: {html: GetTemplate}--><!--/ko--> <!--/ko--> \";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\n\r\nexport class PageResponse {\r\n @deserialize\r\n PageId: number;\r\n\r\n @deserialize\r\n PageNumber: number;\r\n\r\n @deserialize\r\n NumberOfPages: number;\r\n\r\n @deserializeAs(ScreenModel)\r\n Screen: ScreenModel;\r\n}","import {GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {IConsultScreenLayoutValue} from 'Core/GeneralProperties/Managers/ConsultScreenLayout/IConsultScreenLayoutValue';\r\n\r\nimport {PageResponse} from './Models/PageResponse';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class BookStore {\r\n constructor(private _entityId: number, private _relatedEntityId: number) {\r\n }\r\n\r\n GetPage(bookId: number, pageNumber: number, recordId: number, controlId: number, pageLayout: IConsultScreenLayoutValue): P.Promise<PageResponse> {\r\n const deferred = P.defer<PageResponse>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/BookControlApi/GetPage',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: {\r\n BookId: bookId,\r\n EntityId: this._entityId,\r\n RelatedEntityId: this._relatedEntityId,\r\n RecordId: recordId,\r\n PageNumber: pageNumber,\r\n ControlId: controlId,\r\n PageLayout: pageLayout\r\n }\r\n })\r\n .then(page => deferred.resolve(GenericDeserialize<PageResponse>(page, PageResponse)))\r\n\t\t\t.fail(error => deferred.reject(this.GetResponseError(error, LABELS.ERROR_GETTING_BOOK_PAGE)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {RenderModes} from 'Core/Constant';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {Paginator} from 'Core/Components/Paginator/Paginator';\r\nimport {EVENTS as PAGINATOR_EVENTS} from 'Core/Components/Paginator/Constants';\r\nimport {EVENTS as CONSULT_SCREEN_EVENTS} from 'Core/Screens/ConsultScreen/Events';\r\n\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {BaseControl, IControlValue} from '../BaseControl/BaseControl';\r\nimport {RecordLinker} from 'Core/Components/RecordLinker/RecordLinker';\r\n\r\nimport BookConfigJson from 'Core/Controls/Book/Configs/book-config.json';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport {BookStore} from './Store/BookStore';\r\nimport {PageResponse} from './Store/Models/PageResponse';\r\n\r\nimport ViewTemplate from \"Core/Controls/Book/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/Book/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/Book/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/Book/Templates/Design.html\";\r\n\r\nko.templates['Core/Controls/Book/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Book/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Book/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Book/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Book extends BaseControl {\r\n private _store: BookStore;\r\n private _bookId: number;\r\n private _dataLoading: boolean;\r\n\r\n private _notShownReason: KnockoutObservable<string>;\r\n private _currentPage: KnockoutObservable<any>;\r\n private _paginator: Paginator;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, BookConfigJson);\r\n\r\n if (this._renderMode() === RenderModes.View) {\r\n this.InitRuntime();\r\n }\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n\r\n if (this._bookId && !this._dataLoading) {\r\n this.LoadPage(1);\r\n }\r\n }\r\n\r\n SetValue(value: IControlValue) {\r\n this.InitialLoad();\r\n }\r\n\r\n private InitialLoad() {\r\n if (this.GetForm().GetScreen().NestedLevel > 1) {\r\n this._notShownReason(this._labels.BOOK_CANNOT_BE_RENDERED_ON_THE_BOOK_PAGE);\r\n return;\r\n }\r\n\r\n this._bookId = this.GetForm().GetScreen().GetRecordId();\r\n\r\n if (this._isRendered()) {\r\n this._dataLoading = true;\r\n this.LoadPage(1);\r\n }\r\n }\r\n\r\n\r\n private InitRuntime() {\r\n this._store = new BookStore(this.GetForm().GetScreen().GetEntityId(), this.GetModel().EntityId);\r\n this._currentPage = ko.observable(null);\r\n this._notShownReason = ko.observable(null);\r\n\r\n this._paginator = new Paginator(-1, true);\r\n this._paginator.PageNumber = 1;\r\n this._paginator.RecordsPerPage = 1;\r\n\r\n this.BindRuntimeEvents();\r\n }\r\n\r\n private BindRuntimeEvents() {\r\n this._paginator.On(PAGINATOR_EVENTS.CHANGE, this, () => this.LoadPage(this._paginator.PageNumber));\r\n }\r\n\r\n private LoadPage(pageNumber: number, recordId: number = 0) {\r\n BlockUI.Block({Target: this._el});\r\n\r\n this.DisposeCurrentPage();\r\n const pageLayout = this.GetPageLayout();\r\n\r\n this._store.GetPage(this._bookId, pageNumber, recordId, this.GetControlId(), pageLayout)\r\n .then(async page => {\r\n if (!page) {\r\n this._notShownReason(this._labels.THERE_ARE_NO_PAGES)\r\n return;\r\n }\r\n\r\n if (!page.Screen) {\r\n this._notShownReason(this._labels.SCREEN_NOT_FOUND_FOR_THE_PAGE);\r\n return;\r\n }\r\n\r\n this._notShownReason(null);\r\n await this.RenderPage(page);\r\n })\r\n .fail(error => {\r\n this._notShownReason(error.message)\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n this._dataLoading = false;\r\n });\r\n }\r\n\r\n private DisposeCurrentPage() {\r\n if (this._currentPage()) {\r\n this._currentPage().Dispose();\r\n this._currentPage(null);\r\n }\r\n }\r\n\r\n GetBookClass(layoutProperty):string{\r\n let layout = layoutProperty;\r\n let blocksClass: string = ' ';\r\n\r\n if (layout.ActionBar.Checked && layout.BottomBar.Checked && layout.MainBlocks.Checked) {\r\n return 'bookFullBlocks';\r\n }\r\n if (layout.ActionBar.Checked){\r\n blocksClass += 'bookActionBar ';\r\n }\r\n if (layout.MainBlocks.Checked){\r\n blocksClass += 'bookMainBlocks ';\r\n }\r\n if (layout.BottomBar.Checked){\r\n blocksClass += 'bookBottomBar ';\r\n }\r\n return blocksClass;\r\n }\r\n\r\n get PageLayoutBlockClass(): string {\r\n return this.GetBookClass(this.GetPageLayout());\r\n }\r\n\r\n get DesignPageLayoutClass(): string {\r\n return this.GetBookClass(this.GeneralProperties.GetPropertyValue('Layout') || this.GeneralProperties.GetPropertyDefaultValue('Layout'));\r\n }\r\n\r\n private GetPageLayout() {\r\n return this.GeneralProperties.GetPropertyValue('Layout') || this.GeneralProperties.GetPropertyDefaultValue('Layout')\r\n }\r\n\r\n private async RenderPage(page: PageResponse) {\r\n page.Screen.IsNested = true;\r\n page.Screen.NestedLevel = this.GetForm().GetScreen().NestedLevel + 1;\r\n\r\n const screenFactory = (await import('Core/Screens/ScreenFactory')).ScreenFactory;\r\n const screen = screenFactory.GetScreenInstance(page.Screen);\r\n screen.IsOpenedViaBookControl = true;\r\n screen.SetIsReady(true);\r\n\r\n screen.On(CONSULT_SCREEN_EVENTS.LINK_BOOK_RECORD, this, (eventArgs) => {\r\n BlockUI.Block({Target: this._el});\r\n\r\n const mainScreen = this.GetForm().GetScreen();\r\n\r\n RecordLinker.LinkRecord({\r\n MainTableId: mainScreen.GetEntityId(),\r\n MainRecordId: mainScreen.GetRecordId(),\r\n LinkedTableId: eventArgs.data.EntityId,\r\n LinkedRecordId: eventArgs.data.RecordId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n Notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n if (result.Warnings.length > 0) {\r\n result.Warnings.forEach(w => Notifier.Warning(w.replace(\"/n\", \"<br>\")));\r\n }\r\n\r\n Notifier.Success(result.OperationMessage);\r\n this.LoadPage(1, eventArgs.data.RecordId);\r\n });\r\n });\r\n\r\n this._currentPage(screen);\r\n this.SetPageNumberWithoutTriggeringChangeEvent(page.PageNumber);\r\n this._paginator.TotalRecords = page.NumberOfPages;\r\n }\r\n\r\n private SetPageNumberWithoutTriggeringChangeEvent(pageNumber: number) {\r\n this._paginator.SkipChangeTrigger = true;\r\n this._paginator.PageNumber = pageNumber;\r\n this._paginator.SkipChangeTrigger = false;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"bookPageWrapper\\\" data-bind=\\\"css: {'notShownReason': _notShownReason}\\\"> <!--ko with: _notShownReason--> <div class=\\\"nonePageSelectedBook\\\"> <h3 data-bind=\\\"text: $data\\\"></h3> </div> <!--/ko--> <!--ko with: _paginator--> <div class=\\\"clearfix bookPagination\\\"> <div class=\\\"text-center\\\" data-bind=\\\"template: {name: $data.GetNextPrevTemplateName.bind($data)}\\\"></div> </div> <!--/ko--> <div class=\\\"bookPageWrapper-currentPage\\\" data-bind=\\\"css: {'bookPageEmpty': !_currentPage()}, class: PageLayoutBlockClass\\\"> <!--ko with: _currentPage--> <div data-bind=\\\"template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)}, visible: _isReady\\\" class=\\\"bookPageContent\\\"></div> <!--/ko--> </div> <!--ko with: _paginator--> <div class=\\\"clearfix bookPagination\\\"> <div class=\\\"text-center\\\" data-bind=\\\"template: {name: $data.GetNextPrevTemplateName.bind($data)}\\\"></div> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"consult-screen-layout\\\"> <div class=\\\"action-bar\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-blocks\\\"> <div class=\\\"main-block\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-block\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-block\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> </div> <div class=\\\"bottom-bar\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-book\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"consult-screen-layout designerMod\\\" data-bind=\\\"class: DesignPageLayoutClass\\\"> <div class=\\\"action-bar\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-blocks\\\"> <div class=\\\"main-block\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-block\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-block\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> </div> <div class=\\\"bottom-bar\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore'\r\nimport {Modal} from 'Core/Common/Modal'\r\nimport {Event} from 'Core/Common/Event'\r\n\r\nimport SignatureEditScreenTemplate from 'Core/Controls/Signature/SignatureEditScreen/Templates/SignatureEditScreen.html';\r\nimport {IControlParam} from \"../../../Screens/IScreen\";\r\nimport {GlobalManager, GLOBALS} from \"../../../GlobalManager/GlobalManager\";\r\nimport SignaturePad from \"../../../../libs/signature/signature_pad\";\r\nimport {Notifier} from 'Core/Common/Notifier'\r\nimport {ImageDataModel} from \"../../Image/Models/ImageDataModel\";\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\n\r\nko.templates['Core/Controls/Signature/SignatureEditScreen/Templates/SignatureEditScreen'] = SignatureEditScreenTemplate;\r\n\r\n//https://github.com/szimek/signature_pad\r\nexport class SignatureEditScreen extends Event {\r\n private _modal: Modal;\r\n private _isModal: boolean;\r\n private _iControlParams: IControlParam;\r\n private _labelName: string;\r\n protected _isIconVisible: boolean;\r\n private _signaturePad: SignaturePad;\r\n private _dataModel: KnockoutObservable<ImageDataModel>;\r\n\r\n constructor(params: IControlParam, dataModel: ImageDataModel) {\r\n super();\r\n\r\n this._iControlParams = params;\r\n this._labelName = this.GetName();\r\n this._isIconVisible = GlobalManager.Instance.GetGlobal(GLOBALS.SHOW_CONTROL_ICONS) !== '0';\r\n\r\n this._dataModel = ko.observable(null);\r\n const newDataModel = new ImageDataModel();\r\n\r\n if (dataModel && dataModel.Files.length > 0){\r\n this._dataModel(dataModel);\r\n } else {\r\n this._dataModel(newDataModel);\r\n }\r\n\r\n this._isModal = false;\r\n this.AddEvent('SIGNATURE_IMAGE_SAVE')\r\n\r\n }\r\n\r\n GetName(): string{\r\n let name = this._iControlParams.Model.Name;\r\n\r\n if (this._iControlParams.Model.NameTranslations){\r\n _.each(this._iControlParams.Model.NameTranslations, item => {\r\n if (item.Selected && item.Translation && item.Translation !== '' && item.Translation !== null) {\r\n name = item.Translation;\r\n return;\r\n }\r\n });\r\n }\r\n\r\n return name;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/Signature/SignatureEditScreen/Templates/SignatureEditScreen';\r\n }\r\n\r\n Show() {\r\n let defaultOptions = {\r\n addClass: 'signaturePadModal',\r\n width: MobileChecker.IsMobile() ? '95vw' : 450,\r\n height: MobileChecker.IsMobile() ? '60vh' : 330\r\n };\r\n\r\n this._modal = new Modal(_.extend(defaultOptions), false, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._isModal = true;\r\n this._modal.On('CLOSE', this, (eventArgs: any) => {\r\n this.Close();\r\n });\r\n\r\n this.InitSignature();\r\n }\r\n private ResizeCanvas(canvas){\r\n // Adjust canvas coordinate space taking into account pixel ratio,\r\n // to make it look crisp on mobile devices.\r\n // This also causes canvas to be cleared.\r\n\r\n // When zoomed out to less than 100%, for some very strange reason,\r\n // some browsers report devicePixelRatio as less than 1\r\n // and only part of the canvas is cleared then.\r\n var ratio = Math.max(window.devicePixelRatio || 1, 1);\r\n canvas.width = null;\r\n canvas.height = null;\r\n // This part causes the canvas to be cleared\r\n canvas.width = canvas.offsetWidth * ratio;\r\n canvas.height = canvas.offsetHeight * ratio;\r\n canvas.getContext(\"2d\").scale(ratio, ratio);\r\n this._signaturePad.clear(); // otherwise isEmpty() might return incorrect value\r\n }\r\n\r\n private InitSignature(){\r\n let wrapper = document.getElementById(\"signature-pad\");\r\n if (wrapper){\r\n let canvas = wrapper.querySelector(\"canvas\");\r\n if (canvas){\r\n this._signaturePad = new SignaturePad(canvas,{\r\n backgroundColor: 'rgb(255, 255, 255)'\r\n });\r\n this.ResizeCanvas(canvas);\r\n\r\n if (this._dataModel() && this._dataModel().Files.length > 0){\r\n this._signaturePad.fromDataURL(this._dataModel().Files[0].ImageData);\r\n }\r\n }\r\n }\r\n }\r\n\r\n Close(): void {\r\n if (this._modal) {\r\n $(window).off('keydown');\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n Clear(){\r\n if (!this._signaturePad.isEmpty()){\r\n this._signaturePad.clear();\r\n } else {\r\n let notifier = new Notifier();\r\n notifier.Warning('The canvas is already empty');\r\n return;\r\n }\r\n }\r\n\r\n Save(){\r\n let dataImageString = this._signaturePad.toDataURL(\"image/jpeg\"); // save JPG\r\n this.Trigger('SIGNATURE_IMAGE_SAVE', {SignatureImage: dataImageString});\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n this._modal.Show();\r\n }\r\n\r\n}","// Module\nvar code = \"<div data-control-type=\\\"signature-control\\\" class=\\\"signatureControlContainer\\\"> <div class=\\\"EditScreenView label-input form-standart-control clearfix signatureControlBox\\\"> <div class=\\\"signatureWrapper\\\"> <div class=\\\"head actionBarSubForm\\\"> <label> <span class=\\\"leftBox\\\"> <!-- ko if: _isIconVisible --> <span class=\\\"text-left additional-icon custom-color-option signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <!-- /ko --> <span data-bind=\\\"text: _labelName\\\"></span> </span> </label> <div class=\\\"bottomActionBar\\\"> <div class=\\\"leftBtnBox\\\"> <button data-bind=\\\"click: Clear\\\" id=\\\"clear\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\">Clear</button> </div> <div class=\\\"rightBtnBox\\\"> <button data-bind=\\\"click: Save\\\" id=\\\"saveImage\\\" class=\\\"btn green subFormControl\\\">Save</button> </div> </div> </div> <div class=\\\"signatureImageWrapper box-shadow-wrapper\\\"> <div class=\\\"editSignatureBox\\\"> <div id=\\\"signature-pad\\\" class=\\\"canvasBox\\\"> <canvas class=\\\"signature-pad\\\"></canvas> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import {SaveSignatureDataDto} from \"../Signature\";\r\nimport {P} from 'Core/Common/Promise'\r\nimport {IRequestOptions, Request} from 'Core/Common/Request'\r\n\r\n\r\nexport class SignatureStore {\r\n static SaveSignatureData(params: SaveSignatureDataDto): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/SignatureApi/SaveSignatureData',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(err => {\r\n deferredResult.reject(this.GetResponseError(err, 'Error saving signature data'));\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n private static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from \"../BaseControl/BaseControl\";\r\nimport {IControlParam} from \"../../Screens/IScreen\";\r\nimport {BlockUI, BlockUI as BlockUi} from 'Core/Common/BlockUi';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {FileModel, ImageDataModel} from \"../Image/Models/ImageDataModel\";\r\nimport {RenderModes} from \"../../Constant\";\r\nimport {SignatureEditScreen} from \"./SignatureEditScreen/SignatureEditScreen\";\r\nimport {AttachmentModel} from \"../Image/Models/AttachmentModel\";\r\nimport {IGetImageControlDataRequestModel, ImageDataStore} from \"../Image/Stores/ImageDataStore\";\r\nimport {Notifier} from \"../../Common/Notifier\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport OperationResult from \"../../Results/ResultModels/OperationResult\";\r\nimport {SignatureStore} from \"./Store/SignatureStore\";\r\nimport {EventArgs} from \"Core/Common/Event\";\r\n\r\nimport ViewTemplate from \"Core/Controls/Signature/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/Signature/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/Signature/Templates/Design.html\";\r\nimport EditTemplate from \"Core/Controls/Signature/Templates/Edit.html\";\r\nimport HelpViewTemplate from \"Core/Controls/Signature/Templates/HelpView.html\";\r\n\r\nko.templates['Core/Controls/Signature/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Signature/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Signature/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Signature/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Signature/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport interface SaveSignatureDataDto {\r\n Data: AttachmentModel;\r\n FieldId: number;\r\n RecordId: number;\r\n}\r\n\r\nexport class Signature extends BaseControl {\r\n\r\n private _value: KnockoutObservable<string>;\r\n private _dataModel: KnockoutObservable<ImageDataModel>;\r\n private _originalImageDataModel: KnockoutObservable<ImageDataModel>;\r\n private _labelStyle: KnockoutObservable<any>;\r\n\r\n private _image: KnockoutObservable<FileModel>;\r\n private _iControlParams: IControlParam;\r\n private _originalValue: string;\r\n private _isNewRecord: boolean;\r\n\r\n private _attachments: Array<AttachmentModel>;\r\n private _removeAttachments: Array<FileModel>;\r\n private _newAttachments: Array<any>;\r\n private _isReadOnly: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam){\r\n super(params);\r\n\r\n this._iControlParams = params;\r\n this._value = ko.observable(null);\r\n this._dataModel = ko.observable(null);\r\n this._originalImageDataModel = ko.observable(null);\r\n this._image = ko.observable(this.GetRenderMode() === RenderModes.Edit ? new FileModel() : null);\r\n\r\n this._attachments = [];\r\n this._removeAttachments = [];\r\n\r\n this.Init();\r\n this.BindEvents();\r\n\r\n this._labelStyle = ko.observable(null);\r\n\r\n this.ApplyProperties();\r\n\r\n this._isReadOnly = ko.observable(null);\r\n\r\n }\r\n\r\n Deserialize(){\r\n const data = {attachments: [], removeAttachments: []};\r\n const field = _.first(this._model().Fields);\r\n\r\n _.each(this._attachments, item => {\r\n data['attachments'].push({FieldId: field.Id, Data: item});\r\n });\r\n\r\n _.each(this._removeAttachments, item => {\r\n data['removeAttachments'].push({FieldId: field.Id, Data: {Id: item.Id, IsImage: true}});\r\n });\r\n\r\n this._newAttachments = data.attachments;\r\n data['FieldName'] = `${field.EntityName}.${field.Name}`;\r\n\r\n return data;\r\n\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n if(this.GetRenderMode() !== RenderModes.Design){\r\n this._isReadOnly(this._iControlParams.Model.Fields[0].IsReadOnly);\r\n }\r\n }\r\n\r\n private BindEvents() {\r\n this._model.subscribe(() => this.Init());\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private Init(): void {\r\n\r\n }\r\n\r\n get Image(): KnockoutObservable<FileModel> {\r\n return this._image;\r\n }\r\n\r\n GetValue(): any {\r\n return this._value();\r\n }\r\n\r\n SetValue(data: IControlValue): void {\r\n if (data.RecordSpecsModel) {\r\n this._isNewRecord = data.RecordSpecsModel && data.RecordSpecsModel.IsNewRecord;\r\n }\r\n\r\n this._isRendered.subscribe(() => {\r\n if (data.Data && data.Data.Value){\r\n this.LoadSignatureImageData(data)\r\n .then(dataModel => this.PrepareForSignatureImage(dataModel));\r\n }\r\n });\r\n }\r\n\r\n private PrepareForSignatureImage(dataModel: ImageDataModel) {\r\n this._dataModel(dataModel);\r\n\r\n //Adds attachment when creating record from example\r\n if (this._isNewRecord && this._dataModel()) {\r\n const [file] = this._dataModel().Files;\r\n\r\n if (file) {\r\n const exampleImage = new AttachmentModel();\r\n\r\n exampleImage.FileName = file.Name;\r\n exampleImage.Base64Data = file.ImageData;\r\n this._attachments.push(exampleImage);\r\n }\r\n }\r\n this._originalImageDataModel = ko.observable(this.GetOriginalImage());\r\n }\r\n\r\n private LoadSignatureImageData(data: IControlValue): P.Promise<ImageDataModel> {\r\n const deferred = P.defer<ImageDataModel>();\r\n\r\n this.BlockUi();\r\n\r\n const requestModel: IGetImageControlDataRequestModel = {\r\n ControlId: this.GetControlId(),\r\n FieldId: this.GetFieldId(),\r\n RecordId: +data.Data.Value,\r\n FirstRecordOnly: true\r\n };\r\n\r\n ImageDataStore.Get(requestModel)\r\n .then(data => {\r\n deferred.resolve(data)\r\n })\r\n .fail(err => deferred.reject(err))\r\n .always(() => this.UnBlockUi());\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private BlockUi() {\r\n if (this._el) {\r\n BlockUi.Block({Target: this._el});\r\n }\r\n }\r\n\r\n private UnBlockUi() {\r\n BlockUi.Unblock(this._el);\r\n }\r\n\r\n IsModified(): boolean {\r\n this.Deserialize();\r\n\r\n if (super.IsModified() || this._isNewRecord) {\r\n return true;\r\n }\r\n\r\n if (!this._isNewRecord && this._newAttachments.length == 0) {\r\n return false;\r\n } else if (this._newAttachments.length != 0) {\r\n let modifiedValue = null;\r\n _.each(this._newAttachments, item => {\r\n if (!this._originalValue && !item.Data.Base64Data) {\r\n modifiedValue = null;\r\n } else if (this._originalValue && !item.Data.Base64Data) {\r\n modifiedValue = true;\r\n } else {\r\n modifiedValue = item.Data.Base64Data;\r\n }\r\n });\r\n return !!modifiedValue;\r\n }\r\n }\r\n\r\n GetOriginalImage() {\r\n let fileModel = new FileModel();\r\n let originalImg = new ImageDataModel();\r\n\r\n if (this._dataModel().Files.length > 0){\r\n\r\n const requestModel: IGetImageControlDataRequestModel = {\r\n ControlId: this.GetControlId(),\r\n FieldId: this.GetFieldId(),\r\n RecordId: this._form.GetScreen().GetRecordId(),\r\n FirstRecordOnly: false\r\n };\r\n\r\n ImageDataStore.GetOriginal(requestModel)\r\n .then(attachment => {\r\n fileModel.ImageData = attachment.Base64Data;\r\n this._image(fileModel);\r\n originalImg.Files.push(fileModel);\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => {\r\n\r\n });\r\n }\r\n return originalImg;\r\n }\r\n\r\n Edit(){\r\n if (this._help.IsHelpButtonPressed()){\r\n return;\r\n }\r\n\r\n const signatureExampleImage = new AttachmentModel();\r\n const signatureEditScreen = new SignatureEditScreen(this._iControlParams, this._originalImageDataModel() && this._originalImageDataModel().Files.length > 0 && this._originalImageDataModel().Files[0].ImageData ? this._originalImageDataModel() : this._dataModel());\r\n const signatureIsConsultScreen = this._form && this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.ConsultScreen];\r\n\r\n signatureEditScreen.Show();\r\n\r\n signatureEditScreen.On('SIGNATURE_IMAGE_SAVE', this, (event: EventArgs) => {\r\n signatureExampleImage.FileName = `Signature_${Date.now()}.jpg`;\r\n signatureExampleImage.Base64Data = event.data.SignatureImage.split(',')[1];\r\n this._attachments.push(signatureExampleImage);\r\n\r\n if (signatureIsConsultScreen){\r\n this.SaveOnlySignature(this._attachments[0])\r\n .then(() =>{\r\n this._form.GetScreen().Refresh();\r\n signatureEditScreen.Close();\r\n });\r\n } else {\r\n let fileModel = new FileModel();\r\n this._dataModel = ko.observable(null);\r\n this._dataModel(new ImageDataModel());\r\n\r\n fileModel.ImageData = event.data.SignatureImage;\r\n this._image(fileModel);\r\n this._dataModel().Files.push(fileModel);\r\n this._dataModel.valueHasMutated();\r\n fileModel.Attachment = signatureExampleImage;\r\n\r\n this._originalImageDataModel = ko.observable(null);\r\n this._originalImageDataModel(new ImageDataModel());\r\n this._originalImageDataModel().Files.push(fileModel);\r\n signatureEditScreen.Close();\r\n }\r\n });\r\n }\r\n\r\n SaveOnlySignature(exampleImage: AttachmentModel): P.Promise<any>{\r\n let deferredResult = P.defer<any>();\r\n\r\n let params: SaveSignatureDataDto = {\r\n Data: exampleImage,\r\n FieldId: this.GetFieldId(),\r\n RecordId: this._form.GetScreen().GetRecordId(),\r\n }\r\n BlockUI.Block();\r\n SignatureStore.SaveSignatureData(params)\r\n .always(()=> {\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n}","// Module\nvar code = \"<div data-control-type=\\\"signature-control\\\" data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"signatureControlContainer\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"EditScreenView label-input form-standart-control clearfix signatureControlBox\\\"> <div class=\\\"signatureWrapper\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <span class=\\\"leftBox\\\"> <!-- ko if: _isIconVisible --> <span class=\\\"text-left additional-icon custom-color-option signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <!-- /ko --> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> </span> <!-- ko if: !_isReadOnly()--> <button data-bind=\\\"click: Edit\\\" class=\\\"btn blue-sharp edit-button subFormControl\\\"> <i class=\\\"fa fa-edit\\\"></i> <!-- ko text: _labels.EDIT --><!-- /ko --> </button> <!-- /ko --> </label> <div class=\\\"signatureImageWrapper\\\"> <div data-bind=\\\"css: {'nonImage': !_image()}\\\" class=\\\"signatureImageBox\\\"> <!-- ko if: _image()--> <!-- ko with: _image() --> <img data-bind=\\\"attr: { src: ImageData }, tooltip: $parent.DescriptionToolTip\\\" class=\\\"image-item\\\" alt=\\\"\\\"> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: _image()--> <span class=\\\"signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"signature-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <span class=\\\"additional-icon signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix signatureFormDesignerView\\\"> <div class=\\\"signatureNoLabelIconBox\\\"> <span class=\\\"text-left additional-icon custom-color-option signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> </div> <label data-bind=\\\"attr: {'title': Label }\\\"> <span class=\\\"text-left additional-icon custom-color-option signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div class=\\\"frameBox\\\"> <i class=\\\"signatureIcon\\\" aria-hidden=\\\"true\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </i> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"signature-control\\\" data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"signatureControlContainer\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"EditScreenView label-input form-standart-control clearfix signatureControlBox\\\"> <div class=\\\"signatureWrapper\\\"> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <span class=\\\"leftBox\\\"> <!-- ko if: _isIconVisible --> <span class=\\\"text-left additional-icon custom-color-option signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </span> <!-- ko if: !_isReadOnly()--> <button data-bind=\\\"click: Edit\\\" class=\\\"btn blue-sharp edit-button subFormControl\\\"> <i class=\\\"fa fa-edit\\\"></i> <!-- ko text: _labels.EDIT --><!-- /ko --> </button> <!-- /ko --> </label> <div class=\\\"signatureImageWrapper\\\"> <div class=\\\"signatureImageBox\\\"> <!-- ko if: _image()--> <!-- ko with: _image() --> <img data-bind=\\\"attr: { src: ImageData }, tooltip: $parent.DescriptionToolTip\\\" class=\\\"image-item\\\" alt=\\\"\\\"> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"signature-control\\\" data-bind=\\\"style: { display: _display }\\\" class=\\\"signatureControlContainer\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix signatureControlBox\\\"> <div class=\\\"signatureWrapper\\\"> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <span class=\\\"text-left additional-icon custom-color-option signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div class=\\\"signatureImageWrapper\\\"> <div class=\\\"signatureImageBox\\\"> <!-- ko if: _image()--> <!-- ko with: _image() --> <img data-bind=\\\"attr: { src: ImageData }, tooltip: $parent.DescriptionToolTip\\\" class=\\\"image-item\\\" alt=\\\"\\\"> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {ChartDataModel} from '../Models/ChartDataModel';\r\n\r\nexport interface IGetChartDataRequestModel {\r\n\tEntityId: number;\r\n\tSubjectEntityId: number | null;\r\n SubjectRecordId: number | null;\r\n\tXAxisField: number;\r\n\tYAxisField: number;\r\n\tSeriesField: number;\r\n\tSortBy: string;\r\n XAxisExists: boolean;\r\n YAxisExists: boolean;\r\n SeriesExists: boolean;\r\n Type: any;\r\n};\r\n\r\nexport class ChartStore {\r\n\tGetChartData(params: IGetChartDataRequestModel): P.Promise<ChartDataModel> {\r\n\t\tconst deferred = P.defer<ChartDataModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n\t\t\t\turl: '/api/ChartApi/GetChartData',\r\n type: 'POST',\r\n dataType: 'json',\r\n }, params: params\r\n }).then(options => {\r\n deferred.resolve(options);\r\n }).fail(err => {\r\n\t deferred.reject(this.GetResponseError(err, 'Error getting chart control data'));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","export enum ChartTypeEnum {\r\n Line = 'line',\r\n Area = 'area',\r\n Pie = 'pie',\r\n StackedArea = 'stacked area',\r\n Funnel3D = 'funnel3d'\r\n}","// Module\nvar code = \"<div class=\\\"chart-wrapper\\\" data-bind=\\\"attr: {id: _wrapperId}, click: _help.ShowControlHelp.bind(_help, $data)\\\"> </div>\";\n// Exports\nexport default code;","import {IChartBuilderParams} from \"../IChartBuilderParams\";\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport * as moment from \"moment\";\r\n\r\nexport abstract class ChartBuilder{\r\n protected _chartType: string;\r\n protected _chartTitle: string;\r\n protected _xAxis: number;\r\n protected _yAxis: number;\r\n protected _xAxisLabel: string;\r\n protected _yAxisLabel: string;\r\n protected _sortBy: string;\r\n protected _series: number;\r\n protected _wrapperId: string;\r\n protected _xAxisExists: boolean;\r\n protected _yAxisExists: boolean;\r\n protected _seriesExists: boolean;\r\n\r\n constructor(params: IChartBuilderParams){\r\n this._chartType = params.ChartType;\r\n this._chartTitle = params.ChartTitle;\r\n this._xAxis = params.XAxis;\r\n this._xAxisLabel = params.XAxisLabel;\r\n this._yAxis = params.YAxis;\r\n this._yAxisLabel = params.YAxisLabel;\r\n this._sortBy = params.SortBy;\r\n this._series = params.Series;\r\n this._wrapperId = params.WrapperId;\r\n this._xAxisExists = params.XAxisExists;\r\n this._yAxisExists = params.YAxisExists;\r\n this._seriesExists = params.SeriesExists;\r\n }\r\n\r\n abstract RenderChart(ChartDataModel): void;\r\n\r\n ApplyLabelFormatter(labelValue: any, fieldType: string, labelFormat: string) {\r\n if (fieldType === FIELD_TYPES.Date || fieldType === FIELD_TYPES.DateTime) {\r\n const dateFormat = FormatConverter.GetDateFormatFromFieldModel({\r\n FieldTypeName: fieldType,\r\n FormatName: labelFormat\r\n });\r\n return moment(labelValue).format(dateFormat);\r\n }\r\n\r\n return labelValue;\r\n }\r\n\r\n GetFormattedValue(pointValue: any, fieldType: string) {\r\n if (!pointValue) {\r\n return pointValue;\r\n }\r\n\r\n if (fieldType === FIELD_TYPES.Integer || fieldType === FIELD_TYPES.Decimal) {\r\n return Number(String(pointValue).replace(\",\",\".\"));\r\n } else if (fieldType === FIELD_TYPES.Date || fieldType === FIELD_TYPES.DateTime) {\r\n return moment(pointValue).valueOf();\r\n }\r\n\r\n return pointValue;\r\n }\r\n}","import {ChartDataModel} from \"Core/Controls/Chart/Models/ChartDataModel\";\r\nimport {ChartPointModel} from \"Core/Controls/Chart/Models/ChartPointModel\";\r\n\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport * as Highcharts from \"highcharts\";\r\n\r\nimport {ChartBuilder} from \"Core/Components/Controls/Chart/Builders/ChartBuilder\"\r\nimport {IChartBuilderParams} from \"../IChartBuilderParams\";\r\n\r\nexport class AreaChartBuilder extends ChartBuilder {\r\n constructor(params: IChartBuilderParams) {\r\n super(params);\r\n }\r\n\r\n RenderChart(options: ChartDataModel) {\r\n const self = this;\r\n const series = this.GetSeries(options);\r\n\r\n const xAxisLabel = this._xAxisLabel ? this._xAxisLabel : options.XAxisInfoModel.AxisDefaultName;\r\n const yAxisLabel = this._yAxisLabel ? this._yAxisLabel : options.YAxisInfoModel.AxisDefaultName;\r\n\r\n Highcharts.chart(this._wrapperId, {\r\n chart: {\r\n type: this._chartType\r\n },\r\n title: {\r\n text: self._chartTitle\r\n },\r\n tooltip: {\r\n formatter() {\r\n return self.GetToolTip(options, this.x, this.y, xAxisLabel, yAxisLabel, this.series.name);\r\n }\r\n },\r\n xAxis: {\r\n title: {\r\n text: xAxisLabel\r\n },\r\n labels: {\r\n formatter() {\r\n return self.ApplyLabelFormatter(this.value, options.XAxisInfoModel.FieldType, options.XAxisInfoModel.FormatName);\r\n }\r\n },\r\n categories: options.XAxisInfoModel.FieldType === FIELD_TYPES.Text ? self.GetXAxisCategory(options.Points) : null\r\n },\r\n yAxis: {\r\n title: {\r\n text: yAxisLabel\r\n },\r\n labels: {\r\n formatter() {\r\n return self.ApplyLabelFormatter(this.value, options.YAxisInfoModel.FieldType, options.YAxisInfoModel.FormatName);\r\n }\r\n },\r\n categories: options.YAxisInfoModel.FieldType === FIELD_TYPES.Text ? self.GetYAxisCategory(options.Points) : null\r\n },\r\n series: series\r\n }, () => {\r\n });\r\n }\r\n\r\n private GetSeries(options: ChartDataModel) {\r\n let series = [];\r\n const points = options.Points;\r\n\r\n if (!points || !_.any(points)) {\r\n return series;\r\n }\r\n\r\n if (options.XAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n const xCategories = this.GetXAxisCategory(options.Points);\r\n\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n let groupData = [];\r\n\r\n _.forEach(groupedPoints, point => {\r\n groupData.push([xCategories.indexOf(point.XAxis), this.GetFormattedValue(point.YAxis, options.YAxisInfoModel.FieldType)]);\r\n });\r\n\r\n series.push({ name: line, findNearestPointBy: 'xy', data: groupData });\r\n });\r\n } else if (options.YAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n const yCategories = this.GetYAxisCategory(options.Points);\r\n\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n let groupData = [];\r\n\r\n _.forEach(groupedPoints, point => {\r\n groupData.push([this.GetFormattedValue(point.XAxis, options.XAxisInfoModel.FieldType), yCategories.indexOf(point.YAxis)]);\r\n });\r\n\r\n series.push({ name: line, findNearestPointBy: 'xy', data: groupData });\r\n });\r\n } else {\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n let groupData = [];\r\n\r\n _.forEach(groupedPoints, point => {\r\n groupData.push({\r\n type: null,\r\n x: this.GetFormattedValue(point.XAxis, options.XAxisInfoModel.FieldType),\r\n y: this.GetFormattedValue(point.YAxis, options.YAxisInfoModel.FieldType)\r\n });\r\n });\r\n\r\n series.push({ name: line, findNearestPointBy: 'xy', data: groupData });\r\n });\r\n }\r\n\r\n return series;\r\n }\r\n\r\n private GetToolTip(options: ChartDataModel, x: number, y: number, xLabel: string, yLabel: string, series: string) {\r\n let xValue = x;\r\n if (options.XAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n xValue = this.GetXAxisCategory(options.Points)[xValue];\r\n }\r\n\r\n let yValue = y;\r\n if (options.YAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n yValue = this.GetYAxisCategory(options.Points)[yValue];\r\n }\r\n\r\n return `${LABELS.SERIES}: ${series}<br>${\r\n xLabel}: ${this.ApplyLabelFormatter(xValue, options.XAxisInfoModel.FieldType, options.XAxisInfoModel.FormatName)}<br>${\r\n yLabel}: ${this.ApplyLabelFormatter(yValue, options.YAxisInfoModel.FieldType, options.YAxisInfoModel.FormatName)}`;\r\n }\r\n\r\n private GetXAxisCategory(points: Array<ChartPointModel>) {\r\n return [...new Set(points.map(point => point.XAxis))];\r\n }\r\n\r\n private GetYAxisCategory(points: Array<ChartPointModel>) {\r\n return [...new Set(points.map(point => point.YAxis))];\r\n }\r\n}","import {ChartDataModel} from \"Core/Controls/Chart/Models/ChartDataModel\";\r\nimport {ChartPointModel} from \"Core/Controls/Chart/Models/ChartPointModel\";\r\n\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport * as Highcharts from \"highcharts\";\r\n\r\nimport {ChartBuilder} from \"./ChartBuilder\"\r\nimport {IChartBuilderParams} from \"../IChartBuilderParams\";\r\n\r\nexport class LineChartBuilder extends ChartBuilder {\r\n private _defaultChartType = 'line';\r\n\r\n constructor(params: IChartBuilderParams) {\r\n super(params);\r\n }\r\n\r\n RenderChart(options: ChartDataModel) {\r\n const self = this;\r\n const series = this.GetSeries(options);\r\n\r\n const chartType = this._chartType ? this._chartType : this._defaultChartType;\r\n const xAxisLabel = this._xAxisLabel ? this._xAxisLabel : options.XAxisInfoModel.AxisDefaultName;\r\n const yAxisLabel = this._yAxisLabel ? this._yAxisLabel : options.YAxisInfoModel.AxisDefaultName;\r\n\r\n Highcharts.chart(this._wrapperId, {\r\n chart: {\r\n type: chartType\r\n },\r\n title: {\r\n text: self._chartTitle\r\n },\r\n tooltip: {\r\n formatter() {\r\n return self.GetToolTip(options, this.x, this.y, xAxisLabel, yAxisLabel, this.series.name);\r\n }\r\n },\r\n xAxis: {\r\n title: {\r\n text: xAxisLabel\r\n },\r\n labels: {\r\n formatter() {\r\n return self.ApplyLabelFormatter(this.value, options.XAxisInfoModel.FieldType, options.XAxisInfoModel.FormatName);\r\n }\r\n },\r\n categories: options.XAxisInfoModel.FieldType === FIELD_TYPES.Text ? self.GetXAxisCategory(options.Points) : null\r\n },\r\n yAxis: {\r\n title: {\r\n text: yAxisLabel\r\n },\r\n labels: {\r\n formatter() {\r\n return self.ApplyLabelFormatter(this.value, options.YAxisInfoModel.FieldType, options.YAxisInfoModel.FormatName);\r\n }\r\n },\r\n categories: options.YAxisInfoModel.FieldType === FIELD_TYPES.Text ? self.GetYAxisCategory(options.Points) : null\r\n },\r\n series: series\r\n }, () => {\r\n });\r\n }\r\n\r\n private GetSeries(options: ChartDataModel) {\r\n let series = [];\r\n const points = options.Points;\r\n\r\n if (!points || !_.any(points)) {\r\n return series;\r\n }\r\n\r\n if (options.XAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n const xCategories = this.GetXAxisCategory(options.Points);\r\n\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n let groupData = [];\r\n\r\n _.forEach(groupedPoints, point => {\r\n groupData.push([xCategories.indexOf(point.XAxis), this.GetFormattedValue(point.YAxis, options.YAxisInfoModel.FieldType)]);\r\n });\r\n\r\n series.push({ name: line, findNearestPointBy: 'xy', data: groupData });\r\n });\r\n } else if (options.YAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n const yCategories = this.GetYAxisCategory(options.Points);\r\n\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n let groupData = [];\r\n\r\n _.forEach(groupedPoints, point => {\r\n groupData.push([this.GetFormattedValue(point.XAxis, options.XAxisInfoModel.FieldType), yCategories.indexOf(point.YAxis)]);\r\n });\r\n\r\n series.push({ name: line, findNearestPointBy: 'xy', data: groupData });\r\n });\r\n } else {\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n let groupData = [];\r\n\r\n _.forEach(groupedPoints, point => {\r\n groupData.push({\r\n type: null,\r\n x: this.GetFormattedValue(point.XAxis, options.XAxisInfoModel.FieldType),\r\n y: this.GetFormattedValue(point.YAxis, options.YAxisInfoModel.FieldType)\r\n });\r\n });\r\n\r\n series.push({ name: line, findNearestPointBy: 'xy', data: groupData });\r\n });\r\n }\r\n\r\n return series;\r\n }\r\n\r\n private GetToolTip(options: ChartDataModel, x: number, y: number, xLabel: string, yLabel: string, series: string) {\r\n let xValue = x;\r\n if (options.XAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n xValue = this.GetXAxisCategory(options.Points)[xValue];\r\n }\r\n\r\n let yValue = y;\r\n if (options.YAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n yValue = this.GetYAxisCategory(options.Points)[yValue];\r\n }\r\n\r\n return `${LABELS.SERIES}: ${series}<br>${\r\n xLabel}: ${this.ApplyLabelFormatter(xValue, options.XAxisInfoModel.FieldType, options.XAxisInfoModel.FormatName)}<br>${\r\n yLabel}: ${this.ApplyLabelFormatter(yValue, options.YAxisInfoModel.FieldType, options.YAxisInfoModel.FormatName)}`;\r\n }\r\n\r\n private GetXAxisCategory(points: Array<ChartPointModel>) {\r\n return [...new Set(points.map(point => point.XAxis))];\r\n }\r\n\r\n private GetYAxisCategory(points: Array<ChartPointModel>) {\r\n return [...new Set(points.map(point => point.YAxis))];\r\n }\r\n}","import {ChartDataModel} from \"Core/Controls/Chart/Models/ChartDataModel\";\r\n\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\n\r\nimport * as Highcharts from \"highcharts\";\r\nimport {ChartBuilder} from \"./ChartBuilder\"\r\nimport {IChartBuilderParams} from \"../IChartBuilderParams\";\r\nimport {ChartAxisInfoModel} from \"Core/Controls/Chart/Models/ChartAxisInfoModel\";\r\nimport {ChartTypeEnum} from \"../Enums/ChartTypeEnum\";\r\n\r\nexport class PieChartBuilder extends ChartBuilder {\r\n private _mainAxis: ChartAxisInfoModel;\r\n private _secondaryAxis: ChartAxisInfoModel;\r\n private _mainAxisLabel: string;\r\n private _secondaryAxisLabel: string;\r\n\r\n constructor(params: IChartBuilderParams) {\r\n super(params);\r\n }\r\n\r\n RenderChart(options: ChartDataModel) {\r\n const self = this;\r\n\r\n this._mainAxis = this.GetMainAxis(options.XAxisInfoModel, options.YAxisInfoModel);\r\n this._secondaryAxis = this._mainAxis === options.XAxisInfoModel\r\n ? options.YAxisInfoModel : options.XAxisInfoModel;\r\n\r\n const series = this.GetSeries(options);\r\n\r\n const xAxisLabel = this._xAxisLabel ? this._xAxisLabel : options.XAxisInfoModel.AxisDefaultName;\r\n const yAxisLabel = this._yAxisLabel ? this._yAxisLabel : options.YAxisInfoModel.AxisDefaultName;\r\n\r\n Highcharts.chart(this._wrapperId, {\r\n chart: {\r\n type: this._chartType\r\n },\r\n title: {\r\n text: self._chartTitle\r\n },\r\n plotOptions: {\r\n pie: {\r\n dataLabels: {\r\n format: '<b>{point.name}</b>: {point.percentage:.1f} %'\r\n }\r\n }\r\n },\r\n tooltip: {\r\n formatter() {\r\n return self.GetToolTip(options, this.point, xAxisLabel, yAxisLabel);\r\n }\r\n },\r\n series: series\r\n }, () => {\r\n });\r\n }\r\n\r\n private GetSeries(options: ChartDataModel) {\r\n let series = [];\r\n const points = options.Points;\r\n\r\n if (!points || !_.any(points)) {\r\n return series;\r\n }\r\n\r\n if (this._secondaryAxis.AxisExist){\r\n let groupData = [];\r\n _.forEach(points,\r\n point => {\r\n const mainAxisPoint = this._mainAxis === options.XAxisInfoModel ? point.XAxis : point.YAxis;\r\n const secondaryAxisPoint = mainAxisPoint === point.XAxis ? point.YAxis : point.XAxis;\r\n\r\n groupData.push({name: point.Line,\r\n y: this.GetFormattedValue(mainAxisPoint, this._mainAxis.FieldType),\r\n z: this.GetFormattedValue(secondaryAxisPoint, this._secondaryAxis.FieldType)});\r\n });\r\n series.push({ type: ChartTypeEnum.Pie, innerSize: '20%', zMin: 0, data: groupData });\r\n }\r\n else{\r\n let groupData = [];\r\n _.forEach(points,\r\n point => {\r\n const mainAxisPoint = this._mainAxis === options.XAxisInfoModel ? point.XAxis : point.YAxis;\r\n\r\n groupData.push({\r\n name: point.Line,\r\n y: this.GetFormattedValue(mainAxisPoint, this._mainAxis.FieldType),\r\n });\r\n });\r\n series.push({ type: ChartTypeEnum.Pie, innerSize: '20%', zMin: 0, data: groupData });\r\n }\r\n\r\n return series;\r\n }\r\n\r\n private GetMainAxis(xAxisModel: ChartAxisInfoModel, yAxisModel: ChartAxisInfoModel){\r\n return xAxisModel.AxisExist && xAxisModel.FieldType !== FIELD_TYPES.Text\r\n ? xAxisModel : yAxisModel;\r\n }\r\n\r\n private GetToolTip(options: ChartDataModel, point, xLabel: string, yLabel: string) {\r\n if (this._mainAxis === options.XAxisInfoModel){\r\n this._mainAxisLabel = xLabel || this._mainAxis.AxisDefaultName;\r\n this._secondaryAxisLabel = yLabel || this._secondaryAxis.AxisDefaultName;\r\n }\r\n else {\r\n this._mainAxisLabel = yLabel || this._secondaryAxis.AxisDefaultName;\r\n this._secondaryAxisLabel = xLabel || this._mainAxis.AxisDefaultName;\r\n }\r\n\r\n if (this._secondaryAxis.AxisExist){\r\n return `<span style=\"color:${point.color}\">\\u25CF </span><b>${point.name}</b><br/> \r\n ${this._mainAxisLabel}: <b>${this.ApplyLabelFormatter(point.y, this._mainAxis.FieldType, this._mainAxis.FormatName)}</b><br/> \r\n ${this._secondaryAxisLabel}: <b>${this.ApplyLabelFormatter(point.z, this._secondaryAxis.FieldType, this._secondaryAxis.FormatName)}</b><br/>`;\r\n }\r\n else {\r\n return `<span style=\"color:${point.color}\">\\u25CF</span><b>${point.name}</b><br/> \r\n ${this._mainAxisLabel}: <b>${this.ApplyLabelFormatter(point.y, this._mainAxis.FieldType, this._mainAxis.FormatName)}</b><br/>`;\r\n }\r\n }\r\n}","import {ChartDataModel} from \"Core/Controls/Chart/Models/ChartDataModel\";\r\nimport {ChartPointModel} from \"Core/Controls/Chart/Models/ChartPointModel\";\r\n\r\nimport * as Highcharts from \"highcharts\";\r\n\r\nimport {ChartBuilder} from \"Core/Components/Controls/Chart/Builders/ChartBuilder\"\r\nimport {IChartBuilderParams} from \"../IChartBuilderParams\";\r\nimport {ChartTypeEnum} from \"../Enums/ChartTypeEnum\";\r\n\r\nexport class StackedAreaChartBuilder extends ChartBuilder {\r\n private _xCategories: any;\r\n\r\n constructor(params: IChartBuilderParams) {\r\n super(params);\r\n }\r\n\r\n RenderChart(options: ChartDataModel) {\r\n const self = this;\r\n\r\n const xAxisLabel = this._xAxisLabel ? this._xAxisLabel : options.XAxisInfoModel.AxisDefaultName;\r\n const yAxisLabel = this._yAxisLabel ? this._yAxisLabel : options.YAxisInfoModel.AxisDefaultName;\r\n\r\n this._xCategories = self.GetXAxisCategory(options.Points);\r\n Highcharts.chart(this._wrapperId, {\r\n chart: {\r\n type: ChartTypeEnum.Area\r\n },\r\n title: {\r\n text: this._chartTitle\r\n },\r\n tooltip:{\r\n split: true,\r\n pointFormatter: function() {\r\n return self.GetToolTip(options, this.y, this.series.name);\r\n }\r\n },\r\n xAxis: {\r\n title: {\r\n text: xAxisLabel\r\n },\r\n labels: {\r\n formatter() {\r\n return self.ApplyLabelFormatter(this.value, options.XAxisInfoModel.FieldType, options.XAxisInfoModel.FormatName);\r\n }\r\n },\r\n categories: this._xCategories\r\n },\r\n yAxis: {\r\n title: {\r\n text: yAxisLabel\r\n },\r\n labels: {\r\n formatter() {\r\n return self.ApplyLabelFormatter(this.value, options.YAxisInfoModel.FieldType, options.YAxisInfoModel.FormatName);\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n area: {\r\n stacking: 'normal',\r\n lineColor: '#666666',\r\n lineWidth: 1,\r\n marker: {\r\n lineWidth: 1,\r\n lineColor: '#666666'\r\n }\r\n }\r\n },\r\n series: this.GetSeries(options)\r\n }, () => {\r\n });\r\n }\r\n\r\n private GetSeries(options: ChartDataModel) {\r\n let series = [];\r\n const points = options.Points;\r\n\r\n if (!points || !_.any(points)) {\r\n return series;\r\n }\r\n\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.YAxisInfoModel.AxisDefaultName;\r\n let data = [];\r\n\r\n _.forEach(this._xCategories, xAxisValue => {\r\n const yAxisValues = groupedPoints.filter(point => point.XAxis === xAxisValue);\r\n let yAxisValue: any = 0;\r\n\r\n if(_.any(yAxisValues)){\r\n yAxisValue = Math.max(...yAxisValues.map(item => this.GetFormattedValue(item.YAxis, options.YAxisInfoModel.FieldType)));\r\n }\r\n data.push(yAxisValue);\r\n });\r\n\r\n series.push({ name: line, data: data });\r\n });\r\n\r\n return series;\r\n }\r\n\r\n private GetToolTip(options: ChartDataModel, y: number, series: string) {\r\n return `<b>${series}</b>: ${this.ApplyLabelFormatter(y, options.YAxisInfoModel.FieldType, options.YAxisInfoModel.FormatName)}`;\r\n }\r\n\r\n private GetXAxisCategory(points: Array<ChartPointModel>) {\r\n return [...new Set(points.map(point => point.XAxis))];\r\n }\r\n\r\n private GetYAxisCategory(points: Array<ChartPointModel>) {\r\n return [...new Set(points.map(point => point.YAxis))];\r\n }\r\n}","import {ChartDataModel} from \"Core/Controls/Chart/Models/ChartDataModel\";\r\n\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\n\r\nimport Highcharts from \"highcharts\";\r\nimport Highcharts3d from \"highcharts/highcharts-3d\";\r\nimport HighchartsCylinder from \"highcharts/modules/cylinder\";\r\nimport HighchartsFunnel3d from \"highcharts/modules/funnel3d\";\r\n\r\nHighcharts3d(Highcharts);\r\nHighchartsCylinder(Highcharts);\r\nHighchartsFunnel3d(Highcharts);\r\n\r\nimport {ChartBuilder} from \"./ChartBuilder\"\r\nimport {IChartBuilderParams} from \"../IChartBuilderParams\";\r\nimport {ChartAxisInfoModel} from \"Core/Controls/Chart/Models/ChartAxisInfoModel\";\r\nimport {ChartTypeEnum} from \"../Enums/ChartTypeEnum\";\r\n\r\nexport class Funnel3DBuilder extends ChartBuilder {\r\n private _mainAxis: ChartAxisInfoModel;\r\n\r\n constructor(params: IChartBuilderParams) {\r\n super(params);\r\n }\r\n\r\n RenderChart(options: ChartDataModel) {\r\n const self = this;\r\n this._mainAxis = this.GetMainAxis(options.XAxisInfoModel, options.YAxisInfoModel);\r\n\r\n const series = this.GetSeries(options);\r\n\r\n Highcharts.chart(\r\n this._wrapperId,\r\n {\r\n chart: {\r\n type: ChartTypeEnum.Funnel3D,\r\n options3d: {\r\n enabled: true,\r\n alpha: 10,\r\n depth: 50,\r\n viewDistance: 50\r\n }\r\n },\r\n title: {\r\n text: this._chartTitle\r\n },\r\n tooltip: {\r\n formatter() {\r\n return self.GetToolTip(options, this.point);\r\n }\r\n },\r\n plotOptions: {\r\n series: {\r\n dataLabels: {\r\n enabled: true,\r\n formatter: function() {\r\n return self.GetDataLabel(options, this.point);\r\n },\r\n allowOverlap: true,\r\n y: 10\r\n }\r\n }\r\n },\r\n series: series\r\n },\r\n () => {}\r\n );\r\n }\r\n\r\n GetSeries(options: ChartDataModel) {\r\n let series = [];\r\n const points = options.Points;\r\n\r\n if (!points || !_.any(points)) {\r\n return series;\r\n }\r\n\r\n if (this._mainAxis === options.XAxisInfoModel) {\r\n let data = [];\r\n _.forEach(_.groupBy(points, point => {\r\n return point.Line;\r\n }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n\r\n let categoryMax = Math.max(...groupedPoints.map(item => this.GetFormattedValue(item.XAxis, options.XAxisInfoModel.FieldType)));\r\n data.push([line, categoryMax]);\r\n });\r\n series.push({ type: ChartTypeEnum.Funnel3D, data: data });\r\n }\r\n else {\r\n let data = [];\r\n _.forEach(_.groupBy(points, point => {\r\n return point.Line;\r\n }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.YAxisInfoModel.AxisDefaultName;\r\n\r\n let categoryMax = Math.max(...groupedPoints.map(item => this.GetFormattedValue(item.YAxis, options.YAxisInfoModel.FieldType)));\r\n data.push([line, categoryMax]);\r\n });\r\n series.push({ type: ChartTypeEnum.Funnel3D, data: data });\r\n }\r\n\r\n return series;\r\n }\r\n\r\n private GetMainAxis(xAxisModel: ChartAxisInfoModel, yAxisModel: ChartAxisInfoModel){\r\n return xAxisModel.AxisExist && xAxisModel.FieldType !== FIELD_TYPES.Text\r\n ? xAxisModel : yAxisModel;\r\n }\r\n\r\n private GetToolTip(options: ChartDataModel, point) {\r\n return `<span style=\"color:${point.color}\"></span>\r\n ${point.name}: ${this.ApplyLabelFormatter(point.y, this._mainAxis.FieldType, this._mainAxis.FormatName)}`;\r\n }\r\n\r\n private GetDataLabel(options: ChartDataModel, point) {\r\n return `<b>${point.name}</b>\r\n (${this.ApplyLabelFormatter(point.y, this._mainAxis.FieldType, this._mainAxis.FormatName)})`;\r\n }\r\n}","import {AreaChartBuilder} from '../Builders/AreaChartBuilder';\r\nimport {LineChartBuilder} from '../Builders/LineChartBuilder';\r\nimport {IChartBuilderParams} from \"../IChartBuilderParams\";\r\nimport {ChartTypeEnum} from \"../Enums/ChartTypeEnum\";\r\nimport {PieChartBuilder} from \"../Builders/PieChartBuilder\";\r\nimport {StackedAreaChartBuilder} from \"../Builders/StackedAreaBuilder\";\r\nimport {Funnel3DBuilder} from \"../Builders/Funnel3DBuilder\";\r\n\r\nexport class ChartBuilderFactory {\r\n static CreateChartBuilder(params: IChartBuilderParams) {\r\n switch (params.ChartType) {\r\n case ChartTypeEnum.Line:\r\n return new LineChartBuilder(params);\r\n\r\n case ChartTypeEnum.Area:\r\n return new AreaChartBuilder(params);\r\n\r\n case ChartTypeEnum.StackedArea:\r\n return new StackedAreaChartBuilder(params);\r\n\r\n case ChartTypeEnum.Pie:\r\n return new PieChartBuilder(params);\r\n\r\n case ChartTypeEnum.Funnel3D:\r\n return new Funnel3DBuilder(params);\r\n\r\n default:\r\n return new LineChartBuilder(params);\r\n }\r\n }\r\n}","import * as ko from 'knockout';\r\nimport {FIELD_TYPES, RenderModes} from 'Core/Constant';\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {BaseControl} from '../BaseControl/BaseControl';\r\nimport {IControlParam} from '../../Screens/IScreen';\r\n\r\nimport ChartConfig from 'Core/Controls/Chart/Configs/chart-config.json';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport {ChartStore} from 'Core/Controls/Chart/Stores/ChartStore';\r\nimport {ChartDataModel} from './Models/ChartDataModel';\r\n\r\nimport {PROPERTIES} from './Constants';\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\n\r\nimport ViewTemplate from './Templates/View.html'\r\nimport HelpViewTemplate from './Templates/HelpView.html'\r\nimport DesignTemplate from './Templates/Design.html'\r\nimport ToolBarTemplate from './Templates/ToolBar.html'\r\n\r\nimport {ChartBuilderFactory} from \"../../Components/Controls/Chart/Factory/ChartBuilderFactory\";\r\nimport {ChartBuilder} from \"../../Components/Controls/Chart/Builders/ChartBuilder\";\r\nimport {IChartBuilderParams} from \"../../Components/Controls/Chart/IChartBuilderParams\";\r\n\r\nko.templates['Core/Controls/Chart/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Chart/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Chart/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Chart/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Chart/Templates/ToolBar'] = ToolBarTemplate;\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\nexport class ChartControl extends BaseControl {\r\n\tprivate _wrapperId: string;\r\n\tprivate _store: ChartStore;\r\n\tprivate _chartBuilder: ChartBuilder;\r\n\r\n\tprivate _chartType: KnockoutObservable<string>;\r\n\tprivate _chartTitle: KnockoutObservable<string>;\r\n\tprivate _xAxis: KnockoutObservable<number>;\r\n\tprivate _xAxisLabel: KnockoutObservable<string>;\r\n\tprivate _yAxis: KnockoutObservable<number>;\r\n\tprivate _yAxisLabel: KnockoutObservable<string>;\r\n\tprivate _sortBy: KnockoutObservable<string>;\r\n\tprivate _series: KnockoutObservable<number>;\r\n\tprivate _xAxisExists: KnockoutObservable<boolean>;\r\n\tprivate _yAxisExists: KnockoutObservable<boolean>;\r\n\tprivate _seriesExists: KnockoutObservable<boolean>;\r\n\tprivate _chartOptions: KnockoutObservable<ChartDataModel>;\r\n\tprivate _preventResize: boolean = true;\r\n\r\n\tprivate _subjectEntityId: number | null = null;\r\n\tprivate _subjectRecordId: number | null = null;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, ChartConfig);\r\n\r\n\t\tthis._wrapperId = Guid.NewGuid();\r\n\t\tthis._store = new ChartStore();\r\n\r\n\t\tthis._chartType = ko.observable(null);\r\n\t\tthis._chartTitle = ko.observable(null);\r\n\t\tthis._xAxis = ko.observable(0);\r\n\t\tthis._xAxisLabel = ko.observable(null);\r\n\t\tthis._yAxis = ko.observable(0);\r\n\t\tthis._yAxisLabel = ko.observable(null);\r\n\t\tthis._sortBy = ko.observable(null);\r\n\t\tthis._series = ko.observable(0);\r\n\t\tthis._chartOptions = ko.observable(null);\r\n\t\tthis._seriesExists = ko.observable(null);\r\n\t\tthis._yAxisExists = ko.observable(null);\r\n\t\tthis._xAxisExists = ko.observable(null);\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._el = el[0];\r\n\r\n if (this._renderMode() === RenderModes.View || this._renderMode() === RenderModes.Edit) {\r\n\t BlockUI.Block();\r\n\r\n\t this.ApplyProperties();\r\n\t\t\tlet chartParams: IChartBuilderParams = {\r\n\t\t\t\tChartType: this._chartType(),\r\n\t\t\t\tChartTitle: this._chartTitle(),\r\n\t\t\t\tXAxis: this._xAxis(),\r\n\t\t\t\tXAxisLabel: this._xAxisLabel(),\r\n\t\t\t\tYAxis: this._yAxis(),\r\n\t\t\t\tYAxisLabel: this._yAxisLabel(),\r\n\t\t\t\tSortBy: this._sortBy(),\r\n\t\t\t\tSeries: this._series(),\r\n\t\t\t\tWrapperId: this._wrapperId,\r\n\t\t\t\tXAxisExists: this._xAxisExists(),\r\n\t\t\t\tYAxisExists: this._yAxisExists(),\r\n\t\t\t\tSeriesExists: this._seriesExists()\r\n\t\t\t};\r\n\r\n\t\t\tthis._chartBuilder = ChartBuilderFactory.CreateChartBuilder(chartParams);\r\n\r\n\t\t\tif (this.IsConsultScreen && this._form && this._form.GetScreen()) {\r\n\t\t\t\tthis._subjectEntityId = this._form.GetScreen().GetEntityId();\r\n\t\t\t\tthis._subjectRecordId = this._form.GetScreen().GetRecordId();\r\n\t\t\t}\r\n\r\n\t\t\tthis._store.GetChartData({\r\n\t\t\t\t\tEntityId: this._model().EntityId,\r\n\t\t\t\t\tSubjectEntityId: this._subjectEntityId,\r\n\t\t\t\t\tSubjectRecordId: this._subjectRecordId,\r\n\t\t\t\t\tXAxisField: this._xAxis(),\r\n\t\t\t\t\tYAxisField: this._yAxis(),\r\n\t\t\t\t\tSeriesField: this._series(),\r\n\t\t\t\t\tSortBy: this._sortBy(),\r\n\t\t\t\t\tXAxisExists: this._xAxisExists(),\r\n\t\t\t\t\tYAxisExists: this._yAxisExists(),\r\n\t\t\t\t\tSeriesExists: this._seriesExists(),\r\n Type: this._chartType()\r\n\t\t\t\t})\r\n\t\t\t\t.then(options => {\r\n\t\t\t\t\tthis._chartOptions(options);\r\n\t\t\t\t\tthis._preventResize = false;\r\n\t\t\t\t\tthis._chartBuilder.RenderChart(options);\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tnew Notifier().Failed(err.message);\r\n\t\t\t\t})\r\n\t\t .always(() => BlockUI.Unblock());\r\n\r\n\t\t\tconst unbindResize = ResizeService.SubscribeWidth(this.OnResize, this._el); // subscribe on resize\r\n\t\t\tko.utils.domNodeDisposal.addDisposeCallback(this._el, () => {\r\n\t\t\t\tunbindResize();\r\n\t\t\t});\r\n }\r\n }\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.CHART_TYPE, this._chartType);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.CHART_TITLE, this._chartTitle);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.X_AXIS, this._xAxis);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.X_AXIS_LABEL, this._xAxisLabel);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.Y_AXIS, this._yAxis);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.Y_AXIS_LABEL, this._yAxisLabel);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.SORT_BY, this._sortBy);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.SERIES, this._series);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n\t\tif (this.Properties[groupedBy]) {\r\n\t\t\t_.each(this.Properties[groupedBy].Properties,\r\n\t\t\t\t(property: any) => {\r\n\t\t\t\t\tif (property.hasOwnProperty(propertyName)) {\r\n\t\t\t\t\t\tconst propertyValue = property[propertyName].hasOwnProperty('Value')\r\n\t\t\t\t\t\t\t? property[propertyName].Value\r\n\t\t\t\t\t\t\t: property[propertyName];\r\n\t\t\t\t\t\tpropertyHolder(propertyValue);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tOnResize = () => {\r\n\t\tif (this._preventResize) {\r\n\t\t\tthis._preventResize = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this._chartOptions()){\r\n\t\t\tthis._chartBuilder.RenderChart(this._chartOptions());\r\n\t\t}\r\n\t};\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-bar-chart\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-bar-chart\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView EditScreenView iframe-control form-standart-control\\\"> <iframe id=\\\"test_frame\\\" data-bind=\\\"event: { load: $data.FrameLoaded.bind($data) }, attr: { src: _url, height: _heightPX || ''}, css: {'isHeight': !!+_heightPX()}\\\" frameborder=\\\"0\\\" scrolling=\\\"no\\\" height=\\\"200\\\" class=\\\"iframe-element\\\"></iframe> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl';\r\nimport { IControlParam } from 'Core/Screens/IScreen';\r\nimport { RenderModes } from \"Core/Constant\";\r\n\r\nimport ConfigJson from 'Core/Controls/IFrameExtension/Configs/config.json';\r\nimport { GeneralProperties } from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport ViewTemplate from 'Core/Controls/IFrameExtension/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/IFrameExtension/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/IFrameExtension/Templates/Design.html';\r\nimport { CookieManager } from '../../Common/CookieManager';\r\nimport { frameExtensionFacade } from 'Core/Components/CustomFunctions/Facades/IFrameExtensionFacade';\r\n\r\nko.templates['Core/Controls/IFrameExtension/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/IFrameExtension/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/IFrameExtension/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/IFrameExtension/Templates/Design'] = DesignTemplate;\r\n\r\nexport interface IControlMounted{\r\n\tcontrol: any;\t\t\t\r\n}\r\n\r\nexport class IFrameExtension extends BaseControl {\r\n\tprivate _url: KnockoutObservable<string>;\r\n\tprivate _heightPX: KnockoutObservable<number>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, ConfigJson);\r\n\r\n\t\tconst token = CookieManager.GetAuthToken();\r\n\t\tthis._url = ko.observable(`/api/IFrameExtensionApi/Index/${this.GetControlId()}/?access_token=${token}`);\r\n\t\tthis.Init();\r\n\t\tthis._model.subscribe(() => {\r\n\t\t\tif (this.Properties) {\r\n\t\t\t\tthis.ApplyProperties();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tInit(): void {\r\n\t\tthis._heightPX = ko.observable(null);\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tGetDesignerHeight(): string {\r\n\t\treturn `${+this._heightPX()}px`;\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\tif (this.Properties.Height) {\r\n\t\t\t\t_.each(this.Properties.Height.Properties, (property: any) => {\r\n\t\t\t\t\tif (!!property.HeightPX){\r\n\t\t\t\t\t\tthis._heightPX(property.HeightPX);\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\tFrameLoaded(_, evt){\r\n\t\tconst event = new CustomEvent('controlMounted', { detail: { control: frameExtensionFacade(this) } });\r\n\t\tevt.currentTarget.contentWindow.dispatchEvent(event);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-plug\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"iframe-control\\\" class=\\\"FormDesignerView label-input form-standart-control\\\"> <label class=\\\"header-number iFrameLabel\\\"> <span class=\\\"text-left additional-icon custom-color-option fa fa-3x fa-stack fa-plug\\\"></span> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","import { CONTROL_TYPES } from \"Core/Constant\";\r\nimport { GenericButton } from \"Core/Controls/GenericButton/GenericButton\";\r\nimport { Grid } from \"Core/Controls/Grid/Grid\";\r\nimport { screenFacade } from \"Core/Components/CustomFunctions/Facades/ScreenFacade\";\r\nimport { IFrameExtension } from \"../../../Controls/IFrameExtension/IFrameExtension\";\r\n\r\nexport const frameExtensionFacade = (control: IFrameExtension) => {\r\n const screen = screenFacade(control.Screen);\r\n return { screen }\r\n}","import {IControl} from 'Core/Controls/IControl'\r\nimport {Text} from 'Core/Controls/Text/Text'\r\nimport {RecordSharing} from 'Core/Controls/RecordSharing/RecordSharing'\r\nimport {UserSecurity} from 'Core/Controls/UserSecurity/UserSecurity'\r\nimport {UserAllowance} from 'Core/Controls/UserAllowance/UserAllowance'\r\nimport {TableSecurity} from 'Core/Controls/TableSecurity/TableSecurity'\r\nimport {TypeSecurity} from 'Core/Controls/TypeSecurity/TypeSecurity'\r\nimport {RecordSecurity} from 'Core/Controls/RecordSecurity/RecordSecurity'\r\nimport {QueryBuilder} from 'Core/Controls/QueryBuilder/QueryBuilder'\r\nimport {LifestatusDesigner} from 'Core/Controls/LifestatusDesigner/LifestatusDesigner'\r\nimport {DatabaseDesigner} from 'Core/Controls/DatabaseDesigner/DatabaseDesigner'\r\nimport {FormDesigner} from 'Core/Controls/FormDesigner/FormDesigner'\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList'\r\nimport {Mail} from 'Core/Controls/Mail/Mail'\r\nimport {Scheduler} from 'Core/Controls/Scheduler/Scheduler'\r\nimport {Agenda} from 'Core/Controls/Agenda/Agenda'\r\nimport {ColorSelector} from 'Core/Controls/ColorSelector/ColorSelector'\r\nimport {ButtonEdit} from 'Core/Controls/ButtonEdit/ButtonEdit'\r\nimport {ButtonDelete} from 'Core/Controls/ButtonDelete/ButtonDelete'\r\nimport {ButtonGoogleMaps} from 'Core/Controls/ButtonGoogleMaps/ButtonGoogleMaps'\r\nimport {ButtonListScreen} from 'Core/Controls/ButtonListScreen/ButtonListScreen'\r\nimport {ButtonSpecialScreen} from \"Core/Controls/ButtonSpecialScreen/ButtonSpecialScreen\";\r\nimport {ButtonDashboardScreen} from \"Core/Controls/ButtonDashboardScreen/ButtonDashboardScreen\";\r\nimport {ButtonPrint} from 'Core/Controls/ButtonPrint/ButtonPrint'\r\nimport {ButtonLinkedIn} from 'Core/Controls/ButtonLinkedIn/ButtonLinkedIn'\r\nimport {ButtonTree} from 'Core/Controls/ButtonTree/ButtonTree'\r\nimport {ButtonCancel} from 'Core/Controls/ButtonCancel/ButtonCancel'\r\nimport {ButtonSave} from 'Core/Controls/ButtonSave/ButtonSave'\r\nimport {ButtonPlan} from 'Core/Controls/ButtonPlan/ButtonPlan'\r\nimport {ButtonSecurityReset} from 'Core/Controls/ButtonSecurityReset/ButtonSecurityReset'\r\nimport {ButtonFollowUp} from 'Core/Controls/ButtonFollowUp/ButtonFollowUp'\r\nimport {Tab} from 'Core/Controls/Tab/Tab'\r\nimport {TabPage} from 'Core/Controls/TabPage/TabPage'\r\nimport {Search} from 'Core/Controls/Search/Search'\r\nimport {Dropdown} from 'Core/Controls/Dropdown/Dropdown'\r\nimport {Image} from 'Core/Controls/Image/Image'\r\nimport {MultiSelect} from 'Core/Controls/MultiSelect/MultiSelect'\r\nimport {Checkbox} from 'Core/Controls/Checkbox/Checkbox'\r\nimport {DateTime} from 'Core/Controls/DateTime/DateTime'\r\nimport {Drop} from 'Core/Controls/Drop/Drop'\r\nimport {RadioButton} from 'Core/Controls/RadioButton/RadioButton'\r\nimport {Grid} from 'Core/Controls/Grid/Grid'\r\nimport {Group} from 'Core/Controls/Group/Group'\r\nimport {PortletBar} from 'Core/Controls/PortletBar/PortletBar'\r\nimport {Label} from 'Core/Controls/Label/Label'\r\nimport {Memo} from 'Core/Controls/Memo/Memo'\r\nimport {Document} from 'Core/Controls/Document/Document'\r\nimport {ButtonReturn} from 'Core/Controls/ButtonReturn/ButtonReturn'\r\nimport {Password} from 'Core/Controls/Password/Password'\r\nimport {KanbanBoard} from 'Core/Controls/Kanban/KanbanBoard'\r\nimport {ButtonFavorite} from 'Core/Controls/ButtonFavorite/ButtonFavorite'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {SelectUser} from \"Core/Controls/SelectUser/SelectUser\";\r\nimport {TimeWriting} from \"Core/Controls/TimeWriting/TimeWriting\";\r\nimport {ButtonTemplate} from \"Core/Controls/ButtonTemplate/ButtonTemplate\";\r\nimport {TemplateDesigner} from \"Core/Controls/TemplateDesigner/TemplateDesigner\";\r\nimport {RssFeed} from \"Core/Controls/RssFeed/RssFeed\";\r\nimport {Alias} from \"Core/Controls/Alias/Alias\";\r\nimport {CrystalReportViewer} from \"Core/Controls/CrystalViewer/CrystalReportViewer\";\r\nimport {Tag} from \"Core/Controls/Tag/Tag\";\r\nimport {FieldSecurity} from 'Core/Controls/FieldSecurity/FieldSecurity';\r\nimport {ButtonAdd} from 'Core/Controls/ButtonAdd/ButtonAdd';\r\nimport {ButtonConsultScreen} from 'Core/Controls/ButtonConsultScreen/ButtonConsultScreen';\r\nimport {Basket} from 'Core/Controls/Basket/Basket';\r\nimport {History} from \"Core/Controls/History/History\";\r\nimport {QueryResult} from \"Core/Controls/QueryResult/QueryResult\";\r\nimport {GanttChart} from \"Core/Controls/GanttChart/GanttChart\";\r\nimport {Maps} from \"Core/Controls/Maps/Maps\";\r\nimport {Step} from \"Core/Controls/Step/Step\";\r\nimport {StepPage} from \"Core/Controls/StepPage/StepPage\";\r\n\r\nimport {CONTROL_TYPES} from 'Core/Constant';\r\nimport {PortletSpace} from \"Core/Controls/PortletSpace/PortletSpace\";\r\nimport {BulkEmail} from \"Core/Controls/BulkEmail/BulkEmail\";\r\nimport {GenericButton} from \"Core/Controls/GenericButton/GenericButton\";\r\nimport {InvoicingControl} from \"Core/Controls/Invoicing/InvoicingControl\";\r\nimport {FinancialDashboard} from 'Core/Controls/FinancialDashboard/FinancialDashboard';\r\nimport {ButtonCopy} from 'Core/Controls/ButtonCopy/ButtonCopy';\r\nimport {Currency} from \"Core/Controls/Currency/Currency\";\r\nimport {Planner} from \"Core/Controls/Planner/Planner\";\r\nimport {PlannerPage} from \"Core/Controls/PlannerPage/PlannerPage\";\r\nimport {PlannerLevel} from \"./PlannerLevel/PlannerLevel\";\r\nimport {IFrame} from \"Core/Controls/IFrame/IFrame\";\r\nimport {ProductConfigurator} from \"Core/Controls/ProductConfigurator/ProductConfigurator\";\r\nimport {Spim} from \"./Spim/Spim\";\r\nimport {SPIMCopy} from \"Core/Controls/SpimCopy/SpimCopy\";\r\nimport {Book} from './Book/Book';\r\nimport {Timer} from './Timer/Timer';\r\nimport {Signature} from \"./Signature/Signature\";\r\nimport {SpreadsheetControl} from './Spreadsheet/SpreadsheetControl';\r\nimport {ChartControl} from './Chart/ChartControl';\r\nimport {RecipeEditor} from \"./RecipeEditor/RecipeEditor\";\r\nimport { IFrameExtension } from './IFrameExtension/IFrameExtension'\r\n\r\nconst controlTypeNameToControlClass = {\r\n [CONTROL_TYPES.Text]: Text,\r\n [CONTROL_TYPES.Dropdown]: Dropdown,\r\n [CONTROL_TYPES.ButtonEdit]: ButtonEdit,\r\n [CONTROL_TYPES.ButtonDelete]: ButtonDelete,\r\n [CONTROL_TYPES.ButtonListScreen]: ButtonListScreen,\r\n [CONTROL_TYPES.ButtonSpecialScreen]: ButtonSpecialScreen,\r\n [CONTROL_TYPES.ButtonDashboardScreen] : ButtonDashboardScreen,\r\n [CONTROL_TYPES.ButtonGoogleMaps]: ButtonGoogleMaps,\r\n [CONTROL_TYPES.ButtonSecurityReset]: ButtonSecurityReset,\r\n [CONTROL_TYPES.ButtonFollowUp]: ButtonFollowUp,\r\n [CONTROL_TYPES.History]: History,\r\n [CONTROL_TYPES.Tab]: Tab,\r\n [CONTROL_TYPES.TabPage]: TabPage,\r\n [CONTROL_TYPES.Image]: Image,\r\n [CONTROL_TYPES.MultiSelect]: MultiSelect,\r\n [CONTROL_TYPES.Checkbox]: Checkbox,\r\n [CONTROL_TYPES.DateTime]: DateTime,\r\n [CONTROL_TYPES.Drop]: Drop,\r\n [CONTROL_TYPES.RadioButton]: RadioButton,\r\n [CONTROL_TYPES.Grid]: Grid,\r\n [CONTROL_TYPES.Group]: Group,\r\n [CONTROL_TYPES.PortletBar]: PortletBar,\r\n [CONTROL_TYPES.Label]: Label,\r\n [CONTROL_TYPES.Memo]: Memo,\r\n [CONTROL_TYPES.Document]: Document,\r\n [CONTROL_TYPES.ButtonReturn]: ButtonReturn,\r\n [CONTROL_TYPES.Kanban]: KanbanBoard,\r\n [CONTROL_TYPES.SelectUser]: SelectUser,\r\n [CONTROL_TYPES.ButtonPrint]: ButtonPrint,\r\n [CONTROL_TYPES.ButtonLinkedIn]: ButtonLinkedIn,\r\n [CONTROL_TYPES.ButtonTree]: ButtonTree,\r\n [CONTROL_TYPES.Password]: Password,\r\n [CONTROL_TYPES.ColorSelector]: ColorSelector,\r\n [CONTROL_TYPES.Agenda]: Agenda,\r\n [CONTROL_TYPES.Mail]: Mail,\r\n [CONTROL_TYPES.Scheduler]: Scheduler,\r\n [CONTROL_TYPES.LinkList]: LinkList,\r\n [CONTROL_TYPES.DatabaseDesigner]: DatabaseDesigner,\r\n [CONTROL_TYPES.FormDesigner]: FormDesigner,\r\n [CONTROL_TYPES.LifestatusDesigner]: LifestatusDesigner,\r\n [CONTROL_TYPES.QueryBuilder]: QueryBuilder,\r\n [CONTROL_TYPES.TableSecurity]: TableSecurity,\r\n [CONTROL_TYPES.TypeSecurity]: TypeSecurity,\r\n [CONTROL_TYPES.RecordSecurity]: RecordSecurity,\r\n [CONTROL_TYPES.UserSecurity]: UserSecurity,\r\n [CONTROL_TYPES.UserAllowance]: UserAllowance,\r\n [CONTROL_TYPES.RecordSharing]: RecordSharing,\r\n [CONTROL_TYPES.ButtonFavorite]: ButtonFavorite,\r\n [CONTROL_TYPES.Search]: Search,\r\n [CONTROL_TYPES.ButtonCancel]: ButtonCancel,\r\n [CONTROL_TYPES.ButtonSave]: ButtonSave,\r\n [CONTROL_TYPES.TimeWriting]: TimeWriting,\r\n [CONTROL_TYPES.ButtonTemplate]: ButtonTemplate,\r\n [CONTROL_TYPES.TemplateDesigner]: TemplateDesigner,\r\n [CONTROL_TYPES.RssFeed]: RssFeed,\r\n [CONTROL_TYPES.Alias]: Alias,\r\n [CONTROL_TYPES.CrystalViewer]: CrystalReportViewer,\r\n [CONTROL_TYPES.Tag]: Tag,\r\n [CONTROL_TYPES.FieldSecurity]: FieldSecurity,\r\n [CONTROL_TYPES.ButtonAdd]: ButtonAdd,\r\n [CONTROL_TYPES.ButtonConsultScreen]: ButtonConsultScreen,\r\n [CONTROL_TYPES.Basket]: Basket,\r\n [CONTROL_TYPES.QueryResult]: QueryResult,\r\n [CONTROL_TYPES.PortletSpace]: PortletSpace,\r\n [CONTROL_TYPES.GanttChart]: GanttChart,\r\n [CONTROL_TYPES.BulkEmail]: BulkEmail,\r\n [CONTROL_TYPES.GenericButton]: GenericButton,\r\n [CONTROL_TYPES.Invoicing]: InvoicingControl,\r\n [CONTROL_TYPES.FinancialDashboard]: FinancialDashboard,\r\n [CONTROL_TYPES.ButtonCopy]: ButtonCopy,\r\n [CONTROL_TYPES.Currency]: Currency,\r\n [CONTROL_TYPES.Planner]: Planner,\r\n [CONTROL_TYPES.PlannerPage]: PlannerPage,\r\n [CONTROL_TYPES.PlannerLevel]: PlannerLevel,\r\n [CONTROL_TYPES.IFrame]: IFrame,\r\n [CONTROL_TYPES.ProductConfigurator]: ProductConfigurator,\r\n [CONTROL_TYPES.Spim]: Spim,\r\n [CONTROL_TYPES.SpimCopy]: SPIMCopy,\r\n [CONTROL_TYPES.Book]: Book,\r\n [CONTROL_TYPES.Timer]: Timer,\r\n [CONTROL_TYPES.Signature]: Signature,\r\n [CONTROL_TYPES.Spreadsheet]: SpreadsheetControl,\r\n [CONTROL_TYPES.Chart]: ChartControl,\r\n [CONTROL_TYPES.RecipeEditor]: RecipeEditor,\r\n [CONTROL_TYPES.Maps]: Maps,\r\n [CONTROL_TYPES.IFrameExtension]: IFrameExtension,\r\n [CONTROL_TYPES.Step]: Step,\r\n [CONTROL_TYPES.StepPage]: StepPage,\r\n [CONTROL_TYPES.ButtonPlan]: ButtonPlan\r\n};\r\n\r\nexport class ControlFactory {\r\n static CreateControl(params: IControlParam): IControl {\r\n let model = params.Model;\r\n\r\n let control = null;\r\n\r\n let ControlClass = controlTypeNameToControlClass[model.TypeName];\r\n\r\n if (ControlClass) {\r\n params.CreateControl = this.CreateControl;\r\n control = new ControlClass(params); \r\n }\r\n\r\n if (!control) {\r\n console.log(`Not implemented control: ${model.TypeName}`);\r\n console.log(model);\r\n }\r\n\r\n return control;\r\n }\r\n}\r\n","import {FIELD_TYPES} from 'Core/Constant';\r\n\r\nexport const ICON_CLASSES = {};\r\n\r\nICON_CLASSES[FIELD_TYPES.Time] = 'glyphicon-time';\r\nICON_CLASSES[FIELD_TYPES.TimeSpan] = 'glyphicon-time';\r\nICON_CLASSES[FIELD_TYPES.Date] = 'glyphicon-calendar';\r\nICON_CLASSES[FIELD_TYPES.DateTime] = 'glyphicon-calendar';","import * as $ from 'jquery';\r\nimport * as moment from 'moment';\r\n\r\nimport { DATE_FORMATS } from 'Core/Constants/DateTimeFormats';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\n\r\nexport class WeekFormatUtils{\r\n\r\n public static GetLocalizedWeekFormat() {\r\n return DATE_FORMATS.YYYY_WW.MomentFormat.replace(/-/g, FormatConverter.GetDateLocalizedSeparator());\r\n }\r\n\r\n public static PatchWeekFormatOptions(options: object) {\r\n return { ...options, format: 'L', calendarWeeks: true };\r\n }\r\n\r\n public static PatchWeekFormatInput(input: HTMLInputElement, format: string) {\r\n $(input)\r\n .data('getWeekFormat', (value: string) => {\r\n const valueMoment = moment(value, format);\r\n return valueMoment.isValid() ? valueMoment.format('L') : undefined;\r\n })\r\n .data('setWeekFormat', (value: string) => {\r\n const valueMoment = moment(value, 'L');\r\n return valueMoment.isValid() ? valueMoment.format(format) : undefined;\r\n });\r\n\r\n input.addEventListener(\r\n 'input',\r\n () => {\r\n // Reset saved value if manually changed\r\n $(input).data('savedValue', null);\r\n },\r\n true\r\n );\r\n }\r\n}\r\n","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class RecordKeyModel {\r\n\t@deserialize\r\n\tFieldId: number;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n}\r\n\r\nexport class DocumentDataModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.RecordKeys = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tData: any;\r\n\r\n\t@deserializeAs(RecordKeyModel)\r\n\tRecordKeys: Array<RecordKeyModel>;\r\n\r\n\t@deserialize\r\n\tIsEnableMail: boolean;\r\n\r\n\t@deserialize\r\n\tApprovalName: string;\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {URL} from 'Core/Common/Url';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {DocumentDataModel} from 'Core/Controls/Document/DocumentDataModel';\r\n\r\nexport interface IGetDocumentDataRequestModel {\r\n\tSubjectEntityId : number;\r\n\tSubjectRecordId : number;\r\n\tFieldId: number;\r\n};\r\n\r\nexport class DocumentStore {\r\n\tstatic GetData(params: IGetDocumentDataRequestModel): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentsApi/GetData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic GetDocumentEntityId(): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentsApi/GetDocumentEntityId',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic Deserialize(jsonObject: any): DocumentDataModel {\r\n\t\treturn GenericDeserialize<DocumentDataModel>(jsonObject.ResultObject, DocumentDataModel);\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nexport class DropFileModel {\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TempName: string;\r\n\r\n\t@deserialize\r\n\tType: string;\r\n\r\n\t@deserialize\r\n\tVersion: number;\r\n\r\n\t@deserialize\r\n\tStatus: number;\r\n\r\n\t@deserialize\r\n\tBase64Data: string;\r\n\r\n\tTypeId: number;\r\n}","import {deserialize, deserializeAs, Deserialize} from 'libs/cerialize';\r\nimport {DropFileModel} from 'Core/Controls/Drop/Models/DropFileModel';\r\n\r\n\r\n\r\nexport class DropDataModel {\r\n\tconstructor() {\r\n\t\tthis.DropFileModels = [];\r\n\t}\r\n\t@deserialize\r\n\tEntityRecordId: number;\r\n\r\n\t@deserialize\r\n\tDocumentRecordId: number;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tDocumentEntityId: number;\r\n\r\n\t@deserialize\r\n\tDocumentSubEntityId: number;\r\n\r\n\t@deserialize\r\n\tControlId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tFType: number;\r\n\r\n\t@deserialize\r\n\tExtension: string;\r\n\r\n\t@deserialize\r\n\tFileError: string = \"\";\r\n\r\n\t@deserialize\r\n\tLoadingProgress: number = 0;\r\n\t\r\n\t@deserializeAs(DropFileModel)\r\n\tDropFileModels: Array<DropFileModel>;\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {Modal} from 'Core/Common/Modal';\r\n\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel'\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\n\r\nimport TruncateFileName from 'Core/Common/TruncateFileName';\r\n\r\nimport {DropDataStore} from 'Core/Controls/Drop/Stores/DropDataStore';\r\nimport {DropFileModel} from 'Core/Controls/Drop/Models/DropFileModel';\r\nimport {DropDataModel} from 'Core/Controls/Drop/Models/DropDataModel';\r\nimport {UploadChunkModel} from 'Core/Controls/Drop/Models/UploadChunkModel';\r\nimport {Guid} from \"Core/Common/Guid\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport DropFilesModalTemplate from 'Core/Controls/Drop/Templates/DropFilesModal.html'\r\nimport { Notifier } from '../../Common/Notifier';\r\nimport {GetLimitOfUploadedDocumentsRequestModel} from \"./Models/GetLimitOfUploadedDocumentsRequestModel\";\r\nimport {BlockUI} from \"../../Common/BlockUi\";\r\nimport { P } from 'Core/Common/Promise';\r\n\r\n\r\nko.templates['Core/Controls/Drop/Templates/DropFilesModal'] = DropFilesModalTemplate;\r\n\r\ninterface DropFilesModalOptions {\r\n DocumentEntityId: number;\r\n DocumentTypeId?: number;\r\n OnOkayCallBack: Function;\r\n OnCloseCallBack: Function;\r\n ScreenTypeName: string;\r\n HasDwPackage: boolean;\r\n DestinationTypeId?: number;\r\n}\r\n\r\nexport class DropFilesModal {\r\n private _modal: Modal;\r\n private OnOkayCallBack: Function;\r\n private OnCloseCallBack: Function;\r\n private _files: KnockoutObservableArray<DropDataModel>;\r\n private _checkedFiles: KnockoutObservableArray<any> = ko.observableArray([]);\r\n private _hasCustomTypes: KnockoutObservable<boolean> = ko.observable(true);\r\n private _allFilesCheck: KnockoutObservable<boolean> = ko.observable(true);\r\n private _uploadingStarted: KnockoutObservable<boolean> = ko.observable(false);\r\n private _uploadingFinished: KnockoutObservable<boolean> = ko.observable(false);\r\n private _allSelectValue: KnockoutObservable<number> = ko.observable(null);\r\n private _showOkayButton: KnockoutObservable<boolean> = ko.observable(false);\r\n private _originalFiles = [];\r\n private _entityTypes: KnockoutObservableArray<TableTypeModel> = ko.observableArray([]);\r\n private _isConsultScreen: boolean;\r\n private _readyFiles: object[];\r\n private _labels = LABELS;\r\n private _filesTypeSelected: KnockoutComputed<boolean>;\r\n private _affectedRecords: KnockoutObservable<number> = ko.observable(null);\r\n private _hasDwPackage: boolean;\r\n private _requiredXlsxFields: KnockoutObservableArray<string>;\r\n private _nonrequiredXlsxFields: KnockoutObservableArray<string>;\r\n private _hasMissingFields: KnockoutComputed<boolean>;\r\n private _disabledElment: KnockoutComputed<boolean>;\r\n private _destinationTypeId: number;\r\n\r\n constructor(options: DropFilesModalOptions) {\r\n this._requiredXlsxFields = ko.observableArray([]);\r\n this._nonrequiredXlsxFields = ko.observableArray([]);\r\n this._hasMissingFields = ko.computed(()=> this._requiredXlsxFields().length != 0 || this._nonrequiredXlsxFields().length != 0);\r\n\r\n this._destinationTypeId = options.DestinationTypeId;\r\n\r\n this._hasDwPackage = options.HasDwPackage;\r\n this._files = ko.observableArray([]);\r\n this.OnOkayCallBack = options.OnOkayCallBack;\r\n this.OnCloseCallBack = options.OnCloseCallBack;\r\n this._filesTypeSelected = ko.computed(() => {\r\n if(this._requiredXlsxFields().length > 0){\r\n return false;\r\n }\r\n\r\n if (!this._hasCustomTypes()) {\r\n return true;\r\n }\r\n\r\n const checkedFiles = this._files().filter((file, index) => this._checkedFiles().indexOf(index) > -1);\r\n return _.every(checkedFiles, file => file.FType > 0);\r\n });\r\n\r\n this._disabledElment =ko.computed(()=> this._uploadingStarted() || (!!this._destinationTypeId && !this._hasDwPackage) );\r\n\r\n this._isConsultScreen = options.ScreenTypeName === ScreenTypes[ScreenTypes.ConsultScreen];\r\n\r\n this._modal = new Modal({\r\n minWidth: 368,\r\n maxWidth: \"100%\",\r\n height: 'auto',\r\n minHeight: 100,\r\n closeButton: false,\r\n onClose: this.OnClose,\r\n addClass: \"drop-files-modal-main\"\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n if (options.DocumentTypeId !== undefined) {\r\n this._hasCustomTypes(false);\r\n } else {\r\n EntityTypesStore.GetTypes({\r\n EntityId: options.DocumentEntityId,\r\n ParentTypeId: 0,\r\n WithRoot: true,\r\n OnlyEnabled: true,\r\n EntityName: null\r\n })\r\n .then(tableTypesModel => {\r\n const types = tableTypesModel.TableTypes.filter(type => type.IsEnabled);\r\n if (types.length) {\r\n if (types.length === 1 && types[0].Name === '-') {\r\n this._hasCustomTypes(false);\r\n }\r\n } else {\r\n this._hasCustomTypes(false);\r\n }\r\n if (types.length === 1) {\r\n const singleTypeId = _.first(types).Id;\r\n _.each(this._files(), file => { file.FType = singleTypeId; });\r\n this._hasCustomTypes(false);\r\n }\r\n\r\n _.each(types, type => type.TranslatedName = type.TranslatedName || type.Name);\r\n this._entityTypes(types);\r\n\r\n if(!!this._destinationTypeId){\r\n _.each(this._files(), file => { file.FType = this._destinationTypeId; });\r\n let files = this._files();\r\n this._files([]);\r\n this._files(files);\r\n\r\n if(!this._hasDwPackage){\r\n this.OnOkay();\r\n }\r\n }\r\n\r\n });\r\n }\r\n this.SubscribeObservables();\r\n }\r\n\r\n private SetOptionDisable(option, value) {\r\n ko.applyBindingsToNode(option, {\r\n disable: !value\r\n }, value);\r\n }\r\n\r\n private SubscribeObservables() {\r\n let changinFromSubscription = false;\r\n this._allFilesCheck.subscribe(newValue => {\r\n if (changinFromSubscription) {\r\n changinFromSubscription = false;\r\n return;\r\n }\r\n const newdata = [];\r\n if (newValue) {\r\n const files = this._files();\r\n const filesCount = files.length;\r\n for (let i = 0; i < filesCount; i++) {\r\n if (!files[i].FileError) {\r\n newdata.push(i);\r\n }\r\n }\r\n }\r\n this._checkedFiles(newdata);\r\n });\r\n\r\n this._checkedFiles.subscribe(newValue => {\r\n const currentValue = this._allFilesCheck();\r\n const filesWithoutErrors = this._files().filter(file => !file.FileError);\r\n const filesCount = filesWithoutErrors ? filesWithoutErrors.length : 0;\r\n if (newValue.length === filesCount && !currentValue) {\r\n changinFromSubscription = true;\r\n this._allFilesCheck(true);\r\n } else if (newValue.length !== filesCount && currentValue) {\r\n changinFromSubscription = true;\r\n this._allFilesCheck(false);\r\n }\r\n });\r\n\r\n this._allSelectValue.subscribe(newValue => {\r\n if (newValue) {\r\n this._files(this._files().map(file => {\r\n file.FType = newValue;\r\n return Object.assign(new DropDataModel(), file);\r\n }))\r\n }\r\n });\r\n }\r\n\r\n private OnClose = () => {\r\n this._files([]);\r\n this._allFilesCheck(true);\r\n this._checkedFiles([]);\r\n this._originalFiles = [];\r\n this._uploadingFinished(false);\r\n this._uploadingStarted(false);\r\n this._showOkayButton(false);\r\n this._readyFiles = [];\r\n }\r\n \r\n public OnOkay (hideModal?:boolean): Promise<void>{\r\n return this.Upload(false, hideModal);\r\n }\r\n\r\n private Upload(validateSpreadsheet: boolean, hideModal?:boolean): Promise<void>{\r\n const files = this._files();\r\n\r\n const checkedFiles = this._checkedFiles() .map((fileIndex) => {\r\n return {\r\n dropDataModel: files[fileIndex],\r\n index: fileIndex,\r\n file: this._originalFiles[fileIndex]\r\n }\r\n });\r\n\r\n if(this._isConsultScreen && checkedFiles && _.any(checkedFiles) && _.first(checkedFiles).dropDataModel){\r\n const checkFile = _.first(checkedFiles);\r\n const getLimitAmountOfDocumentsModel = {\r\n EntityId: checkFile.dropDataModel.EntityId,\r\n DocumentEntityId: checkFile.dropDataModel.DocumentEntityId,\r\n ControlId: checkFile.dropDataModel.ControlId,\r\n EntityRecordId: checkFile.dropDataModel.EntityRecordId\r\n }\r\n\r\n this.CheckLimitAndSendDocuments(getLimitAmountOfDocumentsModel, checkedFiles, validateSpreadsheet);\r\n } else {\r\n return this.SendDocuments(checkedFiles, validateSpreadsheet, hideModal);\r\n }\r\n }\r\n\r\n public Open() {\r\n this._requiredXlsxFields([]);\r\n this._nonrequiredXlsxFields([])\r\n this._modal.Show();\r\n }\r\n\r\n public Close() {\r\n this._modal.Close();\r\n if (this._isConsultScreen && this._uploadingFinished()) {\r\n this.OnCloseCallBack();\r\n }\r\n }\r\n\r\n public AddFile(dropDataModel: DropDataModel, file: File) {\r\n\r\n if(this._files().length == 1 && this._hasDwPackage){\r\n new Notifier().Failed(this._labels.CANNOT_UPLOAD_MULTIPLE_FILES);\r\n return;\r\n }\r\n\r\n if(file.size == 0){\r\n dropDataModel.FileError = 'Error uploading file';\r\n }\r\n\r\n const entityTypes = this._entityTypes();\r\n if(entityTypes && entityTypes.length === 1){\r\n const singleTypeId = _.first(entityTypes).Id;\r\n dropDataModel.FType = singleTypeId;\r\n }\r\n\r\n this._originalFiles.push(file);\r\n this._checkedFiles.push(this._files().length);\r\n this._files.push(dropDataModel);\r\n this._allFilesCheck(true);\r\n\r\n if(this._hasDwPackage){\r\n this.Upload(true);\r\n }\r\n }\r\n\r\n private SendDocuments(files, validateSpreadsheet: boolean, hideModal?:boolean): Promise<void> {\r\n \r\n if (hideModal){\r\n BlockUI.Block();\r\n }\r\n this._uploadingStarted(true);\r\n return Promise.all(\r\n files.map(f=>this.SendDocument(f, validateSpreadsheet))\r\n\r\n ).then(result => {\r\n if (hideModal){\r\n BlockUI.Unblock();\r\n }\r\n if (!this._isConsultScreen) {\r\n const filesWithoutErrors = result.filter(file => file !== false);\r\n\r\n if (filesWithoutErrors.length === result.length) {\r\n this.OnOkayCallBack(result);\r\n this.Close();\r\n } else {\r\n this._readyFiles = filesWithoutErrors as object[];\r\n this._showOkayButton(true);\r\n }\r\n }\r\n if(validateSpreadsheet){\r\n this._uploadingStarted(false);\r\n }\r\n else{ \r\n this._uploadingFinished(true);\r\n }\r\n\r\n if(this._destinationTypeId && this._destinationTypeId != 0 && !this._hasDwPackage){\r\n this.Open();\r\n }\r\n }); \r\n }\r\n\r\n private CheckLimitAndSendDocuments(model: GetLimitOfUploadedDocumentsRequestModel, files, validateSpreadsheet: boolean){\r\n DropDataStore.GetLimitOfUploadedDocuments(model)\r\n .fail(err=>{\r\n new Notifier().Failed(err.message);\r\n })\r\n .then(result => {\r\n if(result.IsLimitOfUploadedDocumentsSet && result.DocumentsQuantityLeftToLink == 0){\r\n new Notifier().Failed(this._labels.MAXIMUM_AMOUNT_OF_LINKED_DOCUMENTS_REACHED);\r\n return;\r\n }\r\n\r\n let documents = files;\r\n if(result.IsLimitOfUploadedDocumentsSet && files.length > result.DocumentsQuantityLeftToLink){\r\n const warningMessage = this._labels.MAXIMUM_LINKED_DOCUMENTS_REACHED_ONLY_FILES_WERE_UPLOADED\r\n .replace('{filesAmount}', `${result.DocumentsQuantityLeftToLink}`);\r\n new Notifier().Warning(warningMessage);\r\n documents = _.first(files, result.DocumentsQuantityLeftToLink)\r\n }\r\n\r\n this.SendDocuments(documents, validateSpreadsheet);\r\n });\r\n }\r\n\r\n private OnOkayWhenError = () => {\r\n this.OnOkayCallBack(this._readyFiles);\r\n this.Close();\r\n }\r\n\r\n private ChangeFile(index: number, key: string, value: any) {\r\n const files = this._files();\r\n files[index] = Object.assign(new DropDataModel(), files[index], {[key]: value});\r\n this._files([].concat(files));\r\n }\r\n\r\n private SendDocument = ({dropDataModel, file, index}, validateSpreadsheet: boolean) => {\r\n return new Promise(resolve => {\r\n const attachment = new DropFileModel();\r\n\r\n attachment.Name = TruncateFileName(dropDataModel.Name);\r\n attachment.Status = 0;\r\n attachment.Version = 1;\r\n attachment.Type = dropDataModel.Name.substr(dropDataModel.Name.lastIndexOf('.'));\r\n attachment.TypeId = this._destinationTypeId? this._destinationTypeId : dropDataModel.FType;\r\n\r\n //Append random number to file name to make it unique\r\n attachment.TempName = Guid.NewGuid();\r\n\r\n if(!validateSpreadsheet){\r\n dropDataModel.DropFileModels.push(attachment);\r\n }\r\n\r\n var maxFileSizeKb = 100;\r\n\r\n var fileChunks = [];\r\n\r\n var bufferChunkSizeInBytes = maxFileSizeKb * (1024);\r\n\r\n var currentStreamPosition = 0;\r\n var endPosition = bufferChunkSizeInBytes;\r\n var size = file.size;\r\n\r\n this.ChangeFile(index, \"LoadingProgress\", 10);\r\n\r\n while (currentStreamPosition < size) {\r\n fileChunks.push(file.slice(currentStreamPosition, endPosition));\r\n currentStreamPosition = endPosition;\r\n endPosition = currentStreamPosition + bufferChunkSizeInBytes;\r\n }\r\n\r\n if(fileChunks.length == 0){\r\n resolve(true);\r\n this.ChangeFile(index, \"FileError\", \"Error uploading file\");\r\n this.ChangeFile(index, \"LoadingProgress\", 0);\r\n return;\r\n }\r\n\r\n const OnError = (): void => {\r\n this.ChangeFile(index, \"FileError\", \"Error uploading file\");\r\n this.ChangeFile(index, \"LoadingProgress\", 0);\r\n resolve(false);\r\n };\r\n\r\n this.UploadFileChunk(fileChunks, attachment.TempName, 1, fileChunks.length).then(result => {\r\n if (!result) {\r\n OnError();\r\n } else {\r\n if (this._isConsultScreen) {\r\n\r\n if(validateSpreadsheet){\r\n DropDataStore\r\n .ValidateSreadsheet({ TempName: attachment.TempName, ControlId: dropDataModel.ControlId })\r\n .then((result)=>{\r\n \r\n this._nonrequiredXlsxFields(result.NonrequiredFields);\r\n this._requiredXlsxFields(result.RequiredFields);\r\n\r\n resolve(true);\r\n this.ChangeFile(index, \"LoadingProgress\", 100);\r\n });\r\n }else{\r\n DropDataStore.InsertDropDocument(dropDataModel)\r\n .fail(err=>{\r\n new Notifier().Failed(err.message);\r\n resolve(true);\r\n this.ChangeFile(index, \"LoadingProgress\", 100);\r\n this._files.splice(this._files.length - 1, 1);\r\n })\r\n .then(result => {\r\n if(!!result){\r\n this._affectedRecords(result);\r\n }\r\n \r\n resolve(true);\r\n this.ChangeFile(index, \"LoadingProgress\", 100);\r\n });\r\n }\r\n } else {\r\n resolve(attachment);\r\n }\r\n }\r\n }\r\n );\r\n });\r\n }\r\n\r\n private SaveDocument(){\r\n \r\n }\r\n\r\n private UploadFileChunk(fileChunks, fileName, currentPart, totalPart) {\r\n var self = this;\r\n return new Promise(resolve => {\r\n var uploadChunkModel = new UploadChunkModel();\r\n uploadChunkModel.FileName = fileName;\r\n uploadChunkModel.FileChunk = fileChunks[currentPart - 1];\r\n\r\n DropDataStore.UploadFileChunk(uploadChunkModel)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n resolve(false);\r\n } else {\r\n if (totalPart >= currentPart) {\r\n if (totalPart === currentPart) {\r\n //Whole file uploaded\r\n resolve(true);\r\n } else {\r\n //Show uploading progress\r\n self.UploadFileChunk(fileChunks, fileName, currentPart + 1, totalPart).then(result => {\r\n resolve(result);\r\n });\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n private OnSelectTableType = index => (data, event) => {\r\n this._allSelectValue(null);\r\n this.ChangeFile(index, \"FType\", Number(event.currentTarget.value));\r\n }\r\n\r\n public Destroy = () => {\r\n this._modal.Destroy();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Controls/Drop/Templates/DropFilesModal';\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"drop-files-modal box-shadow-wrapper\\\"> <!-- ko text: _labels.UPLOAD_FILES --><!-- /ko --> <!-- ko if: _files().length > 1 --> <div> <input type=\\\"checkbox\\\" name=\\\"all-files-checker\\\" data-bind=\\\"attr: {disabled: _disabledElment}, checked : _allFilesCheck\\\"/> <!-- ko if: _hasCustomTypes --> <select data-bind=\\\"\\r\\n\\t\\t\\t\\toptions: _entityTypes,\\r\\n\\t\\t\\t\\toptionsText: 'TranslatedName',\\r\\n\\t\\t\\t\\toptionsValue: 'Id',\\r\\n\\t\\t\\t\\tvalue: _allSelectValue,\\r\\n\\t\\t\\t\\toptionsCaption : _labels.SELECT_LABEL,\\r\\n\\t\\t\\t\\tattr: {disabled: _disabledElment},\\r\\n\\t\\t\\t\\ttooltip: {content: _labels.SELECT_A_TYPE_FOR_ALL_RECORDS}\\\" class=\\\"form-control input-inline table-type-select pull-right\\\"></select> <!-- /ko --> </div> <!-- /ko --> <!-- ko foreach: _files --> <figure class=\\\"file-info\\\"> <label class=\\\"file-label\\\"> <input class=\\\"file-checkbox\\\" type=\\\"checkbox\\\" name=\\\"file-checker\\\" data-bind=\\\"attr: {disabled: ($parent._disabledElment() || !!FileError)}, checkedValue: $index(), checked: $root._checkedFiles\\\"/> <!-- ko if: (!FileError && LoadingProgress === 100) --> <i class=\\\"status-icon success fa fa-check-circle\\\"></i> <!-- /ko --> <!-- ko if: (!FileError && LoadingProgress === 10) --> <i class=\\\"status-icon fa fa-spinner rotations\\\"></i> <!-- /ko --> <!-- ko if: FileError --> <i class=\\\"status-icon error fa fa-exclamation-circle\\\"></i> <!-- /ko --> <figcaption class=\\\"file-ext\\\"> <span class=\\\"file-ext-text\\\" data-bind=\\\"text: Extension\\\"></span> </figcaption> <span class=\\\"file-description\\\"> <span data-bind=\\\"text: Name, attr: {title: Name},css: {error: FileError}\\\" class=\\\"file-name\\\"></span> <!-- ko if: FileError --> <p class=\\\"error-text\\\" data-bind=\\\"text: FileError\\\"></p> <!-- /ko --> </span> </label> <!-- ko if: $parent._hasCustomTypes --> <select data-bind=\\\"\\r\\n\\t\\t\\t\\toptions: $parent._entityTypes,\\r\\n\\t\\t\\t\\toptionsText: 'TranslatedName',\\r\\n\\t\\t\\t\\toptionsValue: 'Id',\\r\\n\\t\\t\\t\\tvalue: FType,\\r\\n\\t\\t\\t\\toptionsCaption : $parent._labels.SELECT_LABEL +'...',\\r\\n\\t\\t\\t\\toptionsAfterRender: $parent.SetOptionDisable,\\r\\n\\t\\t\\t\\tattr: {disabled: ($parent._uploadingStarted() || !!$parent._destinationTypeId || !!FileError)},\\r\\n\\t\\t\\t\\tevent: {change: $parent.OnSelectTableType($index())}\\\" class=\\\"form-control input-inline table-type-select\\\"></select> <!-- /ko --> <!-- ko if: $parent._affectedRecords() != null --> <span class=\\\"affectedRecords\\\"><!-- ko text: $parent._affectedRecords --><!-- /ko --> <!-- ko text: $parent._labels.ROWS_AFFECTED --><!-- /ko --></span> <!-- /ko --> </figure> <!-- /ko --> <!-- ko if: _hasMissingFields --> <div class=\\\"missingFieldsBox\\\"> <div class=\\\"missingFieldsBox_field\\\"><!-- ko text: $data._labels.MISSING_FIELDS --><!-- /ko -->:</div> <!-- ko foreach: _requiredXlsxFields --> <div class=\\\"requiredXlsxFields\\\"><!-- ko text: $data --><!-- /ko --></div> <!-- /ko --> <!-- ko foreach: _nonrequiredXlsxFields --> <div class=\\\"nonRequiredXlsxFields\\\"><!-- ko text: $data --><!-- /ko --></div> <!-- /ko --> </div> <!-- /ko --> <div class=\\\"over-buttons\\\"> <!-- ko if: _showOkayButton --> <button class=\\\"btn btn-success\\\" data-bind=\\\"click: OnOkayWhenError,\\r\\n\\t\\t\\t\\t\\t\\ttext: _labels.OKAY\\\"> </button> <!-- /ko --> <!-- ko ifnot: (_uploadingFinished() || _showOkayButton()) --> <button class=\\\"btn btn-success\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\tattr: {disabled: (_disabledElment() || _checkedFiles().length === 0 || !_filesTypeSelected())},\\r\\n\\t\\t\\t\\tclick: $data.OnOkay.bind($data, false),\\r\\n\\t\\t\\t\\ttext: _isConsultScreen ? _labels.UPLOAD : _labels.SELECT_LABEL\\\"> </button> <!-- /ko --> <button class=\\\"btn btn-warning\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\tattr: {disabled: (_disabledElment() && !_uploadingFinished())},\\r\\n\\t\\t\\t\\ttext: _uploadingFinished ? _labels.CLOSE_LABEL : _labels.CANCEL,\\r\\n\\t\\t\\t\\tclick : Close\\\"> </button> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport 'dropzone'\r\n\r\nimport { IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\n\r\nimport { DEFAULT_ICONS } from 'Core/Constant'\r\nimport { ComplexControl } from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport { RequiredFieldModel } from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport { FIELD_TYPES, TABLE_TYPES } from 'Core/Constant'\r\nimport {CanvasDesignerStore} from 'Core/Controls/CanvasDesigner/Stores/CanvasDesignerStore';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport { DropDataModel } from 'Core/Controls/Drop/Models/DropDataModel';\r\nimport { DropFileModel } from 'Core/Controls/Drop/Models/DropFileModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport { DropFilesModal } from 'Core/Controls/Drop/DropFilesModal';\r\n\r\nimport { ScreenTypes } from 'Core/Common/Enums/ScreenTypes';\r\nimport { EVENTS as DROP_EVENTS } from 'Core/Controls/Drop/Events';\r\n\r\nimport DesignTemplate from 'Core/Controls/Drop/Templates/Design.html'\r\nimport ViewTemplate from 'Core/Controls/Drop/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/Drop/Templates/HelpView.html'\r\nimport EditTemplate from 'Core/Controls/Drop/Templates/Edit.html'\r\nimport ToolBarTemplate from 'Core/Controls/Drop/Templates/ToolBar.html'\r\nimport { LockManager, LOCK_EVENTS } from \"Core/Components/Locker/LockManager\";\r\nimport { BlockUI as BlockUi } from 'Core/Common/BlockUi';\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport { HelpBook } from 'HelpBook/HelpBook';\r\nimport DropConfig from 'Core/Controls/Drop/Configs/drop-config.json';\r\nimport { GeneralProperties } from 'Core/GeneralProperties/GeneralProperties';\r\nimport {NOTIFICATIONS, CONFIRMATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\n\r\n\r\nko.templates['Core/Controls/Drop/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Drop/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Drop/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Drop/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Drop/Templates/Design'] = DesignTemplate;\r\n\r\nconst PROPERTIES = {\r\n\tDATA_IMPORT: \"DataImport\",\r\n\tCANVAS: \"Canvas\"\r\n}\r\n\r\nexport class Drop extends ComplexControl {\r\n\tprivate _value: IControlValue;\r\n\tprivate _files: KnockoutObservableArray<DropFileModel>;\r\n\tprivate _previewFileName: KnockoutObservable<string>;\r\n\tprivate _previewFileImage: KnockoutObservable<string>;\r\n\tprivate _previewFileSize: KnockoutObservable<string>;\r\n\tprivate _noLabel: KnockoutObservable<boolean>;\r\n\tprivate _uploadingStarted: KnockoutObservable<boolean>;\r\n\tprivate _hasData: KnockoutObservable<boolean>;\r\n\tprivate _isLinkedDocumentsAmountLimitReached: KnockoutObservable<boolean>;\r\n\tprivate _uploadCount: number = 0;\r\n\tprivate _modal: DropFilesModal;\r\n\tprivate _hasDwPackage: boolean;\r\n\tprivate _maxFiles: number;\r\n\tprivate _acceptedFiles: string;\r\n\tprivate _hasRollbackData: KnockoutObservable<boolean>;\r\n\tprivate _destinationTypeId: number;\r\n\tprivate _hideModal: boolean;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, DropConfig);\r\n\r\n\t\tthis._maxFiles = null;\r\n\t\tthis._acceptedFiles = null;\r\n\t\tthis._previewFileName = ko.observable('');\r\n\t\tthis._previewFileImage = ko.observable('');\r\n\t\tthis._previewFileSize = ko.observable('');\r\n\t\tthis._files = ko.observableArray([]);\r\n\t\tthis._uploadingStarted = ko.observable(false);\r\n\t\tthis._noLabel = ko.observable(params.Model.LabelPosition === 'NoLabel');\r\n\t\tthis._hasData = ko.observable(false);\r\n\t\tthis._isLinkedDocumentsAmountLimitReached = ko.observable(params.Model.IsLinkedDocumentsAmountLimitReached);\r\n\t\tthis._destinationTypeId = params.Model.DestinationTypeId;\r\n\r\n\t\tthis._hideModal = false;\r\n\r\n\t\tthis.SetDefaultIcon(new Icon(DEFAULT_ICONS.Drop));\r\n\t\tthis.Init();\r\n\t\tthis._hasRollbackData = ko.observable(false);\r\n\r\n\r\n\t\tthis.ApplyProperties();\r\n\t\tif(this._hasDwPackage){\r\n\t\t\tthis.CheckRollback();\r\n\t\t}\t\t\r\n\t\tLockManager.Instance.One(LOCK_EVENTS.RELEASED, this, this.CleanData);\r\n\t}\r\n\r\n\tCleanData = () => {\r\n\t\tthis._modal && this._modal.Destroy();\r\n\t\tthis._modal = null;\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tconst dataImport = this.GeneralProperties.GetPropertyValue(PROPERTIES.DATA_IMPORT);\r\n const dwPackage = this.GeneralProperties.GetPropertyValue(PROPERTIES.CANVAS);\r\n this._hasDwPackage = dataImport && dwPackage > 0;\r\n\r\n\t\tif(this._hasDwPackage){\r\n\t\t\tthis._maxFiles = 1;\r\n\t\t\tthis._acceptedFiles = '.xlsx';\r\n }\r\n\r\n\t\tif(this.GetForm()){\r\n\t\t\tconst screenEntityId = this.GetForm().GetScreen().GetEntityId();\r\n\t\t\tif (this.DocumentEntityId === screenEntityId) {\r\n\t\t\t\tthis._maxFiles = 1;\r\n\t\t\t}\r\n\t\t}\r\n }\r\n\r\n\tprivate GetDwPackageId(): number{\r\n\t\treturn this.GeneralProperties.GetPropertyValue(PROPERTIES.CANVAS);\r\n\t}\r\n\r\n\tExecuteRollback(){\r\n\t\tif (!this._hasRollbackData()){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.ExecuteRollback(this.GetDwPackageId())\r\n .then(()=>{\r\n new Notifier().Success(NOTIFICATIONS.ROLLBACK_APPLIED);\r\n this.CheckRollback();\r\n })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).fail(error => {\r\n new Notifier().Warning(error.message);\r\n });\r\n\t}\r\n\r\n\tCheckRollback(){\r\n\t\tCanvasDesignerStore\r\n\t\t\t.HasRollback(this.GetDwPackageId())\r\n\t\t\t.always(() => {\r\n\t\t\t}).then((res)=>{\r\n this._hasRollbackData(res);\r\n })\r\n .fail(error => {\r\n new Notifier().Warning(error.message);\r\n });\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.AddEvent(DROP_EVENTS.DOCUMENT_UPLOADED);\r\n\r\n\t\tthis._requiredFields([\r\n\t\t\tnew RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('DOCUMENT', FIELD_TYPES.Document, TABLE_TYPES.Sub, null)\r\n\t\t]);\r\n\r\n\t\tthis.InitRequiredFields();\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis._value = value;\r\n\r\n\t\tif (value.SubjectRecordId > 0) {\r\n\t\t\tthis._hasData(true);\r\n\t\t}\r\n\t\tif (this._value.Data.Values) {\r\n\t\t\t_.each(this._value.Data.Values, (file: any) => {\r\n\r\n\t\t\t\tconst attachment = new DropFileModel();\r\n\r\n\t\t\t\tattachment.Name = file.FileName;\r\n\t\t\t\tattachment.Base64Data = file.Content;\r\n\r\n\t\t\t\tthis._files.push(attachment);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t\tko.utils.domNodeDisposal.addDisposeCallback(el[0].parentElement, this.CleanData)\r\n\t}\r\n\r\n\tClick(help, event){\r\n\t\tif (HelpBook.Instance.IsHelpButtonPressed()){\r\n\t\t\tevent.stopImmediatePropagation();\r\n\t\t\tHelpBook.Instance.ShowControlHelp(help);\r\n\t\t} else if (help && help.Model && help.Model.IsLinkedDocumentsAmountLimitReached){\r\n\t\t\tevent.stopImmediatePropagation();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate BlockUi() {\r\n\t\tBlockUi.Block({ Target: this._el });\r\n\t}\r\n\r\n\tprivate UnBlockUi() {\r\n\t\tBlockUi.Unblock(this._el);\r\n\t}\r\n\r\n\tget Files(): KnockoutObservableArray<DropFileModel> {\r\n\t\treturn this._files;\r\n\t}\r\n\r\n\tget DocumentEntityId(): number {\r\n\t\treturn this.FieldModel && this.FieldModel.EntityId;\r\n\t}\r\n\r\n\tget DocumentSubEntityId(): number {\r\n\t\tlet id;\r\n\r\n\t\t_.each(this.GetModel().Fields,\r\n\t\t\tfield => {\r\n\t\t\t\tif (field.EntityId !== this.DocumentEntityId) {\r\n\t\t\t\t\tid = field.EntityId;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn id;\r\n\t}\r\n\r\n\tGetDropZoneLabel() {\r\n\t\tif(this._isLinkedDocumentsAmountLimitReached()){\r\n\t\t\treturn this._labels.MAXIMUM_AMOUNT_OF_LINKED_DOCUMENTS_REACHED;\r\n\t\t}\r\n\r\n\t\treturn this._hasDwPackage ? this._labels.DROP_EXCEL_DOCUMENT_HERE : this._labels.DROP_DOCUMENT_HERE;\r\n\t}\r\n\r\n\tDragOver(data, element) {\r\n\t\t$(element).addClass('dz-drag-hover');\r\n\t}\r\n\r\n\tDragLeave(element, data) {\r\n\t\t$(element).removeClass('dz-drag-hover');\r\n\t}\r\n\r\n\tOpenModal(modalHide?: boolean) {\r\n\t\tthis.CreateModal();\r\n\t\tif (!modalHide){\r\n\t\t\tthis._modal.Open();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate CreateModal(){\r\n\t\tif (!this._modal) {\r\n\t\t\tconst screenEntityId = this.GetForm().GetScreen().GetEntityId();\r\n\t\t\tconst screenSubjectTypeId = this.GetForm().GetScreen().GetTableTypeId();\r\n\t\t\tconst documentTypeId = this.DocumentEntityId === screenEntityId ? screenSubjectTypeId: undefined;\r\n\r\n\t\t\tthis._modal = new DropFilesModal({\r\n\t\t\t\tDocumentEntityId: this.DocumentEntityId,\r\n\t\t\t\tDocumentTypeId: documentTypeId,\r\n\t\t\t\tOnOkayCallBack: this.OnOkayCallBack,\r\n\t\t\t\tOnCloseCallBack: this.OnCloseCallBack,\r\n\t\t\t\tScreenTypeName: this._form.GetScreen().GetTypeName(),\r\n\t\t\t\tHasDwPackage: this._hasDwPackage,\r\n\t\t\t\tDestinationTypeId: this._destinationTypeId\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tOnOkayCallBack = (files) => {\r\n\t\tthis.Files(files);\r\n\t}\r\n\r\n\tOnCloseCallBack = () => {\r\n\t\tthis._form.GetScreen().Refresh();\r\n\t}\r\n\r\n\tAfterUpload(file, data) {\r\n\t\tif (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.ConsultScreen] ||\r\n\t\t\tthis._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n\t\t\tthis._uploadCount++;\r\n\t\t\tconst typeId = this._destinationTypeId? this._destinationTypeId: 0\r\n\t\t\tthis.UploadFile(file, typeId);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic UploadFile(file: File, typeId: number, hideModal = false): Promise<void> {\r\n\t\tthis._hideModal = hideModal;\r\n\t\tthis.OpenModal(this._hideModal);\r\n\t\tconst dropDataModel = new DropDataModel();\r\n\r\n\t\tdropDataModel.EntityId = this._value.SubjectEntityId;\r\n\t\tdropDataModel.EntityRecordId = this._value.SubjectRecordId;\r\n\t\tdropDataModel.DocumentEntityId = this.DocumentEntityId;\r\n\t\tdropDataModel.DocumentSubEntityId = this.DocumentSubEntityId;\r\n\t\tdropDataModel.ControlId = this.GetControlId();\r\n\t\tdropDataModel.FType = typeId;\r\n\t\tdropDataModel.Name = file.name;\r\n\t\tdropDataModel.Extension = /[^.]+$/.exec(file.name)[0];\r\n\r\n\t\tthis._modal.AddFile(dropDataModel, file);\r\n\r\n\t\tif (this._hideModal){\r\n\t\t\treturn this._modal.OnOkay(this._hideModal);\r\n\t\t}\r\n\t}\r\n\r\n\tDeserialize() {\r\n\t\tconst fieldIds = [];\r\n\r\n\t\t_.each(this._model().Fields, (field) => {\r\n\t\t\tfieldIds.push({ EntityId: field.EntityId, FieldId: field.Id });\r\n\t\t});\r\n\r\n\t\tconst files = [];\r\n\r\n\t\t_.each(this._files(), (file) => {\r\n files.push({ FileName: file.Name, TypeId: file.TypeId, TempName: file.TempName });\r\n\t\t});\r\n\r\n\t\treturn { FieldIds: fieldIds, Files: files };\r\n\t}\r\n}","// Module\nvar code = \"<div data-control-type=\\\"drop-control\\\" class=\\\"btn view-button dropzone\\\" data-bind=\\\"click: Click.bind(_help),\\r\\n\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\ttemplate: { afterRender: $data.AfterRender.bind($data) },\\r\\n\\t \\t\\t\\tdropzone:\\r\\n\\t \\t\\t\\t\\t{ url: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t \\t\\t\\tautoProcessQueue: false,\\r\\n\\t\\t\\t\\t \\tpreviewsContainer: false\\r\\n\\t\\t\\t\\t },\\r\\n\\t \\t\\t\\tattr: { 'data-control-position': LabelPosition }\\\"> <label data-bind=\\\"text: $data.Name, css: {hidden: _noLabel}\\\"></label> <div class=\\\"dz-message custom image-message\\\" data-dz-message> <span class=\\\"drop-files-message\\\"> <i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: _labels.DROP_DOCUMENT_HERE --><!-- /ko --> </span> <!-- ko foreach: Files --> <div class=\\\"dz-filename\\\" data-bind=\\\"text: $data.Name, attr: {title: $data.Name}\\\"> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"drop-control\\\" class=\\\"ConsultScreenView dropcontrol-result label-input view-button form-standart-control drop-control\\\" data-bind=\\\"afterRender: $data.AfterRender.bind($data), attr: { 'data-control-position': LabelPosition }\\\"> <div class=\\\"dropzone-wrapper clearfix\\\"> <!-- ko if: $data._value --> <label data-bind=\\\"text: $data.Name,css: {hidden: _noLabel}\\\"></label> <div class=\\\"clearfix form-control control record-field with-label\\\" data-bind=\\\"\\r\\n\\t\\t\\tclick: Click.bind(_help),\\r\\n\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\tdropzone: {\\r\\n\\t\\t\\t\\tmaxFiles: _maxFiles,\\r\\n\\t\\t\\t\\tacceptedFiles: _acceptedFiles,\\r\\n\\t\\t\\t\\turl: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t\\t \\tautoProcessQueue: false,\\r\\n\\t\\t\\t \\tparallelUploads: 10,\\r\\n\\t\\t\\t \\tpreviewsContainer: false\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tattr: {disabled: $data._isLinkedDocumentsAmountLimitReached()},\\r\\n\\t\\t\\tcss: {'drop-excel': $data._hasDwPackage}\\\"> <!-- ko foreach: Files --> <div class=\\\"dz-preview dz-processing dz-image-preview dz-success dz-complete\\\"> <div class=\\\"dz-image\\\"> <i class=\\\"fa fa-file-o\\\" aria-hidden=\\\"true\\\"></i> <span data-bind=\\\"text: $parent._previewFileName\\\" class=\\\"file-name clearfix\\\"></span> </div> </div> <!-- /ko --> <div class=\\\"dz-message custom image-message\\\" data-dz-message> <span class=\\\"drop-files-message\\\"> <!-- ko ifnot: $data._hasDwPackage --> <i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"text\\\" data-bind=\\\"text: GetDropZoneLabel()\\\"></span> <!-- /ko --> <!-- ko if: $data._hasDwPackage --> <span class=\\\"dwPackageBox\\\"> <i class=\\\"fa fa-file-excel-o\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"text\\\" data-bind=\\\"text: GetDropZoneLabel()\\\"></span> </span> <!-- /ko --> </span> </div> <!-- ko if: $data._hasDwPackage --> <a data-bind=\\\"attr: { title: $data._labels.ROLLBACK, disabled: !$data._hasRollbackData() }, click: $data.ExecuteRollback.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default rollback\\\"> <i class=\\\"fa fa-undo\\\"></i> </a> <!-- /ko --> <!--<span class=\\\"drop-files-message\\\">Drop documents here <i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i></span>--> </div> <!-- ko ifnot: $data._hasData--> <div class=\\\"dropzone-blocker\\\"></div> <!--/ko--> <!-- /ko --> <!-- ko ifnot: $data._value --> <label data-bind=\\\"text: $data.Name, css: {hidden: _noLabel}\\\"></label> <div class=\\\"dz-message custom image-message form-control control record-field with-label\\\"> <span class=\\\"dz-prev-message\\\"> <!-- ko text: _labels.HAVE_TO_OPEN_RECORD --><!-- /ko --> <i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"drop-control\\\" class=\\\"ConsultScreenView dropcontrol-result label-input view-button form-standart-control drop-control\\\" data-bind=\\\"afterRender: $data.AfterRender.bind($data), attr: { 'data-control-position': LabelPosition }, click: _help.ShowControlHelp.bind(_help, $data)\\\"> <div class=\\\"dropzone-wrapper clearfix\\\"> <div class=\\\"clearfix form-control control drop-control-input\\\"> <div class=\\\"dz-message custom image-message dropZoneHelpPageControl\\\" data-dz-message> <span class=\\\"drop-files-message\\\"> <i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: _labels.DROP_DOCUMENT_HERE --><!-- /ko --> </span> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"drop-control\\\" class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-newspaper-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"drop-control\\\" class=\\\"FormDesignerView form-designer-view drop-control-container form-standart-control new-control complex-control\\\"> <div class=\\\"portlet light drop-control-portlet\\\" data-bind=\\\"template: { afterRender: $data.AfterRender.bind($data) }\\\"> <div data-bind=\\\"click: Expand, preventBubble: ['click'], css: { expanded: _isExpanded() }\\\" class=\\\"collapse-button toggle-button\\\" data-button=\\\"collapse\\\"> <span data-button=\\\"collapse\\\" class=\\\"link-entity-arrow\\\"></span> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"portlet-title\\\"> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: Title\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\" aria-describedby=\\\"sizing-addon1\\\" placeholder=\\\"\\\" readonly=\\\"readonly\\\"/> <span class=\\\"input-group-addon\\\"> <input data-bind=\\\"uniform: IsEntitySelected, enableAttr: false\\\" type=\\\"checkbox\\\"> </span> <span class=\\\"input-group-btn\\\"> <button class=\\\"btn setting-button\\\" type=\\\"button\\\">...</button> </span> </div> </div> <div data-bind=\\\"visible: IsExpanded\\\" class=\\\"portlet-content\\\"> <div class=\\\"\\\"> <!-- ko foreach: RequiredFields --> <div class=\\\"portlet-body\\\"> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: FieldName\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"\\\" aria-describedby=\\\"sizing-addon1\\\" readonly=\\\"readonly\\\"> <span class=\\\"input-group-addon\\\"> <input data-bind=\\\"uniform: IsSelected, enableAttr: false\\\" type=\\\"checkbox\\\"> </span> <span class=\\\"input-group-btn\\\"> <button class=\\\"btn\\\" type=\\\"button\\\">...</button> </span> </div> </div> <!-- /ko --> </div> </div> </div> </div>\";\n// Exports\nexport default code;","export var EVENTS = {\r\n\tDOCUMENT_UPLOADED: 'DOCUMENT_UPLOADED'\r\n};","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nexport class UploadChunkModel {\r\n\t@deserialize\r\n\tFileName: string;\r\n\r\n\t@deserialize\r\n\tFileChunk: any;\r\n\r\n\tconstructor(fileName?: string, fileChunk?: any) {\r\n\t\tthis.FileName = fileName;\r\n\t\tthis.FileChunk = fileChunk;\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class MissingFieldsDto {\r\n constructor(){\r\n this.NonrequiredFields = [];\r\n this.RequiredFields = [];\r\n }\r\n\r\n @deserialize\r\n NonrequiredFields: Array<string>;\r\n\r\n @deserialize\r\n RequiredFields: Array<string>;\r\n}","\r\nimport {deserialize, deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {DropDataModel} from 'Core/Controls/Drop/Models/DropDataModel';\r\nimport { OperationResultModel } from 'Core/Models/OperationResultModel';\r\nimport { UploadChunkModel } from 'Core/Controls/Drop/Models/UploadChunkModel';\r\nimport { MissingFieldsDto } from 'Core/Controls/Drop/Models/MissingFieldsDto';\r\nimport {GetLimitOfUploadedDocumentsRequestModel} from \"../Models/GetLimitOfUploadedDocumentsRequestModel\";\r\nimport {GetLimitOfUploadedDocumentsResponseModel} from \"../Models/GetLimitOfUploadedDocumentsResponseModel\";\r\n\r\nexport interface IValidateSpreadsheetDto {\r\n ControlId: number;\r\n TempName: string;\r\n}\r\n\r\nexport class DropDataStore {\r\n\r\n\tstatic ValidateSreadsheet(params: IValidateSpreadsheetDto): P.Promise<MissingFieldsDto> {\r\n\t\tvar deferredResult = P.defer<MissingFieldsDto>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DropZoneApi/ValidateSpreadsheet',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(GenericDeserialize(data, MissingFieldsDto));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetLimitOfUploadedDocuments(params: GetLimitOfUploadedDocumentsRequestModel): P.Promise<GetLimitOfUploadedDocumentsResponseModel> {\r\n\t\tvar deferredResult = P.defer<GetLimitOfUploadedDocumentsResponseModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DropZoneApi/GetLimitOfUploadedDocuments',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif(!data.IsSuccessfull){\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic InsertDropDocument(params: DropDataModel): P.Promise<number> {\r\n\t\tvar deferredResult = P.defer<number>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DropZoneApi/InsertDocument',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n if(!data.IsSuccessfull){\r\n deferredResult.reject({ message: data.ErrorMessage });\r\n }else{\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): OperationResultModel {\r\n\t\tvar model = <OperationResultModel>Deserialize(jsonObject, OperationResultModel);\r\n\t\treturn model;\r\n }\r\n\r\n static UploadFileChunk(params: UploadChunkModel): P.Promise<OperationResultModel> {\r\n var deferredResult = P.defer<OperationResultModel>();\r\n var formData = new FormData();\r\n formData.append('file', params.FileChunk, params.FileName);\r\n \r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/DropZoneApi/UploadFileChunk',\r\n type: 'POST',\r\n contentType: false,\r\n processData: false\r\n }, params: formData\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n deferredResult.resolve(this.Deserialize(data));\r\n }).fail((error)=>{\r\n\t\t\t\tdeferredResult.reject({message: error.message});\r\n\t\t\t});\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\n\r\nimport * as ko from 'knockout';\r\n\r\nexport class DropdownItemModel {\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n Label: string;\r\n\r\n @deserialize\r\n Value: string | any;\r\n\r\n @deserialize\r\n Type: string;\r\n\r\n disable?: boolean;\r\n\r\n private _isSelected: KnockoutObservable<boolean> = ko.observable(false);\r\n private _isEnabled: boolean;\r\n\r\n constructor(partial?: Partial<DropdownItemModel>) {\r\n if (partial) {\r\n this.RecordId = partial.RecordId;\r\n this.Label = partial.Label;\r\n this.Value = partial.Value;\r\n }\r\n }\r\n\r\n get IsSelected() {\r\n return this._isSelected();\r\n }\r\n\r\n set IsSelected(value: boolean) {\r\n this._isSelected(value);\r\n }\r\n\r\n get IsEnabled() {\r\n return this._isEnabled;\r\n }\r\n\r\n set IsEnabled(value: boolean) {\r\n this._isEnabled = value;\r\n }\r\n\r\n static Create(recordId: number, label: string, isEnabled: boolean, isSelected: boolean) {\r\n const item = new DropdownItemModel();\r\n\r\n item.RecordId = recordId;\r\n item.Label = label;\r\n item._isEnabled = isEnabled;\r\n item._isSelected(isSelected);\r\n\r\n return item;\r\n }\r\n}\r\n\r\nexport class DropdownListModel {\r\n constructor() {\r\n this.Items = [];\r\n this.RecordsCount = 0;\r\n }\r\n\r\n @deserialize\r\n ErrorMessage: string;\r\n\r\n @deserialize\r\n RecordsCount: number;\r\n\r\n @deserializeAs(DropdownItemModel)\r\n Items: Array<DropdownItemModel>;\r\n}\r\n\r\nexport class FastFilterRangeModel {\r\n\r\n @deserialize\r\n MaxValue: string;\r\n\r\n @deserialize\r\n MinValue: string;\r\n\r\n @deserialize\r\n ErrorMessage: string;\r\n\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport { DropdownListModel } from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\nimport { IDynamicFieldData } from 'Core/Common/Stores/RecordStore';\r\nimport { IConditionValueDto } from 'Core/Common/Interfaces/IConditionValueDto';\r\n\r\nexport interface IGetDropdownControlDataRequestModel {\r\n\tFieldId: number;\r\n\tRecordId?: number;\r\n\tSubjectRecordId?: number;\r\n\tSubjectTypeId?: number;\r\n\tSubjectKindId?: number;\r\n\tSubjectStatusId?: number;\r\n\tScreenData?: Array<IDynamicFieldData>;\r\n\tControlId?: number;\r\n\tLeftEntityId?:number;\r\n\tRightEntityId?:number;\r\n\tLeftRecordId?:number;\r\n\tRightRecordId?:number;\r\n KSeq?: number;\r\n\tIsEnableFilter?: boolean;\r\n\r\n\tConditionValues?: Array<IConditionValueDto>;\r\n};\r\n\r\nexport class DropdownDataStore {\r\n\tstatic Get(params: IGetDropdownControlDataRequestModel): P.Promise<DropdownListModel> {\r\n\t\tlet deferredResult = P.defer<DropdownListModel>();\r\n\r\n\t\tRequest\r\n\t\t.For(URL.CONTROLS.DROPDOWN.GET_DROPDOWN_DATA)\r\n\t\t.UseCacheRequest()\r\n\t\t.Post(params)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): DropdownListModel {\r\n\t\tlet model = GenericDeserialize<DropdownListModel>(jsonObject.ResultObject, DropdownListModel);\r\n\t\tmodel.ErrorMessage = jsonObject.ErrorMessage;\r\n\t\treturn model;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {ControlToolBarModel} from 'Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlToolBarModel';\r\nimport {ControlGroup} from 'Core/Controls/FormDesigner/ToolBar/ControlToolBar/ControlGroup';\r\nimport {ControlGroupModel} from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlGroupModel\";\r\n\r\nimport ControlToolBarTemplate from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Templates/ControlToolBar.html\";\r\nko.templates[\"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Templates/ControlToolBar\"] = ControlToolBarTemplate;\r\n\r\nexport class ControlToolBar {\r\n\tprivate _groups: KnockoutObservableArray<ControlGroup>;\r\n\tprivate _currentControlGroup: ControlGroup;\r\n\tprivate _expanded: KnockoutObservable<boolean>;\r\n\tprivate _el: HTMLElement;\r\n\r\n\tconstructor(groups: Array<ControlGroupModel>) {\r\n\t\tthis._groups = ko.observableArray(groups.map(groupModel => new ControlGroup(groupModel)));\r\n\t\tthis._expanded = ko.observable(false);\r\n\t\tthis._expanded.subscribe(newValue => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\t$(this._el).fadeIn(400);\r\n\t\t\t} else {\r\n\t\t\t\tif (this._currentControlGroup) {\r\n\t\t\t\t\tthis._currentControlGroup.IsExpaned = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tset Expanded(isExpanded: boolean) {\r\n\t\tthis._expanded(isExpanded);\r\n\t}\r\n\r\n\tget Expanded(): boolean {\r\n\t\treturn this._expanded();\r\n\t}\r\n\r\n\tget Groups(): KnockoutObservableArray<ControlGroup> {\r\n\t\treturn this._groups;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Templates/ControlToolBar\";\r\n\t}\r\n\r\n\r\n\tControlGroupClick(controlGroup) {\r\n\t\tif (this._currentControlGroup != controlGroup) {\r\n\t\t\tif (this._currentControlGroup) {\r\n\t\t\t\tthis._currentControlGroup.IsExpaned = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._currentControlGroup = controlGroup;\r\n\t\tthis._currentControlGroup.IsExpaned = !this._currentControlGroup.IsExpaned;\r\n\t}\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tthis._el = el[0];\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"css: { in: _expanded() }, style: { display: _expanded() ? 'block' : 'none' }\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"true\\\" style=\\\"display:block\\\"> <div data-bind=\\\"preventBubble: ['click']\\\" class=\\\"panel-body\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-info\\\" id=\\\"buttons-header\\\"> <div data-bind=\\\"click: $parent.ControlGroupClick.bind($parent, $data), clickBubble: false\\\" class=\\\"panel-heading\\\"> <h5 data-bind=\\\"text: Name\\\" class=\\\"panel-title\\\"></h5> </div> <div data-bind=\\\"css: { in: _expanded() }, style: { display: _expanded() ? 'block' : 'none' }\\\" id=\\\"controls-panel\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"true\\\"> <div data-bind=\\\"clickBubble: false\\\" id=\\\"controls-list\\\" class=\\\"control-container template-items\\\"> <ul data-bind=\\\"dragula: { data: Controls, group: 'ToolBarToDesigner' }\\\" class=\\\"form-standard-control\\\"> <li><!-- ko template: { name: $data.GetTemplateName.bind($data) } --><!-- /ko --></li><br/> </ul> </div> </div> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore'\r\nimport 'jquery';\r\n\r\nimport {ConcreteEntityModel} from 'QueryBuilder/Models/ConcreteEntityModel'\r\nimport {EntityModel} from 'QueryBuilder/Models/EntityModel'\r\nimport { DesignScreen } from 'Core/Screens/DesignScreen/DesignScreen';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport EntityToolBarTemplate from 'Core/Controls/FormDesigner/ToolBar/EntityToolBar/Templates/EntityToolBar.html'\r\nimport { ScreenStore } from 'Core/ScreenManager/Stores/ScreenStore';\r\nko.templates['Core/Controls/FormDesigner/ToolBar/EntityToolBar/Templates/EntityToolBar'] = EntityToolBarTemplate;\r\n\r\nexport class EntityToolBar {\r\n\tprivate _model: KnockoutObservable<ConcreteEntityModel>;\r\n\tprivate _expanded: KnockoutObservable<boolean>;\r\n\tprivate _expandedEntity: KnockoutObservable<EntityModel>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _scrollValue: KnockoutObservable<number>;\r\n\tprivate _screen: DesignScreen;\r\n\tprivate _isLoading: KnockoutObservable<boolean>;\r\n\r\n\tIsOpenFromDatabaseDesigner: KnockoutObservable<boolean>;\r\n\r\n\tprivate _labels: LABELS = LABELS;\r\n\r\n\tconstructor() {\r\n\t\tthis._isLoading = ko.observable(false);\r\n\t\tthis._model = ko.observable(null);\r\n\t\tthis._expanded = ko.observable(false);\r\n\t\tthis._expandedEntity = ko.observable(null);\r\n\t\tthis._scrollValue = ko.observable(0);\r\n\t\tthis._expanded.subscribe(newValue => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\t$(this._el).fadeIn(400);\r\n\t\t\t} else {\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.IsOpenFromDatabaseDesigner = ko.observable(false);\r\n\t}\r\n\r\n\tget Model(): KnockoutObservable<ConcreteEntityModel> {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tset Expanded(isExpanded: boolean) {\r\n\t\tthis._expanded(isExpanded);\r\n\t}\r\n\r\n\tget Expanded(): boolean {\r\n\t\treturn this._expanded();\r\n\t}\r\n\r\n\tInit(entity: ConcreteEntityModel, screen: DesignScreen, isOpenFromDatabaseDesigner: boolean) {\r\n\t\tthis._model(entity);\r\n\t\tthis._screen = screen;\r\n\t\tthis._expandedEntity(this._model().MainEntity);\r\n\t\tthis._expanded(true);\r\n\t\tthis.IsOpenFromDatabaseDesigner(isOpenFromDatabaseDesigner);\r\n\t}\r\n\r\n\tLoadData(){\r\n\t\tScreenStore.GetSubjectEntity(this._screen.ScreenId)\r\n\t\t.always(()=>this._isLoading(false))\r\n\t\t.then((subjectEntity)=>{\r\n\t\t\tthis._model(subjectEntity);\r\n\t\t\tthis._screen.SubjectEntity = subjectEntity;\r\n\t\t\tthis._expandedEntity(this._model().MainEntity);\r\n\t\t\tthis._expanded(true);\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/FormDesigner/ToolBar/EntityToolBar/Templates/EntityToolBar';\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tthis._el = el[0];\r\n\t}\r\n\r\n\tasync EditTable(table: EntityModel){\r\n\t\tlet databaseDesigner = (await import ('DatabaseDesigner/DatabaseDesigner')).DatabaseDesigner;\r\n\t\t(databaseDesigner as any).dataBaseId = table.DbId;\t\t\r\n\t\t(databaseDesigner as any).InitUI();\r\n\t\t(databaseDesigner as any).GetData(()=>{\r\n\t\t\t(databaseDesigner as any).ShowTableDesigner(this._model().MainEntity.EntityId, table.EntityId)\r\n\t\t\t.then(()=> {\r\n\t\t\t\tthis._isLoading(true);\r\n\t\t\t\t(databaseDesigner as any).SaveData(false).then(()=>{\r\n\t\t\t\t\t(databaseDesigner as any).ExecuteDbDifferenceScript(()=> { \r\n\t\t\t\t\t\tthis.LoadData()\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\tEntityClick(model, evt) {\r\n\t\tvar parentContainer = evt.currentTarget;\r\n\t\tvar prevSiblings = 0;\r\n\t\tprevSiblings = $(parentContainer).prevAll().length;\r\n\t\tvar staticHeight = 43;\r\n\t\tvar scrollValue = prevSiblings * staticHeight + 20;\r\n\t\tthis._scrollValue(scrollValue);\r\n\r\n\t\tif (this._expandedEntity() === model) {\r\n\t\t\tthis._expandedEntity(null);\r\n\t\t} else {\r\n\t\t\tthis._expandedEntity(model);\r\n\t\t}\r\n\t\t\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._isLoading, css: { in: _expanded() }, style: { display: _expanded() ? 'block' : 'none' }\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"true\\\" style=\\\"display:block\\\"> <div data-bind=\\\"preventBubble: ['click'], animate: { _scrollValue }\\\" class=\\\"panel-body scroll-y entity-container\\\" id=\\\"entitiesList\\\"> <!--ko with: Model --> <!--ko with: MainEntity --> <div class=\\\"panel panel-info\\\"> <div data-bind=\\\"attr: {title: $data.EntityNameTranslation || $data.EntityName }, click: $parents[1].EntityClick.bind($parents[1]), preventBubble: ['click']\\\" class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <!-- ko with: EntityIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <h5 class=\\\"panel-title clip panel-name subject\\\"> <!-- ko text: $data.EntityNameTranslation || $data.EntityName --><!-- /ko --> </h5> </div> <div data-bind=\\\"dragula: { data: RelationTypes, group: 'ToolBarToDesigner' }, style: { display: $data == $parents[1]._expandedEntity() ? 'block' : 'none' }\\\" class=\\\"relation-type\\\"> <span data-bind=\\\"css: $parent.RelationTypeTitle($data)\\\" class=\\\"label-sm\\\"> </span> </div> </div> <div data-bind=\\\"css: { in: false }, style: { display: $data == $parents[1]._expandedEntity() ? 'block' : 'none' }, preventBubble: ['click']\\\" class=\\\"panel-collapse collapse\\\"> <div id=\\\"main-entity-fields\\\" class=\\\"field-container\\\"> <div data-bind=\\\"dragula: { data: Fields, group: 'ToolBarToDesigner' }\\\"> <div data-bind=\\\"attr: {'data-field-type-name': FieldTypeName }, css: { nonDraggable: IsSystem && FieldTypeName != 'Reference' }\\\" class=\\\"alert alert-warning draggable-field clearfix\\\"> <!-- ko with: FieldIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span class=\\\"field-name\\\"> <!-- ko if: FieldNameTranslation --> <!-- ko text: FieldNameTranslation --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: FieldNameTranslation --> <!-- ko text: FieldName --><!-- /ko --> <!-- /ko --> </span> </div> </div> </div> </div> </div> <!-- /ko --> <!--ko foreach: RelatedSubEntitiesModel --> <!--ko foreach: Entities --> <div data-bind=\\\"click: $parents[2].EntityClick.bind($parents[2]), preventBubble: ['click']\\\" class=\\\"panel panel-info entity-explorer-sub-entity\\\"> <div data-bind=\\\"attr: { title: $data.EntityNameTranslation || $data.EntityName }\\\" class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <i class=\\\"fa fa-1x fa-stack panel-icon empty\\\"></i> <h5 class=\\\"panel-title clip panel-name\\\"> <!-- ko text: $data.EntityNameTranslation || $data.EntityName --><!-- /ko --> </h5> <!-- ko if: $data.IsView && !$parents[2].IsOpenFromDatabaseDesigner() --> <a data-bind=\\\"attr: { title: $parents[2]._labels.EDIT_SUB_TABLE }, click: $parents[2].EditTable.bind($parents[2], $data), preventBubble: ['click']\\\" class=\\\"edit-table-btn\\\"> <i class=\\\"fa fa-1x fa-pencil\\\"></i> </a> <!-- /ko --> </div> <div data-bind=\\\"dragula: { data: RelationTypes, group: 'ToolBarToDesigner' }, style: { display: $data == $parents[2]._expandedEntity() ? 'block' : 'none' }\\\" class=\\\"relation-type\\\"> <span data-bind=\\\"css: $parent.RelationTypeTitle($data)\\\" class=\\\"label-sm\\\"> </span> </div> </div> <div data-bind=\\\"css: { in: false }, style: { display: $data == $parents[2]._expandedEntity() ? 'block' : 'none' }, preventBubble: ['click']\\\" class=\\\"panel-collapse collapse\\\"> <div class=\\\"field-container\\\"> <div data-bind=\\\"dragula: { data: Fields, group: 'ToolBarToDesigner' }\\\"> <div data-bind=\\\"attr: {'data-field-type-name': FieldTypeName }\\\" class=\\\"alert alert-warning draggable-field relatedField clearfix\\\"> <!-- ko with: FieldIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span class=\\\"field-name\\\"> <!-- ko if: FieldNameTranslation --> <!-- ko text: FieldNameTranslation --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: FieldNameTranslation --> <!-- ko text: FieldName --><!-- /ko --> <!-- /ko --> </span> </div> </div> </div> </div> </div> <!-- /ko --> <!-- /ko --> <!--ko with: RelatedEntities --> <!--ko foreach: Entities--> <div data-bind=\\\"click: $parents[2].EntityClick.bind($parents[2]), , preventBubble: ['click']\\\" class=\\\"panel panel-info draggable-entity\\\"> <div data-bind=\\\"attr: { title: $data.EntityNameTranslation || $data.EntityName }\\\" class=\\\"panel-heading clearfix\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix noselect\\\"> <!-- ko with: EntityIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <h5 class=\\\"panel-title clip panel-name\\\"> <!-- ko text: $data.EntityNameTranslation || $data.EntityName --><!-- /ko --> </h5> </div> <div data-bind=\\\"dragula: { data: RelationTypes, group: 'ToolBarToDesigner' }, style: { display: $data == $parents[2]._expandedEntity() ? 'block' : 'none' }\\\" class=\\\"relation-type\\\"> <span data-bind=\\\"css: $parent.RelationTypeTitle($data)\\\" class=\\\"label-sm\\\"> </span> </div> </div> <div data-bind=\\\"css: { in: false }, style: { display: $data == $parents[2]._expandedEntity() ? 'block' : 'none' }, preventBubble: ['click']\\\" class=\\\"panel-collapse collapse\\\"> <div class=\\\"field-container\\\"> <!-- ko with: LinkEntity --> <div data-bind=\\\"dragula: { data: Fields, group: 'ToolBarToDesigner' }\\\"> <div data-bind=\\\"attr: {'data-field-type-name': FieldTypeName }\\\" class=\\\"alert alert-warning draggable-field clearfix relatedField\\\"> <!-- ko with: FieldIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span class=\\\"field-name\\\"> <!-- ko if: FieldNameTranslation --> <!-- ko text: FieldNameTranslation --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: FieldNameTranslation --> <!-- ko text: FieldName --><!-- /ko --> <!-- /ko --> </span> </div> </div> <!-- /ko --> <div data-bind=\\\"dragula: { data: Fields, group: 'ToolBarToDesigner' }\\\"> <div data-bind=\\\"attr: {'data-field-type-name': FieldTypeName }\\\" class=\\\"alert alert-warning draggable-field clearfix\\\"> <!-- ko with: FieldIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span class=\\\"field-name\\\"> <!-- ko if: FieldNameTranslation --> <!-- ko text: FieldNameTranslation --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: FieldNameTranslation --> <!-- ko text: FieldName --><!-- /ko --> <!-- /ko --> </span> </div> </div> </div> </div> </div> <!--ko foreach: RelatedSubEntities --> <div data-bind=\\\"click: $parents[3].EntityClick.bind($parents[3]), preventBubble: ['click']\\\" class=\\\"panel panel-info entity-explorer-sub-entity\\\"> <div data-bind=\\\"attr: { title: $data.EntityNameTranslation || $data.EntityName }\\\" class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <i class=\\\"fa fa-1x fa-stack panel-icon empty\\\"></i> <h5 class=\\\"panel-title clip panel-name\\\"> <!-- ko text: $data.EntityNameTranslation || $data.EntityName --><!-- /ko --> </h5> </div> </div> <div data-bind=\\\"css: { in: false }, style: { display: $data == $parents[3]._expandedEntity() ? 'block' : 'none' }, preventBubble: ['click']\\\" class=\\\"panel-collapse collapse\\\"> <div class=\\\"field-container\\\"> <div data-bind=\\\"dragula: { data: Fields, group: 'ToolBarToDesigner' }\\\"> <div data-bind=\\\"attr: {'data-field-type-name': FieldTypeName }\\\" class=\\\"alert alert-warning draggable-field relatedField clearfix\\\"> <!-- ko with: FieldIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span class=\\\"field-name\\\"> <!-- ko if: FieldNameTranslation --> <!-- ko text: FieldNameTranslation --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: FieldNameTranslation --> <!-- ko text: FieldName --><!-- /ko --> <!-- /ko --> </span> </div> </div> </div> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {ControlFactory} from 'Core/Controls/ControlFactory'\r\nimport {RenderModes} from \"Core/Constant\"\r\nimport {IControl} from \"Core/Controls/IControl\"\r\nimport {ControlToolBar} from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/ControlToolBar\"\r\nimport {EntityToolBar} from \"Core/Controls/FormDesigner/ToolBar/EntityToolBar/EntityToolBar\"\r\nimport {ConcreteEntityModel} from 'QueryBuilder/Models/ConcreteEntityModel';\r\nimport {ControlGroup} from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/ControlGroup\";\r\nimport {ControlGroupModel} from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlGroupModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport ToolBarTemplate from \"Core/Controls/FormDesigner/ToolBar/Templates/ToolBar.html\";\r\nko.templates[\"Core/Controls/FormDesigner/ToolBar/Templates/ToolBar\"] = ToolBarTemplate;\r\n\r\nexport class ToolBar {\r\n\tprivate _controlToolBar: ControlToolBar;\r\n\tprivate _entityToolBar: EntityToolBar;\r\n\tprivate _isEnabled: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(groups: Array<ControlGroupModel>) {\r\n\t\tthis._controlToolBar = new ControlToolBar(groups);\r\n\t\tthis._entityToolBar = new EntityToolBar();\r\n\t\tthis._isEnabled = ko.observable(false);\r\n\t}\r\n\r\n\tset IsEnabled(isEnabled: boolean) {\r\n\t\tthis._isEnabled(isEnabled);\r\n\t}\r\n\r\n\tEnableToolBar(): boolean {\r\n\t\treturn this._isEnabled();\r\n\t}\r\n\r\n\tget ControlToolBar(): ControlToolBar {\r\n\t\treturn this._controlToolBar;\r\n\t}\r\n\r\n\tget EntityToolBar(): EntityToolBar {\r\n\t\treturn this._entityToolBar;\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/Controls/FormDesigner/ToolBar/Templates/ToolBar\";\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tEntitiesBarClick() {\r\n\t\tif (this._isEnabled()) {\r\n\t\t\tthis._controlToolBar.Expanded = false;\r\n\t\t\tthis._entityToolBar.Expanded = !this._entityToolBar.Expanded;\r\n\t\t}\r\n\t}\r\n\r\n\tControlsBarClick() {\r\n\t\tif (this._isEnabled()) {\r\n\t\t\tthis._controlToolBar.Expanded = !this._controlToolBar.Expanded;\r\n\t\t\tthis._entityToolBar.Expanded = false;\r\n\t\t}\r\n\t}\r\n\r\n\tCollapseAll() {\r\n\t\tthis._controlToolBar.Expanded = false;\r\n\t\t//this._entityToolBar.Expanded = false;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"panel-group\\\"> <div data-bind=\\\"click: EntitiesBarClick, clickBubble: true, visible: _isEnabled\\\" class=\\\"panel panel-success\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <!--ko text: _labels.ENTITIES --><!-- /ko--> </h4> </div> <!-- ko with: EntityToolBar --> <!-- ko template: { name: GetTemplateName, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div data-bind=\\\"click: ControlsBarClick, clickBubble: true\\\" class=\\\"panel panel-success\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <!--ko text: _labels.TEMPLATE --><!-- /ko--> </h4> </div> <!-- ko with: ControlToolBar --> <!-- ko template: { name: GetTemplateName, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import {P} from \"Core/Common/Promise\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\nimport {EntitiesListModel} from \"Core/Controls/FormDesigner/Models/EntitiesListModel\";\r\nimport {CreateNewFormRequestModel} from \"Core/Controls/FormDesigner/Models/CreateNewFormRequestModel\";\r\nimport {ResetFormRequestModel} from \"Core/Controls/FormDesigner/Models/ResetFormRequestModel\";\r\nimport { DesignScreenModel } from 'Core/Models/Screens/ScreenModel';\r\nimport { Deserialize } from 'libs/cerialize';\r\n\r\nexport class FormDesignerStore {\r\n\tstatic GetFormDesignerMetaData(): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FormDesignerApi/GetFormDesignerMetaData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetEntities(): P.Promise<EntitiesListModel> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FormDesignerApi/GetFormDesignerEditScreenModel',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic CreateNewForm(model: CreateNewFormRequestModel): P.Promise<DesignScreenModel> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FormDesignerApi/GetScreen',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: model\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.DeserializeDesignScreen(result));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic ResetForm(model: ResetFormRequestModel): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FormDesignerApi/ResetScreenFromRoot',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},params: model\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeserializeDesignScreen(jsonObject: any): DesignScreenModel {\r\n\t\tvar model = <DesignScreenModel>Deserialize(jsonObject.ResultObject, DesignScreenModel);\r\n\t\treturn model;\r\n\t}\r\n}","export class CreateNewFormRequestModel {\r\n\tconstructor(public EntityId: number,\r\n\t\t\t\tpublic ScreenTypeId: number,\r\n\t\t\t\tpublic TableTypeId: number,\r\n\t\t\t\tpublic FieldCollectionId: number) {\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as $ from \"jquery\";\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {IPropertyDescription, IPropertyOption, ISource} from \"../../../GeneralProperties/Managers/BaseProperty\";\r\nimport {ColorPicker} from \"../../../GeneralProperties/Managers/ColorPicker/ColorPicker\";\r\nimport {SelectProperty} from \"../../../GeneralProperties/Managers/SelectProperty/SelectProperty\";\r\nimport {CARD_SCREEN_PROPERTY_TYPE, SCREEN_PROPERTY_TYPE} from \"Core/Constant\";\r\nimport {IWebSizeValue, WebSizeProperty} from \"../../../GeneralProperties/Managers/WebSizeProperty/WebSizeProperty\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nimport CardScreenSettingsModalTemplate from 'Core/Controls/FormDesigner/SettingsModal/Templates/CardScreenSettingsModal.html';\r\nko.templates['Core/Controls/FormDesigner/SettingsModal/Templates/CardScreenSettingsModal'] = CardScreenSettingsModalTemplate;\r\n\r\nimport SettingsModalTemplate from 'Core/Controls/FormDesigner/SettingsModal/Templates/SettingsModal.html';\r\nko.templates['Core/Controls/FormDesigner/SettingsModal/Templates/SettingsModal'] = SettingsModalTemplate;\r\n\r\nexport interface ISettingsModal {\r\n Type: string;\r\n Value?: any;\r\n}\r\nexport class SettingsModal extends Event {\r\n private _modal = new Modal(\r\n { addClass: 'settings-modal jBox-padding-15px' },\r\n false\r\n );\r\n\r\n _labels = LABELS;\r\n\r\n private _bgColorCardScreen: ColorPicker;\r\n private _widthCardScreen: WebSizeProperty;\r\n private _fontColorCardScreen: ColorPicker;\r\n private _fontWeightCardScreen: SelectProperty;\r\n private _fontFamilyCardScreen: SelectProperty;\r\n private _fontStyleCardScreen: SelectProperty;\r\n private _params: KnockoutObservableArray<ISettingsModal>;\r\n\r\n private _fontStyleOptions: KnockoutObservable<any>;\r\n private _fontFamily: KnockoutObservable<string>;\r\n private _fontColor: KnockoutObservable<string>;\r\n private _fontWeight: KnockoutObservable<string>;\r\n private _fontStyle: KnockoutObservable<string>;\r\n private _styleText: KnockoutObservable<any>;\r\n private _screenType: string;\r\n private _screenBackgroundColor: ColorPicker;\r\n private _screenHeaderBackgroundColor: ColorPicker;\r\n private _screenBGColor: KnockoutObservable<string>;\r\n private _screenHeaderBGColor: KnockoutObservable<string>;\r\n\r\n constructor(params: Array<ISettingsModal>, screenType: string) {\r\n super();\r\n this._screenType = screenType;\r\n\r\n this._fontStyleOptions = ko.observable(null);\r\n this._fontColor = ko.observable(null);\r\n this._fontFamily = ko.observable(null);\r\n this._fontWeight = ko.observable(null);\r\n this._fontStyle = ko.observable(null);\r\n this._styleText = ko.observable(null);\r\n this._screenBGColor = ko.observable(null);\r\n this._screenHeaderBGColor = ko.observable(null);\r\n\r\n this._params = ko.observableArray(params);\r\n this.InitSettingControls(params);\r\n }\r\n\r\n InitSettingControls(params: Array<ISettingsModal>): void {\r\n if (this._screenType === ScreenTypes[ScreenTypes.CardScreen]) {\r\n this.InitWidthCardScreen(this.FindElementByType(params, CARD_SCREEN_PROPERTY_TYPE.SCREEN_WIDTH)?.Value);\r\n this.InitBackgroundColorScreen(this.FindElementByType(params, CARD_SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR)?.Value);\r\n this.InitFontColor(this.FindElementByType(params, CARD_SCREEN_PROPERTY_TYPE.FONT_COLOR)?.Value);\r\n this.InitFontWeight(this.FindElementByType(params, CARD_SCREEN_PROPERTY_TYPE.FONT_WEIGHT)?.Value);\r\n this.InitFontFamily(this.FindElementByType(params, CARD_SCREEN_PROPERTY_TYPE.FONT_FAMILY)?.Value);\r\n this.InitFontStyle(this.FindElementByType(params, CARD_SCREEN_PROPERTY_TYPE.FONT_STYLE)?.Value);\r\n } else {\r\n this.InitScreenBGColor(this.FindElementByType(params, SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR)?.Value);\r\n this.InitScreenHeaderBGColor(this.FindElementByType(params, SCREEN_PROPERTY_TYPE.SCREEN_HEADER_BACKGROUND_COLOR)?.Value);\r\n }\r\n }\r\n\r\n FindElementByType(array: ISettingsModal[], type: string): ISettingsModal | undefined {\r\n return _.find(array, { Type: type });\r\n }\r\n\r\n InitWidthCardScreen(value?: IWebSizeValue) {\r\n let propertyValue: IWebSizeValue | undefined = value,\r\n options: Array<IPropertyOption> = [\r\n {Name: \"%\", Value: '%'},\r\n {Name: \"px\", Value: 'px'}\r\n ],\r\n defaultOptions: IPropertyOption = {Name: \"%\", Value: '%'},\r\n property: IPropertyDescription = {\r\n Name: \"Screen Width\",\r\n Type: CARD_SCREEN_PROPERTY_TYPE.SCREEN_WIDTH,\r\n PropertyManager: \"WebSizeProperty\",\r\n ValueRequired: false,\r\n Options: options,\r\n Source: null,\r\n DefaultValue: defaultOptions\r\n };\r\n\r\n this._widthCardScreen = new WebSizeProperty(property, propertyValue);\r\n }\r\n\r\n InitBackgroundColorScreen(value?: string) {\r\n let propertyValue: string | undefined = value,\r\n property: IPropertyDescription = {\r\n Name: \"Background Color\",\r\n Type: CARD_SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR,\r\n PropertyManager: \"ColorPicker\",\r\n ValueRequired: false,\r\n Options: null,\r\n Source: null\r\n };\r\n\r\n this._bgColorCardScreen = new ColorPicker(property, propertyValue);\r\n }\r\n\r\n InitFontColor(value?: string){\r\n let propertyValue: string | undefined = value,\r\n property: IPropertyDescription = {\r\n Name: \"Font Color\",\r\n Type: CARD_SCREEN_PROPERTY_TYPE.FONT_COLOR,\r\n PropertyManager: \"ColorPicker\",\r\n ValueRequired: false,\r\n Options: null,\r\n Source: null\r\n };\r\n\r\n this._fontColorCardScreen = new ColorPicker(property, propertyValue);\r\n this._styleText(propertyValue ? {'color': propertyValue} : null);\r\n }\r\n\r\n InitFontWeight(value?: IPropertyOption) {\r\n let getData = null,\r\n propertyValue: IPropertyOption | undefined = value,\r\n options: Array<IPropertyOption> = [\r\n {Name: \"Light\", Value: 'font-light'},\r\n {Name: \"Regular\", Value: 'font-regular'},\r\n {Name: \"Medium\", Value: 'font-medium'},\r\n {Name: \"Bold\", Value: 'font-bold'},\r\n {Name: \"Black\", Value: 'font-black'},\r\n ],\r\n property: IPropertyDescription = {\r\n Name: \"Font Weight\",\r\n Type: CARD_SCREEN_PROPERTY_TYPE.FONT_WEIGHT,\r\n PropertyManager: \"SelectProperty\",\r\n ValueRequired: false,\r\n Options: options,\r\n Source: null\r\n };\r\n\r\n this._fontWeightCardScreen = new SelectProperty(property, propertyValue, getData);\r\n this._fontWeight(propertyValue?.Value);\r\n }\r\n\r\n InitFontFamily(value?: IPropertyOption) {\r\n // add new font:\r\n // 1. https://fonts.google.com/selection/embed\r\n // 2. update <link href=\"https://fonts.googleapis.com/css2?family=... on _Layout.cshtml\r\n // 2. update @mixin customFontFamily on _mixins.scss\r\n // 3. update options\r\n let getData = null,\r\n propertyValue: IPropertyOption | undefined = value,\r\n options: Array<IPropertyOption> = [\r\n {Name: \"Roboto\", Value: 'roboto-font'},\r\n {Name: \"Lato\", Value: 'lato-font'},\r\n {Name: \"Poppins\", Value: 'poppins-font'},\r\n {Name: \"Inria Sans\", Value: 'inria-sans-font'},\r\n {Name: \"Ubuntu\", Value: 'ubuntu-font'},\r\n {Name: \"Fira Sans\", Value: 'fira-sans-font'},\r\n {Name: \"Titillium Web\", Value: 'titillium-web-font'},\r\n ],\r\n property: IPropertyDescription = {\r\n Name: \"Font Family\",\r\n Type: CARD_SCREEN_PROPERTY_TYPE.FONT_FAMILY,\r\n PropertyManager: \"SelectProperty\",\r\n ValueRequired: false,\r\n Options: options,\r\n Source: null\r\n };\r\n\r\n this._fontFamilyCardScreen = new SelectProperty(property, propertyValue, getData);\r\n this._fontFamily(propertyValue?.Value);\r\n }\r\n\r\n InitFontStyle(value?: IPropertyOption) {\r\n let getData = null,\r\n propertyValue: IPropertyOption | undefined = value,\r\n options: Array<IPropertyOption> = [\r\n {Name: \"Normal\", Value: 'font-normal'},\r\n {Name: \"Italic\", Value: 'font-italic'},\r\n ],\r\n property: IPropertyDescription = {\r\n Name: \"Font Style\",\r\n Type: CARD_SCREEN_PROPERTY_TYPE.FONT_STYLE,\r\n PropertyManager: \"SelectProperty\",\r\n ValueRequired: false,\r\n Options: options,\r\n Source: null\r\n };\r\n\r\n this._fontStyleCardScreen = new SelectProperty(property, propertyValue, getData);\r\n this._fontStyle(propertyValue?.Value);\r\n }\r\n\r\n InitScreenBGColor(value?: string){\r\n let propertyValue: string | undefined = value,\r\n property: IPropertyDescription = {\r\n Name: \"Screen Background Color\",\r\n Type: SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR,\r\n PropertyManager: \"ColorPicker\",\r\n ValueRequired: false,\r\n Options: null,\r\n Source: null\r\n };\r\n\r\n this._screenBackgroundColor = new ColorPicker(property, propertyValue);\r\n this._screenBGColor(propertyValue ? propertyValue : null);\r\n }\r\n\r\n InitScreenHeaderBGColor(value?: string){\r\n let propertyValue: string | undefined = value,\r\n property: IPropertyDescription = {\r\n Name: \"Screen Header Background Color\",\r\n Type: SCREEN_PROPERTY_TYPE.SCREEN_HEADER_BACKGROUND_COLOR,\r\n PropertyManager: \"ColorPicker\",\r\n ValueRequired: false,\r\n Options: null,\r\n Source: null\r\n };\r\n\r\n this._screenHeaderBackgroundColor = new ColorPicker(property, propertyValue);\r\n this._screenHeaderBGColor(propertyValue ? propertyValue : null);\r\n }\r\n\r\n Show() {\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n }\r\n\r\n OnSubmit() {\r\n let screenOptions: Array<ISettingsModal> = null;\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.CardScreen]) {\r\n\r\n screenOptions = [\r\n {Type: this._bgColorCardScreen.PropertyDescriptionType, Value: this._bgColorCardScreen.Value()},\r\n {Type: this._widthCardScreen.PropertyDescriptionType, Value: this._widthCardScreen.Value()},\r\n {Type: this._fontColorCardScreen.PropertyDescriptionType, Value: this._fontColorCardScreen.Value()},\r\n {Type: this._fontFamilyCardScreen.PropertyDescriptionType, Value: this._fontFamilyCardScreen.Value()},\r\n {Type: this._fontWeightCardScreen.PropertyDescriptionType, Value: this._fontWeightCardScreen.Value()},\r\n {Type: this._fontStyleCardScreen.PropertyDescriptionType, Value: this._fontStyleCardScreen.Value()}\r\n ];\r\n\r\n } else {\r\n\r\n screenOptions = [\r\n {Type: this._screenBackgroundColor.PropertyDescriptionType, Value: this._screenBackgroundColor.Value()},\r\n {Type: this._screenHeaderBackgroundColor.PropertyDescriptionType, Value: this._screenHeaderBackgroundColor.Value()},\r\n ];\r\n\r\n }\r\n\r\n\r\n // let hasChanges: boolean = !_.isEqual(screenOptions, this._params());\r\n let hasChanges: boolean = true;\r\n\r\n if (screenOptions?.length) {\r\n this.Trigger('SUBMIT', { Options: screenOptions, HasChanges: hasChanges});\r\n } else {\r\n this.Trigger('SUBMIT', { Options: null, HasChanges: hasChanges });\r\n }\r\n\r\n this._modal.Close();\r\n }\r\n\r\n GetTemplateName() {\r\n let isCardScreen:boolean = this._screenType === ScreenTypes[ScreenTypes.CardScreen];\r\n return isCardScreen ? 'Core/Controls/FormDesigner/SettingsModal/Templates/CardScreenSettingsModal' : 'Core/Controls/FormDesigner/SettingsModal/Templates/SettingsModal';\r\n }\r\n\r\n AfterRender() {\r\n if (this._screenType === ScreenTypes[ScreenTypes.CardScreen]) {\r\n this._fontFamilyCardScreen.Value.subscribe((newValue) => {\r\n this._fontFamily(newValue.Value);\r\n })\r\n this._fontWeightCardScreen.Value.subscribe((newValue) => {\r\n this._fontWeight(newValue.Value);\r\n })\r\n this._fontStyleCardScreen.Value.subscribe((newValue) => {\r\n this._fontStyle(newValue.Value);\r\n })\r\n this._fontColorCardScreen.Value.subscribe((newValue)=> {\r\n this._fontColor(newValue);\r\n this._styleText({'color': this._fontColor()});\r\n })\r\n this._fontFamily.subscribe((newValue)=>{\r\n this._fontStyleOptions(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n })\r\n this._fontWeight.subscribe((newValue)=>{\r\n this._fontStyleOptions(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n })\r\n this._fontStyle.subscribe((newValue)=>{\r\n this._fontStyleOptions(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n })\r\n\r\n this._fontStyleOptions(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n\r\n } else {\r\n\r\n const testScreenBodyHeader: JQuery<HTMLElement> = $(document.body).find(\".test-screen_body__header\");\r\n const testScreenBodyPageContainer: JQuery<HTMLElement> = $(document.body).find(\".test-screen_body__page-container\");\r\n\r\n this._screenBackgroundColor.Value.subscribe((newValue) => {\r\n this._screenBGColor(newValue)\r\n $(testScreenBodyPageContainer).get(0).style.setProperty(\"--root-background-color\", newValue);\r\n })\r\n this._screenHeaderBackgroundColor.Value.subscribe((newValue) => {\r\n this._screenHeaderBGColor(newValue)\r\n $(testScreenBodyHeader).get(0).style.setProperty(\"--main-color-1\", newValue);\r\n })\r\n\r\n if (this._screenBGColor()) {\r\n const testScreenBodyPageContainer: JQuery<HTMLElement> = $(document.body).find(\".test-screen_body__page-container\");\r\n $(testScreenBodyPageContainer).get(0).style.setProperty(\"--root-background-color\", this._screenBGColor());\r\n }\r\n if (this._screenHeaderBGColor()) {\r\n const testScreenBodyHeader: JQuery<HTMLElement> = $(document.body).find(\".test-screen_body__header\");\r\n $(testScreenBodyHeader).get(0).style.setProperty(\"--main-color-1\", this._screenHeaderBGColor());\r\n }\r\n\r\n }\r\n }\r\n}\r\n","// Module\nvar code = \"<form data-bind=\\\"submit: OnSubmit\\\" class=\\\"settings-modal__form box-shadow-wrapper\\\"> <div class=\\\"panel-group\\\" id=\\\"accordion\\\" role=\\\"tablist\\\" aria-multiselectable=\\\"true\\\"> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\" role=\\\"tab\\\" id=\\\"headingTwo\\\"> <h4 class=\\\"panel-title\\\"> <a class=\\\"collapsed\\\" role=\\\"button\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" href=\\\"#collapseTwo\\\" aria-expanded=\\\"true\\\" aria-controls=\\\"collapseTwo\\\"> Screen Styling </a> </h4> </div> <div id=\\\"collapseTwo\\\" class=\\\"panel-collapse collapse in\\\" role=\\\"tabpanel\\\" aria-labelledby=\\\"headingTwo\\\"> <div class=\\\"panel-body\\\"> <!-- ko with: _bgColorCardScreen --> <div class=\\\"settings-modal__form--colorPicker\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _widthCardScreen --> <div class=\\\"settings-modal__form--widthPicker\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\" role=\\\"tab\\\" id=\\\"headingOne\\\"> <h4 class=\\\"panel-title\\\"> <a role=\\\"button\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" href=\\\"#collapseOne\\\" aria-expanded=\\\"false\\\" aria-controls=\\\"collapseOne\\\"> Font Styles </a> </h4> </div> <div id=\\\"collapseOne\\\" class=\\\"panel-collapse collapse\\\" role=\\\"tabpanel\\\" aria-labelledby=\\\"headingOne\\\"> <div class=\\\"panel-body\\\"> <div class=\\\"settings-modal__form--row\\\"> <!-- ko with: _fontColorCardScreen --> <div class=\\\"settings-modal__form--colorPicker\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"settings-modal__form--row settings-modal__form_font-styling\\\"> <!-- ko with: _fontFamilyCardScreen --> <div class=\\\"settings-modal__form--select\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _fontWeightCardScreen --> <div class=\\\"settings-modal__form--select\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _fontStyleCardScreen --> <div class=\\\"settings-modal__form--select\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"settings-modal__form--row\\\"> <div class=\\\"settings-modal__form_test-font-box\\\" data-bind=\\\"class: _fontStyleOptions(), style: _styleText()\\\"> <input class=\\\"font-box-input\\\" placeholder=\\\"Type here to preview text\\\" value=\\\"Type here to preview text\\\"> </div> </div> </div> </div> </div> </div> <button class=\\\"settings-modal__submit-button btn green\\\"> <!-- ko text: _labels.OK --> <!-- /ko --> </button> </form>\";\n// Exports\nexport default code;","// Module\nvar code = \"<form data-bind=\\\"submit: OnSubmit\\\" class=\\\"settings-modal__form box-shadow-wrapper\\\"> <div class=\\\"panel-group\\\" id=\\\"accordion\\\" role=\\\"tablist\\\" aria-multiselectable=\\\"true\\\"> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\" role=\\\"tab\\\" id=\\\"headingTwo\\\"> <h4 class=\\\"panel-title\\\"> <a class=\\\"collapsed\\\" role=\\\"button\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" href=\\\"#collapseTwo\\\" aria-expanded=\\\"true\\\" aria-controls=\\\"collapseTwo\\\"> Screen Styling </a> </h4> </div> <div id=\\\"collapseTwo\\\" class=\\\"panel-collapse collapse in\\\" role=\\\"tabpanel\\\" aria-labelledby=\\\"headingTwo\\\"> <div class=\\\"panel-body\\\"> <!-- ko with: _screenHeaderBackgroundColor --> <div class=\\\"settings-modal__form--colorPicker\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _screenBackgroundColor --> <div class=\\\"settings-modal__form--colorPicker\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"test-screen_body-container\\\"> <div class=\\\"test-screen_body\\\"> <div class=\\\"test-screen_body__header\\\"> <div class=\\\"test-screen_body__header-left\\\"> <i class=\\\"fa fa-home\\\" aria-hidden=\\\"true\\\"></i> </div> <div class=\\\"test-screen_body__header-right\\\"> <div class=\\\"lorem\\\"> <i></i>Lorem ipsum dolor.<i class=\\\"fa fa-angle-down\\\" aria-hidden=\\\"true\\\"></i> </div> <div class=\\\"lorem\\\"> <i></i>Lorem ipsum dolor.<i class=\\\"fa fa-angle-down\\\" aria-hidden=\\\"true\\\"></i> </div> <div class=\\\"lorem\\\"> <i class=\\\"icon-logout\\\"></i> </div> </div> </div> <div class=\\\"test-screen_body__page-container\\\"> <div class=\\\"test-screen_body__page-sidebar-wrapper\\\"> <div class=\\\"lorem\\\"> <div class=\\\"left-lorem\\\"> <i class=\\\"fa fa-sun-o icon-test\\\" aria-hidden=\\\"true\\\"></i>Lorem ipsum </div> <div class=\\\"right-lorem\\\"> <i class=\\\"fa fa-angle-left icon-right\\\" aria-hidden=\\\"true\\\"></i> </div> </div> <div class=\\\"lorem\\\"> <div class=\\\"left-lorem\\\"> <i class=\\\"fa fa-sun-o icon-test\\\" aria-hidden=\\\"true\\\"></i>Lorem ipsum </div> <div class=\\\"right-lorem\\\"> <i class=\\\"fa fa-angle-left icon-right\\\" aria-hidden=\\\"true\\\"></i> </div> </div> <div class=\\\"lorem\\\"> <div class=\\\"left-lorem\\\"> <i class=\\\"fa fa-sun-o icon-test\\\" aria-hidden=\\\"true\\\"></i>Lorem ipsum </div> <div class=\\\"right-lorem\\\"> <i class=\\\"fa fa-angle-left icon-right\\\" aria-hidden=\\\"true\\\"></i> </div> </div> <div class=\\\"lorem\\\"> <div class=\\\"left-lorem\\\"> <i class=\\\"fa fa-sun-o icon-test\\\" aria-hidden=\\\"true\\\"></i>Lorem ipsum </div> <div class=\\\"right-lorem\\\"> <i class=\\\"fa fa-angle-left icon-right\\\" aria-hidden=\\\"true\\\"></i> </div> </div> <div class=\\\"lorem\\\"> <div class=\\\"left-lorem\\\"> <i class=\\\"fa fa-sun-o icon-test\\\" aria-hidden=\\\"true\\\"></i>Lorem ipsum </div> <div class=\\\"right-lorem\\\"> <i class=\\\"fa fa-angle-left icon-right\\\" aria-hidden=\\\"true\\\"></i> </div> </div> <div class=\\\"lorem\\\"> <div class=\\\"left-lorem\\\"> <i class=\\\"fa fa-sun-o icon-test\\\" aria-hidden=\\\"true\\\"></i>Lorem ipsum </div> <div class=\\\"right-lorem\\\"> <i class=\\\"fa fa-angle-left icon-right\\\" aria-hidden=\\\"true\\\"></i> </div> </div> </div> <div class=\\\"test-screen_body__page-content\\\"> <div class=\\\"test-screen_body__page-content_top-header box-shadow-wrapper\\\"> </div> <div class=\\\"test-screen_body__page-content_top-box\\\"> <div class=\\\"sub-form box-shadow-wrapper\\\"></div> <div class=\\\"sub-form box-shadow-wrapper\\\"></div> <div class=\\\"sub-form box-shadow-wrapper\\\"></div> </div> <div class=\\\"test-screen_body__page-content_bottom_box\\\"> <div class=\\\"sub-form box-shadow-wrapper\\\"></div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <button class=\\\"settings-modal__submit-button btn green\\\"> <!-- ko text: _labels.OK --> <!-- /ko --> </button> </form>\";\n// Exports\nexport default code;","export class ResetFormRequestModel {\r\n\tconstructor(\r\n\t\tpublic FormId: number,\r\n\t\tpublic EntityId: number,\r\n\t\tpublic TableTypeId: number,\r\n\t\tpublic FieldCollectionId: number,\r\n\t\tpublic FormTypeId: number) {\r\n\r\n\t}\r\n}","// Module\nvar code = \"<div id=\\\"wrapper\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <div class=\\\"form-designer\\\" data-bind=\\\"attr: {'data-screen-type': ScreenType}\\\"> <div class=\\\"form-designer-container\\\"> <div class=\\\"explorer-block\\\" data-bind=\\\"css: {'toolBarOff': !EnableToolBar}\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko with: ToolBar --> <!-- ko template: { name: GetTemplateName } --><!-- /ko --> <!-- /ko --> </div> </div> <div class=\\\"form-designer-block\\\" data-bind=\\\"css: {'toolBarOn': EnableToolBar}\\\"> <div class=\\\"box-shadow-wrapper\\\"> <input id=\\\"formId\\\" type=\\\"hidden\\\" value=\\\"0\\\"/> <div class=\\\"create-form-title\\\"> <fieldset> <legend class=\\\"title createTitle standart-button-container\\\"> <div class=\\\"entity-wrapper\\\"> <div class=\\\"name-container\\\"> <!--ko if: IsEditable --> <input data-bind=\\\"textInput: $data._screenName\\\" class=\\\"search-input typeahead input-medium subFormControl\\\" type=\\\"text\\\" autocomplete=\\\"off\\\" placeholder=\\\"Screen Name\\\" autofocus/> <button data-bind=\\\"click: $data.UpdateScreenName.bind($data)\\\" class=\\\"btn green\\\"> <i class=\\\"fa fa-save\\\"></i> <!--ko text: _labels.SAVE --><!-- /ko--> </button> <button data-bind=\\\"click: Cancel\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\"> <!--ko text: _labels.CANCEL --><!-- /ko--></button> <!--<button data-bind=\\\"enable: $data.HasData, click: $data.SaveFormName.bind($data)\\\" class=\\\"btn green\\\" disabled><i class=\\\"fa fa-save\\\"></i> Save</button>--> <!-- /ko--> <!--ko if: !IsEditable()--> <span data-bind=\\\"text: Title\\\" class=\\\"entity-name custom-color-option\\\"></span> <!--ko if: $data.HasData --> <a data-bind=\\\"click: $data.OnEditClick.bind($data)\\\" class=\\\"fa fa-edit edit-name-btn transition\\\"></a> <!-- /ko--> <!-- /ko--> </div> <div class=\\\"entity-icon\\\"> <span class=\\\"fa fa-address-card\\\" aria-hidden=\\\"true\\\"></span> </div> </div> </legend> </fieldset> <div class=\\\"clearfix\\\"> <div class=\\\"standart-button-container clearfix form-designer-toolbar\\\"> <input data-bind=\\\"textInput: $data._searchTerm, hasFocus: true, enterKey: $data.Search.bind($data), attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl\\\"> <a data-bind=\\\"click: $data.Search.bind($data,true)\\\" class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> <button data-bind=\\\"enable: $data.HasData, click: Preview, tooltip: {content: _labels.PREVIEW}\\\" class=\\\"btn default btn-preview\\\" disabled=\\\"disabled\\\"> <i class=\\\"fa-solid fa-tv\\\"></i> </button> <button data-bind=\\\"enable: $data.HasData, click: Refresh, tooltip: {content: _labels.REFRESH}\\\" class=\\\"btn yellow\\\" disabled=\\\"disabled\\\"> <i class=\\\"fa fa-refresh\\\"></i> </button> <button data-bind=\\\"enable: $data.HasData && $data.IsSaveEnable, click: Save, tooltip: {content: _labels.SAVE}\\\" class=\\\"btn green-seagreen\\\" disabled=\\\"disabled\\\"> <i class=\\\"fa fa-save\\\"></i> </button> <button data-bind=\\\"attr:{'disabled': _disableDelete}, click: DeleteScreen, tooltip: {content: _labels.DELETE}\\\" class=\\\"btn red\\\"> <i class=\\\"fa fa-trash\\\"></i> </button> <button data-bind=\\\"visible: !$data.IsDashScreen(), click: Reset, tooltip: {content: _labels.RESET}\\\" class=\\\"btn red\\\"> <i class=\\\"fa blue fa-reply\\\"></i> </button> <!-- ko if: $data._isEnablePathRunnerToggler --> <div class=\\\"pathRunner-button-container\\\" data-bind=\\\"style: {'outline-color': $data._pathRunnerTogglerColor}, tooltip: {content: 'Show/Hide PathRunner'}\\\"> <a href=\\\"#\\\" data-bind=\\\"click: $data.TogglePathRunner.bind($data), style: {'background-color': $data._pathRunnerTogglerColor}\\\" class=\\\"icon\\\"> <span class=\\\"pathRunner-button-container__on_of_text\\\" data-bind=\\\"text: _pathRunnerToggler() ? 'on' : 'off' \\\"></span> <svg> <use xlink:href=\\\"#path-runner-icon\\\"></use> </svg> </a> </div> <!-- /ko--> <!-- ko if: ScreenType() === 'CardScreen' --> <button data-bind=\\\"click: OpenSettingsModal.bind($data, true), tooltip: {content: _labels.SETTINGS}\\\" class=\\\"btn blue-dark\\\"> <i class=\\\"fa fa-cog\\\"></i> </button> <!-- /ko --> <!-- ko if: ScreenType() --> <!-- ko ifnot: ScreenType() === 'CardScreen' || ScreenType() === 'Portlet' || ScreenType() === 'QueryScreen' || ScreenType() === 'Dashboard' --> <button data-bind=\\\"click: OpenSettingsModal.bind($data, false), tooltip: {content: _labels.SETTINGS}\\\" class=\\\"btn blue-dark\\\"> <i class=\\\"fa fa-cog\\\"></i> </button> <!-- /ko --> <!-- /ko --> <div class=\\\"actions menu-start\\\"> <div class=\\\"btn-group\\\"> <a data-bind=\\\"css: {'disabled': !_selectedType()}\\\" class=\\\"btn blue dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"false\\\"> <!-- <span data-bind=\\\"text: _selectedType() ? _selectedType().TypeName : 'Menu start'\\\"></span>--> <span><!--ko text: _labels.MENU_START --><!-- /ko--></span> <i class=\\\"fa fa-angle-down\\\"></i> </a> <ul role=\\\"menu\\\" class=\\\"dropdown-menu pull-right\\\"> <!-- ko foreach: ScreenTypes --> <li data-bind=\\\"css: {'active': FormId === $parent._selectedType().FormId}\\\"> <a data-bind=\\\"text: GetTypeName(), click: $parent.PickType.bind($parent, FormId)\\\"></a> </li> <!-- /ko --> </ul> </div> </div> <!--ko if: ScreenType() === 'Dashboard'--> <button class=\\\"btn blue-dark\\\" data-bind=\\\"click: StartLayoutConfiguration, tooltip: {content: _labels.LAYOUT}\\\"> <i class=\\\"fa fa-align-left\\\"></i> </button> <!--/ko--> <!--ko if: ShouldShowButtonsOrEntityTypeButtons() --> <!--ko if: EnableEntityTypeButtons() --> <div class=\\\"collection-box\\\" data-bind=\\\"visible: EnableToolBar\\\"> <a class=\\\"btn blue collection-box--button typed-screen-button\\\" data-bind=\\\"click: ShowTypedScreenDropDown, css: {'open': _isOpenTypedScreenDropDown()}\\\"> <span class=\\\"collection-box--name\\\" data-bind=\\\"text: _labels.TYPE\\\"></span> <span class=\\\"collection-box--separator\\\"></span> <span class=\\\"collection-box--active-name\\\" data-bind=\\\"text: GetActiveTypeName() || _activeTypeName(),\\r\\n ellipsisTooltip: {\\r\\n content: (GetActiveTypeName() || _activeTypeName()) || '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n showHideOnlyOnHover: true,\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n }\\\"></span> <span class=\\\"collection-box--button-caret\\\"><i class=\\\"fa\\\" aria-hidden=\\\"true\\\" data-bind=\\\"css: {'fa-angle-down': !_isOpenTypedScreenDropDown(), 'fa-angle-up': _isOpenTypedScreenDropDown()}\\\"></i></span> </a> </div> <!-- /ko--> <!--ko if: ShouldShowButtons --> <div class=\\\"collection-box\\\" data-bind=\\\"visible: EnableToolBar\\\"> <a class=\\\"btn blue collection-box--button field-collection-button\\\" data-bind=\\\"click: ShowFieldCollectionDropdown, css: {'open': _isOpenFieldCollectionDropdown()}\\\"> <span class=\\\"collection-box--name\\\" data-bind=\\\"text: _labels.FIELD_COLLECTION\\\"></span> <span class=\\\"collection-box--separator\\\"></span> <span class=\\\"collection-box--active-name\\\" data-bind=\\\"text: GetActiveFieldCollectionName() || _activeFieldCollectionName()\\\"></span> <span class=\\\"collection-box--button-caret\\\"><i class=\\\"fa\\\" aria-hidden=\\\"true\\\" data-bind=\\\"css: {'fa-angle-down': !_isOpenFieldCollectionDropdown(), 'fa-angle-up': _isOpenFieldCollectionDropdown()}\\\"></i></span> </a> </div> <!--/ko--> <!--/ko--> </div> </div> <div class=\\\"edit-screen-block\\\"> <div data-bind=\\\"visible: HasData\\\" class=\\\"portlet light row-no-padding\\\"> <div id=\\\"designScreenCanvas\\\"></div> </div> </div> </div> </div> <span data-bind=\\\"visible: EnableToolBar, click: EasterEgg\\\" class=\\\"easterEggBtn\\\"></span> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"\\\"> <div class=\\\"collection-popUp field-collection-buttons-group\\\"> <!--ko foreach: FieldCollections--> <button data-bind=\\\"click: $parent.SelectFieldCollection.bind($parent), text: $data.Name, css: $parent.GetFieldCollectionButtonColor($data)\\\" class=\\\"btn table-type-btn\\\"></button> <!--/ko--> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"\\\"> <div class=\\\"collection-popUp table-type-buttons-group\\\"> <!--ko foreach: EntityTypes--> <button data-bind=\\\"click: $parent.SelectTypedScreen.bind($parent), text: $data.GetName(), css: $parent.GetTypeButtonColor($data)\\\" class=\\\"btn table-type-btn\\\"></button> <!-- /ko--> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport clone from 'clone';\r\n\r\nimport {Serialize} from 'libs/cerialize';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {ToolBar} from 'Core/Controls/FormDesigner/ToolBar/ToolBar';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {CONTROL_TYPES, RenderModes, CARD_SCREEN_PROPERTY_TYPE} from 'Core/Constant';\r\nimport {DesignScreen} from 'Core/Screens/DesignScreen/DesignScreen';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {getWidthValue} from 'Core/Screens/CardScreen/CardScreenUtils';\r\nimport {\r\n TypedScreenModel, TableType, FormTypeModel,\r\n FieldCollectionModel\r\n} from 'Core/Models/Screens/ScreenModel';\r\nimport {Width} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {FormDesignerStore} from 'Core/Controls/FormDesigner/Stores/FormDesignerStore';\r\nimport {FormDesignerMetadataModel} from 'Core/Controls/FormDesigner/Models/FormDesignerMetadataModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {SelectDialog, ISelectorOption} from 'Core/Components/Dialogs/SelectDialog/SelectDialog';\r\nimport {CreateNewFormRequestModel} from 'Core/Controls/FormDesigner/Models/CreateNewFormRequestModel';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {ISettingsModal, SettingsModal} from 'Core/Controls/FormDesigner/SettingsModal/SettingsModal';\r\nimport {ResetFormRequestModel} from \"Core/Controls/FormDesigner/Models/ResetFormRequestModel\";\r\nimport {NotTypedScreenTypes} from \"Core/Constant\";\r\nimport {NOTIFICATIONS, LABELS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport 'pubsub';\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nimport ViewTemplate from 'Core/Controls/FormDesigner/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/FormDesigner/Templates/ToolBar.html';\r\nimport FieldCollectionDropdownTemplate from 'Core/Controls/FormDesigner/Templates/FieldCollectionDropdownTemplate.html';\r\nimport TypedScreenDropDownTemplate from 'Core/Controls/FormDesigner/Templates/TypedScreenDropDownTemplate.html';\r\nimport * as $ from \"jquery\";\r\n\r\nko.templates['Core/Controls/FormDesigner/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/FormDesigner/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/FormDesigner/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/FormDesigner/Templates/FieldCollectionDropdownTemplate'] = FieldCollectionDropdownTemplate;\r\nko.templates['Core/Controls/FormDesigner/Templates/TypedScreenDropDownTemplate'] = TypedScreenDropDownTemplate;\r\n\r\nexport class FormDesigner extends BaseControl {\r\n private _metadata: FormDesignerMetadataModel;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _toolBar: KnockoutObservable<ToolBar>;\r\n private _recordId: number;\r\n private _screen: DesignScreen;\r\n private _hasData: KnockoutObservable<boolean>;\r\n private _isSaveEnable: KnockoutObservable<boolean>;\r\n private _isDashScreen: KnockoutObservable<boolean>;\r\n private _screenName: KnockoutObservable<string>;\r\n private _screenType: KnockoutObservable<string>;\r\n private _title: KnockoutComputed<string>;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _fieldCollections: KnockoutObservableArray<FieldCollectionModel>;\r\n private _typedScreens: KnockoutObservableArray<TypedScreenModel>;\r\n private _entityTypes: KnockoutObservableArray<TableType>;\r\n private _enableEntityTypeButtons: KnockoutObservable<boolean>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _currentFieldCollection: FieldCollectionModel;\r\n private _currentType: TableType;\r\n private _screenTypes: KnockoutObservableArray<FormTypeModel>;\r\n private _selectedType: KnockoutObservable<FormTypeModel>;\r\n private _disableDelete: KnockoutObservable<boolean>;\r\n private _previousScreenName: string;\r\n private _designScreen: DesignScreen;\r\n\r\n private _hasCustomColor: KnockoutObservable<boolean>;\r\n private _hasCustomWeight: KnockoutObservable<boolean>;\r\n private _screenWidth: KnockoutObservable<Width>;\r\n private _screenBgColor: KnockoutObservable<string>;\r\n private _fontColor: KnockoutObservable<string>;\r\n private _fontFamily: KnockoutObservable<string>;\r\n private _fontWeight: KnockoutObservable<string>;\r\n private _fontStyle: KnockoutObservable<string>;\r\n\r\n private _activeFieldCollectionName: KnockoutObservable<string>;\r\n private _fieldCollectionDropDown: JBoxDropDown;\r\n private _typedScreenDropDown: JBoxDropDown;\r\n private _activeTypeName: KnockoutObservable<string>;\r\n private _defaultDropDownOtherOptions: any;\r\n private _dafaultDropDownClass: string;\r\n private _isOpenFieldCollectionDropdown: KnockoutObservable<boolean>;\r\n private _isOpenTypedScreenDropDown: KnockoutObservable<boolean>;\r\n private _isOpenFromDatabaseDesigner: KnockoutObservable<boolean>;\r\n private _isEnablePathRunnerToggler: KnockoutObservable<boolean>;\r\n private _pathRunnerTogglerColor : KnockoutObservable<string>;\r\n private _pathRunnerToggler : KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._searchTerm = ko.observable('');\r\n this._isReady = ko.observable(true);\r\n this._enableEntityTypeButtons = ko.observable(true);\r\n this._isEditable = ko.observable(false);\r\n this._fieldCollections = ko.observableArray([]);\r\n this._typedScreens = ko.observableArray([]);\r\n this._entityTypes = ko.observableArray([]);\r\n this._disableDelete = ko.observable(true);\r\n this._isEnablePathRunnerToggler = ko.observable(false);\r\n\r\n if (this._renderMode() !== RenderModes.ToolBar) {\r\n this._toolBar = ko.observable(null);\r\n }\r\n this._previousScreenName = null;\r\n this._screen = null;\r\n this._screenName = ko.observable(LABELS.FORM_DESIGNER);\r\n this._screenType = ko.observable('');\r\n this._title = ko.computed(() => `${this._screenType()} ${this._screenName()}`);\r\n this._hasData = ko.observable(false);\r\n this._isSaveEnable = ko.observable(false);\r\n this._isDashScreen = ko.observable(true);\r\n\r\n this._screenTypes = ko.observableArray([]);\r\n this._selectedType = ko.observable(null);\r\n this._designScreen = null;\r\n this._hasCustomColor = ko.observable(null);\r\n this._hasCustomWeight = ko.observable(null);\r\n this._screenWidth = ko.observable(null);\r\n this._screenBgColor = ko.observable(null);\r\n this._fontColor = ko.observable(null);\r\n this._fontFamily = ko.observable(null);\r\n this._fontWeight = ko.observable(null);\r\n this._fontStyle = ko.observable(null);\r\n this._pathRunnerTogglerColor = ko.observable('rgb(0, 255, 0)');\r\n this._pathRunnerToggler = ko.observable(false);\r\n\r\n this._activeFieldCollectionName = ko.observable(null);\r\n this._activeTypeName = ko.observable(null);\r\n this._defaultDropDownOtherOptions = {\r\n closeOnClick: 'body',\r\n attach: undefined,\r\n height: 'auto',\r\n maxHeight: 300,\r\n isolateScroll: true,\r\n pointer: \"right\",\r\n maxWidth: 250,\r\n position: {\r\n x: \"right\",\r\n y: \"bottom\"\r\n }\r\n }\r\n this._dafaultDropDownClass = 'jBox-padding-10px jBox-fix-pointer-position-right-15px';\r\n this._isOpenFieldCollectionDropdown = ko.observable(null);\r\n this._isOpenTypedScreenDropDown = ko.observable(null);\r\n this._isOpenFromDatabaseDesigner = ko.observable(false);\r\n\r\n this.AddEvent('SCREEN_CREATED');\r\n this.Init();\r\n\r\n this._hasCustomColor.subscribe(newValue => {\r\n (this._screen as DesignScreen).HasCustomColor = newValue;\r\n });\r\n\r\n this._hasCustomWeight.subscribe(newValue => {\r\n (this._screen as DesignScreen).HasCustomWeight = newValue;\r\n });\r\n\r\n this._screenWidth.subscribe(width => {\r\n (this._screen as DesignScreen).ScreenWidth = getWidthValue(width);\r\n });\r\n\r\n this._screenBgColor.subscribe(newValue => {\r\n (this._screen as DesignScreen).ScreenBgColor = newValue;\r\n })\r\n\r\n this._fontColor.subscribe(newValue => {\r\n (this._screen as DesignScreen).Color = newValue;\r\n })\r\n\r\n this._fontFamily.subscribe(newValue => {\r\n (this._screen as DesignScreen).FontFamily = newValue;\r\n })\r\n this._fontWeight.subscribe(newValue => {\r\n (this._screen as DesignScreen).FontWeight = newValue;\r\n })\r\n this._fontStyle.subscribe(newValue => {\r\n (this._screen as DesignScreen).FontStyle = newValue;\r\n })\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private Init(): void {\r\n if (this._renderMode() != RenderModes.Design && this._renderMode() != RenderModes.ToolBar) {\r\n BlockUI.Block();\r\n FormDesignerStore.GetFormDesignerMetaData()\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier(this._el).Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n this._metadata = result.Data;\r\n });\r\n }\r\n }\r\n\r\n get Title(): KnockoutComputed<string> {\r\n return this._title;\r\n }\r\n\r\n get ScreenType(): KnockoutObservable<string> {\r\n return this._screenType;\r\n }\r\n\r\n get EnableEntityTypeButtons(): KnockoutObservable<boolean> {\r\n return this._enableEntityTypeButtons;\r\n }\r\n\r\n get IsEditable(): KnockoutObservable<boolean> {\r\n return this._isEditable;\r\n }\r\n\r\n get ToolBar(): KnockoutObservable<ToolBar> {\r\n return this._toolBar;\r\n }\r\n\r\n get EnableToolBar(): boolean {\r\n return this._toolBar() && this._toolBar().EnableToolBar();\r\n }\r\n\r\n get Screen(): any {\r\n return this._screen;\r\n }\r\n\r\n get HasData() {\r\n return this._hasData;\r\n }\r\n\r\n get IsSaveEnable() {\r\n return this._isSaveEnable;\r\n }\r\n\r\n get IsDashScreen() {\r\n return this._isDashScreen;\r\n }\r\n\r\n get TypedScreens() {\r\n return this._typedScreens;\r\n }\r\n\r\n get FieldCollections() {\r\n return this._fieldCollections;\r\n }\r\n\r\n get EntityTypes() {\r\n return this._entityTypes;\r\n }\r\n\r\n get ScreenTypes() {\r\n return this._screenTypes;\r\n }\r\n\r\n get CurrentFieldCollection() {\r\n return this._currentFieldCollection;\r\n }\r\n\r\n get CurrentType() {\r\n return this._currentType;\r\n }\r\n\r\n get ShouldShowButtonsOrEntityTypeButtons(): KnockoutObservable<boolean> {\r\n return ko.observable( this.ScreenType() !== 'Portlet' && this.ScreenType() !== 'QueryScreen' ) || this.EnableEntityTypeButtons;\r\n }\r\n\r\n get ShouldShowButtons(): boolean {\r\n return this.ScreenType() !== 'Portlet' && this.ScreenType() !== 'QueryScreen';\r\n }\r\n\r\n SetScreen(screen: DesignScreen) {\r\n this._screen = screen;\r\n }\r\n\r\n SetValue(value: any) {\r\n this._isOpenFromDatabaseDesigner(true);\r\n return this.LoadScreen(value);\r\n }\r\n\r\n ApplyScreen(screen: DesignScreen) {\r\n this._screenName(screen.GetScreenName());\r\n this._screenType(`${screen.GetType()}`);\r\n this._toolBar(new ToolBar(screen.ControlGroups));\r\n this._toolBar().IsEnabled = true;\r\n this._toolBar().EntityToolBar.Init(screen.SubjectEntity, screen, this._isOpenFromDatabaseDesigner());\r\n screen.SetRenderMode(RenderModes.Design);\r\n\r\n this._screen = screen;\r\n const canvas = $(this._el).find('#designScreenCanvas');\r\n canvas.html('<!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko -->');\r\n\r\n var designScreen = screen as DesignScreen;\r\n\r\n this._toolBar().CollapseAll();\r\n\r\n let selectedType = _.find(designScreen.DesignModel.ScreenTypes, type => type.IsMain);\r\n\r\n if (selectedType) {\r\n let oldTypeId = selectedType.TypeId;\r\n this._selectedType(selectedType);\r\n this.SelectedTypeInit(oldTypeId);\r\n } else {\r\n if (_.any(designScreen.DesignModel.ScreenTypes)) {\r\n this._selectedType(new FormTypeModel());\r\n this.SelectedTypeInit(0);\r\n }\r\n }\r\n\r\n designScreen.DesignModel.FieldCollections.unshift(new FieldCollectionModel(0, 'User'));\r\n\r\n this._currentFieldCollection = _.find(designScreen.DesignModel.FieldCollections, item => item.Id === designScreen.GetFieldCollectionId());\r\n this._currentType = _.find(designScreen.DesignModel.EntityTypes, (item) => {\r\n return item.Id === designScreen.GetTableTypeId();\r\n });\r\n\r\n this._fieldCollections(designScreen.DesignModel.FieldCollections);\r\n this._typedScreens(designScreen.DesignModel.TypedScreens);\r\n this._entityTypes(designScreen.DesignModel.EntityTypes);\r\n this._screenTypes(designScreen.DesignModel.ScreenTypes);\r\n\r\n this._screenWidth(this.FindElementByType(designScreen.FormProperties.Options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_WIDTH)?.Value);\r\n this._screenBgColor(this.FindElementByType(designScreen.FormProperties.Options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR)?.Value);\r\n this._fontColor(this.FindElementByType(designScreen.FormProperties.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_COLOR)?.Value);\r\n\r\n this._hasCustomColor(!!this._fontColor());\r\n this._hasCustomWeight(!!this.FindElementByType(designScreen.FormProperties.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_WEIGHT)?.Value.Value);\r\n\r\n designScreen.RenderByTarget(canvas[0]);\r\n\r\n this._hasData(true);\r\n this._isSaveEnable(true);\r\n this._isDashScreen(!Boolean(this._currentType.Id));\r\n\r\n this._enableEntityTypeButtons(NotTypedScreenTypes.indexOf(ScreenTypes[designScreen.ScreenType]) < 0);\r\n\r\n this.CheckIfExist();\r\n\r\n this._designScreen = designScreen;\r\n this._isEnablePathRunnerToggler(this._designScreen.IsConsultScreen);\r\n this.InitPathRunnerTogglerColor(); \r\n }\r\n\r\n InitPathRunnerTogglerColor(){\r\n if(this._designScreen.IsEnablePathRunner){\r\n this._pathRunnerTogglerColor('rgb(0, 200, 0)');\r\n this._pathRunnerToggler(true);\r\n }else{\r\n this._pathRunnerTogglerColor('rgb(200, 0, 0)');\r\n this._pathRunnerToggler(false);\r\n } \r\n }\r\n\r\n TogglePathRunner(){\r\n this._designScreen.TogglePathRunner();\r\n this.InitPathRunnerTogglerColor();\r\n }\r\n\r\n \r\n FindElementByType(array: ISettingsModal[], type: string): ISettingsModal | undefined {\r\n return _.find(array, { Type: type });\r\n }\r\n\r\n async LoadScreen(screenId: number) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetDesignScreen(screenId)\r\n .then((screen: DesignScreen) => {\r\n this.ApplyScreen(screen);\r\n })\r\n .fail(error => new Notifier($(this._el)).Failed(error.message));\r\n }\r\n\r\n private SelectedTypeInit(oldTypeId: number): void {\r\n this._selectedType.subscribe((newValue) => {\r\n if (newValue) {\r\n var currentMain = _.find(this._screenTypes(), (screenType) => {\r\n return screenType.IsMain\r\n });\r\n if (currentMain) {\r\n currentMain.IsMain = false;\r\n }\r\n\r\n if (oldTypeId != newValue.TypeId) {\r\n oldTypeId = newValue.TypeId;\r\n this._screen.HasChanges = true;\r\n }\r\n\r\n newValue.IsMain = true;\r\n }\r\n });\r\n }\r\n\r\n PickType(formId, $data) {\r\n $data.IsMain = true;\r\n this._selectedType($data);\r\n }\r\n\r\n private async Preview(): Promise<void> {\r\n const previewModal = new Modal();\r\n\r\n const factory = (await import('Core/Screens/ScreenFactory')).ScreenFactory;\r\n\r\n const model = clone(this._screen.DesignModel.ExistingScreenViewModel);\r\n\r\n if (model.ActionBar) {\r\n model.ActionBar.Controls = this._screen.ActionBar.Controls().map(c => c.GetModel());\r\n }\r\n\r\n if (model.BottomBar) {\r\n model.BottomBar.Controls = this._screen.BottomBar.Controls().map(c => c.GetModel());\r\n }\r\n\r\n for (let index = 0; index < model.SubForms.length; index++) {\r\n model.SubForms[index].Controls = this._screen.SubForms[index].Controls().map(c => c.GetModel());\r\n }\r\n\r\n model.Properties = JSON.stringify(Serialize(this._screen.FormProperties));\r\n\r\n const screen = factory.GetScreenInstance(model);\r\n\r\n screen.RenderByTarget(previewModal.Wrapper);\r\n\r\n const buttonSave = screen.GetControl(CONTROL_TYPES.ButtonSave);\r\n if(buttonSave){\r\n BlockUI.Unblock(buttonSave.GetWrapper());\r\n }\r\n\r\n previewModal.Show();\r\n\r\n BlockUI.TransparentBlock(previewModal.Wrapper);\r\n }\r\n\r\n GetFieldCollectionButtonColor(fieldCollection: FieldCollectionModel) {\r\n let buttonStyle = \" btn-default\";\r\n\r\n if (!this.ScreenExists(fieldCollection.Id, 0)) {\r\n buttonStyle = \" grey-mint \";\r\n }\r\n\r\n if (fieldCollection.Id === this.CurrentFieldCollection.Id) {\r\n buttonStyle += \" active\";\r\n this._activeFieldCollectionName(fieldCollection.Name);\r\n }\r\n\r\n return buttonStyle;\r\n }\r\n\r\n GetTypeButtonColor(entityType): string {\r\n let buttonStyle = \" btn-default\";\r\n\r\n if (!this.ScreenExists(this.CurrentFieldCollection.Id, entityType.Id)) {\r\n buttonStyle = \" grey-mint \";\r\n }\r\n\r\n if (entityType.Id === this.CurrentType.Id) {\r\n buttonStyle += \" active\";\r\n this._activeTypeName(entityType.TranslatedName || entityType.Name);\r\n }\r\n return buttonStyle;\r\n }\r\n\r\n GetTypeNameById(typeId) {\r\n const entityType = _.find(this._entityTypes(), (item) => {\r\n return item.Id === typeId\r\n });\r\n return entityType ? entityType.Name : \"\";\r\n }\r\n\r\n CheckIfExist() {\r\n if (this.CurrentType.Name == '-' && this._entityTypes().length != 1) {\r\n if (!(this._entityTypes().slice(1).some(el => this.ScreenExists(this._currentFieldCollection.Id, el.Id)))) {\r\n this._disableDelete(false);\r\n } else {\r\n this._disableDelete(true);\r\n }\r\n } else {\r\n this._disableDelete(false);\r\n }\r\n }\r\n\r\n SelectFieldCollection(fieldCollection: FieldCollectionModel) {\r\n this._disableDelete(true);\r\n\r\n const tableType = new TableType(0, \"-\");\r\n this.SwitchScreenType(fieldCollection, tableType);\r\n }\r\n\r\n SelectTypedScreen(tableType: TableType) {\r\n const isDashType: boolean = tableType.Name == '-';\r\n this._disableDelete(isDashType);\r\n\r\n this.SwitchScreenType(this.CurrentFieldCollection, tableType);\r\n }\r\n\r\n SwitchTypedScreen(fieldCollection: FieldCollectionModel, tableType: TableType) {\r\n const tableTypeId = tableType.Id;\r\n const screen = this.GetTypedScreen(fieldCollection.Id, tableType.Id);\r\n\r\n if (screen) {\r\n this.LoadScreen(screen.FormId);\r\n this.AllDropDownClose();\r\n return;\r\n }\r\n\r\n const entityId = this._screen.GetEntityId();\r\n const screenTypeId = this._screen.GetTypeId();\r\n\r\n this.CreateNewForm(entityId, screenTypeId, tableTypeId, 0, fieldCollection.Id);\r\n this.AllDropDownClose();\r\n }\r\n\r\n GetActiveFieldCollectionName(): string {\r\n const activeFieldCollection: FieldCollectionModel = _.find(this.FieldCollections(), (fieldCollection: FieldCollectionModel) => fieldCollection.Id === this.CurrentFieldCollection.Id);\r\n this._activeFieldCollectionName(activeFieldCollection ? activeFieldCollection.Name : '');\r\n return this._activeFieldCollectionName();\r\n }\r\n ShowFieldCollectionDropdown(data, event): void {\r\n let target: HTMLElement = event.currentTarget;\r\n if (!this._fieldCollectionDropDown) {\r\n this.InitFieldCollectionDropdown(target);\r\n }\r\n this._fieldCollectionDropDown?.Toggle();\r\n }\r\n InitFieldCollectionDropdown(el: HTMLElement): void {\r\n this._fieldCollectionDropDown = new JBoxDropDown({\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n otherOptions: {\r\n ...this._defaultDropDownOtherOptions,\r\n addClass: `${this._dafaultDropDownClass} js-fieldCollection-dropdown`,\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n onCloseComplete: () => {\r\n this._isOpenFieldCollectionDropdown(false);\r\n }\r\n },\r\n onCreated: () => {\r\n this._fieldCollectionDropDown.SetContent({ content: FieldCollectionDropdownTemplate as any });\r\n },\r\n onOpen: () => {\r\n this._isOpenFieldCollectionDropdown(true);\r\n }\r\n });\r\n }\r\n FieldCollectionDropdownOpen(): void {\r\n this._fieldCollectionDropDown?.Open()\r\n }\r\n FieldCollectionDropdownClose(): void {\r\n this._fieldCollectionDropDown?.Close()\r\n }\r\n\r\n GetActiveTypeName(): string {\r\n const activeType: TableType = _.find(this.EntityTypes(), (type: TableType) => type.Id === this.CurrentType.Id);\r\n this._activeTypeName(activeType ? activeType.TranslatedName || activeType.Name : '');\r\n return this._activeTypeName();\r\n }\r\n ShowTypedScreenDropDown(data, event):void {\r\n let target: HTMLElement = event.currentTarget;\r\n if (!this._typedScreenDropDown) {\r\n this.InitTypedScreenDropDown(target);\r\n }\r\n this._typedScreenDropDown?.Toggle();\r\n }\r\n InitTypedScreenDropDown(el: HTMLElement): void {\r\n this._typedScreenDropDown = new JBoxDropDown({\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n otherOptions: {\r\n ...this._defaultDropDownOtherOptions,\r\n addClass: `${this._dafaultDropDownClass} js-typed-screen-dropdown`,\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n onCloseComplete: () => {\r\n this._isOpenTypedScreenDropDown(false);\r\n }\r\n },\r\n onCreated: () => {\r\n this._typedScreenDropDown.SetContent({ content: TypedScreenDropDownTemplate as any });\r\n },\r\n onOpen: () => {\r\n this._isOpenTypedScreenDropDown(true);\r\n }\r\n });\r\n }\r\n TypedScreenDropDownOpen(): void {\r\n this._typedScreenDropDown?.Open();\r\n }\r\n TypedScreenDropDownClose(): void {\r\n this._typedScreenDropDown?.Close();\r\n }\r\n\r\n AllDropDownClose(): void {\r\n this.FieldCollectionDropdownClose();\r\n this.TypedScreenDropDownClose();\r\n }\r\n\r\n Refresh(): void {\r\n this.LoadScreen(this._screen.GetScreenId())\r\n .then(result => new Notifier($(this._el)).Success(NOTIFICATIONS.SCREEN_REFRESHED));\r\n }\r\n\r\n Save(data?: FormDesigner, evt?: JQuery.ClickEvent<HTMLElement>): void {\r\n if (this._screen.HasChanges) {\r\n this._isSaveEnable(false);\r\n\r\n const target: HTMLElement = evt && evt.target.closest('.form-designer');\r\n BlockUI.Block(BlockUI.GetTargetObjectFromTarget(target));\r\n\r\n this._screen.Save()\r\n .always(()=> BlockUI.Unblock(target ? target : null))\r\n .then(() => {\r\n new Notifier().Success(NOTIFICATIONS.SCREEN_UPDATED);\r\n this._isSaveEnable(true);\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message);\r\n this._isSaveEnable(true)\r\n });\r\n } else {\r\n new Notifier().Warning(NOTIFICATIONS.NO_PENDING_CHANGES);\r\n }\r\n }\r\n\r\n async DeleteScreen() {\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.DELETE_SCREEN,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, eventArgs => {\r\n screenManager.DeleteScreen(this._screen.GetScreenId())\r\n .then(() => {\r\n PubSub.publish('GO_TO_FORM_DESIGNER', null);\r\n }).fail(error => new Notifier().Failed(error.message));\r\n })\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n async UpdateScreenName() {\r\n if (this._screenName() === '') {\r\n new Notifier().Warning(NOTIFICATIONS.PLEASE_PROVIDE_NAME);\r\n return;\r\n }\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n let formId = this._screen.GetScreenId();\r\n screenManager.UpdateScreenName(formId, this._screenName());\r\n this._isEditable(false);\r\n this._previousScreenName = null;\r\n }\r\n\r\n Reset(): void {\r\n if (this._isDashScreen()) {\r\n return;\r\n }\r\n\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.RESET_SCREEN,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, eventArgs => {\r\n let screen = this._screen;\r\n\r\n let resetFormModel = new ResetFormRequestModel(screen.GetScreenId(),\r\n screen.GetEntityId(),\r\n screen.GetTableTypeId(),\r\n screen.GetFieldCollectionId(),\r\n screen.GetTypeId());\r\n BlockUI.Block();\r\n FormDesignerStore.ResetForm(resetFormModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier($(this._el)).Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n this.Refresh();\r\n });\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n Search(): void {\r\n const searchScreen = new SearchScreen({\r\n EntityId: this._metadata.EntityId,\r\n SearchTerm: this._searchTerm(),\r\n IsRootForFormDesigner: true\r\n });\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs) => {\r\n var recordId = eventArgs.data.RecordId;\r\n this.LoadScreen(recordId);\r\n });\r\n\r\n searchScreen.On('NEW_RECORD', this, (eventArgs) => {\r\n var typeScreen = new TypeScreen(this._metadata.EntityId, 0, true);\r\n typeScreen.On(\"TYPES_NOT_FOUND\", this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n\r\n typeScreen.On(\"TYPE_SELECTED\", this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n this.ShowEntitySelector(typeId, kindId, exampleRecordId);\r\n });\r\n\r\n this.On('SCREEN_CREATED', this, () => {\r\n searchScreen.Cancel();\r\n });\r\n\r\n typeScreen.Show();\r\n });\r\n searchScreen.Show();\r\n }\r\n\r\n OpenSettingsModal(isCardScreen: boolean) {\r\n const params: Array<ISettingsModal> = this._screen.FormProperties?.Options;\r\n const settingsModal = new SettingsModal(params,this._screenType());\r\n\r\n settingsModal.On('SUBMIT', null, (eventArgs: any) => {\r\n let options: Array<ISettingsModal> = eventArgs?.data.Options;\r\n let hasChanges: boolean = eventArgs?.data.HasChanges;\r\n\r\n this._screen.FormProperties.Options = options.length ? options : null;\r\n this._screen.HasChanges = hasChanges;\r\n\r\n if (isCardScreen) {\r\n this._screenWidth(this.FindElementByType(options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_WIDTH)?.Value);\r\n this._screenBgColor(this.FindElementByType(options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR)?.Value);\r\n this._fontColor(this.FindElementByType(options, CARD_SCREEN_PROPERTY_TYPE.FONT_COLOR)?.Value);\r\n\r\n this._fontFamily(this.FindElementByType(options, CARD_SCREEN_PROPERTY_TYPE.FONT_FAMILY)?.Value.Value);\r\n this._fontWeight(this.FindElementByType(options, CARD_SCREEN_PROPERTY_TYPE.FONT_WEIGHT)?.Value.Value);\r\n this._fontStyle(this.FindElementByType(options, CARD_SCREEN_PROPERTY_TYPE.FONT_STYLE)?.Value.Value);\r\n\r\n (this._screen as DesignScreen).FontFamily = this._fontFamily();\r\n (this._screen as DesignScreen).FontWeight = this._fontWeight();\r\n (this._screen as DesignScreen).FontStyle = this._fontStyle();\r\n\r\n // (this._screen as DesignScreen).HasCustomWeight = this._fontStyle();\r\n this._hasCustomColor(!!this._fontColor());\r\n this._hasCustomWeight(!!this._fontWeight());\r\n } else {\r\n\r\n }\r\n });\r\n\r\n settingsModal.Show();\r\n }\r\n\r\n StartLayoutConfiguration() {\r\n this._designScreen.StartLayoutConfiguration();\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n private SwitchScreenType(fieldCollection: FieldCollectionModel, tableType: TableType) {\r\n if (this._screen.HasChanges) {\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.SAVE_CHANGES,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED,\r\n this,\r\n eventArgs => {\r\n this._screen.Save()\r\n .then(() => {\r\n new Notifier().Success(NOTIFICATIONS.SCREEN_UPDATED);\r\n this.SwitchTypedScreen(fieldCollection, tableType);\r\n }).fail(err => new Notifier().Failed(err.message));\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.DISCARD_SELECTED,\r\n this,\r\n eventArgs => {\r\n this.SwitchTypedScreen(fieldCollection, tableType);\r\n });\r\n confirmationDialog.Show();\r\n } else {\r\n this.SwitchTypedScreen(fieldCollection, tableType);\r\n }\r\n }\r\n\r\n private ShowEntitySelector(typeId: number, kindId: number, exampleRecordId: number) {\r\n FormDesignerStore.GetEntities().then(data => {\r\n const options: Array<ISelectorOption<number>> = data.Entities.map((entity): ISelectorOption<number> => {\r\n return {Text: entity.EntityName, Value: entity.EntityId};\r\n });\r\n\r\n const selectEntityDialog = new SelectDialog({\r\n Label: 'Entity:',\r\n Options: options,\r\n SelectedOption: options[1]\r\n });\r\n\r\n selectEntityDialog.On('Save',\r\n this,\r\n (eventArgs) => {\r\n const selectedOption: ISelectorOption<number> = eventArgs.data;\r\n const selectedEntityId = selectedOption.Value;\r\n const tableTypeId = 0;\r\n this.CreateNewForm(selectedEntityId, typeId, tableTypeId, exampleRecordId, null);\r\n });\r\n\r\n selectEntityDialog.Show();\r\n });\r\n }\r\n\r\n private CreateNewForm(entityId: number, typeId: number, tableTypeId: number, exampleRecordId: number, fieldCollectionId: number) {\r\n BlockUI.Block();\r\n FormDesignerStore.CreateNewForm(new CreateNewFormRequestModel(entityId, typeId, tableTypeId, fieldCollectionId))\r\n .then(async screenModel => {\r\n this.Trigger('SCREEN_CREATED');\r\n this.LoadScreen(screenModel.FormId);\r\n })\r\n .fail((err) => new Notifier($(this._el)).Failed(err.message))\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n private GetTypedScreen(fieldCollectionId: number, tableTypeId: number) {\r\n return _.find(this._typedScreens(), (item) => {\r\n return item.FieldCollectionId === fieldCollectionId && item.TableTypeId === tableTypeId;\r\n });\r\n }\r\n\r\n private ScreenExists(fieldCollectionId: number, tableTypeId: number) {\r\n return _.find(this._typedScreens(), (item) => {\r\n return item.FieldCollectionId === fieldCollectionId && item.TableTypeId === tableTypeId\r\n }) !== undefined;\r\n }\r\n\r\n OnEditClick(): void {\r\n this._isEditable(true);\r\n this._previousScreenName = this._screenName();\r\n }\r\n\r\n Cancel(): void {\r\n this._isEditable(false);\r\n this._screenName(this._previousScreenName);\r\n }\r\n\r\n EasterEgg() {\r\n $('.remove-control').toggleClass('easterEggRotate');\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-newspaper-o\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport { ControlGroupModel } from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlGroupModel\";\r\nimport { ControlFactory } from \"Core/Controls/ControlFactory\";\r\nimport { IControl } from \"Core/Controls/IControl\";\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\nimport { RenderModes } from \"Core/Constant\";\r\n\r\nexport class ControlGroup {\r\n\tprivate _model: ControlGroupModel;\r\n\tprivate _controls: KnockoutObservableArray<IControl>;\r\n\tprivate _expanded: KnockoutObservable<boolean>;\r\n\tprivate _el: HTMLElement;\r\n\r\n\tconstructor(model: ControlGroupModel) {\r\n\t\tthis._model = model;\r\n\t\tthis._controls = ko.observableArray([]);\r\n\t\tthis._expanded = ko.observable(false);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tInit() {\r\n\t\tthis._model.Controls = _.sortBy(this._model.Controls, control => control.TypeName);\r\n\t\t_.each(this._model.Controls, (controlModel) => {\r\n\t\t\tvar controlParam: IControlParam = {\r\n\t\t\t\tModel: controlModel,\r\n\t\t\t\tForm: null,\r\n\t\t\t\tRenderMode: RenderModes.ToolBar\r\n\t\t\t};\r\n\r\n\t\t\tvar control = ControlFactory.CreateControl(controlParam);\r\n\t\t\tif (control) {\r\n\t\t\t\tthis._controls.push(control);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tset IsExpaned(isExpanded: boolean) {\r\n\t\tthis._expanded(isExpanded);\r\n\t}\r\n\r\n\tget IsExpaned() {\r\n\t\treturn this._expanded();\r\n\t}\r\n\r\n\tget Name(): string {\r\n\t\treturn this._model.Name;\r\n\t}\r\n\r\n\tget Controls(): KnockoutObservableArray<IControl> {\r\n\t\treturn this._controls;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tthis._el = el[0];\r\n\t}\r\n}","import {deserializeAs} from 'libs/cerialize';\r\nimport {deserialize} from 'libs/cerialize';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\n\r\nexport class ControlGroupModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.Controls = [];\r\n\t}\r\n\r\n\t@deserializeAs(ControlModel)\r\n\tControls: Array<ControlModel>;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import {deserializeAs} from 'libs/cerialize';\r\nimport {deserialize} from 'libs/cerialize';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {ControlGroupModel} from 'Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlGroupModel'\r\n\r\nexport class ControlToolBarModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.Groups = [];\r\n\t}\r\n\r\n\t@deserializeAs(ControlGroupModel)\r\n\tGroups: Array<ControlGroupModel>;\r\n}","import { Text } from 'QueryBuilder/QueryCondition/ConditionEditors/Text/Text';\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport 'signalR';\r\n\r\nimport ace, { Ace } from 'ace-builds';\r\nimport 'ace-builds/src-noconflict/ext-language_tools';\r\nimport 'ace-builds/src-noconflict/mode-csharp';\r\nimport 'ace-builds/src-noconflict/mode-javascript';\r\nimport 'ace-builds/src-noconflict/snippets/text';\r\nimport 'ace-builds/src-noconflict/snippets/csharp';\r\nimport 'ace-builds/src-noconflict/snippets/javascript';\r\nimport 'ace-builds/src-noconflict/worker-javascript';\r\nimport 'ace-builds/src-noconflict/ext-searchbox';\r\n\r\nimport 'ace-builds/src-noconflict/theme-dracula';\r\nimport 'ace-builds/src-noconflict/theme-ambiance';\r\nimport 'ace-builds/src-noconflict/theme-chaos';\r\nimport 'ace-builds/src-noconflict/theme-chrome';\r\nimport 'ace-builds/src-noconflict/theme-clouds';\r\nimport 'ace-builds/src-noconflict/theme-clouds_midnight';\r\nimport 'ace-builds/src-noconflict/theme-cobalt';\r\nimport 'ace-builds/src-noconflict/theme-crimson_editor';\r\nimport 'ace-builds/src-noconflict/theme-dawn';\r\nimport 'ace-builds/src-noconflict/theme-dracula';\r\nimport 'ace-builds/src-noconflict/theme-dreamweaver';\r\nimport 'ace-builds/src-noconflict/theme-eclipse';\r\nimport 'ace-builds/src-noconflict/theme-github';\r\nimport 'ace-builds/src-noconflict/theme-gob';\r\nimport 'ace-builds/src-noconflict/theme-gruvbox';\r\nimport 'ace-builds/src-noconflict/theme-idle_fingers';\r\nimport 'ace-builds/src-noconflict/theme-iplastic';\r\nimport 'ace-builds/src-noconflict/theme-katzenmilch';\r\nimport 'ace-builds/src-noconflict/theme-kr_theme';\r\nimport 'ace-builds/src-noconflict/theme-kuroir';\r\nimport 'ace-builds/src-noconflict/theme-merbivore';\r\nimport 'ace-builds/src-noconflict/theme-merbivore_soft';\r\nimport 'ace-builds/src-noconflict/theme-monokai';\r\nimport 'ace-builds/src-noconflict/theme-mono_industrial';\r\nimport 'ace-builds/src-noconflict/theme-pastel_on_dark';\r\nimport 'ace-builds/src-noconflict/theme-solarized_dark';\r\nimport 'ace-builds/src-noconflict/theme-solarized_light';\r\nimport 'ace-builds/src-noconflict/theme-sqlserver';\r\nimport 'ace-builds/src-noconflict/theme-terminal';\r\nimport 'ace-builds/src-noconflict/theme-textmate';\r\nimport 'ace-builds/src-noconflict/theme-tomorrow';\r\nimport 'ace-builds/src-noconflict/theme-tomorrow_night';\r\nimport 'ace-builds/src-noconflict/theme-tomorrow_night_blue';\r\nimport 'ace-builds/src-noconflict/theme-tomorrow_night_bright';\r\nimport 'ace-builds/src-noconflict/theme-tomorrow_night_eighties';\r\nimport 'ace-builds/src-noconflict/theme-twilight';\r\nimport 'ace-builds/src-noconflict/theme-vibrant_ink';\r\nimport 'ace-builds/src-noconflict/theme-xcode';\r\n\r\nimport {FunctionDesignerStore} from 'Core/Controls/FunctionDesigner/Stores/FunctionDesignerStore';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier, MessageTypes} from 'Core/Common/Notifier';\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {FunctionValidationModel} from 'Core/Controls/FunctionDesigner/Models/FunctionValidationModel';\r\nimport {SyntaxErrorModel} from 'Core/Controls/FunctionDesigner/Models/SyntaxErrorModel';\r\nimport {FunctionResult} from 'Core/Controls/FunctionDesigner/FunctionResult';\r\nimport {FunctionDesignerMethodModel} from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodModel';\r\nimport {CookieManager} from 'Core/Common/CookieManager';\r\nimport {FUNCTION_TYPES} from 'Core/Controls/FunctionDesigner/FunctionTypes';\r\nimport {\r\n Types as DecisionDialogTypes,\r\n EVENTS as DECISION_DIALOG_EVENTS,\r\n DecisionDialog\r\n} from \"Core/Components/Dialogs/DecisionDialog/DecisionDialog\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport CodeEditorTemplate from 'Core/Controls/FunctionDesigner/Templates/CodeEditor.html';\r\nimport { Guid } from '../../Common/Guid';\r\nimport { FunctionBuilder } from 'Core/Components/CustomFunctions/FunctionBuilder';\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\nimport { ColorSelector } from '../../Components/ColorSelector/ColorSelector';\r\nimport Split from 'split.js';\r\nimport { SignalRNotificationManager } from '../../Components/SignalR/SignalRNotificationManager';\r\nimport { Tooltip } from '../../Common/Tooltip';\r\nimport { event } from 'jquery';\r\n\r\nko.templates['Core/Controls/FunctionDesigner/Templates/CodeEditor'] = CodeEditorTemplate;\r\n\r\nvar customObjects = ['FinancialProcessor', 'DocumentHandling', 'RecordAPI', 'SecurityAPI', 'ShowMessage()', 'ConsoleLog()', '_userDbProvider', '_cdDbProvider', 'param', 'result'];\r\n\r\nvar customObjectProperties = {\r\n '_userDbProvider.': ['MapAsKeyValueList()', 'MapAsKeyValuePair()'],\r\n '_cdDbProvider.': ['MapAsKeyValueList()', 'MapAsKeyValuePair()'],\r\n 'FinancialProcessor.': ['CallFinancialProcessor()'],\r\n 'DocumentHandling.': ['AddToMergeTemplateQueue()', 'AddToSendDocumentQueue()', 'AddToPDFConversionQueue()'],\r\n 'RecordAPI.': ['GetRecords()', 'Get()', 'CreateFromExample()', 'LinkRecord()', 'SetMain()', 'SetReference()', 'SetNextAllowedLifeStatus()'],\r\n 'InvoicingAPI': ['CreateInvoice()'],\r\n 'SecurityAPI.': ['ChangeOwner()', 'ShareRecord()', 'UpsertSecurityRecord()'],\r\n 'UserAPI': ['GetSecurityProfile()', 'GetUserGroup()', 'GetUser()'],\r\n 'MatchingAPI': ['RunSpimMatching()'],\r\n 'TableManager.': ['GetById(), GetTableStructAsync()'],\r\n 'param.': [],\r\n 'result.': [],\r\n 'NotificationTypes.': ['Success', 'Warning', 'Failed']\r\n};\r\n\r\nvar customObjectsCompleter = {\r\n getCompletions: (editor, session, pos, prefix, callback) => {\r\n callback(null, customObjects.map((word) => {\r\n return {\r\n caption: word,\r\n value: word\r\n };\r\n }));\r\n }\r\n};\r\n\r\nvar customPropertiesCompleter = {\r\n getCompletions: (editor, session, pos, prefix, callback) => {\r\n var position = editor.getCursorPosition();\r\n var currentLine = editor.session.getLine(position.row);\r\n var properties = [];\r\n\r\n if (currentLine) {\r\n var lastWord = _.last(currentLine.split(' '));\r\n\r\n if (customObjectProperties[`${lastWord}`]) {\r\n properties = customObjectProperties[`${lastWord}`];\r\n }\r\n }\r\n\r\n callback(null, properties.map((word) => {\r\n return {\r\n caption: word,\r\n value: word\r\n };\r\n }));\r\n }\r\n};\r\n\r\nconst EDITOR_MODES = {\r\n JAVASCRIPT: 'ace/mode/javascript',\r\n CSHARP: 'ace/mode/csharp'\r\n};\r\n\r\nvar langTools = ace.require('ace/ext/language_tools');\r\nlangTools.addCompleter(customObjectsCompleter);\r\n\r\n(ace as any).config.set(\"workerPath\", `${__webpack_public_path__}ace/`);\r\n\r\ninterface IImageLog{\r\n title: string;\r\n image: string;\r\n}\r\n\r\nexport class CodeEditor extends Event {\r\n private _modal: Modal;\r\n private _method: FunctionDesignerMethodModel;\r\n private _validation: KnockoutObservable<FunctionValidationModel>;\r\n private _packageId: number;\r\n private _editor: any;\r\n private _logEditor: Ace.Editor;\r\n private _originalCode;\r\n private _labels = LABELS;\r\n private _guid: string;\r\n\r\n private _selectedTheme: KnockoutObservable<string>;\r\n\r\n private _selectedFontSize: KnockoutObservable<string>;\r\n private _selectedFontFamily: KnockoutObservable<string>;\r\n private _currentTheme: string;\r\n private _toolbarButtonBackgroundColor: KnockoutObservable<string>;\r\n private _toolbarButtonBackgroundHoverColor: KnockoutObservable<string>;\r\n\r\n private _toolbarButtonColor: KnockoutObservable<string>;\r\n private _toolbarButtonHoverColor: KnockoutObservable<string>;\r\n\r\n private _hoverTag: string;\r\n\r\n private _fontSizes = ['15px','16px','17px','18px','19px','20px', '21px', '22px','23px', '24px','25px'];\r\n\r\n //private _fontFamilies = [\"Monaco, Menlo, 'Ubuntu Mono', Consolas, source-code-pro, monospace\", 'Consolas', 'Open Sans', 'Courier New'];\r\n\r\n private _themes = [\r\n 'ambiance',\r\n 'chaos',\r\n 'chrome',\r\n 'clouds',\r\n 'clouds_midnight',\r\n 'cobalt',\r\n 'crimson_editor',\r\n 'dawn',\r\n 'dracula',\r\n 'dreamweaver',\r\n 'eclipse',\r\n 'github',\r\n 'gob',\r\n 'gruvbox',\r\n 'idle_fingers',\r\n 'iplastic',\r\n 'katzenmilch',\r\n 'kr_theme',\r\n 'kuroir',\r\n 'merbivore',\r\n 'merbivore_soft',\r\n 'monokai',\r\n 'mono_industrial',\r\n 'pastel_on_dark',\r\n 'solarized_dark',\r\n 'solarized_light',\r\n 'sqlserver',\r\n 'terminal',\r\n 'textmate',\r\n 'tomorrow',\r\n 'tomorrow_night',\r\n 'tomorrow_night_blue',\r\n 'tomorrow_night_bright',\r\n 'tomorrow_night_eighties',\r\n 'twilight',\r\n 'vibrant_ink',\r\n 'xcode']\r\n\r\n private _imageLogs: KnockoutObservableArray<IImageLog>;\r\n\r\n constructor(method: FunctionDesignerMethodModel, packageId: number) {\r\n super();\r\n this.AddEvents();\r\n this._editor = null;\r\n this._validation = ko.observable(null);\r\n this._packageId = packageId;\r\n this._method = method;\r\n this.PrepareParams();\r\n this.PreventWindowConfirmation();\r\n this._guid = Guid.NewGuid();\r\n this._selectedTheme = ko.observable('');\r\n this._selectedFontSize = ko.observable('15px');\r\n this._selectedFontFamily = ko.observable('Monaco');\r\n this._currentTheme = '';\r\n this._toolbarButtonBackgroundColor = ko.observable('');\r\n this._toolbarButtonBackgroundHoverColor = ko.observable('');\r\n\r\n this._toolbarButtonColor = ko.observable('');\r\n this._toolbarButtonHoverColor = ko.observable('');\r\n this._imageLogs = ko.observableArray([]);\r\n \r\n PubSub.subscribe(PUB_SUB_EVENTS.EXECUTE_SCRIPT, (_, data) => {\r\n if(data && data.ObjectId === this._guid){\r\n FunctionBuilder.Execute(data.Code, data.Params);\r\n }\r\n });\r\n\r\n this._selectedFontSize.subscribe((newValue)=>{\r\n this._editor.setFontSize(newValue);\r\n })\r\n\r\n this._selectedFontFamily.subscribe((newValue)=>{\r\n this._editor.setOption(\"fontFamily\", newValue);\r\n })\r\n }\r\n\r\n AddEvents() {\r\n this.AddEvent('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n\r\n PreventWindowConfirmation() {\r\n const eventWindowConfirmation = (event) => {\r\n if (!!this.HasChanges()) {\r\n // Cancel the event as stated by the standard.\r\n event.preventDefault();\r\n // Chrome requires returnValue to be set.\r\n event.returnValue = 'Would you like to leave the page?';\r\n return 'Would you like to leave the page?'\r\n } else {\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n };\r\n\r\n window.addEventListener('beforeunload', eventWindowConfirmation);\r\n\r\n this.On('ON_CHANGED_PAGE_LEAVING', this, () => {\r\n window.removeEventListener('beforeunload', eventWindowConfirmation);\r\n });\r\n }\r\n\r\n private PrepareParams() {\r\n customObjectProperties['param.'] = this._method.InParams.map(param => param.Name.replace(' ', '_'));\r\n customObjectProperties['result.'] = this._method.OutParams.map(param => param.Name.replace(' ', '_'));\r\n }\r\n\r\n private EvalFunction(code, param, Modal: any): P.Promise<any> {\r\n try {\r\n var deferredResult = P.defer<any>();\r\n eval(code);\r\n return deferredResult.promise();\r\n } catch (e) {\r\n deferredResult.reject({message: e.message});\r\n return deferredResult.promise();\r\n }\r\n }\r\n\r\n get Validation(): KnockoutObservable<FunctionValidationModel> {\r\n return this._validation;\r\n }\r\n\r\n Show() {\r\n var self = this;\r\n this._modal = new Modal({\r\n width: '100%',\r\n height: '100%',\r\n closeOnEsc: false,\r\n closeButton: false\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\r\n this.ShowModal();\r\n }\r\n\r\n Close(evt) {\r\n evt.preventDefault();\r\n evt.stopImmediatePropagation();\r\n this.Cancel();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/FunctionDesigner/Templates/CodeEditor';\r\n }\r\n\r\n Cancel() {\r\n if (this.HasChanges()) {\r\n const decisionDialog = new DecisionDialog({\r\n Text: this._labels.CONFIRMATION_FOR_UNSAVED_CHANGES,\r\n Type: DecisionDialogTypes.Question,\r\n });\r\n\r\n decisionDialog.On(\r\n DECISION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n this,\r\n () => {\r\n this.UpdateCode();\r\n });\r\n\r\n decisionDialog.On(\r\n DECISION_DIALOG_EVENTS.DISCARD_SELECTED,\r\n this,\r\n () => {\r\n if (this._modal) {\r\n this._modal.Close();\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n });\r\n\r\n decisionDialog.Show();\r\n } else {\r\n if (this._modal) {\r\n this._modal.Close();\r\n }\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n }\r\n\r\n HasChanges(): boolean {\r\n return this._originalCode != this._editor.getValue();\r\n }\r\n\r\n GoToErrorLine(error: SyntaxErrorModel) {\r\n if (this._editor) {\r\n this._editor.focus();\r\n this._editor.gotoLine(error.Line)\r\n }\r\n }\r\n\r\n GetCode() {\r\n var Range = ace.require('ace/range').Range;\r\n return this._editor.session.getTextRange(new Range(3, 0, this._editor.session.getLength() - 2, 0));\r\n }\r\n\r\n Test() {\r\n if (this._editor) {\r\n this._imageLogs([]);\r\n this._logEditor.session.setValue(null);\r\n BlockUI.Block();\r\n FunctionDesignerStore.Test({PackageId: this._packageId, MethodId: this._method.Id, Code: this.GetCode(), ObjectId: this._guid})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n this.pasteScriptDebugLog(JSON.stringify(result.Data));\r\n }).fail(err => new Notifier().Failed(err.message));\r\n }\r\n }\r\n\r\n UpdateCode() {\r\n if (this._editor) {\r\n BlockUI.Block();\r\n FunctionDesignerStore.UpdateCode({Id: this._method.Id, Code: btoa(this.GetCode())})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((functionPackage) => {\r\n this._method.Code = this._editor.getValue();\r\n this._modal.Close();\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }).fail(err => new Notifier().Failed(err.message));\r\n }\r\n }\r\n\r\n Validate() {\r\n if (this._editor) {\r\n BlockUI.Block();\r\n FunctionDesignerStore.Validate({\r\n MethodId: this._method.Id,\r\n Code: this.GetCode(),\r\n PackageId: this._packageId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n this._validation(result);\r\n }).fail(err => new Notifier().Failed(err.message));\r\n }\r\n }\r\n\r\n ShowModal() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n var Range = ace.require('ace/range').Range;\r\n var aceEditor = ace;\r\n var topNonEditableMarkerId = null;\r\n var bottomNonEditableMarkerId = null;\r\n\r\n var mode = '';\r\n if (this._method.TypeName === FUNCTION_TYPES.CSHARP_FUNCTION || this._method.TypeName === FUNCTION_TYPES.API_METHOD) {\r\n mode = EDITOR_MODES.CSHARP;\r\n }\r\n\r\n if (this._method.TypeName === FUNCTION_TYPES.JS_FUNCTION) {\r\n mode = EDITOR_MODES.JAVASCRIPT;\r\n }\r\n\r\n\t\tvar editor = ace.edit(document.getElementById('csharp-code'));\r\n\t\tthis._editor = editor;\r\n\t\teditor.setOption(\"showPrintMargin\", false);\r\n\t\teditor.setTheme('ace/theme/ambiance');\r\n editor.setFontSize('15px');\r\n\r\n this._logEditor = ace.edit(document.getElementById('log-editor'));\r\n\t\tthis._logEditor.setTheme('ace/theme/ambiance');\r\n this._logEditor.session.setValue('>');\r\n this._logEditor.session.setUseWorker(false);\r\n this._logEditor.setShowPrintMargin(false);\r\n this._logEditor.setReadOnly(true);\r\n this._logEditor.setFontSize('15px');\r\n\r\n\r\n SignalRNotificationManager.Instance.SetScriptDebugEditor(this._logEditor);\r\n\r\n SignalRNotificationManager.Instance.On('PASTE_IMAGE', this, (evtArgs)=>this.PasteImage(evtArgs.data.title, evtArgs.data.image));\r\n\r\n this._modal.AddClass('ace-ambiance');\r\n\r\n\t\teditor.session.setMode(mode);\r\n\t\teditor.session.setValue(this._method.Code);\r\n\t\tthis._originalCode = this._editor.getValue();\r\n\r\n editor.session.selection.on('changeCursor', function(e) {\r\n var rowCol = editor.selection.getCursor();\r\n if ((rowCol.row < 3)) {\r\n editor.moveCursorTo(3,0);\r\n e.preventDefault();\r\n e.stopPropagation(); \r\n }\r\n\r\n if ((editor.session.getLength() - (rowCol.row + 1) < 2)) {\r\n editor.moveCursorTo(editor.session.getLength() - 3, 0);\r\n e.preventDefault();\r\n e.stopPropagation(); \r\n }\r\n });\r\n\r\n (editor.commands as any).on('exec', (e) => {\r\n var rowCol = editor.selection.getCursor();\r\n if ((rowCol.row < 3) || (editor.session.getLength() - (rowCol.row + 1) < 2)) {\r\n e.preventDefault();\r\n e.stopPropagation(); \r\n }\r\n setTimeout(() => {\r\n editor.session.removeMarker(topNonEditableMarkerId);\r\n editor.session.removeMarker(bottomNonEditableMarkerId);\r\n topNonEditableMarkerId = editor.session.addMarker(new Range(0, 0, 3, 0), 'ace_active-line', 'text', false);\r\n bottomNonEditableMarkerId = editor.session.addMarker(new Range(editor.session.getLength() - 2, 0, editor.session.getLength(), 0), 'ace_active-line', 'text', false);\r\n }, 100);\r\n });\r\n\r\n (editor.commands as any).on('afterExec', (e, t) => {\r\n if (mode === EDITOR_MODES.CSHARP) {\r\n if (e.command.name == 'insertstring' && e.args == '.') {\r\n var all = e.editor.completers;\r\n e.editor.completers = [customPropertiesCompleter];\r\n e.editor.execCommand('startAutocomplete');\r\n e.editor.completers = all;\r\n }\r\n }\r\n });\r\n\r\n editor.setOptions({\r\n enableBasicAutocompletion: true,\r\n enableSnippets: true,\r\n enableLiveAutocompletion: true\r\n });\r\n\r\n setTimeout(() => {\r\n topNonEditableMarkerId = editor.session.addMarker(new Range(0, 0, 3, 0), 'ace_active-line', 'text', false);\r\n bottomNonEditableMarkerId = editor.session.addMarker(new Range(editor.session.getLength() - 2, 0, editor.session.getLength(), 0), 'ace_active-line', 'text', false);\r\n }, 100);\r\n\r\n\r\n Split(['#csharp-code', '#log-tabs'], {\r\n sizes: [80, 20],\r\n direction: 'vertical'\r\n })\r\n\r\n this._selectedTheme.subscribe((newValue)=>{\r\n this._editor.setTheme(`ace/theme/${newValue}`);\r\n this._logEditor.setTheme(`ace/theme/${newValue}`);\r\n this._modal.RemoveClass(`ace-${this._currentTheme.replace(/_/g, '-')}`);\r\n this._modal.AddClass(`ace-${newValue.replace(/_/g, '-')}`);\r\n\r\n let backgroundColor = $(`.ace-${newValue.replace(/_/g, '-')}`).css('background-color');\r\n this._toolbarButtonBackgroundColor(backgroundColor);\r\n this._toolbarButtonBackgroundHoverColor(this.invert(backgroundColor));\r\n\r\n let color = $(`.ace-${newValue.replace(/_/g, '-')}`).css('color');\r\n\r\n this._toolbarButtonColor(color);\r\n this._toolbarButtonHoverColor(this.invert(color));\r\n\r\n this._currentTheme = newValue;\r\n })\r\n\r\n this._selectedTheme('ambiance');\r\n\r\n }\r\n\r\n PasteImage(title: string, image: string){\r\n this._imageLogs.push({title: title, image: image});\r\n }\r\n\r\n Hover(_, event){\r\n if(event.target.tagName == 'A'){\r\n $(event.target).css( \"background-color\", this._toolbarButtonBackgroundHoverColor());\r\n $(event.target).css( \"color\", this._toolbarButtonHoverColor());\r\n $(event.target).children().css(\"background-color\", this._toolbarButtonBackgroundHoverColor());\r\n $(event.target).children().css(\"color\", this._toolbarButtonHoverColor());\r\n };\r\n\r\n if(event.target.tagName == 'I'){\r\n $(event.target).css( \"background-color\", this._toolbarButtonBackgroundHoverColor());\r\n $(event.target).css( \"color\", this._toolbarButtonHoverColor());\r\n $(event.target).parent().css(\"background-color\", this._toolbarButtonBackgroundHoverColor()); \r\n $(event.target).parent().css(\"color\", this._toolbarButtonHoverColor()); \r\n };\r\n }\r\n\r\n UnHover(_, event){\r\n if(event.target.tagName == 'A'){\r\n $(event.target).css(\"background-color\", this._toolbarButtonBackgroundColor());\r\n $(event.target).children().css(\"background-color\", this._toolbarButtonBackgroundColor()); \r\n \r\n $(event.target).css(\"color\", this._toolbarButtonColor());\r\n $(event.target).children().css(\"color\", this._toolbarButtonColor()); \r\n };\r\n }\r\n\r\n componentToHex(c) {\r\n var hex = c.toString(16);\r\n return hex.length == 1 ? \"0\" + hex : hex;\r\n }\r\n \r\n rgbToHex(r, g, b) {\r\n return \"#\" + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b);\r\n }\r\n \r\n invert(rgb) {\r\n rgb = [].slice.call(arguments).join(\",\").replace(/rgb\\(|\\)|rgba\\(|\\)|\\s/gi, '').split(',');\r\n for (var i = 0; i < rgb.length; i++) rgb[i] = (i === 3 ? 1 : 255) - rgb[i];\r\n return this.rgbToHex(rgb[0], rgb[1], rgb[2]);\r\n }\r\n \r\n pasteScriptDebugLog(message: string){\r\n this._logEditor.session.insert({\r\n row: this._logEditor.session.getLength(),\r\n column: 0\r\n }, \"\\n\" + message);\r\n\r\n this._logEditor.scrollToLine(this._logEditor.session.getLength(), true, true, function () {\r\n });\r\n this._logEditor.gotoLine(this._logEditor.session.getLength(), 0, true);\r\n }\r\n}","import { Modal } from \"Core/Common/Modal\";\r\nimport * as ko from 'knockout';\r\nimport Template from 'Core/Controls/FunctionDesigner/Templates/FunctionResult.html';\r\nimport {FunctionExecutionModel, ParamValueModel} from 'Core/Controls/FunctionDesigner/Models/FunctionExecutionModel';\r\n\r\nko.templates['Core/Controls/FunctionDesigner/Templates/FunctionResult'] = Template;\r\n\r\nexport class FunctionResult {\r\n\tprivate _model: FunctionExecutionModel;\r\n\tprivate _allRows: KnockoutObservableArray<Array<ParamValueModel>>;\r\n\tprivate _paginatedRows: KnockoutComputed<Array<Array<ParamValueModel>>>;\r\n\tprivate _recordsPerPage: number;\r\n\tprivate _pageNumber: KnockoutObservable<number>;\r\n\tprivate _totalPages: KnockoutComputed<number>;\r\n\tprivate _hasPrevious: KnockoutComputed<boolean>;\r\n\tprivate _hasNext: KnockoutComputed<boolean>;\r\n\tprivate _paginatorInputWidth: KnockoutComputed<string>;\r\n\r\n\tconstructor(model: FunctionExecutionModel) {\r\n\t\tthis._model = model;\r\n\t\tthis._allRows = ko.observableArray(model.Data);\r\n\t\tthis._recordsPerPage = 20;\r\n\t\tthis._pageNumber = ko.observable(0);\r\n\t\tlet self = this;\r\n\t\tthis._paginatedRows = ko.computed(() => {\r\n\t\t\tlet first = this._pageNumber() * this._recordsPerPage;\r\n\t\t\treturn this._allRows.slice(first, first + this._recordsPerPage);\r\n\t\t});\r\n\r\n\t\tthis._totalPages = ko.computed(() => {\r\n\t\t\tlet div = Math.floor(self._allRows().length / self._recordsPerPage);\r\n\t\t\tdiv += self._allRows().length % self._recordsPerPage > 0 ? 1 : 0;\r\n\t\t\treturn div - 1;\r\n\t\t});\r\n\r\n\t\tthis._hasPrevious = ko.computed(function() {\r\n\t\t\treturn self._pageNumber() !== 0;\r\n\t\t});\r\n\r\n\t\tthis._hasNext = ko.computed(function() {\r\n\t\t\treturn self._pageNumber() !== self._totalPages();\r\n\t\t});\r\n\r\n\r\n\t\tthis._paginatorInputWidth = ko.computed({\r\n\t\t\towner: this,\r\n\t\t\tread: () => {\r\n\t\t\t\treturn `${( self._pageNumber().toString().length + 1)*7}px`;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tShowInModal() {\r\n\t\tlet modal = new Modal({\r\n\t\t\taddClass: 'executeModal'\r\n\t\t});\r\n\t\tko.cleanNode(modal.Wrapper);\r\n\t\tko.applyBindings(this, modal.Wrapper);\r\n\t\tmodal.Show();\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/FunctionDesigner/Templates/FunctionResult';\r\n\t}\r\n\r\n\tget Model() {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tNext() {\r\n\t\tif(this._pageNumber() < this._totalPages()) {\r\n\t\t\tthis._pageNumber(this._pageNumber() + 1);\r\n\t\t}\r\n\t}\r\n\r\n\tPrevious() {\r\n\t\tif(this._pageNumber() != 0) {\r\n\t\t\tthis._pageNumber(this._pageNumber() - 1);\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <!-- ko with: Model --> <div class=\\\"pagination grid-control-paginator\\\" style=\\\"\\\"> <ul class=\\\"pagination grid-control-paginator\\\"> <li data-bind=\\\"click: $parent.Previous.bind($parent)\\\" class=\\\"page-pre\\\"> <a>‹</a> </li> <li class=\\\"page-number\\\"> <input disabled=\\\"disabled\\\" autocomplete=\\\"off\\\" data-bind=\\\"textInput: $parent._pageNumber() + 1, style: { width: $parent._paginatorInputWidth }\\\" type=\\\"text\\\" class=\\\"pagination-input\\\"> </li> <li data-bind=\\\"click: $parent.Next.bind($parent)\\\" class=\\\"page-next\\\"> <a>›</a> </li> </ul> </div> <div class=\\\"functionResultTable\\\"> <table class=\\\"table table-hover table-striped table-bordered\\\"> <thead> <tr> <!-- ko foreach: OutParams --> <th> <!-- ko text: $data --><!-- /ko --> </th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: $parent._paginatedRows --> <tr> <!-- ko foreach: $data --> <td> <!-- ko text: $data.Value --><!-- /ko --> </td> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div id=\\\"wrapper\\\" class=\\\"functionDesignerWrap\\\"> <div class=\\\"functionDesigner-screen form-designer\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"canvasDesigner-screen-content\\\"> <input id=\\\"formId\\\" type=\\\"hidden\\\" value=\\\"0\\\"/> <div class=\\\"actionBarSubForm clearfix\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body clearfix\\\"> <div class=\\\"action-bar-wrapper\\\"> <div class=\\\"bar-left\\\"> <!-- ko if: ShowButtonContainer --> <div class=\\\"standart-button-container clearfix\\\"> <input data-bind=\\\"textInput: $data._searchTerm,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thasFocus: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tenterKey: $data.Search.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl\\\"> <a data-bind=\\\"click: $data.Search.bind($data,true)\\\" class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> <button data-bind=\\\"visible: _hasData, click: DeletePackage\\\" class=\\\"btn red subFormControl\\\"><i class=\\\"fa fa-trash\\\"></i> <!-- ko text: _labels.DELETE --><!-- /ko --></button> </div> <!-- /ko --> </div> <div class=\\\"bar-right entity-heading\\\"> <div class=\\\"entity-icon-container\\\"> <span class=\\\"fa fa-window-restore\\\" aria-hidden=\\\"true\\\"></span> </div> <div class=\\\"entity-name custom-color-option formDesignerTitle__entityName\\\"> <!-- ko text: _labels.FUNCTION_DESIGNER --><!-- /ko --> </div> </div> </div> </div> </form> </div> <!-- ko if: _functionSelected() --> <div class=\\\"clearfix middle-block\\\"> <div class=\\\"content-block transition\\\"> <div id=\\\"functionDesignerContainer\\\" class=\\\"form-designer functionDesignerContainer\\\"> <div class=\\\"mainContent\\\" role=\\\"tabpanel\\\"> <div class=\\\"fDesignerRight panel-group\\\"> <!-- ko with: Package --> <div class=\\\"panel panel-success\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <span class=\\\"panel-name-text\\\" data-bind=\\\"click: $parent.EditPackage.bind($parent, $data)\\\"> <i class=\\\"fa fa-edit\\\"></i> <span data-bind=\\\" text: Name, attr: {title: Name }\\\"></span> </span> <span class=\\\"panel-nameButtonBox\\\"> <a data-bind=\\\"click: $parent.NewMethod.bind($parent)\\\" href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp editFunctionBtn subFormControl\\\"> <i class=\\\"fa fa-plus-circle\\\"></i> <span data-bind=\\\" text: $parent._labels.ADD\\\"></span> </a> </span> </h4> </div> <div class=\\\"panel-collapse collapse in\\\"> <div class=\\\"panel-body entity-container\\\"> <div class=\\\"list-group panel panel-info\\\" role=\\\"tablist\\\"> <div class=\\\"panel-heading clearfix noselect\\\"> <h5 class=\\\"panel-title clip panel-name subject\\\" data-bind=\\\"text: $parent._labels.METHODS\\\"></h5> </div> <div class=\\\"field-container\\\"> <!-- ko foreach: Methods --> <div class=\\\"list-group-item list-group-item-action alert alert-warning draggable-field clearfix nonDraggable\\\" data-bind=\\\"click: $parents[1].SelectMethod.bind($parents[1], $data),\\r\\n css:{'active' : $parents[1]._currentMethod() === $data}\\\" role=\\\"tab\\\" aria-controls=\\\"home\\\"> <span class=\\\"field-name\\\" data-bind=\\\"text: Title, attr: { title: Title }\\\"></span> </div> <!-- /ko --> </div> </div> </div> </div> </div> <!-- /ko --> </div> <div class=\\\"fDesignerLeft\\\"> <div class=\\\"tab-content\\\"> <!-- ko with: CurrentMethod --> <div class=\\\"tab-pane fade panel-group active show\\\"> <div class=\\\"card col-md-12 no-padding\\\"> <div class=\\\"panel panel-success\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <span class=\\\"panel-name-text method-title\\\" data-bind=\\\"click: $parent.EditMethod.bind($parent, $data)\\\"> <i class=\\\"fa fa-edit\\\"></i> <span data-bind=\\\"text: Title, attr: { title: Title }\\\"></span> </span> <!-- ko if: $parent._showRawResultCheckbox --> <div class=\\\"form-group\\\"> <label for=\\\"rawResult\\\">Raw result</label> <input data-bind=\\\"checked: $parent._rawResult\\\" id=\\\"rawResult\\\" type=\\\"checkbox\\\"> </div> <!-- /ko --> <span class=\\\"panel-title__btnBox\\\"> <a data-bind=\\\"click: $parent.ShowCodeEditor.bind($parent)\\\" href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp editFunctionBtn subFormControl\\\"> <i class=\\\"fa fa-plus-circle\\\"></i> EditCode </a> <a data-bind=\\\"click: $parent.NewParameter.bind($parent)\\\" href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp editFunctionBtn subFormControl\\\"> <i class=\\\"fa fa-plus-circle\\\"></i> <span data-bind=\\\" text: $parent._labels.ADD\\\"></span> </a> <a data-bind=\\\"click: $parent.Execute.bind($parent)\\\" href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn green editFunctionBtn subFormControl\\\"> <i class=\\\"fa fa-exclamation\\\"></i> <span>Execute</span> </a> </span> </h4> </div> <div class=\\\"row tab-pane__row\\\"> <!--ko if: InParams.length --> <div class=\\\"panel-collapse collapse in\\\"> <div class=\\\"col-md-6 panel-body entity-container\\\"> <fieldset class=\\\"fDesignerContainer panel group-control\\\"> <legend class=\\\"titleGroup\\\" data-bind=\\\"text: $parent._labels.IN\\\"></legend> <div class=\\\"card\\\"> <div class=\\\"card-body panel panel-info\\\"> <div class=\\\"field-container\\\"> <!-- ko foreach: InParams --> <a class=\\\"param-item list-group-item list-group-item-action alert alert-warning draggable-field clearfix nonDraggable\\\" role=\\\"tab\\\" aria-controls=\\\"home\\\" data-bind=\\\"click: $parents[1].EditParam.bind($parents[1], $data, $parent)\\\"> <span class=\\\"text-left additional-icon custom-color-option paramBox paramBox--textLeft\\\" data-bind=\\\" text: TypeName\\\"></span> <span data-bind=\\\" text: Name, attr: {title: Name }\\\" class=\\\"field-name panel-parameter-name panel-name-text alert-warning\\\"></span> <i class=\\\"fa fa-edit\\\"></i> </a> <!-- /ko --> </div> </div> </div> </fieldset> </div> </div> <!-- /ko --> <!--ko if: OutParams.length --> <div class=\\\"panel-collapse collapse in\\\"> <div class=\\\"col-md-6 panel-body entity-container\\\"> <fieldset class=\\\"fDesignerContainer panel group-control\\\"> <legend class=\\\"titleGroup\\\" data-bind=\\\"text: $parent._labels.OUT\\\"></legend> <div class=\\\"card\\\"> <div class=\\\"card-body panel panel-info\\\"> <div class=\\\"field-container\\\"> <!-- ko foreach: OutParams --> <a class=\\\"param-item list-group-item list-group-item-action alert alert-warning draggable-field clearfix nonDraggable\\\" role=\\\"tab\\\" aria-controls=\\\"home\\\" data-bind=\\\"click: $parents[1].EditParam.bind($parents[1], $data, $parent)\\\"> <i class=\\\"fa fa-edit\\\"></i> <span data-bind=\\\" text: Name, attr: {title: Name }\\\" class=\\\"field-name panel-parameter-name panel-name-text alert-warning\\\"></span> <span class=\\\"text-right additional-icon custom-color-option paramBox paramBox--textRight\\\" data-bind=\\\"text: TypeName\\\"></span> </a> <!-- /ko --> </div> </div> </div> </fieldset> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport 'pubsub';\r\nimport 'bootstrap';\r\nimport 'signalR';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\n\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {FunctionDesignerStore} from 'Core/Controls/FunctionDesigner/Stores/FunctionDesignerStore';\r\nimport {FunctionDesignerPackageModel} from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerPackageModel';\r\nimport {FunctionDesignerMethodModel} from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodModel';\r\nimport {LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {FunctionDesignerMethodParamModel} from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodParamModel';\r\nimport {FunctionResult} from 'Core/Controls/FunctionDesigner/FunctionResult';\r\n\r\nimport {NOTIFICATIONS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {EVENTS as SEARCH_SCREEN_EVENTS} from \"Core/Screens/SearchScreen/Events\";\r\nimport {EVENTS as TYPE_SCREEN_EVENTS} from \"Core/Screens/TypeScreen/Events\";\r\nimport {EVENTS as EDIT_SCREEN_EVENTS} from \"Core/Screens/EditScreen/Events\";\r\n\r\nimport {CodeEditor} from 'Core/Controls/FunctionDesigner/CodeEditor';\r\nimport {FUNCTION_TYPES} from 'Core/Controls/FunctionDesigner/FunctionTypes';\r\n\r\nimport ViewTemplate from 'Core/Controls/FunctionDesigner/Templates/View.html';\r\nimport {EntityTypesStore} from \"../../Screens/TypeScreen/Stores/EntityTypesStore\";\r\nimport { FunctionBuilder } from 'Core/Components/CustomFunctions/FunctionBuilder';\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\n\r\nko.templates['Core/Controls/FunctionDesigner/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/FunctionDesigner/Templates/Edit'] = ViewTemplate;\r\n\r\nexport class FunctionDesigner extends BaseControl {\r\n private _metadata: any;\r\n private _recordId: number;\r\n private _hasData: KnockoutObservable<boolean>;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _package: KnockoutObservable<FunctionDesignerPackageModel>;\r\n private _currentMethod: KnockoutObservable<FunctionDesignerMethodModel>;\r\n private _rawResult: KnockoutObservable<boolean>;\r\n private _showRawResultCheckbox: KnockoutComputed<boolean>;\r\n private _showButtonContainer: KnockoutObservable<boolean>;\r\n _functionSelected: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._searchTerm = ko.observable('');\r\n this._hasData = ko.observable(false);\r\n this.AddEvent('FUNCTION_CREATED');\r\n this.Init();\r\n this._package = ko.observable(null);\r\n this._currentMethod = ko.observable(null);\r\n this._rawResult = ko.observable(false);\r\n this._showRawResultCheckbox = ko.computed(() => {\r\n return this._currentMethod() && this._currentMethod().TypeName === FUNCTION_TYPES.API_METHOD;\r\n });\r\n this._showButtonContainer = ko.observable(true);\r\n this._functionSelected = ko.observable(false);\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.EXECUTE_SCRIPT, (_, data) => {\r\n if(data && data.ObjectId === this.GetGuid()){\r\n FunctionBuilder.Execute(data.Code, data.Params);\r\n }\r\n });\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n get Package(): KnockoutObservable<FunctionDesignerPackageModel> {\r\n return this._package;\r\n }\r\n\r\n get CurrentMethod(): KnockoutObservable<FunctionDesignerMethodModel> {\r\n return this._currentMethod;\r\n }\r\n\r\n get ShowButtonContainer(): KnockoutObservable<boolean> {\r\n return this._showButtonContainer;\r\n }\r\n\r\n HideButtonContainer() {\r\n this._showButtonContainer = ko.observable(false);\r\n }\r\n\r\n private Init(): void {\r\n BlockUI.Block();\r\n FunctionDesignerStore.GetFunctionDesignerMetaData()\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier(this._el).Failed(result.ErrorMessage);\r\n return;\r\n }\r\n this._metadata = result.ResultObject;\r\n });\r\n }\r\n\r\n ShowCodeEditor() {\r\n var codeEditor = new CodeEditor(\r\n this.CurrentMethod(),\r\n this._package().Id\r\n );\r\n codeEditor.Show();\r\n }\r\n\r\n\r\n SelectMethod(method: FunctionDesignerMethodModel) {\r\n this._currentMethod(method);\r\n }\r\n\r\n SelectMethodById(functionId: number){\r\n let func = _.find(this._package().Methods, (method) => method.Id === functionId);\r\n this.SelectMethod(func);\r\n }\r\n\r\n GetMethod(methodId: number): P.Promise<FunctionDesignerMethodModel> {\r\n const deferredResult = P.defer<FunctionDesignerMethodModel>();\r\n BlockUI.Block();\r\n FunctionDesignerStore.GetMethod({MethodId: methodId})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((method) => {\r\n this._currentMethod(method);\r\n let existingMethod = _.find(this._package().Methods, (item) => {\r\n return item.Id === method.Id;\r\n });\r\n\r\n if (existingMethod) {\r\n this._package().Methods[this._package().Methods.indexOf(existingMethod)] = method;\r\n }\r\n this._package.valueHasMutated();\r\n\r\n deferredResult.resolve(method);\r\n }).fail(err => new Notifier().Failed(err.message));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n GetPackage(packageId: number): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n BlockUI.Block();\r\n FunctionDesignerStore.GetPackage({PackageId: packageId})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((functionPackage) => {\r\n this._package(functionPackage);\r\n this.CurrentMethod(null);\r\n this._hasData(true);\r\n deferredResult.resolve(null);\r\n }).fail(err => new Notifier().Failed(err.message));\r\n return deferredResult.promise();\r\n }\r\n\r\n DeletePackage() {\r\n const confirmationText = CONFIRMATIONS.FUNCTION_PACKAGE_DELETION;\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n this,\r\n () => {\r\n\r\n BlockUI.Block();\r\n FunctionDesignerStore.DeletePackage({PackageId: this._package().Id})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((functionPackage) => {\r\n this._package(null);\r\n this.CurrentMethod(null);\r\n this._hasData(false);\r\n\r\n }).fail(err => new Notifier().Failed(err.message));\r\n });\r\n\r\n confirmationDialog.Show();\r\n\r\n }\r\n\r\n\r\n EditMethod(method: FunctionDesignerMethodModel) {\r\n BlockUI.Block();\r\n\r\n LockManager.Instance.TryLock(this._metadata.EntityId, method.Id)\r\n .then(() => {\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n TableTypeId: method.TypeId,\r\n RecordId: method.Id\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((screen: EditScreen) => {\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, method.TypeId);\r\n LockManager.Instance.ReleaseLock(this._metadata.EntityId, method.Id);\r\n this.GetMethod(method.Id);\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(this._metadata.EntityId, method.Id));\r\n\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_DELETED, this, (eventArgs) => {\r\n this._currentMethod(null);\r\n this.GetPackage(this._package().Id);\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n });\r\n }\r\n\r\n EditPackage(packag: FunctionDesignerPackageModel) {\r\n BlockUI.Block();\r\n LockManager.Instance.TryLock(this._metadata.EntityId, packag.Id)\r\n .then(() => {\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n TableTypeId: packag.TypeId,\r\n RecordId: packag.Id\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((screen: EditScreen) => {\r\n\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, packag.TypeId);\r\n LockManager.Instance.ReleaseLock(this._metadata.EntityId, packag.Id);\r\n this.GetPackage(packag.Id);\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(this._metadata.EntityId, packag.Id));\r\n\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_DELETED, this, (eventArgs) => {\r\n this._package(null);\r\n this._currentMethod(null);\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n });\r\n }\r\n\r\n EditParam(param: FunctionDesignerMethodParamModel, method: FunctionDesignerMethodModel) {\r\n BlockUI.Block();\r\n LockManager.Instance.TryLock(this._metadata.EntityId, param.Id)\r\n .then(() => {\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n TableTypeId: param.TypeId,\r\n RecordId: param.Id\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((screen: EditScreen) => {\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, param.TypeId);\r\n LockManager.Instance.ReleaseLock(this._metadata.EntityId, param.Id);\r\n this.GetMethod(method.Id);\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(this._metadata.EntityId, param.Id));\r\n\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_DELETED, this, (eventArgs) => {\r\n this.GetMethod(method.Id);\r\n });\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n });\r\n }\r\n\r\n SelectParameter(item) {\r\n\r\n }\r\n\r\n SetValue(value: any): void {\r\n }\r\n\r\n Search(): void {\r\n EntityTypesStore.GetTypes({\r\n EntityId: this._metadata.EntityId,\r\n ParentTypeId: 0,\r\n WithRoot: false,\r\n OnlyEnabled: true\r\n })\r\n .then((result) => {\r\n let apiPackageType = _.find(result.TableTypes, (item) => item.Name === FUNCTION_TYPES.API_PACKAGE);\r\n if (apiPackageType) {\r\n const searchScreen = new SearchScreen({\r\n EntityId: this._metadata.EntityId,\r\n SearchTerm: this._searchTerm(),\r\n IsRootForFormDesigner: true,\r\n SearchByTypes: [apiPackageType.Id]\r\n });\r\n searchScreen.On(SEARCH_SCREEN_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.TypeName === FUNCTION_TYPES.API_PACKAGE) {\r\n this._functionSelected(true)\r\n this.GetPackage(eventArgs.data.RecordId);\r\n } else {\r\n new Notifier().Warning(`${eventArgs.data.TypeName} is not allowed`);\r\n }\r\n });\r\n\r\n searchScreen.On(SEARCH_SCREEN_EVENTS.NEW_RECORD,\r\n this,\r\n (eventArgs) => {\r\n var typeScreen = new TypeScreen(this._metadata.EntityId, 0, true);\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPES_NOT_FOUND, this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.ErrorMessage);\r\n });\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPE_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.TypeName === FUNCTION_TYPES.API_PACKAGE) {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId);\r\n } else {\r\n new Notifier().Warning(`${eventArgs.data.TypeName} is not allowed`);\r\n }\r\n });\r\n\r\n this.On('FUNCTION_CREATED', this, () => {\r\n searchScreen.Cancel();\r\n });\r\n typeScreen.Show();\r\n });\r\n searchScreen.Show();\r\n }\r\n });\r\n }\r\n\r\n NewParameter() {\r\n if (this._currentMethod()) {\r\n var typeScreen = new TypeScreen(this._metadata.EntityId, this._currentMethod().TypeId, false);\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPES_NOT_FOUND, this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPE_SELECTED, this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.AddAndLink(typeId, kindId, exampleRecordId, this._currentMethod().Id).then(() => {\r\n this.GetMethod(this._currentMethod().Id);\r\n });\r\n });\r\n typeScreen.Show();\r\n }\r\n }\r\n\r\n NewMethod() {\r\n if (this._package()) {\r\n var typeScreen = new TypeScreen(this._metadata.EntityId, this._package().TypeId, false);\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPES_NOT_FOUND, this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPE_SELECTED, this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.AddAndLink(typeId, kindId, exampleRecordId, this._package().Id).then((methodId) => {\r\n this.GetMethod(methodId).then((method) => {\r\n this._package().Methods.push(method);\r\n this._package.valueHasMutated();\r\n });\r\n });\r\n });\r\n typeScreen.Show();\r\n }\r\n }\r\n\r\n AddAndLink(tableTypeId: number, kindId: number, exampleRecordId: number, parentRecordId: number): P.Promise<number> {\r\n const deferredResult = P.defer<number>();\r\n BlockUI.Block();\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = parentRecordId;\r\n editScreen.UseLinking = true;\r\n\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, tableTypeId);\r\n deferredResult.resolve(eventArgs.data.RecordId)\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number) {\r\n BlockUI.Block();\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n this.Trigger('FUNCTION_CREATED');\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this._recordId = eventArgs.data.RecordId;\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, tableTypeId);\r\n this._functionSelected(true);\r\n this.GetPackage(eventArgs.data.RecordId);\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n\r\n Execute() {\r\n BlockUI.Block();\r\n FunctionDesignerStore.Execute({\r\n PackageId: this._package().Id,\r\n MethodId: this._currentMethod().Id,\r\n IsRawResult: this._rawResult(),\r\n ObjectId: this.GetGuid()\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((result) => {\r\n var functionResult = new FunctionResult(result);\r\n functionResult.ShowInModal();\r\n }).fail(err => new Notifier().Failed(err.message));\r\n }\r\n}","export const FUNCTION_TYPES = {\r\n\tAPI_PACKAGE: 'APIPackage',\r\n\tCSHARP_FUNCTION: 'CSharpFunction',\r\n\tAPI_METHOD: 'APIMethod',\r\n\tJS_FUNCTION: 'JSFunction'\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport * as ko from 'knockout';\r\n\r\nexport class FunctionDesignerMethodParamModel {\r\n\tconstructor() {\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tSideName: string;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { FunctionDesignerMethodParamModel } from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodParamModel';\r\n\r\nexport const SIDES = {\r\n\tIN: 'IN',\r\n\tOUT: 'OUT'\r\n}\r\n\r\nexport class FunctionDesignerMethodModel {\r\n\tconstructor() {\r\n\t\tthis.Params = [];\r\n\t}\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tCode: string;\r\n\r\n\t@deserializeAs(FunctionDesignerMethodParamModel)\r\n\tParams: Array<FunctionDesignerMethodParamModel>;\r\n\r\n\tget InParams(): Array<FunctionDesignerMethodParamModel> {\r\n\t\treturn _.filter(this.Params, (item) => item.SideName === SIDES.IN);\r\n\t}\r\n\r\n\tget OutParams(): Array<FunctionDesignerMethodParamModel> {\r\n\t\treturn _.filter(this.Params, (item) => item.SideName === SIDES.OUT);\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\treturn `${this.Name}(${this.TypeName})`;\r\n\t}\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport { FunctionDesignerMethodModel } from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodModel';\r\n\r\nexport class FunctionDesignerPackageModel {\r\n\tconstructor() {\r\n\t\tthis.Methods = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserializeAs(FunctionDesignerMethodModel)\r\n\tMethods: Array<FunctionDesignerMethodModel>;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport { FunctionDesignerMethodModel } from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodModel';\r\n\r\nexport class ParamValueModel {\r\n\t@deserialize\r\n\tKey: string;\r\n\r\n\t@deserialize\r\n\tValue: string;\r\n}\r\n\r\nexport class FunctionExecutionModel {\r\n\tconstructor() {\r\n\t\tthis.OutParams = [];\r\n\t\tthis.Data = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tData: Array<Array<ParamValueModel>>;\r\n\r\n\t@deserialize\r\n\tOutParams: Array<string>;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class SyntaxErrorModel {\r\n\tconstructor() {}\r\n\r\n\t@deserialize\r\n\tError: string;\r\n\r\n\t@deserialize\r\n\tColumn: number;\r\n\r\n\t@deserialize\r\n\tLine: number;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class CompileErrorModel {\r\n\tconstructor() {}\r\n\r\n\t@deserialize\r\n\tError: string;\r\n\r\n\t@deserialize\r\n\tMethodName: string;\r\n}","import { deserializeAs } from 'libs/cerialize';\r\nimport { SyntaxErrorModel } from 'Core/Controls/FunctionDesigner/Models/SyntaxErrorModel';\r\nimport { CompileErrorModel } from 'Core/Controls/FunctionDesigner/Models/CompileErrorModel';\r\n\r\nexport class FunctionValidationModel {\r\n\tconstructor() {\r\n\t\tthis.SyntaxErrors = [];\r\n\t\tthis.CompileErrors = [];\r\n\t}\r\n\r\n\t@deserializeAs(SyntaxErrorModel)\r\n\tSyntaxErrors: Array<SyntaxErrorModel>;\r\n\r\n\t@deserializeAs(CompileErrorModel)\r\n\tCompileErrors: Array<CompileErrorModel>;\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport { EntitiesListModel } from 'Core/Controls/CanvasDesigner/Models/EntitiesListModel';\r\nimport { FunctionDesignerPackageModel } from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerPackageModel';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { FunctionDesignerMethodModel } from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodModel';\r\nimport { FunctionExecutionModel } from 'Core/Controls/FunctionDesigner/Models/FunctionExecutionModel';\r\nimport { FunctionValidationModel } from 'Core/Controls/FunctionDesigner/Models/FunctionValidationModel';\r\n\r\nexport interface IGetPackageRequestModel {\r\n\tPackageId: number;\r\n}\r\n\r\nexport interface IGetMethodRequestModel {\r\n\tMethodId: number;\r\n}\r\n\r\n\r\nexport interface IUpdateCodeRequestModel {\r\n\tId: number;\r\n\tCode: string\r\n}\r\n\r\nexport interface IExecuteRequestModel {\r\n\tPackageId: number;\r\n\tMethodId: number;\r\n\tIsRawResult?: boolean;\r\n\tObjectId: string;\r\n}\r\n\r\nexport interface IValidateRequestModel {\r\n\tPackageId: number;\r\n\tMethodId: number;\r\n\tCode: string;\r\n}\r\n\r\nexport interface ITestRequestModel {\r\n\tPackageId: number;\r\n\tMethodId: number;\r\n\tCode: string;\r\n\tObjectId: string;\r\n}\r\n\r\nexport interface ICancelExecuteRequestModel {\r\n\tErrorMessage: string;\r\n}\r\n\r\nexport interface IContinueExecuteRequestModel {\r\n\tParam: any;\r\n}\r\n\r\n\r\nexport class FunctionDesignerStore {\r\n\r\n\tstatic GetFunctionDesignerMetaData(): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/GetFunctionDesignerMetaData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetPackage(params: IGetPackageRequestModel): P.Promise<FunctionDesignerPackageModel> {\r\n\t\tconst deferredResult = P.defer<FunctionDesignerPackageModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/GetPackage',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize<FunctionDesignerPackageModel>(result.ResultObject, FunctionDesignerPackageModel));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic DeletePackage(params: IGetPackageRequestModel): P.Promise<FunctionDesignerPackageModel> {\r\n\t\tconst deferredResult = P.defer<FunctionDesignerPackageModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/DeletePackage',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize<FunctionDesignerPackageModel>(result.ResultObject, FunctionDesignerPackageModel));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMethod(params: IGetMethodRequestModel): P.Promise<FunctionDesignerMethodModel> {\r\n\t\tconst deferredResult = P.defer<FunctionDesignerMethodModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/GetMethod',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize<FunctionDesignerMethodModel>(result.ResultObject, FunctionDesignerMethodModel));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateCode(params: IUpdateCodeRequestModel): P.Promise<FunctionDesignerMethodModel> {\r\n\t\tconst deferredResult = P.defer<FunctionDesignerMethodModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/UpdateCode',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Validate(params: IValidateRequestModel): P.Promise<FunctionValidationModel> {\r\n\t\tconst deferredResult = P.defer<FunctionValidationModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/Validate',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize<FunctionValidationModel>(result.ResultObject, FunctionValidationModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Test(params: ITestRequestModel): P.Promise<FunctionExecutionModel> {\r\n\t\tconst deferredResult = P.defer<FunctionExecutionModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/Test',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize<FunctionExecutionModel>(result.ResultObject, FunctionExecutionModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage })\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Execute(params: IExecuteRequestModel): P.Promise<FunctionExecutionModel> {\r\n\t\tconst deferredResult = P.defer<FunctionExecutionModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/Execute',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize<FunctionExecutionModel>(result.ResultObject, FunctionExecutionModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage })\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\t\r\n}","// Module\nvar code = \"<a class=\\\"btn subFormControl genericBtn\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tattr: { disabled: IsDisabledByCondition },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {content: GetTooltipValue()}, click: Click, style: _style\\\"> <!--ko if: _icon() && _icon().Id && _icon().IsIcon --> <i class=\\\"generic-icon\\\" data-bind=\\\"style: { color: _iconColor}, css: _iconModel.GetClasses(_icon().FontName, _icon().Name)\\\"></i> <!--/ko--> <!-- ko if: _icon() && _icon().Id && _icon().IsImage--> <img class=\\\"generic-image img-responsive image-centered image-icon-xs\\\" src=\\\"\\\" alt=\\\"\\\" data-bind=\\\"attr: {src: _icon().Image}\\\"> <!-- /ko --> <!--ko ifnot: _nameInTooltip --> <span class=\\\"genericBtn-label\\\"> <!--ko text: Label--><!--/ko--> </span> <!--/ko--> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {RenderModes, CONTROL_TYPES} from \"Core/Constant\";\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {TriggerModel} from 'Core/Controls/BaseControl/Models/TriggerModel';\r\nimport {TRIGGER_ACTIONS} from 'Core/Constants/TriggerActions';\r\nimport {TRIGGER_PARAMS} from 'Core/Constants/TriggerParams';\r\nimport {\r\n IParamModel,\r\n IExecuteTriggerRequestModel,\r\n TriggerStore\r\n} from 'Core/Components/Triggers/TriggerStore';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {IconModel} from \"../BaseControl/Models/IconModel\";\r\nimport {GenericButtonConfigModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/GenericButtonConfigModel';\r\nimport {NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {RecordKey} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport GenericButtonConfig from 'Core/Controls/GenericButton/Configs/generic-button-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/GenericButton/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/GenericButton/Templates/HelpView.html';\r\nimport DesignTemplate from 'Core/Controls/GenericButton/Templates/Design.html';\r\nimport ToolBarTemplate from 'Core/Controls/GenericButton/Templates/ToolBar.html';\r\nimport { GridRow } from \"Core/Controls/Grid/BaseGrid/GridRow/GridRow\";\r\nimport { FunctionBuilder } from 'Core/Components/CustomFunctions/FunctionBuilder';\r\nimport { genericButtonFacade } from 'Core/Components/CustomFunctions/Facades/GenericButtonFacade';\r\n\r\n\r\nko.templates['Core/Controls/GenericButton/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/GenericButton/Templates/GridRow'] = ViewTemplate;\r\nko.templates['Core/Controls/GenericButton/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/GenericButton/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/GenericButton/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/GenericButton/Templates/ToolBar'] = ToolBarTemplate;\r\n\r\nexport class GenericButton extends BaseControl {\r\n private _config: any;\r\n private _iconColor: KnockoutObservable<string>;\r\n private _nameInTooltip: KnockoutObservable<boolean>;\r\n private _synchronousExecution: KnockoutObservable<boolean>;\r\n private _buttonClassName: KnockoutObservable<string>;\r\n private _iconModel = IconModel;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, GenericButtonConfig);\r\n\r\n this._style = ko.computed(() => {\r\n const paddingV = this._border() ? 6 : 7;\r\n const paddingH = this._border() || this._backgroundColor() ? 14 : 4;\r\n\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: `${paddingV}px ${paddingH}px`\r\n };\r\n });\r\n\r\n this._iconColor = ko.observable(null);\r\n this._nameInTooltip = ko.observable(false);\r\n this._synchronousExecution = ko.observable(false);\r\n\r\n this.Init();\r\n this._icon(this._model().Icon);\r\n this._buttonClassName = ko.observable(this._iconModel.GetClasses(this._model().Icon?.FontName, this._model().Icon?.Name));\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.EXECUTE_SCRIPT, (_, data) => {\r\n if(data && data.ObjectId === this.GetGuid()){\r\n FunctionBuilder.Execute(data.Code, data.Params, genericButtonFacade(this));\r\n }\r\n });\r\n\r\n this._icon.subscribe(() => {\r\n this._buttonClassName(this._iconModel.GetClasses(this._model().Icon?.FontName, this._model().Icon?.Name))\r\n });\r\n }\r\n\r\n get ClickTrigger(): TriggerModel{\r\n return _.find(this._model().Triggers, (trigger: TriggerModel) => {\r\n return trigger.Action === TRIGGER_ACTIONS.ON_CLICK\r\n });\r\n }\r\n\r\n async Click() {\r\n if (!this.IsDesignTime) {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n return;\r\n }\r\n\r\n if (this.IsDisabledByCondition) {\r\n return;\r\n }\r\n\r\n if (this.ClickTrigger) {\r\n let params: Array<IParamModel> = [];\r\n if (this.PrepareParams(this.ClickTrigger, params)) {\r\n let requestModel: IExecuteTriggerRequestModel = {\r\n Id: this.ClickTrigger.Id,\r\n ObjectId: this.GetGuid(),\r\n Name: this.ClickTrigger.Name,\r\n Params: params\r\n }\r\n\r\n BlockUI.Block();\r\n await TriggerStore.ExecuteClickTrigger(requestModel).fail((err) => new Notifier().Failed(err.message));\r\n BlockUI.Unblock();\r\n\r\n if (this._synchronousExecution()) {\r\n this._form.GetScreen().Refresh();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private PrepareParams(trigger: TriggerModel, params: Array<IParamModel>): boolean {\r\n let result = true;\r\n if (this._form) {\r\n _.each(trigger.Params, (param) => {\r\n if (param.Name === TRIGGER_PARAMS.ENTITY_ID || param.Name === TRIGGER_PARAMS.MAIN_ENTITY_ID) {\r\n params.push({Name: param.Name, Value: this._form.GetScreen().GetEntityId()});\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.RECORD_ID || param.Name === TRIGGER_PARAMS.MAIN_RECORD_ID) {\r\n params.push({Name: param.Name, Value: this._form.GetScreen().GetRecordId()});\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.SCREEN_ID) {\r\n params.push({Name: param.Name, Value: this._form.GetScreen().GetId()});\r\n }\r\n if (param.Name === TRIGGER_PARAMS.TABLE_TYPE_ID) {\r\n params.push({Name: param.Name, Value: this._form.GetScreen().GetTableTypeId()});\r\n }\r\n\r\n const source = this._form.GetScreen().GetSource();\r\n if (source) {\r\n if (param.Name === TRIGGER_PARAMS.PREVIOUS_ENTITY_ID) {\r\n params.push({Name: param.Name, Value: source.GetEntityId()});\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.PREVIOUS_RECORD_ID) {\r\n params.push({\r\n Name: param.Name,\r\n Value: this._form.GetScreen().GetSource().GetRecordId()\r\n });\r\n }\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.RELATED_RECORD_IDS) {\r\n if (this.GetParentControl() && this.GetParentControl().GetType() === CONTROL_TYPES.Grid) {\r\n let grid = this.GetParentControl() as any;\r\n\r\n let config = this.GetButtonInGridConfig(grid);\r\n\r\n if (config) {\r\n\r\n let selectedRecords = grid.GetSelectRecords();\r\n\r\n let keys = [];\r\n _.each(selectedRecords, (row: GridRow) => {\r\n keys = keys.concat(row.Model.RecordKeys);\r\n });\r\n\r\n let recordKeys = _.filter(keys, (item: RecordKey) => {\r\n return item.RecordId != 0 && item.QueryEntityGuid === config.QueryEntityGuid && item.FieldId === config.FieldId;\r\n });\r\n\r\n if (recordKeys.length === 0) {\r\n new Notifier().Failed(NOTIFICATIONS.SELECT_RECORDS_TO_PROCESS);\r\n result = false;\r\n }\r\n\r\n let ids = _.map(recordKeys, (recordKey) => {\r\n return recordKey.RecordId;\r\n })\r\n\r\n params.push({Name: param.Name, Value: ids.join()});\r\n\r\n } else {\r\n\r\n let selectedRecords = grid.GetSelectRecords();\r\n\r\n let keys = [];\r\n _.each(selectedRecords, (row: GridRow) => {\r\n keys = keys.concat(row.RecordId);\r\n });\r\n\r\n if (keys.length === 0) {\r\n new Notifier().Failed(NOTIFICATIONS.SELECT_RECORDS_TO_PROCESS);\r\n result = false;\r\n }\r\n\r\n params.push({Name: param.Name, Value: keys.join()});\r\n }\r\n }\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.KSEQS) {\r\n if (this.GetParentControl() && this.GetParentControl().GetType() === CONTROL_TYPES.Grid) {\r\n let grid = this.GetParentControl() as any;\r\n\r\n let selectedRecords = grid.GetSelectRecords();\r\n\r\n let keys = [];\r\n _.each(selectedRecords, (row: GridRow) => {\r\n keys = keys.concat(row.KSeq);\r\n });\r\n\r\n if (keys.length === 0) {\r\n new Notifier().Failed(NOTIFICATIONS.SELECT_RECORDS_TO_PROCESS);\r\n result = false;\r\n }\r\n\r\n params.push({Name: param.Name, Value: keys.join()});\r\n }\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.RELATED_RECORD_ID) {\r\n if (this.GetParentControl() && this.GetParentControl().GetType() === CONTROL_TYPES.Grid && this._gridRow) {\r\n let grid = this.GetParentControl() as any;\r\n let config = this.GetButtonInGridConfig(grid);\r\n\r\n if (config) {\r\n let paramData = _.find(this._gridRow.Model.RecordKeys, (item: any) => {\r\n return item.RecordId != 0 && item.QueryEntityGuid === config.QueryEntityGuid && item.FieldId === config.FieldId;\r\n });\r\n\r\n if (!paramData) {\r\n let notifier = new Notifier(null);\r\n notifier.Success(NOTIFICATIONS.PARAM_IS_EMPTY.replace('{ParamName}', param.Name));\r\n result = false;\r\n } else {\r\n params.push({Name: param.Name, Value: paramData.RecordId});\r\n }\r\n } else {\r\n params.push({ Name: param.Name, Value: this._gridRow.RecordId});\r\n }\r\n\r\n }\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.KSEQ) {\r\n if (this.GetParentControl() && this.GetParentControl().GetType() === CONTROL_TYPES.Grid && this._gridRow) {\r\n params.push({ Name: param.Name, Value: this._gridRow.KSeq});\r\n }\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.RELATED_ENTITY_ID) {\r\n if (this.GetParentControl() && this.GetParentControl().GetType() === CONTROL_TYPES.Grid) {\r\n let grid = this.GetParentControl() as any;\r\n let config = this.GetButtonInGridConfig(grid);\r\n if (config) {\r\n params.push({Name: param.Name, Value: config.EntityId});\r\n } else {\r\n params.push({Name: param.Name, Value: grid._gridEntityId});\r\n }\r\n }\r\n }\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n private GetButtonInGridConfig(grid: any): GenericButtonConfigModel {\r\n return _.find(grid.QueryExpression.GenericButtonConfigs, (config: GenericButtonConfigModel) => {\r\n return config.GenericButtonId === this.GetControlId();\r\n });\r\n }\r\n\r\n private Init() {\r\n this.ApplyProperties();\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n super.SetValue(value);\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'IconColor', this._iconColor);\r\n this.AssignProperty('Styling', 'NameInTooltip', this._nameInTooltip);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Execution', 'SynchronousExecution', this._synchronousExecution)\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private GetTooltipValue(): string {\r\n if (this._nameInTooltip()) {\r\n return this.Label();\r\n }\r\n return '';\r\n }\r\n}\r\n","// Module\nvar code = \"<a class=\\\"btn subFormControl genericBtn\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tattr: { disabled: IsDisabledByCondition },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {content: GetTooltipValue()}, style: _style\\\"> <!--ko if: _icon() && _icon().Id && !_icon().Image--> <i data-bind=\\\"style: { color: _iconColor}, css: _iconModel.GetClasses(_icon().FontName, _icon().Name)\\\"></i> <!--/ko--> <!-- ko if: _icon() && _icon().Id && _icon().Image--> <img class=\\\"img-responsive image-centered image-icon-xs\\\" data-bind=\\\"attr: {src: _icon().Image}\\\"> <!-- /ko --> <!--ko ifnot: _nameInTooltip --> <span class=\\\"genericBtn-label\\\"> <!--ko text: Label--><!--/ko--> </span> <!--/ko--> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn subFormControl genericBtn\\\" data-bind=\\\"tooltip: {content: GetTooltipValue()}, click: Click, style: _style\\\"> <!--ko if: _icon() && _icon().Id && _icon().IsIcon --> <i class=\\\"generic-icon\\\" data-bind=\\\"style: { color: _iconColor}, css: _buttonClassName\\\"></i> <!--/ko--> <!-- ko if: _icon() && _icon().Id && _icon().IsImage--> <img class=\\\"generic-image img-responsive image-centered image-icon-xs\\\" src=\\\"\\\" alt=\\\"\\\" data-bind=\\\"attr: {src: _icon().Image}\\\"> <!-- /ko --> <!--ko ifnot: _nameInTooltip --> <span class=\\\"genericBtn-label\\\"> <!--ko text: Label--><!--/ko--> </span> <!--/ko--> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn subFormControl\\\"> <i class=\\\"fa fa-code\\\"></i> <span>Generic Button</span> </a>\";\n// Exports\nexport default code;","import { CONTROL_TYPES } from \"Core/Constant\";\r\nimport { GenericButton } from \"Core/Controls/GenericButton/GenericButton\";\r\nimport { Grid } from \"Core/Controls/Grid/Grid\";\r\nimport { gridFacade } from \"./GridFacade\";\r\nimport { screenFacade } from \"Core/Components/CustomFunctions/Facades/ScreenFacade\";\r\n\r\nexport const genericButtonFacade = (control: GenericButton) => {\r\n\r\n const getGrid = () => {\r\n let parent = control.GetParentControl();\r\n if(parent && parent.GetControlTypeName() === CONTROL_TYPES.Grid){\r\n return gridFacade(parent as Grid);\r\n }\r\n return null;\r\n }\r\n\r\n return { getGrid }\r\n}","export const TRIGGER_PARAMS = {\r\n\tSCREEN_ID: 'ScreenId',\r\n\tTABLE_TYPE_ID: 'TableTypeId',\r\n\tUSER_ID: 'UserId',\r\n\tRECORD_ID: 'RecordId',\r\n\tENTITY_ID: 'EntityId',\r\n\tPREVIOUS_ENTITY_ID: 'PreviousEntityId',\r\n\tPREVIOUS_RECORD_ID: 'PreviousRecordId',\r\n\tMAIN_RECORD_ID: 'MainRecordId',\r\n\tMAIN_ENTITY_ID: 'MainEntityId',\r\n\tRELATED_ENTITY_ID: 'RelatedEntityId',\r\n\tRELATED_RECORD_ID: 'RelatedRecordId',\r\n\tRELATED_RECORD_IDS: 'RelatedRecordIds',\r\n\tOLD_KSEQ: 'OldKSeq',\r\n\tNEW_KSEQ: 'NewKSeq',\r\n\tCONTROL_ID: 'ControlId',\r\n\tKSEQ: 'KSeq',\r\n\tKSEQS: 'KSeqs'\r\n}","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport {TotalCell} from 'Core/Controls/Grid/BaseGrid/GridCell/TotalCell';\r\nimport {GridTotalRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridTotalRowModel';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\nimport { GridCountRowModel } from \"../../Models/GridDataModel/GridCountRowModel\";\r\n\r\nexport class GridCountRow {\r\n\tprivate _dataCells: KnockoutObservableArray<TotalCell>;\r\n\tprivate _rowColorEnabled: KnockoutObservable<boolean> = ko.observable(false);\r\n\tprivate _labels = LABELS;\r\n\tprivate _isGroupActive: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tprivate _model: GridCountRowModel,\r\n\t\tprivate _showFavoriteCell,\r\n\t\tpublic _isEnableSelectRecord: KnockoutObservable<boolean>,\r\n\t\tcolumns: GridColumnModel[]\r\n\t) {\r\n\t\tthis._dataCells = ko.observableArray([]);\r\n\t\t_.each(this._model.Data, (item, index) => {\r\n\t\t\tlet filterTotalColumns = _.filter(columns, column => !column.IsSortDescription);\r\n\t\t\tthis._dataCells.push(new TotalCell(item, _.find(filterTotalColumns, (col)=>col.QueryColumnGuid == item.QueryColumnGuid)));\r\n\t\t});\r\n\r\n\t\tthis._isGroupActive = ko.observable(true);\r\n\t}\r\n\r\n\tset IsGroupActive(active: boolean) {\r\n\t\tthis._isGroupActive(active);\r\n\t}\r\n\r\n\tget IsGroupActive():boolean {\r\n\t\treturn this._isGroupActive();\r\n\t}\r\n\r\n\t@enumerable \r\n\tget HasWrappedColumn(): boolean {\r\n\t\tvar wrappedCell = _.find(this._dataCells(), (dataCell) => { return dataCell.IsWrapped });\r\n\t\treturn wrappedCell != null;\r\n\t}\r\n\r\n\t@enumerable\r\n\tget HasData(): boolean {\r\n\t\treturn this._model.Data.length > 0;\r\n\t}\r\n\r\n\t@enumerable \r\n\tget Guid(): string {\r\n\t\treturn this._model.Guid;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as Viewer from \"viewer\";\r\n\r\nimport {\r\n GridScreenRow,\r\n Paginator,\r\n ZIndexManager,\r\n BlockUI,\r\n ResizeObserver,\r\n ScreenTypes,\r\n Event,\r\n Notifier,\r\n P,\r\n ConfirmationDialog,\r\n ConfirmationTypes,\r\n CONFIRMATION_DIALOG_EVENTS,\r\n LockManager,\r\n CONFIRMATIONS,\r\n NOTIFICATIONS,\r\n TranslationManager,\r\n CONTROL_TYPES,\r\n FIELD_TYPES,\r\n TABLE_TYPES,\r\n RelationshipTypes,\r\n EVENTS,\r\n GridAverageRow,\r\n DataCell,\r\n GroupColumn,\r\n HeaderColumn,\r\n GridRow,\r\n States,\r\n GridTotalRow,\r\n GridCellValueModel,\r\n GridColumnModel,\r\n GridDataModel,\r\n GridRowModel,\r\n QueryEntityModel,\r\n QueryExpressionModel,\r\n FieldDataModel,\r\n GridRowDataModel,\r\n TranslationModel,\r\n UpdateLifestatusModel,\r\n GridStore,\r\n IGetGridDataRequestModel,\r\n IUnlinkRecordRequestModel,\r\n TypeScreen,\r\n Util,\r\n FastFilterSaveModel,\r\n IBaseGridOptions,\r\n IForm,\r\n ILoadScreenRelationModel,\r\n IControl,\r\n SortModel,\r\n SortOrder,\r\n QueryColumnModel,\r\n QUERY_RESULT_GRID_EVENTS,\r\n PivotDetailsDropdown,\r\n Toolbar,\r\n TOOLBAR_EVENTS,\r\n ConfigModel,\r\n PROPERTIES,\r\n DeletedRelationModel,\r\n UpdateDataModel,\r\n extractLookupValFieldMetadata,\r\n ViewerJsExtention,\r\n PAGINATOR_EVENTS, LABELS\r\n} from './Index';\r\nimport {IUnlinkMultipleRecordsRequestModel} from \"../Stores/GridStore\";\r\nimport { GridCountRow } from './GridRow/GridCountRow';\r\n\r\nconst TYPE_FIELD_NAME = 'F_TYPE';\r\n\r\nconst DEFAULT_MAX_CELL_WIDTH_PX = 600;\r\nconst DEFAULT_MIN_CELL_WIDTH_PX = 10;\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\nclass GridSortModel {\r\n reservedCells: HTMLElement[];\r\n cells: HTMLElement[];\r\n row: HTMLElement\r\n}\r\n\r\ninterface GroupedDataItem {\r\n Title: string;\r\n Value: string;\r\n Cell: DataCell;\r\n}\r\n\r\nexport class BaseGrid extends Event {\r\n private _dataModel: GridDataModel;\r\n private _tableViewId: number;\r\n private _isAllSelected: KnockoutObservable<boolean>;\r\n private _headerColumns: KnockoutObservableArray<HeaderColumn>;\r\n private _disableEditLinkButton: KnockoutObservable<boolean> = ko.observable(false);\r\n private _rows: KnockoutObservableArray<GridRow>;\r\n private _totalRow: KnockoutObservable<GridTotalRow>;\r\n private _countRow: KnockoutObservable<GridCountRow>;\r\n private _averageRow: KnockoutObservable<GridAverageRow>;\r\n private _totalGroupRows: Array<GridTotalRow>;\r\n private _enableFavoritesIfPossible: boolean;\r\n private _averageGroupRows: Array<GridAverageRow>;\r\n private _lockRows: Array<GridRow>;\r\n private _visible: KnockoutObservable<boolean>;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _el: HTMLElement;\r\n private _isEnableSelectRecord: KnockoutObservable<boolean>;\r\n private _isFastFilterEnabled: KnockoutObservable<boolean> = ko.observable(false);\r\n private _screenType: string;\r\n private _isNested: boolean;\r\n private _maxRowHeight: KnockoutObservable<string>;\r\n private _columnClassesCollection: KnockoutObservableArray<string>;\r\n private _columnClassesTotalCollection: KnockoutObservableArray<string>;\r\n private _hideLifeStatusToggle: KnockoutObservable<boolean>;\r\n private _hideUnlink: KnockoutObservable<boolean>;\r\n private _hideEdit: KnockoutObservable<boolean>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _enableBasket: KnockoutObservable<boolean>;\r\n private _backLinkingButtons: KnockoutObservableArray<any>;\r\n private _isQueryResultGrid: boolean;\r\n public _isPrioritiesDisabled: boolean;\r\n private _form: IForm;\r\n private _gridDataModel: IGetGridDataRequestModel;\r\n public existedColumnAliases: string[];\r\n private _queryExpression: QueryExpressionModel;\r\n private _isView: KnockoutObservable<boolean>;\r\n private _isVisibleFavorites: KnockoutObservable<boolean>;\r\n private _bulkEditRow: KnockoutObservable<GridRow>;\r\n private _uiBlocked: boolean;\r\n private _inlineControls: Array<IControl>;\r\n private _columnWidth: number[] = [];\r\n private _reservedColumnsWidth: number[] = [];\r\n private ToggleAllShownColumns;\r\n private _canShowColumns: boolean = false;\r\n private _canHideColumns: boolean = false;\r\n private _overflowInParentBeforeHidden: string = \"\";\r\n private _rowsReady = false;\r\n private _headerColumnsReady = false;\r\n private _nextNewRow = false;\r\n private _hideCont: number = 0;\r\n private groupColumns: object = {};\r\n private _sortByRelationshipOrder: KnockoutObservable<number>;\r\n private _sortByRelationshipOrderClassName: KnockoutComputed<string>;\r\n private _isEnableSortByRelationShips: KnockoutObservable<boolean>;\r\n private _enableSelectRowCell: boolean;\r\n private _toolbar: Toolbar;\r\n private _preventResize: boolean = false;\r\n private _enableLinkButton: KnockoutObservable<boolean>;\r\n private _enableUnlinkMultipleRecordsButton: KnockoutObservable<boolean>;\r\n\tprivate _enableLinkParentButton: KnockoutObservable<boolean>;\r\n\tprivate _hasOneParent: KnockoutObservable<boolean>;\r\n private _enableAddAndLinkButton: KnockoutObservable<boolean>;\r\n private _enableScanAndLinkButton: KnockoutObservable<boolean>;\r\n private _generalProperties: ConfigModel;\r\n private _tableScrollLeft: number = 0;\r\n private _unlinkedRows: Array<GridRow>;\r\n private _isMultiselect: boolean;\r\n private _waitingForGrid = null;\r\n private _isEditMode: KnockoutObservable<boolean>;\r\n private _hasSubGrid: KnockoutObservable<boolean>;\r\n private _prevPageNumber: number;\r\n private _baseTemplate: KnockoutObservable<string>;\r\n private _screenRows: KnockoutObservableArray<GridScreenRow>;\r\n public GetBaseTemplateName: KnockoutComputed<string>;\r\n private _isCardScreen: KnockoutObservable<boolean>\r\n public _deletedRows: Array<GridRow>;\r\n private _parentRow: GridRow;\r\n private _isMultipleUnlinkModeActive: KnockoutObservable<boolean> = ko.observable(false);\r\n private _resizeLimitInterval: number;\r\n private _unBlockCardScreen: KnockoutObservable<boolean>;\r\n private _hasTotalRow: KnockoutObservable<boolean>;\r\n\r\n ShowActionCell: KnockoutComputed<boolean>;\r\n\r\n constructor(options: IBaseGridOptions) {\r\n super();\r\n this._baseTemplate = ko.observable('Core/Controls/Grid/BaseGrid/Templates/DefaultTemplate');\r\n this._prevPageNumber = 1;\r\n this._isAllSelected = ko.observable(false);\r\n this._generalProperties = options.properties;\r\n this._hideLifeStatusToggle = options.hideLifeStatusToggle;\r\n this._hideUnlink = options.hideUnlink;\r\n this._hideEdit = options.hideEdit;\r\n this._isEditable = options.isEditable || ko.observable(null);\r\n this._enableBasket = options.enableBasket || ko.observable(null);\r\n this._enableFavoritesIfPossible = options.enabledFavorite || options.enabledFavorite === undefined;\r\n this._backLinkingButtons = options.backLinkingButtons || ko.observableArray([]);\r\n this._isQueryResultGrid = options.isQueryResultGrid || null;\r\n this._unBlockCardScreen = ko.observable(null);\r\n this._headerColumns = ko.observableArray([]);\r\n this._rows = ko.observableArray([]);\r\n this._screenRows = ko.observableArray([]);\r\n this._isNested = options.isNested || false;\r\n this._maxRowHeight = ko.observable(options.maxRowHeight || '100');\r\n this._isPrioritiesDisabled = options.isPrioritiesDisabled || false;\r\n this._form = options.form;\r\n this._isView = ko.observable(false);\r\n this._isCardScreen = ko.observable(false);\r\n this._isVisibleFavorites = ko.observable(false);\r\n this._bulkEditRow = ko.observable(null);\r\n this._uiBlocked = false;\r\n this._totalRow = ko.observable(null);\r\n this._countRow = ko.observable(null);\r\n this._averageRow = ko.observable(null);\r\n this._hasTotalRow = ko.observable(false);\r\n this._totalGroupRows = [];\r\n this._averageGroupRows = [];\r\n this._lockRows = [];\r\n this._enableSelectRowCell = options.enableSelectRowCell;\r\n this.ToggleAllShownColumns = options.ToggleAllShownColumns || function () {};\r\n this._isEnableSortByRelationShips = ko.observable(false);\r\n this._enableLinkButton = ko.observable(false);\r\n this._enableUnlinkMultipleRecordsButton = ko.observable(false);\r\n\t\tthis._enableLinkParentButton = ko.observable(false);\r\n\t\tthis._hasOneParent = ko.observable(false);\r\n this._enableAddAndLinkButton = ko.observable(false);\r\n this._enableScanAndLinkButton = ko.observable(false);\r\n this._isMultiselect = options.isMultiselect != null ? options.isMultiselect : true;\r\n this._isEditMode = ko.observable(false);\r\n\r\n this._visible = ko.observable(false);\r\n this._isReady = ko.observable(true);\r\n this._unlinkedRows = [];\r\n this._hasSubGrid = ko.observable(false);\r\n\r\n this._isEnableSelectRecord = options.isEnableSelectRecord;\r\n this._screenType = options.screenType;\r\n this._columnClassesCollection = ko.observableArray([]);\r\n this._columnClassesTotalCollection = ko.observableArray([]);\r\n this._inlineControls = [];\r\n this._sortByRelationshipOrder = ko.observable(SortOrder.Both);\r\n this._deletedRows = [];\r\n this._parentRow = options.ParentRow;\r\n\r\n this.InitEvents();\r\n this.GetBaseTemplateName = ko.computed(()=> this._baseTemplate() );\r\n\r\n this._sortByRelationshipOrderClassName = ko.computed({\r\n owner: this,\r\n read: () => {\r\n return this._isEnableSortByRelationShips() ? `sort-${SortOrder[this._sortByRelationshipOrder()].toLowerCase()}` : '';\r\n }\r\n });\r\n\r\n this.ShowActionCell = ko.computed(() => (!this._isView() && this._isEditable()\r\n && (!_.any(this._rows(), row => !row.ShowActionCell()))\r\n || this.HasInlineControls || this._hasSubGrid()\r\n || this._hasTotalRow()\r\n ));\r\n\r\n if (this._isNested) {\r\n this._toolbar = new Toolbar(\r\n false,\r\n false,\r\n this._enableLinkButton,\r\n\t\t\t\tthis._enableUnlinkMultipleRecordsButton,\r\n\t\t\t\tthis._enableLinkParentButton,\r\n this._hasOneParent,\r\n this._enableAddAndLinkButton,\r\n this._enableScanAndLinkButton,\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n this._screenType,\r\n false,\r\n false,\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n true,\r\n false,\r\n [],\r\n );\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.LINK_RECORD, this, () => this.Trigger(TOOLBAR_EVENTS.LINK_RECORD));\r\n this._toolbar.On(TOOLBAR_EVENTS.LINK_PARENT_RECORD, this, () => this.Trigger(TOOLBAR_EVENTS.LINK_PARENT_RECORD));\r\n this._toolbar.On(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, this, () => this.Trigger(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD));\r\n this._toolbar.On(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, this, () => this.Trigger(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD));\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.UNLINK_MULTIPLE_RECORDS, this, () => {\r\n this.SubGridUnlinkMultipleRecords();\r\n this._isMultipleUnlinkModeActive(true);\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.CONFIRM_MULTIPLE_UNLINK, this, () => {\r\n this.UnlinkMultipleRecords();\r\n this.SubGridConfirmMultipleUnlinking();\r\n this._isMultipleUnlinkModeActive(false);\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.CANCEL_MULTIPLE_UNLINK, this, () => {\r\n this.SubGridCancelMultipleUnlinking();\r\n this._isMultipleUnlinkModeActive(false);\r\n });\r\n\r\n this._toolbar.Paginator().On(PAGINATOR_EVENTS.CHANGE, this, (eventArgs: any) => {\r\n if (eventArgs.data.pageNumber === this._prevPageNumber) {\r\n return;\r\n }\r\n\r\n if (this.GetEditRows().length > 0 || this.GetNewAndLinkRows().length > 0) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: ConfirmationTypes.Warning\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.Trigger(EVENTS.LOAD_SUB_GRID);\r\n\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n this._toolbar.Paginator().PageNumber = this._prevPageNumber;\r\n });\r\n\r\n confirmationDialog.Show();\r\n } else {\r\n this.Trigger(EVENTS.LOAD_SUB_GRID);\r\n\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n InitEvents(){\r\n this.AddEvent(EVENTS.SORT);\r\n this.AddEvent(EVENTS.OPEN_HYPERLINK);\r\n this.AddEvent(EVENTS.DATA_SAVED);\r\n this.AddEvent(EVENTS.NO_CHANGES);\r\n this.AddEvent(EVENTS.EDIT_LINK);\r\n this.AddEvent(EVENTS.CHANGE_VISIBLE_GROUP);\r\n this.AddEvent(EVENTS.EDIT_CLUSTERED_LINK);\r\n this.AddEvent(EVENTS.ADD_TO_BASKET);\r\n this.AddEvent(EVENTS.REMOVE_FROM_BASKET);\r\n this.AddEvent(EVENTS.SAVE_LIFESTATUS);\r\n this.AddEvent(EVENTS.REFRESH);\r\n this.AddEvent(EVENTS.RECORD_DELETED);\r\n this.AddEvent(EVENTS.RECORD_EDITED);\r\n this.AddEvent(EVENTS.RECORD_SAVED);\r\n this.AddEvent(EVENTS.UNDO_EVERY_RECORD);\r\n this.AddEvent(EVENTS.UPDATE_GRID);\r\n this.AddEvent(EVENTS.LINK_NEXT_RELATION);\r\n this.AddEvent(EVENTS.BACK_LINKING_POPUP_REQUESTED);\r\n this.AddEvent(EVENTS.SELECT_RECORD);\r\n this.AddEvent(EVENTS.UPDATE_SET_ENABLE_ADD_BUTTON);\r\n this.AddEvent(EVENTS.UNLINK_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.LINK_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.LINK_PARENT_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD);\r\n this.AddEvent(EVENTS.LOAD_SUB_GRID);\r\n }\r\n\r\n get IsEnabledSelectRecord(): KnockoutObservable<boolean> {\r\n return this._isEnableSelectRecord;\r\n }\r\n\r\n IsAllSelectedChanged() {\r\n if (this._isMultiselect) {\r\n this.SelectAll(this._isAllSelected());\r\n }\r\n return true;\r\n }\r\n\r\n SelectAll(value: boolean) {\r\n this._rows().forEach(row => row.SetIsSelected(value));\r\n }\r\n\r\n UpdateSelection() {\r\n const selectedRowsCount = this._rows().filter(row => row.IsSelected()).length;\r\n const selectAll = selectedRowsCount === this._rows().length;\r\n this._isAllSelected(selectAll);\r\n }\r\n\r\n ClearData() {\r\n this._rows([]);\r\n }\r\n\r\n get Columns() {\r\n return this._headerColumns();\r\n }\r\n\r\n SelectType() {\r\n if (this.HasFTypeColumn() || this._dataModel.QueryExpression.EntityJoins.length === 0) {\r\n this.NewRecord();\r\n return;\r\n }\r\n\r\n const objectEntityId = this._dataModel.QueryExpression.EntityJoins[0].Entity.Metadata.Id;\r\n const parentTypeId = objectEntityId === this._dataModel.QueryExpression.Entity.Metadata.Id ? this._form.GetScreen().GetTableTypeId() : undefined;\r\n\r\n const typeScreen = new TypeScreen(objectEntityId, parentTypeId, false, false);\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.ErrorMessage));\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n\r\n this.NewRecord(typeId, kindId);\r\n });\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n NewRecord(typeId = null, kindId: number = null): P.Promise<GridRow> {\r\n let deferredResult = P.defer<GridRow>();\r\n let subjectTable: QueryEntityModel, linkTable: QueryEntityModel, columns: QueryColumnModel[];\r\n\r\n if (this._dataModel.QueryExpression.EntityJoins.length > 0) {\r\n subjectTable = this._dataModel.QueryExpression.EntityJoins[0].Entity;\r\n linkTable = this._dataModel.QueryExpression.EntityJoins[0].LinkEntity;\r\n columns = subjectTable.Columns.concat(linkTable.Columns);\r\n } else if (this._dataModel.QueryExpression.SubEntityJoins.length > 0) {\r\n subjectTable = this._dataModel.QueryExpression.SubEntityJoins[0].Entity;\r\n columns = subjectTable.Columns;\r\n } else{\r\n subjectTable = this._dataModel.QueryExpression.Entity;\r\n }\r\n\r\n\r\n BlockUI.Block();\r\n GridStore.NewRecord({\r\n EntityId: subjectTable.Metadata.Id,\r\n LinkTableId: linkTable && linkTable.Metadata.Id,\r\n ParentRecordId: this._form && this._form.GetScreen().GetRecordId(),\r\n TypeId: typeId,\r\n Fields: columns\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((result) => {\r\n deferredResult.resolve(this.AddNewRow(result, typeId, kindId));\r\n this.Trigger(EVENTS.UPDATE_SET_ENABLE_ADD_BUTTON);\r\n\r\n }).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n get Rows(): Array<GridRow>{\r\n return this._rows();\r\n }\r\n\r\n AddRow(gridRow: GridRow) {\r\n this._rows.push(gridRow);\r\n }\r\n\r\n AddRowsFrom(gridDataModel: GridDataModel) {\r\n _.each(gridDataModel.Rows, row => {\r\n const newRow = row.Clone();\r\n\r\n _.each(this.Columns, (headerColumn, index) => {\r\n if (!headerColumn) {\r\n const gridCellValueModel = new GridCellValueModel();\r\n\r\n gridCellValueModel.EntityMetadata = headerColumn.Model.EntityMetadata;\r\n gridCellValueModel.FieldMetadata = headerColumn.Model.FieldMetadata;\r\n gridCellValueModel.QueryColumnGuid = headerColumn.Model.QueryColumnGuid;\r\n gridCellValueModel.IsEnableEdit = headerColumn.Model.IsEnableEdit;\r\n newRow.Data.splice(index, 0, gridCellValueModel);\r\n gridCellValueModel.Type = gridCellValueModel.FieldMetadata.Type;\r\n } else {\r\n newRow.Data[index].FieldMetadata = headerColumn.Model.FieldMetadata;\r\n newRow.Data[index].EntityMetadata = headerColumn.Model.EntityMetadata;\r\n newRow.Data[index].QueryColumnGuid = headerColumn.Model.QueryColumnGuid;\r\n }\r\n });\r\n\r\n this.AddNewRow(newRow);\r\n });\r\n }\r\n\r\n AddNewRow(rowData: GridRowModel, typeId = null, kindId: number = null): GridRow {\r\n this._nextNewRow = true;\r\n const gridRowModel = new GridRowModel();\r\n\r\n gridRowModel.TypeId = typeId;\r\n gridRowModel.KindId = kindId;\r\n\r\n this._dataModel.Rows.push(gridRowModel);\r\n\r\n let griSubjectEntity = this.GetGridSubjectEntity();\r\n let typeColumn = _.find(griSubjectEntity.Columns, (item) => {\r\n return item.Metadata.Name === TYPE_FIELD_NAME;\r\n });\r\n\r\n _.each(this._headerColumns(), column => {\r\n let cellData = _.find(rowData.Data, (item) => {\r\n return item.QueryColumnGuid === column.Model.QueryColumnGuid\r\n });\r\n\r\n const cellValueModel = new GridCellValueModel();\r\n cellValueModel.Value = cellData ? cellData.Value : '';\r\n cellValueModel.IsWrapped = false;\r\n cellValueModel.DisplayPriority = column.Model.DisplayPriority;\r\n cellValueModel.DisplayValue = cellData ? cellData.DisplayValue : '';\r\n cellValueModel.IsEnableEdit = typeColumn && typeColumn.Metadata.Id == column.Model.FieldMetadata.Id ? true : column.Model.IsEnableEdit;\r\n cellValueModel.FieldMetadata = column.Model.FieldMetadata;\r\n cellValueModel.EntityMetadata = column.Model.EntityMetadata;\r\n cellValueModel.QueryColumnGuid = column.Model.QueryColumnGuid;\r\n cellValueModel.Type = column.Model.FieldMetadata.Type;\r\n gridRowModel.Data.push(cellValueModel);\r\n\r\n if (column.Model.FieldMetadata.Name === TYPE_FIELD_NAME) {\r\n column.Model.FieldMetadata.IsReadOnly = false;\r\n }\r\n\r\n });\r\n\r\n const row = new GridRow(\r\n gridRowModel,\r\n this._isEditable,\r\n this._hideLifeStatusToggle,\r\n this._hideUnlink,\r\n this._hideEdit,\r\n this._enableBasket,\r\n this._disableEditLinkButton,\r\n this._backLinkingButtons,\r\n ko.observable(false),\r\n this._screenType,\r\n false,\r\n this._dataModel.QueryExpression,\r\n true,\r\n this._isVisibleFavorites(),\r\n this._maxRowHeight,\r\n this._form,\r\n this.GetInlineControls(),\r\n this._enableSelectRowCell,\r\n this._generalProperties,\r\n this.IsSubGrid,\r\n false,\r\n false,\r\n this.HasProcessCards,\r\n this._hasTotalRow\r\n );\r\n\r\n row.On(EVENTS.ROW_SELECTION_CHANGED, this, (eventArgs: any) => {\r\n if (!this._isMultiselect) {\r\n _.each(this._rows(), (item) => {\r\n if (item != row) {\r\n item.SetIsSelected(false);\r\n }\r\n });\r\n }\r\n\r\n this.UpdateSelection();\r\n });\r\n row.On(EVENTS.EDIT_RECORD, this, (eventArgs: any) => {\r\n row.IsEditMode = true;\r\n this._isEditMode(true);\r\n this.Trigger(EVENTS.RECORD_EDITED);\r\n });\r\n\r\n row.On(EVENTS.CANCEL_EDIT, this, (eventArgs: any) => {\r\n if (eventArgs.source.State === States.New && !this._isEditMode()) {\r\n this._rows.splice(this._rows.indexOf(eventArgs.source), 1);\r\n this._dataModel.Rows.splice(this._dataModel.Rows.indexOf(row.Model), 1);\r\n this.Trigger(EVENTS.RECORD_DELETED);\r\n } else {\r\n eventArgs.source.IsEditMode = false;\r\n }\r\n });\r\n\r\n row.On(EVENTS.DELETE_RECORD, this, (eventArgs: any) => {\r\n this._rows.splice(this._rows.indexOf(row), 1);\r\n this._dataModel.Rows.splice(this._dataModel.Rows.indexOf(row.Model), 1);\r\n this.Trigger(EVENTS.RECORD_DELETED);\r\n });\r\n\r\n row.On(EVENTS.SAVE_RECORD, this, (eventArgs: any) => {\r\n row.IsEditMode = false;\r\n this.Trigger(EVENTS.RECORD_SAVED);\r\n this.ResizeTableCellsAfterRender();\r\n });\r\n\r\n row.On(EVENTS.REFRESH, this, (eventArgs) => {\r\n this.Trigger(EVENTS.REFRESH, {SubGrid: eventArgs.data.SubGrid, ParentRowId: eventArgs.data.ParentRowId, UpdateRow: eventArgs.data.UpdateRow});\r\n\r\n });\r\n row.On(EVENTS.ADD_TO_BASKET, this, (eventArgs: any) => this.AddToBasket(eventArgs.data.Row));\r\n row.On(EVENTS.REMOVE_FROM_BASKET, this, (eventArgs: any) => this.RemoveFromBasket(eventArgs.data.Row));\r\n\r\n row.IsEditMode = true;\r\n row.State = States.New;\r\n\r\n if (_.find(row.DataCells, (item) => item.IsEnableEdit()) != null) {\r\n this._rows.unshift(row);\r\n return row;\r\n } else {\r\n var notifier = new Notifier(this._el);\r\n notifier.Warning(NOTIFICATIONS.NO_EDITABLE_COLUMNS);\r\n }\r\n\r\n return row;\r\n }\r\n\r\n get NewRows(): number {\r\n let newRows = _.filter(this._rows(), (row)=> row.State === States.New);\r\n return newRows.length;\r\n }\r\n\r\n GetBulkEditRow(): GridRow {\r\n const gridRowModel = new GridRowModel();\r\n\r\n _.each(this._headerColumns(), column => {\r\n const cellValueModel = new GridCellValueModel();\r\n cellValueModel.Value = '';\r\n cellValueModel.IsWrapped = column.Model.IsWrapped;\r\n cellValueModel.DisplayPriority = column.Model.DisplayPriority;\r\n cellValueModel.DisplayValue = '';\r\n cellValueModel.IsEnableEdit = column.Model.IsEnableEdit && column.Model.FieldMetadata.Type === FIELD_TYPES.Lookup;\r\n cellValueModel.FieldMetadata = column.Model.FieldMetadata;\r\n cellValueModel.FieldMetadata.IsRequired = false;\r\n cellValueModel.EntityMetadata = column.Model.EntityMetadata;\r\n cellValueModel.QueryColumnGuid = column.Model.QueryColumnGuid;\r\n cellValueModel.Type = column.Model.FieldMetadata.Type;\r\n cellValueModel.width = column.Model.width;\r\n\r\n gridRowModel.Data.push(cellValueModel);\r\n\r\n if (column.Model.FieldMetadata.Name === TYPE_FIELD_NAME) {\r\n column.Model.FieldMetadata.IsReadOnly = false;\r\n cellValueModel.IsEnableEdit = false;\r\n }\r\n\r\n });\r\n\r\n const row = new GridRow(\r\n gridRowModel,\r\n this._isEditable,\r\n this._hideLifeStatusToggle,\r\n this._hideUnlink,\r\n this._hideEdit,\r\n this._enableBasket,\r\n this._disableEditLinkButton,\r\n this._backLinkingButtons,\r\n this._isEnableSelectRecord,\r\n this._screenType,\r\n false,\r\n this._dataModel.QueryExpression,\r\n true,\r\n !this._isNested,\r\n this._maxRowHeight,\r\n this._form,\r\n this.GetBulkEditControls(),\r\n this._enableSelectRowCell,\r\n this._generalProperties,\r\n this.IsSubGrid,\r\n false,\r\n false,\r\n this.HasProcessCards,\r\n this._hasTotalRow\r\n );\r\n\r\n row.IsEditMode = true;\r\n row.State = States.Edit;\r\n\r\n if (_.find(row.DataCells, (item) => item.IsEnableEdit()) != null) {\r\n return row;\r\n } else {\r\n var notifier = new Notifier(this._el);\r\n notifier.Warning(NOTIFICATIONS.NO_EDITABLE_COLUMNS);\r\n }\r\n }\r\n\r\n AddLinkedRows(data: GridDataModel): Array<GridRow> {\r\n let result: Array<GridRow> = [];\r\n this._disableEditLinkButton(!data.IsLinkEditorEnabled);\r\n this._nextNewRow = true;\r\n const inlineControls = this.GetInlineControls();\r\n\r\n _.each(data.Rows, rowModel => {\r\n _.each(this._headerColumns(), (headerColumn, index) => {\r\n const headerColumnModel = _.find(data.Columns, column => column.DisplayOrder === headerColumn.DisplayOrder);\r\n\r\n if (!headerColumnModel) {\r\n const gridCellValueModel = new GridCellValueModel();\r\n\r\n gridCellValueModel.EntityMetadata = headerColumn.Model.EntityMetadata;\r\n gridCellValueModel.FieldMetadata = headerColumn.Model.FieldMetadata;\r\n gridCellValueModel.QueryColumnGuid = headerColumn.Model.QueryColumnGuid;\r\n gridCellValueModel.IsEnableEdit = headerColumn.Model.IsEnableEdit;\r\n rowModel.Data.splice(index, 0, gridCellValueModel);\r\n gridCellValueModel.Type = gridCellValueModel.FieldMetadata.Type;\r\n } else {\r\n rowModel.Data[index].FieldMetadata = headerColumn.Model.FieldMetadata;\r\n rowModel.Data[index].EntityMetadata = headerColumn.Model.EntityMetadata;\r\n rowModel.Data[index].QueryColumnGuid = headerColumn.Model.QueryColumnGuid;\r\n }\r\n });\r\n\r\n const row = new GridRow(\r\n rowModel,\r\n this._isEditable,\r\n this._hideLifeStatusToggle,\r\n this._hideUnlink,\r\n this._hideEdit,\r\n this._enableBasket,\r\n this._disableEditLinkButton,\r\n this._backLinkingButtons,\r\n this._isEnableSelectRecord,\r\n this._screenType,\r\n true,\r\n data.QueryExpression,\r\n false,\r\n !this._isNested && this._isVisibleFavorites(),\r\n this._maxRowHeight,\r\n this._form,\r\n inlineControls,\r\n this._enableSelectRowCell,\r\n this._generalProperties,\r\n this.IsSubGrid,\r\n false,\r\n false,\r\n this.HasProcessCards,\r\n this._hasTotalRow\r\n );\r\n\r\n row.On(EVENTS.OPEN_HYPERLINK, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.OPEN_HYPERLINK, _.extend(eventArgs.data, {\r\n CurrentRow: row,\r\n RowList: data.Rows\r\n }));\r\n });\r\n\r\n row.On(EVENTS.UNLINK_RECORD, this, (eventArgs: any) => {\r\n if (this._queryExpression.IsCrossTable) {\r\n this.ShowCrossTableDetail(eventArgs.source).then((selectedRow) => {\r\n this.ConfirmUnlink(selectedRow);\r\n });\r\n } else {\r\n this.ConfirmUnlink(eventArgs.source);\r\n }\r\n });\r\n\r\n row.On(EVENTS.EDIT_RECORD, this, (eventArgs: any) => row.IsEditMode = true);\r\n row.On(EVENTS.CANCEL_EDIT, this, (eventArgs: any) => row.IsEditMode = false);\r\n\r\n row.On(EVENTS.SAVE_RECORD, this, (eventArgs: any) => {\r\n if (eventArgs.source.State === States.Link) {\r\n row.State = States.LinkAndEdit;\r\n } else {\r\n row.State = States.Edit;\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n LockManager.Instance.ReleaseLock(row.EntityId, row.RecordId);\r\n row.IsEditMode = false;\r\n }\r\n });\r\n\r\n result.push(row);\r\n row.State = States.Link;\r\n this._rows.unshift(row);\r\n });\r\n return result;\r\n }\r\n\r\n ClickOnFilterButton(headerColumn: HeaderColumn) {\r\n this.Trigger(EVENTS.UPDATE_GRID);\r\n }\r\n\r\n get CrossTableValueColumn(): QueryColumnModel{\r\n return _.find(Util.GetAllQueryColumns(this._queryExpression), col=>col.IsCrossValue);\r\n }\r\n\r\n ShowCrossTableDetail(gridRow: GridRow): P.Promise<GridRow> {\r\n let deferredResult = P.defer<GridRow>();\r\n BlockUI.Block();\r\n GridStore.GetCrossTableDetail({\r\n SubjectEntityId: this._form.GetScreen().GetEntityId(),\r\n SubjectRecordId: this._form.GetScreen().GetRecordId(),\r\n RelatedEntityId: gridRow.Model.EntityId,\r\n RelatedRecordId: gridRow.Model.RecordId,\r\n KSeqs: gridRow.Model.KSeqs,\r\n DisplayFields: this.CrossTableValueColumn?.DisplayFields\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((result) => {\r\n let pivotDetailsDropDown = new PivotDetailsDropdown();\r\n pivotDetailsDropDown.On(QUERY_RESULT_GRID_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.SelectedRecord.Model) {\r\n let row = eventArgs.data.SelectedRecord as GridRow;\r\n pivotDetailsDropDown.Close();\r\n deferredResult.resolve(row);\r\n }\r\n });\r\n\r\n pivotDetailsDropDown.On(EVENTS.REFRESH, this, () => {\r\n this.Trigger(EVENTS.REFRESH);\r\n });\r\n\r\n pivotDetailsDropDown.SetData(result);\r\n\r\n if(pivotDetailsDropDown.Rows.length == 1){\r\n deferredResult.resolve(pivotDetailsDropDown.Rows[0]);\r\n return;\r\n }\r\n\r\n pivotDetailsDropDown.Show(gridRow.El);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n get FilterSaveModels(): FastFilterSaveModel[] {\r\n let result = [];\r\n\r\n this._headerColumns().forEach((item, index) => {\r\n if (item.FilterSaveModel) {\r\n result.push(item.FilterSaveModel);\r\n }\r\n });\r\n\r\n return result || [];\r\n }\r\n\r\n SetRecordsPerPage(recordsPerPage: number){\r\n if(this._isNested){\r\n this._toolbar.Paginator().RecordsPerPage = recordsPerPage;\r\n }\r\n }\r\n\r\n SetData(\r\n data: GridDataModel,\r\n restoreSortState?: boolean,\r\n isPrioritiesDisabled?: boolean, \r\n tableViewId?: number,\r\n inlineControls: Array<IControl> = [],\r\n updateRow?: GridRow\r\n ){\r\n if(this._toolbar){\r\n this._toolbar.Paginator().TotalRecords = data.TotalRecords;\r\n }\r\n if(data.ScreenRows.length > 0){\r\n this._isCardScreen(true);\r\n BlockUI.Block({Target: this._el});\r\n this.SetScreenRowData(data)\r\n .then(()=> {\r\n BlockUI.Unblock(this._el);\r\n });\r\n }else{\r\n this._isCardScreen(false);\r\n this.SetDefaultRowData(data, restoreSortState, isPrioritiesDisabled, tableViewId, inlineControls, updateRow);\r\n }\r\n }\r\n\r\n async SetScreenRowData(data: GridDataModel){\r\n this._baseTemplate('Core/Controls/Grid/BaseGrid/Templates/ScreenTemplate');\r\n this._screenRows([]);\r\n const screenFactory = (await import('Core/Screens/ScreenFactory')).ScreenFactory;\r\n let batchIndex = 0;\r\n let loadPromise = [];\r\n for (const screenModel of data.ScreenRows) { \r\n let recordId = screenModel.Data.RecordId;\r\n screenModel.Data = null;\r\n let screen = screenFactory.GetScreenInstance(screenModel);\r\n let screenRow = new GridScreenRow(screen, this._form, recordId);\r\n\r\n loadPromise.push(screenRow.LoadScreenData());\r\n if(batchIndex >= 5){\r\n await Promise.all(loadPromise);\r\n batchIndex = 0;\r\n loadPromise = [];\r\n }\r\n\r\n this._screenRows.push(screenRow);\r\n batchIndex++;\r\n }\r\n }\r\n\r\n get IsEnableLink(): boolean {\r\n return this._generalProperties \r\n && this._generalProperties.GetPropertyValue(PROPERTIES.ENABLE_SUBGRID_LINK)\r\n && this._screenType != ScreenTypes[ScreenTypes.Portlet]\r\n && this._dataModel.GridSubjectEntityType === TABLE_TYPES.Entity;\r\n }\r\n\r\n get IsEnableUnlinkMultiple(): boolean {\r\n return this._generalProperties\r\n && this._generalProperties.GetPropertyValue(PROPERTIES.ENABLE_UNLINK_MULTIPLE_RECORDS_SUBGRID)\r\n && this._screenType != ScreenTypes[ScreenTypes.Portlet]\r\n && this._dataModel.GridSubjectEntityType === TABLE_TYPES.Entity;\r\n }\r\n \r\n get IsEnableAddAndLink(): boolean { \r\n return this._generalProperties\r\n && this._generalProperties.GetPropertyValue(PROPERTIES.ENABLE_SUBGID_ADD_AND_LINK)\r\n && this._screenType != ScreenTypes[ScreenTypes.Portlet]\r\n && this._dataModel.GridSubjectEntityType === TABLE_TYPES.Entity;\r\n }\r\n\r\n get IsEnabledScanAndLink(): boolean {\r\n return this._generalProperties\r\n && this._generalProperties.GetPropertyValue(PROPERTIES.ENABLE_SUBGRID_SCAN_AND_LINK)\r\n && this._screenType != ScreenTypes[ScreenTypes.Portlet]\r\n && this._dataModel.GridSubjectEntityType === TABLE_TYPES.Entity;\r\n }\r\n\r\n get IsEnableLinkParent(): boolean {\r\n return this._generalProperties\r\n && this._generalProperties.GetPropertyValue(PROPERTIES.ENABLE_SUBGRID_LINK_PARENT)\r\n && this._dataModel.GridSubjectEntityId === this._dataModel.GridParentEntityId\r\n && this._screenType === ScreenTypes[ScreenTypes.ConsultScreen]\r\n && this._dataModel.GridSubjectEntityType === TABLE_TYPES.Entity;\r\n }\r\n\r\n get HasProcessCards(): boolean {\r\n return this._generalProperties\r\n && this._generalProperties.GetPropertyValue(PROPERTIES.PROCESS_CARDS)\r\n }\r\n\r\n\r\n get IsEnableEdit(): boolean {\r\n if (this._dataModel.GridSubjectEntityMetadata.IsView) {\r\n if (this._screenType === ScreenTypes[ScreenTypes.ConsultScreen] || this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.Portlet]) {\r\n return this.HasProcessCards;\r\n }\r\n return true;\r\n }\r\n\r\n private InitLinkButtons(){\r\n this._enableLinkButton(this._dataModel.IsLinkingAllowed && this.IsEnableLink);\r\n this._enableAddAndLinkButton(this._dataModel.IsAddAndLinkAllowed && this.IsEnableAddAndLink);\r\n this._enableLinkButton(this._dataModel.IsLinkingAllowed && this.IsEnableLink);\r\n this._enableUnlinkMultipleRecordsButton(this.IsEnableUnlinkMultiple && this._dataModel.IsLinkJoin);\r\n this._enableAddAndLinkButton(this._dataModel.IsAddAndLinkAllowed && this.IsEnableAddAndLink);\r\n this._enableScanAndLinkButton(this._dataModel.IsLinkingAllowed && this._dataModel.IsScanAndLinkAllowed && this.IsEnabledScanAndLink);\r\n\t\tthis._enableLinkParentButton(this._dataModel.IsLinkingAllowed && this.IsEnableLinkParent);\r\n\t\tthis._hasOneParent(this._dataModel.HasOneParent);\r\n this._disableEditLinkButton(!this._dataModel.IsLinkEditorEnabled);\r\n }\r\n\r\n private InitHeaderColumns(tableViewId: number, restoreSortState: boolean){\r\n let headerColumns = [];\r\n _.each(this._dataModel.Columns, (columnModel, index) => {\r\n const queryEntity = this.GetEntityByColumnGuid(columnModel.QueryColumnGuid, this._queryExpression);\r\n\r\n const queryColumn = _.find(queryEntity.Columns, (column) => {\r\n return column.Guid === columnModel.QueryColumnGuid;\r\n });\r\n\r\n columnModel.EntityMetadata = queryEntity.Metadata;\r\n columnModel.FieldMetadata = queryColumn.Metadata;\r\n if (columnModel.IsGroup) {\r\n this.groupColumns[columnModel.QueryColumnGuid] = new GroupColumn(columnModel);\r\n } else {\r\n const headerColumn =\r\n new HeaderColumn(columnModel, this._dataModel.SubjectRecordId, tableViewId, this._gridDataModel, this.existedColumnAliases);\r\n \r\n headerColumn.IsFastFilterEnabled = this._isFastFilterEnabled();\r\n const oldHeader = _.find(this._headerColumns(),\r\n (item) => { return item.Model.Alias === columnModel.Alias });\r\n \r\n if (oldHeader) {\r\n if (restoreSortState) {\r\n headerColumn.SortOrder = oldHeader.SortOrder;\r\n }\r\n }\r\n\r\n headerColumn.On(EVENTS.SORT, this, (eventArgs: any) => {\r\n this._sortByRelationshipOrder(SortOrder.Both);\r\n this.ResetSort(eventArgs.source);\r\n var sortColumns = [];\r\n _.each(this.Columns, (column) => {\r\n if (column.IsEnableSort) {\r\n sortColumns.push(column.GetSortModel());\r\n }\r\n });\r\n\r\n this.Trigger(EVENTS.SORT, {SortColumns: sortColumns});\r\n });\r\n\r\n headerColumn.On(EVENTS.FAST_FILTER, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.UPDATE_GRID, {updateFromFastFilters: true});\r\n });\r\n\r\n headerColumns.push(headerColumn);\r\n }\r\n });\r\n return headerColumns;\r\n }\r\n\r\n SetDefaultRowData(\r\n data: GridDataModel,\r\n restoreSortState?: boolean,\r\n isPrioritiesDisabled?: boolean, \r\n tableViewId?: number,\r\n inlineControls: Array<IControl> = [],\r\n updateRow?: GridRow \r\n ) {\r\n this._baseTemplate('Core/Controls/Grid/BaseGrid/Templates/DefaultTemplate');\r\n\r\n if(this._isNested){\r\n this._toolbar.Paginator().TotalRecords = data.TotalRecords;\r\n }\r\n if(this._dataModel?.GridParentEntityId){\r\n data.GridParentEntityId = this._dataModel.GridParentEntityId;\r\n }\r\n\r\n this._tableScrollLeft = 0;\r\n this._isAllSelected(false);\r\n this._inlineControls = inlineControls;\r\n this._dataModel = data;\r\n this._tableViewId = tableViewId;\r\n this._isPrioritiesDisabled = isPrioritiesDisabled;\r\n this._queryExpression = data.QueryExpression;\r\n\r\n let hasAnySubgrid = data.Rows.length > 0 ? data.Rows[0].NestedData.length > 0 : false;\r\n this._hasSubGrid(hasAnySubgrid);\r\n \r\n this.SetIsEnableSortByRelationships();\r\n\r\n this.InitLinkButtons();\r\n const linkedRows = _.filter(this._rows(), row => row.State === States.Link);\r\n const rows = ko.observableArray(linkedRows);\r\n \r\n if(!updateRow){\r\n this._rows([]);\r\n }\r\n \r\n this._isEditable(this.IsEnableEdit);\r\n\r\n this.existedColumnAliases = data.Columns.map((column) => column.Alias);\r\n const headerColumns = this.InitHeaderColumns(tableViewId, restoreSortState);\r\n\r\n this._isVisibleFavorites(this.IsVisibleFavorite());\r\n\r\n if (this._isNested) {\r\n this._toolbar.SetGridSubjectEntityMetadata(this.DataModel.GridSubjectEntityMetadata);\r\n }\r\n\r\n if (data.Rows.length > 0) {\r\n const IsGroupMode: boolean = _.some(data.Rows,(gridRow: GridRowModel) => !!gridRow.IsGroup);\r\n\r\n _.each(data.Rows, (rowModel) => {\r\n\r\n _.each(rowModel.Data, (cell) => {\r\n const groupedColumn = this.groupColumns[cell.QueryColumnGuid];\r\n let column;\r\n if (groupedColumn) {\r\n column = groupedColumn.Model;\r\n } else {\r\n column = data.Columns.find(i => i.QueryColumnGuid === cell.QueryColumnGuid)\r\n }\r\n if (column) {\r\n const {FieldMetadata, EntityMetadata, SortDirection} = column;\r\n cell.FieldMetadata = FieldMetadata;\r\n cell.EntityMetadata = EntityMetadata;\r\n cell.SortDirection = SortDirection;\r\n }\r\n\r\n _.each(cell.CrossWrapped, (crossWrappedCell) =>{\r\n const queryEntity = this.GetEntityByColumnGuid(crossWrappedCell.QueryColumnGuid, data.QueryExpression);\r\n\r\n const queryColumn = _.find(queryEntity.Columns, (column) => {\r\n return column.Guid === crossWrappedCell.QueryColumnGuid;\r\n });\r\n crossWrappedCell.FieldMetadata = queryColumn.Metadata;\r\n crossWrappedCell.EntityMetadata = queryEntity.Metadata;\r\n });\r\n\r\n });\r\n\r\n let rowEntity = _.find(Util.GetAllQueryEntities(data.QueryExpression), (item) => item.Metadata.Id == rowModel.EntityId);\r\n\r\n let isVisibleButtons = rowEntity.Metadata.Type !== TABLE_TYPES.Sub;\r\n \r\n const row = new GridRow(\r\n rowModel,\r\n this._isEditable,\r\n this._hideLifeStatusToggle,\r\n this._hideUnlink,\r\n this._hideEdit,\r\n this._enableBasket,\r\n this._disableEditLinkButton,\r\n this._backLinkingButtons,\r\n this._isEnableSelectRecord,\r\n this._screenType,\r\n isVisibleButtons,\r\n this._dataModel.QueryExpression,\r\n false,\r\n this._isVisibleFavorites(),\r\n this._maxRowHeight,\r\n this._form,\r\n this.GetInlineControls(),\r\n this._enableSelectRowCell,\r\n this._generalProperties,\r\n this.IsSubGrid,\r\n IsGroupMode,\r\n data.IsLinkJoin,\r\n this.HasProcessCards,\r\n this._hasTotalRow\r\n );\r\n\r\n if (row.HasGroupColumn) {\r\n row.GroupedData = this.GetGroupedData(row.DataCells);\r\n }\r\n\r\n rows.push(row);\r\n\r\n row.On(EVENTS.ROW_SELECTION_CHANGED, this, (eventArgs: any) => {\r\n if (!this._isMultiselect) {\r\n _.each(this._rows(), (item) => {\r\n if (item != row) {\r\n item.SetIsSelected(false);\r\n }\r\n });\r\n }\r\n this.UpdateSelection();\r\n });\r\n row.On(EVENTS.SELECT_RECORD, this, (eventArgs: any) => this.Trigger(EVENTS.SELECT_RECORD, {Row: eventArgs.data.Row}));\r\n\r\n row.On(EVENTS.EDIT_RECORD, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.RECORD_EDITED);\r\n if (!row.IsNewRecord && !this.IsSubEntity && this._lockRows.indexOf(row) === -1) {\r\n LockManager.Instance.TryLock(row.Model.EntityId, row.Model.RecordId)\r\n .then(() => {\r\n row.IsEditMode = true;\r\n this._lockRows.push(row);\r\n this.ResizeTableCellsAfterRender();\r\n })\r\n .fail(() => {\r\n row.IsEditMode = false;\r\n });\r\n } else {\r\n row.IsEditMode = true;\r\n BlockUI.Block({Target: this._el});\r\n setTimeout(() => {\r\n this.ResizeTableCellsAfterRender();\r\n }, 1000);\r\n BlockUI.Unblock(this._el);\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.ListScreen] || this._screenType === ScreenTypes[ScreenTypes.SpecialScreen]) {\r\n rows().forEach((x) => {\r\n if (x !== row) {\r\n x.IsEditMode = false;\r\n }\r\n });\r\n }\r\n });\r\n\r\n row.On(EVENTS.REFRESH, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.REFRESH, { SubGrid: eventArgs.data.SubGrid, ParentRowId: eventArgs.data.ParentRowId, UpdateRow: eventArgs.data.UpdateRow });\r\n });\r\n\r\n row.On(EVENTS.EDIT_LINK, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.EDIT_LINK, eventArgs.data);\r\n });\r\n\r\n row.On(EVENTS.EDIT_CLUSTERED_LINK, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.EDIT_CLUSTERED_LINK, { gridRow: eventArgs.data.gridRow, grid: eventArgs.data.grid });\r\n });\r\n\r\n row.On(EVENTS.LINK_NEXT_RELATION, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.LINK_NEXT_RELATION, { gridRow: eventArgs.source, field: eventArgs.data.field });\r\n });\r\n\r\n row.On(EVENTS.CANCEL_EDIT, this, (eventArgs: any) => {\r\n eventArgs.source.IsEditMode = false;\r\n const index = this._lockRows.indexOf(row);\r\n if (index > -1) {\r\n this._lockRows.splice(index, 1);\r\n }\r\n \r\n if (rows().every(row => row.IsEditMode === false)) {\r\n this.Trigger(EVENTS.UNDO_EVERY_RECORD);\r\n };\r\n\r\n this.Resize();\r\n });\r\n\r\n row.On(EVENTS.SAVE_RECORD, this, (eventArgs: any) => {\r\n eventArgs.source.State = States.Edit;\r\n if (this._screenType !== ScreenTypes[ScreenTypes.EditScreen]) {\r\n this.SaveRecord(eventArgs.source).then(() => {\r\n LockManager.Instance.ReleaseLock(row.EntityId, row.RecordId);\r\n row.IsEditMode = false;\r\n });\r\n } else {\r\n row.IsEditMode = false;\r\n if (rows().every(row => row.IsEditMode === false)) {\r\n this.Trigger(EVENTS.UNDO_EVERY_RECORD);\r\n };\r\n }\r\n });\r\n\r\n\r\n row.On(TOOLBAR_EVENTS.LINK_RECORD, this, (eventArgs) => {\r\n this.Trigger(TOOLBAR_EVENTS.LINK_RECORD, eventArgs.data);\r\n });\r\n\r\n row.On(TOOLBAR_EVENTS.LINK_PARENT_RECORD, this, (eventArgs) => {\r\n this.Trigger(TOOLBAR_EVENTS.LINK_PARENT_RECORD, eventArgs.data);\r\n });\r\n\r\n row.On(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, this, (eventArgs) => {\r\n this.Trigger(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, eventArgs.data);\r\n });\r\n\r\n row.On(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, this, (eventArgs) => {\r\n this.Trigger(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, eventArgs.data);\r\n });\r\n\r\n row.On(EVENTS.SAVE_LIFESTATUS, this, (eventArgs: any) => {\r\n this.SaveLifestatus(eventArgs.source);\r\n });\r\n\r\n row.On(EVENTS.DELETE_RECORD, this, (eventArgs: any) => {\r\n const confirmationDialog =\r\n new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ARE_YOUR_SURE_TO_DELETE_RECORDS,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => this.DeleteRecord(eventArgs.source));\r\n\r\n confirmationDialog.Show();\r\n });\r\n\r\n row.On(EVENTS.UNLINK_RECORD, this, (eventArgs: any) => { \r\n if (this._queryExpression.IsCrossTable) {\r\n this.ShowCrossTableDetail(eventArgs.source).then((selectedRow) => {\r\n this.ConfirmUnlink(selectedRow);\r\n });\r\n } else {\r\n this.ConfirmUnlink(eventArgs.source);\r\n }\r\n });\r\n\r\n\r\n row.On(EVENTS.OPEN_HYPERLINK, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.OPEN_HYPERLINK, _.extend(eventArgs.data, {\r\n CurrentRow: row,\r\n RowList: data.Rows\r\n }));\r\n });\r\n\r\n row.On(EVENTS.ADD_TO_BASKET, this, (eventArgs: any) => this.AddToBasket(eventArgs.data.Row));\r\n row.On(EVENTS.REMOVE_FROM_BASKET, this, (eventArgs: any) => this.RemoveFromBasket(eventArgs.data.Row));\r\n\r\n row.On(EVENTS.MOVE_ROW_UP, this, (eventArgs) => {\r\n this.MoveRowUp(row, eventArgs.data.SortCell);\r\n });\r\n\r\n row.On(EVENTS.MOVE_ROW_DOWN, this, (eventArgs) => {\r\n this.MoveRowDown(row, eventArgs.data.SortCell);\r\n });\r\n\r\n row.On(EVENTS.HOVER_SORT, this, (eventArgs) => {\r\n this.HoverSort(row, eventArgs.data.SortCell);\r\n });\r\n\r\n row.On(EVENTS.UN_HOVER_SORT, this, (eventArgs) => {\r\n this.UnHoverSort(row, eventArgs.data.SortCell);\r\n });\r\n\r\n row.On(EVENTS.BACK_LINKING_POPUP_REQUESTED, this, eventArgs => {\r\n this.Trigger(EVENTS.BACK_LINKING_POPUP_REQUESTED, eventArgs.data);\r\n });\r\n\r\n row.On(EVENTS.SHOW_ORIGINAL_IMAGE, this, eventArgs => {\r\n this.ShowOriginalImage(eventArgs.data.dataCell);\r\n });\r\n\r\n row.On(EVENTS.RECORD_DELETED, this, () => {\r\n this.Trigger(EVENTS.RECORD_DELETED);\r\n });\r\n\r\n row.On(EVENTS.LOAD_SUB_GRID, this, (eventArgs)=>{\r\n this.Trigger(EVENTS.LOAD_SUB_GRID, { SubGrid: eventArgs.data.SubGrid, ParentRowId: eventArgs.data.ParentRowId });\r\n });\r\n\r\n row.On(EVENTS.CHANGE_VISIBLE_GROUP, this, (eventArgs: any) => {\r\n let currentGroupRow: GroupedDataItem = eventArgs.source._groupedData[0];\r\n let isGroupActive: boolean = eventArgs.data.GroupActive;\r\n\r\n this.ChangeVisibleGroup(currentGroupRow, isGroupActive);\r\n this.Trigger(EVENTS.CHANGE_VISIBLE_GROUP, { gridRow: eventArgs.source });\r\n });\r\n\r\n });\r\n\r\n this._totalRow(\r\n new GridTotalRow(\r\n data.TotalRow,\r\n this._isVisibleFavorites(),\r\n this._isEnableSelectRecord,\r\n data.Columns\r\n )\r\n );\r\n\r\n this._countRow(\r\n new GridCountRow(\r\n data.CountRow,\r\n this._isVisibleFavorites(),\r\n this._isEnableSelectRecord,\r\n data.Columns\r\n )\r\n );\r\n\r\n this._averageRow(new GridAverageRow(data.AverageRow, this._isEnableSelectRecord, data.Columns));\r\n\r\n this._hasTotalRow(this._totalRow().HasData || this._countRow().HasData || this._averageRow().HasData);\r\n\r\n this._totalGroupRows = [];\r\n this._averageGroupRows = [];\r\n\r\n _.each(data.TotalGroupRows, (item) => {\r\n this._totalGroupRows.push(\r\n new GridTotalRow(item, !this._isNested && !this._isView(), this._isEnableSelectRecord, data.Columns)\r\n );\r\n });\r\n\r\n _.each(data.AverageGroupRows, (item) => {\r\n this._averageGroupRows.push(new GridAverageRow(item, this._isEnableSelectRecord, data.Columns));\r\n });\r\n\r\n if(updateRow){\r\n this._rows[this._rows.indexOf(updateRow)] = rows[0];\r\n }else{\r\n this._rows(rows().map(row => {\r\n row.IsEditMode = false;\r\n return row;\r\n })); \r\n }\r\n } else {\r\n this.ClearData();\r\n }\r\n\r\n this.CreateColumnWidthParameters(headerColumns);\r\n this.CreateColumnTotalWidthParameters(headerColumns);\r\n this._headerColumns(headerColumns);\r\n\r\n this._isReady(true);\r\n }\r\n\r\n ChangeVisibleGroup(currentGroupRow: GroupedDataItem, isGroupActive: boolean):void {\r\n const AllRows: GridRow[] = this._rows();\r\n let allGridRowGroups: GridRow[] = _.filter(AllRows,(gridRow: GridRow) => !!gridRow.GroupedData);\r\n let indexesOfFilteredRowGroups: number[] = _.map(allGridRowGroups, (filteredGroup: GridRow) => _.findIndex(AllRows, row => row.Guid === filteredGroup.Guid));\r\n\r\n let indexOfCurrentGroupRow: number = _.findIndex(AllRows,(gridRow: GridRow) => gridRow.GroupedData && gridRow.GroupedData[0].Value === currentGroupRow.Value);\r\n let nextGroupIndex: number = this.FindNextGreaterNumber(indexesOfFilteredRowGroups, indexOfCurrentGroupRow);\r\n let endIndex: number = nextGroupIndex ? nextGroupIndex : AllRows.length;\r\n\r\n const GroupRows: GridRow[] = AllRows.slice(indexOfCurrentGroupRow + 1, endIndex);\r\n _.each(GroupRows, (row: GridRow)=> {\r\n row.GroupVisible = isGroupActive;\r\n let activeTotalRow: GridTotalRow = _.find(this._totalGroupRows, (gridTotalRow: GridTotalRow)=> gridTotalRow.Guid === row.GroupGuid);\r\n if (activeTotalRow) {\r\n activeTotalRow.IsGroupActive = isGroupActive\r\n }\r\n\r\n if (row.CrossTableWrapped.length) {\r\n _.each(row.CrossTableWrapped, (crossRow: GridRow) => {\r\n crossRow.GroupVisible = isGroupActive\r\n });\r\n }\r\n })\r\n\r\n if (isGroupActive){\r\n this.ResizeTableCellsAfterRender();\r\n }\r\n }\r\n\r\n FindNextGreaterNumber(array: number[], target: number) {\r\n const nextGreaterNumber = _.find(array, number => number > target);\r\n return nextGreaterNumber !== undefined ? nextGreaterNumber : null;\r\n }\r\n\r\n get IsSubEntity(): boolean {\r\n return this._dataModel.QueryExpression.SubEntityJoins.length > 0;\r\n }\r\n\r\n get IsSubGrid(){\r\n return !!this._parentRow;\r\n }\r\n\r\n GridUnlinkMultipleRecords() {\r\n _.each(this._rows(), row => {\r\n row.GridUnlinkMultipleRecords();\r\n })\r\n }\r\n\r\n GridConfirmMultipleUnlinking() {\r\n _.each(this._rows(), row => {\r\n row.GridConfirmMultipleUnlinking();\r\n })\r\n }\r\n\r\n GridCancelMultipleUnlinking() {\r\n _.each(this._rows(), row => {\r\n row.GridCancelMultipleUnlinking();\r\n })\r\n }\r\n\r\n SubGridUnlinkMultipleRecords() {\r\n _.each(this._rows(), row => {\r\n row.SubGridUnlinkMultipleRecords();\r\n })\r\n }\r\n\r\n SubGridConfirmMultipleUnlinking() {\r\n _.each(this._rows(), row => {\r\n row.SubGridConfirmMultipleUnlinking();\r\n })\r\n }\r\n\r\n SubGridCancelMultipleUnlinking() {\r\n _.each(this._rows(), row => {\r\n row.SubGridCancelMultipleUnlinking();\r\n })\r\n }\r\n\r\n ConfirmUnlink(row: GridRow){\r\n const confirmationDialog =\r\n new ConfirmationDialog({\r\n Text: CONFIRMATIONS.UNLINK_RECORD,\r\n Type: ConfirmationTypes.Question\r\n });\r\n \r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.UnlinkRecord(row)\r\n });\r\n confirmationDialog.Show();\r\n }\r\n\r\n SetIsEnableSortByRelationships() {\r\n let isEnableSortByRelationShips = this._screenType === ScreenTypes[ScreenTypes.ConsultScreen]\r\n && this._queryExpression.EntityJoins.length > 0\r\n && this._queryExpression.EntityJoins[0].Entity.Metadata.Id === this._queryExpression.Entity.Metadata.Id;\r\n this._isEnableSortByRelationShips(isEnableSortByRelationShips);\r\n }\r\n\r\n private GetSortRows(sortRow: GridRow, sortCell: DataCell): Array<GridRow>{\r\n let rows = [];\r\n let index = sortRow.DataCells.indexOf(sortCell);\r\n\r\n _.each(this._rows(),(row)=>{\r\n let cell = row.DataCells[index];\r\n let isSameRecord = true;\r\n _.each(cell.Model.RecordKeys,(key, index)=>{\r\n if(sortCell.Model.RecordKeys[index].RecordId != key.RecordId){\r\n isSameRecord = false;\r\n }\r\n }); \r\n if(isSameRecord){\r\n rows.push(row);\r\n }\r\n });\r\n return rows;\r\n }\r\n\r\n private HoverSort(row: GridRow, sortCell: DataCell){\r\n let sortRows = this.GetSortRows(row, sortCell);\r\n if(sortRows.length > 1){\r\n _.each(sortRows, (row)=>{\r\n row.HighlightSort();\r\n }); \r\n }\r\n }\r\n\r\n private UnHoverSort(row: GridRow, sortCell: DataCell){\r\n let sortRows = this.GetSortRows(row, sortCell);\r\n _.each(sortRows, (row)=>{\r\n row.UnHighlightSort();\r\n });\r\n }\r\n\r\n private MoveRowUp(row: GridRow, upSortCell: DataCell) {\r\n let upSortRows = this.GetSortRows(row, upSortCell);\r\n let upSortCellIndex = row.DataCells.indexOf(upSortCell);\r\n let i = this._rows.indexOf(_.first(upSortRows));\r\n\r\n if (i > 0) {\r\n let rawRows = this._rows();\r\n let upRow = _.last(upSortRows);\r\n\r\n let downRow = rawRows[i - 1];\r\n let downSortCell = downRow.DataCells[upSortCellIndex]; \r\n let downSortRows = this.GetSortRows(downRow, downSortCell);\r\n\r\n if(downSortRows.length > 1){\r\n downRow = _.first(downSortRows);\r\n downSortCell = downRow.DataCells[upSortCellIndex]; \r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n BlockUI.Block({ Target: this._el });\r\n this.UpdateSort(downSortCell, upSortCell.Model.Value, upSortCell, downSortCell.Model.Value)\r\n .always(()=>BlockUI.Unblock(this._el))\r\n .then(() => {\r\n let sortValue = upSortCell.Model.Value;\r\n upSortCell.Model.Value = downSortCell.Model.Value;\r\n downSortCell.Model.Value = sortValue;\r\n this.Swap(upSortRows, downSortRows);\r\n });\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n upRow.State = States.Edit;\r\n downRow.State = States.Edit;\r\n let sortValue = upSortCell.Model.Value;\r\n upSortCell.Model.Value = downSortCell.Model.Value;\r\n downSortCell.Model.Value = sortValue;\r\n this.Swap(upSortRows, downSortRows);\r\n }\r\n }\r\n }\r\n\r\n private MoveRowDown(row: GridRow, downSortCell: DataCell) {\r\n let downSortRows = this.GetSortRows(row, downSortCell);\r\n let downSortCellIndex = row.DataCells.indexOf(downSortCell);\r\n let i = this._rows.indexOf(_.last(downSortRows));\r\n\r\n if (i < this._rows().length - 1) {\r\n let rawRows = this._rows();\r\n let downRow = _.first(downSortRows);\r\n let upRow = rawRows[i + 1]; \r\n let upSortCell = upRow.DataCells[downSortCellIndex];\r\n\r\n let upSortRows = this.GetSortRows(upRow, upSortCell);\r\n\r\n if(upSortRows.length > 1){\r\n upRow = _.last(upSortRows);\r\n upSortCell = upRow.DataCells[downSortCellIndex]; \r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n BlockUI.Block({ Target: this._el });\r\n this.UpdateSort(downSortCell, upSortCell.Model.Value, upSortCell, downSortCell.Model.Value)\r\n .always(()=>BlockUI.Unblock(this._el))\r\n .then(() => {\r\n let sortValue = downSortCell.Model.Value;\r\n downSortCell.Model.Value = upSortCell.Model.Value;\r\n upSortCell.Model.Value = sortValue;\r\n this.Swap(upSortRows, downSortRows);\r\n });\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n upRow.State = States.Edit;\r\n downRow.State = States.Edit;\r\n let sortValue = downSortCell.Model.Value;\r\n downSortCell.Model.Value = upSortCell.Model.Value;\r\n upSortCell.Model.Value = sortValue;\r\n this.Swap(upSortRows, downSortRows);\r\n }\r\n }\r\n }\r\n\r\n Swap(upRows: Array<GridRow>, downRows: Array<GridRow>) {\r\n let upIndex = this._rows.indexOf(downRows[0]);\r\n \r\n _.each(upRows, (upRow)=>{\r\n this._rows.splice(this._rows.indexOf(upRow), 1);\r\n this._rows.splice(upIndex, 0, upRow);\r\n upIndex++;\r\n });\r\n\r\n this._rows.valueHasMutated();\r\n }\r\n\r\n private UpdateSort(downSortCell: DataCell, downSortValue: string, upSortCell: DataCell, upSortValue: string): P.Promise<null> {\r\n const deferred = P.defer<null>();\r\n let upFieldData = new FieldDataModel();\r\n upFieldData.EntityId = upSortCell.EntityId;\r\n upFieldData.FieldId = upSortCell.FieldId;\r\n upFieldData.RecordKeys = upSortCell.Model.RecordKeys;\r\n upFieldData.Value = upSortValue;\r\n\r\n let downFieldData = new FieldDataModel();\r\n downFieldData.EntityId = downSortCell.EntityId;\r\n downFieldData.FieldId = downSortCell.FieldId;\r\n downFieldData.RecordKeys = downSortCell.Model.RecordKeys;\r\n downFieldData.Value = downSortValue;\r\n BlockUI.Block({Target: this._el});\r\n GridStore.UpdateSort({UpCell: upFieldData, DownCell: downFieldData})\r\n .then(result => {\r\n const warning = result.Warnings ? _.first(result.Warnings) : null;\r\n if(warning) {\r\n new Notifier().Warning(warning);\r\n }\r\n deferred.resolve(null);\r\n })\r\n .fail((err) => {\r\n new Notifier().Failed(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetTotalGroup(guid: string) {\r\n return _.find(this._totalGroupRows, (item) => {\r\n return item.Guid === guid\r\n });\r\n }\r\n\r\n GetAverageGroup(guid: string) {\r\n return _.find(this._averageGroupRows, (item) => {\r\n return item.Guid === guid\r\n });\r\n }\r\n\r\n IsVisibleFavorite() {\r\n if (this._enableFavoritesIfPossible) {\r\n if (this._isNested) {\r\n return false;\r\n }\r\n\r\n if (this._queryExpression.EntityJoins.length == 0 && this._queryExpression.SubEntityJoins.length > 0) {\r\n return false;\r\n }\r\n\r\n if(this._isView()){\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n isFastFilterExist(type: string): boolean {\r\n if (!this.IsFastFilterEnabled) {\r\n return false;\r\n }\r\n switch (type) {\r\n case FIELD_TYPES.Decimal:\r\n case FIELD_TYPES.Integer:\r\n case FIELD_TYPES.Date:\r\n case FIELD_TYPES.DateTime:\r\n case FIELD_TYPES.TimeSpan:\r\n case FIELD_TYPES.Time:\r\n case FIELD_TYPES.Text:\r\n case FIELD_TYPES.YesNo:\r\n case FIELD_TYPES.Lookup:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n HideGrid() {\r\n this._hideCont++;\r\n if (!this._uiBlocked && this._el) {\r\n this._tableScrollLeft = this._el.parentElement.scrollLeft;\r\n this._el.classList.add(\"hidden-table\");\r\n this._el.parentElement.scrollLeft = 0; // reset scroll of table\r\n this._overflowInParentBeforeHidden = this._el.parentElement.style.overflow; // save overflow valuer before change it\r\n this._el.parentElement.style.overflow = \"hidden\"; // reset scroll of table\r\n this._uiBlocked = true;\r\n }\r\n }\r\n\r\n ShowGrid(removeScroll?: boolean) {\r\n this._hideCont--;\r\n if (this._hideCont <= 0 && this._uiBlocked && this._el) {\r\n this._hideCont = 0;\r\n this._el.classList.remove(\"hidden-table\");\r\n this._el.parentElement.style.overflow = this._overflowInParentBeforeHidden; // return back overflow that was before hiddening\r\n this._uiBlocked = false;\r\n this._el.parentElement.scrollLeft = this._tableScrollLeft;\r\n }\r\n }\r\n\r\n AfterRowRender() {\r\n this.ShowGrid();\r\n\r\n if (this._nextNewRow) {\r\n this._nextNewRow = false;\r\n this.ResizeTableCellsAfterRender();\r\n return;\r\n } else {\r\n if (this._headerColumnsReady) {\r\n this.ResizeTableCellsAfterRender();\r\n setTimeout(() => {\r\n this.ResizeTableCellsAfterRender(); // subgrid header recalculation after saving (not always reproducible)\r\n }, 0);\r\n this._headerColumnsReady = false;\r\n this._rowsReady = false;\r\n }\r\n }\r\n }\r\n\r\n\r\n AfterHeaderColumnsReady(el, column) {\r\n if (this._el && this._headerColumns().indexOf(column) + 1 === this._headerColumns().length) {\r\n this._headerColumnsReady = true;\r\n\r\n if (this._rowsReady || !this._rows().length) {\r\n this.ResizeTableCellsAfterRender();\r\n this._headerColumnsReady = false;\r\n this._rowsReady = false;\r\n }\r\n }\r\n }\r\n\r\n AfterBulkEditRowReady() {\r\n this.ResizeTableCellsAfterRender();\r\n }\r\n\r\n\r\n private WaitTillGridShown(): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n\r\n if (this._el.offsetWidth !== 0) {\r\n deferredResult.resolve(null);\r\n } else {\r\n clearInterval(this._waitingForGrid);\r\n const startTime = new Date().getTime();\r\n this._waitingForGrid = setInterval(() => {\r\n if (this._el.offsetWidth !== 0) {\r\n clearInterval(this._waitingForGrid);\r\n deferredResult.resolve(null);\r\n } else if (startTime + 30000 < new Date().getTime()) { // if table wouldnt shown after half minute stop waiting\r\n clearInterval(this._waitingForGrid);\r\n deferredResult.reject({message: 'error'});\r\n }\r\n }, 100);\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n AlignCells(): GridSortModel[] {\r\n let table = $(this._el).find('> div > .flex-grid-row:not(.subTableContainer)');\r\n const rows: HTMLElement[] = Array.from(table.length === 0 ? this._el.querySelectorAll(\".flex-grid-row\") : table);\r\n const rowCells: GridSortModel[] = [];\r\n this._reservedColumnsWidth = [];\r\n this._columnWidth = [];\r\n\r\n rows.forEach((row, rowIndex) => {\r\n const allCells: HTMLElement[] = Array.from(row.querySelectorAll(\".flex-grid-hdata, .flex-grid-tdata:not(.flex-grid-nested-table)\"));\r\n const reservedCells: HTMLElement[] = [];\r\n const cells: HTMLElement[] = [];\r\n let i = 0;\r\n let columnIndex = 0;\r\n let reservedIndex = 0;\r\n\r\n if (!row.classList.contains(\"sortDescriptionColumn\")) {\r\n while (i < allCells.length) {\r\n const cell = allCells[i];\r\n let iterationTarget;\r\n let iterationIndex: number;\r\n if (cell.classList.contains(\"js-reserved\")) {\r\n iterationTarget = this._reservedColumnsWidth;\r\n iterationIndex = reservedIndex++;\r\n reservedCells.push(cell);\r\n } else {\r\n iterationTarget = this._columnWidth;\r\n iterationIndex = columnIndex++;\r\n cells.push(cell);\r\n }\r\n const columnWidth = iterationTarget[iterationIndex] || 0;\r\n cell.style.width = \"\";\r\n cell.style.display = \"\";\r\n iterationTarget[iterationIndex] = Math.max(cell.offsetWidth, columnWidth);\r\n i++;\r\n }\r\n }\r\n\r\n rowCells[rowIndex] = {\r\n cells, reservedCells, row\r\n };\r\n });\r\n\r\n this._el.querySelector<HTMLDivElement>(\".flex-grid-head\").style.removeProperty(\"width\");\r\n this._el.querySelector<HTMLDivElement>(\".flex-grid-body\").style.removeProperty(\"width\");\r\n\r\n rowCells.forEach((item) => {\r\n item.reservedCells.forEach((cell, cellIndex) => {\r\n cell.style.width = `${Math.min(DEFAULT_MAX_CELL_WIDTH_PX, this._reservedColumnsWidth[cellIndex] + 1)}px`;\r\n });\r\n\r\n item.cells.forEach((cell, cellIndex) => {\r\n const minWidth = Math.max(DEFAULT_MIN_CELL_WIDTH_PX, this._columnWidth[cellIndex] + 1);\r\n let context = ko.dataFor(cell);\r\n\r\n if ((context instanceof DataCell || context instanceof HeaderColumn) && context.Model.FieldMetadata && context.Model.FieldMetadata.Type === FIELD_TYPES.MultiSelect) {\r\n cell.style.width = `${minWidth}px`;\r\n } else {\r\n cell.style.width = `${Math.min(minWidth, DEFAULT_MAX_CELL_WIDTH_PX)}px`;\r\n }\r\n });\r\n });\r\n\r\n return rowCells;\r\n }\r\n\r\n ResizeTableCellsAfterRender(afterPriority?: GridSortModel[]) {\r\n let superHeaderRows = $(this._el).find(\".super-flex-grid-row\");\r\n if(superHeaderRows.length == 0) {\r\n return;\r\n }\r\n\r\n superHeaderRows.css('display', 'none');\r\n\r\n this.WaitTillGridShown()\r\n .then(() => {\r\n const isCrossTable = (this._queryExpression && this._queryExpression.IsCrossTable);\r\n let rowsData: GridSortModel[] = afterPriority;\r\n let maxRowWidth = 0;\r\n const isSubTable = this._visible();\r\n this.HideGrid();\r\n\r\n if (!afterPriority) {\r\n rowsData = this.AlignCells();\r\n this._canShowColumns = false;\r\n }\r\n\r\n //fix if grid has wrapped columns\r\n const [first, second, third] = rowsData;\r\n let recalculateGrowColumnsToFullWidth = false;\r\n if (third != null && first != null) {\r\n if (first.row.offsetWidth <= third.row.offsetWidth && $(third.row).hasClass('related')) {\r\n recalculateGrowColumnsToFullWidth = true;\r\n }\r\n }\r\n\r\n const containerWidth = this._el.offsetWidth;\r\n let containerScrollWidth = this._el.scrollWidth;\r\n let isQueryResult = $(this._el).hasClass('query-result-grid');\r\n\r\n let boxMoreEqualContent = containerScrollWidth <= containerWidth;\r\n let contentMoreEqualBox = containerScrollWidth >= containerWidth;\r\n\r\n if (isSubTable) {\r\n if (boxMoreEqualContent || recalculateGrowColumnsToFullWidth) {\r\n maxRowWidth = this.GrowColumnsToFullWidth({rowsData, containerWidth});\r\n\r\n } else if ((contentMoreEqualBox) || (contentMoreEqualBox && isQueryResult)) {\r\n this.HideColumns(maxRowWidth, rowsData);\r\n } else if (!afterPriority && !this._isPrioritiesDisabled) {\r\n this.HideColumnsByPriority(containerScrollWidth - containerWidth, rowsData);\r\n this.ShowGrid();\r\n return;\r\n } else {\r\n this.HideColumns(maxRowWidth, rowsData);\r\n }\r\n\r\n } else if (isQueryResult) { // QueryResult page\r\n if (boxMoreEqualContent || recalculateGrowColumnsToFullWidth) {\r\n maxRowWidth = this.GrowColumnsToFullWidth({rowsData, containerWidth});\r\n } else if (!afterPriority && !this._isPrioritiesDisabled) {\r\n this.HideColumnsByPriority(containerScrollWidth - containerWidth, rowsData);\r\n this.ShowGrid();\r\n return;\r\n } else {\r\n this.HideColumns(maxRowWidth, rowsData);\r\n }\r\n } else {\r\n if (boxMoreEqualContent || recalculateGrowColumnsToFullWidth) {\r\n maxRowWidth = this.GrowColumnsToFullWidth({rowsData, containerWidth});\r\n\r\n } else if ((contentMoreEqualBox && isQueryResult)) {\r\n this.HideColumns(maxRowWidth, rowsData);\r\n\r\n } else if (!afterPriority && !this._isPrioritiesDisabled) {\r\n if (!isCrossTable){\r\n this.HideColumnsByPriority(containerScrollWidth - containerWidth, rowsData);\r\n }\r\n if(isCrossTable){\r\n this.SetSuperHeader();\r\n }\r\n this.ShowGrid();\r\n return;\r\n } else {\r\n this.HideColumns(maxRowWidth, rowsData);\r\n }\r\n }\r\n this.ToggleAllShownColumns(this._canHideColumns, this._canShowColumns);\r\n this.SetSuperHeader();\r\n this.ShowGrid();\r\n });\r\n\r\n }\r\n\r\n GrowColumnsToFullWidth({rowsData, containerWidth}) {\r\n const [firstRow, ...restRows] = rowsData;\r\n const reservedFieldsWidth = firstRow.reservedCells.reduce((prev, next) => prev + next.offsetWidth, 0);\r\n\r\n const restWidth = containerWidth - reservedFieldsWidth;\r\n const restColumnsWidth = firstRow.cells.reduce((prev, next) => prev + next.offsetWidth, 0);\r\n\r\n firstRow.row.style.width = \"\";\r\n firstRow.cells.forEach((element, index) => {// calculate columns width on header columns\r\n const percentWidth = element.offsetWidth / restColumnsWidth;\r\n const newWidth = percentWidth * restWidth;\r\n element.style.width = newWidth + \"px\";\r\n this._columnWidth[index] = newWidth;\r\n });\r\n\r\n const maxRowWidth = firstRow.row.offsetWidth;\r\n if (restRows && restRows.length) {\r\n restRows.forEach(item => {// set colums width to each cell on each row\r\n item.row.style.width = \"\";\r\n item.cells.forEach((cell, index) => {\r\n cell.style.width = this._columnWidth[index] + \"px\";\r\n });\r\n });\r\n }\r\n\r\n this.ApplyMaxRowWidth(maxRowWidth);\r\n\r\n this._canHideColumns = false;\r\n\r\n return maxRowWidth;\r\n }\r\n\r\n private ApplyMaxRowWidth(maxRowWidth: number) {\r\n this._el.querySelector<HTMLDivElement>(\".flex-grid-head\").style.width = `${maxRowWidth}px`;\r\n this._el.querySelector<HTMLDivElement>(\".flex-grid-body\").style.width = `${maxRowWidth}px`;\r\n }\r\n\r\n HideColumns(maxRowWidth: number, rowsData: GridSortModel[]) {\r\n this._canHideColumns = true;\r\n maxRowWidth = 0;\r\n // grow all rows to 100% of table scroll width\r\n rowsData.forEach(item => {\r\n maxRowWidth = Math.max(maxRowWidth, item.row.offsetWidth);\r\n });\r\n\r\n this.ApplyMaxRowWidth(maxRowWidth);\r\n }\r\n\r\n HideColumnsByPriority(difference: number, rowsData: GridSortModel[]) {\r\n const [headersArray, ...rowsArray] = rowsData;\r\n let hiddenColumns = 0;\r\n let hiddenElementsWidth = 0;\r\n let haveAlwaysVisibleCells = false;\r\n let maxCellsLength = headersArray.cells.length;\r\n let maxColumsToHide = headersArray.cells.reduce((prevItem, nextItem) => {\r\n if (nextItem.dataset.priority !== \"-1\") {\r\n prevItem++;\r\n } else {\r\n haveAlwaysVisibleCells = true;\r\n }\r\n return prevItem;\r\n }, 0);\r\n\r\n maxColumsToHide = haveAlwaysVisibleCells ? maxColumsToHide : Math.max(maxColumsToHide - 1, 0);\r\n\r\n headersArray.cells.sort(this.SortColumnsByPriority);\r\n\r\n if (maxColumsToHide === 0) {\r\n this._canShowColumns = false;\r\n this._canHideColumns = false;\r\n this.ResizeTableCellsAfterRender(rowsData);\r\n return;\r\n }\r\n\r\n for (let elem of headersArray.cells) {\r\n if (hiddenElementsWidth >= difference || hiddenColumns === maxColumsToHide) {\r\n break;\r\n }\r\n hiddenElementsWidth += elem.offsetWidth;\r\n elem.style.display = \"none\";\r\n hiddenColumns++;\r\n }\r\n if (rowsArray) {\r\n for (let row of rowsArray) {\r\n if (!row.cells.length) continue;\r\n\r\n //fix if grid has wrapped columns\r\n row.cells = _.filter(row.cells, (cell) => {\r\n let dataFor = ko.dataFor(cell);\r\n if (dataFor instanceof DataCell) {\r\n if (!dataFor.IsOrdinary) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n });\r\n\r\n row.cells.sort(this.SortColumnsByPriority);\r\n let localHaveAlwaysVisibleCells = haveAlwaysVisibleCells;\r\n let localMaxColumsToHide = maxColumsToHide;\r\n\r\n if (maxCellsLength !== row.cells.length) {\r\n localMaxColumsToHide = row.cells.reduce((prevItem, nextItem) => {\r\n if (nextItem.dataset.priority !== \"-1\") {\r\n prevItem++;\r\n } else {\r\n localHaveAlwaysVisibleCells = true;\r\n }\r\n return prevItem;\r\n }, 0);\r\n\r\n localMaxColumsToHide = localHaveAlwaysVisibleCells ? localMaxColumsToHide : Math.max(localMaxColumsToHide - 1, 0);\r\n }\r\n const localHiddenColumns = Math.min(hiddenColumns, localMaxColumsToHide);\r\n for (let i = 0; i < localHiddenColumns; i++) {\r\n row.cells[i].style.display = \"none\";\r\n }\r\n }\r\n }\r\n this._canShowColumns = hiddenColumns > 0;\r\n this.ResizeTableCellsAfterRender(rowsData);\r\n }\r\n\r\n SetSuperHeader() {\r\n const fragment = document.createDocumentFragment();\r\n const superHeaderRow: HTMLDivElement = this._el.querySelector(\".super-flex-grid-row\");\r\n const cellsEls: HTMLDivElement[] = Array.from(this._el.querySelectorAll(\".flex-grid-hdata\"));\r\n const headerCells = cellsEls.reduce((prev, now) => {\r\n if (now.style.display === \"none\") {\r\n return prev;\r\n }\r\n if (now.classList.contains(\"js-reserved\")) {\r\n prev.reservedWidth += now.offsetWidth;\r\n } else {\r\n prev.regular.push(now);\r\n }\r\n return prev;\r\n }, {reservedWidth: 0, regular: []});\r\n if (!headerCells.regular.length) {\r\n this._el.classList.remove(\"has-super-header\");\r\n superHeaderRow.style.display = \"none\";\r\n return;\r\n }\r\n superHeaderRow.querySelectorAll(\".super-header-cell\").forEach(el => el.remove());\r\n\r\n const groupEl = document.createElement(\"div\");\r\n groupEl.className = \"super-header-cell\";\r\n\r\n const overReservedEl = groupEl.cloneNode(false);\r\n (overReservedEl as HTMLDivElement).style.width = headerCells.reservedWidth + \"px\";\r\n fragment.appendChild(overReservedEl);\r\n\r\n let currentGroup;\r\n let currentGroupEl = null;\r\n const groupsWidth = [];\r\n let groupIndex = -1;\r\n let hasGroups = false;\r\n\r\n headerCells.regular.forEach(el => {\r\n if (el.dataset.group === currentGroup) {\r\n groupsWidth[groupIndex] += el.offsetWidth;\r\n currentGroupEl.style.width = groupsWidth[groupIndex] + \"px\";\r\n } else {\r\n groupIndex++;\r\n currentGroup = el.dataset.group;\r\n currentGroupEl = groupEl.cloneNode(false);\r\n currentGroupEl.innerText = currentGroup;\r\n groupsWidth[groupIndex] = el.offsetWidth;\r\n currentGroupEl.style.width = groupsWidth[groupIndex] + \"px\";\r\n fragment.appendChild(currentGroupEl);\r\n\r\n if (currentGroup) {\r\n hasGroups = true;\r\n }\r\n }\r\n });\r\n\r\n if (hasGroups) {\r\n this._el.classList.add(\"has-super-header\");\r\n superHeaderRow.appendChild(fragment);\r\n superHeaderRow.style.display = \"flex\";\r\n } else {\r\n this._el.classList.remove(\"has-super-header\");\r\n superHeaderRow.style.display = \"none\";\r\n }\r\n }\r\n\r\n SortColumnsByPriority(a: HTMLDivElement, b: HTMLDivElement): number {\r\n const datasetA = a.dataset;\r\n const datasetB = b.dataset;\r\n\r\n const priorityA = +datasetA.priority || 4; // if no priority we set 4 (the lowest priority)\r\n const priorityB = +datasetB.priority || 4; // if no priority we set 4 (the lowest priority)\r\n\r\n // compare priority\r\n if (priorityA < priorityB) {\r\n return 1;\r\n } else if (priorityA > priorityB) {\r\n return -1;\r\n }\r\n\r\n // if priorities equals compare cell index\r\n if (+datasetA.index < +datasetB.index) {\r\n return 1;\r\n } else if (+datasetA.index > +datasetB.index) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n getColumnWidth = (data) => {\r\n const column = this.Model.Columns[data];\r\n if (column) {\r\n return column.styleWidth\r\n }\r\n return \"\";\r\n };\r\n\r\n GetColumnPriority(index) {\r\n return this.Model.Columns[index].DisplayPriority;\r\n }\r\n\r\n GetClassNames(model: any, classNames?: string[]): string {\r\n let result: string;\r\n let additionalClassNames: string;\r\n\r\n if (model.FieldMetadata) {\r\n result =\r\n model.FieldMetadata.Type.toString() + ' ' + model.FieldMetadata.FormatName.toString().replace(' ', '');\r\n\r\n if (model.FieldMetadata.Type === FIELD_TYPES.Lookup) {\r\n const validationFieldMetadata = extractLookupValFieldMetadata(model.FieldMetadata);\r\n\r\n if (validationFieldMetadata) {\r\n result += ` ${validationFieldMetadata.Type} ${validationFieldMetadata.FormatName.toString().replace(\r\n ' ',\r\n ''\r\n )}`;\r\n }\r\n }\r\n } else if (model.Type) {\r\n result = model.Type;\r\n } else {\r\n result = '';\r\n }\r\n\r\n if (classNames) {\r\n additionalClassNames = classNames.join(' ');\r\n\r\n return result + ' ' + additionalClassNames;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n CreateColumnWidthParameters(headers: HeaderColumn[]): void {\r\n const classes = headers.map((header) => this.GetClassNames(header.Model));\r\n\r\n this._columnClassesCollection(classes);\r\n }\r\n\r\n CreateColumnTotalWidthParameters(headers: HeaderColumn[]): void {\r\n const filterHeader = _.filter(headers, header=> !header.Model.IsSortDescription);\r\n const classes = filterHeader.map(header => this.GetClassNames(header.Model));\r\n this._columnClassesTotalCollection(classes);\r\n }\r\n\r\n AddColumns(columnModels: Array<GridColumnModel>) {\r\n const columns = [];\r\n\r\n _.each(columnModels, columnModel => {\r\n const column = new HeaderColumn(columnModel, null, null, null, []);\r\n columns.push(column);\r\n });\r\n\r\n this._headerColumns(columns);\r\n }\r\n\r\n ResetSort(excludeColumn: HeaderColumn) {\r\n _.each(this._headerColumns(), item => {\r\n if (item !== excludeColumn) {\r\n item.ResetSort();\r\n }\r\n });\r\n }\r\n\r\n SaveRecord(row: GridRow): P.Promise<any> {\r\n const deferredResult = P.defer<GridDataModel>();\r\n const rowDataModel = this.SerializeRowData(row);\r\n\r\n BlockUI.Block();\r\n GridStore.UpdateRow(rowDataModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(data => {\r\n deferredResult.resolve(null);\r\n this.Trigger(EVENTS.DATA_SAVED, { UpdateResult: data, UpdateRow: row });\r\n this.ResizeTableCellsAfterRender();\r\n this.Trigger(EVENTS.LOAD_SUB_GRID);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n SaveLifestatus(row: GridRow): P.Promise<any> {\r\n const dataModel = new UpdateLifestatusModel({\r\n EntityId: row.EntityId,\r\n RecordId: row.RecordId,\r\n RowLifestatus: row.LifestatusId\r\n });\r\n\r\n BlockUI.Block();\r\n let deferredResult = P.defer<GridDataModel>();\r\n GridStore.UpdateRowLifestatus(dataModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(data => {\r\n deferredResult.resolve(null);\r\n this.Trigger(EVENTS.REFRESH);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n DeleteRecord(row: GridRow) {\r\n if(this._screenType === ScreenTypes[ScreenTypes.EditScreen]){\r\n row.State = States.Delete;\r\n this._rows.splice(this._rows.indexOf(row), 1);\r\n this._deletedRows.push(row);\r\n }else{\r\n const rowDataModel = this.SerializeRowData(row);\r\n GridStore.DeleteRow(rowDataModel)\r\n .then(result => {\r\n var notifier = new Notifier(this._el);\r\n if (result.IsSuccessfull) {\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n this._rows.splice(this._rows.indexOf(row), 1);\r\n this._dataModel.Rows.splice(this._dataModel.Rows.indexOf(row.Model), 1);\r\n this.Trigger(EVENTS.RECORD_DELETED);\r\n } else {\r\n notifier.Failed(NOTIFICATIONS.ERROR_DELETE_GRID_DATA.replace('{ErrorMessage}', result.ErrorMessage));\r\n }\r\n }); \r\n }\r\n }\r\n\r\n get SubjectEntityId() {\r\n return this._parentRow ? this._parentRow.EntityId : this._dataModel.SubjectEntityId;\r\n }\r\n\r\n get SubjectRecordId(){\r\n return this._parentRow ? this._parentRow.RecordId : this._dataModel.SubjectRecordId;\r\n }\r\n\r\n UnlinkMultipleRecords() {\r\n let selectedRows: Array<IUnlinkRecordRequestModel> = [];\r\n let selectedRowsRequestModel: IUnlinkMultipleRecordsRequestModel = null;\r\n\r\n _.each(this._dataModel.Rows, row => {\r\n if (row.IsUnlinkCheckboxChecked) {\r\n let requestRowModel: IUnlinkRecordRequestModel = {\r\n MainEntityId: this.SubjectEntityId,\r\n MainRecordId: this.SubjectRecordId,\r\n RelatedEntityId: row.EntityId,\r\n RelatedRecordId: row.RecordId,\r\n KSeq: row.KSeq,\r\n RelationshipType: row.RelationshipType\r\n };\r\n\r\n if (row.RelationshipType == RelationshipTypes.Parent) {\r\n requestRowModel.MainEntityId = row.EntityId;\r\n requestRowModel.MainRecordId = row.RecordId;\r\n requestRowModel.RelatedEntityId = this.SubjectEntityId;\r\n requestRowModel.RelatedRecordId = this.SubjectRecordId;\r\n requestRowModel.RelationshipType = row.RelationshipType;\r\n }\r\n\r\n selectedRows.push(requestRowModel);\r\n\r\n selectedRowsRequestModel = {\r\n Rows: selectedRows\r\n }\r\n }\r\n });\r\n\r\n const notifier = new Notifier(null);\r\n\r\n if (selectedRowsRequestModel) {\r\n BlockUI.Block();\r\n\r\n GridStore.UnlinkMultipleRecords(selectedRowsRequestModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n\r\n if (result.IsSuccessfull) {\r\n\r\n let elementsToDelete = [], dataModelRowsToDelete = [];\r\n\r\n _.each(this._dataModel.Rows, row => {\r\n if (row.IsUnlinkCheckboxChecked) {\r\n let deletionIndex = this._dataModel.Rows.indexOf(row);\r\n elementsToDelete.push(this._rows()[deletionIndex]);\r\n dataModelRowsToDelete.push(row);\r\n }\r\n });\r\n\r\n this._rows(this._rows().filter(row => !elementsToDelete.includes(row)));\r\n this._dataModel.Rows = this._dataModel.Rows.filter(row => !dataModelRowsToDelete.includes(row));\r\n\r\n if (!this._parentRow) {\r\n this.Trigger(EVENTS.REFRESH);\r\n }\r\n } else if (result.Warnings && result.Warnings.length > 0) {\r\n _.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n } else {\r\n notifier.Failed(result.ErrorMessage);\r\n }\r\n });\r\n\r\n selectedRowsRequestModel = null;\r\n } else {\r\n notifier.Warning(LABELS.NO_RECORD_SELECTED);\r\n }\r\n }\r\n\r\n UnlinkRecord(row: GridRow): any {\r\n if (row.State != States.Link) {\r\n let requestModel: IUnlinkRecordRequestModel = {\r\n MainEntityId: this.SubjectEntityId,\r\n MainRecordId: this.SubjectRecordId,\r\n RelatedEntityId: row.EntityId,\r\n RelatedRecordId: row.RecordId,\r\n KSeq: row.KSeq\r\n }\r\n\r\n if (row.RelationshipType == RelationshipTypes.Parent) {\r\n requestModel.MainEntityId = row.EntityId;\r\n requestModel.MainRecordId = row.RecordId;\r\n requestModel.RelatedEntityId = this.SubjectEntityId;\r\n requestModel.RelatedRecordId = this.SubjectRecordId;\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.EditScreen] && !this._parentRow) {\r\n if (!row.LinkEditorData) {\r\n row.LinkEditorData = new UpdateDataModel();\r\n }\r\n let deletedRelation = new DeletedRelationModel(row.EntityId, row.RecordId, row.KSeq, row.RelationshipType);\r\n row.LinkEditorData.DeletedRelations.push(deletedRelation);\r\n this._rows.splice(this._rows.indexOf(row), 1);\r\n this._unlinkedRows.push(row);\r\n this.Trigger(EVENTS.UNLINK_RECORD);\r\n } else {\r\n BlockUI.Block();\r\n GridStore.UnlinkRecord(requestModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n const notifier = new Notifier(null);\r\n\r\n if (result.IsSuccessfull) {\r\n this._rows.splice(this._rows.indexOf(row), 1);\r\n if(!this._parentRow){\r\n this.Trigger(EVENTS.REFRESH);\r\n }\r\n } else if (result.Warnings && result.Warnings.length > 0) {\r\n _.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n } else {\r\n notifier.Failed(result.ErrorMessage);\r\n }\r\n });\r\n }\r\n } else {\r\n this._rows.splice(this._rows.indexOf(row), 1);\r\n }\r\n }\r\n\r\n\tUnlinkRecordByRelation(relation: ILoadScreenRelationModel, isNewParent: boolean): any {\r\n\t\tlet requestModel: IUnlinkRecordRequestModel = {\r\n\t\t\tMainEntityId: relation.MainEntityId,\r\n\t\t\tMainRecordId: relation.MainRecordId,\r\n\t\t\tRelatedEntityId: relation.RelatedEntityId,\r\n\t\t\tRelatedRecordId: relation.RelatedRecordId,\r\n\t\t\tKSeq: relation.KSeq\r\n\t\t}\r\n\r\n\t\tBlockUI.Block();\r\n\t\tGridStore.UnlinkRecord(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n const notifier = new Notifier(null);\r\n\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tconst row = this.GetRowByRelation(relation, isNewParent);\r\n\t\t\t\t\tif (row) {\r\n\t\t\t\t\t\tthis._rows.splice(this._rows.indexOf(row), 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (result.Warnings && result.Warnings.length > 0) {\r\n _.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n } else {\r\n\t\t\t\t\tnotifier.Failed(result.ErrorMessage);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n get RowsCount(): number{\r\n let rows = _.filter(this._rows(), (item)=> !item.Model.IsGroup);\r\n return rows.length;\r\n }\r\n\r\n get TotalRows(){ \r\n return this._dataModel.TotalRecords + this.NewRows\r\n }\r\n\r\n SerializeRowData(row: GridRow): GridRowDataModel {\r\n const rowDataModel = new GridRowDataModel();\r\n if (row.RelationshipType == RelationshipTypes.Parent) {\r\n rowDataModel.SubjectEntityId = row.EntityId;\r\n rowDataModel.SubjectRecordId = row.RecordId;\r\n rowDataModel.RecordId = this._dataModel.SubjectRecordId;\r\n rowDataModel.EntityId = this._dataModel.SubjectEntityId;\r\n\r\n } else {\r\n rowDataModel.SubjectEntityId = this._dataModel.SubjectEntityId;\r\n rowDataModel.SubjectRecordId = this._dataModel.SubjectRecordId;\r\n rowDataModel.RecordId = row.RecordId;\r\n rowDataModel.EntityId = row.EntityId;\r\n }\r\n\r\n rowDataModel.IsLinkParent = row.IsLinkParent;\r\n\r\n rowDataModel.State = row.State;\r\n _.each(row.DataCells, item => {\r\n const aliasToBeAdded = item.EntityId == rowDataModel.EntityId && item.Model.FieldMetadata.Type === FIELD_TYPES.Alias;\r\n if (!item.IsReadOnly() || aliasToBeAdded) {\r\n const fieldData = new FieldDataModel();\r\n fieldData.Value = item.Value;\r\n fieldData.CustomValue = item.Model.FieldMetadata.Type == FIELD_TYPES.Lookup && item.DisplayValue;\r\n fieldData.FieldId = item.FieldId;\r\n fieldData.EntityId = item.EntityId;\r\n fieldData.RecordKeys = item.Model.RecordKeys || [];\r\n fieldData.Translations = this.GetTranslations(item);\r\n\r\n rowDataModel.Data.push(fieldData);\r\n }\r\n });\r\n if (this.HasFTypeField() && !this.HasFTypeColumn() && row.Model.TypeId) {\r\n rowDataModel.Data.push(this.GetFtypeCell(row.Model.TypeId));\r\n }\r\n return rowDataModel;\r\n }\r\n\r\n GetQueryColumn(columnGuid: string, expression: QueryExpressionModel) {\r\n const entities = Util.GetAllQueryEntities(expression);\r\n let result = null;\r\n\r\n _.each(entities, (entity) => {\r\n _.each(entity.Columns,\r\n column => {\r\n if (column.Guid === columnGuid) {\r\n result = column;\r\n }\r\n });\r\n });\r\n\r\n return result;\r\n }\r\n\r\n GetQueryEntity(columnGuid: string, expression: QueryExpressionModel): QueryEntityModel {\r\n const entities = Util.GetAllQueryEntities(expression);\r\n let result = null;\r\n\r\n _.each(entities, (entity) => {\r\n _.each(entity.Columns,\r\n column => {\r\n if (column.Guid === columnGuid) {\r\n result = entity;\r\n }\r\n });\r\n });\r\n\r\n return result;\r\n }\r\n\r\n AddToBasket(row: GridRow) {\r\n this.Trigger(EVENTS.ADD_TO_BASKET, {Row: row});\r\n }\r\n\r\n RemoveFromBasket(row: GridRow) {\r\n this.Trigger(EVENTS.REMOVE_FROM_BASKET, {Row: row});\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/Grid/BaseGrid/Templates/BaseGrid';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n }\r\n\r\n AfterGridReady(el: Array<HTMLElement>) {\r\n const isSameElement = this._el === el[0].parentElement;\r\n this._el = el[0].parentElement;\r\n this.ResizeTableCellsAfterRender();\r\n\r\n if (isSameElement) return;\r\n\r\n if (this._isCardScreen()) {\r\n this._el.classList.remove(\"hidden-table\");\r\n }\r\n this._isCardScreen.subscribe((newValue) => {\r\n if (newValue) {\r\n this._el.classList.remove(\"hidden-table\");\r\n }\r\n })\r\n\r\n const unbindResize = ResizeService.SubscribeWidth(this.OnResize, this._el); // subscribe on resize\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(this._el, () => {\r\n unbindResize();\r\n window.removeEventListener(\"scroll\", () => this.RepositionHeaderOnScroll())\r\n });\r\n\r\n window.addEventListener(\"scroll\", () => this.RepositionHeaderOnScroll());\r\n $(this._el).parents('.jBox-content').on('scroll', () => this.RepositionHeaderOnScroll());\r\n $(this._el).parents('.portlet-body').on('scroll', () => this.RepositionHeaderOnScroll($(this._el).parents('.portlet-body').scrollTop()));\r\n this._el.addEventListener(\"onDropDownOpen\", e => {\r\n e.stopPropagation();\r\n this._preventResize = true;\r\n this._el.classList.add(\"drop-down-open\");\r\n });\r\n this._el.addEventListener(\"onDropDownClose\", e => {\r\n e.stopPropagation();\r\n this._preventResize = true;\r\n this._el.classList.remove(\"drop-down-open\");\r\n });\r\n\r\n this._el.addEventListener(\"resizeTable\", e => {\r\n e.stopPropagation();\r\n clearTimeout(this._resizeLimitInterval);\r\n this.Resize();\r\n });\r\n }\r\n\r\n private Resize(){\r\n this._resizeLimitInterval = setTimeout(() => {\r\n this.ResizeTableCellsAfterRender();\r\n }, 100);\r\n }\r\n\r\n StickyActionBarHeight(isModal:boolean, jBoxModal, _el): number{\r\n let stickyActionBarHeight = 0;\r\n if (isModal){\r\n let actionBarBlock = jBoxModal.find('#ActionBarBlock'),\r\n actionBarSubForm = jBoxModal.find('.actionBarSubForm'),\r\n stickyActionBar = actionBarBlock.length > 0 ? actionBarBlock : actionBarSubForm.length > 0 ? actionBarSubForm : null;\r\n\r\n if(stickyActionBar !== null && stickyActionBar.length !== 0 && stickyActionBar.css('position') === 'sticky'){\r\n let paddingModalPX = $(_el).parents('.jBox-content').css('padding-top'),\r\n paddingModal = +paddingModalPX.substring(0, paddingModalPX.length - 2);\r\n\r\n stickyActionBarHeight = Math.abs(stickyActionBar.innerHeight() + paddingModal);\r\n }\r\n }\r\n return stickyActionBarHeight;\r\n }\r\n\r\n RepositionHeaderOnScroll = (scrollPositionInContainer?: number) => {\r\n const headElement = this._el.querySelector<HTMLDivElement>('.flex-grid-head');\r\n\r\n if (!headElement) {\r\n return;\r\n }\r\n\r\n const portletFullScreen = $(this._el).parents('.portlet-fullscreen').length > 0;\r\n const boundingRect = this._el.getBoundingClientRect();\r\n const modalTopPosition = Math.abs(($('.jBox-content').parents('.jBox-Modal').height() - $(window).height()) / 2);\r\n let fixedHeaderHeight = 0;\r\n let jBoxModal = $(this._el).parents('.jBox-content').parents('.jBox-Modal');\r\n let isModal = jBoxModal.length > 0 && jBoxModal.css('display') !== 'none';\r\n if (window.innerWidth > 991) {\r\n const headerElement: HTMLDivElement = document.querySelector(\"body > .page-header\");\r\n fixedHeaderHeight = isModal ? modalTopPosition + this.StickyActionBarHeight(isModal, jBoxModal, this._el) : headerElement ? headerElement.offsetHeight : 0;\r\n }\r\n\r\n if (!portletFullScreen && boundingRect.top < fixedHeaderHeight) {\r\n const distanceFromTop = Math.min(boundingRect.top * -1 + fixedHeaderHeight, boundingRect.height - 28);\r\n headElement.style.top = Math.max(distanceFromTop, 0) + \"px\";\r\n } else {\r\n const portletToolbarHeight = $(this._el).parents('.portlet-body-content').find('.toolbar-wrapper').height();\r\n const topHeaderPosition = scrollPositionInContainer && portletToolbarHeight < scrollPositionInContainer ? scrollPositionInContainer - portletToolbarHeight - 5 + \"px\" : '0';\r\n headElement.style.top = topHeaderPosition;\r\n }\r\n };\r\n\r\n OnResize = () => {\r\n if (this._preventResize) {\r\n this._preventResize = false;\r\n return;\r\n }\r\n this.ResizeTableCellsAfterRender();\r\n this.RepositionHeaderOnScroll();\r\n };\r\n\r\n Expand() {\r\n this._visible(true);\r\n }\r\n\r\n Colapse() {\r\n this._visible(false);\r\n }\r\n\r\n Render(target: HTMLElement) {\r\n ko.cleanNode(target);\r\n ko.applyBindings(this, target);\r\n }\r\n\r\n GetSelectRecords(): Array<GridRow> {\r\n const selectedRecords = _.filter(this._rows(), (row) => row.IsSelected());\r\n return selectedRecords;\r\n }\r\n\r\n get Wrapper(): HTMLElement {\r\n return this._el;\r\n }\r\n\r\n set IsReady(value: boolean) {\r\n this._isReady(value);\r\n }\r\n\r\n get IsFastFilterEnabled(): boolean {\r\n return this._isFastFilterEnabled();\r\n }\r\n\r\n set IsFastFilterEnabled(value: boolean) {\r\n this._isFastFilterEnabled(value);\r\n }\r\n\r\n public GetEntityByColumnGuid(columnGuid: string, queryExpression: QueryExpressionModel): QueryEntityModel {\r\n let result = null;\r\n const entities = Util.GetAllQueryEntities(queryExpression);\r\n _.each(entities, (entity) => {\r\n const field = _.find(entity.Columns, (column) => column.Guid === columnGuid);\r\n\r\n if (field) {\r\n result = entity;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n GetRecordIds(): Array<number> {\r\n const ids = _.map(this._rows(), (row) => row.RecordId);\r\n\r\n return ids;\r\n }\r\n\r\n GetAllRecordKeys() {\r\n let result = [];\r\n _.each(this._rows(), (row) => {\r\n result = result.concat(row.Model.RecordKeys);\r\n });\r\n return result;\r\n }\r\n\r\n GetGridRowByRecordId(recordId: number): GridRow {\r\n return _.find(this._rows(), (row: GridRow) => row.RecordId === recordId);\r\n }\r\n\r\n GetGridRowsByRecordIds(recordIds: number[]): GridRow[] {\r\n return _.filter(this._rows(), (row: GridRow) => _.contains(recordIds, row.RecordId));\r\n }\r\n\r\n GetUnlinkedGridRowByRecordId(recordId: number): GridRow {\r\n return _.find(this._unlinkedRows, (row: GridRow) => row.RecordId === recordId);\r\n }\r\n\r\n GetUnlinkedGridRowsByRecordIds(recordIds: number[]): GridRow[] {\r\n return _.filter(this._unlinkedRows, (row: GridRow) => _.contains(recordIds, row.RecordId));\r\n }\r\n\r\n GetRowByIndex(index: number): GridRow {\r\n return this._rows()[index];\r\n }\r\n\r\n\tGetRowByRelation(relation: ILoadScreenRelationModel, isNewParent: boolean): GridRow {\r\n\t\tif (!this._rows()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (relation.KSeq) {\r\n\t\t\treturn this._rows().find(row => row.KSeq === relation.KSeq);\r\n\t\t}\r\n\r\n\t\treturn isNewParent\r\n\t\t\t? this._rows().find(row => row.RecordId === relation.MainRecordId)\r\n\t\t\t: this._rows().find(row => row.RecordId === relation.RelatedRecordId);\r\n }\r\n\r\n DuplicateRow(row: GridRow): GridRow {\r\n const newRowModel = row.Model.Clone();\r\n return this.AddNewRow(newRowModel, newRowModel.TypeId, newRowModel.KindId);\r\n }\r\n\r\n MarkRecodsInBasket(records: Array<number>) {\r\n if (this._enableBasket()) {\r\n _.each(this._rows(), (row: GridRow) => {\r\n row.MarkRecodsInBasket(records);\r\n });\r\n }\r\n }\r\n\r\n SerializeRows(): Array<GridRowDataModel> {\r\n let result = [];\r\n _.each([...this._rows(), ...this._deletedRows], (row: GridRow) => {\r\n if (row.State === States.New || row.State === States.Edit || row.State === States.Link || row.State === States.LinkAndEdit || row.State === States.Delete) {\r\n const rowDataModel = new GridRowDataModel();\r\n rowDataModel.Guid = row.Guid;\r\n rowDataModel.SubjectEntityId = this._dataModel.SubjectEntityId;\r\n rowDataModel.SubjectRecordId = this._dataModel.SubjectRecordId;\r\n rowDataModel.EntityId = row.EntityId;\r\n rowDataModel.RecordId = row.RecordId;\r\n rowDataModel.State = row.State;\r\n rowDataModel.KSeq = row.KSeq;\r\n rowDataModel.IsLinkParent = row.IsLinkParent;\r\n if (row.State === States.New && this.HasFTypeField() && !this.HasFTypeColumn()) {\r\n rowDataModel.Data.push(this.GetFtypeCell(row.Model.TypeId));\r\n }\r\n _.each(row.DataCells, item => {\r\n const aliasToBeAdded = item.EntityId == rowDataModel.EntityId && item.Model.FieldMetadata.Type === FIELD_TYPES.Alias;\r\n if (!item.IsReadOnly() || item.Model.FieldMetadata.Type === FIELD_TYPES.Sort || aliasToBeAdded) {\r\n const fieldData = new FieldDataModel();\r\n fieldData.Value = item.Value;\r\n fieldData.CustomValue = item.Model.FieldMetadata.Type == FIELD_TYPES.Lookup && item.DisplayValue;\r\n fieldData.FieldId = item.FieldId;\r\n fieldData.EntityId = item.EntityId;\r\n fieldData.RecordKeys = item.Model.RecordKeys || [];\r\n fieldData.Translations = this.GetTranslations(item);\r\n rowDataModel.Data.push(fieldData);\r\n }\r\n });\r\n result.push(rowDataModel);\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n SerializeLinkEditorData(): Array<UpdateDataModel> {\r\n let result = [];\r\n let allRows = [...this._rows(), ...this._unlinkedRows];\r\n\r\n _.each(allRows, (row) => {\r\n let linkEditorData = row.SerializeLinkEditorData();\r\n if (linkEditorData) {\r\n result.push(linkEditorData);\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n GetEditRows(): Array<GridRow> {\r\n let rows = _.filter(this._rows(), (row: GridRow) => {\r\n return row.IsEditMode;\r\n });\r\n return rows;\r\n }\r\n\r\n SaveEditRows() {\r\n var rows = this.GetEditRows();\r\n _.each(rows, (row: GridRow) => {\r\n row.SaveRow();\r\n });\r\n }\r\n\r\n GetNewAndLinkRows() {\r\n return this._rows().filter(\r\n row => row.State === States.New || row.State === States.Link || row.State === States.LinkAndEdit\r\n );\r\n }\r\n\r\n ReleaseLockRows() {\r\n let rows = this._lockRows; \r\n if (this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n const subjectEntityId = this._form.GetScreen().GetEntityId();\r\n const subjectRecordId = this._form.GetScreen().GetRecordId();\r\n rows = _.filter(rows, (row) => {\r\n return !(row.EntityId === subjectEntityId && row.RecordId === subjectRecordId);\r\n });\r\n }\r\n\r\n _.each(rows, (row: GridRow) => {\r\n LockManager.Instance.ReleaseLock(row.EntityId, row.RecordId);\r\n });\r\n this._lockRows = [];\r\n }\r\n\r\n HasEditRows(): boolean {\r\n var rows = this.GetEditRows();\r\n if (rows.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n get Model(): GridDataModel {\r\n return this._dataModel;\r\n }\r\n\r\n private GetTranslations(dataCell: DataCell) {\r\n return dataCell.Translations && dataCell.Translations.map(translation => {\r\n const model = new TranslationModel();\r\n\r\n model.LanguageShortName = TranslationManager.Instance.GetLanguageById(translation.LanguageId).ShortName;\r\n model.Value = translation.Value;\r\n\r\n return model;\r\n });\r\n }\r\n\r\n private HasFTypeColumn() {\r\n let fTypeColumn = _.find(this.GetGridSubjectEntity().Columns, column => {\r\n return column.Metadata.Name === TYPE_FIELD_NAME;\r\n });\r\n return !!fTypeColumn;\r\n }\r\n\r\n private HasFTypeField() {\r\n let fTypeField = _.find(this.GetGridSubjectEntity().Metadata.Fields, field => {\r\n return field.Name === TYPE_FIELD_NAME;\r\n });\r\n return !!fTypeField;\r\n }\r\n\r\n private GetFtypeCell(typeId?: number) {\r\n const fieldData = new FieldDataModel();\r\n fieldData.Value = typeId ? String(typeId) : '0';\r\n\r\n const objectEntity = this.GetGridSubjectEntity();\r\n\r\n const fTypeField = objectEntity.Metadata.Fields.find(item => item.Name === TYPE_FIELD_NAME);\r\n\r\n fieldData.FieldId = fTypeField.Id;\r\n fieldData.EntityId = objectEntity.Metadata.Id;\r\n fieldData.RecordKeys = [];\r\n fieldData.Translations = [];\r\n\r\n return fieldData;\r\n }\r\n\r\n GetGridSubjectEntity(): QueryEntityModel {\r\n if (this._screenType === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._screenType === ScreenTypes[ScreenTypes.SpecialScreen]\r\n || this._screenType === ScreenTypes[ScreenTypes.QueryScreen]) {\r\n return this._dataModel.QueryExpression.Entity;\r\n }\r\n if (this._dataModel.QueryExpression.EntityJoins.length > 0) {\r\n return this._dataModel.QueryExpression.EntityJoins[0].Entity\r\n }\r\n\r\n if (this._dataModel.QueryExpression.SubEntityJoins.length > 0) {\r\n return this._dataModel.QueryExpression.SubEntityJoins[0].Entity\r\n }\r\n\r\n if (this._dataModel.QueryExpression.ReferenceLookupEntityJoins.length > 0) {\r\n return this._dataModel.QueryExpression.ReferenceLookupEntityJoins[0].Entity\r\n }\r\n }\r\n\r\n public SetGridDataModel(model: IGetGridDataRequestModel) {\r\n this._gridDataModel = model;\r\n }\r\n\r\n public ShowBulkEditor() {\r\n //TODO refactor\r\n\r\n var bulkEditRow = this.GetBulkEditRow();\r\n\r\n if (bulkEditRow) {\r\n\r\n const editingRows = _.uniq(_.map(_.filter(this._rows(), (item) => item.Model.Rights.IsEditingAllowed),\r\n (row) => row.RecordId));\r\n\r\n if (_.size(editingRows) === 0) {\r\n return;\r\n }\r\n\r\n const entityId = _.first(this._rows()).EntityId;\r\n\r\n BlockUI.Block();\r\n LockManager.Instance.TryLocks(entityId, editingRows)\r\n .then((ids) => {\r\n if (ids && ids.length !== editingRows.length) {\r\n new Notifier().Warning(NOTIFICATIONS.SOME_RECORDS_ARE_LOCKED);\r\n }\r\n\r\n if (ids && ids.length > 0) {\r\n new Notifier().Success(\r\n NOTIFICATIONS.BULK_EDIT_RECORD_NUMBER_WILL_BE_EDITED.replace('{records}', `${ids.length}`)\r\n );\r\n }\r\n\r\n this.AddInLockRows(ids);\r\n\r\n bulkEditRow.On(EVENTS.CANCEL_EDIT, this, (eventArgs: any) => {\r\n this._bulkEditRow(null);\r\n this.RemoveFromLockRows(ids);\r\n LockManager.Instance.ReleaseLocks(entityId, this.GetIdsForRelease(entityId, ids));\r\n });\r\n\r\n bulkEditRow.On(EVENTS.SAVE_RECORD, this, (eventArgs: any) => {\r\n var result = [];\r\n let isDataValid = true;\r\n\r\n _.each(bulkEditRow.DataCells, item => {\r\n if (!item.IsDataValid() && !item.IsReadOnly()) {\r\n isDataValid = false;\r\n }\r\n });\r\n\r\n if (isDataValid) {\r\n _.each(bulkEditRow.DataCells, item => {\r\n item.SaveControlValue();\r\n });\r\n }\r\n\r\n _.each(_.filter(this._rows(), item => _.contains(ids, item.RecordId)),\r\n (row: GridRow) => {\r\n if (isDataValid) {\r\n if (row.Model.Rights.IsEditingAllowed) {\r\n const rowDataModel = new GridRowDataModel();\r\n rowDataModel.SubjectEntityId = this._dataModel.SubjectEntityId;\r\n rowDataModel.SubjectRecordId = this._dataModel.SubjectRecordId;\r\n rowDataModel.EntityId = row.EntityId;\r\n rowDataModel.RecordId = row.RecordId;\r\n rowDataModel.State = States.Edit;\r\n rowDataModel.KSeq = row.KSeq;\r\n\r\n _.each(row.DataCells,\r\n item => {\r\n if (item.IsEnableEdit()) {\r\n const fieldData = new FieldDataModel();\r\n\r\n var bulkCell = _.find(bulkEditRow.DataCells,\r\n (bulkCellItem) => {\r\n return bulkCellItem.QueryColumnGuid ===\r\n item.QueryColumnGuid;\r\n });\r\n\r\n if (bulkCell && bulkCell.IsEnableEdit()) {\r\n fieldData.Value = bulkCell.Value;\r\n if (bulkCell.Value && bulkCell.Value != \"0\") {\r\n fieldData.FieldId = item.FieldId;\r\n fieldData.EntityId = item.EntityId;\r\n fieldData.RecordKeys = item.Model.RecordKeys || [];\r\n fieldData.Translations = this.GetTranslations(item);\r\n rowDataModel.Data.push(fieldData);\r\n }\r\n }\r\n }\r\n });\r\n result.push(rowDataModel);\r\n }\r\n }\r\n });\r\n\r\n BlockUI.Block();\r\n GridStore.UpdateRows({ Rows: result })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n this.RemoveFromLockRows(ids);\r\n LockManager.Instance.ReleaseLocks(entityId, this.GetIdsForRelease(entityId, ids));\r\n })\r\n .then(data => {\r\n this._bulkEditRow(null);\r\n this.Trigger(EVENTS.DATA_SAVED, { UpdateResult: data });\r\n });\r\n });\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n\r\n this._bulkEditRow(bulkEditRow);\r\n }\r\n }\r\n\r\n private AddInLockRows(ids: number[]) {\r\n _.forEach(ids,\r\n (id) => {\r\n const row = _.find(this._lockRows, (item) => item.RecordId === id);\r\n if (!row) {\r\n const lockRow = _.find(this._rows(), (item) => item.RecordId === id);\r\n if (lockRow) {\r\n this._lockRows.push(lockRow);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private RemoveFromLockRows(ids: number[]) {\r\n this._lockRows = _.reject(this._lockRows, lockRow => _.contains(ids, lockRow.RecordId))\r\n }\r\n\r\n private GetIdsForRelease(entityId: number, ids: number[]) {\r\n if (this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n if (entityId === this._form.GetScreen().GetEntityId()) {\r\n ids = _.without(ids, this._form.GetScreen().GetRecordId());\r\n }\r\n }\r\n\r\n return ids;\r\n }\r\n\r\n\tget HasInlineControls() {\r\n\t\treturn this._inlineControls && this._inlineControls.length > 0;\r\n\t}\r\n\r\n GetInlineControls() {\r\n return _.map(this._inlineControls, (control) => {\r\n let inlineControl = control.Clone();\r\n control.GetParentControl().AddSubControl(inlineControl);\r\n return inlineControl;\r\n });\r\n }\r\n\r\n GetBulkEditControls() {\r\n const controls = _.filter(this._inlineControls, (control) => {\r\n return control.GetType() !== CONTROL_TYPES.GenericButton;\r\n });\r\n\r\n return _.map(controls, (control) => {\r\n return control.Clone();\r\n });\r\n }\r\n\r\n get DataModel(): GridDataModel {\r\n return this._dataModel;\r\n }\r\n\r\n GetGroupedData(cells: DataCell[]) {\r\n if (!cells) {\r\n return [];\r\n }\r\n\r\n return cells.map(cell => {\r\n const column = this.groupColumns[cell.QueryColumnGuid];\r\n const value = (cell.Model.DisplayValue || cell.ViewValue || cell.Value);\r\n return { Title: column.Title, Value: value, Cell: cell };\r\n });\r\n }\r\n\r\n SortByRelationships() {\r\n if (this._sortByRelationshipOrderClassName() === ''){\r\n return;\r\n }\r\n\r\n if (this._sortByRelationshipOrder() === SortOrder.Both) {\r\n this._sortByRelationshipOrder(SortOrder.Asc);\r\n } else if (this._sortByRelationshipOrder() === SortOrder.Asc) {\r\n this._sortByRelationshipOrder(SortOrder.Desc);\r\n } else if (this._sortByRelationshipOrder() === SortOrder.Desc) {\r\n this._sortByRelationshipOrder(SortOrder.Both);\r\n }\r\n\r\n this.ResetSort(null);\r\n let sortColumns = [];\r\n let sortModel = new SortModel();\r\n sortModel.OrderColumn = 'IsParent';\r\n sortModel.SortOrder = this._sortByRelationshipOrder();\r\n sortColumns.push(sortModel);\r\n this.Trigger(EVENTS.SORT, {SortColumns: sortColumns});\r\n }\r\n\r\n EditAll() {\r\n const editingRows = _.uniq(\r\n _.map(\r\n _.filter(this._rows(), item => item.Model.Rights.IsEditingAllowed),\r\n row => row.RecordId\r\n )\r\n );\r\n\r\n if (editingRows.length > 0) {\r\n new Notifier().Success(\r\n NOTIFICATIONS.EDIT_ALL_RECORD_NUMBER_WILL_BE_EDITED.replace('{records}', `${editingRows.length}`)\r\n );\r\n }\r\n\r\n _.each(this._rows(), (row) => {\r\n row.IsEditMode = true;\r\n });\r\n }\r\n\r\n SaveAll(): boolean {\r\n let result = true;\r\n let editableRows = _.filter(this._rows(), (row) => {\r\n return row.IsEditMode;\r\n });\r\n\r\n _.each(editableRows, (row) => {\r\n if (!row.SaveRow()) {\r\n result = false;\r\n }\r\n });\r\n\r\n this.ResizeTableCellsAfterRender();\r\n\r\n return result;\r\n }\r\n\r\n ShowOriginalImage(imageCell: DataCell) {\r\n let contextRow = _.find(this._rows(), (row: GridRow) => {\r\n return _.any(row.DataCells, (cell) => cell == imageCell);\r\n });\r\n\r\n if (contextRow) {\r\n let cellIdex = contextRow.DataCells.indexOf(imageCell);\r\n\r\n let imageCells = _.map(this._rows(), (row: GridRow) => {\r\n return row.DataCells[cellIdex];\r\n });\r\n\r\n imageCells = _.filter(imageCells, (cell: DataCell) => {\r\n return cell && !_.isEmpty(cell.DisplayValue);\r\n });\r\n\r\n\r\n var opt = {\r\n markerable: false, \r\n button: true,\r\n inline: false,\r\n navbar: false,\r\n title: false,\r\n toolbar: true,\r\n tooltip: true,\r\n movable: true,\r\n zoomable: true,\r\n rotatable: true,\r\n scalable: true,\r\n transition: true,\r\n fullscreen: true,\r\n keyboard: true,\r\n url: 'data-original',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n filter() {\r\n return true;\r\n }\r\n };\r\n\r\n let container = $(\"<div/>\");\r\n\r\n _.each(imageCells, (imageCell) => {\r\n let node = imageCell.Wrapper.cloneNode() as HTMLElement;\r\n container.append(node);\r\n });\r\n\r\n\r\n let viewer = new Viewer(container[0], opt);\r\n let baseNext = viewer.next;\r\n\r\n viewer.next = (loop?: boolean) => {\r\n let index = viewer.index + 1;\r\n\r\n if (index === imageCells.length) {\r\n index = 0;\r\n }\r\n\r\n let cell = imageCells[index];\r\n\r\n if (cell) {\r\n this.LoadOriginalImage(cell, index, viewer, index == 0 ? null : baseNext);\r\n }\r\n return viewer;\r\n };\r\n\r\n let basePrev = viewer.prev;\r\n viewer.prev = (loop?: boolean) => {\r\n let index = viewer.index - 1;\r\n\r\n if (index < 0) {\r\n index = imageCells.length - 1;\r\n }\r\n\r\n let cell = imageCells[index];\r\n\r\n if (cell) {\r\n this.LoadOriginalImage(cell, index, viewer, index == imageCells.length - 1 ? null : basePrev);\r\n }\r\n return viewer;\r\n };\r\n this.LoadOriginalImage(imageCell, imageCells.indexOf(imageCell), viewer, null);\r\n }\r\n }\r\n\r\n private LoadOriginalImage(imageCell: DataCell, index: number, viewer: Viewer, navigationAction: Function) {\r\n BlockUI.Block();\r\n GridStore.GetImageValue({\r\n EntityId: imageCell.Model.EntityMetadata.Id,\r\n FieldId: imageCell.Model.FieldMetadata.Id,\r\n RecordKeys: imageCell.Model.RecordKeys\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then(originalImage => {\r\n\r\n if (viewer.items) {\r\n let item = viewer.items[index];\r\n let img = item.querySelector('img');\r\n $(img).attr('data-original-url', `data:image/jpeg;base64,${originalImage.DisplayValue}`);\r\n } else {\r\n let img = viewer.images[index];\r\n $(img).attr('src', `data:image/jpeg;base64,${originalImage.DisplayValue}`);\r\n }\r\n\r\n if (navigationAction) {\r\n navigationAction.call(viewer);\r\n } else {\r\n viewer.view(index);\r\n }\r\n\r\n ViewerJsExtention.CustomTooltip();\r\n\r\n }).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n get Paginator(): Paginator {\r\n return this._toolbar.Paginator();\r\n }\r\n}\r\n","export enum EntityTypes {\r\n\tEntity,\r\n\tSub,\r\n\tLink,\r\n\tSystem,\r\n\tLookup\r\n}","export enum RelationshipTypes {\r\n\tNone,\r\n\tParent,\r\n\tToItself,\r\n\tChild\r\n}","export enum ViewModes {\r\n\tTableView,\r\n\tListView,\r\n\tQuery,\r\n\tTemplate,\r\n\tSpim,\r\n\tKanbanQuery,\r\n\tInvoicingQuery\r\n}","export const EVENTS = {\r\n\tSORT: 'SORT',\r\n\tROW_SELECTION_CHANGED: 'ROW_SELECTION_CHANGED',\r\n\tOPEN_HYPERLINK: 'OPEN_HYPERLINK',\r\n\tDATA_SAVED: 'DATA_SAVED',\r\n\tDATA_REMOVED: 'DATA_REMOVED',\r\n\tNO_CHANGES: 'NO_CHANGES',\r\n\tEDIT_RECORD: 'EDIT_RECORD',\r\n\tEDIT_LINK: 'EDIT_LINK',\r\n\tCHANGE_VISIBLE_GROUP: 'CHANGE_VISIBLE_GROUP',\r\n\tEDIT_CLUSTERED_LINK: 'EDIT_CLUSTERED_LINK',\r\n\tSAVE_RECORD: 'SAVE_RECORD',\r\n\tSAVE_LIFESTATUS: 'SAVE_LIFESTATUS',\r\n\tDELETE_RECORD: 'DELETE_RECORD',\r\n\tUNLINK_RECORD: 'UNLINK_RECORD',\r\n\tCLICK_UNLINK_CHECKBOX: 'CLICK_UNLINK_CHECKBOX',\r\n\tCANCEL_EDIT\t: 'CANCEL_EDIT',\r\n\tCHANGE_LIFESTATUS: 'CHANGE_LIFESTATUS',\r\n\tEXPAND: 'EXPAND',\r\n\tCOLLAPSE: 'COLLAPSE',\r\n\tADD_TO_BASKET: 'ADD_TO_BASKET',\r\n\tREMOVE_FROM_BASKET: 'REMOVE_FROM_BASKET',\r\n\tREFRESH: 'REFRESH',\r\n\tRECORD_DELETED: 'RECORD_DELETED',\r\n\tRECORD_EDITED: 'RECORD_EDITED',\r\n\tRECORD_SAVED: 'RECORD_SAVED',\r\n\tUNDO_EVERY_RECORD: 'UNDO_EVERY_RECORD',\r\n\tUPDATE_GRID: 'UPDATE_GRID',\r\n\tFAST_FILTER: 'FAST_FILTER',\r\n\tLINK_NEXT_RELATION: 'LINK_NEXT_RELATION',\r\n\tMOVE_ROW_UP: 'MOVE_ROW_UP',\r\n\tMOVE_ROW_DOWN: 'MOVE_ROW_DOWN',\r\n\tHOVER_SORT: 'HOVER_SORT',\r\n\tUN_HOVER_SORT: 'UN_HOVER_SORT',\r\n\tDROPDOWN_VALUE_SELECTED: 'DROPDOWN_VALUE_SELECTED',\r\n\tBACK_LINKING_POPUP_REQUESTED: 'BACK_LINKING_POPUP_REQUESTED',\r\n\tSELECT_RECORD: 'SELECT_RECORD',\r\n\tUPDATE_SET_ENABLE_ADD_BUTTON: 'UPDATE_SET_ENABLE_ADD_BUTTON',\r\n\tSAVE_CHANGES: \"SAVE_CHANGES\",\r\n\tSHOW_ORIGINAL_IMAGE: \"SHOW_ORIGINAL_IMAGE\",\r\n\tLOAD_SUB_GRID: \"LOAD_SUB_GRID\",\r\n\tPRINT_LABEL: \"PRINT_LABEL\",\r\n\r\n\tCREATE_OR_DELETE_SORT_DESCRIPTION: 'CREATE_OR_DELETE_SORT_DESCRIPTION'\r\n};","import {Modal} from 'Core/Common/Modal';\r\nimport * as ko from \"knockout\";\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/MemoValueModal.html';\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/MemoValueModal'] = Template;\r\n\r\nexport class MemoValueModal {\r\n private _value: string;\r\n\r\n constructor(value: string) {\r\n this._value = value;\r\n }\r\n\r\n Show(){\r\n let modal = new Modal({}, true);\r\n ko.cleanNode(modal.Wrapper);\r\n ko.applyBindings(this, modal.Wrapper);\r\n modal.Show();\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/MemoValueModal';\r\n }\r\n\r\n AfterRender(){}\r\n}","// Module\nvar code = \"<iframe style=\\\"min-width:100%;height:600px\\\" data-bind=\\\"iframeContent: $data._value\\\"></iframe>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport GeneralTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/General.html';\r\nimport GeneralEditTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/GeneralEdit.html';\r\nimport MemoTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Memo.html';\r\nimport SortDescriptionTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/SortDescription.html';\r\nimport ImageTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Image.html';\r\nimport ReferenceTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Reference.html';\r\nimport YesNoTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/YesNo.html';\r\nimport ColorTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Color.html';\r\nimport MultiSelectTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/MultiSelect.html';\r\nimport PasswordTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Password.html';\r\nimport DocumentTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Document.html';\r\nimport NoAccess from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/NoAccess.html';\r\nimport SortTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Sort.html';\r\nimport PhoneNumberTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/PhoneNumber.html';\r\nimport ClusteredTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Clustered.html';\r\nimport FormatTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Format.html';\r\nimport HyperLinkTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/HyperLink.html';\r\nimport CurrencyTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Currency.html';\r\nimport SpimTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Spim.html';\r\nimport EmptyTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Empty.html';\r\n\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/General'] = GeneralTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/GeneralEdit'] = GeneralEditTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Memo'] = MemoTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/SortDescription'] = SortDescriptionTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Image'] = ImageTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Reference'] = ReferenceTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/YesNo'] = YesNoTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Color'] = ColorTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/MultiSelect'] = MultiSelectTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Password'] = PasswordTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Document'] = DocumentTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/NoAccess'] = NoAccess;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Sort'] = SortTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/PhoneNumber'] = PhoneNumberTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Clustered'] = ClusteredTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Format'] = FormatTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/HyperLink'] = HyperLinkTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Currency'] = CurrencyTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Spim'] = SpimTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Empty'] = EmptyTemplate;","// Module\nvar code = \"\\t<div class=\\\"grid-cell-wrapper marker\\\"> <!--ko if: _icon() && !_icon().Image--> <i data-bind=\\\"css: GetIconClasses(_icon().FontName, _icon().Name)\\\"></i> <!--/ko--> <!-- ko if: _icon() && _icon().Image--> <img class=\\\"img-responsive image-centered image-icon-xs\\\" data-bind=\\\"attr: {src: _icon().Image}\\\"> <!-- /ko --> <!--ko if: _model.FieldMetadata.FormatName !== 'Mail' --> <span class=\\\"valueBox\\\" data-bind=\\\"click: $data.Click.bind($data), attr: { title: Title }, css: { 'currencyIconPadding': $data.FormatName === 'Currency' && !!$data.GetViewValue(), 'hyperlink': $data._model.HyperlinkRecordId > 0, 'grid-barcode': $data.FormatName === 'Barcode'}\\\"> <!--ko if: $data.FormatName === 'Currency' && !!$data.GetViewValue() --> <i class=\\\"currencyIcon\\\"></i> <!-- /ko --> <!-- ko text: $data.GetViewValue() --><!-- /ko --> </span> <!-- /ko --> <!--ko if: _model.FieldMetadata.FormatName === 'Mail' --> <div data-bind=\\\"click: LoadTabs\\\" class=\\\"dropdown-toggle mailTabsToggler link-type-control-data\\\"> <a data-bind=\\\"text: $data.GetViewValue(), css : { [_id] : _id }\\\"></a> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n <div class='grid-mail-list-dropdown link-type-control-data'>\\r\\n <!-- ko foreach: _mails -->\\r\\n <a class='grid-mail-item' data-bind='attr: {title: Login}, text: Login, click: $parent.MailClick.bind($parent, $data)'></a>\\r\\n <!-- /ko -->\\r\\n </div>\\\"> </span> </div> <!-- /ko --> <!-- ko if: IsBarcodeButtonVisible() --> <a data-bind=\\\"click: PrintBarCode\\\" class=\\\"btn btn-icon-only blue grid-print-barcode\\\"> <i class=\\\"fa fa-print\\\"></i> </a> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() && $data.ViewValue --> <div class=\\\"grid-cell-wrapper marker\\\"> <!-- ko if: _showOriginalMemoButton --> <div class=\\\"show-button\\\"> <a data-bind=\\\"click: $data.ShowOriginalMemo.bind($data)\\\"> <i class=\\\"fa fa-file-text\\\"></i> </a> </div> <!-- /ko --> <div class=\\\"grid-memo\\\" data-bind=\\\"text: $data.TranslateValue\\\"></div> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <div class=\\\"memoEdit\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() && $data.ViewValue --> <div class=\\\"grid-cell-wrapper marker\\\"> <div class=\\\"edit-sort-description-button\\\" data-bind=\\\"click: $data.EditDescription.bind($data), tooltip: {content: $data._labels.EDIT_SORT_DESCRIPTION}\\\"> <i class=\\\"fa fa-pencil\\\"></i> </div> <div class=\\\"grid-memo memoDescriptionValue\\\" data-bind=\\\"html: $data.Value\\\"></div> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <div class=\\\"sortDescriptionsEditMemoBox\\\"> <div class=\\\"sortDescriptionsEditButtonBox\\\"> <span class=\\\"saveBtn\\\" data-bind=\\\"click: $data.SaveDescription.bind($data)\\\"> <i class=\\\"fa fa-save transition\\\"></i> </span> <span class=\\\"editBtn\\\" data-bind=\\\"click: $data.CancelEditDescription.bind($data)\\\"> <i class=\\\"fa fa-close transition\\\"></i> </span> </div> <!-- ko with: _editor --> <div class=\\\"memoEdit\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <!-- ko if: $data.ViewValue != '' && $data.ViewValue != null --> <img data-bind=\\\"attr: { src: 'data:image/jpeg;base64,' + $data.ViewValue }, click: $data.ShowOriginalImage.bind($data)\\\" class=\\\"image-centered main-img img-cyber-grid\\\" alt=\\\"\\\"> <!-- /ko --> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"grid-cell-wrapper marker popover-multiline-container\\\"> <!--ko if: _referenceIcon() && !_referenceIcon().Image--> <i data-bind=\\\"css: GetIconClasses(_referenceIcon().FontName, _referenceIcon().Name), tooltip: {content: _referenceEntityName()}\\\"></i> <!--/ko--> <!-- ko if: _referenceIcon() && _referenceIcon().Image--> <img class=\\\"img-responsive image-icon-xs\\\" data-bind=\\\"attr: {src: _referenceIcon().Image}, tooltip: {content: _referenceEntityName()}\\\"> <!-- /ko --> <!--ko if: $data.ViewValue && !$data.RecordNotFound--> <span data-bind=\\\"text: $data.ViewValue,\\r\\n\\t\\t\\t\\t\\t click: $data.OpenMarkedEditScreen.bind($data),\\r\\n\\t\\t\\t\\t\\t attr: { 'data-toggle': $data._reference() ? 'popover' : '' } ,\\r\\n\\t\\t\\t\\t\\t css: { 'hyperlink': $data._reference() && $data._reference().SelectedEntityRecord},\\r\\n\\t\\t\\t\\t\\t triggerMode: 'hover',\\r\\n\\t\\t\\t\\t\\t htmlMode: true\\\" data-placement=\\\"left\\\"> </span> <!--/ko--> <!--ko if: $data.RecordNotFound--> <span data-bind=\\\"text: $data.ViewValue\\\" data-placement=\\\"left\\\"> </span> <!--/ko--> <!--ko ifnot: $data.ViewValue--> <i class=\\\"fa fa-external-link\\\" data-bind=\\\"css: { 'hyperlink': $data._reference()}, click: $data.OpenMarkedEditScreen.bind($data)\\\"></i> <!--/ko--> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <div class=\\\"grid-cell-wrapper\\\"> <input data-bind=\\\"uniform: $data.ViewValue === 'True' || $data.ViewValue === true\\\" type=\\\"checkbox\\\" disabled=\\\"disabled\\\"> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \" <!-- ko if: !_isEditMode() --> <div data-bind=\\\"style: {backgroundColor: $data.ViewValue}\\\" class=\\\"grid-cell-wrapper\\\"> <span data-bind=\\\"text: $data.Value, style: {color: $data.GetContrast.bind($data)}\\\"></span> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <div class=\\\"grid-cell-wrapper\\\"> <span data-bind=\\\"html: $data.ViewValue\\\"></span> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <div class=\\\"grid-cell-wrapper\\\"> <span data-bind=\\\"text: $data.ViewValue, css: {hyperlink: _isHyperLink}, click: $data.Click.bind($data)\\\" class=\\\"password\\\"></span> <!-- ko if: !$data.ViewValue && $data._isHyperLink --> <i data-bind=\\\"click: $data.Click.bind($data)\\\" class=\\\"fa fa-external-link\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: DocumentManager --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"noAccess\\\" title=\\\"Access denied\\\"><i class=\\\"fa fa-ban\\\" aria-hidden=\\\"true\\\"></i></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"tooltip: { content: $data.IsNotAbleSortMessage }, event: { mouseover: $data.HoverSort.bind($data), mouseout: $data.UnHoverSort.bind($data)}\\\"> <a data-bind=\\\"click: $data.MoveRowDown.bind($data), enableAttr: $data.IsAbleSort\\\" href=\\\"#\\\" class=\\\"btn btn-icon-only default sort\\\"> <i class=\\\"fa fa-arrow-down sort\\\" data-action=\\\"moveDown\\\"></i> </a> <a data-bind=\\\"click: $data.MoveRowUp.bind($data), enableAttr: $data.IsAbleSort\\\" href=\\\"#\\\" class=\\\"btn btn-icon-only default sort\\\"> <i class=\\\"fa fa-arrow-up sort\\\"></i> </a> <!-- ko if: HasSortDescription --> <a data-bind=\\\"click: $data.CreateOrRemoveDescription.bind($data), attr: { title: DescriptionTooltipContent}\\\" href=\\\"#\\\" class=\\\"btn btn-icon-only sort-description-btnContainer\\\"> <span class=\\\"fa-stack fa-lg sort-description-btnContainer-box\\\"> <i class=\\\"fa fa-file-text-o fa-stack-2x iconLarge\\\"></i> <i class=\\\"iconMini\\\"><span class=\\\"circleBtn\\\" data-bind=\\\"css: {'minus': _hasDescription}\\\"></span></i> </span> </a> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() && GetPhoneViewValue()--> <div class=\\\"intl-wrapper intl-wrapper--grid\\\"> <input data-bind=\\\"textInput: GetPhoneViewValue(),\\r\\n\\t\\t\\t\\t\\t\\t\\t intlTelInput: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tautoPlaceholder: 'off',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tutilsScript: 'intlTelInput-utils',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tseparateDialCode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thiddenInput: 'full_phone',\\r\\n\\t\\t\\t\\t\\t\\t \\t\\t\\tinitialCountry: _globalCountry\\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 attr: {'value': GetPhoneViewValue()}\\\" readonly=\\\"readonly\\\" disabled=\\\"disabled\\\" type=\\\"phone\\\" class=\\\"grid-phone-input\\\" rows=\\\"1\\\"/> <a class=\\\"hyperlink\\\" data-bind=\\\"text: GetPhoneViewValue(),\\r\\n attr: {href: 'tel:' + GetPhoneViewValue()}\\\"></a> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"grid-cell-wrapper relation-type-cell-wrapper\\\"> <!-- ko if: _showClusteredArrow --> <!-- ko if: Model.Details.length > 0 --> <i class=\\\"fa transition fa-edit relation-type-icon\\\" data-bind=\\\"visible: $data.ShowEditRelationTypeButton, click: $data.ShowNextRelationTypeScreen.bind($data, true), class: _pivotDetailsDropDown._id\\\"></i> <!-- /ko --> <!-- ko if: RelationType.HasNext --> <!-- ko if: Model.Details.length === 1 --> <i class=\\\"fa fa-arrow-right relation-type-icon\\\" data-bind=\\\"visible: $data.ShowNextRelationTypeButton, click: SelectNextRelationType\\\"></i> <!-- /ko --> <!-- ko if: Model.Details.length > 1 --> <i class=\\\"fa fa-arrow-right relation-type-icon\\\" data-bind=\\\"visible: $data.ShowNextRelationTypeButton, click: ShowNextRelationTypeScreen.bind($data, false), class: _pivotDetailsDropDown._id\\\"></i> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: RelationType.HasNext --> <i data-bind=\\\"visible: $data.ShowNextRelationTypeButton\\\" class=\\\"fa fa-arrow-right relation-type-icon disabled\\\"></i> <!-- /ko --> <!-- /ko --> <span class=\\\"relation-type-viewvalue\\\" data-bind=\\\"text: $data.GetViewValue(), attr: { title: $data.Title }\\\"></span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <!-- ko with: _formatManager --> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <!-- ko if: $data.ViewValue --> <div class=\\\"grid-cell-wrapper\\\"> <span class=\\\"hyperlink\\\" data-bind=\\\"text: $data.GetViewValue(),\\r\\n\\t\\t\\t\\t\\t \\tclick: $data.Click.bind($data),\\r\\n\\t\\t\\t\\t\\t \\tattr: {'title': $data._notifications.GRID_CELL_HYPERLINK_TOOLTIP}\\\"> </span> </div> <!-- /ko --> <!-- ko if: !$data.ViewValue --> <i data-bind=\\\"click: $data.Click.bind($data)\\\" class=\\\"fa fa-external-link\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <div class=\\\"grid-cell-wrapper marker\\\"> <!--ko if: _icon() && !_icon().Image--> <i data-bind=\\\"css: GetIconClasses(_icon().FontName, _icon().Name), attr: { title: _currencyValue.Currency.IsoCode }\\\"></i> <!--/ko--> <!-- ko if: _icon() && _icon().Image--> <img class=\\\"img-responsive image-centered image-icon-xs\\\" data-bind=\\\"attr: {src: _icon().Image, title: _currencyValue.Currency.IsoCode }\\\"> <!-- /ko --> <span data-bind=\\\"text: $data.GetViewValue(), click: $data.Click.bind($data), attr: { title: Title }, tooltip: { content: GetRateTitle() }\\\"></span> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: _isEditMode() --> <!--ko if: !Model.Spim || !Model.Spim.FeatureTypeIsSet || Model.Spim.IsAlphaNumeric || Model.Spim.IsNumeric || Model.Spim.IsRange--> <div class=\\\"grid-cell-wrapper\\\"> <span data-bind=\\\"text: DisplayValue\\\"></span> </div> <!-- /ko --> <!--ko if: Model.Spim && Model.Spim.IsLogic--> <div class=\\\"grid-cell-wrapper\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"uniform: Model.Spim.LogicalValue\\\" disabled=\\\"disabled\\\"> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div></div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\nimport * as $ from \"jquery\";\r\n\r\nimport {FlagResolver} from \"Core/Common/FlagResolver\";\r\nimport {FieldFlags} from \"Core/Common/Enums/FieldFlags\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\n\r\nimport {\r\n ConvertedCurrencyModel,\r\n CurrencyValueModel,\r\n GridCellValueModel,\r\n RelationTypeModel, SpimValueModel\r\n} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport {\r\n FieldMetadataModel,\r\n extractLookupValFieldMetadata\r\n} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {\r\n FIELD_TYPE_TO_CONTROL,\r\n FIELD_TYPES,\r\n LABEL_POSITIONS,\r\n CONTROL_TYPES,\r\n FONT_NAME\r\n} from 'Core/Constant';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {ReferenceModel} from 'Core/ScreenManager/Models/ReferenceModel';\r\nimport {RenderModes, SYSTEM_FIELD_NAMES} from 'Core/Constant';\r\nimport {DISPLAY_PRIORITY_TO_CSS} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\nimport {DocumentManager} from 'Core/Components/Controls/DocumentManager/DocumentManager';\r\nimport {DocumentDataModel} from 'Core/Controls/Document/DocumentDataModel';\r\nimport {EVENTS as DOCUMENT_MANAGER_EVENTS} from 'Core/Components/Controls/DocumentManager/Events';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {NOTIFICATIONS, LABELS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {FormatManager, FormatsEnum} from 'Core/Components/FormatManager/FormatManager';\r\nimport {IForm} from \"Core/Screens/IScreen\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {Dropdown} from \"Core/Controls/Dropdown/Dropdown\";\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {EntityTypes} from \"../Enums/EntityTypes\";\r\nimport {SortOrder} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {IntlTelInputExtention} from \"Core/KnockoutExtentions/IntlTelInputExtention\";\r\nimport {MultiSelect} from 'Core/Controls/MultiSelect/MultiSelect';\r\nimport {EVENTS as QUERY_RESULT_GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {GridStore} from \"Core/Controls/Grid/Stores/GridStore\";\r\nimport {MemoValueModal} from \"Core/Controls/Grid/BaseGrid/GridCell/MemoValueModal\";\r\nimport {Util} from \"QueryBuilder/Util\";\r\nimport {PivotDetailsDropdown} from \"Core/Controls/Grid/BaseGrid/PivotDetaillsDropdown/PivotDetailsDropdown\";\r\nimport {GridRowModel} from \"Core/Controls/Grid/Models/GridDataModel/GridRowModel\";\r\nimport {ITooltipConfig} from \"Core/KnockoutExtentions/TooltipExtention\";\r\nimport {FieldDataModel} from \"Core/Screens/Common/LinkEditor/Models/DataModel\";\r\nimport {CONTROL_TYPES_LINK} from 'Core/Controls/Text/Constants';\r\nimport {ColorConverter} from \"Core/Components/ColorSelector/ColorConverter\";\r\nimport {FieldFormat, FORMATS} from \"Core/Common/FieldFormat\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport 'Core/Controls/Grid/BaseGrid/GridCell/DataCellTemplates';\r\nimport { MailStore } from 'Core/Controls/Mail/Stores/MailStore'\r\nimport { MailTabModel } from 'Core/Controls/Mail/Models/MailTabModel'\r\nimport {\r\n FormatManagerStore,\r\n ICreateEmlMessageRequestModel\r\n} from 'Core/Components/FormatManager/Stores/FormatManagerStore';\r\nimport { ComposeMail } from 'Core/Controls/Mail/ComposeMail';\r\nimport { JBoxDropDown } from 'Core/Components/JBoxDropdown/DropDown';\r\nimport { QueryColumnModel } from '../../Models/GridDataModel/QueryExpression/QueryColumnModel';\r\n\r\n(moment as any).createFromInputFallback = config => {\r\n config._d = new Date(config._i);\r\n};\r\n\r\nexport interface IDataCellParams {\r\n Model: GridCellValueModel,\r\n ScreenType: string,\r\n MaxRowHeight: string,\r\n IsNewRecord: boolean,\r\n Form: IForm,\r\n QueryExpression: QueryExpressionModel\r\n}\r\n\r\nexport class DataCell extends Event {\r\n private _model: GridCellValueModel;\r\n private _isEnableEdit: KnockoutObservable<boolean>;\r\n private _isHyperLink: boolean;\r\n private _valueChanged: KnockoutObservable<boolean>;\r\n private _editValue: KnockoutObservable<string>;\r\n private _isEditMode: KnockoutObservable<boolean>;\r\n private _editor: KnockoutObservable<IControl>;\r\n private _size: KnockoutObservable<any>;\r\n private _height: KnockoutObservable<number>;\r\n private _documentManager: DocumentManager;\r\n private _screenType: string;\r\n private _maxRowHeight: string;\r\n private _isNewRecord: boolean;\r\n private _formatManager: FormatManager;\r\n private _notifications: NOTIFICATIONS;\r\n private _valueExists: KnockoutObservable<boolean>;\r\n private _form: IForm;\r\n private _reference: KnockoutObservable<ReferenceModel>;\r\n private _referenceIcon: KnockoutObservable<Icon>;\r\n private _referenceEntityName: KnockoutObservable<string>;\r\n private _viewValue: KnockoutObservable<string>;\r\n private _showClusteredArrow: boolean;\r\n private _queryExpression: QueryExpressionModel;\r\n private _globalCountry: string;\r\n private GetTemplateName: KnockoutComputed<string>;\r\n private _icon: KnockoutObservable<Icon>;\r\n private _pivotDetailsDropDown: PivotDetailsDropdown;\r\n private _currencyValue: CurrencyValueModel;\r\n private _showOriginalMemoButton: KnockoutObservable<boolean>;\r\n private _recordNotFound: KnockoutObservable<boolean>;\r\n private Tooltip: KnockoutObservable<ITooltipConfig>;\r\n private _el: HTMLElement;\r\n private _mails: KnockoutObservableArray<MailTabModel>;\r\n private _hasMails: KnockoutComputed<boolean>;\r\n private _showMails: KnockoutComputed<boolean>;\r\n private _dropDown: JBoxDropDown;\r\n private _id: string;\r\n private _labels: LABELS;\r\n private _hasDescription: boolean;\r\n\r\n constructor(params: IDataCellParams) {\r\n super();\r\n this._showClusteredArrow = params.QueryExpression.IsCrossTable;\r\n this._queryExpression = params.QueryExpression;\r\n this._screenType = params.ScreenType;\r\n this._isNewRecord = params.IsNewRecord;\r\n this._isHyperLink = params.Model.IsHyperLink;\r\n this._model = params.Model;\r\n this._isEditMode = ko.observable(false).extend({ rateLimit: 1 });\r\n this._valueChanged = ko.observable(false);\r\n this._editValue = ko.observable('');\r\n this._editor = ko.observable(null);\r\n this._size = ko.observable({width: '500px', height: '0px'});\r\n this._height = ko.observable(0);\r\n this.InitEvents();\r\n this._model.MaxRowHeight = params.MaxRowHeight;\r\n this._maxRowHeight = params.MaxRowHeight;\r\n this._formatManager = null;\r\n this._notifications = NOTIFICATIONS;\r\n this._valueExists = ko.observable(Boolean(this._model.TranslatedValue || this._model.DisplayValue));\r\n this._form = params.Form;\r\n this._referenceIcon = ko.observable(null);\r\n this._referenceEntityName = ko.observable(null);\r\n this._viewValue = ko.observable(null);\r\n this._icon = ko.observable(null);\r\n this._pivotDetailsDropDown = new PivotDetailsDropdown();\r\n this._showOriginalMemoButton = ko.observable(!this._isNewRecord);\r\n this._recordNotFound = ko.observable(false);\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this._labels = LABELS;\r\n this._hasDescription = params.Model.HasDescription;\r\n\r\n if(this.Model.FieldMetadata){\r\n this.Tooltip = ko.observable<ITooltipConfig>({\r\n content: this.TooltipContent(_.escape(this.TranslateValue), this.Model.FieldMetadata.Type.toString(), this.Model.FieldMetadata.FormatName.toString()),\r\n position: { x: 'right', y: 'center' },\r\n outside: 'x',\r\n addClass: 'ellipsis-tooltip'\r\n });\r\n }\r\n\r\n if (this._model.FieldMetadata && this._model.FieldMetadata.FormatName === FieldFormat.MAIL) {\r\n this.ApplyMailProperties();\r\n }\r\n\r\n this._pivotDetailsDropDown.On(EVENTS.REFRESH, this, () => {\r\n this.Trigger(EVENTS.REFRESH);\r\n });\r\n\r\n this._pivotDetailsDropDown.On(EVENTS.EDIT_CLUSTERED_LINK, this, (eventArgs) => {\r\n this.Trigger(EVENTS.EDIT_CLUSTERED_LINK, { gridRow: eventArgs.data.gridRow, grid: eventArgs.data.grid });\r\n });\r\n\r\n this._pivotDetailsDropDown.On(QUERY_RESULT_GRID_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.SelectedRecord.Model) {\r\n let row = eventArgs.data.SelectedRecord.Model as GridRowModel;\r\n let clusteredCell = _.last(row.Data);\r\n\r\n this._pivotDetailsDropDown.Close();\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.LINK_RECORD_WITH_NEXT_RELATION_TYPE,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.Trigger(EVENTS.LINK_NEXT_RELATION, { field: clusteredCell});\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n });\r\n\r\n if (this._model.Type === FIELD_TYPES.Reference) {\r\n this.SetReferenceData(this._model.Reference);\r\n }\r\n\r\n if (this._model.Type === FIELD_TYPES.Spim && (!this._model.Spim || !this._model.Spim.FeatureTypeIsSet)) {\r\n this._model.IsEnableEdit = false;\r\n }\r\n\r\n this._isEditMode.subscribe(async (editMode: boolean) => {\r\n if (editMode) {\r\n let editor = await this.GetDataEditor();\r\n this._editor(editor);\r\n\r\n if (editor && editor.GetType() === CONTROL_TYPES.Memo) {\r\n\r\n if (this._isNewRecord) {\r\n this._editValue(this._model.Value);\r\n const controlDataModel = new ControlDataModel();\r\n controlDataModel.Value = this._model.Value;\r\n controlDataModel.DisplayValue = this._model.OriginalDisplayValue;\r\n controlDataModel.Translations = this._model.Translations;\r\n editor.SetValue({\r\n SubjectEntityId: null,\r\n SubjectRecordId: -1,\r\n Data: controlDataModel,\r\n RecordSpecsModel: null\r\n });\r\n } else {\r\n GridStore.GetMemoValue(\r\n {\r\n EntityId: this.Model.EntityMetadata.Id,\r\n FieldId: this.Model.FieldMetadata.Id,\r\n RecordKeys: this.Model.RecordKeys\r\n }).then((data) => {\r\n this._editValue(data.Value);\r\n const controlDataModel = new ControlDataModel();\r\n controlDataModel.Value = data.Value;\r\n controlDataModel.DisplayValue = data.DisplayValue;\r\n controlDataModel.Translations = data.Translations;\r\n editor.SetValue({\r\n SubjectEntityId: null,\r\n SubjectRecordId: -1,\r\n Data: controlDataModel,\r\n RecordSpecsModel: null\r\n });\r\n });\r\n }\r\n\r\n } else {\r\n this._editValue(this._model.Value);\r\n const controlDataModel = new ControlDataModel();\r\n controlDataModel.Value = this._model.Currency || this._model.Spim || this._model.Value;\r\n controlDataModel.DisplayValue = this._model.OriginalDisplayValue;\r\n controlDataModel.Translations = this._model.Translations;\r\n editor.SetValue({\r\n SubjectEntityId: null,\r\n SubjectRecordId: -1,\r\n Data: controlDataModel,\r\n RecordSpecsModel: null\r\n });\r\n }\r\n\r\n if (this._editor() && this._editor().GetType() === CONTROL_TYPES.Memo) {\r\n this._editor().On('AFTER_RENDER',\r\n this,\r\n (eventArgs: any) => {\r\n this._height($(this._editor().GetWrapper()).height());\r\n });\r\n }\r\n\r\n if (this._editor() && this._editor().GetType() === CONTROL_TYPES.Dropdown) {\r\n this._editor().On(EVENTS.DROPDOWN_VALUE_SELECTED,\r\n this,\r\n (eventArgs: any) => {\r\n const editor = this._editor() as Dropdown;\r\n const fieldId = editor.GetFieldModel().Id;\r\n this.Trigger(EVENTS.DROPDOWN_VALUE_SELECTED, {\r\n recordId: eventArgs.data.recordId,\r\n fieldId: fieldId\r\n });\r\n });\r\n }\r\n\r\n }\r\n });\r\n\r\n _.each(this._model.Details, (detail) => {\r\n detail.FieldMetadata = this._model.FieldMetadata;\r\n detail.EntityMetadata = this._model.EntityMetadata;\r\n });\r\n\r\n this.InitPhoneCountry();\r\n this.Init();\r\n }\r\n\r\n private InitEvents(){\r\n this.AddEvent(EVENTS.REFRESH);\r\n this.AddEvent(EVENTS.LINK_NEXT_RELATION);\r\n this.AddEvent(EVENTS.DROPDOWN_VALUE_SELECTED);\r\n this.AddEvent(EVENTS.MOVE_ROW_DOWN);\r\n this.AddEvent(EVENTS.MOVE_ROW_UP);\r\n this.AddEvent(EVENTS.HOVER_SORT);\r\n this.AddEvent(EVENTS.UN_HOVER_SORT);\r\n this.AddEvent(EVENTS.SHOW_ORIGINAL_IMAGE);\r\n this.AddEvent(EVENTS.EDIT_CLUSTERED_LINK);\r\n this.AddEvent(EVENTS.PRINT_LABEL);\r\n this.AddEvent(EVENTS.SAVE_RECORD);\r\n this.AddEvent(EVENTS.CREATE_OR_DELETE_SORT_DESCRIPTION);\r\n }\r\n\r\n private InitPhoneCountry() {\r\n const global = GlobalManager.Instance.GetGlobal(GLOBALS.DEFAULT_COUNTRY_CODE).toLowerCase();\r\n if (IntlTelInputExtention.IsCountryValid(global)) {\r\n this._globalCountry = global;\r\n } else {\r\n this._globalCountry = 'nl';\r\n }\r\n }\r\n\r\n private SetReferenceData(reference) {\r\n this._reference = ko.observable(reference);\r\n if (this._reference()) {\r\n const entityRecord = this._reference().SelectedEntityRecord;\r\n const referenceTable = this._reference().ReferenceTable;\r\n\r\n if (entityRecord && !entityRecord.SelectedEntity) {\r\n this.SetInvalidIcon();\r\n this.ViewValue = NOTIFICATIONS.TABLE_NOT_FOUND;\r\n return;\r\n } else if (entityRecord && !entityRecord.SelectedRecord) {\r\n this.SetInvalidIcon();\r\n this.ViewValue = NOTIFICATIONS.RECORD_NOT_FOUND;\r\n this._recordNotFound = ko.observable(true);\r\n return;\r\n } else {\r\n this.ViewValue = reference.TranslatedName || reference.Name;\r\n\r\n if (referenceTable && referenceTable.IsValid) {\r\n this.SetInvalidIcon();\r\n this.ViewValue = LABELS.NO_RECORD;\r\n return;\r\n }\r\n\r\n if (referenceTable && !referenceTable.IsValid) {\r\n this.SetInvalidIcon();\r\n this.ViewValue = NOTIFICATIONS.INVALID_REFERENCE_TABLE;\r\n return;\r\n }\r\n\r\n if (entityRecord && entityRecord.IsValid) {\r\n const icon = entityRecord.SelectedEntity.Icon;\r\n if (icon) {\r\n this._referenceIcon(new Icon(icon));\r\n }\r\n\r\n const memo = entityRecord.SelectedRecord.MemoTranslation || entityRecord.SelectedRecord.Memo;\r\n const entityName = entityRecord.SelectedEntity.Translation || entityRecord.SelectedEntity.Name;\r\n this.ViewValue = entityName;\r\n this._referenceEntityName(entityName);\r\n\r\n if (entityRecord.SelectedRecord.Name) {\r\n this.ViewValue = entityRecord.SelectedRecord.Name;\r\n } else {\r\n this._referenceIcon(null);\r\n this.ViewValue = null;\r\n }\r\n }\r\n }\r\n } else {\r\n this.ViewValue = NOTIFICATIONS.REFERENCE_TABLE_NOT_SET;\r\n this.SetInvalidIcon();\r\n }\r\n }\r\n\r\n private get IsAbleSort(): boolean {\r\n return this.Model.SortDirection !== SortOrder.Both && (this._screenType === ScreenTypes[ScreenTypes.ConsultScreen] || this._screenType === ScreenTypes[ScreenTypes.EditScreen]);\r\n }\r\n\r\n private get IsNotAbleSortMessage(): string {\r\n if (this._screenType !== ScreenTypes[ScreenTypes.ConsultScreen] && this._screenType !== ScreenTypes[ScreenTypes.EditScreen]) {\r\n return NOTIFICATIONS.NOT_APPLICABLE_FOR_LIST_SCREEN;\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.ConsultScreen] || this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n if (this.Model.SortDirection === SortOrder.Both) {\r\n return NOTIFICATIONS.SORT_BY_COLUMN_TO_ENABLE_SORTING;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private SetInvalidIcon() {\r\n let iconModel = new IconModel();\r\n iconModel.IsImage = false;\r\n iconModel.IsIcon = true;\r\n iconModel.FontName = FONT_NAME.FONT_AWESOME;\r\n iconModel.Name = 'fa-times';\r\n\r\n this._referenceIcon(new Icon(iconModel));\r\n }\r\n\r\n private SetLinkIcon() {\r\n let iconModel = new IconModel();\r\n iconModel.IsImage = false;\r\n iconModel.IsIcon = true;\r\n iconModel.FontName = FONT_NAME.FONT_AWESOME;\r\n iconModel.Name = 'fa-external-link';\r\n\r\n this._referenceIcon(new Icon(iconModel));\r\n }\r\n\r\n async GetDataEditor(): Promise<IControl> {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.FormatName = this._model.FieldMetadata.FormatName;\r\n attachedFieldModel.Id = this._model.FieldMetadata.Id;\r\n attachedFieldModel.Name = this._model.FieldMetadata.Name;\r\n attachedFieldModel.AllowCustomValue = this._model.FieldMetadata.AllowCustomValue;\r\n attachedFieldModel.AllowCreatingRecords = this._model.FieldMetadata.AllowCreatingRecords;\r\n attachedFieldModel.EntityId = this._model.EntityMetadata.Id;\r\n attachedFieldModel.ValTableId = this._model.FieldMetadata.ValTableId;\r\n attachedFieldModel.ValTableName = this._model.FieldMetadata.ValTableName;\r\n attachedFieldModel.IsReadOnly = this._model.FieldMetadata.IsReadOnly;\r\n attachedFieldModel.IsRequired = this._model.FieldMetadata.IsRequired;\r\n\t\tattachedFieldModel.IsSystem = this.IsFieldSystem();\r\n attachedFieldModel.FieldTypeName = this._model.FieldMetadata.Type;\r\n attachedFieldModel.Size = this._model.FieldMetadata.Size;\r\n attachedFieldModel.AllowInsert = this.IsInsertAllowed();\r\n attachedFieldModel.ValTableType = this._model.FieldMetadata.ValTableType;\r\n attachedFieldModel.ValFieldId = this._model.FieldMetadata.ValFieldId;\r\n\r\n const validationFieldMetadata = extractLookupValFieldMetadata(this._model.FieldMetadata);\r\n if (validationFieldMetadata) {\r\n attachedFieldModel.ValFieldTypeName = validationFieldMetadata.Type;\r\n attachedFieldModel.ValFieldFormatName = validationFieldMetadata.FormatName;\r\n attachedFieldModel.ValFieldSize = validationFieldMetadata.Size;\r\n }\r\n\r\n const controlModel = new ControlModel();\r\n\t\tcontrolModel.IsReadOnly = this.IsControlReadOnly();\r\n controlModel.IsRequired = this._model.FieldMetadata.IsRequired;\r\n controlModel.LabelPosition = LABEL_POSITIONS.NoLabel;\r\n controlModel.TypeName = FIELD_TYPE_TO_CONTROL[this._model.FieldMetadata.Type];\r\n controlModel.Fields.push(attachedFieldModel);\r\n controlModel.FieldFlag = this._model.Flags;\r\n\r\n let renderMode = RenderModes.Edit;\r\n if( attachedFieldModel.Name === SYSTEM_FIELD_NAMES.F_TYPE && this._model.Value !== '0' && this._model.Value){\r\n renderMode = RenderModes.View;\r\n }\r\n const params: IControlParam = {\r\n Model: controlModel,\r\n Form: this._form,\r\n RenderMode: renderMode\r\n };\r\n\r\n const controlFactory = (await import('Core/Controls/ControlFactory')).ControlFactory;\r\n const control = controlFactory.CreateControl(params);\r\n\r\n\r\n if(controlModel.TypeName === CONTROL_TYPES.Dropdown && this._model.RecordKeys.length === 0){\r\n (control as Dropdown).AutoSelectIfOneRecord = true;\r\n }\r\n\r\n return control as IControl;\r\n }\r\n\r\n IsDataChanged() {\r\n if (this._isEnableEdit()) {\r\n if (this._editor && this._editor().IsModified()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n IsDataValid() {\r\n if (this._isEnableEdit()) {\r\n if (this._editor()) {\r\n if (!this._editor().IsValid()) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n GetContrast() {\r\n return ColorConverter.GetContrast(this.ViewValue);\r\n }\r\n\r\n IsEnableEdit(): boolean {\r\n return this._model.IsEnableEdit;\r\n }\r\n\r\n IsReadOnly() {\r\n if (this._isEnableEdit()) {\r\n if (this._editor()) {\r\n return this._editor().GetIsReadOnly();\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private IsControlReadOnly() {\r\n\t\tif ((this._model.FieldMetadata.Name === SYSTEM_FIELD_NAMES.F_TYPE || this._model.FieldMetadata.Name === SYSTEM_FIELD_NAMES.F_KIND)\r\n\t\t\t&& (this._isNewRecord || this.Value === \"0\")) {\r\n\t\t return false;\r\n\t\t}\r\n\r\n\t\treturn this._model.FieldMetadata.IsReadOnly || this._model.FieldMetadata.IsSystem;\r\n }\r\n\r\n private IsFieldSystem() {\r\n\t\tif ((this._model.FieldMetadata.Name === SYSTEM_FIELD_NAMES.F_TYPE || this._model.FieldMetadata.Name === SYSTEM_FIELD_NAMES.F_KIND)\r\n\t\t\t&& (this._isNewRecord || this.Value === \"0\")) {\r\n\t\t return false;\r\n\t\t}\r\n\r\n\t return this._model.FieldMetadata.IsSystem;\r\n }\r\n\r\n\tprivate IsInsertAllowed() {\r\n\t\tif (this._model.FieldMetadata.Name === SYSTEM_FIELD_NAMES.F_TYPE ||\r\n\t\t\tthis._model.FieldMetadata.Name === SYSTEM_FIELD_NAMES.F_KIND) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._model.FieldMetadata.AllowInsert;\r\n\t}\r\n\r\n private ApplyMailProperties() {\r\n this._mails = ko.observableArray<MailTabModel>();\r\n this._hasMails = ko.computed(() => {\r\n return this._mails().length > 0;\r\n }, this);\r\n this._showMails = ko.computed(() => {\r\n return this._mails().length > 1;\r\n }, this);\r\n }\r\n\r\n private LoadTabs() {\r\n let TryOpenComposer = () => {\r\n if (!this._showMails()) {\r\n this.MailClick(this._mails()[0]);\r\n } else {\r\n this.OpenDropDown()\r\n }\r\n };\r\n\r\n if (this._hasMails()) {\r\n TryOpenComposer();\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n MailStore.GetMailTabs()\r\n .then((tabs: any) => {\r\n //not issue something wrong with model\r\n _.map(tabs, (tab: any) => {\r\n let mail = new MailTabModel();\r\n mail.Login = tab.Login;\r\n mail.MailConnectionId = tab.MailConnectionId;\r\n mail.Client = tab.Client;\r\n this._mails.push(mail);\r\n });\r\n\r\n if (!this._hasMails()) {\r\n new Notifier().Failed(NOTIFICATIONS.PLEASE_ADD_YOUR_EMAIL);\r\n } else {\r\n TryOpenComposer();\r\n }\r\n })\r\n .always(() => BlockUI.Unblock())\r\n .fail((err) => new Notifier().Failed(err.message));\r\n }\r\n\r\n private OpenDropDown() {\r\n this._dropDown = new JBoxDropDown({\r\n target: \".\" + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: true,\r\n addClass: \"mails-dropdown\",\r\n onCloseComplete: () => this._dropDown.Destroy()\r\n },\r\n onOpen: () => {\r\n this._dropDown.SetContent({ content: $(\".\" + this._id).next().data(\"jbox-content\") });\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n\r\n private MailClick(mail: MailTabModel) {\r\n if (!!this._model.Value) {\r\n if (mail.Client === 'Desktop') {\r\n this.OpenDesktopClient(mail);\r\n } else {\r\n this.OpenInternalClient(mail);\r\n }\r\n\r\n } else {\r\n new Notifier().Failed(NOTIFICATIONS.PLEASE_ADD_EMAIL);\r\n }\r\n }\r\n\r\n private OpenDesktopClient(mail: MailTabModel) {\r\n var requestModel: ICreateEmlMessageRequestModel = {\r\n FromAddress: mail.Login,\r\n ToAddresses: [this._model.Value]\r\n }\r\n BlockUI.Block();\r\n FormatManagerStore.CreateEmlMessage(requestModel).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n private OpenInternalClient(mail: MailTabModel) {\r\n let composeMail = new ComposeMail({ResponseMailItem: null});\r\n composeMail.AddMailWithRecord(this._model.Value, this._model.FieldMetadata.ValTableId, this._model.RecordKeys[0].RecordId);\r\n composeMail.ShowInModal(mail.MailConnectionId);\r\n }\r\n\r\n\r\n private Init() {\r\n\r\n if (this._model.Icon) {\r\n this._icon(new Icon(this._model.Icon));\r\n }\r\n\r\n this._isEnableEdit = ko.observable(this._model.IsEnableEdit);\r\n this.AddEvent(EVENTS.OPEN_HYPERLINK);\r\n\r\n if(this._model.FieldMetadata){\r\n const notEnabledMail = FormatsEnum[this._model.FieldMetadata.FormatName] === FormatsEnum.Mail && !this._model.IsEnableMail;\r\n\r\n if (FormatsEnum.GetFormat(this._model.FieldMetadata.FormatName) && !notEnabledMail) {\r\n this._formatManager = new FormatManager({\r\n Screen: this._form?.GetScreen(),\r\n Icon: this.GetIconName(),\r\n Value: this._model.Value,\r\n Format: this._model.FieldMetadata.FormatName,\r\n TableId: 0,\r\n RecordId: -1,\r\n IsGrid: true\r\n });\r\n }\r\n }\r\n\r\n this.TranslateData();\r\n this.InitTemplate();\r\n }\r\n\r\n set IsEditMode(value: boolean) {\r\n if (this._isEnableEdit()) {\r\n this._isEditMode(value);\r\n }\r\n }\r\n\r\n get IsEditMode(): boolean{\r\n return this._isEditMode();\r\n }\r\n\r\n get ViewValue(): string {\r\n return this._model.TranslatedValue || this._model.DisplayValue;\r\n }\r\n\r\n set ViewValue(value: string) {\r\n this._model.DisplayValue = value;\r\n this._viewValue(value);\r\n }\r\n\r\n get RecordNotFound(): boolean {\r\n return this._recordNotFound();\r\n }\r\n\r\n GetViewValue(): KnockoutObservable<string> {\r\n this._viewValue(this.ViewValue);\r\n let fieldModelTypeName = this._model.FieldMetadata.Type;\r\n if (\r\n !!this.ViewValue &&\r\n _.contains([FIELD_TYPES.Integer, FIELD_TYPES.Decimal, FIELD_TYPES.Currency], fieldModelTypeName)\r\n ) {\r\n this._viewValue(FormatConverter.LocalizeDecimalOrInteger(this.ViewValue));\r\n } else if (this.Value == null && fieldModelTypeName === FIELD_TYPES.Radio) {\r\n this._viewValue(LABELS.EMPTY_VALUE);\r\n }\r\n return this._viewValue;\r\n }\r\n\r\n get FormatName(){\r\n return !!this._viewValue() && this._model.FieldMetadata.FormatName;\r\n }\r\n\r\n GetPhoneViewValue() {\r\n\r\n if (this._model.Value) {\r\n let phone = this._model.Value;\r\n\r\n if (phone.indexOf('+') > -1) {\r\n phone = phone.replace('+', '');\r\n }\r\n\r\n if (phone.indexOf('(') > -1) {\r\n //only for old ua phones (can be removed in future)\r\n return '+' + phone.replace(/\\D/g, '');\r\n } else if (phone.indexOf('-') > -1) {\r\n return '+' + phone.replace('-', '');\r\n } else {\r\n return '+' + phone.replace(/\\D/g, '');\r\n }\r\n }\r\n\r\n return this._model.Value;\r\n }\r\n\r\n get EditValue(): any {\r\n return this._editor().GetValue();\r\n }\r\n\r\n get EntityId(): number {\r\n return this._model.EntityMetadata.Id;\r\n }\r\n\r\n get EntityTypeName(): string {\r\n return this._model.EntityMetadata.Type;\r\n }\r\n\r\n get FieldId(): number {\r\n return this._model.FieldMetadata.Id;\r\n }\r\n\r\n get QueryColumnGuid(): string {\r\n return this._model.QueryColumnGuid;\r\n }\r\n\r\n get Model(): GridCellValueModel {\r\n return this._model;\r\n }\r\n\r\n get Value(): string {\r\n return this._model.Value;\r\n }\r\n\r\n set Value(value: string) {\r\n this._model.Value = value;\r\n }\r\n\r\n get DisplayValue() {\r\n return this._model.DisplayValue;\r\n }\r\n\r\n get Translations() {\r\n return this._model.Translations;\r\n }\r\n\r\n get IsLocked(): boolean {\r\n return false;\r\n }\r\n\r\n get IsWrapped(): boolean {\r\n return this._model.IsWrapped;\r\n }\r\n\r\n get IsSortDescription(): boolean {\r\n return this._model.IsSortDescription;\r\n }\r\n\r\n get IsOrdinary(){\r\n return !this.IsWrapped && !this.IsSortDescription;\r\n }\r\n\r\n get IsGroup(): boolean {\r\n return this._model.IsGroup;\r\n }\r\n\r\n get RelationType(): RelationTypeModel {\r\n return this._model.RelationType;\r\n }\r\n\r\n get Title(): string {\r\n if (this._model.Details && this._model.Details.length > 0) {\r\n let details = [];\r\n _.each(this._model.Details, (item) => {\r\n details.push(item.DisplayValue);\r\n });\r\n return details.join(\", \");\r\n }\r\n\r\n if(this._model.HyperlinkRecordId > 0){\r\n return NOTIFICATIONS.GRID_CELL_HYPERLINK_TOOLTIP;\r\n }\r\n \r\n return null; \r\n }\r\n\r\n get TranslateValue(): string {\r\n if (this.IsTranslatable()) {\r\n const translation = TranslationManager.Instance.GetTranslation(this._model.DisplayValue, this._model.Translations);\r\n return translation.TranslatedValue || translation.Value;\r\n } else {\r\n return this._model.Value;\r\n }\r\n }\r\n\r\n ShowNextRelationTypeScreen(editLink: boolean = false) {\r\n let allEntities = Util.GetAllQueryEntities(this._queryExpression), target = event.target;\r\n let subjectEntityId = 0;\r\n _.each(allEntities, (item) => {\r\n let column = _.find(item.Columns, (column) => {\r\n return column.Guid === this._model.QueryColumnGuid;\r\n });\r\n if (column) {\r\n let parentEntity = Util.GetParentEntity(item, this._queryExpression);\r\n if (parentEntity) {\r\n subjectEntityId = parentEntity.Metadata.Id;\r\n }\r\n }\r\n });\r\n\r\n let recordKeys = [];\r\n _.each(this._model.Details, (item) => {\r\n recordKeys.push(item.RecordKeys);\r\n });\r\n\r\n BlockUI.Block();\r\n GridStore.GetDataByClusteredField({\r\n SubjectEntityId: subjectEntityId,\r\n FieldId: this._model.FieldMetadata.Id,\r\n RecordKeys: recordKeys,\r\n DisplayFields: this.QueryColumn.DisplayFields \r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((result) => {\r\n\r\n if(editLink && result.Data.Rows.length == 1){\r\n this._pivotDetailsDropDown.SetData(result, editLink);\r\n return;\r\n }\r\n\r\n this._pivotDetailsDropDown.Show(target);\r\n this._pivotDetailsDropDown.SetData(result, editLink);\r\n });\r\n }\r\n\r\n get QueryColumn(): QueryColumnModel{\r\n return _.find(Util.GetAllQueryColumns(this._queryExpression), (col) => col.Guid === this._model.QueryColumnGuid);\r\n }\r\n\r\n Click(_, evt) {\r\n if (this._isHyperLink) {\r\n var recordkey = this._model.RecordKeys[0];\r\n\r\n this.Trigger(EVENTS.OPEN_HYPERLINK, {\r\n EntityId: recordkey.EntityId,\r\n IsOpenAgenda: this._model.EntityMetadata.Name === 'AGENDA',\r\n\t\t\t\tRecordId: recordkey.RecordId,\r\n\t\t\t\tRecordTypeId: this._model.RecordTypeId,\r\n IsHyperlink: true,\r\n ViewValue: this._viewValue(),\r\n ShowInModal: evt.ctrlKey\r\n }); \r\n \r\n }\r\n\r\n if (this._model.HyperlinkRecordId > 0 && this._model.FieldMetadata.HyperlinkEntityId > 0) {\r\n this.NavigateByHyperlink(this._model.FieldMetadata.HyperlinkEntityId, this._model.HyperlinkRecordId, evt.ctrlKey);\r\n }\r\n }\r\n\r\n NavigateByHyperlink(entityId: number, recordId: number, showInModal: boolean){\r\n BlockUI.Block();\r\n GridStore.IsRecordValid({ TableId: entityId, RecordId : recordId })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n })\r\n .then((result)=>{\r\n if(result){\r\n this.Trigger(EVENTS.OPEN_HYPERLINK, {\r\n EntityId: this._model.FieldMetadata.HyperlinkEntityId,\r\n IsOpenAgenda: this._model.EntityMetadata.Name === 'AGENDA',\r\n RecordId: this._model.HyperlinkRecordId,\r\n IsHyperlink: true,\r\n ViewValue: this._viewValue(),\r\n ShowInModal: showInModal\r\n }); \r\n }else{\r\n new Notifier().Failed(NOTIFICATIONS.INVALID_RECORD_ID);\r\n }\r\n }).fail(err=>{\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n IsNoAccessCell() {\r\n var isNoAccess = (_.filter(this._model.RecordKeys, (key) => {\r\n return key.RecordId !== 0;\r\n }).length === 0 && (this._model.Value === null || this._model.Value === undefined)) && !this._isNewRecord;\r\n\r\n if (isNoAccess && (this._model.IsCrossValue || this._model.IsCrossRow)) {\r\n isNoAccess = false;\r\n }\r\n\r\n return isNoAccess;\r\n }\r\n\r\n InitTemplate() {\r\n this.GetTemplateName = ko.computed(()=>{\r\n if(!this._model.Type){\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Empty';\r\n }\r\n\r\n if (this.IsNoAccessCell() && (this._model.Type !== FIELD_TYPES.Document)) {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/NoAccess';\r\n }\r\n\r\n if (this._model.Details.length > 0 && this._model.FieldMetadata.IsClustered) {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Clustered';\r\n }\r\n\r\n switch (this._model.Type) {\r\n case FIELD_TYPES.Currency:\r\n this.PrepareCurrency();\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Currency';\r\n case FIELD_TYPES.Spim:\r\n this.PrepareSpim();\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Spim';\r\n case FIELD_TYPES.Sort:\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Sort';\r\n case FIELD_TYPES.Reference:\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Reference';\r\n case FIELD_TYPES.Image:\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Image';\r\n case FIELD_TYPES.YesNo:\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/YesNo';\r\n case FIELD_TYPES.Memo:\r\n this.PrepareMemo();\r\n\r\n if(this._model.IsSortDescription){\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/SortDescription';\r\n }else{\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Memo';\r\n }\r\n \r\n case FIELD_TYPES.Color:\r\n this.PrepareColor();\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Color';\r\n case FIELD_TYPES.Password:\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Password';\r\n case FIELD_TYPES.Document:\r\n this.PrepareDocument();\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Document';\r\n case FIELD_TYPES.Date:\r\n case FIELD_TYPES.DateTime:\r\n case FIELD_TYPES.Time:\r\n this.PrepareTime();\r\n break;\r\n case FIELD_TYPES.TimeSpan:\r\n this.PrepareTimeSpan();\r\n break;\r\n case FIELD_TYPES.MultiSelect:\r\n this.PrepareMultiSelect();\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/MultiSelect';\r\n case FIELD_TYPES.Decimal:\r\n case FIELD_TYPES.Integer:\r\n this.PrepareDecimalOrInteger({ value: this._model.Value, fieldMetadata: this._model.FieldMetadata });\r\n break;\r\n }\r\n\r\n const validationFieldMetadata = extractLookupValFieldMetadata(this._model.FieldMetadata);\r\n\r\n if (\r\n validationFieldMetadata &&\r\n _.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], validationFieldMetadata.Type)\r\n ) {\r\n this.PrepareDecimalOrInteger({\r\n value: this._model.OriginalDisplayValue,\r\n fieldMetadata: validationFieldMetadata,\r\n localize: true\r\n });\r\n }\r\n\r\n if (this._model.FieldMetadata.FormatName === FORMATS.PHONE_NUMBER) {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/PhoneNumber';\r\n }\r\n\r\n if (this._formatManager) {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Format';\r\n }\r\n\r\n if (this._isHyperLink) {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/HyperLink';\r\n }\r\n\r\n return this._isEditMode() ? 'Core/Controls/Grid/BaseGrid/GridCell/Templates/GeneralEdit' : 'Core/Controls/Grid/BaseGrid/GridCell/Templates/General';\r\n })\r\n }\r\n\r\n private PrepareDecimalOrInteger({\r\n value,\r\n fieldMetadata,\r\n localize\r\n }: {\r\n value: string;\r\n fieldMetadata: FieldMetadataModel;\r\n localize?: boolean;\r\n }) {\r\n if (value) {\r\n const valueForDisplay =\r\n fieldMetadata.FormatName === 'Percentage'\r\n ? (Number(value) * 100).toFixed(fieldMetadata.Size < 2 ? 0 : fieldMetadata.Size - 2)\r\n : value;\r\n\r\n this._model.DisplayValue = localize\r\n ? FormatConverter.LocalizeDecimalOrInteger(valueForDisplay)\r\n : valueForDisplay;\r\n }\r\n }\r\n\r\n private PrepareMultiSelect() {\r\n let result = '';\r\n\r\n if (this._model.DisplayValue) {\r\n const validationFieldMetadata = extractLookupValFieldMetadata(this._model.FieldMetadata);\r\n\r\n if (\r\n validationFieldMetadata &&\r\n _.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], validationFieldMetadata.Type)\r\n ) {\r\n const splitValues = this._model.DisplayValue.split(',\\\\n ');\r\n\r\n const formattedValues = splitValues.map(singleValue => FormatConverter.LocalizeDecimalOrInteger(\r\n validationFieldMetadata.FormatName === FieldFormat.PERCENTAGE\r\n ? (Number(singleValue) * 100).toFixed(validationFieldMetadata.Size < 2 ? 0 : validationFieldMetadata.Size - 2)\r\n : singleValue\r\n ));\r\n\r\n result = formattedValues.join(', ');\r\n } else {\r\n result = this._model.DisplayValue.replace(/\\\\n/g, '');\r\n }\r\n }\r\n\r\n this._model.DisplayValue = result;\r\n }\r\n\r\n private PrepareTimeSpan() {\r\n let datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(this._model.FieldMetadata, true);\r\n this._model.DisplayValue = FormatConverter.ConvertFromDefaultFormat(this._model.DisplayValue, datetimeFormat);\r\n }\r\n\r\n private PrepareTime() {\r\n this._model.DisplayValue = this._model.Value;\r\n\r\n if(this._model.Type !== FIELD_TYPES.Date){\r\n this._model.DisplayValue = FormatConverter.CorrectTimezone(this._model.DisplayValue);\r\n } \r\n\r\n let datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(this._model.FieldMetadata, true);\r\n\r\n this._model.DisplayValue = FormatConverter.ConvertFromDefaultFormat(this._model.DisplayValue, datetimeFormat);\r\n }\r\n\r\n private PrepareMemo() {\r\n this._model.DisplayValue = _.isEmpty(this._model.DisplayValue) ? null : this._model.DisplayValue.replace(/\\n/g, '');\r\n this._model.TranslatedValue = _.isEmpty(this._model.TranslatedValue) ? null : this._model.TranslatedValue.replace(/\\n/g, '');\r\n }\r\n\r\n private PrepareColor() {\r\n this._model.DisplayValue = ColorConverter.ToHex(this._model.DisplayValue);\r\n }\r\n\r\n private PrepareCurrency() {\r\n if (this._model.Currency) {\r\n this._currencyValue = this._model.Currency.Converted ? this._model.Currency.Converted : this._model.Currency.Origin;\r\n this._model.DisplayValue = this._currencyValue.Value.toFixed(this._model.FieldMetadata.Size);\r\n\r\n if (this._currencyValue.Currency && this._currencyValue.Currency.Icon) {\r\n this._icon(new Icon(this._currencyValue.Currency.Icon));\r\n } else {\r\n this._model.DisplayValue = LABELS.INVALID_FIELD_DATA;\r\n }\r\n }\r\n }\r\n\r\n private PrepareSpim() {\r\n if (!this._model.Spim || !this._model.Spim.FeatureTypeIsSet) {\r\n this._model.DisplayValue = LABELS.FEATURE_TYPE_IS_NOT_SET;\r\n return;\r\n }\r\n\r\n if (this._model.Spim.IsAlphaNumeric) {\r\n this._model.DisplayValue = this._model.Spim.AlphaNumericDisplayValue;\r\n return;\r\n }\r\n\r\n if (this._model.Spim.IsNumeric) {\r\n this._model.DisplayValue = FormatConverter.LocalizeDecimalOrInteger(\r\n this._model.Spim.NumericValue && this._model.Spim.NumericValue.toString()\r\n );\r\n return;\r\n }\r\n\r\n if (this._model.Spim.IsLogic) {\r\n this._model.DisplayValue = this._model.Spim.LogicalValue ? '1' : '0';\r\n return;\r\n }\r\n\r\n if (this._model.Spim.IsRange) {\r\n const rangeLow =\r\n this._model.Spim.RangeLow === null\r\n ? `(${LABELS.EMPTY})`\r\n : FormatConverter.LocalizeDecimalOrInteger(this._model.Spim.RangeLow.toString());\r\n const rangeHigh =\r\n this._model.Spim.RangeHigh === null\r\n ? `(${LABELS.EMPTY})`\r\n : FormatConverter.LocalizeDecimalOrInteger(this._model.Spim.RangeHigh.toString());\r\n this._model.DisplayValue = `${rangeLow} - ${rangeHigh}`;\r\n\r\n return;\r\n }\r\n }\r\n\r\n GetRateTitle() {\r\n if (this._model.Currency) {\r\n let rateDate = this._model.Currency.Origin ? this._model.Currency.Origin.RateDate : this._currencyValue.RateDate;\r\n const date = moment(rateDate).format('L');\r\n if (this._model.Currency.Origin.Currency) {\r\n const icon = new Icon(this._model.Currency.Origin.Currency.Icon);\r\n const template = `\r\n <div class=\"origin-tooltip\">${icon.GetTemplate()}${this._model.Currency.Origin.Value ? FormatConverter.LocalizeDecimalOrInteger(\r\n Number(this._model.Currency.Origin.Value.toString().replace(/[.,]/g, '.')).toFixed(2)) : ''} - ${date} </div>`;\r\n return (ko as any).renderTemplateXHtml(template, icon);\r\n }\r\n return '';\r\n }\r\n return '';\r\n }\r\n\r\n private PrepareDocument() {\r\n if (this._model.Values) {\r\n var documentDataModel = new DocumentDataModel();\r\n documentDataModel.Data = this._model.Values;\r\n documentDataModel.RecordKeys = this._model.RecordKeys;\r\n this._documentManager = new DocumentManager(\r\n this._screenType,\r\n this._form ? this._form.GetScreen() : null,\r\n documentDataModel,\r\n this.EntityId,\r\n this.EntityTypeName,\r\n this._model.FieldMetadata.Id,\r\n this._model.FieldMetadata.Name,\r\n this._model.IsEnableMail,\r\n this._model.Document.IsEnableSwitchVersion\r\n );\r\n\r\n this._documentManager.On(DOCUMENT_MANAGER_EVENTS.UPDATED, this, (eventArgs) => {\r\n this.Trigger(EVENTS.REFRESH);\r\n });\r\n }\r\n }\r\n\r\n get DocumentManager() {\r\n return this._documentManager;\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>) {\r\n this._el = _.find(elements, (element: HTMLElement)=> element.nodeType !== 8 && element.nodeType !== 3);\r\n }\r\n\r\n get Wrapper(): HTMLElement\r\n {\r\n return this._el;\r\n }\r\n\r\n get DisplayPriorityClass(): string {\r\n return this._model.DisplayPriority ? DISPLAY_PRIORITY_TO_CSS[this._model.DisplayPriority] : '';\r\n }\r\n\r\n SaveControlValue(linkEditorFieldData: FieldDataModel = null) {\r\n if (this._editor()) {\r\n\r\n\t this._isNewRecord = true;\r\n this._valueExists(this._editor().GetValue() || false);\r\n\r\n if (this.IsTranslatable()) {\r\n const defaultTranslation = this._editor().GetDefaultTranslation();\r\n const translations = this._editor().GetTranslations();\r\n\r\n this._model.Value = defaultTranslation.Value;\r\n this._model.DisplayValue = defaultTranslation.Value;\r\n this._model.Translations = translations;\r\n this._model.OriginalDisplayValue = defaultTranslation.Value;\r\n\r\n this.TranslateData();\r\n\r\n } else {\r\n this._model.Value = this._editor().GetValue();\r\n\t\t\t\tthis._model.DisplayValue = this._editor().GetValue();\r\n\t\t\t\tthis._model.OriginalDisplayValue = this._editor().GetValue();\r\n\r\n const controlType = this._editor().GetType();\r\n const controlsWithComplexValues = [CONTROL_TYPES.Currency, CONTROL_TYPES.Spim];\r\n\r\n if (_.some(controlsWithComplexValues, controlWithComplexValue => controlWithComplexValue === controlType)) {\r\n this._model.Value = JSON.stringify(this._editor().GetValue());\r\n }\r\n\r\n if (linkEditorFieldData && linkEditorFieldData.FieldValue[1]) {\r\n linkEditorFieldData.FieldValue[1] = this._model.Value;\r\n }\r\n\r\n if (this._editor().GetType() === CONTROL_TYPES.Dropdown || this._editor().GetType() === CONTROL_TYPES.DateTime || this._editor().GetType() === CONTROL_TYPES.RadioButton) {\r\n this._model.DisplayValue = this._model.OriginalDisplayValue = (this._editor() as any).GetDisplayValue();\r\n\r\n } else if (this._editor().GetType() === CONTROL_TYPES.MultiSelect) {\r\n this._model.DisplayValue = (this._editor() as MultiSelect).SelectedItems().map(item => item.Label).join(\", \");\r\n } else if (this._editor().GetType() === CONTROL_TYPES.ColorSelector) {\r\n this._model.DisplayValue = this._editor().GetValue();\r\n this.PrepareColor();\r\n } else {\r\n if (this._editor().GetType() !== CONTROL_TYPES.Password) {\r\n this._model.DisplayValue = this._editor().GetValue();\r\n }\r\n }\r\n }\r\n\r\n if (this._editor().GetFieldModel().FormatName === \"Percentage\" && this._editor().GetType() === CONTROL_TYPES.Text) {\r\n if (this._model.Value) {\r\n this._model.Value = (Number(this._model.Value.replace(/[.,]/g, '.')) / 100).toString();\r\n }\r\n }\r\n\r\n if (this._editor().GetFieldModel().FormatName === \"Phone number\" && this._editor().GetType() === CONTROL_TYPES.Text) {\r\n const phoneCode = (this._editor().GetType() as any).GetPhoneCode();\r\n if (phoneCode && this._editor().IsModified() && this._model.Value) {\r\n this._model.Value = phoneCode + '-' + this._model.Value.replace(/\\D/g, '').replace('-', '');\r\n }\r\n }\r\n\r\n if (this._editor().GetType() === CONTROL_TYPES.Currency) {\r\n if (!this._model.Currency) {\r\n this._model.Currency = new ConvertedCurrencyModel();\r\n this._model.Currency.Origin = new CurrencyValueModel();\r\n }\r\n const shownCurrency = this._model.Currency.Converted || this._model.Currency.Origin;\r\n shownCurrency.Currency = this._editor().GetValue().Currency;\r\n shownCurrency.Value = Number(this._editor().GetValue().Value.replace(',', '.'));\r\n shownCurrency.RateDate = this._editor().GetValue().RateDate;\r\n this.PrepareCurrency();\r\n }\r\n\r\n if (this._editor().GetType() === CONTROL_TYPES.Spim) {\r\n if (!this._model.Spim) {\r\n this._model.Spim = new SpimValueModel();\r\n }\r\n\r\n this._model.Spim = this._model.Spim.FeatureType && this._editor().GetValue();\r\n this.PrepareSpim();\r\n\t\t\t}\r\n\r\n\t\t\tthis.Tooltip({\r\n\t\t\t\tcontent: this.TooltipContent(_.escape(this._model.Value), this._editor().GetType(), this._editor().GetFieldModel().FormatName),\r\n\t\t\t\tposition: { x: 'right', y: 'center' },\r\n\t\t\t\toutside: 'x',\r\n\t\t\t\taddClass: 'ellipsis-tooltip'\r\n\t\t\t});\r\n }\r\n }\r\n\r\n SaveLinkEditorValue(control: IControl) {\r\n if (control && this.IsEnableEdit) {\r\n if (this.IsTranslatable()) {\r\n const defaultTranslation = control.GetDefaultTranslation();\r\n const translations = control.GetTranslations();\r\n\r\n this._model.Value = defaultTranslation.Value;\r\n this._model.DisplayValue = defaultTranslation.Value;\r\n this._model.Translations = translations;\r\n\r\n this.TranslateData();\r\n\r\n } else {\r\n this._model.Value = control.GetType() === CONTROL_TYPES.Currency ? JSON.stringify(control.GetValue()) : control.GetValue();\r\n if (control.GetType() === CONTROL_TYPES.Dropdown || control.GetType() === CONTROL_TYPES.DateTime) {\r\n this._model.DisplayValue = (control as any).GetDisplayValue();\r\n } else if (control.GetType() === CONTROL_TYPES.MultiSelect) {\r\n this._model.DisplayValue = (control as MultiSelect).SelectedItems().map(item => item.Label).join(\", \");\r\n } else {\r\n this._model.DisplayValue = control.GetValue();\r\n }\r\n }\r\n\r\n if (control.GetFieldModel().FormatName === \"Percentage\" && control.GetType() === CONTROL_TYPES.Text) {\r\n this._model.Value = (Number(this._model.Value) / 100).toString();\r\n }\r\n\r\n if (control.GetFieldModel().FormatName === \"Phone number\" && control.GetType() === CONTROL_TYPES.Text) {\r\n const phoneCode = (control as any).GetPhoneCode();\r\n if (phoneCode && control.IsModified() && this._model.Value) {\r\n this._model.Value = phoneCode + '-' + this._model.Value.replace(/\\D/g, '').replace('-', '');\r\n }\r\n }\r\n this._valueExists(control.GetValue() || false);\r\n this.GetViewValue();\r\n }\r\n }\r\n\r\n private IsTranslatable() {\r\n return FlagResolver.ContainsFlag(FieldFlags.Translate, this._model.Flags);\r\n }\r\n\r\n private TranslateData() {\r\n if (this.IsTranslatable()) {\r\n const translation = TranslationManager.Instance.GetTranslation(this._model.DisplayValue, this._model.Translations);\r\n this._model.TranslatedValue = translation.TranslatedValue || translation.Value;\r\n }\r\n }\r\n\r\n private SelectNextRelationType() {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.LINK_RECORD_WITH_NEXT_RELATION_TYPE,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.Trigger(EVENTS.LINK_NEXT_RELATION, {field: this._model});\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n private OpenMarkedEditScreen(cell, evt) {\r\n const entityRecord = this._reference() && this._reference().SelectedEntityRecord;\r\n\r\n if (!this._reference()) {\r\n return;\r\n }\r\n\r\n this.Trigger(EVENTS.OPEN_HYPERLINK, {\r\n EntityId: entityRecord.SelectedEntity.Id,\r\n RecordId: entityRecord.SelectedRecord.Id,\r\n IsHyperlink: true,\r\n ViewValue: this._viewValue(),\r\n ShowInModal: evt.ctrlKey\r\n });\r\n }\r\n\r\n private GetIconClasses(fontName, name): string {\r\n let classes: string = '';\r\n if (fontName === FONT_NAME.FONT_AWESOME) {\r\n classes = `${classes} fa`;\r\n } else if (fontName === FONT_NAME.SOCIAL_ICONS) {\r\n classes = `${classes} socicon-btn`;\r\n } else if (!name) { // Set default icon to reference field\r\n classes = 'fa fa-3x fa-stack fa-bookmark';\r\n } else {\r\n classes = fontName;\r\n }\r\n classes = `${classes} ${name} image-icon-xs`;\r\n\r\n return classes;\r\n }\r\n\r\n private MoveRowUp() {\r\n if (this.IsAbleSort) {\r\n this.Trigger(EVENTS.MOVE_ROW_UP);\r\n }\r\n\r\n }\r\n\r\n private MoveRowDown() {\r\n if (this.IsAbleSort) {\r\n this.Trigger(EVENTS.MOVE_ROW_DOWN);\r\n }\r\n }\r\n\r\n private HoverSort(){\r\n if (this.IsAbleSort) {\r\n this.Trigger(EVENTS.HOVER_SORT);\r\n }\r\n }\r\n\r\n private UnHoverSort(){\r\n if (this.IsAbleSort) {\r\n this.Trigger(EVENTS.UN_HOVER_SORT);\r\n }\r\n }\r\n\r\n\r\n GetAttributes(index: number) {\r\n return {\r\n 'data-value': this.ViewValue && this._valueExists,\r\n 'data-new-value': this._valueExists,\r\n 'data-priority': this.Model.DisplayPriority,\r\n 'data-index': index\r\n }\r\n }\r\n\r\n GetStyle() {\r\n return {\r\n maxHeight: this._maxRowHeight + 'px',\r\n width: this.Model.width\r\n }\r\n }\r\n\r\n private TooltipContent(tooltipValue: string, typeName: string, formatName: string) {\r\n\t\treturn (tooltipValue && tooltipValue.length > 98 &&\r\n\t\t\t(typeName === FIELD_TYPES.Memo || typeName === FIELD_TYPES.Text) &&\r\n\t\t\tformatName !== 'SQL' && formatName !== 'URL')\r\n\t\t\t? tooltipValue\r\n : undefined;\r\n }\r\n\r\n ShowOriginalMemo() {\r\n\t\tBlockUI.Block();\r\n\t\tif (this._isNewRecord) {\r\n\t\t\tlet memoValueModal = new MemoValueModal(this._model.Value);\r\n\t\t\tmemoValueModal.Show();\r\n\t\t\tBlockUI.Unblock();\r\n\t\t} else {\r\n\t\t\tGridStore.GetMemoValue(\r\n\t\t\t\t{\r\n\t\t\t\t\tEntityId: this.Model.EntityMetadata.Id,\r\n\t\t\t\t\tFieldId: this.Model.FieldMetadata.Id,\r\n\t\t\t\t\tRecordKeys: this.Model.RecordKeys\r\n\t\t\t\t})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((data) => {\r\n if (this.IsTranslatable()) {\r\n\t\t\t\t\t const translation = TranslationManager.Instance.GetTranslation(data.DisplayValue, data.Translations);\r\n\t\t\t\t\t data.Value = translation.TranslatedValue || translation.Value;\r\n }\r\n\r\n let memoValueModal = new MemoValueModal(data.Value);\r\n memoValueModal.Show();\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n\t\t}\r\n }\r\n\r\n GetIconName(): string {\r\n const formatName = this._model.FieldMetadata.FormatName;\r\n return CONTROL_TYPES_LINK[formatName] ? CONTROL_TYPES_LINK[formatName].icon : null;\r\n }\r\n\r\n ShowOriginalImage(){\r\n this.Trigger(EVENTS.SHOW_ORIGINAL_IMAGE, { dataCell: this });\r\n }\r\n\r\n GetGrid(context: KnockoutBindingContext){\r\n let baseGridModule = require('Core/Controls/Grid/BaseGrid/BaseGrid').BaseGrid;\r\n let baseGrid = null;\r\n _.each(context.$parents, (parent) => {\r\n if(parent instanceof baseGridModule){\r\n baseGrid = parent;\r\n }\r\n });\r\n\r\n return baseGrid;\r\n }\r\n\r\n IsBarcodeButtonVisible() {\r\n return FieldFormat.IsBarcode(this._model.FieldMetadata.FormatName) && !this._model.FieldMetadata.IsVirtual;\r\n }\r\n\r\n PrintBarCode(){\r\n this.Trigger(EVENTS.PRINT_LABEL);\r\n }\r\n\r\n get ShowNextRelationTypeButton(): boolean{\r\n\r\n if(this.QueryColumn && this._model.RelationType) {\r\n\r\n let config = _.find(this.QueryColumn.CrossValueSettings, (conf) => conf.RelationTypeValueId === this._model.RelationType.Id);\r\n \r\n if(!config){\r\n return true;\r\n }\r\n return config.ShowNexRelationButton\r\n }\r\n\r\n return true;\r\n }\r\n\r\n get ShowEditRelationTypeButton(): boolean{\r\n\r\n if(this.QueryColumn && this._model.RelationType) {\r\n let config = _.find(this.QueryColumn.CrossValueSettings, (conf) => conf.RelationTypeValueId === this._model.RelationType.Id);\r\n \r\n if(!config){\r\n return true;\r\n }\r\n return config.ShowEditRelationButton\r\n }\r\n\r\n return true;\r\n }\r\n\r\n get HasSortDescription(): boolean{\r\n return this._model.FieldMetadata.HasSortDescription && this._screenType === ScreenTypes[ScreenTypes.ConsultScreen];\r\n }\r\n\r\n get DescriptionTooltipContent(): string {\r\n return this._hasDescription ? LABELS.SORT_REMOVE_DESCRIPTION : LABELS.SORT_ADD_NEW_DESCRIPTION;\r\n }\r\n\r\n EditDescription(){\r\n this._isEditMode(true);\r\n }\r\n\r\n CancelEditDescription(){\r\n this._isEditMode(false);\r\n }\r\n\r\n SaveDescription(){\r\n this.Trigger(EVENTS.SAVE_RECORD);\r\n }\r\n\r\n CreateOrRemoveDescription(){\r\n this._isNewRecord = false;\r\n if(this.IsSortDescription){ \r\n if(!!this._model.Value){\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.REMOVE_SORT_DESCRIPTION,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.CANCEL\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this._model.Value = null;\r\n this._model.DisplayValue = null;\r\n this._model.OriginalDisplayValue = null;\r\n this._isNewRecord = true;\r\n this._isEditMode(true);\r\n this.Trigger(EVENTS.SAVE_RECORD);\r\n });\r\n confirmationDialog.Show();\r\n }else{\r\n this._isEditMode(true);\r\n } \r\n }else{\r\n this.Trigger(EVENTS.CREATE_OR_DELETE_SORT_DESCRIPTION);\r\n }\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {GridTotalCellValueModel} from 'Core/Controls/Grid/Models/GridDataModel/GridTotalCellValueModel';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport { GridAverageCellValueModel } from 'Core/Controls/Grid/Models/GridDataModel/GridAverageCellValueModel';\r\n\r\nimport TotalCellTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/TotalCell.html';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\nimport { GridCountCellValueModel } from '../../Models/GridDataModel/GridCountCellValueModel';\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/TotalCell'] = TotalCellTemplate;\r\n\r\nexport class TotalCell {\r\n\tconstructor(\r\n\t\tprivate _model: GridTotalCellValueModel | GridAverageCellValueModel | GridCountCellValueModel,\r\n\t\t private _columnModel: GridColumnModel\r\n\t) {}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Core/Controls/Grid/BaseGrid/GridCell/Templates/TotalCell';\r\n\t}\r\n\r\n\t@enumerable \r\n\tget IsWrapped(): boolean {\r\n\t\treturn this._model.IsWrapped;\r\n\t}\r\n\r\n\t@enumerable\r\n\tget Value(): string {\r\n\t\tif (!this._model.Value) {\r\n\t\t\treturn this._model.Value;\r\n\t\t}\r\n\r\n\t\treturn FormatConverter.LocalizeDecimalOrInteger(\r\n\t\t\tthis._columnModel.FieldMetadata.FormatName === FieldFormat.PERCENTAGE\r\n\t\t\t\t? (Number(this._model.Value) * 100).toFixed(\r\n\t\t\t\t\t this._columnModel.FieldMetadata.Size < 2 ? 0 : this._columnModel.FieldMetadata.Size - 2\r\n\t\t\t\t )\r\n\t\t\t\t: this._model.Value\r\n\t\t);\r\n\t}\r\n\r\n\t@enumerable\r\n\tget FormatName(){\r\n return !!this.Value && this._columnModel.FieldMetadata.FormatName;\r\n }\r\n\r\n\t@enumerable\r\n\tget DisplayPriorityClass(): string {\r\n\t\treturn '';\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"grid-cell-wrapper marker\\\"> <span data-bind=\\\"css: { 'currencyIconPadding': $data.FormatName === 'Currency' && !!$data.Value }\\\" class=\\\"valueBox\\\"> <!--ko text: $data.Value --><!-- /ko --> <!--ko if: $data.FormatName === 'Currency' && !!$data.Value --> <i class=\\\"currencyIcon\\\"></i> <!-- /ko --> </span> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\n\r\nexport enum SortOrder {\r\n\tAsc,\r\n\tDesc,\r\n\tBoth\r\n}\r\n\r\nexport const DISPLAY_PRIORITY_TO_CSS = {\r\n\t1: 'priority-prehigh',\r\n\t2: 'priority-medium',\r\n\t3: 'priority-premedium',\r\n\t4: 'priority-low'\r\n};\r\n\r\nexport class BaseColumn extends Event {\r\n\tprotected _sortOrder: KnockoutObservable<number>;\r\n\tprotected _sortOrderClassName: KnockoutComputed<string>;\r\n\tprotected _isFastFilterEnabled: KnockoutObservable<boolean> = ko.observable(false);\r\n\r\n\tconstructor(protected _model: GridColumnModel) {\r\n\t\tsuper();\r\n\r\n\t\tthis._sortOrder = ko.observable(_model.SortDirection);\r\n\t\tthis.AddEvent(EVENTS.SORT);\r\n\r\n\t\tthis._sortOrderClassName = ko.computed({\r\n\t\t\towner: this,\r\n\t\t\tread: () => `sort-${ SortOrder[this._sortOrder()] && SortOrder[this._sortOrder()].toLowerCase()}`\r\n\t\t});\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\treturn `${this._model.Title || this._model.Alias}`;\r\n\t}\r\n\r\n\tget GroupTitle(): string {\r\n\t\treturn `${this._model.GroupTitle}`;\r\n\t}\r\n\r\n\tget HasGroupTitle(){\r\n\t\treturn this._model.GroupTitle != null && this._model.GroupTitle !== \"null\" && this._model.GroupTitle !== \"undefined\";\r\n\t}\r\n\r\n\r\n\tget Model(): GridColumnModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tSort() {\r\n\t}\r\n\r\n\tget DisplayPriorityClass(): string {\r\n\t\treturn DISPLAY_PRIORITY_TO_CSS[this._model.DisplayPriority];\r\n\t}\r\n}","// Module\nvar code = \"<ul class=\\\"multi-level\\\"> <!-- ko foreach: _processCardsLifeStatuses --> <li> <a data-bind=\\\"text: $parent.FormatDisplayValue($data), click: $parent.SelectLifeStatus.bind($parent, $data)\\\" class=\\\"lookup-dropdown-item\\\" href=\\\"#\\\">1</a> </li> <!-- /ko --> </ul>\";\n// Exports\nexport default code;","import { LifeStatusSimpleModel } from 'Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel';\r\nimport * as ko from \"knockout\";\r\n\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {EVENTS as GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {PivotDetailModel} from \"Core/Controls/Grid/Models/PivotDetailModel\";\r\nimport {FONT_NAME} from \"Core/Constant\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/ProcessCardsDropdown/Templates/ProcessCardsDropdown.html';\r\nko.templates['Core/Controls/Grid/BaseGrid/ProcessCardsDropdown/Templates/ProcessCardsDropdown'] = Template;\r\n\r\n\r\nexport class ProcessCardsDropdown extends Event {\r\n private readonly _id: string;\r\n private _dropDown: JBoxDropDown;\r\n private _labels = LABELS;\r\n\r\n constructor(private _processCardsLifeStatuses: Array<LifeStatusSimpleModel>){\r\n super();\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this.AddEvent(EVENTS.RECORD_SELECTED);\r\n }\r\n\r\n Close(){\r\n if(this._dropDown){\r\n this._dropDown.Close();\r\n }\r\n }\r\n\r\n SelectLifeStatus(status: LifeStatusSimpleModel){\r\n this.Trigger(EVENTS.RECORD_SELECTED, { status: status });\r\n }\r\n\r\n Show(target: any){\r\n this._dropDown = new JBoxDropDown({\r\n target: target || \".\" + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: 'body',\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: () => this._dropDown.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n blockScroll: true,\r\n addClass: 'lookup-dropdown',\r\n maxWidth: \"calc(100%)\"\r\n },\r\n onOpen: () => {\r\n this._dropDown.SetContent({ content: Template as any });\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n\r\n FormatDisplayValue(status: LifeStatusSimpleModel){\r\n return _.isEmpty(status.TranslatedName) ? status.Name : status.TranslatedName;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {Event} from 'Core/Common/Event';\r\nimport { EntityMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\n\r\nimport ActionCellTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/ActionCell.html';\r\nimport BasketButtonTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/BasketButton.html';\r\nimport {IControl} from 'Core/Controls/IControl';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport { TABLE_TYPES } from '../../../../Constant';\r\nimport { ProcessCardsDropdown } from '../ProcessCardsDropdown/ProcessCardsDropdown';\r\nimport { LifeStatusSimpleModel } from '../../../ButtonFollowUp/Models/LifestatusSimpleModel';\r\nimport type { StepsScreen } from 'Core/Screens/StepsScreen/StepsScreen';\r\nimport { BlockUI, GridStore } from '../Index';\r\n\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/ActionCell'] = ActionCellTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/BasketButton'] = BasketButtonTemplate;\r\n\r\nexport class ActionCell extends Event {\r\n private _showExpandButton: KnockoutObservable<boolean>;\r\n private _showColapsButton: KnockoutObservable<boolean>;\r\n\r\n private _isEditMode: KnockoutObservable<boolean>;\r\n private _enableEdit: KnockoutObservable<boolean>;\r\n private _isLocked: KnockoutObservable<boolean>;\r\n private _isLifeStatusEnabled: KnockoutObservable<boolean>;\r\n private _hideToggleDisableButton: KnockoutObservable<boolean>;\r\n private _hideUnlink: KnockoutObservable<boolean>;\r\n private _hideEdit: KnockoutObservable<boolean>;\r\n private _isEditScreen: KnockoutObservable<boolean>;\r\n private _isListScreen: KnockoutObservable<boolean>;\r\n private _isConsultScreen: KnockoutObservable<boolean>;\r\n private _isVisibleButtons: KnockoutObservable<boolean>;\r\n private _screenType: string;\r\n private _showEditButton: KnockoutObservable<boolean>;\r\n private _showDeleteButton: KnockoutObservable<boolean>;\r\n private _isCollapsed: KnockoutObservable<boolean>;\r\n private _labels = LABELS;\r\n private _unlinkButtonTitle: KnockoutComputed<string>;\r\n private _editLinkButtonTitle: KnockoutComputed<string>;\r\n private _isUnlinkButtonDisabled: KnockoutComputed<boolean>;\r\n private _isEditLinkButtonDisabled: KnockoutComputed<boolean>;\r\n private _isUnlinkCheckboxChecked: KnockoutObservable<boolean>;\r\n private _isMultipleUnlinkModeActive: KnockoutObservable<boolean> = ko.observable(false);\r\n private _showStepsScreenButton: KnockoutObservable<boolean>;\r\n private _processCardsLifeStatuses: Array<LifeStatusSimpleModel>;\r\n\r\n constructor(\r\n private _isEditable: KnockoutObservable<boolean> = ko.observable(false),\r\n private _enableBasket: KnockoutObservable<boolean> = ko.observable(false),\r\n private _recordInBasket: KnockoutObservable<boolean> = ko.observable(false),\r\n private _isDisableEditLinkButton: KnockoutObservable<boolean> = ko.observable(false),\r\n private _backLinkingButtons: KnockoutObservableArray<any> = ko.observableArray([]),\r\n private _isEditingAllowed: boolean,\r\n private _isCrossTable: boolean,\r\n private _inlineControls: Array<IControl>,\r\n private _enableExpaning,\r\n private _hasSubGridData,\r\n private _isRetired: boolean,\r\n private _rowEntity: EntityMetadataModel,\r\n private _isSubgrid: boolean,\r\n private _isLinkJoin: boolean,\r\n processCardsLifeStatuses,\r\n private _recordId: number,\r\n private _entityId: number\r\n ) {\r\n super();\r\n this._processCardsLifeStatuses = processCardsLifeStatuses || [];\r\n this._showExpandButton = ko.observable(true);\r\n this._showColapsButton = ko.observable(false);\r\n this._isEditMode = ko.observable(false);\r\n this._isLocked = ko.observable(false);\r\n this._isLifeStatusEnabled = ko.observable(false);\r\n this._hideToggleDisableButton = ko.observable(false);\r\n this._hideUnlink = ko.observable(false);\r\n this._hideEdit = ko.observable(false);\r\n this._isEditScreen = ko.observable(false);\r\n this._isListScreen = ko.observable(false);\r\n this._isConsultScreen = ko.observable(false);\r\n this._isVisibleButtons = ko.observable(false);\r\n this._showEditButton = ko.observable(false);\r\n this._showDeleteButton = ko.observable(false);\r\n this._isCollapsed = ko.observable(true);\r\n this._isUnlinkCheckboxChecked = ko.observable(false);\r\n this._showStepsScreenButton = ko.observable(false);\r\n\r\n this.AddEvent(EVENTS.EXPAND);\r\n this.AddEvent(EVENTS.COLLAPSE);\r\n this.AddEvent(EVENTS.EDIT_RECORD);\r\n this.AddEvent(EVENTS.EDIT_LINK);\r\n this.AddEvent(EVENTS.CANCEL_EDIT);\r\n this.AddEvent(EVENTS.SAVE_RECORD);\r\n this.AddEvent(EVENTS.DELETE_RECORD);\r\n this.AddEvent(EVENTS.CHANGE_LIFESTATUS);\r\n this.AddEvent(EVENTS.ADD_TO_BASKET);\r\n this.AddEvent(EVENTS.REMOVE_FROM_BASKET);\r\n this.AddEvent(EVENTS.UNLINK_RECORD);\r\n this.AddEvent(EVENTS.BACK_LINKING_POPUP_REQUESTED);\r\n this.AddEvent(EVENTS.CLICK_UNLINK_CHECKBOX);\r\n this.AddEvent('REFRESH')\r\n this.Init(); \r\n }\r\n\r\n private Init(){\r\n this._unlinkButtonTitle = ko.computed(()=> {\r\n if(this._isRetired){\r\n return this._labels.LINKED_RECORD_IS_RETIRED;\r\n }\r\n\r\n return this._isEditingAllowed ? this._labels.UNLINK_RECORD_LABEL : this._labels.ACCESS_DENIED_LABEL;\r\n });\r\n\r\n this._editLinkButtonTitle = ko.computed(()=> {\r\n if(this._isRetired){\r\n return this._labels.LINKED_RECORD_IS_RETIRED;\r\n }\r\n\r\n return this._isEditingAllowed ? this._isDisableEditLinkButton() ? this._labels.NO_ANY_CUSTOM_FIELDS : this._labels.EDIT_LINK_LABEL : this._labels.ACCESS_DENIED_LABEL;\r\n });\r\n\r\n this._isUnlinkButtonDisabled = ko.computed(()=> {\r\n if(this._isRetired){\r\n return true;\r\n }\r\n\r\n return !this._isEditingAllowed;\r\n });\r\n \r\n this._isEditLinkButtonDisabled = ko.computed(()=> {\r\n if(this._isRetired){\r\n return true;\r\n }\r\n\r\n return !this._isEditingAllowed ? true : this._isDisableEditLinkButton();\r\n });\r\n }\r\n\r\n set ScreenType(value: string) {\r\n this._screenType = value; \r\n this._isEditScreen(value === ScreenTypes[ScreenTypes.EditScreen]);\r\n this._isListScreen(value === ScreenTypes[ScreenTypes.ListScreen] || value === ScreenTypes[ScreenTypes.SpecialScreen]);\r\n this._isConsultScreen(value === ScreenTypes[ScreenTypes.ConsultScreen]);\r\n this._showEditButton(((value === ScreenTypes[ScreenTypes.EditScreen] || value === ScreenTypes[ScreenTypes.ProcessCardPage]) && !this._isSubgrid) || value === ScreenTypes[ScreenTypes.ListScreen]\r\n || value === ScreenTypes[ScreenTypes.QueryScreen] || value === ScreenTypes[ScreenTypes.SpecialScreen]);\r\n \r\n let showDeleteButton = value === ScreenTypes[ScreenTypes.EditScreen] || (value === ScreenTypes[ScreenTypes.ListScreen] && this._rowEntity && this._rowEntity.Type === TABLE_TYPES.Sub);\r\n this._showStepsScreenButton(this._processCardsLifeStatuses.length > 0 && (value === ScreenTypes[ScreenTypes.ListScreen] || value === ScreenTypes[ScreenTypes.Portlet]));\r\n this._showDeleteButton(showDeleteButton);\r\n }\r\n\r\n set IsVisibleButtons(value: boolean) {\r\n this._isVisibleButtons(value);\r\n }\r\n\r\n get IsVisibleButtons(): boolean {\r\n return this._isLocked();\r\n }\r\n\r\n set IsLocked(value: boolean) {\r\n this._isLocked(value);\r\n }\r\n\r\n get IsLocked(): boolean {\r\n return this._isLocked();\r\n }\r\n\r\n set IsMultipleUnlinkModeActive(value: boolean) {\r\n this._isMultipleUnlinkModeActive(value);\r\n }\r\n\r\n get IsMultipleUnlinkModeActive(): boolean {\r\n return this._isMultipleUnlinkModeActive();\r\n }\r\n\r\n set IsLifeStatusEnabled(value: boolean) {\r\n this._isLifeStatusEnabled(value);\r\n }\r\n\r\n get IsLifeStatusEnabled() {\r\n return this._isLifeStatusEnabled();\r\n }\r\n\r\n set HideToggleDisableButton(value: boolean) {\r\n this._hideToggleDisableButton(value);\r\n }\r\n\r\n get HideToggleDisableButton() {\r\n return this._hideToggleDisableButton();\r\n }\r\n\r\n set HideUnlink(value: boolean) {\r\n this._hideUnlink(value);\r\n }\r\n\r\n get HideUnlink() {\r\n return this._hideUnlink();\r\n }\r\n\r\n set HideEdit(value: boolean) {\r\n this._hideEdit(value);\r\n }\r\n\r\n get HideEdit() {\r\n return this._hideEdit();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/ActionCell';\r\n }\r\n\r\n GetBasketButtonTemplateName() {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/BasketButton';\r\n }\r\n\r\n ExpandColapseNestedGrid() {\r\n if (this._hasSubGridData) {\r\n this._isCollapsed(!this._isCollapsed());\r\n if (this._isCollapsed()) {\r\n this.Trigger(EVENTS.COLLAPSE);\r\n } else {\r\n this.Trigger(EVENTS.EXPAND);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @param e {MouseEvent}\r\n */\r\n EditRecord(that, event) {\r\n if (this._isEditingAllowed) {\r\n this.Trigger(EVENTS.EDIT_RECORD);\r\n this._isEditMode(true);\r\n event.currentTarget.dispatchEvent(new CustomEvent(\"resizeTable\", {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n }\r\n\r\n EditLink() {\r\n if (this._isEditingAllowed && !this._isRetired) {\r\n if (!this._isDisableEditLinkButton()) {\r\n this.Trigger(EVENTS.EDIT_LINK);\r\n }\r\n }\r\n }\r\n\r\n DeleteRecord() {\r\n if (this._isEditingAllowed) {\r\n this.Trigger(EVENTS.DELETE_RECORD);\r\n }\r\n }\r\n\r\n UnlinkRecord() {\r\n if (this._isEditingAllowed && !this._isRetired) {\r\n this.Trigger(EVENTS.UNLINK_RECORD);\r\n }\r\n }\r\n\r\n OnClickUnlinkCheckbox() {\r\n if (!this._isUnlinkCheckboxChecked()) {\r\n this._isUnlinkCheckboxChecked(true);\r\n } else {\r\n this._isUnlinkCheckboxChecked(false);\r\n }\r\n\r\n this.Trigger(EVENTS.CLICK_UNLINK_CHECKBOX);\r\n }\r\n\r\n ChangeLifeStatus() {\r\n if (this._isEditingAllowed) {\r\n this._isLifeStatusEnabled(!this._isLifeStatusEnabled());\r\n this.Trigger(EVENTS.CHANGE_LIFESTATUS);\r\n }\r\n }\r\n\r\n CancelEditRecord() {\r\n if (this._isEditingAllowed) {\r\n this.Trigger(EVENTS.CANCEL_EDIT);\r\n this._isEditMode(false);\r\n }\r\n }\r\n\r\n ShowBackLinkPopup(button: any) {\r\n this.Trigger(EVENTS.BACK_LINKING_POPUP_REQUESTED, {\r\n ButtonName: button.ButtonName,\r\n SubTableView: button.SubTableView,\r\n Intention: button.Intention\r\n });\r\n }\r\n\r\n SaveRecord() {\r\n this.Trigger(EVENTS.SAVE_RECORD);\r\n }\r\n\r\n AddToBasket() {\r\n if (!this._isCrossTable) {\r\n this.Trigger(EVENTS.ADD_TO_BASKET);\r\n }\r\n }\r\n\r\n RemoveFromBasket() {\r\n this.Trigger(EVENTS.REMOVE_FROM_BASKET);\r\n }\r\n\r\n set IsEditMode(value: boolean) {\r\n this._isEditMode(value);\r\n }\r\n\r\n GetCurrentName(backLinkingButton: any) {\r\n const currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n const translation = _.find(backLinkingButton.NameTranslations, (item: any) => item.Id === currentLang.Id);\r\n if (translation && translation.Value) {\r\n return translation.Value;\r\n }\r\n return backLinkingButton.ButtonName;\r\n }\r\n\r\n ShowProcessCardsLifeStatuses(context: ActionCell, evt){\r\n if(this._processCardsLifeStatuses.length == 1){\r\n this.ShowStepsScreen(this._processCardsLifeStatuses[0]);\r\n return;\r\n }\r\n let processCardsDropdown = new ProcessCardsDropdown(this._processCardsLifeStatuses);\r\n processCardsDropdown.Show(evt.target);\r\n processCardsDropdown.On('RECORD_SELECTED', this, (evtArgs)=>{\r\n this.ShowStepsScreen(evtArgs.data.status);\r\n });\r\n }\r\n\r\n async ShowStepsScreen(status: LifeStatusSimpleModel){\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n let screen = await screenManager.GetScreenById({ ScreenId: status.StepsScreenId }) as StepsScreen;\r\n screen.On('FINISH_PROCESS', this, ()=>this.SwitchToNextStatus(status.Id));\r\n screen.LoadStepControlData({ recordId: this._recordId });\r\n screen.ShowInModal(); \r\n BlockUI.Unblock();\r\n }\r\n\r\n SwitchToNextStatus(nextStatusId: number){\r\n GridStore.SwitchToNextStatus({ EntityId: this._entityId, RecordId: this._recordId, NextStatusId: nextStatusId }).then(()=>this.Trigger('REFRESH'));\r\n }\r\n}","// Module\nvar code = \"<!-- ko if: _enableExpaning --> <a data-bind=\\\"click: $data.ExpandColapseNestedGrid, css: { disable : !$data._hasSubGridData }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i data-bind=\\\"css: { 'fa-minus-circle': !_isCollapsed(), 'fa-plus-circle' : _isCollapsed() }\\\" class=\\\"fa transition\\\"></i> </a> <!-- /ko --> <!-- ko if: !_isVisibleButtons()--> <!-- ko if: _showEditButton--> <a data-bind=\\\"click: $data.EditRecord,\\r\\n visible: _isEditable() && !_isEditMode() && !$data.HideEdit,\\r\\n css: { disable: !_isEditingAllowed },\\r\\n attr: { title: _isEditingAllowed ? _labels.EDIT_RECORD_LABEL : _labels.ACCESS_DENIED_LABEL }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-edit\\\"></i> </a> <!-- /ko --> <!-- ko if: _showDeleteButton--> <a data-bind=\\\"click: $data.DeleteRecord, visible: _isEditable() && !_isEditMode()\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" title=\\\"Delete record\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-trash-o\\\"></i> </a> <!-- /ko --> <!-- /ko --> <!-- ko if: _isVisibleButtons()--> <!-- ko if: _showEditButton --> <a data-bind=\\\"click: $data.EditRecord,\\r\\n visible: _isEditable() && !_isEditMode() && !$data.HideEdit,\\r\\n css: { disable: !_isEditingAllowed },\\r\\n attr: { title: _isEditingAllowed ? _labels.EDIT_RECORD_LABEL : _labels.ACCESS_DENIED_LABEL }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-edit\\\"></i> </a> <!-- /ko --> <!-- ko if: _showDeleteButton--> <!-- ko if: _isMultipleUnlinkModeActive() --> <input data-bind=\\\" visible: _isEditable() && !_isEditMode() && !$data.HideUnlink,\\r\\n disable: _isUnlinkButtonDisabled,\\r\\n event: { change: OnClickUnlinkCheckbox },\\r\\n attr: {'checked': _isUnlinkCheckboxChecked()},\\r\\n tooltip: { content: _labels.UNLINK_LABEL }\\\" class=\\\"grid-multiple-unlink-checkbox\\\" type=\\\"checkbox\\\"> <!-- /ko --> <!-- ko ifnot: _isMultipleUnlinkModeActive() --> <a data-bind=\\\"click: $data.UnlinkRecord,\\r\\n visible: _isEditable() && !_isEditMode() && !$data.HideUnlink,\\r\\n css: { disable: _isUnlinkButtonDisabled },\\r\\n attr: { title: _unlinkButtonTitle }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-chain-broken\\\"></i> </a> <!-- /ko --> <!-- /ko --> <!-- ko if: _isConsultScreen() --> <a data-bind=\\\"click: $data.EditLink,\\r\\n visible: _isEditable() && !_isEditMode() && !$data.HideEdit && $data._isLinkJoin,\\r\\n css: { disable: _isEditLinkButtonDisabled },\\r\\n attr: { title: _editLinkButtonTitle }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" title=\\\"Edit link\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-edit\\\"></i> </a> <!-- ko if: !_hideToggleDisableButton() --> <a data-bind=\\\"click: $data.ChangeLifeStatus,\\r\\n visible: _isEditable() && !_isEditMode(),\\r\\n css: { disable: !_isEditingAllowed },\\r\\n attr: { title: _isEditingAllowed ? _isLifeStatusEnabled() ? _labels.DISABLE_RECORD_LABEL : _labels.ENABLE_RECORD_LABEL : _labels.ACCESS_DENIED_LABEL }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i data-bind=\\\"css: {'fa-toggle-off': !_isLifeStatusEnabled(), 'fa-toggle-on': _isLifeStatusEnabled() }\\\" class=\\\"fa transition fa-toggle-off\\\"></i> </a> <!-- /ko --> <!-- ko if: _isMultipleUnlinkModeActive() --> <input data-bind=\\\" visible: _isEditable() && !_isEditMode() && !$data.HideUnlink && $data._isLinkJoin,\\r\\n disable: _isUnlinkButtonDisabled,\\r\\n event: { change: OnClickUnlinkCheckbox },\\r\\n attr: {'checked': _isUnlinkCheckboxChecked()},\\r\\n tooltip: { content: _labels.UNLINK_LABEL }\\\" class=\\\"grid-multiple-unlink-checkbox\\\" type=\\\"checkbox\\\"> <!-- /ko --> <!-- ko ifnot: _isMultipleUnlinkModeActive() --> <a data-bind=\\\"click: $data.UnlinkRecord,\\r\\n visible: _isEditable() && !_isEditMode() && !$data.HideUnlink && $data._isLinkJoin,\\r\\n css: { disable: _isUnlinkButtonDisabled },\\r\\n attr: { title: _unlinkButtonTitle }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-chain-broken\\\"></i> </a> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!--ko if: _backLinkingButtons().length > 0--> <div> <div class=\\\"btn-group btn-group-xs\\\"> <!-- ko foreach: _backLinkingButtons --> <button type=\\\"button\\\" class=\\\"btn blue-dark\\\" data-bind=\\\"text: $parent.GetCurrentName($data), click: $parent.ShowBackLinkPopup.bind($parent, $data)\\\"></button> <!-- /ko --> </div> </div> <!--/ko--> <!-- ko if: _isEditMode --> <a data-bind=\\\"click: $data.SaveRecord, visible: _isEditMode\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"><i class=\\\"fa fa-save transition\\\"></i></a> <!--/ko--> <!-- ko if: _isEditMode --> <a data-bind=\\\"click: $data.CancelEditRecord, visible: _isEditMode\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"><i class=\\\"fa fa-close transition\\\"></i></a> <!--/ko--> <!-- ko if: _showStepsScreenButton() --> <a data-bind=\\\"click: $data.ShowProcessCardsLifeStatuses, attr: { title: _labels.CLICK_TO_PROGRESS}\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"><i class=\\\"fa fa-mail-forward transition\\\"></i></a> <!--/ko--> <!-- ko template: {name: $data.GetBasketButtonTemplateName.bind($data)} --><!-- /ko --> <!--ko foreach: _inlineControls--> <!-- ko template: {name: $data.GetTemplateName.bind($rawData), afterRender: $data.AfterRender.bind($rawData)} --><!-- /ko --> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _enableBasket --> <!-- ko if: _recordInBasket --> <a data-bind=\\\"click: $data.RemoveFromBasket,\\r\\n\\t\\t\\t\\tvisible: _isEditable() && !_isEditMode(),\\r\\n\\t\\t\\t\\tcss: { disable: _isCrossTable },\\r\\n\\t\\t\\t\\tattr: { title: _labels.REMOVE_FROM_BASKET_LABEL }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-minus\\\"></i> </a> <!-- /ko --> <!-- ko ifnot: _recordInBasket --> <a data-bind=\\\"click: $data.AddToBasket,\\r\\n\\t\\t\\t\\tvisible: _isEditable() && !_isEditMode(),\\r\\n\\t\\t\\t\\tcss: { disable: _isCrossTable },\\r\\n\\t\\t\\t\\tattr: { title: _labels.ADD_TO_BASKET_LABEL }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-plus\\\"></i> </a> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {GridCellValueModel} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\n\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/FavoriteCell.html';\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/FavoriteCell'] = Template;\r\n\r\nexport class FavoriteCell {\r\n\tprivate _isFavorite: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis._isFavorite = ko.observable(false);\r\n\t}\r\n\r\n\tset IsFavorite(value: boolean) {\r\n\t\tthis._isFavorite(value);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Core/Controls/Grid/BaseGrid/GridCell/Templates/FavoriteCell';\r\n\t}\r\n}","// Module\nvar code = \"<div style=\\\"text-align:center\\\"> <!-- ko with: _isFavorite --> <i class=\\\"fa fa-star\\\"></i> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <div class=\\\"groupDetailsDropdown\\\"> <span class=\\\"selectLink\\\"><!-- ko text: _labels.SELECT_LABEL --><!-- /ko --></span> </div> <div> <!-- ko with: _grid --> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {EVENTS as GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {GroupDetailModel} from \"Core/Controls/Grid/Models/GroupDetailModel\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport { ZIndexManager } from \"Core/Common/ZIndexManager\";\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/GroupDetailsDropdown/Templates/GroupDetailsDropdown.html';\r\n\r\nko.templates['Core/Controls/Grid/BaseGrid/GroupDetailsDropdown/Templates/GroupDetailsDropdown'] = Template;\r\n\r\nexport class GroupDetailsDropdown extends Event {\r\n private readonly _id: string;\r\n readonly _grid: KnockoutObservable<BaseGrid>;\r\n private _dropDown: JBoxDropDown;\r\n _labels = LABELS;\r\n\r\n constructor() {\r\n super();\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this._grid = ko.observable(null);\r\n this.AddEvent(EVENTS.RECORD_SELECTED);\r\n }\r\n\r\n Close() {\r\n if (this._dropDown) {\r\n this._dropDown.Close();\r\n }\r\n }\r\n\r\n SetData(groupDetails: GroupDetailModel) {\r\n const grid = new BaseGrid({\r\n isPrioritiesDisabled: true,\r\n isQueryResultGrid: true,\r\n isEditable: ko.observable(false),\r\n screenType: null,\r\n enabledFavorite: false,\r\n isEnableSelectRecord: ko.observable(false),\r\n enableSelectRowCell: true\r\n });\r\n\r\n grid.On(GRID_EVENTS.SELECT_RECORD, this,(eventArgs: any) => {\r\n this.Trigger(EVENTS.RECORD_SELECTED, { SelectedRecord: eventArgs.data.Row });\r\n });\r\n\r\n this._grid(grid);\r\n\r\n grid.SetData(groupDetails.Data, undefined, true);\r\n }\r\n\r\n Show(target: HTMLElement = undefined) {\r\n this._dropDown = new JBoxDropDown({\r\n target: target || \".\" + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: 'body',\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: () => this._dropDown.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue\r\n },\r\n onOpen: () => {\r\n this._dropDown.SetContent({ content: Template as any });\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/SelectRow.html';\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/SelectRow'] = Template;\r\n\r\nexport class SelectRowCell extends Event{\r\n constructor() {\r\n super();\r\n this.AddEvent(EVENTS.SELECT_RECORD);\r\n }\r\n\r\n SelectRow(){\r\n this.Trigger(EVENTS.SELECT_RECORD);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/SelectRow';\r\n }\r\n}","// Module\nvar code = \"<a data-bind=\\\"click: $data.SelectRow\\\" ref=\\\"javascript:;\\\"><i class=\\\"fa fa-arrow-right\\\"></i></a>\";\n// Exports\nexport default code;","import { record } from 'rrweb';\r\nimport * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport 'lockr';\r\nimport 'knockout-fast-foreach';\r\n\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {Guid} from \"Core/Common/Guid\";\r\n\r\nimport {FieldDataModel} from \"Core/Screens/Common/LinkEditor/Models/DataModel\";\r\nimport {ActionCell} from 'Core/Controls/Grid/BaseGrid/GridCell/ActionCell';\r\nimport {DataCell} from 'Core/Controls/Grid/BaseGrid/GridCell/DataCell';\r\nimport {FavoriteCell} from 'Core/Controls/Grid/BaseGrid/GridCell/FavoriteCell';\r\nimport {GridRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridRowModel';\r\nimport {BaseGrid} from 'Core/Controls/Grid/BaseGrid/BaseGrid';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {GroupDetailsDropdown} from 'Core/Controls/Grid/BaseGrid/GroupDetailsDropdown/GroupDetailsDropdown';\r\nimport {LIFESTATUS, CONTROL_TYPES, TABLE_TYPES} from 'Core/Constant';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {GridStore} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {LOCK_EVENTS, LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {States} from 'Core/Controls/Grid/BaseGrid/GridRow/States';\r\nimport {RelationshipTypes} from 'Core/Controls/Grid/BaseGrid/Enums/RelationshipTypes';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {IForm} from \"Core/Screens/IScreen\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {IGetDependsOnResponse, RecordStore} from \"Core/Common/Stores/RecordStore\";\r\nimport {UpdateDataModel} from \"Core/Controls/LinkList/Models/UpdateDataModel\";\r\nimport {SelectRowCell} from \"Core/Controls/Grid/BaseGrid/GridCell/SelectRowCell\";\r\nimport {EVENTS as TOOLBAR_EVENTS} from 'Core/Controls/Grid/Toolbar/Constants';\r\nimport {Serialize} from \"libs/cerialize\";\r\nimport {ConfigModel} from \"Core/GeneralProperties/Models/ConfigModel\";\r\nimport {PROPERTIES} from \"Core/Controls/Grid/Constants\";\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\nimport {ColorConverter} from \"Core/Components/ColorSelector/ColorConverter\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {Util} from 'QueryBuilder/Util';\r\nimport {EVENTS as QUERY_RESULT_GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport { ControlDataModel } from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/GridRow/Templates/GridRow.html';\r\nimport SortDescriptionRowTemplate from 'Core/Controls/Grid/BaseGrid/GridRow/Templates/SortDescriptionRow.html';\r\n\r\nimport { GridCellValueModel, RecordKey } from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport { DocumentManagerStore } from 'Core/Components/Controls/DocumentManager/Stores/DocumentManagerStore';\r\n\r\nko.templates['Core/Controls/Grid/BaseGrid/GridRow/Templates/GridRow'] = Template;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridRow/Templates/SortDescriptionRow'] = SortDescriptionRowTemplate;\r\n\r\ninterface GroupedDataItem {\r\n Title: string;\r\n Value: string;\r\n Cell: DataCell;\r\n}\r\n\r\nexport class GridRow extends Event {\r\n private _queryExpression: QueryExpressionModel;\r\n private _dataCells: KnockoutObservableArray<DataCell>;\r\n private _actionCell: ActionCell;\r\n private _favoriteCell: FavoriteCell;\r\n private _nestedGrids: KnockoutObservableArray<BaseGrid>;\r\n private _model: GridRowModel;\r\n private _isSelected: KnockoutObservable<boolean>;\r\n private _isEnableSelectRecord: KnockoutObservable<boolean>;\r\n private _isEditMode: KnockoutObservable<boolean>;\r\n private _screenType: string;\r\n private _isNewRecord: boolean;\r\n private _isLockConfirmated: boolean;\r\n\tprivate _isVisibleButtons: KnockoutObservable<boolean>;\r\n\tprivate _hasInlineControls: boolean;\r\n private _recordInBasket: KnockoutObservable<boolean>;\r\n private _maxRowHeight: string;\r\n private _state: States;\r\n private _relationshipType: string;\r\n private _labels = LABELS;\r\n private _form: IForm;\r\n private _linkEditorData: UpdateDataModel;\r\n private _selectRowCell: SelectRowCell;\r\n private _el: HTMLElement;\r\n private _gridProperties: ConfigModel;\r\n private _guid: string;\r\n private _rowColorEnabled: KnockoutObservable<boolean>;\r\n private _rowColor: KnockoutObservable<string>;\r\n private _groupedData: GroupedDataItem[];\r\n private _isEntity: boolean;\r\n private _crossTableWrapped: Array<GridRow>;\r\n private _isSubGrid: boolean;\r\n private _isSelectedForUnlinking: KnockoutObservable<boolean>;\r\n private _showSortBorder: KnockoutObservable<boolean>;\r\n private _isGroupActive: KnockoutObservable<boolean>;\r\n private _isGroupMode: boolean;\r\n\r\n ShowActionCell: KnockoutComputed<boolean>;\r\n SortDescriptionColumn: KnockoutComputed<DataCell>;\r\n\r\n Template: any;\r\n\r\n public IsLinkParent: boolean;\r\n\r\n constructor(\r\n model: GridRowModel,\r\n private _isEditable: KnockoutObservable<boolean> = ko.observable(true),\r\n private _hideLifeStatusToggle: KnockoutObservable<boolean> = ko.observable(false),\r\n private _hideUnlink: KnockoutObservable<boolean> = ko.observable(false),\r\n private _hideEdit: KnockoutObservable<boolean> = ko.observable(false),\r\n private _enableBasket: KnockoutObservable<boolean> = ko.observable(false),\r\n private _isDisableEditLinkButton: KnockoutObservable<boolean> = ko.observable(false),\r\n private _backLinkingButtons: KnockoutObservableArray<any> = ko.observableArray([]),\r\n isEnableSelectRecord: KnockoutObservable<boolean>,\r\n screenType: string,\r\n isVisibleButtons: boolean,\r\n queryExpression: QueryExpressionModel,\r\n isNewRecord: boolean,\r\n isVisibleFavorite: boolean,\r\n maxRowHeight: KnockoutObservable<string>,\r\n form: IForm,\r\n inlineControls: Array<IControl>,\r\n enableSelectRowCell: boolean,\r\n gridProperties: ConfigModel,\r\n isSubGrid: boolean,\r\n isGroupMode: boolean,\r\n private _isLinkJoin: boolean,\r\n private _hasProcessCards: boolean,\r\n private _hasTotalRow: KnockoutObservable<boolean>\r\n ) {\r\n super();\r\n this._state = States.NoChanges;\r\n this._queryExpression = queryExpression;\r\n this._crossTableWrapped = [];\r\n this._model = model;\r\n this._showSortBorder = ko.observable(false);\r\n this._screenType = screenType;\r\n this._dataCells = ko.observableArray([]);\r\n this._nestedGrids = ko.observableArray([]);\r\n this._recordInBasket = ko.observable(false);\r\n this._relationshipType = RelationshipTypes[model.RelationshipType];\r\n this._form = form;\r\n this._gridProperties = gridProperties;\r\n this._isSubGrid = isSubGrid;\r\n this._isSelectedForUnlinking = ko.observable(false);\r\n if (enableSelectRowCell) {\r\n this._selectRowCell = new SelectRowCell();\r\n this._selectRowCell.On(EVENTS.SELECT_RECORD, this, () => {\r\n this.Trigger(EVENTS.SELECT_RECORD, {Row: this});\r\n });\r\n }\r\n\r\n this._hasInlineControls = inlineControls && inlineControls.length > 0;\r\n _.each(inlineControls, (control) => {\r\n if (control.GetType() === CONTROL_TYPES.GenericButton || control.GetType() === CONTROL_TYPES.ButtonTemplate|| control.GetType() === CONTROL_TYPES.ButtonPlan) {\r\n (control as any).SetGridRow(this);\r\n const controlData = new ControlDataModel();\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: 0,\r\n SubjectRecordId: 0,\r\n RecordSpecsModel: null\r\n };\r\n \r\n control.SetValue(controlValue);\r\n }\r\n });\r\n\r\n let rowEntity = _.find(Util.GetAllQueryEntities(this._queryExpression), (item) => item.Metadata.Id == this._model.EntityId);\r\n\r\n this._isEntity = rowEntity && rowEntity.Metadata.Type === TABLE_TYPES.Entity;\r\n\r\n this._actionCell = new ActionCell(\r\n this._isEditable,\r\n this._enableBasket,\r\n this._recordInBasket,\r\n this._isDisableEditLinkButton,\r\n this._backLinkingButtons,\r\n this._model.Rights.IsEditingAllowed,\r\n this._queryExpression.IsCrossTable,\r\n inlineControls,\r\n this.HasSubGridsData,\r\n true,\r\n this._model.IsRetired,\r\n rowEntity ? rowEntity.Metadata : null,\r\n isSubGrid,\r\n this._isLinkJoin,\r\n this._model.ProcessCardsLifeStatuses,\r\n this.RecordId,\r\n this.EntityId\r\n );\r\n\r\n this._maxRowHeight = parseInt(maxRowHeight(), 10) < 100 ? '100' : maxRowHeight();\r\n\r\n if (isVisibleFavorite) {\r\n this._favoriteCell = new FavoriteCell();\r\n } else {\r\n this._favoriteCell = null;\r\n }\r\n\r\n this._isEditMode = ko.observable(false);\r\n this._isVisibleButtons = ko.observable(isVisibleButtons);\r\n this._isEnableSelectRecord = isEnableSelectRecord;\r\n\r\n let isEditOrListScreen =\r\n this._screenType === ScreenTypes[ScreenTypes.EditScreen]\r\n || this._screenType === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._screenType === ScreenTypes[ScreenTypes.SpecialScreen];\r\n\r\n this._isLockConfirmated = !isEditOrListScreen;\r\n this._actionCell.IsLocked = !isEditOrListScreen;\r\n this._actionCell.ScreenType = screenType;\r\n this._actionCell.IsVisibleButtons = isVisibleButtons;\r\n this._actionCell.HideToggleDisableButton = this._model.HideToggleDisableButton || this._hideLifeStatusToggle();\r\n this._actionCell.HideUnlink = this._hideUnlink();\r\n this._actionCell.HideEdit = this._hideEdit();\r\n this._isSelected = ko.observable(false);\r\n this._isNewRecord = isNewRecord;\r\n this._guid = Guid.NewGuid();\r\n\r\n this.ShowActionCell = ko.computed(() =>\r\n (this._isEditable() && (!this._hideUnlink() || !this._hideEdit() || !this._actionCell.HideToggleDisableButton || this._enableBasket()))\r\n || this._hasInlineControls\r\n || this.HasSubGrids\r\n || this._hasTotalRow() \r\n );\r\n\r\n this.SortDescriptionColumn = ko.computed(()=> _.find(this._dataCells(), (cell) => this._screenType === ScreenTypes[ScreenTypes.ConsultScreen] && cell.IsSortDescription && (!!cell.DisplayValue || cell.IsEditMode )));\r\n\r\n this._isGroupMode = !!isGroupMode;\r\n this._isGroupActive = ko.observable(this._isGroupMode ? true : true );\r\n this.SetRowColor();\r\n\r\n this.Init();\r\n this.InitWrappedRows();\r\n }\r\n\r\n SetRowColor() {\r\n this._rowColorEnabled = ko.observable(this._gridProperties && this._gridProperties.GetPropertyValue(PROPERTIES.ROW_COLOR));\r\n\r\n if (this._rowColorEnabled()) {\r\n const colorFields = this._model.Data.filter(field => field.Type == FIELD_TYPES.Color);\r\n if (colorFields.length > 0) {\r\n const color = ColorConverter.ToHex(colorFields[0].Value)\r\n this._rowColor = ko.observable(color ? ColorConverter.Hexify(color, 0.4) : '');\r\n } else {\r\n this._rowColor = ko.observable('');\r\n }\r\n }\r\n }\r\n\r\n IsSelectedChanged() {\r\n this.Trigger(EVENTS.ROW_SELECTION_CHANGED, {Selected: this._isSelected()});\r\n return true;\r\n }\r\n\r\n get Guid() {\r\n return this._guid;\r\n }\r\n\r\n SetVisibleButtons(isVisibleButton: boolean) {\r\n this._isVisibleButtons(isVisibleButton);\r\n }\r\n\r\n get IsNewRecord(): boolean {\r\n return this._isNewRecord;\r\n }\r\n\r\n get IsSelected(): KnockoutObservable<boolean> {\r\n return this._isSelected;\r\n }\r\n\r\n SetIsSelected(value: boolean) {\r\n this._isSelected(value);\r\n }\r\n\r\n get DataCells(): Array<DataCell> {\r\n return this._dataCells();\r\n }\r\n\r\n get ActionCell(): ActionCell {\r\n return this._actionCell;\r\n }\r\n\r\n get Model(): GridRowModel {\r\n return this._model;\r\n }\r\n\r\n get RecordTypeId() {\r\n return this._model.RecordTypeId;\r\n }\r\n\r\n get RecordKindId() {\r\n return this._model.KindId;\r\n }\r\n\r\n get HasWrappedColumn(): boolean {\r\n const wrappedCell = _.find(this._dataCells(), (dataCell) => dataCell.IsWrapped);\r\n\r\n return !!wrappedCell;\r\n }\r\n\r\n get HasGroupColumn(): boolean {\r\n const groupCell = _.find(this._dataCells(), (dataCell) => dataCell.IsGroup);\r\n\r\n return !!groupCell;\r\n }\r\n\r\n get IsLocked(): boolean {\r\n const lockedCells = _.where(this.DataCells, {IsLocked: true});\r\n\r\n return lockedCells && lockedCells.length > 0;\r\n }\r\n\r\n get IsStartGroup(): boolean {\r\n return this._model.IsStartGroup;\r\n }\r\n\r\n get IsEndGroup(): boolean {\r\n return this._model.IsEndGroup;\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Controls/Grid/BaseGrid/GridRow/Templates/GridRow';\r\n }\r\n\r\n GetSortDescriptionRowTemplateName(){\r\n return 'Core/Controls/Grid/BaseGrid/GridRow/Templates/SortDescriptionRow';\r\n }\r\n\r\n get EntityId(): number {\r\n return this._model.EntityId;\r\n }\r\n\r\n get RecordId(): number {\r\n return this._model.RecordId;\r\n }\r\n\r\n get RelationshipType(): number {\r\n return this._model.RelationshipType;\r\n }\r\n\r\n get KSeq(): number {\r\n return this._model.KSeq;\r\n }\r\n\r\n get LifestatusId(): number {\r\n return this._model.LifestatusId;\r\n }\r\n\r\n get IsEditMode(): boolean {\r\n return this._isEditMode();\r\n }\r\n\r\n set IsEditMode(isEditMode: boolean) {\r\n this._isEditMode(isEditMode);\r\n this.ActionCell.IsEditMode = isEditMode;\r\n\r\n _.each(this.DataCells, item => item.IsEditMode = isEditMode);\r\n }\r\n\r\n get RecordInBasket() {\r\n return this._recordInBasket();\r\n }\r\n\r\n set RecordInBasket(recordInBasket: boolean) {\r\n this._recordInBasket(recordInBasket);\r\n }\r\n\r\n get GroupGuid(): string {\r\n return this._model.GroupGuid;\r\n }\r\n\r\n get Form(): IForm {\r\n return this._form;\r\n }\r\n\r\n set GroupVisible(visible: boolean){\r\n this._isGroupActive(this._isGroupMode ? visible : true);\r\n }\r\n\r\n get GroupVisible(): boolean {\r\n return this._isGroupActive();\r\n }\r\n\r\n private GetDependsOnDataCells(dataCells: Array<DataCell>, dependsOn: number, type: string): Array<DataCell> {\r\n\r\n const filtered = _.filter(dataCells, (cell) => {\r\n return cell.Model.FieldMetadata.Type === type && cell.Model.FieldMetadata.DependsOn === dependsOn;\r\n });\r\n\r\n return filtered;\r\n }\r\n\r\n private UpdateDependsOnCells(recordId: number, dependsOnId: number) {\r\n let fieldIds: Array<number> = [];\r\n const dataCells = this.GetDependsOnDataCells(this.DataCells, dependsOnId, 'Text');\r\n const cellsToUpdate = {};\r\n\r\n _.forEach(dataCells, (cell) => {\r\n const key = cell.Model.FieldMetadata.FilledById;\r\n if (cellsToUpdate[key]) {\r\n cellsToUpdate[key].push(cell);\r\n } else {\r\n cellsToUpdate[key] = [];\r\n cellsToUpdate[key].push(cell);\r\n fieldIds.push(key);\r\n }\r\n });\r\n\r\n if (fieldIds.length) {\r\n if (recordId) {\r\n RecordStore.GetDependsOnValues({FieldIds: fieldIds, RecordId: recordId})\r\n .then((response: IGetDependsOnResponse) => {\r\n const controls = response.ResultObject;\r\n _.forEach(controls, (item) => {\r\n const cells = cellsToUpdate[item.Id];\r\n _.forEach(cells, (cell: DataCell) => {\r\n cell.ViewValue = item.Value;\r\n });\r\n });\r\n })\r\n .fail((error) => {\r\n new Notifier().Failed('Error getting data');\r\n });\r\n } else {\r\n _.forEach(fieldIds, (fieldId) => {\r\n const cells = cellsToUpdate[fieldId];\r\n _.forEach(cells, (cell: DataCell) => {\r\n cell.ViewValue = '';\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n private Init() {\r\n this.AddEvent(EVENTS.ROW_SELECTION_CHANGED);\r\n this.AddEvent(EVENTS.OPEN_HYPERLINK);\r\n this.AddEvent(EVENTS.EDIT_RECORD);\r\n this.AddEvent(EVENTS.EDIT_LINK);\r\n this.AddEvent(EVENTS.CHANGE_VISIBLE_GROUP);\r\n this.AddEvent(EVENTS.CANCEL_EDIT);\r\n this.AddEvent(EVENTS.SAVE_RECORD);\r\n this.AddEvent(EVENTS.DELETE_RECORD);\r\n this.AddEvent(EVENTS.ADD_TO_BASKET);\r\n this.AddEvent(EVENTS.REMOVE_FROM_BASKET);\r\n this.AddEvent(EVENTS.SAVE_LIFESTATUS);\r\n this.AddEvent(EVENTS.REFRESH);\r\n this.AddEvent(EVENTS.UNLINK_RECORD);\r\n this.AddEvent(EVENTS.LINK_NEXT_RELATION);\r\n this.AddEvent(EVENTS.MOVE_ROW_UP);\r\n this.AddEvent(EVENTS.MOVE_ROW_DOWN);\r\n this.AddEvent(EVENTS.HOVER_SORT);\r\n this.AddEvent(EVENTS.UN_HOVER_SORT);\r\n this.AddEvent(EVENTS.BACK_LINKING_POPUP_REQUESTED);\r\n this.AddEvent(EVENTS.SELECT_RECORD);\r\n this.AddEvent(EVENTS.SHOW_ORIGINAL_IMAGE);\r\n this.AddEvent(EVENTS.RECORD_DELETED);\r\n this.AddEvent(TOOLBAR_EVENTS.LINK_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.LINK_PARENT_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD);\r\n this.AddEvent(EVENTS.LOAD_SUB_GRID);\r\n this.AddEvent(EVENTS.EDIT_CLUSTERED_LINK);\r\n\r\n this.ActionCell.IsLifeStatusEnabled = this._model.LifestatusId === LIFESTATUS.ENABLED;\r\n\r\n const cells = [];\r\n\r\n _.each(this._model.Data, gridCellValueModel => {\r\n const dataCell = new DataCell({\r\n Model: gridCellValueModel,\r\n ScreenType: this._screenType,\r\n MaxRowHeight: this._maxRowHeight,\r\n IsNewRecord: this._isNewRecord,\r\n Form: this._form,\r\n QueryExpression: this._queryExpression\r\n });\r\n\r\n dataCell.On(EVENTS.OPEN_HYPERLINK, this, (eventArgs: any) => this.Trigger(EVENTS.OPEN_HYPERLINK, eventArgs.data));\r\n dataCell.On(EVENTS.REFRESH, this, () => this.Trigger(EVENTS.REFRESH));\r\n dataCell.On(EVENTS.EDIT_CLUSTERED_LINK, this, (eventArgs) => {\r\n this.Trigger(EVENTS.EDIT_CLUSTERED_LINK, { gridRow: eventArgs.data.gridRow, grid: eventArgs.data.grid }); \r\n });\r\n\r\n dataCell.On(EVENTS.SAVE_RECORD, this, this.SaveRow);\r\n \r\n dataCell.On(EVENTS.CREATE_OR_DELETE_SORT_DESCRIPTION, this, ()=>{\r\n _.each(this._dataCells(), cell=>{\r\n if(cell.IsSortDescription){\r\n cell.CreateOrRemoveDescription();\r\n }\r\n });\r\n });\r\n \r\n dataCell.On(EVENTS.LINK_NEXT_RELATION, this, (eventArgs: any) => this.Trigger(EVENTS.LINK_NEXT_RELATION, {field: eventArgs.data.field}));\r\n dataCell.On(EVENTS.DROPDOWN_VALUE_SELECTED, this, (eventArgs: any) => this.UpdateDependsOnCells(eventArgs.data.recordId, eventArgs.data.fieldId));\r\n\r\n dataCell.On(EVENTS.SHOW_ORIGINAL_IMAGE, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.SHOW_ORIGINAL_IMAGE, {dataCell: eventArgs.data.dataCell});\r\n });\r\n\r\n dataCell.On(EVENTS.MOVE_ROW_DOWN, this, () => {\r\n this.Trigger(EVENTS.MOVE_ROW_DOWN, {SortCell: dataCell});\r\n });\r\n dataCell.On(EVENTS.MOVE_ROW_UP, this, () => {\r\n this.Trigger(EVENTS.MOVE_ROW_UP, {SortCell: dataCell});\r\n });\r\n\r\n dataCell.On(EVENTS.HOVER_SORT, this, () => {\r\n this.Trigger(EVENTS.HOVER_SORT, {SortCell: dataCell});\r\n });\r\n dataCell.On(EVENTS.UN_HOVER_SORT, this, () => {\r\n this.Trigger(EVENTS.UN_HOVER_SORT, {SortCell: dataCell});\r\n });\r\n\r\n\r\n dataCell.On(EVENTS.PRINT_LABEL, this, () => {\r\n this.PrintLabel(dataCell);\r\n });\r\n\r\n cells.push(dataCell);\r\n });\r\n\r\n this._dataCells(cells);\r\n\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs: any) => {\r\n if (eventArgs.data.TableId === this._model.EntityId && eventArgs.data.RecordId === this._model.RecordId) {\r\n this.Trigger(EVENTS.CANCEL_EDIT);\r\n }\r\n });\r\n\r\n this._actionCell.On(EVENTS.EDIT_RECORD, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.EDIT_RECORD);\r\n });\r\n\r\n this._actionCell.On(EVENTS.EDIT_LINK, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.EDIT_LINK, { gridRow: this });\r\n });\r\n\r\n this._actionCell.On(EVENTS.CHANGE_LIFESTATUS, this, (eventArgs: any) => {\r\n this._model.LifestatusId = eventArgs.source.IsLifeStatusEnabled ? LIFESTATUS.ENABLED : LIFESTATUS.DISABLED;\r\n this.Trigger(EVENTS.SAVE_LIFESTATUS, this);\r\n });\r\n\r\n this._actionCell.On(EVENTS.CANCEL_EDIT, this, (eventArgs: any) => {\r\n LockManager.Instance.ReleaseLock(this._model.EntityId, this._model.RecordId);\r\n this.Trigger(EVENTS.CANCEL_EDIT);\r\n });\r\n\r\n this._actionCell.On(EVENTS.SAVE_RECORD, this, (eventArgs: any) => {\r\n this.SaveRow();\r\n });\r\n\r\n this._actionCell.On(EVENTS.DELETE_RECORD, this, (eventArgs: any) => this.Trigger(EVENTS.DELETE_RECORD));\r\n\r\n this._actionCell.On(EVENTS.UNLINK_RECORD, this, (eventArgs: any) => this.Trigger(EVENTS.UNLINK_RECORD));\r\n\r\n this._actionCell.On(EVENTS.CLICK_UNLINK_CHECKBOX, this, (eventArgs: any) => {\r\n if (!this._isSelectedForUnlinking()) {\r\n this._isSelectedForUnlinking(true);\r\n } else {\r\n this._isSelectedForUnlinking(false);\r\n }\r\n\r\n this._model.IsUnlinkCheckboxChecked = this._isSelectedForUnlinking();\r\n });\r\n\r\n this._actionCell.On(EVENTS.ADD_TO_BASKET, this, () => {\r\n this.Trigger(EVENTS.ADD_TO_BASKET, {Row: this})\r\n });\r\n this._actionCell.On(EVENTS.REMOVE_FROM_BASKET, this, () => {\r\n this.Trigger(EVENTS.REMOVE_FROM_BASKET, {Row: this})\r\n });\r\n\r\n this._actionCell.On('REFRESH', this, () => {\r\n this.Trigger(EVENTS.REFRESH);\r\n });\r\n\r\n this._actionCell.On(EVENTS.BACK_LINKING_POPUP_REQUESTED, this, eventArgs => {\r\n this.Trigger(EVENTS.BACK_LINKING_POPUP_REQUESTED, {\r\n ButtonName: eventArgs.data.ButtonName,\r\n SubTableView: eventArgs.data.SubTableView,\r\n Intention: eventArgs.data.Intention,\r\n LeftTableId: this._form.GetScreen().GetEntityId(),\r\n RightTableId: this.Model.EntityId,\r\n LeftRecordId: this._form.GetScreen().GetRecordId(),\r\n RightRecordId: this.Model.RecordId,\r\n Sequence: this.Model.KSeq\r\n });\r\n });\r\n\r\n _.each(this._model.NestedData, (subGridData: GridDataModel) => {\r\n subGridData.QueryExpression = this._queryExpression;\r\n subGridData.GridParentEntityId = this._model.EntityId;\r\n\r\n let enableSubGridBasket = ko.observable(false);\r\n\r\n if (this._enableBasket() && subGridData.Rows.length > 0) {\r\n if (this._model.EntityId === subGridData.Rows[0].EntityId) {\r\n enableSubGridBasket = this._enableBasket;\r\n }\r\n }\r\n\r\n const grid = new BaseGrid({\r\n hideLifeStatusToggle: this._hideLifeStatusToggle,\r\n hideUnlink: this._hideUnlink,\r\n hideEdit: this._hideEdit,\r\n enableBasket: enableSubGridBasket,\r\n isEditable: ko.observable(true),\r\n screenType: this._screenType,\r\n isNested: true,\r\n properties: this._gridProperties,\r\n form: this._form,\r\n ParentRow: this\r\n });\r\n\r\n grid.On(EVENTS.ADD_TO_BASKET, this, (eventArgs) => {\r\n this.Trigger(EVENTS.ADD_TO_BASKET, {Row: eventArgs.data.Row})\r\n });\r\n\r\n grid.On(EVENTS.REMOVE_FROM_BASKET, this, (eventArgs) => {\r\n this.Trigger(EVENTS.REMOVE_FROM_BASKET, {Row: eventArgs.data.Row})\r\n });\r\n\r\n grid.On(EVENTS.RECORD_DELETED, this, () => {\r\n this.Trigger(EVENTS.RECORD_DELETED);\r\n });\r\n\r\n grid.On(EVENTS.REFRESH, this, () => {\r\n this.Trigger(EVENTS.REFRESH);\r\n });\r\n\r\n grid.On(EVENTS.DATA_SAVED, this, (eventArgs) => {\r\n this.Trigger(EVENTS.REFRESH, { SubGrid: eventArgs.data.SubGrid || grid, ParentRowId: eventArgs.data.ParentRowId || this.Model.RowId, UpdateRow: eventArgs.data.UpdateRow || this });\r\n });\r\n\r\n grid.On(EVENTS.OPEN_HYPERLINK, this, (eventArgs: any) => {\r\n UserVarsManager.Instance.AddRecent(eventArgs.data.EntityId, eventArgs.data.RecordId, eventArgs.data.RecordTypeId);\r\n Lockr.set(LOCAL_STORAGE.HYPERLINK_SOURCE, this._form ? this._form.GetScreen().GetEntityId().toString() : null)\r\n\r\n this.GoToRecordScreen(eventArgs.data);\r\n });\r\n\r\n grid.On(TOOLBAR_EVENTS.LINK_RECORD, this, (eventArgs) => {\r\n let record = this.GetMainRecord(subGridData.SubQueryGuid, subGridData.QueryExpression);\r\n \r\n this.Trigger(TOOLBAR_EVENTS.LINK_RECORD, eventArgs.data.MainRecordId && eventArgs.data.MainEntityId && eventArgs.data.RelatedEntityId ? eventArgs.data : {\r\n MainRecordId: record.RecordId,\r\n MainEntityId: record.EntityId,\r\n RelatedEntityId: grid.Model.GridSubjectEntityId\r\n });\r\n });\r\n\r\n grid.On(TOOLBAR_EVENTS.LINK_PARENT_RECORD, this, (eventArgs) => {\r\n this.Trigger(TOOLBAR_EVENTS.LINK_PARENT_RECORD, eventArgs.data.Row && eventArgs.data.RelatedEntityId ? eventArgs.data : {\r\n Row: this,\r\n RelatedEntityId: grid.Model.GridSubjectEntityId\r\n });\r\n });\r\n\r\n grid.On(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, this, (eventArgs) => {\r\n let record = this.GetMainRecord(subGridData.SubQueryGuid, subGridData.QueryExpression);\r\n this.Trigger(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, eventArgs.data.Row && eventArgs.data.RelatedEntityId ? eventArgs.data : {\r\n MainRecordId: record.RecordId,\r\n MainEntityId: record.EntityId,\r\n RelatedEntityId: grid.Model.GridSubjectEntityId\r\n });\r\n });\r\n\r\n grid.On(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, this, (eventArgs) => {\r\n let record = this.GetMainRecord(subGridData.SubQueryGuid, subGridData.QueryExpression);\r\n this.Trigger(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, eventArgs.data.Row && eventArgs.data.RelatedEntityId ? eventArgs.data : {\r\n MainRecordId: record.RecordId,\r\n MainEntityId: record.EntityId,\r\n RelatedEntityId: grid.Model.GridSubjectEntityId\r\n });\r\n });\r\n\r\n grid.On(EVENTS.EDIT_LINK, this, (eventArgs: any) => {\r\n let record = this.GetMainRecord(subGridData.SubQueryGuid, subGridData.QueryExpression);\r\n\r\n this.Trigger(EVENTS.EDIT_LINK, eventArgs.data.mainRecordId && eventArgs.data.mainEntityId && eventArgs.data.gridRow ? eventArgs.data : {\r\n mainEntityId: record.EntityId,\r\n mainRecordId: record.RecordId,\r\n gridRow: eventArgs.data.gridRow\r\n });\r\n });\r\n\r\n grid.On(EVENTS.LOAD_SUB_GRID, this, (eventArgs) => {\r\n this.Trigger(EVENTS.LOAD_SUB_GRID, { SubGrid: eventArgs.data.SubGrid || grid, ParentRowId: eventArgs.data.ParentRowId || this.Model.RowId });\r\n });\r\n\r\n grid.On(EVENTS.CHANGE_VISIBLE_GROUP, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.CHANGE_VISIBLE_GROUP, { gridRow: eventArgs.data.gridRow });\r\n });\r\n\r\n grid.SetData(subGridData);\r\n this._nestedGrids.push(grid);\r\n\r\n this._actionCell.On(EVENTS.EXPAND, this, () => {\r\n grid.Expand();\r\n this.Trigger(EVENTS.LOAD_SUB_GRID, { SubGrid: grid, ParentRowId: this.Model.RowId });\r\n });\r\n\r\n this._actionCell.On(EVENTS.COLLAPSE, this, () => grid.Colapse());\r\n });\r\n\r\n if (this._favoriteCell) {\r\n this._favoriteCell.IsFavorite =\r\n UserVarsManager.Instance.IsInFavorites(this._model.RecordId, this._model.EntityId, 0);\r\n }\r\n\r\n if (this._queryExpression.EntityJoins.length === 0\r\n && this._queryExpression.SubEntityJoins.length > 0\r\n && this._queryExpression.SubEntityJoins[0].Entity.Metadata.IsView) {\r\n if (this._screenType === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n this._isEditable(false);\r\n }\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.Portlet]) {\r\n this._isEditable(this._hasProcessCards);\r\n }\r\n }\r\n\r\n GetMainRecord(guid: string, query: QueryExpressionModel): RecordKey{\r\n let entity = Util.GetEntityByGuid(guid, query);\r\n let parentEntity = Util.GetParentEntity(entity, query);\r\n let record = _.find(this._model.RecordKeys, (recordKey)=> recordKey.QueryEntityGuid === parentEntity.Guid);\r\n return record;\r\n }\r\n\r\n PrintLabel(dataCell: DataCell){\r\n let label = dataCell.DisplayValue;\r\n if(_.isEmpty(label)){\r\n let alias = _.find(this._dataCells(), (cell)=> cell.Model.FieldMetadata.Type == FIELD_TYPES.Alias);\r\n if(alias){\r\n label = alias.DisplayValue;\r\n }\r\n } \r\n DocumentManagerStore.PrintLabel({ Barcode: label }).fail(err=>new Notifier().Failed(err.message));\r\n }\r\n\r\n private InitWrappedRows(){\r\n let maxWrapped = _.max(this._model.Data, (item) => item.CrossWrapped.length);\r\n\r\n if(this._model.Data.length > 0 && maxWrapped.CrossWrapped.length > 0){\r\n for(let indx=0; indx<maxWrapped.CrossWrapped.length; indx++){\r\n\r\n let model = new GridRowModel();\r\n _.each(this._model.Data, (cell)=>{\r\n let wrappedCell = cell.CrossWrapped[indx];\r\n if(wrappedCell){\r\n model.Data.push(wrappedCell);\r\n }else{\r\n let emptyCell = new GridCellValueModel();\r\n model.Data.push(emptyCell)\r\n }\r\n });\r\n\r\n let row = new GridRow(\r\n model,\r\n this._isEditable,\r\n ko.observable(true),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(true),\r\n ko.observableArray([]),\r\n this._isEnableSelectRecord,\r\n null,\r\n this._isVisibleButtons(),\r\n this._queryExpression,\r\n this._isNewRecord,\r\n !!this._favoriteCell,\r\n ko.observable(this._maxRowHeight),\r\n this._form,\r\n [],\r\n false,\r\n this._gridProperties,\r\n this._isSubGrid,\r\n this._isGroupMode,\r\n false,\r\n false,\r\n this._hasTotalRow\r\n )\r\n this._crossTableWrapped.push(row);\r\n }\r\n }\r\n }\r\n\r\n get CrossTableWrapped(): Array<GridRow> {\r\n return this._crossTableWrapped\r\n }\r\n\r\n get HasSubGridsData(): boolean {\r\n var result = false;\r\n _.each(this._model.NestedData, (nestedData: any) => {\r\n if (nestedData.TotalRecords > 0) {\r\n result = true;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n get HasSubGrids(): boolean {\r\n return this._model.NestedData.length > 0;\r\n }\r\n\r\n GoToRecordScreen(data: any) {\r\n data.IsOpenInModal = data.ShowInModal ? data.ShowInModal : this._form ? this._form.GetScreen().IsInModal() : true;\r\n data.Owner = this._form ? this._form.GetScreen() : null;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n }\r\n\r\n SaveRow(): boolean {\r\n let isDataValid = true;\r\n\r\n _.each(this.DataCells, item => {\r\n if (!item.IsDataValid() && !item.IsReadOnly()) {\r\n isDataValid = false;\r\n }\r\n });\r\n\r\n if (isDataValid) {\r\n _.each(this.DataCells, item => {\r\n item.SaveControlValue(this.GetLinkEditorFieldData(item.Model.FieldMetadata.Id));\r\n });\r\n this.Trigger(EVENTS.SAVE_RECORD);\r\n }\r\n this.SetRowColor();\r\n return isDataValid;\r\n }\r\n\r\n SaveLinkEditorData(controls: Array<IControl>) {\r\n _.each(controls, (control) => {\r\n let controlField = control.GetFieldModel();\r\n if (controlField) {\r\n let cellByFieldId = _.find(this._dataCells(), (dataCell) => {\r\n return dataCell.Model.FieldMetadata.Id === controlField.Id && dataCell.IsEnableEdit();\r\n });\r\n\r\n if (cellByFieldId) {\r\n cellByFieldId.SaveLinkEditorValue(control);\r\n }\r\n }\r\n });\r\n }\r\n\r\n GetLinkEditorFieldData(fieldId: number): FieldDataModel {\r\n if (this._linkEditorData) {\r\n let linkEditorData = _.find(this._linkEditorData.LinkEditorChanges, (linkEditorChange) => {\r\n return linkEditorChange.EntityId == this.EntityId && linkEditorChange.RecordId == this.RecordId;\r\n });\r\n\r\n if (linkEditorData) {\r\n let fieldValue = _.find(linkEditorData.FieldValues, (fieldValue) => {\r\n return fieldValue.FieldId === fieldId;\r\n });\r\n return fieldValue;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n EnterKey() {\r\n if (this._isEditMode) return true;\r\n this.Trigger(\r\n EVENTS.OPEN_HYPERLINK,\r\n { EntityId: this._model.EntityId, RecordId: this._model.RecordId, RecordTypeId: this._model.RecordTypeId }\r\n );\r\n }\r\n\r\n SelectRecord() {\r\n this.Trigger(\r\n EVENTS.SELECT_RECORD,\r\n {\r\n Row: this\r\n }\r\n );\r\n }\r\n\r\n get State(): States {\r\n return this._state;\r\n }\r\n\r\n set State(state: States) {\r\n this._state = state;\r\n }\r\n\r\n MarkRecodsInBasket(records: Array<number>) {\r\n this.RecordInBasket = records.indexOf(this.RecordId) >= 0;\r\n\r\n _.each(this._nestedGrids(), (nestedGrid) => {\r\n nestedGrid.MarkRecodsInBasket(records);\r\n });\r\n }\r\n\r\n set GroupedData(data) {\r\n this._groupedData = data;\r\n }\r\n\r\n get GroupedData() {\r\n return this._groupedData;\r\n }\r\n\r\n GetGroupedDataTooltip() {\r\n return this._groupedData.map(item => `${item.Title}: ${item.Value || ''}; `).join('');\r\n }\r\n\r\n OnHyperlinkClick(item: GroupedDataItem, event: JQuery.ClickEvent<HTMLElement>) {\r\n const recordkey = item.Cell.Model.RecordKeys[0];\r\n const isOpenAgenda = item.Cell.Model.EntityMetadata.Name === 'AGENDA';\r\n const entityId = recordkey.EntityId;\r\n const recordTypeId = item.Cell.Model.RecordTypeId;\r\n\r\n let ids = _.uniq(item.Cell.Model.RecordKeys.map(item=>item.RecordId));\r\n\r\n if(ids.length > 1){\r\n this.ShowGroupDetail(entityId, ids, isOpenAgenda, event);\r\n }else{\r\n this.ExecuteHyperlinkTrigger(entityId, isOpenAgenda, recordkey.RecordId, recordTypeId, event.ctrlKey);\r\n }\r\n }\r\n\r\n private ShowGroupDetail(\r\n entityId: number,\r\n recordIds: Array<number>,\r\n isOpenAgenda: boolean,\r\n event: JQuery.ClickEvent<HTMLElement>\r\n ){\r\n BlockUI.Block();\r\n GridStore.GetGroupDetail({ EntityId: entityId, RecordIds: recordIds })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (event.target instanceof HTMLElement) {\r\n const groupDetailsDropdown = new GroupDetailsDropdown();\r\n groupDetailsDropdown.SetData(result);\r\n groupDetailsDropdown.Show(event.target);\r\n groupDetailsDropdown.On(QUERY_RESULT_GRID_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.SelectedRecord.Model) {\r\n groupDetailsDropdown.Close();\r\n this.ExecuteHyperlinkTrigger(entityId, isOpenAgenda, eventArgs.data.SelectedRecord.Model.RecordId, eventArgs.data.SelectedRecord.Model.RecordTypeId, event.ctrlKey);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n private ExecuteHyperlinkTrigger(\r\n entityId: number,\r\n isOpenAgenda: boolean,\r\n recordId: number,\r\n recordTypeId: number,\r\n showInModal: boolean\r\n ){\r\n this.Trigger(EVENTS.OPEN_HYPERLINK, {\r\n EntityId: entityId,\r\n IsOpenAgenda: isOpenAgenda,\r\n RecordId: recordId,\r\n RecordTypeId: recordTypeId,\r\n ShowInModal: showInModal\r\n });\r\n }\r\n\r\n set LinkEditorData(linkEditorData: UpdateDataModel) {\r\n this._linkEditorData = linkEditorData;\r\n _.each(this._linkEditorData.LinkEditorChanges, (item) => {\r\n item.Guid = this.Guid;\r\n });\r\n }\r\n\r\n get LinkEditorData(): UpdateDataModel {\r\n return this._linkEditorData;\r\n }\r\n\r\n GridUnlinkMultipleRecords() {\r\n this._actionCell.IsMultipleUnlinkModeActive = true;\r\n }\r\n\r\n GridConfirmMultipleUnlinking() {\r\n this._actionCell.IsMultipleUnlinkModeActive = false;\r\n }\r\n\r\n GridCancelMultipleUnlinking() {\r\n this._actionCell.IsMultipleUnlinkModeActive = false;\r\n }\r\n\r\n SubGridUnlinkMultipleRecords() {\r\n this._actionCell.IsMultipleUnlinkModeActive = true;\r\n }\r\n\r\n SubGridConfirmMultipleUnlinking() {\r\n this._actionCell.IsMultipleUnlinkModeActive = false;\r\n }\r\n\r\n SubGridCancelMultipleUnlinking() {\r\n this._actionCell.IsMultipleUnlinkModeActive = false;\r\n }\r\n\r\n\r\n\r\n SerializeLinkEditorData(): UpdateDataModel {\r\n if (this._linkEditorData) {\r\n return Serialize(this._linkEditorData);\r\n }\r\n return null;\r\n }\r\n\r\n GetColumns(isWrapped: boolean) { \r\n return _.filter(this._dataCells(), (cell) => {\r\n return cell.IsWrapped === isWrapped && !cell.IsSortDescription;\r\n })\r\n }\r\n\r\n GetWrappedColumns() {\r\n let result = [];\r\n\r\n let wrappedCells = _.filter(this._dataCells(), (cell) => cell.IsWrapped);\r\n\r\n let wrapGroups = _.groupBy(wrappedCells, cell=>cell.Model.WrapGroup);\r\n _.each(wrapGroups, (group)=>{\r\n result.push(group);\r\n });\r\n\r\n return result;\r\n }\r\n\r\n GridGroupToggle(): void {\r\n this._isGroupActive(!this._isGroupActive());\r\n this.Trigger(EVENTS.CHANGE_VISIBLE_GROUP, {GroupActive: this._isGroupActive()});\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>) {\r\n this._el = _.find(elements, (el) => !!el.className && el.className.includes('flex-grid-row parent-row parent have-related'));\r\n \r\n const $el: any = $(this._el);\r\n\r\n if (\r\n this._form &&\r\n this._screenType !== ScreenTypes[ScreenTypes.EditScreen] &&\r\n this._isEntity &&\r\n !this.Model.IsGroup\r\n ) {\r\n const screen = this._form.GetScreen();\r\n\r\n if (screen.GetTableTypeFlowFolder()) {\r\n setTimeout(() => {\r\n const gridContainer = $el.closest('.grid-relative-container');\r\n\r\n const resizeObserver = new ResizeObserver(() => {\r\n $el.popover('destroy');\r\n\r\n $el.popover({\r\n content: '<i class=\"fa fa-ellipsis-v\" /><i class=\"fa fa-ellipsis-v\" />',\r\n template: `\r\n <div class=\"popover grid-relative-container__flow-folder-popover\">\r\n <div class=\"popover-content\" />\r\n </div>\r\n `,\r\n html: true,\r\n placement: 'left',\r\n trigger: 'manual',\r\n animation: false,\r\n container: gridContainer,\r\n viewport: gridContainer\r\n });\r\n\r\n $el.on('inserted.bs.popover', () => {\r\n const $grip = $(`#${$el.attr('aria-describedby')}`);\r\n\r\n $grip.data('EntityId', this.EntityId);\r\n $grip.data('RecordId', this.RecordId);\r\n\r\n $grip.draggable({\r\n helper: () =>\r\n $('<div />')\r\n .append($grip.clone().removeAttr('id')),\r\n classes: { 'ui-draggable-dragging': 'flow-folder-dragging-helper' },\r\n appendTo: 'body',\r\n scrollSensitivity: 75,\r\n zIndex: 100000\r\n });\r\n });\r\n\r\n $el.popover('show');\r\n });\r\n\r\n resizeObserver.observe(gridContainer[0]);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback($el[0], () => {\r\n $el.popover('destroy');\r\n\r\n resizeObserver.unobserve(gridContainer[0]);\r\n });\r\n }, 500);\r\n }\r\n }\r\n }\r\n\r\n get El(): HTMLElement {\r\n return this._el;\r\n }\r\n\r\n get IsGridRow(): boolean{\r\n return true;\r\n }\r\n\r\n HighlightSort(){\r\n this._showSortBorder(true);\r\n }\r\n\r\n UnHighlightSort(){\r\n this._showSortBorder(false);\r\n }\r\n}","// Module\nvar code = \"<!-- ko template: { name: $data.GetSortDescriptionRowTemplateName.bind($data) } --><!-- /ko --> <!-- ko if: Model.IsGroup --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row grouped parent-row parent related\\\" data-bind=\\\"style: {'background': _rowColorEnabled() && !_isEditMode() && _rowColor() }\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-tdata js-reserved\\\"></div> <!-- /ko --> <!-- ko if: _isEditable() || $data.HasSubGrids --> <div class=\\\"flex-grid-tdata edit-cell js-reserved\\\"> <span data-bind=\\\"click: $data.GridGroupToggle\\\" class=\\\"grid-group-toggle-btn\\\"> <i class=\\\"fa\\\" data-bind=\\\"css: {'fa-angle-up': _isGroupActive(), 'fa-angle-down': !_isGroupActive()}\\\"></i> </span> <!-- ko if: _relationshipType === 'Child' --> <span class=\\\"grid-relation-icon-container\\\" data-bind=\\\" attr: {'title': _labels.CHILD}\\\"> <i class=\\\"fa fa-arrow-down transition\\\"></i> </span> <!-- /ko --> <!-- ko if: _relationshipType === 'Parent' --> <span class=\\\"grid-relation-icon-container\\\" data-bind=\\\" attr: {'title': _labels.PARENT}\\\"> <i class=\\\"fa fa-arrow-up transition\\\"></i> </span> <!-- /ko --> <!-- ko if: _relationshipType === 'ToItself' --> <span class=\\\"grid-relation-icon-container\\\" data-bind=\\\" attr: {'title': _labels.ITSELF}\\\"> <i class=\\\"fa fa-retweet transition\\\"></i> </span> <!-- /ko --> </div> <!-- /ko --> <!-- ko with: _favoriteCell --> <div class=\\\"flex-grid-tdata favorite-cell js-reserved\\\"></div> <!-- /ko --> <!-- ko if: ($data._dataCells() && GroupedData.length > 0) --> <div class=\\\"flex-grid-tdata-grouped wrapped\\\" data-bind=\\\"attr: {title : GetGroupedDataTooltip()}\\\"> <!-- ko foreach: GroupedData --> <!-- ko text: Title --> <!-- /ko -->: <!-- ko if: $data.Cell._isHyperLink --> <!-- ko if: Value --> <span data-bind=\\\"text: Value, click: $parent.OnHyperlinkClick.bind($parent)\\\" class=\\\"hyperlink\\\"> </span> <!-- /ko --> <!-- ko ifnot: Value --> <i data-bind=\\\"click: $parent.OnHyperlinkClick.bind($parent)\\\" class=\\\"fa fa-external-link\\\" aria-hidden=\\\"true\\\"> </i> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $data.Cell._isHyperLink --> <!-- ko text: Value --><!-- /ko --> <!-- /ko -->; <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: Model.IsGroup --> <div data-bind=\\\"enterKey: {handler: $data.EnterKey.bind($data), bubble: true}, style: {'background': _rowColorEnabled() && !_isEditMode() && _rowColor()},\\r\\n visible: _isGroupActive(),\\r\\n\\t\\t\\t\\t\\tcss: {'editModeActive': _isEditMode(), 'sort-row': $data._showSortBorder, 'not-grouped': true }\\\" tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent have-related\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-tdata js-reserved\\\"> <input data-bind=\\\"uniform: _isSelected, checked: _isSelected, click: IsSelectedChanged\\\" type=\\\"checkbox\\\"> </div> <!-- /ko --> <!-- ko if: ShowActionCell() --> <div class=\\\"flex-grid-tdata edit-cell js-reserved\\\" data-bind=\\\"style: {'background': _rowColorEnabled() && !_isEditMode() && _rowColor() }\\\"> <!-- ko if: _relationshipType === 'Child' --> <span class=\\\"grid-relation-icon-container\\\" data-bind=\\\" attr: {'title': _labels.CHILD}\\\"> <i class=\\\"fa fa-arrow-down transition\\\"></i> </span> <!-- /ko --> <!-- ko if: _relationshipType === 'Parent' --> <span class=\\\"grid-relation-icon-container\\\" data-bind=\\\" attr: {'title': _labels.PARENT}\\\"> <i class=\\\"fa fa-arrow-up transition\\\"></i> </span> <!-- /ko --> <!-- ko if: _relationshipType === 'ToItself' --> <span class=\\\"grid-relation-icon-container\\\" data-bind=\\\" attr: {'title': _labels.ITSELF}\\\"> <i class=\\\"fa fa-retweet transition\\\"></i> </span> <!-- /ko --> <!-- ko with: _actionCell --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!-- ko with: _favoriteCell --> <div class=\\\"flex-grid-tdata favorite-cell js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> </div> <!-- /ko --> <!-- ko fastForEach: { data: _dataCells } --> <!--ko if: $data.IsOrdinary --> <div class=\\\"flex-grid-tdata\\\" data-bind=\\\"css: $data.GetGrid($context).GetClassNames(Model, [IsEditMode]),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tstyle: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'maxHeight': _maxRowHeight + 'px',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'width': Model.width\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tattr: GetAttributes($index()),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttooltip: $data.Tooltip,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttemplate: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) }\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- ko with: $data._selectRowCell --> <div class=\\\"flex-grid-tdata js-reserved\\\"> <!-- ko template: { name: GetTemplateName } --><!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko if: HasWrappedColumn --> <!-- ko foreach: GetWrappedColumns() --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related\\\" data-bind=\\\"\\r\\n visible: $parent._isGroupActive(),\\r\\n\\t\\t\\t style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <!-- ko foreach: $data --> <div class=\\\"flex-grid-tdata td-wrapped\\\" data-bind=\\\"css: $parents[2].GetClassNames(Model, [IsEditMode]),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: {'background': $parents[1]._rowColorEnabled() && !$parents[1]._isEditMode() && $parents[1]._rowColor() }\\\"> <!-- ko template: { name: $data.GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: IsEndGroup --> <!-- ko with: $parent.GetTotalGroup($data.GroupGuid) --> <!-- ko if: HasData --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent have-related\\\" data-bind=\\\"\\r\\n visible: _isGroupActive(),\\r\\n style: {'background': _rowColorEnabled() && !_isEditMode() && _rowColor() }\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-tdata js-reserved\\\"></div> <!-- /ko --> <!-- ko if: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-edit js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <b><!-- ko text: _labels.SUBTOTAL --><!-- /ko --></b> </div> <!-- ko if: $data._showFavoriteCell--> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-favorite js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"></div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-favorite total-cell-edit js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <b><!-- ko text: _labels.SUBTOTAL --><!-- /ko --></b> </div> <!-- /ko --> <!-- ko foreach: _dataCells --> <!-- ko if: !IsWrapped --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view\\\" data-bind=\\\"css: $parents[2]._columnClassesTotalCollection()[$index()],\\r\\n\\t\\t\\t\\t\\tattr: {\\r\\n\\t\\t\\t\\t\\t\\t'data-priority': _columnModel.DisplayPriority,\\r\\n\\t\\t\\t\\t\\t\\t'data-index':$index(),\\r\\n\\t\\t\\t\\t\\t\\t'data-value': Boolean(Value)\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tstyle: {width: $parents[2].getColumnWidth.call($parents[2], $index()), 'background': $parent._rowColorEnabled && $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!-- ko if: HasWrappedColumn --> <!-- ko foreach: _dataCells --> <!-- ko if: IsWrapped --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <div class=\\\"flex-grid-tdata a-testing-helper-table-view td-wrapped\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: $parent.GetAverageGroup($data.GroupGuid) --> <!-- ko if: HasData --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent have-related\\\" data-bind=\\\"style: {'background': _rowColorEnabled() && !_isEditMode() && _rowColor() }\\\"> <!-- ko if: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view average-cell-edit js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <b>Average</b> </div> <div class=\\\"flex-grid-tdata a-testing-helper-table-view average-cell-favorite js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"></div> <!-- /ko --> <!-- ko ifnot: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view average-cell-favorite js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <b>Average</b> </div> <!-- /ko --> <!-- ko foreach: _dataCells --> <!-- ko if: !IsWrapped --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view\\\" data-bind=\\\"css: $parents[2]._columnClassesCollection()[$index()],\\r\\n\\t\\t\\t\\t\\tattr: {'data-priority': _columnModel.DisplayPriority, 'data-index':$index()},\\r\\n\\t\\t\\t\\t\\tstyle: {width: $parents[2].getColumnWidth.call($parents[2], $index()), 'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor()}\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!-- ko if: HasWrappedColumn --> <!-- ko foreach: _dataCells --> <!-- ko if: IsWrapped --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <div class=\\\"flex-grid-tdata a-testing-helper-table-view td-wrapped\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko foreach: _nestedGrids --> <!-- ko if: _visible --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related subTableContainer\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <div class=\\\"flex-grid-tdata flex-grid-nested-table\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\" style=\\\"min-width:100%\\\"> <!-- ko with: _toolbar --> <div data-bind=\\\"attr: {id: 'control-' + $parent._guid}\\\" class=\\\"toolbar-wrapper\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"table-scrollable\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> </div> <!-- ko with: _toolbar --> <div class=\\\"pagination-container-grid margin-t-15px\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: $data.SortDescriptionColumn() --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related sortDescriptionColumn\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <div class=\\\"flex-grid-tdata td-wrapped\\\" data-bind=\\\"css: $parents[1].GetClassNames(Model, [IsEditMode]),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <!-- ko template: { name: $data.GetTemplateName.bind($data) } --> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","export enum States {\r\n\tNoChanges,\r\n\tNew,\r\n\tEdit,\r\n\tDelete,\r\n\tLink,\r\n\tUnlink,\r\n\tLinkAndEdit\r\n}","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport { IForm, IScreen } from \"Core/Screens/IScreen\";\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/GridRow/Templates/GridScreenRow.html';\r\nimport { BlockUI } from \"../Index\";\r\nko.templates['Core/Controls/Grid/BaseGrid/GridRow/Templates/GridScreenRow'] = Template;\r\n\r\nexport class GridScreenRow{\r\n private _screen: KnockoutObservable<IScreen>;\r\n private __screen: IScreen;\r\n private _el: HTMLElement;\r\n private _form: IForm;\r\n private _recordId: number;\r\n\r\n\r\n constructor(screen: IScreen, form: IForm, recordId: number){\r\n this._screen = ko.observable(null);\r\n this.__screen = screen;\r\n this._recordId = recordId;\r\n this._form = form; \r\n }\r\n\r\n async LoadScreenData(){\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n let screen = await screenManager.GetScreenById({ ScreenId: this.__screen.GetScreenId(), RecordId: this._recordId });\r\n this._screen(screen);\r\n this.__screen = screen;\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>){\r\n this._el = _.find(elements, el=>el.nodeType === 1);\r\n let $el: any = $(this._el);\r\n\r\n if (this._form && this.__screen.GetRecordId() > 0) {\r\n const screen = this._form.GetScreen();\r\n\r\n if ( screen.GetType() !== ScreenTypes[ScreenTypes.EditScreen] && screen.GetTableTypeFlowFolder()) {\r\n setTimeout(() => {\r\n const gridContainer = $el.closest('.grid-relative-container');\r\n\r\n const resizeObserver = new ResizeObserver(() => {\r\n $el.popover('destroy');\r\n\r\n $el.popover({\r\n content: '<i class=\"fa fa-ellipsis-v\" /><i class=\"fa fa-ellipsis-v\" />',\r\n template: `\r\n <div class=\"popover grid-relative-container__flow-folder-popover\">\r\n <div class=\"popover-content\" />\r\n </div>\r\n `,\r\n html: true,\r\n placement: 'left',\r\n trigger: 'manual',\r\n animation: false,\r\n container: gridContainer,\r\n viewport: gridContainer\r\n });\r\n\r\n $el.on('shown.bs.popover', (evt) => {\r\n const $grip = $(`#${$el.attr('aria-describedby')}`);\r\n $grip.css({top: evt.currentTarget.offsetTop});\r\n });\r\n\r\n $el.on('inserted.bs.popover', () => {\r\n const $grip = $(`#${$el.attr('aria-describedby')}`);\r\n\r\n $grip.data('EntityId', this.__screen.GetEntityId());\r\n $grip.data('RecordId', this._recordId);\r\n\r\n $grip.draggable({\r\n helper: () =>\r\n $('<div />')\r\n .append($grip.clone().removeAttr('id')),\r\n classes: { 'ui-draggable-dragging': 'flow-folder-dragging-helper' },\r\n appendTo: 'body',\r\n scrollSensitivity: 75,\r\n zIndex: 100000\r\n });\r\n });\r\n\r\n $el.popover('show');\r\n });\r\n\r\n resizeObserver.observe(gridContainer[0]);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback($el[0], () => {\r\n $el.popover('destroy');\r\n\r\n resizeObserver.unobserve(gridContainer[0]);\r\n });\r\n }, 1500);\r\n }\r\n }\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Controls/Grid/BaseGrid/GridRow/Templates/GridScreenRow';\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: _screen --> <!-- ko if: IsCardScreen --> <div class=\\\"row row-no-margin\\\" data-bind=\\\"\\r\\n style: {\\r\\n 'width': _screenWidth(),\\r\\n 'background-color': _screenBgColor(),\\r\\n 'color': _fontColor()\\r\\n },\\r\\n css: {'custom-color': _hasCustomColor(), 'custom-weight': _hasCustomWeight()},\\r\\n class: _customStyle()\\r\\n \\\"> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: IsCardScreen --> <div class=\\\"row row-no-margin\\\"> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport {TotalCell} from 'Core/Controls/Grid/BaseGrid/GridCell/TotalCell';\r\nimport {GridAverageRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridAverageRowModel';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class GridAverageRow {\r\n\tprivate _dataCells: KnockoutObservableArray<TotalCell>;\r\n\r\n\tconstructor(\r\n\t\tprivate _model: GridAverageRowModel,\r\n\t\tpublic _isEnableSelectRecord: KnockoutObservable<boolean>,\r\n\t\tcolumns: GridColumnModel[]\r\n\t) {\r\n\t\tthis._dataCells = ko.observableArray([]);\r\n\t\t_.each(this._model.Data, (item, index) => {\r\n\t\t\tlet filterAverageColumns = _.filter(columns, column => !column.IsSortDescription);\r\n\t\t\tthis._dataCells.push(new TotalCell(item, filterAverageColumns[index]));\r\n\t\t});\r\n\t}\r\n\r\n\t@enumerable\r\n\tget HasWrappedColumn(): boolean {\r\n\t\tvar wrappedCell = _.find(this._dataCells(), (dataCell) => { return dataCell.IsWrapped });\r\n\t\treturn wrappedCell != null;\r\n\t}\r\n\r\n\t@enumerable\r\n\tget HasData(): boolean {\r\n\t\treturn this._model.Data.length > 0;\r\n\t}\r\n\r\n\t@enumerable\r\n\tget Guid(): string {\r\n\t\treturn this._model.Guid;\r\n\t}\r\n}","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport {BaseColumn} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {SortOrder} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\n\r\nexport class GroupColumn extends BaseColumn {\r\n\tconstructor(model: GridColumnModel) {\r\n\t\tsuper(model);\r\n\t\tthis._sortOrder(SortOrder.Asc);\r\n\t}\r\n\r\n\tResetSort() {\r\n\t\tthis._sortOrder(SortOrder.Asc);\r\n\t}\r\n\r\n\tget IsGroup(): boolean {\r\n\t\treturn this._model.IsGroup;\r\n\t}\r\n\r\n\tget IsEnableSort(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tSort() {\r\n\t\t if (this._sortOrder() === SortOrder.Asc) {\r\n\t\t\tthis._sortOrder(SortOrder.Desc);\r\n\t\t} else if (this._sortOrder() === SortOrder.Desc) {\r\n\t\t\tthis._sortOrder(SortOrder.Asc);\r\n\t\t}\r\n\r\n\t\tthis.Trigger(EVENTS.SORT, { Column: this._model.Alias, SortOrder: this._sortOrder() });\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\n\r\nimport SearchTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Search/FastFilterSearch.html'\r\n\r\nexport class FastFilterSearch {\r\n\tprivate _element: HTMLElement;\r\n\tprivate _model: GridColumnModel;\r\n\tprivate _searchValue: KnockoutObservable<string>;\r\n\tprivate _changeTimerId: number;\r\n\tprivate _filterType: string;\r\n\tprivate _inputType: string;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(model: GridColumnModel, callback: any) {\r\n\t\tthis._labels = LABELS;\r\n\t\tthis._searchValue = ko.observable('');\r\n\t\tthis._model = model;\r\n\t\tthis._inputType = 'text';\r\n\r\n\t\tthis._searchValue.subscribe((value) => {\r\n\t\t\tif (this._changeTimerId) {\r\n\t\t\t\tclearTimeout(this._changeTimerId);\r\n\r\n\t\t\t\tthis._changeTimerId = setTimeout(() => {\r\n\t\t\t\t\tthis._changeTimerId = null;\r\n\t\t\t\t\tthis._searchValue(this.FormatInputValue(value));\r\n\r\n\t\t\t\t\tcallback(this._searchValue());\r\n\t\t\t\t}, 500);\r\n\t\t\t} else {\r\n\t\t\t\tthis._changeTimerId = setTimeout(() => callback(value), 600);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate FormatInputValue(value) {\r\n\t\tswitch (this._filterType) {\r\n\t\t\tcase 'datetime':\r\n\t\t\t\tif (value > 9999) {\r\n\t\t\t\t\tconst newValue = value.toString();\r\n\r\n\t\t\t\t\tvalue = +newValue.substring(0, 4);\r\n\t\t\t\t} else if (value < 0) {\r\n\t\t\t\t\tvalue = '';\r\n\t\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t// fix zero-length value handling\r\n\tAddEventListenerChangeValue(parentEl) {\r\n\t\tconst $input = $(parentEl).find('.fast-filter-search-input')[0];\r\n\r\n\t\tif (!$input) return;\r\n\r\n\t\t$input.onkeyup = () => {\r\n\t\t\tconst actualValue: any = $($input).val();\r\n\r\n\t\t\tif (!actualValue.length) {\r\n\t\t\t\tthis._searchValue(actualValue);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tGetTemplate(arg?) {\r\n\t\tthis._filterType = arg && arg.filterType;\r\n\r\n\t\tif (this._filterType === 'datetime') {\r\n\t\t\tthis._inputType = 'number';\r\n\t\t} else {\r\n\t\t\tthis._inputType = 'text';\r\n\t\t}\r\n\r\n\t\treturn SearchTemplate;\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement) {\r\n\t\tthis._element = el;\r\n\t\tthis.AddEventListenerChangeValue(this._element);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter-search\\\"> <input class=\\\"fast-filter-search-input subFormControl\\\" data-bind=\\\"textInput: _searchValue,\\r\\n\\t attr: {\\ttype: _inputType,\\r\\n\\t \\t\\t\\tplaceholder: _labels.SEARCH_WITH_DOTS\\r\\n\\t \\t\\t},\\r\\n\\t\\t\\t\\t\\t inputMask: { fieldModel: _model.FieldMetadata, value: _searchValue }\\\" min=\\\"0\\\" max=\\\"9999\\\" autofocus> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {BlockUI as BlockUi} from 'Core/Common/BlockUi';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {\r\n\tIGetFastFilterRequestModel,\r\n\tFastFilterSaveModel,\r\n\tFastFilterValue,\r\n\tFastFilterItem\r\n} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport {GridStore, IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport { FastFilterSearch } from 'Core/Controls/Grid/BaseGrid/FastFilter/Search/FastFilterSearch';\r\nimport { JBoxDropDown } from 'Core/Components/JBoxDropdown/DropDown';\r\nimport enumerable from '../../../../Common/Decorators/EnumerableDecorator';\r\n\r\nexport class FastFilter extends Event {\r\n\tprivate _isItemsLoaded: KnockoutObservable<boolean>;\r\n\tprivate _showSearchScreenButton: KnockoutObservable<boolean>;\r\n\tprotected _isOpenFastFilter: KnockoutObservable<boolean>;\r\n\tprivate _searchTerm: KnockoutObservable<string>;\r\n\tprotected _isFilterApplied: KnockoutObservable<boolean>;\r\n\tprivate _searchScreenIfRecordsCount: number;\r\n\r\n\t// list of all available values\r\n\tprotected _availableItems: KnockoutObservableArray<FastFilterValue>;\r\n\t// view model that recreates after getting data and updatin search value\r\n\tprotected _viewModelItem: KnockoutObservableArray<FastFilterItem>;\r\n\t// save model that goes to local storage and is used for GetGridData request\r\n\tprotected _saveModel: FastFilterSaveModel;\r\n\t// other enabled filters excluding current one, is used for GetFilters request\r\n\tprotected _allFilters: FastFilterSaveModel[];\r\n\t// selected checkboxes store to be used between search value updates\r\n\tprotected _storedCheckboxes: FastFilterItem[];\r\n\r\n\tprotected _recordId: number;\r\n\tprotected _tableViewId: number;\r\n\tprotected _preselectedRecords: KnockoutObservableArray<any>;\r\n\tprivate _invalidMessage: KnockoutObservable<string>;\r\n\tprivate _getGridDataModel: IGetGridDataRequestModel;\r\n\tprotected _model: GridColumnModel;\r\n\tprotected _search: FastFilterSearch;\r\n\tprotected _searchValue: string;\r\n\tprotected _initialDataMapped: KnockoutObservable<boolean>;\r\n\tprotected _existedColumnAliases: string[];\r\n\tprotected _filterId : string;\r\n\r\n\tprotected _element: HTMLElement;\r\n\tprotected _labels = LABELS;\r\n\tprotected _dropDown: JBoxDropDown;\r\n\r\n\tprotected _originalViewModelItems: FastFilterItem[];\r\n\tprotected _regex: RegExp;\r\n\tprivate _isNewItemsLoaded: KnockoutObservable<boolean>;\r\n\tprotected _pageNumber: number;\r\n\tprivate _recordsPerPage: number;\r\n\tprivate _isSearch: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[],) {\r\n\t\tsuper();\r\n\r\n\t\tthis._model = model;\r\n\t\tthis._getGridDataModel = getGridDataModel;\r\n\t\tthis._recordId = recordId;\r\n\t\tthis._tableViewId = tableViewId;\r\n\t\tthis._isOpenFastFilter = ko.observable(false);\r\n\t\tthis._isFilterApplied = ko.observable(false);\r\n\t\tthis._searchTerm = ko.observable('');\r\n\t\tthis._isItemsLoaded = ko.observable(false);\r\n\t\tthis._showSearchScreenButton = ko.observable(false);\r\n\t\tconst searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n\t\tthis._searchScreenIfRecordsCount = isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n\t\tthis._preselectedRecords = ko.observableArray([]);\r\n\t\tthis._availableItems = ko.observableArray([]);\r\n\t\tthis._viewModelItem = ko.observableArray([]);\r\n\t\tthis._saveModel = null;\r\n\t\tthis._allFilters = [];\r\n\r\n\t\tthis._storedCheckboxes = null;\r\n\t\tthis._initialDataMapped = ko.observable(false);\r\n\t\tthis._existedColumnAliases = existedColumnAliases;\r\n\r\n\t\tthis._search = new FastFilterSearch(this._model, this.SearchChangeCallback.bind(this));\r\n\r\n\t\tthis._searchValue = '';\r\n\t\tthis._invalidMessage = ko.observable('');\r\n\t\tthis._filterId = JBoxDropDown.GetDropDownId();\r\n\r\n\t\tthis._originalViewModelItems = null;\r\n\t\tthis._regex = null;\r\n\t\tthis._isNewItemsLoaded = ko.observable(true);\r\n\t\tthis._pageNumber = 1;\r\n\t\tthis._recordsPerPage = 100;\r\n\t\tthis._isSearch = ko.observable(false);\r\n\r\n\t\tthis.AddEvent(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tprotected Preselect() {\r\n\t\tconst columnFilters = UserVarsManager.Instance.GetGridColumnFilters(this._recordId);\r\n\r\n\t\tif (columnFilters && columnFilters.length) {\r\n\t\t\tfor (let i = 0; i < columnFilters.length; i++) {\r\n\t\t\t\tif (columnFilters[i].FieldAlias === this._model.Alias\r\n\t\t\t\t\t&& columnFilters[i].TableViewId === this._tableViewId) {\r\n\r\n\t\t\t\t\tif (columnFilters[i].Values.length) {\r\n\t\t\t\t\t\tif (columnFilters[i].Values.find(item => item.Value && item.Value.split && item.Value.split(\";\").length > 1)) {\r\n\t\t\t\t\t\t\tcolumnFilters[i].Values.map(item => item.Value = item.Value.split(\";\")[0]);\r\n }\r\n\t\t\t\t\t\tthis._preselectedRecords(columnFilters[i].Values);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst isFilterApplied = columnFilters[i].Values.length;\r\n\r\n\t\t\t\t\tthis._isFilterApplied(isFilterApplied);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._allFilters = columnFilters || [];\r\n\r\n\t\tthis._allFilters = this._allFilters.filter((filter) => {\r\n\t\t\treturn this._existedColumnAliases.some((existedAlias) => {\r\n\t\t\t\treturn existedAlias === filter.FieldAlias;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprotected ReopenFastFilter() {\r\n\t\tthis._isOpenFastFilter(false);\r\n\t\tthis._isOpenFastFilter(true);\r\n\t}\r\n\r\n\tprotected MapToViewModel(isSearch?: boolean, isEmptySearchValue?: boolean) {\r\n\t\tconst viewModelList: FastFilterItem[] =\r\n\t\t\tthis._availableItems().map((item: FastFilterValue) => {\r\n\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(item);\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: item.Value && item.Value.toString(),\r\n\t\t\t\t\tDisplayValue: item.DisplayValue || (item.Value && item.Value.toString()) || this._labels.EMPTY_VALUE,\r\n\t\t\t\t\tChecked: wasItemChecked\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._preselectedRecords().forEach((preselected) => {\r\n\t\t\t\t\tif (viewModelItem.Value === preselected.Value && viewModelItem.DisplayValue === preselected.DisplayValue && !this._storedCheckboxes) {\r\n\t\t\t\t\t\tviewModelItem.Checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tif (this._viewModelItem().length && !isSearch && !isEmptySearchValue) {\r\n\t\t\tthis._viewModelItem.push(...viewModelList);\r\n\t\t} else {\r\n\t\t\tthis._viewModelItem(viewModelList);\r\n\t\t}\r\n\r\n\t\tthis._initialDataMapped(true);\r\n\t}\r\n\r\n\tprotected MapToSaveModel() {\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tconst listFromStore: FastFilterValue[] = [];\r\n\r\n\t\t// create prev selected checkboxes list that are checked and doesn't exist in view model\r\n\t\tif (this._storedCheckboxes) {\r\n\t\t\tthis._storedCheckboxes.forEach((storedItem) => {\r\n\t\t\t\tlet isItemOnlyInStore = !this._viewModelItem().some((viewItem) => {\r\n\t\t\t\t\treturn viewItem.Value === storedItem.Value;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (isItemOnlyInStore && storedItem.Checked) {\r\n\t\t\t\t\tlistFromStore.push({\r\n\t\t\t\t\t\tValue: storedItem.Value,\r\n\t\t\t\t\t\tDisplayValue: storedItem.DisplayValue\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\tlet valuesList: FastFilterValue[] = this._viewModelItem().filter((item) => {\r\n\t\t\tif (item.Checked) {\r\n\t\t\t\tdelete item.Checked;\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// extend valuesList with previously selected and currently unvisible items\r\n\t\tvaluesList = valuesList.concat(listFromStore);\r\n\r\n\t\tthis._saveModel = {\r\n\t\t\tFieldAlias: this._model.Alias,\r\n\t\t\tValues: valuesList,\r\n\t\t\tFieldId: this._model.FieldMetadata.Id,\r\n\t\t\tTableViewId: this._tableViewId\r\n\t\t};\r\n\r\n\t\tthis._allFilters.forEach((filter) => {\r\n\t\t\tif (filter.FieldAlias === this._model.Alias && filter.TableViewId === this._tableViewId) {\r\n\t\t\t\tfilter.Values = valuesList;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// clear store\r\n\t\tthis._storedCheckboxes = null;\r\n\t}\r\n\r\n\tget IsItemsLoaded() {\r\n\t\treturn this._isItemsLoaded();\r\n\t}\r\n\r\n\tset IsItemsLoaded(value) {\r\n\t\tthis._isItemsLoaded(value);\r\n\t}\r\n\r\n\tget ShowSearchScreenButton() {\r\n\t\treturn this._showSearchScreenButton();\r\n\t}\r\n\r\n\tset ShowSearchScreenButton(value) {\r\n\t\tthis._showSearchScreenButton(value);\r\n\t}\r\n\r\n\tget FilterModel(): FastFilterSaveModel {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tget FilterSaveModel(): FastFilterSaveModel {\r\n\t\treturn this._saveModel;\r\n\t}\r\n\r\n\tprotected Clear() {\r\n\t\tthis._preselectedRecords([]);\r\n\t\tthis.MapToSaveModel();\r\n\t\tthis._saveModel.Values = [];\r\n\r\n\t\tthis._viewModelItem().forEach((item) => item.Checked = false);\r\n\t\tthis._isFilterApplied(false);\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\t_Clear() {\r\n\t\tthis.Clear();\r\n\t\tthis._dropDown.Close();\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\t_Filter() {\r\n\t\tthis.Filter();\r\n\t\tthis._dropDown.Close();\r\n\t}\r\n\r\n\tprotected LoadFastFilterData(dropDownElement?: HTMLElement, removeBlockUi?: boolean, visibleBeginningSpinner?: boolean, isEmptySearchValue?: boolean) {\r\n\t\tthis._isOpenFastFilter(!this._isOpenFastFilter());\r\n\r\n\t\t// this.PopupToggleHandler();\r\n\r\n\t\tif (this.IsItemsLoaded) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tif (removeBlockUi){\r\n\t\t\tthis.CursorWait(dropDownElement, true);\r\n\t\t} else {\r\n\t\t\tBlockUi.Block({Target: dropDownElement});\r\n\r\n\t\t\tif (visibleBeginningSpinner) {\r\n\t\t\t\tthis.CursorWait(dropDownElement, true, visibleBeginningSpinner);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn GridStore.GetFastFilterData(this.GetRequestParams())\r\n\t\t\t.always(() => {\r\n\r\n\t\t\t\tif (removeBlockUi){\r\n\t\t\t\t\tthis.CursorWait(dropDownElement,false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tBlockUi.Unblock(dropDownElement);\r\n\r\n\t\t\t\t\tif (visibleBeginningSpinner) {\r\n\t\t\t\t\t\tthis.CursorWait(dropDownElement,false, visibleBeginningSpinner);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.DataLoadCallback(result.Items, false, isEmptySearchValue);\r\n\t\t\t\tthis.CheckPositionScroll(dropDownElement, result.TotalRecords, this._recordsPerPage, isEmptySearchValue);\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprotected SearchChangeCallback(value) {\r\n\t\tlet dropDownElement = this._dropDown.GetContentElement().childNodes[0];\r\n\t\tthis._searchValue = value;\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\t\tthis._pageNumber = 1;\r\n\r\n\t\tif (value === ''){\r\n\t\t\tthis._isSearch(false);\r\n\t\t\tthis.IsItemsLoaded = false;\r\n\t\t\tthis.LoadFastFilterData(dropDownElement, false, true, true).then(()=> {\r\n\t\t\t\tthis._isNewItemsLoaded(true);\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tthis._isSearch(true);\r\n\t\t\tBlockUi.Block(dropDownElement ? {Target: dropDownElement} : {});\r\n\r\n\t\t\tGridStore.GetFastFilterData(this.GetRequestParams())\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUi.Unblock(dropDownElement);\r\n\t\t\t\t})\r\n\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis.DataLoadCallback(result.Items, true, false);\r\n\r\n\t\t\t\t\tlet fastFilterList = $(dropDownElement).find('.fast-filter-list');\r\n\t\t\t\t\tthis.RangeHighlight(fastFilterList, value);\r\n\t\t\t\t})\r\n\t\t\t\t.fail((error) => {\r\n\t\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected DataLoadCallback(data, isSearch?: boolean, isEmptySearchValue?: boolean) {\r\n\t\tthis._availableItems(this.SortItems(data));\r\n\t\tthis.MapToViewModel(isSearch, isEmptySearchValue);\r\n\t\tthis.IsItemsLoaded = true;\r\n\t}\r\n\r\n\tprotected GetRequestParams(): IGetFastFilterRequestModel {\r\n\t\treturn {\r\n\t\t\tFilterColumnGuid: this._model.QueryColumnGuid,\r\n\t\t\tFilterSearchPhrase: this._searchValue,\r\n\t\t\tTimeZone: (new Date().getTimezoneOffset()) / 60,\r\n\t\t\tControlId: this._getGridDataModel.ControlId ,\r\n\t\t\tTableViewId: this._getGridDataModel.TableViewId,\r\n\t\t\tSubjectEntityId: this._getGridDataModel.SubjectEntityId,\r\n\t\t\tSubjectRecordId: this._getGridDataModel.SubjectRecordId,\r\n\t\t\tSubjectKindId: this._getGridDataModel.SubjectKindId,\r\n\t\t\tSubjectTypeId: this._getGridDataModel.SubjectTypeId,\r\n\t\t\tSubjectStatusId: this._getGridDataModel.SubjectStatusId,\r\n\t\t\tViewMode: this._getGridDataModel.ViewMode,\r\n\t\t\tPageNumber: this._pageNumber,\r\n\t\t\tRecordsPerPage: this._recordsPerPage,\r\n\t\t\tSort: null,\r\n\t\t\tSearchPhrase: this._getGridDataModel.SearchPhrase,\r\n\t\t\tScreenData: this._getGridDataModel.ScreenData,\r\n\t\t\tSelectedTags: this._getGridDataModel.SelectedTags,\r\n\t\t\tFilterByOwners: this._getGridDataModel.FilterByOwners,\r\n\t\t\tRecordOwners: this._getGridDataModel.RecordOwners,\r\n\t\t\tShowPlanned: this._getGridDataModel.ShowPlanned,\r\n\t\t\tQuery: this._getGridDataModel.Query,\r\n\t\t\tFastFilters: this._allFilters\r\n\t\t\t\t.filter((filter) => {\r\n\t\t\t\t\treturn filter.FieldAlias !== this._model.Alias\r\n\t\t\t\t\t\t&& filter.TableViewId === this._tableViewId\r\n\t\t\t\t\t\t&& filter.Values.length;\r\n\t\t\t\t})\r\n\t\t\t\t.map((filter) => {\r\n\t\t\t\t\tfilter.Values.forEach(value => {\r\n\t\t\t\t\t\tif (value.DisplayValue === LABELS.EMPTY_VALUE) {\r\n\t\t\t\t\t\t\tvalue.DisplayValue = null;\r\n\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\tFieldAlias: filter.FieldAlias,\r\n\t\t\t\t\t\tValues: filter.Values\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t};\r\n\t}\r\n\r\n\tprotected SortItems(itemsList: FastFilterValue[], isNumericSort?: boolean): FastFilterValue[] {\r\n\t\tif (!itemsList || !itemsList.length) return [];\r\n\r\n\t\titemsList.map((item) => {\r\n\t\t\tif (item.Childs && item.Childs.length) {\r\n\t\t\t\tthis.SortItems(item.Childs)\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn itemsList.sort((a, b) => {\r\n\t\t\tconst valueA = a.DisplayValue || a.Value;\r\n\t\t\tconst valueB = b.DisplayValue || b.Value;\r\n\r\n\t\t\tif (isNumericSort) {\r\n\t\t\t\tif (valueA != null && +valueA - +valueB) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t} else if (valueA == null) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (valueA && valueA < valueB) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else if (!valueA) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// synchronize _storedCheckboxes with view model\r\n\tprotected StoreSelectedCheckboxes() {\r\n\t\tif (!this._storedCheckboxes) {\r\n\t\t\tthis._storedCheckboxes = [];\r\n\t\t}\r\n\t\tthis._viewModelItem().forEach((item) => {\r\n\t\t\tlet existedItemIndex;\r\n\r\n\t\t\tconst existedItem = this._storedCheckboxes.find((storedItem, index) => {\r\n\t\t\t\tif (storedItem.Value === item.Value) {\r\n\t\t\t\t\texistedItemIndex = index;\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\tif (!existedItem && item.Checked) {\r\n\t\t\t\tthis._storedCheckboxes.push({\r\n\t\t\t\t\tValue: item.Value,\r\n\t\t\t\t\tChecked: true\r\n\t\t\t\t});\r\n\t\t\t} else if (existedItem && typeof existedItemIndex === 'number') {\r\n\t\t\t\tthis._storedCheckboxes[existedItemIndex].Checked = item.Checked;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected RestoreSelectedCheckbox(listItem): boolean {\r\n\t\treturn this._storedCheckboxes\r\n\t\t\t&& this._storedCheckboxes.some((storedItem) => {\r\n\t\t\t\tif (storedItem.Value === listItem.Value) {\r\n\t\t\t\t\treturn storedItem.Checked;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tGetTemplate() { }\r\n\r\n\tGetPopUpTemplate() {}\r\n\r\n\tOpenFilter() {\r\n\t\tthis._dropDown.Open();\r\n\t\tlet dropDownElement = this._dropDown.GetContentElement().childNodes[0];\r\n\r\n\t\tthis._isNewItemsLoaded(false);\r\n\t\treturn this.LoadFastFilterData(dropDownElement, false, true).then(()=> {\r\n\t\t\tthis._isNewItemsLoaded(true);\r\n\t\t})\r\n\t}\r\n\r\n\tRangeHighlight(list: JQuery, text: string) {\r\n\t\tlet listArr = list.find('.fast-filter-list-item-label span');\r\n\t\t_.each(listArr, (labelText)=> {\r\n\t\t\tlet root = labelText.firstChild,\r\n\t\t\t\tcontent = root.nodeValue;\r\n\r\n\t\t\tif (~content.indexOf(text)) {\r\n\t\t\t\tif (document.createRange) {\r\n\r\n\t\t\t\t\tlet rng = document.createRange();\r\n\t\t\t\t\trng.setStart(root, content.indexOf(text));\r\n\t\t\t\t\trng.setEnd(root, content.indexOf(text) + text.length);\r\n\r\n\t\t\t\t\tlet highlightDiv = document.createElement('span');\r\n\t\t\t\t\thighlightDiv.style.boxShadow = 'inset 0 1px 1px rgba(0,0,0,.075),0 0 4px var(--main-color-hover-1-rgba-06)';\r\n\r\n\t\t\t\t\trng.surroundContents(highlightDiv);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log('Your Browser does not support Range');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t})\r\n\t}\r\n\r\n\tCheckPositionScroll(dropDownElement: HTMLElement, recordsCount: number, recordsPerPage: number, isEmptySearchValue?: boolean) {\r\n\r\n\t\tconst percentValue: number = 80; // at what percentage of the height of the element to start the trigger\r\n\r\n\t\tlet list = $(dropDownElement).find('.fast-filter-list'),\r\n\t\t\tscrollHeight: number = 0,\r\n\t\t\tisScroll: number = 0,\r\n\t\t\tlastPages: number = Math.ceil(recordsCount / recordsPerPage),\r\n\t\t\tcounterPage: number = 1;\r\n\r\n\t\tif (list.length) {\r\n\r\n\t\t\tif (this._isSearch() || isEmptySearchValue){\r\n\t\t\t\tlist.off('scroll');\r\n\t\t\t\t// console.log('off scroll event '+' Search - '+ this._isSearch());\r\n\t\t\t}\r\n\r\n\t\t\tlist.on('scroll', (handler)=> {\r\n\r\n\t\t\t\tif (this._isSearch()){\r\n\t\t\t\t\tlist.off('scroll');\r\n\t\t\t\t\t// console.log('off scroll event '+' Search - '+ this._isSearch());\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (counterPage === lastPages) {\r\n\t\t\t\t\tlist.off('scroll');\r\n\t\t\t\t\tconsole.log('fast filter - all data has been loaded');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscrollHeight = list.prop(\"scrollHeight\") - list.height();\r\n\t\t\t\tlet targetScroll = Math.ceil( (percentValue / 100) * scrollHeight );\r\n\r\n\t\t\t\tif(isScroll === 0 && list.scrollTop() >= targetScroll) {\r\n\t\t\t\t\tisScroll = 1;\r\n\t\t\t\t\tif (this._isNewItemsLoaded()){\r\n\t\t\t\t\t\tcounterPage ++;\r\n\t\t\t\t\t\tthis._pageNumber = counterPage;\r\n\t\t\t\t\t\tthis.IsItemsLoaded = false;\r\n\t\t\t\t\t\tthis.LoadFastFilterData(list[0], true).then(()=>{\r\n\t\t\t\t\t\t\tthis._isNewItemsLoaded(true);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._isNewItemsLoaded(false);\r\n\t\t\t\t\t// console.log('counterPage - ' + this._pageNumber);\r\n\t\t\t\t} else if(isScroll === 1 && list.scrollTop() < targetScroll) {\r\n\t\t\t\t\tisScroll = 0;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tCursorWait(dropDownElement: HTMLElement, addCursor: boolean, visibleBeginningSpinner?: boolean){\r\n\t\tif (dropDownElement){\r\n\t\t\tlet fastFilterList = $(dropDownElement),\r\n\t\t\t\tisFastFilterList = $(dropDownElement).hasClass('fast-filter-list');\r\n\r\n\t\t\tif (!isFastFilterList && visibleBeginningSpinner) {\r\n\t\t\t\tfastFilterList = $(dropDownElement).find('.fast-filter-list');\r\n\t\t\t}\r\n\r\n\t\t\tif (addCursor){\r\n\t\t\t\tfastFilterList.addClass('cursorWait');\r\n\t\t\t} else {\r\n\t\t\t\tfastFilterList.removeClass('cursorWait');\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement) {\r\n\t\tthis._element = el[0];\r\n\t\tconst selector = `.${this._filterId}`;\r\n\t\tthis._dropDown = new JBoxDropDown({\r\n\t\t\ttarget: selector,\r\n\t\t\tonCreated: () => {\r\n\t\t\t\tthis._dropDown.SetContent({ content: this.GetPopUpTemplate() as any });\r\n\t\t\t},\r\n\t\t\tbindTarget: this._element,\r\n\t\t\tbindComponent: this,\r\n\t\t\totherOptions: {\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx: 'left',\r\n\t\t\t\t\ty: 'center'\r\n\t\t\t\t},\r\n\t\t\t\tadjustPosition: true,\r\n\t\t\t\tadjustTracker: true,\r\n\t\t\t\toutside: 'x',\r\n\t\t\t\tadjustDistance: {top: 55, right: 5, bottom: 5, left: 5},\r\n\t\t\t\tzIndex: 11000\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\n\r\nimport DecimalFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Decimal/DecimalFilter.html';\r\n\r\nexport class DecimalFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tprotected DataLoadCallback(data) {\r\n\t\tthis._availableItems(this.SortItems(data, true));\r\n\r\n\t\tthis.MapToViewModel();\r\n\t}\r\n\r\n\tFormatValue(value: string) {\r\n if (!value || value === LABELS.EMPTY_VALUE) {\r\n\t\t\treturn LABELS.EMPTY_VALUE;\r\n\t\t}\r\n\r\n\t\treturn FormatConverter.LocalizeDecimalOrInteger(\r\n\t\t\tthis._model.FieldMetadata.FormatName === FieldFormat.PERCENTAGE\r\n\t\t\t\t? (Number(value) * 100).toFixed(\r\n\t\t\t\t\t\tthis._model.FieldMetadata.Size < 2 ? 0 : this._model.FieldMetadata.Size - 2\r\n\t\t\t\t )\r\n\t\t\t\t: value\r\n\t\t);\r\n\t}\r\n\r\n\tGetIconFromModel() {\r\n\t\tswitch (this._model.FieldMetadata.FormatName) {\r\n\t\t\tcase FieldFormat.PERCENTAGE:\r\n\t\t\t\treturn 'fa fa-percent';\r\n\t\t\tcase FieldFormat.CURRENCY:\r\n\t\t\t\treturn 'fa fa-euro';\r\n\t\t\tdefault:\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn DecimalFilterTemplate;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-decimal\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-decimal'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\r\\n\\t\\t\\t\\t\\t<ul class='multi-level fast-filter-list'>\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t<!-- ko foreach: _viewModelItem -->\\r\\n\\t\\t\\t\\t\\t\\t<li class='fast-filter-list-item'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type='checkbox' data-bind='attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<label class='fast-filter-list-item-label' data-bind='attr: {for: `available-item-${$parent._filterId}-${$index()}`}'>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<span data-bind='text: $parent.FormatValue(DisplayValue)'></span>\\r\\n\\t\\t\\t\\t\\t\\t\\t</label>\\r\\n\\t\\t\\t\\t\\t\\t</li>\\r\\n\\t\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t</ul>\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Filter'>Filter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Clear'>Clear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\n\r\nimport IntegerFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Integer/IntegerFilter.html';\r\n\r\nexport class IntegerFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tprotected DataLoadCallback(data) {\r\n\t\tthis._availableItems(this.SortItems(data, true));\r\n\r\n\t\tthis.MapToViewModel();\r\n\t}\r\n\r\n FormatValue(value: string) {\r\n if (!value || value === LABELS.EMPTY_VALUE) {\r\n\t\t\treturn LABELS.EMPTY_VALUE;\r\n\t\t}\r\n\r\n\t\treturn FormatConverter.LocalizeDecimalOrInteger(value);\r\n\t}\r\n\r\n\tGetIconFromModel() {\r\n\t\tswitch (this._model.FieldMetadata.FormatName) {\r\n\t\t\tcase FieldFormat.PERCENTAGE:\r\n\t\t\t\treturn 'fa fa-percent';\r\n\t\t\tcase FieldFormat.CURRENCY:\r\n\t\t\t\treturn 'fa fa-euro';\r\n\t\t\tdefault:\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn IntegerFilterTemplate;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-integer\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-integer'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\r\\n\\t\\t\\t\\t\\t<ul class='multi-level fast-filter-list'>\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t<!-- ko foreach: _viewModelItem -->\\r\\n\\t\\t\\t\\t\\t\\t<li class='fast-filter-list-item'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type='checkbox' data-bind='attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<label class='fast-filter-list-item-label' data-bind='attr: {for: `available-item-${$parent._filterId}-${$index()}`}'>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<span data-bind='text: $parent.FormatValue(DisplayValue)'></span>\\r\\n\\t\\t\\t\\t\\t\\t\\t</label>\\r\\n\\t\\t\\t\\t\\t\\t</li>\\r\\n\\t\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t</ul>\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Filter'>Filter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Clear'>Clear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"css: { open: _isOpenFastFilter }\\\" class=\\\"fast-filter fast-filter-text\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> </a> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-text\\\"> <div class=\\\"fast-filter-list-wrapper\\\"> <!-- ko with: _search --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <ul class=\\\"multi-level fast-filter-list\\\"> <!-- ko foreach: _viewModelItem --> <li class=\\\"fast-filter-list-item\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked\\\"> <label class=\\\"fast-filter-list-item-label\\\" data-bind=\\\"attr: {for: `available-item-${$parent._filterId}-${$index()}`}\\\"> <span data-bind=\\\"text: DisplayValue\\\"></span> </label> </li> <!-- /ko --> <li class=\\\"fast-filter-list-item loadContainer\\\"> <div class=\\\"lds-ellipsis\\\"><div></div><div></div><div></div><div></div></div> </li> </ul> <div class=\\\"btn-block fast-filter-btns-container\\\"> <a class=\\\"fast-filter-btn btn btn-primary\\\" data-bind=\\\"click: _Filter\\\">Filter</a> <a class=\\\"fast-filter-btn btn btn-warning\\\" data-bind=\\\"click: _Clear\\\">Clear</a> </div> </div> </div>\";\n// Exports\nexport default code;","import {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\n\r\n// Templates\r\nimport TextFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/Templates/TextFilter.html';\r\nko.templates['Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/Templates/TextFilter'] = TextFilterTemplate;\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/Templates/TextFilterPopUp.html';\r\nko.templates['Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/Templates/TextFilterPopUp'] = Template;\r\n\r\nexport class TextFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn TextFilterTemplate;\r\n\t}\r\n\r\n\tGetPopUpTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n}","import {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {GridStore, IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {FastFilterItem, FastFilterValue} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport {BlockUI as BlockUi} from 'Core/Common/BlockUi';\r\nimport 'tree';\r\nimport * as moment from 'moment';\r\n\r\nimport DateFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Date/DateFilter.html';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nexport class DateFilter extends FastFilter {\r\n\tprivate _jsTreeModel: any;\r\n\tprivate _jsTreeSaveModel: any;\r\n\tprivate _jsTree: any;\r\n\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis._jsTreeModel = {};\r\n\t\tthis._jsTreeSaveModel = {};\r\n\r\n\t\tthis.Preselect();\r\n\t\tthis.OpenFilter = () => {\r\n\t\t\tsuper.OpenFilter.call(this).then(() => {\r\n\t\t\t\tthis.MapToJstreeModel();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//protected PopupToggleHandler() {\r\n\t//\tfunction closePopupHandler(e) {\r\n\t//\t\tconst currentDropdown = $('.fast-filter.open');\r\n\r\n\t//\t\tif (!currentDropdown.is(e.target) && !currentDropdown.has(e.target).length) {\r\n\t//\t\t\tthis._isOpenFastFilter(false);\r\n\r\n\t//\t\t\tdocument.removeEventListener('mouseup', closePopupHandler.bind(this));\r\n\t//\t\t}\r\n\t//\t}\r\n\r\n\t//\tif (this._isOpenFastFilter()) {\r\n\t//\t\tdocument.addEventListener('mouseup', closePopupHandler.bind(this));\r\n\t//\t}\r\n\t//}\r\n\tprotected MapToViewModel() {\r\n\t\tconst viewModelList: FastFilterItem[] =\r\n\t\t\tthis._availableItems().map((item: FastFilterValue) => {\r\n\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(item);\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: !item.Value || (item.Value === '0') ? null : item.Value.toString(),\r\n\t\t\t\t\tDisplayValue: !item.Value || (item.Value === '0') ? this._labels.EMPTY_VALUE : item.Value.toString(),\r\n\t\t\t\t\tChecked: wasItemChecked,\r\n\t\t\t\t\tChilds: item.Childs && item.Childs.map((child) => {\r\n\t\t\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(child);\r\n\r\n\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\tValue: child.Value && child.Value.toString(),\r\n\t\t\t\t\t\t\tDisplayValue: moment(child.Value && child.Value.toString(), 'M').format('MMMM'),\r\n\t\t\t\t\t\t\tChecked: wasItemChecked,\r\n\t\t\t\t\t\t\tChilds: child.Childs && child.Childs.map((child) => {\r\n\t\t\t\t\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(child);\r\n\r\n\t\t\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\t\t\tValue: child.Value && child.Value.toString(),\r\n\t\t\t\t\t\t\t\t\tDisplayValue: child.Value.toString(),\r\n\t\t\t\t\t\t\t\t\tChecked: wasItemChecked\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\treturn viewModelItem;\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 viewModelItem;\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\r\n\t\t\t\tIdentifyChecked.call(this, this._preselectedRecords(), item, viewModelItem);\r\n\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tfunction IdentifyChecked(preselectedList, currentItem, viewModelItem) {\r\n\t\t\tpreselectedList.forEach((preselected) => {\r\n\t\t\t\tif (!this._storedCheckboxes\r\n\t\t\t\t\t&& ((!viewModelItem.Value && !preselected.Value)\r\n\t\t\t\t\t|| (viewModelItem.Value && viewModelItem.Value.toString() === preselected.Value))) {\r\n\r\n\t\t\t\t\tviewModelItem.Checked = true;\r\n\r\n\t\t\t\t\tif (preselected.Childs && preselected.Childs.length && viewModelItem.Childs && viewModelItem.Childs.length) {\r\n\t\t\t\t\t\tpreselected.Childs.forEach((child) => {\r\n\t\t\t\t\t\t\tviewModelItem.Childs.forEach((viewChild) => {\r\n\t\t\t\t\t\t\t\tIdentifyChecked.call(this, preselected.Childs, child, viewChild);\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\tthis._viewModelItem(viewModelList);\r\n\t\tif (this._originalViewModelItems == null)\r\n\t\t\tthis._originalViewModelItems = _.uniq(viewModelList, false, time => time.DisplayValue);\r\n\t}\r\n\r\n\tprivate MapToJstreeModel() {\r\n\t\tthis._jsTreeModel = this._viewModelItem().map((item) => {\r\n\t\t\treturn {\r\n\t\t\t\ttext: item.DisplayValue,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tvalue: item.Value,\r\n\t\t\t\t},\r\n\t\t\t\tstate: {\r\n\t\t\t\t\topened: true,\r\n\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\tselected: !item.Value && item.Checked\r\n\t\t\t\t},\r\n\t\t\t\tchildren: item.Childs.map((child) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: child.DisplayValue,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\tvalue: child.Value,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tstate: {\r\n\t\t\t\t\t\t\topened: true,\r\n\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\tselected: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tchildren: child.Childs.map((child) => {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\ttext: child.DisplayValue,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\tvalue: child.Value,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tstate: {\r\n\t\t\t\t\t\t\t\t\topened: true,\r\n\t\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\t\tselected: child.Checked\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});\r\n\r\n\t\tthis.RenderTree();\r\n\t}\r\n\r\n\tprivate RenderTree() {\r\n\t\tconst jstreeOptions = {\r\n\t\t\tplugins: ['checkbox'],\r\n\t\t\tcheckbox : {\r\n\t\t\t\tkeep_selected_style : false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tthree_state: true,\r\n\r\n\t\t\t},\r\n\t\t\tcore: {\r\n\t\t\t\tdata: this._jsTreeModel,\r\n\t\t\t\tmultiple: true,\r\n\t\t\t\tthemes: {\r\n\t\t\t\t\ticons: false,\r\n\t\t\t\t\tdots: true\r\n\t\t\t\t},\r\n\t\t\t\tcheck_callback: true\r\n\t\t\t},\r\n\t\t\tdefaults: {\r\n\t\t\t\tcheckbox: {\r\n\t\t\t\t\tvisible: true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst $jsTreeElement = $(this._dropDown.GetContentElement()).find('#fast-filter-datetime-tree-container');\r\n\r\n\t\tif (this._jsTree) {\r\n\t\t\t$jsTreeElement.jstree(true).settings.core.data = this._jsTreeModel;\r\n\t\t\t$jsTreeElement.jstree(true).refresh();\r\n\r\n\t\t\t//this._jsTree\r\n\t\t\t//\t.on('changed.jstree', (event, newtree) => {\r\n\t\t\t//\t\tthis._jsTreeSaveModel = $jsTreeElement.jstree().get_json();\r\n\t\t\t//\t\tthis.Tooltip.position();\r\n\t\t\t//\t});\r\n\t\t} else {\r\n\t\t\tthis._jsTree = $jsTreeElement.bind('ready.jstree', () => {\r\n\t\t\t\tthis._dropDown.Position();\r\n\t\t\t}).jstree(jstreeOptions);\r\n\r\n\t\t\tthis._jsTree\r\n\t\t\t\t.on('changed.jstree', (event, newtree) => {\r\n\t\t\t\t\tthis._jsTreeSaveModel = $jsTreeElement.jstree().get_json();\r\n\t\t\t\t\tthis._dropDown.Position();\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected MapToSaveModel() {\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tconst valuesList = mapNodes(this._jsTreeSaveModel);\r\n\r\n\t\tfunction mapNodes(nodesList) {\r\n\t\t\tconst nodes = [];\r\n\r\n\t\t\tif (!(nodesList && nodesList.length)) return [];\r\n\r\n\t\t\tnodesList && nodesList.forEach((node) => {\r\n\t\t\t\tconst mappedNode = {Value: node.data.value || null} as any;\r\n\r\n\t\t\t\tif (node.children && node.children.length) {\r\n\t\t\t\t\tmappedNode.Childs = mapNodes(node.children);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (node.state.selected || (mappedNode.Childs && mappedNode.Childs.length)) {\r\n\t\t\t\t\tnodes.push(mappedNode);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn nodes;\r\n\t\t}\r\n\r\n\t\tthis._saveModel = {\r\n\t\t\tFieldAlias: this._model.Alias,\r\n\t\t\tValues: valuesList,\r\n\t\t\tFieldId: this._model.FieldMetadata.Id,\r\n\t\t\tTableViewId: this._tableViewId\r\n\t\t};\r\n\r\n\t\tthis._allFilters.forEach((filter) => {\r\n\t\t\tif (filter.FieldAlias === this._model.Alias && filter.TableViewId === this._tableViewId) {\r\n\t\t\t\tfilter.Values = valuesList;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected LoadFastFilterData(dropDownElement?: HTMLElement) {\r\n\t\tthis._isOpenFastFilter(!this._isOpenFastFilter());\r\n\r\n\t\t// this.PopupToggleHandler();\r\n\r\n\t\tif (this.IsItemsLoaded) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tBlockUi.Block({Target: dropDownElement});\r\n\t\tthis._pageNumber = 0;\r\n\t\treturn GridStore.GetFastFilterDateData(this.GetRequestParams())\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock(dropDownElement);\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis._availableItems(this.SortYears(this.SortItems(result.Dates)));\r\n\r\n\t\t\t\tthis.MapToViewModel();\r\n\r\n\t\t\t\tthis.IsItemsLoaded = true;\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprotected SearchChangeCallback(value) {\r\n\t\tthis._searchValue = value.toString();\r\n\t\tthis._regex = RegExp(value);\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tBlockUi.Block();\r\n\r\n\t\tconst items: FastFilterItem[] =\r\n\t\t\tthis._originalViewModelItems.map((item: FastFilterItem) => {\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: item.Value,\r\n\t\t\t\t\tDisplayValue: item.DisplayValue,\r\n\t\t\t\t\tChilds: item.Childs && item.Childs.map((child) => {\r\n\r\n\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\tValue: child.Value,\r\n\t\t\t\t\t\t\tDisplayValue: child.DisplayValue,\r\n\t\t\t\t\t\t\tChilds: child.Childs && child.Childs.map((child) => {\r\n\r\n\t\t\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\t\t\tValue: child.Value,\r\n\t\t\t\t\t\t\t\t\tDisplayValue: child.DisplayValue\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\treturn viewModelItem;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\treturn viewModelItem;\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tthis._availableItems(this.SortYears(this.SortItems(this.FilterItems(items))));\r\n\r\n\t\tthis.MapToViewModel();\r\n\t\tthis.MapToJstreeModel();\r\n\r\n\t\tthis.IsItemsLoaded = true;\r\n\r\n\t\tBlockUi.Unblock();\r\n\t}\r\n\r\n\tprivate FilterItems(data: FastFilterItem[]) {\r\n\r\n\t\tfor (var i = 0; i < data.length; i++) {\r\n\t\t\tconst item = data[i];\r\n\t\t\tif (!this._regex.test(item.DisplayValue.toLowerCase()) && item.Childs && item.Childs.length) {\r\n\t\t\t\titem.Childs = this.FilterItems(item.Childs);\r\n }\r\n\t\t}\r\n\r\n\t\treturn data.filter(f => this._regex.test(f.DisplayValue.toLowerCase()) || (f.Childs && f.Childs.length));\r\n }\r\n\r\n\tprivate SortYears(itemsList: FastFilterValue[]) {\r\n\t\tif (!itemsList || !itemsList.length) return [];\r\n\r\n\t\treturn itemsList.sort((a, b) => {\r\n\t\t\tconst valueA = a.DisplayValue || a.Value;\r\n\t\t\tconst valueB = b.DisplayValue || b.Value;\r\n\r\n\t\t\tif (valueA && valueA > valueB) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else if (!valueA) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn DateFilterTemplate;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-datetime\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-datetime'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data, {filterType: 'date'}), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\r\\n\\t\\t\\t\\t\\t<div id='fast-filter-datetime-tree-container' class='fast-filter-datetime-tree-container fast-filter-list'></div>\\r\\n\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t data-bind='click: _Filter'>\\r\\n\\t\\t\\t\\t\\t\\t\\tFilter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t data-bind='click: _Clear'>\\r\\n\\t\\t\\t\\t\\t\\t\\tClear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\nimport {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {extractLookupValFieldMetadata} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport { FIELD_TYPES } from 'Core/Constant';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\n\r\nimport LookupFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Lookup/LookupFilter.html';\r\n\r\nexport class LookupFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tFormatValue(value: string) {\r\n if (!value || value === LABELS.EMPTY_VALUE) {\r\n\t\t\treturn LABELS.EMPTY_VALUE;\r\n\t\t}\r\n\r\n\t\tconst validationFieldMetadata = extractLookupValFieldMetadata(this._model.FieldMetadata);\r\n\r\n\t\tif (\r\n\t\t\tvalidationFieldMetadata &&\r\n\t\t\t_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], validationFieldMetadata.Type)\r\n\t\t) {\r\n\t\t\treturn FormatConverter.LocalizeDecimalOrInteger(\r\n\t\t\t\tvalidationFieldMetadata.FormatName === FieldFormat.PERCENTAGE\r\n\t\t\t\t\t? (Number(value) * 100).toFixed(\r\n\t\t\t\t\t\t\tvalidationFieldMetadata.Size < 2 ? 0 : validationFieldMetadata.Size - 2\r\n\t\t\t\t\t )\r\n\t\t\t\t\t: value\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn LookupFilterTemplate;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-lookup\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-lookup'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\r\\n\\t\\t\\t\\t\\t<ul class='multi-level fast-filter-list'>\\r\\n\\t\\r\\n\\t\\t\\t\\t\\t\\t<!-- ko foreach: _viewModelItem -->\\r\\n\\t\\t\\t\\t\\t\\t<li class='fast-filter-list-item'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type='checkbox' data-bind='attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<label class='fast-filter-list-item-label' data-bind='attr: {for: `available-item-${$parent._filterId}-${$index()}`}'>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<span data-bind='text: $parent.FormatValue(DisplayValue)'></span>\\r\\n\\t\\t\\t\\t\\t\\t\\t</label>\\r\\n\\t\\t\\t\\t\\t\\t</li>\\r\\n\\t\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t</ul>\\r\\n\\t\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Filter'>Filter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Clear'>Clear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {FastFilterValue, FastFilterItem} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\n\r\nimport YesnoFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Yesno/YesnoFilter.html';\r\n\r\nexport class YesnoFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis._initialDataMapped.subscribe((value) => {\r\n\t\t\t// const viewModel =\r\n\t\t\t// \tthis._viewModelItem()\r\n\t\t\t// \t\t.map((item) => {\r\n\t\t\t// \t\t\treturn {\r\n\t\t\t// \t\t\t\tValue: item.Value === 'True' ? '1' : '0',\r\n\t\t\t// \t\t\t\tDisplayValue: item.Value === 'True' ? 'True' : 'False',\r\n\t\t\t// \t\t\t\tChecked: item.Value === 'True'\r\n\t\t\t// \t\t\t};\r\n\t\t\t// \t\t})\r\n\t\t\t// \t\t.reduce((acum, item) => {\r\n\t\t\t// \t\t\treturn acum.findIndex((elem) => elem.Value === item.Value) < 0\r\n\t\t\t// \t\t\t\t? [...acum, item]\r\n\t\t\t// \t\t\t\t: acum\r\n\t\t\t// \t\t}, []);\r\n\t\t\t//\r\n\t\t\t// this._viewModelItem(viewModel);\r\n\t\t});\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\r\n\tprotected MapToViewModel() {\r\n\t\tconst viewModelList: FastFilterItem[] =\r\n\t\t\tthis._availableItems().map((item: FastFilterValue) => {\r\n\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(item);\r\n\t\t\t\tlet value;\r\n\r\n\t\t\t\tswitch (item.Value) {\r\n\t\t\t\t\tcase 'True':\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\tvalue = 1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'False':\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\tvalue = 0;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase null:\r\n\t\t\t\t\t\tvalue = null;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = null;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: value,\r\n\t\t\t\t\tDisplayValue: item.DisplayValue || this._labels.EMPTY_VALUE,\r\n\t\t\t\t\tChecked: wasItemChecked\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._preselectedRecords().forEach((preselected) => {\r\n\t\t\t\t\tif (value === preselected.Value && !this._storedCheckboxes) {\r\n\t\t\t\t\t\tviewModelItem.Checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tthis._viewModelItem(viewModelList);\r\n\t\tthis._initialDataMapped(true);\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn YesnoFilterTemplate;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-yesno\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-yesno'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<ul class='multi-level fast-filter-list'>\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t<!-- ko foreach: _viewModelItem -->\\r\\n\\t\\t\\t\\t\\t\\t<li class='fast-filter-list-item'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type='checkbox' data-bind='attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<label class='fast-filter-list-item-label' data-bind='attr: {for: `available-item-${$parent._filterId}-${$index()}`}'>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<span data-bind='text: DisplayValue'></span>\\r\\n\\t\\t\\t\\t\\t\\t\\t</label>\\r\\n\\t\\t\\t\\t\\t\\t</li>\\r\\n\\t\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t</ul>\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Filter'>Filter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Clear'>Clear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import { FastFilter } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport { GridColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport { EVENTS } from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport { FastFilterItem, FastFilterValue } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport { GridStore, IGetGridDataRequestModel } from 'Core/Controls/Grid/Stores/GridStore';\r\n\r\nimport * as moment from 'moment';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { BlockUI as BlockUi } from 'Core/Common/BlockUi';\r\n\r\nimport TimespanFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Timespan/TimespanFilter.html';\r\n\r\nexport class TimespanFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\trecordId: number,\r\n\t\ttableViewId: number,\r\n\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\tpublic MapToViewModel() {\r\n\t\tconst viewModelList: FastFilterItem[] =\r\n\t\t\tthis._availableItems().map((item: FastFilterValue) => {\r\n\r\n\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(item);\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: !item.Value || (item.Value === '0') ? null : item.Value.toString(),\r\n\t\t\t\t\tDisplayValue: !item.Value || (item.Value === '0') ? this._labels.EMPTY_VALUE : moment(item.Value.toString()).format('HH:mm'),\r\n\t\t\t\t\tChecked: wasItemChecked\r\n\t\t\t\t};\r\n\r\n\t\t\t\tIdentifyChecked.call(this, this._preselectedRecords(), item, viewModelItem);\r\n\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\r\n\t\tfunction IdentifyChecked(preselectedList, currentItem, viewModelItem) {\r\n\t\t\tpreselectedList.forEach((preselected) => {\r\n\r\n\t\t\t\tvar item = !viewModelItem.Value || (viewModelItem.Value === '0') ? null :moment(viewModelItem.Value.toString()).format('HH:mm');\r\n\t\t\t\tif (!this._storedCheckboxes\r\n\t\t\t\t\t&& ((!item && !preselected.Value)\r\n\t\t\t\t\t\t|| (item != null && item === preselected.Value))) {\r\n\r\n\t\t\t\t\tviewModelItem.Checked = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._viewModelItem(_.uniq(viewModelList, false, time => time.DisplayValue));\r\n\t\tif (this._originalViewModelItems == null)\r\n\t\t\tthis._originalViewModelItems = _.uniq(viewModelList, false, time => time.DisplayValue);\r\n\r\n\t}\r\n\tprotected LoadFastFilterData(dropDownElement?: HTMLElement) {\r\n\t\tthis._isOpenFastFilter(!this._isOpenFastFilter());\r\n\r\n\t\tif (this.IsItemsLoaded) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tBlockUi.Block({Target: dropDownElement});\r\n\r\n\t\treturn GridStore.GetFastFilterTimeData(this.GetRequestParams())\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock(dropDownElement);\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.DataLoadCallback(result.Items);\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprotected SearchChangeCallback(value) {\r\n\t\tthis._searchValue = value;\r\n\t\tthis._regex = RegExp(value);\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tBlockUi.Block();\r\n\r\n\r\n\t\tthis.DataLoadCallback(this._originalViewModelItems.filter(el => this._regex.test(el.DisplayValue)));\r\n\t\tBlockUi.Unblock();\r\n\t}\r\n\r\n\tprotected MapToSaveModel() {\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tconst listFromStore: FastFilterValue[] = [];\r\n\r\n\t\t// create prev selected checkboxes list that are checked and doesn't exist in view model\r\n\t\tif (this._storedCheckboxes) {\r\n\t\t\tthis._storedCheckboxes.forEach((storedItem) => {\r\n\t\t\t\tlet isItemOnlyInStore = !this._viewModelItem().some((viewItem) => {\r\n\t\t\t\t\treturn viewItem.Value === storedItem.Value;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tif (isItemOnlyInStore && storedItem.Checked) {\r\n\t\t\t\t\tlistFromStore.push({\r\n\t\t\t\t\t\tValue: storedItem.Value.toString()\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\tlet valuesList: FastFilterValue[] = this._viewModelItem().filter((item) => {\r\n\t\t\tif (item.Checked) {\r\n\t\t\t\tdelete item.Checked;\r\n\t\t\t\tdelete item.DisplayValue;\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// extend valuesList with previously selected and currently unvisible items\r\n\t\tvaluesList = valuesList.concat(listFromStore);\r\n\t\tvaluesList.forEach((item) => {\r\n\t\t\t//item.Value = moment(item.Value.toString()).subtract(moment().utcOffset() / 60, 'hours').format('HH:mm');\r\n\t\t\titem.Value = !item.Value || (item.Value === '0')? null : moment(item.Value.toString()).format('HH:mm');\r\n\t\t});\r\n\r\n\t\tthis._saveModel = {\r\n\tFieldAlias: this._model.Alias,\r\n\tValues: valuesList,\r\n\tFieldId: this._model.FieldMetadata.Id,\r\n\tTableViewId: this._tableViewId\r\n};\r\n\r\nthis._allFilters.forEach((filter) => {\r\n\tif (filter.FieldAlias === this._model.Alias && filter.TableViewId === this._tableViewId) {\r\n\t\tfilter.Values = valuesList;\r\n\t}\r\n});\r\n\r\n// clear store\r\nthis._storedCheckboxes = null;\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\tthis.MapToSaveModel();\r\n\r\n\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tprotected DataLoadCallback(data) {\r\n\t\tthis._availableItems(this.SortItems(data));\r\n\t\tthis.MapToViewModel();\r\n\t\tthis.IsItemsLoaded = true;\r\n\t}\r\n\r\nGetTemplate() {\r\n\treturn TimespanFilterTemplate;\r\n}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-timespan\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-timespan'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\r\\n\\t\\t\\t\\t\\t<ul class='multi-level fast-filter-list'>\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t<!-- ko foreach: _viewModelItem -->\\r\\n\\t\\t\\t\\t\\t\\t<li class='fast-filter-list-item'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type='checkbox' data-bind='attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<label class='fast-filter-list-item-label' data-bind='attr: {for: `available-item-${$parent._filterId}-${$index()}`}'>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<span data-bind='text: DisplayValue'></span>\\r\\n\\t\\t\\t\\t\\t\\t\\t</label>\\r\\n\\t\\t\\t\\t\\t\\t</li>\\r\\n\\t\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t</ul>\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Filter'>Filter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Clear'>Clear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import { FastFilter } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport { GridColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport { EVENTS } from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport { FastFilterItem, FastFilterValue } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport { GridStore, IGetGridDataRequestModel } from 'Core/Controls/Grid/Stores/GridStore';\r\n\r\nimport * as moment from 'moment';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { BlockUI as BlockUi } from 'Core/Common/BlockUi';\r\n\r\nimport TimeFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Time/TimeFilter.html';\r\n\r\nexport class TimeFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\trecordId: number,\r\n\t\ttableViewId: number,\r\n\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\tpublic MapToViewModel() {\r\n\t\tconst viewModelList: FastFilterItem[] =\r\n\t\t\tthis._availableItems().map((item: FastFilterValue) => {\r\n\r\n\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(item);\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: !item.Value || (item.Value === '0') ? null : item.Value.toString(),\r\n\t\t\t\t\tDisplayValue: !item.Value || (item.Value === '0') ? this._labels.EMPTY_VALUE : moment(FormatConverter.CorrectTimezone(item.Value.toString())).format('HH:mm'),\r\n\t\t\t\t\tChecked: wasItemChecked\r\n\t\t\t\t};\r\n\r\n\t\t\t\tIdentifyChecked.call(this, this._preselectedRecords(), item, viewModelItem);\r\n\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tfunction IdentifyChecked(preselectedList, currentItem, viewModelItem) {\r\n\t\t\tpreselectedList.forEach((preselected) => {\r\n\r\n\t\t\t\tconst item = !viewModelItem.Value || (viewModelItem.Value === '0') ? null : viewModelItem.Value.toString();\r\n\t\t\t\tif (!this._storedCheckboxes\r\n\t\t\t\t\t&& ((!item && !preselected.Value)\r\n\t\t\t\t\t\t|| (item != null && item === preselected.Value))) {\r\n\r\n\t\t\t\t\tviewModelItem.Checked = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._viewModelItem(_.uniq(viewModelList, false, time => time.DisplayValue));\r\n\r\n\t\tif (this._originalViewModelItems == null)\r\n\t\t\tthis._originalViewModelItems = viewModelList.concat();\r\n\r\n\t}\r\n\tprotected LoadFastFilterData(dropDownElement?: HTMLElement) {\r\n\t\tthis._isOpenFastFilter(!this._isOpenFastFilter());\r\n\r\n\t\tif (this.IsItemsLoaded) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tBlockUi.Block({Target: dropDownElement});\r\n\r\n\t\treturn GridStore.GetFastFilterTimeData(this.GetRequestParams())\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock(dropDownElement);\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.DataLoadCallback(result.Items);\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprotected SearchChangeCallback(value) {\r\n\t\tthis._searchValue = value;\r\n\t\tthis._regex = RegExp(value);\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tBlockUi.Block();\r\n\r\n\t\tconst originalItems = this._originalViewModelItems.concat();\r\n\r\n\t\tthis.DataLoadCallback(_.uniq(originalItems, false, (time: FastFilterValue) => time.DisplayValue).filter(el => this._regex.test(el.DisplayValue)));\r\n\t\tBlockUi.Unblock();\r\n\t}\r\n\r\n\tprotected MapToSaveModel() {\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tconst listFromStore: FastFilterValue[] = [];\r\n\r\n\t\t// create prev selected checkboxes list that are checked and doesn't exist in view model\r\n\t\tif (this._storedCheckboxes) {\r\n\t\t\tthis._storedCheckboxes.forEach((storedItem) => {\r\n\t\t\t\tlet isItemOnlyInStore = !this._viewModelItem().some((viewItem) => {\r\n\t\t\t\t\treturn viewItem.Value === storedItem.Value;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (isItemOnlyInStore && storedItem.Checked) {\r\n\t\t\t\t\tlistFromStore.push({\r\n\t\t\t\t\t\tValue: storedItem.Value.toString()\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\tlet valuesList: FastFilterValue[] = this._viewModelItem().filter((item) => {\r\n\t\t\tif (item.Checked) {\r\n\r\n\t\t\t\titem.Value = this._originalViewModelItems.filter(time => time.DisplayValue === item.DisplayValue).map(time => time.Value).join(\";\");\r\n\r\n\t\t\t\tdelete item.Checked;\r\n\t\t\t\tdelete item.DisplayValue;\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// extend valuesList with previously selected and currently unvisible items\r\n\t\tvaluesList = valuesList.concat(listFromStore);\r\n\r\n\t\tthis._saveModel = {\r\n\t\t\tFieldAlias: this._model.Alias,\r\n\t\t\tValues: valuesList,\r\n\t\t\tFieldId: this._model.FieldMetadata.Id,\r\n\t\t\tTableViewId: this._tableViewId\r\n\t\t};\r\n\r\n\t\tthis._allFilters.forEach((filter) => {\r\n\t\t\tif (filter.FieldAlias === this._model.Alias && filter.TableViewId === this._tableViewId) {\r\n\t\t\t\tfilter.Values = valuesList;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// clear store\r\n\t\tthis._storedCheckboxes = null;\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tprotected DataLoadCallback(data) {\r\n\t\tthis._availableItems(this.SortItems(data));\r\n\t\tthis.MapToViewModel();\r\n\t\tthis.IsItemsLoaded = true;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn TimeFilterTemplate;\r\n}\r\n}\r\n","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-timespan\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-timespan'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\r\\n\\t\\t\\t\\t\\t<ul class='multi-level fast-filter-list'>\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t<!-- ko foreach: _viewModelItem -->\\r\\n\\t\\t\\t\\t\\t\\t<li class='fast-filter-list-item'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type='checkbox' data-bind='attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<label class='fast-filter-list-item-label' data-bind='attr: {for: `available-item-${$parent._filterId}-${$index()}`}'>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<span data-bind='text: DisplayValue'></span>\\r\\n\\t\\t\\t\\t\\t\\t\\t</label>\\r\\n\\t\\t\\t\\t\\t\\t</li>\\r\\n\\t\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t</ul>\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Filter'>Filter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Clear'>Clear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import { FastFilter } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport { GridColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport { EVENTS } from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport { GridStore, IGetGridDataRequestModel } from 'Core/Controls/Grid/Stores/GridStore';\r\nimport { FastFilterItem, FastFilterValue } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport { BlockUI as BlockUi } from 'Core/Common/BlockUi';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport 'tree';\r\nimport * as moment from 'moment';\r\n\r\nimport DateTimeFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/DateTime/DateTimeFilter.html';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\n\r\nexport class DateTimeFilter extends FastFilter {\r\n\tprivate _jsTreeModel: any;\r\n\tprivate _jsTreeSaveModel: any;\r\n\tprivate _jsTree: any;\r\n\r\n\tconstructor(model: GridColumnModel,\r\n\t\trecordId: number,\r\n\t\ttableViewId: number,\r\n\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis._jsTreeModel = {};\r\n\t\tthis._jsTreeSaveModel = {};\r\n\r\n\t\tthis.Preselect();\r\n\t\tthis.OpenFilter = () => {\r\n\t\t\tsuper.OpenFilter.call(this).then(() => {\r\n\t\t\t\tthis.MapToJstreeModel();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected MapToViewModel() {\r\n\t\tconst viewModelList: FastFilterItem[] =\r\n\t\t\tthis._availableItems().map((item: FastFilterValue) => {\r\n\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(item);\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: !item.Value || (item.Value === '0') ? null : item.Value.toString(),\r\n\t\t\t\t\tDisplayValue: !item.Value || (item.Value === '0') ? this._labels.EMPTY_VALUE : item.Value.toString(),\r\n\t\t\t\t\tChecked: wasItemChecked,\r\n\t\t\t\t\tChilds: item.Childs && item.Childs.map((child) => {\r\n\t\t\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(child);\r\n\r\n\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\tValue: child.Value && child.Value.toString(),\r\n\t\t\t\t\t\t\tDisplayValue: moment(child.Value && child.Value.toString(), 'M').format('MMMM'),\r\n\t\t\t\t\t\t\tChecked: wasItemChecked,\r\n\t\t\t\t\t\t\tChilds: child.Childs && child.Childs.map((child) => {\r\n\t\t\t\t\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(child);\r\n\r\n\t\t\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\t\t\tValue: child.Value && child.Value.toString(),\r\n\t\t\t\t\t\t\t\t\tDisplayValue: child.Value.toString(),\r\n\t\t\t\t\t\t\t\t\tOriginValue: child.OriginValue,\r\n\t\t\t\t\t\t\t\t\tChecked: wasItemChecked\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\treturn viewModelItem;\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 viewModelItem;\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\r\n\t\t\t\tIdentifyChecked.call(this, this._preselectedRecords(), item, viewModelItem);\r\n\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tfunction IdentifyChecked(preselectedList, currentItem, viewModelItem) {\r\n\t\t\tpreselectedList.forEach((preselected) => {\r\n\t\t\t\tif (!this._storedCheckboxes\r\n\t\t\t\t\t&& ((!viewModelItem.Value && !preselected.Value)\r\n\t\t\t\t\t\t|| (viewModelItem.Value && viewModelItem.Value.toString() === preselected.Value))) {\r\n\r\n\t\t\t\t\tviewModelItem.Checked = true;\r\n\r\n\t\t\t\t\tif (preselected.Childs && preselected.Childs.length && viewModelItem.Childs && viewModelItem.Childs.length) {\r\n\t\t\t\t\t\tpreselected.Childs.forEach((child) => {\r\n\t\t\t\t\t\t\tviewModelItem.Childs.forEach((viewChild) => {\r\n\t\t\t\t\t\t\t\tIdentifyChecked.call(this, preselected.Childs, child, viewChild);\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\tthis._viewModelItem(viewModelList);\r\n\t\tif (this._originalViewModelItems == null)\r\n\t\t\tthis._originalViewModelItems = _.uniq(viewModelList, false, time => time.DisplayValue);\r\n\t}\r\n\r\n\tprivate MapToJstreeModel() {\r\n\t\tthis._jsTreeModel = this._viewModelItem().map((item) => {\r\n\t\t\treturn {\r\n\t\t\t\ttext: item.DisplayValue,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tvalue: item.Value,\r\n\t\t\t\t},\r\n\t\t\t\tstate: {\r\n\t\t\t\t\topened: true,\r\n\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\tselected: !item.Value && item.Checked\r\n\t\t\t\t},\r\n\t\t\t\tchildren: item.Childs.map((child) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: child.DisplayValue,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\tvalue: child.Value,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tstate: {\r\n\t\t\t\t\t\t\topened: true,\r\n\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\tselected: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tchildren: child.Childs.map((child) => {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\ttext: child.DisplayValue,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\tvalue: child.Value,\r\n\t\t\t\t\t\t\t\t\toriginValue: child.OriginValue,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tstate: {\r\n\t\t\t\t\t\t\t\t\topened: true,\r\n\t\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\t\tselected: child.Checked\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});\r\n\r\n\t\tthis.RenderTree();\r\n\t}\r\n\r\n\tprivate RenderTree() {\r\n\t\tconst jstreeOptions = {\r\n\t\t\tplugins: ['checkbox'],\r\n\t\t\tcheckbox : {\r\n\t\t\t\tkeep_selected_style : false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tthree_state: true,\r\n\r\n\t\t\t},\r\n\t\t\tcore: {\r\n\t\t\t\tdata: this._jsTreeModel,\r\n\t\t\t\tmultiple: true,\r\n\t\t\t\tthemes: {\r\n\t\t\t\t\ticons: false,\r\n\t\t\t\t\tdots: true\r\n\t\t\t\t},\r\n\t\t\t\tcheck_callback: true\r\n\t\t\t},\r\n\t\t\tdefaults: {\r\n\t\t\t\tcheckbox: {\r\n\t\t\t\t\tvisible: true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst $jsTreeElement = $(this._dropDown.GetContentElement()).find('#fast-filter-datetime-tree-container');\r\n\r\n\t\tif (this._jsTree) {\r\n\t\t\t$jsTreeElement.jstree(true).settings.core.data = this._jsTreeModel;\r\n\t\t\t$jsTreeElement.jstree(true).refresh();\r\n\t\t} else {\r\n\t\t\tthis._jsTree = $jsTreeElement.bind('ready.jstree', () => {\r\n\t\t\t\tthis._dropDown.Position();\r\n\t\t\t}).jstree(jstreeOptions);\r\n\r\n\t\t\tthis._jsTree\r\n\t\t\t\t.on('changed.jstree', (event, newtree) => {\r\n\t\t\t\t\tthis._jsTreeSaveModel = $jsTreeElement.jstree().get_json();\r\n\t\t\t\t\tthis._dropDown.Position();\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n protected MapToSaveModel() {\r\n this.StoreSelectedCheckboxes();\r\n const valuesList = mapNodes(this._jsTreeSaveModel);\r\n function mapNodes(nodesList) {\r\n const nodes = [];\r\n\r\n if (!(nodesList && nodesList.length)) return [];\r\n\r\n nodesList && nodesList.forEach((node) => {\r\n const mappedNode = {\r\n Value: node.data.value || null,\r\n OriginValue: node.data.originValue || null\r\n } as any;\r\n\r\n if (node.children && node.children.length) {\r\n mappedNode.Childs = mapNodes(node.children);\r\n }\r\n\r\n if (node.state.selected || (mappedNode.Childs && mappedNode.Childs.length)) {\r\n nodes.push(mappedNode);\r\n }\r\n });\r\n\r\n return nodes;\r\n }\r\n\r\n this._saveModel = {\r\n FieldAlias: this._model.Alias,\r\n Values: valuesList,\r\n FieldId: this._model.FieldMetadata.Id,\r\n TableViewId: this._tableViewId\r\n\t\t};\r\n\r\n this._allFilters.forEach((filter) => {\r\n if (filter.FieldAlias === this._model.Alias && filter.TableViewId === this._tableViewId) {\r\n\t\t\t\tfilter.Values = valuesList;\r\n }\r\n });\r\n }\r\n\r\n\tprotected LoadFastFilterData(dropDownElement?: HTMLElement) {\r\n\t\tthis._isOpenFastFilter(!this._isOpenFastFilter());\r\n\r\n\t\tif (this.IsItemsLoaded) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tBlockUi.Block({Target: dropDownElement});\r\n\r\n\t\treturn GridStore.GetFastFilterDateTimeData(this.GetRequestParams())\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock(dropDownElement);\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis._availableItems(this.SortYears(this.SortItems(result.Dates)));\r\n\r\n\t\t\t\tthis.MapToViewModel();\r\n\t\t\t\tthis.IsItemsLoaded = true;\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprotected SearchChangeCallback(value) {\r\n\t\tthis._searchValue = value.toString();\r\n\t\tthis._regex = RegExp(value);\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tBlockUi.Block();\r\n\r\n\t\tconst items: FastFilterItem[] =\r\n\t\t\tthis._originalViewModelItems.map((item: FastFilterItem) => {\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: item.Value,\r\n\t\t\t\t\tDisplayValue: item.DisplayValue,\r\n\t\t\t\t\tChilds: item.Childs && item.Childs.map((child) => {\r\n\r\n\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\tValue: child.Value,\r\n\t\t\t\t\t\t\tDisplayValue: child.DisplayValue,\r\n\t\t\t\t\t\t\tChilds: child.Childs && child.Childs.map((child) => {\r\n\r\n\t\t\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\t\t\tValue: child.Value,\r\n\t\t\t\t\t\t\t\t\tDisplayValue: child.DisplayValue\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\treturn viewModelItem;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\treturn viewModelItem;\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tthis._availableItems(this.SortYears(this.SortItems(this.FilterItems(items))));\r\n\r\n\t\tthis.MapToViewModel();\r\n\t\tthis.MapToJstreeModel();\r\n\r\n\t\tthis.IsItemsLoaded = true;\r\n\r\n\t\tBlockUi.Unblock();\r\n\t}\r\n\r\n\tprivate FilterItems(data: FastFilterItem[]) {\r\n\r\n\t\tfor (var i = 0; i < data.length; i++) {\r\n\t\t\tconst item = data[i];\r\n\t\t\tif (!this._regex.test(item.DisplayValue.toLowerCase()) && item.Childs && item.Childs.length) {\r\n\t\t\t\titem.Childs = this.FilterItems(item.Childs);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data.filter(f => this._regex.test(f.DisplayValue.toLowerCase()) || (f.Childs && f.Childs.length));\r\n\t}\r\n\r\n\tprivate SortYears(itemsList: FastFilterValue[]) {\r\n\t\tif (!itemsList || !itemsList.length) return [];\r\n\r\n\t\treturn itemsList.sort((a, b) => {\r\n\t\t\tconst valueA = a.DisplayValue || a.Value;\r\n\t\t\tconst valueB = b.DisplayValue || b.Value;\r\n\r\n\t\t\tif (valueA && valueA > valueB) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else if (!valueA) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn DateTimeFilterTemplate;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-datetime\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-datetime'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data, {filterType: 'datetime'}), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\r\\n\\t\\t\\t\\t\\t<div id='fast-filter-datetime-tree-container' class='fast-filter-datetime-tree-container fast-filter-list'></div>\\r\\n\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t data-bind='click: _Filter'>\\r\\n\\t\\t\\t\\t\\t\\t\\tFilter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t data-bind='click: _Clear'>\\r\\n\\t\\t\\t\\t\\t\\t\\tClear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import {BaseColumn} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {SortOrder} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {SortModel} from 'Core/Controls/Grid/Models/SortModel';\r\nimport {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {DecimalFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Decimal/DecimalFilter';\r\nimport {IntegerFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Integer/IntegerFilter';\r\nimport {TextFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/TextFilter';\r\nimport {DateFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Date/DateFilter';\r\nimport {LookupFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Lookup/LookupFilter';\r\nimport {YesnoFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Yesno/YesnoFilter';\r\nimport {TimespanFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Timespan/TimespanFilter';\r\nimport {TimeFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Time/TimeFilter';\r\nimport {DateTimeFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/DateTime/DateTimeFilter';\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\nimport {IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {FastFilterSaveModel} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport enumerable from '../../../../Common/Decorators/EnumerableDecorator';\r\n\r\nexport class HeaderColumn extends BaseColumn {\r\n\tprivate _recordId: number;\r\n\tprivate _tableViewId: number;\r\n\tprivate _element: HTMLElement;\r\n\tprivate _isClustered: boolean;\r\n\tprivate _gridDataModel: IGetGridDataRequestModel;\r\n\tprivate _existedColumnAliases: string[];\r\n\tprivate _labels = LABELS;\r\n\r\n\tprivate _fastFilter: FastFilter;\r\n\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model);\r\n\r\n\t\tthis._recordId = recordId;\r\n\t\tthis._tableViewId = tableViewId;\r\n\t\tthis._isClustered = this._model.FieldMetadata && this._model.FieldMetadata.IsClustered;\r\n\t\tthis._gridDataModel = gridDataModel;\r\n\t\tthis._existedColumnAliases = existedColumnAliases;\r\n\t\tthis._fastFilter = null;\r\n\r\n\t\tthis.AddEvent(EVENTS.FAST_FILTER);\r\n\r\n\t\tthis.InitFastFilter();\r\n\t}\r\n\r\n\tprivate InitFastFilter() {\r\n\t\tconst isFastFilterAllowed = this._model.FieldMetadata && !this._model.FieldMetadata.IsVirtual;\r\n\r\n\t\tif (!isFastFilterAllowed) return;\r\n\r\n\t\tthis._fastFilter = this.CreateFastFilter();\r\n\r\n\t\tif (!this._fastFilter) return;\r\n\r\n\t\tthis._fastFilter.On(EVENTS.FAST_FILTER, this, (eventArgs: any) => {\r\n\t\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate CreateFastFilter(): FastFilter {\r\n\t\tconst fastFilterParams = [this._model, this._recordId, this._tableViewId, this._gridDataModel, this._existedColumnAliases] as const;\r\n\r\n\t\tswitch(this._model.FieldMetadata.Type) {\r\n\t\t\tcase FIELD_TYPES.Decimal:\r\n\t\t\t\treturn new DecimalFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.Integer:\r\n\t\t\t\treturn new IntegerFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.Date:\r\n\t\t\t\treturn new DateFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.DateTime:\r\n\t\t\t\treturn new DateTimeFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.TimeSpan:\r\n\t\t\t\treturn new TimespanFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.Time:\r\n\t\t\t\treturn new TimeFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.Text:\r\n\t\t\t\treturn new TextFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.Alias:\r\n\t\t\t\treturn new TextFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.YesNo:\r\n\t\t\t\treturn new YesnoFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.Lookup:\r\n\t\t\t\tif (this._model.FieldMetadata.ValTableId <= 0) return;\r\n\t\t\t\treturn new LookupFilter(...fastFilterParams);\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tResetSort() {\r\n\t\tthis._sortOrder(SortOrder.Both);\r\n\t}\r\n\r\n\tget IsWrapped(): boolean {\r\n\t\treturn this._model.IsWrapped;\r\n\t}\r\n\r\n\tget IsSortDescription(): boolean {\r\n\t\treturn this._model.IsSortDescription;\r\n\t}\r\n\t\r\n\tget IsOrdinary(){\r\n return !this.IsWrapped && !this.IsSortDescription;\r\n }\r\n\r\n\tget IsEnableSort(): boolean {\r\n\t\treturn this._model.IsEnableSort;\r\n\t}\r\n\r\n\tget DisplayOrder(): number {\r\n\t\treturn this._model.DisplayOrder;\r\n\t}\r\n\r\n\tget SortOrder() {\r\n\t\treturn this._sortOrder();\r\n\t}\r\n\r\n\tset SortOrder(order) {\r\n\t\tthis._sortOrder(order);\r\n\t}\r\n\r\n\tget IsFastFilterEnabled() {\r\n\t\treturn this._isFastFilterEnabled() && this._model.IsEnableFastFilter;\r\n\t}\r\n\r\n\tset IsFastFilterEnabled(value) {\r\n\t\tthis._isFastFilterEnabled(value);\r\n\t}\r\n\r\n\tget FilterSaveModel(): FastFilterSaveModel {\r\n\t\treturn this._fastFilter ? this._fastFilter.FilterSaveModel : null;\r\n\t}\r\n\r\n\tSort() {\r\n\t\tif (this._sortOrder() === SortOrder.Both) {\r\n\t\t\tthis._sortOrder(SortOrder.Asc);\r\n\t\t} else if (this._sortOrder() === SortOrder.Asc) {\r\n\t\t\tthis._sortOrder(SortOrder.Desc);\r\n\t\t} else if (this._sortOrder() === SortOrder.Desc) {\r\n\t\t\tthis._sortOrder(SortOrder.Both);\r\n\t\t}\r\n\r\n\t\tthis.Trigger(EVENTS.SORT);\r\n\t}\r\n\r\n\tGetSortModel(): SortModel {\r\n\t\tconst model = new SortModel();\r\n\r\n\t\tmodel.OrderColumn = this._model.Alias;\r\n\t\tmodel.SortOrder = this._sortOrder();\r\n\t\tmodel.OrderColumnGuid = this._model.QueryColumnGuid;\r\n\r\n\t\treturn model;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn this._fastFilter && this._fastFilter.GetTemplate();\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement) {\r\n\t\tthis._element = el;\r\n\t}\r\n}","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport {TotalCell} from 'Core/Controls/Grid/BaseGrid/GridCell/TotalCell';\r\nimport {GridTotalRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridTotalRowModel';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class GridTotalRow {\r\n\tprivate _dataCells: KnockoutObservableArray<TotalCell>;\r\n\tprivate _rowColorEnabled: KnockoutObservable<boolean> = ko.observable(false);\r\n\tprivate _labels = LABELS;\r\n\tprivate _isGroupActive: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tprivate _model: GridTotalRowModel,\r\n\t\tprivate _showFavoriteCell,\r\n\t\tpublic _isEnableSelectRecord: KnockoutObservable<boolean>,\r\n\t\tcolumns: GridColumnModel[]\r\n\t) {\r\n\t\tthis._dataCells = ko.observableArray([]);\r\n\t\t_.each(this._model.Data, (item, index) => {\r\n\t\t\tlet filterTotalColumns = _.filter(columns, column => !column.IsSortDescription);\r\n\t\t\tthis._dataCells.push(new TotalCell(item, _.find(filterTotalColumns, (col)=>col.QueryColumnGuid == item.QueryColumnGuid)));\r\n\t\t});\r\n\r\n\t\tthis._isGroupActive = ko.observable(true);\r\n\t}\r\n\r\n\tset IsGroupActive(active: boolean) {\r\n\t\tthis._isGroupActive(active);\r\n\t}\r\n\r\n\tget IsGroupActive():boolean {\r\n\t\treturn this._isGroupActive();\r\n\t}\r\n\r\n\t@enumerable \r\n\tget HasWrappedColumn(): boolean {\r\n\t\tvar wrappedCell = _.find(this._dataCells(), (dataCell) => { return dataCell.IsWrapped });\r\n\t\treturn wrappedCell != null;\r\n\t}\r\n\r\n\t@enumerable\r\n\tget HasData(): boolean {\r\n\t\treturn this._model.Data.length > 0;\r\n\t}\r\n\r\n\t@enumerable \r\n\tget Guid(): string {\r\n\t\treturn this._model.Guid;\r\n\t}\r\n}","import { States } from 'Core/Controls/Grid/BaseGrid/GridRow/States';\r\nimport {serialize, serializeAs} from 'libs/cerialize';\r\n\r\nexport class RecordKeyModel {\r\n\t@serialize\r\n\tFieldId: number;\r\n\r\n\t@serialize\r\n\tRecordId: number;\r\n}\r\n\r\nexport class TranslationModel {\r\n\t@serialize\r\n\tLanguageShortName: string;\r\n\r\n\t@serialize\r\n\tValue: string;\r\n}\r\n\r\nexport class FieldDataModel {\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@serialize\r\n\tFieldId: number;\r\n\r\n\t@serialize\r\n\tValue: string;\r\n\r\n\t@serialize\r\n\tCustomValue: string;\r\n\r\n\t@serializeAs(RecordKeyModel)\r\n\tRecordKeys: Array<RecordKeyModel>;\r\n\r\n\t@serializeAs(TranslationModel)\r\n\tTranslations: TranslationModel[];\r\n\r\n\tconstructor() {\r\n\t\tthis.RecordKeys = [];\r\n\t}\r\n}\r\n\r\nexport class GridRowDataModel {\r\n\t@serialize\r\n\tData: Array<FieldDataModel>;\r\n\r\n\t@serialize\r\n\tState: States;\r\n\r\n\tconstructor() {\r\n\t\tthis.Data = [];\r\n\t}\r\n\r\n\t@serialize\r\n\tSubjectEntityId: number;\r\n\r\n\t@serialize\r\n\tSubjectRecordId: number;\r\n\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@serialize\r\n\tRecordId: number;\r\n\r\n\t@serialize\r\n\tKSeq: number;\r\n\r\n\t@serialize\r\n\tGuid: string;\r\n\r\n\t@serialize\r\n\tReferenceLookupFieldId: number;\r\n\r\n\t@serialize\r\n\tScopedTableId: number;\r\n\r\n\t@serialize\r\n\tScopedRecordId: number;\r\n\r\n\t@serialize\r\n\tIsLinkParent: boolean;\r\n}","export interface IUpdateLifestatusModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tRowLifestatus: number;\r\n}\r\nexport class UpdateLifestatusModel{\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tRowLifestatus: number;\r\n\r\n\tconstructor(model: IUpdateLifestatusModel) {\r\n\t\tthis.EntityId = model.EntityId;\r\n\t\tthis.RecordId = model.RecordId;\r\n\t\tthis.RowLifestatus = model.RowLifestatus;\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nexport * from 'Core/Components/Paginator/Paginator';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridRow/GridScreenRow';\r\nexport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nexport {BlockUI} from 'Core/Common/BlockUi';\r\nexport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\nexport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nexport {Event} from 'Core/Common/Event';\r\nexport {Notifier} from 'Core/Common/Notifier';\r\n\r\nexport {P} from 'Core/Common/Promise';\r\nexport {\r\n ConfirmationDialog,\r\n Types as ConfirmationTypes,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\n\r\nexport * from \"Core/Components/Locker/LockManager\";\r\nexport * from 'Core/Components/Translation/Locales';\r\nexport * from \"Core/Components/Translation/TranslationManager\";\r\nexport {CONTROL_TYPES, FIELD_TYPES, TABLE_TYPES} from 'Core/Constant';\r\nexport * from 'Core/Controls/Grid/BaseGrid/Enums/RelationshipTypes';\r\nexport * from 'Core/Controls/Grid/BaseGrid/Events';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridRow/GridAverageRow';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridCell/DataCell';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridColumn/GroupColumn';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridColumn/HeaderColumn';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridRow/GridRow';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridRow/States';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridRow/GridTotalRow';\r\nexport * from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nexport * from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nexport * from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nexport * from 'Core/Controls/Grid/Models/GridDataModel/GridRowModel';\r\nexport * from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nexport * from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\n\r\nexport {\r\n FieldDataModel,\r\n GridRowDataModel,\r\n TranslationModel\r\n} from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateDataModel';\r\n\r\nexport {UpdateLifestatusModel} from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateLifestatusModel';\r\nexport { GridStore } from 'Core/Controls/Grid/Stores/GridStore';\r\nexport type { IGetGridDataRequestModel, IUnlinkRecordRequestModel } from 'Core/Controls/Grid/Stores/GridStore';\r\nexport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\nexport {Util} from 'QueryBuilder/Util';\r\n\r\nexport type {FastFilterSaveModel} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nexport type {IBaseGridOptions} from 'Core/Controls/Grid/Models/GridDataModel/BaseGridModel';\r\n\r\nexport type {IForm, IScreen} from \"Core/Screens/IScreen\";\r\nexport type {ILoadScreenRelationModel} from 'Core/Screens/Common/LinkEditor/LinkEditor';\r\n\r\nexport type {IControl} from \"Core/Controls/IControl\";\r\nexport {SortModel} from \"../Models/SortModel\";\r\nexport {SortOrder} from \"./GridColumn/BaseColumn\";\r\nexport {QueryColumnModel} from \"../Models/GridDataModel/QueryExpression/QueryColumnModel\";\r\nexport {EVENTS as QUERY_RESULT_GRID_EVENTS} from \"./QueryResultPage/Events\";\r\nexport {PivotDetailsDropdown} from \"./PivotDetaillsDropdown/PivotDetailsDropdown\";\r\nexport {Toolbar} from \"../Toolbar/Toolbar\";\r\nexport {EVENTS as TOOLBAR_EVENTS} from 'Core/Controls/Grid/Toolbar/Constants';\r\nexport {ConfigModel} from \"../../../GeneralProperties/Models/ConfigModel\";\r\nexport {PROPERTIES} from \"../Constants\";\r\nexport {DeletedRelationModel, UpdateDataModel} from \"../../LinkList/Models/UpdateDataModel\";\r\nexport {extractLookupValFieldMetadata} from \"../Models/GridDataModel/FieldMetadataModel\";\r\nexport {ViewerJsExtention} from 'Core/KnockoutExtentions/ViewerJsExtention';\r\nexport {EVENTS as PAGINATOR_EVENTS} from 'Core/Components/Paginator/Constants';\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/Templates/BaseGrid.html';\r\nimport DefaultTemplate from 'Core/Controls/Grid/BaseGrid/Templates/DefaultTemplate.html';\r\nimport ScreenTemplate from 'Core/Controls/Grid/BaseGrid/Templates/ScreenTemplate.html';\r\n\r\nko.templates['Core/Controls/Grid/BaseGrid/Templates/BaseGrid'] = Template;\r\nko.templates['Core/Controls/Grid/BaseGrid/Templates/DefaultTemplate'] = DefaultTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/Templates/ScreenTemplate'] = ScreenTemplate;\r\n\r\n\r\n","// Module\nvar code = \"<div cellspacing=\\\"0\\\" class=\\\"hidden-table flex-grid tab-key-navigation selectable-part dt-responsive no-footer dtr-inline collapsed cyber-grid-control\\\" data-bind=\\\"css: {'query-result-grid': _isQueryResultGrid, 'isCardScreen': _isCardScreen}, template: { afterRender: AfterGridReady.bind($data)}\\\" role=\\\"grid\\\"> <div class=\\\"grid-blocker\\\"></div> <!-- ko template: { name: $data.GetBaseTemplateName.bind($data) } --><!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \" <!-- ko with: _bulkEditRow --> <div class=\\\"flex-grid-body bulk-edit-row\\\"> <!-- ko template: { name: $data.GetTemplateName, afterRender : $parent.AfterBulkEditRowReady.bind($parent) } --> <!-- /ko --> </div> <!-- /ko --> <div class=\\\"flex-grid-head\\\"> <div class=\\\"super-flex-grid-row\\\" role=\\\"row\\\"></div> <div class=\\\"flex-grid-row\\\" role=\\\"row\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-hdata flex-grid-table-header js-reserved\\\"> <input data-bind=\\\"uniform: _isAllSelected, checked: _isAllSelected, click: IsAllSelectedChanged\\\" type=\\\"checkbox\\\"> </div> <!-- /ko --> <!-- ko if: ShowActionCell() --> <div data-bind=\\\"css: _sortByRelationshipOrderClassName()\\\" class=\\\"flex-grid-hdata flex-grid-table-header edit-cell js-reserved\\\"> <div class=\\\"sort-icon\\\" data-bind=\\\"click: $data.SortByRelationships.bind($data)\\\"></div> </div> <!-- /ko --> <!-- ko if: (_isVisibleFavorites() && !_isNested && !_isView()) --> <div title=\\\"Favorite\\\" class=\\\"flex-grid-hdata flex-grid-table-header favorite-cell js-reserved\\\"> <i class=\\\"fa fa-star\\\"></i> </div> <!-- /ko --> <!-- ko foreach: { data : _headerColumns, afterRender: AfterHeaderColumnsReady.bind($data) } --> <!--ko if: IsOrdinary --> <div class=\\\"flex-grid-hdata flex-grid-table-header\\\" data-bind=\\\"css: $parents[0].GetClassNames(Model, [(IsEnableSort && _sortOrderClassName()) || '']),\\r\\n attr: {'data-priority': Model.DisplayPriority, 'data-index':$index(), 'data-group': HasGroupTitle ? GroupTitle : ''},\\r\\n style: {width: Model.styleWidth}\\\"> <!--ko if: IsFastFilterEnabled--> <!-- ko with: _fastFilter --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <div class=\\\"currency-percantage-icon-wrapper\\\"> <i class=\\\"currency-icon fa fa-euro\\\"></i> <i class=\\\"percentage-icon fa fa-percent\\\"></i> </div> <div class=\\\"column-name\\\" data-bind=\\\"attr: {title: Title}, text: Title\\\"></div> <!-- ko if: IsEnableSort --> <div class=\\\"sort-icon\\\" data-bind=\\\"click: $data.Sort.bind($data)\\\"></div> <!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: _enableSelectRowCell --> <div class=\\\"flex-grid-hdata flex-grid-table-header js-reserved\\\"> </div> <!-- /ko --> </div> </div> <div class=\\\"flex-grid-body\\\"> <!-- ko fastForEach: { data : _rows, afterQueueFlush: AfterRowRender.bind($data) } --> <!-- ko template: { name: $data.GetTemplateName, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- ko foreach: $data._crossTableWrapped --> <!-- ko template: { name: $data.GetTemplateName, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: _totalRow --> <!-- ko if: HasData --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent have-related\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-tdata js-reserved\\\"></div> <!-- /ko --> <!-- ko if: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-edit js-reserved\\\"> <b><!-- ko text: _labels.TOTAL --><!-- /ko --></b> </div> <!-- ko ifnot: $parent._isNested --> <!-- ko ifnot: $parent._isView --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-favorite js-reserved\\\"></div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-favorite js-reserved\\\"> <b><!-- ko text: _labels.TOTAL --><!-- /ko --></b> </div> <!-- /ko --> <!-- ko foreach: _dataCells --> <!-- ko if: !IsWrapped --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view\\\" data-bind=\\\"css: $parents[1]._columnClassesTotalCollection()[$index()],\\r\\n attr: {\\r\\n 'data-priority': _columnModel.DisplayPriority,\\r\\n 'data-index': $index(),\\r\\n 'data-value': Boolean(Value)\\r\\n },\\r\\n style: { width: $parents[1].getColumnWidth.call($parents[1], $index()) }\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!-- ko if: HasWrappedColumn --> <!-- ko foreach: _dataCells --> <!-- ko if: IsWrapped && Value --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related\\\"> <div class=\\\"flex-grid-tdata a-testing-helper-table-view td-wrapped\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: _countRow --> <!-- ko if: HasData --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent have-related\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-tdata js-reserved\\\"></div> <!-- /ko --> <!-- ko if: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-edit js-reserved\\\"> <b><!-- ko text: _labels.COUNT --><!-- /ko --></b> </div> <!-- ko ifnot: $parent._isNested --> <!-- ko ifnot: $parent._isView --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-favorite js-reserved\\\"></div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-favorite js-reserved\\\"> <b><!-- ko text: _labels.COUNT --><!-- /ko --></b> </div> <!-- /ko --> <!-- ko foreach: _dataCells --> <!-- ko if: !IsWrapped --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view\\\" data-bind=\\\"css: $parents[1]._columnClassesTotalCollection()[$index()],\\r\\n attr: {\\r\\n 'data-priority': _columnModel.DisplayPriority,\\r\\n 'data-index': $index(),\\r\\n 'data-value': Boolean(Value)\\r\\n },\\r\\n style: { width: $parents[1].getColumnWidth.call($parents[1], $index()) }\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!-- ko if: HasWrappedColumn --> <!-- ko foreach: _dataCells --> <!-- ko if: IsWrapped && Value --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related\\\"> <div class=\\\"flex-grid-tdata a-testing-helper-table-view td-wrapped\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: _averageRow --> <!-- ko if: HasData --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent have-related\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-tdata js-reserved\\\"></div> <!-- /ko --> <!-- ko if: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view average-cell-edit js-reserved\\\"> <b>Average</b> </div> <!-- ko ifnot: $parent._isNested --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view average-cell-favorite js-reserved\\\"></div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view average-cell-favorite js-reserved\\\"> <b>Average</b> </div> <!-- /ko --> <!-- ko foreach: _dataCells --> <!-- ko if: !IsWrapped --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view\\\" data-bind=\\\"css: $parents[1]._columnClassesTotalCollection()[$index()],\\r\\n attr: {\\r\\n 'data-priority': _columnModel.DisplayPriority,\\r\\n 'data-index': $index(),\\r\\n 'data-value': Boolean(Value)\\r\\n },\\r\\n style: { width: $parents[1].getColumnWidth.call($parents[1], $index()) }\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!-- ko if: HasWrappedColumn --> <!-- ko foreach: _dataCells --> <!-- ko if: IsWrapped && Value --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related\\\"> <div class=\\\"flex-grid-tdata a-testing-helper-table-view td-wrapped\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko foreach: _screenRows --> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"pivotDetailsContainer\\\"> <div class=\\\"pivotDetailsDropdown\\\"> <span class=\\\"selectLink\\\"><!-- ko text: _labels.SELECT_LINK --><!-- /ko --></span> <div> <b><!-- ko text: _relationType --><!-- /ko --></b> :<!--ko if: _leftEntityIcon() && !_leftEntityIcon().Image--> <i data-bind=\\\"css: GetIconClasses(_leftEntityIcon().FontName, _leftEntityIcon().Name)\\\"></i> <!--/ko--> <!-- ko if: _leftEntityIcon() && _leftEntityIcon().Image--> <img class=\\\"img-responsive image-centered image-icon-xs\\\" data-bind=\\\"attr: {src: _leftEntityIcon().Image}\\\"> <!-- /ko --> <!-- ko text: _leftRecordName --><!-- /ko --> <i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i> <!--ko if: _rightEntityIcon() && !_rightEntityIcon().Image--> <i data-bind=\\\"css: GetIconClasses(_rightEntityIcon().FontName, _rightEntityIcon().Name)\\\"></i> <!--/ko--> <!-- ko if: _rightEntityIcon() && _rightEntityIcon().Image--> <img class=\\\"img-responsive image-centered image-icon-xs\\\" data-bind=\\\"attr: {src: _rightEntityIcon().Image}\\\"> <!-- /ko --> <!-- ko text: _rightRecordName --><!-- /ko --> </div> </div> <div class=\\\"pivotDetailsGrid\\\"> <!-- ko with: _grid --> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {EVENTS as GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {PivotDetailModel} from \"Core/Controls/Grid/Models/PivotDetailModel\";\r\nimport {FONT_NAME} from \"Core/Constant\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/PivotDetaillsDropdown/Templates/PivotDetailsDropdown.html';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\nimport { ScreenTypes } from \"Core/Common/Enums/ScreenTypes\";\r\nimport { GridRow } from \"Core/Controls/Grid/BaseGrid/GridRow/GridRow\";\r\nko.templates['Core/Controls/Grid/BaseGrid/PivotDetaillsDropdown/Templates/PivotDetailsDropdown'] = Template;\r\n\r\nexport class PivotDetailsDropdown extends Event {\r\n private readonly _id: string;\r\n private readonly _grid: KnockoutObservable<BaseGrid>;\r\n private _dropDown: JBoxDropDown;\r\n private _leftRecordName: KnockoutObservable<string>;\r\n private _rightRecordName: KnockoutObservable<string>;\r\n private _leftEntityIcon: KnockoutObservable<Icon>;\r\n private _rightEntityIcon: KnockoutObservable<Icon>;\r\n private _relationType: KnockoutObservable<string>;\r\n private _labels = LABELS;\r\n\r\n constructor(){\r\n super();\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this._grid = ko.observable(null);\r\n this._leftRecordName = ko.observable(null);\r\n this._rightRecordName = ko.observable(null);\r\n this._leftEntityIcon = ko.observable(null);\r\n this._rightEntityIcon = ko.observable(null);\r\n this._relationType = ko.observable(null);\r\n this.AddEvent(EVENTS.RECORD_SELECTED);\r\n this.AddEvent(GRID_EVENTS.REFRESH);\r\n this.AddEvent(GRID_EVENTS.EDIT_CLUSTERED_LINK);\r\n }\r\n\r\n Close(){\r\n if(this._dropDown){\r\n this._dropDown.Close();\r\n }\r\n }\r\n\r\n SetData(pivotDetails: PivotDetailModel, editLink: boolean = false){\r\n this._leftRecordName(pivotDetails.LeftRecordName);\r\n this._rightRecordName(pivotDetails.RightRecordName);\r\n this._relationType(pivotDetails.RelationType);\r\n\r\n if(pivotDetails.LeftEntityIcon){\r\n this._leftEntityIcon(new Icon(pivotDetails.LeftEntityIcon));\r\n }\r\n\r\n if(pivotDetails.RightEntityIcon){\r\n this._rightEntityIcon(new Icon(pivotDetails.RightEntityIcon));\r\n }\r\n\r\n const grid = new BaseGrid({\r\n isPrioritiesDisabled: true,\r\n isQueryResultGrid: true,\r\n isEditable: ko.observable(true),\r\n screenType: ScreenTypes[ScreenTypes.ConsultScreen],\r\n enabledFavorite: false,\r\n isEnableSelectRecord: ko.observable(false),\r\n enableSelectRowCell: true,\r\n });\r\n\r\n grid.On(GRID_EVENTS.SELECT_RECORD, this,(eventArgs: any) => {\r\n this.Trigger(EVENTS.RECORD_SELECTED, { SelectedRecord: eventArgs.data.Row });\r\n });\r\n\r\n grid.On(GRID_EVENTS.REFRESH, this, () => {\r\n this.Trigger(GRID_EVENTS.REFRESH);\r\n });\r\n\r\n grid.On(GRID_EVENTS.EDIT_LINK, this, (eventArgs) =>{\r\n this.Trigger(GRID_EVENTS.EDIT_CLUSTERED_LINK, { gridRow: eventArgs.data.gridRow, grid: grid });\r\n });\r\n\r\n this._grid(grid);\r\n this._grid().SetData(pivotDetails.Data, undefined, true);\r\n\r\n if(grid.Rows.length == 1 && editLink){\r\n this.Trigger(GRID_EVENTS.EDIT_CLUSTERED_LINK, { gridRow: grid.Rows[0], grid: grid });\r\n }\r\n }\r\n\r\n get Rows(): Array<GridRow>{\r\n return this._grid().Rows;\r\n }\r\n\r\n Show(target: any){\r\n this._dropDown = new JBoxDropDown({\r\n target: target || \".\" + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: 'body',\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: () => this._dropDown.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n blockScroll: true,\r\n addClass: 'pivotDetailsJBox',\r\n maxWidth: \"calc(100%)\"\r\n },\r\n onOpen: () => {\r\n this._dropDown.SetContent({ content: Template as any });\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n\r\n private GetIconClasses(fontName, name):string {\r\n fontName = fontName.replace('fa-stack', '');\r\n let classes: string = '';\r\n if (fontName === FONT_NAME.FONT_AWESOME) {\r\n classes = `${classes} fa`;\r\n } else if (fontName === FONT_NAME.SOCIAL_ICONS) {\r\n classes = `${classes} socicon-btn`;\r\n } else {\r\n classes = fontName;\r\n }\r\n classes = `${classes} ${name} image-icon-xs`;\r\n\r\n return classes;\r\n }\r\n\r\n @enumerable get Id(){\r\n return this._id;\r\n }\r\n}","export const EVENTS = {\r\n\tRECORDS_SELECTED: 'RECORDS_SELECTED',\r\n\tRECORD_SELECTED: 'RECORD_SELECTED'\r\n};","import * as ko from \"knockout\";\r\n\r\nimport 'lockr';\r\n\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {FileDownloader} from \"Core/Components/FileDownloader/FileDownloader\";\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {Toolbar} from \"Core/Controls/Grid/Toolbar/Toolbar\";\r\nimport {EVENTS as TOOLBAR_EVENTS} from 'Core/Controls/Grid/Toolbar/Constants';\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {GridDataModel} from \"Core/Controls/Grid/Models/GridDataModel/GridDataModel\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {EVENTS as PAGINATOR_EVENTS} from \"Core/Components/Paginator/Constants\";\r\nimport {EVENTS as BASE_GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {GridStore, IGetGridDataRequestModel, IExportDataRequestModel} from \"Core/Controls/Grid/Stores/GridStore\";\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {LABELS, CONFIRMATIONS} from 'Core/Components/Translation/Locales';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\n\r\nimport QueryResultPageTemplate\r\n from 'Core/Controls/Grid/BaseGrid/QueryResultPage/Templates/QueryResultPage.html';\r\n\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\n\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\nimport {SortModel} from \"../../Models/SortModel\";\r\nimport {IBaseGridOptions} from \"../../Models/GridDataModel/BaseGridModel\";\r\nimport { QueryExpressionModel } from \"../../Models/GridDataModel/QueryExpression/QueryExpressionModel\";\r\n\r\nko.templates['Core/Controls/Grid/BaseGrid/QueryResultPage/Templates/QueryResultPage'] = QueryResultPageTemplate;\r\n\r\nexport class QueryResultPage extends Event {\r\n private _grid: KnockoutObservable<BaseGrid>;\r\n private _modal: Modal;\r\n private _toolbar: Toolbar;\r\n private _query: QueryExpressionModel;\r\n private _isRendered: boolean;\r\n private _exportDataAllowed: KnockoutObservable<boolean>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _screenType: ScreenTypes;\r\n private _sorting: Array<SortModel>;\r\n private _showButtons: boolean;\r\n private _updateFromFastFilters: boolean;\r\n private _selectOnRowClick: boolean;\r\n private _queryId: number;\r\n private _prevPageNumber = 1;\r\n\r\n RecordId = 0;\r\n\r\n constructor(\r\n isEditable: boolean = false,\r\n screenType: ScreenTypes = null,\r\n showFunctionLookup = true,\r\n showButtons = true,\r\n selectOnRowClick = false\r\n ) {\r\n super();\r\n this._showButtons = showButtons;\r\n this._isEditable = ko.observable(isEditable);\r\n this._isReady = ko.observable(false);\r\n this._screenType = screenType;\r\n this._isRendered = false;\r\n this._exportDataAllowed = ko.observable(false);\r\n this._selectOnRowClick = selectOnRowClick;\r\n\r\n\t\tthis._updateFromFastFilters = false;\r\n\t\tthis._toolbar = new Toolbar(\r\n\t\t\tfalse,\r\n\t\t\tshowFunctionLookup,\r\n\t\t\tko.observable(false),\r\n ko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(true),\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tthis._exportDataAllowed,\r\n\t\t\tko.observable(true),\r\n\t\t\tnull,\r\n\t\t\tfalse,\r\n\t\t\tfalse,\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n true,\r\n false,\r\n []\r\n );\r\n\r\n this._grid = ko.observable(null);\r\n this.AddEvent(EVENTS.RECORDS_SELECTED);\r\n this.AddEvent(EVENTS.RECORD_SELECTED);\r\n this.AddEvent(BASE_GRID_EVENTS.OPEN_HYPERLINK);\r\n\r\n this.Init();\r\n }\r\n\r\n Init() {\r\n this._toolbar.Paginator().On(PAGINATOR_EVENTS.CHANGE, this, this.OnPaginationChange);\r\n this._toolbar.On(TOOLBAR_EVENTS.EXPORT_DATA, this, eventArgs => this.ExportData(eventArgs.data.Destination));\r\n this._toolbar.On(TOOLBAR_EVENTS.SEARCH_BY_PHRASE, this, (eventArgs: any) => {\r\n this.SearchByPhrase(eventArgs.data.SearchPhrase);\r\n });\r\n }\r\n\r\n GetTemplateName() {\r\n return \"Core/Controls/Grid/BaseGrid/QueryResultPage/Templates/QueryResultPage\";\r\n }\r\n\r\n Render(target: HTMLElement) {\r\n ko.cleanNode(target);\r\n ko.applyBindings(this, target);\r\n }\r\n\r\n SetData(\r\n data: GridDataModel,\r\n gridOptions: IBaseGridOptions = { enabledFavorite: true, isEnableSelectRecord: ko.observable(true) },\r\n request: IGetGridDataRequestModel\r\n ) {\r\n let otherGridPageLines = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n let recordsPerPage = parseInt(otherGridPageLines);\r\n this._toolbar.Paginator().RecordsPerPage = isNaN(recordsPerPage) ? 10 : recordsPerPage;\r\n\r\n this._exportDataAllowed(data.IsExportDataAllowed);\r\n this._toolbar.Paginator().TotalRecords = data.TotalRecords;\r\n\r\n const grid = new BaseGrid({\r\n isPrioritiesDisabled: true,\r\n isQueryResultGrid: true,\r\n isEditable: this._isEditable,\r\n screenType: ScreenTypes[this._screenType],\r\n enabledFavorite: gridOptions.enabledFavorite,\r\n isEnableSelectRecord: gridOptions.isEnableSelectRecord,\r\n isMultiselect: gridOptions.isMultiselect\r\n });\r\n grid.IsFastFilterEnabled = true;\r\n\r\n grid.On(BASE_GRID_EVENTS.OPEN_HYPERLINK, this, eventArgs => this.OnHyperLink(eventArgs.data));\r\n grid.On(BASE_GRID_EVENTS.SORT, this, this.OnSortColumns);\r\n grid.On(BASE_GRID_EVENTS.SELECT_RECORD, this, (eventArgs: any) => {\r\n if (this._selectOnRowClick) {\r\n this.Trigger(EVENTS.RECORD_SELECTED, {SelectedRecord: eventArgs.data.Row});\r\n this._modal.Close();\r\n }\r\n });\r\n\r\n grid.On(BASE_GRID_EVENTS.UPDATE_GRID, this, eventArgs => this.OnUpdateGrid(eventArgs.data.updateFromFastFilters));\r\n\r\n grid.On(BASE_GRID_EVENTS.LOAD_SUB_GRID, this, (eventArgs)=>{\r\n this.OnUpdateGrid(false, eventArgs.data.SubGrid, eventArgs.data.ParentRowId);\r\n });\r\n\r\n data.SubjectEntityId = data.QueryExpression.Entity.Metadata.Id;\r\n data.SubjectRecordId = 0;\r\n\r\n this._grid(grid);\r\n this._grid().SetGridDataModel(request);\r\n this._grid().SetData(data, undefined, true);\r\n this._toolbar.Enable();\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n }\r\n\r\n Save() {\r\n let records = this._grid().GetSelectRecords();\r\n this.Trigger(EVENTS.RECORDS_SELECTED, {SelectedRecords: records});\r\n if (this._modal) {\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n Show(options = {addClass: 'showScrollModal jBox-padding-15px'}, targetId = '') {\r\n if (targetId != '') {\r\n let target = document.getElementById(targetId);\r\n ko.cleanNode(target);\r\n ko.applyBindings(this, target);\r\n } else {\r\n this._modal = new Modal(options);\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n this._isRendered = true;\r\n this._isReady(true);\r\n }\r\n\r\n AfterRender() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n }\r\n\r\n ShowAddQueryResult(queryId: number) {\r\n let otherGridPageLines = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n let recordsPerPage = parseInt(otherGridPageLines);\r\n this._toolbar.Paginator().RecordsPerPage = isNaN(recordsPerPage) ? 10 : recordsPerPage;\r\n this._queryId = queryId;\r\n const getGridDataRequestModel: IGetGridDataRequestModel = {\r\n TableViewId: queryId,\r\n SubjectRecordId: 0,\r\n SubjectKindId: 0,\r\n SubjectTypeId: 0,\r\n SubjectStatusId: 0,\r\n ViewMode: ViewModes.Query,\r\n PageNumber: 1,\r\n RecordsPerPage: recordsPerPage,\r\n FilterByOwners: false,\r\n ControlId: 0,\r\n SubjectEntityId: 0,\r\n Sort: [],\r\n SearchPhrase: null,\r\n ShowPlanned: false,\r\n RecordOwners: []\r\n };\r\n\r\n BlockUI.Block();\r\n\r\n GridStore.GetData(getGridDataRequestModel)\r\n .always(() => {\r\n BlockUI.Unblock()\r\n })\r\n .then(data => {\r\n this.SetData(data, {isEnableSelectRecord: ko.observable(true)}, getGridDataRequestModel);\r\n this.Show();\r\n });\r\n }\r\n\r\n ShowQueryResult(\r\n query?: QueryExpressionModel,\r\n targetId = '',\r\n enableSelectRecord: boolean = false,\r\n multiSelect: boolean = true\r\n ) {\r\n let requestModel: IGetGridDataRequestModel = this.GetQueryData(query, undefined, undefined, {enabledFavorite: true, isEnableSelectRecord: ko.observable(true)});\r\n\r\n this.LoadData(requestModel).then((result) => {\r\n this.SetData(result, {isEnableSelectRecord: ko.observable(enableSelectRecord), isMultiselect: multiSelect}, requestModel);\r\n if (!this._isRendered) {\r\n this.Show({addClass: 'showScrollModal jBox-padding-15px'}, targetId);\r\n }\r\n });\r\n\r\n }\r\n\r\n LoadData(requestModel: IGetGridDataRequestModel) {\r\n BlockUI.Block();\r\n\r\n return GridStore\r\n .GetData(requestModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail((error) => {\r\n const notifier = new Notifier(null);\r\n notifier.Failed(error.message);\r\n });\r\n }\r\n\r\n private GetQueryData(query: QueryExpressionModel = this._query, subGrid?: BaseGrid, parentRowId?: string, gridOptions?: IBaseGridOptions): IGetGridDataRequestModel {\r\n this._query = query;\r\n const otherGridPageLines = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n const recordsPerPage = parseInt(otherGridPageLines);\r\n this._toolbar.Paginator().RecordsPerPage = isNaN(recordsPerPage) ? 10 : recordsPerPage;\r\n\r\n let pageNumber = subGrid ? subGrid.Paginator.PageNumber : this._toolbar.Paginator().PageNumber;\r\n\r\n if (this._grid() === null){\r\n this._grid(new BaseGrid({\r\n isPrioritiesDisabled: true,\r\n isQueryResultGrid: true,\r\n isEditable: this._isEditable,\r\n screenType: ScreenTypes[this._screenType],\r\n enabledFavorite: gridOptions.enabledFavorite,\r\n isEnableSelectRecord: gridOptions.isEnableSelectRecord,\r\n isMultiselect: gridOptions.isMultiselect\r\n }));\r\n }\r\n\r\n let fastFilters = this._grid().FilterSaveModels;\r\n\r\n UserVarsManager.Instance.SetGridColumnFilters(this.RecordId, fastFilters);\r\n\r\n const preselectedFilters = UserVarsManager.Instance.GetGridColumnFilters(this.RecordId);\r\n\r\n if (preselectedFilters && preselectedFilters.length) {\r\n preselectedFilters.map((preselectedFilter) => {\r\n if (fastFilters.findIndex((el) => el.FieldAlias === preselectedFilter.FieldAlias) < 0) {\r\n fastFilters.push(preselectedFilter);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n TableViewId: this._queryId,\r\n SubjectRecordId: this.RecordId,\r\n SubjectTypeId: 0,\r\n SubjectKindId: 0,\r\n SubjectStatusId: 0,\r\n ViewMode: ViewModes.Query,\r\n PageNumber: pageNumber,\r\n RecordsPerPage: this._toolbar.Paginator().RecordsPerPage,\r\n Sort: this._sorting,\r\n Query: this._query,\r\n FilterByOwners: false,\r\n ControlId: 0,\r\n SubjectEntityId: 0,\r\n SearchPhrase: null,\r\n ShowPlanned: false,\r\n RecordOwners: [],\r\n ParentRowId: parentRowId,\r\n SubQueryGuid: subGrid ? subGrid.Model.SubQueryGuid : null,\r\n FastFilters: fastFilters.filter((filter) => filter.Values.length)\r\n .map((filter) => {\r\n filter.Values.forEach(value => {\r\n if (value.DisplayValue === LABELS.EMPTY_VALUE) {\r\n value.DisplayValue = null;\r\n }\r\n });\r\n return {\r\n FieldAlias: filter.FieldAlias,\r\n Values: filter.Values,\r\n TimeZone: (new Date().getTimezoneOffset()) / 60\r\n };\r\n })\r\n };\r\n }\r\n\r\n OnSortColumns = (eventArgs: any) => {\r\n this._sorting = eventArgs.data.SortColumns;\r\n\r\n let requestModel: IGetGridDataRequestModel = this.GetQueryData();\r\n\r\n this.LoadData(requestModel).then((result) => {\r\n this._grid().SetData(result, true, true);\r\n });\r\n }\r\n\r\n OnUpdateGrid = (updateFromFastFilters: boolean, subGrid?: BaseGrid, parentRowId?: string) => {\r\n this._updateFromFastFilters = updateFromFastFilters;\r\n\r\n let requestModel: IGetGridDataRequestModel = this.GetQueryData(this._query, subGrid, parentRowId, {enabledFavorite: true, isEnableSelectRecord: ko.observable(true)});\r\n let contextGrid = subGrid || this._grid();\r\n\r\n this.LoadData(requestModel).then((result) => {\r\n this._toolbar.Paginator().TotalRecords = result.TotalRecords;\r\n contextGrid.SetRecordsPerPage(this._toolbar.Paginator().RecordsPerPage);\r\n contextGrid.SetData(result, true, true);\r\n });\r\n }\r\n\r\n SearchByPhrase(searchPhrase: string) {\r\n let requestModel: IGetGridDataRequestModel = this.GetQueryData();\r\n requestModel.SearchPhrase = searchPhrase;\r\n\r\n this.LoadData(requestModel).then((result) => {\r\n this._toolbar.Paginator().TotalRecords = result.TotalRecords;\r\n this._grid().SetData(result, true, true);\r\n });\r\n }\r\n\r\n OnPaginationChange = (eventArgs: { data: { pageNumber: number } }) => {\r\n if (eventArgs.data.pageNumber === this._prevPageNumber) {\r\n return;\r\n }\r\n\r\n const loadData = () => {\r\n let requestModel: IGetGridDataRequestModel = this.GetQueryData();\r\n\r\n this.LoadData(requestModel).then((result) => {\r\n result.SubjectEntityId = result.QueryExpression.Entity.Metadata.Id;\r\n result.SubjectRecordId = 0;\r\n this._grid().SetData(result, true, true);\r\n });\r\n };\r\n\r\n if (this._grid().GetEditRows().length > 0 || this._grid().GetNewAndLinkRows().length > 0) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: ConfirmationTypes.Warning\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n loadData();\r\n\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n this._toolbar.Paginator().PageNumber = this._prevPageNumber;\r\n });\r\n\r\n confirmationDialog.Show();\r\n } else {\r\n loadData();\r\n\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n }\r\n }\r\n\r\n private ExportData(destination: string) {\r\n const exportParams: IExportDataRequestModel = {\r\n Query: this._grid().Model.QueryExpression,\r\n Destination: destination,\r\n FilterByOwners: false,\r\n RecordOwners: [],\r\n ShowPlanned: true,\r\n ViewMode: ViewModes.Query,\r\n ShowRetired: false\r\n };\r\n\r\n BlockUI.Block();\r\n\r\n GridStore.ExportData(exportParams)\r\n .always(() => BlockUI.Unblock())\r\n .then((fileName: string) => FileDownloader.DownloadFile(fileName))\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private GoToScreen(linkInfo) {\r\n UserVarsManager.Instance.AddRecent(linkInfo.EntityId, linkInfo.RecordId, linkInfo.RecordTypeId);\r\n Lockr.set(LOCAL_STORAGE.HYPERLINK_SOURCE, linkInfo.EntityId);\r\n\r\n linkInfo.IsOpenInModal = true;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, linkInfo);\r\n }\r\n\r\n private OnHyperLink(linkInfo) {\r\n if (!linkInfo.ShowInModal) {\r\n this.Close();\r\n }\r\n\r\n this.GoToScreen(linkInfo);\r\n }\r\n}","// Module\nvar code = \"\\t<div class=\\\"portlet light query-result-page\\\"> <div class=\\\"relative-block\\\"> <!-- ko if: _showButtons --> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body query-result__form-body\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"pull-left\\\"> <a data-bind=\\\"click: Save\\\" href=\\\"javascript:;\\\" class=\\\"btn green subFormControl saveBtn\\\" id=\\\"saveBtn\\\"> <i class=\\\"fa fa-save\\\"></i> Save </a> <a data-bind=\\\"click: Close\\\" href=\\\"javascript:;\\\" class=\\\"btn red ui-icon-cancel subFormControl cancelBtn\\\" id=\\\"cancelBtn\\\"> <i class=\\\"fa fa-close\\\"></i> Cancel </a> </div> </div> </div> </form> </div> <!-- /ko --> <div class=\\\"box-shadow-wrapper\\\" data-bind=\\\"css: {'margin-t-15px': _showButtons}\\\"> <div class=\\\"row-no-margin atesting-grid-container list-screen\\\"> <!-- ko with: _toolbar --> <div class=\\\"toolbar-wrapper\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _grid --> <div class=\\\"grid-container-wrapper table-scrollable\\\"> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","export const DEFAULT_RECORDS_PER_PAGE = 10;\r\n\r\nexport const PROPERTIES = {\r\n SHOW_ALL_COLUMNS: 'ShowAllColumns',\r\n READONLY: 'ReadOnly',\r\n SEARCH: 'Search',\r\n HIDE_LIFESTATUS_TOGGLE: \"HideLifeStatusToggle\",\r\n HIDE_UNLINK: \"HideUnlink\",\r\n HIDE_EDIT: \"HideEdit\",\r\n ENABLE_BASKET: 'EnableBasket',\r\n\tENABLE_LINK: 'EnableLinkButton',\r\n ENABLE_UNLINK_MULTIPLE: 'EnableUnlinkMultipleButton',\r\n ENABLE_LINK_PARENT: 'EnableLinkParentButton',\r\n\tENABLE_SUBGRID_LINK: 'EnableSubGridLinkButton',\r\n ENABLE_UNLINK_MULTIPLE_RECORDS_SUBGRID: 'EnableUnlinkMultipleRecordsSubGridLinkButton',\r\n ENABLE_SUBGRID_LINK_PARENT: 'EnableSubGridLinkParentButton',\r\n ENABLE_NEW_LINK: 'EnableNewButton',\r\n ENABLE_ADD_AND_LINK: 'EnableAdd&LinkButton',\r\n ENABLE_SCAN_AND_LINK: 'EnableScan&LinkButton',\r\n ENABLE_SUBGID_ADD_AND_LINK: 'EnableSubGridAdd&LinkButton',\r\n ENABLE_SUBGRID_SCAN_AND_LINK: 'EnableSubGridScan&LinkButton',\r\n ENABLE_ADD_QUERY: 'EnableAddQueryButton',\r\n BACK_LINKING: 'BackLinking',\r\n SECURITY_FILTER: 'SecurityFilter',\r\n QUERY_CONDITION: 'QueryCondition',\r\n MAX_ROW_HEIGHT: 'MaxRowHeight',\r\n FAST_FILTER: 'FastFilter',\r\n SHOW_TABLE_VIEW: 'ShowTableView',\r\n ROW_COLOR: 'RowColor',\r\n BULK_EDIT: 'BulkEdit',\r\n EDIT_ALL: 'EditAll',\r\n LINKING_CONDITION: 'LinkingCondition',\r\n CARD_SCREEN: 'CardScreen',\r\n POSITION: 'Position',\r\n PROCESS_CARDS: 'ProcessCards'\r\n};\r\n\r\nexport const SECURITY_FILTERS = {\r\n SHARING_SECURITY: 'Sharing',\r\n RECORD_SECURITY: 'Record',\r\n};","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {OperationResultModel} from 'Core/Models/OperationResultModel';\r\n\r\n\r\nexport interface ILinkRecordsRequestModel {\r\n MainTableId: number;\r\n LinkedTableId: number;\r\n MainRecordId: number;\r\n LinkedRecordIds: Array<number>;\r\n}\r\n\r\nexport interface IGetLatestLinkRequestModel {\r\n MainTableId: number;\r\n LinkedTableId: number;\r\n MainRecordId: number;\r\n}\r\n\r\nexport interface IGetLatestSubRequestModel {\r\n SubTableId: number;\r\n MainRecordId: number\r\n}\r\n\r\nexport interface ICopyLatestSubRequestModel {\r\n MainTableId: number;\r\n SubTableId: number;\r\n MainRecordId: number\r\n}\r\n\r\nexport interface ICopySubRequestModel {\r\n SubTableId: number;\r\n SequenceId: number;\r\n}\r\n\r\nexport class LinkRecordsStore {\r\n static LinkWithRecords(params: ILinkRecordsRequestModel): P.Promise<OperationResultModel> {\r\n const deferredResult = P.defer<OperationResultModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/ScreenFormApi/LinkWithRecords',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(<OperationResultModel>Deserialize(result, OperationResultModel));\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetLastLinkedRecordEditScreen(params: IGetLatestLinkRequestModel) {\r\n const deferred = P.defer<any>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/ScreenFormApi/GetLastLinkedRecordEditScreen',\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject)\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n })\r\n .fail(err => deferred.reject(err));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static GetLastSubRecordSpecs(params: IGetLatestSubRequestModel) {\r\n const deferred = P.defer<any>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/ScreenFormApi/GetLastSubRecordSpecs',\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject)\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n })\r\n .fail(err => deferred.reject(err));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static CopyLastSubRecord(params: ICopyLatestSubRequestModel) {\r\n const deferred = P.defer<any>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/ScreenFormApi/CopyLastSubRecord',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject)\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n })\r\n .fail(err => deferred.reject(err));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static CopySubRecord(params: ICopySubRequestModel) {\r\n const deferred = P.defer<any>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/ScreenFormApi/CopySubRecord',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject)\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n })\r\n .fail(err => deferred.reject(err));\r\n\r\n return deferred.promise();\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._loadInProgres, click: _help.ShowControlHelp.bind(_help, $data), css: {'has-error': !$data._isValid()}\\\" class=\\\"row-no-margin atesting-grid-container\\\"> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}, attr: { title: $data._errorMessage }\\\" class=\\\"fa fa-warning control-tooltip\\\"></i> <!-- ko with: _toolbar --> <div data-bind=\\\"attr: {id: 'control-' + $parent._guid}\\\" class=\\\"toolbar-wrapper\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _baseGrid --> <div class=\\\"grid-relative-container\\\"> <div class=\\\"grid-container-wrapper\\\" data-bind=\\\"visible: _isReady\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- ko if: $parent.ShouldShowBottomPagination()--> <!-- ko with: $parent._toolbar --> <div class=\\\"pagination-container-grid pagination-bottom-container-grid margin-t-15px\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import {P} from \"Core/Common/Promise\";\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {IGetOptionsDto} from \"../Models/Dto/IGetOptionsDto\";\r\nimport {LookupOptionsDto} from \"../Models/Dto/LookupOptionsDto\";\r\nimport {ISaveSelectionDto} from \"../Models/Dto/ISaveSelectionDto\";\r\n\r\nexport class Store {\r\n static GetLookupOptions(dto: IGetOptionsDto): P.Promise<LookupOptionsDto> {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/BackLinkApi/GetLookupOptions',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: dto\r\n });\r\n }\r\n\r\n static SaveSelection(dto: ISaveSelectionDto): P.Promise<any> {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/BackLinkApi/SetLookupValue',\r\n type: 'POST'\r\n },\r\n params: dto\r\n });\r\n }\r\n}","export class LookupOptionDto {\r\n Id: number;\r\n Name: string;\r\n}","import * as ko from 'knockout';\r\n\r\nimport {LookupOption} from \"./LookupOption\";\r\nimport {LookupField} from \"./LookupField\";\r\n\r\nexport class ViewModel {\r\n Header: string;\r\n ErrorSummary: KnockoutObservable<string>;\r\n Options: KnockoutObservableArray<LookupOption>;\r\n SelectedOption: KnockoutObservable<number>;\r\n LookupField: LookupField;\r\n\r\n constructor() {\r\n this.ErrorSummary = ko.observable(null);\r\n this.Options = ko.observableArray([]);\r\n this.SelectedOption = ko.observable(null);\r\n }\r\n}","import {Icon} from \"Core/Icon/Icon\";\r\nimport {LookupFieldTable} from \"./LookupFieldTable\";\r\n\r\nexport class LookupField {\r\n Id: number;\r\n Name: string;\r\n Icon: Icon;\r\n\r\n LinkTable: LookupFieldTable;\r\n LeftTable: LookupFieldTable;\r\n RightTable: LookupFieldTable;\r\n}","import {Icon} from \"Core/Icon/Icon\";\r\n\r\nexport class LookupFieldTable {\r\n Id: number;\r\n Name: string;\r\n}","import {Icon} from \"Core/Icon/Icon\";\r\n\r\nimport {LookupOptionsDto} from \"../Models/Dto/LookupOptionsDto\";\r\nimport {LookupOptionDto} from \"../Models/Dto/LookupOptionDto\";\r\nimport {LookupFieldDto} from \"../Models/Dto/LookupFieldDto\";\r\nimport {LookupFieldTableDto} from \"../Models/Dto/LookupFieldTableDto\";\r\n\r\nimport {ViewModel} from \"../Models/View/ViewModel\";\r\nimport {LookupOption} from \"../Models/View/LookupOption\";\r\nimport {LookupField} from \"../Models/View/LookupField\";\r\nimport {LookupFieldTable} from \"../Models/View/LookupFieldTable\";\r\n\r\nexport class Mappings {\r\n static MapToViewModel(dto: LookupOptionsDto): ViewModel {\r\n const viewModel = new ViewModel();\r\n\r\n viewModel.Options(this.MapToLookupOptions(dto.Options));\r\n viewModel.SelectedOption(dto.SelectedOption && dto.SelectedOption.Id);\r\n viewModel.LookupField = this.MapToLookupField(dto.LookupField);\r\n\r\n return viewModel;\r\n }\r\n\r\n static MapToLookupOptions(dtos: LookupOptionDto[]): LookupOption[] {\r\n return dtos.map(dto => this.MapToLookupOption(dto));\r\n }\r\n\r\n static MapToLookupOption(dto: LookupOptionDto): LookupOption {\r\n if (!dto) return null;\r\n\r\n const option = new LookupOptionDto();\r\n\r\n option.Id = dto.Id;\r\n option.Name = dto.Name;\r\n\r\n return option;\r\n }\r\n\r\n static MapToLookupField(dto: LookupFieldDto): LookupField {\r\n if (!dto) return null;\r\n\r\n const field = new LookupField();\r\n\r\n field.Id = dto.Id;\r\n field.Name = dto.Name;\r\n field.Icon = new Icon(dto.Icon);\r\n\r\n field.LinkTable = this.MapToLookupFieldTable(dto.LinkTable);\r\n field.LeftTable = this.MapToLookupFieldTable(dto.LeftTable);\r\n field.RightTable = this.MapToLookupFieldTable(dto.RightTable);\r\n\r\n return field;\r\n }\r\n\r\n static MapToLookupFieldTable(dto: LookupFieldTableDto): LookupFieldTable {\r\n if (!dto) return null;\r\n\r\n const table = new LookupFieldTable();\r\n\r\n table.Id = dto.Id;\r\n table.Name = dto.Name;\r\n\r\n return table;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\n\r\nimport {IPopup} from \"../IPopup\";\r\nimport {IParams} from \"./IParams\";\r\n\r\nimport {ViewModel} from \"./Models/View/ViewModel\";\r\n\r\nimport {Store} from \"./Stores/Store\";\r\nimport {LookupOptionsDto} from \"./Models/Dto/LookupOptionsDto\";\r\n\r\nimport {Mappings} from \"./Mappings/Mappings\";\r\n\r\nimport Template from 'Core/Components/BackLinking/Popup/FillLookup/Templates/Template.html';\r\n\r\nko.templates['Core/Components/BackLinking/Popup/FillLookup/Templates/Template'] = Template;\r\n\r\nexport class FillLookupPopup implements IPopup {\r\n private _viewModel: ViewModel;\r\n private _modal: Modal;\r\n\r\n constructor(private _params: IParams) {\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/BackLinking/Popup/FillLookup/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Show() {\r\n BlockUI.Block();\r\n\r\n this.RequestOptions()\r\n .then((dto: LookupOptionsDto) => {\r\n if (dto.Options.length === 0) {\r\n new Notifier().Warning('There are no options for such intention');\r\n return;\r\n }\r\n\r\n this._viewModel = Mappings.MapToViewModel(dto);\r\n this._viewModel.Header = this._params.Header;\r\n\r\n this.ShowModal();\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n Save() {\r\n if (!this._viewModel.SelectedOption()) {\r\n this._viewModel.ErrorSummary('Please select any option');\r\n return;\r\n }\r\n\r\n this._viewModel.ErrorSummary(null);\r\n\r\n BlockUI.Block();\r\n\r\n this.SaveSelection()\r\n .then(() => {\r\n new Notifier().Success('Success');\r\n this._modal.Close();\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n Cancel() {\r\n this._modal.Close();\r\n }\r\n\r\n private RequestOptions() {\r\n return Store.GetLookupOptions({\r\n SubTableView: this._params.SubTableView,\r\n LeftTableId: this._params.LeftTableId,\r\n RightTableId: this._params.RightTableId,\r\n LeftRecordId: this._params.LeftRecordId,\r\n RightRecordId: this._params.RightRecordId,\r\n Sequence: this._params.Sequence\r\n });\r\n }\r\n\r\n private SaveSelection() {\r\n return Store.SaveSelection({\r\n LookupFieldId: this._viewModel.LookupField.Id,\r\n SelectedOption: this._viewModel.SelectedOption(),\r\n LeftTableId: this._viewModel.LookupField.LeftTable.Id,\r\n RightTableId: this._viewModel.LookupField.RightTable.Id,\r\n LeftRecordId: this._params.LeftRecordId,\r\n RightRecordId: this._params.RightRecordId,\r\n Sequence: this._params.Sequence\r\n });\r\n }\r\n\r\n private ShowModal() {\r\n this._modal = new Modal({\r\n minWidth: 400\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n}","// Module\nvar code = \"<!--ko with: _viewModel--> <div class=\\\"portlet body-space box blue-dark\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: Header\\\"></span> </div> </div> <div class=\\\"portlet-body\\\"> <div class=\\\"form clearfix\\\"> <fieldset> <legend> <!--ko text: LookupField.LeftTable.Name--><!--/ko--> <i class=\\\"fa fa-arrow-right\\\"></i> <!--ko text: LookupField.RightTable.Name--><!--/ko--> | <!--ko text: LookupField.Name--><!--/ko--> </legend> <div class=\\\"red\\\" data-bind=\\\"if: ErrorSummary\\\"> <span data-bind=\\\"text: ErrorSummary\\\"></span> </div> <!--ko foreach: Options--> <div class=\\\"form-group\\\"> <label> <input type=\\\"radio\\\" name=\\\"lookupOption\\\" data-bind=\\\"\\r\\n checkedValue: $data.Id,\\r\\n checked: $parent.SelectedOption,\\r\\n uniform: $parent.SelectedOption() === $data.Id\\\"> <span data-bind=\\\"text: $data.Name\\\"></span> </label> </div> <!--/ko--> </fieldset> <div class=\\\"pull-right\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: $parent.Save.bind($parent)\\\"> <i class=\\\"fa fa-save\\\"></i> Save </button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: $parent.Cancel.bind($parent)\\\"> <i class=\\\"fa fa-times\\\"></i> Cancel </button> </div> </div> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","import {P} from \"Core/Common/Promise\";\r\nimport {Request} from \"Core/Common/Request\";\r\n\r\nimport {IGetOptionsDto} from \"../Models/Dto/IGetOptionsDto\";\r\nimport {BackLinkOptionsDto} from \"../Models/Dto/BackLinkOptionsDto\";\r\nimport {ISaveSelectionDto} from \"../Models/Dto/ISaveSelectionDto\";\r\n\r\nexport class Store {\r\n static GetBackLinkOptions(dto: IGetOptionsDto): P.Promise<BackLinkOptionsDto> {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/BackLinkApi/GetBackLinkOptions',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: dto\r\n });\r\n }\r\n\r\n static SaveSelection(dto: ISaveSelectionDto) : P.Promise<any> {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/BackLinkApi/CreateBackLinks',\r\n type: 'POST'\r\n },\r\n params: dto\r\n });\r\n }\r\n}","import {OptionsGroup} from \"./OptionsGroup\";\r\nimport {LinkTable} from \"./LinkTable\";\r\n\r\nexport class ViewModel {\r\n Header: string;\r\n Groups: OptionsGroup[];\r\n LinkTable: LinkTable;\r\n\r\n GetSelectedOptions() {\r\n const selectedOptions = [];\r\n\r\n for (const group of this.Groups) {\r\n if (group.SelectedOption()) {\r\n selectedOptions.push(group.SelectedOption());\r\n continue;\r\n }\r\n\r\n selectedOptions.push(...group.Options\r\n .filter(option => option.IsSelected())\r\n .map(option => option.Id));\r\n }\r\n\r\n return selectedOptions;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Option} from \"./Option\";\r\n\r\nexport class OptionsGroup {\r\n GroupName: string;\r\n MultipleSelection: boolean;\r\n\r\n Options: Option[];\r\n SelectedOption: KnockoutObservable<number>;\r\n\r\n constructor() {\r\n this.SelectedOption = ko.observable(null);\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nexport class Option {\r\n Id: number;\r\n Name: string;\r\n\r\n IsSelected: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n this.IsSelected = ko.observable(false);\r\n }\r\n}","import { Table } from \"./Table\";\r\n\r\nexport class LinkTable {\r\n Id: number;\r\n Name: string;\r\n\r\n\tLeftTable: Table;\r\n RightTable: Table;\r\n}","export class Table {\r\n\tId: number;\r\n\tName: string;\r\n}","import {BackLinkOptionsDto} from \"../Models/Dto/BackLinkOptionsDto\";\r\nimport {OptionsGroupDto} from \"../Models/Dto/OptionsGroupDto\";\r\nimport {BackLinkOptionDto} from \"../Models/Dto/BackLinkOptionDto\";\r\nimport {LinkTableDto} from \"../Models/Dto/LinkTableDto\";\r\n\r\nimport {ViewModel} from \"../Models/View/ViewModel\";\r\nimport {OptionsGroup} from \"../Models/View/OptionsGroup\";\r\nimport {Option} from \"../Models/View/Option\";\r\nimport {LinkTable} from \"../Models/View/LinkTable\";\r\nimport {TableDto} from \"../Models/Dto/TableDto\";\r\nimport {Table} from \"../Models/View/Table\";\r\n\r\nexport class Mappings {\r\n static MapToViewModel(dto: BackLinkOptionsDto): ViewModel {\r\n const viewModel = new ViewModel();\r\n\r\n viewModel.Groups = dto.Groups .map(group => this.MapToOptionsGroup(group))\r\n\r\n viewModel.LinkTable = this.MapToLinkTable(dto.LinkTable);\r\n\r\n return viewModel;\r\n }\r\n\r\n static MapToLinkTable(dto: LinkTableDto): LinkTable {\r\n const linkTable = new LinkTable();\r\n\r\n linkTable.Id = dto.Id;\r\n linkTable.Name = dto.Name;\r\n linkTable.LeftTable = this.MapToTable(dto.LeftTable);\r\n linkTable.RightTable = this.MapToTable(dto.RightTable);\r\n\r\n return linkTable;\r\n }\r\n\r\n static MapToTable(dto: TableDto): Table {\r\n const table = new Table();\r\n\r\n table.Id = dto.Id;\r\n table.Name = dto.Name;\r\n\r\n return table;\r\n }\r\n\r\n static MapToOptionsGroup(dto: OptionsGroupDto): OptionsGroup {\r\n const group = new OptionsGroup();\r\n\r\n group.GroupName = dto.GroupName;\r\n\r\n group.Options = dto.Options.map(option => this.MaptToOption(option));\r\n group.MultipleSelection = dto.MultipleSelection;\r\n\r\n if (dto.MultipleSelection) {\r\n group.Options.forEach(option =>\r\n option.IsSelected(dto.SelectedOptions.indexOf(option.Id) > -1));\r\n } else {\r\n group.SelectedOption(dto.SelectedOptions[0] || null);\r\n }\r\n\r\n return group;\r\n }\r\n\r\n static MaptToOption(dto: BackLinkOptionDto): Option {\r\n const option = new Option();\r\n\r\n option.Id = dto.Id;\r\n option.Name = dto.Name;\r\n\r\n return option;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\n\r\nimport {IPopup} from \"../IPopup\";\r\nimport {IParams} from \"./IParams\";\r\n\r\nimport {ViewModel} from './Models/View/ViewModel';\r\n\r\nimport {Store} from \"./Stores/Store\";\r\nimport {BackLinkOptionsDto} from \"./Models/Dto/BackLinkOptionsDto\";\r\n\r\nimport Template from 'Core/Components/BackLinking/Popup/MakeBackLink/Templates/Template.html';\r\nimport {Mappings} from \"./Mappings/Mappings\";\r\n\r\nko.templates['Core/Components/BackLinking/Popup/MakeBackLink/Templates/Template'] = Template;\r\n\r\nexport class MakeBackLinkPopup extends Event implements IPopup {\r\n private _viewModel: ViewModel;\r\n private _modal: Modal;\r\n\r\n constructor(private _params: IParams) {\r\n super();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Components/BackLinking/Popup/MakeBackLink/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Save() {\r\n BlockUI.Block();\r\n\r\n this.SaveSelection()\r\n .then(() => {\r\n new Notifier().Success('Success');\r\n this._modal.Close();\r\n this.Trigger('CHANGES_SAVED');\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock())\r\n }\r\n\r\n Cancel() {\r\n this._modal.Close();\r\n }\r\n\r\n Show(): void {\r\n BlockUI.Block();\r\n\r\n this.RequestOptions()\r\n .then((dto: BackLinkOptionsDto) => {\r\n if (dto.Groups.length === 0) {\r\n new Notifier().Warning('There are no options for such intention');\r\n return;\r\n }\r\n\r\n this._viewModel = Mappings.MapToViewModel(dto);\r\n this._viewModel.Header = this._params.Header;\r\n\r\n this.ShowModal();\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private ShowModal() {\r\n this._modal = new Modal({\r\n minWidth: 400\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n private RequestOptions() {\r\n return Store.GetBackLinkOptions({\r\n SubTableView: this._params.SubTableView,\r\n LeftTableId: this._params.LeftTableId,\r\n RightTableId: this._params.RightTableId,\r\n LeftRecordId: this._params.LeftRecordId,\r\n RightRecordId: this._params.RightRecordId,\r\n Sequence: this._params.Sequence\r\n });\r\n }\r\n\r\n private SaveSelection() {\r\n return Store.SaveSelection({\r\n SubTableView: this._params.SubTableView,\r\n LeftTableId: this._params.LeftTableId,\r\n RightTableId: this._params.RightTableId,\r\n LeftRecordId: this._params.LeftRecordId,\r\n RightRecordId: this._params.RightRecordId,\r\n SelectedOptions: this._viewModel.GetSelectedOptions()\r\n });\r\n }\r\n}","// Module\nvar code = \"<!--ko with: _viewModel--> <div class=\\\"portlet body-space box blue-dark\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: Header\\\"></span> </div> </div> <div class=\\\"portlet-body\\\"> <div class=\\\"form clearfix\\\"> <!--ko foreach: Groups--> <fieldset> <legend> <span data-bind=\\\"text: $data.GroupName\\\"></span> </legend> <!--ko if: MultipleSelection--> <!--ko foreach: Options--> <div class=\\\"form-group\\\"> <label> <input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.IsSelected, uniform: $data.IsSelected\\\"> <span data-bind=\\\"text: $data.Name\\\"></span> </label> </div> <!--/ko--> <!--/ko--> <!--ko ifnot: MultipleSelection--> <!--ko foreach: Options--> <div class=\\\"form-group\\\"> <label> <input type=\\\"radio\\\" data-bind=\\\"\\r\\n attr: {name: 'group' + $parent.GroupNumber},\\r\\n checkedValue: $data.Id,\\r\\n checked: $parent.SelectedOption,\\r\\n uniform: $parent.SelectedOption() === $data.Id\\\"> <span data-bind=\\\"text: $data.Name\\\"></span> </label> </div> <!--/ko--> <!--/ko--> </fieldset> <!--/ko--> <div class=\\\"pull-right\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: $parent.Save.bind($parent)\\\"> <i class=\\\"fa fa-save\\\"></i> Save </button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: $parent.Cancel.bind($parent)\\\"> <i class=\\\"fa fa-times\\\"></i> Cancel </button> </div> </div> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","import {Event} from 'Core/Common/Event';\r\n\r\nimport {Intentions} from \"./Constants/Intentions\";\r\n\r\nimport {IParams} from \"./IParams\";\r\n\r\nimport {FillLookupPopup} from \"./Popup/FillLookup/FillLookupPopup\";\r\nimport {MakeBackLinkPopup} from \"./Popup/MakeBackLink/MakeBackLinkPopup\";\r\n\r\nexport class BackLinking extends Event {\r\n constructor(private _params: IParams) {\r\n super();\r\n }\r\n\r\n ShowPopup() {\r\n switch (this._params.Intention) {\r\n case Intentions.FillLookup:\r\n this.ShowFillLookupPopup();\r\n break;\r\n\r\n case Intentions.MakeBackLink:\r\n this.ShowMakeBackLinkPopup();\r\n break;\r\n }\r\n }\r\n\r\n private ShowFillLookupPopup() {\r\n new FillLookupPopup(this._params).Show();\r\n }\r\n\r\n private ShowMakeBackLinkPopup() {\r\n const popup = new MakeBackLinkPopup(this._params);\r\n popup.On('CHANGES_SAVED', this, () => this.Trigger('CHANGES_SAVED'));\r\n popup.Show();\r\n }\r\n}\r\n","export const Intentions = {\r\n FillLookup: 'FillLookup',\r\n MakeBackLink: 'MakeBackLink'\r\n};","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as $ from 'jquery';\r\n\r\nimport {GenericDeserialize, Serialize} from 'libs/cerialize';\r\n\r\nimport 'pubsub';\r\nimport 'lockr';\r\n\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {FileDownloader} from 'Core/Components/FileDownloader/FileDownloader';\r\nimport {\r\n GridStore,\r\n IExportDataRequestModel,\r\n IGetGridDataRequestModel, IUnlinkMultipleRecordsRequestModel,\r\n IUnlinkRecordRequestModel\r\n} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {IGetGridViewListDto, ViewGridListStore} from 'Core/Controls/Grid/Stores/ViewGridListStore';\r\nimport {ViewGridModel} from 'Core/Controls/Grid/Models/ViewGridModel';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {QueryBuilder} from '../../../QueryBuilder/QueryBuilder';\r\nimport {QueryBuilder as QueryBuilderControl} from 'Core/Controls/QueryBuilder/QueryBuilder';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {OperationResultModel} from 'Core/Models/OperationResultModel';\r\nimport {BaseGrid} from 'Core/Controls/Grid/BaseGrid/BaseGrid';\r\nimport {Paginator} from 'Core/Components/Paginator/Paginator';\r\nimport {CONTROL_TYPES, RenderModes, TABLE_TYPES} from 'Core/Constant';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {Toolbar} from 'Core/Controls/Grid/Toolbar/Toolbar';\r\nimport {EVENTS as TOOLBAR_EVENTS} from 'Core/Controls/Grid/Toolbar/Constants';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel';\r\nimport {SearchScreen, ISelectedRecord} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {INewLinkedRecord, RecordLinker} from 'Core/Components/RecordLinker/RecordLinker';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {DataModel} from 'Core/Screens/EditScreen/Models/DataModel';\r\nimport {QueryResultPage} from 'Core/Controls/Grid/BaseGrid/QueryResultPage/QueryResultPage';\r\nimport {ILinkRecordsRequestModel, LinkRecordsStore} from 'Core/Controls/Grid/Stores/LinkRecordsStore';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {EVENTS as BASE_GRID_EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {EVENTS as PAGINATOR_EVENTS} from 'Core/Components/Paginator/Constants';\r\nimport {EntityTypes} from 'Core/Controls/Grid/BaseGrid/Enums/EntityTypes';\r\nimport {EditLinkDataModel, UpdateDataModel} from 'Core/Controls/LinkList/Models/UpdateDataModel';\r\nimport {InsertOrUpdateRecordStore} from 'Core/Screens/EditScreen/Stores/InsertOrUpdateRecordStore';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {EVENTS as BASKET_EVENTS} from 'Core/Controls/Basket/Events';\r\n\r\nimport GridConfig from 'Core/Controls/Grid/Configs/grid-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/Grid/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/Grid/Templates/HelpView.html';\r\nimport DesignTemplate from 'Core/Controls/Grid/Templates/Design.html';\r\nimport ToolBarTemplate from 'Core/Controls/Grid/Templates/ToolBar.html';\r\n\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {LOCK_EVENTS, LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {ILoadScreenRelationModel, LinkEditor} from 'Core/Screens/Common/LinkEditor/LinkEditor';\r\nimport {EVENTS as CONSULT_SCREEN_EVENTS} from 'Core/Screens/ConsultScreen/Events';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {GridRow} from 'Core/Controls/Grid/BaseGrid/GridRow/GridRow';\r\nimport {QueryConditionGroupModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport {ConditionBuilder} from 'QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder';\r\nimport {DeleteQueryStore} from 'QueryBuilder/Stores/DeleteQueryStore';\r\nimport {LockQueryStore} from 'QueryBuilder/Stores/LockQueryStore';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {IParams as BackLinkingParams} from \"Core/Components/BackLinking/IParams\";\r\nimport {BackLinking} from \"Core/Components/BackLinking/BackLinking\";\r\n\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {BaseScreen, IScreenVariable} from 'Core/Screens/BaseScreen';\r\nimport {Basket} from 'Core/Controls/Basket/Basket';\r\nimport {GridRowDataModel} from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateDataModel';\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {ActionSubjectRecordModel} from 'Core/ScreenManager/Models/ActionSubjectRecordModel';\r\nimport {SortModel} from 'Core/Controls/Grid/Models/SortModel';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {TRIGGER_ACTIONS} from 'Core/Constants/TriggerActions';\r\nimport {TriggerModel} from 'Core/Controls/BaseControl/Models/TriggerModel';\r\nimport {GridCellValueModel, RecordKey} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport {LinkList} from \"../LinkList/LinkList\";\r\nimport {BarcodeScanner} from \"Core/Components/BarcodeScanner/BarcodeScanner\";\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\nimport {EVENTS as QUERY_RESULT_GRID_EVENTS} from \"./BaseGrid/QueryResultPage/Events\";\r\nimport {GridRowModel} from \"./Models/GridDataModel/GridRowModel\";\r\nimport {PivotDetailsDropdown} from \"./BaseGrid/PivotDetaillsDropdown/PivotDetailsDropdown\";\r\nimport {GenericButton} from \"../GenericButton/GenericButton\";\r\nimport {ButtonCopy} from '../ButtonCopy/ButtonCopy';\r\nimport {DEFAULT_RECORDS_PER_PAGE, PROPERTIES, SECURITY_FILTERS} from \"./Constants\";\r\nimport {QueryEntityJoinModel} from './Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport {TableStore} from \"Core/Common/Stores/TableStore\";\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\nimport {States} from './BaseGrid/GridRow/States';\r\nimport {UserManager, UserRoles, UserTypes} from '../../../User/UserManager';\r\nimport {ProfileSelectorScreen} from \"Core/Screens/ProfileSelectorScreen/ProfileSelectorScreen\";\r\nimport { TriggerManager } from 'Core/Components/Triggers/TriggerManager';\r\nimport { FunctionBuilder } from 'Core/Components/CustomFunctions/FunctionBuilder';\r\nimport { gridFacade } from 'Core/Components/CustomFunctions/Facades/GridFacade';\r\nimport { EVENTS as SCREEN_EVENTS } from 'Core/Screens/Events';\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport {FastFilterSaveModel, QueryColumnModel, RelationshipTypes} from './BaseGrid/Index';\r\nimport {CheckedUserAndGroup} from \"Core/Controls/SelectUser/SelectUser\";\r\nimport { RecordStore } from '../../Common/Stores/RecordStore';\r\n\r\nko.templates['Core/Controls/Grid/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Grid/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Grid/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Grid/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Grid/Templates/ToolBar'] = ToolBarTemplate;\r\n\r\nexport interface ILinkForEditScreenOptions{\r\n recordIds: number[],\r\n updateLinkRecord?: boolean,\r\n isLinkParent?: boolean\r\n}\r\n\r\nexport class Grid extends BaseControl {\r\n private _gridEntityId: number;\r\n private _subjectEntityName: string;\r\n private _subjectEntityId: number;\r\n private _subjectRecordId: number;\r\n private _subjectRecordSpecsModel: RecordSpecsModel;\r\n private _dataModel: GridDataModel;\r\n private _tableView: KnockoutObservable<ViewGridModel>;\r\n private _viewGridList: KnockoutObservableArray<ViewGridModel>;\r\n private _queryBuilder: KnockoutObservable<QueryBuilder>;\r\n private _enableLink: KnockoutObservable<boolean>;\r\n private _enableUnlinkMultiple: KnockoutObservable<boolean>;\r\n private _enableLinkParent: KnockoutObservable<boolean>;\r\n private _hasOneParent: KnockoutObservable<boolean>;\r\n private _enableAddAndLink: KnockoutObservable<boolean>;\r\n private _enableAddFromQuery: KnockoutObservable<boolean>;\r\n private _enableScanAndLink: KnockoutObservable<boolean>;\r\n private _showTableViewElement: KnockoutObservable<boolean>;\r\n private _enableNewRecord: KnockoutObservable<boolean>;\r\n private _enableBasket: KnockoutObservable<boolean>;\r\n private _showSearchInput: KnockoutObservable<boolean>;\r\n private _userVarsManager: UserVarsManager;\r\n private _viewMode: ViewModes;\r\n private _baseGrid: BaseGrid;\r\n private _sorting: Array<SortModel>;\r\n private _searchPhrase: KnockoutObservable<string>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _hideLifeStatusToggle: KnockoutObservable<boolean>;\r\n private _hideUnlink: KnockoutObservable<boolean>;\r\n private _hideEdit: KnockoutObservable<boolean>;\r\n private _enableTableViewLookup: boolean;\r\n private _enableFunctionLookup: boolean;\r\n private _toolbar: Toolbar;\r\n private _loadInProgress: KnockoutObservable<boolean>;\r\n private _designFields: KnockoutObservableArray<AttachedFieldModel>;\r\n private _isRestoreScrollPosition: boolean;\r\n private _queryExpression: QueryExpressionModel;\r\n private _tableViewId: number;\r\n private _addingRecordAllowed: KnockoutObservable<boolean>;\r\n private _linkingRecordAllowed: KnockoutObservable<boolean>;\r\n private _exportDataAllowed: KnockoutObservable<boolean>;\r\n private _scanAndLinkAllowed: KnockoutObservable<boolean>;\r\n private _conditions: QueryConditionGroupModel;\r\n private _isLinkEditorEnabled: boolean;\r\n private _filterByOwners: boolean;\r\n private _backLinkingButtons: KnockoutObservableArray<any>;\r\n private _selectedUsers: number[];\r\n private _showPlanned: boolean;\r\n private _selectedTags: any;\r\n private _applyFilter: boolean;\r\n private _maxRowHeight: KnockoutObservable<string>;\r\n private _basket: Basket;\r\n private _showTogglePrioritiesButton: boolean;\r\n private _isPrioritiesDisabled: boolean;\r\n private _isTableViewUpdating: KnockoutObservable<boolean>;\r\n private _showBulkEditButton: KnockoutObservable<boolean>;\r\n private _disabledShowAllColumnsBtn: boolean;\r\n private _disableBulkEditButton: KnockoutObservable<boolean>;\r\n private _showResetFilterButton: KnockoutObservable<boolean>;\r\n private _showRetiredRecords: boolean;\r\n private _inlineControls: Array<IControl>;\r\n private _tableViewUpdatingSubscription: KnockoutSubscription;\r\n private _searchScreen: SearchScreen;\r\n private _toolbarBlock: HTMLElement;\r\n private _hasData: boolean;\r\n private _rowColorEnabled: KnockoutObservable<boolean>;\r\n private _hasLinkingCondition: boolean = false;\r\n private _prevPageNumber = 1;\r\n private _disabledCopyButton: KnockoutObservable<boolean>;\r\n private _notifications = NOTIFICATIONS;\r\n private _isDirectionCorrect: boolean;\r\n private _refreshScreenAfterManipulations: boolean;\r\n private _isMultipleUnlinkModeActive: KnockoutObservable<boolean> = ko.observable(false);\r\n private _isFastFilter: boolean\r\n private _isEnableSelectRecord: KnockoutObservable<boolean>;\r\n\r\n constructor(param: IControlParam) {\r\n super(param, GridConfig);\r\n\r\n this._isEnableSelectRecord = ko.observable(false);\r\n this._isTableViewUpdating = ko.observable(false);\r\n this._designFields = ko.observableArray(this._model().Fields); \r\n this._model.subscribe(_ => this._designFields(this._model().Fields));\r\n this._designFields.subscribe(fields => _.each(fields, (field, index) => field.Sort = index * 10));\r\n this._tableView = ko.observable(null);\r\n this._addingRecordAllowed = ko.observable(false);\r\n this._linkingRecordAllowed = ko.observable(false);\r\n this._exportDataAllowed = ko.observable(false);\r\n this._scanAndLinkAllowed = ko.observable(false);\r\n this._isEditable = ko.observable(true);\r\n this._hideLifeStatusToggle = ko.observable(false);\r\n this._hideUnlink = ko.observable(false);\r\n this._hideEdit = ko.observable(false);\r\n this._enableLink = ko.observable(false);\r\n this._enableUnlinkMultiple = ko.observable(false);\r\n this._enableLinkParent = ko.observable(false);\r\n this._hasOneParent = ko.observable(false);\r\n this._enableAddAndLink = ko.observable(false);\r\n this._enableAddFromQuery = ko.observable(false);\r\n this._enableScanAndLink = ko.observable(false);\r\n this._showTableViewElement = ko.observable(false);\r\n this._showSearchInput = ko.observable(true);\r\n this._enableNewRecord = ko.observable(false);\r\n this._enableBasket = ko.observable(false);\r\n this._loadInProgress = ko.observable(false);\r\n this._maxRowHeight = ko.observable(null);\r\n this._showBulkEditButton = ko.observable(false);\r\n this._disabledShowAllColumnsBtn = false;\r\n this._disableBulkEditButton = ko.observable(false);\r\n this._showResetFilterButton = ko.observable(false);\r\n this._filterByOwners = false;\r\n this._backLinkingButtons = ko.observableArray([]);\r\n this._applyFilter = true;\r\n this._showTogglePrioritiesButton = this.ScreenType !== ScreenTypes[ScreenTypes.Portlet];\r\n this._isPrioritiesDisabled = !this._showTogglePrioritiesButton;\r\n this._showRetiredRecords = false;\r\n this._inlineControls = [];\r\n this._userVarsManager = UserVarsManager.Instance;\r\n this._hasData = false;\r\n this._rowColorEnabled = ko.observable(false);\r\n this._disabledCopyButton = ko.observable(true);\r\n this._refreshScreenAfterManipulations = this.IsConsultScreen;\r\n this._isFastFilter = this.GeneralProperties.GetPropertyValue(PROPERTIES.FAST_FILTER);\r\n\r\n this.AddEvent('START_DATA_LOAD');\r\n this.AddEvent('DATA_LOADED');\r\n\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar) {\r\n this._viewMode = this.GetTableView();\r\n this._searchPhrase = ko.observable('');\r\n\r\n this._enableTableViewLookup = this.ScreenType !== ScreenTypes[ScreenTypes.QueryScreen] && this._model().EntityTypeName !== EntityTypes[EntityTypes.Sub];\r\n this._enableFunctionLookup = this.ScreenType !== ScreenTypes[ScreenTypes.QueryScreen] && this._model().EntityTypeName !== EntityTypes[EntityTypes.Sub];\r\n\r\n this._selectedUsers = [];\r\n\r\n this._dataModel = new GridDataModel();\r\n this._queryBuilder = ko.observable(null);\r\n this._viewGridList = ko.observableArray([]);\r\n\r\n this._isEnableSelectRecord(_.any(this.GetToolbarControls(), (item) => item instanceof GenericButton));\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.EXECUTE_SCRIPT, (_, data) => {\r\n if(data && data.ObjectId === this.GetGuid()){\r\n FunctionBuilder.Execute(data.Code, data.Params, gridFacade(this));\r\n }\r\n });\r\n\r\n this._baseGrid = new BaseGrid({\r\n isEnableSelectRecord: this._isEnableSelectRecord,\r\n isEditable: this._isEditable,\r\n hideLifeStatusToggle: this._hideLifeStatusToggle,\r\n hideUnlink: this._hideUnlink,\r\n hideEdit: this._hideEdit,\r\n enableBasket: this._enableBasket,\r\n backLinkingButtons: this._backLinkingButtons,\r\n screenType: this.ScreenType,\r\n maxRowHeight: this.MaxRowHeight(),\r\n isPrioritiesDisabled: this.GetGridPriorityToggle(),\r\n form: this._form,\r\n ToggleAllShownColumns: this.ToggleAllShownColumns.bind(this),\r\n properties: this.GeneralProperties\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.UPDATE_GRID, this, eventArgs => {\r\n if (eventArgs.data.updateFromFastFilters) {\r\n if (this.Paginator.PageNumber != 1) {\r\n this.Paginator.Reset();\r\n } else {\r\n this.LoadData(true);\r\n }\r\n }\r\n });\r\n\r\n const defaultColumns = [];\r\n\r\n _.each(this._model().Fields, (item: any) => {\r\n const columnModel = new GridColumnModel();\r\n\r\n columnModel.Title = `${item.Name}`;\r\n defaultColumns.push(columnModel);\r\n });\r\n\r\n this._baseGrid.AddColumns(defaultColumns);\r\n\r\n this._baseGrid.On(TOOLBAR_EVENTS.LINK_RECORD, this, (eventArgs) => {\r\n this.LinkSubGridRecord(eventArgs.data.MainEntityId,eventArgs.data.MainRecordId, eventArgs.data.RelatedEntityId);\r\n });\r\n\r\n this._baseGrid.On(TOOLBAR_EVENTS.LINK_PARENT_RECORD, this, (eventArgs) => {\r\n this.LinkSubGridParentRecord(eventArgs.data.Row, eventArgs.data.RelatedEntityId);\r\n });\r\n\r\n this._baseGrid.On(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, this, async (eventArgs) => {\r\n let recordSpecs = await RecordStore.GetRecordSpecs({ TableId: eventArgs.data.MainEntityId, RecordId: eventArgs.data.MainRecordId });\r\n this.OnAddAndSubGridLinkRecord(eventArgs.data.MainEntityId, eventArgs.data.MainRecordId, recordSpecs.TypeId, recordSpecs.LifestatusId, eventArgs.data.RelatedEntityId);\r\n });\r\n\r\n this._baseGrid.On(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, this, (eventArgs) => {\r\n this.ScanAndLinkSubGridRecord(eventArgs.data.MainEntityId, eventArgs.data.MainRecordId, eventArgs.data.RelatedEntityId);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.SORT, this, (eventArgs: any) => {\r\n this.SortData(eventArgs.data.SortColumns);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.OPEN_HYPERLINK, this, (eventArgs: any) => {\r\n UserVarsManager.Instance.AddRecent(eventArgs.data.EntityId, eventArgs.data.RecordId, eventArgs.data.RecordTypeId);\r\n Lockr.set(LOCAL_STORAGE.HYPERLINK_SOURCE, this.GetForm().GetScreen().GetEntityId().toString())\r\n\r\n this.GoToRecordScreen(eventArgs.data);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.DATA_SAVED, this, (eventArgs: any) => {\r\n const updateResult: OperationResultModel = eventArgs.data.UpdateResult;\r\n let notifier: Notifier;\r\n\r\n if (updateResult.IsSuccessfull) {\r\n notifier = new Notifier(null);\r\n notifier.Success(NOTIFICATIONS.DATA_SAVED);\r\n this.LoadData(false, eventArgs.data.SubGrid, eventArgs.data.ParentRowId, eventArgs.data.UpdateRow);\r\n } else {\r\n notifier = new Notifier(null);\r\n const message = eventArgs.data.UpdateResult.ErrorMessage? eventArgs.data.UpdateResult.ErrorMessage : NOTIFICATIONS.DATA_IS_NOT_SAVED;\r\n notifier.Failed(message);\r\n }\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.REFRESH, this, (eventArgs) => {\r\n if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n return;\r\n }\r\n\r\n if (this._baseGrid.RowsCount == 0) {\r\n this._toolbar.Paginator().Reset();\r\n } else {\r\n this.LoadData(false, eventArgs.data.SubGrid, eventArgs.data.ParentRowId, eventArgs.data.UpdateRow);\r\n }\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.NO_CHANGES, this, (eventArgs: any) => {\r\n const notifier = new Notifier(null);\r\n\r\n notifier.Success(NOTIFICATIONS.NO_PENDING_CHANGES);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.EDIT_LINK, this, (eventArgs: any) => {\r\n let gridRow: GridRow = eventArgs.data.gridRow;\r\n let mainEntityId: number = eventArgs.data.mainEntityId;\r\n let mainRecordId: number = eventArgs.data.mainRecordId;\r\n const KSeq = gridRow.KSeq;\r\n\r\n if(gridRow && mainEntityId && mainRecordId){\r\n this.UpdateSubGridLinkRecord(mainEntityId, mainRecordId, gridRow);\r\n }\r\n else if (this._queryExpression.IsCrossTable) {\r\n this.ShowCrossTableDetail(gridRow).then((selectedRow) => {\r\n this.UpdateLinkRecord(gridRow.EntityId, gridRow.RecordId, gridRow.RecordTypeId, selectedRow.KSeq, gridRow.RelationshipType);\r\n });\r\n } else {\r\n this.UpdateLinkRecord(gridRow.EntityId, gridRow.RecordId, gridRow.RecordTypeId, KSeq, gridRow.RelationshipType);\r\n }\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.EDIT_CLUSTERED_LINK, this, (eventArgs: any) => {\r\n let gridRow: GridRow = eventArgs.data.gridRow;\r\n let grid: BaseGrid = eventArgs.data.grid;\r\n if (gridRow && grid) {\r\n this.UpdateLinkRecord(\r\n grid.SubjectEntityId,\r\n grid.SubjectRecordId,\r\n 0,\r\n gridRow.KSeq,\r\n 1,\r\n gridRow.EntityId,\r\n gridRow.RecordId\r\n )\r\n }\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.LINK_NEXT_RELATION, this, (eventArgs: any) => {\r\n let gridRow: GridRow = eventArgs.data.gridRow;\r\n const RecordKeys = eventArgs.data.field.RecordKeys as Array<RecordKey>;\r\n if (RecordKeys.length < 3) {\r\n return;\r\n }\r\n\r\n GridStore.LinkWithNextRelationType(RecordKeys)\r\n .then((data) => {\r\n const newKSeq = data.Sequence;\r\n\r\n var updateLinkRecordPromise = this.UpdateLinkRecord(\r\n data.MainEntityId,\r\n data.MainRecordId,\r\n data.MainRecordTypeId,\r\n data.Sequence,\r\n gridRow.RelationshipType,\r\n data.RelatedEntityId,\r\n data.RelatedRecordId,\r\n 0,\r\n true\r\n );\r\n\r\n if (updateLinkRecordPromise) {\r\n updateLinkRecordPromise.then(async () => {\r\n\r\n var gridCellValue = eventArgs.data.field as GridCellValueModel;\r\n\r\n var kSeqMetadata = _.find(gridCellValue.EntityMetadata.Fields, (item) => {\r\n return item.Name === 'K_SEQ'\r\n });\r\n\r\n var oldKSeqValue = _.find(RecordKeys, (item) => {\r\n return item.FieldId === kSeqMetadata.Id\r\n });\r\n\r\n await this.ExecuteClusteredPivotFinishedTrigger(data.MainEntityId, data.MainRecordId, data.RelatedEntityId, data.RelatedRecordId, newKSeq, oldKSeqValue.RecordId);\r\n });\r\n }\r\n\r\n this.LoadData(false);\r\n })\r\n .fail((error) => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.ADD_TO_BASKET, this, (eventArgs) => {\r\n if (this._basket) {\r\n const basketControl = this._basket as Basket;\r\n const gridRow = eventArgs.data.Row as GridRow;\r\n\r\n basketControl.AddRecordToBasket(gridRow.RecordId, this._gridEntityId).then((result) => {\r\n gridRow.RecordInBasket = true;\r\n\r\n const relation: ILoadScreenRelationModel = {\r\n MainEntityId: basketControl.Model.EntityId,\r\n MainRecordId: basketControl.SelectedRecord().RecordId,\r\n MainRecordTypeId: basketControl.SelectedRecord().TypeId,\r\n RelatedEntityId: this._gridEntityId,\r\n RelatedRecordId: gridRow.RecordId,\r\n RelatedRecordTypeId: gridRow.RecordTypeId,\r\n KSeq: result\r\n };\r\n\r\n this.UpdateLinkRecordGeneral(relation);\r\n });\r\n }\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.REMOVE_FROM_BASKET, this, (eventArgs) => {\r\n if (this._basket) {\r\n const basketControl = this._basket as Basket;\r\n const gridRow = eventArgs.data.Row as GridRow;\r\n\r\n basketControl.RemoveRecordFromBasket(gridRow.RecordId, this._gridEntityId).then(() => {\r\n gridRow.RecordInBasket = false;\r\n });\r\n }\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.RECORD_DELETED, this, (eventArgs) => {\r\n this._toolbar.SetEnabledAddButton(this.IsVisibleAddButton(this._baseGrid.Model));\r\n this._toolbar.SetEnableEditAllButton(this.IsVisibleEditAllButton(this._baseGrid.Model));\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n this._toolbar.EditAll = true;\r\n this._disabledCopyButton(false);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.RECORD_EDITED, this, (eventArgs) => {\r\n this._toolbar.SetEnableEditAllButton(!this.IsListScreen && this.IsEditAll);\r\n this._toolbar.EditAll = false;\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.UNDO_EVERY_RECORD, this, (eventArgs) => {\r\n this._toolbar.SetEnableEditAllButton(!this.IsListScreen && this.IsEditAll);\r\n this._toolbar.EditAll = true;\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.UPDATE_SET_ENABLE_ADD_BUTTON, this, (eventArgs) => {\r\n this._toolbar.SetEnabledAddButton(this.IsVisibleAddButton(this._baseGrid.Model));\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.LOAD_SUB_GRID, this, (eventArgs) => {\r\n this.LoadData(false, eventArgs.data.SubGrid, eventArgs.data.ParentRowId);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.BACK_LINKING_POPUP_REQUESTED, this, eventArgs => {\r\n const params: BackLinkingParams = {\r\n Header: eventArgs.data.ButtonName,\r\n SubTableView: eventArgs.data.SubTableView,\r\n Intention: eventArgs.data.Intention,\r\n LeftTableId: eventArgs.data.LeftTableId,\r\n RightTableId: eventArgs.data.RightTableId,\r\n LeftRecordId: eventArgs.data.LeftRecordId,\r\n RightRecordId: eventArgs.data.RightRecordId,\r\n Sequence: eventArgs.data.Sequence\r\n };\r\n\r\n const backLinking = new BackLinking(params);\r\n backLinking.On('CHANGES_SAVED', this, () => this.LoadData());\r\n backLinking.ShowPopup();\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.CHANGE_VISIBLE_GROUP, this, (eventArgs: any) => {\r\n let gridRow: GridRow = eventArgs.data.gridRow;\r\n });\r\n\r\n this._basket = _.find(this._subControls(), (subControl) => {\r\n return subControl.GetType() === CONTROL_TYPES.Basket;\r\n }) as Basket;\r\n\r\n if (this._basket && !(this._basket).IsDisabledByCondition) {\r\n this._enableBasket(true);\r\n\r\n this._basket.On(BASKET_EVENTS.BASKET_SELECTED, this, (eventArgs) => {\r\n this._baseGrid.MarkRecodsInBasket(eventArgs.data.Records);\r\n });\r\n }\r\n\r\n const type = this.GetForm() && this.GetForm().GetScreen().GetType();\r\n this._toolbar = new Toolbar(\r\n this._enableTableViewLookup,\r\n this._enableFunctionLookup,\r\n this._enableLink,\r\n this._enableUnlinkMultiple,\r\n this._enableLinkParent,\r\n this._hasOneParent,\r\n this._enableAddAndLink,\r\n this._enableScanAndLink,\r\n this._enableAddFromQuery,\r\n this._showSearchInput,\r\n this._isEditable,\r\n this._enableNewRecord,\r\n this._exportDataAllowed,\r\n this._showTableViewElement,\r\n type,\r\n false,\r\n this._showTogglePrioritiesButton,\r\n this._showBulkEditButton,\r\n this._disableBulkEditButton,\r\n this._showResetFilterButton,\r\n this._disabledShowAllColumnsBtn,\r\n this.ShowRetired,\r\n this.GetToolbarControls()\r\n );\r\n\r\n if (this._renderMode() !== RenderModes.HelpView) {\r\n this.ApplyProperties();\r\n this.InitShowAllColumns();\r\n }\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.NEW_TABLE_VIEW, this, (eventArgs: any) => this.NewTableView());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.BULK_EDIT, this, (eventArgs: any) => this.BulkEdit());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.NEW_RECORD, this, (eventArgs: any) => this.CreateRecord());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.TOGGLE_RETIRED, this, (eventArgs: any) => {\r\n this._showRetiredRecords = eventArgs.data.State;\r\n this.LoadData();\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.EDIT_TABLE_VIEW, this, (eventArgs: any) => {\r\n const tableView = _.find(this._viewGridList(), item => item.Id === eventArgs.data.Id);\r\n\r\n if (tableView) {\r\n this.EditTableView();\r\n }\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.COPY_TABLE_VIEW, this, (eventArgs: any) => {\r\n const tableView = _.find(this._viewGridList(), item => item.Id === eventArgs.data.Id);\r\n\r\n if (tableView) {\r\n this.CopyTableView();\r\n }\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.DELETE_TABLE_VIEW, this, (eventArgs: any) => {\r\n const tableView = _.find(this._viewGridList(), item => item.Id === eventArgs.data.Id);\r\n\r\n if (tableView) {\r\n this.DeleteTableView();\r\n }\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.LOCK_TABLE_VIEW, this, eventArgs => {\r\n this.LockTableView();\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.UNLOCK_TABLE_VIEW, this, eventArgs => {\r\n this.UnlockTableView();\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.LINK_RECORD, this, () => this.LinkRecord());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.UNLINK_MULTIPLE_RECORDS, this, () => {\r\n this._baseGrid.GridUnlinkMultipleRecords();\r\n this._isMultipleUnlinkModeActive(true);\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.CONFIRM_MULTIPLE_UNLINK, this, () => {\r\n this.UnlinkMultipleRecords();\r\n this._baseGrid.GridConfirmMultipleUnlinking();\r\n this._isMultipleUnlinkModeActive(false);\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.CANCEL_MULTIPLE_UNLINK, this, () => {\r\n this._baseGrid.GridCancelMultipleUnlinking();\r\n this._isMultipleUnlinkModeActive(false);\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.LINK_PARENT_RECORD, this, () => this.LinkParentRecord());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.COPY_LATEST_RECORD, this, () => {\r\n if (this._disabledCopyButton()) {\r\n return;\r\n }\r\n\r\n const isEntityGrid = this.GetGridSubject().Entity.Metadata.Type === TABLE_TYPES.Entity;\r\n const isSubGrid = this.GetGridSubject().Entity.Metadata.Type === TABLE_TYPES.Sub;\r\n\r\n if (isEntityGrid) {\r\n this.CopyLatestLink();\r\n return;\r\n }\r\n\r\n if (isSubGrid) {\r\n this.CopyLatestSubRecord();\r\n return;\r\n }\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, this, (eventArgs: any) => this.OnAddAndLinkRecord());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, this, eventArgs => {\r\n this.ScanAndLinkRecord();\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.ADD_QUERY, this, (eventArgs: any) => this.AddQuery());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.SEARCH_BY_PHRASE, this, (eventArgs: any) => {\r\n this._searchPhrase(eventArgs.data.SearchPhrase);\r\n this.EnterKey();\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.EXPORT_DATA, this, eventArgs => this.ExportData(eventArgs.data.Destination));\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.TOGGLE_PRIORITIES, this, (eventArgs: any) => this.TogglePriorities(eventArgs.data.state));\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.RESET_FILTER, this, (eventArgs: any) => this.ResetFilter());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.EDIT_ALL, this, () => this.EditAll());\r\n this._toolbar.On(TOOLBAR_EVENTS.SAVE_ALL, this, () => this.SaveAll());\r\n\r\n this.Paginator.On(PAGINATOR_EVENTS.CHANGE, this, (eventArgs: any) => {\r\n if (eventArgs.data.pageNumber === this._prevPageNumber) {\r\n return;\r\n }\r\n\r\n if (this._baseGrid.GetEditRows().length > 0 || this._baseGrid.GetNewAndLinkRows().length > 0) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: ConfirmationTypes.Warning\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.LoadData(true);\r\n\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n this.Paginator.PageNumber = this._prevPageNumber;\r\n });\r\n\r\n confirmationDialog.Show();\r\n } else {\r\n this.LoadData(true);\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n }\r\n });\r\n\r\n if (this._renderMode() === RenderModes.View) {\r\n this.GetForm().GetScreen().On(CONSULT_SCREEN_EVENTS.REFRESH_GRID, this, (eventArgs) => {\r\n if (eventArgs.data) {\r\n let entityId = eventArgs.data.EntityId;\r\n if (entityId === this._gridEntityId) {\r\n this.LoadData(false);\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.Init();\r\n }\r\n\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar && this._renderMode() !== RenderModes.HelpView && this._filterByOwners) {\r\n this.GetForm().GetScreen().On('UsersSelectionChanged', this, eventArgs => {\r\n const groupIds = _.filter(_.map(eventArgs.data?.SelectedUsersAndGroups, (item: CheckedUserAndGroup) => item.GroupId), groupId => groupId !== null) as number[];\r\n const userIds = _.flatten(_.map(eventArgs.data?.SelectedUsersAndGroups, (item: CheckedUserAndGroup) => item.UserIds));\r\n const combinedIds = groupIds.concat(userIds);\r\n\r\n this._selectedUsers = _.uniq(combinedIds);\r\n this._showPlanned = eventArgs.data.ShowPlanned;\r\n if (this._isRendered()) {\r\n this.LoadData(false);\r\n }\r\n });\r\n }\r\n }\r\n\r\n get ShowRetired(): boolean {\r\n if (this._renderMode() === RenderModes.HelpView) {\r\n return false;\r\n } else {\r\n return this.IsListScreen\r\n || this._form.GetScreen().IsQueryScreen\r\n || this._form.GetScreen().IsSpecialScreen\r\n || this._form.GetScreen().IsDashboard;\r\n }\r\n }\r\n\r\n get IsConsultScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsConsultScreen;\r\n }\r\n\r\n get IsListScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsListScreen;\r\n }\r\n\r\n get CrossTableValueColumn(): QueryColumnModel{\r\n return _.find(Util.GetAllQueryColumns(this._queryExpression), col=>col.IsCrossValue);\r\n }\r\n\r\n ShowCrossTableDetail(gridRow: GridRow): P.Promise<GridRowModel> {\r\n let deferredResult = P.defer<GridRowModel>();\r\n BlockUI.Block();\r\n GridStore.GetCrossTableDetail({\r\n SubjectEntityId: this._form.GetScreen().GetEntityId(),\r\n SubjectRecordId: this._form.GetScreen().GetRecordId(),\r\n RelatedEntityId: gridRow.Model.EntityId,\r\n RelatedRecordId: gridRow.Model.RecordId,\r\n KSeqs: gridRow.Model.KSeqs,\r\n DisplayFields: this.CrossTableValueColumn?.DisplayFields\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((result) => {\r\n let pivotDetailsDropDown = new PivotDetailsDropdown();\r\n\r\n pivotDetailsDropDown.On(BASE_GRID_EVENTS.REFRESH, this, () => {\r\n pivotDetailsDropDown.Close();\r\n this.LoadData();\r\n });\r\n\r\n pivotDetailsDropDown.On(BASE_GRID_EVENTS.EDIT_CLUSTERED_LINK, this, (eventArgs) => {\r\n let gridRow = eventArgs.data.gridRow;\r\n this.UpdateLinkRecord(gridRow.EntityId, gridRow.RecordId, gridRow.RecordTypeId, gridRow.KSeq, gridRow.RelationshipType);\r\n });\r\n\r\n pivotDetailsDropDown.On(QUERY_RESULT_GRID_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.SelectedRecord.Model) {\r\n let row = eventArgs.data.SelectedRecord.Model as GridRowModel;\r\n pivotDetailsDropDown.Close();\r\n deferredResult.resolve(row);\r\n }\r\n });\r\n\r\n pivotDetailsDropDown.SetData(result);\r\n\r\n if (pivotDetailsDropDown.Rows.length == 1) {\r\n deferredResult.resolve(pivotDetailsDropDown.Rows[0].Model);\r\n return;\r\n }\r\n\r\n pivotDetailsDropDown.Show(gridRow.El);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n GetGridPriorityToggle(): boolean {\r\n if (MobileChecker.IsMobile() || this._renderMode() === RenderModes.HelpView) {\r\n return this._isPrioritiesDisabled;\r\n }\r\n const subjectEntityId = this.GetForm().GetScreen().GetEntityId();\r\n const gridSubjectEntityId = this._viewMode === ViewModes.ListView ? 0 : this._model().EntityId;\r\n return this._userVarsManager.GetGridPriority(subjectEntityId, gridSubjectEntityId, this._isPrioritiesDisabled);\r\n }\r\n\r\n get OnClusteredPivotFinishedTrigger(){\r\n return _.find(this._model().Triggers, (trigger: TriggerModel) => {\r\n return trigger.Action === TRIGGER_ACTIONS.ON_CLUSTERED_PIVOT_FINISHED\r\n });\r\n }\r\n\r\n async ExecuteClusteredPivotFinishedTrigger(\r\n mainEntityId: number,\r\n mainRecordId: number,\r\n relatedEntityId: number,\r\n relatedRecordId: number,\r\n newKSeq: number,\r\n oldKSeq: number\r\n ) {\r\n if (this.OnClusteredPivotFinishedTrigger) {\r\n this.BlockUI();\r\n await TriggerManager.OnClusteredPivotFinished({\r\n MainEntityId: mainEntityId,\r\n RelatedEntityId: relatedEntityId,\r\n MainRecordId: mainRecordId,\r\n RelatedRecordId: relatedRecordId,\r\n NewKSeq: newKSeq,\r\n OldKSeq: oldKSeq,\r\n ControlId: this.GetControlId()\r\n }, this.GetGuid(), this.OnClusteredPivotFinishedTrigger.Id);\r\n this.UnBlockUI();\r\n }\r\n }\r\n\r\n get QueryExpression(): QueryExpressionModel {\r\n return this._queryExpression;\r\n }\r\n\r\n ToggleAllShownColumns(canHide: boolean, canShow: boolean) {\r\n this._toolbar && this._toolbar.ToggleAllShownColums.call(this._toolbar, canHide, canShow);\r\n }\r\n\r\n UpdateLinkRecordGeneral(\r\n relation: ILoadScreenRelationModel,\r\n gridRow: GridRow = null,\r\n isNew: boolean = false,\r\n isNewCreated: boolean = false,\r\n isNewParent: boolean = false\r\n ): Promise<any> {\r\n let data = null;\r\n return new Promise(async (resolve, reject) => {\r\n const linkEditor = (await import('Core/Screens/Common/LinkEditor/LinkEditor')).LinkEditor;\r\n\r\n const requestedFromEditScreen = this._form && this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.EditScreen];\r\n linkEditor.LoadScreen(relation, isNew, data, false, null, requestedFromEditScreen)\r\n .then(screen => {\r\n if (screen !== null) {\r\n const linkEditor = screen as LinkEditor;\r\n\r\n screen.One('MODAL_CLOSE', this, () => {\r\n if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n }\r\n });\r\n\r\n linkEditor.One('CANCEL', this, () => {\r\n if (this._refreshScreenAfterManipulations) {\r\n if (isNewCreated) {\r\n this._baseGrid.UnlinkRecordByRelation(relation, isNewParent);\r\n }\r\n }\r\n });\r\n\r\n linkEditor.On('SAVE_DATA', this, eventArgs => {\r\n const dataModel = new DataModel();\r\n\r\n dataModel.EntityId = relation.MainEntityId;\r\n dataModel.RecordId = relation.MainRecordId;\r\n\r\n const updateDataModel = new UpdateDataModel();\r\n\r\n let editLinkData: EditLinkDataModel = eventArgs.data;\r\n updateDataModel.LinkEditorChanges.push(editLinkData);\r\n dataModel.LinklistChanges = Serialize(updateDataModel);\r\n\r\n if (!gridRow || this._refreshScreenAfterManipulations) {\r\n BlockUI.Block();\r\n InsertOrUpdateRecordStore.UpdateData(dataModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail((error) => {\r\n new Notifier($(this._el)).Failed(error.message);\r\n })\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n new Notifier().Success(NOTIFICATIONS.RECORD_UPDATED);\r\n screen.Off('MODAL_CLOSE');\r\n linkEditor.Close();\r\n\r\n if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n } else {\r\n this.LoadData(false);\r\n }\r\n resolve(null);\r\n } else {\r\n linkEditor.GetNotifier().Failed(result.ErrorMessage);\r\n reject({message: result.ErrorMessage});\r\n }\r\n });\r\n } else {\r\n gridRow.LinkEditorData = updateDataModel;\r\n gridRow.SaveLinkEditorData(linkEditor.GetAllControls());\r\n linkEditor.Close();\r\n resolve(null);\r\n }\r\n });\r\n } else if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n resolve(null);\r\n }\r\n }).fail(err => {\r\n new Notifier($(this._el)).Warning(err.message);\r\n reject(err);\r\n });\r\n });\r\n }\r\n\r\n UpdateSubGridLinkRecord(parentEntityId: number, parentRecordId: number, contextRow: GridRow): Promise<any> {\r\n const relation: ILoadScreenRelationModel =\r\n {\r\n MainEntityId: parentEntityId,\r\n MainRecordId: parentRecordId,\r\n RelatedEntityId: contextRow.EntityId,\r\n RelatedRecordId: contextRow.RecordId,\r\n RelatedRecordTypeId: contextRow.RecordTypeId,\r\n KSeq: contextRow.KSeq,\r\n }\r\n\r\n return this.UpdateLinkRecordGeneral(relation, null, false);\r\n }\r\n\r\n UpdateLinkRecord(entityId: number,\r\n recordId: number,\r\n recordTypeId: number,\r\n kSeq: number,\r\n familyType: number = 0,\r\n relatedEntityId?: number,\r\n relatedRecordId?: number,\r\n relatedRecordTypeId?: number,\r\n isNewCreated?: boolean,\r\n isNewParent?: boolean): Promise<any> {\r\n\r\n if (entityId === 0 || recordId === 0) return;\r\n\r\n const relation: ILoadScreenRelationModel = familyType != 1\r\n ? {\r\n MainEntityId: relatedEntityId || this._form.GetScreen().GetEntityId(),\r\n MainRecordId: relatedRecordId || this._form.GetScreen().GetRecordId(),\r\n MainRecordTypeId: relatedRecordTypeId || this._form.GetScreen().GetTableTypeId(),\r\n\r\n RelatedEntityId: entityId,\r\n RelatedRecordId: recordId,\r\n RelatedRecordTypeId: recordTypeId,\r\n\r\n KSeq: kSeq\r\n }\r\n : {\r\n MainEntityId: entityId,\r\n MainRecordId: recordId,\r\n MainRecordTypeId: recordTypeId,\r\n\r\n RelatedEntityId: relatedEntityId || this._form.GetScreen().GetEntityId(),\r\n RelatedRecordId: relatedRecordId || this._form.GetScreen().GetRecordId(),\r\n RelatedRecordTypeId: relatedRecordTypeId || this._form.GetScreen().GetTableTypeId(),\r\n KSeq: kSeq\r\n };\r\n\r\n return this.UpdateLinkRecordGeneral(relation, null, false, isNewCreated, isNewParent);\r\n }\r\n\r\n CreateRecord() {\r\n this._baseGrid.SelectType();\r\n this._toolbar.SetEnabledAddButton(this.IsVisibleAddButton(this._baseGrid.Model));\r\n this._toolbar.SetEnableEditAllButton(this.IsEditAll);\r\n this._toolbar.EditAll = false;\r\n }\r\n\r\n GetTableView(): ViewModes {\r\n if (this._renderMode() === RenderModes.HelpView) {\r\n return ViewModes.TableView;\r\n }\r\n switch (this.GetForm().GetScreen().GetType()) {\r\n case ScreenTypes[ScreenTypes.ProcessCardPage]:\r\n return ViewModes.TableView;\r\n case ScreenTypes[ScreenTypes.QueryScreen]:\r\n return ViewModes.Query;\r\n case ScreenTypes[ScreenTypes.ConsultScreen]:\r\n return ViewModes.TableView;\r\n case ScreenTypes[ScreenTypes.EditScreen]:\r\n return ViewModes.TableView;\r\n default:\r\n return ViewModes.ListView;\r\n }\r\n }\r\n\r\n SortData(sorting: Array<SortModel>) {\r\n this._sorting = sorting;\r\n this.LoadData(true);\r\n }\r\n\r\n InitShowAllColumns() {\r\n const showAllColumnsValue = this.GeneralProperties.GetPropertyValue(PROPERTIES.SHOW_ALL_COLUMNS);\r\n if (showAllColumnsValue) {\r\n\r\n switch (showAllColumnsValue.Value) {\r\n case 'On':\r\n this.TogglePriorities(true);\r\n this._disabledShowAllColumnsBtn = false;\r\n break;\r\n case 'Off':\r\n this.TogglePriorities(false);\r\n this._disabledShowAllColumnsBtn = false;\r\n break;\r\n case 'Always on':\r\n this.TogglePriorities(true);\r\n this._disabledShowAllColumnsBtn = true;\r\n break;\r\n case 'Always off':\r\n this.TogglePriorities(false);\r\n this._disabledShowAllColumnsBtn = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n get HasLinkingCondition(): boolean {\r\n let linkingConditionProperty = this.GeneralProperties.GetPropertyValue(PROPERTIES.LINKING_CONDITION);\r\n\r\n if (linkingConditionProperty) {\r\n let linkingCondition = GenericDeserialize<QueryConditionGroupModel>(JSON.parse(linkingConditionProperty), QueryConditionGroupModel);\r\n if (linkingCondition.ConditionGroups.length > 0 || linkingCondition.Items.length > 0) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n ApplyProperties() {\r\n\r\n const hideLifeStatusToggle = this.GeneralProperties.GetPropertyValue(PROPERTIES.HIDE_LIFESTATUS_TOGGLE);\r\n const hideUnlink = this.GeneralProperties.GetPropertyValue(PROPERTIES.HIDE_UNLINK);\r\n const hideEdit = this.GeneralProperties.GetPropertyValue(PROPERTIES.HIDE_EDIT);\r\n const condition = this.GeneralProperties.GetPropertyValue(PROPERTIES.QUERY_CONDITION);\r\n const backLinking = this.GeneralProperties.GetPropertyValue(PROPERTIES.BACK_LINKING);\r\n\r\n this._hideLifeStatusToggle(hideLifeStatusToggle);\r\n this._hideUnlink(hideUnlink);\r\n this._hideEdit(hideEdit);\r\n\r\n if (condition) {\r\n const jsonObj = JSON.parse(condition);\r\n\r\n this._conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n }\r\n\r\n if (backLinking) {\r\n this._backLinkingButtons(backLinking);\r\n }\r\n\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar && this._renderMode() !== RenderModes.HelpView) {\r\n const isSubjectScreen = this.IsConsultScreen || this.IsEditScreen || this.IsProcessCardPageScreen;\r\n\r\n if (!isSubjectScreen) {\r\n let securityFilter = this._form.GetScreen().IsQueryScreen ? SECURITY_FILTERS.RECORD_SECURITY : SECURITY_FILTERS.SHARING_SECURITY;\r\n const securityFilterPropValue = this.GeneralProperties.GetPropertyValue(PROPERTIES.SECURITY_FILTER);\r\n if (securityFilterPropValue) {\r\n securityFilter = securityFilterPropValue.Value;\r\n }\r\n this._filterByOwners = securityFilter === SECURITY_FILTERS.SHARING_SECURITY;\r\n }\r\n }\r\n\r\n if (this._baseGrid)\r\n this._baseGrid.IsFastFilterEnabled = this.GeneralProperties.GetPropertyValue(PROPERTIES.FAST_FILTER);\r\n\r\n this._isEditable(!this.GeneralProperties.GetPropertyValue(PROPERTIES.READONLY));\r\n\r\n this._showSearchInput(this.GeneralProperties.GetPropertyValue(PROPERTIES.SEARCH) && !this.HasCardScreen);\r\n\r\n if (this._form) {\r\n let isEnableNewRecord: boolean;\r\n const maxRowHeight: string = this.GeneralProperties.GetPropertyValue(PROPERTIES.MAX_ROW_HEIGHT);\r\n\r\n this._maxRowHeight(maxRowHeight);\r\n\r\n if (this.IsConsultScreen ||\r\n this.IsEditScreen ||\r\n this.IsProcessCardPageScreen\r\n ) {\r\n\r\n if (this._model().EntityTypeName === EntityTypes[EntityTypes.Sub]) {\r\n this._enableNewRecord(true);\r\n\r\n if (this._renderMode() === RenderModes.Design) {\r\n this.GeneralProperties.SetPropertyValue(PROPERTIES.ENABLE_LINK, false);\r\n this.GeneralProperties.SetPropertyEnabled(PROPERTIES.ENABLE_LINK, false);\r\n this.GeneralProperties.SetPropertyValue(PROPERTIES.ENABLE_UNLINK_MULTIPLE, false);\r\n this.GeneralProperties.SetPropertyEnabled(PROPERTIES.ENABLE_UNLINK_MULTIPLE, false);\r\n this.GeneralProperties.SetPropertyValue(PROPERTIES.ENABLE_ADD_AND_LINK, false);\r\n this.GeneralProperties.SetPropertyEnabled(PROPERTIES.ENABLE_ADD_AND_LINK, false);\r\n this.GeneralProperties.SetPropertyValue(PROPERTIES.ENABLE_SCAN_AND_LINK, false);\r\n this.GeneralProperties.SetPropertyEnabled(PROPERTIES.ENABLE_SCAN_AND_LINK, false);\r\n }\r\n } else {\r\n this._enableLink(this._linkingRecordAllowed() && this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_LINK));\r\n\r\n this._enableUnlinkMultiple(this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_UNLINK_MULTIPLE));\r\n\r\n this._enableAddAndLink(\r\n this._addingRecordAllowed() &&\r\n this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_ADD_AND_LINK)\r\n );\r\n\r\n this._enableScanAndLink(\r\n this._linkingRecordAllowed() && this._scanAndLinkAllowed() &&\r\n this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_SCAN_AND_LINK)\r\n );\r\n\r\n isEnableNewRecord = this._addingRecordAllowed() && !this._enableAddAndLink();\r\n this._enableNewRecord(isEnableNewRecord);\r\n }\r\n } else if (this._subjectRecordId === 0 && (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen] || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ProcessCardPage])) {\r\n this._enableNewRecord(false);\r\n } else {\r\n if (this._model().EntityTypeName === EntityTypes[EntityTypes.Sub]) {\r\n this._enableNewRecord(true);\r\n }\r\n\r\n isEnableNewRecord = this._addingRecordAllowed() &&\r\n (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen] ||\r\n this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.SpecialScreen] ||\r\n this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.Dashboard] ||\r\n this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ProcessCardPage] ||\r\n this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]);\r\n this._enableNewRecord(isEnableNewRecord);\r\n }\r\n }\r\n\r\n this._showTableViewElement(this.GeneralProperties.GetPropertyValue(PROPERTIES.SHOW_TABLE_VIEW));\r\n this._enableAddFromQuery(\r\n this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_ADD_QUERY) &&\r\n (\r\n this._form && this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ConsultScreen] ||\r\n this._form && this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen] ||\r\n this._form && this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ProcessCardPage]\r\n )\r\n );\r\n\r\n this._enableLinkParent(\r\n this._linkingRecordAllowed() &&\r\n this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_LINK_PARENT) &&\r\n this._form && this._form.GetScreen().GetEntityId() === this._model().EntityId &&\r\n (\r\n this._form.GetScreen().IsConsultScreen || this._form.GetScreen().IsEditScreen || this._form.GetScreen().IsProcessCardPageScreen\r\n )\r\n );\r\n\r\n this._showBulkEditButton(this.IsAbleBulkEdit() && this._model().EntityTypeName !== TABLE_TYPES.Sub);\r\n this._rowColorEnabled(this.GeneralProperties.GetPropertyValue(PROPERTIES.ROW_COLOR));\r\n }\r\n\r\n IsAbleBulkEdit(): boolean {\r\n if (this._form && (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ConsultScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.SpecialScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.Dashboard]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.QueryScreen])) {\r\n return this.GeneralProperties.GetPropertyValue(PROPERTIES.BULK_EDIT);\r\n }\r\n return false;\r\n }\r\n\r\n ChangeProperty(type: string, value): void {\r\n super.ChangeProperty(type, value);\r\n this.ApplyProperties();\r\n }\r\n\r\n UpdateTableViewList() {\r\n this._toolbar.Paginator().Reset();\r\n this.BlockToolbar();\r\n this._isTableViewUpdating(true);\r\n\r\n if (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ConsultScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.SpecialScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.Dashboard]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.Portlet]) {\r\n\r\n const requestModel: IGetGridViewListDto = {\r\n ControlId: this._viewMode === ViewModes.ListView ? 0 : this.GetControlId(),\r\n SubjectEntityId: this._subjectEntityId,\r\n ViewMode: this._viewMode,\r\n ScreenType: ScreenTypes[this.ScreenType]\r\n };\r\n\r\n ViewGridListStore.GetGridViewList(requestModel).then(data => {\r\n let defaultView = new ViewGridModel(0, LABELS.DEFAULT_VIEW);\r\n defaultView.IsEditingAllowed = false;\r\n\r\n let tableViewList = [defaultView];\r\n\r\n data.GridViews.forEach(view => view.Init());\r\n tableViewList = data.GridViews ? tableViewList.concat(data.GridViews) : tableViewList;\r\n\r\n this._viewGridList(tableViewList);\r\n\r\n let tableView = _.find(this._viewGridList(), (item) => item.Id === this._tableViewId);\r\n\r\n if (tableView) {\r\n this._tableView(tableView);\r\n } else {\r\n const lockedTableView = _.find(this._viewGridList(), item => item.Locked);\r\n\r\n if (lockedTableView && !UserManager.Instance.IsUserInRole(UserRoles.SuperUser)) {\r\n tableView = lockedTableView;\r\n this._tableView(tableView);\r\n } else {\r\n const tableViewId = this._userVarsManager.GetGridView(this.GetControlId());\r\n tableView = _.find(this._viewGridList(), (item) => item.Id === tableViewId);\r\n this._tableView(tableView || _.first(this._viewGridList()));\r\n }\r\n }\r\n\r\n this._toolbar.Off(TOOLBAR_EVENTS.SELECT_TABLE_VIEW);\r\n this._toolbar.SetTableViewList(this._viewGridList(), this._tableView(), data.IsAddingRecordAllowed);\r\n this.LoadData(false);\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.SELECT_TABLE_VIEW, this, (eventArgs: any) => {\r\n if (eventArgs.data.Id !== this._tableView().Id) {\r\n const tableView = _.find(this._viewGridList(), item => item.Id === eventArgs.data.Id);\r\n\r\n if (tableView) {\r\n this._tableView(tableView);\r\n this._userVarsManager.SetGridView(this.GetControlId(), this._tableView().Id);\r\n this._toolbar.Paginator().Reset();\r\n this.LoadData(false);\r\n }\r\n }\r\n });\r\n\r\n }).fail(() => {\r\n this.UnBlockToolbar();\r\n }).always(() => {\r\n this._isTableViewUpdating(false);\r\n });\r\n\r\n } else {\r\n this._isTableViewUpdating(false);\r\n this.LoadData(false);\r\n }\r\n }\r\n\r\n Init() {\r\n this.InitRecordPerPage();\r\n\r\n const screen = this.GetForm() && this.GetForm().GetScreen();\r\n\r\n if (screen) {\r\n this._subjectEntityId = screen.GetEntityId();\r\n this._subjectEntityName = screen.GetEntityName();\r\n\r\n if (screen.GetTypeName() === ScreenTypes[ScreenTypes.ListScreen]\r\n || screen.GetTypeName() === ScreenTypes[ScreenTypes.SpecialScreen]\r\n || screen.GetTypeName() === ScreenTypes[ScreenTypes.Dashboard]) {\r\n screen.On('TAG_SELECTION_CHANGED', this, eventArgs => {\r\n this._selectedTags = eventArgs.data;\r\n this.LoadData(false);\r\n });\r\n }\r\n\r\n if (this._form) {\r\n screen.On(SCREEN_EVENTS.DATA_CHANGED, this, (eventArgs) => {\r\n\r\n let screenData: IScreenVariable = eventArgs.data.ScreenVariable;\r\n \r\n const column = _.find(this._baseGrid.Columns, (column) => {\r\n if (column.Model && column.Model.FieldMetadata) {\r\n return column.Model.FieldMetadata.Id ===screenData.Field.Id;\r\n }\r\n });\r\n\r\n if (column) {\r\n const screenVariableCondition = ConditionBuilder.GetScreenVariableCondition(screenData, this._conditions);\r\n\r\n if (screenVariableCondition.length > 0) {\r\n this.SetConditionScreenData(screenVariableCondition, screenData.Value);\r\n this.Paginator.PageNumber = 1;\r\n this._applyFilter = true;\r\n this.LoadData(false);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n this._inlineControls = this.GetInlineControls();\r\n }\r\n\r\n InitRecordPerPage() {\r\n const recordsPerPageGlobalName = this.GetRecordPerPageGlobalName();\r\n\r\n if (recordsPerPageGlobalName != null) {\r\n const recordsPerPageGlobalValue = GlobalManager.Instance.GetGlobal(this.GetRecordPerPageGlobalName());\r\n\r\n this.Paginator.RecordsPerPage = parseInt(recordsPerPageGlobalValue) || DEFAULT_RECORDS_PER_PAGE;\r\n }\r\n }\r\n\r\n GetRecordPerPageGlobalName(): string {\r\n let recordsPerPageGlobalName = null;\r\n\r\n switch (this.ScreenType) {\r\n case ScreenTypes[ScreenTypes.ConsultScreen]:\r\n recordsPerPageGlobalName = GLOBALS.CONSULT_GRID_PAGE_LINES;\r\n break;\r\n case ScreenTypes[ScreenTypes.ListScreen]:\r\n recordsPerPageGlobalName = GLOBALS.LIST_GRID_PAGE_LINES;\r\n break;\r\n case ScreenTypes[ScreenTypes.SpecialScreen]:\r\n recordsPerPageGlobalName = GLOBALS.LIST_GRID_PAGE_LINES;\r\n break;\r\n case ScreenTypes[ScreenTypes.Dashboard]:\r\n recordsPerPageGlobalName = GLOBALS.LIST_GRID_PAGE_LINES;\r\n break;\r\n case ScreenTypes[ScreenTypes.Portlet]:\r\n recordsPerPageGlobalName = null;\r\n break;\r\n default:\r\n recordsPerPageGlobalName = GLOBALS.OTHER_GRID_PAGE_LINES;\r\n }\r\n\r\n return recordsPerPageGlobalName;\r\n }\r\n\r\n get ScreenType(): string {\r\n if (this.GetForm()) {\r\n if (this.GetForm().GetScreen()) {\r\n return this.GetForm().GetScreen().GetType();\r\n }\r\n return ScreenTypes[ScreenTypes.ConsultScreen];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n get MaxRowHeight(): KnockoutObservable<string> {\r\n return this._maxRowHeight;\r\n }\r\n\r\n SelectTableView() {\r\n this.Paginator.PageNumber = 1;\r\n this.LoadData(false);\r\n }\r\n\r\n ResetFilter() {\r\n UserVarsManager.Instance.ResetGridFilters(this._subjectRecordId);\r\n this.LoadData();\r\n }\r\n\r\n EditAll() {\r\n this._baseGrid.EditAll();\r\n }\r\n\r\n SaveAll() {\r\n this._toolbar.EditAll = this._baseGrid.SaveAll();\r\n }\r\n\r\n get DataMode(): DataModes {\r\n //Forbidden loading grid during followUp an copying\r\n return this._form.GetScreen().GetType() !== ScreenTypes[ScreenTypes.EditScreen] ? DataModes.Default : this._form.GetScreen().GetDataMode();\r\n }\r\n\r\n get TableViewId() {\r\n return this._tableView() ? this._tableView().Id : 0;\r\n }\r\n\r\n CheckingFilters(): void {\r\n let tableViewId = this._tableView() ? this._tableView().Id : 0;\r\n let userVarsFastFilter: FastFilterSaveModel[] = UserVarsManager.Instance.GetGridColumnFilters(this._subjectRecordId);\r\n let thisUserVarsViewFastFilters: FastFilterSaveModel[] = _.filter(userVarsFastFilter, fastFilter=> fastFilter.Values.length && tableViewId === fastFilter.TableViewId);\r\n\r\n if ( !this._isFastFilter || !thisUserVarsViewFastFilters.length ) {\r\n UserVarsManager.Instance.ResetGridFilters(this._subjectRecordId);\r\n }\r\n }\r\n\r\n LoadData(\r\n restoreSortState: boolean = false,\r\n subGrid?: BaseGrid,\r\n parentRowId?: string,\r\n updateRow?: GridRow\r\n ) {\r\n\r\n const getData = (defaultTableViewId?) => {\r\n if (subGrid) {\r\n this.BlockUI();\r\n } else {\r\n this.BlockToolbar();\r\n }\r\n\r\n this.Trigger('START_DATA_LOAD');\r\n\r\n let windowScrollPosition;\r\n let contextGrid = subGrid || this._baseGrid;\r\n\r\n if (this._isRestoreScrollPosition) {\r\n windowScrollPosition = $(window).scrollTop();\r\n }\r\n\r\n if (this.Paginator && this.Paginator.RecordsPerPage != null) {\r\n if (this.Paginator.RecordsPerPage === 0) {\r\n this.Paginator.RecordsPerPage = DEFAULT_RECORDS_PER_PAGE;\r\n }\r\n\r\n contextGrid.HideGrid();\r\n\r\n let tableViewId = this._tableView() ? this._tableView().Id : 0;\r\n\r\n let fastFilters = this._baseGrid.FilterSaveModels;\r\n\r\n UserVarsManager.Instance.SetGridColumnFilters(this._subjectRecordId, fastFilters);\r\n\r\n this.CheckingFilters();\r\n\r\n const preselectedFilters = UserVarsManager.Instance.GetGridColumnFilters(this._subjectRecordId);\r\n\r\n if (preselectedFilters && preselectedFilters.length) {\r\n preselectedFilters.map((preselectedFilter) => {\r\n if (preselectedFilter.TableViewId === tableViewId\r\n && fastFilters.findIndex((el) => el.FieldAlias === preselectedFilter.FieldAlias) < 0) {\r\n fastFilters.push(preselectedFilter);\r\n }\r\n });\r\n }\r\n\r\n let pageNumber = subGrid ? subGrid.Paginator.PageNumber : this.Paginator.PageNumber;\r\n\r\n const requestModel: IGetGridDataRequestModel = {\r\n ControlId: this._model().Id,\r\n TableViewId: defaultTableViewId >= 0 ? defaultTableViewId : tableViewId,\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectRecordId: this._subjectRecordId,\r\n SubjectTypeId: this._form.GetScreen().GetTableTypeId(),\r\n SubjectKindId: this._form.GetScreen().GetKindId(),\r\n SubjectStatusId: this._subjectRecordSpecsModel ? this._subjectRecordSpecsModel.LifeStatusInfo.Id : 0,\r\n ViewMode: this._viewMode,\r\n PageNumber: pageNumber,\r\n RecordsPerPage: this.Paginator.RecordsPerPage,\r\n Sort: this._sorting,\r\n SearchPhrase: this._searchPhrase(),\r\n FilterByOwners: this._filterByOwners,\r\n RecordOwners: this._selectedUsers,\r\n ShowPlanned: this._showPlanned,\r\n SelectedTags: this._selectedTags,\r\n ShowRetired: this._showRetiredRecords,\r\n ParentRowId: parentRowId,\r\n SubQueryGuid: subGrid ? subGrid.Model.SubQueryGuid : null,\r\n ScreenData: this._applyFilter ? this.GetDynamicFieldsData() : null,\r\n Query: this.IsQueryScreen ? this._queryExpression : null,\r\n DataMode: this.DataMode,\r\n RowId: updateRow ? updateRow.Model.RowId : null, \r\n ConditionValues: this.MapConditionValues(),\r\n FastFilters: fastFilters\r\n .filter((filter) => filter.Values.length)\r\n .map((filter) => {\r\n filter.Values.forEach(value => {\r\n if (value.DisplayValue === LABELS.EMPTY_VALUE) {\r\n value.DisplayValue = null;\r\n }\r\n });\r\n return {\r\n FieldAlias: filter.FieldAlias,\r\n Values: filter.Values,\r\n TimeZone: (new Date().getTimezoneOffset()) / 60\r\n };\r\n })\r\n };\r\n\r\n this._baseGrid.SetGridDataModel(requestModel);\r\n\r\n GridStore.GetData(requestModel)\r\n .then(gridDataModel => {\r\n if (subGrid) {\r\n subGrid.SetData(gridDataModel, null, null, null, null, updateRow);\r\n subGrid.SetRecordsPerPage(this.Paginator.RecordsPerPage)\r\n } else {\r\n this._hasData = true;\r\n this._isLinkEditorEnabled = gridDataModel.IsLinkEditorEnabled;\r\n this._isDirectionCorrect = gridDataModel.IsDirectionCorrect;\r\n this.Paginator.TotalRecords = gridDataModel.TotalRecords;\r\n this._queryExpression = gridDataModel.QueryExpression;\r\n this.InitToolbar(gridDataModel);\r\n this.ApplyProperties();\r\n\r\n this._gridEntityId = this.GetGridEntityId(gridDataModel);\r\n\r\n gridDataModel.SubjectEntityId = this._subjectEntityId;\r\n gridDataModel.SubjectRecordId = this._subjectRecordId;\r\n\r\n this._baseGrid.SetData(gridDataModel, restoreSortState, this.GetGridPriorityToggle(), this._tableView() && this._tableView().Id || 0, this._inlineControls, updateRow);\r\n\r\n this._showBulkEditButton(this.IsAbleBulkEdit()\r\n && gridDataModel.Rows.length > 0\r\n && this._model().EntityTypeName !== TABLE_TYPES.Sub);\r\n\r\n var even = _.find(gridDataModel.Rows, (row) => row.Rights.IsEditingAllowed);\r\n this._disableBulkEditButton(!even);\r\n\r\n this._dataModel = gridDataModel;\r\n\r\n this.LoadBasket();\r\n\r\n if (this._isRestoreScrollPosition) {\r\n $(window).scrollTop(windowScrollPosition);\r\n } else {\r\n this._isRestoreScrollPosition = true;\r\n }\r\n }\r\n })\r\n .always(() => {\r\n contextGrid.ShowGrid();\r\n this._toolbar.Enable();\r\n this.Trigger('DATA_LOADED');\r\n\r\n if (subGrid) {\r\n this.UnBlockUI();\r\n } else {\r\n this.UnBlockToolbar();\r\n }\r\n\r\n this._baseGrid.ResizeTableCellsAfterRender();\r\n\r\n })\r\n .fail(data => {\r\n const notifier = new Notifier(null);\r\n notifier.Failed(`${NOTIFICATIONS.ERROR_GET_GRID_DATA}.<br>${data.message}`);\r\n });\r\n }\r\n };\r\n\r\n if (this._isTableViewUpdating()) {\r\n if (this._tableViewUpdatingSubscription) {\r\n this._tableViewUpdatingSubscription.dispose();\r\n }\r\n this._tableViewUpdatingSubscription = this._isTableViewUpdating.subscribe((value) => {\r\n if (!value) {\r\n getData();\r\n }\r\n });\r\n } else {\r\n getData();\r\n }\r\n }\r\n\r\n InitToolbar(gridData: GridDataModel) {\r\n if (this.HasCardScreen) {\r\n this._toolbar.ShowSearchInput(false);\r\n this._linkingRecordAllowed(false);\r\n this._hasOneParent(false);\r\n this._addingRecordAllowed(false);\r\n this._scanAndLinkAllowed(false);\r\n this._toolbar.SetEnabledAddButton(false);\r\n this._toolbar.SetEnableEditAllButton(false);\r\n this._toolbar.ShowRetiredButton(false);\r\n this._toolbar.ShowControls(false);\r\n this._toolbar.ShowTogglePrioritiesButton(false);\r\n this._showResetFilterButton(false);\r\n } else {\r\n this._toolbar.ShowSearchInput(this._showSearchInput());\r\n this._linkingRecordAllowed(gridData.IsLinkingAllowed);\r\n this._hasOneParent(gridData.HasOneParent);\r\n this._addingRecordAllowed(gridData.IsAddAndLinkAllowed);\r\n this._exportDataAllowed(gridData.IsExportDataAllowed);\r\n this._scanAndLinkAllowed(gridData.IsScanAndLinkAllowed);\r\n this._toolbar.SetEnabledAddButton(this.IsVisibleAddButton(gridData));\r\n this._toolbar.SetEnableEditAllButton(this.IsVisibleEditAllButton(gridData));\r\n this._toolbar.ShowRetiredButton(this.ShowRetired);\r\n this._toolbar.ShowControls(true);\r\n this._toolbar.ShowTogglePrioritiesButton(gridData.QueryExpression.IsCrossTable ? false : this._showTogglePrioritiesButton);\r\n this._showResetFilterButton(UserVarsManager.Instance.HasFastFilter(this._subjectRecordId));\r\n\r\n this.CheckingFilters();\r\n }\r\n\r\n const gridSubject = this.GetGridSubject();\r\n const gridSubjectEntityMetadata = gridSubject && gridSubject.Entity && gridSubject.Entity.Metadata;\r\n this._toolbar.SetGridSubjectEntityMetadata(gridSubjectEntityMetadata);\r\n }\r\n\r\n get HasCardScreen() {\r\n\r\n if (this._queryExpression && this._queryExpression.CardScreenId > 0) {\r\n return true;\r\n }\r\n\r\n if (!!this.GeneralProperties.GetPropertyValue(PROPERTIES.CARD_SCREEN)\r\n && this.GeneralProperties.GetPropertyValue(PROPERTIES.CARD_SCREEN) !== 0\r\n && (this.TableViewId == 0)\r\n ) {\r\n return true;\r\n }\r\n ;\r\n\r\n return false;\r\n }\r\n\r\n private LoadBasket() {\r\n if (this._basket) {\r\n this._basket.LoadData(this._gridEntityId);\r\n }\r\n }\r\n\r\n private BlockToolbar() {\r\n if (this._toolbarBlock) {\r\n BlockUI.Block({Target: this._toolbarBlock});\r\n if (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n this._toolbar.EditAll = true;\r\n }\r\n }\r\n }\r\n\r\n private UnBlockToolbar() {\r\n BlockUI.Unblock(this._toolbarBlock);\r\n }\r\n\r\n private BlockUI() {\r\n BlockUI.Block({Target: this._el});\r\n }\r\n\r\n private UnBlockUI() {\r\n BlockUI.Unblock(this._el);\r\n }\r\n\r\n private IsVisibleAddButton(gridDataModel: GridDataModel): boolean {\r\n if (this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_NEW_LINK)) {\r\n if (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n if (gridDataModel.QueryExpression.EntityJoins.length == 0 && gridDataModel.QueryExpression.SubEntityJoins.length > 0 && gridDataModel.QueryExpression.SubEntityJoins[0].Entity.Metadata.Type === TABLE_TYPES.Sub) {\r\n let isKseqExit = _.find(gridDataModel.QueryExpression.SubEntityJoins[0].Entity.Metadata.Fields,\r\n field => field.Name === 'K_SEQ');\r\n\r\n if (isKseqExit) {\r\n return true;\r\n } else {\r\n return gridDataModel.Rows && gridDataModel.Rows.length !== 1;\r\n }\r\n }\r\n\r\n if (!this._addingRecordAllowed()) {\r\n return false;\r\n }\r\n\r\n if (gridDataModel.QueryExpression.EntityJoins.length > 0 &&\r\n gridDataModel.QueryExpression.SubEntityJoins.length == 0 &&\r\n gridDataModel.QueryExpression.EntityJoins[0].Entity.Metadata.Type === TABLE_TYPES.Entity\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private IsVisibleEditAllButton(gridDataModel: GridDataModel): boolean {\r\n if (this.GeneralProperties.GetPropertyValue(PROPERTIES.EDIT_ALL)) {\r\n if (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n let gridSubject = this.GetGridSubject();\r\n return gridSubject && gridSubject.Entity.Metadata.Type == TABLE_TYPES.Sub\r\n && gridDataModel.Rows\r\n && gridDataModel.Rows.length !== 0;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private GetGridEntityId(gridDataModel: GridDataModel) {\r\n let entityId: number;\r\n\r\n if (this._viewMode === ViewModes.ListView || this._viewMode === ViewModes.Query) {\r\n entityId = gridDataModel.QueryExpression.Entity.Metadata.Id;\r\n } else {\r\n const joinExist = _.any(gridDataModel.QueryExpression.EntityJoins);\r\n\r\n entityId = joinExist ? gridDataModel.QueryExpression.EntityJoins[0].Entity.Metadata.Id : 0;\r\n }\r\n\r\n return entityId;\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n\r\n if (this._toolbar) {\r\n this._toolbarBlock = document.getElementById('control-' + this._guid);\r\n }\r\n\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar && this._renderMode() !== RenderModes.HelpView) {\r\n this.ListenForWrapperResize();\r\n }\r\n }\r\n\r\n NewTableView() {\r\n BlockUI.Block();\r\n\r\n GridStore.GetDefaultTableViewMetaData(ScreenTypes[this.ScreenType])\r\n .then(async data => {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n\r\n notifier.Warning(error.message);\r\n })\r\n .then((screen) => {\r\n const editScreen = screen as BaseScreen;\r\n editScreen.SetIsQueryBuilderScreen(true);\r\n\r\n editScreen.ShowInModal();\r\n\r\n GridStore.GetDefaultTableView({\r\n ControlId: this.GetControlId(),\r\n ViewMode: this._viewMode,\r\n SubjectEntityId: this._subjectEntityId\r\n })\r\n .then(data => {\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectEntityId(this._subjectEntityId);\r\n queryBuilderControl.SetSubjectRecordId(this._subjectRecordId);\r\n queryBuilderControl.SetQueryTypeName(this._viewMode);\r\n queryBuilderControl.SetFilterByOwners(this._filterByOwners);\r\n queryBuilderControl.SetGridId(this.GetControlId());\r\n queryBuilderControl.InitQuery(data);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this._tableViewId = eventArgs.data.RecordId;\r\n this.UpdateTableViewList();\r\n\r\n this._userVarsManager.SetGridView(this.GetControlId(), this._tableViewId);\r\n });\r\n }\r\n });\r\n\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n CopyTableView() {\r\n if (this._tableView().Id > 0) {\r\n BlockUI.Block();\r\n\r\n GridStore.GetDefaultTableViewMetaData(ScreenTypes[this.ScreenType])\r\n .then(async data => {\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId,\r\n RecordId: this._tableView().Id,\r\n LoadAsExample: true\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n })\r\n .then((screen) => {\r\n const editScreen = screen as EditScreen;\r\n editScreen.SetIsQueryBuilderScreen(true);\r\n editScreen.IsDataFromExample = true;\r\n editScreen.ShowInModal();\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectRecordId(this._subjectRecordId);\r\n queryBuilderControl.SetQueryTypeName(this._viewMode);\r\n queryBuilderControl.SetFilterByOwners(this._filterByOwners);\r\n queryBuilderControl.SetGridId(this.GetControlId());\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this._tableViewId = eventArgs.data.RecordId;\r\n this.UpdateTableViewList();\r\n\r\n this._userVarsManager.SetGridView(this.GetControlId(), this._tableViewId);\r\n });\r\n }\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n BlockUI.Unblock();\r\n });\r\n }\r\n }\r\n\r\n EditTableView() {\r\n if (this._tableView().Id > 0) {\r\n BlockUI.Block();\r\n\r\n GridStore.GetDefaultTableViewMetaData(ScreenTypes[this.ScreenType])\r\n .then(data => {\r\n\r\n LockManager.Instance.TryLock(data.TableId, this._tableView().Id)\r\n .then(async () => {\r\n\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId,\r\n RecordId: this._tableView().Id\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n })\r\n .then((screen) => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === data.TableId && eventArgs.data.RecordId === this._tableView().Id) {\r\n screen.Close();\r\n }\r\n });\r\n screen.On('MODAL_CLOSE', this, () => {\r\n LockManager.Instance.ReleaseLock(data.TableId, this._tableView().Id);\r\n });\r\n\r\n const editScreen = screen as BaseScreen;\r\n editScreen.SetIsQueryBuilderScreen(true);\r\n\r\n editScreen.ShowInModal();\r\n\r\n editScreen.On('RECORD_DELETED', this, (eventArgs) => {\r\n this.UpdateTableViewList();\r\n });\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetQueryTypeName(this._viewMode);\r\n queryBuilderControl.SetSubjectRecordId(this._subjectRecordId);\r\n queryBuilderControl.SetFilterByOwners(this._filterByOwners);\r\n queryBuilderControl.SetGridId(this.GetControlId());\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.UpdateTableViewList();\r\n });\r\n }\r\n });\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n }\r\n\r\n DeleteTableView() {\r\n if (this._tableView().Id > 0) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: 'Are you sure?',\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: 'Yes',\r\n TextDecline: 'Cancel'\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this._loadInProgress(true);\r\n\r\n DeleteQueryStore.Delete({Id: this._tableView().Id})\r\n .always(() => {\r\n this._loadInProgress(false);\r\n })\r\n .then(() => {\r\n this._queryBuilder(null);\r\n this.UpdateTableViewList();\r\n });\r\n });\r\n confirmationDialog.Show();\r\n }\r\n }\r\n\r\n LockTableView() {\r\n if (this._tableView().Id > 0) {\r\n this._loadInProgress(true);\r\n LockQueryStore.Lock({Id: this._tableView().Id})\r\n .always(() => {\r\n this._loadInProgress(false);\r\n })\r\n .then(() => {\r\n this._tableView().Lock();\r\n });\r\n }\r\n }\r\n\r\n UnlockTableView() {\r\n if (this._tableView().Id > 0) {\r\n this._loadInProgress(true);\r\n LockQueryStore.Unlock({Id: this._tableView().Id})\r\n .always(() => {\r\n this._loadInProgress(false);\r\n })\r\n .then(() => {\r\n this._tableView().Unlock();\r\n });\r\n }\r\n }\r\n\r\n GetGridSubject(): QueryEntityJoinModel {\r\n if (this._viewMode === ViewModes.TableView && this._queryExpression) {\r\n let subject = _.first(this._queryExpression.EntityJoins);\r\n\r\n if (!subject) {\r\n return _.first(this._queryExpression.SubEntityJoins);\r\n }\r\n\r\n return subject;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n async LinkSubGridRecord(mainEntityId: number, mainRecordId: number, relatedEntityId: number) {\r\n BlockUI.Block();\r\n let recordSpecs = await RecordStore.GetRecordSpecs({ TableId: mainEntityId, RecordId: mainRecordId });\r\n BlockUI.Unblock();\r\n\r\n let searchScreen = new SearchScreen({\r\n EntityId: relatedEntityId,\r\n SearchTerm: '',\r\n SubjectEntityId: mainEntityId,\r\n SubjectTypeId: recordSpecs.TypeId,\r\n SubjectRecordId: mainRecordId,\r\n ButtonAdd: this._enableAddAndLink(),\r\n MultiSelectMode: true,\r\n EnableBulkScan: true\r\n });\r\n\r\n let isBulkBarcodeScanning = false;\r\n\r\n this._searchScreen = searchScreen;\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n this.SelectFromLinkSubGridRecord({\r\n mainEntityId,\r\n mainRecordId,\r\n linkedEntityId: relatedEntityId,\r\n linkedRecordId: eventArgs.data.RecordId,\r\n linkedRecordTypeId: eventArgs.data.TypeId,\r\n isBulkBarcodeScanning,\r\n onRecordSelect: () => {\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n },\r\n });\r\n });\r\n\r\n searchScreen.On('RECORDS_SELECTED', this, eventArgs => {\r\n this.SelectFromLinkSubGridRecords({\r\n mainEntityId,\r\n mainRecordId,\r\n linkedEntityId: relatedEntityId,\r\n linkedRecordIds: eventArgs.data.Ids,\r\n isBulkBarcodeScanning,\r\n onRecordSelect: () => {\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n });\r\n });\r\n\r\n searchScreen.On('BULK_BARCODE_SCAN_STARTED', this, () => {\r\n isBulkBarcodeScanning = true;\r\n\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n });\r\n\r\n searchScreen.On('BULK_BARCODE_SCAN_STOPPED', this, () => {\r\n isBulkBarcodeScanning = false;\r\n });\r\n\r\n searchScreen.On('NEW_RECORD', this, () => {\r\n this.OnAddAndSubGridLinkRecord(mainEntityId, mainRecordId, recordSpecs.TypeId, recordSpecs.LifeStatusId, relatedEntityId);\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n SelectFromLinkSubGridRecord({\r\n mainEntityId,\r\n mainRecordId,\r\n linkedEntityId,\r\n linkedRecordId,\r\n linkedRecordTypeId,\r\n isBulkBarcodeScanning,\r\n onRecordSelect\r\n }: {\r\n mainEntityId: number;\r\n mainRecordId: number\r\n linkedEntityId: number;\r\n linkedRecordId: number;\r\n linkedRecordTypeId?: number;\r\n isBulkBarcodeScanning: boolean;\r\n onRecordSelect: () => void;\r\n }) {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Block();\r\n }\r\n RecordLinker.LinkRecord({\r\n MainTableId: mainEntityId,\r\n MainRecordId: mainRecordId,\r\n LinkedTableId: linkedEntityId,\r\n LinkedRecordId: linkedRecordId\r\n })\r\n .always(() => {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Unblock();\r\n onRecordSelect();\r\n }\r\n })\r\n .then(result => {\r\n const notifier = new Notifier();\r\n\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n let sequence = result.ResultObject.Sequence;\r\n\r\n notifier.Success(result.OperationMessage);\r\n\r\n this.LoadData(false);\r\n\r\n if (!isBulkBarcodeScanning) {\r\n this.One('DATA_LOADED', this, () => {\r\n this.UpdateLinkRecordById(linkedEntityId, linkedRecordId, linkedRecordTypeId, sequence, mainEntityId, mainRecordId);\r\n });\r\n }\r\n });\r\n }\r\n\r\n SelectFromLinkSubGridRecords({\r\n mainEntityId,\r\n mainRecordId,\r\n linkedEntityId,\r\n linkedRecordIds,\r\n isBulkBarcodeScanning,\r\n onRecordSelect\r\n }: {\r\n mainEntityId: number;\r\n mainRecordId: number;\r\n linkedEntityId: number;\r\n linkedRecordIds: number[];\r\n isBulkBarcodeScanning: boolean;\r\n onRecordSelect: () => void;\r\n }) {\r\n\r\n if (linkedRecordIds && linkedRecordIds.length == 1) {\r\n this.SelectFromLinkSubGridRecord({\r\n mainEntityId,\r\n mainRecordId,\r\n linkedEntityId: linkedEntityId,\r\n linkedRecordId: linkedRecordIds[0],\r\n isBulkBarcodeScanning: isBulkBarcodeScanning,\r\n onRecordSelect: onRecordSelect\r\n });\r\n return;\r\n }\r\n \r\n BlockUI.Block();\r\n\r\n RecordLinker.LinkRecords({\r\n MainTableId: mainEntityId,\r\n MainRecordId: mainRecordId,\r\n LinkedTableId: linkedEntityId,\r\n LinkedRecordIds: linkedRecordIds\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n\r\n if (isBulkBarcodeScanning) {\r\n onRecordSelect();\r\n }\r\n })\r\n .then(result => {\r\n const notifier = new Notifier();\r\n\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n notifier.Success(NOTIFICATIONS.RECORDS_LINKED);\r\n\r\n this.LoadData(false);\r\n });\r\n }\r\n\r\n LinkSubGridParentRecord(gridSubjectRow: GridRow, relatedEntityId: number) {\r\n let notifier = new Notifier($(this._el));\r\n\r\n let searchScreen = new SearchScreen({\r\n EntityId: relatedEntityId,\r\n SearchTerm: '',\r\n SubjectEntityId: gridSubjectRow.EntityId,\r\n SubjectTypeId: gridSubjectRow.RecordTypeId,\r\n SubjectRecordId: gridSubjectRow.RecordId,\r\n ButtonAdd: false,\r\n IsParentLinking: true\r\n });\r\n\r\n this._searchScreen = searchScreen;\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n const childEntityId = gridSubjectRow.EntityId;\r\n const childRecordId = gridSubjectRow.RecordId;\r\n const childRecordTypeId = gridSubjectRow.RecordTypeId;\r\n\r\n const parentEntityId = relatedEntityId;\r\n const parentRecordId = eventArgs.data.RecordId;\r\n const parentRecordTypeId = eventArgs.data.TypeId;\r\n\r\n RecordLinker.LinkRecord({\r\n MainTableId: parentEntityId,\r\n MainRecordId: parentRecordId,\r\n LinkedTableId: childEntityId,\r\n LinkedRecordId: childRecordId\r\n }).then(result => {\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n let sequence = result.ResultObject.Sequence;\r\n\r\n notifier.Success(result.OperationMessage);\r\n\r\n this.LoadData(false);\r\n\r\n this.One('DATA_LOADED', this, () => {\r\n const seq = !!sequence ? sequence : 0;\r\n if (this._isLinkEditorEnabled) {\r\n this.UpdateLinkRecord(parentEntityId, parentRecordId, parentRecordTypeId, seq, 1, childEntityId, childRecordId, childRecordTypeId, true, true);\r\n }\r\n });\r\n });\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n OnAddAndSubGridLinkRecord(\r\n mainEntityId: number,\r\n mainRecordId: number,\r\n mainRecordTypeId: number,\r\n mainRecordStatusId: number,\r\n relatedEntityId: number\r\n ) {\r\n const selfRelation = mainEntityId === relatedEntityId;\r\n\r\n const typeScreen = new TypeScreen(relatedEntityId, selfRelation ? mainRecordTypeId : null, false);\r\n\r\n typeScreen.On('TYPE_SELECTED', this, async eventArgs => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n await this.AddAndSubGidLinkRecord(typeId, kindId, exampleRecordId, mainEntityId, mainRecordId, mainRecordStatusId, relatedEntityId);\r\n })\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier($(this._el)).Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n ScanAndLinkSubGridRecord(mainEntityId: number, mainRecordId: number, relatedEntityId: number) {\r\n const barcodeScanner = new BarcodeScanner({isContinuous: true});\r\n\r\n barcodeScanner.On('SUBMIT', this, eventArgs => {\r\n const {value} = eventArgs.data;\r\n\r\n const linkedEntityId = relatedEntityId;\r\n\r\n GridStore.SearchByBarcode({EntityId: linkedEntityId, Barcode: value})\r\n .then(linkedRecordId => {\r\n this.SelectFromLinkSubGridRecord({\r\n mainEntityId,\r\n mainRecordId,\r\n linkedEntityId,\r\n linkedRecordId,\r\n isBulkBarcodeScanning: true,\r\n onRecordSelect: () => {\r\n barcodeScanner.Reenable();\r\n },\r\n });\r\n })\r\n .fail(error => {\r\n barcodeScanner.Reenable();\r\n new Notifier($(this._el)).Failed(error.message);\r\n });\r\n });\r\n\r\n barcodeScanner.Show();\r\n }\r\n\r\n LinkForEditScreen({ recordIds, updateLinkRecord = true, isLinkParent = false }: ILinkForEditScreenOptions) {\r\n if (recordIds.length === 0) {\r\n return;\r\n }\r\n\r\n const requestModel: IGetGridDataRequestModel = {\r\n ControlId: this._model().Id,\r\n\r\n TableViewId: this.ScreenType === ScreenTypes[ScreenTypes.Portlet] ?\r\n 0 :\r\n this._tableView() ? this._tableView().Id : 0,\r\n\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectRecordId: this._subjectRecordId,\r\n SubjectTypeId: 0,\r\n SubjectKindId: 0,\r\n SubjectStatusId: 0,\r\n ViewMode: this._viewMode,\r\n PageNumber: this.Paginator.PageNumber,\r\n RecordsPerPage: this.Paginator.RecordsPerPage,\r\n Sort: this._sorting,\r\n SearchPhrase: this._searchPhrase(),\r\n FilterByOwners: this._filterByOwners,\r\n RecordOwners: this._selectedUsers,\r\n ShowPlanned: this._showPlanned,\r\n SelectedTags: this._selectedTags,\r\n GridSubjectRecordIds: recordIds\r\n };\r\n\r\n this._loadInProgress(true);\r\n return GridStore.GetData(requestModel)\r\n .always(() => {\r\n this._loadInProgress(false);\r\n })\r\n .then(gridDataModel => {\r\n let rows = this._baseGrid.AddLinkedRows(gridDataModel);\r\n\r\n rows.forEach(row=>row.IsLinkParent = isLinkParent);\r\n\r\n if (updateLinkRecord) {\r\n let firstRow = _.first(rows);\r\n if (firstRow) {\r\n\r\n const mainEntityId = this._form.GetScreen().GetEntityId();\r\n const mainRecordId = this._form.GetScreen().GetRecordId();\r\n const mainRecordTypeId = this._form.GetScreen().GetTableTypeId();\r\n const mainRecordKindId = this._form.GetScreen().GetKindId();\r\n\r\n const relatedEntityId = firstRow.EntityId;\r\n const relatedRecordId = firstRow.RecordId;\r\n const relatedRecordTypeId = firstRow.RecordTypeId;\r\n const relatedRecordKindId = firstRow.RecordKindId;\r\n\r\n let loadScreenRelationModel: ILoadScreenRelationModel = {\r\n MainRecordId: isLinkParent ? relatedRecordId : mainRecordId,\r\n MainEntityId: isLinkParent ? relatedEntityId : mainEntityId,\r\n MainRecordTypeId: isLinkParent ? relatedRecordTypeId : mainRecordTypeId,\r\n MainRecordKindId: isLinkParent ? relatedRecordKindId : mainRecordKindId,\r\n RelatedEntityId: isLinkParent ? mainEntityId : relatedEntityId,\r\n RelatedRecordId: isLinkParent ? mainRecordId : relatedRecordId,\r\n RelatedRecordTypeId: isLinkParent ? mainRecordTypeId : relatedRecordTypeId,\r\n KSeq: firstRow.KSeq\r\n };\r\n this.UpdateLinkRecordGeneral(loadScreenRelationModel, firstRow, true, false, isLinkParent);\r\n this._disabledCopyButton(false);\r\n }\r\n } else {\r\n new Notifier().Success(NOTIFICATIONS.RECORDS_LINKED);\r\n }\r\n });\r\n }\r\n\r\n LinkRecord() {\r\n const gridSubject = this.GetGridSubject();\r\n\r\n if (gridSubject) {\r\n let isBulkBarcodeScanning = false;\r\n\r\n let searchScreen = new SearchScreen({\r\n EntityId: gridSubject.Entity.Metadata.Id,\r\n SearchTerm: '',\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectTypeId: this.GetForm().GetScreen().GetTableTypeId(),\r\n SubjectRecordId: this.GetForm().GetScreen().GetRecordId(),\r\n ButtonAdd: this._enableAddAndLink(),\r\n ControlId: this.GetControlId(),\r\n HasLinkingCondition: this.HasLinkingCondition,\r\n EnableBulkScan: true,\r\n MultiSelectMode: true\r\n });\r\n\r\n this._searchScreen = searchScreen;\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n this.SelectFromLinkRecord({\r\n linkedEntityId: gridSubject.Entity.Metadata.Id,\r\n linkedRecordIds: [eventArgs.data.RecordId],\r\n linkedRecordTypeId: eventArgs.data.TypeId,\r\n isBulkBarcodeScanning,\r\n onRecordSelect: () => {\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n });\r\n });\r\n\r\n searchScreen.On('RECORDS_SELECTED', this, eventArgs => {\r\n this.SelectFromLinkRecord({\r\n linkedEntityId: gridSubject.Entity.Metadata.Id,\r\n linkedRecordIds: eventArgs.data.Ids,\r\n isBulkBarcodeScanning,\r\n onRecordSelect: () => {\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n });\r\n });\r\n\r\n searchScreen.On('BULK_BARCODE_SCAN_STARTED', this, () => {\r\n isBulkBarcodeScanning = true;\r\n\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n });\r\n\r\n searchScreen.On('BULK_BARCODE_SCAN_STOPPED', this, () => {\r\n isBulkBarcodeScanning = false;\r\n });\r\n\r\n searchScreen.On('NEW_RECORD', this, () => {\r\n this.OnAddAndLinkRecord();\r\n });\r\n\r\n searchScreen.Show();\r\n } else {\r\n new Notifier().Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n }\r\n }\r\n\r\n SelectFromLinkRecord({linkedEntityId, linkedRecordIds, linkedRecordTypeId, isBulkBarcodeScanning, onRecordSelect}: {\r\n linkedEntityId: number;\r\n linkedRecordIds: number[];\r\n linkedRecordTypeId?: number;\r\n isBulkBarcodeScanning: boolean;\r\n onRecordSelect: () => void;\r\n }) {\r\n //TODO refactor\r\n\r\n if (this.IsEditScreen || this.IsProcessCardPageScreen) {\r\n let kSeqValue = _.find(this._queryExpression.EntityJoins[0].LinkEntity.Metadata.Fields,\r\n field => field.Name === 'K_SEQ');\r\n if (kSeqValue) {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Block();\r\n }\r\n this.LinkForEditScreen({ recordIds: linkedRecordIds, updateLinkRecord: !isBulkBarcodeScanning })\r\n .always(() => {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Unblock();\r\n onRecordSelect();\r\n }\r\n });\r\n } else {\r\n let deletedRows = this._baseGrid.GetUnlinkedGridRowsByRecordIds(linkedRecordIds);\r\n\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Block();\r\n }\r\n RecordLinker.GetExistingLinksWithRecords({\r\n MainTableId: this._subjectEntityId,\r\n MainRecordId: this._subjectRecordId,\r\n LinkedTableId: linkedEntityId,\r\n LinkedRecordIds: linkedRecordIds\r\n })\r\n .always(() => {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Unblock();\r\n onRecordSelect();\r\n }\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n _.each(result.ResultObject, (id) => {\r\n let deletedRow = _.find(deletedRows, (row) => row.RecordId === id)\r\n if (deletedRow) {\r\n deletedRow.LinkEditorData.DeletedRelations = _.reject(deletedRow.LinkEditorData.DeletedRelations,\r\n (item) => item.EntityId === deletedRow.EntityId\r\n && item.RecordId === deletedRow.RecordId\r\n && item.KSeq === deletedRow.KSeq);\r\n\r\n this._baseGrid.AddRow(deletedRow);\r\n\r\n setTimeout(() => {\r\n this._baseGrid.ResizeTableCellsAfterRender();\r\n }, 0);\r\n }\r\n });\r\n\r\n let newLinks = _.difference(linkedRecordIds, result.ResultObject);\r\n this.LinkForEditScreen({ recordIds: newLinks, updateLinkRecord: !isBulkBarcodeScanning });\r\n });\r\n }\r\n } else {\r\n\r\n BlockUI.Block();\r\n\r\n if (linkedRecordIds.length === 1) {\r\n RecordLinker.LinkRecord({\r\n MainTableId: this._subjectEntityId,\r\n MainRecordId: this._subjectRecordId,\r\n LinkedTableId: linkedEntityId,\r\n LinkedRecordId: linkedRecordIds[0]\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(); \r\n if (isBulkBarcodeScanning) {\r\n onRecordSelect();\r\n }\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n const notifier = new Notifier();\r\n\r\n if (result.Warnings.length > 0) {\r\n result.Warnings.forEach(w => notifier.Warning(w.replace(\"/n\", \"<br>\")));\r\n }\r\n\r\n let sequence = result.ResultObject.Sequence;\r\n\r\n notifier.Success(result.OperationMessage);\r\n\r\n this._disabledCopyButton(false);\r\n\r\n if (!isBulkBarcodeScanning) {\r\n this.UpdateLinkRecordById(linkedEntityId, linkedRecordIds[0], linkedRecordTypeId, sequence);\r\n }\r\n });\r\n } else {\r\n RecordLinker.LinkRecords({\r\n MainTableId: this._subjectEntityId,\r\n MainRecordId: this._subjectRecordId,\r\n LinkedTableId: linkedEntityId,\r\n LinkedRecordIds: linkedRecordIds\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n \r\n if (isBulkBarcodeScanning) {\r\n onRecordSelect();\r\n }\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n const notifier = new Notifier();\r\n\r\n if (result.Warnings.length > 0) {\r\n result.Warnings.forEach(w => notifier.Warning(w.replace(\"/n\", \"<br>\")));\r\n }\r\n\r\n notifier.Success(result.OperationMessage);\r\n\r\n this.LoadData(false);\r\n this._disabledCopyButton(false);\r\n });\r\n }\r\n }\r\n }\r\n\r\n LinkParentRecord() {\r\n const gridSubject = this.GetGridSubject();\r\n let notifier = new Notifier($(this._el));\r\n\r\n if (gridSubject) {\r\n let searchScreen = new SearchScreen({\r\n EntityId: gridSubject.Entity.Metadata.Id,\r\n SearchTerm: '',\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectTypeId: this.GetForm().GetScreen().GetTableTypeId(),\r\n SubjectRecordId: this.GetForm().GetScreen().GetRecordId(),\r\n ButtonAdd: false,\r\n ControlId: this.GetControlId(),\r\n HasLinkingCondition: this.HasLinkingCondition,\r\n IsParentLinking: true\r\n });\r\n\r\n this._searchScreen = searchScreen;\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n const childEntityId = this._subjectEntityId;\r\n const childRecordId = this._subjectRecordId;\r\n const childRecordTypeId = this.GetForm().GetScreen().GetTableTypeId();\r\n\r\n const parentEntityId = gridSubject.Entity.Metadata.Id;\r\n const parentRecordId = eventArgs.data.RecordId;\r\n const parentRecordTypeId = eventArgs.data.TypeId;\r\n\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n let hasKSeq = _.any(this._queryExpression.EntityJoins[0].LinkEntity.Metadata.Fields,\r\n field => field.Name === 'K_SEQ');\r\n if (hasKSeq) {\r\n this.LinkForEditScreen({ recordIds: [parentRecordId], isLinkParent: true })\r\n } else {\r\n let deletedRows = this._baseGrid.GetUnlinkedGridRowsByRecordIds([parentRecordId]);\r\n \r\n RecordLinker.GetExistingLinksWithRecords({\r\n MainTableId: parentEntityId,\r\n MainRecordId: parentRecordId,\r\n LinkedTableId: this._subjectEntityId,\r\n LinkedRecordIds: [this._subjectRecordId]\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n \r\n _.each(result.ResultObject, (id) => {\r\n let deletedRow = _.find(deletedRows, (row) => row.RecordId === id)\r\n if (deletedRow) {\r\n deletedRow.LinkEditorData.DeletedRelations = _.reject(deletedRow.LinkEditorData.DeletedRelations,\r\n (item) => item.EntityId === deletedRow.EntityId\r\n && item.RecordId === deletedRow.RecordId\r\n && item.KSeq === deletedRow.KSeq);\r\n \r\n this._baseGrid.AddRow(deletedRow);\r\n \r\n setTimeout(() => {\r\n this._baseGrid.ResizeTableCellsAfterRender();\r\n }, 0);\r\n }\r\n });\r\n \r\n let newLinks = _.difference([], result.ResultObject);\r\n this.LinkForEditScreen({ recordIds: newLinks, isLinkParent: true });\r\n });\r\n }\r\n } else {\r\n\r\n RecordLinker.LinkRecord({\r\n MainTableId: parentEntityId,\r\n MainRecordId: parentRecordId,\r\n LinkedTableId: childEntityId,\r\n LinkedRecordId: childRecordId\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n const sequence = result.ResultObject.Sequence;\r\n\r\n notifier.Success(result.OperationMessage);\r\n\r\n this.LoadData(false);\r\n\r\n this.One('DATA_LOADED', this, () => {\r\n const seq = !!sequence ? sequence : 0;\r\n if (this._isLinkEditorEnabled) {\r\n this.UpdateLinkRecord(parentEntityId, parentRecordId, parentRecordTypeId, seq, 1, childEntityId, childRecordId, childRecordTypeId, true, true);\r\n } else if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n }\r\n });\r\n });\r\n }\r\n });\r\n\r\n searchScreen.Show();\r\n } else {\r\n notifier.Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n }\r\n }\r\n\r\n CopyLatestLink(): void {\r\n const screen = this._form.GetScreen();\r\n const subjectEntityId = screen.GetEntityId();\r\n const subjectRecordId = screen.GetRecordId();\r\n const relatedEntityId = this.GetGridSubject().Entity.Metadata.Id;\r\n\r\n if (this._form.GetScreen().GetRecordId()) {\r\n\r\n const firstRow = this._baseGrid.GetRowByIndex(0);\r\n if (!firstRow) {\r\n return new Notifier().Warning(NOTIFICATIONS.NOTHING_TO_COPY);\r\n }\r\n\r\n if (firstRow.State === States.New || firstRow.State === States.Link || firstRow.State === States.LinkAndEdit) {\r\n this.CopyEntityRowRecord(0);\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n LinkRecordsStore.GetLastLinkedRecordEditScreen({\r\n MainTableId: subjectEntityId,\r\n LinkedTableId: relatedEntityId,\r\n MainRecordId: subjectRecordId\r\n }).then(async linkedRecord => {\r\n\r\n if (!linkedRecord) {\r\n return new Notifier().Warning(NOTIFICATIONS.LINK_RECORDS_NOT_FOUND);\r\n }\r\n\r\n await this.CopyLinkedRecord({\r\n RecordId: linkedRecord.RightRecordId,\r\n TypeId: linkedRecord.RightRecordTypeId,\r\n KindId: linkedRecord.RightRecordKindId,\r\n IsCorrectDirection: linkedRecord.IsCorrectDirection\r\n }, DataModes.Copy);\r\n }).fail(err => {\r\n new Notifier().Failed(err.message)\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n });\r\n } else {\r\n // When new record without example\r\n this.CopyEntityRowRecord(0);\r\n return;\r\n }\r\n }\r\n\r\n CopyLatestSubRecord(): void {\r\n const screen = this._form.GetScreen();\r\n const subjectEntityId = screen.GetEntityId();\r\n const subjectRecordId = screen.GetRecordId();\r\n const relatedSubEntityId = this.GetGridSubject().Entity.Metadata.Id;\r\n\r\n if (this._form.GetScreen().GetRecordId()) {\r\n const firstRow = this._baseGrid.GetRowByIndex(0);\r\n if (!firstRow) {\r\n return new Notifier().Warning(NOTIFICATIONS.NOTHING_TO_COPY);\r\n }\r\n\r\n if (firstRow.State === States.New || firstRow.State === States.Link || firstRow.State === States.LinkAndEdit) {\r\n this.CopySubEntityRowRecord(0);\r\n return;\r\n }\r\n\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n this.RecreateLatestSubRecord();\r\n return;\r\n }\r\n\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n this.CopyLatestSubRecordRow();\r\n return;\r\n }\r\n\r\n } else {\r\n this.CopySubEntityRowRecord(0);\r\n return;\r\n }\r\n }\r\n\r\n async CopyEntityRowRecord(rowIndex: number) {\r\n const rowToDuplicate = this._baseGrid.GetRowByIndex(rowIndex);\r\n if (!rowToDuplicate) {\r\n return new Notifier().Warning(NOTIFICATIONS.NOTHING_TO_COPY);\r\n }\r\n\r\n const rowRecordId = rowToDuplicate.Model.RecordId;\r\n const rowRecordTypeId = rowToDuplicate.Model.TypeId;\r\n const rowRecordKindId = rowToDuplicate.Model.KindId;\r\n if (!rowRecordId) {\r\n this._baseGrid.DuplicateRow(rowToDuplicate);\r\n return;\r\n }\r\n\r\n await this.CopyLinkedRecord({\r\n RecordId: rowRecordId,\r\n TypeId: rowRecordTypeId,\r\n KindId: rowRecordKindId,\r\n IsCorrectDirection: this._isDirectionCorrect\r\n }, DataModes.Copy);\r\n }\r\n\r\n OnAddAndLinkRecord() {\r\n const gridSubject = this.GetGridSubject();\r\n\r\n if (gridSubject) {\r\n const selfRelation = gridSubject.Entity.Metadata.Id === this._subjectEntityId;\r\n\r\n const showTypeSelector = () => {\r\n const parentTypeId = this.GetForm().GetScreen().GetTableTypeId();\r\n const typeScreen = new TypeScreen(gridSubject.Entity.Metadata.Id,\r\n selfRelation ? parentTypeId : null,\r\n false);\r\n\r\n typeScreen.On('TYPE_SELECTED', this, async eventArgs => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n await this.AddAndLinkRecord(typeId, kindId, exampleRecordId);\r\n })\r\n .On('TYPES_NOT_FOUND', this, eventArgs => new Notifier($(this._el)).Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.ConsultScreen] && this._form && !this._form.GetScreen().IsInModal()) {\r\n\r\n const profileSelectorScreen = new ProfileSelectorScreen(gridSubject.Entity.Metadata.Id, gridSubject.Entity.Metadata.Name);\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n } else {\r\n showTypeSelector();\r\n }\r\n } else {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n }\r\n }\r\n\r\n UnlinkMultipleRecords() {\r\n let selectedRows: Array<IUnlinkRecordRequestModel> = [];\r\n let selectedRowsRequestModel: IUnlinkMultipleRecordsRequestModel = null;\r\n\r\n _.each(this._dataModel.Rows, row => {\r\n if (row.IsUnlinkCheckboxChecked) {\r\n let requestRowModel: IUnlinkRecordRequestModel = {\r\n MainEntityId: this._subjectEntityId,\r\n MainRecordId: this._subjectRecordId,\r\n RelatedEntityId: row.EntityId,\r\n RelatedRecordId: row.RecordId,\r\n KSeq: row.KSeq,\r\n RelationshipType: row.RelationshipType\r\n };\r\n\r\n if (row.RelationshipType == RelationshipTypes.Parent) {\r\n requestRowModel.MainEntityId = row.EntityId;\r\n requestRowModel.MainRecordId = row.RecordId;\r\n requestRowModel.RelatedEntityId = this._subjectEntityId;\r\n requestRowModel.RelatedRecordId = this._subjectRecordId;\r\n requestRowModel.RelationshipType = row.RelationshipType;\r\n }\r\n\r\n selectedRows.push(requestRowModel);\r\n\r\n selectedRowsRequestModel = {\r\n Rows: selectedRows\r\n }\r\n\r\n //row.IsUnlinkCheckboxChecked = false;\r\n }\r\n });\r\n\r\n const notifier = new Notifier(null);\r\n\r\n if (selectedRowsRequestModel) {\r\n BlockUI.Block();\r\n\r\n GridStore.UnlinkMultipleRecords(selectedRowsRequestModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n\r\n if (result.IsSuccessfull) {\r\n if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n\r\n return;\r\n }\r\n\r\n if (this._baseGrid.RowsCount == 0) {\r\n this._toolbar.Paginator().Reset();\r\n } else {\r\n this.LoadData(false);\r\n }\r\n } else if (result.Warnings && result.Warnings.length > 0) {\r\n _.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n } else {\r\n notifier.Failed(result.ErrorMessage);\r\n }\r\n });\r\n\r\n selectedRowsRequestModel = null;\r\n } else {\r\n notifier.Warning(LABELS.NO_RECORD_SELECTED);\r\n }\r\n }\r\n\r\n ScanAndLinkRecord() {\r\n const gridSubject = this.GetGridSubject();\r\n\r\n if (!gridSubject) {\r\n new Notifier().Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n return;\r\n }\r\n\r\n const barcodeScanner = new BarcodeScanner({isContinuous: true});\r\n\r\n barcodeScanner.On('SUBMIT', this, eventArgs => {\r\n const {value} = eventArgs.data;\r\n\r\n const linkedEntityId = gridSubject.Entity.Metadata.Id;\r\n\r\n GridStore.SearchByBarcode({EntityId: linkedEntityId, Barcode: value})\r\n .then(linkedRecordId => {\r\n this.SelectFromLinkRecord({\r\n linkedEntityId,\r\n linkedRecordIds: [linkedRecordId],\r\n isBulkBarcodeScanning: true,\r\n onRecordSelect: () => {\r\n barcodeScanner.Reenable();\r\n }\r\n });\r\n })\r\n .fail(error => {\r\n barcodeScanner.Reenable();\r\n new Notifier().Failed(error.message);\r\n });\r\n });\r\n\r\n barcodeScanner.Show();\r\n }\r\n\r\n EnableRecordSelection(){\r\n this._isEnableSelectRecord(true);\r\n }\r\n\r\n DisableRecordSelection(){\r\n this._isEnableSelectRecord(true);\r\n }\r\n\r\n AddQuery() {\r\n BlockUI.Block();\r\n TableStore.Get({TableName: 'QUERIES'}).then((table: any) => {\r\n EntityTypesStore.GetTypes({\r\n EntityId: table.Id,\r\n ParentTypeId: 0,\r\n WithRoot: true,\r\n OnlyEnabled: true\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(tableTypesModel => {\r\n\r\n let queryType = _.find(tableTypesModel.TableTypes, (type) => {\r\n return type.Name === 'Query';\r\n });\r\n\r\n let searchScreen = new SearchScreen({\r\n EntityId: table.Id,\r\n SearchTerm: '',\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectTypeId: this.GetForm().GetScreen().GetTableTypeId(),\r\n ButtonAdd: false,\r\n IsAddQueryButton: true,\r\n SearchByTypes: [queryType.Id],\r\n QuerySubjectId: this.GetGridSubject().Entity.Metadata.Id\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n this.ShowQueryResultScreen(eventArgs.data.RecordId);\r\n });\r\n\r\n searchScreen.Show();\r\n });\r\n });\r\n }\r\n\r\n ShowQueryResultScreen(queryId: number) {\r\n const queryResultPage = new QueryResultPage(true);\r\n queryResultPage.ShowAddQueryResult(queryId);\r\n queryResultPage.On('RECORDS_SELECTED', this, (eventArgs: any) => {\r\n this.LinkRecords(eventArgs.data.SelectedRecords);\r\n });\r\n }\r\n\r\n LinkRecords(selectedRecords: Array<GridRow>) {\r\n const linkedRecordIds = [];\r\n\r\n _.each(selectedRecords, (item: GridRow) => {\r\n linkedRecordIds.push(item.RecordId);\r\n });\r\n\r\n const requestModel: ILinkRecordsRequestModel = {\r\n MainTableId: this._subjectEntityId,\r\n LinkedTableId: this._model().EntityId,\r\n MainRecordId: this._subjectRecordId,\r\n LinkedRecordIds: linkedRecordIds\r\n };\r\n\r\n const notifier = new Notifier();\r\n\r\n if (linkedRecordIds.length > 0) {\r\n BlockUI.Block();\r\n\r\n LinkRecordsStore.LinkWithRecords(requestModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n this.LoadData(false);\r\n notifier.Success(NOTIFICATIONS.RECORDS_LINKED);\r\n this._disabledCopyButton(false);\r\n } else {\r\n notifier.Failed(result.ErrorMessage);\r\n }\r\n });\r\n } else {\r\n notifier.Warning(NOTIFICATIONS.NO_SELECTED_RECORDS);\r\n }\r\n }\r\n\r\n GoToRecordScreen(data: any) {\r\n data.IsOpenInModal = data.ShowInModal ? data.ShowInModal : this._form.GetScreen().IsInModal();\r\n data.Owner = this._form.GetScreen();\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.SubjectRecordId && (this._form.GetScreen().IsConsultScreen || this._form.GetScreen().IsPortlet)) {\r\n this._viewMode = ViewModes.TableView;\r\n }\r\n\r\n this._subjectRecordId = value.SubjectRecordId;\r\n this._subjectRecordSpecsModel = value.RecordSpecsModel;\r\n\r\n if (this._isRendered()) {\r\n this.UpdateTableViewList();\r\n }\r\n\r\n this._isRendered.subscribe(() => this.UpdateTableViewList());\r\n }\r\n\r\n SetSubjectRecord(recordId: number) {\r\n this._subjectRecordId = recordId;\r\n }\r\n\r\n EnterKey() {\r\n if (this.Paginator) {\r\n this.Paginator.PageNumber = 1;\r\n }\r\n this.LoadData(false);\r\n }\r\n\r\n SetRecordsPerPage(recordsPerPage: number) {\r\n this.UpdateTableViewList();\r\n this.Paginator.RecordsPerPage = recordsPerPage;\r\n }\r\n\r\n SetPageNumber(pageNumber: number) {\r\n this.Paginator.PageNumber = pageNumber;\r\n }\r\n\r\n AddStyle(name: string, value: string): void {\r\n }\r\n\r\n IsReady: KnockoutObservable<boolean>;\r\n\r\n get Fields() {\r\n return this._model().Fields;\r\n }\r\n\r\n get DesignFields(): KnockoutObservableArray<AttachedFieldModel> {\r\n return this._designFields;\r\n }\r\n\r\n private CopySubEntityRowRecord(rowIndex: number) {\r\n const rowToDuplicate = this._baseGrid.GetRowByIndex(rowIndex);\r\n if (!rowToDuplicate) {\r\n return new Notifier().Warning(NOTIFICATIONS.NOTHING_TO_COPY);\r\n }\r\n\r\n this._baseGrid.DuplicateRow(rowToDuplicate);\r\n }\r\n\r\n private RecreateLatestSubRecord() {\r\n const screen = this._form.GetScreen();\r\n const subjectEntityId = screen.GetEntityId();\r\n const subjectRecordId = screen.GetRecordId();\r\n const relatedSubEntityId = this.GetGridSubject().Entity.Metadata.Id;\r\n\r\n BlockUI.Block();\r\n LinkRecordsStore.CopyLastSubRecord({\r\n MainTableId: subjectEntityId,\r\n SubTableId: relatedSubEntityId,\r\n MainRecordId: subjectRecordId\r\n }).then(() => {\r\n this.LoadData(false);\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private CopyLatestSubRecordRow() {\r\n const screen = this._form.GetScreen();\r\n const subjectEntityId = screen.GetEntityId();\r\n const subjectRecordId = screen.GetRecordId();\r\n const relatedSubEntityId = this.GetGridSubject().Entity.Metadata.Id;\r\n\r\n BlockUI.Block();\r\n LinkRecordsStore.GetLastSubRecordSpecs({\r\n SubTableId: relatedSubEntityId,\r\n MainRecordId: subjectRecordId\r\n }).then(recordSpecs => {\r\n const requestModel: IGetGridDataRequestModel = {\r\n ControlId: this._model().Id,\r\n\r\n TableViewId: this.ScreenType === ScreenTypes[ScreenTypes.Portlet] ?\r\n 0 :\r\n this._tableView() ? this._tableView().Id : 0,\r\n\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectRecordId: this._subjectRecordId,\r\n SubjectTypeId: 0,\r\n SubjectKindId: 0,\r\n SubjectStatusId: 0,\r\n ViewMode: this._viewMode,\r\n PageNumber: this.Paginator.PageNumber,\r\n RecordsPerPage: this.Paginator.RecordsPerPage,\r\n Sort: this._sorting,\r\n SearchPhrase: this._searchPhrase(),\r\n FilterByOwners: this._filterByOwners,\r\n RecordOwners: this._selectedUsers,\r\n ShowPlanned: this._showPlanned,\r\n SelectedTags: this._selectedTags,\r\n GridSubjectRecordIds: [recordSpecs.SequenceId]\r\n };\r\n\r\n this._loadInProgress(true);\r\n GridStore.GetData(requestModel)\r\n .then(gridDataModel => {\r\n this._baseGrid.AddRowsFrom(gridDataModel);\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message);\r\n })\r\n .always(() => {\r\n this._loadInProgress(false);\r\n });\r\n }).fail(err => {\r\n new Notifier().Failed(err.message);\r\n }).always(() => {\r\n BlockUI.Unblock()\r\n });\r\n }\r\n\r\n private async AddAndSubGidLinkRecord(\r\n tableTypeId: number,\r\n kindId: number,\r\n exampleRecordId: number,\r\n mainEntityId: number,\r\n mainRecordId: number,\r\n mainRecordStatusId: number,\r\n relatedEntityId: number\r\n ) {\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: relatedEntityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n SubjectLifestatusId: mainRecordStatusId\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Warning(error.message);\r\n }).then((screen) => {\r\n const editScreen = screen as EditScreen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n\r\n } else {\r\n editScreen.SaveImmediately = false;\r\n screen.On('READY_TO_SAVE', this, (eventArgs) => {\r\n this.LinkSubGridCreatedRecord(eventArgs.data, mainEntityId, mainRecordId, relatedEntityId);\r\n if (this._searchScreen) {\r\n this._searchScreen.Close();\r\n }\r\n });\r\n\r\n }\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n private async CopyLinkedRecord(linkRecordSpecs: { TypeId: number, KindId: number, RecordId: number, IsCorrectDirection: boolean }, dataMode: DataModes) {\r\n const linkedEntityId = this.GetGridSubject().Entity.Metadata.Id;\r\n\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: linkedEntityId,\r\n TableTypeId: linkRecordSpecs.TypeId,\r\n KindId: linkRecordSpecs.KindId,\r\n RecordId: linkRecordSpecs.RecordId,\r\n LoadAsExample: true,\r\n DataMode: dataMode\r\n }).always(() => {\r\n BlockUI.Unblock()\r\n }).then((screen: EditScreen) => {\r\n screen.IsDataFromExample = true;\r\n\r\n let subjectAlreadyLinked = false;\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.ConsultScreen] && screen.GetControl(CONTROL_TYPES.LinkList) && linkRecordSpecs.IsCorrectDirection === false) {\r\n screen.On('LINK_LIST_DATA_LOADED',\r\n this,\r\n eventArgs => {\r\n let linkListControl = eventArgs.data.Control as LinkList;\r\n let model = _.find(linkListControl.DataModel().Entities(), entity => entity.EntityId === this._form.GetScreen().GetEntityId());\r\n if (model) {\r\n linkListControl.AfterSelectRecord([this._form.GetScreen().GetRecordId()], model);\r\n subjectAlreadyLinked = true;\r\n }\r\n });\r\n }\r\n\r\n screen.On('RECORD_SAVED', this, eventArgs => {\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n if (subjectAlreadyLinked) {\r\n return this.LoadData(false);\r\n }\r\n return this.LinkCreatedRecord(eventArgs.data, !linkRecordSpecs.IsCorrectDirection);\r\n }\r\n\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n this.LinkForEditScreen({ recordIds: eventArgs.data.RecordId, updateLinkRecord: false });\r\n }\r\n });\r\n\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n private async AddAndLinkRecord(tableTypeId: number, kindId: number, exampleRecordId: number) {\r\n const gridSubject = this.GetGridSubject();\r\n const globalManager = GlobalManager.Instance;\r\n const actionGlobal = globalManager.GetGlobal(GLOBALS.ACTION_TABLE);\r\n const actionSubjectRecord = gridSubject.Entity.Metadata.Name === actionGlobal\r\n ? new ActionSubjectRecordModel(this._subjectEntityId, this._subjectRecordId)\r\n : null;\r\n if (gridSubject) {\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: gridSubject.Entity.Metadata.Id,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n SubjectLifestatusId: this._subjectRecordSpecsModel.LifeStatusInfo.Id,\r\n ActionSubjectRecord: actionSubjectRecord\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Warning(error.message);\r\n })\r\n .then((screen) => {\r\n const editScreen = screen as EditScreen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n\r\n //TODO refactor\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const requestModel: IGetGridDataRequestModel = {\r\n ControlId: this._model().Id,\r\n\r\n TableViewId: this.ScreenType === ScreenTypes[ScreenTypes.Portlet] ?\r\n 0 :\r\n this._tableView() ?\r\n this._tableView().Id : 0,\r\n\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectRecordId: this._subjectRecordId,\r\n SubjectTypeId: 0,\r\n SubjectKindId: 0,\r\n SubjectStatusId: 0,\r\n ViewMode: this._viewMode,\r\n PageNumber: this.Paginator.PageNumber,\r\n RecordsPerPage: this.Paginator.RecordsPerPage,\r\n Sort: this._sorting,\r\n SearchPhrase: this._searchPhrase(),\r\n FilterByOwners: this._filterByOwners,\r\n RecordOwners: this._selectedUsers,\r\n ShowPlanned: this._showPlanned,\r\n SelectedTags: this._selectedTags,\r\n GridSubjectRecordIds: [eventArgs.data.RecordId]\r\n };\r\n\r\n this._loadInProgress(true);\r\n GridStore.GetData(requestModel)\r\n .always(() => {\r\n this._loadInProgress(false);\r\n })\r\n .then(gridDataModel => {\r\n let rows = this._baseGrid.AddLinkedRows(gridDataModel);\r\n\r\n let firstRow = _.first(rows);\r\n if (firstRow) {\r\n const subjectEntityId = this._form.GetScreen().GetEntityId();\r\n const subjectRecordId = this._form.GetScreen().GetRecordId();\r\n const subjectRecordTypeId = this._form.GetScreen().GetTableTypeId();\r\n const subjectRecordKindId = this._form.GetScreen().GetKindId();\r\n\r\n let loadScreenRelationModel: ILoadScreenRelationModel = {\r\n MainRecordId: subjectRecordId,\r\n MainEntityId: subjectEntityId,\r\n MainRecordTypeId: subjectRecordTypeId,\r\n MainRecordKindId: subjectRecordKindId,\r\n RelatedEntityId: firstRow.EntityId,\r\n RelatedRecordId: firstRow.RecordId,\r\n RelatedRecordTypeId: firstRow.RecordTypeId,\r\n KSeq: firstRow.KSeq\r\n };\r\n this.UpdateLinkRecordGeneral(loadScreenRelationModel, firstRow, true);\r\n }\r\n this._disabledCopyButton(false);\r\n });\r\n });\r\n } else if (gridSubject.Entity.Metadata.Id === this._subjectEntityId) {\r\n editScreen.SaveImmediately = false;\r\n screen.On('READY_TO_SAVE', this, (eventArgs) => {\r\n this.LinkCreatedRecord(eventArgs.data);\r\n if (this._searchScreen) {\r\n this._searchScreen.Close();\r\n }\r\n this._disabledCopyButton(false);\r\n });\r\n } else {\r\n if (screen.GetControl(CONTROL_TYPES.LinkList)) {\r\n screen.On('LINK_LIST_DATA_LOADED',\r\n this,\r\n eventArgs => {\r\n let linkListControl = eventArgs.data.Control as LinkList;\r\n let model = _.find(linkListControl.DataModel().Entities(), entity => entity.EntityId === this._subjectEntityId);\r\n if (model) {\r\n linkListControl.AfterSelectRecord([this._subjectRecordId], model);\r\n editScreen.SaveImmediately = true;\r\n } else {\r\n editScreen.SaveImmediately = false;\r\n }\r\n });\r\n } else {\r\n editScreen.SaveImmediately = false;\r\n }\r\n\r\n screen.On('READY_TO_SAVE', this, eventArgs => this.LinkCreatedRecord(eventArgs.data));\r\n\r\n screen.On('RECORD_SAVED',\r\n this,\r\n () => {\r\n this.LoadData(false);\r\n });\r\n }\r\n screen.ShowInModal();\r\n });\r\n } else {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n }\r\n }\r\n\r\n private LinkCreatedRecord(record: DataModel, isSubjectChild?: boolean) {\r\n const gridSubject = this.GetGridSubject();\r\n\r\n if (gridSubject) {\r\n const linkRecordModel = isSubjectChild === true\r\n ? {\r\n MainTableId: gridSubject.Entity.Metadata.Id,\r\n LinkedTableId: this._subjectEntityId,\r\n LinkedRecordId: this._subjectRecordId\r\n }\r\n : {\r\n MainTableId: this._subjectEntityId,\r\n MainRecordId: this._subjectRecordId,\r\n LinkedTableId: gridSubject.Entity.Metadata.Id\r\n };\r\n\r\n const addAndLinkRecordModel: INewLinkedRecord = {\r\n InsertOrUpdateRecordModel: record,\r\n LinkRecordModel: linkRecordModel\r\n };\r\n\r\n BlockUI.Block();\r\n\r\n RecordLinker.AddAndLinkRecord(addAndLinkRecordModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n\r\n return;\r\n }\r\n\r\n notifier.Success(result.OperationMessage);\r\n this.LoadData(false);\r\n\r\n this.One('DATA_LOADED', this, (eventArgs) => {\r\n let typeId = this.GetForm().GetScreen().GetTableTypeId();\r\n this.UpdateLinkRecordById(gridSubject.Entity.Metadata.Id, result.ResultObject.RecordId, typeId, result.ResultObject.Kseq);\r\n });\r\n });\r\n }\r\n }\r\n\r\n private LinkSubGridCreatedRecord(record: DataModel, mainEntityId: number, mainRecordId: number, relatedEntityId: number) {\r\n const addAndLinkRecordModel: INewLinkedRecord = {\r\n InsertOrUpdateRecordModel: record,\r\n LinkRecordModel: {\r\n MainTableId: mainEntityId,\r\n MainRecordId: mainRecordId,\r\n LinkedTableId: relatedEntityId\r\n }\r\n };\r\n\r\n BlockUI.Block();\r\n\r\n RecordLinker.AddAndLinkRecord(addAndLinkRecordModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n } else {\r\n\r\n notifier.Success(result.OperationMessage);\r\n this.LoadData(false);\r\n\r\n this.One('DATA_LOADED', this, () => {\r\n let typeId = this.GetForm().GetScreen().GetTableTypeId();\r\n\r\n UserVarsManager.Instance.AddRecent(relatedEntityId, result.ResultObject.RecordId, typeId);\r\n this.UpdateLinkRecordById(relatedEntityId, result.ResultObject.RecordId, typeId, result.ResultObject.Kseq);\r\n });\r\n }\r\n });\r\n }\r\n\r\n get IsEditAll(): boolean {\r\n return this._baseGrid.IsSubEntity && this.GeneralProperties.GetPropertyValue(PROPERTIES.EDIT_ALL);\r\n }\r\n\r\n FilterByTags(selectedTags: any) {\r\n this._selectedTags = selectedTags;\r\n this.LoadData(false);\r\n }\r\n\r\n GetRecordIds(): Array<number> {\r\n return this._baseGrid.GetRecordIds();\r\n }\r\n\r\n\r\n GetAllRecordKeys() {\r\n return this._baseGrid.GetAllRecordKeys();\r\n }\r\n\r\n GetSelectRecords(): Array<GridRow> {\r\n return this._baseGrid.GetSelectRecords();\r\n }\r\n\r\n Serialize(): Array<GridRowDataModel> {\r\n return this._baseGrid.SerializeRows();\r\n }\r\n\r\n SerializeLinkEditorData() {\r\n return this._baseGrid.SerializeLinkEditorData();\r\n }\r\n\r\n private UpdateLinkRecordById(\r\n relatedEntityId: number,\r\n relatedRecordId: number,\r\n relatedRecordTypeId: number,\r\n sequence?: number,\r\n mainEntityId?: number,\r\n mainRecordId?: number\r\n ) {\r\n let seq = !!sequence ? sequence : 0;\r\n\r\n if (this._isLinkEditorEnabled) {\r\n this.UpdateLinkRecord(relatedEntityId, relatedRecordId, relatedRecordTypeId, seq, 0, mainEntityId, mainRecordId, null, true);\r\n } else if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n }\r\n }\r\n\r\n FormatControlName(control: ControlModel) {\r\n let translatedName = _.find(control.NameTranslations, (translation) => translation.Selected);\r\n if (translatedName && translatedName.Translation !== null && translatedName.Translation !== '') {\r\n return translatedName.Translation;\r\n } else {\r\n return !!control.Label ? control.Label : control.Name;\r\n }\r\n }\r\n\r\n FormatFieldName(field: AttachedFieldModel) {\r\n let entityName: KnockoutObservable<string> = ko.observable(null);\r\n let fieldName: KnockoutObservable<string> = ko.observable(null);\r\n\r\n entityName(field.EntityNameTranslation || field.EntityName);\r\n fieldName(field.FieldNameTranslation || field.Name);\r\n\r\n return `${entityName()}.${fieldName()}`;\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this._baseGrid && this._baseGrid.HasEditRows()) {\r\n this._errorMessage('Please save record');\r\n this._isValid(false);\r\n } else {\r\n this._errorMessage('');\r\n this._isValid(true);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n SaveEditRows() {\r\n this._baseGrid.SaveEditRows();\r\n }\r\n\r\n ReleaseLockRows() {\r\n this._baseGrid.ReleaseLockRows();\r\n }\r\n\r\n private ExportData(destination: string) {\r\n const recordId = this.GetForm().GetScreen().GetRecordId();\r\n\r\n const exportParams: IExportDataRequestModel = {\r\n Query: this._queryExpression,\r\n Destination: destination,\r\n ViewMode: this._viewMode,\r\n FilterByOwners: this._filterByOwners,\r\n RecordOwners: this._selectedUsers,\r\n ShowPlanned: this._showPlanned,\r\n RecordId: recordId,\r\n ShowRetired: this._showRetiredRecords\r\n };\r\n\r\n BlockUI.Block();\r\n\r\n GridStore.ExportData(exportParams)\r\n .always(() => BlockUI.Unblock())\r\n .then((fileName: string) => FileDownloader.DownloadFile(fileName))\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n TogglePriorities(state) {\r\n const subjectEntityId = this.GetForm() && this.GetForm().GetScreen().GetEntityId();\r\n const gridSubjectEntityId = this._viewMode === ViewModes.ListView ? 0 : this._model().EntityId;\r\n !MobileChecker.IsMobile() && this._userVarsManager.SetGridPriority(this._subjectEntityId ? this._subjectEntityId : subjectEntityId, gridSubjectEntityId, state);\r\n this._isPrioritiesDisabled = state;\r\n this.LoadData(false);\r\n }\r\n\r\n BulkEdit() {\r\n this._baseGrid.ShowBulkEditor();\r\n }\r\n\r\n private ListenForWrapperResize() {\r\n const gridContainerWrapper = this._el.querySelector<HTMLDivElement>('.grid-relative-container');\r\n const resizeObserver = new ResizeObserver(() => {\r\n $(gridContainerWrapper)\r\n .find('.flex-grid-nested-table')\r\n .each((index, element) => {\r\n $(element).width(\r\n $(gridContainerWrapper).width() - $(element).parents('.flex-grid-nested-table').length * 6 - 14\r\n );\r\n });\r\n });\r\n resizeObserver.observe(gridContainerWrapper);\r\n }\r\n\r\n GetInlineControls() {\r\n var result = [];\r\n _.each(this._subControls(), (subControl) => {\r\n if (subControl.GetType() === CONTROL_TYPES.GenericButton || subControl.GetType() === CONTROL_TYPES.ButtonTemplate || subControl.GetType() === CONTROL_TYPES.ButtonPlan ) {\r\n var control = subControl as BaseControl;\r\n\r\n if(subControl.GetType() === CONTROL_TYPES.ButtonPlan){\r\n result.push(subControl.Clone());\r\n }else{\r\n let position = control.GeneralProperties.GetPropertyValue('Position');\r\n \r\n if (position && position.Value === 'Row') {\r\n if(subControl.GetType() === CONTROL_TYPES.ButtonTemplate){\r\n result.push(subControl);\r\n }else{\r\n result.push(subControl.Clone());\r\n } \r\n }\r\n }\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n GetToolbarControls() {\r\n var result = [];\r\n _.each(this._subControls(), (subControl) => {\r\n if (subControl.GetType() === CONTROL_TYPES.GenericButton || subControl.GetType() === CONTROL_TYPES.ButtonTemplate) {\r\n var control = subControl as BaseControl;\r\n let position = control.GeneralProperties.GetPropertyValue('Position'); \r\n\r\n if (position && position.Value === 'Menu') {\r\n if(subControl.GetType() === CONTROL_TYPES.ButtonTemplate){\r\n result.push(subControl);\r\n }else{\r\n result.push(subControl.Clone());\r\n } \r\n }\r\n }\r\n\r\n if (subControl.GetType() === CONTROL_TYPES.Basket || subControl.GetType() === CONTROL_TYPES.SpimCopy || subControl.GetType() === CONTROL_TYPES.ButtonCopy) {\r\n result.push(subControl);\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n SetQuery(query: QueryExpressionModel) {\r\n this._queryExpression = query;\r\n }\r\n\r\n get BaseGrid(): BaseGrid {\r\n return this._baseGrid;\r\n }\r\n\r\n Dispose() {\r\n if (this._searchScreen) {\r\n this._searchScreen.Close();\r\n }\r\n }\r\n\r\n get HasData(): boolean {\r\n return this._hasData;\r\n }\r\n\r\n get Paginator(): Paginator {\r\n return this._toolbar.Paginator();\r\n }\r\n\r\n get TotalRecords(): number{\r\n return this._toolbar.Paginator().TotalRecords + this._baseGrid.NewRows; \r\n }\r\n\r\n ShouldShowBottomPagination() {\r\n return this.ScreenType === ScreenTypes[ScreenTypes.ListScreen]\r\n || this.ScreenType === ScreenTypes[ScreenTypes.SpecialScreen]\r\n || this.ScreenType === ScreenTypes[ScreenTypes.Dashboard];\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"FormDesignerView\\\"> <fieldset class=\\\"group-control grid parent-control\\\"> <legend class=\\\"group-control-label\\\"> <span> <!-- ko with: Model --> <!--ko text: $parent.FormatControlName($data) --><!-- /ko --> <!-- /ko --> </span> </legend> <div class=\\\"edit-grid-root dropfield-container group-elements\\\"> <!-- ko if: !_designFields().length --> <div class=\\\"group-control-placeholder\\\"><!--ko text: _labels.FIELDS --><!-- /ko --></div> <!-- /ko --> <div data-bind=\\\"dragula: { data: DesignFields,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t group: 'ToolBarToDesigner',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t afterDrop: $root.AfterDropFieldIntoGrid.bind($root, $data) }\\\" class=\\\"tab-drop-container\\\"> <div class=\\\"alert alert-warning draggable-field position-r\\\" data-bind=\\\"css: { 'relatedField': $data.RelatedField, 'subTableField': $data.SubTableField}\\\"> <div data-bind=\\\"click: $root.RemoveField.bind($root, $data, $parent), preventBubble: ['click']\\\" class=\\\"close-wrapper\\\"> <span class=\\\"close remove-control\\\" data-bind=\\\"attr: { title: $parent._labels.REMOVE_CONTROL }\\\"> <svg viewBox=\\\"0 0 24 24\\\" style=\\\"\\\"> <path d=\\\"M22.2,4c0,0,0.5,0.6,0,1.1l-6.8,6.8l6.9,6.9c0.5,0.5,0,1.1,0,1.1L20,22.3c0,0-0.6,0.5-1.1,0L12,15.4l-6.9,6.9c-0.5,0.5-1.1,0-1.1,0L1.7,20c0,0-0.5-0.6,0-1.1L8.6,12L1.7,5.1C1.2,4.6,1.7,4,1.7,4L4,1.7c0,0,0.6-0.5,1.1,0L12,8.5l6.8-6.8c0.5-0.5,1.1,0,1.1,0L22.2,4z\\\"></path> </svg> </span> </div> <span class=\\\"format-field-name\\\"> <!--ko text: $parent.FormatFieldName($data) --><!-- /ko --> </span> </div> </div> </div> <div class=\\\"edit-grid-root dropfield-container group-elements\\\"> <!-- ko if: !_subControls().length --> <div class=\\\"group-control-placeholder\\\"><!--ko text: _labels.CONTROLS --><!-- /ko --></div> <!-- /ko --> <div data-bind=\\\"dragula: { data: _subControls,\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t group: 'ToolBarToDesigner',\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t afterDrop: $root.AfterDropControl.bind($root) }\\\" subControls class=\\\"tab-drop-container\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> </div> </fieldset> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._loadInProgres, css: {'has-error': !$data._isValid()}\\\" class=\\\"row-no-margin atesting-grid-container\\\"> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}, attr: { title: $data._errorMessage }\\\" class=\\\"fa fa-warning control-tooltip\\\"></i> <!-- ko with: _toolbar --> <div data-bind=\\\"attr: {id: 'control-' + $parent._guid}\\\" class=\\\"toolbar-wrapper\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _baseGrid --> <div class=\\\"grid-container-wrapper\\\" data-bind=\\\"visible: _isReady\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-th\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","import {deserialize, deserializeAs, serialize} from 'libs/cerialize';\r\nimport {FieldMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\n\r\nexport class EntityMetadataModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.Fields = [];\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tShortName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tType: string;\r\n\r\n\t@deserialize\r\n\tIsView: boolean;\r\n\r\n\t@deserialize\r\n\tLifestatus: string;\r\n\r\n\t@deserializeAs(FieldMetadataModel)\r\n\tFields: Array<FieldMetadataModel>;\r\n}","import { deserialize, deserializeAs, serialize } from 'libs/cerialize';\r\n\r\nexport function extractLookupValFieldMetadata(fieldMetadata: FieldMetadataModel) {\r\n\treturn (\r\n\t\tfieldMetadata.LookupTable &&\r\n\t\tfieldMetadata.LookupTable.Fields.find(lookupTableField => lookupTableField.Id === fieldMetadata.ValFieldId)\r\n\t);\r\n}\r\n\r\nexport class FieldMetadataModel {\r\n\tconstructor(){\r\n\t\tthis.FormatName = '';\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tType: string;\r\n\r\n\t@deserialize\r\n\tFormatName: string;\r\n\r\n\t@deserialize\r\n\tAllowCustomValue: boolean;\r\n\r\n\t@deserialize\r\n\tAllowCreatingRecords: boolean;\r\n\r\n\t@deserialize\r\n\tIsVirtual: boolean;\r\n\r\n\t@deserialize\r\n\tIsSystem: boolean;\r\n\r\n\t@deserialize\r\n\tIsReadOnly: boolean;\r\n\r\n\t@deserialize\r\n\tIsPrimaryKey: boolean;\r\n\r\n\t@deserialize\r\n\tIsRequired: boolean;\r\n\r\n\t@deserialize\r\n\tAllowInsert: boolean;\r\n\r\n\t@deserialize\r\n\tValTableId: number;\r\n\r\n\t@deserialize\r\n\tValTableName: string;\r\n\r\n\t@deserialize\r\n\tValTableType: string;\r\n\r\n\t@deserialize\r\n\tSize: number;\r\n\r\n\t@deserialize\r\n\tIsClustered: boolean;\r\n\r\n\t@deserialize\r\n\tIsCustom: boolean;\r\n\r\n\t@deserialize\r\n ValFieldId: number;\r\n\r\n\t@deserialize\r\n DependsOn: number;\r\n\r\n\t@deserialize\r\n FilledById: number;\r\n\r\n\t@deserialize\r\n LookupTable: any;\r\n\r\n @deserialize\r\n Lifestatus: number;\r\n\r\n @deserialize\r\n LifestatusName: string;\r\n\r\n\t@deserialize\r\n HyperlinkEntityId: number;\r\n\r\n\t@deserialize\r\n HasSortDescription: boolean;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {FieldMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport {EntityMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport {ReferenceModel} from \"Core/ScreenManager/Models/ReferenceModel\";\r\nimport {IconModel} from \"../../../BaseControl/Models/IconModel\";\r\nimport {FeatureTypes} from \"../../../../Common/Enums/FeatureTypes\";\r\n\r\nexport class RecordKey {\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n FieldId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n QueryEntityGuid: string;\r\n}\r\n\r\nexport interface IRecordModel {\r\n EntityId: number;\r\n RecordId: number;\r\n}\r\n\r\nexport class TranslationModel {\r\n @deserialize\r\n LanguageId: number;\r\n\r\n @deserialize\r\n Value: string;\r\n}\r\n\r\nexport class CurrencyModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n IsoCode: string;\r\n\r\n @deserializeAs(IconModel)\r\n Icon: IconModel;\r\n}\r\n\r\nexport class CurrencyValueModel {\r\n @deserializeAs(CurrencyModel)\r\n Currency: CurrencyModel;\r\n\r\n @deserialize\r\n RateDate: string;\r\n\r\n @deserialize\r\n Value: number;\r\n}\r\n\r\nexport class ConvertedCurrencyModel {\r\n\r\n @deserializeAs(CurrencyValueModel)\r\n Origin: CurrencyValueModel;\r\n\r\n @deserializeAs(CurrencyValueModel)\r\n Converted: CurrencyValueModel;\r\n}\r\n\r\nexport class DocumentValueModel {\r\n @deserialize\r\n IsEnableSwitchVersion: boolean;\r\n}\r\n\r\nexport class SpimValueModel {\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n FeatureType: string = null;\r\n\r\n @deserialize\r\n AlphaNumericValue: number = null;\r\n\r\n @deserialize\r\n AlphaNumericDisplayValue: string = null;\r\n\r\n @deserialize\r\n NumericValue: number = null;\r\n\r\n @deserialize\r\n LogicalValue: boolean = null;\r\n\r\n @deserialize\r\n RangeLow: number = null;\r\n\r\n @deserialize\r\n RangeHigh: number = null;\r\n\r\n get IsNumeric() {\r\n return this.FeatureType === FeatureTypes.Numeric;\r\n }\r\n\r\n get IsAlphaNumeric() {\r\n return this.FeatureType === FeatureTypes.AlphaNumeric;\r\n }\r\n\r\n get IsLogic() {\r\n return this.FeatureType === FeatureTypes.Logic;\r\n }\r\n\r\n get IsRange() {\r\n return this.FeatureType === FeatureTypes.Range;\r\n }\r\n\r\n get FeatureTypeIsSet() {\r\n return !!this.FeatureType;\r\n }\r\n}\r\n\r\nexport class GridCellValueModel {\r\n\r\n constructor() {\r\n this.Details = [];\r\n this.CrossWrapped = [];\r\n this.RecordKeys = [];\r\n }\r\n\r\n @deserialize\r\n HasDescription: boolean;\r\n\r\n @deserializeAs(ConvertedCurrencyModel)\r\n Currency: ConvertedCurrencyModel;\r\n\r\n @deserializeAs(SpimValueModel)\r\n Spim: SpimValueModel;\r\n\r\n @deserializeAs(DocumentValueModel)\r\n Document: DocumentValueModel;\r\n\r\n @deserialize\r\n Value: string;\r\n\r\n @deserialize\r\n Values: any;\r\n\r\n @deserialize\r\n DisplayValue: string;\r\n\r\n @deserializeAs('DisplayValue')\r\n OriginalDisplayValue: string;\r\n\r\n TranslatedValue: string;\r\n\r\n @deserializeAs(RecordKey)\r\n RecordKeys: Array<RecordKey>;\r\n\r\n @deserializeAs(GridCellValueModel)\r\n Details: Array<GridCellValueModel>;\r\n\r\n @deserializeAs(GridCellValueModel)\r\n CrossWrapped: Array<GridCellValueModel>;\r\n\r\n @deserializeAs(ReferenceModel)\r\n Reference: ReferenceModel;\r\n\r\n @deserialize\r\n IsHyperLink: boolean;\r\n\r\n @deserialize\r\n RecordTypeId: number;\r\n\r\n @deserialize\r\n IsWrapped: boolean;\r\n\r\n @deserialize\r\n WrapGroup: boolean;\r\n\r\n @deserialize\r\n IsSortDescription: boolean;\r\n\r\n @deserialize\r\n IsGroup: boolean;\r\n\r\n @deserialize\r\n IsEnableEdit: boolean;\r\n\r\n @deserialize\r\n QueryColumnGuid: string;\r\n\r\n @deserialize\r\n DisplayPriority: number;\r\n\r\n @deserialize\r\n IsEnableMail: boolean;\r\n\r\n @deserialize\r\n IsCrossValue: boolean;\r\n\r\n @deserialize\r\n IsCrossRow: boolean;\r\n\r\n MaxRowHeight: string;\r\n\r\n FieldMetadata: FieldMetadataModel;\r\n\r\n EntityMetadata: EntityMetadataModel;\r\n\r\n @deserialize\r\n Type: string;\r\n\r\n @deserialize\r\n Flags: number;\r\n\r\n @deserializeAs(TranslationModel)\r\n Translations: TranslationModel[];\r\n\r\n @deserializeAs(IconModel)\r\n Icon: IconModel;\r\n\r\n width?: any;\r\n\r\n GetRecordIds(): IRecordModel {\r\n if (this.RecordKeys && this.RecordKeys[0]) {\r\n return {\r\n EntityId: this.RecordKeys[0].EntityId,\r\n RecordId: this.RecordKeys[0].RecordId\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n @deserialize\r\n RelationType: RelationTypeModel;\r\n\r\n @deserialize\r\n HyperlinkRecordId: number;\r\n\r\n SortDirection: number;\r\n}\r\n\r\nexport interface RelationTypeModel {\r\n Id: number;\r\n Name: string;\r\n HasNext: boolean;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {FieldMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport {EntityMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport {SortOrder} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\n\r\nexport class GridColumnModel {\r\n\tconstructor() {\r\n\t\tthis.SortDirection = Number(SortOrder.Both);\r\n\t}\r\n\r\n\t@deserialize\r\n\tGroupTitle: string;\r\n\r\n\t@deserialize\r\n\tTitle: string;\r\n\r\n\t@deserialize\r\n\tAlias: string;\r\n\r\n\t@deserialize\r\n\tIsWrapped: boolean;\r\n\r\n\t@deserialize\r\n\tIsSortDescription: boolean\r\n\r\n\t@deserialize\r\n\tIsGroup: boolean;\r\n\r\n\t@deserialize\r\n\tIsEnableEdit: boolean;\r\n\r\n\t@deserialize\r\n\tDisplayPriority: number;\r\n\r\n\t@deserialize\r\n\tDisplayOrder: number;\r\n\r\n\t@deserialize\r\n\tIsEnableSort: boolean;\r\n\r\n\t@deserialize\r\n\tSortDirection: number;\r\n\r\n\t@deserializeAs(FieldMetadataModel)\r\n\tFieldMetadata: FieldMetadataModel;\r\n\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tEntityMetadata: EntityMetadataModel;\r\n\r\n\t@deserialize\r\n\tQueryColumnGuid: string;\r\n\r\n\twidth?: number; // max text width of column\r\n\r\n\tadditionalWidth: number; // additional width for calculation elements inside header column\r\n\r\n\tstyleWidth: any; // calculated style width based on additionalWidth and width properties\r\n\r\n\t@deserialize\r\n\tIsEnableFastFilter: boolean;\r\n} ","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class GridTotalCellValueModel {\r\n @deserialize\r\n Value: string;\r\n\r\n @deserialize\r\n IsWrapped: boolean;\r\n\r\n @deserialize\r\n QueryColumnGuid: string;\r\n}","import {deserialize, deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {GridTotalCellValueModel} from 'Core/Controls/Grid/Models/GridDataModel/GridTotalCellValueModel';\r\n\r\nexport class GridTotalRowModel {\r\n\r\n\t@deserializeAs(GridTotalCellValueModel)\r\n\tData: Array<GridTotalCellValueModel>;\r\n\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.Data = [];\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class GridCountCellValueModel {\r\n @deserialize\r\n Value: string;\r\n\r\n @deserialize\r\n IsWrapped: boolean;\r\n\r\n @deserialize\r\n QueryColumnGuid: string;\r\n}","import {deserialize, deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {GridCountCellValueModel} from 'Core/Controls/Grid/Models/GridDataModel/GridCountCellValueModel';\r\n\r\nexport class GridCountRowModel {\r\n\r\n\t@deserializeAs(GridCountCellValueModel)\r\n\tData: Array<GridCountCellValueModel>;\r\n\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.Data = [];\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class GridAverageCellValueModel {\r\n @deserialize\r\n Value: string;\r\n\r\n @deserialize\r\n IsWrapped: boolean;\r\n}","import {deserialize, deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {GridAverageCellValueModel} from 'Core/Controls/Grid/Models/GridDataModel/GridAverageCellValueModel';\r\n\r\nexport class GridAverageRowModel {\r\n\r\n\t@deserializeAs(GridAverageCellValueModel)\r\n\tData: Array<GridAverageCellValueModel>;\r\n\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.Data = [];\r\n\t}\r\n}","import {GridRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridRowModel';\r\nimport {GridTotalRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridTotalRowModel';\r\nimport {GridCountRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridCountRowModel';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EntityMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {GridAverageRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridAverageRowModel';\r\nimport { ScreenModel } from '../../../../Models/Screens/ScreenModel';\r\n\r\nexport class GridDataModel {\r\n\t@deserialize\r\n\tTotalRecords: number;\r\n\r\n\t@deserializeAs(GridColumnModel)\r\n\tColumns: Array<GridColumnModel>;\r\n\r\n\t@deserializeAs(GridRowModel)\r\n\tRows: Array<GridRowModel>;\r\n\r\n\t@deserializeAs(GridTotalRowModel)\r\n\tTotalRow: GridTotalRowModel;\r\n\r\n\t@deserializeAs(GridCountRowModel)\r\n\tCountRow: GridCountRowModel;\r\n\r\n\t@deserializeAs(GridAverageRowModel)\r\n\tAverageRow: GridAverageRowModel;\r\n\r\n\t@deserializeAs(GridTotalRowModel)\r\n\tTotalGroupRows: Array<GridTotalRowModel>;\r\n\r\n\t@deserializeAs(GridAverageRowModel)\r\n\tAverageGroupRows: Array<GridAverageRowModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Columns = [];\r\n\t\tthis.Rows = [];\r\n\t\tthis.TotalGroupRows = [];\r\n\t\tthis.AverageGroupRows = [];\r\n\t\tthis.ScreenRows = [];\r\n\t}\r\n\r\n\t@deserializeAs(QueryExpressionModel)\r\n\tQueryExpression: QueryExpressionModel;\r\n\r\n\t@deserialize\r\n\tSubjectRecordId: number;\r\n\r\n\t@deserialize\r\n\tSubjectEntityId: number;\r\n\r\n\t@deserialize\r\n\tIsLinkingAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsAddAndLinkAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsExportDataAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsScanAndLinkAllowed: boolean;\r\n\r\n\t@deserialize\r\n IsLinkEditorEnabled: boolean;\r\n\r\n\t@deserialize\r\n IsLinkJoin: boolean;\r\n\t\r\n @deserialize\r\n IsDirectionCorrect?: boolean;\r\n\r\n @deserialize\r\n HasOneParent: boolean;\r\n\r\n\t@deserialize\r\n\tGridSubjectEntityId: number;\r\n\r\n\t@deserialize\r\n\tGridSubjectEntityType: string;\r\n\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tGridSubjectEntityMetadata: EntityMetadataModel;\r\n\r\n\tGridParentEntityId: number;\r\n\r\n\t@deserialize\r\n\tSubQueryGuid: string;\r\n\r\n\t@deserializeAs(ScreenModel)\r\n\tScreenRows: Array<ScreenModel>;\r\n\r\n} ","import { LifeStatusSimpleModel } from 'Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel';\r\nimport clone from 'clone';\r\n\r\nimport {deserialize, deserializeAs, Deserialize} from 'libs/cerialize';\r\nimport {GridCellValueModel, IRecordModel, RecordKey} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport {RightsModel} from 'Core/ScreenManager/Models/RightsModel';\r\n\r\nexport class GridRowModel {\r\n\r\n constructor() {\r\n this.Data = [];\r\n this.NestedData = [];\r\n this.Rights = new RightsModel();\r\n this.Rights.IsEditingAllowed = true;\r\n this.RecordKeys = [];\r\n this.IsUnlinkCheckboxChecked = false;\r\n this.ProcessCardsLifeStatuses = [];\r\n }\r\n\r\n NestedData: any;\r\n\r\n TypeId?: number;\r\n\r\n @deserialize\r\n KindId?: number;\r\n\r\n @deserializeAs(GridCellValueModel)\r\n Data: Array<GridCellValueModel>;\r\n\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n IsGroup: boolean;\r\n\r\n @deserialize\r\n RecordTypeId: number;\r\n\r\n @deserialize\r\n LifestatusId: number;\r\n\r\n @deserialize\r\n IsStartGroup: boolean;\r\n\r\n @deserialize\r\n IsEndGroup: boolean;\r\n\r\n @deserialize\r\n HideToggleDisableButton: boolean;\r\n\r\n @deserialize\r\n KSeq: number;\r\n\r\n @deserialize\r\n IsRetired: boolean;\r\n\r\n @deserialize\r\n KSeqs: Array<number>;\r\n\r\n @deserialize\r\n GroupGuid: string;\r\n\r\n @deserialize\r\n IsUnlinkCheckboxChecked: boolean;\r\n\r\n static OnDeserialized(instance: GridRowModel, json: any): void {\r\n const gridDataModel = require('Core/Controls/Grid/Models/GridDataModel/GridDataModel').GridDataModel;\r\n instance.NestedData = Deserialize(json.NestedData, gridDataModel);\r\n }\r\n\r\n GetRecordModelIds(): Array<IRecordModel> {\r\n return this.Data.map(model => model.GetRecordIds());\r\n }\r\n\r\n Clone() {\r\n return clone(this);\r\n }\r\n\r\n @deserializeAs(RightsModel)\r\n Rights: RightsModel;\r\n\r\n @deserialize\r\n RelationshipType: number;\r\n\r\n @deserializeAs(RecordKey)\r\n RecordKeys: Array<RecordKey>;\r\n\r\n @deserialize\r\n RowId: string;\r\n\r\n @deserialize\r\n ParentRowId: string;\r\n\r\n @deserializeAs(LifeStatusSimpleModel)\r\n ProcessCardsLifeStatuses: Array<LifeStatusSimpleModel>;;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {EntityMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\n\r\nexport class RelatedEntityMetadataModel {\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tEntityMetadata: EntityMetadataModel;\r\n\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tLinkEntityMetadata: EntityMetadataModel;\r\n}\r\n\r\nexport class RelatedSubEntityMetadataModel {\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tEntityMetadata: EntityMetadataModel;\r\n}\r\n\r\nexport class EntityRelationshipsMetadataModel {\r\n\tconstructor() {\r\n\t\tthis.RelatedEntitiesMetadata = [];\r\n\t\tthis.RelatedSubEntitiesMetadata = [];\r\n\t\tthis.ReferenceEntities = [];\r\n\t\tthis.TablesRelatedToLookup = [];\r\n\t}\r\n\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tEntityMetadata: EntityMetadataModel;\r\n\r\n\t@deserializeAs(RelatedEntityMetadataModel)\r\n\tRelatedEntitiesMetadata: Array<RelatedEntityMetadataModel>;\r\n\r\n\t@deserializeAs(RelatedSubEntityMetadataModel)\r\n\tRelatedSubEntitiesMetadata: Array<RelatedSubEntityMetadataModel>;\r\n\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tReferenceEntities: Array<EntityMetadataModel>;\r\n\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tTablesRelatedToLookup: Array<EntityMetadataModel>;\r\n}","import {deserialize, deserializeAs, serialize} from 'libs/cerialize';\r\n\r\nexport class CanvasPositionModel {\r\n\tconstructor() {\r\n\t\tthis.Top = 0;\r\n\t\tthis.Left = 0;\r\n\t\tthis.ZIndex = 0;\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tTop: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tLeft: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tZIndex: number;\r\n}","import { deserialize, deserializeAs, serialize } from 'libs/cerialize';\r\n\r\nexport class CanvasSizeModel {\r\n\tconstructor() {\r\n\t\tthis.Height = '0';\r\n\t\tthis.Width = '0';\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tHeight: string;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tWidth: string;\r\n}","import { deserialize, serialize } from 'libs/cerialize';\r\n\r\nexport class GenericButtonConfigModel {\r\n @serialize\r\n @deserialize\r\n QueryEntityGuid: string;\r\n\r\n @serialize\r\n @deserialize\r\n EntityId: number;\r\n\r\n @serialize\r\n @deserialize\r\n FieldId: number;\r\n\r\n @serialize\r\n @deserialize\r\n GenericButtonId: number;\r\n}","import { deserialize, deserializeAs, serialize, serializeAs} from 'libs/cerialize';\r\nimport {FieldMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport { Guid } from 'Core/Common/Guid';\r\n\r\nexport class CrossValueSettingsModel {\r\n\tconstructor(partial?: Partial<CrossValueSettingsModel>) {\r\n\t\tif (partial) {\r\n\t\t\tthis.RelationTypeValueId = partial.RelationTypeValueId;\r\n\t\t\tthis.ShowNexRelationButton = partial.ShowNexRelationButton;\r\n\t\t\tthis.ShowEditRelationButton = partial.ShowEditRelationButton;\r\n\t\t}\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tRelationTypeValueId: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tShowNexRelationButton: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tShowEditRelationButton: boolean;\r\n}\r\n\r\nexport class QueryColumnModel {\r\n\r\n\tconstructor(){\r\n\t\tthis.CrossValueSettings = [];\r\n\t\tthis.Guid = Guid.NewGuid();\r\n\t\tthis.DisplayFields = [];\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tQueryEntityGuid: string;\r\n\r\n\t@serializeAs(FieldMetadataModel)\r\n\t@deserializeAs(FieldMetadataModel)\r\n\tMetadata: FieldMetadataModel;\r\n\r\n\t@serializeAs(CrossValueSettingsModel)\r\n\t@deserializeAs(CrossValueSettingsModel)\r\n\tCrossValueSettings: Array<CrossValueSettingsModel>;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tDisplayOrder: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsWrapped: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsGroup: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsAverage: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsTotal: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsCount: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsSubTotal: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tDisplayPriority: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsCrossColumn: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsCrossWrapped: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsCrossRow: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsCrossValue: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tAggregateFunction: string;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tDisplayFields: Array<number>;\r\n}","import * as _ from 'underscore';\r\nimport {deserialize, deserializeAs, serializeAs, serialize} from 'libs/cerialize';\r\nimport {QueryConditionItemModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\n\r\nexport class QueryConditionGroupModel {\r\n\tconstructor() {\r\n\t\tthis.Items = [];\r\n\t\tthis.ConditionGroups = [];\r\n\t\tthis.Operator = 0;\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@serializeAs(QueryConditionItemModel)\r\n\t@deserializeAs(QueryConditionItemModel)\r\n\tItems: Array<QueryConditionItemModel>;\r\n\r\n\t@serializeAs(QueryConditionGroupModel)\r\n\t@deserializeAs(QueryConditionGroupModel)\r\n\tConditionGroups: Array<QueryConditionGroupModel>;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tOperator: number;\r\n\r\n\tget HasAnyConditions(): boolean{\r\n\t\treturn this.Items.length > 0 || this.ConditionGroups.length > 0;\r\n\t}\r\n}","import * as _ from 'underscore';\r\nimport {deserialize, deserializeAs, serializeAs, serialize, Deserialize, GenericDeserialize, Serialize} from 'libs/cerialize';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { ConditionValueTypes } from 'QueryBuilder/Enums';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\n\r\nexport class QueryConditionItemModel {\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tValue: string;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tValueType: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tOperator: number;\r\n\r\n\t@serializeAs(QueryColumnModel)\r\n\t@deserializeAs(QueryColumnModel)\r\n\tColumn: QueryColumnModel;\r\n\r\n\t@serializeAs(QueryColumnModel)\r\n\t@deserializeAs(QueryColumnModel)\r\n\tValueColumn: QueryColumnModel;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tShowParam: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsEnabled: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tSPIMFeatureType: string;\r\n\r\n\tSubQuery: QueryExpressionModel;\r\n\r\n\tpublic static OnSerialized(instance : QueryConditionItemModel, json : any) : void {\r\n\t\tif(instance.ValueType === ConditionValueTypes.QueryBuilder && instance.SubQuery){\r\n\t\t\tlet queryExpressionType = require('Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel').QueryExpressionModel;\r\n\t\t\tjson.Value = JSON.stringify(Serialize(instance.SubQuery, queryExpressionType));\r\n\t\t}\r\n\t}\r\n\r\n\tstatic OnDeserialized(instance: QueryConditionItemModel, json: any): void {\r\n\r\n\t\tif(instance.ValueType === ConditionValueTypes.QueryBuilder){\r\n\t\t\tlet queryExpressionType = require('Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel').QueryExpressionModel;\r\n\t\t\tinstance.SubQuery = instance.Value == '' ? null : Deserialize(JSON.parse(instance.Value), queryExpressionType);\r\n\t\t}\r\n\t\t\r\n }\r\n}","import { deserialize, deserializeAs, serialize, serializeAs } from 'libs/cerialize';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { CanvasPositionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasPositionModel';\r\nimport { UseMainCondition, LinkDirectionCondition } from 'QueryBuilder/Enums';\r\nimport { JoinTypes } from 'QueryBuilder/Enums';\r\nimport { CanvasSizeModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasSizeModel';\r\n\r\nexport class QueryEntityJoinModel {\r\n\tconstructor() {\r\n\t\tthis.Joins = [];\r\n\t\tthis.SubEntityJoins = [];\r\n\t\tthis.LookupEntityJoins = [];\r\n\t\tthis.ReferenceEntityJoins = [];\r\n\t\tthis.ReferenceLookupEntityJoins = [];\r\n\t\tthis.CanvasPosition = new CanvasPositionModel();\r\n\t\tthis.CanvasSize = new CanvasSizeModel();\r\n\t\tthis.JoinType = Number(JoinTypes.LeftJoin);\r\n\t\tthis.UseMain = Number(UseMainCondition.NotUseMain);\r\n\t\tthis.LinkDirection = Number(LinkDirectionCondition.LeftToRight);\r\n\t}\r\n\r\n\t@serializeAs(QueryEntityModel)\r\n\t@deserializeAs(QueryEntityModel)\r\n\tEntity: QueryEntityModel;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tLookupFieldId: number;\r\n\r\n\t@serializeAs(QueryEntityModel)\r\n\t@deserializeAs(QueryEntityModel)\r\n\tLinkEntity: QueryEntityModel;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tReferenceFieldId: number;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsSubQuery: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\t@serializeAs(CanvasPositionModel)\r\n\t@deserializeAs(CanvasPositionModel)\r\n\tCanvasPosition: CanvasPositionModel;\r\n\r\n\t@serializeAs(CanvasSizeModel)\r\n\t@deserializeAs(CanvasSizeModel)\r\n\tCanvasSize: CanvasSizeModel;\r\n\r\n\t@serializeAs(JoinTypes)\r\n\t@deserializeAs(JoinTypes)\r\n\tJoinType: JoinTypes;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tUseMain: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tLinkDirection: number;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tSubEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tLookupEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tReferenceEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tReferenceLookupEntityJoins: Array<QueryEntityJoinModel>;\r\n}","import { deserialize, deserializeAs, serialize, serializeAs } from 'libs/cerialize';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { EntityMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport { CanvasPositionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasPositionModel';\r\nimport { Guid } from 'Core/Common/Guid';\r\n\r\nexport class QueryEntityModel {\r\n\tconstructor() {\r\n\t\tthis.Columns = [];\r\n\t\tthis.CanvasPosition = new CanvasPositionModel();\r\n\t\tthis.Guid = Guid.NewGuid();\r\n\t\tthis.IsIterator = false;\r\n\t\tthis.Index = 0;\r\n\t}\r\n\r\n\t@serializeAs(QueryColumnModel)\r\n\t@deserializeAs(QueryColumnModel)\r\n\tColumns: Array<QueryColumnModel>;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@serializeAs(EntityMetadataModel)\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tMetadata: EntityMetadataModel;\r\n\r\n\t@serializeAs(CanvasPositionModel)\r\n\t@deserializeAs(CanvasPositionModel)\r\n\tCanvasPosition: CanvasPositionModel;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsIterator: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsGridSubject: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIndex: number;\r\n}","import {deserialize, deserializeAs, serializeAs, serialize} from 'libs/cerialize';\r\nimport {QueryEntityModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport {QueryEntityJoinModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { QueryConditionGroupModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport { QuerySortModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QuerySortModel';\r\nimport {GenericButtonConfigModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/GenericButtonConfigModel';\r\n\r\nexport class QueryExpressionModel {\r\n\tconstructor() {\r\n\t\tthis.EntityJoins = [];\r\n\t\tthis.SubEntityJoins = [];\r\n\t\tthis.LookupEntityJoins = [];\r\n\t\tthis.ReferenceEntityJoins = [];\r\n\t\tthis.ReferenceLookupEntityJoins = [];\r\n\t\tthis.IsCrossTable = false;\r\n\t\tthis.Sorts = [];\r\n\t\tthis.GenericButtonConfigs = [];\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tTop: number;\r\n\r\n\t@serializeAs(QueryEntityModel)\r\n\t@deserializeAs(QueryEntityModel)\r\n\tEntity: QueryEntityModel;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tSubEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tLookupEntityJoins: Array<QueryEntityJoinModel>;\r\n\t\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tReferenceLookupEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tReferenceEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryConditionGroupModel)\r\n\t@deserializeAs(QueryConditionGroupModel)\r\n\tCondition: QueryConditionGroupModel;\r\n\r\n\t@serializeAs(QueryConditionGroupModel)\r\n\t@deserializeAs(QueryConditionGroupModel)\r\n\tSpimCondition: QueryConditionGroupModel;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsCrossTable: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tQueryScreenId: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tCardScreenId: number;\r\n\r\n\t@serializeAs(QuerySortModel)\r\n\t@deserializeAs(QuerySortModel)\r\n\tSorts: Array<QuerySortModel>;\r\n\r\n\t@serializeAs(GenericButtonConfigModel)\r\n\t@deserializeAs(GenericButtonConfigModel)\r\n\tGenericButtonConfigs: Array<GenericButtonConfigModel>;\r\n}","import { deserialize, deserializeAs, serializeAs, serialize } from 'libs/cerialize';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\n\r\nexport class QuerySortModel {\r\n\r\n\t@serializeAs(QueryColumnModel)\r\n\t@deserializeAs(QueryColumnModel)\r\n\tColumn: QueryColumnModel;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tSortOrder: number;\r\n}","export class SortModel {\r\n\tOrderColumn: string;\r\n\tOrderColumnGuid: string;\r\n\tSortOrder: number;\r\n}","import * as ko from 'knockout';\r\n\r\nimport {deserialize} from 'libs/cerialize';\r\n\r\nexport class ViewGridModel {\r\n constructor(id: number, name: string) {\r\n this.Id = id;\r\n this.Name = name;\r\n\r\n this.LockedTableView = ko.observable(false);\r\n }\r\n\r\n Init() {\r\n this.LockedTableView(this.Locked);\r\n }\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n IsEditingAllowed: boolean;\r\n\r\n @deserialize\r\n IsDeletingAllowed: boolean;\r\n\r\n @deserialize\r\n Locked: boolean;\r\n\r\n LockedTableView: KnockoutObservable<boolean>;\r\n\r\n Lock() {\r\n this.Locked = true;\r\n this.LockedTableView(true);\r\n }\r\n\r\n Unlock() {\r\n this.Locked = false;\r\n this.LockedTableView(false);\r\n }\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\n\r\n\r\nexport class PivotDetailModel {\r\n\r\n @deserializeAs(GridDataModel)\r\n Data: GridDataModel;\r\n\r\n @deserialize\r\n LeftRecordName: string;\r\n\r\n @deserialize\r\n RightRecordName: string;\r\n\r\n @deserializeAs(IconModel)\r\n LeftEntityIcon: IconModel;\r\n\r\n @deserializeAs(IconModel)\r\n RightEntityIcon: IconModel;\r\n\r\n\r\n @deserialize\r\n RelationType: string;\r\n}","import {deserializeAs} from 'libs/cerialize';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\n\r\nexport class GroupDetailModel {\r\n @deserializeAs(GridDataModel)\r\n Data: GridDataModel;\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {IGetEntityRequestModel} from \"Core/Common/Interfaces/IGetEntityRequestModel\";\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {GridCellValueModel, RecordKey} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {\r\n\tFieldDataModel,\r\n\tGridRowDataModel,\r\n\tRecordKeyModel\r\n} from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateDataModel';\r\nimport {UpdateLifestatusModel} from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateLifestatusModel';\r\nimport {OperationResultModel} from 'Core/Models/OperationResultModel';\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport { FastFilterRequestModel } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport { SortModel } from 'Core/Controls/Grid/Models/SortModel';\r\nimport {IGetFastFilterRequestModel} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport { DataModes } from \"Core/Enums/DataModes\";\r\nimport {QueryColumnModel} from \"../Models/GridDataModel/QueryExpression/QueryColumnModel\";\r\nimport {GridRowModel} from \"../Models/GridDataModel/GridRowModel\";\r\nimport {PivotDetailModel} from \"../Models/PivotDetailModel\";\r\nimport {GroupDetailModel} from \"../Models/GroupDetailModel\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport { IDynamicFieldData } from 'Core/Common/Stores/RecordStore';\r\nimport { IConditionValueDto } from 'Core/Common/Interfaces/IConditionValueDto';\r\n\r\nexport interface IGetGridDataRequestModel {\r\n\tControlId: number;\r\n\tTableViewId: number;\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tSubjectTypeId: number,\r\n\tSubjectKindId: number,\r\n\tSubjectStatusId: number,\r\n\tGridSubjectEntityId?: number;\r\n\tGridSubjectRecordIds?: number[];\r\n\tViewMode: ViewModes;\r\n\tPageNumber: number;\r\n\tRecordsPerPage: number;\r\n\tSort: Array<SortModel>;\r\n\tSearchPhrase: string;\r\n\tFilterByOwners: boolean;\r\n\tRecordOwners: number[];\r\n\tShowPlanned: boolean;\r\n\tSelectedTags?: any;\r\n\tScreenData?: Array<IDynamicFieldData>;\r\n\tFastFilters?: FastFilterRequestModel[];\r\n\tShowRetired?: boolean;\r\n Query?: QueryExpressionModel;\r\n DataMode?: DataModes;\r\n\tSubQueryGuid?: string;\r\n\tParentRowId?: string;\r\n\tRowId?: string;\r\n\tReferenceLookupFieldId?: number;\r\n\tScopedTableId?: number;\r\n\tScopedRecordId?: number;\r\n\r\n\tConditionValues?: Array<IConditionValueDto>;\r\n}\r\n\r\nexport interface IGetDefaultTableView {\r\n\tControlId: number;\r\n\tViewMode: number;\r\n\tSubjectEntityId: number;\r\n}\r\n\r\nexport interface IUnlinkRecordRequestModel {\r\n\tMainEntityId: number;\r\n\tMainRecordId: number;\r\n\tRelatedEntityId: number;\r\n\tRelatedRecordId: number;\r\n\tKSeq: number;\r\n\tRelationshipType?: number;\r\n}\r\n\r\nexport interface IUnlinkMultipleRecordsRequestModel {\r\n\tRows: Array<IUnlinkRecordRequestModel>\r\n}\r\n\r\nexport interface IExportDataRequestModel {\r\n\tQuery: QueryExpressionModel;\r\n\tDestination: string;\r\n\tViewMode: ViewModes;\r\n\tFilterByOwners: boolean;\r\n\tRecordOwners: number[];\r\n\tShowPlanned: boolean;\r\n\tRecordId?: number;\r\n\tShowRetired: boolean;\r\n}\r\n\r\nexport interface ISwitchToNextStatus {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tNextStatusId: number;\r\n}\r\n\r\nexport interface IUpdateRowsRuestModel {\r\n\tRows: Array<GridRowDataModel>\r\n}\r\n\r\nexport interface IUpdateSortRequestModel {\r\n\tUpCell: FieldDataModel,\r\n\tDownCell: FieldDataModel\r\n}\r\n\r\nexport interface IGetMemoValueRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordKeys: Array<RecordKeyModel>;\r\n}\r\n\r\nexport interface IGetImageValueRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordKeys: Array<RecordKeyModel>;\r\n}\r\n\r\nexport interface IGetDataByClusteredFieldRequestModel {\r\n\tSubjectEntityId: number;\r\n\tFieldId: number;\r\n\tRecordKeys: Array<Array<RecordKeyModel>>;\r\n\tDisplayFields: Array<number>;\r\n}\r\n\r\nexport interface INewRecordRequestModel {\r\n\tEntityId: number;\r\n\tLinkTableId?: number;\r\n\tTypeId: number;\r\n\tParentRecordId: number;\r\n\tFields: Array<QueryColumnModel>;\r\n}\r\n\r\nexport interface IGetCrossTableDetailRequestModel {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tRelatedEntityId: number;\r\n\tRelatedRecordId: number;\r\n\tKSeqs: Array<number>;\r\n\tDisplayFields: Array<number>;\r\n}\r\n\r\ninterface IGetGroupDetailRequestModel {\r\n\tEntityId: number;\r\n\tRecordIds: Array<number>;\r\n}\r\n\r\nexport interface IsRecordValidDto {\r\n\tTableId: number;\r\n\tRecordId: number;\r\n}\r\n\r\ninterface ISearchByBarcodeRequestModel {\r\n\tEntityId: number;\r\n\tBarcode: string;\r\n}\r\n\r\nexport class GridStore {\r\n\r\n\tstatic NewRecord(params: INewRecordRequestModel): P.Promise<GridRowModel>{\r\n\t\tlet deferredResult = P.defer<GridRowModel>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.NEW_RECORD,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(<GridRowModel>Deserialize(data.ResultObject, GridRowModel));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetData(params: IGetGridDataRequestModel): P.Promise<GridDataModel> {\r\n\t\tvar deferredResult = P.defer<GridDataModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_GRID_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tconst message = \"<span class=\\\"notification-errors-list\\\">\" + data.ErrorMessage + \"</span>\";\r\n\r\n\t\t\t\t\tdeferredResult.reject({ message: message});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize(data.ResultObject, GridDataModel));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetDataByClusteredField(params: IGetDataByClusteredFieldRequestModel): P.Promise<PivotDetailModel> {\r\n\t\tlet deferredResult = P.defer<PivotDetailModel>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/GetDataByClusteredField',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize(data.ResultObject, PivotDetailModel));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetCrossTableDetail(params: IGetCrossTableDetailRequestModel): P.Promise<PivotDetailModel> {\r\n\t\tlet deferredResult = P.defer<PivotDetailModel>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/GetCrossTableDetail',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize(data.ResultObject, PivotDetailModel));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetGroupDetail(params: IGetGroupDetailRequestModel): P.Promise<GroupDetailModel> {\r\n\t\tconst deferredResult = P.defer<GroupDetailModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/GridApi/GetGroupDetail',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize(data.ResultObject, GroupDetailModel));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateRow(params: GridRowDataModel): P.Promise<OperationResultModel> {\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.UPDATE_GRID_ROW_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<OperationResultModel>Deserialize(data, OperationResultModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateRows(params: IUpdateRowsRuestModel): P.Promise<OperationResultModel> {\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.UPDATE_GRID_ROWS_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<OperationResultModel>Deserialize(data, OperationResultModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateRowLifestatus(params: UpdateLifestatusModel): P.Promise<OperationResultModel> {\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.UPDATE_GRID_ROW_LIFESTATUS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<OperationResultModel>Deserialize(data, OperationResultModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeleteRow(params: GridRowDataModel): P.Promise<OperationResultModel> {\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.DELETE_GRID_ROW_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<OperationResultModel>Deserialize(data, OperationResultModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UnlinkMultipleRecords(params: IUnlinkMultipleRecordsRequestModel): P.Promise<OperationResultModel> {\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.UNLINK_GRID_ROWS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<OperationResultModel>Deserialize(data, OperationResultModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UnlinkRecord(params: IUnlinkRecordRequestModel): P.Promise<OperationResultModel> {\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.UNLINK_GRID_ROW,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<OperationResultModel>Deserialize(data, OperationResultModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetDefaultTableView(params: IGetDefaultTableView): P.Promise<QueryExpressionModel> {\r\n\t\tvar deferredResult = P.defer<QueryExpressionModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_DEFAULT_TABLE_VIEW,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<QueryExpressionModel>Deserialize(data.ResultObject, QueryExpressionModel));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetDefaultTableViewMetaData(screenType: ScreenTypes): P.Promise<IGetEntityRequestModel> {\r\n\t\tvar deferredResult = P.defer<IGetEntityRequestModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_DEFAULT_TABLE_VIEW_METADATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: {screenType: screenType}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic ExportData(params: IExportDataRequestModel) {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.EXPORT_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({message: result.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferred.reject(error));\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic LinkWithNextRelationType(params: RecordKey[]): any {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.LINK_WITH_NEXT_RELATION,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: {RecordKeys: params}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({message: result.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetFastFilterData(params: IGetFastFilterRequestModel): any {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_FAST_FILTER_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({message: result.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetFastFilterTimeData(params: IGetFastFilterRequestModel): any {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_FAST_FILTER_TIME_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetFastFilterDateData(params: IGetFastFilterRequestModel): any {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_FAST_FILTER_DATE_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({message: result.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetFastFilterDateTimeData(params: IGetFastFilterRequestModel): any {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_FAST_FILTER_DATETIME_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic UpdateSort(params: IUpdateSortRequestModel): P.Promise<any>{\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.UPDATE_SORT,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetMemoValue(params: IGetMemoValueRequestModel): P.Promise<GridCellValueModel>{\r\n\t\tconst deferred = P.defer<GridCellValueModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/GetMemoValue',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(<GridCellValueModel>Deserialize(result.ResultObject, GridCellValueModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetImageValue(params: IGetImageValueRequestModel): P.Promise<GridCellValueModel>{\r\n\t\tconst defered = P.defer<GridCellValueModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/GetImageValue',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n defered.resolve(Deserialize(result, GridCellValueModel));\r\n }).fail(data => { defered.reject({ message: JSON.parse(data.message).Message }) });\r\n\r\n\r\n\t\treturn defered.promise();\r\n\t}\r\n\r\n\tstatic IsRecordValid(params: IsRecordValidDto): P.Promise<boolean>{\r\n\t\tconst defered = P.defer<boolean>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/IsRecordValid',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n defered.resolve(Deserialize(result, Boolean));\r\n }).fail(data => { defered.reject({ message: JSON.parse(data.message).Message }) });\r\n\r\n\r\n\t\treturn defered.promise();\r\n\t}\r\n\r\n\tstatic SearchByBarcode(params: ISearchByBarcodeRequestModel) {\r\n\t\tconst deferred = P.defer<number>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/SearchByBarcode',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result: number) => {\r\n\t\t\t\tdeferred.resolve(result);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject({\r\n\t\t\t\t\tmessage: error.status === 404 ? NOTIFICATIONS.RECORD_NOT_FOUND : JSON.parse(error.message).Message\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic SwitchToNextStatus(params: ISwitchToNextStatus) {\r\n\t\tconst deferred = P.defer<number>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/SwitchToNextStatus',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result: number) => {\r\n\t\t\t\tdeferred.resolve(result);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject({\r\n\t\t\t\t\tmessage: error.status === 404 ? NOTIFICATIONS.RECORD_NOT_FOUND : JSON.parse(error.message).Message\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n}","import { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { ViewGridModel } from 'Core/Controls/Grid/Models/ViewGridModel';\r\n\r\nexport class ViewGridResponseModel { \r\n\t@deserializeAs(ViewGridModel)\r\n\tGridViews: Array<ViewGridModel>;\r\n\r\n\t@deserialize\r\n\tIsAddingRecordAllowed : boolean;\r\n}","\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {ViewGridResponseModel} from \"Core/Controls/Grid/Models/ViewGridResponseModel\";\r\n\r\nexport interface IGetGridViewListDto {\r\n\tSubjectEntityId: number;\r\n\tControlId: number;\r\n\tViewMode: number;\r\n\tScreenType: number;\r\n};\r\n\r\nexport interface IGetLinkEditorGridViewListDto {\r\n\tTableId: number;\r\n\tTargetTableId: number;\r\n\tLookupFieldId: number;\r\n}\r\n\r\nexport class ViewGridListStore {\r\n\tstatic GetGridViewList(params: IGetGridViewListDto): P.Promise<ViewGridResponseModel> {\r\n\r\n\t\tvar deferredResult = P.defer<ViewGridResponseModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_VIEW_GRID_LIST,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<ViewGridResponseModel>Deserialize(data, ViewGridResponseModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetInvoicingGridViewList(entityId: number): P.Promise<ViewGridResponseModel> {\r\n\r\n\t\tvar deferredResult = P.defer<ViewGridResponseModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_INVOICING_GRID_VIEW_LIST,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: {EntityId: entityId}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<ViewGridResponseModel>Deserialize(data, ViewGridResponseModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetLinkEditorGridViewList(params: IGetLinkEditorGridViewListDto): P.Promise<ViewGridResponseModel> {\r\n\r\n\t\tvar deferredResult = P.defer<ViewGridResponseModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_LINK_EDITOR_VIEW_GRID_LIST,\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<ViewGridResponseModel>Deserialize(data, ViewGridResponseModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n} ","export const EVENTS = {\r\n\tNEW_TABLE_VIEW: 'NEW_TABLE_VIEW',\r\n\tEDIT_TABLE_VIEW: 'EDIT_TABLE_VIEW',\r\n\tCOPY_TABLE_VIEW: 'COPY_TABLE_VIEW',\r\n\tDELETE_TABLE_VIEW: 'DELETE_TABLE_VIEW',\r\n\tLOCK_TABLE_VIEW: 'LOCK_TABLE_VIEW',\r\n\tUNLOCK_TABLE_VIEW: 'UNLOCK_TABLE_VIEW',\r\n\tLINK_RECORD: 'LINK_RECORD',\r\n\tUNLINK_MULTIPLE_RECORDS: 'UNLINK_MULTIPLE_RECORDS',\r\n\tCONFIRM_MULTIPLE_UNLINK: 'CONFIRM_MULTIPLE_UNLINK',\r\n\tCANCEL_MULTIPLE_UNLINK: 'CANCEL_MULTIPLE_UNLINK',\r\n\tLINK_PARENT_RECORD: 'LINK_PARENT_RECORD',\r\n\tCOPY_LATEST_RECORD: 'COPY_LATEST_RECORD',\r\n\tADD_QUERY: 'ADD_QUERY',\r\n\tADD_AND_LINK_RECORD: 'ADD_AND_LINK_RECORD',\r\n\tSCAN_AND_LINK_RECORD: 'SCAN_AND_LINK_RECORD',\r\n\tSELECT_TABLE_VIEW: 'SELECT_TABLE_VIEW',\r\n\tSEARCH_BY_PHRASE: 'SEARCH_BY_PHRASE',\r\n\tNEW_RECORD: 'NEW_RECORD',\r\n\tEXPORT_DATA: 'EXPORT_DATA',\r\n\tTOGGLE_PRIORITIES: 'TOGGLE_PRIORITIES',\r\n\tBULK_EDIT: 'BULK_EDIT',\r\n\tRESET_FILTER: 'RESET_FILTER',\r\n\tTOGGLE_RETIRED: 'TOGGLE_RETIRED',\r\n\tEDIT_ALL: 'EDIT_ALL',\r\n\tSAVE_ALL: 'SAVE_ALL'\r\n};","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {FileTypes} from \"Core/Common/Enums/FileTypes\";\r\n\r\nimport {Paginator} from 'Core/Components/Paginator/Paginator';\r\nimport {ViewGridModel} from 'Core/Controls/Grid/Models/ViewGridModel';\r\nimport {EntityMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS} from 'Core/Controls/Grid/Toolbar/Constants';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport 'Core/Components/QueryDropdowns/QueryDropdowns';\r\n\r\nimport {UserManager, UserRoles} from 'User/UserManager';\r\n\r\nimport Template from 'Core/Controls/Grid/Toolbar/Templates/Toolbar.html';\r\nimport { CONTROL_TYPES } from '../BaseGrid/Index';\r\n\r\nko.templates['Core/Controls/Grid/Toolbar/Templates/Toolbar'] = Template;\r\n\r\nexport class Toolbar extends Event {\r\n private _enableEditTableView: KnockoutObservable<boolean>;\r\n private _enableDeleteTableView: KnockoutObservable<boolean>;\r\n private _enableLockItem: KnockoutObservable<boolean>;\r\n\r\n Paginator: KnockoutObservable<Paginator>;\r\n private _tableView: KnockoutObservable<ViewGridModel>;\r\n private _viewGridList: KnockoutObservableArray<ViewGridModel>;\r\n private _gridSubjectEntityMetadata: KnockoutObservable<EntityMetadataModel>;\r\n private _searchPhrase: KnockoutObservable<string>;\r\n private _showAddButton: KnockoutObservable<boolean>;\r\n private _showEditAllButton: KnockoutObservable<boolean>;\r\n private _recordsInBasket: KnockoutObservable<number>;\r\n private _isPortlet: boolean;\r\n private _isListScreen: boolean;\r\n private _isSpecialScreen: boolean;\r\n private _isDashboardScreen: boolean;\r\n private _isConsultScreen: boolean;\r\n private _isEditScreen: boolean;\r\n private _showLockItem: boolean;\r\n private _isEnabled: KnockoutObservable<boolean>;\r\n private _isAddingRecordAllowed: KnockoutObservable<boolean>;\r\n private _labels = LABELS;\r\n private _showTogglePrioritiesButton: KnockoutObservable<boolean>;\r\n private _isGridPrioritiesDisabled: KnockoutObservable<boolean>;\r\n private _showBulkEditButton: KnockoutObservable<boolean>;\r\n private _disableBulkEditButton: KnockoutObservable<boolean>;\r\n private _showResetFilterButton: KnockoutObservable<boolean>;\r\n private _disabledShowAllColumnsBtn: KnockoutObservable<boolean>;\r\n private _canShow: KnockoutObservable<boolean>;\r\n private _canHide: KnockoutObservable<boolean>;\r\n private _showRetired: KnockoutObservable<boolean>;\r\n private _showRetiredButton: KnockoutObservable<boolean>;\r\n private _controls: Array<IControl>;\r\n private _editAll: KnockoutObservable<boolean>;\r\n private _showControls: KnockoutObservable<boolean>;\r\n private _isMultipleUnlinkModeActive: KnockoutObservable<boolean> = ko.observable(false);\r\n private _isMultipleUnlinkButtonVisible: KnockoutComputed<boolean>;\r\n\r\n constructor(\r\n private _showTableViewLookup: boolean = true,\r\n private _showFunctionLookup: boolean = true,\r\n private _showLinkButton: KnockoutObservable<boolean> = ko.observable(true),\r\n private _showUnlinkMultipleRecordsButton: KnockoutObservable<boolean> = ko.observable(true),\r\n private _showLinkParentButton: KnockoutObservable<boolean> = ko.observable(true),\r\n private _hasOneParent: KnockoutObservable<boolean> = ko.observable(false),\r\n private _showAddAndLinkButton: KnockoutObservable<boolean> = ko.observable(true),\r\n private _showScanAndLinkButton: KnockoutObservable<boolean> = ko.observable(false),\r\n private _showAddQueryButton: KnockoutObservable<boolean> = ko.observable(false),\r\n private _showSearchInput: KnockoutObservable<boolean> = ko.observable(true),\r\n private _isEditable: KnockoutObservable<boolean> = ko.observable(true),\r\n private _addingRecordAllowed: KnockoutObservable<boolean> = ko.observable(true),\r\n private _exportDataAllowed: KnockoutObservable<boolean> = ko.observable(false),\r\n private _showTableViewElement: KnockoutObservable<boolean> = ko.observable(false),\r\n private _activeScreen: string = '',\r\n isGridPrioritiesEnabled: boolean,\r\n showTogglePrioritiesButton: boolean,\r\n showBulkEditButton: KnockoutObservable<boolean> = ko.observable(false),\r\n disableBulkEditButton: KnockoutObservable<boolean> = ko.observable(false),\r\n showResetFilterButton: KnockoutObservable<boolean> = ko.observable(false),\r\n disabledShowAllColumnsBtn: boolean,\r\n showRetiredButton: boolean,\r\n controls?: Array<IControl>\r\n ) {\r\n super();\r\n\r\n this._tableView = ko.observable(null);\r\n this._enableEditTableView = ko.observable(false);\r\n this._enableDeleteTableView = ko.observable(false);\r\n this._enableLockItem = ko.observable(false);\r\n this._isAddingRecordAllowed = ko.observable(false);\r\n this._viewGridList = ko.observableArray([]);\r\n this._gridSubjectEntityMetadata = ko.observable(null);\r\n this._searchPhrase = ko.observable(\"\");\r\n this._showAddButton = ko.observable(false);\r\n this._showEditAllButton = ko.observable(false);\r\n this._recordsInBasket = ko.observable(0);\r\n this._isPortlet = this._activeScreen === ScreenTypes[ScreenTypes.Portlet];\r\n this._isListScreen = this._activeScreen === ScreenTypes[ScreenTypes.ListScreen];\r\n this._isSpecialScreen = this._activeScreen === ScreenTypes[ScreenTypes.SpecialScreen];\r\n this._isDashboardScreen = this._activeScreen === ScreenTypes[ScreenTypes.Dashboard];\r\n this._isConsultScreen = this._activeScreen === ScreenTypes[ScreenTypes.ConsultScreen];\r\n this._isEditScreen = this._activeScreen === ScreenTypes[ScreenTypes.EditScreen];\r\n this._showTogglePrioritiesButton = ko.observable(showTogglePrioritiesButton);\r\n this._isGridPrioritiesDisabled = ko.observable(isGridPrioritiesEnabled);\r\n this._showBulkEditButton = showBulkEditButton;\r\n this._disableBulkEditButton = disableBulkEditButton;\r\n this._showResetFilterButton = showResetFilterButton;\r\n this._disabledShowAllColumnsBtn = ko.observable(disabledShowAllColumnsBtn);\r\n this.Paginator = ko.observable(new Paginator());\r\n this._canHide = ko.observable(false);\r\n this._canShow = ko.observable(false);\r\n this._showRetired = ko.observable(false);\r\n this._showRetiredButton = ko.observable(showRetiredButton);\r\n this._controls = controls;\r\n this._showLockItem = UserManager.Instance.IsUserInRole(UserRoles.SuperUser);\r\n this._editAll = ko.observable(true);\r\n this._showControls = ko.observable(true);\r\n this._isMultipleUnlinkButtonVisible = ko.computed(() => { return this._showUnlinkMultipleRecordsButton && (this._isConsultScreen || this._isEditScreen)});\r\n\r\n this._viewGridList([new ViewGridModel(0, LABELS.DEFAULT_VIEW)]);\r\n this._tableView(_.first(this._viewGridList()));\r\n\r\n this.AddEvent(EVENTS.NEW_TABLE_VIEW);\r\n this.AddEvent(EVENTS.EDIT_TABLE_VIEW);\r\n this.AddEvent(EVENTS.COPY_TABLE_VIEW);\r\n this.AddEvent(EVENTS.ADD_AND_LINK_RECORD);\r\n this.AddEvent(EVENTS.ADD_QUERY);\r\n this.AddEvent(EVENTS.LINK_RECORD);\r\n this.AddEvent(EVENTS.UNLINK_MULTIPLE_RECORDS);\r\n this.AddEvent(EVENTS.CONFIRM_MULTIPLE_UNLINK);\r\n this.AddEvent(EVENTS.CANCEL_MULTIPLE_UNLINK);\r\n this.AddEvent(EVENTS.LINK_PARENT_RECORD);\r\n this.AddEvent(EVENTS.SCAN_AND_LINK_RECORD);\r\n this.AddEvent(EVENTS.COPY_LATEST_RECORD);\r\n this.AddEvent(EVENTS.SELECT_TABLE_VIEW);\r\n this.AddEvent(EVENTS.SEARCH_BY_PHRASE);\r\n this.AddEvent(EVENTS.NEW_RECORD);\r\n this.AddEvent(EVENTS.DELETE_TABLE_VIEW);\r\n this.AddEvent(EVENTS.LOCK_TABLE_VIEW);\r\n this.AddEvent(EVENTS.UNLOCK_TABLE_VIEW);\r\n this.AddEvent(EVENTS.EXPORT_DATA);\r\n this.AddEvent(EVENTS.TOGGLE_PRIORITIES);\r\n this.AddEvent(EVENTS.RESET_FILTER);\r\n this.AddEvent(EVENTS.BULK_EDIT);\r\n this.AddEvent(EVENTS.TOGGLE_RETIRED);\r\n this.AddEvent(EVENTS.EDIT_ALL);\r\n this.AddEvent(EVENTS.SAVE_ALL);\r\n\r\n this._isEnabled = ko.observable(false);\r\n\r\n this._tableView.subscribe((newValue) => {\r\n this._enableEditTableView(newValue.IsEditingAllowed);\r\n this._enableDeleteTableView(newValue.IsDeletingAllowed);\r\n this._enableLockItem(this._showLockItem && this._tableView().Id > 0);\r\n\r\n this.Trigger(EVENTS.SELECT_TABLE_VIEW, newValue);\r\n });\r\n }\r\n\r\n get CreateNewMessage() {\r\n const entityName = this.EntityNameTranslation;\r\n return this._labels.CREATE_NEW.replace('{entityName}', entityName);\r\n }\r\n\r\n get AddAndLinkMessage() {\r\n const entityName = this.EntityNameTranslation;\r\n const searchValue = /\\{entityName\\}/gi;\r\n\r\n return this._labels.ADD_AND_LINK.replace(searchValue, entityName);\r\n }\r\n\r\n get LinkMessage() {\r\n const entityName = this.EntityNameTranslation;\r\n const searchValue = /\\{entityName\\}/gi;\r\n\r\n return this._labels.LINK.replace(searchValue, entityName);\r\n }\r\n\r\n get EntityNameTranslation(){\r\n const gridSubjectEntityNameTranslation = this._gridSubjectEntityMetadata() && this._gridSubjectEntityMetadata().NameTranslation;\r\n const gridSubjectEntityName = this._gridSubjectEntityMetadata() && this._gridSubjectEntityMetadata().Name;\r\n\r\n return gridSubjectEntityNameTranslation || gridSubjectEntityName || '';\r\n }\r\n\r\n ShowSearchInput(value: boolean) {\r\n this._showSearchInput(value);\r\n }\r\n\r\n ShowRetiredButton(value: boolean) {\r\n this._showRetiredButton(value);\r\n }\r\n\r\n SetDefaultTableView() {\r\n this._tableView(_.first(this._viewGridList()));\r\n }\r\n\r\n SetTableViewList(tableViewList: Array<ViewGridModel>, selectedTableView: ViewGridModel, isAddingRecordAllowed: boolean) {\r\n this._viewGridList(tableViewList);\r\n this._tableView(selectedTableView);\r\n this._isAddingRecordAllowed(isAddingRecordAllowed);\r\n }\r\n\r\n SetEnabledAddButton(enableAddButton: boolean) {\r\n this._showAddButton(enableAddButton);\r\n }\r\n\r\n SetEnableEditAllButton(enableEditAllButton: boolean) {\r\n this._showEditAllButton(enableEditAllButton);\r\n }\r\n\r\n SetGridSubjectEntityMetadata(value: EntityMetadataModel) {\r\n this._gridSubjectEntityMetadata(value);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/Grid/Toolbar/Templates/Toolbar';\r\n }\r\n\r\n NewTableView() {\r\n this.Trigger(EVENTS.NEW_TABLE_VIEW);\r\n }\r\n\r\n EditTableView() {\r\n this.Trigger(EVENTS.EDIT_TABLE_VIEW, this._tableView());\r\n }\r\n\r\n CopyTableView() {\r\n this.Trigger(EVENTS.COPY_TABLE_VIEW, this._tableView());\r\n }\r\n\r\n DeleteTableView() {\r\n this.Trigger(EVENTS.DELETE_TABLE_VIEW, this._tableView());\r\n }\r\n\r\n ToggleLock() {\r\n if (this._tableView().Locked) {\r\n this.Trigger(EVENTS.UNLOCK_TABLE_VIEW, this._tableView());\r\n } else {\r\n this.Trigger(EVENTS.LOCK_TABLE_VIEW, this._tableView());\r\n }\r\n }\r\n\r\n public ToggleAllShownColums(canHide: boolean, canShow: boolean) {\r\n this._canHide(canHide);\r\n this._canShow(canShow);\r\n }\r\n\r\n EnterKey() {\r\n this.Trigger(EVENTS.SEARCH_BY_PHRASE, {SearchPhrase: this._searchPhrase().trim()});\r\n }\r\n\r\n AddAndLinkRecord() {\r\n this.Trigger(EVENTS.ADD_AND_LINK_RECORD);\r\n }\r\n\r\n LinkRecord() {\r\n this.Trigger(EVENTS.LINK_RECORD);\r\n }\r\n\r\n UnlinkMultipleRecords() {\r\n this.Trigger(EVENTS.UNLINK_MULTIPLE_RECORDS);\r\n\r\n this._isMultipleUnlinkModeActive(true);\r\n }\r\n\r\n LinkParentRecord() {\r\n this.Trigger(EVENTS.LINK_PARENT_RECORD);\r\n }\r\n\r\n ScanAndLinkRecord() {\r\n this.Trigger(EVENTS.SCAN_AND_LINK_RECORD);\r\n }\r\n\r\n CopyLatestRecord() {\r\n this.Trigger(EVENTS.COPY_LATEST_RECORD);\r\n }\r\n\r\n AddQuery() {\r\n this.Trigger(EVENTS.ADD_QUERY);\r\n }\r\n\r\n NewRecord() {\r\n this.Trigger(EVENTS.NEW_RECORD);\r\n }\r\n\r\n BulkEdit() {\r\n if (!this._disableBulkEditButton()) {\r\n this.Trigger(EVENTS.BULK_EDIT);\r\n }\r\n }\r\n\r\n AfterRender() {\r\n }\r\n\r\n Enable() {\r\n this._isEnabled(true);\r\n }\r\n\r\n ExportToCSV() {\r\n this.Trigger(EVENTS.EXPORT_DATA, {Destination: FileTypes.CSV});\r\n }\r\n\r\n ExportToExcel() {\r\n this.Trigger(EVENTS.EXPORT_DATA, {Destination: FileTypes.EXCEL});\r\n }\r\n\r\n ResetFilter() {\r\n this.Trigger(EVENTS.RESET_FILTER);\r\n }\r\n\r\n TogglePriorities() {\r\n this._isGridPrioritiesDisabled(!this._isGridPrioritiesDisabled());\r\n\r\n this.Trigger(EVENTS.TOGGLE_PRIORITIES, {state: this._isGridPrioritiesDisabled()});\r\n }\r\n\r\n ToggleRetired() {\r\n this._showRetired(!this._showRetired());\r\n this.Trigger(EVENTS.TOGGLE_RETIRED, {State: this._showRetired()});\r\n }\r\n\r\n ToggleEditAll() {\r\n if (this._editAll()) {\r\n this._editAll(false);\r\n this.Trigger(EVENTS.EDIT_ALL);\r\n } else {\r\n this.Trigger(EVENTS.SAVE_ALL);\r\n }\r\n }\r\n\r\n OnConfirm() {\r\n this.Trigger(EVENTS.CONFIRM_MULTIPLE_UNLINK);\r\n\r\n this._isMultipleUnlinkModeActive(false);\r\n }\r\n\r\n OnCancel() {\r\n this.Trigger(EVENTS.CANCEL_MULTIPLE_UNLINK);\r\n\r\n this._isMultipleUnlinkModeActive(false);\r\n }\r\n\r\n ShowControls(value: boolean) {\r\n this._showControls(value);\r\n }\r\n\r\n ShowTogglePrioritiesButton(value: boolean) {\r\n this._showTogglePrioritiesButton(value);\r\n }\r\n\r\n\r\n set EditAll(value: boolean) {\r\n this._editAll(value);\r\n }\r\n\r\n get IsVisibleCopyButton(): boolean {\r\n return _.any(this._controls, (control)=>control.GetType() === CONTROL_TYPES.ButtonCopy);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"table-toolbar-line\\\"> <div class=\\\"table-toolbar-line_left\\\"> <!--ko if: _isListScreen || _isSpecialScreen || _isDashboardScreen --> <div class=\\\"pagination-container-grid pagination-container-grid--firstElement Hidden\\\" data-bind=\\\"css: {Hidden: _isPortlet}\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <query-dropdowns params=\\\"\\r\\n showElement: _showTableViewElement,\\r\\n showViewLookup: _showTableViewLookup,\\r\\n showFunctionLookup: _showFunctionLookup,\\r\\n view: _tableView,\\r\\n isEnabled: _isEnabled,\\r\\n viewList: _viewGridList,\\r\\n isAddingRecordAllowed: _isAddingRecordAllowed,\\r\\n enableEditView: _enableEditTableView,\\r\\n enableDeleteView: _enableDeleteTableView,\\r\\n enableLockItem: _enableLockItem,\\r\\n exportDataAllowed: _exportDataAllowed,\\r\\n showLockItem: _showLockItem,\\r\\n queryLocked: _tableView().LockedTableView,\\r\\n newView: NewTableView.bind($data),\\r\\n editView: EditTableView.bind($data),\\r\\n copyView: CopyTableView.bind($data),\\r\\n deleteView: DeleteTableView.bind($data),\\r\\n toggleLock: ToggleLock.bind($data),\\r\\n exportToCSV: ExportToCSV.bind($data),\\r\\n exportToExcel: ExportToExcel.bind($data)\\r\\n \\\" class=\\\"query-dropdowns_container\\\"> </query-dropdowns> <div class=\\\"grid-search-list-container\\\" data-bind=\\\"css: {Hidden: _isPortlet}, visible: _showSearchInput\\\"> <input data-bind=\\\"enableAttr: _isEnabled,\\r\\n visible: _showSearchInput,\\r\\n textInput: _searchPhrase,\\r\\n enterKey: EnterKey,\\r\\n attr: { placeholder: _labels.SEARCH_GRID }\\\" class=\\\"subFormControl serch-inline-input\\\" tabindex=\\\"-1\\\" autocomplete=\\\"off\\\" type=\\\"text\\\"> </div> <!--ko ifnot: _isListScreen || _isSpecialScreen || _isDashboardScreen --> <div class=\\\"pagination-container-grid pagination-container-grid--twoElement Hidden\\\" data-bind=\\\"css: {Hidden: _isPortlet}\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <div class=\\\"action-button\\\"> <!-- ko if: $data._showTogglePrioritiesButton() && ($data._canHide() || $data._canShow()) --> <span class=\\\"action-button-box\\\"> <a data-bind=\\\"click: $data.TogglePriorities.bind($data), css: { disabled: _disabledShowAllColumnsBtn()}\\\" class=\\\"btn btn-secondary toggle-priorities-button pull-left\\\"> <!-- ko if: _isGridPrioritiesDisabled() --> <i class=\\\"fa fa-eye\\\" data-bind=\\\"tooltip: {content: _labels.HIDE_COLUMNS_BY_PRIORITY}\\\"></i> <!-- /ko --> <!-- ko if: !_isGridPrioritiesDisabled() --> <i class=\\\"fa fa-eye-slash priorities-button-off\\\" data-bind=\\\"tooltip: {content: _labels.SHOW_ALL_COLUMNS}\\\"></i> <!-- /ko --> </a> </span> <!-- /ko --> <!--ko if: _showResetFilterButton --> <span class=\\\"action-button-box\\\"> <a class=\\\"btn btn-secondary toggle-priorities-button toggle-cross pull-left\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"tooltip: {content: 'Clear filters'}, click: ResetFilter\\\"></i> </a> </span> <!-- /ko --> <!--ko if: _showRetiredButton --> <span class=\\\"action-button-box\\\"> <a data-bind=\\\"click: $data.ToggleRetired.bind($data), css: { 'toggle-cross': !_showRetired() }\\\" class=\\\"btn btn-secondary toggle-priorities-button pull-left\\\"> <!-- ko if: _showRetired --> <i data-bind=\\\"tooltip: { content: _labels.HIDE_RETIRED }\\\" class=\\\"fa fa-trash\\\"></i> <!-- /ko --> <!-- ko ifnot: _showRetired --> <i data-bind=\\\"tooltip: { content: _labels.SHOW_RETIRED }\\\" class=\\\"fa fa-trash\\\"></i> <!-- /ko --> </a> </span> <!-- /ko --> </div> </div> <div class=\\\"table-toolbar-line_right\\\"> <div class=\\\"additional-buttons\\\"> <!-- ko if: _showControls --> <!-- ko foreach: _controls --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko if: _showBulkEditButton --> <a data-bind=\\\"visible: _isEditable() && _showBulkEditButton(), attr: { disabled: _disableBulkEditButton}, click: $data.BulkEdit.bind($data)\\\" class=\\\"btn blue-sharp showAddButton subFormControl\\\"> <!-- ko text: _labels.GRID_BULK_EDIT --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showAddButton() --> <a data-bind=\\\"visible: _isEditable() && _showAddButton(), click: $data.NewRecord.bind($data)\\\" class=\\\"btn blue-sharp showAddButton subFormControl\\\"> <i class=\\\"icon-plus\\\"></i> <!-- ko text: CreateNewMessage --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showEditAllButton() --> <a data-bind=\\\"visible: _isEditable() && _showEditAllButton(), click: $data.ToggleEditAll.bind($data)\\\" class=\\\"btn blue-sharp showEditAllButton subFormControl\\\"> <!-- ko if: _editAll --> <!-- ko text: _labels.EDIT_ALL --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: _editAll --> <!-- ko text: _labels.SAVE_ALL --><!-- /ko --> <!-- /ko --> </a> <!-- /ko --> <!-- ko if: IsVisibleCopyButton --> <!-- ko if: $parent._disabledCopyButton --> <span data-bind=\\\"tooltip: {content: $parent._notifications.USE_LINK_ADDLINK_OR_ADDQUERY_BUTTONS_TO_COPY}\\\" class=\\\"btn blue-sharp subFormControl copy-button\\\" disabled=\\\"true\\\"> <!-- ko text: _labels.COPY_LATEST --><!-- /ko --> </span> <!-- /ko --> <!-- ko ifnot: $parent._disabledCopyButton --> <a data-bind=\\\"click: CopyLatestRecord\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl copy-button\\\"> <!-- ko text: _labels.COPY_LATEST --><!-- /ko --> </a> <!-- /ko --> <!-- /ko --> <!-- ko if: _showAddAndLinkButton() --> <a data-bind=\\\"click: AddAndLinkRecord\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl tab-add-and-link-button float-r\\\"> <!-- ko text: AddAndLinkMessage --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showLinkButton() --> <a data-bind=\\\"visible: _showLinkButton, click: LinkRecord\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl tab-link-button float-r\\\"> <!-- ko text: LinkMessage --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _isMultipleUnlinkButtonVisible() --> <!-- ko if: _isMultipleUnlinkModeActive() --> <div class=\\\"confirm-cancel-wrapper\\\"> <button class=\\\"btn btn-success\\\" data-bind=\\\"click: OnConfirm, tooltip: { content: _labels.UNLINK_ALL_SELECTED_LABEL }\\\"> <i class=\\\"fa fa-check\\\"></i> </button> <button class=\\\"btn btn-danger\\\" data-bind=\\\"click: OnCancel, tooltip: { content: _labels.CANCEL }\\\"> <i class=\\\"fa fa-times\\\"></i> </button> </div> <!-- /ko --> <!-- ko ifnot: _isMultipleUnlinkModeActive() --> <a data-bind=\\\"visible: _showUnlinkMultipleRecordsButton,\\r\\n click: UnlinkMultipleRecords,\\r\\n tooltip: { content: _labels.UNLINK_MANY_RECORDS_LABEL } \\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl tab-link-button float-r\\\"> <i class=\\\"fa transition fa-chain-broken\\\"></i> </a> <!-- /ko --> <!-- /ko --> <!-- ko if: _showLinkParentButton() --> <a data-bind=\\\"visible: _showLinkParentButton(), css: {'disabled': _hasOneParent()}, click: LinkParentRecord\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl link-parent-button\\\"> <!-- ko text: _labels.LINK_PARENT --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showScanAndLinkButton() --> <a data-bind=\\\"css: {'disabled': _hasOneParent()}, click: ScanAndLinkRecord\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl tab-scan-and-link-button\\\"> <!-- ko text: _labels.SCAN_AND_LINK --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showAddQueryButton() --> <a data-bind=\\\"visible: _showAddQueryButton, click: AddQuery\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl tab-link-button float-r\\\"> <!-- ko text: _labels.ADD_QUERY --><!-- /ko --> </a> <!-- /ko --> </div> </div> </div> \";\n// Exports\nexport default code;","export const FileTypes = {\r\n\tCSV: \"csv\",\r\n\tEXCEL: \"xlsx\"\r\n};","import {P} from \"Core/Common/Promise\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\n\r\nexport interface IHistoryRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n}\r\n\r\nexport class HistoryLogsStore {\r\n\r\n\tstatic GetHistory(model: IHistoryRequestModel): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/HistoryApi/GetHistory',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: model\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic HasHistory(model: IHistoryRequestModel): P.Promise<boolean> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/HistoryApi/HasHistory',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: model\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\t\tdeferredResult.resolve(data)\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"history-table-container\\\"> <table class=\\\"table table-hover table-striped table-bordered history-table\\\"> <thead class=\\\"search-table-header\\\"> <tr> <!-- ko foreach: _historyThs --> <th data-bind=\\\"text: $data, css: $data\\\" class=\\\"test-column-name\\\"></th> <!--/ko--> </tr> </thead> <tbody data-bind=\\\"scrollFixer: {}\\\" class=\\\"tab-key-navigation scroll-fixer search-table-body\\\" style=\\\"max-height:20.8px\\\"> <!-- ko foreach: _historyLogs --> <tr data-bind=\\\"\\\" tabindex=\\\"1\\\" class=\\\"search-table-row\\\"> <!-- ko foreach: $parent.GetHistoryValues($data) --> <td class=\\\"search-table-data\\\" data-bind=\\\"text: $data\\\"></td> <!--/ko--> </tr> <!--/ko--> </tbody> </table> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport { HistoryLogsModel, LogModel } from 'Core/Controls/History/Models/HistoryLogsModel';\r\nimport { DATE_FORMATS } from 'Core/Constants/DateTimeFormats';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter'\r\n\r\n\r\nimport HistoryContentTemplate from \"Core/Controls/History/Templates/HistoryContent.html\"\r\nimport * as moment from \"moment\";\r\n\r\n\r\nko.templates[\"Core/Controls/History/Templates/HistoryContent\"] = HistoryContentTemplate;\r\n\r\n\r\nexport interface IHistoryRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n}\r\n\r\n\r\nexport class HistoryLogs {\r\n\tprivate _enabled: KnockoutObservable<boolean>;\r\n\tprivate _historyLogs: Array<LogModel>;\r\n\tprivate _historyThs: string[]\r\n\r\n\tconstructor(history: any) {\r\n\t\tlet allowed = ['Type', 'Format']; //remove to history\r\n\t\tthis._enabled = ko.observable(true);\r\n\t\tthis._historyLogs = history;\r\n\t\tthis._historyThs = _.keys(history[0])\r\n\t\t\t.filter(key => !_.contains(allowed, key)) //remove['Type', 'Format']\r\n\t\t\t.map(key => key === 'HistoryId' ? '#' : key);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tGetHistoryValues(data) {\r\n\t\tconst allowed = ['EntityName', 'NewValue', 'Operation', 'FieldName', 'ChangedBy', 'ChangeDate']; //leave in data\r\n\r\n\t\tlet newHistoryArgument = _.extend({}, data, {\r\n\t\t\tChangeDate: this.FormatDateTimezone( data.ChangeDate.toString() ),\r\n\t\t\tNewValue: data.Type === 'DateTime' && data.NewValue ? this.FormatDateTimezone( data.NewValue.toString() ) : data.NewValue\r\n\t\t} );\r\n\r\n\t\treturn _.values( _.pick( newHistoryArgument, allowed ) );\r\n\t}\r\n\r\n\tprivate FormatDateTimezone(date: string) {\r\n\t\treturn FormatConverter.ConvertFromDefaultFormat(FormatConverter.CorrectTimezone( date ), DATE_FORMATS.DATE_TIME.MomentFormat );\r\n\t}\r\n\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/History/Templates/HistoryContent';\r\n\t}\r\n\r\n\r\n\tAfterRender() {\r\n\t}\r\n}","// Module\nvar code = \"<a data-bind=\\\"click: Click, css: {'btn-disabled': !_recordId() || !_hasHistory()}, style: _style, tooltip: { content: HideCaption() ? _labels.HISTORY : '' }\\\" href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn green history-button subFormControl\\\"> <i class=\\\"fa fa-history\\\"></i><span data-bind=\\\"text: _labels.HISTORY, css: {'hide-caption': HideCaption()}\\\"></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { SubForm } from 'Core/Screens/Forms/SubForm/SubForm'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { HistoryLogsStore, IHistoryRequestModel } from 'Core/Controls/History/Stores/HistoryLogsStore';\r\nimport { HistoryLogsModel } from 'Core/Controls/History/Models/HistoryLogsModel';\r\nimport { HistoryLogs } from 'Core/Controls/History/HistoryLogs';\r\nimport { Modal } from 'Core/Common/Modal'\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport HistoryButtonConfig from \"Core/Controls/History/Configs/history-button-config.json\";\r\n\r\nimport ViewTemplate from \"Core/Controls/History/Templates/View.html\"\r\nimport HelpViewTemplate from \"Core/Controls/History/Templates/HelpView.html\"\r\nimport DesignTemplate from \"Core/Controls/History/Templates/Design.html\"\r\nimport ToolbarTemplate from \"Core/Controls/History/Templates/ToolBar.html\"\r\nimport HistoryContentTemplate from \"Core/Controls/History/Templates/HistoryContent.html\"\r\n\r\n\r\nko.templates[\"Core/Controls/History/Templates/ToolBar\"] = ToolbarTemplate;\r\nko.templates[\"Core/Controls/History/Templates/HistoryContent\"] = HistoryContentTemplate;\r\n\r\nko.templates[\"Core/Controls/History/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/History/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/History/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/History/Templates/Design\"] = DesignTemplate;\r\n\r\n\r\nexport class History extends BaseControl {\r\n\tprivate _modal: Modal;\r\n\tprivate _historyLogsData: HistoryLogsModel;\r\n\tprivate _historyLogs: HistoryLogs;\r\n\tprivate _recordId: KnockoutObservable<number>;\r\n\tprivate _hasHistory: KnockoutObservable<boolean>;\r\n\r\n private _config: any;\r\n\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, HistoryButtonConfig);\r\n\t\tthis._recordId = ko.observable(null);\r\n\t\tthis._hasHistory = ko.observable(false);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tif (!this._form) return;\r\n this.ApplyProperties();\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis._recordId(value.SubjectRecordId);\r\n\t\tthis.CheckHistory()\r\n }\r\n\r\n\tCheckHistory(){\r\n\t\tconst requestModel = {\r\n\t\t\tEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\tRecordId: this._form.GetScreen().GetRecordId()\r\n\t\t};\r\n\r\n\t\t(async ()=> { this._hasHistory(await HistoryLogsStore.HasHistory(requestModel)); })();\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (!this._recordId() || !this._hasHistory()) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\r\n\t\t\tconst requestModel = {\r\n\t\t\t\tEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\t\tRecordId: this._form.GetScreen().GetRecordId()\r\n\t\t\t}\r\n\r\n\t\t\tthis.GetHistoryData(requestModel);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tGetContentTemplateName() {\r\n\t\treturn 'Core/Controls/History/Templates/HistoryContent';\r\n\t}\r\n\r\n\tGetHistoryData(requestModel: IHistoryRequestModel) {\r\n\t\tBlockUI.Block();\r\n\t\tHistoryLogsStore.GetHistory(requestModel)\r\n\t\t\t.then(model => {\r\n\t\t\t\tthis._historyLogsData = model.ResultObject;\r\n\t\t\t\tthis.Render();\r\n\t\t\t}).always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tRender(): void {\r\n\t\tvar self = this;\r\n\r\n\t\tthis._historyLogs = new HistoryLogs(this._historyLogsData);\r\n\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: 'history-logs-modal jBox-padding-15px'\r\n\t\t});\r\n\r\n\t\tthis._modal.On(\"CLOSE\", this, (eventArgs: any) => {\r\n\t\t\t$(window).off('keydown');\r\n\t\t\t//self.GatherSettings();\r\n\t\t});\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this._historyLogs, this._modal.Wrapper);\r\n\r\n\t\tthis.ShowModal();\r\n\r\n\t}\r\n\r\n\tClose(): void {\r\n\t\t$(window).off('keydown');\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tShowModal() {\r\n\t\tif (this._modal) {\r\n\t\t\tthis._modal.Show();\r\n\t\t}\r\n\t}\r\n\r\n\tSetHideCaption(data: boolean) {\r\n\t\tthis.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n\t}\r\n\r\n\tGetHideCaption(): boolean {\r\n\t\treturn this.HideCaption();\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n\t\t\tthis.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n\t\t\tthis.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green edit-button subFormControl\\\"> <i class=\\\"fa fa-history\\\"></i><span data-bind=\\\"text: GetControlTypeTranslatedName()\\\"></span> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green edit-button subFormControl\\\" data-bind=\\\"style: _style, tooltip: { content: HideCaption() ? _labels.HISTORY : '' }\\\"> <i class=\\\"fa fa-history\\\"></i><span data-bind=\\\"text: _labels.HISTORY, css: {'hide-caption': HideCaption()}\\\"></span> </a> \";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green edit-button subFormControl\\\" data-bind=\\\"style: _style, tooltip: { content: HideCaption() ? _labels.HISTORY : '' }\\\"> <i class=\\\"fa fa-history\\\"></i><span data-bind=\\\"text: _labels.HISTORY, css: {'hide-caption': HideCaption()}\\\"></span> </a> \";\n// Exports\nexport default code;","import * as ko from \"knockout\"\r\nimport * as _ from 'underscore'\r\nimport * as Viewer from \"viewer\";\r\nimport * as Markerjs2 from \"markerjs2\";\r\n\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport {ViewerJsExtention} from 'Core/KnockoutExtentions/ViewerJsExtention';\r\n\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\"\r\nimport {IControlParam} from \"Core/Screens/IScreen\"\r\nimport {IGetImageControlDataRequestModel, ImageDataStore} from 'Core/Controls/Image/Stores/ImageDataStore'\r\nimport {FileModel, ImageDataModel} from 'Core/Controls/Image/Models/ImageDataModel'\r\nimport {ImageCropperScreen} from 'Core/Controls/Image/ImageCropperScreen/ImageCropperScreen'\r\nimport {CONTROL_TYPES, RenderModes, TABLE_TYPES} from 'Core/Constant'\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\n\r\nimport ImageConfig from \"Core/Controls/Image/Configs/image-config.json\";\r\n\r\nimport {BlockUI as BlockUi} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\n\r\nimport ViewTemplate from 'Core/Controls/Image/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/Image/Templates/HelpView.html'\r\nimport ToolBarTemplate from 'Core/Controls/Image/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/Image/Templates/Design.html'\r\nimport EditTemplate from 'Core/Controls/Image/Templates/Edit.html'\r\n\r\nimport {AttachmentModel} from 'Core/Controls/Image/Models/AttachmentModel';\r\nimport {ImageFromCamera} from 'Core/Controls/Image/ImageFromCamera/ImageFromCamera';\r\nimport TruncateFileName from 'Core/Common/TruncateFileName';\r\nimport {DropDataStore} from \"../Drop/Stores/DropDataStore\";\r\nimport {UploadChunkModel} from \"../Drop/Models/UploadChunkModel\";\r\nimport {Guid} from \"../../Common/Guid\";\r\nimport {MarkerArea} from \"markerjs2\";\r\n\r\nko.templates['Core/Controls/Image/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Image/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Image/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Image/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Image/Templates/Edit'] = EditTemplate;\r\n\r\nexport const CLIPBOARD_IMAGES_TOPIC = 'clipboardImages';\r\n\r\nexport class Image extends BaseControl {\r\n private _dataModel: KnockoutObservable<ImageDataModel>;\r\n private _image: KnockoutObservable<FileModel>;\r\n private _imageCropperScreen: ImageCropperScreen;\r\n private _attachments: Array<AttachmentModel>;\r\n private _removeAttachments: Array<FileModel>;\r\n private _dropzoneInstance: any;\r\n private _cropedImageClass: string;\r\n private _isImageGallery: boolean;\r\n private _maxFileSize: number;\r\n private _maxUploadingFilesSize: number;\r\n private _maxCombinedSize: number;\r\n\tprivate _imageHeight: KnockoutObservable<string>;\r\n private _hidden: KnockoutObservable<boolean>;\r\n private _isMobile: boolean;\r\n private _originalValue: string;\r\n private _newAttachments: Array<any>;\r\n private _isNewRecord: boolean;\r\n private _clipboardImages: KnockoutObservable<Array<File>>;\r\n private _editGalleryContainer: HTMLElement;\r\n private _editGalleryViewer: Viewer;\r\n private _markerArea: MarkerArea;\r\n private _markerButton: Element;\r\n private _annotationsEnabled: KnockoutObservable<boolean>;\r\n private _annotations: Array<FileModel>;\r\n private _annotationsShown: KnockoutObservable<boolean>;\r\n private _showAnnotations: KnockoutObservable<boolean>;\r\n private _uploadedFilesObjects: Array<any>;\r\n private _disableCropping: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, ImageConfig);\r\n\r\n const isInTab = params.ParentControl ? params.ParentControl.GetType() === CONTROL_TYPES.TabPage : false;\r\n this._isWrapped = ko.observable(false);\r\n this._dataModel = ko.observable(null);\r\n this._image = ko.observable(null);\r\n this._imageCropperScreen = new ImageCropperScreen(!isInTab);\r\n this._isImageGallery = params.Model.EntityTypeName === TABLE_TYPES.Sub;\r\n this._attachments = [];\r\n this._removeAttachments = [];\r\n\t\tthis._imageHeight = ko.observable('');\r\n this._hidden = ko.observable(false);\r\n this._cropedImageClass = isInTab ? 'gallery' : 'portrait';\r\n this._maxFileSize = 15;\r\n this._maxUploadingFilesSize = 150;\r\n this._maxCombinedSize = 750;\r\n this._clipboardImages = ko.observable();\r\n this._annotationsEnabled = ko.observable(false);\r\n this._annotations = [];\r\n this._markerButton = null;\r\n this._annotationsShown = ko.observable(false);\r\n this._showAnnotations = ko.observable(true);\r\n this._uploadedFilesObjects = [];\r\n this._disableCropping = ko.observable(null);\r\n\r\n this._isMobile = MobileChecker.IsMobile();\r\n\r\n this.Init();\r\n this.BindEvents();\r\n this.AddEvent('DISPOSE');\r\n }\r\n\r\n private Init(): void {\r\n this.ApplyProperties();\r\n }\r\n\r\n get IsImageFile():boolean{\r\n return this._dataModel() && !!this._dataModel().Files.length;\r\n }\r\n\r\n private BindEvents() {\r\n this._model.subscribe(() => this.Init());\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n if (this.Properties.General) {\r\n _.each(this.Properties.General.Properties, (item: any) => {\r\n this._disableCropping(item.DisableCropping);\r\n });\r\n }\r\n if (this.Properties.IsWrapped) {\r\n _.each(this.Properties.IsWrapped.Properties, (item: any) => {\r\n this.ApplyWrapTextProperty(item.WrapText);\r\n });\r\n }\r\n\r\n if (this.Properties.Annotations) {\r\n this.ApplyAnnotationsProperty(this.Properties.Annotations.Properties[0].Annotations);\r\n this.ApplyShowAnnotationProperty(this.GeneralProperties.GetPropertyValue('ShowAnnotations'));\r\n }\r\n\r\n if (this.Properties.ImageHeight) {\r\n this._imageHeight(this.Properties.ImageHeight.Properties[0].ImageHeight.Value);\r\n }\r\n\r\n if (this.Properties.HideIfEmpty) {\r\n const hideIfEmpty = this.Properties.HideIfEmpty.Properties[0].HideIfEmpty\r\n && !this.IsImageFile\r\n && this._renderMode() === RenderModes.View;\r\n this._hidden(hideIfEmpty);\r\n\t\t\t}\r\n\r\n\t\t\tif (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor]) && this.Properties.BackgroundColor) {\r\n\t\t\t\tthis._backgroundColor(this.Properties.BackgroundColor);\r\n }\r\n }\r\n }\r\n\r\n ApplyWrapTextProperty(wrapText) {\r\n this._isWrapped(wrapText);\r\n this._form && this._form.Wrap(this, wrapText);\r\n }\r\n\r\n ApplyAnnotationsProperty(annotationsEnabled) {\r\n this._annotationsEnabled(annotationsEnabled);\r\n }\r\n\r\n ApplyShowAnnotationProperty(showAnnotationsEnabled) {\r\n this._showAnnotations(showAnnotationsEnabled);\r\n }\r\n\r\n GetImageClass() {\r\n this.ApplyProperties();\r\n\r\n return `\r\n ${this._imageHeight()}\r\n ${this._isWrapped() ? 'wrapped-image' : 'galleryBox'}\r\n ${this._hidden() ? 'hidden' : null}\r\n ${this._clipboardImages() ? 'highlighted' : ''}\r\n `;\r\n }\r\n\r\n SetValue(data: IControlValue): void {\r\n if (data.RecordSpecsModel) {\r\n this._isNewRecord = data.RecordSpecsModel && data.RecordSpecsModel.IsNewRecord;\r\n }\r\n\r\n this._isRendered.subscribe((newValue) => {\r\n this._hidden(false);\r\n\r\n if (data.Data.Value) {\r\n if (this.IsImageGallery) {\r\n this.LoadGalleryData(data)\r\n .then(dataModel => this.PrepareForGallery(dataModel));\r\n } else {\r\n this.LoadSingleImageData(data)\r\n .then(dataModel => this.PrepareForSingleImage(dataModel));\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (this.IsImageGallery) {\r\n this.PrepareForGallery(null);\r\n } else {\r\n this.PrepareForSingleImage(null);\r\n }\r\n });\r\n }\r\n\r\n IsModified(): boolean {\r\n this.Deserialize();\r\n\r\n if (super.IsModified() || this._isNewRecord) {\r\n return true;\r\n }\r\n\r\n if (!this._isNewRecord && this._newAttachments.length == 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private PrepareForSingleImage(dataModel: ImageDataModel) {\r\n\r\n if (dataModel) {\r\n if (!dataModel.Files[0]) {\r\n this._dataModel(dataModel);\r\n }\r\n\r\n if (dataModel.Files[0] && dataModel.Files[0].ImageData) {\r\n this._dataModel(dataModel);\r\n }\r\n }\r\n\r\n let fileModel = dataModel && dataModel.Files[0] || null;\r\n\r\n if (fileModel && !fileModel.ImageData) {\r\n fileModel = null;\r\n }\r\n\r\n if (!fileModel && this.IsEditMode) {\r\n fileModel = new FileModel();\r\n }\r\n\r\n this._image(fileModel);\r\n\r\n if (this.IsEditMode) {\r\n this.InitDropzone();\r\n this.InitPasteEvents();\r\n }\r\n\r\n //Save attachment from example\r\n if (this._isNewRecord && this._dataModel()) {\r\n const [file] = this._dataModel().Files;\r\n\r\n if (file) {\r\n const exampleImage = new AttachmentModel();\r\n\r\n exampleImage.FileName = file.Name;\r\n exampleImage.Base64Data = file.ImageData;\r\n\r\n this._attachments.push(exampleImage);\r\n }\r\n }\r\n }\r\n\r\n private PrepareForGallery(dataModel: ImageDataModel) {\r\n if (this.IsEditMode) {\r\n this.InitEditGalleryViewer();\r\n }\r\n\r\n this._dataModel(dataModel);\r\n\r\n if (this.IsEditMode) {\r\n this.InitDropzone();\r\n this.InitPasteEvents();\r\n }\r\n }\r\n\r\n private LoadSingleImageData(data: IControlValue): P.Promise<ImageDataModel> {\r\n const deferred = P.defer<ImageDataModel>();\r\n\r\n this.BlockUi();\r\n\r\n const requestModel: IGetImageControlDataRequestModel = {\r\n ControlId: this.GetControlId(),\r\n FieldId: this.GetFieldId(),\r\n RecordId: +data.Data.Value,\r\n FirstRecordOnly: true\r\n };\r\n\r\n ImageDataStore.Get(requestModel)\r\n .then(data => deferred.resolve(data))\r\n .fail(err => deferred.reject(err))\r\n .always(() => this.UnBlockUi());\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private LoadGalleryData(data: IControlValue) {\r\n const deferred = P.defer<ImageDataModel>();\r\n\r\n this.BlockUi();\r\n\r\n const requestModel: IGetImageControlDataRequestModel = {\r\n ControlId: this.GetControlId(),\r\n FieldId: this.GetFieldId(),\r\n RecordId: data.SubjectRecordId,\r\n FirstRecordOnly: false\r\n };\r\n\r\n ImageDataStore.Get(requestModel)\r\n .then(data => deferred.resolve(data))\r\n .fail(err => deferred.reject(err))\r\n .always(() => this.UnBlockUi());\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private InitDropzone() {\r\n this._dropzoneInstance = ko.utils.domData.get(\r\n this._el.querySelector('.image-item, .dropzone'),\r\n 'dropZoneInstance'\r\n );\r\n\r\n if (this.GetCombinedReadOnly()) {\r\n this._dropzoneInstance.disable();\r\n }\r\n }\r\n\r\n public IsImage(fileName: string){\r\n let imageExtensions = ['bpm', 'jpg', 'jpeg', 'png', 'gif', 'jpe', 'jif', 'jfif', 'jfi'],\r\n extension = _.last(fileName.split('.'));\r\n\r\n if(extension){\r\n if(imageExtensions.indexOf(extension.toLowerCase())>=0){\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public ConvertBase64ToFile (base64Data: string, fileName: string): File {\r\n let byteString = atob(base64Data),\r\n ab = new ArrayBuffer(byteString.length),\r\n ia = new Uint8Array(ab),\r\n type = 'plain/text';\r\n\r\n for (let i = 0; i < byteString.length; i += 1) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n if(this.IsImage(fileName)){\r\n type = `image/${_.last(fileName.split('.'))}`\r\n }\r\n\r\n return new File([ia.buffer], fileName, { type: type });\r\n };\r\n\r\n public AddFiles(files: File[]){\r\n this._dropzoneInstance.emit('addedfiles', files);\r\n this._dropzoneInstance.handleFiles(files);\r\n }\r\n\r\n private InitPasteEvents() {\r\n PubSub.subscribe(CLIPBOARD_IMAGES_TOPIC, (message, data: Array<File> | undefined) => {\r\n this._clipboardImages(data);\r\n });\r\n\r\n this._el.addEventListener(\r\n 'click',\r\n event => {\r\n const clipboardImages = this._clipboardImages();\r\n\r\n if (clipboardImages) {\r\n event.stopPropagation();\r\n\r\n const images = this._dropzoneInstance.options.maxFiles\r\n ? clipboardImages.slice(\r\n 0,\r\n this._dropzoneInstance.options.maxFiles - this._dropzoneInstance.files.length\r\n )\r\n : clipboardImages;\r\n\r\n this._dropzoneInstance.emit('addedfiles', images);\r\n this._dropzoneInstance.handleFiles(images);\r\n\r\n PubSub.publish(CLIPBOARD_IMAGES_TOPIC, undefined);\r\n }\r\n },\r\n true\r\n );\r\n\r\n document.addEventListener('click', event => {\r\n if (\r\n this._clipboardImages() &&\r\n event.target instanceof Node &&\r\n !this._el.contains(event.target) // click outside\r\n ) {\r\n PubSub.publish(CLIPBOARD_IMAGES_TOPIC, undefined);\r\n }\r\n });\r\n }\r\n\r\n private BlockUi() {\r\n if (this._el) {\r\n BlockUi.Block({Target: this._el});\r\n }\r\n }\r\n\r\n private UnBlockUi() {\r\n BlockUi.Unblock(this._el);\r\n }\r\n\r\n get Image(): KnockoutObservable<FileModel> {\r\n return this._image;\r\n }\r\n\r\n get IsImageGallery(): boolean {\r\n return this._isImageGallery;\r\n }\r\n\r\n get MaxFileSize(): number {\r\n return this._maxFileSize;\r\n }\r\n\r\n get MaxCombinedSize(): number {\r\n return this._maxCombinedSize;\r\n }\r\n\r\n get MaxUploadingFilesSize(): number {\r\n return this._maxUploadingFilesSize;\r\n }\r\n\r\n UploadSingleImageCrop(file: File, attachmentModel: AttachmentModel, data): void {\r\n BlockUi.Block();\r\n\r\n const imageCropperScreen = new ImageCropperScreen(true);\r\n\r\n imageCropperScreen.Type = file.type;\r\n imageCropperScreen.Image = window.URL.createObjectURL(file);\r\n imageCropperScreen.Show();\r\n\r\n BlockUi.Unblock();\r\n\r\n imageCropperScreen.On(\"IMAGE_CROPPED\",\r\n self,\r\n (eventArgs: any) => {\r\n if (eventArgs.data.CropedImage) {\r\n if (!this._dataModel()) {\r\n this._dataModel(new ImageDataModel());\r\n }\r\n\r\n const fileModel = new FileModel();\r\n\r\n fileModel.ImageData = eventArgs.data.CropedImage;\r\n this._image(fileModel);\r\n\r\n this._dataModel().Files.push(fileModel);\r\n this._dataModel.valueHasMutated();\r\n\r\n attachmentModel.Base64Data = eventArgs.data.CropedImage.split(',')[1];\r\n fileModel.Attachment = attachmentModel;\r\n this._attachments.push(attachmentModel);\r\n }\r\n });\r\n }\r\n\r\n UploadSingleImageNotCrop(file: File, attachmentModel: AttachmentModel, imageData?: string): void {\r\n\r\n if (imageData) {\r\n const fileModel = new FileModel();\r\n fileModel.ImageData = imageData;\r\n\r\n this._image(fileModel);\r\n if (!this._dataModel()) {\r\n this._dataModel(new ImageDataModel())\r\n }\r\n this._dataModel().Files.push(fileModel);\r\n this._dataModel.valueHasMutated();\r\n\r\n attachmentModel.Base64Data = imageData.split(',')[1];\r\n fileModel.Attachment = attachmentModel;\r\n this._attachments.push(attachmentModel);\r\n\r\n return;\r\n }\r\n\r\n if (file) {\r\n let result: string | ArrayBuffer = '';\r\n const reader: FileReader = new FileReader();\r\n const self = this;\r\n reader.onload = function(event) {\r\n result = event.target.result;\r\n if (!self._dataModel()) {\r\n self._dataModel(new ImageDataModel());\r\n }\r\n\r\n const fileModel = new FileModel();\r\n let base64 = result as string;\r\n\r\n fileModel.ImageData = base64;\r\n self._image(fileModel);\r\n\r\n self._dataModel().Files.push(fileModel);\r\n self._dataModel.valueHasMutated();\r\n\r\n attachmentModel.Base64Data = base64.split(',')[1];\r\n fileModel.Attachment = attachmentModel;\r\n self._attachments.push(attachmentModel);\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n\r\n AfterUpload(file, data) {\r\n const self = this;\r\n const attachmentModel = new AttachmentModel();\r\n\r\n attachmentModel.FileName = file.name;\r\n\r\n if (!self.IsImageGallery) {\r\n this.AfterUploadSingleImage(file, attachmentModel, data);\r\n } else if (self.IsImageGallery) {\r\n this.AfterUploadInGallery(file, attachmentModel, data);\r\n }\r\n }\r\n\r\n private AddImageInGalleryMemory(file) {\r\n const image = $(\"<img/>\");\r\n image.prop('src', file.ImageData);\r\n image.attr('data-id', file.Id);\r\n\r\n $(this._editGalleryContainer).append(image);\r\n this._editGalleryViewer.update();\r\n }\r\n\r\n private RemoveImageFromGalleryMemory(file) {\r\n const image = $(this._editGalleryContainer).find(`img[data-id=\"${file.Id}\"][src=\"${file.ImageData}\"]`);\r\n if(!image.length){\r\n return;\r\n }\r\n\r\n image.remove();\r\n this._editGalleryViewer.update();\r\n }\r\n\r\n private InitEditGalleryViewer() {\r\n const self = this;\r\n const $container = $(\"<div/>\");\r\n this._editGalleryContainer = $container[0];\r\n\r\n const opt = {\r\n markerable: this._annotationsEnabled(),\r\n button: true,\r\n inline: false,\r\n navbar: false,\r\n title: false,\r\n toolbar: true,\r\n tooltip: true,\r\n movable: true,\r\n zoomable: true,\r\n rotatable: true,\r\n scalable: true,\r\n transition: true,\r\n fullscreen: true,\r\n keyboard: true,\r\n url: 'data-original',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n filter() {\r\n return true;\r\n },\r\n hide() {\r\n if (self._markerArea) {\r\n self._markerArea.close();\r\n }\r\n\r\n if (self._showAnnotations()) {\r\n self._annotationsShown(false);\r\n } else {\r\n self._annotationsShown(true);\r\n }\r\n },\r\n marker() {\r\n if (self._showAnnotations()) {\r\n self._markerButton = (self._editGalleryViewer.image.parentNode.parentNode as HTMLElement).getElementsByClassName(\"viewer-marker\")[0];\r\n self.ShowMarkerArea(self._editGalleryViewer.image);\r\n } else {\r\n if (self._annotationsShown()) {\r\n self._markerButton = (self._editGalleryViewer.image.parentNode.parentNode as HTMLElement).getElementsByClassName(\"viewer-marker\")[0];\r\n self.ShowMarkerArea(self._editGalleryViewer.image);\r\n\r\n return;\r\n }\r\n\r\n self._annotationsShown(true);\r\n }\r\n\r\n },\r\n viewed() {\r\n if (!self._annotationsShown() && opt.markerable) {\r\n opt.marker();\r\n if (self._markerButton) {\r\n self._markerButton.classList.add(\"disabled\");\r\n self._markerButton.setAttribute('style', 'pointer-events: none;');\r\n }\r\n }\r\n }\r\n };\r\n\r\n this._editGalleryViewer = new Viewer(this._editGalleryContainer, opt);\r\n\r\n this._editGalleryViewer.next = () => {\r\n if (this._editGalleryViewer.index + 1 < this._dataModel().Files.length) {\r\n\r\n let image = this._dataModel().Files[this._editGalleryViewer.index + 1];\r\n if (image.OriginalImageData == null) {\r\n this.GetOriginalImage(image, this._editGalleryViewer);\r\n } else {\r\n this._editGalleryViewer.view(Math.min(this._editGalleryViewer.index + 1, this._editGalleryViewer.images.length - 1));\r\n }\r\n return this._editGalleryViewer;\r\n }\r\n }\r\n\r\n this._editGalleryViewer.prev = () => {\r\n if (this._editGalleryViewer.index > 0) {\r\n\r\n let image = this._dataModel().Files[this._editGalleryViewer.index - 1];\r\n if (image.OriginalImageData == null) {\r\n this.GetOriginalImage(image, this._editGalleryViewer);\r\n } else {\r\n this._editGalleryViewer.view(Math.max(this._editGalleryViewer.index - 1, 0));\r\n }\r\n }\r\n return this._editGalleryViewer;\r\n }\r\n\r\n (this._editGalleryViewer as any).clickOnImage = (uniqueId) => {\r\n const index = this._dataModel().Files.findIndex(file => file.UniqueId === uniqueId);\r\n const file = this._dataModel().Files[index];\r\n\r\n const img = this._editGalleryViewer.images[index];\r\n $(img).attr('data-original', file.OriginalImageData);\r\n\r\n this._editGalleryViewer.update();\r\n this._editGalleryViewer.view(index);\r\n\r\n ViewerJsExtention.CustomTooltip();\r\n };\r\n }\r\n\r\n private AfterUploadSingleImage(file, attachmentModel: AttachmentModel, data) {\r\n if (this._disableCropping()) {\r\n this.UploadSingleImageNotCrop(file, attachmentModel);\r\n } else {\r\n this.UploadSingleImageCrop(file, attachmentModel, data);\r\n }\r\n }\r\n\r\n private AfterUploadInGallery(file, attachmentModel: AttachmentModel, data) {\r\n if (file.preloaded) {\r\n this.AddImageInGalleryMemory(file);\r\n file.previewElement.addEventListener('click', () => {\r\n this.GetOriginalImage(file, this._editGalleryViewer);\r\n });\r\n return;\r\n }\r\n\r\n file.OriginalImageData = file.dataURL;\r\n\r\n BlockUi.Block();\r\n\r\n if (!this._dataModel()) {\r\n this._dataModel(new ImageDataModel());\r\n }\r\n\r\n if (file.status === 'error' || file.status === 'removed') {\r\n BlockUi.Unblock();\r\n return;\r\n }\r\n\r\n const fileModel = new FileModel();\r\n\r\n fileModel.ImageData = window.URL.createObjectURL(file);\r\n fileModel.OriginalImageData = fileModel.ImageData;\r\n\r\n if (file && file.status === \"queued\") {\r\n fileModel.CacheFile = file;\r\n }\r\n\r\n this._dataModel().Files.push(fileModel);\r\n this._dataModel.valueHasMutated();\r\n\r\n attachmentModel.FileName = TruncateFileName(file.name);\r\n attachmentModel.TempName = `${Guid.NewGuid()}_${attachmentModel.FileName}`;\r\n attachmentModel.Index = this._editGalleryViewer.images.length;\r\n\r\n fileModel.Attachment = attachmentModel;\r\n fileModel.Id = Guid.NewGuid();\r\n \r\n const chunks = this.CutByChunks(file);\r\n\r\n this.UploadFileChunks(chunks, attachmentModel.TempName, 1, chunks.length)\r\n .finally(()=>{\r\n BlockUi.Unblock();\r\n })\r\n .then((result) => {\r\n if(!result){ \r\n this._dropzoneInstance.removeFile(file);\r\n return; \r\n }\r\n this.AddImageInGalleryMemory(fileModel);\r\n file.previewElement.addEventListener('click', () => {\r\n this.GetOriginalImage(fileModel, this._editGalleryViewer);\r\n }); \r\n this._uploadedFilesObjects.push({Id: fileModel.Id, File: file});\r\n this._attachments.push(attachmentModel);\r\n });\r\n }\r\n\r\n private CutByChunks(file) {\r\n const chunkSizeInBytes = 1 * 1024 * 1024;\r\n\r\n let streamPosition = 0;\r\n let streamEndPosition = chunkSizeInBytes;\r\n\r\n if (chunkSizeInBytes >= file.size) {\r\n return [file];\r\n }\r\n\r\n const chunks = [];\r\n\r\n while (streamEndPosition < file.size) {\r\n const chunk = file.slice(streamPosition, streamEndPosition);\r\n chunks.push(chunk);\r\n\r\n streamPosition = streamEndPosition;\r\n streamEndPosition += chunkSizeInBytes;\r\n }\r\n const chunk = file.slice(streamPosition, file.size);\r\n chunks.push(chunk);\r\n\r\n return chunks;\r\n }\r\n\r\n private UploadFileChunks(fileChunks: any[], fileName: string, currentPart: number, totalPart: number) {\r\n return new Promise(resolve => {\r\n const uploadModel = new UploadChunkModel(fileName, fileChunks[currentPart - 1]);\r\n DropDataStore.UploadFileChunk(uploadModel)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n resolve(false);\r\n } else {\r\n if (totalPart >= currentPart) {\r\n if (totalPart === currentPart) {\r\n //Whole file uploaded\r\n resolve(true);\r\n } else {\r\n //Show uploading progress\r\n this.UploadFileChunks(fileChunks, fileName, currentPart + 1, totalPart).then(result => {\r\n resolve(result);\r\n });\r\n }\r\n }\r\n }\r\n }).fail((error)=>{\r\n resolve(false);\r\n });\r\n });\r\n }\r\n\r\n Deserialize() {\r\n const data = {attachments: [], removeAttachments: [], annotations: []};\r\n const field = _.first(this._model().Fields);\r\n\r\n _.each(this._attachments, item => {\r\n data['attachments'].push({FieldId: field.Id, Data: item});\r\n });\r\n\r\n _.each(this._removeAttachments, item => {\r\n data['removeAttachments'].push({FieldId: field.Id, Data: {Id: item.Id, IsImage: true}});\r\n });\r\n\r\n _.each(this._annotations, item => {\r\n data['annotations'].push({FieldId: field.Id, Data: item});\r\n });\r\n\r\n this._newAttachments = data.attachments;\r\n data['FieldName'] = `${field.EntityName}.${field.Name}`;\r\n\r\n return data;\r\n }\r\n\r\n GetOriginalImage(file: FileModel, viewer) {\r\n if (file.OriginalImageData) {\r\n viewer.clickOnImage(file.UniqueId);\r\n return;\r\n }\r\n\r\n this.BlockUi();\r\n\r\n const requestModel: IGetImageControlDataRequestModel = {\r\n ControlId: this.GetControlId(),\r\n FieldId: this.GetFieldId(),\r\n RecordId: file.Id,\r\n FirstRecordOnly: !this.IsImageGallery\r\n };\r\n\r\n ImageDataStore.GetOriginal(requestModel)\r\n .then(attachment => {\r\n file.OriginalImageData = attachment.Base64Data;\r\n this._dataModel.valueHasMutated();\r\n viewer.clickOnImage(file.UniqueId);\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => {\r\n this.UnBlockUi();\r\n });\r\n }\r\n\r\n ImageDelete(file: FileModel) {\r\n if(!this._dataModel() || !this._dataModel().Files || this._dataModel().Files.length === 0){\r\n return;\r\n }\r\n\r\n let fileIndex = this._dataModel().Files.indexOf(file);\r\n let viewerImage = file;\r\n let galleryAttachment = file.Attachment;\r\n\r\n if (fileIndex === -1) {\r\n if (!this.IsImageGallery)\r\n return;\r\n\r\n const cachedFileModel = _.find(this._dataModel().Files,\r\n (fileWithCache) => {\r\n return fileWithCache.CacheFile === file\r\n });\r\n if (!cachedFileModel) {\r\n return;\r\n }\r\n\r\n const cachedFileIndex = this._dataModel().Files.indexOf(cachedFileModel);\r\n fileIndex = cachedFileIndex;\r\n viewerImage = cachedFileModel;\r\n\r\n if (!galleryAttachment) {\r\n galleryAttachment = cachedFileModel.Attachment;\r\n }\r\n }\r\n\r\n this._dataModel().Files.splice(fileIndex, 1);\r\n\r\n if (this.IsImageGallery) {\r\n this.RemoveImageFromGalleryMemory(viewerImage);\r\n\r\n if (file.Id === null || file.Id === undefined) {\r\n this._attachments.splice(this._attachments.indexOf(galleryAttachment), 1);\r\n } else {\r\n this._removeAttachments.push(file);\r\n }\r\n } else {\r\n this._image(new FileModel());\r\n const attachmentModel = new AttachmentModel();\r\n\r\n attachmentModel.FileName = null;\r\n attachmentModel.Base64Data = null;\r\n this._attachments = [attachmentModel];\r\n }\r\n\r\n this._dataModel.valueHasMutated();\r\n }\r\n\r\n Dispose(): void {\r\n this.Trigger('DISPOSE');\r\n }\r\n\r\n GetImageFromCamera(): void {\r\n const self = this;\r\n const camera = new ImageFromCamera();\r\n\r\n const attachmentModel = new AttachmentModel();\r\n\r\n attachmentModel.FileName = `Camera_${Date.now()}.png`;\r\n\r\n this._form.GetScreen().AttachModalComponent(camera);\r\n\r\n camera.On('SAVE', this, (eventArgs) => {\r\n\r\n if (this._disableCropping() && !this.IsImageGallery){\r\n this.UploadSingleImageNotCrop(null, attachmentModel, eventArgs.data.Image);\r\n return;\r\n }\r\n\r\n let imageCropperScreen = new ImageCropperScreen(true);\r\n\r\n imageCropperScreen.Image = eventArgs.data.Image;\r\n imageCropperScreen.Show();\r\n\r\n imageCropperScreen.On(\"IMAGE_CROPPED\", self, (eventArgs: any) => {\r\n\r\n if (eventArgs.data.CropedImage) {\r\n attachmentModel.Base64Data = eventArgs.data.CropedImage.split(',')[1];\r\n\r\n if (!this.IsImageGallery){\r\n const fileModel = new FileModel();\r\n fileModel.ImageData = eventArgs.data.CropedImage;\r\n\r\n this._image(fileModel);\r\n if (!this._dataModel()) {\r\n this._dataModel(new ImageDataModel())\r\n }\r\n this._dataModel().Files.push(fileModel);\r\n this._dataModel.valueHasMutated();\r\n\r\n fileModel.Attachment = attachmentModel;\r\n this._attachments.push(attachmentModel);\r\n }\r\n\r\n if (this.IsImageGallery){\r\n let files = [];\r\n if(attachmentModel.Base64Data && attachmentModel.Base64Data != ''){\r\n if(self.IsImage(attachmentModel.FileName)){\r\n files.push(this.ConvertBase64ToFile(attachmentModel.Base64Data, attachmentModel.FileName));\r\n }\r\n }\r\n self.AddFiles(files);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n ShowMarkerArea(target) {\r\n const self = this;\r\n this.DisableViewerControls();\r\n\r\n const annotations = this._dataModel().Files[this._editGalleryViewer.index].Annotations;\r\n this._markerArea = new MarkerArea(target);\r\n this._markerArea.renderImageType = 'image/png';\r\n this._markerArea.renderMarkersOnly = true;\r\n this._markerArea.uiStyleSettings.zIndex = ZIndexManager.Instance.NextValue,\r\n\r\n this._markerArea.addRenderEventListener((imgURL, state) => {\r\n\r\n let svgList = $('.__markerjs2_').find('svg'), svg = svgList[svgList.length - 1], svgString, svgBase64;\r\n svgString = new XMLSerializer().serializeToString(svg);\r\n svgBase64 = `data:image/svg+xml;base64,${window.btoa(svgString)}`;\r\n\r\n const fileModel = this._dataModel().Files[this._editGalleryViewer.index];\r\n\r\n let images = $('.viewer-canvas').find('img');\r\n let img = images[images.length - 1];\r\n\r\n let canvas = document.createElement(\"canvas\"), context, width = img.offsetWidth, height = img.offsetHeight;\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n context = canvas.getContext(\"2d\");\r\n context.rect(0 , 0 , canvas.width , canvas.height);\r\n\r\n let originalImage = document.createElement('img');\r\n originalImage.src = fileModel.OriginalImageData;\r\n originalImage.crossOrigin = 'Anonymous';\r\n\r\n originalImage.onload = function(){\r\n context.drawImage(originalImage , 0 , 0 , width , height);\r\n\r\n let svgImage = document.createElement('img');\r\n svgImage.src = svgBase64;\r\n svgImage.crossOrigin = 'Anonymous';\r\n\r\n svgImage.onload = function(){\r\n context.drawImage(svgImage , 0 , 0 , width , height);\r\n let base64 = canvas.toDataURL(\"image/png\");\r\n\r\n const fileForPreview = self._dataModel().Files[self._editGalleryViewer.index] as any;\r\n let prevEl = fileForPreview.previewElement;\r\n\r\n if (!prevEl) {\r\n _.map(self._uploadedFilesObjects, (fileObject) => {\r\n if (fileObject.Id == fileModel.Id) {\r\n prevEl = fileObject.File.previewElement;\r\n }\r\n });\r\n }\r\n let previewImageElement = $(prevEl).find('.dz-image > img');\r\n previewImageElement.attr('src', base64);\r\n\r\n const attachmentModel = new AttachmentModel(), attachment = self._attachments.find(a => a.Index == self._editGalleryViewer.index),\r\n annotation = self._annotations.find(a => a.Id === fileModel.Id);\r\n\r\n if (fileModel.Name) {\r\n attachmentModel.FileName = TruncateFileName(fileModel.Name);\r\n } else {\r\n attachmentModel.FileName = TruncateFileName(attachment.FileName);\r\n }\r\n\r\n attachmentModel.Base64Data = base64.replace('data:image/png;base64,', '');\r\n attachmentModel.TempName = `${Guid.NewGuid()}_${attachmentModel.FileName}`;\r\n\r\n let file;\r\n if(attachmentModel.Base64Data && attachmentModel.Base64Data != ''){\r\n file = self.ConvertBase64ToFile(attachmentModel.Base64Data, attachmentModel.FileName);\r\n\r\n let chunks = self.CutByChunks(file);\r\n self.UploadFileChunks(chunks, attachmentModel.TempName, 1, chunks.length)\r\n .then(() => BlockUi.Unblock());\r\n }\r\n\r\n if (fileModel.Attachment) {\r\n fileModel.TempOriginalName = fileModel.Attachment.TempName;\r\n } else {\r\n let originalImageFile, originalImageBase64 = fileModel.OriginalImageData.replace('data:', '').replace(/^.+,/, '');\r\n fileModel.TempOriginalName = `${Guid.NewGuid()}_${fileModel.Name}`;\r\n\r\n if (originalImageBase64 && originalImageBase64 != '') {\r\n originalImageFile = self.ConvertBase64ToFile(originalImageBase64, fileModel.Name);\r\n\r\n let chunks = self.CutByChunks(originalImageFile);\r\n self.UploadFileChunks(chunks, fileModel.TempOriginalName, 1, chunks.length)\r\n .then(() => BlockUi.Unblock());\r\n }\r\n }\r\n\r\n fileModel.TempName = attachmentModel.TempName;\r\n fileModel.Annotations = JSON.stringify(state);\r\n\r\n if (annotation) {\r\n annotation.Annotations = fileModel.Annotations;\r\n annotation.TempName = fileModel.TempName;\r\n annotation.TempOriginalName = fileModel.TempOriginalName;\r\n } else {\r\n const attachment = self._attachments.find(a => a.Index == self._editGalleryViewer.index);\r\n if (attachment) {\r\n attachment.Annotations = fileModel.Annotations;\r\n attachment.TempName = fileModel.TempName;\r\n attachment.TempOriginalName = fileModel.TempOriginalName;\r\n } else {\r\n const newAnnotation = new FileModel();\r\n newAnnotation.Id = fileModel.Id;\r\n newAnnotation.Annotations = fileModel.Annotations;\r\n newAnnotation.TempName = fileModel.TempName;\r\n newAnnotation.TempOriginalName = fileModel.TempOriginalName;\r\n self._annotations.push(newAnnotation);\r\n }\r\n }\r\n\r\n self.EnableViewerControls();\r\n }\r\n };\r\n });\r\n\r\n this._markerButton.classList.add(\"disabled\");\r\n this._markerButton.setAttribute('style', 'pointer-events: none;');\r\n this._markerArea.addCloseEventListener(() => {\r\n this.EnableViewerControls();\r\n this._annotationsShown(true);\r\n this._markerButton.classList.remove(\"disabled\");\r\n this._markerButton.setAttribute('style', 'pointer-events: auto;');\r\n });\r\n\r\n this._markerArea.show();\r\n this._annotationsShown(false);\r\n\r\n if (annotations) {\r\n this._markerArea.restoreState(JSON.parse(annotations));\r\n }\r\n }\r\n\r\n DisableViewerControls() {\r\n this._editGalleryViewer.options.movable = false;\r\n this._editGalleryViewer.options.zoomable = false;\r\n this._editGalleryViewer.options.rotatable = false;\r\n this._editGalleryViewer.options.flippable = false;\r\n }\r\n\r\n EnableViewerControls() {\r\n this._editGalleryViewer.options.movable = true;\r\n this._editGalleryViewer.options.zoomable = true;\r\n this._editGalleryViewer.options.flippable = true;\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"image-control\\\" data-bind=\\\"css: {'isImageGallery': _isImageGallery}, class: GetImageClass(), click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"form-standart-control clearfix ConsultScreenView imagecontrol-result image-control-result\\\"> <div class=\\\"image-controlWrapper\\\"> <!-- ko if: _isImageGallery--> <!-- ko with: _dataModel() --> <div class=\\\"mix-grid images-container clearfix\\\" data-bind=\\\"viewerJs: {images: Files, getOriginalImage: $parent.GetOriginalImage.bind($parent) }\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: !_isImageGallery--> <!-- ko if: !_image()--> <img class=\\\"image-item\\\" src=\\\"data:image/jpeg;base64,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\\\" width=\\\"148\\\" height=\\\"100\\\" alt=\\\"No Image\\\"/> <!-- /ko --> <!-- ko if: _image()--> <!-- ko with: _image() --> <img data-bind=\\\"attr: { src: ImageData }\\\" class=\\\"image-item\\\" width=\\\"148\\\" height=\\\"100\\\" alt=\\\"No Image\\\"> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"image-control\\\" data-bind=\\\"css: {'isImageGallery': _isImageGallery}, class: GetImageClass(), click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"form-standart-control clearfix ConsultScreenView imagecontrol-result image-control-result\\\"> <div class=\\\"image-controlWrapper\\\"> <!-- ko if: _isImageGallery--> <!-- ko with: _dataModel() --> <div class=\\\"mix-grid images-container clearfix\\\" data-bind=\\\"viewerJs: {images: Files, getOriginalImage: $parent.GetOriginalImage.bind($parent), annotationsEnabled: $parent._annotationsEnabled(), showAnnotations: $parent._showAnnotations() }\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: !_isImageGallery--> <!-- ko if: !_image()--> <img data-bind=\\\"tooltip: DescriptionToolTip\\\" class=\\\"image-item\\\" src=\\\"data:image/jpeg;base64,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\\\" width=\\\"148\\\" height=\\\"100\\\" alt=\\\"No Image\\\"/> <!-- /ko --> <!-- /ko --> <!-- ko if: _image()--> <!-- ko with: _dataModel() --> <div class=\\\"image-control__single-image\\\" data-bind=\\\"tooltip: $parent.DescriptionToolTip, viewerJs: {images: Files, imageClasses: 'image-item', getOriginalImage: $parent.GetOriginalImage.bind($parent) }\\\"></div> <!-- /ko --> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"image-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-picture-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"css: _imageHeight\\\" data-control-type=\\\"image-control\\\" class=\\\"FormDesignerView form-designer-view clearfix control-prev-image form-standart-control new-control\\\"> <img class=\\\"image-item\\\" src=\\\"/img/Custom/pic.jpg\\\" alt=\\\"ImageControl\\\"/> </div>\\t\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"image-control\\\" data-bind=\\\"css: {'isImageGallery': _isImageGallery, 'noImageFile': !IsImageFile}, style: { backgroundColor: _backgroundColor }, class: GetImageClass(), click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"EditScreenView image-control imagecontrol-result form-standart-control\\\"> <!-- ko if: !GetCombinedReadOnly() --> <div class=\\\"transition camera-block\\\" data-bind=\\\"visible: !$data._isMobile, click: GetImageFromCamera\\\"> <i class=\\\"transition fa fa-camera\\\"></i> </div> <!-- /ko --> <!-- ko if: !_isImageGallery--> <!-- ko with: Image --> <!-- ko if: ImageData --> <div class=\\\"image-wrap-container\\\"> <!-- ko if: !$parent.GetCombinedReadOnly() --> <a class=\\\"remove-mark\\\" data-bind=\\\"click: $parent.ImageDelete.bind($parent)\\\"></a> <!-- /ko --> <img data-bind=\\\"attr: { src: ImageData },\\r\\n\\t\\t\\t\\t\\t\\t dropzone: { url: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t\\t\\t\\t\\t\\t previewsContainer: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t clickable: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t autoProcessQueue: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t addedfile: $parent.AfterUpload.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t acceptedFiles: '.png,.gif,.jpg,.jpeg,.jpe,.jif,.jfif,.jfi,.webp' },\\r\\n\\t\\t\\t\\t\\t\\ttooltip: $parent.DescriptionToolTip,\\r\\n\\t\\t\\t\\t\\t\\tcss: $parent._cropedImageClass\\\" style=\\\"cursor:pointer\\\" alt=\\\"No Image\\\" class=\\\"image-item\\\"/> </div> <!-- /ko --> <!-- ko if: !ImageData --> <div data-bind=\\\"dropzone: {\\r\\n\\t\\t\\t\\t\\t\\t\\t url: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t\\t\\t\\t\\t\\t autoProcessQueue: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t addedfile: $parent.AfterUpload.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t maxFiles: 1,\\r\\n\\t\\t\\t\\t\\t\\t\\t acceptedFiles: '.png,.gif,.jpg,.jpeg,.jpe,.jif,.jfif,.jfi,.webp'\\r\\n\\t\\t\\t\\t }, tooltip: $parent.DescriptionToolTip\\\" class=\\\"dropzone\\\"> <div class=\\\"dz-message custom image-message\\\" data-dz-message> <span> <!-- ko if: !$parent.GetCombinedReadOnly() --> <b class=\\\"image-message-text\\\"><!-- ko text: $parent._labels.UPLOAD_IMAGE --><!-- /ko --></b><i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> <!-- ko if: $parent.GetCombinedReadOnly() --> No Image <!-- /ko --> </span> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko if: _isImageGallery --> <div data-bind=\\\"scrollFixer: {},\\r\\n\\t\\t dropzone: {\\r\\n\\t\\t\\t url: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t\\t autoProcessQueue: false,\\r\\n\\t\\t\\t maxFilesize: $data.MaxFileSize,\\r\\n\\t\\t\\t maxThumbnailFilesize: $data.MaxFileSize,\\r\\n\\t\\t\\t addRemoveLinks: !GetCombinedReadOnly(),\\r\\n\\t\\t\\t dictRemoveFile: '',\\r\\n\\t\\t\\t acceptedFiles: '.png,.gif,.jpg,.jpeg,.jpe,.jif,.jfif,.jfi,.webp'\\r\\n\\t\\t }\\\" class=\\\"dropzone\\\"> <div class=\\\"dz-message custom image-message\\\" data-dz-message> <!-- ko if: !GetCombinedReadOnly() --> <span><!-- ko text: _labels.UPLOAD_IMAGE --><!-- /ko --><i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> <!-- ko if: GetCombinedReadOnly() --> No Image <!-- /ko --> </div> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore'\r\nimport * as $ from \"jquery\"\r\nimport {Modal} from 'Core/Common/Modal'\r\nimport {Event} from 'Core/Common/Event'\r\n\r\nimport ImageCropperScreenTemplate\r\n from 'Core/Controls/Image/ImageCropperScreen/Templates/ImageCropperScreen.html'\r\nimport enumerable from '../../../Common/Decorators/EnumerableDecorator';\r\n\r\nko.templates['Core/Controls/Image/ImageCropperScreen/Templates/ImageCropperScreen'] = ImageCropperScreenTemplate;\r\n\r\n\r\nexport class ImageCropperScreen extends Event {\r\n private _modal: Modal;\r\n private _image: string;\r\n private _type: string;\r\n private _cropedImage: string;\r\n private _aspectRatio: number;\r\n private _windowWidth: number;\r\n\r\n constructor(isPortrait: boolean = false) {\r\n super();\r\n this._aspectRatio = isPortrait ? 3 / 4 : undefined;\r\n this._image = '';\r\n this.AddEvent('IMAGE_CROPPED');\r\n this._windowWidth = $(window).width();\r\n }\r\n\r\n set Image(image: string) {\r\n this._image = image;\r\n }\r\n\r\n get Image() {\r\n return this._image;\r\n }\r\n\r\n set Type(type: string) {\r\n this._type = type;\r\n }\r\n\r\n get Type() {\r\n return this._type;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/Image/ImageCropperScreen/Templates/ImageCropperScreen';\r\n }\r\n\r\n Show() {\r\n this._modal = new Modal({\r\n addClass: 'image-cropper-screen'\r\n });\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n AfterRender() {\r\n this._modal.Show();\r\n }\r\n\r\n Save() {\r\n this.Trigger('IMAGE_CROPPED', {CropedImage: this._cropedImage});\r\n this._modal.Close();\r\n }\r\n\r\n Cancel() {\r\n this._modal.Close();\r\n }\r\n\r\n AfterCrop(image) {\r\n this._cropedImage = image;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet light scroll-fixer\\\"> <div class=\\\"noborder portlet-body\\\"> <div class=\\\"actionBarSubForm\\\"> <a data-bind=\\\"click: Save\\\" class=\\\"btn green subFormControl\\\" id=\\\"saveBtn\\\"> <i class=\\\"fa fa-save\\\"></i> Save </a> <a data-bind=\\\"click: Cancel\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\" id=\\\"cancelBtn\\\"> <i class=\\\"fa fa-close\\\"></i> Cancel </a> </div> <div class=\\\"mainSubForm margin-top-10 crop-container\\\"> <div class=\\\"row\\\"> <div class=\\\"col-md-12\\\"> <div class=\\\"crop-image-container\\\"> <img data-bind=\\\"attr: { src: Image },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t cropper: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\ttype: Type,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tafterCrop: $data.AfterCrop.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tautoCropArea: 1,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taspectRatio: $data._aspectRatio,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmovable: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tzoomable: $data._windowWidth <= 768 ? false : true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcropBoxResizable: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tminContainerWidth: 290,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tminContainerHeight: 350\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\"> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","/// <reference types=\"webrtc\" />\r\n\r\nimport * as ko from \"knockout\";\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { addCustomEvent } from \"Session/SessionRecorder\";\r\nimport CameraTemplate from 'Core/Controls/Image/Templates/CameraTemplate.html'\r\nko.templates['Core/Controls/Image/Templates/CameraTemplate'] = CameraTemplate;\r\n\r\nexport class ImageFromCamera extends Event {\r\n\tprivate _canvas: any;\r\n\tprivate _video: any;\r\n\tprivate _context: any;\r\n\tprivate _modal: Modal;\r\n\tprivate _cansavStatus: KnockoutObservable<boolean>;\r\n\tprivate _showStream: KnockoutObservable<boolean>;\r\n\tprivate _stream: MediaStream;\r\n\tprivate _el: any;\r\n\tprivate _labels: LABELS;\r\n\tprivate _width: KnockoutObservable<number>;\r\n\tprivate _height: KnockoutObservable<number>;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis._canvas = ko.observable(null);\r\n\t\tthis._video = ko.observable(null);\r\n\t\tthis._cansavStatus = ko.observable(false);\r\n\t\tthis.AddEvent('SAVE');\r\n\t\tthis.AddEvent('Close');\r\n\t\tthis._showStream = ko.observable(true);\r\n\t\tthis._labels = LABELS;\r\n\t\tthis._width = ko.observable(null);\r\n\t\tthis._height = ko.observable(null);\r\n\r\n\t\tthis.GetCameraStream()\r\n\t\t\t.then((stream) => {\r\n\t\t\t\tthis._stream = stream;\r\n\t\t\t\tlet videoTrack = stream.getVideoTracks()[0];\r\n\t\t\t\tlet settings = videoTrack.getSettings();\r\n\r\n\t\t\t\tthis._width(settings.width);\r\n\t\t\t\tthis._height(settings.height);\r\n\r\n\t\t\t\tthis.ShowInModal();\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tconst message = NOTIFICATIONS.ERROR_CAMERA_INITIALIZATION.replace('{ErrorMessage}', error.message);\r\n\t\t\t\tnew Notifier(null).Failed(message);\r\n\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t}\r\n\r\n\tAfterRender(el) {\r\n\t\tthis._el = el;\r\n\r\n\t\tthis.InitPhotoPreview();\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tInitPhotoPreview() {\r\n\t\tthis._video = $(this._el).find('#video')[0];\r\n\t\tthis._canvas = $(this._el).find('#canvas')[0];\r\n\t\tthis._context = this._canvas.getContext('2d');\r\n\r\n if ('srcObject' in this._video) {\r\n this._video.srcObject = this._stream;\r\n } else {\r\n\t\t\tconst url = window.URL || window['webkitURL'];\r\n // Avoid using this in new browsers, as it is going away.\r\n this._video.src = url.createObjectURL(this._stream as any);\r\n }\r\n\t\tthis._video.play();\r\n\t}\r\n\r\n\tGetCameraStream(): Promise<MediaStream> {\r\n\t\treturn new Promise((resolve, reject) => {\r\n const constraints = {\r\n\t\t\t\tvideo: {\r\n\t\t\t\t\twidth: {\r\n\t\t\t\t\t\tmin: 640,\r\n\t\t\t\t\t\tideal: 1920,\r\n\t\t\t\t\t\tmax: 2560,\r\n\t\t\t\t\t},\r\n\t\t\t\t\theight: {\r\n\t\t\t\t\t\tmin: 480,\r\n\t\t\t\t\t\tideal: 1080,\r\n\t\t\t\t\t\tmax: 1440\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvideo: true\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\r\n navigator.mediaDevices.getUserMedia(constraints)\r\n .then(resolve)\r\n .catch(reject);\r\n\r\n } else {\r\n // for browsers that doesn't support mediaDevices.getUserMedia method\r\n navigator.getUserMedia =\r\n navigator.getUserMedia ||\r\n navigator['webkitGetUserMedia'] ||\r\n navigator['mozGetUserMedia'] ||\r\n navigator['msGetUserMedia'];\r\n\r\n if (navigator.getUserMedia) {\r\n navigator.getUserMedia(constraints, resolve, reject);\r\n } else {\r\n const notifier = new Notifier(null);\r\n\r\n notifier.Failed(NOTIFICATIONS.GET_USER_MEDIA_IS_NOT_SUPPORTED);\r\n this.CloseModal();\r\n return reject({ message: NOTIFICATIONS.GET_USER_MEDIA_IS_NOT_SUPPORTED});\r\n }\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tTakePhoto() {\r\n\t\tthis._context.drawImage(this._video, 0, 0, 1920, 1080, 0, 0, 1920, 1080);\r\n\t\tthis._cansavStatus(true);\r\n\t\tthis._showStream(false);\r\n\t\tthis.StopStream();\r\n\t}\r\n\r\n\tBackToStream() {\r\n\t\tthis.GetCameraStream()\r\n\t\t\t.then((stream) => {\r\n\t\t\t\tthis._stream = stream;\r\n\r\n\t\t\t\tthis.InitPhotoPreview();\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tthis.CloseModal();\r\n\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\r\n\r\n\t\tthis._showStream(true);\r\n\t}\r\n\r\n StopStream() {\r\n if (this._stream) {\r\n this._stream.getTracks().forEach((stream) => stream.stop());\r\n }\r\n\t}\r\n\r\n\tSave() {\r\n\t\taddCustomEvent('save-photo', {});\t\t\r\n\t\tif (this._cansavStatus()) {\r\n\t\t\tconst base64Image = this._canvas.toDataURL('image/jpeg');\r\n\r\n\t\t\tthis._modal.Close();\r\n\t\t\tthis.Trigger('SAVE', { Image: base64Image });\r\n\t\t} else {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.PLEASE_TAKE_PHOTO);\r\n\t\t}\r\n\t}\r\n\r\n\tShowInModal() {\r\n\t\tthis._modal = new Modal({\r\n\t\t\twidthInPercent: 100,\r\n\t\t\theightInPercent: 100,\r\n\t\t\taddClass: 'camera-modal'\r\n\t\t}, false);\r\n\r\n\t\tthis._modal.On('CLOSE', this, this.StopStream);\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t}\r\n\r\n\tCloseModal() {\r\n this.StopStream();\r\n if (this._modal) {\r\n \tthis._modal.Close();\r\n }\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/Image/Templates/CameraTemplate';\r\n\t}\r\n\r\n\tCloseComponentInModal() {\r\n\t\tthis.CloseModal();\r\n\t}\r\n}\r\n","// Module\nvar code = \"<div class=\\\"camera-modal clearfix\\\"> <div class=\\\"camera-controls clearfix\\\"> <button data-bind=\\\"click: $data.BackToStream.bind($data), visible: !$data._showStream()\\\" class=\\\"btn default\\\"> <span><!-- ko text: _labels.BACK --><!-- /ko --></span> </button> <button data-bind=\\\"click: $data.TakePhoto.bind($data), visible: $data._showStream()\\\" class=\\\"btn green\\\"> <span><!-- ko text: _labels.SNAP_PHOTO --><!-- /ko --></span> </button> <button data-bind=\\\"click: $data.Save.bind($data), visible: !$data._showStream()\\\" class=\\\"btn green\\\"> <span><!-- ko text: _labels.SAVE --><!-- /ko --></span> </button> </div> <div class=\\\"camera-pictures clearfix\\\"> <video data-bind=\\\"visible: $data._showStream()\\\" id=\\\"video\\\" class=\\\"camera-video\\\" autoplay> </video> <canvas data-bind=\\\"visible: !$data._showStream(), attr: { width: _width(), height: _height()}\\\" id=\\\"canvas\\\" class=\\\"camera-canvas\\\"> </canvas> </div> </div>\";\n// Exports\nexport default code;","import { deserialize, deserializeAs } from 'libs/cerialize';\r\nexport class AttachmentModel {\r\n\tconstructor() {\r\n\t\tthis.FileName = null;\r\n\t\tthis.Base64Data = null;\r\n\t}\r\n\r\n\t@deserialize\r\n\tFileName: string;\r\n\r\n\t@deserialize\r\n\tIndex: number;\r\n\r\n\t@deserialize\r\n\tBase64Data: string;\r\n\r\n\t@deserialize\r\n\tTempName: string;\r\n\r\n\t@deserialize\r\n\tTempOriginalName: string;\r\n\r\n\t@deserialize\r\n\tAnnotations: string;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {AttachmentModel} from 'Core/Controls/Image/Models/AttachmentModel';\r\n\r\nexport class FileModel {\r\n\tconstructor() {\r\n\t\tthis.UniqueId = Guid.NewGuid();\r\n\t\tthis.ImageData = null;\r\n\t\tthis.Name = null;\r\n\t\tthis.OriginalImageData = null;\r\n\t\tthis.CacheFile = null;\r\n\t\tthis.Annotations = null;\r\n\t\tthis.TempName = null;\r\n\t\tthis.TempOriginalName = null;\r\n\t}\r\n\r\n\tUniqueId: string;\r\n\r\n\t@deserialize\r\n\tImageData: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tSize: number;\r\n\r\n\t@deserialize\r\n\tOriginalImageData: string;\r\n\r\n\t@deserialize\r\n\tId: number | string;\r\n\r\n\t@deserialize\r\n\tAnnotations: string;\r\n\r\n\t@deserialize\r\n TempName?: string;\r\n\r\n @deserialize\r\n TempOriginalName?: string;\r\n\r\n\tAttachment: AttachmentModel;\r\n\r\n\tCacheFile?: any;\r\n}\r\n\r\nexport class ImageDataModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.Files = [];\r\n\t}\r\n\r\n\t@deserializeAs(FileModel)\r\n\tFiles: Array<FileModel>;\r\n}","\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {ImageDataModel} from 'Core/Controls/Image/Models/ImageDataModel';\r\nimport {AttachmentModel} from 'Core/Controls/Image/Models/AttachmentModel';\r\n\r\nexport interface IGetImageControlDataRequestModel {\r\n\tControlId?: number;\r\n\tFieldId: number;\r\n\tRecordId: number | string;\r\n\tFirstRecordOnly?: boolean;\r\n};\r\n\r\nexport class ImageDataStore {\r\n\tstatic Get(params: IGetImageControlDataRequestModel): P.Promise<ImageDataModel> {\r\n\t\tvar deferredResult = P.defer<ImageDataModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n url: '/api/ScreenFormApi/GetImageControlData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetOriginal(params: IGetImageControlDataRequestModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/ScreenFormApi/GetOriginalImage',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.DeserializeAttachment(data.ResultObject));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t}).fail(error => deferredResult.reject({message: 'Error getting original image'}));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic SaveCropedImage(params: any): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.IMAGE.SAVE_UPLOADED_FILE,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\tcache: false,\r\n\t\t\t\tcontentType: false,\r\n\t\t\t\tprocessData: false\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): ImageDataModel {\r\n\t\tvar model = <ImageDataModel>Deserialize(jsonObject, ImageDataModel);\r\n\t\treturn model;\r\n\t}\r\n\r\n\tstatic DeserializeAttachment(jsonObject: any): AttachmentModel {\r\n\t\tvar model = <AttachmentModel>Deserialize(jsonObject, AttachmentModel);\r\n\t\treturn model;\r\n\t}\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class KanbanParentTypeModel {\r\n @deserialize\r\n K_Type: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n}","import * as ko from 'knockout';\r\nimport { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { KanbanParentTypeModel } from 'Core/Controls/Kanban/Models/KanbanParentTypeModel';\r\n\r\nexport class EntityTypeModel {\r\n\tconstructor() {\r\n\t\tthis.HasFlowFolder = null;\r\n\t\tthis.ParentTypeModels = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tK_Type: number;\r\n\r\n\t@deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n\t@deserialize\r\n\tHasFlowFolder: boolean;\r\n\r\n\t@deserialize\r\n\tShowTypeHierarchy: boolean;\r\n\r\n\t@deserializeAs(KanbanParentTypeModel)\r\n\tParentTypeModels: Array<KanbanParentTypeModel>;\r\n}","import { deserialize } from \"libs/cerialize\";\r\n\r\nexport class TagModel {\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTagId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tGroupId: number;\r\n\r\n\t@deserialize\r\n\tGroupName: string;\r\n\r\n\tget FullName(): string {\r\n\t\tlet groupName = this.GroupName ? (this.GroupName + '/') : '';\r\n\t\tlet name = this.Name || \"\";\r\n\t\treturn groupName + name;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { TagModel } from \"Core/Controls/Kanban/Models/TagModel\";\r\nimport { IconModel } from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport { TimerModel } from \"Core/Controls/Timer/Models/TimerModel\";\r\n\r\nexport class UserModel {\r\n\r\n\t@deserialize\r\n\tUserId: number;\r\n\r\n\t@deserialize\r\n\tContactId: number;\r\n\r\n\t@deserialize\r\n\tUserName: string;\r\n\r\n\t@deserialize\r\n\tUserTypeId: number;\r\n\r\n\t@deserialize\r\n\tUserTypeName: string;\r\n\r\n\t@deserialize\r\n\tIsOwner: boolean;\r\n}\r\n\r\nexport class MainLink {\r\n\r\n\t@deserialize\r\n\tIcon: IconModel;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tRecordName: string;\r\n\r\n\t@deserialize\r\n\tTableId: number;\r\n}\r\n\r\nexport class PriorityModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tColor: string;\r\n}\r\n\r\nexport class CardThumbnailModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tImage: string;\r\n\r\n\t@deserialize\r\n\tFieldId: number;\r\n}\r\n\r\nexport class ParentOrChildRecordModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tIsChild: boolean;\r\n\r\n\t@deserialize\r\n\tIsParent: boolean;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tTypeNameTranslation: string;\r\n}\r\n\r\nexport class ActionModel {\r\n\tconstructor() {\r\n\t\tthis.Users = [];\r\n\t\tthis.HighlightedAction = null;\r\n\t\tthis.Tags = [];\r\n\t\tthis.IsDisabledCard = null;\r\n\t\tthis.NewActiveTimer = null;\r\n\t}\r\n\tNewActiveTimer: TimerModel;\r\n\r\n\tIsDisabledCard: boolean;\r\n\r\n\tHighlightedAction: boolean;\r\n\r\n\t@deserializeAs(UserModel)\r\n\tUsers: Array<UserModel>;\r\n\r\n\t@deserializeAs(TagModel)\r\n\tTags: Array<TagModel>;\r\n\r\n\t@deserialize\r\n\tActionName: string;\r\n\r\n\t@deserialize\r\n\tActionsEntityId: number;\r\n\r\n\t@deserialize\r\n\tActionRecordId: number;\r\n\r\n\t@deserialize\r\n\tActionTypeId: number;\r\n\r\n\t@deserialize\r\n\tActionTypeName: string;\r\n\r\n\t@deserialize\r\n\tActionLifestatusId: number;\r\n\r\n\t@deserialize\r\n\tActionMemo: string;\r\n\r\n\t@deserialize\r\n\tActionDate: string;\r\n\r\n\t@deserialize\r\n\tActionDeadline: string;\r\n\r\n\t@deserialize\r\n\tIsDisabled: boolean;\r\n\r\n\t@deserialize\r\n\tDisabledReason: string;\r\n\r\n\t@deserializeAs(PriorityModel)\r\n\tPriority: PriorityModel;\r\n\r\n\t@deserializeAs(CardThumbnailModel)\r\n\tThumbnail: CardThumbnailModel;\r\n\r\n\t@deserialize\r\n\tMailsCount: number;\r\n\r\n\t@deserializeAs(TimerModel)\r\n\tActiveTimer: TimerModel;\r\n\r\n\t@deserialize\r\n\tColor: string;\r\n\r\n\t@deserialize\r\n\tWarnings: string[];\r\n\r\n\t@deserialize\r\n\tActionAlias: string;\r\n\r\n\tset NewActiveTimerModel(timer: TimerModel) {\r\n\t\tthis.NewActiveTimer = timer;\r\n\t}\r\n\r\n\tget ReplaceActionMemoText(): string {\r\n\t\tif (this.ActionMemo){\r\n\t\t\t//Convert \"\\r\\\" to \"<br>\" and remove the first and last \"<br>\"\r\n\t\t\treturn this.ActionMemo.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>').replace(/^(?:<br>)+|(?:<br>)+$/g, \"\");\r\n\t\t} else {\r\n\t\t\treturn null\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport class RecordModel {\r\n\tAriaExpanded: KnockoutObservable<boolean>\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = [];\r\n\t\tthis.AriaExpanded = ko.observable(true);\r\n\t\tthis.IsDisabledCard = null;\r\n\t}\r\n\r\n\tToggleAccordion(data){\r\n\t\tdata.record.AriaExpanded(!data.record.AriaExpanded());\r\n\t}\r\n\r\n\tIsDisabledCard: boolean;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tLifestatusId: number;\r\n\r\n\t@deserialize\r\n\tLifestatusName: string;\r\n\r\n\t@deserialize\r\n\tLifeStatusTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tLinkName: string;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tIsDisabled: boolean;\r\n\r\n\t@deserialize\r\n\tDisabledReason: string;\r\n\r\n\t@deserialize\r\n\tActionsEntityId: number;\r\n\r\n\t@deserializeAs(UserModel)\r\n\tUsers: Array<UserModel>;\r\n\r\n\t@deserializeAs(TagModel)\r\n\tTags: Array<TagModel>;\r\n\r\n\t@deserialize\r\n\tHasAction: boolean;\r\n\r\n\t@deserializeAs(ActionModel)\r\n\tActions: Array<ActionModel>;\r\n\r\n\t@deserializeAs(MainLink)\r\n\tMainLinks: Array<MainLink>;\r\n\r\n\t@deserializeAs(PriorityModel)\r\n\tPriority: PriorityModel;\r\n\r\n\t@deserializeAs(CardThumbnailModel)\r\n\tThumbnail: CardThumbnailModel;\r\n\r\n\t@deserialize\r\n\tMailsCount: number;\r\n\r\n\t@deserialize\r\n\tColor: string;\r\n\r\n\t@deserialize\r\n\tRetiredTodoActionsNumber: number;\r\n\r\n\t@deserialize\r\n\tTotalTodoActionsNumber: number;\r\n\r\n\t@deserialize\r\n\tWarnings: string[];\r\n\r\n\t@deserializeAs(ParentOrChildRecordModel)\r\n\tParentOrChildRecords: Array<ParentOrChildRecordModel>;\r\n\r\n\t@deserialize\r\n\tAlias: string;\r\n\r\n\tget ReplaceMemoText(): string {\r\n\t\tif (this.Memo){\r\n\t\t\t//Convert \"\\r\\\" to \"<br>\" and remove the first and last \"<br>\"\r\n\t\t\treturn this.Memo.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>').replace(/^(?:<br>)+|(?:<br>)+$/g, \"\");\r\n\t\t} else {\r\n\t\t\treturn null\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport class ActionItemModel {\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tIsRequired: boolean;\r\n\r\n\t@deserialize\r\n\tSort: number;\r\n\r\n\t@deserialize\r\n\tState: number;\r\n}\r\n\r\nexport class StepModel {\r\n\tconstructor(init?: Partial<StepModel>) {\r\n\t\tif (init) {\r\n\t\t\tthis.Label = init.Label;\r\n\t\t}\r\n\t\tthis.Records = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n IsRetired: boolean;\r\n\r\n @deserialize\r\n MultipleActions: boolean;\r\n\r\n\t@deserializeAs(ActionItemModel)\r\n\tActionItems: Array<ActionItemModel>;\r\n\r\n\t@deserialize\r\n\tLabel: string;\r\n\r\n\t@deserialize\r\n\tSort: number;\r\n\r\n\t@deserialize\r\n\tUserId: number;\r\n\r\n\tRecords: Array<RecordModel>;\r\n\r\n\t@deserialize\r\n\tEnabled: boolean;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tMemoTranslation: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\tCopy() {\r\n\t\tconst copy = new StepModel();\r\n\r\n\t\tcopy.Id = this.Id;\r\n\t\tcopy.Label = this.Label;\r\n\t\tcopy.Enabled = this.Enabled;\r\n\t\tcopy.IsRetired = this.IsRetired;\r\n\t\tcopy.UserId = this.UserId;\r\n\t\tcopy.Sort = this.Sort;\r\n\t\tcopy.Records = [...this.Records];\r\n copy.TranslatedName = this.TranslatedName;\r\n copy.MultipleActions = this.MultipleActions;\r\n copy.ActionItems = [...this.ActionItems];\r\n\r\n\t\treturn copy;\r\n\t}\r\n}\r\n\r\nexport class ThumbnailModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tImage: string;\r\n}\r\n\r\nexport class LinkModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tIdStepFrom: number;\r\n\r\n\t@deserialize\r\n\tIdStepTo: number;\r\n\r\n\t@deserialize\r\n\tLabel: string;\r\n\r\n\t@deserialize\r\n\tUserId: number;\r\n}\r\n\r\nexport class StatusModel {\r\n\t@deserializeAs(RecordModel)\r\n\tRecords: Array<RecordModel>;\r\n\r\n\t@deserializeAs(StepModel)\r\n\tSteps: Array<StepModel>;\r\n\r\n\t@deserializeAs(ThumbnailModel)\r\n\tThumbnails: Array<ThumbnailModel>;\r\n\r\n\t@deserializeAs(LinkModel)\r\n\tLinks: Array<LinkModel>;\r\n\r\n\t@deserializeAs(PriorityModel)\r\n\tPriorities: Array<PriorityModel>;\r\n\r\n\t@deserialize\r\n\tHasTodoType: boolean;\r\n\r\n\t@deserialize\r\n\tIsTodoEnabled: boolean;\r\n\r\n\t@deserialize\r\n\tIsTypeHierarchyCorrect: boolean;\r\n\r\n\t@deserialize\r\n\tMailEntityId: number;\r\n}","import * as ko from 'knockout';\r\nimport {deserialize} from 'libs/cerialize';\r\n\r\nexport class KanbanViewModel {\r\n constructor(id: number, name: string) {\r\n this.Id = id;\r\n this.Name = name;\r\n this.LockedTableView = ko.observable(null);\r\n }\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n IsEditingAllowed: boolean;\r\n\r\n @deserialize\r\n IsDeletingAllowed: boolean;\r\n\r\n LockedTableView: KnockoutObservable<boolean>;\r\n}","import { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { KanbanViewModel } from 'Core/Controls/Kanban/Models/KanbanViewModel';\r\n\r\nexport class ViewListResponseModel {\r\n @deserializeAs(KanbanViewModel)\r\n KanbanViews: Array<KanbanViewModel>;\r\n\r\n @deserialize\r\n IsAddingRecordAllowed: boolean;\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { EntityTypeModel } from 'Core/Controls/Kanban/Models/EntityTypeModel';\r\nimport {StatusModel, ActionModel, UserModel} from 'Core/Controls/Kanban/Models/StatusModel';\r\nimport { ViewListResponseModel } from 'Core/Controls/Kanban/Models/ViewListResponseModel';\r\nimport { IGetEntityRequestModel } from \"Core/Common/Interfaces/IGetEntityRequestModel\";\r\nimport {PROPERTIES} from \"../Constants\";\r\nimport {ICheckItemSerializedValue} from \"../../../Components/ActionCheckList/CheckItems/ICheckItemSerializedValue\";\r\n\r\n\r\nexport interface IGetKanbanBoardTypesRequestModel {\r\n\tEntityId: number;\r\n\tScreenSubjectTypeId: number;\r\n\tShowTypeHierarchy: boolean;\r\n};\r\n\r\nexport interface IGetKanbanBoardStatusesRequestModel {\r\n EntityId: number;\r\n\tFieldId: number;\r\n\tTypeId?: number;\r\n\tSubjectTypeId?: number;\r\n\tRecordId? : number;\r\n\tRecordOwners: number[];\r\n\tShowPlanned: boolean;\r\n\tFilterByTypeHierarchy?: boolean;\r\n\tFilterByOwners: boolean;\r\n\tUseSubjectEntity: boolean;\r\n\tFilterByEntityId?: number;\r\n\tFilterByRecordId?: number;\r\n WithTags: boolean;\r\n WithSubjectImage: boolean;\r\n WithPriorities: boolean;\r\n WithCalculatedPriority: boolean;\r\n\tWithCalculatedViaCalсPrioPriority: boolean;\r\n WithMails: boolean;\r\n\tWithColor: boolean;\r\n\tWithTimers?: boolean;\r\n ViewId?: number;\r\n\tIsViewForAction?: boolean;\r\n IsToDo: boolean;\r\n TodoModel?: {\r\n EntityId: number;\r\n TypeId: number;\r\n FieldId: number;\r\n };\r\n\tWithMemo: boolean;\r\n\tWithToDoProgressBar?: boolean;\r\n};\r\n\r\ninterface IGetKanbanBoardViewListRequestModel {\r\n\tSubjectEntityId: number;\r\n}\r\n\r\ninterface IGetUserAllowanceRequestModel {\r\n\tTableId: number;\r\n\tSecurityWord: number;\r\n}\r\n\r\ninterface IBaseUpdateStatusRequestModel {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tNewStatusId: number;\r\n\tPreviousLifeStatusId: number;\r\n\tConfirmationPassword?: string;\r\n\tCheckItems?: ICheckItemSerializedValue[];\r\n}\r\n\r\nexport interface IUpdateStatusRequestModel extends IBaseUpdateStatusRequestModel {\r\n\tActions: Array<ActionModel>;\r\n};\r\n\r\nexport interface IUpdateActionStatusRequestModel extends IBaseUpdateStatusRequestModel {\r\n\tActionsEntityId: number;\r\n\tActionRecordId: number;\r\n\tUsers: Array<UserModel>;\r\n}\r\n\r\ninterface IUpdatePriorityRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tPriorityId: number;\r\n}\r\n\r\nexport class KanbanStore {\r\n\tstatic GetTypes(params: IGetKanbanBoardTypesRequestModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.GET_TYPES,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tvar model = GenericDeserialize<EntityTypeModel>(data.ResultObject, EntityTypeModel);\r\n\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetStatuses(params: IGetKanbanBoardStatusesRequestModel): P.Promise<StatusModel> {\r\n\t\tvar deferredResult = P.defer<StatusModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.GET_STATUSES,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tvar model = GenericDeserialize<StatusModel>(data.ResultObject, StatusModel);\r\n\t\t\t\t\tdeferredResult.resolve(model);\r\n\r\n\t\t\t\t\tfor (const warningMessage of data.Warnings) {\r\n\t\t\t\t\t\tnew Notifier().Warning(warningMessage);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject(data.ErrorMessage);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetViewList(params: IGetKanbanBoardViewListRequestModel) {\r\n\t\tconst deferredResult = P.defer<ViewListResponseModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.GET_VIEW_LIST,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(GenericDeserialize(data, ViewListResponseModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n }\r\n\r\n\tstatic GetDefaultKanbanViewMetaData(): P.Promise<IGetEntityRequestModel> {\r\n\t\tconst deferredResult = P.defer<IGetEntityRequestModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.GET_DEFAULT_VIEW_METADATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n }\r\n\r\n\tstatic GetUserAllowance(params: IGetUserAllowanceRequestModel) {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/TableSecurityApi/IsUserAllowedTo\",\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\tdataType: \"json\"\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t}).then(data => {\r\n\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\tdeferred.resolve(data.ResultObject);\r\n\t\t\t} else {\r\n\t\t\t\tdeferred.reject({message: data.ErrorMessage});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic UpdateStatus(params: IUpdateStatusRequestModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.UPDATE_STATUS,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateActionStatus(params: IUpdateActionStatusRequestModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.UPDATE_ACTION_STATUS,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdatePriority(params: IUpdatePriorityRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.UPDATE_PRIORITY,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t})\r\n\t\t\t.fail(err => {\r\n\t\t\t\tdeferredResult.reject(err);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport { KanbanParentTypeModel } from 'Core/Controls/Kanban/Models/KanbanParentTypeModel';\r\n\r\nexport class KanbanTypeViewModel {\r\n constructor(\r\n public K_Type: number,\r\n public Name: string,\r\n public TranslatedName: string,\r\n public HasFlowFolder: boolean,\r\n public ShowTypeHierarchy: boolean,\r\n public ParentTypeModels: Array<KanbanParentTypeModel>\r\n ) {\r\n this.IsSelected = ko.observable(false);\r\n }\r\n\r\n IsSelected: KnockoutObservable<boolean>;\r\n\r\n GetName(): string {\r\n const typeNameTranslation = this.TranslatedName ? this.TranslatedName : this.Name;\r\n if (!_.any(this.ParentTypeModels) || !this.ShowTypeHierarchy) {\r\n return typeNameTranslation;\r\n }\r\n\r\n const parentTypeModel = _.first(this.ParentTypeModels);\r\n const parentTypeNameTranslation = parentTypeModel.TranslatedName ? parentTypeModel.TranslatedName : parentTypeModel.Name;\r\n\r\n return `${parentTypeNameTranslation} \\\\ ${typeNameTranslation}`;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {RecordModel, LinkModel, StepModel, ActionItemModel} from 'Core/Controls/Kanban/Models/StatusModel';\r\n\r\nimport MainLinksListTemplate from 'Core/Controls/Kanban/Templates/Default/MainLinksListTemplate.html';\r\nimport NoMainLinksTemplate from 'Core/Controls/Kanban/Templates/Default/NoMainLinksTemplate.html';\r\n\r\nimport { NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport class KanbanStep {\r\n\tprivate _records: KnockoutObservableArray<RecordModel>;\r\n\tprivate _links: Array<LinkModel>;\r\n\tprivate _isCollapsed: KnockoutObservable<boolean>;\r\n\r\n\tprivate _model: StepModel;\r\n\tconstructor(step: StepModel, links: Array<LinkModel>) {\r\n\t\tthis._records = ko.observableArray(step.Records);\r\n\r\n\t\tthis._isCollapsed = ko.observable(false);\r\n\t\tthis._model = step;\r\n\t\tthis._links = links;\r\n\r\n\t}\r\n\r\n\tget ActionItems(): Array<ActionItemModel> {\r\n\t\treturn this._model && this._model.ActionItems;\r\n\t}\r\n\r\n\tget Records(): KnockoutObservableArray<RecordModel> {\r\n\t\treturn this._records;\r\n\t}\r\n\r\n\tget Model(): StepModel {\r\n\t\treturn this._model && this._model;\r\n\t}\r\n\r\n\tget IsRetired(): boolean {\r\n\t\treturn this._model.IsRetired;\r\n\t}\r\n\r\n\tget Memo(): string {\r\n\t\treturn this._model.Memo;\r\n\t}\r\n\r\n\tget MemoTranslation(): string {\r\n\t\treturn this._model.MemoTranslation;\r\n\t}\r\n\r\n\tget TranslatedName(): string {\r\n\t\treturn this._model.TranslatedName || this._model.Label;\r\n\t}\r\n\r\n\tget Label(): string {\r\n\t\treturn this._model.Label;\r\n\t}\r\n\r\n\tget Id(): number {\r\n\t\treturn this._model.Id;\r\n }\r\n\r\n get MultipleActions(): boolean {\r\n return this._model.MultipleActions;\r\n }\r\n\r\n\tAddRecord(record: RecordModel) {\r\n\t\tthis._model.Records.push(record);\r\n\t\tthis._records.push(record);\r\n\t}\r\n\r\n\tClearRecords() {\r\n\t\tthis._model.Records = [];\r\n\t\tthis._records([]);\r\n\t}\r\n\r\n\tpublic HasNextStatus(currentStatus: number): boolean {\r\n\t\tvar nextStatus = _.find(this._links, (link) => { return link.IdStepFrom === currentStatus });\r\n\t\tif (nextStatus) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget IsCollapsed(): boolean {\r\n\t\treturn this._isCollapsed();\r\n\t}\r\n\r\n\tset IsCollapsed(isCollapsed: boolean) {\r\n\t\tthis._isCollapsed(isCollapsed);\r\n\t}\r\n\r\n\tGetTestTemplate(record: RecordModel) {\r\n\t\tif (record.MainLinks.length === 0) {\r\n\t\t\treturn NoMainLinksTemplate;\r\n\t\t} else {\r\n\t\t\treturn MainLinksListTemplate;\r\n\t\t}\r\n\t}\r\n\r\n\tCopy() {\r\n\t\treturn new KanbanStep(this._model.Copy(), [...this._links]);\r\n\t}\r\n}","// Module\nvar code = \"<span> ${NOTIFICATIONS.NO_LINKED_RECORDS} </span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<ul class=\\\"list-group\\\" data-bind=\\\"debug: $context\\\"> <!-- ko foreach: $parent.MainLinks --> <li class=\\\"list-group-item\\\"> <!-- ko template: {name: 'Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate'} --> <!-- /ko --> <span class=\\\"panel-text\\\" style=\\\"vertical-align:middle\\\" data-bind=\\\"text: $parent.RecordName\\\"></span> </li> <!-- /ko --> </ul>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data), css: {'kanban-full-screen': _isFullScreen()}\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"kanbard-board-root table-toolbar-line\\\"> <div class=\\\"action-type-row\\\"> <div class=\\\"search-block\\\"> <!-- ko if: _isTodoToggleShown --> <label class=\\\"kanban-board-root__todo-toggle-block\\\"> <span class=\\\"kanban-board-root__todo-toggle-wrapper\\\"> <input type=\\\"checkbox\\\" class=\\\"kanban-board-root__todo-toggle-checkbox\\\" data-bind=\\\"checked: _isTodoSelected\\\"> <i class=\\\"fa fa-toggle-on\\\" data-bind=\\\"attr: {'data-toggle-on-name': 'On'}\\\"></i> <i class=\\\"fa fa-toggle-off\\\" data-bind=\\\"attr: {'data-toggle-on-name': 'Off'}\\\"></i> </span> <span class=\\\"kanban-board-root__todo-toggle-name\\\"><!-- ko text: Model.TodoTypeName --><!-- /ko --></span> </label> <!-- /ko --> <input type=\\\"text\\\" class=\\\"form-control input-medium\\\" placeholder=\\\"Kanban Search...\\\" data-bind=\\\"attr: {placeholder: _labels.KANBAN_SEARCH + '...', autocomplete: 'off'},\\r\\n textInput: _searchTerm,\\r\\n searchExtention: { search: $data.Search.bind($data) },\\r\\n enterKey: Search,\\r\\n escKey: ClearSearch,\\r\\n preventBubble: ['submit']\\\"> <button type=\\\"button\\\" data-bind=\\\"visible: _searchTerm, click: ClearSearch\\\" class=\\\"btn red\\\"> <i class=\\\"fa fa-times\\\"></i> </button> </div> <!--ko if: _isKanbanViewsShown--> <query-dropdowns params=\\\"\\r\\n view: _chosenKanbanView,\\r\\n viewList: _kanbanViews,\\r\\n allowViewListUnset: true,\\r\\n isAddingRecordAllowed: _isAddingRecordAllowed,\\r\\n enableEditView: _isEditingAllowed,\\r\\n enableDeleteView: _isDeletingAllowed,\\r\\n withExportFeatures: false,\\r\\n newView: NewKanbanView.bind($data),\\r\\n editView: EditKanbanView.bind($data),\\r\\n copyView: CopyKanbanView.bind($data),\\r\\n deleteView: DeleteKanbanView.bind($data)\\\" class=\\\"kanban-query-dropdowns\\\"> </query-dropdowns> <!-- /ko --> <!--ko if: _isTypesShown --> <!-- <div class=\\\"kanban-typed-box\\\">--> <!-- ko fastForEach: _entityTypes --> <label data-bind=\\\"text: GetName(),\\r\\n attr: {'type-id': K_Type},\\r\\n click: $parent.SelectType.bind($parent),\\r\\n css: { 'active': $data.IsSelected }\\\" class=\\\"panel-title action-type-id btn kanban-action-type-btn action-type-btn\\\"></label> <!-- /ko --> <!-- </div>--> <!-- /ko --> </div> <a class=\\\"kanban-fullscreen-btn\\\" data-bind=\\\"tooltip: { content: _fullScreenTooltip(),\\r\\n position: {\\r\\n x: 'left',\\r\\n y: 'center'\\r\\n },\\r\\n outside: 'x'\\r\\n }, click: $data.ChangeFullScreen.bind($data), css: {'is-full-screen': _isFullScreen()}\\\"></a> </div> </div> <!-- ko if: IsRuntimeMode() --> <!-- ko ifnot: _isTodoSelected --> <default-kanban class=\\\"js-default-kanban\\\" params=\\\"\\r\\n screen: _screen,\\r\\n selectedTypeObservable: _selectedTypeObservable,\\r\\n generalProperties: GeneralProperties,\\r\\n searchString: _searchString,\\r\\n selectedUsers: _selectedUsers,\\r\\n showPlanned: _showPlanned,\\r\\n showTypeError: _showTypeError,\\r\\n isTodoToggleShown: _isTodoToggleShown,\\r\\n titleFieldId: Model.TitleFieldId,\\r\\n kanbanSubjectId: Model.KanbanSubjectId,\\r\\n kanbanSubjectName: _kanbanSubjectName,\\r\\n viewId: _viewId\\r\\n \\\"> </default-kanban> <!-- /ko --> <!-- ko if: _isTodoSelected --> <todo-kanban class=\\\"js-todo-kanban\\\" params=\\\"\\r\\n screen: _screen,\\r\\n selectedTypeObservable: _selectedTypeObservable,\\r\\n noTypesLoaded: _noTypesLoaded,\\r\\n generalProperties: GeneralProperties,\\r\\n searchString: _searchString,\\r\\n selectedUsers: _selectedUsers,\\r\\n showPlanned: _showPlanned,\\r\\n isTodoToggleShown: _isTodoToggleShown,\\r\\n titleFieldId: Model.TitleFieldId,\\r\\n kanbanSubjectId: Model.KanbanSubjectId,\\r\\n viewId: _viewId,\\r\\n todoEntityId: Model.TodoEntityId,\\r\\n todoTypeId: Model.TodoTypeId,\\r\\n todoFieldId: Model.TodoFieldId,\\r\\n controlId: _controlId,\\r\\n loadStatuses: _loadStatuses,\\r\\n timerControl: _timerControl\\r\\n \\\"> </todo-kanban> <!-- /ko --> <!-- /ko --> </div>\";\n// Exports\nexport default code;","export const PROPERTIES = {\r\n ACTION_SCREEN_TYPE: 'ActionScreenType',\r\n WITH_TAGS: 'WithTags',\r\n WITH_SUBJECT_IMAGE: 'WithSubjectImage',\r\n SHOW_ALIAS: 'ShowAlias',\r\n WITH_DATE_BADGES: 'WithDateBadges',\r\n WITH_PRIORITIES: 'WithPriorities',\r\n PROGRESS_BAR_TYPE: 'ProgressBarType',\r\n WITH_MEMO: 'WithMemo',\r\n WITH_MAILS: 'WithMails',\r\n READ_ONLY: 'ReadOnly',\r\n HEIGHT_IMAGE: 'HeightImage',\r\n COLOR_BAR: 'ColorBar',\r\n ALWAYS_SHOW_DEADLINE: 'AlwaysShowDeadline',\r\n HIDE_OWNER: 'HideOwner',\r\n BACKGROUND_COLOR: 'BackgroundColor',\r\n SHOW_TOOLTIP: 'ShowTooltip'\r\n};","//Common\r\nimport * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\nimport * as _ from 'underscore';\r\nimport $ from \"jquery\";\r\n\r\nimport {KanbanStore} from 'Core/Controls/Kanban/Stores/KanbanStore';\r\nimport {TagModel} from 'Core/Controls/Kanban/Models/TagModel';\r\nimport {\r\n ActionModel,\r\n CardThumbnailModel, ParentOrChildRecordModel,\r\n PriorityModel, RecordModel,\r\n ThumbnailModel,\r\n UserModel\r\n} from 'Core/Controls/Kanban/Models/StatusModel';\r\n\r\nimport {FileModel} from 'Core/Controls/Image/Models/ImageDataModel';\r\nimport {ImageDataStore} from 'Core/Controls/Image/Stores/ImageDataStore';\r\nimport {ColorConverter} from \"Core/Components/ColorSelector/ColorConverter\";\r\nimport {UserTypes} from \"User/UserManager\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {PathRunner} from \"Core/Components/PathRunner/PathRunner\";\r\nimport {Timer} from \"Core/Controls/Timer/Timer\";\r\nimport {TimerModel} from \"Core/Controls/Timer/Models/TimerModel\";\r\n\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Tooltip} from \"Core/Common/Tooltip\";\r\n\r\n//Templates\r\nimport Template from 'Core/Controls/Kanban/Templates/KanbanCard.html';\r\nimport DefaultParentOrChildRecordTemplate from 'Core/Controls/Kanban/Templates/Default/DefaultParentOrChildRecordTemplate.html';\r\n\r\nimport DesignCardNameTemplate from 'Core/Controls/Kanban/Templates/Default/DesignCardName.html';\r\nimport DesignCardInfoTemplate from 'Core/Controls/Kanban/Templates/Default/DesignCardInfo.html';\r\nimport DesignCardAliasTemplate from 'Core/Controls/Kanban/Templates/Default/DesignCardAlias.html';\r\n\r\nimport DefaultCardNameTemplate from 'Core/Controls/Kanban/Templates/Default/DefaultCardName.html';\r\nimport DefaultCardInfoTemplate from 'Core/Controls/Kanban/Templates/Default/DefaultCardInfo.html';\r\nimport DefaultCardAliasTemplate from 'Core/Controls/Kanban/Templates/Default/DefaultCardAlias.html';\r\n\r\nimport TodoCardNameTemplate from 'Core/Controls/Kanban/Templates/Todo/TodoCardName.html';\r\nimport TodoCardInfoTemplate from 'Core/Controls/Kanban/Templates/Todo/TodoCardInfo.html';\r\nimport TodoCardAliasTemplate from 'Core/Controls/Kanban/Templates/Todo/TodoCardAlias.html';\r\n\r\nimport TimerInCardTemplate from 'Core/Controls/Kanban/Templates/Default/TimerInCard.html';\r\n\r\nko.templates['Core/Controls/Kanban/Templates/KanbanCard'] = Template;\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Default/DesignCardName'] = DesignCardNameTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Default/DefaultCardName'] = DefaultCardNameTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Default/DefaultCardAlias'] = DefaultCardAliasTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Default/DesignCardAlias'] = DesignCardAliasTemplate;\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Default/DesignCardInfo'] = DesignCardInfoTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Default/DefaultCardInfo'] = DefaultCardInfoTemplate;\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Todo/TodoCardName'] = TodoCardNameTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Todo/TodoCardInfo'] = TodoCardInfoTemplate;\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Todo/TodoCardAlias'] = TodoCardAliasTemplate;\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Default/TimerInCard'] = TimerInCardTemplate;\r\n\r\nconst defaultImage = 'data:image/jpeg;base64,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';\r\n\r\nfunction enhanceUserWithAvatar({user, avatarThumbnails}: { user: UserModel; avatarThumbnails: ThumbnailModel[] }) {\r\n const thumbnail = user.UserTypeName === UserTypes.Usergroup\r\n ? avatarThumbnails.find(thumbnail => thumbnail.Id === user.UserId)\r\n : avatarThumbnails.find(thumbnail => thumbnail.Id === user.ContactId);\r\n\r\n const thumbnailImage = thumbnail && thumbnail.Image;\r\n\r\n return {user, thumbnail: thumbnailImage || defaultImage};\r\n}\r\n\r\ninterface KanbanCardParams {\r\n entityId: number;\r\n recordId: number;\r\n tags: TagModel[];\r\n priority: PriorityModel;\r\n users: UserModel[];\r\n isDisabled: boolean;\r\n avatarThumbnails: KnockoutObservable<ThumbnailModel[]>;\r\n priorities: KnockoutObservable<PriorityModel[]>;\r\n thumbnail: CardThumbnailModel;\r\n mailsCount: number;\r\n parentOrChildRecords: ParentOrChildRecordModel[],\r\n color: string;\r\n warnings: string[];\r\n withGreyBackground: boolean;\r\n withDateBadges: boolean;\r\n colorBar: boolean;\r\n onPriorityUpdateError: () => void;\r\n onMailClick: () => void;\r\n progressBar: boolean;\r\n isDesign: boolean;\r\n isTodo: boolean;\r\n memo: string;\r\n readOnly: boolean;\r\n isCalculatedViaCalcPriority: boolean;\r\n heightImage: any;\r\n alwaysShowDeadline: boolean;\r\n hideOwner: boolean;\r\n showTooltip: boolean;\r\n showAlias: boolean;\r\n timerControl?: Timer;\r\n activeTimer?: TimerModel;\r\n retiredTodoActionsNumber?: number;\r\n totalTodoActionsNumber?: number;\r\n newActiveTimer?: TimerModel;\r\n actionRecord?: ActionModel;\r\n}\r\n\r\nexport class KanbanCard {\r\n private _entityId: number;\r\n private _recordId: number;\r\n _tags: TagModel[];\r\n private _priority: KnockoutObservable<PriorityModel>;\r\n _allUsersTooltip: string;\r\n _avatarThumbnails: KnockoutObservable<ThumbnailModel[]>;\r\n _priorities: KnockoutObservable<PriorityModel[]>;\r\n private _thumbnail: CardThumbnailModel;\r\n _mailsCount: number;\r\n _parentOrChildRecords: ParentOrChildRecordModel[];\r\n _color: string;\r\n _warnings: string[];\r\n _withGreyBackground: boolean;\r\n private _withDateBadges: boolean;\r\n private _colorBar: boolean;\r\n private _alwaysShowDeadline: boolean;\r\n private _hideOwner: boolean;\r\n private _onPriorityUpdateError: () => void;\r\n _onMailClick: () => void;\r\n private _progressBar: boolean;\r\n private _isDesign: boolean;\r\n private _isTodo: boolean;\r\n private _element: HTMLElement;\r\n _viewerImages: KnockoutObservable<{ Files: FileModel[] }>;\r\n _areAvatarsWrapped: KnockoutObservable<boolean>;\r\n _owner: KnockoutComputed<{ user: UserModel; thumbnail: string }>;\r\n _performers: KnockoutComputed<{ user: UserModel; thumbnail: string }[]>;\r\n _priorityColor: KnockoutComputed<string>;\r\n _priorityName: KnockoutComputed<string>;\r\n _borderColor: KnockoutComputed<string>;\r\n private _retiredTodoActionsNumber: number;\r\n private _totalTodoActionsNumber: number;\r\n private _memo: string;\r\n private _readOnly: boolean;\r\n private _isCalculatedViaCalcPriority: boolean;\r\n private _heightImage: any;\r\n private _tooltip: Tooltip;\r\n private _labels = LABELS;\r\n private _showTooltip: boolean;\r\n private _showAlias: boolean;\r\n private _isDisabled: boolean;\r\n private _notifier: Notifier;\r\n private _activeTimer: KnockoutObservable<TimerModel>;\r\n _timerControl: Timer;\r\n private _actionRecord: ActionModel;\r\n\r\n NewActiveTimer: TimerModel;\r\n\r\n constructor(params: KanbanCardParams & { element: HTMLElement }) {\r\n const {\r\n entityId,\r\n recordId,\r\n tags,\r\n priority,\r\n users,\r\n isDisabled,\r\n avatarThumbnails = ko.observable([]),\r\n priorities,\r\n thumbnail,\r\n mailsCount,\r\n parentOrChildRecords,\r\n color,\r\n warnings = [],\r\n withGreyBackground,\r\n withDateBadges = true,\r\n colorBar,\r\n onPriorityUpdateError,\r\n onMailClick,\r\n progressBar,\r\n element,\r\n memo,\r\n retiredTodoActionsNumber,\r\n totalTodoActionsNumber,\r\n readOnly,\r\n isCalculatedViaCalcPriority,\r\n heightImage,\r\n alwaysShowDeadline,\r\n hideOwner,\r\n isDesign,\r\n isTodo,\r\n showTooltip,\r\n showAlias,\r\n timerControl,\r\n activeTimer,\r\n newActiveTimer,\r\n actionRecord\r\n } = params;\r\n\r\n this._entityId = entityId;\r\n this._recordId = recordId;\r\n this._tags = tags;\r\n this._priority = ko.observable(priority);\r\n this._avatarThumbnails = avatarThumbnails;\r\n this._priorities = priorities;\r\n this._thumbnail = thumbnail;\r\n this._mailsCount = mailsCount;\r\n this._parentOrChildRecords = parentOrChildRecords;\r\n this._color = color;\r\n this._warnings = warnings;\r\n this._withGreyBackground = withGreyBackground;\r\n this._withDateBadges = withDateBadges;\r\n this._colorBar = colorBar;\r\n this._onPriorityUpdateError = onPriorityUpdateError;\r\n this._onMailClick = onMailClick;\r\n this._progressBar = progressBar;\r\n this._isDesign = isDesign;\r\n this._isTodo = isTodo;\r\n this._element = element;\r\n this._retiredTodoActionsNumber = retiredTodoActionsNumber || 0;\r\n this._totalTodoActionsNumber = totalTodoActionsNumber || 0;\r\n this._memo = memo;\r\n this._alwaysShowDeadline = alwaysShowDeadline;\r\n this._hideOwner = hideOwner;\r\n this._readOnly = readOnly;\r\n this._isCalculatedViaCalcPriority = isCalculatedViaCalcPriority;\r\n this._heightImage = heightImage;\r\n this._isDisabled = isDisabled;\r\n\r\n this._viewerImages = ko.observable();\r\n\r\n this._tooltip = null;\r\n this._showTooltip = showTooltip;\r\n this._showAlias = !!showAlias;\r\n\r\n this._notifier = new Notifier();\r\n\r\n this._activeTimer = ko.observable(null);\r\n this.NewActiveTimer = newActiveTimer;\r\n this._actionRecord = actionRecord;\r\n\r\n if (thumbnail) {\r\n const thumbnailFileModel = new FileModel();\r\n thumbnailFileModel.ImageData = thumbnail.Image;\r\n\r\n this._viewerImages({Files: [thumbnailFileModel]});\r\n }\r\n\r\n this._areAvatarsWrapped = ko.observable(true);\r\n\r\n const owner = users.find(user => user.IsOwner);\r\n const performers = _.without(users, owner);\r\n\r\n const allUsers = owner ? [owner, ...performers] : performers;\r\n this._allUsersTooltip = allUsers.map(user => user.UserName).join(', ');\r\n\r\n this._owner = ko.pureComputed(\r\n () => owner && enhanceUserWithAvatar({user: owner, avatarThumbnails: this._avatarThumbnails()})\r\n );\r\n\r\n this._performers = ko.pureComputed(() => {\r\n const shownPerformers = this._areAvatarsWrapped() ? performers.slice(0, 1) : performers;\r\n\r\n return shownPerformers.map(user => enhanceUserWithAvatar({\r\n user,\r\n avatarThumbnails: this._avatarThumbnails()\r\n }));\r\n });\r\n\r\n this._priorityColor = ko.pureComputed(() => {\r\n const priority = this._priority();\r\n\r\n if (!priority) {\r\n return undefined;\r\n }\r\n\r\n return priority.Color;\r\n });\r\n\r\n this._priorityName = ko.pureComputed(() => {\r\n const priority = this._priority();\r\n\r\n if (!priority) {\r\n return undefined;\r\n }\r\n\r\n return priority.TranslatedName || priority.Name;\r\n });\r\n\r\n this._borderColor = ko.pureComputed(() => {\r\n return this._color ? ColorConverter.ToHex(this._color) : this._priorityColor() || '#cccccc';\r\n });\r\n\r\n this._activeTimer(this.GetActiveTimer(activeTimer));\r\n\r\n this.SetTimerControlData(timerControl, this._activeTimer());\r\n }\r\n\r\n get Element(): HTMLElement {\r\n return this._element;\r\n }\r\n get EntityId(): number {\r\n return this._entityId;\r\n }\r\n\r\n get RecordId(): number {\r\n return this._recordId;\r\n }\r\n\r\n get IsParentOrChildRecords(): boolean {\r\n return this._parentOrChildRecords && this._parentOrChildRecords.length > 0\r\n }\r\n\r\n get IsTagContainer(): boolean {\r\n return this.IsPriority || this.IsWarning || this.IsTags;\r\n }\r\n\r\n get IsTags(): boolean {\r\n return !!this._tags.length;\r\n }\r\n\r\n get IsWarning(): boolean {\r\n return !!this._warnings.length;\r\n }\r\n\r\n get IsPriority(): boolean {\r\n return this._priority() && !!this._priorities().length;\r\n }\r\n\r\n get AllUsersTooltip(): string {\r\n return !this._readOnly && this._showTooltip ? this._areAvatarsWrapped() && this._allUsersTooltip : '';\r\n }\r\n\r\n GetUserNameTooltip(user: UserModel): string | boolean {\r\n return !this._readOnly && this._showTooltip ? !this._areAvatarsWrapped() && user.UserName : '';\r\n }\r\n\r\n GetParentOrChildRecordTemplate() {\r\n return $((ko as any).renderTemplateX(DefaultParentOrChildRecordTemplate, this));\r\n }\r\n\r\n GetParentOrChildRecordName(nameTranslation?: string, name?: string): string {\r\n return nameTranslation ? nameTranslation : (name ? name : '-');\r\n }\r\n\r\n GetParentOrChildRecordTypeName(typeNameTranslation?: string, typeName?: string): string {\r\n return typeNameTranslation ? typeNameTranslation : typeName;\r\n }\r\n\r\n GetTitle(IsChild: boolean, IsParent: boolean) {\r\n if(IsChild && IsParent) {\r\n return this._labels.ITSELF;\r\n }\r\n else if(IsChild) {\r\n return this._labels.CHILD;\r\n }\r\n else {\r\n return this._labels.PARENT;\r\n }\r\n }\r\n\r\n GetIcon(IsChild: boolean, IsParent: boolean) {\r\n if(IsChild && IsParent) {\r\n return 'fa-retweet';\r\n }\r\n else if(IsChild) {\r\n return 'fa-level-down';\r\n }\r\n else {\r\n return 'fa-level-up';\r\n }\r\n }\r\n\r\n MouseOver(typeText: string, recordModel: ParentOrChildRecordModel, evt: any){\r\n let currentEl = $(evt.currentTarget);\r\n\r\n if (Math.round(currentEl.prop('scrollWidth')) > Math.round(currentEl.outerWidth()) ){\r\n let recordName = recordModel.NameTranslation ? recordModel.NameTranslation : (recordModel.Name ? recordModel.Name : '-');\r\n let recordTypeName = recordModel.TypeNameTranslation ? recordModel.TypeNameTranslation : recordModel.TypeName;\r\n let isTypeName = (typeText === 'isTypeName');\r\n\r\n let typeNameTooltipOptions = {\r\n position: {x: 'left', y: 'center'},\r\n outside: 'x',\r\n zIndex: 500001\r\n },\r\n nameTooltipOptions = {\r\n position: {x: 'right', y: 'center'},\r\n outside: 'x',\r\n zIndex: 500001\r\n };\r\n\r\n this._tooltip = new Tooltip(evt.currentTarget,\r\n ko.unwrap(isTypeName ? recordTypeName : recordName),\r\n isTypeName ? typeNameTooltipOptions : nameTooltipOptions);\r\n this._tooltip.Show(evt.currentTarget);\r\n }\r\n }\r\n\r\n MouseOut(data, evt: any){\r\n if (this._tooltip){\r\n this._tooltip.Destroy();\r\n }\r\n }\r\n\r\n async OpenRecord(record){\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n await screenManager.GetScreenByScreenType(\r\n this._entityId,\r\n ScreenTypes.ConsultScreen,\r\n record.Id\r\n )\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: any) => {\r\n screen.ShowInModal();\r\n\r\n if (screen.GetType() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n PathRunner.Instance.GetUnit(screen.GetEntityId(), screen.IsSpecialScreenExist).LoadNewData(screen.GetRecordId());\r\n }\r\n })\r\n .fail(err => this._notifier.Failed(err.message));\r\n }\r\n\r\n GetNameTemplate() {\r\n if (this._isDesign) {\r\n return 'Core/Controls/Kanban/Templates/Default/DesignCardName';\r\n } else if (this._isTodo) {\r\n return 'Core/Controls/Kanban/Templates/Todo/TodoCardName';\r\n } else {\r\n return 'Core/Controls/Kanban/Templates/Default/DefaultCardName';\r\n }\r\n }\r\n\r\n GetAliasTemplate() {\r\n if (this._isDesign) {\r\n return 'Core/Controls/Kanban/Templates/Default/DesignCardAlias';\r\n } else if (this._isTodo) {\r\n return 'Core/Controls/Kanban/Templates/Todo/TodoCardAlias';\r\n } else {\r\n return 'Core/Controls/Kanban/Templates/Default/DefaultCardAlias';\r\n }\r\n }\r\n\r\n GetInfoTemplate() {\r\n if (this._isDesign) {\r\n return 'Core/Controls/Kanban/Templates/Default/DesignCardInfo';\r\n } else if (this._isTodo) {\r\n return 'Core/Controls/Kanban/Templates/Todo/TodoCardInfo';\r\n } else {\r\n return 'Core/Controls/Kanban/Templates/Default/DefaultCardInfo';\r\n }\r\n }\r\n\r\n GetTimerInCardTemplate(): string {\r\n return 'Core/Controls/Kanban/Templates/Default/TimerInCard';\r\n }\r\n\r\n GetHeightImage(): string {\r\n if (this._heightImage) {\r\n let elementWidth = Math.trunc($(this._element).outerWidth()),\r\n propertyHeight = this._heightImage.Value,\r\n originalCardWidth = $(this._element).data(\"originalCardWidth\");\r\n\r\n if (originalCardWidth){\r\n return `${Math.trunc(originalCardWidth / 100 * propertyHeight)}px`;\r\n } else {\r\n $(this._element).data(\"originalCardWidth\", elementWidth);\r\n return `${Math.trunc(elementWidth / 100 * propertyHeight)}px`;\r\n }\r\n\r\n } else {\r\n return \"none\";\r\n }\r\n }\r\n\r\n CalculateProgressBar() {\r\n let calculateProgressBar = this._retiredTodoActionsNumber / this._totalTodoActionsNumber;\r\n\r\n if (this._retiredTodoActionsNumber === this._totalTodoActionsNumber) {\r\n return 100;\r\n } else {\r\n return Math.trunc(calculateProgressBar * 100);\r\n }\r\n }\r\n\r\n get ProgressBar() {\r\n return `\r\n <div class=\"progress-bar\" role=\"progressbar\" \r\n style=\"width: ${this.CalculateProgressBar()}%\" \r\n aria-valuenow=\"${this._retiredTodoActionsNumber}\" \r\n aria-valuemin=\"0\" \r\n aria-valuemax=\"${this._totalTodoActionsNumber}\"></div>\r\n `;\r\n }\r\n\r\n GetOriginalImage(file: FileModel, viewer) {\r\n if (file.OriginalImageData) {\r\n viewer.clickOnImage(file.UniqueId);\r\n return;\r\n }\r\n\r\n const thumbnailElement = this._element.querySelector<HTMLAnchorElement>('.image-open-btn');\r\n\r\n BlockUI.Block({Target: thumbnailElement});\r\n\r\n ImageDataStore.GetOriginal({\r\n RecordId: this._recordId,\r\n FieldId: this._thumbnail.FieldId\r\n })\r\n .then(attachment => {\r\n file.OriginalImageData = attachment.Base64Data;\r\n this._viewerImages.valueHasMutated();\r\n viewer.clickOnImage(file.UniqueId);\r\n })\r\n .fail(err => this._notifier.Failed(err.message))\r\n .always(() => {\r\n BlockUI.Unblock(thumbnailElement);\r\n });\r\n }\r\n\r\n OnPriorityClick() {\r\n const currentPriority = this._priority();\r\n const priorities = this._priorities();\r\n\r\n const priorityIndex = priorities.findIndex(priority => priority.Id === currentPriority.Id);\r\n\r\n this._priority(priorities[priorityIndex === 0 ? priorities.length - 1 : priorityIndex - 1]);\r\n\r\n this.DebouncedUpdatePriority();\r\n }\r\n\r\n OnAvatarsClick() {\r\n this._areAvatarsWrapped(!this._areAvatarsWrapped());\r\n }\r\n\r\n private DebouncedUpdatePriority = _.debounce(this.UpdatePriority, 1000);\r\n\r\n UpdatePriority() {\r\n if (!this._entityId || !this._recordId) {\r\n return;\r\n }\r\n\r\n KanbanStore.UpdatePriority({\r\n EntityId: this._entityId,\r\n RecordId: this._recordId,\r\n PriorityId: this._priority().Id\r\n })\r\n .then(() => {\r\n this._notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n })\r\n .fail(err => {\r\n this._notifier.Failed(JSON.parse(err.message).Message);\r\n\r\n this._onPriorityUpdateError();\r\n });\r\n }\r\n\r\n GetActionDate(action: ActionModel) {\r\n return action.ActionDate && moment(`${action.ActionDate}Z`);\r\n }\r\n\r\n GetActionDateFormatted(action: ActionModel) {\r\n return this.GetActionDate(action).format('DD MMM YY')\r\n }\r\n\r\n GetActionDeadline(action: ActionModel) {\r\n return action.ActionDeadline && moment(`${action.ActionDeadline}Z`);\r\n }\r\n\r\n GetActionDeadlineFormatted(action: ActionModel) {\r\n return this.GetActionDeadline(action).format('DD MMM YY')\r\n }\r\n\r\n IsActionDateShown(action: ActionModel) {\r\n const actionDate = this.GetActionDate(action);\r\n const actionDeadline = this.GetActionDeadline(action);\r\n return Boolean(actionDate && (!actionDeadline || moment().isBefore(actionDate)));\r\n }\r\n\r\n UseBadgeTemplate(action: ActionModel) {\r\n const actionDate = this.GetActionDate(action);\r\n const actionDeadline = this.GetActionDeadline(action);\r\n const isActionDateShown = Boolean(actionDate && (!actionDeadline || moment().isBefore(actionDate)));\r\n\r\n return !(!this._withDateBadges || (!isActionDateShown && !actionDeadline));\r\n }\r\n\r\n get HasTimer(): boolean {\r\n return !!this._timerControl;\r\n }\r\n\r\n GetActiveTimer(activeTimer: TimerModel): TimerModel {\r\n return this.NewActiveTimer || activeTimer || null;\r\n }\r\n\r\n SetTimerControlData(timerControl, activeTimer)\r\n {\r\n if (!timerControl || !this._entityId || !this._recordId)\r\n {\r\n return null;\r\n }\r\n\r\n this._timerControl = timerControl.Clone() as Timer;\r\n this._timerControl.KanbanMode = true;\r\n this._timerControl.TimerEntityId = this._entityId;\r\n this._timerControl.TimerRecordId = this._recordId;\r\n this._timerControl.ActionRecord = this._actionRecord;\r\n\r\n if (activeTimer) {\r\n this._timerControl.CurrentDuration = activeTimer.Starting;\r\n this._timerControl.SetKanbanActiveTimer(activeTimer);\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>){\r\n\r\n }\r\n\r\n GetTagFullNameTooltipContent(val1, val2, val3): string {\r\n let settings = {\r\n content: ''\r\n }\r\n settings.content = 'test'\r\n return 'test';\r\n }\r\n GetKanbanCardTemplateName(): string {\r\n return 'Core/Controls/Kanban/Templates/KanbanCard';\r\n }\r\n}\r\n\r\nko.components.register('kanban-card', {\r\n viewModel: {\r\n createViewModel: (params: KanbanCardParams, componentInfo) =>\r\n new KanbanCard({...params, element: componentInfo.element as HTMLElement})\r\n },\r\n template: `<div class=\"js-kanban-card__component\" data-bind=\"template: { name: GetKanbanCardTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) }\"></div>`\r\n});","// Module\nvar code = \"<div class=\\\"kanban-item__content\\\" data-bind=\\\"style: {'border-left-color': _borderColor, 'border-left-width': _colorBar ? '4px' : '0'},\\r\\n css: {'read-only': _readOnly, 'kanban-Item-Grey': _withGreyBackground},\\r\\n tooltip: {\\r\\n content: $parent.IsDisabled || $parent.IsDisabledCard ? $parent.DisabledReason : '',\\r\\n position: {\\r\\n x: 'left',\\r\\n y: 'center'\\r\\n },\\r\\n outside: 'x',\\r\\n addClass: 'jBox-padding-5px'\\r\\n }\\\"> <div class=\\\"disabled-card-container\\\" data-bind=\\\"visible: $parent.IsDisabled || $parent.IsDisabledCard\\\"> <i class=\\\"fa fa-random\\\"></i> </div> <div class=\\\"kanban-item__alias-and-priority\\\" data-bind=\\\"\\\"> <!-- ko if: _showAlias --> <div class=\\\"kanban-item__info kanban-alias__info\\\"> <!--ko template: {name: $data.GetAliasTemplate.bind($data)}--><!--/ko--> </div> <!-- /ko --> <div class=\\\"kanban-item__info kanban-priority__info\\\" data-bind=\\\"visible: IsPriority\\\"> <button type=\\\"button\\\" class=\\\"kanban-item__priority-badge\\\" data-bind=\\\"\\r\\n visible: IsPriority,\\r\\n click: OnPriorityClick,\\r\\n text: _priorityName,\\r\\n style: {'color': _priorityColor, 'outline-color': _priorityColor},\\r\\n disable: _readOnly || _isCalculatedViaCalcPriority\\\"></button> </div> </div> <!-- ko with: _viewerImages --> <div data-bind=\\\"viewerJs: {\\r\\n images: Files,\\r\\n imageClasses: 'kanban-item__thumbnail',\\r\\n getOriginalImage: $parent.GetOriginalImage.bind($parent),\\r\\n getHeightImage: $parent.GetHeightImage()}\\\"></div> <!-- /ko --> <div class=\\\"kanban-item__info\\\"> <!-- ko if: IsTagContainer --> <div class=\\\"kanban-item__tag-row\\\"> <div class=\\\"kanban-item__tags\\\"> <!-- ko if: IsWarning --> <i class=\\\"fa fa-exclamation-circle\\\" data-bind=\\\"tooltip: { content: _showTooltip ? _warnings[0] : '', position: { y: 'bottom' } }\\\"></i> <!-- /ko --> <!-- ko fastForEach: _tags --> <div data-bind=\\\"text: FullName,\\r\\n ellipsisTooltip: {\\r\\n content: !$parent._readOnly && $parent._showTooltip ? FullName : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"kanban-item__tag\\\"></div> <!-- /ko --> </div> </div> <!-- /ko --> <div class=\\\"kanban-item__name\\\"> <!--ko template: {name: $data.GetNameTemplate.bind($data)}--> <!--/ko--> </div> <div class=\\\"kanban-item__progressBar\\\" data-bind=\\\"visible: _progressBar && _totalTodoActionsNumber >= 1\\\"> <div class=\\\"progress\\\" data-bind=\\\"html: ProgressBar\\\"></div> <div class=\\\"todoActionsNumber\\\"> <!-- ko text: _retiredTodoActionsNumber + '/' + _totalTodoActionsNumber --><!-- /ko --> </div> </div> <div class=\\\"kanban-item__secondary-info\\\" data-bind=\\\"visible: _memo || _mailsCount\\\"> <!--ko template: {name: $data.GetInfoTemplate.bind($data)}--><!-- /ko --> </div> <div class=\\\"kanban-item__bottom-panel\\\" data-bind=\\\"css: { 'kanban-item__bottom-panel--wrapped': !(_memo || _mailsCount) }\\\"> <!-- ko if: _memo || _mailsCount --> <div class=\\\"kanban-item__icon-container\\\"> <!--ko template: {name: $data.GetTimerInCardTemplate.bind($data)}--><!-- /ko --> <!-- ko if: _memo --> <div class=\\\"kanban-item__memo-icon\\\"> <div class=\\\"kanban-item__memo-button\\\" data-bind=\\\"tooltip: { content: _memo }, css: {'disabled': _readOnly}\\\"> <i class=\\\"fa fa-sticky-note-o\\\"></i> </div> </div> <!-- /ko--> <!-- ko if: _mailsCount --> <div class=\\\"kanban-item__mail-button-container\\\"> <button type=\\\"button\\\" data-bind=\\\"click: _onMailClick, disable: _readOnly\\\" class=\\\"kanban-item__mail-button\\\"> <i class=\\\"fa fa-envelope-o\\\"></i> </button> <div class=\\\"kanban-item__mail-count\\\"><span data-bind=\\\"text: _mailsCount\\\"></span></div> </div> <!-- /ko --> <!-- ko if: IsParentOrChildRecords --> <div class=\\\"kanban-item_parentOrChildRecord-icon kanbanCard\\\"> <i class=\\\"fa fa-sitemap\\\" data-bind=\\\"tooltip: { content: GetParentOrChildRecordTemplate(), addClass: 'jBox-padding-5px'}, css: {'disabled': _readOnly}\\\"></i> </div> <!-- /ko --> </div> <!-- /ko--> <!-- ko ifnot: _memo || _mailsCount --> <div class=\\\"kanban-item__secondary-info\\\"> <!--ko template: {name: $data.GetInfoTemplate.bind($data)}--><!-- /ko --> <!-- ko ifnot: IsParentOrChildRecords --> <!--ko template: {name: $data.GetTimerInCardTemplate.bind($data)}--><!-- /ko --> <!-- /ko --> <!-- ko if: IsParentOrChildRecords --> <div class=\\\"kanban-item_parentOrChildRecord__box\\\"> <!--ko template: {name: $data.GetTimerInCardTemplate.bind($data)}--><!-- /ko --> <div class=\\\"kanban-item_parentOrChildRecord-icon kanbanCard\\\"> <i class=\\\"fa fa-sitemap\\\" data-bind=\\\"tooltip: { content: GetParentOrChildRecordTemplate(), addClass: 'jBox-padding-5px'}, css: {'disabled': _readOnly}\\\"></i> </div> </div> <!-- /ko --> </div> <!-- /ko --> <button type=\\\"button\\\" class=\\\"kanban-item__avatars\\\" data-bind=\\\"click: OnAvatarsClick,\\r\\n tooltip: {\\r\\n content: AllUsersTooltip,\\r\\n position: { y: 'bottom' },\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px',\\r\\n closeOnMouseleave: false\\r\\n }\\\"> <span class=\\\"kanban-item__avatars-content\\\" data-bind=\\\"css: { 'kanban-item__avatars-content--wrapped': _areAvatarsWrapped }\\\"> <!-- ko ifnot: _hideOwner --> <!-- ko with: _owner --> <span> <img data-bind=\\\"attr: {'src': thumbnail, 'alt': user.UserName, 'title': $parent.GetUserNameTooltip(user)}\\\" class=\\\"kanban-item__avatar kanban-item__avatar--owner\\\"> </span> <!-- /ko --> <!-- /ko --> <!-- ko fastForEach: _performers --> <span> <img data-bind=\\\"attr: {'src': thumbnail, 'alt': user.UserName, 'title': $parent.GetUserNameTooltip(user)}\\\" class=\\\"kanban-item__avatar\\\"> </span> <!-- /ko --> </span> </button> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<button class=\\\"kanban-item__name-content\\\"> Case Name </button>\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\" click: $parents[2].OpenConsultScreen.bind($parents[2], $parent),\\r\\n disable: $parents[2]._readOnly,\\r\\n ellipsisTooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: $parents[2]._showTooltip ? $parent.Name : '',\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tisLineClampMode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tposition: {x: 'left', y: 'center'},\\r\\n \\toutside: 'x',\\r\\n \\taddClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"kanban-item__name-content transition line-clamp-ellipsis line-clamp-2\\\"> <!-- ko text: $parent.Name --><!-- /ko --> <!-- ko ifnot: $parent.Name --> <i class=\\\"fa transition fa-external-link\\\"></i> <!-- /ko --> </span> <span data-bind=\\\"click: $parents[2].OpenEditScreen.bind($parents[2], $parent),\\r\\n disable: $parents[2]._readOnly\\\" class=\\\"kanban-item__button-edit\\\"><i class=\\\"fa fa-pencil\\\" aria-hidden=\\\"true\\\"></i></span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: $parent.Alias --> <div class=\\\"kanban-item__tag-row kanban-alias-row\\\"> <div class=\\\"kanban-item__tags kanban-alias-items\\\"> <div data-bind=\\\"text: $parent.Alias,\\r\\n ellipsisTooltip: {\\r\\n content: !_readOnly && _showTooltip ? $parent.Alias : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"kanban-item__tag kanban-alias-item\\\"></div> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"kanban-item__tag-row kanban-alias-row\\\"> <div class=\\\"kanban-item__tags kanban-alias-items\\\"> <div data-bind=\\\"text: 'Alias',\\r\\n ellipsisTooltip: {\\r\\n content: !_readOnly && _showTooltip ? 'Alias' : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"kanban-item__tag kanban-alias-item\\\"></div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"kanban-item__secondary-info-item\\\"> <div class=\\\"transition kanban-item__action\\\">Action Name</div> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--deadline\\\"> <i class=\\\"fa fa-clock-o\\\"></i> Jun 30 </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: $parent.HasAction --> <button data-bind=\\\"click: $parents[2].SelectAction.bind($parents[2], $parent), disable: $parents[2]._readOnly\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"fa fa-plus\\\"> </button> <!-- /ko --> <!-- ko ifnot: $parent.HasAction --> <!-- ko foreach: $parent.Actions --> <div class=\\\"kanban-item__secondary-info-item\\\"> <button data-bind=\\\"css: {'disabled-action': $data.IsDisabled, 'highlightedAction': HighlightedAction },\\r\\n click: $parents[3].OpenActionRecordScreen.bind($parents[3], $parent, $data),\\r\\n disable: $parents[3]._readOnly\\r\\n \\\" class=\\\"transition kanban-item__action\\\"> <!-- ko text: ActionName --> <!-- /ko --> <!-- ko ifnot: ActionName --> <i class=\\\"fa transition fa-external-link\\\"></i> <!-- /ko --> </button> <!--ko if: $parent.UseBadgeTemplate($data)--> <div class=\\\"kanban-item__secondary-info-item\\\"> <div class=\\\"kanban-item__secondary-info-item\\\"> <!--ko if: $parent.IsActionDateShown($data)--> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--due-date\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!--ko text: $parent.GetActionDateFormatted($data)--> <!--/ko--> </div> <!--/ko--> <!-- ko if: $parent._alwaysShowDeadline --> <!-- ko if: $parent.GetActionDeadline($data) --> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--deadline\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!--ko text: $parent.GetActionDeadlineFormatted($data)--> <!--/ko--> </div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $parent._alwaysShowDeadline --> <!--ko ifnot: $parent.IsActionDateShown($data)--> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--deadline\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!--ko text: $parent.GetActionDeadlineFormatted($data)--> <!--/ko--> </div> <!--/ko--> <!-- /ko --> </div> </div> <!--/ko--> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\"click: $parents[3].OpenActionRecordScreen.bind($parents[3], $parents[2].record, $parent, false),\\r\\n disable: $parents[3]._readOnly,\\r\\n ellipsisTooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: $parents[3]._showTooltip ? $parent.ActionName : '',\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tisLineClampMode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tposition: {x: 'left', y: 'center'},\\r\\n \\toutside: 'x',\\r\\n \\taddClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"kanban-item__name-content line-clamp-ellipsis line-clamp-2\\\"><!-- ko text: $parent.ActionName --><!-- /ko --></span> <span data-bind=\\\"click: $parents[3].OpenActionRecordScreen.bind($parents[3], $parents[2].record, $parent, true),\\r\\n disable: $parents[3]._readOnly\\\" class=\\\"kanban-item__button-edit\\\"><i class=\\\"fa fa-pencil\\\" aria-hidden=\\\"true\\\"></i></span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data.UseBadgeTemplate($parent)--> <div class=\\\"kanban-item__secondary-info-item\\\"> <div class=\\\"kanban-item__secondary-info-item\\\"> <!--ko if: $data.IsActionDateShown($parent)--> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--due-date\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!--ko text: $data.GetActionDateFormatted($parent)--> <!--/ko--> </div> <!--/ko--> <!-- ko if: $data._alwaysShowDeadline --> <!-- ko if: $data.GetActionDeadline($parent) --> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--deadline\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!--ko text: $data.GetActionDeadlineFormatted($parent)--> <!--/ko--> </div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $data._alwaysShowDeadline --> <!--ko ifnot: $data.IsActionDateShown($parent)--> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--deadline\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!--ko text: $data.GetActionDeadlineFormatted($parent)--> <!--/ko--> </div> <!--/ko--> <!-- /ko --> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: $parent.ActionAlias --> <div class=\\\"kanban-item__tag-row kanban-alias-row\\\"> <div class=\\\"kanban-item__tags kanban-alias-items\\\"> <div data-bind=\\\"text: $parent.ActionAlias,\\r\\n ellipsisTooltip: {\\r\\n content: !_readOnly && _showTooltip ? $parent.ActionAlias : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"kanban-item__tag kanban-alias-item\\\"></div> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: HasTimer --> <!-- ko with: _timerControl --> <!-- ko template: { name: GetLiveTimerForKanbanTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"record_box\\\"> <!-- ko foreach: $data._parentOrChildRecords --> <div class=\\\"record_item\\\" data-bind=\\\"click: $parent.OpenRecord.bind($parent)\\\"> <i class=\\\"fa\\\" data-bind=\\\"css: $parent.GetIcon(IsChild, IsParent), attr: {title: $parent.GetTitle(IsChild, IsParent)}\\\"></i> <span class=\\\"typeName\\\" data-bind=\\\"event: {mouseover: $parent.MouseOver.bind($parent, 'isTypeName'),\\r\\n mouseout: $parent.MouseOut.bind($parent, $data)}\\\"><!--ko text: $parent.GetParentOrChildRecordTypeName(TypeNameTranslation, TypeName) --><!--/ko--></span> <span class=\\\"name\\\" data-bind=\\\"event: {mouseover: $parent.MouseOver.bind($parent, 'isName'),\\r\\n mouseout: $parent.MouseOut.bind($parent)}\\\"><!--ko text: $parent.GetParentOrChildRecordName(NameTranslation, Name)--><!--/ko--></span> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"actionItemsTooltip\\\"> <!-- ko foreach: $_data.ActionItems --> <div class=\\\"actionItemsTooltip__item\\\"> <span class=\\\"name\\\"> <!--ko text: NameTranslation || Name --><!--/ko--> </span> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\nimport {CONTROL_TYPES, LIFE_STATUS_GROUPS} from \"Core/Constant\";\r\nimport {IUpdateStatusRequestModel, KanbanStore} from 'Core/Controls/Kanban/Stores/KanbanStore';\r\nimport {\r\n ActionModel,\r\n LinkModel,\r\n PriorityModel,\r\n RecordModel,\r\n StatusModel,\r\n StepModel,\r\n ThumbnailModel\r\n} from 'Core/Controls/Kanban/Models/StatusModel';\r\nimport {DragulaExtention} from 'Core/KnockoutExtentions/DragulaExtention';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {KanbanStep} from 'Core/Controls/Kanban/Step';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {ButtonFollowUp} from \"Core/Controls/ButtonFollowUp/ButtonFollowUp\";\r\nimport {FollowUpRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel\";\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport type {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {IScreen} from \"Core/Screens/IScreen\";\r\n\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\n\r\nimport {FollowUpStore} from \"Core/Controls/ButtonFollowUp/Stores/FollowUpStore\";\r\nimport {PromptDialog, Types} from 'Core/Components/Dialogs/PromptDialog/PromptDialog';\r\nimport {LifeStatusesModel} from 'Core/Controls/ButtonFollowUp/Models/LifeStatusesModel';\r\nimport {FollowupModes} from 'Core/Constants/FollowupModes';\r\n\r\nimport {ConfigModel} from 'Core/GeneralProperties/Models/ConfigModel';\r\nimport {PROPERTIES} from \"Core/Controls/Kanban/Constants\";\r\n\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {ActionTypes} from \"Core/Common/Enums/ActionTypes\";\r\n\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog'\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport {LinkList} from \"Core/Controls/LinkList/LinkList\";\r\nimport {Tab} from \"Core/Controls/Tab/Tab\";\r\nimport {TabPage} from \"Core/Controls/TabPage/TabPage\";\r\nimport {NewRelationModel} from \"Core/Controls/LinkList/Models/NewRelationModel\";\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\n\r\nimport \"Core/Controls/Kanban/KanbanCard\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\nimport {PathRunner} from \"Core/Components/PathRunner/PathRunner\";\r\n\r\nimport {LifeStatusesGeneralModel} from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel\";\r\n\r\nimport {FollowUpLifeStatuses} from \"Core/Controls/ButtonFollowUp/FollowUpLifeStatuses\";\r\nimport {ScreenParamsModel} from \"Core/Controls/ButtonFollowUp/Models/ScreenParamsModel\";\r\nimport {SubjectActionModel} from \"Core/Controls/ButtonFollowUp/Models/SubjectActionModel\";\r\n\r\nimport {ActionCheckListViewModel} from \"Core/Components/ActionCheckList/Models/View/ActionCheckListViewModel\";\r\nimport {FlowFolderStore} from \"Core/Components/ProgressBar/Stores/FlowFolderStore\";\r\nimport {ProgressBarInfoModel} from \"Core/Components/ProgressBar/Models/Response/ProgressBarInfoModel\";\r\nimport {FlowFolderModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderModel\";\r\nimport {ActionCheckList} from \"Core/Components/ActionCheckList/ActionCheckList\";\r\nimport {ICheckItemSerializedValue} from \"Core/Components/ActionCheckList/CheckItems/ICheckItemSerializedValue\";\r\nimport {LifeStatusSimpleModel} from \"Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel\";\r\nimport {KanbanTypeViewModel} from \"Core/Controls/Kanban/Models/KanbanTypeViewModel\";\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\nvar CLASSES = {\r\n FORBID_DRAG: 'forbid-drag',\r\n ALLOW_DRAG: 'allow-drag'\r\n}\r\n\r\nfunction getPopoverTemplate(classNames: string) {\r\n return _.escape(`\r\n <div class=\"popover ${classNames}\" role=\"tooltip\">\r\n <div class=\"arrow\"></div>\r\n <h3 class=\"popover-title\"></h3>\r\n <div class=\"popover-content\"></div>\r\n </div>\r\n `);\r\n}\r\n\r\ninterface DragulaState {\r\n item: any,\r\n sourceIndex: any,\r\n sourceItems: any,\r\n sourceContext: any,\r\n targetIndex: any,\r\n targetItems: any\r\n}\r\n\r\n//Templates\r\nimport Template from 'Core/Controls/Kanban/Templates/Default/DefaultKanban.html';\r\nimport TodoActionItemsTemplate from 'Core/Controls/Kanban/Templates/Todo/TodoActionItemsTemplate.html';\r\nimport {Event} from \"../../Common/Event\";\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Default/DefaultKanban'] = Template;\r\n\r\nclass DefaultKanban {\r\n private _screen: KnockoutObservable<IScreen>;\r\n private _selectedTypeObservable: KnockoutObservable<KanbanTypeViewModel>;\r\n private _originSteps: KanbanStep[];\r\n private _steps: KnockoutObservableArray<KanbanStep>;\r\n private _hasData: KnockoutObservable<boolean>;\r\n private _searchString: KnockoutObservable<string>;\r\n private _data: StatusModel;\r\n private _height: KnockoutObservable<number>;\r\n private _selectedUsers: KnockoutObservableArray<number>;\r\n private _showPlanned: KnockoutObservable<boolean>;\r\n private _showTypeError: KnockoutObservable<boolean>;\r\n private _lifeStatuses: LifeStatusesModel;\r\n private _dragulaState: DragulaState;\r\n private _generalProperties: ConfigModel;\r\n private _isTodoToggleShown: KnockoutObservable<boolean>;\r\n _avatarThumbnails: KnockoutObservableArray<ThumbnailModel>;\r\n _priorities: KnockoutObservableArray<PriorityModel>;\r\n private _viewId: KnockoutObservable<number>;\r\n private _elObservable: KnockoutObservable<HTMLElement>;\r\n private _selectedTypeSubscription: KnockoutSubscription;\r\n private _selectedUsersSubscription: KnockoutSubscription;\r\n private _showPlannedSubscription: KnockoutSubscription;\r\n private _viewIdSubscription: KnockoutSubscription;\r\n private _showTypeErrorSubscription: KnockoutSubscription;\r\n _titleFieldId: number;\r\n private _kanbanSubjectId: KnockoutObservable<number>;\r\n private _kanbanSubjectName: KnockoutObservable<string>;\r\n _withDateBadges: boolean;\r\n _progressBar: boolean;\r\n _withMemo: boolean;\r\n _readOnly: boolean;\r\n private _heightImage: any;\r\n private _calculateHeightContainerStyle: string;\r\n private _colorBar: boolean;\r\n private _alwaysShowDeadline: boolean;\r\n private _hideOwner: boolean;\r\n private _backgroundColor: string;\r\n private _showTooltip: boolean;\r\n private _showAlias: boolean;\r\n private _followUpRecord: FollowUpRecordModel;\r\n private _followUpLifeStatuses: FollowUpLifeStatuses;\r\n private _isFlowFolder: boolean;\r\n private _checkList: ActionCheckList;\r\n\r\n Css: KnockoutComputed<any>;\r\n\r\n constructor(params: {\r\n screen: KnockoutObservable<IScreen>;\r\n selectedTypeObservable: KnockoutObservable<KanbanTypeViewModel>;\r\n generalProperties: ConfigModel;\r\n searchString: KnockoutObservable<string>;\r\n selectedUsers: KnockoutObservableArray<number>;\r\n showPlanned: KnockoutObservable<boolean>;\r\n showTypeError: KnockoutObservable<boolean>;\r\n isTodoToggleShown: KnockoutObservable<boolean>;\r\n titleFieldId: number;\r\n kanbanSubjectId: KnockoutObservable<number>;\r\n kanbanSubjectName: KnockoutObservable<string>;\r\n viewId: KnockoutObservable<number>;\r\n }) {\r\n this._screen = params.screen;\r\n this._selectedTypeObservable = params.selectedTypeObservable;\r\n this._generalProperties = params.generalProperties;\r\n this._searchString = params.searchString;\r\n this._selectedUsers = params.selectedUsers;\r\n this._showPlanned = params.showPlanned;\r\n this._showTypeError = params.showTypeError;\r\n this._titleFieldId = params.titleFieldId;\r\n this._kanbanSubjectId = params.kanbanSubjectId;\r\n this._kanbanSubjectName = params.kanbanSubjectName;\r\n this._viewId = params.viewId;\r\n this._isTodoToggleShown = params.isTodoToggleShown;\r\n this._elObservable = ko.observable(null);\r\n this._originSteps = [];\r\n this._steps = ko.observableArray([]);\r\n this._hasData = ko.observable(true);\r\n this._avatarThumbnails = ko.observableArray();\r\n this._priorities = ko.observableArray();\r\n this._lifeStatuses = null;\r\n this._dragulaState = null;\r\n this._withDateBadges = this._generalProperties.GetPropertyValue(PROPERTIES.WITH_DATE_BADGES);\r\n this._progressBar = this._generalProperties.GetPropertyValue(PROPERTIES.PROGRESS_BAR_TYPE);\r\n this._withMemo = this._generalProperties.GetPropertyValue(PROPERTIES.WITH_MEMO);\r\n this._readOnly = this._generalProperties.GetPropertyValue(PROPERTIES.READ_ONLY);\r\n this._heightImage = this._generalProperties.GetPropertyValue(PROPERTIES.HEIGHT_IMAGE);\r\n this._colorBar = this._generalProperties.GetPropertyValue(PROPERTIES.COLOR_BAR);\r\n this._alwaysShowDeadline = this._generalProperties.GetPropertyValue(PROPERTIES.ALWAYS_SHOW_DEADLINE);\r\n this._hideOwner = this._generalProperties.GetPropertyValue(PROPERTIES.HIDE_OWNER);\r\n this._backgroundColor = this._generalProperties.GetPropertyValue(PROPERTIES.BACKGROUND_COLOR);\r\n this._showTooltip = this._generalProperties.GetPropertyValue(PROPERTIES.SHOW_TOOLTIP);\r\n this._showAlias = this._generalProperties.GetPropertyValue(PROPERTIES.SHOW_ALIAS);\r\n this._height = ko.observable(null);\r\n this.Css = ko.computed(() => {\r\n return {\r\n 'min-height': this._height() + 'px',\r\n 'background-color': !!this._backgroundColor && this._backgroundColor\r\n }\r\n });\r\n this._calculateHeightContainerStyle = null;\r\n\r\n this._searchString.subscribe(() => {\r\n this.Search();\r\n });\r\n this._followUpLifeStatuses = null;\r\n this._isFlowFolder = null;\r\n this._checkList = null;\r\n\r\n this.BindEvents();\r\n }\r\n\r\n private BindEvents() {\r\n PubSub.subscribe('KANBAN_FULLSCREEN', (message: any, data: boolean)=> {\r\n this.SetContainerHeight(data);\r\n });\r\n }\r\n\r\n private InitDragula() {\r\n _.each(DragulaExtention.FindGroups('KanbanBoard'), (item) => DragulaExtention.DestroyGroup(item));\r\n\r\n var kanbanBoardDrake = DragulaExtention.AddGroupWithOptions('KanbanBoard',\r\n {\r\n accepts: (el, target, source) => {\r\n var record = ko.dataFor(el) as RecordModel;\r\n var targetStep = ko.dataFor(target) as KanbanStep;\r\n return targetStep.HasNextStatus(record.LifestatusId);\r\n },\r\n\r\n moves: (el, target, source) => {\r\n var record = ko.dataFor(el) as RecordModel;\r\n if (!record.Actions || record.IsDisabled) {\r\n return false;\r\n }\r\n\r\n const actions = _.filter(record.Actions, action => !action.IsDisabled);\r\n let step = _.find(this.Steps(), item => item.Id === record.LifestatusId)\r\n\r\n if (actions.length > 1 && !step.MultipleActions) {\r\n return false;\r\n }\r\n\r\n var result = true;\r\n _.each(record.Actions, action => {\r\n if (!action.ActionRecordId || action.IsDisabled) {\r\n result = false;\r\n return;\r\n }\r\n });\r\n\r\n if (result) {\r\n let isActionTypeAction = _.find(record.Actions, (action) => {\r\n return (action.ActionTypeName === 'Action' && !action.IsDisabled) || (action.ActionTypeId == 0 && !action.IsDisabled);\r\n });\r\n return !isActionTypeAction ? result = false : result;\r\n\r\n } else {\r\n return result;\r\n }\r\n }\r\n\r\n });\r\n\r\n kanbanBoardDrake.drake.on('drag',\r\n (el) => {\r\n\r\n var record = ko.dataFor(el) as RecordModel;\r\n\r\n _.each(kanbanBoardDrake.drake.containers,\r\n (container) => {\r\n var kanbanStep = ko.dataFor(container) as KanbanStep;\r\n\r\n if (kanbanStep.HasNextStatus(record.LifestatusId)) {\r\n $(container).addClass(CLASSES.ALLOW_DRAG);\r\n } else {\r\n $(container).addClass(CLASSES.FORBID_DRAG);\r\n }\r\n });\r\n\r\n });\r\n\r\n kanbanBoardDrake.drake.on('dragend',\r\n (el) => {\r\n\r\n _.each(kanbanBoardDrake.drake.containers,\r\n (container) => {\r\n $(container).removeClass(CLASSES.ALLOW_DRAG);\r\n $(container).removeClass(CLASSES.FORBID_DRAG);\r\n });\r\n });\r\n\r\n if (this._readOnly) {\r\n kanbanBoardDrake.drake.destroy();\r\n }\r\n }\r\n\r\n ListenForStatusesLoad() {\r\n this._selectedTypeSubscription = this._selectedTypeObservable.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._selectedUsersSubscription = this._selectedUsers.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._showPlannedSubscription = this._showPlanned.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._viewIdSubscription = this._viewId.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._showTypeErrorSubscription = this._showTypeError.subscribe(() => {\r\n this.ShowTypeError();\r\n });\r\n this.LoadStatuses();\r\n }\r\n\r\n ShowTypeError(){\r\n if(this._showTypeError()) {\r\n new Notifier().Warning(NOTIFICATIONS.ERROR_GETTING_LIFESTATUSES\r\n .replace('{EntityName}', this.SubjectEntityName));\r\n this._showTypeError(false);\r\n }\r\n }\r\n\r\n LoadStatuses() {\r\n const selectedType = this._selectedTypeObservable();\r\n const selectedUsers = this._selectedUsers();\r\n const showPlanned = this._showPlanned();\r\n const viewId = this._screen().IsConsultScreen? 0 : this._viewId();\r\n this._isFlowFolder = this._selectedTypeObservable() && this._selectedTypeObservable().HasFlowFolder;\r\n\r\n if (selectedType === null || selectedUsers.length === 0 || showPlanned === null || viewId === null) {\r\n return;\r\n }\r\n\r\n const el = this._elObservable() ? {Target: this._elObservable()} : {};\r\n BlockUI.Block(el);\r\n KanbanStore.GetStatuses({\r\n EntityId: this.SubjectEntity,\r\n FieldId: this._titleFieldId,\r\n TypeId: selectedType ? selectedType.K_Type : null,\r\n SubjectTypeId: this._screen().GetTableTypeId(),\r\n FilterByTypeHierarchy: this._selectedTypeObservable() && this._selectedTypeObservable().ShowTypeHierarchy,\r\n FilterByOwners: true,\r\n UseSubjectEntity: this.UseKanbanSubject,\r\n FilterByEntityId: this.FilterByEntityId,\r\n FilterByRecordId: this.FilterByRecordId,\r\n RecordOwners: selectedUsers,\r\n ShowPlanned: showPlanned,\r\n WithTags: !this._generalProperties.GetPropertyValue(PROPERTIES.WITH_TAGS),\r\n WithSubjectImage: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_SUBJECT_IMAGE),\r\n WithPriorities: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'Show',\r\n WithCalculatedPriority: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'Calculated',\r\n WithCalculatedViaCalсPrioPriority: this.IsCalculatedViaCalcPriority,\r\n WithMails: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_MAILS),\r\n WithColor: this._colorBar,\r\n ViewId: viewId,\r\n IsToDo: false,\r\n WithMemo: this._withMemo,\r\n WithToDoProgressBar: this._progressBar\r\n }).always(() => {\r\n BlockUI.Unblock(this._elObservable());\r\n })\r\n .then((status: StatusModel) => {\r\n this._steps([]);\r\n this.InitDragula();\r\n this.SetData(status);\r\n this._data = status;\r\n this._hasData(status.Steps.length > 0);\r\n this._isTodoToggleShown(status.HasTodoType);\r\n this._avatarThumbnails(status.Thumbnails);\r\n this._priorities(status.Priorities);\r\n this.HeaderHeightResize();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n });\r\n }\r\n\r\n SetData(status: StatusModel) {\r\n var steps = [];\r\n _.each(status.Records,\r\n (record: RecordModel) => {\r\n let isActionTypeAction = _.find(record.Actions, (action) => {\r\n return (action.ActionTypeName === 'Action' && !action.IsDisabled) || (action.ActionTypeId == 0 && !action.IsDisabled);\r\n });\r\n record.IsDisabledCard = !isActionTypeAction;\r\n\r\n _.each(record.Actions,\r\n (action) => {\r\n if ((action.ActionTypeName === 'Action' && !action.IsDisabled) ||\r\n (action.ActionTypeId == 0 && !action.IsDisabled)) {\r\n action.HighlightedAction = true;\r\n } else {\r\n action.HighlightedAction = false;\r\n }\r\n });\r\n });\r\n\r\n _.each(status.Steps,\r\n (step: StepModel) => {\r\n if (step.Enabled) {\r\n if (!step.IsRetired) {\r\n step.Records = _.filter(status.Records, (record: RecordModel) => {\r\n return record.LifestatusId === step.Id;\r\n });\r\n }\r\n\r\n var links = _.filter(status.Links, (link: LinkModel) => {\r\n return link.IdStepTo === step.Id;\r\n });\r\n var kanbanStep = new KanbanStep(step, links);\r\n steps.push(kanbanStep);\r\n }\r\n });\r\n\r\n this._originSteps = steps;\r\n\r\n if (this._searchString()) {\r\n this.Search()\r\n } else {\r\n this._steps(steps);\r\n }\r\n }\r\n\r\n TopHeight() {\r\n let allPadding = 91,\r\n pageHeaderHeight = $(\"body\").find('.page-header.navbar').height(),\r\n actionBarSubFormHeight = $(\"body\").find('.actionBarSubForm').outerHeight(),\r\n kanbanBoardRootHeight = $(this._elObservable()).find('.kanbard-board-root').outerHeight(),\r\n panelTitleHeight = $(this._elObservable()).find('.kanban-column').find('.panel-title').outerHeight();\r\n\r\n return allPadding + pageHeaderHeight + actionBarSubFormHeight + kanbanBoardRootHeight + panelTitleHeight;\r\n }\r\n\r\n AfterRenderSteps(list) {\r\n this.SetContainerStyle();\r\n }\r\n\r\n SetContainerStyle(isFullscreen?: boolean) {\r\n const $container = $(this._elObservable()).find('.kanban-container').first();\r\n let calculate = $container.offset().top + 35;\r\n\r\n if (!MobileChecker.IsMobile() && calculate != this.TopHeight()) {\r\n let pageHeaderHeight = $(\"body\").find('.page-header.navbar').height(),\r\n kanbanBoardRootHeight = $(this._elObservable()).find('.kanbard-board-root').outerHeight(),\r\n panelTitleHeight = $(this._elObservable()).find('.kanban-column').find('.panel-title').outerHeight();\r\n\r\n calculate = pageHeaderHeight + kanbanBoardRootHeight + panelTitleHeight + 50;\r\n\r\n if (isFullscreen) {\r\n calculate = kanbanBoardRootHeight;\r\n } else {\r\n $container.css('min-height', `auto`);\r\n return;\r\n }\r\n }\r\n\r\n $container.css('min-height',`calc(100vh - ${calculate}px)`);\r\n }\r\n\r\n SetContainerHeight(isFullscreen: boolean): void {\r\n const $container = $(this._elObservable()).find('.js-default-kanban__component');\r\n const toolbarHeight = $(this._elObservable()).find('.table-toolbar-line').outerHeight();\r\n\r\n let calculate: number = 45;\r\n\r\n if (isFullscreen) {\r\n calculate = toolbarHeight\r\n } else {\r\n $container.find('.kanban-container').first().css('min-height', `auto`);\r\n }\r\n $container.css('height', isFullscreen ? `calc(100vh - ${calculate}px)`: 'auto');\r\n }\r\n\r\n HeaderHeightResize() {\r\n const defaultKanbanHtml = $(this._elObservable()).find('.js-default-kanban');\r\n const unbindResize = ResizeService.SubscribeWidth(this.OnResize, defaultKanbanHtml[0]); // subscribe on resize\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(defaultKanbanHtml[0], () => {\r\n unbindResize();\r\n window.removeEventListener(\"scroll\", this.RepositionDefaultKanbanHeaderOnScroll, false)\r\n });\r\n window.addEventListener(\"scroll\", this.RepositionDefaultKanbanHeaderOnScroll, false );\r\n }\r\n\r\n RepositionDefaultKanbanHeaderOnScroll = () => {\r\n const kanbanContainer = $(this._elObservable()).find('.js-default-kanban').find('.kanban-container');\r\n if (!kanbanContainer.hasClass('board-root')) {\r\n window.removeEventListener(\"scroll\", this.RepositionDefaultKanbanHeaderOnScroll, false)\r\n return false;\r\n }\r\n const scrollTop = $(window).scrollTop();\r\n const allTitleElement = this._elObservable().querySelectorAll(\".kanban-column:not(.retired-column):not(.collapsed) > .panel-title\");\r\n const titleElementHeight = $(this._elObservable().querySelector(\".kanban-column:not(.retired-column):not(.collapsed) > .panel-title\")).outerHeight();\r\n const boundingRect = $(this._elObservable()).find('.board-root')[0].getBoundingClientRect();\r\n const positionKanbanBoardRoot = $(this._elObservable()).find('.board-root').offset().top + 6;\r\n let fixedHeaderHeight: number = 0;\r\n let calculate: number = 0;\r\n\r\n if (window.innerWidth > 991) {\r\n const headerElement: HTMLDivElement = document.querySelector(\"body > .page-header\");\r\n fixedHeaderHeight = headerElement ? headerElement.offsetHeight : 0;\r\n }\r\n\r\n if ((boundingRect.top + 5) < fixedHeaderHeight) {\r\n calculate = Math.abs((positionKanbanBoardRoot - (scrollTop + fixedHeaderHeight)));\r\n }\r\n\r\n if (((boundingRect.bottom - 15) - fixedHeaderHeight - titleElementHeight) <= 0) {\r\n return false;\r\n }\r\n\r\n _.each(allTitleElement, (title: HTMLDivElement) => {\r\n title.style.top = calculate + \"px\";\r\n });\r\n }\r\n\r\n OnResize = () => {\r\n this.RepositionDefaultKanbanHeaderOnScroll();\r\n };\r\n\r\n Collapsing(item: KanbanStep, element) {\r\n item.IsCollapsed = !item.IsCollapsed;\r\n element.currentTarget.style.top = 0 + 'px';\r\n }\r\n\r\n get Steps(): KnockoutObservableArray<KanbanStep> {\r\n return this._steps;\r\n }\r\n\r\n get IsCalculatedViaCalcPriority(): boolean {\r\n return this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'WithCalculatedViaCalсPrio';\r\n }\r\n\r\n GetActionItemsTemplate(data){\r\n return $((ko as any).renderTemplateX(TodoActionItemsTemplate, {$_data: data}));\r\n }\r\n\r\n ShowCheckListKanban(record: RecordModel, step: KanbanStep){\r\n FlowFolderStore.GetProgressBarInfo({ EntityId: record.EntityId, RecordId: record.RecordId })\r\n .then((result: ProgressBarInfoModel) => {\r\n const nextLifeStatus = _.find(result.NextLifeStatuses.Child.LifeStatuses, (lifeStatus)=> lifeStatus.Id === step.Model.Id);\r\n result.NextLifeStatuses.Child.CheckLists = _.filter(result.NextLifeStatuses.Child.CheckLists, (checkList) => checkList.LifeStatusId === step.Model.Id);\r\n\r\n this.CheckListKanban(result.NextLifeStatuses, result.FlowFolder, record, step, nextLifeStatus);\r\n });\r\n }\r\n\r\n CheckListKanban(result: LifeStatusesGeneralModel,\r\n flowFolderModel: FlowFolderModel,\r\n kanbanRecordModel: RecordModel,\r\n kanbanStep: KanbanStep,\r\n nextLifeStatus: LifeStatusSimpleModel) {\r\n if (result == null || !result.Child) {\r\n return;\r\n }\r\n\r\n if (!this._followUpRecord) {\r\n this._followUpRecord = new FollowUpRecordModel();\r\n }\r\n\r\n if (!this._followUpLifeStatuses){\r\n this._followUpLifeStatuses = new FollowUpLifeStatuses();\r\n }\r\n\r\n const screenParams: ScreenParamsModel = { EntityId: kanbanRecordModel.EntityId, RecordId: kanbanRecordModel.RecordId };\r\n\r\n this._followUpRecord.CurrentLifeStatus = result.Child.CurrentLifeStatus;\r\n\r\n this._lifeStatuses = result.Child;\r\n\r\n const showCheckLists = _.any(this._lifeStatuses.CheckLists, checkList => checkList.CheckItems.length > 0);\r\n\r\n if (showCheckLists) {\r\n this.ShowCheckLists(result,\r\n this._isFlowFolder && !this._screen().IsEditScreen,\r\n screenParams,\r\n flowFolderModel,\r\n kanbanRecordModel,\r\n nextLifeStatus);\r\n return;\r\n } else {\r\n this.TryToApproveLifeStatus(result, kanbanRecordModel, kanbanStep);\r\n }\r\n\r\n }\r\n\r\n private ShowCheckLists(result: LifeStatusesGeneralModel,\r\n isFlowFolder: boolean,\r\n screenParams,\r\n flowFolderModel: FlowFolderModel,\r\n kanbanRecordModel: RecordModel,\r\n nextLifeStatus: LifeStatusSimpleModel) {\r\n\r\n const actionSubject = result.Child.ActionSubjectRecord;\r\n const checkLists = result.Child.CheckLists;\r\n const currentLifeStatus = result.Child.CurrentLifeStatus;\r\n\r\n this._checkList = new ActionCheckList({\r\n EntityId: actionSubject.EntityId,\r\n RecordId: actionSubject.RecordId,\r\n FollowUpMode: true,\r\n CurrentLifestatus: result.Child.CurrentLifeStatus,\r\n KanbanMod: true\r\n });\r\n this._checkList.On('KANBAN_CHECKLIST_CANCEL',\r\n this,\r\n eventArgs => {\r\n this.CancelUpdateProcess();\r\n });\r\n this._checkList.On('KANBAN_CHECKLIST_SAVE',\r\n this,\r\n eventArgs => {\r\n const lifeStatusesSerializedData = eventArgs.data.serializedData;\r\n\r\n if (nextLifeStatus.ApprovalName === 'Password' || nextLifeStatus.ApprovalName === 'Yes/No'){\r\n this.AproveLifeStatus({\r\n currentLifeStatus: currentLifeStatus,\r\n nextLifeStatus: nextLifeStatus\r\n }, kanbanRecordModel, nextLifeStatus.Id, lifeStatusesSerializedData[0].CheckItems);\r\n\r\n } else {\r\n this.UpdateStatus(kanbanRecordModel,\r\n lifeStatusesSerializedData[0].LifeStatusId,\r\n lifeStatusesSerializedData[0].CheckItems,\r\n null);\r\n }\r\n });\r\n\r\n this._checkList.ProvideData(checkLists);\r\n this._checkList.InitFlowFolder(isFlowFolder, screenParams.EntityId, flowFolderModel);\r\n this._checkList.Show();\r\n }\r\n\r\n AfterDropCase(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n var record = item as RecordModel;\r\n var step = targetContext as KanbanStep;\r\n this._dragulaState = {\r\n item: item,\r\n sourceIndex: sourceIndex,\r\n sourceItems: sourceItems,\r\n sourceContext: sourceContext,\r\n targetIndex: targetIndex,\r\n targetItems: targetItems\r\n };\r\n if (record) {\r\n let action = _.first(record.Actions),\r\n isActionItems = !!(step.ActionItems && step.ActionItems.length),\r\n sourceMultipleActions = sourceContext.Model.MultipleActions,\r\n oneAction = item.Actions.length == 1;\r\n\r\n if (isActionItems && (oneAction ? oneAction : !sourceMultipleActions) ) {\r\n this.ShowCheckListKanban(record, step);\r\n\r\n } else if (action.ActionsEntityId) {\r\n\r\n FollowUpStore.GetStatuses(\r\n {\r\n ActionEntityId: action.ActionsEntityId,\r\n EntityId: record.EntityId,\r\n RecordId: record.RecordId\r\n }).then(result => {\r\n this.TryToApproveLifeStatus(result, record, step);\r\n });\r\n }\r\n }\r\n\r\n }\r\n\r\n CancelUpdateProcess() {\r\n this._dragulaState.sourceItems.splice(this._dragulaState.sourceIndex, 1);\r\n this._dragulaState.sourceItems.splice(this._dragulaState.sourceIndex, 0, this._dragulaState.item);\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n TryToApproveLifeStatus(lifeStatusesModel: LifeStatusesGeneralModel, record: RecordModel, step: KanbanStep) {\r\n this._lifeStatuses = lifeStatusesModel.Child;\r\n const nextLifeStatus = _.find(lifeStatusesModel.Child.LifeStatuses, (lifeStatus)=> lifeStatus.Id === step.Model.Id);\r\n\r\n if (this._lifeStatuses.LifeStatuses.length === 0) {\r\n new Notifier().Warning(NOTIFICATIONS.NEXT_STATUS_NOT_AVAILABLE);\r\n } else {\r\n this.AproveLifeStatus({\r\n currentLifeStatus: lifeStatusesModel.Child.CurrentLifeStatus,\r\n nextLifeStatus: nextLifeStatus\r\n }, record, step.Id);\r\n }\r\n }\r\n\r\n AproveLifeStatus(aprovalRelatedData, record, stepId, checkItems?: ICheckItemSerializedValue[]) {\r\n const confirmationText = CONFIRMATIONS.ARE_SURE_TO_CHANGE_LIFESTATUS\r\n .replace('{fromstatus}', aprovalRelatedData.currentLifeStatus.Name)\r\n .replace('{tostatus}', aprovalRelatedData.nextLifeStatus.Name);\r\n\r\n const checkItemsValue:ICheckItemSerializedValue[] = (checkItems && checkItems.length ? checkItems : null);\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n this,\r\n () => {\r\n this.UpdateStatus(record, stepId, checkItemsValue);\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED,\r\n this,\r\n () => {\r\n this.SaveCheckList();\r\n this.CancelUpdateProcess();\r\n });\r\n const approvalName = aprovalRelatedData.nextLifeStatus.ApprovalName || 'Off';\r\n switch (approvalName) {\r\n case 'Off':\r\n this.UpdateStatus(record, stepId, checkItemsValue);\r\n break;\r\n case 'Password':\r\n const passwordPrompt = new PromptDialog(\r\n {\r\n Type: Types.Password,\r\n Label: CONFIRMATIONS.PLEASE_TYPE_YOUR_PASSWORD_TO_CONFIRM,\r\n Value: '',\r\n MinHeight: 200,\r\n Required: true,\r\n RequiredErrorMessage: LABELS.PASSWORD + ' ' + NOTIFICATIONS.IS_REQUIRED,\r\n ShowNotification: false,\r\n CloseOnSave: false\r\n });\r\n passwordPrompt.Show();\r\n\r\n passwordPrompt.On('Save', this,\r\n (eventargs) => {\r\n const password = eventargs.data.value;\r\n if (password) {\r\n BlockUI.Block();\r\n\r\n FollowUpStore.ConfirmPassword({password: password})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((response) => {\r\n if (response) {\r\n passwordPrompt.Hide(false);\r\n this.UpdateStatus(record, stepId, checkItemsValue, password);\r\n } else {\r\n passwordPrompt.ExternalInvalidActionHandling(NOTIFICATIONS.INCORRECT_PASSWORD);\r\n this.SaveCheckList();\r\n this.CancelUpdateProcess();\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n });\r\n }\r\n }\r\n );\r\n\r\n passwordPrompt.On('Cancel', this, () => {\r\n this.SaveCheckList();\r\n this.CancelUpdateProcess();\r\n });\r\n break;\r\n\r\n case 'Yes/No':\r\n confirmationDialog.Show();\r\n break;\r\n }\r\n }\r\n\r\n UpdateStatus(record: RecordModel, stepId, checkItems?: ICheckItemSerializedValue[], password?) {\r\n const requestModel: IUpdateStatusRequestModel = {\r\n SubjectEntityId: record.EntityId,\r\n SubjectRecordId: record.RecordId,\r\n NewStatusId: stepId,\r\n Actions: record.Actions,\r\n PreviousLifeStatusId: record.LifestatusId\r\n };\r\n\r\n if (checkItems && checkItems.length) {\r\n requestModel.CheckItems = checkItems;\r\n }\r\n\r\n if (password) requestModel.ConfirmationPassword = password;\r\n\r\n const el = this._elObservable();\r\n BlockUI.Block({Target: el});\r\n KanbanStore.UpdateStatus(requestModel)\r\n .always(() => {\r\n BlockUI.Unblock(el);\r\n })\r\n .then(() => {\r\n this.LoadStatuses();\r\n new Notifier().Success(NOTIFICATIONS.STATUS_UPDATED);\r\n record.LifestatusId = stepId;\r\n this._dragulaState.sourceItems.splice(this._dragulaState.sourceIndex, 1);\r\n this._dragulaState.targetItems.splice(this._dragulaState.targetIndex, 0, this._dragulaState.item);\r\n }).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n\r\n }\r\n\r\n SaveCheckList(){\r\n if (this._checkList){\r\n this._checkList.SaveCheckList();\r\n }\r\n }\r\n\r\n set Height(height: number) {\r\n this._height(height);\r\n }\r\n\r\n private GetConsultScreenType(): ScreenTypes {\r\n return ScreenTypes.ConsultScreen;\r\n }\r\n\r\n private GetEditScreenType(): ScreenTypes {\r\n return ScreenTypes.EditScreen;\r\n }\r\n\r\n private GetScreenTypeFromProperty(propertyName: string): ScreenTypes {\r\n const screenTypeName = this._generalProperties.GetPropertyValue(propertyName);\r\n if (screenTypeName) {\r\n if (screenTypeName.Value == 'ConsultScreen') {\r\n return ScreenTypes.ConsultScreen\r\n }\r\n\r\n if (screenTypeName.Value == 'EditScreen') {\r\n return ScreenTypes.EditScreen\r\n }\r\n }\r\n\r\n return ScreenTypes.EditScreen;\r\n }\r\n\r\n OpenConsultScreen(record: RecordModel) {\r\n this.OpenScreen(record.EntityId,\r\n record.TypeId,\r\n record.RecordId,\r\n null,\r\n DataModes.Default,\r\n record,\r\n this.GetConsultScreenType());\r\n }\r\n\r\n OpenEditScreen(record: RecordModel) {\r\n this.OpenScreen(record.EntityId,\r\n record.TypeId,\r\n record.RecordId,\r\n null,\r\n DataModes.Default,\r\n record,\r\n this.GetEditScreenType());\r\n }\r\n\r\n OpenActionRecordScreen(record: RecordModel, action: ActionModel) {\r\n let followUpRecord = new FollowUpRecordModel();\r\n followUpRecord.Actions = record.Actions;\r\n this.OpenScreen(action.ActionsEntityId,\r\n action.ActionTypeId,\r\n action.ActionRecordId,\r\n followUpRecord,\r\n DataModes.Default,\r\n record,\r\n this.GetScreenTypeFromProperty(PROPERTIES.ACTION_SCREEN_TYPE));\r\n }\r\n\r\n async OpenScreen(\r\n entityId: number,\r\n recordTypeId: number,\r\n recordId: number,\r\n record: FollowUpRecordModel,\r\n mode: DataModes,\r\n activeCard: RecordModel,\r\n screenType: ScreenTypes,\r\n openMailTab?: boolean\r\n ) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n BlockUI.Block();\r\n\r\n if (screenType == ScreenTypes.EditScreen) {\r\n LockManager.Instance.TryLock(entityId, recordId)\r\n .then(() => {\r\n screenManager.IsTypeTransformationRequired(entityId, recordId)\r\n .then((result: any) => {\r\n if (result) {\r\n const typeScreen = new TypeScreen(entityId, recordTypeId, true, false);\r\n\r\n typeScreen.On(\"TYPE_SELECTED\",\r\n this,\r\n (eventArgs) => {\r\n UserVarsManager.Instance.RemoveFromRecent(recordId, entityId, recordTypeId);\r\n\r\n const typeId = eventArgs.data.TypeId;\r\n const typeName = eventArgs.data.TypeName;\r\n\r\n UserVarsManager.Instance.AddRecent(entityId, recordId, typeId);\r\n\r\n this.ShowEditScreen(entityId, typeId, recordId, record, mode, activeCard, typeName, openMailTab)\r\n });\r\n\r\n typeScreen.Show();\r\n } else {\r\n this.ShowEditScreen(entityId, recordTypeId, recordId, record, mode, activeCard, null, openMailTab)\r\n }\r\n });\r\n })\r\n .fail(() => BlockUI.Unblock());\r\n } else if (screenType == ScreenTypes.ConsultScreen) {\r\n screenManager.GetScreenByScreenType(\r\n entityId,\r\n screenType,\r\n recordId\r\n )\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n screen.ShowInModal();\r\n\r\n if (openMailTab) {\r\n this.OpenMailTab(screen);\r\n }\r\n\r\n if (screen.GetType() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n PathRunner.Instance.GetUnit(entityId, screen.IsSpecialScreenExist).LoadNewData(recordId);\r\n }\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n }\r\n\r\n private async ShowEditScreen(\r\n entityId: number,\r\n recordTypeId: number,\r\n recordId: number,\r\n record: FollowUpRecordModel,\r\n mode: DataModes,\r\n activeCard: RecordModel,\r\n typeName: string = null,\r\n openMailTab?: boolean\r\n ) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n BlockUI.Block();\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: recordTypeId,\r\n TableTypeName: typeName,\r\n RecordId: recordId,\r\n DataMode: mode\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === entityId && eventArgs.data.RecordId === recordId) {\r\n screen.Close();\r\n }\r\n });\r\n\r\n screen.On('MODAL_CLOSE',\r\n this,\r\n () => {\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n });\r\n\r\n screen.On('RECORD_SAVED',\r\n this,\r\n () => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n this.LoadStatuses();\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n });\r\n\r\n screen.On(\"RECORD_REMOVED\",\r\n this,\r\n (eventArgs) => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n\r\n let editScreen = screen as EditScreen;\r\n editScreen.Close();\r\n\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n this.LoadStatuses();\r\n });\r\n\r\n screen.On('COPY', this, async (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || recordTypeId;\r\n await this.NewRecord(activeCard, {\r\n EntityId: entityId,\r\n TypeId: copyTableType,\r\n ExampleRecordId: eventArgs.data.recordId\r\n }, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n\r\n var followUpControl = screen.GetControlByType(CONTROL_TYPES.ButtonFollowUp) as ButtonFollowUp;\r\n\r\n if (followUpControl) {\r\n followUpControl.SetRecord(record);\r\n\r\n screen.On(\"FOLLOWUP_RECORD\",\r\n this,\r\n (eventArgs) => {\r\n screen.Close();\r\n\r\n const followUpRecordModel = followUpControl.GetRecord();\r\n const currentLifestatus = followUpRecordModel ? followUpRecordModel.CurrentLifeStatus : null;\r\n\r\n BlockUI.Block();\r\n if (followUpRecordModel && (followUpRecordModel.LifeStatusSort === LIFE_STATUS_GROUPS.RETIRED\r\n || followUpRecordModel.LifeStatusNoActionNode\r\n || (currentLifestatus\r\n && (currentLifestatus.FollowupModeName === FollowupModes.DIRECT_STATUS_UPDATE\r\n || currentLifestatus.FollowupModeName === FollowupModes.EDIT_CURRENT)))) {\r\n BlockUI.Unblock();\r\n return;\r\n }\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: recordTypeId,\r\n RecordId: recordId,\r\n LoadAsExample: recordId > 0,\r\n DataMode: DataModes.FollowUp,\r\n SubjectLifestatusId: followUpRecordModel ? followUpRecordModel.LifeStatusId : null\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n this.EditScreenInFollowUpMode(screen);\r\n }).fail(error => {\r\n new Notifier($(this._elObservable())).Warning(error.message);\r\n });\r\n });\r\n }\r\n\r\n screen.ShowInModal();\r\n\r\n if (openMailTab) {\r\n this.OpenMailTab(screen);\r\n }\r\n }).fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n Search() {\r\n this._steps([]);\r\n\r\n this.InitDragula();\r\n\r\n const searchDelegate = (record: RecordModel) => this.RecordMatchesByCard(record) || this.RecordMatchesByAction(record) || this.RecordMatchesByLink(record);\r\n this.SearchRecordsBySearchTerm(searchDelegate);\r\n\r\n this._hasData(this._steps().length > 0);\r\n }\r\n\r\n private SearchRecordsBySearchTerm(filterDelegate: (record: RecordModel) => boolean) {\r\n if (!this._searchString()) {\r\n this._steps(this._originSteps);\r\n return;\r\n }\r\n\r\n const newSteps = [];\r\n\r\n for (const step of this._originSteps) {\r\n const newStep = step.Copy();\r\n newStep.ClearRecords();\r\n\r\n for (const record of step.Records()) {\r\n const match = filterDelegate(record);\r\n if (match) {\r\n newStep.AddRecord(record);\r\n }\r\n }\r\n\r\n newSteps.push(newStep);\r\n }\r\n\r\n this._steps(newSteps);\r\n }\r\n\r\n private RecordMatchesByCard(record: RecordModel) {\r\n return record.Name && record.Name.toUpperCase().indexOf(this._searchString().toUpperCase()) > -1;\r\n }\r\n\r\n private RecordMatchesByAction(record: RecordModel) {\r\n return record.Actions\r\n .filter(a => !!a.ActionName)\r\n .filter(a => a.ActionName.toUpperCase().indexOf(this._searchString().toUpperCase()) > -1).length > 0;\r\n }\r\n\r\n private RecordMatchesByLink(record: RecordModel) {\r\n for (const link of record.MainLinks) {\r\n const match = link.RecordName && link.RecordName.toUpperCase().indexOf(this._searchString().toUpperCase()) > -1;\r\n if (match) {\r\n return true;\r\n }\r\n }\r\n\r\n for (const user of record.Users) {\r\n const match = user.UserName && user.UserName.toUpperCase().indexOf(this._searchString().toUpperCase()) > -1;\r\n if (match) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private EditScreenInFollowUpMode(editScreen: EditScreen) {\r\n LockManager.Instance.ReleaseAllLocks();\r\n\r\n editScreen.IsDataFromExample = true;\r\n editScreen.UseLinking = true;\r\n editScreen.ParentRecordId = editScreen.GetRecordId();\r\n\r\n editScreen.On('FOLLOWUP',\r\n this,\r\n (eventArgs) => {\r\n LockManager.Instance.ReleaseAllLocks();\r\n this.LoadStatuses();\r\n });\r\n\r\n editScreen.On(\"RECORD_SAVED\",\r\n this,\r\n (eventArgs) => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadStatuses();\r\n LockManager.Instance.ReleaseAllLocks();\r\n });\r\n\r\n editScreen.On(\"RECORD_REMOVED\",\r\n this,\r\n (eventArgs) => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n\r\n LockManager.Instance.ReleaseAllLocks();\r\n this.LoadStatuses();\r\n });\r\n\r\n editScreen.ShowInModal();\r\n }\r\n\r\n SelectAction(card: RecordModel) {\r\n const globalManager = GlobalManager.Instance;\r\n const actionGlobal = globalManager.GetGlobal(GLOBALS.ACTION_TABLE);\r\n const parentTypeId = this.SubjectEntityName === actionGlobal ? card.TypeId : 0;\r\n const typeScreen = new TypeScreen(null, parentTypeId, false, false, actionGlobal, [ActionTypes.ACTION]);\r\n typeScreen\r\n .On(\"TYPE_SELECTED\", this, async eventArgs => { await this.NewRecord(card, eventArgs.data); })\r\n .On(\"TYPES_NOT_FOUND\", this, eventArgs => new Notifier($(this._elObservable())).Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n typeScreen.Show();\r\n }\r\n\r\n private async NewRecord(activeCard: RecordModel, newRecordSettings: any, dataMode: DataModes = DataModes.Default, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n const actionEntityId = newRecordSettings.EntityId;\r\n const typeId = newRecordSettings.TypeId;\r\n const kindId = newRecordSettings.KindId;\r\n const exampleRecordId = newRecordSettings.ExampleRecordId;\r\n\r\n const actionSubjectRecord = new ActionSubjectRecordModel(activeCard.EntityId, activeCard.RecordId);\r\n\r\n if (actionEntityId) {\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: actionEntityId,\r\n TableTypeId: typeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n SubjectLifestatusId: activeCard.LifestatusId,\r\n ActionSubjectRecord: actionSubjectRecord,\r\n DataMode: dataMode,\r\n AliasSuffix: aliasSuffix\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n let notifier = new Notifier($(this._elObservable()));\r\n notifier.Warning(error.message);\r\n }).then((screen) => {\r\n const editScreen = screen as EditScreen;\r\n\r\n screen.On('LINK_LIST_DATA_LOADED', this, eventArgs => {\r\n if (dataMode === DataModes.Default) {\r\n let linkListControl = eventArgs.data.Control as LinkList;\r\n const relationModel = _.find(linkListControl.DataModel().Entities(), relatedEntity => {\r\n return relatedEntity.EntityId === activeCard.EntityId;\r\n });\r\n\r\n if (relationModel) {\r\n let newRelation = new NewRelationModel();\r\n newRelation.Name = activeCard.LinkName;\r\n newRelation.Id = activeCard.RecordId;\r\n newRelation.IsMain = true;\r\n newRelation.TypeName = this._selectedTypeObservable().Name;\r\n linkListControl.AddRecord(activeCard.RecordId, relationModel, newRelation);\r\n }\r\n }\r\n\r\n });\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.SaveImmediately = true;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n screen.On('RECORD_SAVED', this, eventArgs => this.LoadStatuses());\r\n screen.On('COPY', this, async (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || typeId;\r\n await this.NewRecord(activeCard, {\r\n EntityId: actionEntityId,\r\n TypeId: copyTableType,\r\n ExampleRecordId: eventArgs.data.recordId\r\n }, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n screen.ShowInModal();\r\n });\r\n } else {\r\n var notifier = new Notifier($(this._elObservable()));\r\n notifier.Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n }\r\n }\r\n\r\n private OpenMailTab(screen: IScreen) {\r\n const tab = screen.GetControl<Tab>(CONTROL_TYPES.Tab);\r\n\r\n if (tab) {\r\n for (const tabPage of tab.GetSubControls() as TabPage[]) {\r\n const grid = tabPage.GetSubControls().find(control => control.GetType() === CONTROL_TYPES.Grid);\r\n if (grid && grid.GetModel().EntityId === this._data.MailEntityId) {\r\n tab.SetActiveTabPage(tabPage);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private get UseKanbanSubject() {\r\n return !!this._kanbanSubjectId();\r\n }\r\n\r\n private get UseFilterByEntityRecord() {\r\n return this._screen().IsConsultScreen;\r\n }\r\n\r\n private get SubjectEntity() {\r\n return this.UseKanbanSubject\r\n ? this._kanbanSubjectId()\r\n : this._screen().GetEntityId();\r\n }\r\n\r\n private get SubjectEntityName() {\r\n return this.UseKanbanSubject\r\n ? this._kanbanSubjectName()\r\n : this._screen().GetEntityName();\r\n }\r\n\r\n private get FilterByEntityId() {\r\n return this.UseFilterByEntityRecord\r\n ? this._screen().GetEntityId()\r\n : null;\r\n }\r\n\r\n private get FilterByRecordId() {\r\n return this.UseFilterByEntityRecord\r\n ? this._screen().GetRecordId()\r\n : null;\r\n }\r\n\r\n OnPriorityUpdateError() {\r\n this.LoadStatuses();\r\n }\r\n\r\n OnMailClick(record: RecordModel) {\r\n this.OpenScreen(\r\n record.EntityId,\r\n record.TypeId,\r\n record.RecordId,\r\n null,\r\n DataModes.Default,\r\n record,\r\n this.GetEditScreenType(),\r\n true\r\n );\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>){\r\n this._elObservable(el[0].parentElement.parentElement.parentElement);\r\n this.ListenForStatusesLoad();\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(el[0], () => {\r\n PubSub.unsubscribe('KANBAN_FULLSCREEN');\r\n });\r\n }\r\n\r\n GetRootDefaultTemplateName(): string {\r\n return 'Core/Controls/Kanban/Templates/Default/DefaultKanban';\r\n }\r\n\r\n dispose() {\r\n this._selectedTypeSubscription.dispose();\r\n this._selectedUsersSubscription.dispose();\r\n this._showPlannedSubscription.dispose();\r\n this._viewIdSubscription.dispose();\r\n this._showTypeErrorSubscription.dispose();\r\n }\r\n}\r\n\r\nko.components.register('default-kanban', {\r\n viewModel: DefaultKanban,\r\n template: `<div class=\"js-default-kanban__component\" data-bind=\"template: { name: GetRootDefaultTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) }\"></div>`\r\n});","// Module\nvar code = \"<div class=\\\"clearfix\\\"></div> <div class=\\\"clearfix\\\" data-bind=\\\"visible: !_hasData()\\\"> <div class=\\\"alert alert-block alert-info\\\"> <h4 class=\\\"alert-heading\\\">Lifestatuses are not created!</h4> <p> Please, create lifestatuses. </p> </div> </div> <div data-bind=\\\"visible: _hasData, style: Css\\\" class=\\\"kanban-container board-root clearfix\\\"> <!-- ko fastForEach: {data: Steps, afterQueueFlush: $data.AfterRenderSteps.bind($data)} --> <!-- ko ifnot: IsRetired --> <div data-bind=\\\"css: {'retired-column': IsRetired, 'collapsed': _isCollapsed }\\\" class=\\\"kanban-column clearfix\\\"> <span data-bind=\\\"click: $parent.Collapsing.bind($data)\\\" class=\\\"panel-title\\\"> <!-- ko if: $parent._showTooltip --> <!--ko if: MemoTranslation || Memo --> <div class=\\\"status-description-info\\\" data-bind=\\\"tooltip: { content: MemoTranslation || Memo }\\\"> <i class=\\\"fa fa-info-circle\\\"></i> </div> <!--/ko--> <!--/ko--> <span data-bind=\\\"text: TranslatedName,\\r\\n ellipsisTooltip: {\\r\\n content: $parent._showTooltip ? TranslatedName : '',\\r\\n options: {\\r\\n isLineClampMode: true\\r\\n }\\r\\n }\\\"></span> <!-- ko if: ActionItems && ActionItems.length > 0 --> <!-- ko if: !$parent._readOnly && $parent._showTooltip --> <span class=\\\"actionItemsButton\\\" data-bind=\\\"tooltip: { content: $parent.GetActionItemsTemplate($data), addClass: 'jBox-padding-5px'}\\\"><i class=\\\"fa fa-list-ul\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> <!-- ko ifnot: !$parent._readOnly && $parent._showTooltip --> <span class=\\\"actionItemsButton\\\"><i class=\\\"fa fa-list-ul\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> <!-- /ko --> </span> <div data-bind=\\\"visible: !_isCollapsed(), dragula: {\\r\\n data: Records,\\r\\n group: 'KanbanBoard',\\r\\n afterDrop: $parent.AfterDropCase.bind($parent),\\r\\n disabled: $parents[1]._readOnly\\r\\n },\\r\\n css: { dustbin: IsRetired }\\\" class=\\\"kanban-container\\\"> <div class=\\\"kanban-item\\\"> <kanban-card params=\\\"\\r\\n entityId: EntityId,\\r\\n recordId: RecordId,\\r\\n tags: Tags,\\r\\n priority: Priority,\\r\\n users: Users,\\r\\n isDisabled: IsDisabled,\\r\\n avatarThumbnails: $parents[1]._avatarThumbnails,\\r\\n priorities: $parents[1]._priorities,\\r\\n thumbnail: Thumbnail,\\r\\n mailsCount: MailsCount,\\r\\n parentOrChildRecords: ParentOrChildRecords,\\r\\n warnings: Warnings,\\r\\n color: Color,\\r\\n withGreyBackground: IsDisabled || IsDisabledCard,\\r\\n withDateBadges: $parents[1]._withDateBadges,\\r\\n colorBar: $parents[1]._colorBar,\\r\\n onPriorityUpdateError: $parents[1].OnPriorityUpdateError.bind($parents[1]),\\r\\n onMailClick: $parents[1].OnMailClick.bind($parents[1], $data),\\r\\n progressBar: $parents[1]._progressBar,\\r\\n memo: ReplaceMemoText,\\r\\n retiredTodoActionsNumber: RetiredTodoActionsNumber,\\r\\n totalTodoActionsNumber: TotalTodoActionsNumber,\\r\\n readOnly: $parents[1]._readOnly,\\r\\n isCalculatedViaCalcPriority: $parents[1].IsCalculatedViaCalcPriority,\\r\\n alwaysShowDeadline: $parents[1]._alwaysShowDeadline,\\r\\n hideOwner: $parents[1]._hideOwner,\\r\\n heightImage: $parents[1]._heightImage,\\r\\n isTodo: false,\\r\\n showTooltip: $parents[1]._showTooltip,\\r\\n showAlias: $parents[1]._showAlias\\r\\n \\\"> </kanban-card> </div> </div> </div> <!-- /ko --> <!-- /ko --> <div class=\\\"retiredBox\\\"> <!-- ko fastForEach: {data: Steps, afterQueueFlush: $data.AfterRenderSteps.bind($data)} --> <!-- ko if: IsRetired --> <div data-bind=\\\"css: {'retired-column': IsRetired, 'collapsed': _isCollapsed }\\\" class=\\\"kanban-column isRetiredColumn clearfix\\\"> <span data-bind=\\\"click: $parent.Collapsing.bind($data)\\\" class=\\\"panel-title\\\"> <!-- ko if: $parent._showTooltip --> <!--ko if: MemoTranslation || Memo --> <div class=\\\"status-description-info\\\" data-bind=\\\"tooltip: { content: MemoTranslation || Memo }\\\"> <i class=\\\"fa fa-info-circle\\\"></i> </div> <!--/ko--> <!--/ko--> <span data-bind=\\\"text: TranslatedName,\\r\\n ellipsisTooltip: {\\r\\n content: $parent._showTooltip ? TranslatedName : '',\\r\\n options: {\\r\\n isLineClampMode: true\\r\\n }\\r\\n }\\\"></span> </span> <div data-bind=\\\"visible: !_isCollapsed(), dragula: {\\r\\n data: Records,\\r\\n group: 'KanbanBoard',\\r\\n afterDrop: $parent.AfterDropCase.bind($parent),\\r\\n disabled: $parents[1]._readOnly\\r\\n },\\r\\n css: { dustbin: IsRetired }\\\" class=\\\"kanban-container\\\"> <div class=\\\"kanban-item\\\" data-bind=\\\"debug: $parents[1].ShowAlias\\\"> <kanban-card params=\\\"\\r\\n entityId: EntityId,\\r\\n recordId: RecordId,\\r\\n tags: Tags,\\r\\n priority: Priority,\\r\\n users: Users,\\r\\n isDisabled: IsDisabled,\\r\\n avatarThumbnails: $parents[1]._avatarThumbnails,\\r\\n priorities: $parents[1]._priorities,\\r\\n thumbnail: Thumbnail,\\r\\n mailsCount: MailsCount,\\r\\n parentOrChildRecords: ParentOrChildRecords,\\r\\n color: Color,\\r\\n warnings: Warnings,\\r\\n withGreyBackground: IsDisabled || IsDisabledCard,\\r\\n withDateBadges: $parents[1]._withDateBadges,\\r\\n colorBar: $parents[1]._colorBar,\\r\\n onPriorityUpdateError: $parents[1].OnPriorityUpdateError.bind($parents[1]),\\r\\n onMailClick: $parents[1].OnMailClick.bind($parents[1], $data),\\r\\n progressBar: $parents[1]._progressBar,\\r\\n memo: ReplaceMemoText,\\r\\n retiredTodoActionsNumber: RetiredTodoActionsNumber,\\r\\n totalTodoActionsNumber: TotalTodoActionsNumber,\\r\\n readOnly: $parents[1]._readOnly,\\r\\n isCalculatedViaCalcPriority: $parents[1].IsCalculatedViaCalcPriority,\\r\\n alwaysShowDeadline: $parents[1]._alwaysShowDeadline,\\r\\n hideOwner: $parents[1]._hideOwner,\\r\\n heightImage: $parents[1]._heightImage,\\r\\n isTodo: false,\\r\\n showTooltip: $parents[1]._showTooltip,\\r\\n showAlias: $parents[1]._showAlias\\r\\n \\\"> </kanban-card> </div> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","export const ActionTypes = {\r\n\tACTION: \"Action\"\r\n};","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\nimport {IUpdateActionStatusRequestModel, KanbanStore} from 'Core/Controls/Kanban/Stores/KanbanStore';\r\nimport {\r\n ActionModel, ParentOrChildRecordModel,\r\n PriorityModel,\r\n RecordModel,\r\n StatusModel,\r\n StepModel,\r\n ThumbnailModel\r\n} from 'Core/Controls/Kanban/Models/StatusModel';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {DataModes} from 'Core/Enums/DataModes';\r\nimport {IScreen} from 'Core/Screens/IScreen';\r\nimport type {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {LOCK_EVENTS, LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\n\r\nimport {Guid} from 'Core/Common/Guid';\r\n\r\nimport {FollowUpRecordModel} from 'Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel';\r\nimport {ButtonFollowUp} from 'Core/Controls/ButtonFollowUp/ButtonFollowUp';\r\n\r\nimport {ConfigModel} from 'Core/GeneralProperties/Models/ConfigModel';\r\nimport {TABLE_SECURITY_WORDS} from 'Core/Constants/TableSecurityWords';\r\nimport {FollowupModes} from 'Core/Constants/FollowupModes';\r\nimport {CONTROL_TYPES, LIFE_STATUS_GROUPS} from 'Core/Constant';\r\nimport {PROPERTIES} from './Constants';\r\n\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\n\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList';\r\nimport {NewRelationModel} from 'Core/Controls/LinkList/Models/NewRelationModel';\r\nimport {Tab} from 'Core/Controls/Tab/Tab';\r\nimport {TabPage} from 'Core/Controls/TabPage/TabPage';\r\nimport {Timer} from \"Core/Controls/Timer/Timer\";\r\n\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\n\r\nimport 'Core/Controls/Kanban/KanbanCard';\r\nimport {FollowUpStore} from \"../ButtonFollowUp/Stores/FollowUpStore\";\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"../../Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {PromptDialog, Types} from \"../../Components/Dialogs/PromptDialog/PromptDialog\";\r\nimport {LifeStatusSimpleModel} from \"../ButtonFollowUp/Models/LifestatusSimpleModel\";\r\nimport {Tooltip} from \"Core/Common/Tooltip\";\r\nimport {BaseScreen} from \"../../Screens/BaseScreen\";\r\nimport {PathRunner} from \"../../Components/PathRunner/PathRunner\";\r\n\r\nimport {LifeStatusesGeneralModel} from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel\";\r\nimport {FlowFolderModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderModel\";\r\nimport {KanbanStep} from 'Core/Controls/Kanban/Step';\r\nimport {FollowUpLifeStatuses} from \"Core/Controls/ButtonFollowUp/FollowUpLifeStatuses\";\r\nimport {ScreenParamsModel} from \"Core/Controls/ButtonFollowUp/Models/ScreenParamsModel\";\r\nimport {ActionCheckList} from \"Core/Components/ActionCheckList/ActionCheckList\";\r\nimport {LifeStatusesModel} from 'Core/Controls/ButtonFollowUp/Models/LifeStatusesModel';\r\nimport {ICheckItemSerializedValue} from \"../../Components/ActionCheckList/CheckItems/ICheckItemSerializedValue\";\r\nimport {FlowFolderStore} from \"../../Components/ProgressBar/Stores/FlowFolderStore\";\r\nimport {ProgressBarInfoModel} from \"../../Components/ProgressBar/Models/Response/ProgressBarInfoModel\";\r\nimport {KanbanTypeViewModel} from \"Core/Controls/Kanban/Models/KanbanTypeViewModel\";\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\ninterface TodoKanbanParams {\r\n screen: KnockoutObservable<IScreen>;\r\n selectedTypeObservable: KnockoutObservable<KanbanTypeViewModel>;\r\n noTypesLoaded: KnockoutObservable<boolean>;\r\n generalProperties: ConfigModel;\r\n searchString: KnockoutObservable<string>;\r\n selectedUsers: KnockoutObservableArray<number>;\r\n showPlanned: KnockoutObservable<boolean>;\r\n isTodoToggleShown: KnockoutObservable<boolean>;\r\n titleFieldId: number;\r\n kanbanSubjectId: KnockoutObservable<number>;\r\n viewId: KnockoutObservable<number>;\r\n todoEntityId: KnockoutObservable<number>;\r\n todoTypeId: KnockoutObservable<number>;\r\n todoFieldId: KnockoutObservable<number>;\r\n controlId: number;\r\n loadStatuses?: boolean;\r\n timerControl: Timer;\r\n}\r\n\r\n//Templates\r\nimport Template from 'Core/Controls/Kanban/Templates/Todo/TodoKanban.html';\r\nimport TodoParentOrChildRecordTemplate from 'Core/Controls/Kanban/Templates/Todo/TodoParentOrChildRecordTemplate.html';\r\nimport TodoActionItemsTemplate from \"Core/Controls/Kanban/Templates/Todo/TodoActionItemsTemplate.html\";\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Todo/TodoKanban'] = Template;\r\n\r\nclass TodoKanban {\r\n private _screen: KnockoutObservable<IScreen>;\r\n private _selectedTypeObservable: KnockoutObservable<KanbanTypeViewModel>;\r\n private _noTypesLoaded: KnockoutObservable<boolean>;\r\n private _searchString: KnockoutObservable<string>;\r\n private _selectedUsers: KnockoutObservableArray<number>;\r\n private _showPlanned: KnockoutObservable<boolean>;\r\n private _generalProperties: ConfigModel;\r\n private _isTodoToggleShown: KnockoutObservable<boolean>;\r\n private _viewId: KnockoutObservable<number>;\r\n private _todoEntityId: KnockoutObservable<number>;\r\n private _todoTypeId: KnockoutObservable<number>;\r\n private _todoFieldId: KnockoutObservable<number>;\r\n private _elObservable: KnockoutObservable<HTMLElement>;\r\n private _element: HTMLElement;\r\n private _draggingFrom: KnockoutObservable<{ recordId: number; lifestatusId: number }>;\r\n private _selectedTypeSubscription: KnockoutSubscription;\r\n private _noTypesLoadedSubscription: KnockoutSubscription;\r\n private _selectedUsersSubscription: KnockoutSubscription;\r\n private _showPlannedSubscription: KnockoutSubscription;\r\n private _viewIdSubscription: KnockoutSubscription;\r\n private _guid: string;\r\n _titleFieldId: number;\r\n private _kanbanSubjectId: KnockoutObservable<number>;\r\n _withDateBadges: boolean;\r\n _withMemo: boolean;\r\n _readOnly: boolean;\r\n _colorBar: boolean;\r\n _loadStatuses: boolean;\r\n private _timerControl: Timer;\r\n private _heightImage: any;\r\n private _userVars: UserVarsManager;\r\n private _controlId: number\r\n private _alwaysShowDeadline: boolean;\r\n private _hideOwner: boolean;\r\n private _backgroundColor: string;\r\n private _showTooltip: boolean;\r\n private _showAlias: boolean;\r\n\r\n private _followUpRecord: FollowUpRecordModel;\r\n private _followUpLifeStatuses: FollowUpLifeStatuses;\r\n private _checkList: ActionCheckList;\r\n private _isFlowFolder: boolean;\r\n private _lifeStatuses: LifeStatusesModel;\r\n\r\n _status: KnockoutObservable<StatusModel>;\r\n _isCreationAllowed: KnockoutObservable<boolean>;\r\n\r\n _recordsWithTodoActions: KnockoutComputed<{\r\n record: RecordModel;\r\n groupedActions: {\r\n [lifestatusId: string]: KnockoutObservableArray<ActionModel>;\r\n };\r\n }[]>;\r\n\r\n _avatarThumbnails: KnockoutComputed<ThumbnailModel[]>;\r\n _priorities: KnockoutComputed<PriorityModel[]>;\r\n _isTypeHierarchyCorrect: KnockoutComputed<boolean>;\r\n _isNewButtonEnabled: KnockoutComputed<boolean>;\r\n\r\n _labels = LABELS;\r\n\r\n private _tooltip: Tooltip;\r\n\r\n constructor(params: TodoKanbanParams & { element: HTMLElement }) {\r\n this._screen = params.screen;\r\n this._selectedTypeObservable = params.selectedTypeObservable;\r\n this._noTypesLoaded = params.noTypesLoaded;\r\n this._generalProperties = params.generalProperties;\r\n this._searchString = params.searchString;\r\n this._selectedUsers = params.selectedUsers;\r\n this._showPlanned = params.showPlanned;\r\n this._isTodoToggleShown = params.isTodoToggleShown;\r\n this._titleFieldId = params.titleFieldId;\r\n this._kanbanSubjectId = params.kanbanSubjectId;\r\n this._viewId = params.viewId;\r\n this._todoEntityId = params.todoEntityId;\r\n this._todoTypeId = params.todoTypeId;\r\n this._todoFieldId = params.todoFieldId;\r\n this._elObservable = ko.observable(null);\r\n this._element = params.element;\r\n this._controlId = params.controlId;\r\n this._guid = Guid.NewGuid();\r\n if (!this._userVars) {\r\n this._userVars = UserVarsManager.Instance;\r\n }\r\n\r\n this._tooltip = null;\r\n\r\n this._loadStatuses = params.loadStatuses;\r\n\r\n this._timerControl = params.timerControl;\r\n\r\n this._withDateBadges = this._generalProperties.GetPropertyValue(PROPERTIES.WITH_DATE_BADGES);\r\n this._withMemo = this._generalProperties.GetPropertyValue(PROPERTIES.WITH_MEMO);\r\n this._readOnly = this._generalProperties.GetPropertyValue(PROPERTIES.READ_ONLY);\r\n this._heightImage = this._generalProperties.GetPropertyValue(PROPERTIES.HEIGHT_IMAGE);\r\n this._colorBar = this._generalProperties.GetPropertyValue(PROPERTIES.COLOR_BAR);\r\n this._alwaysShowDeadline = this._generalProperties.GetPropertyValue(PROPERTIES.ALWAYS_SHOW_DEADLINE);\r\n this._hideOwner = this._generalProperties.GetPropertyValue(PROPERTIES.HIDE_OWNER);\r\n this._backgroundColor = this._generalProperties.GetPropertyValue(PROPERTIES.BACKGROUND_COLOR);\r\n this._showTooltip = this._generalProperties.GetPropertyValue(PROPERTIES.SHOW_TOOLTIP);\r\n this._showAlias = this._generalProperties.GetPropertyValue(PROPERTIES.SHOW_ALIAS);\r\n\r\n this._status = ko.observable({\r\n Records: [],\r\n Steps: [],\r\n Thumbnails: [],\r\n Links: [],\r\n Priorities: [],\r\n HasTodoType: true,\r\n IsTodoEnabled: true,\r\n IsTypeHierarchyCorrect: true,\r\n MailEntityId: undefined\r\n });\r\n this._isCreationAllowed = ko.observable();\r\n\r\n this._draggingFrom = ko.observable({recordId: undefined, lifestatusId: undefined});\r\n\r\n this._recordsWithTodoActions = ko.pureComputed(() => {\r\n const status = this._status();\r\n const searchStringValue = this._searchString();\r\n const searchString = searchStringValue && searchStringValue.toUpperCase();\r\n\r\n const todoTypeId = this._todoTypeId();\r\n\r\n _.each(status.Records, (record) => {\r\n let isKanbanBoardExpanded = this._userVars.GetKanbanBoardAccordionGroup(this._controlId, record.EntityId, record.RecordId, true);\r\n record.AriaExpanded(isKanbanBoardExpanded);\r\n record.AriaExpanded.subscribe((newValue) => {\r\n this._userVars.SetKanbanBoardAccordionGroup(this._controlId, record.EntityId, record.RecordId, newValue);\r\n })\r\n })\r\n\r\n if (status.Records[0] !== undefined) {\r\n const recordsWithActions = status.Records.map(record => ({\r\n record,\r\n actions: record.Actions.filter(action => action.ActionTypeId === todoTypeId)\r\n }));\r\n\r\n const filteredRecordsWithActions = searchString\r\n ? _.compact(\r\n recordsWithActions.map(recordWithAction => {\r\n const {record, actions} = recordWithAction;\r\n\r\n if (\r\n [record.Name, record.LifeStatusTranslatedName || record.LifestatusName].some(\r\n label => label && label.toUpperCase().includes(searchString)\r\n )\r\n ) {\r\n return recordWithAction;\r\n }\r\n\r\n const filteredActions = actions.filter(\r\n action =>\r\n (action.ActionName && action.ActionName.toUpperCase().includes(searchString)) ||\r\n action.Users.some(\r\n user => user.UserName && user.UserName.toUpperCase().includes(searchString)\r\n )\r\n );\r\n\r\n return filteredActions.length > 0 ? {record, actions: filteredActions} : undefined;\r\n })\r\n )\r\n : recordsWithActions;\r\n\r\n return filteredRecordsWithActions.map(({record, actions}) => ({\r\n record,\r\n groupedActions: _.mapObject(\r\n _.groupBy(actions, (action) => action.ActionLifestatusId),\r\n // Conversion to observable because of some inflexibility of dragula extension\r\n actions => ko.observableArray(actions)\r\n )\r\n }));\r\n }\r\n\r\n return [];\r\n });\r\n\r\n this._avatarThumbnails = ko.pureComputed(() => {\r\n const status = this._status();\r\n\r\n return status.Thumbnails;\r\n });\r\n\r\n this._priorities = ko.computed(() => {\r\n const status = this._status();\r\n \r\n return status.Priorities;\r\n });\r\n\r\n this._isTypeHierarchyCorrect = ko.pureComputed(() => {\r\n const status = this._status();\r\n\r\n return status.IsTypeHierarchyCorrect;\r\n });\r\n\r\n this._isNewButtonEnabled = ko.pureComputed(() =>\r\n this._isCreationAllowed() && !this._readOnly && this._isTypeHierarchyCorrect()\r\n );\r\n\r\n this._followUpLifeStatuses = null;\r\n this._isFlowFolder = null;\r\n this._checkList = null;\r\n\r\n this.BindEvents();\r\n }\r\n\r\n private BindEvents() {\r\n PubSub.subscribe('KANBAN_FULLSCREEN', (message: any, data: boolean)=> {\r\n this.SetContainerHeight(data);\r\n });\r\n }\r\n\r\n get IsCalculatedViaCalcPriority(): boolean {\r\n return this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'WithCalculatedViaCalсPrio';\r\n }\r\n\r\n get HasTimer(): boolean {\r\n return !!this._timerControl;\r\n }\r\n\r\n GetBackgroundColor(): string {\r\n return `${!!this._backgroundColor && this._backgroundColor}`\r\n }\r\n\r\n GetToDoKanbanGroupWidth(): string {\r\n let stepWidth = '180px',\r\n stepMargin = '5px',\r\n amendment = '10px';\r\n\r\n return `calc((${this._status().Steps.length} * ${stepWidth}) + (${this._status().Steps.length} * ${stepMargin}) - ${amendment})`\r\n }\r\n\r\n SetContainerHeight(isFullscreen: boolean): void {\r\n const $todoKanban__component = $(this._elObservable()).find('.js-todo-kanban__component');\r\n const $container = $todoKanban__component.find('.todo-kanban');\r\n const toolbarHeight = $(this._elObservable()).find('.table-toolbar-line').outerHeight();\r\n\r\n let calculate: number = 45;\r\n\r\n if (isFullscreen) {\r\n calculate = toolbarHeight\r\n }\r\n\r\n $container.css('height', isFullscreen ? `calc(100vh - ${calculate}px)`: 'auto');\r\n }\r\n\r\n ListenForStatusesLoad() {\r\n this._selectedTypeSubscription = this._selectedTypeObservable.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._noTypesLoadedSubscription = this._noTypesLoaded.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._selectedUsersSubscription = this._selectedUsers.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._showPlannedSubscription = this._showPlanned.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._viewIdSubscription = this._viewId.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n\r\n if(this._loadStatuses){\r\n this.LoadStatuses();\r\n }\r\n\r\n if (this._screen().IsConsultScreen && !this._loadStatuses && this._viewId() !== null ){\r\n this.LoadStatuses();\r\n }\r\n }\r\n\r\n LoadStatuses() {\r\n this._isFlowFolder = this._selectedTypeObservable() && this._selectedTypeObservable().HasFlowFolder;\r\n\r\n const recordId = this._screen().GetRecordId();\r\n const selectedUsers = this._selectedUsers();\r\n const showPlanned = this._showPlanned();\r\n\r\n const selectedType = this._selectedTypeObservable() ? this._selectedTypeObservable().K_Type : null;\r\n const isTypeSelected = !!selectedType || this._noTypesLoaded();\r\n\r\n const isViewSelected = this._viewId() !== null;\r\n\r\n const canLoadData = selectedUsers.length > 0 && showPlanned !== null && isTypeSelected && isViewSelected;\r\n\r\n if (!canLoadData) {\r\n return;\r\n }\r\n \r\n return this.LoadStatusesForAllRecords();\r\n }\r\n\r\n LoadStatusesForAllRecords() {\r\n const el = this._elObservable();\r\n BlockUI.Block({Target: el});\r\n return KanbanStore.GetStatuses({\r\n EntityId: this.SubjectEntity,\r\n FieldId: this._titleFieldId,\r\n TypeId: this._selectedTypeObservable() ? this._selectedTypeObservable().K_Type : null,\r\n SubjectTypeId: this._screen().GetTableTypeId(),\r\n FilterByTypeHierarchy: this._selectedTypeObservable() && this._selectedTypeObservable().ShowTypeHierarchy,\r\n FilterByOwners: true,\r\n UseSubjectEntity: this.UseKanbanSubject,\r\n FilterByEntityId: this.FilterByEntityId,\r\n FilterByRecordId: this.FilterByRecordId,\r\n RecordOwners: this._selectedUsers(),\r\n ShowPlanned: this._showPlanned(),\r\n WithTags: !this._generalProperties.GetPropertyValue(PROPERTIES.WITH_TAGS),\r\n WithSubjectImage: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_SUBJECT_IMAGE),\r\n WithPriorities: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'Show',\r\n WithCalculatedPriority: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'Calculated',\r\n WithCalculatedViaCalсPrioPriority: this.IsCalculatedViaCalcPriority,\r\n WithMails: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_MAILS),\r\n WithColor: this._colorBar,\r\n WithTimers: this.HasTimer,\r\n ViewId: this._viewId(),\r\n IsToDo: true,\r\n TodoModel: {\r\n EntityId: this._todoEntityId(),\r\n TypeId: this._todoTypeId(),\r\n FieldId: this._todoFieldId()\r\n },\r\n WithMemo: this._withMemo\r\n })\r\n .then((status: StatusModel) => {\r\n this._status(status);\r\n\r\n this._isTodoToggleShown(status.HasTodoType);\r\n this.HeaderHeightResize();\r\n\r\n if (\r\n this._isCreationAllowed() === undefined &&\r\n !this._readOnly &&\r\n status.IsTypeHierarchyCorrect &&\r\n status.Records.length > 0 &&\r\n status.IsTodoEnabled\r\n ) {\r\n return this.LoadUserAllowanceToCreate(this._todoEntityId());\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(el);\r\n });\r\n }\r\n\r\n GetActionItemsTemplate(data){\r\n return $((ko as any).renderTemplateX(TodoActionItemsTemplate, {$_data: data}));\r\n }\r\n\r\n LoadStatusesForRecord(recordId: number) {\r\n let targetElement = this._elObservable() ? {Target: this._elObservable()} : {};\r\n BlockUI.Block(targetElement);\r\n return KanbanStore.GetStatuses({\r\n RecordId: recordId,\r\n EntityId: this.SubjectEntity,\r\n FieldId: this._titleFieldId,\r\n FilterByOwners: true,\r\n UseSubjectEntity: this.UseKanbanSubject,\r\n FilterByEntityId: this.FilterByEntityId,\r\n FilterByRecordId: this.FilterByRecordId,\r\n RecordOwners: this._selectedUsers(),\r\n ShowPlanned: this._showPlanned(),\r\n WithTags: !this._generalProperties.GetPropertyValue(PROPERTIES.WITH_TAGS),\r\n WithSubjectImage: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_SUBJECT_IMAGE),\r\n WithPriorities: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'Show',\r\n WithCalculatedPriority: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'Calculated',\r\n WithCalculatedViaCalсPrioPriority: this.IsCalculatedViaCalcPriority,\r\n WithMails: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_MAILS),\r\n WithColor: this._colorBar,\r\n WithTimers: this.HasTimer,\r\n IsToDo: true,\r\n ViewId: this._viewId(),\r\n IsViewForAction: this._screen().IsConsultScreen,\r\n TodoModel: {\r\n EntityId: this._todoEntityId(),\r\n TypeId: this._todoTypeId(),\r\n FieldId: this._todoFieldId()\r\n },\r\n WithMemo: this._withMemo\r\n }).then((status: StatusModel) => {\r\n if(!status || !status.Records || status.Records.length === 0){\r\n return;\r\n }\r\n\r\n const [newRecord] = status.Records;\r\n\r\n const oldStatus = this._status();\r\n\r\n const changedRecordIndex = oldStatus.Records.findIndex(record => record.RecordId === recordId);\r\n\r\n this._status({\r\n ...oldStatus,\r\n Steps: status.Steps,\r\n Links: status.Links,\r\n Thumbnails: status.Thumbnails,\r\n Priorities: status.Priorities,\r\n Records: [\r\n ...oldStatus.Records.slice(0, changedRecordIndex),\r\n newRecord,\r\n ...oldStatus.Records.slice(changedRecordIndex + 1)\r\n ]\r\n });\r\n\r\n this.HeaderHeightResize();\r\n\r\n if (\r\n this._isCreationAllowed() === undefined &&\r\n !this._readOnly &&\r\n status.IsTypeHierarchyCorrect &&\r\n status.Records.length > 0 &&\r\n status.IsTodoEnabled\r\n ) {\r\n return this.LoadUserAllowanceToCreate(this._todoEntityId());\r\n }\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(this._elObservable());\r\n });\r\n }\r\n\r\n LoadUserAllowanceToCreate(actionsEntityId: number) {\r\n return KanbanStore.GetUserAllowance({\r\n TableId: actionsEntityId,\r\n SecurityWord: TABLE_SECURITY_WORDS.CREATE\r\n }).then((isCreationAllowed: boolean) => {\r\n this._isCreationAllowed(isCreationAllowed);\r\n });\r\n }\r\n\r\n AfterDrop(\r\n item: RecordModel,\r\n action: ActionModel,\r\n sourceIndex: number,\r\n sourceItems: any,\r\n sourceContext: StepModel,\r\n targetIndex: number,\r\n targetItems: any,\r\n targetContext: StepModel\r\n ) {\r\n let record = item as RecordModel;\r\n let isActionItems = !!(targetContext.ActionItems && targetContext.ActionItems.length);\r\n\r\n if (record){\r\n if (isActionItems){\r\n this.ShowCheckListKanban(action, record, targetContext);\r\n } else {\r\n FollowUpStore.GetStatuses({\r\n RecordId: action.ActionRecordId,\r\n EntityId: action.ActionsEntityId\r\n }).then(result => {\r\n this.ApproveLifeStatus({\r\n action,\r\n record,\r\n currentLifeStatus: result.Child.CurrentLifeStatus,\r\n nextLifeStatus: result.Child.LifeStatuses.find(lifestatus => lifestatus.Id === targetContext.Id)\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n ShowCheckListKanban(action: ActionModel, record: RecordModel, targetContext: StepModel){\r\n FlowFolderStore.GetProgressBarInfo({ EntityId: action.ActionsEntityId, RecordId: action.ActionRecordId })\r\n .then((result: ProgressBarInfoModel) => {\r\n result.NextLifeStatuses.Child.CheckLists = _.filter(result.NextLifeStatuses.Child.CheckLists, (checkList) => checkList.LifeStatusId === targetContext.Id);\r\n let nextLifeStatus = result.NextLifeStatuses.Child.LifeStatuses.find(lifestatus => lifestatus.Id === targetContext.Id);\r\n this.CheckListKanban(\r\n result.NextLifeStatuses,\r\n result.FlowFolder,\r\n action,\r\n record,\r\n targetContext,\r\n nextLifeStatus\r\n );\r\n });\r\n }\r\n\r\n CheckListKanban(result: LifeStatusesGeneralModel,\r\n flowFolderModel: FlowFolderModel,\r\n action: ActionModel,\r\n record: RecordModel,\r\n targetContext: StepModel,\r\n nextLifeStatus: LifeStatusSimpleModel) {\r\n if (result == null || !result.Child) {\r\n return;\r\n }\r\n\r\n if (!this._followUpRecord) {\r\n this._followUpRecord = new FollowUpRecordModel();\r\n }\r\n\r\n if (!this._followUpLifeStatuses){\r\n this._followUpLifeStatuses = new FollowUpLifeStatuses();\r\n }\r\n\r\n const screenParams: ScreenParamsModel = { EntityId: action.ActionsEntityId, RecordId: action.ActionRecordId };\r\n\r\n this._followUpRecord.CurrentLifeStatus = result.Child.CurrentLifeStatus;\r\n\r\n this._lifeStatuses = result.Child;\r\n\r\n const isShowCheckLists = _.any(this._lifeStatuses.CheckLists, checkList => checkList.CheckItems.length > 0);\r\n\r\n if (isShowCheckLists) {\r\n this.ShowCheckLists(result,\r\n this._isFlowFolder && !this._screen().IsEditScreen,\r\n screenParams,\r\n flowFolderModel,\r\n action,\r\n record,\r\n nextLifeStatus);\r\n return;\r\n } else {\r\n this.ApproveLifeStatus({\r\n action,\r\n record,\r\n currentLifeStatus: result.Child.CurrentLifeStatus,\r\n nextLifeStatus: result.Child.LifeStatuses.find(lifestatus => lifestatus.Id === targetContext.Id)\r\n });\r\n }\r\n }\r\n\r\n private ShowCheckLists(result: LifeStatusesGeneralModel,\r\n isFlowFolder: boolean,\r\n screenParams,\r\n flowFolderModel: FlowFolderModel,\r\n action: ActionModel,\r\n record: RecordModel,\r\n nextLifeStatus: LifeStatusSimpleModel) {\r\n const actionSubject = result.Child.ActionSubjectRecord;\r\n const checkLists = result.Child.CheckLists;\r\n\r\n this._checkList = new ActionCheckList({\r\n EntityId: actionSubject.EntityId,\r\n RecordId: actionSubject.RecordId,\r\n FollowUpMode: true,\r\n CurrentLifestatus: result.Child.CurrentLifeStatus,\r\n KanbanMod: true\r\n });\r\n this._checkList.On('KANBAN_CHECKLIST_CANCEL',\r\n this,\r\n eventArgs => {\r\n this.LoadStatusesForAllRecords();\r\n });\r\n this._checkList.On('KANBAN_CHECKLIST_SAVE',\r\n this,\r\n eventArgs => {\r\n\r\n const checkItemsValue: ICheckItemSerializedValue[] = eventArgs.data.serializedData[0].CheckItems;\r\n\r\n if(nextLifeStatus.ApprovalName === 'Password' || nextLifeStatus.ApprovalName === 'Yes/No'){\r\n this.ApproveLifeStatus({\r\n action,\r\n record,\r\n currentLifeStatus: result.Child.CurrentLifeStatus,\r\n nextLifeStatus: nextLifeStatus,\r\n checkItems: checkItemsValue\r\n });\r\n } else {\r\n this.UpdateStatus({action, record, newStatusId: nextLifeStatus.Id, checkItems: checkItemsValue, password: null});\r\n }\r\n });\r\n\r\n this._checkList.ProvideData(checkLists);\r\n this._checkList.InitFlowFolder(isFlowFolder, screenParams.EntityId, flowFolderModel);\r\n this._checkList.Show();\r\n }\r\n\r\n ApproveLifeStatus({action, record, currentLifeStatus, nextLifeStatus, checkItems}: {\r\n action: ActionModel;\r\n record: RecordModel;\r\n currentLifeStatus: LifeStatusSimpleModel;\r\n nextLifeStatus: LifeStatusSimpleModel;\r\n checkItems?: ICheckItemSerializedValue[];\r\n }) {\r\n if (nextLifeStatus.ApprovalName === 'Password') {\r\n const passwordPrompt = new PromptDialog(\r\n {\r\n Type: Types.Password,\r\n Label: CONFIRMATIONS.PLEASE_TYPE_YOUR_PASSWORD_TO_CONFIRM,\r\n Value: '',\r\n MinHeight: 200,\r\n Required: true,\r\n RequiredErrorMessage: LABELS.PASSWORD + ' ' + NOTIFICATIONS.IS_REQUIRED,\r\n ShowNotification: false,\r\n CloseOnSave: false\r\n });\r\n passwordPrompt.Show();\r\n\r\n passwordPrompt.On('Save', this,\r\n (eventargs) => {\r\n const password = eventargs.data.value;\r\n if (password) {\r\n BlockUI.Block();\r\n\r\n FollowUpStore.ConfirmPassword({password: password})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((response) => {\r\n if (response) {\r\n passwordPrompt.Hide(false);\r\n this.UpdateStatus({action, record, newStatusId: nextLifeStatus.Id, checkItems: (checkItems && checkItems.length ? checkItems : null), password});\r\n } else {\r\n passwordPrompt.ExternalInvalidActionHandling(NOTIFICATIONS.INCORRECT_PASSWORD);\r\n this.SaveCheckList();\r\n this.LoadStatusesForAllRecords();\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n });\r\n }\r\n }\r\n );\r\n\r\n passwordPrompt.On('Cancel', this, () => {\r\n this.SaveCheckList();\r\n this.LoadStatusesForAllRecords();\r\n });\r\n } else if (nextLifeStatus.ApprovalName === 'Yes/No') {\r\n const confirmationText = CONFIRMATIONS.ARE_SURE_TO_CHANGE_LIFESTATUS\r\n .replace('{fromstatus}', currentLifeStatus.Name)\r\n .replace('{tostatus}', nextLifeStatus.Name);\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n this,\r\n () => {\r\n this.UpdateStatus({action, record, newStatusId: nextLifeStatus.Id, checkItems: (checkItems && checkItems.length ? checkItems : null)});\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED,\r\n this,\r\n () => {\r\n this.SaveCheckList();\r\n this.LoadStatusesForAllRecords();\r\n });\r\n\r\n confirmationDialog.Show();\r\n } else {\r\n this.UpdateStatus({action, record, newStatusId: nextLifeStatus.Id});\r\n }\r\n }\r\n\r\n SaveCheckList(){\r\n if (this._checkList){\r\n this._checkList.SaveCheckList();\r\n }\r\n }\r\n\r\n UpdateStatus({action, record, newStatusId, checkItems, password}: {\r\n action: ActionModel;\r\n record: RecordModel;\r\n newStatusId: number;\r\n checkItems?: ICheckItemSerializedValue[]\r\n password?: string\r\n }) {\r\n const groupEl = this._element.querySelector<HTMLDivElement>(`[data-record-id=\"${record.RecordId}\"]`);\r\n BlockUI.Block({Target: groupEl});\r\n\r\n const requestModel: IUpdateActionStatusRequestModel = {\r\n SubjectEntityId: record.EntityId,\r\n SubjectRecordId: record.RecordId,\r\n ActionsEntityId: action.ActionsEntityId,\r\n ActionRecordId: action.ActionRecordId,\r\n PreviousLifeStatusId: action.ActionLifestatusId,\r\n NewStatusId: newStatusId,\r\n Users: action.Users\r\n }\r\n\r\n if(password){\r\n requestModel.ConfirmationPassword = password;\r\n }\r\n\r\n if (checkItems && checkItems.length) {\r\n requestModel.CheckItems = checkItems;\r\n }\r\n\r\n KanbanStore.UpdateActionStatus(requestModel)\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n })\r\n .always(() =>\r\n this.LoadStatusesForAllRecords()\r\n .always(() => {\r\n BlockUI.Unblock(groupEl);\r\n })\r\n );\r\n }\r\n\r\n HeaderHeightResize() {\r\n const todoKanbanHtml = $(this._elObservable()).find('.js-todo-kanban');\r\n const unbindResize = ResizeService.SubscribeWidth(this.OnResize, todoKanbanHtml[0]); // subscribe on resize\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(todoKanbanHtml[0], () => {\r\n unbindResize();\r\n window.removeEventListener(\"scroll\", this.RepositionToDoKanbanHeaderOnScroll, false)\r\n });\r\n window.addEventListener(\"scroll\", this.RepositionToDoKanbanHeaderOnScroll, false);\r\n }\r\n\r\n RepositionToDoKanbanHeaderOnScroll = () => {\r\n const kanbanContainer = $(this._elObservable()).find('.js-todo-kanban').find('.kanban-container');\r\n if (!kanbanContainer.hasClass('todo-kanban')) {\r\n window.removeEventListener(\"scroll\", this.RepositionToDoKanbanHeaderOnScroll, false);\r\n return false;\r\n }\r\n const scrollTop = $(window).scrollTop();\r\n const titleElement: HTMLDivElement = this._elObservable().querySelector(\".todo-kanban > .todo-kanban__container > .todo-kanban__titles\");\r\n const toDoKanbanContainer: HTMLDivElement = this._elObservable().querySelector(\".todo-kanban > .todo-kanban__container\");\r\n const titleElementHeight = $(titleElement).outerHeight();\r\n const boundingRect = $(this._elObservable()).find('.todo-kanban')[0].getBoundingClientRect();\r\n const positionKanbanBoardRoot = $(this._elObservable()).find('.todo-kanban').offset().top + 6;\r\n let fixedHeaderHeight: number = 0;\r\n let calculate: number = 0;\r\n\r\n toDoKanbanContainer.style.paddingTop = titleElementHeight + 'px';\r\n\r\n if (window.innerWidth > 991) {\r\n const headerElement: HTMLDivElement = document.querySelector(\"body > .page-header\");\r\n fixedHeaderHeight = headerElement ? headerElement.offsetHeight : 0;\r\n }\r\n\r\n if ((boundingRect.top) < fixedHeaderHeight) {\r\n calculate = Math.abs((positionKanbanBoardRoot - (scrollTop + fixedHeaderHeight + 3)));\r\n }\r\n\r\n if ((boundingRect.bottom - fixedHeaderHeight - titleElementHeight) <= 0) {\r\n return false;\r\n }\r\n titleElement.style.top = calculate + \"px\";\r\n }\r\n\r\n OnResize = () => {\r\n this.RepositionToDoKanbanHeaderOnScroll();\r\n };\r\n\r\n Accepts(el: HTMLElement, target: HTMLElement, source: HTMLElement) {\r\n const targetData: StepModel = ko.dataFor(target);\r\n const sourceData: StepModel = ko.dataFor(source);\r\n\r\n return this._status().Links.some(link => sourceData.Id === link.IdStepFrom && targetData.Id === link.IdStepTo);\r\n }\r\n\r\n\r\n\r\n Moves(el: HTMLElement, target: HTMLElement, source: HTMLElement) {\r\n const targetData: StepModel = ko.dataFor(target);\r\n const sourceData: StepModel = ko.dataFor(source);\r\n const record = ko.dataFor(el) as ActionModel;\r\n\r\n return !record.IsDisabled;\r\n }\r\n\r\n IsCardInvalid(el: HTMLElement) {\r\n return el.classList.contains('todo-kanban__retired-card');\r\n }\r\n\r\n OnDrag({recordId}: { recordId: number }, action: ActionModel) {\r\n this._draggingFrom({recordId, lifestatusId: action.ActionLifestatusId});\r\n }\r\n\r\n OnDragEnd() {\r\n this._draggingFrom({recordId: undefined, lifestatusId: undefined});\r\n }\r\n\r\n SelectAction(record: RecordModel) {\r\n const todoEntityId = this._todoEntityId();\r\n const parentTypeId = this.SubjectEntity === todoEntityId ? record.TypeId : 0;\r\n const typeScreen = new TypeScreen(todoEntityId, parentTypeId, false, false, null, [{Id: this._todoTypeId()}]);\r\n typeScreen\r\n .On('TYPE_SELECTED', this, eventArgs => this.NewRecord(record, eventArgs.data))\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier($(this._elObservable())).Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n typeScreen.Show();\r\n }\r\n\r\n private async NewRecord(record: RecordModel, newRecordSettings: any, dataMode: DataModes = DataModes.Default, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n const actionEntityId = newRecordSettings.EntityId;\r\n const typeId = newRecordSettings.TypeId;\r\n const kindId = newRecordSettings.KindId;\r\n const exampleRecordId = newRecordSettings.ExampleRecordId;\r\n\r\n if (actionEntityId) {\r\n BlockUI.Block();\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: actionEntityId,\r\n TableTypeId: typeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n DataMode: dataMode,\r\n AliasSuffix: aliasSuffix\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n let notifier = new Notifier();\r\n notifier.Warning(error.message);\r\n }).then((screen) => {\r\n let editScreen = screen as EditScreen;\r\n\r\n editScreen.On('LINK_LIST_DATA_LOADED', this, eventArgs => {\r\n if (dataMode === DataModes.Default) {\r\n let linkListControl = eventArgs.data.Control as LinkList;\r\n const relationModel = _.find(linkListControl.DataModel().Entities(), relatedEntity => {\r\n return relatedEntity.EntityId === record.EntityId;\r\n });\r\n\r\n if (relationModel) {\r\n let newRelation = new NewRelationModel();\r\n newRelation.Name = record.LinkName;\r\n newRelation.Id = record.RecordId;\r\n newRelation.IsMain = true;\r\n newRelation.TypeName = record.TypeName;\r\n linkListControl.AddRecord(record.RecordId, relationModel, newRelation);\r\n }\r\n }\r\n\r\n });\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.SaveImmediately = true;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n editScreen.On('RECORD_SAVED', this, () => {\r\n const groupEl = this._element.querySelector<HTMLDivElement>(`[data-record-id=\"${record.RecordId}\"]`);\r\n BlockUI.Block({Target: groupEl});\r\n \r\n this.LoadStatusesForAllRecords()\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(groupEl);\r\n });\r\n });\r\n editScreen.On('COPY', this, (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || typeId;\r\n this.NewRecord(record, {\r\n EntityId: actionEntityId,\r\n TypeId: copyTableType,\r\n ExampleRecordId: eventArgs.data.recordId\r\n }, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n editScreen.ShowInModal();\r\n });\r\n } else {\r\n var notifier = new Notifier($(this._elObservable()));\r\n notifier.Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n }\r\n }\r\n\r\n private GetEditScreenType(): ScreenTypes {\r\n return ScreenTypes.EditScreen;\r\n }\r\n\r\n private GetScreenTypeFromProperty(propertyName: string): ScreenTypes {\r\n const screenTypeName = this._generalProperties.GetPropertyValue(propertyName);\r\n if (screenTypeName) {\r\n if (screenTypeName.Value === 'ConsultScreen') {\r\n return ScreenTypes.ConsultScreen;\r\n }\r\n\r\n if (screenTypeName.Value === 'EditScreen') {\r\n return ScreenTypes.EditScreen;\r\n }\r\n }\r\n\r\n return ScreenTypes.EditScreen;\r\n }\r\n\r\n OpenActionRecordScreen(record: RecordModel, action: ActionModel, onlyEditScreen: boolean) {\r\n const followUpRecord = new FollowUpRecordModel();\r\n followUpRecord.Actions = record.Actions;\r\n this.OpenScreen(\r\n action.ActionsEntityId,\r\n action.ActionTypeId,\r\n action.ActionRecordId,\r\n followUpRecord,\r\n DataModes.Default,\r\n record,\r\n onlyEditScreen ? ScreenTypes.EditScreen : this.GetScreenTypeFromProperty(PROPERTIES.ACTION_SCREEN_TYPE)\r\n );\r\n }\r\n\r\n private async OpenScreen(\r\n entityId: number,\r\n recordTypeId: number,\r\n recordId: number,\r\n record: FollowUpRecordModel,\r\n mode: DataModes,\r\n activeCard: RecordModel,\r\n screenType: ScreenTypes,\r\n openMailTab?: boolean\r\n ) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n BlockUI.Block();\r\n\r\n if (screenType === ScreenTypes.EditScreen) {\r\n LockManager.Instance.TryLock(entityId, recordId)\r\n .then(() => {\r\n screenManager.IsTypeTransformationRequired(entityId, recordId)\r\n .then((result: any) => {\r\n if (result) {\r\n const typeScreen = new TypeScreen(entityId, recordTypeId, true, false);\r\n\r\n typeScreen.On(\"TYPE_SELECTED\",\r\n this,\r\n (eventArgs) => {\r\n UserVarsManager.Instance.RemoveFromRecent(recordId, entityId, recordTypeId);\r\n\r\n const typeId = eventArgs.data.TypeId;\r\n const typeName = eventArgs.data.TypeName;\r\n\r\n UserVarsManager.Instance.AddRecent(entityId, recordId, typeId);\r\n\r\n this.ShowEditScreen(entityId, typeId, recordId, record, mode, activeCard, typeName, openMailTab)\r\n });\r\n\r\n typeScreen.Show();\r\n } else {\r\n this.ShowEditScreen(entityId, recordTypeId, recordId, record, mode, activeCard, null, openMailTab)\r\n }\r\n });\r\n })\r\n .fail(() => BlockUI.Unblock());\r\n } else if (screenType === ScreenTypes.ConsultScreen) {\r\n screenManager.GetScreenByScreenType(\r\n entityId,\r\n screenType,\r\n recordId\r\n )\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n screen.ShowInModal();\r\n\r\n if (openMailTab) {\r\n this.OpenMailTab(screen);\r\n }\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n }\r\n\r\n private async ShowEditScreen(\r\n entityId: number,\r\n recordTypeId: number,\r\n recordId: number,\r\n record: FollowUpRecordModel,\r\n mode: DataModes,\r\n activeCard: RecordModel,\r\n typeName: string = null,\r\n openMailTab?: boolean\r\n ) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n BlockUI.Block();\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: recordTypeId,\r\n TableTypeName: typeName,\r\n RecordId: recordId,\r\n DataMode: mode\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === entityId && eventArgs.data.RecordId === recordId) {\r\n screen.Close();\r\n }\r\n });\r\n\r\n screen.On('MODAL_CLOSE',\r\n this,\r\n () => {\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n });\r\n\r\n screen.On('RECORD_SAVED',\r\n this,\r\n () => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n this.LoadStatuses();\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n });\r\n\r\n screen.On(\"RECORD_REMOVED\",\r\n this,\r\n (eventArgs) => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n\r\n const editScreen = screen as EditScreen;\r\n editScreen.Close();\r\n\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n this.LoadStatuses();\r\n });\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || recordTypeId;\r\n this.NewRecord(activeCard, {\r\n EntityId: entityId,\r\n TypeId: copyTableType,\r\n ExampleRecordId: eventArgs.data.recordId\r\n }, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n const followUpControl = screen.GetControlByType(CONTROL_TYPES.ButtonFollowUp) as ButtonFollowUp;\r\n\r\n if (followUpControl) {\r\n followUpControl.SetRecord(record);\r\n\r\n screen.On(\"FOLLOWUP_RECORD\",\r\n this,\r\n (eventArgs) => {\r\n screen.Close();\r\n\r\n const followUpRecordModel = followUpControl.GetRecord();\r\n const currentLifestatus = followUpRecordModel ? followUpRecordModel.CurrentLifeStatus : null;\r\n\r\n BlockUI.Block();\r\n if (followUpRecordModel && (followUpRecordModel.LifeStatusSort === LIFE_STATUS_GROUPS.RETIRED\r\n || followUpRecordModel.LifeStatusNoActionNode\r\n || (currentLifestatus\r\n && (currentLifestatus.FollowupModeName === FollowupModes.DIRECT_STATUS_UPDATE\r\n || currentLifestatus.FollowupModeName === FollowupModes.EDIT_CURRENT)))) {\r\n BlockUI.Unblock();\r\n return;\r\n }\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: recordTypeId,\r\n RecordId: recordId,\r\n LoadAsExample: recordId > 0,\r\n DataMode: DataModes.FollowUp,\r\n SubjectLifestatusId: followUpRecordModel ? followUpRecordModel.LifeStatusId : null\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n this.EditScreenInFollowUpMode(screen);\r\n }).fail(error => {\r\n new Notifier($(this._elObservable())).Warning(error.message);\r\n });\r\n });\r\n }\r\n\r\n screen.ShowInModal();\r\n\r\n if (openMailTab) {\r\n this.OpenMailTab(screen);\r\n }\r\n }).fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n private EditScreenInFollowUpMode(editScreen: EditScreen) {\r\n LockManager.Instance.ReleaseAllLocks();\r\n\r\n editScreen.IsDataFromExample = true;\r\n editScreen.UseLinking = true;\r\n\r\n editScreen.On('FOLLOWUP',\r\n this,\r\n (eventArgs) => {\r\n LockManager.Instance.ReleaseAllLocks();\r\n this.LoadStatuses();\r\n });\r\n\r\n editScreen.On(\"RECORD_SAVED\",\r\n this,\r\n (eventArgs) => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadStatuses();\r\n LockManager.Instance.ReleaseAllLocks();\r\n });\r\n\r\n editScreen.On(\"RECORD_REMOVED\",\r\n this,\r\n (eventArgs) => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n\r\n LockManager.Instance.ReleaseAllLocks();\r\n this.LoadStatuses();\r\n });\r\n\r\n editScreen.ShowInModal();\r\n }\r\n\r\n private OpenMailTab(screen: IScreen) {\r\n const tab = screen.GetControl<Tab>(CONTROL_TYPES.Tab);\r\n\r\n if (tab) {\r\n for (const tabPage of tab.GetSubControls() as TabPage[]) {\r\n const grid = tabPage.GetSubControls().find(control => control.GetType() === CONTROL_TYPES.Grid);\r\n if (grid && grid.GetModel().EntityId === this._status().MailEntityId) {\r\n tab.SetActiveTabPage(tabPage);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n IsDraggingCssClassApplied({\r\n recordId,\r\n lifestatusId,\r\n isForAllow\r\n }: {\r\n recordId: number;\r\n lifestatusId: number;\r\n isForAllow: boolean;\r\n }) {\r\n const draggingFrom = this._draggingFrom();\r\n\r\n if (!draggingFrom.recordId || recordId !== draggingFrom.recordId) {\r\n return false;\r\n }\r\n\r\n const isAllowed = this._status().Links.some(\r\n link => draggingFrom.lifestatusId === link.IdStepFrom && lifestatusId === link.IdStepTo\r\n );\r\n\r\n return isForAllow ? isAllowed : !isAllowed;\r\n }\r\n\r\n OnPriorityUpdateError(recordId: number) {\r\n const groupEl = this._element.querySelector<HTMLDivElement>(`[data-record-id=\"${recordId}\"]`);\r\n BlockUI.Block({Target: groupEl});\r\n \r\n this.LoadStatusesForAllRecords()\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(groupEl);\r\n });\r\n }\r\n\r\n OnMailClick({record, action}: { record: RecordModel, action: ActionModel }) {\r\n const followUpRecord = new FollowUpRecordModel();\r\n followUpRecord.Actions = record.Actions;\r\n this.OpenScreen(\r\n action.ActionsEntityId,\r\n action.ActionTypeId,\r\n action.ActionRecordId,\r\n followUpRecord,\r\n DataModes.Default,\r\n record,\r\n this.GetScreenTypeFromProperty(PROPERTIES.ACTION_SCREEN_TYPE),\r\n true\r\n );\r\n }\r\n\r\n OpenConsultScreen(_, data, evt) {\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_CONSULT_SCREEN, {\r\n EntityId: data.record.EntityId,\r\n RecordId: data.record.RecordId,\r\n TypeId: data.record.TypeId,\r\n IsOpenInModal: true\r\n });\r\n }\r\n\r\n GetParentOrChildRecordTemplate(_TodoKanban, recordModel) {\r\n return $((ko as any).renderTemplateX(TodoParentOrChildRecordTemplate, {$_data: _TodoKanban, record: recordModel}));\r\n }\r\n\r\n async OpenRecord(_TodoKanban, RecordModel, ParentOrChildRecord){\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetScreenByScreenType(\r\n _TodoKanban.SubjectEntity,\r\n ScreenTypes.ConsultScreen,\r\n ParentOrChildRecord.Id\r\n )\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: any) => {\r\n screen.ShowInModal();\r\n\r\n if (screen.GetType() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n PathRunner.Instance.GetUnit(screen.GetEntityId(), screen.IsSpecialScreenExist).LoadNewData(screen.GetRecordId());\r\n }\r\n })\r\n .fail((err) => { new Notifier().Failed(err.message); });\r\n }\r\n\r\n GetParentOrChildRecordName(nameTranslation?: string, name?: string): string {\r\n return nameTranslation ? nameTranslation : (name ? name : '-');\r\n }\r\n\r\n GetParentOrChildRecordTypeName(typeNameTranslation?: string, typeName?: string): string {\r\n return typeNameTranslation ? typeNameTranslation : typeName;\r\n }\r\n\r\n GetTitle(IsChild: boolean, IsParent: boolean) {\r\n if(IsChild && IsParent) {\r\n return this._labels.ITSELF;\r\n }\r\n else if(IsChild) {\r\n return this._labels.CHILD;\r\n }\r\n else {\r\n return this._labels.PARENT;\r\n }\r\n }\r\n\r\n GetIcon(IsChild: boolean, IsParent: boolean) {\r\n if(IsChild && IsParent) {\r\n return 'fa-retweet';\r\n }\r\n else if(IsChild) {\r\n return 'fa-level-down';\r\n }\r\n else {\r\n return 'fa-level-up';\r\n }\r\n }\r\n\r\n private get UseKanbanSubject() {\r\n return !!this._kanbanSubjectId();\r\n }\r\n\r\n private get UseFilterByEntityRecord() {\r\n return this._screen().IsConsultScreen;\r\n }\r\n\r\n private get SubjectEntity() {\r\n return this.UseKanbanSubject\r\n ? this._kanbanSubjectId()\r\n : this._screen().GetEntityId();\r\n }\r\n\r\n private get FilterByEntityId() {\r\n return this.UseFilterByEntityRecord\r\n ? this._screen().GetEntityId()\r\n : null;\r\n }\r\n\r\n private get FilterByRecordId() {\r\n return this.UseFilterByEntityRecord\r\n ? this._screen().GetRecordId()\r\n : null;\r\n }\r\n\r\n MouseOver(typeText: string, recordModel: ParentOrChildRecordModel, evt: any){\r\n let currentEl = $(evt.currentTarget);\r\n\r\n if (Math.round(currentEl.prop('scrollWidth')) > Math.round(currentEl.outerWidth()) ){\r\n let recordName = recordModel.NameTranslation ? recordModel.NameTranslation : (recordModel.Name ? recordModel.Name : '-');\r\n let recordTypeName = recordModel.TypeNameTranslation ? recordModel.TypeNameTranslation : recordModel.TypeName;\r\n let isTypeName = (typeText === 'isTypeName');\r\n\r\n let typeNameTooltipOptions = {\r\n position: {x: 'left', y: 'center'},\r\n outside: 'x',\r\n zIndex: 500001\r\n },\r\n nameTooltipOptions = {\r\n position: {x: 'right', y: 'center'},\r\n outside: 'x',\r\n zIndex: 500001\r\n };\r\n\r\n this._tooltip = new Tooltip(evt.currentTarget,\r\n ko.unwrap(isTypeName ? recordTypeName : recordName),\r\n isTypeName ? typeNameTooltipOptions : nameTooltipOptions);\r\n this._tooltip.Show(evt.currentTarget);\r\n }\r\n }\r\n\r\n MouseOut(data, evt: any){\r\n if (this._tooltip){\r\n this._tooltip.Destroy();\r\n }\r\n }\r\n\r\n OpenEditScreen(_, data, evt) {\r\n this.OpenScreen(data.record.EntityId,\r\n data.record.TypeId,\r\n data.record.RecordId,\r\n null,\r\n DataModes.Default,\r\n data.record,\r\n this.GetEditScreenType());\r\n }\r\n\r\n AfterRenderSubject(elements: HTMLElement[]) {\r\n const subjectContainer = elements[1];\r\n const childrenCount = subjectContainer.parentElement.children.length;\r\n const requiredCount = this._recordsWithTodoActions().length;\r\n\r\n if (childrenCount === requiredCount) {\r\n BlockUI.Unblock();\r\n }\r\n }\r\n AfterRender(el: Array<HTMLElement>){\r\n this._elObservable(el[0].parentElement.parentElement.parentElement);\r\n this.ListenForStatusesLoad();\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(el[0], () => {\r\n PubSub.unsubscribe('KANBAN_FULLSCREEN');\r\n });\r\n }\r\n\r\n GetRootToDoTemplateName(): string {\r\n return 'Core/Controls/Kanban/Templates/Todo/TodoKanban';\r\n }\r\n\r\n dispose() {\r\n this._selectedTypeSubscription.dispose();\r\n this._selectedUsersSubscription.dispose();\r\n this._showPlannedSubscription.dispose();\r\n this._viewIdSubscription.dispose();\r\n }\r\n}\r\n\r\nko.components.register('todo-kanban', {\r\n viewModel: {\r\n createViewModel: (params: TodoKanbanParams, componentInfo) =>\r\n new TodoKanban({...params, element: componentInfo.element as HTMLElement})\r\n },\r\n template: `<div class=\"js-todo-kanban__component\" data-bind=\"template: { name: GetRootToDoTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) }\"></div>`\r\n});\r\n","// Module\nvar code = \"<div class=\\\"kanban-container todo-kanban\\\" data-bind=\\\"style: {'background-color': GetBackgroundColor()}\\\"> <div class=\\\"todo-kanban__container\\\"> <div class=\\\"todo-kanban__titles\\\"> <!-- ko foreach: _status().Steps --> <div class=\\\"todo-kanban__title\\\" data-bind=\\\"\\\"> <div class=\\\"todo-kanban__title-box\\\"> <!-- ko if: $parent._showTooltip --> <!--ko if: MemoTranslation || Memo --> <div class=\\\"status-description-info\\\" data-bind=\\\"tooltip: { content: MemoTranslation || Memo }\\\"> <i class=\\\"fa fa-info-circle\\\"></i> </div> <!--/ko--> <!--/ko--> <span class=\\\"todo-kanban__title-box__name\\\" data-bind=\\\"text: TranslatedName || Label,\\r\\n ellipsisTooltip: {\\r\\n content: $parent._showTooltip && !$parent._readOnly ? TranslatedName || Label : '',\\r\\n options: {\\r\\n isLineClampMode: true\\r\\n }\\r\\n }\\\"></span> <!-- tooltip: { content: $parent._showTooltip && !$parent._readOnly ? TranslatedName || Label : '' }\\\"></span>--> <!-- ko if: ActionItems && ActionItems.length > 0 --> <!-- ko if: !$parent._readOnly && $parent._showTooltip --> <span class=\\\"actionItemsButton\\\" data-bind=\\\"tooltip: { content: $parent.GetActionItemsTemplate($data), addClass: 'jBox-padding-5px'}\\\"><i class=\\\"fa fa-list-ul\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> <!-- ko ifnot: !$parent._readOnly && $parent._showTooltip --> <span class=\\\"actionItemsButton\\\"><i class=\\\"fa fa-list-ul\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> </div> <div data-bind=\\\"fastForEach: _recordsWithTodoActions\\\"> <div data-bind=\\\"attr: { 'data-record-id': record.RecordId }, style: {'min-width': $parent.GetToDoKanbanGroupWidth()}\\\" class=\\\"todo-kanban__group\\\"> <div class=\\\"todo-kanban__group-header\\\" data-bind=\\\"css: {groupClosed: !record.AriaExpanded()}\\\"> <button type=\\\"button\\\" data-bind=\\\"attr: { 'data-target': '#record-' + record.RecordId,\\r\\n 'aria-expanded': record.AriaExpanded() ? 'true' : 'false' },\\r\\n css: {collapsed: !record.AriaExpanded()},\\r\\n click: record.ToggleAccordion.bind($parent, $data)\\\" class=\\\"todo-kanban__toggle-button\\\"> <i class=\\\"fa fa-chevron-down\\\"></i> </button> <!-- ko if: record.Name && record.Name.length > 0 --> <div class=\\\"todo-kanban__group-name\\\" data-bind=\\\"click: $parent.OpenConsultScreen.bind($parent, $parent), css: {'disabled': $parent._readOnly}\\\"> <!-- ko text: record.Name --> <!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: record.Name && record.Name.length > 0 --> <i class=\\\"fa fa-external-link\\\" data-bind=\\\"click: $parent.OpenConsultScreen.bind($parent, $parent), css: {'disabled': $parent._readOnly}\\\"></i> <!-- /ko --> <div class=\\\"todo-kanban__group-badge\\\"> <!-- ko text: record.LifeStatusTranslatedName || record.LifestatusName --> <!-- /ko --> </div> <div class=\\\"todo-kanban__button-container\\\"> <!-- ko if: record.ParentOrChildRecords && record.ParentOrChildRecords.length > 0 --> <div class=\\\"kanban-item_parentOrChildRecord-icon\\\"> <i class=\\\"fa fa-sitemap\\\" data-bind=\\\"tooltip: { content: $parent._showTooltip ? $parent.GetParentOrChildRecordTemplate($parent, record) : '', addClass: 'jBox-padding-5px'}\\\"></i> </div> <!-- /ko --> <span data-bind=\\\"click: $parent.OpenEditScreen.bind($parent, $parent),\\r\\n css: {'disabled': $parent._readOnly}\\\" class=\\\"todo-kanban__button-edit\\\"> <i class=\\\"fa fa-pencil\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <div class=\\\"todo-kanban__right-buttons-group-container\\\"> <div class=\\\"todo-kanban__new-button-container\\\"> <button class=\\\"todo-kanban__new-button\\\" data-bind=\\\"\\r\\n click: $parent.SelectAction.bind($parent, record),\\r\\n enable: $parent._isNewButtonEnabled\\r\\n \\\"> <i class=\\\"fa fa-plus\\\"></i><!-- ko text: $parent._labels.NEW --> <!-- /ko --> </button> <!-- ko ifnot: $parent._isTypeHierarchyCorrect --> <div class=\\\"todo-kanban__new-button-tooltip-container\\\" data-bind=\\\"\\r\\n tooltip: {\\r\\n content: $parent._showTooltip ? $parent._labels.KANBAN_TYPE_HIERARCHY_VIOLATION : '',\\r\\n position: { y: 'bottom' }\\r\\n }\\r\\n \\\"></div> <!-- /ko --> </div> </div> </div> <div data-bind=\\\"attr: { id: 'record-' + record.RecordId,\\r\\n 'aria-expanded': record.AriaExpanded() ? 'true' : 'false' },\\r\\n css: { in: record.AriaExpanded() }\\\" class=\\\"collapse\\\"> <div class=\\\"todo-kanban__columns\\\"> <!-- ko fastForEach: { data: $parent._status().Steps, as: 'step' } --> <div data-bind=\\\"\\r\\n dragula: {\\r\\n data: step.IsRetired ? [{}] : ($parent.groupedActions[step.Id] || []),\\r\\n group: 'KanbanBoard-' + $parents[1]._guid,\\r\\n afterDrop: $parents[1].AfterDrop.bind($parents[1], $parent.record ),\\r\\n accepts: $parents[1].Accepts.bind($parents[1]),\\r\\n invalid: $parents[1].IsCardInvalid.bind($parents[1]),\\r\\n onDrag: $parents[1].OnDrag.bind($parents[1], { recordId: $parent.record.RecordId }),\\r\\n onDragEnd: $parents[1].OnDragEnd.bind($parents[1]),\\r\\n moves: $parents[1].Moves.bind($parents[1]),\\r\\n disabled: $parents[1]._readOnly\\r\\n },\\r\\n css: {\\r\\n 'todo-kanban__column--retired': step.IsRetired,\\r\\n 'todo-kanban__column--allow-drag': $parents[1].IsDraggingCssClassApplied({ recordId: $parent.record.RecordId, lifestatusId: step.Id, isForAllow: true }),\\r\\n 'todo-kanban__column--forbid-drag': $parents[1].IsDraggingCssClassApplied({ recordId: $parent.record.RecordId, lifestatusId: step.Id, isForAllow: false })\\r\\n },\\r\\n attr: { 'data-text': step.Label }\\r\\n \\\" class=\\\"todo-kanban__column\\\"> <!-- ko if: step.IsRetired --> <div class=\\\"todo-kanban__retired-card\\\"></div> <!-- /ko --> <!-- ko ifnot: step.IsRetired --> <div class=\\\"kanban-item\\\"> <kanban-card params=\\\"\\r\\n entityId: ActionsEntityId,\\r\\n recordId: ActionRecordId,\\r\\n tags: Tags,\\r\\n priority: Priority,\\r\\n users: Users,\\r\\n isDisabled: IsDisabled,\\r\\n avatarThumbnails: $parents[2]._avatarThumbnails,\\r\\n priorities: $parents[2]._priorities,\\r\\n thumbnail: Thumbnail,\\r\\n mailsCount: MailsCount,\\r\\n color: Color,\\r\\n withGreyBackground: IsDisabled || IsDisabledCard,\\r\\n warnings: Warnings,\\r\\n withDateBadges: $parents[2]._withDateBadges,\\r\\n colorBar: $parents[2]._colorBar,\\r\\n memo: ReplaceActionMemoText,\\r\\n onPriorityUpdateError: $parents[2].OnPriorityUpdateError.bind($parents[2], $parents[1].record.RecordId),\\r\\n onMailClick: $parents[2].OnMailClick.bind($parents[2], { record: $parents[1].record, action: $data }),\\r\\n readOnly: $parents[2]._readOnly,\\r\\n isCalculatedViaCalcPriority: $parents[2].IsCalculatedViaCalcPriority,\\r\\n alwaysShowDeadline: $parents[2]._alwaysShowDeadline,\\r\\n hideOwner: $parents[2]._hideOwner,\\r\\n heightImage: $parents[2]._heightImage,\\r\\n isTodo: true,\\r\\n showTooltip: $parents[2]._showTooltip,\\r\\n showAlias: $parents[2]._showAlias,\\r\\n timerControl: $parents[2]._timerControl,\\r\\n activeTimer: ActiveTimer,\\r\\n newActiveTimer: NewActiveTimer,\\r\\n actionRecord: $data\\r\\n \\\"> </kanban-card> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"record_box\\\"> <!-- ko foreach: record.ParentOrChildRecords --> <div class=\\\"record_item\\\" data-bind=\\\"click: $parent.$_data.OpenRecord.bind(this, $parent.$_data, $parent.record)\\\"> <i class=\\\"fa\\\" data-bind=\\\"css: $parent.$_data.GetIcon(IsChild, IsParent), attr: {title: $parent.$_data.GetTitle(IsChild, IsParent)}\\\"></i> <span class=\\\"typeName\\\" data-bind=\\\"event: {mouseover: $parent.$_data.MouseOver.bind($parent.$_data, 'isTypeName'),\\r\\n mouseout: $parent.$_data.MouseOut.bind($parent.$_data)}\\\"><!--ko text: $parent.$_data.GetParentOrChildRecordTypeName(TypeNameTranslation, TypeName) --><!--/ko--></span> <span class=\\\"name\\\" data-bind=\\\"event: {mouseover: $parent.$_data.MouseOver.bind($parent.$_data, 'isName'),\\r\\n mouseout: $parent.$_data.MouseOut.bind($parent.$_data)}\\\"><!--ko text: $parent.$_data.GetParentOrChildRecordName(NameTranslation, Name)--><!--/ko--></span> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {CONTROL_TYPES, DEFAULT_ICONS, RenderModes} from \"Core/Constant\";\r\nimport {KanbanStore} from 'Core/Controls/Kanban/Stores/KanbanStore';\r\nimport {TableStore} from \"Core/Common/Stores/TableStore\";\r\nimport {EntityTypeModel} from 'Core/Controls/Kanban/Models/EntityTypeModel';\r\nimport {StepModel} from 'Core/Controls/Kanban/Models/StatusModel';\r\nimport {KanbanViewModel} from 'Core/Controls/Kanban/Models/KanbanViewModel';\r\nimport {KanbanTypeViewModel} from \"Core/Controls/Kanban/Models/KanbanTypeViewModel\";\r\nimport {KanbanStep} from 'Core/Controls/Kanban/Step';\r\nimport {Timer} from \"Core/Controls/Timer/Timer\";\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam, IScreen} from \"Core/Screens/IScreen\";\r\nimport {BaseScreen} from \"Core/Screens/BaseScreen\";\r\nimport {EditScreen} from \"Core/Screens/EditScreen/EditScreen\";\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {QueryBuilder as QueryBuilderControl} from \"Core/Controls/QueryBuilder/QueryBuilder\";\r\nimport {DeleteQueryStore} from \"QueryBuilder/Stores/DeleteQueryStore\";\r\n\r\nimport ViewTemplate from 'Core/Controls/Kanban/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/Kanban/Templates/Toolbar.html';\r\nimport DesignTemplate from 'Core/Controls/Kanban/Templates/Design.html';\r\n\r\nimport KanbanConfigJson from 'Core/Controls/Kanban/Configs/kanban-config.json';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport {UserManager} from \"../../../User/UserManager\";\r\nimport * as _ from \"underscore\";\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\n\r\nimport {GridStore} from \"Core/Controls/Grid/Stores/GridStore\";\r\nimport {ViewModes} from \"Core/Controls/Grid/BaseGrid/Enums/ViewModes\";\r\n\r\nimport \"Core/Controls/Kanban/DefaultKanban\";\r\nimport \"Core/Controls/Kanban/TodoKanban\";\r\nimport \"Core/Controls/Kanban/KanbanCard\";\r\nimport \"Core/Components/QueryDropdowns/QueryDropdowns\";\r\nimport {CheckedUserAndGroup} from \"Core/Controls/SelectUser/SelectUser\";\r\n\r\nko.templates['Core/Controls/Kanban/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Design'] = DesignTemplate;\r\n\r\nexport class KanbanBoard extends BaseControl {\r\n private _selectedType: KanbanTypeViewModel;\r\n private _isKanbanViewsShown: KnockoutObservable<boolean>;\r\n private _isTypesShown: KnockoutObservable<boolean>;\r\n private _noTypesLoaded: KnockoutObservable<boolean>;\r\n private _entityTypes: KnockoutObservableArray<KanbanTypeViewModel>;\r\n private _steps: KnockoutObservableArray<KanbanStep>;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _searchString: KnockoutObservable<string>;\r\n private _kanbanSubjectName: KnockoutObservable<string>;\r\n private _controlId: number;\r\n private _loadStatuses: boolean;\r\n private _timerControl: Timer;\r\n private _isFullScreen: KnockoutObservable<boolean>;\r\n private _fullScreenTooltip: KnockoutObservable<string>;\r\n _screen: KnockoutObservable<IScreen>;\r\n _kanbanViews: KnockoutObservableArray<KanbanViewModel>;\r\n _isAddingRecordAllowed: KnockoutObservable<boolean>;\r\n _selectedTypeObservable: KnockoutObservable<KanbanTypeViewModel>;\r\n _selectedUsers: KnockoutObservableArray<number>;\r\n _showPlanned: KnockoutObservable<boolean>;\r\n _showTypeError: KnockoutObservable<boolean>;\r\n _isTodoToggleShown: KnockoutObservable<boolean>;\r\n _isTodoSelected: KnockoutObservable<boolean>;\r\n _chosenKanbanView: KnockoutObservable<KanbanViewModel>;\r\n _isEditingAllowed: KnockoutComputed<boolean>;\r\n _isDeletingAllowed: KnockoutComputed<boolean>;\r\n _viewId: KnockoutComputed<number>;\r\n _labels = LABELS;\r\n\r\n _designCardSecondaryInfoTemplate = `\r\n <div class=\"kanban-item__secondary-info-item\">\r\n <div class=\"transition kanban-item__action\">Action Name</div>\r\n <div class=\"kanban-item__date-badge kanban-item__date-badge--deadline\">\r\n <i class=\"fa fa-clock-o\"></i>\r\n Jun 30\r\n </div>\r\n </div>\r\n `;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, KanbanConfigJson);\r\n\r\n this._selectedType = null;\r\n this._entityTypes = ko.observableArray([]);\r\n this._steps = ko.observableArray([]);\r\n this._searchTerm = ko.observable(null);\r\n this._searchString = ko.observable(null);\r\n this._screen = ko.observable();\r\n this._kanbanViews = ko.observableArray([]);\r\n this._isAddingRecordAllowed = ko.observable(true);\r\n this._selectedTypeObservable = ko.observable(null);\r\n this._selectedUsers = ko.observableArray([]);\r\n this._showPlanned = ko.observable(null);\r\n this._isTodoToggleShown = ko.observable(true);\r\n this._isKanbanViewsShown = ko.observable(true);\r\n this._isTypesShown = ko.observable(true);\r\n this._noTypesLoaded = ko.observable(false);\r\n this._showTypeError = ko.observable(false);\r\n this._kanbanSubjectName = ko.observable(null);\r\n\r\n this._loadStatuses = false;\r\n\r\n this._controlId = params.Model.Id;\r\n\r\n this._isFullScreen = ko.observable(false);\r\n\r\n this._fullScreenTooltip = ko.observable(LABELS.MAXIMIZE);\r\n\r\n this.Init();\r\n }\r\n\r\n private Init() {\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.Kanban));\r\n const renderMode = this._renderMode();\r\n\r\n const isDesignMode = renderMode === RenderModes.Design;\r\n if (isDesignMode) {\r\n this.InitForDesignMode();\r\n }\r\n\r\n if (this.IsRuntimeMode()) {\r\n this.InitForRuntimeMode();\r\n }\r\n }\r\n\r\n private InitForDesignMode() {\r\n const stepNames = ['To Do', 'In Progress', 'Done'];\r\n\r\n const kanbanSteps = stepNames\r\n .map(stepName => new StepModel({Label: stepName}))\r\n .map(stepModel => new KanbanStep(stepModel, []));\r\n\r\n this._steps(kanbanSteps);\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private InitForRuntimeMode() {\r\n const screen = this._form.GetScreen();\r\n\r\n this._screen(screen);\r\n\r\n if (this._form.GetScreen().IsConsultScreen) {\r\n this._isTodoSelected = ko.observable(true);\r\n } else {\r\n this._isTodoSelected = ko.observable(UserVarsManager.Instance.GetKanbanTodoSelected(this.GetControlId()) || false);\r\n }\r\n\r\n this._isKanbanViewsShown(this._isTodoSelected() || !this._form.GetScreen().IsConsultScreen);\r\n\r\n this._isTodoSelected.subscribe(isTodoSelected => {\r\n this._isKanbanViewsShown(this._isTodoSelected() || !this._form.GetScreen().IsConsultScreen);\r\n\r\n if(this._form.GetScreen() && !this._selectedTypeObservable()){\r\n this.LoadTypes();\r\n }\r\n\r\n if(isTodoSelected){\r\n this._loadStatuses = true;\r\n }\r\n\r\n UserVarsManager.Instance.SetKanbanTodoSelected(this.GetControlId(), isTodoSelected);\r\n\r\n setTimeout(()=>{\r\n PubSub.publish('KANBAN_FULLSCREEN', this._isFullScreen());\r\n }, 500);\r\n });\r\n\r\n this._chosenKanbanView = ko.observable();\r\n this._chosenKanbanView.subscribe(chosenKanbanView => {\r\n this.SetKanbanView(chosenKanbanView.Id);\r\n });\r\n\r\n this._isEditingAllowed = ko.pureComputed(() => {\r\n const chosenKanbanView = this._chosenKanbanView();\r\n return chosenKanbanView && chosenKanbanView.IsEditingAllowed;\r\n });\r\n this._isDeletingAllowed = ko.pureComputed(() => {\r\n const chosenKanbanView = this._chosenKanbanView();\r\n return chosenKanbanView && chosenKanbanView.IsDeletingAllowed;\r\n });\r\n this._viewId = ko.pureComputed(() => {\r\n const chosenKanbanView = this._chosenKanbanView();\r\n return chosenKanbanView ? chosenKanbanView.Id : null;\r\n }).extend({notify: 'always'});\r\n\r\n const timerControl = this.GetSubControls() && _.find(this.GetSubControls(), control => control.GetControlTypeName() === CONTROL_TYPES.Timer\r\n && control instanceof Timer);\r\n this._timerControl = timerControl && timerControl as Timer;\r\n\r\n screen.On('UsersSelectionChanged', this, (eventArgs) => {\r\n\r\n const groupIds = _.filter(_.map(eventArgs.data?.SelectedUsersAndGroups, (item: CheckedUserAndGroup) => item.GroupId), groupId => groupId !== null) as number[];\r\n const userIds = _.flatten(_.map(eventArgs.data?.SelectedUsersAndGroups, (item: CheckedUserAndGroup) => item.UserIds));\r\n const combinedIds = groupIds.concat(userIds);\r\n const uniqueIds = _.uniq(combinedIds);\r\n\r\n this._selectedUsers(uniqueIds);\r\n this._showPlanned(eventArgs.data.ShowPlanned);\r\n\r\n if (this._selectedUsers().length === 0) {\r\n this._selectedUsers.push(UserManager.Instance.CurrentUser.Id);\r\n }\r\n });\r\n }\r\n\r\n private LoadTypes() {\r\n KanbanStore.GetTypes({\r\n EntityId: this.SubjectEntity,\r\n ScreenSubjectTypeId: this.Screen.GetTableTypeId(),\r\n ShowTypeHierarchy: !this.UseKanbanSubject && this.Screen.IsConsultScreen\r\n })\r\n .then(data => {\r\n this._entityTypes(this.MapToKanbanTypeViewModels(data));\r\n\r\n const selectedType = this.GetSelectedType();\r\n\r\n if (selectedType) {\r\n this.SelectType(selectedType);\r\n }\r\n else if (!this._isTodoSelected()) {\r\n this._showTypeError(true);\r\n }\r\n else {\r\n this._noTypesLoaded(true);\r\n }\r\n });\r\n }\r\n\r\n private LoadViewList({withBlockUI}: { withBlockUI?: boolean } = {}) {\r\n const queryDropdowns = this._el.querySelector<HTMLElement>('query-dropdowns');\r\n\r\n if (withBlockUI) {\r\n BlockUI.Block({Target: queryDropdowns});\r\n }\r\n\r\n KanbanStore.GetViewList({SubjectEntityId: this.QueryRootEntityId})\r\n .then(data => {\r\n this._isAddingRecordAllowed(data.IsAddingRecordAllowed);\r\n\r\n const kanbanViews = [new KanbanViewModel(0, LABELS.DEFAULT_VIEW), ...data.KanbanViews];\r\n\r\n this._kanbanViews(kanbanViews);\r\n\r\n const kanbanViewId = this.GetKanbanView();\r\n\r\n this._chosenKanbanView(\r\n kanbanViews.find(kanbanView => kanbanView.Id === kanbanViewId) || kanbanViews[0]\r\n );\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(queryDropdowns);\r\n });\r\n }\r\n\r\n LoadKanbanSubjectInfo() {\r\n TableStore.Get({TableId: this.Model.KanbanSubjectId})\r\n .then((tableModel: any) => {\r\n this._kanbanSubjectName(tableModel.Name);\r\n this.LoadTypes();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n IsRuntimeMode() {\r\n const renderMode = this._renderMode();\r\n return renderMode !== RenderModes.Design && renderMode !== RenderModes.ToolBar;\r\n }\r\n\r\n SelectType(kanbanTypeViewModel: KanbanTypeViewModel) {\r\n if (this._selectedType) {\r\n this._selectedType.IsSelected(false);\r\n }\r\n this._selectedType = kanbanTypeViewModel;\r\n this._selectedType.IsSelected(true);\r\n this._selectedTypeObservable(this._selectedType);\r\n\r\n this.SetKanbanLastType();\r\n }\r\n\r\n get EntityTypes() {\r\n return this._entityTypes;\r\n }\r\n\r\n private get UseKanbanSubject() {\r\n return !!this.Model.KanbanSubjectId;\r\n }\r\n\r\n private get SubjectEntity() {\r\n return this.UseKanbanSubject\r\n ? this.Model.KanbanSubjectId\r\n : this.Screen.GetEntityId();\r\n }\r\n\r\n private get QueryRootEntityId() {\r\n return this.Screen.IsConsultScreen\r\n ? this.Model.TodoEntityId\r\n : this.SubjectEntity;\r\n }\r\n\r\n Search() {\r\n this._searchString(this._searchTerm());\r\n }\r\n\r\n ClearSearch() {\r\n this._searchTerm(null);\r\n this.Search();\r\n }\r\n ChangeFullScreen(): void {\r\n this._isFullScreen(!this._isFullScreen());\r\n setTimeout(()=>{\r\n PubSub.publish('KANBAN_FULLSCREEN', this._isFullScreen());\r\n }, 500);\r\n\r\n this._fullScreenTooltip(this._isFullScreen() ? LABELS.MINIMIZE : LABELS.MAXIMIZE);\r\n }\r\n\r\n NewKanbanView() {\r\n BlockUI.Block();\r\n\r\n KanbanStore.GetDefaultKanbanViewMetaData()\r\n .then(async(data) =>{\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((editScreen: BaseScreen) => {\r\n editScreen.ShowInModal();\r\n\r\n return GridStore.GetDefaultTableView({\r\n ControlId: 0,\r\n ViewMode: ViewModes.KanbanQuery,\r\n SubjectEntityId: this.QueryRootEntityId\r\n })\r\n .then(data => {\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectEntityId(this.QueryRootEntityId);\r\n queryBuilderControl.SetSubjectRecordId(this.Screen.GetRecordId());\r\n queryBuilderControl.SetQueryTypeName(ViewModes.KanbanQuery);\r\n queryBuilderControl.SetFilterByOwners(true);\r\n queryBuilderControl.InitQuery(data);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.SetKanbanView(eventArgs.data.RecordId);\r\n this.LoadViewList({withBlockUI: true});\r\n });\r\n }\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n });\r\n });\r\n }\r\n\r\n EditKanbanView() {\r\n const chosenKanbanView = this._chosenKanbanView();\r\n const kanbanViewId = chosenKanbanView && chosenKanbanView.Id;\r\n\r\n if (!kanbanViewId) {\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n\r\n KanbanStore.GetDefaultKanbanViewMetaData()\r\n .then(data => {\r\n LockManager.Instance.TryLock(data.TableId, kanbanViewId)\r\n .then(async () => {\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId,\r\n RecordId: kanbanViewId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n })\r\n .then((editScreen: BaseScreen) => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === data.TableId && eventArgs.data.RecordId === kanbanViewId) {\r\n editScreen.Close();\r\n }\r\n });\r\n editScreen.On('MODAL_CLOSE', this, () => {\r\n LockManager.Instance.ReleaseLock(data.TableId, kanbanViewId);\r\n });\r\n\r\n editScreen.ShowInModal();\r\n\r\n editScreen.On('RECORD_DELETED', this, () => {\r\n this.LoadViewList({withBlockUI: true});\r\n });\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetQueryTypeName(ViewModes.KanbanQuery);\r\n queryBuilderControl.SetSubjectRecordId(this.Screen.GetRecordId());\r\n queryBuilderControl.SetFilterByOwners(true);\r\n\r\n editScreen.On('RECORD_SAVED', this, () => {\r\n this.LoadViewList({withBlockUI: true});\r\n });\r\n }\r\n });\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n CopyKanbanView() {\r\n const chosenKanbanView = this._chosenKanbanView();\r\n const kanbanViewId = chosenKanbanView && chosenKanbanView.Id;\r\n\r\n if (!kanbanViewId) {\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n\r\n KanbanStore.GetDefaultKanbanViewMetaData()\r\n .then(async data => {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId,\r\n RecordId: kanbanViewId,\r\n LoadAsExample: true\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((editScreen: EditScreen) => {\r\n editScreen.IsDataFromExample = true;\r\n editScreen.ShowInModal();\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectRecordId(this.Screen.GetRecordId());\r\n queryBuilderControl.SetQueryTypeName(ViewModes.KanbanQuery);\r\n queryBuilderControl.SetFilterByOwners(true);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.SetKanbanView(eventArgs.data.RecordId);\r\n\r\n this.LoadViewList({withBlockUI: true});\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n DeleteKanbanView() {\r\n const chosenKanbanView = this._chosenKanbanView();\r\n const kanbanViewId = chosenKanbanView && chosenKanbanView.Id;\r\n\r\n if (!kanbanViewId) {\r\n return;\r\n }\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: 'Are you sure?',\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: 'Yes',\r\n TextDecline: 'Cancel'\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n DeleteQueryStore.Delete({Id: kanbanViewId})\r\n .then(() => {\r\n this.LoadViewList({withBlockUI: true});\r\n });\r\n });\r\n confirmationDialog.Show();\r\n }\r\n\r\n private MapToKanbanTypeViewModels(models: EntityTypeModel[]) {\r\n return models.map(model => this.MapToKanbanTypeViewModel(model));\r\n }\r\n\r\n private MapToKanbanTypeViewModel(model: EntityTypeModel) {\r\n if (!model) {\r\n return null;\r\n }\r\n\r\n const kanbanTypeViewModel = new KanbanTypeViewModel(\r\n model.K_Type,\r\n model.Name,\r\n model.TranslatedName,\r\n model.HasFlowFolder,\r\n model.ShowTypeHierarchy,\r\n model.ParentTypeModels);\r\n\r\n return kanbanTypeViewModel;\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n const onRender = () => {\r\n if (this.UseKanbanSubject) {\r\n this.LoadKanbanSubjectInfo();\r\n } else {\r\n this.LoadTypes();\r\n }\r\n\r\n this.LoadViewList();\r\n };\r\n\r\n if (this._isRendered()) {\r\n onRender();\r\n } else {\r\n this._isRendered.subscribe(onRender);\r\n }\r\n }\r\n\r\n private GetSelectedType() {\r\n const lastType = this.GetKanbanLastType();\r\n const selectedType = _.find(this._entityTypes(), type => type.K_Type === lastType) || _.first(this._entityTypes());\r\n\r\n const isScreenEntitySubjectEntity = this.Screen.GetEntityId() === this.SubjectEntity;\r\n if (!isScreenEntitySubjectEntity || !this.Screen.IsConsultScreen) {\r\n return selectedType;\r\n }\r\n\r\n const screenEntityType = this.Screen.GetTableTypeId();\r\n const screenEntityTypeIsOnKanban = _.any(this._entityTypes(), type => type.K_Type === screenEntityType);\r\n\r\n const screenEntitySubTypeIsOnKanban = _.any(this._entityTypes(), type => type.K_Type !== screenEntityType && _.contains(type.ParentTypeModels.map(m => m.K_Type), screenEntityType));\r\n\r\n if (screenEntitySubTypeIsOnKanban) {\r\n return _.find(this._entityTypes(), type => type.K_Type !== screenEntityType && _.contains(type.ParentTypeModels.map(m => m.K_Type), screenEntityType));\r\n }\r\n else if (screenEntityTypeIsOnKanban) {\r\n return _.find(this._entityTypes(), type => type.K_Type === screenEntityType);\r\n }\r\n\r\n return selectedType;\r\n }\r\n\r\n private GetKanbanLastType() {\r\n return UserVarsManager.Instance.GetKanbanLastType(this.GetControlId());\r\n }\r\n\r\n private SetKanbanLastType() {\r\n UserVarsManager.Instance.SetKanbanLastType(this.GetControlId(), this._selectedType.K_Type);\r\n }\r\n\r\n private GetKanbanView() {\r\n return UserVarsManager.Instance.GetKanbanView(this.GetControlId());\r\n }\r\n\r\n private SetKanbanView(kanbanViewId: number) {\r\n UserVarsManager.Instance.SetKanbanView(this.GetControlId(), kanbanViewId);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-compress\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <div class=\\\"clearfix\\\"> <div class=\\\"kanbard-board-root\\\"> <div class=\\\"action-type-row\\\"> <div class=\\\"action-types clearfix\\\"> <label class=\\\"panel-title btn green\\\">Incident</label> <label class=\\\"panel-title btn green\\\">Problem</label> <label class=\\\"panel-title btn green\\\">Case</label> </div> </div> </div> </div> <div class=\\\"clearfix\\\"></div> <div class=\\\"board-root clearfix\\\"> <!-- ko foreach: _steps --> <div class=\\\"kanban-column clearfix\\\"> <span class=\\\"panel-title\\\"> <span data-bind=\\\"text: Label\\\"></span> </span> <div class=\\\"kanban-container\\\"> <div class=\\\"kanban-item\\\"> <kanban-card params=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\ttags: [{ FullName: 'Tag1' }, { FullName: 'Tag2' }, { FullName: 'Tag3' }],\\r\\n\\t\\t\\t\\t\\t\\t\\tpriority: { Id: 1, Name: 'Medium', Color: '#ea7d24' },\\r\\n\\t\\t\\t\\t\\t\\t\\tusers: [{ UserName: 'Contact name', IsOwner: true }],\\r\\n\\t\\t\\t\\t\\t\\t\\tpriorities: ko.observable([{ Id: 1, Name: 'Medium', Color: '#ea7d24' }]),\\r\\n\\t\\t\\t\\t\\t\\t\\tnameTemplate: 'Case name',\\r\\n\\t\\t\\t\\t\\t\\t\\tsecondaryInfoTemplate: $parent._designCardSecondaryInfoTemplate,\\r\\n\\t\\t\\t\\t\\t\\t\\tisDesign: true\\r\\n\\t\\t\\t\\t\\t\\t\\\"> </kanban-card> </div> </div> </div> <!-- /ko --> </div> <div class=\\\"edit-grid-root dropfield-container group-elements\\\"> <!-- ko if: !_subControls().length --> <div class=\\\"group-control-placeholder\\\"><!--ko text: _labels.CONTROLS --><!-- /ko --></div> <!-- /ko --> <div data-bind=\\\"dragula: { data: _subControls,\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t group: 'ToolBarToDesigner',\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t afterDrop: $root.AfterDropControl.bind($root) }\\\" subControls class=\\\"tab-drop-container\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class AutolinkModel {\r\n\t@deserialize\r\n\tLeftEntityId: number;\r\n\r\n\t@deserialize\r\n\tRightEntityId: number;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class AutoLinkedRecordModel {\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tEntityRecordId : number;\r\n\r\n\tconstructor(partial?: Partial<AutoLinkedRecordModel>) {\r\n\t\tif (partial) {\r\n\t\t\tthis.RecordId = partial.RecordId;\r\n\t\t\tthis.EntityId = partial.EntityId;\r\n\t\t\tthis.Name = partial.Name;\r\n\t\t\tthis.NameTranslation = partial.NameTranslation\r\n\t\t\tthis.EntityRecordId = partial.EntityRecordId;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic Create(recordId: number, entityId: number, name: string, nameTranslation: string, entityRecordId: number) {\r\n\t\treturn new AutoLinkedRecordModel({\r\n\t\t\tRecordId: recordId,\r\n\t\t\tEntityId: entityId,\r\n\t\t\tName: name,\r\n\t\t\tNameTranslation: nameTranslation,\r\n\t\t\tEntityRecordId: entityRecordId\r\n\t\t});\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport { AutolinkModel } from \"Core/Controls/LinkList/Models/AutoLinkModel\";\r\nimport { AutoLinkedRecordModel } from \"Core/Controls/LinkList/Models/AutoLinkedRecordModel\";\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\n\r\nexport interface IRelationRecord {\r\n\tId: number;\r\n\tKSeq: number;\r\n\tLevel: number;\r\n\tIsMain: boolean;\r\n\tName: string;\r\n\tNameTranslation: string;\r\n TypeName: string;\r\n TypeTranslatedName: string;\r\n\tTypeId: number;\r\n\tIsRecordOwner: boolean;\r\n\tUserAllowance: number;\r\n}\r\n\r\n\r\nexport interface ILinkType {\r\n\tId: number;\r\n\tName: string;\r\n\tInstancingMaximum: number;\r\n}\r\n\r\n\r\nexport class LinkType {\r\n\tconstructor(LinkType?: ILinkType) {\r\n\t\tif (LinkType) {\r\n\r\n\t\t\tthis.Id = LinkType.Id;\r\n\t\t\tthis.Name = LinkType.Name;\r\n\t\t\tthis.InstancingMaximum = LinkType.InstancingMaximum;\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tInstancingMaximum: number;\r\n\r\n}\r\n\r\nexport class RelationRecord {\r\n\tconstructor(record?: IRelationRecord) {\r\n\t\tif (record) {\r\n\t\t\tthis.Id = record.Id;\r\n\t\t\tthis.KSeq = record.KSeq;\r\n\t\t\tthis.Level = record.Level;\r\n\t\t\tthis.IsMain = record.IsMain;\r\n\t\t\tthis.Name = record.Name;\r\n\t\t\tthis.NameTranslation = record.NameTranslation;\r\n this.TypeName = record.TypeName;\r\n this.TypeTranslatedName = record.TypeTranslatedName;\r\n\t\t\tthis.TypeId = record.TypeId;\r\n\t\t\tthis.IsRecordOwner = record.IsRecordOwner;\r\n\t\t\tthis.UserAllowance = record.UserAllowance;\r\n\t\t}\r\n\t\tthis.IsNew = false;\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tKSeq: number;\r\n\r\n\t@deserialize\r\n\tLevel: number;\r\n\r\n\t@deserialize\r\n\tIsMain: boolean;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n TypeTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tIsNew: boolean;\r\n\r\n\t@deserialize\r\n\tIsRecordOwner: boolean;\r\n\r\n\t@deserialize\r\n UserAllowance: number;\r\n}\r\n\r\nexport class EntityRelations {\r\n\tconstructor() {\r\n\t\tthis.Records = [];\r\n\t\tthis.AutoLinks = [];\r\n\t\tthis.AutoLinkedRecords = [];\r\n\t\tthis.LinkTypes = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tEntityTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tTableIcon: string;\r\n\r\n\t@deserialize\r\n\tTableIconType: string;\r\n\r\n\t@deserialize\r\n\tTableImage: string;\r\n\r\n\t@deserialize\r\n\tHasRecords: boolean;\r\n\r\n\t@deserialize\r\n\tHasFields: boolean;\r\n\r\n\t@deserialize\r\n\tHasSequence: boolean;\r\n\r\n\t@deserializeAs(AutolinkModel)\r\n\tAutoLinks: Array<AutolinkModel>;\r\n\r\n\t@deserializeAs(RelationRecord)\r\n\tRecords: Array<RelationRecord>;\r\n\r\n\t@deserializeAs(LinkType)\r\n\tLinkTypes: Array<LinkType>;\r\n\r\n\t@deserializeAs(AutoLinkedRecordModel)\r\n\tAutoLinkedRecords: Array<AutoLinkedRecordModel>;\r\n}\r\n\r\nexport class LinkListRelationsModel {\r\n\tconstructor() {\r\n\t\tthis.Entities = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tControlId: number;\r\n\r\n\t@deserialize\r\n\tMainEntityId: number;\r\n\r\n\t@deserialize\r\n\tSingleMode: boolean;\r\n\r\n\tErrorMessage: string;\r\n\r\n\tWarnings: string[];\r\n\r\n\t@deserializeAs(EntityRelations)\r\n\tEntities: Array<EntityRelations>;\r\n\r\n\t@deserializeAs(ActionSubjectRecordModel)\r\n\tActionSubjectRecord: ActionSubjectRecordModel;\r\n}","import * as _ from'underscore';\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {LinkListRelationsModel} from 'Core/Controls/LinkList/Models/LinklistRelationsModel';\r\n\r\nexport interface IGetLinkListRelationsRequestModel {\r\n\tControlId: number;\r\n\tRecordId?: number;\r\n\tEntityId?: number;\r\n\tSubjectEntityId?: number;\r\n SubjectRecordId?: number;\r\n SubjectLifeStatusId?: number;\r\n\tWithoutRelations: boolean;\r\n\tCheckOneParent: boolean;\r\n\tTableTypeId: number;\r\n};\r\n\r\nexport class LinkListRelationsStore {\r\n\tstatic GetLinkedRecords(params: IGetLinkListRelationsRequestModel): P.Promise<LinkListRelationsModel> {\r\n\t\tvar deferredResult = P.defer<LinkListRelationsModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.LINKLIST.GET_LINKLIST_RELATIONS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): LinkListRelationsModel {\r\n\t\tvar model = GenericDeserialize<LinkListRelationsModel>(jsonObject.ResultObject, LinkListRelationsModel);\r\n\t\tif (jsonObject.Warnings) {\r\n\t\t\tmodel.Warnings = jsonObject.Warnings;\r\n\t\t}\r\n\t\treturn model;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {USER_ALLOWANCE} from 'Core/Constants/UserAllowance';\r\nimport {SECURITY_LEVELS} from 'Core/Constants/SecurityLevels';\r\nimport {SYSTEM_TABLE_NAMES} from 'Core/Constant'\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {\r\n LinkListRelationsModel,\r\n IRelationRecord,\r\n EntityRelations\r\n} from 'Core/Controls/LinkList/Models/LinklistRelationsModel';\r\nimport {AutolinkModel} from \"Core/Controls/LinkList/Models/AutoLinkModel\";\r\nimport {AutoLinkedRecordModel} from \"Core/Controls/LinkList/Models/AutoLinkedRecordModel\";\r\nimport {Guid} from \"Core/Common/Guid\";\r\nimport {UserManager} from \"User/UserManager\";\r\n\r\nimport UsersNormalModeTemplate from '../Templates/UsersNormalMode.html';\r\nimport UsersSingleModeTemplate from '../Templates/UsersSingleMode.html';\r\nimport enumerable from '../../../Common/Decorators/EnumerableDecorator';\r\n\r\nexport class RelationRecordViewModel {\r\n constructor(record?: IRelationRecord) {\r\n this.IsMain = ko.observable(false);\r\n if (record) {\r\n this.Id = record.Id;\r\n this.Level = record.Level;\r\n this.IsMain(record.IsMain);\r\n this.Name = record.Name;\r\n this.NameTranslation = record.NameTranslation;\r\n this.TypeName = record.TypeName;\r\n this.TypeTranslatedName = record.TypeTranslatedName;\r\n this.TypeId = record.TypeId;\r\n this.IsRecordOwner = record.IsRecordOwner;\r\n this.UserAllowance = record.UserAllowance;\r\n this.KSeq = record.KSeq;\r\n }\r\n\r\n this.Guid = Guid.NewGuid();\r\n this.IsNew = false;\r\n }\r\n\r\n Id: number;\r\n Level: number;\r\n IsMain: KnockoutObservable<boolean>;\r\n Name: string;\r\n NameTranslation: string;\r\n TypeName: string;\r\n TypeTranslatedName: string;\r\n TypeId: number;\r\n IsNew: boolean;\r\n IsRecordOwner: boolean;\r\n UserAllowance: number;\r\n KSeq: number;\r\n Guid: string;\r\n IsNewRecord: boolean;\r\n\r\n GetName(): string {\r\n return this.NameTranslation ? this.NameTranslation : this.Name;\r\n }\r\n\r\n GetTypeName(): string {\r\n return this.TypeTranslatedName ? this.TypeTranslatedName : this.TypeName ? this.TypeName : '-';\r\n }\r\n @enumerable get IsShowPlanner(): boolean {\r\n return UserManager.Instance.CurrentUser.Id === this.Id && this.IsRecordOwner && this.PlanningAllowed;\r\n }\r\n\r\n\r\n @enumerable get PlanningAllowed(): boolean {\r\n return USER_ALLOWANCE.HasValue(USER_ALLOWANCE.PLANNING, this.UserAllowance);\r\n }\r\n\r\n @enumerable get Shared(): boolean {\r\n return (SECURITY_LEVELS.SHARED & this.Level) === SECURITY_LEVELS.SHARED;\r\n }\r\n\r\n @enumerable get SharingReady() {\r\n return (SECURITY_LEVELS.SHARING_READY & this.Level) === SECURITY_LEVELS.SHARING_READY;\r\n }\r\n\r\n @enumerable\r\n get Planner(): boolean {\r\n return (SECURITY_LEVELS.PLANNER & this.Level) === SECURITY_LEVELS.PLANNER;\r\n }\r\n\r\n @enumerable get PlannerTooltip(): string {\r\n return this.Planner\r\n ? LABELS.OWNER_IS_PLANNER\r\n : LABELS.OWNER_IS_NOT_PLANNER;\r\n }\r\n}\r\n\r\nexport class EntityRelationsViewModel {\r\n public _isValidEntity: KnockoutObservable<boolean>\r\n constructor(model: EntityRelations) {\r\n this.EntityId = model.EntityId;\r\n this.EntityName = model.EntityName;\r\n this.EntityTranslatedName = model.EntityTranslatedName == null ? model.EntityName : model.EntityTranslatedName;\r\n this.TableIcon = model.TableIcon;\r\n this.TableIconType = model.TableIconType;\r\n this.HasRecords = model.HasRecords;\r\n this.HasFields = model.HasFields;\r\n this.HasSequence = model.HasSequence;\r\n this.NoFieldsMessage = LABELS.TABLE_TEXT_NON_HAS_FIELDS;\r\n this._isValidEntity = ko.observable(true);\r\n\r\n const records = model.Records.map(record => new RelationRecordViewModel(record))\r\n .sort((left, right) => {\r\n return right.IsRecordOwner ? 1 : -1\r\n });\r\n\r\n this.Records = ko.observableArray(records);\r\n this.AutoLinks = model.AutoLinks;\r\n this.AutoLinkedRecords = ko.observableArray(model.AutoLinkedRecords);\r\n\r\n }\r\n\r\n EntityId: number;\r\n\r\n EntityName: string;\r\n\r\n EntityTranslatedName: string;\r\n\r\n TableIcon: string;\r\n\r\n TableIconType: string;\r\n\r\n TableImage: string;\r\n\r\n HasRecords: boolean;\r\n\r\n HasFields: boolean;\r\n\r\n NoFieldsMessage: string;\r\n\r\n HasSequence: boolean;\r\n\r\n Records: KnockoutObservableArray<RelationRecordViewModel>;\r\n AutoLinks: Array<AutolinkModel>;\r\n AutoLinkedRecords: KnockoutObservableArray<AutoLinkedRecordModel>;\r\n}\r\n\r\nexport class UserEntityRelationsViewModel extends EntityRelationsViewModel {\r\n RecordOwner: KnockoutComputed<RelationRecordViewModel>;\r\n SharedUsers: KnockoutComputed<RelationRecordViewModel[]>;\r\n\r\n SingleMode: boolean;\r\n\r\n constructor(model: EntityRelations, singleMode: boolean) {\r\n super(model);\r\n\r\n this.SingleMode = singleMode;\r\n\r\n this.RecordOwner = ko.computed(() => _.find(this.Records(), record => record.IsRecordOwner));\r\n this.SharedUsers = ko.computed(() => _.filter(this.Records(), user => user.Shared));\r\n }\r\n}\r\n\r\ninterface ILinkListRelationsViewModelParams {\r\n Model: LinkListRelationsModel;\r\n RecordOwner: number;\r\n IsExample: boolean;\r\n}\r\n\r\nexport class LinkListRelationsViewModel {\r\n constructor(params: ILinkListRelationsViewModelParams) {\r\n this.MainEntityId = params.Model.MainEntityId;\r\n this.ControlId = params.Model.ControlId;\r\n this.SingleMode = params.Model.SingleMode;\r\n\r\n const entities = params.Model.Entities.filter(e => e.EntityName !== 'SYS_USERS').map(entity => new EntityRelationsViewModel(entity));\r\n this.Entities = ko.observableArray(entities);\r\n\r\n const userRelation = _.find(params.Model.Entities, entity => entity.EntityName === \"SYS_USERS\");\r\n if (userRelation && userRelation.EntityName === SYSTEM_TABLE_NAMES.SYS_USERS ){\r\n if (!!userRelation.EntityTranslatedName){\r\n userRelation.EntityTranslatedName =\r\n (userRelation.EntityTranslatedName.toUpperCase() === SYSTEM_TABLE_NAMES.SYS_USERS ? 'USERS' : userRelation.EntityTranslatedName);\r\n }\r\n if ( !userRelation.EntityTranslatedName || (userRelation.EntityTranslatedName.trim() === '') ) {\r\n userRelation.EntityTranslatedName = 'USERS';\r\n }\r\n }\r\n const userRelationViewModel = userRelation && new UserEntityRelationsViewModel(userRelation, params.Model.SingleMode);\r\n this.UserRelation = ko.observable(userRelationViewModel);\r\n }\r\n\r\n ControlId: number;\r\n\r\n MainEntityId: number;\r\n\r\n SingleMode: boolean;\r\n\r\n UserRelation: KnockoutObservable<UserEntityRelationsViewModel>;\r\n Entities: KnockoutObservableArray<EntityRelationsViewModel>;\r\n\r\n GetUsersNormalModeTemplate() {\r\n return UsersNormalModeTemplate;\r\n }\r\n\r\n GetUsersSingleModeTemplate() {\r\n return UsersSingleModeTemplate;\r\n }\r\n}","// Module\nvar code = \" <fieldset class=\\\"entity-relation\\\"> <legend data-bind=\\\"css: {'toggle-button': Records().length > 7, 'open': $parents[1].IsOpen(1)},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t click: $parents[1].CollapsingLinks.bind($parents[1], 1)\\\"> <!--ko text: EntityTranslatedName || EntityName --><!-- /ko --> <span data-bind=\\\"click: $parents[1].LinkRecord.bind($parents[1], $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { title: $parents[1]._labels.ADD_NEW_LINK_LABEL }\\\" class=\\\"link-entity transition\\\"> <i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i> </span> <span class=\\\"link-entity-arrow transition\\\"></span> </legend> <div class=\\\"entity-records\\\" data-bind=\\\"css: {'hidden-toggle': Records().length > 7, 'open': $parents[1].IsOpen(1)}\\\"> <!-- ko foreach: Records --> <div class=\\\"record-item clearfix\\\"> <!-- ko if: !$data.IsRecordOwner --> <input type=\\\"checkbox\\\" tabindex=\\\"-1\\\" data-bind=\\\"click: $parents[2].ToggleSharing.bind($parents[2], $data, $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t attr: {name: $parent.EntityName, checkedValue: Id, checked: Shared}\\\" class=\\\"relation-record linklist-item link-info-item\\\"/> <pre data-bind=\\\"text: GetTypeName()\\\" class=\\\"mt-code link-info-item\\\"></pre> <!-- /ko --> <!-- ko if: $data.IsRecordOwner --> <pre class=\\\"mt-code link-info-item\\\"><!-- ko text: $parents[2]._labels.OWNER_LABEL --><!-- /ko --></pre> <!-- /ko --> <span data-bind=\\\" text: GetName(),\\r\\n click: $parents[2].NavigateByLink.bind($parents[2], $data, $parent),\\r\\n ellipsisTooltip: {\\r\\n content: GetName() ? GetName() : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n showHideOnlyOnHover: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"LeftColon link-name\\\"></span> <div class=\\\"link-info-item pull-right link-actions-btn\\\"> <!-- text: $parents[1].HasFields --> <!-- ko if: $data.IsShowPlanner --> <span class=\\\"edit-link pull-left\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'planner': $data.Planner},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: $parents[2].TogglePlanner.bind($parents[2], $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {content: PlannerTooltip}\\\"> <!-- ko if: $data.Planner --> <i class=\\\"fa fa-calendar-check-o transition\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> <!-- ko if: !$data.Planner --> <i class=\\\"fa fa-calendar-times-o transition\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> </span> <!-- /ko --> <span class=\\\"edit-link pull-left\\\" data-bind=\\\"click: $parents[2].EditRecord.bind($parents[2], $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t css: {disabled: !$parent.HasFields},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t attr: {title: !$parent.HasFields ? $parent.NoFieldsMessage : $parents[2]._labels.EDIT_LINK_LABEL}\\\"> <i class=\\\"fa fa-pencil-square-o transition\\\" aria-hidden=\\\"true\\\"></i> </span> <!-- ko if: !$data.IsRecordOwner --> <span class=\\\"unlink-record pull-left\\\" data-bind=\\\"click: $parents[2].UnLinkUser.bind($parents[2], $data, $parent), preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { title: $parents[2]._labels.REMOVE_LINK_LABEL }\\\"> <i class=\\\"fa fa-chain-broken transition\\\" aria-hidden=\\\"true\\\"></i> </span> <!-- /ko --> </div> </div> <!-- /ko --> </div> </fieldset> \";\n// Exports\nexport default code;","// Module\nvar code = \"<fieldset class=\\\"entity-relation\\\"> <legend data-bind=\\\"css: {'toggle-button': SharedUsers().length > 7, 'open': $parents[1].IsOpen(1)},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t click: $parents[1].CollapsingLinks.bind($parents[1], 1)\\\"> <!--ko text: 'USERS' --><!-- /ko --> <span data-bind=\\\"click: $parents[1].OpenUserAssignment.bind($parents[1], $data), attr: { title: $parents[1]._labels.ADD_NEW_LINK_LABEL }\\\" class=\\\"link-entity transition\\\"> <i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i> </span> <span class=\\\"link-entity-arrow transition\\\"></span> </legend> <div class=\\\"entity-records\\\" data-bind=\\\"css: {'hidden-toggle': SharedUsers().length > 7, 'open': $parents[1].IsOpen(1)}\\\"> <!--ko with: RecordOwner--> <div class=\\\"record-item clearfix\\\"> <pre class=\\\"mt-code link-info-item\\\" data-bind=\\\"text: $parents[2]._labels.OWNER_LABEL\\\"></pre> <label data-bind=\\\"text: GetName(),\\r\\n click: $parents[2].NavigateByLink.bind($parents[2], $data, $parent),\\r\\n ellipsisTooltip: {\\r\\n content: GetName() ? GetName() : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n showHideOnlyOnHover: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"LeftColon link-name\\\"> </label> <div class=\\\"link-info-item pull-right link-actions-btn\\\"> <!-- text: $parents[1].HasFields --> <span class=\\\"edit-link pull-left\\\" data-bind=\\\"click: $parents[2].EditRecord.bind($parents[2], $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t css: {disabled: !$parent.HasFields},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t attr: {title: !$parent.HasFields ? $parent.NoFieldsMessage : $parents[2]._labels.EDIT_LINK_LABEL}\\\"> <i class=\\\"fa fa-pencil-square-o transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> </div> <!--/ko--> <!-- ko foreach: SharedUsers --> <div class=\\\"record-item clearfix\\\"> <pre data-bind=\\\"text: GetTypeName()\\\" class=\\\"mt-code link-info-item\\\"></pre> <label data-bind=\\\"text: GetName(),\\r\\n click: $parents[2].NavigateByLink.bind($parents[2], $data, $parent),\\r\\n ellipsisTooltip: {\\r\\n content: GetName() ? GetName() : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n showHideOnlyOnHover: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"LeftColon link-name\\\"> </label> <div class=\\\"link-info-item pull-right link-actions-btn\\\"> <!-- text: $parents[1].HasFields --> <span class=\\\"edit-link pull-left\\\" data-bind=\\\"click: $parents[2].EditRecord.bind($parents[2], $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t css: {disabled: !$parent.HasFields},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t attr: {title: !$parent.HasFields ? $parent.NoFieldsMessage : $parents[2]._labels.EDIT_LINK_LABEL}\\\"> <i class=\\\"fa fa-pencil-square-o transition\\\" aria-hidden=\\\"true\\\"></i> </span> <span class=\\\"unlink-record pull-left\\\" data-bind=\\\"click: $parents[2].UnLinkUser.bind($parents[2], $data, $parent), preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { title: $parents[2]._labels.REMOVE_LINK_LABEL }\\\"> <i class=\\\"fa fa-chain-broken transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> </div> <!-- /ko --> </div> </fieldset> \";\n// Exports\nexport default code;","import * as _ from'underscore';\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize, deserialize } from 'libs/cerialize';\r\nimport {NewRelationModel} from 'Core/Controls/LinkList/Models/NewRelationModel';\r\n\r\nexport interface IGetNewRelationRequestModel {\r\n\tControlId: number;\r\n\tRecordId: number;\r\n\tEntityId: number;\r\n\tRelatedEntityId: number;\r\n RelatedRecordIds: number[];\r\n\tSubjectRecordId: number;\r\n};\r\n\r\n\r\nexport interface IGetNewAutolinkRequestModel{\r\n\tNewRelationRequestItem: IGetNewRelationRequestModel;\r\n\tRecordId: number;\r\n\tLeftEntityId: number;\r\n\tRightEntityId: number;\r\n};\r\n\r\nexport class NewRelationStore {\r\n\tstatic GetNewRelation(params: IGetNewRelationRequestModel): P.Promise<NewRelationModel[]> {\r\n\t\tvar deferredResult = P.defer<NewRelationModel[]>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.LINKLIST.GET_NEW_OR_EXISTING_RECORD,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n deferredResult.resolve(this.DeserializeArray(data.ResultObject));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetNewAutolinkRelation(params: IGetNewAutolinkRequestModel): P.Promise<NewRelationModel> {\r\n\t\tvar deferredResult = P.defer<NewRelationModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.LINKLIST.GET_AUTOLINK_RECORD,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data.ResultObject));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): NewRelationModel {\r\n\t\tvar model = GenericDeserialize<NewRelationModel>(jsonObject, NewRelationModel);\r\n\t\treturn model;\r\n }\r\n\r\n static DeserializeArray(jsonObject: any): Array<NewRelationModel> {\r\n return jsonObject.map(item => GenericDeserialize(item, NewRelationModel));\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"EditScreenView linklist-control\\\" data-bind=\\\"click: function() { _help.ShowControlHelp.call(_help, $data); $parent.ExpandOnControlClicking() },\\r\\n\\t\\t\\t\\tcss: { 'u-cursor-pointer': !$parent._isExpanded() }\\\"> <div class=\\\"view-linklist-root\\\"> <div class=\\\"relations-root\\\"> <!-- ko with: DataModel --> <!-- ko with: UserRelation --> <div class=\\\"clearfix relationsWrapper\\\"> <div class=\\\"icon-block\\\"> <!--ko with: $parents[1].GetIcon($data)--> <div class=\\\"icon\\\" data-bind=\\\"template: { name: GetTemplateName.bind($rawData) }\\\"> </div> <!--/ko--> <div data-bind=\\\"text: SharedUsers().length\\\" class=\\\"counter\\\"></div> </div> <div class=\\\"entity-relation-container\\\"> <!--ko if: SingleMode--> <!--ko template: {html: $parent.GetUsersSingleModeTemplate}--> <!--/ko--> <!--/ko--> <!--ko ifnot: $parent.SingleMode--> <!--ko template: {html: $parent.GetUsersNormalModeTemplate}--> <!--/ko--> <!--/ko--> </div> </div> <!-- /ko --> <!-- ko foreach: Entities --> <div class=\\\"clearfix entitiesWrapper\\\" data-bind=\\\"css: {'errorValid': !_isValidEntity()}\\\"> <div class=\\\"icon-block\\\"> <!--ko with: $parents[1].GetIcon($data)--> <div class=\\\"icon\\\" data-bind=\\\"template: { name: GetTemplateName.bind($rawData) }\\\"></div> <!--/ko--> <div data-bind=\\\"text: Records().length\\\" class=\\\"counter\\\"></div> </div> <div class=\\\"entity-relation-container\\\"> <fieldset class=\\\"entity-relation\\\"> <legend data-bind=\\\"css: {'toggle-button': Records().length > 7, 'open': $parents[1].IsOpen(EntityId)},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t click: $parents[1].CollapsingLinks.bind($parents[1], EntityId)\\\"> <!--ko text: EntityTranslatedName || EntityName --><!-- /ko --> <span data-bind=\\\"click: $parents[1].LinkRecord.bind($parents[1], $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { title: $parents[1]._labels.ADD_NEW_LINK_LABEL }\\\" class=\\\"link-entity transition\\\"> <i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i> </span> <span class=\\\"link-entity-arrow transition\\\"></span> </legend> <div class=\\\"entity-records\\\" data-bind=\\\"css: {'hidden-toggle': Records().length > 7, 'open': $parents[1].IsOpen(EntityId)}\\\"> <!-- ko foreach: Records --> <div class=\\\"record-item clearfix\\\"> <input type=\\\"radio\\\" tabindex=\\\"-1\\\" data-bind=\\\"click: $parents[2].ChangeRelation.bind($parents[2], $data, $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t attr: { name: $parent.EntityName, checkedValue: Id, checked: IsMain },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t preventBubble: ['click']\\\" class=\\\"relation-record linklist-item link-info-item\\\"/> <pre data-bind=\\\"text: GetTypeName()\\\" class=\\\"mt-code link-info-item\\\"></pre> <!--ko if: !!Name --> <label data-bind=\\\"text: GetName(),\\r\\n click: $parents[2].NavigateByLink.bind($parents[2], $data, $parent),\\r\\n ellipsisTooltip: {\\r\\n content: GetName() ? GetName() : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n showHideOnlyOnHover: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"LeftColon link-name\\\"> </label> <!-- /ko --> <div class=\\\"link-info-item pull-right link-actions-btn\\\"> <!-- text: $parents[1].HasFields --> <span class=\\\"edit-link pull-left\\\" data-bind=\\\"click: $parent.HasFields && $parents[2].EditRecord.bind($parents[2], $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t css: {disabled: !$parent.HasFields},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t attr: {title: !$parent.HasFields ? $parent.NoFieldsMessage : $parents[2]._labels.EDIT_LINK_LABEL}\\\"> <i class=\\\"fa fa-pencil-square-o transition\\\" aria-hidden=\\\"true\\\"></i> </span> <span class=\\\"unlink-record pull-left\\\" data-bind=\\\"click: $parents[2].UnLinkRecord.bind($parents[2], $data, $parent), preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { title: $parents[2]._labels.REMOVE_LINK_LABEL }\\\"> <i class=\\\"fa fa-chain-broken transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> </div> <!-- ko foreach: $parent.AutoLinkedRecords --> <!--ko if: EntityRecordId === $parent.Id --> <div class=\\\"linked-block\\\"> <div class=\\\"icon-block icon-linked-block\\\"> <!--ko with: $parents[3].GetIconByEntityId(EntityId)--> <div class=\\\"icon\\\" data-bind=\\\"template: { name: GetTemplateName.bind($rawData) }\\\"></div> <!--/ko--> </div> <!--ko text: Name --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </fieldset> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> \";\n// Exports\nexport default code;","import * as _ from \"underscore\";\r\nimport * as ko from 'knockout'\r\n\r\nimport {Serialize} from 'libs/cerialize';\r\n\r\nimport {P} from 'Core/Common/Promise'\r\nimport {Notifier} from \"Core/Common/Notifier\"\r\n\r\nimport {CONTROL_TYPES, FIELD_TYPES, FONT_NAME, RenderModes, SYSTEM_TABLE_NAMES} from 'Core/Constant'\r\nimport {SECURITY_LEVELS} from 'Core/Constants/SecurityLevels';\r\n\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {LinkListRelationsStore} from 'Core/Controls/LinkList/Stores/LinkListStore'\r\nimport {UserModel} from 'Core/Controls/LinkList/Models/UserModel';\r\nimport {EntityRelations, LinkListRelationsModel} from 'Core/Controls/LinkList/Models/LinklistRelationsModel'\r\nimport {\r\n EntityRelationsViewModel,\r\n LinkListRelationsViewModel,\r\n RelationRecordViewModel,\r\n UserEntityRelationsViewModel\r\n} from 'Core/Controls/LinkList/Models/LinkListRelationsViewModel';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel'\r\nimport {Icon} from 'Core/Icon/Icon'\r\nimport { SearchScreen, ISelectedRecord} from 'Core/Screens/SearchScreen/SearchScreen'\r\nimport {NewRelationStore} from 'Core/Controls/LinkList/Stores/NewRelationStore'\r\nimport {EditLinkDataModel, UpdateDataModel} from 'Core/Controls/LinkList/Models/UpdateDataModel'\r\nimport {UserManager} from \"User/UserManager\";\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {DataModel as LinkEditorDataModel} from 'Core/Screens/Common/LinkEditor/Models/DataModel'\r\n\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\n\r\n\r\nimport {LinkEditorStore} from 'Core/Screens/Common/LinkEditor/Stores/LinkEditorStore'\r\n\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport {RecordSpecsModel} from \"Core/ScreenManager/Models/RecordSpecsModel\";\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport { AutoLinkedRecordModel } from \"Core/Controls/LinkList/Models/AutoLinkedRecordModel\";\r\nimport { AutolinkModel } from \"Core/Controls/LinkList/Models/AutoLinkModel\";\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {AGENDA_TYPES} from \"Core/Constants/AgendaTypes\";\r\nimport { NewRelationModel } from \"./Models/NewRelationModel\";\r\nimport { SearchByMainRelationTypes } from 'Core/Screens/SearchScreen/Enums/Enums';\r\nimport {EditScreen} from \"Core/Screens/EditScreen/EditScreen\";\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nconst RELATION_TYPE_VALUE_FIELD: string = 'F_RELATIONTYPEVALUE';\r\n\r\nimport LinkListConfig from 'Core/Controls/LinkList/Configs/link-list-config.json';\r\n\r\n// Templates\r\nimport ViewTemplate from 'Core/Controls/LinkList/Templates/View.html'\r\nimport ToolBarTemplate from 'Core/Controls/LinkList/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/LinkList/Templates/Design.html'\r\nimport { DataCell } from '../Grid/BaseGrid/Index';\r\n\r\nko.templates['Core/Controls/LinkList/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/LinkList/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/LinkList/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/LinkList/Templates/Design'] = DesignTemplate;\r\n\r\nexport class LinkList extends BaseControl {\r\n private _serverDataModel: LinkListRelationsModel;\r\n private _dataModel: KnockoutObservable<LinkListRelationsViewModel>;\r\n private _subjectRecordId: number;\r\n private _updateDataModel: UpdateDataModel;\r\n private _designFields: KnockoutObservableArray<AttachedFieldModel>;\r\n private _searchScreen: SearchScreen;\r\n private _openNumbers: Array<any>;\r\n private _linkTypes: Array<any>;\r\n private _linkTypesInstancesLeft: Array<any>;\r\n private _isAuoProperties: KnockoutObservable<boolean>;\r\n private _licenseName: string;\r\n\r\n private _actionGlobal: string;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, LinkListConfig);\r\n this._designFields = ko.observableArray(this._model().Fields);\r\n this._isAuoProperties = ko.observable(null);\r\n\r\n this._model.subscribe(newValue => {\r\n this._designFields(this._model().Fields);\r\n });\r\n\r\n this._designFields.subscribe(fields => {\r\n _.each(fields, (field, index) => {\r\n field.Sort = index * 10;\r\n });\r\n });\r\n\r\n this._serverDataModel = null;\r\n this._dataModel = ko.observable(null);\r\n this._linkTypes = [];\r\n this._openNumbers = [];\r\n this._licenseName = null;\r\n\r\n this._actionGlobal = GlobalManager.Instance.GetGlobal(GLOBALS.ACTION_TABLE);\r\n\r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n IsAuoProperties(): boolean {\r\n _.each(this.GeneralProperties.Groups, (group) => {\r\n let propertyAuto = group.Properties.filter(property => property.Type === 'Auto');\r\n\r\n if (propertyAuto) {\r\n _.each(propertyAuto, (propertyModel)=>{\r\n this._isAuoProperties(!!propertyModel.Value);\r\n });\r\n } else {\r\n this._isAuoProperties(false);\r\n }\r\n });\r\n return this._isAuoProperties();\r\n }\r\n\r\n get LinkListAutoProperty(): boolean {\r\n return this.IsAuoProperties();\r\n }\r\n\r\n GetDefaultName() {\r\n return \"LinkList\";\r\n }\r\n\r\n private Init(): void {\r\n this.AddEvent('LinkListDispose');\r\n this.AddEvent('NEW_RECORD_SAVED');\r\n }\r\n\r\n @enumerable get DesignFields(): KnockoutObservableArray<AttachedFieldModel> {\r\n return this._designFields;\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n const dataMode = this.GetForm().GetScreen().GetDataMode();\r\n this._subjectRecordId =\r\n value.RecordSpecsModel.IsNewRecord || dataMode !== DataModes.Default ? 0 : value.SubjectRecordId;\r\n const subjectLifeStatusId = this.GetForm().GetScreen().GetSubjectLifeStatusId();\r\n this.LoadDataInDefaultMode(value, subjectLifeStatusId);\r\n }\r\n\r\n private SetInitialLinkTypesState(entities) {\r\n\r\n this._linkTypes = [];\r\n entities.map(entity => this._linkTypes.push(\r\n {\r\n EntityName: entity.EntityName == null ? entity.EntityName : entity.EntityNameTranslation,\r\n Records: entity.Records.map((record) => {\r\n return {\r\n RecordId: record.Id,\r\n LinkTypes: entity.LinkTypes\r\n };\r\n }),\r\n LinkTypes: entity.LinkTypes,\r\n EntityId: entity.EntityId,\r\n }\r\n ));\r\n\r\n const stringified = JSON.stringify(this._linkTypes);\r\n this._linkTypesInstancesLeft = JSON.parse(stringified);\r\n }\r\n\r\n UpdateLinkTypesState(entityName, recordId, typeName, valueToUpdateWith) {\r\n const selectedEntity = _.where(this._linkTypesInstancesLeft, {EntityName: entityName})[0];\r\n const relatedEntity: any = selectedEntity && _.where(selectedEntity.Records, {RecordId: recordId})[0] as any;\r\n if (!relatedEntity) {\r\n return null;\r\n }\r\n const selectedLinkType = relatedEntity && _.where(relatedEntity.LinkTypes, {Name: typeName});\r\n if (!selectedLinkType) {\r\n return null;\r\n }\r\n if (selectedLinkType.length) {\r\n selectedLinkType.map((linkType: any) => {\r\n linkType.InstancingMaximum += valueToUpdateWith;\r\n });\r\n }\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n\r\n GetLinkTypesState(entityName, recordId) {\r\n const relatedEntity = _.where(this._linkTypesInstancesLeft, {EntityName: entityName})[0];\r\n let relatedRecord = null;\r\n if (relatedEntity) relatedRecord = _.where(relatedEntity.Records, {RecordId: recordId})[0];\r\n\r\n return relatedRecord && relatedRecord.LinkTypes || null;\r\n }\r\n\r\n private LoadDataInDefaultMode(value: IControlValue, subjectLifeStatusId: number) {\r\n const saveButton = this._form.GetScreen().GetControl(CONTROL_TYPES.ButtonSave);\r\n this.LoadData(value, subjectLifeStatusId)\r\n .always(() => {\r\n BlockUI.Unblock(saveButton.GetWrapper());\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then(model => {\r\n\r\n $(saveButton.GetWrapper()).css('pointer-events', 'auto');\r\n\t\t\t\tif (model.Warnings && model.Warnings.length > 0) {\r\n\t\t\t\t\tmodel.Warnings.forEach(warning => {\r\n\t\t\t\t\t\tif (warning) {\r\n\t\t\t\t\t\t\tnew Notifier().Failed(warning);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n this.SetInitialLinkTypesState(model.Entities);\r\n\r\n this.ApplyData(model, value.RecordSpecsModel);\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private LoadData(value: IControlValue, subjectLifeStatusId?: number) {\r\n this._updateDataModel = new UpdateDataModel();\r\n\r\n const screenModel = this.GetForm().GetScreen();\r\n const dataMode = screenModel.GetDataMode();\r\n const actionSubjectRecord = screenModel.GetActionSubjectRecord();\r\n const tableTypeId = screenModel.GetTableTypeId();\r\n\r\n let subjectEntityId;\r\n let subjectRecordId;\r\n\r\n if (actionSubjectRecord) {\r\n subjectEntityId = actionSubjectRecord.EntityId;\r\n subjectRecordId = actionSubjectRecord.RecordId;\r\n }\r\n\r\n\t\tconst checkOneParent = dataMode === DataModes.CopyWithRelations || dataMode === DataModes.CopyToType || dataMode === DataModes.FollowUp\r\n\t\t\t|| (value.RecordSpecsModel && value.RecordSpecsModel.IsExample);\r\n\r\n return LinkListRelationsStore.GetLinkedRecords({\r\n ControlId: this.GetControlId(),\r\n RecordId: value.SubjectRecordId,\r\n EntityId: value.SubjectEntityId,\r\n SubjectEntityId: subjectEntityId,\r\n SubjectRecordId: subjectRecordId,\r\n SubjectLifeStatusId: subjectLifeStatusId,\r\n\t\t\tWithoutRelations: dataMode === DataModes.Copy,\r\n\t\t\tCheckOneParent: checkOneParent,\r\n TableTypeId: tableTypeId\r\n });\r\n }\r\n\r\n private FireDataChangeEvent(model: LinkListRelationsModel){\r\n _.each(model.Entities, (entity)=>{\r\n _.each(entity.Records, (record)=>{\r\n let field = _.find(this.Fields, f=> f.EntityId === entity.EntityId);\r\n if(record.IsMain && field){\r\n this.UpdateVariable({ Field: this.GetPrimaryKeyField(field), ControlType: CONTROL_TYPES.LinkList }, record.Id);\r\n }\r\n });\r\n });\r\n }\r\n\r\n GetPrimaryKeyField(attached: AttachedFieldModel): AttachedFieldModel{\r\n let primaryKey = new AttachedFieldModel();\r\n primaryKey.FieldTypeName = FIELD_TYPES.PKey;\r\n primaryKey.Name = attached.PrimaryKeyName;\r\n primaryKey.EntityName = attached.EntityName;\r\n return primaryKey;\r\n }\r\n\r\n private ApplyData(model: LinkListRelationsModel, recordSpecs: RecordSpecsModel) {\r\n const self = this;\r\n\r\n this._updateDataModel = new UpdateDataModel();\r\n this._updateDataModel.ActionSubjectRecord = model.ActionSubjectRecord;\r\n\r\n this._serverDataModel = model;\r\n this._dataModel(new LinkListRelationsViewModel({\r\n Model: model,\r\n RecordOwner: recordSpecs.RecordOwner,\r\n IsExample: recordSpecs.IsExample\r\n }));\r\n\r\n this.FireDataChangeEvent(model);\r\n\r\n\t\tif (recordSpecs.IsNewRecord || this._subjectRecordId === 0) {\r\n\t\t\tconst editScreen = this.GetForm().GetScreen() as EditScreen;\r\n\r\n\t\t\tif (!editScreen.IsDataFromExample) {\r\n\t\t\t\t_.each(this._dataModel().Entities(), entity => {\r\n\t\t\t\t\tif (entity) {\r\n\t\t\t\t\t\t_.each(entity.Records(), record => {\r\n\t\t\t\t\t\t\tlet newRecord = new RelationRecordViewModel();\r\n\t\t\t\t\t\t\tnewRecord.Id = record.Id;\r\n\t\t\t\t\t\t\tnewRecord.Guid = record.Guid;\r\n\t\t\t\t\t\t\tnewRecord.Level = record.Level;\r\n\t\t\t\t\t\t\tnewRecord.IsNew = true;\r\n\t\t\t\t\t\t\tnewRecord.IsMain = record.IsMain;\r\n\r\n\t\t\t\t\t\t\tthis._updateDataModel.AddNewRelation(self.GetControlId(), self._subjectRecordId, entity.EntityId, newRecord);\r\n\r\n\t\t\t\t\t\t\tif (record.IsMain()) {\r\n\t\t\t\t\t\t\t\tthis.ChangeRelation(record, entity, 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\tif (editScreen.GetEntityName() === 'AGENDA') {\r\n\t\t\t if (editScreen.GetTableTypeName() === AGENDA_TYPES.Appointment) {\r\n if (editScreen.IsDataFromExample) {\r\n this.EnablePlanner();\r\n }\r\n }\r\n }\r\n\r\n\t\t\tthis.AddRecordOwner(recordSpecs)\r\n .then(() => this.Screen.Trigger('LINK_LIST_DATA_LOADED', {Control: this}));\r\n return;\r\n }\r\n this.Screen.Trigger('LINK_LIST_DATA_LOADED');\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>): void {\r\n if (el) {\r\n this._el = el[0];\r\n }\r\n\r\n if (this._renderMode() !== RenderModes.Design) {\r\n const saveButton = this._form.GetScreen().GetControl(CONTROL_TYPES.ButtonSave);\r\n $(saveButton.GetWrapper()).css('pointer-events', 'none');\r\n BlockUI.Block({Target: saveButton.GetWrapper()});\r\n BlockUI.Block({Target: this._el});\r\n }\r\n super.AfterRender(el);\r\n }\r\n\r\n @enumerable get DataModel() {\r\n return this._dataModel;\r\n }\r\n\r\n @enumerable get Fields() {\r\n return this._model().Fields;\r\n }\r\n\r\n @enumerable get Name(): string {\r\n return this._model().Name === SYSTEM_TABLE_NAMES.SYS_USERS ? 'USERS' : this._model().Name;\r\n }\r\n\r\n @enumerable get LicenseName() {\r\n return this._licenseName;\r\n }\r\n\r\n set LicenseName(licenseName) {\r\n this._licenseName = licenseName;\r\n }\r\n\r\n GetDesignIcon(model: AttachedFieldModel) {\r\n const entityIcon = model.EntityIcon;\r\n entityIcon.IsImage = entityIcon.IsImage ? !_.isEmpty(entityIcon.Name) : !_.isEmpty(entityIcon.Image);\r\n entityIcon.IsIcon = !_.isEmpty(entityIcon.Name) && entityIcon.IsIcon;\r\n\r\n var icon = new Icon(entityIcon);\r\n if (!icon.IsIcon && !icon.IsImage) {\r\n return new Icon({\r\n FontName: FONT_NAME.FONT_AWESOME,\r\n Image: null,\r\n IsIcon: false,\r\n IsImage: false,\r\n Name: \"\",\r\n Id: null\r\n });\r\n } else {\r\n return icon;\r\n }\r\n }\r\n\r\n GetEntityName(model: AttachedFieldModel): string {\r\n if (model.EntityName === SYSTEM_TABLE_NAMES.SYS_USERS && !!model.EntityNameTranslation){\r\n return model.EntityNameTranslation === SYSTEM_TABLE_NAMES.SYS_USERS ? 'USERS' : model.EntityNameTranslation;\r\n } else if (model.EntityName !== SYSTEM_TABLE_NAMES.SYS_USERS){\r\n return model.EntityNameTranslation || model.EntityName;\r\n } else if (model.EntityName === SYSTEM_TABLE_NAMES.SYS_USERS && !model.EntityNameTranslation){\r\n return 'USERS';\r\n }\r\n }\r\n\r\n GetDisplayedName(model: AttachedFieldModel): string {\r\n const entityName = this.GetEntityName(model);\r\n const fieldName = model.FullName;\r\n return `${entityName}.${fieldName}`;\r\n }\r\n\r\n GetIcon(model?: EntityRelationsViewModel) {\r\n var fieldByEntity = _.find(this._model().Fields, item => {\r\n return item.EntityId === model.EntityId\r\n });\r\n\r\n const entityIcon = fieldByEntity.EntityIcon;\r\n entityIcon.IsImage = entityIcon.IsImage ? !_.isEmpty(entityIcon.Name) : !_.isEmpty(entityIcon.Image);\r\n entityIcon.IsIcon = !_.isEmpty(entityIcon.Name) && entityIcon.IsIcon;\r\n\r\n var icon = new Icon(entityIcon);\r\n if (!icon.IsIcon && !icon.IsImage) {\r\n return new Icon({\r\n FontName: FONT_NAME.FONT_AWESOME,\r\n Image: null,\r\n IsIcon: false,\r\n IsImage: false,\r\n Name: \"\",\r\n Id: null\r\n });\r\n } else {\r\n return icon;\r\n }\r\n }\r\n\r\n GetIconByEntityId(entityId: number) {\r\n let model = _.find(this._dataModel().Entities(), entity => entity.EntityId === entityId);\r\n var fieldByEntity = _.find(this._model().Fields, item => {\r\n return item.EntityId === model.EntityId\r\n });\r\n var icon = new Icon(fieldByEntity.EntityIcon);\r\n return icon;\r\n }\r\n\r\n FindLinkByRecord(recordId: number, model: EntityRelationsViewModel) {\r\n return model.Records().find(record => record.Id === recordId);\r\n }\r\n\r\n AddRecord(recordId: number, model: EntityRelationsViewModel, newRelation: NewRelationModel, openLinkEditor: boolean = false) {\r\n let isRecordFirst = model.Records().length < 1;\r\n let isMain = newRelation.IsMain || isRecordFirst;\r\n\r\n const newRecord = new RelationRecordViewModel();\r\n newRecord.Id = newRelation.Id;\r\n newRecord.Name = newRelation.Name;\r\n newRecord.NameTranslation = newRelation.NameTranslation;\r\n newRecord.IsMain(isMain);\r\n newRecord.Level = newRelation.Level;\r\n newRecord.TypeName = newRelation.TypeName;\r\n newRecord.TypeTranslatedName = newRelation.TypeTranslatedName;\r\n newRecord.IsRecordOwner = newRelation.IsRecordOwner;\r\n newRecord.UserAllowance = newRelation.UserAllowance;\r\n newRecord.IsNew = true;\r\n newRecord.IsNewRecord = newRelation.IsNewRecord;\r\n\r\n const isActionsScreen = this.GetForm().GetScreen().GetEntityName() === this._actionGlobal;\r\n\r\n if (isActionsScreen && !this._updateDataModel.ActionSubjectRecord && model.EntityName !== 'SYS_USERS') {\r\n this._updateDataModel.ActionSubjectRecord = new ActionSubjectRecordModel(model.EntityId, recordId);\r\n new Notifier().Success(NOTIFICATIONS.REFERENCE_WAS_SET);\r\n }\r\n\r\n if (model.EntityName === 'SYS_USERS' && this._dataModel().UserRelation().SingleMode) {\r\n if (newRecord.SharingReady) {\r\n newRecord.Level -= SECURITY_LEVELS.SHARING_READY;\r\n }\r\n\r\n newRecord.Level += SECURITY_LEVELS.SHARED;\r\n }\r\n\r\n this._updateDataModel.AddNewRelation(this.GetControlId(), this._subjectRecordId, model.EntityId, newRecord);\r\n\r\n model.Records.push(newRecord);\r\n this._dataModel.valueHasMutated();\r\n\r\n if (model.EntityName === SYSTEM_TABLE_NAMES.SYS_USERS) {\r\n this._updateDataModel.ChangeUserLevel(model.EntityId, newRecord.Id, newRecord.Level);\r\n }\r\n\r\n if (isRecordFirst && model.EntityName !== SYSTEM_TABLE_NAMES.SYS_USERS) {\r\n this.ChangeRelation(newRecord, model);\r\n }\r\n\r\n this.AutoLink(model.AutoLinks, newRecord.Id);\r\n\r\n if (newRelation.HasCustomFields && openLinkEditor) {\r\n this.EditRecord(model, newRecord, this._linkTypes);\r\n }\r\n\r\n if(newRecord.IsMain()){\r\n if (this._form) {\r\n\r\n let field = _.find(this.Fields, f=> f.EntityId === model.EntityId);\r\n if(field){\r\n this.UpdateVariable({ Field: this.GetPrimaryKeyField(field), ControlType: CONTROL_TYPES.LinkList }, newRecord.Id);\r\n } \r\n } \r\n }\r\n\r\n\r\n return newRecord.Guid;\r\n }\r\n\r\n UpdateCustomDataByGuid(guid: string, fieldValue: { FieldId: number, FieldValue: string }[]) {\r\n let linkEditorChanges = this._updateDataModel.LinkEditorChanges.find(link => link.Guid === guid);\r\n\r\n if (!linkEditorChanges) {\r\n const link = this.FindLink(guid);\r\n if (!link) {\r\n return;\r\n }\r\n\r\n const dataModel = new LinkEditorDataModel();\r\n dataModel.EntityId = link.EntityId;\r\n dataModel.RecordId = link.Link.Id;\r\n\r\n linkEditorChanges = new EditLinkDataModel(dataModel, guid);\r\n this._updateDataModel.LinkEditorChanges.push(linkEditorChanges);\r\n }\r\n\r\n for (const value of fieldValue) {\r\n let existingValue = linkEditorChanges.FieldValues.find(v => v.FieldId === value.FieldId);\r\n\r\n if (!existingValue) {\r\n linkEditorChanges.FieldValues.push({FieldId: value.FieldId, FieldValue: ['', value.FieldValue]});\r\n continue;\r\n }\r\n\r\n existingValue.FieldValue = ['', value.FieldValue];\r\n }\r\n }\r\n\r\n GetRelations() {\r\n var searchByRelations = [];\r\n _.each(this._dataModel().Entities(), entity => {\r\n _.each(entity.Records(), record => {\r\n if (record.IsNew) {\r\n searchByRelations.push({EntityId: entity.EntityId, RecordId: record.Id, IsMain: record.IsMain()});\r\n }\r\n });\r\n\r\n });\r\n\r\n return searchByRelations;\r\n }\r\n\r\n LinkRecord(data, model: EntityRelationsViewModel, event) {\r\n event.stopPropagation();\r\n let firstSearchByMainRelations = true;\r\n let firstSearchByRelations = true;\r\n\r\n let isBulkBarcodeScanning = false;\r\n this._searchScreen = new SearchScreen({\r\n EntityId: model.EntityId,\r\n SearchTerm: '',\r\n Sharing: data.EntityName === SYSTEM_TABLE_NAMES.SYS_USERS,\r\n SubjectEntityId: this.GetForm().GetScreen().GetEntityId(),\r\n SubjectTypeId: this.GetForm().GetScreen().GetTableTypeId(),\r\n SubjectRecordId: this.GetForm().GetScreen().GetRecordId(),\r\n SearchByRelations: this.GetRelations(),\r\n SearchByMainRelationType: SearchByMainRelationTypes.ByMainRelations,\r\n EnableBulkScan: true,\r\n MultiSelectMode: true\r\n });\r\n\r\n this._searchScreen.On('NEW_RECORD', this, () => {\r\n const selfRelation = this.GetForm().GetScreen().GetEntityId() === model.EntityId;\r\n const typeScreen = new TypeScreen(\r\n model.EntityId,\r\n selfRelation ? this.GetForm().GetScreen().GetTableTypeId() : 0,\r\n false);\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(model.EntityId, typeId, kindId, exampleRecordId);\r\n this.One('NEW_RECORD_SAVED', this, eventArgs => {\r\n this.LinkSelectedRecord(model, [eventArgs.data.RecordId], true);\r\n this._searchScreen.Close();\r\n });\r\n });\r\n\r\n typeScreen.Show();\r\n });\r\n\r\n this._searchScreen.On(\"RECORDS_NOT_FOUND\", this, (eventArgs) => {\r\n if (firstSearchByMainRelations && this._searchScreen.GetFilterByRelationType() === SearchByMainRelationTypes.ByMainRelations) {\r\n Notifier.Warning(NOTIFICATIONS.NO_DATA_FOUND_WITH_APPLIED_FILTER);\r\n this._searchScreen.SetFilterByRelationType(SearchByMainRelationTypes.Off);\r\n firstSearchByMainRelations = false;\r\n } else if (firstSearchByRelations && this._searchScreen.GetFilterByRelationType() === SearchByMainRelationTypes.ByRelations) {\r\n Notifier.Warning(NOTIFICATIONS.NO_DATA_FOUND_WITH_APPLIED_FILTER);\r\n this._searchScreen.SetFilterByRelationType(SearchByMainRelationTypes.Off);\r\n firstSearchByRelations = false;\r\n }\r\n });\r\n this._searchScreen.On(\"RECORD_SELECTED\", this, (eventArgs) => this.LinkSelectedRecord(model, [eventArgs.data.RecordId], undefined, isBulkBarcodeScanning));\r\n this._searchScreen.On(\"RECORDS_SELECTED\",\r\n this,\r\n (eventArgs) => this.LinkSelectedRecord(model, eventArgs.data.Ids, undefined,isBulkBarcodeScanning)\r\n );\r\n\r\n this._searchScreen.On(\"BULK_BARCODE_SCAN_STARTED\", this, () => {\r\n isBulkBarcodeScanning = true;\r\n\r\n this._searchScreen.OpenBarcodeScannerForBulkScan();\r\n });\r\n this._searchScreen.On(\"BULK_BARCODE_SCAN_STOPPED\", this, () => {\r\n isBulkBarcodeScanning = false;\r\n });\r\n this._searchScreen.Show();\r\n }\r\n\r\n private LinkSelectedRecord(model: EntityRelationsViewModel, recordIds: number[], isNewRecord: boolean = false, isBulkBarcodeScanning: boolean = false) {\r\n let isLinkingAllowed = true;\r\n let differenceIds = [];\r\n if (!model.HasSequence) {\r\n differenceIds = _.difference(recordIds, _.map(model.Records(), (item) => item.Id));\r\n isLinkingAllowed = differenceIds.length > 0;\r\n } else {\r\n differenceIds = recordIds;\r\n }\r\n\r\n if (model.EntityName === 'SYS_USERS' && this._dataModel().UserRelation().SingleMode) {\r\n isLinkingAllowed = true;\r\n }\r\n\r\n if (isLinkingAllowed) {\r\n this.AfterSelectRecord(differenceIds, model, isNewRecord, isBulkBarcodeScanning)\r\n .always(() => {\r\n if (isBulkBarcodeScanning) {\r\n this._searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n });\r\n } else {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(NOTIFICATIONS.RECORD_ALREADY_EXISTS);\r\n\r\n if (isBulkBarcodeScanning) {\r\n this._searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n }\r\n }\r\n\r\n AfterSelectRecord(recordIds: number[], model: EntityRelationsViewModel, isNewRecord: boolean = false, isBulkBarcodeScanning: boolean = false) {\r\n BlockUI.Block();\r\n return NewRelationStore.GetNewRelation({\r\n ControlId: this.GetControlId(),\r\n EntityId: this.GetForm().GetScreen().GetEntityId(),\r\n RecordId: this._subjectRecordId,\r\n RelatedEntityId: model.EntityId,\r\n RelatedRecordIds: recordIds,\r\n\t\t\tSubjectRecordId: this._subjectRecordId\r\n })\r\n .then(newRelations => {\r\n let openLinkEditor = !isBulkBarcodeScanning && newRelations.length === 1;\r\n _.each(newRelations, (newRelation) => {\r\n newRelation.IsNewRecord = isNewRecord;\r\n\r\n if (model.EntityName === 'SYS_USERS') {\r\n if (this._dataModel().UserRelation().SingleMode) {\r\n const sharedUsers = _.filter(this._dataModel().UserRelation().Records(), user => user.Shared);\r\n this.MakeSharingReady(model, sharedUsers);\r\n } else {\r\n newRelation.Level = SECURITY_LEVELS.SHARED;\r\n }\r\n\r\n this._dataModel.valueHasMutated();\r\n }\r\n\r\n const isValid: boolean = model._isValidEntity();\r\n if (!isValid){\r\n model._isValidEntity(true);\r\n }\r\n\r\n this.AddRecord(newRelation.Id, model, newRelation, openLinkEditor);\r\n })\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n new Notifier($(this._el)).Failed(error.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n AutoLink(autoLinks: Array<AutolinkModel>, linkedRecordId: number) {\r\n _.each(autoLinks,\r\n entityToEntity => {\r\n var currentEntityFromList = _.find(this._dataModel().Entities(), entity => entity.EntityId === entityToEntity.RightEntityId);\r\n\r\n if (currentEntityFromList) {\r\n BlockUI.Block();\r\n NewRelationStore\r\n .GetNewAutolinkRelation({\r\n NewRelationRequestItem: {\r\n ControlId: this.GetControlId(),\r\n EntityId: this.GetForm().GetScreen().GetEntityId(),\r\n RecordId: this._subjectRecordId,\r\n RelatedEntityId: currentEntityFromList.EntityId,\r\n\t\t\t\t\t\t\t\tRelatedRecordIds: [-1],\r\n\t\t\t\t\t\t\t\tSubjectRecordId: this._subjectRecordId\r\n },\r\n RecordId: linkedRecordId,\r\n LeftEntityId: entityToEntity.LeftEntityId,\r\n RightEntityId: entityToEntity.RightEntityId\r\n })\r\n\r\n .then(newRelation => {\r\n if (newRelation) {\r\n\r\n if (_.filter(currentEntityFromList.Records(),\r\n item => item.Id === newRelation.Id).length > 0) {\r\n return;\r\n }\r\n\r\n let isRecordFirst = currentEntityFromList.Records().length < 1;\r\n let isMain = newRelation.IsMain || isRecordFirst;\r\n newRelation.Level = SECURITY_LEVELS.SHARED;\r\n\r\n var newRecord = new RelationRecordViewModel();\r\n newRecord.Id = newRelation.Id;\r\n newRecord.Name = newRelation.Name;\r\n newRecord.NameTranslation = newRelation.NameTranslation;\r\n newRecord.IsMain(isMain);\r\n newRecord.Level = newRelation.Level;\r\n newRecord.TypeName = newRelation.TypeName;\r\n newRecord.TypeTranslatedName = newRelation.TypeTranslatedName;\r\n\r\n this._updateDataModel\r\n .AddNewRelation(this.GetControlId(), this._subjectRecordId, currentEntityFromList.EntityId, newRecord);\r\n\r\n currentEntityFromList.Records.push(newRecord);\r\n this.AddRelatedRecord(entityToEntity.LeftEntityId, newRecord.Id, entityToEntity.RightEntityId, newRecord.Name, newRecord.NameTranslation, linkedRecordId);\r\n this._dataModel.valueHasMutated();\r\n\r\n if (currentEntityFromList.EntityName === SYSTEM_TABLE_NAMES.SYS_USERS) {\r\n this._updateDataModel.ChangeUserLevel(currentEntityFromList.EntityId, newRecord.Id, newRecord.Level);\r\n }\r\n\r\n if (isRecordFirst) {\r\n this.ChangeRelation(newRecord, currentEntityFromList);\r\n }\r\n\r\n if (currentEntityFromList.EntityName && currentEntityFromList.EntityName.toUpperCase() === 'COMPANIES') {\r\n this.ChangeMainCompany();\r\n }\r\n\r\n this.AutoLink(currentEntityFromList.AutoLinks ,newRelation.Id);\r\n new Notifier().Success(NOTIFICATIONS.RECORD_WAS_AUTOLINKED);\r\n }\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n\r\n }\r\n }\r\n );\r\n }\r\n\r\n private FindLink(guid: string) {\r\n let link = this._dataModel().UserRelation().Records().find(r => r.Guid === guid);\r\n\r\n if (link) {\r\n return {\r\n Link: link,\r\n EntityId: this._dataModel().UserRelation().EntityId\r\n };\r\n }\r\n\r\n for (const entity of this._dataModel().Entities()) {\r\n link = entity.Records().find(r => r.Guid === guid);\r\n if (link) {\r\n return {\r\n Link: link,\r\n EntityId: entity.EntityId\r\n };\r\n }\r\n }\r\n }\r\n\r\n private async NewRecord(entityId: number, tableTypeId: number, kindId: number, exampleRecordId: number) {\r\n BlockUI.Block();\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n ParentRecordId: this.GetForm().GetScreen().GetRecordId()\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = this.GetForm().GetScreen().GetRecordId();\r\n editScreen.UseLinking = true;\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n UserVarsManager.Instance.AddRecent(entityId, eventArgs.data.RecordId, tableTypeId);\r\n this.Trigger('NEW_RECORD_SAVED', eventArgs.data);\r\n });\r\n\r\n screen.ShowInModal();\r\n })\r\n .fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n private AddRelatedRecord(destinationEntityId: number, recordId: number, sourceEntityId: number, name: string, nameTranslation: string, linkedRecord: number) {\r\n let destinationEntity = _.find(this._dataModel().Entities(), entity => entity.EntityId === destinationEntityId);\r\n let relatedRecord = AutoLinkedRecordModel.Create(recordId, sourceEntityId, name, nameTranslation, linkedRecord);\r\n destinationEntity.AutoLinkedRecords.push(relatedRecord);\r\n }\r\n\r\n ChangeRelation(\r\n relationRecord: RelationRecordViewModel,\r\n entityRelations: EntityRelationsViewModel,\r\n needFindOldId: boolean = true\r\n ) {\r\n let newRelations = _.filter(this._updateDataModel.NewRelations, (item) => {\r\n return item.RelatedEntityId === entityRelations.EntityId\r\n });\r\n\r\n const isValid: boolean = entityRelations._isValidEntity();\r\n if (!isValid) {\r\n entityRelations._isValidEntity(true);\r\n }\r\n\r\n if (newRelations) {\r\n _.each(newRelations,\r\n item => {\r\n item.IsMain = item.Guid === relationRecord.Guid;\r\n });\r\n }\r\n\r\n let entity = _.find(this._serverDataModel.Entities, (x) => x.EntityId === entityRelations.EntityId);\r\n let oldRecord = _.find(entity.Records, (x) => {\r\n return x.IsMain;\r\n });\r\n\r\n let oldId = !needFindOldId ? -1 : oldRecord ? oldRecord.Id : -1;\r\n let oldKSeq = !needFindOldId ? -1 : oldRecord ? oldRecord.KSeq : -1;\r\n this._updateDataModel.ChangeRelation(entityRelations.EntityId, oldId, relationRecord.Id, relationRecord.KSeq, relationRecord.Guid, oldKSeq);\r\n\r\n _.each(entityRelations.Records(),\r\n item => {\r\n item.IsMain(item.Guid === relationRecord.Guid);\r\n });\r\n\r\n if(relationRecord.IsMain()){\r\n let field = _.find(this.Fields, f=> f.EntityId === entity.EntityId);\r\n if(relationRecord.IsMain && field){\r\n this.UpdateVariable({ Field: this.GetPrimaryKeyField(field), ControlType: CONTROL_TYPES.LinkList }, relationRecord.Id);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n ChangeMainCompany() {\r\n const companiesModel = _.find(this._dataModel().Entities(), entity => entity.EntityName && entity.EntityName.toUpperCase() === 'COMPANIES');\r\n if (!companiesModel || !this.LicenseName) {\r\n return;\r\n }\r\n\r\n const mainCompany = _.find(companiesModel.Records(), record => record.IsMain());\r\n const isMainCompanySet = !!mainCompany;\r\n const isMainCompanyLicense = mainCompany && mainCompany.Name && mainCompany.Name.toUpperCase() === this.LicenseName.toUpperCase();\r\n\r\n const nonLicenseCompanies = _.filter(companiesModel.Records(), record => record.Name && record.Name.toUpperCase() !== this.LicenseName.toUpperCase());\r\n\r\n if ((isMainCompanySet && !isMainCompanyLicense) || !_.any(nonLicenseCompanies)) {\r\n return;\r\n }\r\n\r\n const firstNonLicenseCompany = _.first(nonLicenseCompanies);\r\n this.ChangeRelation(firstNonLicenseCompany, companiesModel);\r\n }\r\n\r\n UnLinkRecord(relationRecord: RelationRecordViewModel, entityRelations: EntityRelationsViewModel, displayDialog: boolean = true) {\r\n if (displayDialog) {\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.UNLINK_RECORD,\r\n Type: ConfirmationTypes.Question\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => this.UnLink(relationRecord, entityRelations));\r\n this.On('LinkListDispose', this, () => confirmationDialog.Close());\r\n confirmationDialog.Show();\r\n } else {\r\n this.UnLink(relationRecord, entityRelations)\r\n }\r\n }\r\n\r\n UnLinkUser(relationRecord: RelationRecordViewModel, entityRelations: EntityRelationsViewModel, displayDialog: boolean = true) {\r\n const anyUserExist = _.find(entityRelations.Records(), relation => relation.TypeName.toUpperCase() === \"USER\");\r\n const leftRelations = _.without(entityRelations.Records(), relationRecord);\r\n const anyUserLeft = !!_.find(leftRelations, relation => relation.TypeName.toUpperCase() === \"USER\");\r\n\r\n if (this._dataModel().UserRelation().SingleMode && relationRecord.IsRecordOwner) {\r\n relationRecord.Level ^= SECURITY_LEVELS.SHARED;\r\n relationRecord.Level ^= SECURITY_LEVELS.SHARING_READY;\r\n\r\n this._updateDataModel.ChangeUserLevel(entityRelations.EntityId, relationRecord.Id, relationRecord.Level);\r\n entityRelations.Records.valueHasMutated();\r\n return;\r\n }\r\n\r\n if (anyUserExist && !anyUserLeft) {\r\n new Notifier($(this._el)).Warning(NOTIFICATIONS.USER_SHOULD_BE_LINKED);\r\n return;\r\n }\r\n if (displayDialog) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.UNLINK_USER,\r\n Type: ConfirmationTypes.Question\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => this.UnLink(relationRecord, entityRelations));\r\n confirmationDialog.Show();\r\n } else {\r\n this.UnLink(relationRecord, entityRelations)\r\n }\r\n }\r\n\r\n EnablePlanner() {\r\n const recordOwner = this._dataModel().UserRelation().Records().find(r => r.IsRecordOwner);\r\n\r\n if (recordOwner.PlanningAllowed && !recordOwner.Planner) {\r\n this.TogglePlanner(recordOwner);\r\n }\r\n }\r\n\r\n TogglePlanner(relationRecord: RelationRecordViewModel) {\r\n if (!relationRecord.PlanningAllowed) return;\r\n\r\n relationRecord.Level ^= SECURITY_LEVELS.PLANNER;\r\n\r\n const entityId = this._dataModel().UserRelation().EntityId;\r\n this._updateDataModel.ChangeUserLevel(entityId, relationRecord.Id, relationRecord.Level);\r\n\r\n this._dataModel.valueHasMutated();\r\n }\r\n\r\n ToggleSharing(relationRecord: RelationRecordViewModel, entityRelations: EntityRelationsViewModel) {\r\n let entity: EntityRelations = _.find(this._serverDataModel.Entities, e => e.EntityId === entityRelations.EntityId);\r\n\r\n relationRecord.Level ^= SECURITY_LEVELS.SHARED;\r\n relationRecord.Level ^= SECURITY_LEVELS.SHARING_READY;\r\n\r\n this._updateDataModel.ChangeUserLevel(entity.EntityId, relationRecord.Id, relationRecord.Level);\r\n this._dataModel.valueHasMutated();\r\n\r\n return true;\r\n }\r\n\r\n MakeSharingReady(entity: EntityRelationsViewModel, users: RelationRecordViewModel[]) {\r\n users.forEach(user => {\r\n if (user.Shared) {\r\n user.Level ^= SECURITY_LEVELS.SHARED;\r\n user.Level ^= SECURITY_LEVELS.SHARING_READY;\r\n\r\n this._updateDataModel.ChangeUserLevel(entity.EntityId, user.Id, user.Level);\r\n }\r\n })\r\n }\r\n\r\n NavigateByLink(record: RelationRecordViewModel, entityRelations: EntityRelationsViewModel) {\r\n const data = {\r\n EntityId: entityRelations.EntityId,\r\n RecordId: record.Id,\r\n RecordTypeId: record.TypeId,\r\n IsOpenInModal: true,\r\n Owner: this._form.GetScreen()\r\n };\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n }\r\n\r\n OpenUserAssignment(userEntityRelations: UserEntityRelationsViewModel) {\r\n this._searchScreen = new SearchScreen({\r\n EntityId: userEntityRelations.EntityId,\r\n SearchTerm: '',\r\n Sharing: true,\r\n SubjectEntityId: this.GetForm().GetScreen().GetEntityId(),\r\n SubjectTypeId: this.GetForm().GetScreen().GetTableTypeId(),\r\n SubjectRecordId: this.GetForm().GetScreen().GetRecordId(),\r\n SearchByRelations: this.GetRelations()\r\n });\r\n\r\n this._searchScreen.On(\"RECORD_SELECTED\", this, (eventArgs) => this.LinkSelectedRecord(userEntityRelations, [eventArgs.data.RecordId]));\r\n this._searchScreen.Show();\r\n }\r\n\r\n CollapsingLinks(number, data, event) {\r\n if (data.Records().length > 7) {\r\n $(event.currentTarget).toggleClass('open');\r\n $(event.currentTarget).next('.entity-records').toggleClass('open');\r\n }\r\n\r\n if (number) {\r\n if (_.contains(this._openNumbers, number)) {\r\n this._openNumbers = _.without(this._openNumbers, number)\r\n } else {\r\n this._openNumbers.push(number);\r\n }\r\n }\r\n }\r\n\r\n IsOpen(number): boolean {\r\n return number && _.contains(this._openNumbers, number);\r\n }\r\n\r\n Deserialize() {\r\n return Serialize(this._updateDataModel);\r\n }\r\n\r\n IsValid() {\r\n const linkRequiredFields = _.filter(this.GetModel().Fields, (field) => field.LinkRequired);\r\n const linkRequiredEntitiesIds = _.map(linkRequiredFields, (field) => field.EntityId);\r\n\r\n if(linkRequiredEntitiesIds.length > 0){\r\n let errorEntities = [];\r\n _.each(this._dataModel().Entities(), (entity) =>{\r\n if(_.contains(linkRequiredEntitiesIds, entity.EntityId) && entity.Records().length == 0){\r\n entity._isValidEntity(false);\r\n errorEntities.push(entity.EntityTranslatedName || entity.EntityName);\r\n }\r\n });\r\n\r\n if(errorEntities.length > 0){\r\n this.GetForm().ValidateExpandSubForm();\r\n new Notifier().Failed(NOTIFICATIONS.LINKS_TO_ENTITIES_MUST_BE_CREATED.replace('Entities', errorEntities.join(', ')));\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n UpdateRecordOwner(user: UserModel) {\r\n const userRelation = this._dataModel().UserRelation() as EntityRelationsViewModel;\r\n if (userRelation) {\r\n const recordOwner = userRelation.Records().find(u => u.IsRecordOwner);\r\n if (recordOwner.Id === user.Id) return;\r\n\r\n let recordOwnerLevel = SECURITY_LEVELS.NEW_OWNER;\r\n\r\n if (recordOwner) {\r\n if (recordOwner.Planner) {\r\n recordOwner.Level -= SECURITY_LEVELS.PLANNER;\r\n recordOwnerLevel += SECURITY_LEVELS.PLANNER;\r\n }\r\n\r\n recordOwner.IsRecordOwner = false;\r\n recordOwner.Level -= SECURITY_LEVELS.OWNER;\r\n\r\n this._updateDataModel.ChangeUserLevel(userRelation.EntityId, recordOwner.Id, recordOwner.Level);\r\n }\r\n\r\n const newRecordOwner = userRelation.Records().find(u => u.Id == user.Id);\r\n\r\n if (newRecordOwner) {\r\n newRecordOwner.IsRecordOwner = true;\r\n newRecordOwner.Level = recordOwnerLevel;\r\n newRecordOwner.UserAllowance = user.UserAllowance;\r\n this._dataModel.valueHasMutated();\r\n\r\n this._updateDataModel.ChangeUserLevel(userRelation.EntityId, newRecordOwner.Id, newRecordOwner.Level);\r\n return;\r\n }\r\n\r\n const newRecordOwnerRelation = new NewRelationModel();\r\n newRecordOwnerRelation.Name = user.Name;\r\n newRecordOwnerRelation.Id = user.Id;\r\n newRecordOwnerRelation.TypeName = 'User';\r\n newRecordOwnerRelation.IsRecordOwner = true;\r\n newRecordOwnerRelation.Level = recordOwnerLevel;\r\n newRecordOwnerRelation.UserAllowance = user.UserAllowance;\r\n\r\n this.AddRecord(user.Id, userRelation, newRecordOwnerRelation);\r\n }\r\n }\r\n\r\n @enumerable private get IsNewRecord(): boolean {\r\n return this._subjectRecordId === 0;\r\n }\r\n\r\n @enumerable get SubjectRecordId() {\r\n return this._subjectRecordId;\r\n }\r\n\r\n private AddRecordOwner(recordSpecs: RecordSpecsModel) {\r\n let userManager = UserManager.Instance,\r\n userId = userManager.CurrentUser.Id,\r\n userName = userManager.CurrentUser.Name;\r\n\r\n BlockUI.Block();\r\n return userManager.GetUserAllowance()\r\n .then((userAllowance: number) => {\r\n let relations = this._dataModel();\r\n let userRelation: EntityRelationsViewModel = relations.UserRelation();\r\n\r\n\t\t\t\tif (userRelation) {\r\n\t\t\t\t\tlet securityLevel = SECURITY_LEVELS.NEW_OWNER;\r\n\r\n\t\t\t\t\tlet exampleOwner = _.find(userRelation.Records(), (record: RelationRecordViewModel) => record.IsRecordOwner);\r\n\t\t\t\t\tif (exampleOwner) {\r\n\t\t\t\t\t\tsecurityLevel = exampleOwner.Level;\r\n\t\t\t\t\t}\r\n\r\n let currentUserRelation = new RelationRecordViewModel({\r\n Id: userId,\r\n Name: userName,\r\n NameTranslation: null,\r\n\t\t\t\t\t\tLevel: securityLevel,\r\n IsMain: true,\r\n TypeName: \"User\",\r\n TypeTranslatedName: \"User\",\r\n TypeId: 0,\r\n IsRecordOwner: true,\r\n UserAllowance: userAllowance,\r\n KSeq: 0\r\n });\r\n\r\n let userRelations = userRelation.Records();\r\n\r\n if (recordSpecs.IsExample || exampleOwner) {\r\n\r\n let currentUser = _.find(userRelation.Records(),\r\n (record: RelationRecordViewModel) => record.Id === currentUserRelation.Id);\r\n\r\n userRelations = _.without(userRelation.Records(), exampleOwner, currentUser);\r\n }\r\n userRelations = userRelations.filter(item => item.Id !== userId);\r\n userRelations.splice(0, 0, currentUserRelation);\r\n userRelations.sort((relation) => {\r\n return relation.IsRecordOwner ? -1 : 1;\r\n });\r\n\r\n userRelation.Records(userRelations);\r\n\r\n userRelations.forEach(userLink => {\r\n this._updateDataModel.AddNewRelation(this.GetControlId(), this._subjectRecordId, userRelation.EntityId, userLink);\r\n this._updateDataModel.ChangeUserLevel(userRelation.EntityId, userLink.Id, userLink.Level);\r\n });\r\n this._dataModel(relations);\r\n }\r\n })\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private RemoveRelatedRecord(recordId: number, entityId: number) {\r\n _.each(this._dataModel().Entities(),\r\n entity => entity.AutoLinkedRecords.remove(el => el.RecordId === recordId && el.EntityId === entityId));\r\n }\r\n\r\n\r\n private async GetRecordData(entityRelations: EntityRelationsViewModel, relationRecord: RelationRecordViewModel, linkTypes, isUnlinkedRelationNew) {\r\n\r\n const linkEditor = (await import('Core/Screens/Common/LinkEditor/LinkEditor')).LinkEditor;\r\n\r\n let subjectEntityId = this._form.GetScreen().GetEntityId();\r\n let subjecRecordId = this._form.GetScreen().GetRecordId();\r\n let subjectTypeId = this._form.GetScreen().GetTableTypeId();\r\n let subjectKindId = this._form.GetScreen().GetKindId();\r\n\r\n let isNew = relationRecord.IsNew;\r\n let changedData = _.find(this._updateDataModel.LinkEditorChanges, item =>\r\n item.EntityId === entityRelations.EntityId && item.RecordId === relationRecord.Id && item.Guid === relationRecord.Guid);\r\n\r\n let relationModel = {\r\n MainEntityId: subjectEntityId,\r\n MainRecordId: subjecRecordId,\r\n MainRecordTypeId: subjectTypeId,\r\n MainRecordKindId: subjectKindId,\r\n RelatedEntityId: entityRelations.EntityId,\r\n RelatedRecordId: relationRecord.Id,\r\n KSeq: relationRecord.KSeq,\r\n RelationEntityName: entityRelations.EntityName\r\n };\r\n\r\n let selectedRecord = null;\r\n let relationTypeFieldSelectedValue = null;\r\n let relationTypeField: any = null;\r\n if (isUnlinkedRelationNew) {\r\n relationTypeField = _.filter((isUnlinkedRelationNew.FieldValues as any), (field: any) => {\r\n return field.FieldValue[0].split('.')[1] === RELATION_TYPE_VALUE_FIELD;\r\n })[0];\r\n const relationTypeFieldSelectedValue = relationTypeField && relationTypeField.FieldValue[1] || null;\r\n selectedRecord = relationTypeField ? relationTypeField.FieldValue[1] : null;\r\n }\r\n\r\n var deferredResult = P.defer();\r\n if (!selectedRecord && entityRelations.HasFields) {\r\n BlockUI.Block();\r\n\r\n LinkEditorStore.GetData({\r\n MainEntityId: relationModel.MainEntityId,\r\n MainRecordId: relationModel.MainRecordId,\r\n MainRecordTypeId: relationModel.MainRecordTypeId,\r\n MainRecordKindId: relationModel.MainRecordKindId,\r\n RelatedEntityId: relationModel.RelatedEntityId,\r\n RelatedRecordId: relationModel.RelatedRecordId,\r\n Kseq: relationModel.KSeq,\r\n IsNew: isNew\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(model => {\r\n const FRelationFieldModel = _.where(model.Fields, {\r\n Name: RELATION_TYPE_VALUE_FIELD\r\n })[0];\r\n\r\n this.GetLinkTypes(linkEditor, relationModel, FRelationFieldModel, model, changedData, null);\r\n\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n } else {\r\n this.GetLinkTypes(linkEditor, relationModel, relationTypeField, null, changedData, selectedRecord);\r\n }\r\n }\r\n\r\n private GetLinkTypes(linkEditor, relationModel, FRelationFieldModel, model, changedData, selectedRecord) {\r\n linkEditor.GetRelationTypesData({\r\n MainEntityId: relationModel.MainEntityId,\r\n MainRecordId: relationModel.MainRecordId,\r\n RelatedEntityId: relationModel.RelatedEntityId,\r\n RelatedRecordId: relationModel.RelatedRecordId,\r\n SequenceId: relationModel.KSeq\r\n }, FRelationFieldModel,\r\n (relationTypes, relationTypeFieldData) => {\r\n let selectedRecordValue = selectedRecord || null;\r\n if (!selectedRecordValue && changedData) {\r\n selectedRecordValue = _.filter((changedData.FieldValues as any), (field: any) => {\r\n return field.FieldValue[0].split('.')[1] === RELATION_TYPE_VALUE_FIELD;\r\n })[0];\r\n\r\n selectedRecordValue = selectedRecordValue && selectedRecordValue.FieldValue[1] || null\r\n }\r\n const requiredRelationType: any = _.where(relationTypes, {\r\n RecordId: selectedRecordValue\r\n })[0];\r\n this.UpdateLinkTypesState(relationModel.RelationEntityName, relationModel.RelatedRecordId, requiredRelationType && requiredRelationType.TypeName || null, +1)\r\n }\r\n );\r\n }\r\n\r\n private UnLink(relationRecord: RelationRecordViewModel, entityRelations: EntityRelationsViewModel) {\r\n const isUnlinkedRelationNew = _.where(this._updateDataModel.LinkEditorChanges, {\r\n Guid: relationRecord.Guid\r\n })[0];\r\n\r\n if (isUnlinkedRelationNew) {\r\n this.GetRecordData(entityRelations, relationRecord, this._linkTypes, isUnlinkedRelationNew);\r\n } else {\r\n this.GetRecordData(entityRelations, relationRecord, this._linkTypes, null);\r\n }\r\n\r\n entityRelations.Records(_.without(entityRelations.Records(), relationRecord));\r\n\r\n this._updateDataModel.DeleteRelation({\r\n EntityId: entityRelations.EntityId,\r\n RecordId: relationRecord.Id,\r\n KSeq: relationRecord.KSeq,\r\n IsNew: relationRecord.IsNew,\r\n Guid: relationRecord.Guid\r\n });\r\n\r\n let field = _.find(this.Fields, f=> f.EntityId === entityRelations.EntityId);\r\n\r\n if (relationRecord.IsMain()) {\r\n let firstRecord = _.first(entityRelations.Records());\r\n if (firstRecord) {\r\n this.ChangeRelation(firstRecord, entityRelations, true);\r\n }\r\n \r\n let mainRecordId = firstRecord ? firstRecord.Id : null;\r\n this.UpdateVariable({ Field: this.GetPrimaryKeyField(field), ControlType: CONTROL_TYPES.LinkList }, mainRecordId);\r\n }\r\n\r\n if (this._updateDataModel.ActionSubjectRecord &&\r\n this._updateDataModel.ActionSubjectRecord.EntityId === entityRelations.EntityId &&\r\n this._updateDataModel.ActionSubjectRecord.RecordId === relationRecord.Id) {\r\n\r\n this._updateDataModel.ActionSubjectRecord = null;\r\n new Notifier().Warning(NOTIFICATIONS.REFERENCE_WAS_UNSET);\r\n }\r\n\r\n this._dataModel.valueHasMutated();\r\n this.RemoveRelatedRecord(relationRecord.Id, entityRelations.EntityId);\r\n }\r\n\r\n private CheckRelationTypeInstancing(entityRelations, linkTypes) {\r\n const relatedLinks = _.where(linkTypes, {\r\n EntityId: entityRelations.EntityId\r\n });\r\n return relatedLinks;\r\n }\r\n\r\n async EditRecord(entityRelations: EntityRelationsViewModel, relationRecord: RelationRecordViewModel, linkTypes) {\r\n if (!entityRelations.HasFields) {\r\n return;\r\n }\r\n\r\n const linkEditor = (await import('Core/Screens/Common/LinkEditor/LinkEditor')).LinkEditor;\r\n let subjectEntityId = this._form.GetScreen().GetEntityId();\r\n let subjectRecordId = this._form.GetScreen().GetRecordId();\r\n let subjectTypeId = this._form.GetScreen().GetTableTypeId();\r\n let subjectKindId = this._form.GetScreen().GetKindId();\r\n\r\n let isNew = relationRecord.IsNew;\r\n let data = _.find(this._updateDataModel.LinkEditorChanges, item =>\r\n item.EntityId === entityRelations.EntityId && item.RecordId === relationRecord.Id && item.Guid === relationRecord.Guid);\r\n\r\n let relation = {\r\n MainEntityId: subjectEntityId,\r\n MainRecordId: subjectRecordId,\r\n MainRecordTypeId: subjectTypeId,\r\n MainRecordKindId: subjectKindId,\r\n RelatedEntityId: entityRelations.EntityId,\r\n RelatedRecordId: relationRecord.Id,\r\n RelatedRecordTypeId: relationRecord.TypeId,\r\n KSeq: relationRecord.KSeq\r\n };\r\n\r\n linkEditor.LoadScreen(relation, isNew, data, true, this, true)\r\n .then(screen => {\r\n if (screen !== null) {\r\n let linkEditor = screen;\r\n\r\n linkEditor.On(\"SAVE_DATA\", this, eventArgs => {\r\n\r\n let data = <LinkEditorDataModel>eventArgs.data;\r\n let existsChanges = _.find(this._updateDataModel.LinkEditorChanges, item =>\r\n item.EntityId === data.EntityId && item.RecordId === data.RecordId && item.Guid === relationRecord.Guid);\r\n\r\n\r\n if (existsChanges) {\r\n _.each(data.FieldValues, item => {\r\n let value = _.find(existsChanges.FieldValues, fieldValue => fieldValue.FieldId === item.FieldId);\r\n\r\n if (value) {\r\n value.FieldValue = item.FieldValue;\r\n } else {\r\n existsChanges.FieldValues.push(item);\r\n }\r\n });\r\n } else {\r\n\r\n let editRelationData = new EditLinkDataModel(data, relationRecord.Guid);\r\n\r\n this._updateDataModel.LinkEditorChanges.push(editRelationData);\r\n\r\n const targetedEntity = _.where(this._linkTypesInstancesLeft, {\r\n EntityId: relation.RelatedEntityId\r\n })[0];\r\n if (targetedEntity) {\r\n const existsRecords = _.where(targetedEntity.Records, {\r\n RecordId: relationRecord.Id\r\n });\r\n\r\n\r\n if (existsRecords.length === 0) {\r\n targetedEntity.Records.push({\r\n RecordId: relationRecord.Id,\r\n LinkTypes: _.extend([], targetedEntity.LinkTypes)\r\n });\r\n }\r\n }\r\n\r\n }\r\n });\r\n\r\n this.On('LinkListDispose', this, () => linkEditor.Close());\r\n } else {\r\n new Notifier().Warning(LABELS.TABLE_TEXT_NON_HAS_FIELDS);\r\n }\r\n })\r\n .fail(err => new Notifier($(this._el)).Warning(err.message));\r\n }\r\n\r\n ClickLinkRequired(field: AttachedFieldModel) {\r\n field.LinkRequiredObservable(field.LinkRequiredObservable());\r\n this.ControlModify();\r\n }\r\n\r\n Dispose() {\r\n super.Dispose();\r\n this.Trigger('LinkListDispose');\r\n if (this._searchScreen) {\r\n this._searchScreen.Close();\r\n }\r\n }\r\n}","// Module\nvar code = \"<label> <div class=\\\"ToolBarPreview\\\"> <i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </div> </label>\";\n// Exports\nexport default code;","// Module\nvar code = \"<fieldset class=\\\"group-control grid\\\"> <legend class=\\\"group-control-label\\\"> <!-- ko text: Name --><!-- /ko --> </legend> <div data-bind=\\\"dragula: { data: DesignFields, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropEntityIntoLinkList.bind($root) },\\r\\n visible: !LinkListAutoProperty || !_isAuoProperties()\\\" class=\\\"edit-linklist-root dropentity-container\\\"> <div class=\\\"drop-entity draggable-entity clearfix\\\"> <!--ko if: EntityName !== 'SYS_USERS' --> <input data-bind=\\\"checked: LinkRequiredObservable,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: $parent.ClickLinkRequired.bind($parent, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { id: Name+Id, name: Name+Id }\\\" class=\\\"custom-checkbox\\\" type=\\\"checkbox\\\"/> <label data-bind=\\\"attr: {for: Name+Id}, preventBubble: ['click'], tooltip: { content: $parent._labels.LINKED_RECORD_REQUIRED }\\\" class=\\\"label-custom-checkbox\\\"></label> <!--/ko--> <!--ko with: $parent.GetDesignIcon($data) --> <!-- ko template: { name: GetTemplateName.bind($rawData) } --><!-- /ko --> <!--/ko--> <span data-bind=\\\"text: $parent.GetDisplayedName($data)\\\" class=\\\"drop-entity-name transition\\\"></span> <!--ko if: EntityName !== 'SYS_USERS' --> <div class=\\\"close-wrapper\\\"> <span data-bind=\\\"click: $root.RemoveField.bind($root, $data, $parent), preventBubble: ['click']\\\" class=\\\"close remove-control\\\" title=\\\"Remove control\\\"></span> </div> <!--/ko--> </div> </div> <!--ko if: LinkListAutoProperty || _isAuoProperties() --> <div class=\\\"edit-linklist-root dropentity-container\\\"> <div class=\\\"drop-entity draggable-entity clearfix\\\"> <span class=\\\"text-left additional-icon custom-color-option fa-stack fa fa-3x fa-cogs\\\"></span> <span class=\\\"drop-entity-name transition\\\">AUTO</span> </div> </div> <!--/ko--> </fieldset>\";\n// Exports\nexport default code;","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\n\r\nimport { SecurityDataModel } from 'Core/Components/SecurityEditor/Form/Models/SecurityDataModel';\r\n\r\nexport class NewRelationModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.Id = null;\r\n\t\tthis.IsMain = false;\r\n\t\tthis.TypeName = null;\r\n this.TypeTranslatedName = null;\r\n this.Name = null;\r\n this.NameTranslation = null;\r\n\t\tthis.Level = null;\r\n\t\tthis.LinkFieldId = null;\r\n\t\tthis.IsNewLink = false;\r\n\t\tthis.IsRecordOwner = false;\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tIsMain: boolean;\r\n\r\n\t@deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n TypeTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tLevel: number;\r\n\r\n\t@deserialize\r\n\tLinkFieldId: number;\r\n\r\n\t@deserialize\r\n\tIsNewLink: boolean;\r\n\r\n\t@deserialize\r\n\tHasCustomFields: boolean;\r\n\r\n\t@deserialize\r\n\tIsRecordOwner: boolean;\r\n\r\n\t@deserialize\r\n\tIsNewRecord: boolean;\r\n\r\n\tUserAllowance: number;\r\n}","import * as _ from 'underscore';\r\nimport { serialize, serializeAs } from 'libs/cerialize';\r\n\r\nimport {RelationshipTypes} from \"Core/Controls/Grid/BaseGrid/Enums/RelationshipTypes\";\r\n\r\nimport { DataModel as LinkEditorDataModel } from 'Core/Screens/Common/LinkEditor/Models/DataModel'\r\nimport { RelationRecordViewModel } from './LinkListRelationsViewModel';\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\n\r\nexport class NewRelationModel {\r\n\tconstructor(\r\n\t\tcontrolId: number,\r\n\t\trecordId: number,\r\n\t\trelatedEntityId: number,\r\n\t\trelatedRecordId: number,\r\n\t\tguid: string,\r\n\t\tlevel: number,\r\n\t\tisMain: boolean,\r\n\t\tisNewRecord: boolean\r\n\t) {\r\n\t\tthis.ControlId = controlId;\r\n\t\tthis.RecordId = recordId;\r\n\t\tthis.RelatedEntityId = relatedEntityId;\r\n\t\tthis.RelatedRecordId = relatedRecordId;\r\n\t\tthis.Level = level;\r\n\t\tthis.Guid = guid;\r\n\t\tthis.IsMain = isMain;\r\n\t\tthis.IsNewRecord = isNewRecord;\r\n\t}\r\n\r\n\t@serialize\r\n\tControlId: number;\r\n\r\n\t@serialize\r\n\tRecordId: number;\r\n\r\n\t@serialize\r\n\tRelatedEntityId: number;\r\n\r\n\t@serialize\r\n\tRelatedRecordId: number;\r\n\r\n\t@serialize\r\n\tGuid: string;\r\n\r\n\t@serialize\r\n\tIsMain: boolean;\r\n\r\n\tLevel: number;\r\n\r\n\t@serialize\r\n IsNewRecord: boolean;\r\n}\r\n\r\nexport class DeletedRelationModel {\r\n\tconstructor(entityId: number, recordId: number, kSeq: number, relationshipType: number = RelationshipTypes.None) {\r\n\t\tthis.EntityId = entityId;\r\n\t\tthis.RecordId = recordId;\r\n\t\tthis.KSeq = kSeq;\r\n\t\tthis.RelationshipType = relationshipType;\r\n\t}\r\n\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@serialize\r\n\tRecordId: number;\r\n\r\n\t@serialize\r\n\tKSeq: number;\r\n\r\n\t@serialize\r\n\tRelationshipType: number;\r\n}\r\n\r\nexport class ChangeRelationModel {\r\n constructor(entityId: number, oldId: number, newId: number, guid: string, kSeq?: number, oldKSeq?: number) {\r\n\t\tthis.EntityId = entityId;\r\n\t\tthis.OldId = oldId;\r\n\t\tthis.NewId = newId;\r\n\t\tthis.KSeq = kSeq;\r\n this.Guid = guid;\r\n this.OldKSeq = oldKSeq;\r\n }\r\n\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@serialize\r\n OldId: number;\r\n\r\n @serialize\r\n OldKSeq: number;\r\n\r\n\t@serialize\r\n\tNewId: number;\r\n\r\n\t@serialize\r\n\tKSeq: number;\r\n\r\n\t@serialize\r\n\tGuid: string;\r\n}\r\n\r\nexport class ChangeSecurityModel {\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@serialize\r\n\tId: number;\r\n\r\n\t@serialize\r\n\tLevel: number;\r\n}\r\n\r\ninterface DeleteRelation {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tKSeq: number;\r\n\tGuid: string;\r\n\tIsNew: boolean;\r\n}\r\n\r\nexport class FieldDataModel {\r\n\tFieldId: number;\r\n\tFieldValue: Array<string>;\r\n}\r\n\r\nexport class EditLinkDataModel {\r\n\tconstructor(model: LinkEditorDataModel, relationGuid: string) {\r\n\t\tthis.FieldValues = model.FieldValues;\r\n\t\tthis.KSeq = model.KSeq;\r\n\t\tthis.EntityId = model.EntityId;\r\n\t\tthis.RecordId = model.RecordId;\r\n\t\tthis.Guid = relationGuid;\r\n\t}\r\n\r\n\tFieldValues: Array<FieldDataModel>;\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tKSeq?: number;\r\n\tGuid: string;\r\n}\r\n\r\nexport class UpdateDataModel {\r\n\tMainEntityId: number;\r\n\tMainRecordId: number;\r\n\r\n\tReferenceLookupFieldId: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.MainRecordId = null;\r\n\t\tthis.NewRelations = [];\r\n\t\tthis.DeletedRelations = [];\r\n\t\tthis.ChangedRelations = [];\r\n\t\tthis.ChangedSecurity = [];\r\n\t\tthis.LinkEditorChanges = [];\r\n\t}\r\n\r\n\t@serializeAs(NewRelationModel)\r\n\tNewRelations: Array<NewRelationModel>;\r\n\r\n\t@serializeAs(DeletedRelationModel)\r\n\tDeletedRelations: Array<DeletedRelationModel>;\r\n\r\n\t@serializeAs(ChangeRelationModel)\r\n\tChangedRelations: Array<ChangeRelationModel>;\r\n\r\n\t@serializeAs(ChangeSecurityModel)\r\n\tChangedSecurity: Array<ChangeSecurityModel>;\r\n\r\n\t@serializeAs(LinkEditorDataModel)\r\n\tLinkEditorChanges: Array<EditLinkDataModel>;\r\n\r\n\t@serializeAs(ActionSubjectRecordModel)\r\n\tActionSubjectRecord: ActionSubjectRecordModel;\r\n\r\n\tAddNewRelation(controlId: number, recordId: number, relatedEntityId: number, relatedRecord: RelationRecordViewModel) {\r\n\t\tif (controlId && relatedEntityId && !!relatedRecord) {\r\n\t\t\tlet deletedRelation = _.find(this.DeletedRelations, (item) =>\r\n\t\t\t\titem.RecordId === relatedRecord.Id && item.EntityId === relatedEntityId && item.KSeq === relatedRecord.KSeq);\r\n\r\n\t\t\tif (deletedRelation) {\r\n\t\t\t\tthis.DeletedRelations = _.without(this.DeletedRelations, deletedRelation);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthis.NewRelations.push(new NewRelationModel(controlId, recordId, relatedEntityId, relatedRecord.Id, relatedRecord.Guid, relatedRecord.Level, relatedRecord.IsMain(), relatedRecord.IsNewRecord));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tDeleteRelation(relation: DeleteRelation) {\r\n\t\tif (relation.EntityId && relation.RecordId) {\r\n\t\t\tlet newRelation = _.find(this.NewRelations, (item) =>\r\n\t\t\t\titem.RelatedRecordId === relation.RecordId && item.RelatedEntityId === relation.EntityId && item.Guid === relation.Guid);\r\n\r\n\t\t\tif (newRelation) {\r\n\t\t\t\tthis.NewRelations = _.without(this.NewRelations, newRelation);\r\n\t\t\t}\r\n\r\n\t\t\tlet changedRelation = _.find(this.ChangedRelations, (item) =>\r\n\t\t\t\titem.EntityId === relation.EntityId && item.OldId === relation.RecordId\r\n\t\t\t\t&& (item.Guid === relation.Guid || item.KSeq === relation.KSeq));\r\n\r\n\t\t\tif (changedRelation) {\r\n\t\t\t\tthis.ChangedRelations = _.without(this.ChangedRelations, changedRelation);\r\n\t\t\t}\r\n\r\n\t\t\tlet changedLevelRecord = _.find(this.ChangedSecurity, { EntityId: relation.EntityId, Id: relation.RecordId });\r\n\t\t\tif (changedLevelRecord) {\r\n\t\t\t\tthis.ChangedSecurity = _.without(this.ChangedSecurity, changedLevelRecord);\r\n\t\t\t}\r\n\r\n\t\t\tif (relation.IsNew === false) {\r\n\t\t\t\tthis.DeletedRelations.push(new DeletedRelationModel(relation.EntityId, relation.RecordId, relation.KSeq));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tChangeRelation(entityId: number, oldId: number, newId: number, kSeq: number, guid: string, oldKSeq: number) {\r\n\t\tif (entityId && oldId && newId) {\r\n let newMainLink = new ChangeRelationModel(entityId, oldId, newId, guid, kSeq, oldKSeq);\r\n\t\t\tlet previousMainLink = _.findWhere(this.ChangedRelations, { EntityId: entityId });\r\n\t\t\tif (previousMainLink) {\r\n\t\t\t\tlet previousMainLinkIndex = this.ChangedRelations.indexOf(previousMainLink);\r\n\t\t\t\tthis.ChangedRelations.splice(previousMainLinkIndex, 1, newMainLink);\r\n\t\t\t}\r\n\t\t\tthis.ChangedRelations.push(newMainLink);\r\n\t\t}\r\n\t}\r\n\r\n\tChangeUserLevel(entityId: number, userId: number, level: number) {\r\n\t\tlet existingLink = _.findWhere(this.ChangedSecurity, { EntityId: entityId, Id: userId });\r\n\r\n\t\tif (existingLink) {\r\n\t\t\texistingLink.Level = level;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet changedSecurity = new ChangeSecurityModel();\r\n\r\n\t\tchangedSecurity.EntityId = entityId;\r\n\t\tchangedSecurity.Id = userId;\r\n\t\tchangedSecurity.Level = level;\r\n\r\n\t\tthis.ChangedSecurity.push(changedSecurity);\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nexport class MailAddressModel {\r\n\tMailAddress: KnockoutObservable<string>;\r\n\r\n\tconstructor() {\r\n\t\tthis.MailAddress = ko.observable('').extend({\r\n\t\t\temail: true,\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: 'Please provide an email'\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport { Modal } from \"Core/Common/Modal\";\r\nimport { Event } from 'Core/Common/Event';\r\nimport { MailAddressModel } from \"Core/Controls/Mail/Models/MailAddressModel\";\r\nimport { MailStore, IAddMailAddressRequestModel } from \"Core/Controls/Mail/Stores/MailStore\";\r\nimport { Notifier} from 'Core/Common/Notifier';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { ADD_EMAIL_EVENTS } from \"Core/Controls/Mail/Events\";\r\n\r\nimport AddEmailAddressTemplate from \"Core/Controls/Mail/Templates/AddMailAddress.html\"\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\nko.templates[\"Core/Controls/Mail/Templates/AddMailAddress\"] = AddEmailAddressTemplate;\r\n\r\nexport class AddEmailAddress extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _recordId: number;\r\n\tprivate _entityId: number;\r\n\tprivate _model: KnockoutValidatedObservable<MailAddressModel>;\r\n\r\n\tconstructor(recordId: number, entityId: number) {\r\n\t\tsuper();\r\n\t\tthis._modal = new Modal();\r\n\t\tthis._recordId = recordId;\r\n\t\tthis._entityId = entityId;\r\n\t\tthis._model = ko.validatedObservable(new MailAddressModel());\r\n\t\tthis.InitValidation();\r\n\t\tthis.AddEvent(ADD_EMAIL_EVENTS.EMAIL_SAVED);\r\n\t}\r\n\r\n\tInitValidation() {\r\n\t\tko.validation.init({ insertMessages: false }, true);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/Mail/Templates/AddMailAddress';\r\n\t}\r\n\r\n\t@enumerable get Model(): KnockoutValidatedObservable<MailAddressModel> {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\t@enumerable get MailAddress(): string {\r\n\t\treturn this._model().MailAddress();\r\n\t}\r\n\r\n\tShowInModal() {\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tSave() {\r\n\t\tif (this.IsValid()) {\r\n\t\t\tvar requestModel: IAddMailAddressRequestModel = {\r\n\t\t\t\tRecordId: this._recordId,\r\n\t\t\t\tEntityId: this._entityId,\r\n\t\t\t\tMailAddress: this._model().MailAddress()\r\n\t\t\t};\r\n\r\n\t\t\tBlockUI.Block();\r\n\t\t\tMailStore.AddMailAddress(requestModel)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t\t})\r\n\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis.Trigger(ADD_EMAIL_EVENTS.EMAIL_SAVED, { EmailAddress: this._model().MailAddress() });\r\n\t\t\t\t\tthis.Close();\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tClose() {\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tIsValid() {\r\n\t\tif (!this._model.isValid()) {\r\n\t\t\tthis._model.errors.showAllMessages();\r\n\t\t}\r\n\r\n\t\treturn this._model.isValid();\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: Model --> <h4>Email:</h4> <input data-bind=\\\"value: MailAddress\\\" type=\\\"text\\\" class=\\\"form-control\\\"> <span data-bind=\\\"validationMessage: MailAddress\\\" class=\\\"help-block\\\"></span> <br> <!-- /ko --> <input data-bind=\\\"click: $data.Save.bind($data)\\\" class=\\\"btn btn-info\\\" type=\\\"button\\\" value=\\\"Add mail\\\">\";\n// Exports\nexport default code;","export class ScreenshotAttachmentModel {\r\n\tpublic Content: string;\r\n\tpublic Name: string;\r\n}","// Module\nvar code = \"<div class=\\\"inbox clearfix box-shadow-wrapper\\\"> <div data-bind=\\\"afterRender: AfterRender\\\" class=\\\"compose-mail-container\\\"> <div class=\\\"inbox-body\\\"> <div class=\\\"inbox-header\\\"> <span class=\\\"\\\" data-bind=\\\"text: CurrentActionText\\\"></span> </div> <div class=\\\"inbox-content inbox-compose\\\"> <div class=\\\"inbox-form-group mail-to clearfix\\\"> <label class=\\\"control-label\\\"><!--ko text: _labels.TO_ --><!--/ko-->:</label> <div class=\\\"controls controls-to\\\"> <select data-bind=\\\"select2Data: _recipients, select2: $data.GetSelect2Settings()\\\" class=\\\"form-control input-mail-to-selector\\\" placeholder=\\\"Hello\\\"> </select> <span class=\\\"inbox-cc-bcc\\\"> <span data-bind=\\\"click: ShowHideCc, css: {'opened': _isCcVisible()}\\\" class=\\\"inbox-cc\\\"> <!--ko text: _labels.CC --><!--/ko--> </span> <span data-bind=\\\"click: ShowHideBcc, css: {'opened': _isBccVisible()}\\\" class=\\\"inbox-bcc\\\"> <!--ko text: _labels.BCC --><!--/ko--> </span> </span> </div> </div> <!-- ko if: _isCcVisible--> <div class=\\\"inbox-form-group input-cc clearfix\\\"> <a data-bind=\\\"click: ShowHideCc\\\" class=\\\"close\\\" href=\\\"javascript:;\\\"> </a> <label class=\\\"control-label\\\"><!--ko text: _labels.CC --><!--/ko-->:</label> <div class=\\\"controls controls-cc\\\"> <select data-bind=\\\"select2Data: _ccRecepients, select2: $data.GetSelect2Settings('cc')\\\" class=\\\"form-control input-cc-selector\\\" placeholder=\\\"Hello\\\"> </select> </div> </div> <!-- /ko --> <!-- ko if: _isBccVisible --> <div class=\\\"inbox-form-group input-bcc clearfix\\\"> <a data-bind=\\\"click: ShowHideBcc\\\" class=\\\"close\\\" href=\\\"javascript:;\\\"> </a> <label class=\\\"control-label\\\"><!--ko text: _labels.BCC --><!--/ko-->:</label> <div class=\\\"controls controls-bcc\\\"> <select data-bind=\\\"select2Data: _bccRecepients, select2: $data.GetSelect2Settings('bcc')\\\" class=\\\"form-control input-bcc-selector\\\" placeholder=\\\"Hello\\\"> </select> </div> </div> <!-- /ko --> <div class=\\\"inbox-form-group email-subject\\\"> <label class=\\\"control-label\\\"><!--ko text: _labels.EMAIL_SUBJECT --><!--/ko-->:</label> <div class=\\\"controls\\\"> <input data-bind=\\\"value: _newSubject\\\" type=\\\"text\\\" name=\\\"subject\\\" class=\\\"mail-subject form-control\\\"> </div> </div> <textarea data-bind=\\\"attr: {id: _guid},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t tinymce : { guid: _guid,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t isMailControl: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t autoresize: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t height: '100%',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t autoresize_min_height: '160',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t readOnly: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t autofocus: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t afterInit: $data.AfterTinyInit.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t afterChange: $data.AfterTinyChange.bind($data) }\\\" class=\\\"mail-body-editor\\\">\\r\\n\\t\\t\\t\\t</textarea> <div class=\\\"inbox-compose-attachment\\\"> <!-- ko if: _isEnableAttachment --> <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload --> <span data-bind=\\\"click: SearchAttachments\\\" id=\\\"searchButton\\\" class=\\\"btn green btn-outline fileinput-button add-documents\\\"> <i class=\\\"fa fa-plus\\\"></i> <span><!--ko text: _showAddFromDocuments() --><!-- /ko --> </span> </span> <!-- /ko --> <!-- The table listing the files available for upload/download --> <!-- ko if: Attachments().length --> <table class=\\\"table margin-top-10\\\" role=\\\"presentation\\\"> <tbody class=\\\"files\\\"> <!-- ko foreach: Attachments --> <tr class=\\\"template-download fade in\\\"> <td class=\\\"name\\\" style=\\\"padding-left:0!important;display:flex;flex-direction:row;margin-top:5px\\\"> <span data-bind=\\\"text: Name\\\" style=\\\"background:rgba(204,204,204,.3);float:left;display:block;line-height:27px;padding:0 5px\\\"></span> <!-- ko if: $parent._isEnableRemoveAttachment --> <a data-bind=\\\"click: $parent.RemoveAttachment.bind($parent)\\\" class=\\\"btn default btn-sm remove-attachment-btn\\\" data-type=\\\"\\\" data-url=\\\"\\\"> <i class=\\\"fa fa-times\\\"></i> </a> <!-- /ko --> </td> <!--<td class=\\\"delete\\\" width=\\\"10%\\\" align=\\\"right\\\"></td>--> </tr> <!-- /ko --> </tbody> </table> <!-- /ko --> </div> <div class=\\\"inbox-compose-btn\\\"> <a data-bind=\\\"click: Send\\\" class=\\\"send-button btn green\\\"> <i class=\\\"fa fa-check\\\"></i><!--ko text: _confirmations.SEND --><!--/ko--> </a> <a data-bind=\\\"click: $data.Discard.bind($data)\\\" class=\\\"btn default\\\"> <!--ko text: _labels.DISCARD --><!--/ko--> </a> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport 'lockr';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {TableStore} from \"Core/Common/Stores/TableStore\";\r\nimport {RecordStore} from \"Core/Common/Stores/RecordStore\";\r\nimport {\r\n\tMailStore,\r\n\tISendMailRequestModel,\r\n\tIDestinationMail,\r\n\tICcRecipientModel,\r\n\tIBccRecipientModel\r\n} from 'Core/Controls/Mail/Stores/MailStore';\r\nimport {IScreen} from \"Core/Screens/IScreen\";\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {SearchByMainRelationTypes} from 'Core/Screens/SearchScreen/Enums/Enums';\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {MailAttachmentModel} from 'Core/Controls/Mail/Models/MailAttachmentModel';\r\nimport {CookieManager} from 'Core/Common/CookieManager';\r\nimport {AddEmailAddress} from 'Core/Controls/Mail/AddEmailAddress';\r\nimport {MailItemExtendedModel} from 'Core/Controls/Mail//Models/MailItemExtendedModel';\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {COMPOSER_EVENTS, ADD_EMAIL_EVENTS} from 'Core/Controls/Mail/Events';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as ConfirmationDialogEvents,\r\n\tTypes as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {ScreenshotAttachmentModel} from 'Core/Controls/Mail/Models/ScreenshotAttachmentModel';\r\nimport {IComposerOptionsModel} from 'Core/Controls/Mail/Models/ComposerOptionsModel';\r\nimport {DocumentStore} from 'Core/Controls/Document/Stores/DocumentStore';\r\nimport {NOTIFICATIONS, LABELS, CONFIRMATIONS} from 'Core/Components/Translation/Locales';\r\nimport * as $ from \"jquery\";\r\n\r\nimport ComposeMailTemplate from 'Core/Controls/Mail/Templates/ComposeMailTemplate.html';\r\nimport SelectedRecepientTemplate from 'Core/Controls/Mail/Templates/SelectedRecepientTemplate.html';\r\nimport SelectOptionRecipientTemplate from 'Core/Controls/Mail/Templates/SelectOptionRecepientTemplate.html';\r\n\r\nko.templates['Core/Controls/Mail/Templates/ComposeMailTemplate'] = ComposeMailTemplate;\r\n\r\nexport class ComposeMail extends Event {\r\n\tprivate _labels: LABELS;\r\n\tprivate _confirmations: CONFIRMATIONS;\r\n\r\n\tprivate _isCcVisible: KnockoutObservable<boolean>;\r\n\tprivate _isBccVisible: KnockoutObservable<boolean>;\r\n\tprivate _sendScreenShot: KnockoutObservable<boolean>;\r\n\tprivate _newSubject: KnockoutObservable<string>;\r\n\tprivate _newBody: KnockoutObservable<string>;\r\n\tprivate _attachments: KnockoutObservableArray<MailAttachmentModel>;\r\n\tprivate _screenshots: KnockoutObservableArray<ScreenshotAttachmentModel>;\r\n\tprivate _guid: string;\r\n\tprivate _modal: Modal;\r\n\tprivate _isInModal: boolean;\r\n\tprivate _mailConnectionId: number;\r\n\tprivate _newReciver: KnockoutObservable<string>;\r\n\tprivate _newCc: KnockoutObservable<string>;\r\n\tprivate _newBcc: KnockoutObservable<string>;\r\n\tprivate _responseMailItem: MailItemExtendedModel;\r\n\r\n\tprivate _recipients: KnockoutObservableArray<IDestinationMail>;\r\n\tprivate _ccRecepients: KnockoutObservableArray<ICcRecipientModel>;\r\n\tprivate _bccRecepients: KnockoutObservableArray<IBccRecipientModel>;\r\n\tprivate _isEnableAttachment: KnockoutObservable<boolean>;\r\n\tprivate _isEnableRemoveAttachment: KnockoutObservable<boolean>;\r\n\r\n\tprivate IsReply: boolean;\r\n\tprivate IsForward: boolean;\r\n\tprivate IsReplyAll: boolean;\r\n\tprivate _currentAction: string;\r\n\tprivate _mailInfo: string;\r\n\tprivate _datetimeCreated: string;\r\n\tprivate _documentsEntityNameTranslation: KnockoutObservable<string>;\r\n\tprivate _showAddFromDocuments: KnockoutObservable<string>;\r\n\tprivate _screen: KnockoutObservable<IScreen>;\r\n\tprivate _subjectEntityId: number;\r\n\tprivate _subjectRecordId: number;\r\n\tprivate _subjectTypeId: number;\r\n\r\n\tconstructor(options?: IComposerOptionsModel) {\r\n\t\tsuper();\r\n\r\n\t\tthis._responseMailItem = options.ResponseMailItem;\r\n\t\tthis._guid = Guid.NewGuid();\r\n\t\tthis._isCcVisible = ko.observable(false);\r\n\t\tthis._isBccVisible = ko.observable(false);\r\n\t\tthis._sendScreenShot = ko.observable(options.SendScreenShot);\r\n\t\tthis._screenshots = ko.observableArray([]);\r\n\t\tthis._subjectEntityId = options.SubjectEntityId;\r\n\t\tthis._subjectRecordId = options.SubjectRecordId;\r\n\t\tthis._subjectTypeId = options.SubjectTypeId;\r\n\r\n\t\tthis.IsReply = options.IsReply;\r\n\t\tthis.IsForward = options.IsForward;\r\n\t\tthis.IsReplyAll = options.IsReplyAll;\r\n\r\n\t\tthis._newBody = ko.observable('');\r\n\t\tthis._newSubject = ko.observable('');\r\n\t\tthis._newReciver = ko.observable('');\r\n\t\tthis._newCc = ko.observable('');\r\n\t\tthis._newBcc = ko.observable('');\r\n\t\tthis._attachments = ko.observableArray([]);\r\n\r\n\t\tthis._recipients = ko.observableArray([]);\r\n\t\tthis._ccRecepients = ko.observableArray([]);\r\n\t\tthis._bccRecepients = ko.observableArray([]);\r\n\t\tthis._documentsEntityNameTranslation = ko.observable('');\r\n\t\tthis._screen = ko.observable(null);\r\n\r\n\t\tthis._isInModal = false;\r\n\t\tthis._mailConnectionId = options.MailConnectionId;\r\n\t\tthis._datetimeCreated = options.DateTimeCreated;\r\n\t\tthis._showAddFromDocuments = ko.computed(() => { return `${LABELS.ADD_FROM} ${this._documentsEntityNameTranslation()}` });\r\n\r\n\t\tthis._labels = LABELS;\r\n\t\tthis._confirmations = CONFIRMATIONS;\r\n\r\n\t\tthis.AddEvents();\r\n\t\tthis.Init();\r\n\t\tthis._isEnableAttachment = ko.observable(true);\r\n\t\tthis._isEnableRemoveAttachment = ko.observable(true);\r\n\t\tthis._isCcVisible.subscribe(newValue=>{\r\n\t\t\tif(!newValue){\r\n\t\t\t\tthis._ccRecepients([]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._isBccVisible.subscribe(newValue=>{\r\n\t\t\tif(!newValue){\r\n\t\t\t\tthis._bccRecepients([]);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tget CurrentActionText() {\r\n\t\treturn `${this._currentAction} ${LABELS.E_MAIL}`;\r\n\t}\r\n\r\n\tAddEvents() {\r\n\t\tthis.AddEvent(COMPOSER_EVENTS.EMAIL_SENT);\r\n\t\tthis.AddEvent(COMPOSER_EVENTS.DISCARD);\r\n\t\tthis.AddEvent('ON_CHANGED_PAGE_LEAVING');\r\n\t}\r\n\r\n\tPreventWindowConfirmation() {\r\n\t\tconst eventWindowConfirmation = (event) => {\r\n\t\t\t// Cancel the event as stated by the standard.\r\n\t\t\tevent.preventDefault();\r\n\t\t\t// Chrome requires returnValue to be set.\r\n\t\t\tevent.returnValue = 'Would you like to leave the page?';\r\n\t\t\treturn 'Would you like to leave the page?'\r\n\t\t};\r\n\r\n\t\twindow.addEventListener('beforeunload', eventWindowConfirmation);\r\n\r\n\t\tthis.On('ON_CHANGED_PAGE_LEAVING', this, () => {\r\n\t\t\twindow.removeEventListener('beforeunload', eventWindowConfirmation);\r\n\t\t});\r\n\t}\r\n\r\n\tAddMailTo(firstName: string, mailTo: string) {\r\n\t\tthis._recipients.push({\r\n\t\t\tMail: mailTo,\r\n\t\t\tRecordId: -1,\r\n\t\t\tTableId: -1\r\n\t\t});\r\n\t}\r\n\r\n\tAddMailCC(firstName: string, mailTo: string) {\r\n\t\tthis._ccRecepients.push({\r\n\t\t\tName: '',\r\n\t\t\tMail: mailTo,\r\n\t\t\tRecordId: -1,\r\n\t\t\tTableId: -1\r\n\t\t});\r\n\r\n\t\tthis._isCcVisible(true);\r\n\t}\r\n\r\n\tAddMailBCC(firstName: string, mailTo: string) {\r\n\t\tthis._bccRecepients.push({\r\n\t\t\tName: '',\r\n\t\t\tMail: mailTo,\r\n\t\t\tRecordId: -1,\r\n\t\t\tTableId: -1\r\n\t\t});\r\n\r\n\t\tthis._isBccVisible(true);\r\n\t}\r\n\r\n\tAddMailWithRecord(mailTo: string, tableId: number, recordId: number) {\r\n\t\tthis._recipients.push({\r\n\t\t\tMail: mailTo,\r\n\t\t\tTableId: tableId,\r\n\t\t\tRecordId: recordId\r\n\t\t});\r\n\t}\r\n\r\n\tAddScreen(screen: IScreen) {\r\n\t\tthis._screen(screen);\r\n\t}\r\n\r\n\tAddBody(body: string){\r\n\t\tthis._newBody(body);\r\n\t}\r\n\r\n\tAddSubject(subject: string) {\r\n\t\tthis._newSubject(subject);\r\n\t}\r\n\r\n\tDiscard() {\r\n\t\tif (this._isInModal && this._modal) {\r\n\t\t\tlet confirmationDialog = new ConfirmationDialog({\r\n\t\t\t\tText: CONFIRMATIONS.DISCARD,\r\n\t\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\t\tTextConfirm: LABELS.YES,\r\n\t\t\t\tTextDecline: LABELS.NO\r\n\t\t\t});\r\n\r\n\t\t\tconfirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, (eventArgs) => {\r\n\t\t\t\tthis._modal.Close();\r\n\t\t\t\tthis.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n\t\t\t});\r\n\t\t\tconfirmationDialog.Show();\r\n\t\t}\r\n\r\n\t\tthis.Trigger(COMPOSER_EVENTS.DISCARD);\r\n\t}\r\n\r\n\tInit() {\r\n\t\tif (this.IsReply) {\r\n\t\t\tthis._currentAction = LABELS.REPLY;\r\n\t\t\tthis.ComposeBody();\r\n\t\t\tthis.FillInitialDataReply();\r\n\t\t} else if (this.IsReplyAll) {\r\n\t\t\tthis._currentAction = LABELS.REPLY_TO_ALL;\r\n\t\t\tthis.ComposeBody();\r\n\t\t\tthis.FillInitialDataReplyAll();\r\n\t\t} else if (this.IsForward) {\r\n\t\t\tthis._currentAction = LABELS.FORWARD;\r\n\t\t\tthis.ComposeBody();\r\n\t\t\tthis.FillInitialDataForward();\r\n\t\t} else {\r\n\t\t\tthis.PreventWindowConfirmation();\r\n\t\t\tthis._currentAction = LABELS.NEW;\r\n\t\t}\r\n\t}\r\n\r\n\tComposeBody() {\r\n\t\tthis._mailInfo =\r\n\t\t\t`${this._datetimeCreated} ${this._responseMailItem.FromName} ${this._responseMailItem.FromAddress} wrote:`;\r\n\r\n\t\tconst newBodyWithSignature =\r\n\t\t\t'<p></p><p></p><p></p>' + '<blockquote style=\"margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;\">' + this._mailInfo + '<p></p>' + this._responseMailItem.Body + '</blockquote>';\r\n\r\n\t\tthis._newBody(newBodyWithSignature);\r\n\t}\r\n\r\n\tFillInitialDataReply() {\r\n\t\tthis._newSubject('Re: ' + this._responseMailItem.Subject);\r\n\r\n\t\tconst fromAddress = this._responseMailItem.FromAddress;\r\n\r\n\t\tthis._recipients.push({\r\n\t\t\tName: this._responseMailItem.FromName,\r\n\t\t\tMail: fromAddress,\r\n\t\t\tRecordId: -1,\r\n\t\t\tTableId: -1\r\n\t\t});\r\n\t}\r\n\r\n\tFillInitialDataReplyAll() {\r\n\t\tthis._newSubject('Re: ' + this._responseMailItem.Subject);\r\n\r\n\t\tthis._responseMailItem.Cc.forEach((el) => {\r\n\t\t\tthis._ccRecepients.push({\r\n\t\t\t\tMail: el,\r\n\t\t\t\tName: '',\r\n\t\t\t\tRecordId: -1,\r\n\t\t\t\tTableId: -1\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tif (this._responseMailItem.DestinationMails.length) {\r\n\t\t\tthis._responseMailItem.DestinationMails.map((el) => {\r\n\t\t\t\tif (!(el.DestinationMails && el.DestinationMails.length)) {\r\n\t\t\t\t\tthis._recipients.push({\r\n\t\t\t\t\t\tName: '',\r\n\t\t\t\t\t\tMail: el.Address,\r\n\t\t\t\t\t\tRecordId: -1,\r\n\t\t\t\t\t\tTableId: -1\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tel.DestinationMails.map((destMail) => {\r\n\t\t\t\t\tthis._recipients.push({\r\n\t\t\t\t\t\tName: destMail.Name,\r\n\t\t\t\t\t\tMail: el.Address,\r\n\t\t\t\t\t\tRecordId: destMail.RecordId,\r\n\t\t\t\t\t\tTableId: destMail.TableId\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._recipients.push({\r\n\t\t\tName: this._responseMailItem.FromName,\r\n\t\t\tMail: this._responseMailItem.FromAddress,\r\n\t\t\tRecordId: -1,\r\n\t\t\tTableId: -1\r\n\t\t});\r\n\r\n\t\tlet recipients = this._recipients().concat(this._ccRecepients());\r\n\r\n\t\tthis._recipients(recipients);\r\n\r\n\t\tthis.DeleteDuplicatedRecipients();\r\n\t}\r\n\r\n\tFillInitialDataForward() {\r\n\t\tthis._newSubject('Re: ' + this._responseMailItem.Subject);\r\n\t}\r\n\r\n\tDeleteDuplicatedRecipients() {\r\n\t\tthis._recipients(_.uniq(this._recipients(), (recipient)=>recipient.Mail));\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn ComposeMailTemplate;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/Mail/Templates/ComposeMailTemplate';\r\n\t}\r\n\r\n\tShowHideCc() {\r\n\t\tthis._isCcVisible(!this._isCcVisible());\r\n\t}\r\n\r\n\tShowHideBcc() {\r\n\t\tthis._isBccVisible(!this._isBccVisible());\r\n\t}\r\n\r\n\tRemoveAttachment(attachment: MailAttachmentModel) {\r\n\t\tthis._attachments.splice(this._attachments.indexOf(attachment), 1);\r\n\t}\r\n\r\n\tSend() {\r\n\t\tif (this.IsReply || this.IsForward) {\r\n\t\t\tthis.SendReplyMail();\r\n\t\t} else if (this.IsReplyAll) {\r\n\t\t\tthis.SendReplyAllMail();\r\n\t\t} else {\r\n\t\t\tthis.SendMail();\r\n\t\t}\r\n\t}\r\n\r\n\tShowInModal(mailConnectionId) {\r\n\t\tthis._mailConnectionId = mailConnectionId;\r\n\t\tthis._isInModal = true;\r\n\t\tconst self = this;\r\n\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: 'compose-email',\r\n\t\t\tcloseOnEsc: false,\r\n\t\t\tonOpen: function () {\r\n\t\t\t\t$(this.closeButton[0]).off('click');\r\n\t\t\t\tthis.closeButton[0].addEventListener('click', self.PreventCloseModal.bind(self));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tPreventCloseModal(event) {\r\n\t\tevent.stopImmediatePropagation();\r\n\r\n\t\tlet confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: CONFIRMATIONS.CLOSE,\r\n\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\tTextConfirm: LABELS.YES,\r\n\t\t\tTextDecline: LABELS.NO\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis._modal.Close();\r\n\t\t\tthis.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n\t\t});\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n\r\n\tSendMail() {\r\n\t\tconst requestModel: ISendMailRequestModel = this.SerializeData();\r\n\r\n\t\tif (!requestModel.Recipients.length) {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.PLEASE_ADD_RECIPIENT);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tMailStore.SendMail(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tnew Notifier().Success(NOTIFICATIONS.EMAIL_WAS_SENT);\r\n\t\t\t\tthis.Trigger(COMPOSER_EVENTS.EMAIL_SENT, { Mail: requestModel, Id: result.Id });\r\n\r\n\t\t\t\tif (this._modal) {\r\n\t\t\t\t\tthis._modal.Close();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._screen().Refresh();\r\n\t\t\t\tthis.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tSendReplyMail() {\r\n\t\tconst requestModel: ISendMailRequestModel = this.SerializeData();\r\n\r\n\t\tif (!requestModel.Recipients.length) {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.PLEASE_ADD_RECIPIENT);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tBlockUI.Block({ZIndex: ZIndexManager.Instance.NextValue});\r\n\r\n\t\tMailStore.SendMail(requestModel, 'ReplyMail')\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tnew Notifier().Success(NOTIFICATIONS.EMAIL_WAS_SENT);\r\n\t\t\t\tthis.Trigger(COMPOSER_EVENTS.EMAIL_SENT, { Mail: requestModel, Id: result.Id });\r\n\r\n\t\t\t}).fail((err) => {\r\n\t\t\tnew Notifier().Warning(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\tSendReplyAllMail() {\r\n\t\tconst requestModel: ISendMailRequestModel = this.SerializeData();\r\n\r\n\t\tif (!requestModel.Recipients.length) {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.PLEASE_ADD_RECIPIENT);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tBlockUI.Block({ZIndex: ZIndexManager.Instance.NextValue});\r\n\r\n\t\tMailStore.SendMail(requestModel, 'ReplyMail')\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tnew Notifier().Success('Email was sent');\r\n\r\n\t\t\t\tthis.Trigger(COMPOSER_EVENTS.EMAIL_SENT, { Mail: requestModel, Id: result.Id});\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tGetSelect2Settings(type: string = null) {\r\n\t\tconst token = CookieManager.GetAuthToken();\r\n\t\tlet isRequestInProgress = false;\r\n\r\n\t\treturn {\r\n\t\t\tajax: {\r\n\t\t\t\turl: 'api/MailApi/GetDestinationMails',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\tdelay: 500,\r\n\t\t\t\theaders: {'Authorization': `Bearer ${token}`},\r\n\r\n\t\t\t\tdata: function (params) {\r\n\t\t\t\t\tisRequestInProgress = true;\r\n\r\n\t\t\t\t\t$(\".select2-search__field\").on(\"keydown\", function(event) {\r\n\t\t\t\t\t\tif (event.keyCode === 13 && isRequestInProgress) {\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}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tSearchPart: params.term,\r\n\t\t\t\t\t\tpage: params.page\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\r\n\t\t\t\ttransport: function (params, success, failure) {\r\n\t\t\t\t\tvar $request = $.ajax(params);\r\n\r\n\t\t\t\t\tBlockUI.Block({Target: $(\".select2-container--default\").get(0)});\r\n\t\t\t\t\t$request.then(success);\r\n\t\t\t\t\t$request.fail(failure);\r\n\r\n\t\t\t\t\treturn $request;\r\n\t\t\t\t},\r\n\r\n\t\t\t\tprocessResults: function (data, params) {\r\n\t\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\t\tnew Notifier().Failed(data.ErrorMessage);\r\n\r\n\t\t\t\t\t\treturn {results: []};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tparams.page = params.page || 1;\r\n\r\n\t\t\t\t\t_.each(data.ResultObject, (item: any) => item.id = item.TableId + '_' + item.RecordId);\r\n\r\n\t\t\t\t\t$(\".select2-search__field\").off(\"keydown\");\r\n\t\t\t\t\tisRequestInProgress = false;\r\n\t\t\t\t\tBlockUI.Unblock($(\".select2-container--default\").get(0));\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tresults: data.ResultObject,\r\n\t\t\t\t\t\tpagination: {\r\n\t\t\t\t\t\t\tmore: (params.page * 30) < data.total_count\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\tcache: false\r\n\t\t\t},\r\n\r\n\t\t\tmultiple: true,\r\n\r\n\t\t\tescapeMarkup: (markup) => markup,\r\n placeholder: \"\",\r\n\t\t\tallowClear: true,\r\n\t\t\tminimumInputLength: 3,\r\n\t\t\ttags: true,\r\n\t\t\tinitialData: this.GenerateInitialData(type),\r\n\t\t\tinitSelection: this.SetDefaultValue.bind(this, type),\r\n\t\t\ttemplateResult: this.Select2FormatData.bind(this, type),\r\n\t\t\ttemplateSelection: this.Select2FormatDataSelection.bind(this),\r\n\t\t\tvalidate: this.validateEmail,\r\n\t\t\tvalidateType: 'email',\r\n\t\t\tselectOnClose: true\r\n\t\t};\r\n\t}\r\n\r\n\tGenerateInitialData(type: string) {\r\n\t\tlet preselctedRecipients;\r\n\t\tlet recipients;\r\n\r\n\t\tif (type === 'cc') {\r\n\t\t\trecipients = this._ccRecepients();\r\n\t\t} else if (type === 'bcc') {\r\n\t\t\trecipients = this._bccRecepients();\r\n\t\t} else {\r\n\t\t\trecipients = this._recipients();\r\n\t\t}\r\n\r\n\t\tif (!recipients.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tpreselctedRecipients = recipients;\r\n\r\n\t\treturn preselctedRecipients.map((item, i) => {\r\n\t\t\treturn _.extend(item, {\r\n\t\t\t\t\tinitialDataId: 'initialData_' + i,\r\n\t\t\t\t\tid: i,\r\n\t\t\t\t\ttext: ''\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tSetDefaultValue(type: string, element, callback) {\r\n\t\tcallback(this.GetRecipients(this, type) || []);\r\n\t}\r\n\r\n\tGetRecipients(content: ComposeMail, type: string){\r\n\t\tif (type === 'cc') {\r\n\t\t\treturn this._ccRecepients();\r\n\t\t} else if (type === 'bcc') {\r\n\t\t\treturn this._bccRecepients();\r\n\t\t} else {\r\n\t\t\treturn this._recipients();\r\n\t\t}\r\n\t}\r\n\r\n\tSelect2FormatData(type: string, data) {\r\n\r\n\t\tif (data.RecordId == null) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tconst recipientName = data.Name;\r\n\r\n\t\tconst model = {\r\n\t\t\tRecipientType: type,\r\n\t\t\tParentContext: this,\r\n\t\t\tRecipientName: recipientName,\r\n\t\t\tEmail: data.Mail,\r\n\t\t\tAddEmail: this.AddEmail,\r\n\t\t\tId: data.RecordId,\r\n\t\t\tEntityId: data.TableId\r\n\t\t};\r\n\r\n\t\treturn (ko as any).renderTemplateX(SelectOptionRecipientTemplate, model);\r\n\t};\r\n\r\n\tvalidateEmail(email) {\r\n\t\tconst re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n\t\treturn re.test(email);\r\n\t}\r\n\r\n\tSelect2FormatDataSelection(data) {\r\n\t\tlet recipientName = `${data.Name || ''} ${data.Mail || ''}`;\r\n\r\n\t\trecipientName = recipientName.trim() || data.text;\r\n\r\n\t\treturn (ko as any).renderTemplateX(SelectedRecepientTemplate, {RecipientName: recipientName});\r\n\t}\r\n\r\n\tAddEmail(model: any) {\r\n\r\n\t\tconst addEmail = new AddEmailAddress(model.Id, model.EntityId);\r\n\r\n\t\taddEmail.On(ADD_EMAIL_EVENTS.EMAIL_SAVED, this, (eventArgs: any) => {\r\n\t\t\t\r\n\t\t\tconst recipient = _.find(model.ParentContext.GetRecipients(model.ParentContext, model.RecipientType), (recipient: IDestinationMail) => {\r\n\t\t\t\treturn recipient.RecordId === model.Id;\r\n\t\t\t});\r\n\r\n\t\t\tif (recipient) {\r\n\t\t\t\trecipient.Mail = eventArgs.data.EmailAddress;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\taddEmail.ShowInModal();\r\n\t}\r\n\r\n\tAfterTinyInit(editor) {\r\n\t\teditor.setContent(this._newBody());\r\n\t}\r\n\r\n\tAfterTinyChange(content) {\r\n\t\tthis._newBody(content);\r\n\t}\r\n\r\n\tAddScreenShot(value: string) {\r\n\t\tconst newScreenshot = new ScreenshotAttachmentModel();\r\n\r\n\t\tnewScreenshot.Name = 'Screenshot ' + moment().format('DMMMYY-h:mm') + '.jpg';\r\n\t\tnewScreenshot.Content = value;\r\n\r\n\t\tthis.Screenshots().push(newScreenshot);\r\n\t}\r\n\r\n\tSerializeData() {\r\n\t\tconst ccList = this.SerializeCc();\r\n\t\tconst bccList = this.SerializeBcc();\r\n\t\tlet recipients = this.SerializeRecepients();\r\n\t\tlet attachmentsRequest = [];\r\n\r\n\t\tif (this.IsReplyAll && ccList) {\r\n\t\t\trecipients = this.SerializeRecepients().concat(ccList);\r\n\t\t}\r\n\r\n\t\tif (this._responseMailItem) {\r\n\t\t\tattachmentsRequest = this._responseMailItem.Attachments.map((el) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tGuid: this._responseMailItem.Guid,\r\n\t\t\t\t\tName: el.Name,\r\n\t\t\t\t\tMailConnectionId: this._mailConnectionId\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst screen = this._screen();\r\n\t\tconst subjectEntityId = this._subjectEntityId || screen?.GetEntityId();\r\n\t\tconst subjectRecordId = this._subjectRecordId || screen?.GetRecordId();\r\n\r\n\t\tconst sendMailRequestModel: ISendMailRequestModel = {\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tSubject: this._newSubject(),\r\n\t\t\tBody: this.SerializeBody(),\r\n\t\t\tRecipients: recipients,\r\n\t\t\tAttachements: this.Attachments(),\r\n\t\t\tMessageId: null,\r\n\t\t\tScreenshots: this.Screenshots(),\r\n\t\t\tAttachmentsRequest: attachmentsRequest,\r\n\t\t\tSubjectEntityId: subjectEntityId,\r\n\t\t\tSubjectRecordId: subjectRecordId\r\n\t\t};\r\n\r\n\t\tif (ccList) {\r\n\t\t\tsendMailRequestModel.CcList = ccList;\r\n\t\t}\r\n\r\n\t\tif (bccList) {\r\n\t\t\tsendMailRequestModel.BccList = bccList;\r\n\t\t}\r\n\r\n\t\tif (this.IsReply || this.IsReplyAll || this.IsForward) {\r\n\t\t\tsendMailRequestModel.MessageId = this._responseMailItem.Guid;\r\n\t\t}\r\n\r\n\t\treturn sendMailRequestModel;\r\n\t}\r\n\r\n\tSerializeBody() {\r\n\t\treturn this._newBody();\r\n\t}\r\n\r\n\tSerializeRecepients(): any {\r\n\t\tconst recipients: IDestinationMail[] = [];\r\n\r\n\t\tconst recipientsFilteredData = this._recipients().filter((recipient: any) => {\r\n\t\t\treturn !!recipient.RecordId || this.validateEmail(recipient.text);\r\n\t\t});\r\n\r\n\t\t_.each(recipientsFilteredData, (recipientData: IDestinationMail | any) => {\r\n\t\t\tconst recipient: IDestinationMail = {\r\n\t\t\t\tTableId: recipientData.TableId || -1,\r\n\t\t\t\tRecordId: recipientData.RecordId || -1,\r\n\t\t\t\tMail: recipientData.Mail\r\n\t\t\t};\r\n\r\n\t\t\tif (recipient.RecordId === -1) {\r\n\t\t\t\trecipient.Mail = recipientData.text || recipientData.Mail;\r\n\t\t\t}\r\n\r\n\t\t\trecipients.push(recipient);\r\n\t\t});\r\n\r\n\t\treturn recipients;\r\n\t}\r\n\r\n\tSerializeCc(): IDestinationMail[] {\r\n\t\tconst ccList = _.map(this._ccRecepients(), (ccRecepient: any): IDestinationMail => {\r\n\t\t\treturn {\r\n\t\t\t\tTableId: ccRecepient.TableId || -1,\r\n\t\t\t\tRecordId: ccRecepient.RecordId || -1,\r\n\t\t\t\tMail: ccRecepient.Mail || ccRecepient.text\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tif (ccList.length) {\r\n\t\t\treturn ccList;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tSerializeBcc(): IDestinationMail[] {\r\n\t\tconst bccList = _.map(this._bccRecepients(), (bccRecepient: any): IDestinationMail => {\r\n\t\t\treturn {\r\n\t\t\t\tTableId: bccRecepient.TableId || -1,\r\n\t\t\t\tRecordId: bccRecepient.RecordId || -1,\r\n\t\t\t\tMail: bccRecepient.Mail || bccRecepient.text\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tif (bccList.length) {\r\n\t\t\treturn bccList;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tget Attachments(): KnockoutObservableArray<MailAttachmentModel> {\r\n\t\treturn this._attachments;\r\n\t}\r\n\r\n\tget Screenshots(): KnockoutObservableArray<ScreenshotAttachmentModel> {\r\n\t\treturn this._screenshots;\r\n\t}\r\n\r\n\tSearchAttachments() {\r\n\t\tDocumentStore.GetDocumentEntityId().then(documentsEntityId => {\r\n\t\t\tlet firstSearchByMainRelations = true;\r\n\t\t\tlet firstSearchByRelations = true;\r\n\t\t\tlet firstSearchByLinkedDocuments = true;\r\n\r\n\t\t\tconst searchScreen = new SearchScreen({\r\n\t\t\t\tEntityId: documentsEntityId,\r\n\t\t\t\tSearchTerm: '',\r\n\t\t\t\tMultiSelectMode: true,\r\n\t\t\t\tButtonAdd: false,\r\n\t\t\t\tSubjectEntityId: this._subjectEntityId,\r\n\t\t\t\tSubjectRecordId: this._subjectRecordId,\r\n\t\t\t\tSubjectTypeId: this._subjectTypeId,\r\n\t\t\t\tShowSearchByLinkedDocuments: true\r\n\t\t\t});\r\n\r\n\t\t\tsearchScreen.On('RECORD_SELECTED', this, (eventArgs) => this.OnDocumentSelected(eventArgs.data));\r\n\r\n\t\t\tsearchScreen.On('RECORDS_SELECTED', this, (eventArgs) => {\r\n\t\t\t\tthis.OnDocumentsSelected(eventArgs.data.TableId, eventArgs.data.Ids);\r\n\t\t\t});\r\n\r\n\t\t\tsearchScreen.On(\"RECORDS_NOT_FOUND\", this, (eventArgs) => {\r\n\t\t\t\tif (firstSearchByMainRelations && searchScreen.GetFilterByRelationType() === SearchByMainRelationTypes.ByMainRelations) {\r\n\t\t\t\t\tNotifier.Warning(NOTIFICATIONS.NO_DATA_FOUND_WITH_APPLIED_FILTER);\r\n\t\t\t\t\tsearchScreen.SetFilterByRelationType(SearchByMainRelationTypes.Off);\r\n\t\t\t\t\tfirstSearchByMainRelations = false;\r\n\t\t\t\t} else if (firstSearchByRelations && searchScreen.GetFilterByRelationType() === SearchByMainRelationTypes.ByRelations) {\r\n\t\t\t\t\tNotifier.Warning(NOTIFICATIONS.NO_DATA_FOUND_WITH_APPLIED_FILTER);\r\n\t\t\t\t\tsearchScreen.SetFilterByRelationType(SearchByMainRelationTypes.Off);\r\n\t\t\t\t\tfirstSearchByRelations = false;\r\n\t\t\t\t} else if (firstSearchByLinkedDocuments && searchScreen.GetFilterByRelationType() === SearchByMainRelationTypes.ByLinkedDocuments) {\r\n\t\t\t\t\tNotifier.Warning(NOTIFICATIONS.NO_DATA_FOUND_WITH_APPLIED_FILTER);\r\n\t\t\t\t\tsearchScreen.SetFilterByRelationType(SearchByMainRelationTypes.Off);\r\n\t\t\t\t\tfirstSearchByLinkedDocuments = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tsearchScreen.Show();\r\n\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement) {\r\n\t\tBlockUI.Block({Target: el});\r\n\t\tTableStore.Get({TableName: \"DOCUMENTS\"})\r\n\t\t\t.then((table: any) => {\r\n\t\t\t\tthis._documentsEntityNameTranslation(table.TranslatedName || table.Name);\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUI.Unblock(el));\r\n\t}\r\n\r\n\tprivate OnDocumentSelected(record) {\r\n\t\tif (record && record.RecordId && record.Name) {\r\n\t\t\tconst attachment = new MailAttachmentModel();\r\n\r\n\t\t\tattachment.DocumentId = record.RecordId;\r\n\t\t\tattachment.Name = record.Name;\r\n\r\n\t\t\tthis._attachments.push(attachment);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate OnDocumentsSelected(entityId: number, recordIds: number[]) {\r\n\t\tlet getRecordsPromises = [];\r\n\r\n\t\tBlockUI.Block();\r\n\t\t_.each(recordIds, (recordId) => {\r\n\t\t\tgetRecordsPromises.push(RecordStore.GetRecord({TableId: entityId, RecordId: recordId}));\r\n\t\t});\r\n\r\n\t\tP.when(...getRecordsPromises)\r\n\t\t\t.always(() => BlockUI.Unblock())\r\n\t\t\t.then(() => {\r\n\t\t\t\t_.each(getRecordsPromises, (promise) => {\r\n\t\t\t\t\tconst nameField = promise.result && _.find(promise.result.Fields, (field: any)=> field.FieldName === 'NAME');\r\n\t\t\t\t\tif (promise.result && nameField && promise.result.RecordId && nameField.FieldValue) {\r\n\t\t\t\t\t\tconst attachment = new MailAttachmentModel();\r\n\r\n\t\t\t\t\t\tattachment.DocumentId = promise.result.RecordId;\r\n\t\t\t\t\t\tattachment.Name = nameField.FieldValue;\r\n\r\n\t\t\t\t\t\tthis._attachments.push(attachment);\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\tpublic AttachDocument(document: MailAttachmentModel) {\r\n\t\tthis._attachments.push(document);\r\n\t}\r\n\r\n\tset IsEnableAttachment(value: boolean) {\r\n\t\tthis._isEnableAttachment(value);\r\n\t}\r\n\r\n\tset IsEnableRemoveAttachment(value: boolean) {\r\n\t\tthis._isEnableRemoveAttachment(value);\r\n\t}\r\n}","// Module\nvar code = \"<span class=\\\"select2-result-repository clearfix\\\"> <!-- ko text: RecipientName --><!-- /ko --> <!-- ko if: Email --> (<!-- ko text: Email --><!-- /ko -->) <!-- /ko --> <!-- ko ifnot: Email --> (<span data-bind=\\\"event: { mouseup: $data.AddEmail }\\\" class=\\\"show-popup\\\">click</span> to add the email) <!-- /ko --> </span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\"text: RecipientName\\\" class=\\\"mail-recipient\\\"> </span>\";\n// Exports\nexport default code;","export var COMPOSER_EVENTS = {\r\n\tEMAIL_SENT: 'EMAIL_SENT',\r\n\tDISCARD: 'DISCARD',\r\n\tEMAIL_WAS_READ: 'EMAIL_WAS_READ'\r\n};\r\n\r\nexport var ADD_EMAIL_EVENTS = {\r\n\tEMAIL_SAVED: 'EMAIL_SAVED'\r\n};\r\n\r\nexport var MAIL_LIST_EVENTS = {\r\n\tLOAD_DATA: 'LOAD_DATA',\r\n\tSAVE_TO_CYBER_BOX: 'SAVE_TO_CYBER_BOX'\r\n};","export class RecordKeyModel {\r\n\tFieldId: number;\r\n\tRecordId: number;\r\n}\r\n\r\nexport class MailAttachmentModel {\r\n\tconstructor() {\r\n\t\tthis.RecordKeys = [];\r\n\t}\r\n\r\n\tpublic DocumentId: number;\r\n\tpublic Name: string;\r\n\r\n\tpublic DocumentFieldId: number;\r\n\tpublic RecordKeys: Array<RecordKeyModel>\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class MailTabModel {\r\n\tconstructor() {}\r\n\r\n\t@deserialize\r\n\tMailConnectionId: number;\r\n\t\r\n\t@deserialize\r\n\tLogin: string;\r\n\r\n\t@deserialize\r\n\tClient: string;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class AttachmentModel {\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tContent: string;\r\n}\r\n\r\nexport class MailRelatedUserData {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}\r\n\r\nexport class UnknownMail{\r\n\t@deserialize\r\n\tMail: string;\r\n\r\n\t@deserialize\r\n\tAddressTypeId: number;\r\n\r\n\t@deserialize\r\n\tAddressTypeName: string;\r\n}\r\n\r\nexport class MailRelatedItem {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tAddressTypeId: number;\r\n\r\n\t@deserialize\r\n\tAddressTypeName: string;\r\n}\r\n\r\nexport class MailRelatedTableData {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tAddressTypeFieldId: number;\r\n\r\n\t@deserializeAs(MailRelatedItem)\r\n\tItems: MailRelatedItem[];\r\n\r\n\tconstructor() {\r\n\t\tthis.Items = [];\r\n\t}\r\n}\r\n\r\nexport class MailRelatedData {\r\n\t@deserializeAs(MailRelatedUserData)\r\n\tUsers: MailRelatedUserData[];\r\n\r\n\t@deserializeAs(MailRelatedTableData)\r\n\tEntities: MailRelatedTableData[];\r\n\r\n\t@deserializeAs(UnknownMail)\r\n\tUnknownMails: Array<UnknownMail>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = [];\r\n\t\tthis.Entities = [];\r\n\t\tthis.UnknownMails = []\r\n\t}\r\n}\r\n\r\nexport class MailItemExtendedModel {\r\n\tconstructor() {\r\n\t\tthis.Attachments = [];\r\n\t}\r\n\r\n\t@deserializeAs(AttachmentModel)\r\n\tAttachments: Array<AttachmentModel>;\r\n\r\n\t@deserialize\r\n\tAttachmentsCount: number;\r\n\r\n\t@deserialize\r\n\tBody: string;\r\n\r\n\t@deserialize\r\n\tBodyText: string;\r\n\r\n\t@deserialize\r\n\tCc: string[];\r\n\r\n\t@deserialize\r\n\tDateTimeCreated: string;\r\n\r\n\t@deserialize\r\n\tDestinationMails: any[];\r\n\r\n\t@deserialize\r\n\tFromAddress: string;\r\n\r\n\t@deserialize\r\n\tFromName: string;\r\n\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\t@deserialize\r\n\tHasAttachments: boolean;\r\n\r\n\t@deserialize\r\n\tIsInCyberbox: boolean;\r\n\r\n\t@deserialize\r\n\tIsRead: boolean;\r\n\r\n\t@deserialize\r\n\tMailType: number;\r\n\r\n\t@deserialize\r\n\tSubject: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tPop3Index: number;\r\n\r\n\t@deserializeAs(MailRelatedData)\r\n\tMailRelatedData: MailRelatedData;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport * as ko from 'knockout';\r\n\r\nexport class MailItemModel {\r\n\tIsSelected: KnockoutObservable<boolean>;\r\n\tIsReadObservable: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis.IsSelected = ko.observable(false);\r\n\t\tthis.IsReadObservable = ko.observable();\r\n\t}\r\n\r\n\t@deserialize\r\n\tAttachmentsCount: number;\r\n\r\n\t@deserialize\r\n\tBody: string;\r\n\r\n\t@deserialize\r\n\tBodyText: string;\r\n\r\n\t@deserialize\r\n\tDateTimeCreated: string;\r\n\r\n\t@deserialize\r\n\tFromAddress: string;\r\n\r\n\t@deserialize\r\n\tFromName: string;\r\n\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\t@deserialize\r\n\tHasAttachments: boolean;\r\n\r\n\t@deserialize\r\n\tIsInCyberbox: boolean;\r\n\r\n\t@deserialize\r\n\tIsRead: boolean;\r\n\r\n\t@deserialize\r\n\tMailType: number;\r\n\r\n\t@deserialize\r\n\tPop3Index: number;\r\n\r\n\t@deserialize\r\n\tSubject: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n}","import { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { MailItemModel } from \"Core/Controls/Mail/Models/MailItemModel\";\r\n\r\nexport class GetMailsResponseModel {\r\n\tconstructor() {\r\n\t\tthis.Items = [];\r\n\t}\r\n\r\n\t@deserializeAs(MailItemModel)\r\n\tItems: MailItemModel[];\r\n\r\n\r\n\r\n\t@deserialize\r\n\tTotalItems: number;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class TagModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {TagModel} from 'Core/Controls/Mail/Models/TagModel';\r\n\r\nexport class LinkFromMailBody {\r\n constructor() {\r\n this.Tags = [];\r\n }\r\n\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserializeAs(TagModel)\r\n Tags: TagModel[];\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport { MailItemExtendedModel, MailRelatedData } from 'Core/Controls/Mail/Models/MailItemExtendedModel';\r\nimport {GetMailsResponseModel} from 'Core/Controls/Mail/Models/GetMailsResponseModel';\r\nimport { LinkFromMailBody } from 'Core/Controls/Mail/Models/LinkFromMailBody';\r\n\r\nexport interface IGetMailFolderRequestModel {\r\n\tMailConnectionId: number;\r\n\tPageSize: number;\r\n\tPage: number;\r\n}\r\n\r\nexport interface ISaveMailToCyberBoxRequestModel {\r\n\tGuid: string;\r\n}\r\n\r\nexport interface IRecipientModel {\r\n\tMailConnectionId: number;\r\n\tContactId: number;\r\n\tMailTo: string;\r\n}\r\n\r\nexport interface IDestinationMail {\r\n\tName?: string;\r\n\tRecordId: number;\r\n\tTableId: number;\r\n\tMail: string;\r\n}\r\n\r\nexport interface ICcRecipientModel {\r\n\tName: string;\r\n\tRecordId: number;\r\n\tTableId: number;\r\n\tMail: string;\r\n}\r\n\r\nexport interface IBccRecipientModel {\r\n\tName: string;\r\n\tRecordId: number;\r\n\tTableId: number;\r\n\tMail: string;\r\n}\r\n\r\nexport interface IAttachmentModel {\r\n\tDocumentId: number;\r\n\tName: string;\r\n}\r\n\r\nexport interface IScreenshotModel {\r\n\tContent: string;\r\n\tName: string;\r\n}\r\n\r\nexport interface IDownloadAttachmentRequest {\r\n\tGuid: string;\r\n\tName: string;\r\n\tMailConnectionId: number;\r\n}\r\n\r\nexport interface IGetMailRelatedDataRequest {\r\n\tFrom: string;\r\n\tTo: Array<string>;\r\n\tCC: Array<string>;\r\n\tBCC: Array<string>;\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n}\r\n\r\nexport interface ISendMailRequestModel {\r\n\tMailConnectionId: number;\r\n\tMessageId: string;\r\n\tSubject: string;\r\n\tBody: string;\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tCcList?: Array<IDestinationMail>;\r\n\tBccList?: Array<IDestinationMail>;\r\n\tRecipients: Array<IDestinationMail>;\r\n\tAttachements: Array<IAttachmentModel>;\r\n\tScreenshots?: Array<IScreenshotModel>;\r\n\tAttachmentsRequest: Array<IDownloadAttachmentRequest>;\r\n\r\n}\r\n\r\nexport interface IGetMailById {\r\n\tMailConnectionId: number;\r\n\tGuid: string;\r\n\tIsIncludeAttachmentContent: boolean;\r\n}\r\n\r\nexport interface IMailListModelRequestModel {\r\n\tMailConnectionId: number;\r\n\tGuids: Array<string>;\r\n\tIsCyberBox: boolean;\r\n}\r\n\r\nexport interface IDownloadAttachmentRequestModel {\r\n\tMailConnectionId: number;\r\n\tGuid: string;\r\n\tName: string;\r\n}\r\n\r\nexport interface IDownloadAttachmentsRequestModel {\r\n\tMailConnectionId: number;\r\n\tGuid: string;\r\n\tNames: Array<string>;\r\n}\r\n\r\nexport interface IAddMailAddressRequestModel {\r\n\tRecordId: number;\r\n\tEntityId: number;\r\n\tMailAddress: string;\r\n}\r\n\r\nexport interface GetLinkDto {\r\n\tMailBody: string;\r\n\tSubject: string;\r\n}\r\n\r\nexport class MailStore {\r\n\tstatic GetMailFolder(params: IGetMailFolderRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/GetMails',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tconst model = GenericDeserialize<GetMailsResponseModel>(data.ResultObject, GetMailsResponseModel);\r\n\r\n\t\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetDestinationMails(params: any): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/GetDestinationMails',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMailRelatedData(params: IGetMailRelatedDataRequest): P.Promise<MailRelatedData> {\r\n\t\tconst deferredResult = P.defer<MailRelatedData>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/GetMailRelatedData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tconst model = GenericDeserialize<MailRelatedData>(data.ResultObject, MailRelatedData);\r\n\t\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMailTabs(): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\tcacheRequest: true,\r\n\t\t\t\turl: '/api/MailApi/GetMailTabs',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tconst model = Deserialize(data.ResultList);\r\n\r\n\t\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic SaveMailToCyberBox(params: ISaveMailToCyberBoxRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/MailApi/SaveMailToCyberBox',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic SendMail(params: ISendMailRequestModel, type: string = 'SendMail'): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: `/api/MailApi/${type}`,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMailById(params: IGetMailById): P.Promise<MailItemExtendedModel> {\r\n\t\tconst deferredResult = P.defer<MailItemExtendedModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/GetMailById',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tconst model = GenericDeserialize<MailItemExtendedModel>(data.ResultObject, MailItemExtendedModel);\r\n\t\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic MarkAsRead(params: IMailListModelRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/MarkAsRead',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic MarkAsUnRead(params: IMailListModelRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/MarkAsUnRead',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeleteMails(params: IMailListModelRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/DeleteMails',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DownloadAttachment(params: IDownloadAttachmentRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/DownloadAttachment',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DownloadAttachments(params: IDownloadAttachmentsRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/DownloadAttachments',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic AddMailAddress(params: IAddMailAddressRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/AddMailAddress',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetLink(params: GetLinkDto): P.Promise<LinkFromMailBody> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/GetLinkFromMailBody',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(GenericDeserialize<LinkFromMailBody>(data, LinkFromMailBody));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {deserialize, deserializeAs} from \"libs/cerialize\";\r\n\r\nexport class ItemModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.IsSelected = ko.observable(false);\r\n\t}\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tLabel: string;\r\n\r\n\tIsSelected: KnockoutObservable<boolean>;\r\n}\r\n\r\nexport class MultiSelectListModel {\r\n\t@deserializeAs(ItemModel)\r\n\tItems: Array<ItemModel>;\r\n\r\n\t@deserialize\r\n\tRecordsCount: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.Items = [];\r\n\t}\r\n}\r\n","import * as ko from 'knockout';\r\nimport {deserialize} from 'libs/cerialize';\r\n\r\nexport class CustomColumnValueModel {\r\n\r\n constructor(){\r\n this.Value = ko.observable('');\r\n }\r\n\r\n Value: KnockoutObservable<string>;\r\n\r\n @deserialize\r\n FieldType: string;\r\n\r\n @deserialize\r\n FieldName: string;\r\n\r\n @deserialize\r\n FieldFormat: string;\r\n\r\n public static OnDeserialized(instance : CustomColumnValueModel, json : any){\r\n instance.Value(json.Value);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {IControl} from \"../../IControl\";\r\nimport {CustomColumnValueModel} from \"./CustomColumnValueModel\";\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\n\r\nexport class TimeCellModel {\r\n\r\n constructor(){\r\n this.IsEditMode = ko.observable(null);\r\n this.IsActive = ko.observable(false);\r\n this.IsSelected = ko.observable(false); \r\n this.IsCopyTo = ko.observable(false); \r\n this.IsCopyFrom = ko.observable(false);\r\n }\r\n\r\n @deserialize\r\n TimeValue: string;\r\n\r\n @deserialize\r\n CellColor: string;\r\n\r\n @deserialize\r\n IsWeekend: boolean;\r\n\r\n @deserialize\r\n TimeAxis: string;\r\n\r\n @deserialize\r\n Button1RecordId: number;\r\n\r\n @deserialize\r\n Button1TableId: number;\r\n\r\n @deserialize\r\n Button1RecordName: string;\r\n\r\n @deserialize\r\n Button2RecordId: number;\r\n\r\n @deserialize\r\n Button2TableId: number;\r\n\r\n @deserialize\r\n Button2RecordName: string;\r\n\r\n IsActive: KnockoutObservable<boolean>;\r\n IsEditMode: KnockoutObservable<boolean>;\r\n IsSelected: KnockoutObservable<boolean>;\r\n IsCopyTo: KnockoutObservable<boolean>;\r\n IsCopyFrom: KnockoutObservable<boolean>;\r\n}\r\n\r\nexport class PlannerLevelRowModel {\r\n\r\n constructor(){\r\n this.IsExpanded = ko.observable(false);\r\n this.TimeLine = [];\r\n this.SubControls = ko.observableArray([]);\r\n this.CustomValues = [];\r\n this.IsActive = ko.observable(false);\r\n this.RowHeight = ko.observable(null);\r\n this.IsBlocked = ko.observable(false);\r\n }\r\n\r\n IsActive: KnockoutObservable<boolean>;\r\n\r\n @deserialize\r\n ControlId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n SubjectTypeId: number;\r\n\r\n @deserialize\r\n TotalRecords: number;\r\n\r\n @deserialize\r\n BarId: string;\r\n\r\n @deserialize\r\n SubjectId: number;\r\n\r\n @deserialize\r\n BarName: string;\r\n\r\n @deserialize\r\n RowColor: string;\r\n\r\n IsExpanded: KnockoutObservable<boolean>;\r\n\r\n @deserializeAs(TimeCellModel)\r\n TimeLine: Array<TimeCellModel>;\r\n\r\n @deserializeAs(CustomColumnValueModel)\r\n CustomValues: Array<CustomColumnValueModel>;\r\n \r\n @deserializeAs(IconModel)\r\n Button1Icon: IconModel;\r\n\r\n @deserialize\r\n Button1Query: string;\r\n\r\n @deserializeAs(IconModel)\r\n Button2Icon: IconModel;\r\n\r\n @deserialize\r\n Button2Query: string;\r\n\r\n @deserialize\r\n Button1TableName: string;\r\n\r\n @deserialize\r\n Button2TableName: string;\r\n\r\n SubControls: KnockoutObservableArray<IControl>;\r\n\r\n RowHeight: KnockoutObservable<number>;\r\n\r\n IsBlocked: KnockoutObservable<boolean>;\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {PlannerLevelRowModel, TimeCellModel} from \"../Models/PlannerLevelRowModel\";\r\nimport {IPlannerLevelParentRecords} from \"../PlannerLevel\";\r\n\r\nexport interface IGetPlannerLevelDataRequestModel {\r\n ControlId: number;\r\n ParentBarId: string;\r\n WeekNumber: number;\r\n StartDate: string;\r\n ViewType: string;\r\n IsRoot: boolean;\r\n RecordsPerPage: number;\r\n PageNumber: number;\r\n BarId?: string;\r\n ManagerId?: number;\r\n ParentRecords?: Array<IPlannerLevelParentRecords>;\r\n}\r\n\r\nexport interface ICreateLinkRequestModel {\r\n RecordId: number;\r\n ControlId: number;\r\n StartDate: string;\r\n ParentRecords: Array<IPlannerLevelParentRecords>;\r\n}\r\n\r\nexport interface IGetHigherResolutionPlanRequestModel {\r\n ControlId: number;\r\n ParentPlan: TimeCellModel;\r\n}\r\n\r\nexport class PlannerLevelStore {\r\n static GetPlannerLevelData(params: IGetPlannerLevelDataRequestModel): P.Promise<Array<PlannerLevelRowModel>> {\r\n let deferredResult = P.defer<Array<PlannerLevelRowModel>>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/PlannerApi/GetPlannerLevelData',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve( Deserialize(result.ResultObject, PlannerLevelRowModel));\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreateOrUpdatePlan(params: any): P.Promise<Array<PlannerLevelRowModel>> {\r\n let deferredResult = P.defer<Array<PlannerLevelRowModel>>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/PlannerApi/CreateOrUpdatePlan',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n deferredResult.reject({message: result.ErrorMessage});\r\n } else {\r\n deferredResult.resolve( Deserialize(result.ResultObject, PlannerLevelRowModel));\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UnlinkQueryRecord(params: any): P.Promise<Array<PlannerLevelRowModel>> {\r\n let deferredResult = P.defer<Array<PlannerLevelRowModel>>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/PlannerApi/UnlinkQueryRecord',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n deferredResult.reject({message: result.ErrorMessage});\r\n } else {\r\n deferredResult.resolve( Deserialize(result.ResultObject, PlannerLevelRowModel));\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreateOrUpdatePlans(params: any): P.Promise<Array<PlannerLevelRowModel>> {\r\n let deferredResult = P.defer<Array<PlannerLevelRowModel>>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/PlannerApi/CreateOrUpdatePlans',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n deferredResult.reject({message: result.ErrorMessage});\r\n } else {\r\n deferredResult.resolve( Deserialize(result.ResultObject, PlannerLevelRowModel));\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static LinkRecord(params: ICreateLinkRequestModel){\r\n let deferredResult = P.defer<any>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/PlannerApi/CreateLink',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(null);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetHigherResolutionPlan(params: IGetHigherResolutionPlanRequestModel): P.Promise<Array<PlannerLevelRowModel>> {\r\n let deferredResult = P.defer<Array<PlannerLevelRowModel>>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/PlannerApi/GetHigherResolutionPlan',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n deferredResult.reject({message: result.ErrorMessage});\r\n } else {\r\n deferredResult.resolve( Deserialize(result.ResultObject, PlannerLevelRowModel));\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n}","export const EVENTS = {\r\n MOUSE_OVER: 'MouseOver',\r\n MOUSE_OUT: 'MouseOut',\r\n UNSELECT_CELLS: 'UNSELECT_CELLS',\r\n KEY_DOWN: 'KEY_DOWN',\r\n UPDATE_PLAN: 'UPDATE_PLAN',\r\n UNLINK_QUERY_RECORD: 'UNLINK_QUERY_RECORD',\r\n HIGHER_RESOLUTION_PLANNING: 'HIGHER_RESOLUTION_PLANNING',\r\n COPY_CELL: 'COPY_CELL',\r\n RUN_QUERY1: 'RUN_QUERY1',\r\n RUN_QUERY2: 'RUN_QUERY2',\r\n DROPDOWN_CLOSED: 'DROPDOWN_CLOSED'\r\n}","// Module\nvar code = \"<div> <div class=\\\"query-buttons-wrapper\\\"> <!-- ko if: $data._query1Icon --> <a data-bind=\\\"click: RunQuery1, style: { color: 'red' }\\\" href=\\\"javascript:;\\\"> <!-- ko with: _query1Icon --> <div class=\\\"query-icon-wrapper\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </a> <!-- /ko --> <!-- ko if: $data._query2Icon --> <a data-bind=\\\"click: RunQuery2, style: { color: 'red' }\\\" href=\\\"javascript:;\\\"> <!-- ko with: _query2Icon --> <div class=\\\"query-icon-wrapper\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </a> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import { Modal } from \"Core/Common/Modal\";\r\nimport {Event} from 'Core/Common/Event'\r\nimport { PlannerLevelRowModel, TimeCellModel } from \"../Models/PlannerLevelRowModel\";\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport { EVENTS } from \"../Events\";\r\n\r\nimport Template from 'Core/Controls/PlannerLevel/RightBarCell/Templates/QueryButtons.html';\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\nko.templates['Core/Controls/PlannerLevel/RightBarCell/Templates/QueryButtons'] = Template;\r\n\r\nexport class QueryButtons extends Event {\r\n private readonly _id: string;\r\n private _dropDown: JBoxDropDown;\r\n\r\n private _query1Icon: Icon;\r\n private _query2Icon: Icon;\r\n\r\n constructor(barModel: PlannerLevelRowModel){\r\n super();\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this._dropDown = new JBoxDropDown({});\r\n\r\n if(barModel.Button1Icon){\r\n this._query1Icon = new Icon(barModel.Button1Icon); \r\n }\r\n \r\n if(barModel.Button2Icon){\r\n this._query2Icon = new Icon(barModel.Button2Icon); \r\n } \r\n this.AddEvent(EVENTS.RUN_QUERY1);\r\n this.AddEvent(EVENTS.RUN_QUERY2);\r\n this.AddEvent(EVENTS.DROPDOWN_CLOSED);\r\n }\r\n\r\n GetTemplateName(): string{\r\n return 'Core/Controls/PlannerLevel/RightBarCell/Templates/QueryButtons';\r\n }\r\n\r\n AfterRender(){}\r\n\r\n Show(target: any){\r\n this._dropDown = new JBoxDropDown({\r\n target: target || \".\" + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: true,\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: () => this._dropDown.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n blockScroll: false,\r\n maxWidth: \"calc(100% - 7px)\"\r\n },\r\n onOpen: () => {\r\n this._dropDown.SetContent({ content: Template as any });\r\n },\r\n onClose: () => {\r\n this.Trigger(EVENTS.DROPDOWN_CLOSED);\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n\r\n Close() {\r\n this._dropDown.Close();\r\n }\r\n\r\n RunQuery1(_, evt){\r\n this._dropDown.Close();\r\n this.Trigger(EVENTS.RUN_QUERY1); \r\n }\r\n\r\n RunQuery2(_, evt){\r\n this._dropDown.Close();\r\n this.Trigger(EVENTS.RUN_QUERY2);\r\n }\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from 'Core/Common/Event'\r\nimport {TimeCellModel, PlannerLevelRowModel} from \"../Models/PlannerLevelRowModel\";\r\nimport {EVENTS} from \"Core/Controls/PlannerLevel/Events\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport { FormatManager, FormatParams } from \"Core/Components/FormatManager/FormatManager\";\r\nimport {EVENTS as QUERY_RESULT_PAGE_EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport { GridRow } from \"Core/Controls/Grid/BaseGrid/GridRow/GridRow\";\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {KEY_CODES} from \"Core/Controls/PlannerLevel/KeyCodes\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\n\r\nimport View from 'Core/Controls/PlannerLevel/RightBarCell/Templates/View.html';\r\nimport Edit from 'Core/Controls/PlannerLevel/RightBarCell/Templates/Edit.html';\r\nimport Query from 'Core/Controls/PlannerLevel/RightBarCell/Templates/Query.html';\r\nimport { QueryButtons } from './QueryButtons';\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\n\r\nko.templates['Core/Controls/PlannerLevel/RightBarCell/Templates/View'] = View;\r\nko.templates['Core/Controls/PlannerLevel/RightBarCell/Templates/Edit'] = Edit;\r\nko.templates['Core/Controls/PlannerLevel/RightBarCell/Templates/Query'] = Query;\r\n\r\nexport class RightBarCell extends Event{\r\n private _model: TimeCellModel;\r\n private _barModel: PlannerLevelRowModel;\r\n private _value: KnockoutObservable<string>;\r\n private _displayValue: KnockoutComputed<string>;\r\n private _cellClasses: KnockoutComputed<string>;\r\n public TemplateName: KnockoutComputed<string>;\r\n private _el: HTMLElement;\r\n private _query1Icon: KnockoutObservable<Icon>;\r\n private _query1RecordName: KnockoutObservable<string>;\r\n private _query2Icon: KnockoutObservable<Icon>;\r\n private _query2RecordName: KnockoutObservable<string>;\r\n private _dropdownShown: KnockoutObservable<boolean>;\r\n\r\n private _editorWidth: KnockoutObservable<string>;\r\n private _editorHeight: KnockoutObservable<string>;\r\n private _isHightResolutionPlanning: boolean;\r\n private _readOnly: boolean;\r\n private _hideQueryButtons: boolean;\r\n CopyCellMode: boolean;\r\n\r\n constructor(model: TimeCellModel, barModel: PlannerLevelRowModel, readonly: boolean, hideQueryButtons: boolean = false){\r\n super();\r\n this._barModel = barModel;\r\n this._hideQueryButtons = hideQueryButtons;\r\n this._query1RecordName = ko.observable(model.Button1RecordName);\r\n this._query2RecordName = ko.observable(model.Button2RecordName);\r\n this._query1Icon = ko.observable(null);\r\n this._query2Icon = ko.observable(null);\r\n this._dropdownShown = ko.observable(false);\r\n\r\n if(barModel.Button1Icon){\r\n this._query1Icon(new Icon(barModel.Button1Icon)); \r\n }\r\n \r\n if(barModel.Button2Icon){\r\n this._query2Icon(new Icon(barModel.Button2Icon));\r\n } \r\n\r\n this._value = ko.observable(null);\r\n this._editorWidth = ko.observable('30px');\r\n this._editorHeight = ko.observable('30px');\r\n this._readOnly = readonly;\r\n\r\n this._displayValue = ko.computed(()=> this._value() === '0' ? '' : this._value());\r\n\r\n this._model = model;\r\n this._cellClasses = ko.computed(()=>{\r\n return `${this._model.IsActive() ? 'active-cell': ''} ${this._model.IsSelected() ? 'selected-cell': ''} ${this._model.IsCopyTo() ? 'copy-to-column': ''} ${this._model.IsCopyFrom() ? 'copy-from-column': ''}`;\r\n });\r\n\r\n this.TemplateName = ko.computed(()=>{\r\n if(this._barModel.Button1Icon || this._barModel.Button2Icon){\r\n return 'Core/Controls/PlannerLevel/RightBarCell/Templates/Query';\r\n }\r\n\r\n return this._model.IsEditMode() ? 'Core/Controls/PlannerLevel/RightBarCell/Templates/Edit' : 'Core/Controls/PlannerLevel/RightBarCell/Templates/View';\r\n });\r\n\r\n this._model.IsSelected.subscribe((newValue) => {\r\n if(!newValue){\r\n this._model.IsEditMode(false);\r\n }\r\n });\r\n\r\n this._model.IsEditMode.subscribe((newValue) =>{\r\n if(!newValue){\r\n if(this.HasChanges()){\r\n this._model.TimeValue = this._value();\r\n this.Trigger(EVENTS.UPDATE_PLAN, { CellModel: this._model, CellElement: this._el });\r\n }\r\n }\r\n });\r\n\r\n this.Init();\r\n }\r\n\r\n\r\n get ShowQueryButtons(): boolean{\r\n return (this._query1Icon() || this._query2Icon()) && this.HasData || !this._hideQueryButtons;\r\n }\r\n\r\n HasChanges(){\r\n return parseFloat(this._value().replace(',', '.')) !== parseFloat(this._model.TimeValue.replace(',','.'));\r\n }\r\n\r\n get HasData(){\r\n return parseFloat(this._value().replace(',', '.')) !== 0\r\n || this.Model.Button1RecordId != 0\r\n || this.Model.Button2RecordId != 0;\r\n }\r\n\r\n SetCopyToValue(\r\n value: string,\r\n button1TableId: number,\r\n button1RecordId: number,\r\n button2TableId: number,\r\n button2RecordId: number,\r\n overwrite: boolean,\r\n copyQueryButton1: boolean,\r\n copyQueryButton2: boolean\r\n ){\r\n if(this.HasData && !overwrite) return;\r\n this._value(value);\r\n this._model.TimeValue = this._value();\r\n this.Trigger(EVENTS.UPDATE_PLAN, {\r\n CellModel: this._model,\r\n Button1RecordId: copyQueryButton1 ? button1RecordId : null,\r\n Button1TableId: button1TableId,\r\n Button2RecordId: copyQueryButton2 ? button2RecordId : null,\r\n Button2TableId: button2TableId,\r\n CellElement: this._el\r\n });\r\n }\r\n\r\n set IsHightResolutionPlanning(value: boolean){\r\n this._isHightResolutionPlanning = value;\r\n if(this._isHightResolutionPlanning){\r\n this._model.IsEditMode(false);\r\n }\r\n }\r\n\r\n SelectCell(){\r\n if(!this.ShowQueryButtons && (this._query1Icon() || this._query2Icon())){\r\n if(this._query1Icon() && !this._query2Icon()){\r\n this.RunQuery1();\r\n return;\r\n }\r\n\r\n if(this._query2Icon() && !this._query1Icon()){\r\n this.RunQuery2();\r\n return;\r\n }\r\n\r\n this.ShowQueryButtonsModal();\r\n return;\r\n }\r\n\r\n if(this.CopyCellMode){\r\n this.IsCopyTo(!this.IsCopyTo());\r\n return;\r\n }\r\n\r\n if(!this._model.IsEditMode()){\r\n this.Trigger(EVENTS.UNSELECT_CELLS, { CellModel: this._model });\r\n this._model.IsSelected(true);\r\n }\r\n }\r\n\r\n ShowQueryButtonsModal(){\r\n let queryButtonsDropdown = new QueryButtons(this._barModel), target = event.target;\r\n queryButtonsDropdown.On(EVENTS.RUN_QUERY1, this, this.RunQuery1);\r\n queryButtonsDropdown.On(EVENTS.RUN_QUERY2, this, this.RunQuery2);\r\n queryButtonsDropdown.On(EVENTS.DROPDOWN_CLOSED, this, () => {this._dropdownShown(false)});\r\n if (!this._dropdownShown()) {\r\n queryButtonsDropdown.Show(target);\r\n this._dropdownShown(true);\r\n } else {\r\n queryButtonsDropdown.Close();\r\n this._dropdownShown(false)\r\n }\r\n }\r\n\r\n Init(){\r\n this._value(this.FormatValue(this._model.TimeValue));\r\n this.AddEvent(EVENTS.MOUSE_OVER);\r\n this.AddEvent(EVENTS.MOUSE_OUT);\r\n this.AddEvent(EVENTS.UNSELECT_CELLS);\r\n this.AddEvent(EVENTS.KEY_DOWN);\r\n this.AddEvent(EVENTS.UPDATE_PLAN);\r\n this.AddEvent(EVENTS.HIGHER_RESOLUTION_PLANNING);\r\n this.AddEvent(EVENTS.UNLINK_QUERY_RECORD);\r\n this.AddEvent(EVENTS.COPY_CELL);\r\n }\r\n\r\n MouseOver(){\r\n this.Trigger(EVENTS.MOUSE_OVER, { CellModel: this._model });\r\n }\r\n\r\n MouseOut(){\r\n this.Trigger(EVENTS.MOUSE_OUT, { CellModel: this._model });\r\n }\r\n\r\n StartEdit(){\r\n if(!this._readOnly) {\r\n if (!this._isHightResolutionPlanning) {\r\n if (!this._model.IsEditMode()) {\r\n this._model.IsEditMode(true);\r\n }\r\n } else {\r\n this.Trigger(EVENTS.HIGHER_RESOLUTION_PLANNING, {CellModel: this._model});\r\n }\r\n }\r\n }\r\n\r\n KeyDown(cell: RightBarCell, event){\r\n if (event.keyCode !== KEY_CODES.ENTER\r\n && event.keyCode !== KEY_CODES.UP\r\n && event.keyCode !== KEY_CODES.LEFT\r\n && event.keyCode !== KEY_CODES.RIGHT\r\n && event.keyCode !== KEY_CODES.DOWN\r\n ) {\r\n\r\n if(this._isHightResolutionPlanning && !this._readOnly){\r\n this.Trigger(EVENTS.HIGHER_RESOLUTION_PLANNING, { CellModel: this._model });\r\n return false;\r\n }\r\n\r\n if (!this._readOnly && !this._model.IsEditMode()) {\r\n let positionInfo = this._el.getBoundingClientRect();\r\n this._editorHeight(`${positionInfo.height}px`);\r\n this._editorWidth(`${positionInfo.width}px`);\r\n\r\n this._model.IsEditMode(true);\r\n if (!isNaN(event.key)) {\r\n this._value(event.key);\r\n return false;\r\n }\r\n } else {\r\n return true;\r\n }\r\n\r\n } else {\r\n this.Trigger(EVENTS.KEY_DOWN, { CellModel: this._model, Event: event, CellElement: this._el });\r\n }\r\n\r\n return false;\r\n }\r\n\r\n get IsSelected(): KnockoutObservable<boolean>{\r\n return this._model.IsSelected;\r\n }\r\n\r\n get IsCopyTo(): KnockoutObservable<boolean>{\r\n return this._model.IsCopyTo;\r\n }\r\n\r\n get IsCopyFrom(): KnockoutObservable<boolean>{\r\n return this._model.IsCopyFrom;\r\n }\r\n\r\n get CellColor(): string {\r\n return this._model.CellColor;\r\n }\r\n\r\n get Value(): KnockoutObservable<string>{\r\n return this._value;\r\n }\r\n\r\n get TimeAxis(){\r\n return this._model.TimeAxis;\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>){\r\n this._el = elements[0];\r\n }\r\n\r\n SetValue(model: TimeCellModel){\r\n this._model.TimeValue = model.TimeValue;\r\n this._model.Button1RecordId = model.Button1RecordId;\r\n this._model.Button2RecordId = model.Button2RecordId;\r\n this._model.Button1TableId = model.Button1TableId;\r\n this._model.Button2TableId = model.Button2TableId;\r\n this._query1RecordName(model.Button1RecordName);\r\n this._query2RecordName(model.Button2RecordName);\r\n this._value(this.FormatValue(this._model.TimeValue));\r\n }\r\n\r\n FormatValue(value: string){\r\n return FormatConverter.LocalizeDecimalOrInteger(value);\r\n }\r\n\r\n RunQuery1(_ = null, evt=null){\r\n \r\n if(evt && evt.ctrlKey && this._model.Button1RecordId){\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, { EntityId: this._model.Button1TableId, RecordId: this._model.Button1RecordId, IsOpenInModal: true});\r\n return;\r\n }\r\n\r\n if(this.CopyCellMode){\r\n return;\r\n }\r\n\r\n let formatManager = new FormatManager({Value: null, Format: null, TableId: null, RecordId: null});\r\n formatManager.RunQuery(this._barModel.Button1Query, ViewModes[ViewModes.Query], '', '', true, this._model.TimeAxis, false);\r\n\r\n formatManager.On(QUERY_RESULT_PAGE_EVENTS.RECORDS_SELECTED, this, (evtArgs) => {\r\n let gridRow = (evtArgs.data.SelectedRecords as Array<GridRow>)[0];\r\n\r\n if(gridRow){\r\n\r\n if(this._query1RecordName()){\r\n this.ConfirmUnlink(gridRow.EntityId, gridRow.RecordId, null, null);\r\n }else{\r\n this.LinkRecordFromQuery(gridRow.EntityId, gridRow.RecordId, null, null);\r\n }\r\n }\r\n });\r\n }\r\n\r\n RunQuery2(_ = null, evt=null){\r\n\r\n if(evt && evt.ctrlKey && this._model.Button2RecordId){\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, { EntityId: this._model.Button2TableId, RecordId: this._model.Button2RecordId, IsOpenInModal: true});\r\n return;\r\n }\r\n\r\n if(this.CopyCellMode){\r\n return;\r\n }\r\n\r\n let formatManager = new FormatManager({Value: null, Format: null, TableId: null, RecordId: null});\r\n formatManager.RunQuery( this._barModel.Button2Query, ViewModes[ViewModes.Query], '', '', true, this._model.TimeAxis, false);\r\n\r\n formatManager.On(QUERY_RESULT_PAGE_EVENTS.RECORDS_SELECTED, this, (evtArgs) => {\r\n let gridRow = (evtArgs.data.SelectedRecords as Array<GridRow>)[0];\r\n if(gridRow){\r\n if(this._query2RecordName()){\r\n this.ConfirmUnlink(null, null, gridRow.EntityId, gridRow.RecordId);\r\n }else{\r\n this.LinkRecordFromQuery(null, null, gridRow.EntityId, gridRow.RecordId);\r\n }\r\n } \r\n });\r\n }\r\n\r\n ConfirmUnlink(\r\n button1TableId: number,\r\n button1RecordId: number,\r\n button2TableId: number,\r\n button2RecordId: number\r\n ){\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: NOTIFICATIONS.UNLINK_QUERY_RECORD,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.OK,\r\n TextDecline: LABELS.CANCEL\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.LinkRecordFromQuery(button1TableId, button1RecordId, button2TableId, button2RecordId);\r\n });\r\n \r\n confirmationDialog.Show();\r\n }\r\n\r\n LinkRecordFromQuery(\r\n button1TableId: number,\r\n button1RecordId: number,\r\n button2TableId: number,\r\n button2RecordId: number\r\n ){\r\n this.Trigger(EVENTS.UPDATE_PLAN, {\r\n CellModel: this._model,\r\n Button1RecordId: button1RecordId,\r\n Button1TableId: button1TableId,\r\n Button2RecordId: button2RecordId,\r\n Button2TableId: button2TableId,\r\n CellElement: this._el\r\n });\r\n }\r\n\r\n BuildButton1ContextMenu(cell: RightBarCell){\r\n\r\n let items = {\r\n \"copy\": { name: LABELS.COPY }\r\n };\r\n\r\n if(this._query1RecordName()){\r\n items[\"unlink\"] = { name: LABELS.UNLINK_RECORD_LABEL }\r\n }\r\n\r\n return {\r\n callback: function(key) {\r\n if(key == 'copy'){\r\n cell.Trigger(EVENTS.COPY_CELL);\r\n cell.IsCopyFrom(true);\r\n }\r\n\r\n if(key == 'unlink'){\r\n cell.Trigger(EVENTS.UNLINK_QUERY_RECORD, {\r\n CellModel: cell._model,\r\n ButtonRecordId: cell._model.Button1RecordId,\r\n ButtonTableId: cell._model.Button1TableId,\r\n CellElement: this._el\r\n }); \r\n }\r\n },\r\n items: items\r\n };\r\n }\r\n\r\n BuildButton2ContextMenu(cell: RightBarCell){\r\n let items = {\r\n \"copy\": { name: LABELS.COPY }\r\n };\r\n\r\n if(this._query2RecordName()){\r\n items[\"unlink\"] = { name: LABELS.UNLINK_RECORD_LABEL }\r\n }\r\n\r\n return {\r\n callback: function(key) {\r\n\r\n if(key == 'copy'){\r\n cell.Trigger(EVENTS.COPY_CELL);\r\n cell.IsCopyFrom(true);\r\n }\r\n\r\n if(key == 'unlink'){\r\n cell.Trigger(EVENTS.UNLINK_QUERY_RECORD, {\r\n CellModel: cell._model,\r\n ButtonRecordId: cell._model.Button2RecordId,\r\n ButtonTableId: cell._model.Button2TableId,\r\n CellElement: this._el\r\n });\r\n }\r\n\r\n },\r\n items: items\r\n };\r\n }\r\n\r\n BuildButtonContextMenu(cell: RightBarCell){\r\n let items = {\r\n \"copy\": { name: LABELS.COPY }\r\n };\r\n\r\n return {\r\n callback: function(key) {\r\n if(key == 'copy'){\r\n cell.Trigger(EVENTS.COPY_CELL);\r\n cell.IsCopyFrom(true);\r\n }\r\n },\r\n items: items\r\n };\r\n }\r\n\r\n get Model(): TimeCellModel{\r\n return this._model;\r\n }\r\n}","// Module\nvar code = \"<td data-bind=\\\"text: $data._displayValue,\\r\\n class: $data._cellClasses,\\r\\n contextMenu: { enabled: !$data._readOnly, build: $data.BuildButtonContextMenu.bind($data, $data) },\\r\\n style:{ 'background-color': CellColor },\\r\\n click: $data.SelectCell.bind($data),\\r\\n hasFocus: $data.IsSelected,\\r\\n event: {\\r\\n mouseover: $data.MouseOver.bind($data),\\r\\n mouseout: $data.MouseOut.bind($data),\\r\\n keydown: $data.KeyDown.bind($data),\\r\\n dblclick: $data.StartEdit.bind($data)\\r\\n },\\\" tabindex=\\\"0\\\" class=\\\"planner-table-number-cell\\\"></td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td data-bind=\\\"class: $data._cellClasses,\\r\\n click: $data.SelectCell.bind($data),\\r\\n style:{ 'background-color': CellColor },\\r\\n event: {\\r\\n mouseover: $data.MouseOver.bind($data),\\r\\n mouseout: $data.MouseOut.bind($data)\\r\\n },\\\" tabindex=\\\"0\\\" class=\\\"planner-table-number-cell edit-cell\\\"> <input data-bind=\\\"\\r\\n textInput: $data.Value,\\r\\n hasFocus: $data.IsSelected,\\r\\n contextMenu: { enabled: !$data._readOnly, build: $data.BuildButtonContextMenu.bind($data, $data) },\\r\\n keydownBubble: false,\\r\\n event: {\\r\\n keydown: $data.KeyDown.bind($data)\\r\\n },\\r\\n inputMask: {\\r\\n value: $data.Value,\\r\\n type: 'Decimal',\\r\\n decimalSize: 2\\r\\n },\\r\\n style: {\\r\\n width: $data._editorWidth,\\r\\n height: $data._editorHeight\\r\\n }\\r\\n \\\" type=\\\"text\\\" data-with-number-group-separators=\\\"true\\\"> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td data-bind=\\\"class: $data._cellClasses,\\r\\n click: $data.SelectCell.bind($data),\\r\\n style:{ 'background-color': CellColor },\\r\\n event: {\\r\\n mouseover: $data.MouseOver.bind($data),\\r\\n mouseout: $data.MouseOut.bind($data)\\r\\n },\\\" tabindex=\\\"0\\\" class=\\\"planner-table-number-cell edit-cell\\\"> <!-- ko if: $data.ShowQueryButtons --> <div class=\\\"queryIconBox\\\"> <!-- ko if: _query1Icon --> <a data-bind=\\\"contextMenu: { build: $data.BuildButton1ContextMenu.bind($data, $data) }, click: RunQuery1, attr: { title: _query1RecordName }, style: { color: _query1RecordName() ? 'black' : 'red' }\\\" href=\\\"javascript:;\\\"> <!-- ko with: _query1Icon --> <div class=\\\"\\\" data-bind=\\\"css: {'query2' : $parent._query1Icon && $parent._query2Icon, 'query1' : $parent._query1Icon}\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </a> <!-- /ko --> <!-- ko if: _query2Icon --> <a data-bind=\\\"contextMenu: { build: $data.BuildButton2ContextMenu.bind($data, $data) }, click: RunQuery2, attr: { title: _query2RecordName }, style: { color: _query2RecordName() ? 'black' : 'red' }\\\" href=\\\"javascript:;\\\"> <!-- ko with: _query2Icon --> <div class=\\\"\\\" data-bind=\\\"css: {'query2' : $parent._query1Icon && $parent._query2Icon}\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </a> <!-- /ko --> </div> <!-- /ko --> </td>\";\n// Exports\nexport default code;","export const KEY_CODES = {\r\n LEFT: 37,\r\n RIGHT: 39,\r\n DOWN: 40,\r\n UP: 38,\r\n ENTER: 13,\r\n BACKSPACE: 8\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\nimport {Event} from 'Core/Common/Event'\r\nimport {PlannerLevelRowModel, TimeCellModel} from \"../Models/PlannerLevelRowModel\";\r\nimport {RightBarCell} from \"Core/Controls/PlannerLevel/RightBarCell/RightBarCell\";\r\nimport {EVENTS} from \"Core/Controls/PlannerLevel/Events\";\r\nimport {PlannerLevel} from \"../PlannerLevel\";\r\n\r\nimport Template from 'Core/Controls/PlannerLevel/RightBarRow/Templates/RightBarRow.html';\r\nko.templates['Core/Controls/PlannerLevel/RightBarRow/Templates/RightBarRow'] = Template;\r\n\r\nexport interface IRightBarRowOptions {\r\n Model: PlannerLevelRowModel;\r\n Level: number;\r\n ReadOnly: boolean,\r\n HideQueryButtons: boolean;\r\n}\r\n\r\nexport class RightBarRow extends Event{\r\n private _model: PlannerLevelRowModel;\r\n private _cells: KnockoutObservableArray<RightBarCell>;\r\n private _level: number;\r\n public _barClasses: KnockoutComputed<string>;\r\n private _readOnly: boolean;\r\n private _copyCellMode: boolean;\r\n private _hideQueryButtons: boolean;\r\n\r\n constructor(options: IRightBarRowOptions){\r\n super();\r\n this._model = options.Model;\r\n this._level = options.Level;\r\n this._hideQueryButtons = options.HideQueryButtons;\r\n this._cells = ko.observableArray([]);\r\n this._readOnly = options.ReadOnly;\r\n this._barClasses = ko.computed(()=>{\r\n return `level-${this._level} ${this._model.IsExpanded() ? 'open': ''} ${this._model.IsActive() ? 'active-row' : ''}`;\r\n });\r\n this.Init();\r\n }\r\n\r\n Init(){\r\n this.AddEvent(EVENTS.MOUSE_OVER);\r\n this.AddEvent(EVENTS.MOUSE_OUT);\r\n this.AddEvent(EVENTS.UNSELECT_CELLS);\r\n this.AddEvent(EVENTS.KEY_DOWN);\r\n this.AddEvent(EVENTS.UPDATE_PLAN);\r\n this.AddEvent(EVENTS.HIGHER_RESOLUTION_PLANNING);\r\n this.AddEvent(EVENTS.UNLINK_QUERY_RECORD);\r\n this.AddEvent(EVENTS.COPY_CELL);\r\n\r\n let cells = _.map(this._model.TimeLine, (timeCell) => {\r\n let cell = new RightBarCell(timeCell, this._model, this._readOnly, this._hideQueryButtons);\r\n cell.On(EVENTS.MOUSE_OVER, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.MOUSE_OVER, { CellModel: eventArgs.data.CellModel } );\r\n this._model.IsActive(true);\r\n });\r\n\r\n cell.On(EVENTS.MOUSE_OUT, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.MOUSE_OUT, { CellModel: eventArgs.data.CellModel } );\r\n this._model.IsActive(false);\r\n });\r\n\r\n cell.On(EVENTS.UNSELECT_CELLS, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.UNSELECT_CELLS, { CellModel: eventArgs.data.CellModel } );\r\n });\r\n\r\n cell.On(EVENTS.KEY_DOWN, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.KEY_DOWN, { CellModel: eventArgs.data.CellModel, Event: eventArgs.data.Event, RowModel: this._model, CellElement: eventArgs.data.CellElement } );\r\n });\r\n\r\n cell.On(EVENTS.UPDATE_PLAN, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.UPDATE_PLAN, {\r\n CellModel: eventArgs.data.CellModel,\r\n Button1RecordId: eventArgs.data.Button1RecordId,\r\n Button1TableId: eventArgs.data.Button1TableId,\r\n Button2RecordId: eventArgs.data.Button2RecordId,\r\n Button2TableId: eventArgs.data.Button2TableId,\r\n RowModel: this._model,\r\n CellElement: eventArgs.data.CellElement\r\n });\r\n });\r\n\r\n \r\n cell.On(EVENTS.UNLINK_QUERY_RECORD, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.UNLINK_QUERY_RECORD, {\r\n CellModel: eventArgs.data.CellModel,\r\n ButtonRecordId: eventArgs.data.ButtonRecordId,\r\n ButtonTableId: eventArgs.data.ButtonTableId,\r\n RowModel: this._model,\r\n CellElement: eventArgs.data.CellElement\r\n });\r\n });\r\n\r\n cell.On(EVENTS.HIGHER_RESOLUTION_PLANNING, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.HIGHER_RESOLUTION_PLANNING, { CellModel: eventArgs.data.CellModel, RowModel: this._model } );\r\n });\r\n\r\n cell.On(EVENTS.COPY_CELL, this, () => {\r\n this.Trigger(EVENTS.COPY_CELL);\r\n \r\n this._copyCellMode = true;\r\n _.each(this._cells(), (item)=>{\r\n\r\n item.CopyCellMode = true;\r\n if(cell != item){\r\n item.IsCopyFrom(false);\r\n } \r\n item.IsCopyTo(false);\r\n });\r\n\r\n });\r\n\r\n return cell;\r\n });\r\n this._cells(cells);\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Controls/PlannerLevel/RightBarRow/Templates/RightBarRow';\r\n }\r\n\r\n get IsExpanded(): KnockoutObservable<boolean>{\r\n return this._model.IsExpanded;\r\n }\r\n\r\n get SubControls(){\r\n return this._model.SubControls;\r\n }\r\n\r\n set IsHightResolutionPlanning(value: boolean){\r\n _.each(this._cells(), (cell) => {\r\n cell.IsHightResolutionPlanning = value;\r\n });\r\n\r\n _.each(this._model.SubControls(), (subControl)=>{\r\n if(subControl instanceof PlannerLevel){\r\n subControl.IsHightResolutionPlanning = value;\r\n }\r\n });\r\n }\r\n\r\n SelectCell(cellIndex: number){\r\n let cell = this._model.TimeLine[cellIndex];\r\n if(cell){\r\n cell.IsSelected(true);\r\n }\r\n }\r\n\r\n IsCopyToCellSelected(cellIndex: number){\r\n let selected = false;\r\n let cell = this._model.TimeLine[cellIndex];\r\n\r\n if(cell){\r\n selected = cell.IsCopyTo();\r\n }\r\n return selected;\r\n }\r\n\r\n SelectCopyToCell(cellIndex: number){\r\n let cell = this._model.TimeLine[cellIndex];\r\n if(cell){\r\n cell.IsCopyTo(true);\r\n }\r\n }\r\n\r\n SelectCopyFromCell(cellIndex: number){\r\n let cell = this._model.TimeLine[cellIndex];\r\n if(cell){\r\n cell.IsCopyFrom(true);\r\n }\r\n }\r\n\r\n get CopyFromCellIndex(): number{\r\n let copyFromCell = _.find(this._model.TimeLine, (item)=>{ return item.IsCopyFrom() });\r\n return this._model.TimeLine.indexOf(copyFromCell);\r\n }\r\n\r\n UnSelectCopyFromCells(){\r\n _.each(this._cells(), cell =>{\r\n cell.IsCopyFrom(false);\r\n cell.CopyCellMode = false;\r\n });\r\n }\r\n\r\n UnSelectCopyToCell(cellIndex: number){\r\n let cell = this._model.TimeLine[cellIndex];\r\n if(cell){\r\n cell.IsCopyTo(false);\r\n }\r\n }\r\n\r\n UnSelectCopyToCells(){\r\n _.each(this._cells(), cell =>{\r\n cell.IsCopyTo(false);\r\n });\r\n }\r\n\r\n get BarId(){\r\n return this._model.BarId;\r\n }\r\n\r\n UpdateCells(cellModels: Array<TimeCellModel>){\r\n _.each(cellModels, (cellModel) => {\r\n let cellToUpdate = _.find(this._cells(), (cell) =>{\r\n return cell.TimeAxis === cellModel.TimeAxis;\r\n });\r\n\r\n if(cellToUpdate){\r\n cellToUpdate.SetValue(cellModel);\r\n }\r\n });\r\n }\r\n\r\n get Height(): KnockoutObservable<number>{\r\n return this._model.RowHeight;\r\n }\r\n\r\n get RowColor(){\r\n return this._model.RowColor;\r\n }\r\n\r\n AfterRender(){}\r\n\r\n CopyCell(copyFromIndex: number, overwrite: boolean, copyQueryButton1: boolean, copyQueryButton2: boolean){\r\n let copyFromCell = this._cells()[copyFromIndex];\r\n _.each(this._cells(), (cell)=>{\r\n if(cell.IsCopyTo()){\r\n cell.SetCopyToValue(\r\n copyFromCell.Value(),\r\n copyFromCell.Model.Button1TableId,\r\n copyFromCell.Model.Button1RecordId,\r\n copyFromCell.Model.Button2TableId,\r\n copyFromCell.Model.Button2RecordId,\r\n overwrite,\r\n copyQueryButton1,\r\n copyQueryButton2\r\n );\r\n cell.IsCopyTo(false);\r\n }\r\n });\r\n }\r\n\r\n get HasData(): boolean{\r\n let hasData = false;\r\n _.each(this._cells(), (cell) =>{\r\n if(cell.IsCopyTo() && cell.HasData){\r\n hasData = true;\r\n }\r\n });\r\n return hasData;\r\n }\r\n\r\n get HasAnyData(): boolean{\r\n let hasData = false;\r\n _.each(this._cells(), (cell) =>{\r\n if(cell.HasData){\r\n hasData = true;\r\n }\r\n });\r\n return hasData;\r\n }\r\n}","// Module\nvar code = \"<tr data-bind=\\\"fastForEach: { data: _cells },\\r\\n class: $data._barClasses,\\r\\n style: {\\r\\n 'background-color' : $data.RowColor\\r\\n },\\r\\n attr: { height: $data.Height }\\\" class=\\\"planner-table-row\\\"> <!-- ko template: { name: $data.TemplateName, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> </tr> <!-- ko if: IsExpanded --> <!-- ko foreach: SubControls --> <!-- ko template: { name: $data.GetRightBarTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","export const EVENTS = {\r\n SAVE: 'SAVE'\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\nimport * as moment from \"moment\";\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {PlannerLevelRowModel, TimeCellModel} from \"../Models/PlannerLevelRowModel\";\r\nimport {Event} from 'Core/Common/Event'\r\nimport {EVENTS} from 'Core/Controls/PlannerLevel/HigherResolutionPlanning/Events';\r\n\r\nimport Template from 'Core/Controls/PlannerLevel/HigherResolutionPlanning/Templates/HigherResolutionPlanning.html';\r\nimport {RightBarCell} from \"../RightBarCell/RightBarCell\";\r\nimport {FormatConverter} from \"../../../../FormatEditor/FormatConverter\";\r\nko.templates['Core/Controls/PlannerLevel/HigherResolutionPlanning/Templates/HigherResolutionPlanning'] = Template;\r\n\r\nexport class HigherResolutionPlanning extends Event{\r\n private _modal: Modal;\r\n private _higherResolutionsPlanning: PlannerLevelRowModel;\r\n private _parentPlan: TimeCellModel;\r\n private _barName: string;\r\n Cells: Array<RightBarCell>;\r\n\r\n constructor(\r\n higherResolutionPlanning: PlannerLevelRowModel,\r\n parentPlan: TimeCellModel,\r\n barName: string\r\n ){\r\n super();\r\n this._higherResolutionsPlanning = higherResolutionPlanning;\r\n this._parentPlan = parentPlan;\r\n this._barName = barName;\r\n this.Cells = [];\r\n\r\n if(!this.HasAnyPlanning()){\r\n this.CalculatePlanning();\r\n }\r\n\r\n _.each(this._higherResolutionsPlanning.TimeLine, (timeLine) =>{\r\n let cell = new RightBarCell(timeLine, this._higherResolutionsPlanning, false);\r\n this.Cells.push(cell);\r\n });\r\n\r\n this.AddEvent(EVENTS.SAVE)\r\n }\r\n\r\n CalculatePlanning(){\r\n let value = Math.floor(parseFloat(this._parentPlan.TimeValue.replace(',','.'))/this._higherResolutionsPlanning.TimeLine.length);\r\n\r\n if(value > 0){\r\n _.each(this._higherResolutionsPlanning.TimeLine, (item) =>{\r\n item.TimeValue = this.FormatValue(value.toString());\r\n\r\n if(this._higherResolutionsPlanning.TimeLine.indexOf(item) === this._higherResolutionsPlanning.TimeLine.length -1){\r\n item.TimeValue = this.FormatValue((parseFloat(item.TimeValue.replace(',', '.'))\r\n + parseFloat(this._parentPlan.TimeValue.replace(',', '.'))%this._higherResolutionsPlanning.TimeLine.length).toString());\r\n }\r\n });\r\n }else{\r\n let firstDate = _.first(this._higherResolutionsPlanning.TimeLine);\r\n if(firstDate){\r\n firstDate.TimeValue = this._parentPlan.TimeValue;\r\n }\r\n }\r\n }\r\n\r\n FormatValue(value: string){\r\n return FormatConverter.ConvertDecimal(value)\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Controls/PlannerLevel/HigherResolutionPlanning/Templates/HigherResolutionPlanning';\r\n }\r\n\r\n FormatTitle(cell: RightBarCell){\r\n let startWeekDate = moment(cell.TimeAxis);\r\n let endWeekDate = moment(cell.TimeAxis).add(6, 'day');\r\n return `Week ${startWeekDate.isoWeek()}: ${startWeekDate.format('DD')}/${startWeekDate.format('MM')} - ${endWeekDate.format('DD')}/${endWeekDate.format('MM')}`;\r\n }\r\n\r\n get Title(){\r\n return `${this._barName}: ${moment(this._parentPlan.TimeAxis).format('MMMM')}, ${moment(this._parentPlan.TimeAxis).year()}`;\r\n }\r\n\r\n AfterRender(){\r\n let first =_.first(this.Cells);\r\n if(first){\r\n first.SelectCell();\r\n }\r\n }\r\n\r\n Show(){\r\n this._modal = new Modal({ addClass: 'higher-resolution-planner', height: 300, width: 350 }, false);\r\n this._modal.Show();\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n Close(){\r\n if(this._modal){\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n Save(){\r\n this.Trigger(EVENTS.SAVE);\r\n }\r\n\r\n private HasAnyPlanning(){\r\n return _.filter(this._higherResolutionsPlanning.TimeLine, item => parseFloat(item.TimeValue) !== 0).length > 0;\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"text: $data.Title\\\" class=\\\"title\\\"></div> <div class=\\\"planning-list\\\"> <!-- ko foreach: $data.Cells --> <div class=\\\"form-group condition-item-simple\\\"> <div class=\\\"controls form-inline row\\\"> <!-- ko text: $parent.FormatTitle($data) --><!-- /ko --> <input data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\ttextInput: $data.Value,\\r\\n\\t\\t\\t\\t\\t\\thasFocus: $data.IsSelected,\\r\\n\\t\\t\\t\\t \\t\\tinputMask: {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue: $data.Value,\\r\\n\\t\\t\\t\\t\\t\\t\\ttype: 'Decimal',\\r\\n\\t\\t\\t\\t\\t\\t\\tdecimalSize: 2\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" data-with-number-group-separators=\\\"true\\\"> </div> </div> <!-- /ko --> <div class=\\\"clearfix save-button\\\"> <a data-bind=\\\"click: $data.Save\\\" href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\">Save</a> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as $ from \"jquery\";\r\nimport * as moment from \"moment\";\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {IControl} from \"../IControl\";\r\nimport {TranslationManager} from \"../../Components/Translation/TranslationManager\";\r\n\r\nimport {IGetPlannerLevelDataRequestModel, PlannerLevelStore} from \"./Store/PlannerLevelStore\";\r\nimport {BlockUI} from \"../../Common/BlockUi\";\r\nimport {PlannerLevelRowModel, TimeCellModel} from \"./Models/PlannerLevelRowModel\";\r\nimport {CONTROL_TYPES, RenderModes, FIELD_TYPES} from \"../../Constant\";\r\nimport {Icon} from \"../../Icon/Icon\";\r\nimport {EntityTypes} from \"../Grid/BaseGrid/Enums/EntityTypes\";\r\nimport {GeneralProperties} from \"../../GeneralProperties/GeneralProperties\";\r\nimport {SearchScreen} from \"../../Screens/SearchScreen/SearchScreen\";\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {TypeScreen} from \"../../Screens/TypeScreen/TypeScreen\";\r\nimport {Notifier} from \"../../Common/Notifier\";\r\nimport {CustomColumnValueModel} from \"./Models/CustomColumnValueModel\";\r\nimport {CustomColumnHeaderModel} from \"../PlannerPage/Models/CustomColumnHeaderModel\";\r\nimport {RightBarRow} from \"Core/Controls/PlannerLevel/RightBarRow/RightBarRow\";\r\nimport {EVENTS} from \"Core/Controls/PlannerLevel/Events\";\r\nimport {EVENTS as HIGHER_RESOLUTION_EVENTS} from 'Core/Controls/PlannerLevel/HigherResolutionPlanning/Events';\r\n\r\nimport Config from 'Core/Controls/PlannerLevel/Configs/planner-level-config.json';\r\nimport DesignTemplate from 'Core/Controls/PlannerLevel/Templates/Design.html';\r\nimport RightBarViewTemplate from 'Core/Controls/PlannerLevel/Templates/RightBarView.html';\r\nimport LeftBarViewTemplate from 'Core/Controls/PlannerLevel/Templates/LeftBarView.html';\r\nimport {KEY_CODES} from \"./KeyCodes\";\r\nimport {RightBarCell} from \"./RightBarCell/RightBarCell\";\r\nimport {HigherResolutionPlanning} from \"./HigherResolutionPlanning/HigherResolutionPlanning\";\r\nimport {Paginator} from \"Core/Components/Paginator/Paginator\";\r\nimport {EVENTS as PAGINATOR_EVENTS} from \"Core/Components/Paginator/Constants\";\r\nimport {AttachedFieldModel} from \"../BaseControl/Models/AttachedFieldModel\";\r\nimport {EntityTypesStore} from \"../../Screens/TypeScreen/Stores/EntityTypesStore\";\r\nimport {FormatConverter} from \"../../../FormatEditor/FormatConverter\";\r\nimport { IPlannerLevelParams } from '../../UserVarsManager/UserVarsManager';\r\nimport {UserVarsManager, IPlannerPageParams} from 'Core/UserVarsManager/UserVarsManager';\r\nimport { TimeStatus } from '../../Components/Controls/TimeWriting/Constants/TimeStatus';\r\nimport {FieldMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\n\r\nko.templates['Core/Controls/PlannerLevel/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/PlannerLevel/Templates/LeftBarView'] = LeftBarViewTemplate;\r\nko.templates['Core/Controls/PlannerLevel/Templates/RightBarView'] = RightBarViewTemplate;\r\n\r\nconst PROPERTIES = {\r\n READONLY: 'ReadOnly',\r\n ENABLE_LINK: 'EnableLinkButton',\r\n ENABLE_ADD_AND_LINK: 'EnableAdd&LinkButton',\r\n QUERY_BUTTON1: 'QueryButton1',\r\n QUERY_BUTTON2: 'QueryButton2',\r\n HIDE_QUERY_BUTTONS: 'HideQueryButtons'\r\n};\r\n\r\nexport interface IPlannerLevelParentRecords {\r\n RecordId: number;\r\n ControlId: number;\r\n BarId: string;\r\n ParentBarId: string;\r\n}\r\n\r\nexport interface ICellElement {\r\n Element: HTMLElement;\r\n Cell: TimeCellModel\r\n}\r\n\r\nexport const USER_TYPES = {\r\n PROFILE: 'Profile',\r\n USER: 'User'\r\n}\r\n\r\nexport class PlannerLevel extends BaseControl{\r\n\r\n private _dataRows: KnockoutObservableArray<PlannerLevelRowModel>;\r\n private _parentBarId: string;\r\n private _parentRecordId: number;\r\n private _parentBarSubjectId: number;\r\n private _weekNumber: number;\r\n private _startDate: string;\r\n private _level: number;\r\n private _viewType: string;\r\n private _subjectEntityIcon: KnockoutObservable<Icon>;\r\n private _subjectTitle: KnockoutObservable<string>;\r\n private _leftBarIcon: KnockoutObservable<Icon>;\r\n private _leftBarTitle: KnockoutObservable<string>;\r\n private _rightBarIcon: KnockoutObservable<Icon>\r\n private _rightBarTitle: KnockoutObservable<string>;\r\n private _enableLink: KnockoutObservable<boolean>;\r\n private _enableAddAndLink: KnockoutObservable<boolean>;\r\n private _linkUnderlyingTooltip: string;\r\n private _addAndLinkUnderlyingTooltip: string;\r\n private _readOnly: boolean;\r\n private _parentRecords: Array<IPlannerLevelParentRecords>;\r\n private _showControlName: KnockoutComputed<boolean>;\r\n private _divideRowColSpan: KnockoutObservable<number>;\r\n private _showDivideRow: KnockoutObservable<boolean>;\r\n private _customColumnHeaders: Array<CustomColumnHeaderModel>;\r\n private _timeRows: KnockoutObservableArray<RightBarRow>;\r\n private _isHightResolutionPlanning: boolean;\r\n private _paginator: KnockoutObservable<Paginator>;\r\n private _managerId: number;\r\n private _button1TableName: string;\r\n private _button2TableName: string;\r\n private _hideQueryButtons: boolean;\r\n\r\n constructor(params: IControlParam){\r\n super(params, Config)\r\n this._dataRows = ko.observableArray([]);\r\n this._parentBarId = null;\r\n this._parentRecordId = 0;\r\n this._parentBarSubjectId = 0;\r\n this._weekNumber = 36;\r\n this._startDate = moment().format('YYYY-MM-DD');\r\n this._level = 0\r\n this._subjectEntityIcon = ko.observable(null);\r\n this._leftBarIcon = ko.observable(null);\r\n this._leftBarTitle = ko.observable('');\r\n this._rightBarIcon = ko.observable(null);\r\n this._rightBarTitle = ko.observable('');\r\n this._subjectTitle = ko.observable('');\r\n this._enableLink = ko.observable(false);\r\n this._enableAddAndLink = ko.observable(false);\r\n this._linkUnderlyingTooltip = '';\r\n this._addAndLinkUnderlyingTooltip = '';\r\n this._parentRecords = [];\r\n this._divideRowColSpan = ko.observable(0);\r\n this._showDivideRow = ko.observable(false);\r\n this._customColumnHeaders = [];\r\n this._isHightResolutionPlanning = false;\r\n this._paginator = ko.observable(null);\r\n this._hideQueryButtons = false;\r\n\r\n this.ApplyProperties();\r\n this.Init();\r\n\r\n this._showControlName = ko.computed(()=>{\r\n return this._model().Fields.length === 0;\r\n });\r\n\r\n this._timeRows = ko.observableArray([]);\r\n }\r\n\r\n set IsHightResolutionPlanning(value: boolean){\r\n this._isHightResolutionPlanning = value;\r\n _.each(this._timeRows(), (timeRow) => {\r\n timeRow.IsHightResolutionPlanning = value;\r\n });\r\n }\r\n\r\n SetParentRecords(parentRecords: Array<IPlannerLevelParentRecords>){\r\n this._parentRecords = parentRecords;\r\n }\r\n\r\n set ShowDivideRow(value: boolean){\r\n this._showDivideRow(value);\r\n }\r\n\r\n ApplyProperties(){\r\n const enableLinkProperty = this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_LINK);\r\n const enableAddAndLinkProperty = this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_ADD_AND_LINK);\r\n this._readOnly = this.GeneralProperties.GetPropertyValue(PROPERTIES.READONLY);\r\n this._hideQueryButtons = this.GeneralProperties.GetPropertyValue(PROPERTIES.HIDE_QUERY_BUTTONS) || false;\r\n this._enableLink(enableLinkProperty && this.HasNexLevel());\r\n this._enableAddAndLink(enableAddAndLinkProperty && this.HasNexLevel());\r\n }\r\n\r\n Init(){\r\n this.InitIcons();\r\n this._model.subscribe(()=>{\r\n this.InitIcons();\r\n })\r\n\r\n this._linkUnderlyingTooltip = LABELS.LINK_UNDERLYING_RECORD.replace('{UnderlyingSubject}', this.GetNexLevelSubjectEntityName());\r\n this._addAndLinkUnderlyingTooltip = LABELS.ADD_AND_LINK_UNDERLYING_RECORD.replace('{UnderlyingSubject}', this.GetNexLevelSubjectEntityName());\r\n }\r\n\r\n get Index(){\r\n return this._parentControl.GetSubControls().indexOf(this);\r\n }\r\n\r\n HasNexLevel(){\r\n let nextPlannerLevel = _.find(this._subControls(), (subControl) => {\r\n return subControl.GetType() === CONTROL_TYPES.PlannerLevel;\r\n });\r\n\r\n return !!nextPlannerLevel;\r\n }\r\n\r\n GetLeftBarTemplateName(){\r\n return 'Core/Controls/PlannerLevel/Templates/LeftBarView';\r\n }\r\n\r\n GetRightBarTemplateName(){\r\n return 'Core/Controls/PlannerLevel/Templates/RightBarView';\r\n }\r\n\r\n InitIcons(){\r\n let subjectField = this._model().Fields[0];\r\n if(subjectField && subjectField.EntityTypeName === EntityTypes[EntityTypes.Entity]){\r\n if (subjectField.EntityIcon) {\r\n this._subjectEntityIcon(new Icon(subjectField.EntityIcon));\r\n }\r\n\r\n this._subjectTitle(subjectField.EntityName);\r\n }\r\n\r\n let leftBarField = this._model().Fields[1];\r\n if(leftBarField && leftBarField.EntityTypeName === EntityTypes[EntityTypes.Sub]){\r\n if (leftBarField.EntityIcon) {\r\n this._leftBarIcon(new Icon(leftBarField.EntityIcon));\r\n }\r\n\r\n this._leftBarTitle(leftBarField.EntityName);\r\n }\r\n\r\n let rightBarField = this._model().Fields[2];\r\n if(rightBarField && leftBarField.EntityTypeName === EntityTypes[EntityTypes.Sub]){\r\n if (rightBarField.EntityIcon) {\r\n this._rightBarIcon(new Icon(rightBarField.EntityIcon));\r\n }\r\n\r\n this._rightBarTitle(rightBarField.EntityName);\r\n }\r\n }\r\n\r\n IsRootLevel(){\r\n return this._parentControl.GetType() === CONTROL_TYPES.PlannerPage;\r\n }\r\n\r\n SetParentBarId(parentBarId: string, parentBarSubjectId: number){\r\n this._parentBarId = parentBarId;\r\n this._parentBarSubjectId = parentBarSubjectId;\r\n }\r\n\r\n SetLevel(level: number){\r\n this._level = level;\r\n }\r\n\r\n SetParentRecordId(parentRecordId: number){\r\n this._parentRecordId = parentRecordId;\r\n }\r\n\r\n SetViewType(viewType: string){\r\n this._viewType = viewType;\r\n }\r\n\r\n SetProjectManager(id: number){\r\n this._managerId = id;\r\n }\r\n\r\n AddSubControl(control: IControl) {\r\n this._subControls.push(control);\r\n }\r\n\r\n static GetDefaultName() {\r\n return 'New planer level';\r\n }\r\n\r\n get Title(): string {\r\n return this.GetName() || this.GetDefaultName();\r\n }\r\n\r\n private GetName(): string {\r\n let translationList = this._model().NameTranslations;\r\n let currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n let currentLangItem = _.find(translationList, (item) => {\r\n return currentLang.Id === item.Language.K_Language;\r\n });\r\n if (currentLangItem) {\r\n this._getCurrentName = currentLangItem.Translation;\r\n }\r\n\r\n if (this._getCurrentName) {\r\n return this._getCurrentName;\r\n } else {\r\n return this._model().Name;\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>): void {\r\n super.AfterRender(el);\r\n }\r\n\r\n SetWeekNumber(weekNumber: number){\r\n this._weekNumber = weekNumber;\r\n this._dataRows([]);\r\n }\r\n\r\n SetStartDate(date: string){\r\n this._startDate = date;\r\n this._dataRows([]);\r\n }\r\n\r\n SetCustomColumnHeaders(headers: Array<CustomColumnHeaderModel>){\r\n this._customColumnHeaders = headers;\r\n }\r\n\r\n LoadData(expandAll: boolean = false, parent: PlannerLevelRowModel = null){\r\n if(this._renderMode() === RenderModes.View) {\r\n let requestModel: IGetPlannerLevelDataRequestModel = {\r\n StartDate: this._startDate,\r\n ControlId: this.GetControlId(),\r\n ParentRecords: this._parentRecords,\r\n ParentBarId: this._parentBarId,\r\n WeekNumber: this._weekNumber,\r\n ViewType: this._viewType,\r\n ManagerId: this._managerId,\r\n IsRoot: this.IsRootLevel(),\r\n RecordsPerPage: this._paginator() ? this._paginator().RecordsPerPage : 0,\r\n PageNumber: this._paginator() ? this._paginator().PageNumber : 0,\r\n }\r\n\r\n PlannerLevelStore.GetPlannerLevelData(requestModel).always(() => {\r\n if(parent != null){\r\n parent.IsBlocked(false);\r\n }\r\n }).then((result) => {\r\n this.PopulateData(result, expandAll);\r\n });\r\n }\r\n }\r\n\r\n FormatValue(value: string, fieldType: string, fieldFormat: string){\r\n\r\n let field = new FieldMetadataModel();\r\n field.Type = fieldType;\r\n field.FormatName = fieldFormat;\r\n\r\n if(fieldType === FIELD_TYPES.Decimal || fieldType === FIELD_TYPES.Integer){\r\n return this.PrepareDecimalOrInteger(value, field);\r\n }\r\n\r\n if(fieldType === FIELD_TYPES.Date || fieldType === FIELD_TYPES.DateTime || fieldType === FIELD_TYPES.Time){\r\n return this.PrepareTime(value, field)\r\n }\r\n\r\n if(fieldType === FIELD_TYPES.TimeSpan){\r\n return this.PrepareTimeSpan(value, field)\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private PrepareDecimalOrInteger(value: string, field: FieldMetadataModel): string {\r\n return FormatConverter.LocalizeDecimalOrInteger(value);\r\n }\r\n\r\n private PrepareTimeSpan(value: string, field: FieldMetadataModel): string {\r\n let datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(field, true);\r\n return FormatConverter.ConvertFromDefaultFormat(value, datetimeFormat);\r\n }\r\n\r\n private PrepareTime(value: string, field: FieldMetadataModel): string {\r\n value = FormatConverter.CorrectTimezone(value);\r\n let datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(field, true);\r\n return FormatConverter.ConvertFromDefaultFormat(value, datetimeFormat);\r\n }\r\n\r\n get Button1TableName(): string{\r\n let buttonTableName = null;\r\n if(this._button1TableName){\r\n buttonTableName = this._button1TableName;\r\n }else{\r\n _.each(this._timeRows(), (row)=>{\r\n _.each(row.SubControls(), (control) =>{\r\n if(control instanceof PlannerLevel && control.Button1TableName){\r\n buttonTableName = control.Button1TableName;\r\n }\r\n });\r\n });\r\n } \r\n return buttonTableName;\r\n }\r\n\r\n get Button2TableName(): string{\r\n let buttonTableName = null;\r\n if(this._button2TableName){\r\n buttonTableName = this._button2TableName;\r\n }else{\r\n _.each(this._timeRows(), (row)=>{\r\n _.each(row.SubControls(), (control) =>{\r\n if(control instanceof PlannerLevel && control.Button2TableName){\r\n buttonTableName = control.Button2TableName;\r\n }\r\n });\r\n });\r\n } \r\n return buttonTableName;\r\n }\r\n\r\n PopulateData(data: Array<PlannerLevelRowModel>, expandAll: boolean = false){\r\n\r\n if(data.length > 0){\r\n this._button1TableName = data[0].Button1TableName;\r\n this._button2TableName = data[0].Button2TableName;\r\n }\r\n\r\n let timeRows: Array<RightBarRow> = [];\r\n _.each(data, (dataRow) =>{\r\n let customValues = dataRow.CustomValues;\r\n dataRow.CustomValues = [];\r\n _.each(this._customColumnHeaders, (header) => {\r\n let customValue = new CustomColumnValueModel();\r\n customValue.FieldName = header.FieldName;\r\n customValue.FieldType = header.FieldType;\r\n let value = _.find(customValues, (customValue) => {\r\n return customValue.FieldName === header.FieldName && customValue.FieldType === header.FieldType;\r\n });\r\n\r\n if(value){\r\n customValue.Value(this.FormatValue(value.Value(), value.FieldType, value.FieldFormat));\r\n }\r\n\r\n dataRow.CustomValues.push(customValue);\r\n });\r\n\r\n let rightBarRow = new RightBarRow( { Model: dataRow, Level: this._level, ReadOnly: this._readOnly, HideQueryButtons: this._hideQueryButtons });\r\n\r\n rightBarRow.IsHightResolutionPlanning = this._isHightResolutionPlanning;\r\n\r\n rightBarRow.On(EVENTS.MOUSE_OVER, this, (eventArgs) =>{\r\n this.MouseCellOver(eventArgs.data.CellModel);\r\n });\r\n\r\n rightBarRow.On(EVENTS.MOUSE_OUT, this, (eventArgs) =>{\r\n this.MouseCellOut(eventArgs.data.CellModel);\r\n });\r\n\r\n rightBarRow.On(EVENTS.UNSELECT_CELLS, this, (eventArgs) =>{\r\n this.UnselectParentCells(eventArgs.data.CellModel);\r\n });\r\n\r\n rightBarRow.On(EVENTS.KEY_DOWN, this, (eventArgs) =>{\r\n this.KeyDown(eventArgs.data.RowModel, eventArgs.data.CellModel, eventArgs.data.Event, eventArgs.data.CellElement);\r\n });\r\n\r\n rightBarRow.On(EVENTS.UPDATE_PLAN, this, (eventArgs) =>{\r\n this.UpdatePlan(\r\n eventArgs.data.RowModel,\r\n eventArgs.data.Button1TableId,\r\n eventArgs.data.Button1RecordId,\r\n eventArgs.data.Button2TableId,\r\n eventArgs.data.Button2RecordId,\r\n eventArgs.data.CellModel,\r\n eventArgs.data.CellElement\r\n );\r\n });\r\n\r\n rightBarRow.On(EVENTS.UNLINK_QUERY_RECORD, this, (eventArgs) =>{\r\n\r\n this.UnlinkQueryRecord(\r\n eventArgs.data.RowModel,\r\n eventArgs.data.ButtonTableId,\r\n eventArgs.data.ButtonRecordId,\r\n eventArgs.data.CellModel,\r\n eventArgs.data.CellElement\r\n );\r\n });\r\n\r\n rightBarRow.On(EVENTS.COPY_CELL, this, () =>{\r\n if(this._parentControl){\r\n (this._parentControl as any).SetCopyCellMode();\r\n }\r\n });\r\n\r\n rightBarRow.On(EVENTS.HIGHER_RESOLUTION_PLANNING, this, (eventArgs) =>{\r\n this.ShowHigherResolutionPlanning(eventArgs.data.RowModel, eventArgs.data.CellModel);\r\n });\r\n\r\n timeRows.push(rightBarRow);\r\n \r\n });\r\n\r\n this._timeRows(timeRows);\r\n this._dataRows(data);\r\n\r\n _.each(data, (row)=>{\r\n if(expandAll){\r\n this.Toggle(row, expandAll);\r\n }else{\r\n if(this.GetDefaultExpandedState(row.BarId)){\r\n this.Toggle(row, false);\r\n }\r\n }\r\n });\r\n\r\n let firstRow = _.first(this._dataRows());\r\n if(firstRow){\r\n this._divideRowColSpan(firstRow.TimeLine.length);\r\n }\r\n\r\n if(!this._paginator() && this.IsRootLevel()){\r\n this._paginator(new Paginator());\r\n this._paginator().RecordsPerPage = 20;\r\n this._paginator().On(PAGINATOR_EVENTS.CHANGE, this, () => {\r\n this.CancelCopyToSelection();\r\n this.LoadData();\r\n });\r\n }\r\n\r\n if(firstRow && this._paginator()){\r\n this._paginator().TotalRecords = firstRow.TotalRecords;\r\n }\r\n }\r\n\r\n CancelCopyToSelection(){\r\n if(this._parentControl){\r\n (this._parentControl as any).CancelCopyToSelection();\r\n }\r\n }\r\n\r\n SetCopyCellMode(){\r\n if(this._parentControl){\r\n (this._parentControl as any).SetCopyCellMode();\r\n }\r\n }\r\n \r\n WeekOfMonth(m: moment.Moment) {\r\n return m.isoWeek() - moment(m).startOf('month').isoWeek() + 1;\r\n }\r\n\r\n ShowHigherResolutionPlanning(row: PlannerLevelRowModel, cell: TimeCellModel){\r\n BlockUI.Block();\r\n \r\n let startDate = cell.TimeAxis;\r\n if(moment(cell.TimeAxis).startOf('isoWeek').month() < moment(cell.TimeAxis).month()){\r\n startDate = moment(cell.TimeAxis).add(6, 'day').format();\r\n }\r\n\r\n let requestModel: IGetPlannerLevelDataRequestModel = {\r\n StartDate: startDate,\r\n ControlId: this.GetControlId(),\r\n ParentBarId: this._parentBarId,\r\n WeekNumber: 2,\r\n ViewType: 'Week',\r\n IsRoot: this.IsRootLevel(),\r\n RecordsPerPage: 0,\r\n PageNumber: 0,\r\n BarId: row.BarId\r\n }\r\n\r\n PlannerLevelStore.GetPlannerLevelData(requestModel).always(() => {\r\n BlockUI.Unblock();\r\n }).then((result) => {\r\n if(result.length > 0){\r\n\r\n result[0].TimeLine = _.filter(result[0].TimeLine, (item) => {\r\n return moment(item.TimeAxis).month() === moment(cell.TimeAxis).month() && moment(item.TimeAxis).year() === moment(cell.TimeAxis).year();\r\n });\r\n\r\n let higherResolutionPlanning = new HigherResolutionPlanning(result[0], cell, row.BarName);\r\n higherResolutionPlanning.On(HIGHER_RESOLUTION_EVENTS.SAVE, this, () =>{\r\n let request = [];\r\n _.each(higherResolutionPlanning.Cells, (cell) =>{\r\n request.push({\r\n RecordId: row.RecordId,\r\n TimeValue: this.FormatPlanValue(cell.Value().toString()),\r\n TimeAxis: cell.TimeAxis,\r\n ControlId: this.GetControlId(),\r\n ParentRecords: this._parentRecords,\r\n ViewType: 'Week',\r\n BarId: row.BarId\r\n });\r\n });\r\n\r\n BlockUI.Block();\r\n\r\n PlannerLevelStore.CreateOrUpdatePlans({ HigherResolutionPlans: request, Plan: {\r\n RecordId: row.RecordId,\r\n TimeValue: this.FormatPlanValue(cell.TimeValue.toString()),\r\n TimeAxis: cell.TimeAxis,\r\n ControlId: this.GetControlId(),\r\n ParentRecords: this._parentRecords,\r\n ViewType: this._viewType,\r\n BarId: row.BarId\r\n } }).then((result)=>{\r\n this.UpdateCells(result);\r\n cell.IsSelected(true);\r\n this.UnselectParentCells(cell);\r\n }).always(()=>{\r\n higherResolutionPlanning.Close();\r\n BlockUI.Unblock();\r\n }).fail(data => {\r\n new Notifier(null).Failed(data.message);\r\n });\r\n\r\n });\r\n higherResolutionPlanning.Show();\r\n }\r\n });\r\n }\r\n\r\n FormatPlanValue(value: string){\r\n return value.replace(',', '.');\r\n }\r\n\r\n UpdateCells(rows: Array<PlannerLevelRowModel>){\r\n\r\n let parentControl = this.GetParentControl();\r\n if(parentControl instanceof PlannerLevel){\r\n parentControl.UpdateCells(rows);\r\n }\r\n\r\n let controlDataRows = _.filter(rows, (row) => {\r\n return row.ControlId === this.GetControlId();\r\n });\r\n\r\n _.each(controlDataRows, (dataRow) => {\r\n let dataRowToUpdate = _.find(this._dataRows(), (item) => {\r\n return dataRow.BarId === item.BarId;\r\n });\r\n\r\n if(dataRowToUpdate) {\r\n _.each(dataRow.CustomValues, (customValue) =>{\r\n let existsCustomValue = _.find(dataRowToUpdate.CustomValues, (item) => {\r\n return item.FieldType === customValue.FieldType && item.FieldName === customValue.FieldName;\r\n });\r\n\r\n if(existsCustomValue){\r\n existsCustomValue.Value(this.FormatValue(customValue.Value(), existsCustomValue.FieldType, existsCustomValue.FieldFormat));\r\n };\r\n });\r\n }\r\n }\r\n );\r\n\r\n _.each(controlDataRows, (dataRow) => {\r\n let dataRowToUpdate = _.find(this._timeRows(), (item) => {\r\n return dataRow.BarId === item.BarId;\r\n });\r\n\r\n if(dataRowToUpdate) {\r\n dataRowToUpdate.UpdateCells(dataRow.TimeLine);\r\n }\r\n }\r\n );\r\n }\r\n\r\n UnlinkQueryRecord(\r\n row: PlannerLevelRowModel,\r\n buttonTableId: number,\r\n buttonRecordId: number,\r\n cell: TimeCellModel,\r\n cellElement: HTMLElement\r\n ){\r\n BlockUI.Block({ Target: cellElement });\r\n PlannerLevelStore.UnlinkQueryRecord({\r\n UnlinkButtonRecordId: buttonRecordId,\r\n UnlinkButtonTableId: buttonTableId,\r\n RecordId: row.RecordId,\r\n TimeAxis: cell.TimeAxis,\r\n ControlId: this.GetControlId(),\r\n ParentRecords: this._parentRecords,\r\n ViewType: this._viewType,\r\n BarId: row.BarId\r\n }).then((result)=>{\r\n this.UpdateCells(result);\r\n }).always(()=>{\r\n BlockUI.Unblock(cellElement);\r\n }).fail(data => {\r\n new Notifier(null).Failed(data.message);\r\n });\r\n }\r\n\r\n UpdatePlan(\r\n row: PlannerLevelRowModel,\r\n button1TableId: number,\r\n button1RecordId: number,\r\n button2TableId: number,\r\n button2RecordId: number,\r\n cell: TimeCellModel,\r\n cellElement: HTMLElement\r\n ){\r\n BlockUI.Block({ Target: cellElement });\r\n\r\n if(button1RecordId || button2RecordId){\r\n if(this._viewType == 'Month'){\r\n cell.TimeValue = '720';\r\n }\r\n\r\n if(this._viewType == 'Week'){\r\n cell.TimeValue = '168';\r\n }\r\n\r\n if(this._viewType == 'Day'){\r\n cell.TimeValue = '24';\r\n }\r\n }\r\n\r\n PlannerLevelStore.CreateOrUpdatePlan({\r\n Button1RecordId: button1RecordId,\r\n Button1TableId: button1TableId,\r\n Button2RecordId: button2RecordId,\r\n Button2TableId: button2TableId,\r\n RecordId: row.RecordId,\r\n TimeValue: this.FormatPlanValue(cell.TimeValue.toString()),\r\n TimeAxis: cell.TimeAxis,\r\n ControlId: this.GetControlId(),\r\n ParentRecords: this._parentRecords,\r\n ViewType: this._viewType,\r\n BarId: row.BarId\r\n }).then((result)=>{\r\n this.UpdateCells(result);\r\n }).always(()=>{\r\n BlockUI.Unblock(cellElement);\r\n }).fail(data => {\r\n new Notifier(null).Failed(data.message);\r\n });\r\n }\r\n\r\n public ResetDefaultExpandedState(){\r\n let userVars = this.GetUserVars();\r\n userVars.ExpandedBarIds = [];\r\n this.SetUserVars(userVars);\r\n\r\n _.each(this._subControls(), (subControl)=>{\r\n if(subControl instanceof PlannerLevel){\r\n subControl.ResetDefaultExpandedState();\r\n }\r\n });\r\n\r\n _.each(this._dataRows(), (dataRow)=>{\r\n this.SetDefaultExpandedState(dataRow, false);\r\n });\r\n }\r\n\r\n private SetDefaultExpandedState(row: PlannerLevelRowModel, expanded: boolean){\r\n let userVars = this.GetUserVars();\r\n if(expanded){\r\n if(userVars.ExpandedBarIds.indexOf(row.BarId) < 0){\r\n userVars.ExpandedBarIds.push(row.BarId); \r\n } \r\n }else{\r\n userVars.ExpandedBarIds.splice(userVars.ExpandedBarIds.indexOf(row.BarId), 1);\r\n _.each(row.SubControls(), (subControl)=>{\r\n if(subControl instanceof PlannerLevel){\r\n subControl.ResetDefaultExpandedState();\r\n }\r\n });\r\n }\r\n this.SetUserVars(userVars);\r\n }\r\n\r\n private GetDefaultExpandedState(barId: string): boolean{\r\n let userVars = this.GetUserVars();\r\n return userVars.ExpandedBarIds.indexOf(barId) >= 0;\r\n }\r\n\r\n private GetUserVars(): IPlannerLevelParams {\r\n\t\treturn UserVarsManager.Instance.GetPlannerLevelParams(this.GetControlId());\r\n\t}\r\n\r\n\tprivate SetUserVars(params: IPlannerLevelParams) {\r\n\t\tUserVarsManager.Instance.SetPlannerLevelParams(this.GetControlId(), params);\r\n\t}\r\n\r\n Toggle(plannerLevelRow: PlannerLevelRowModel, expandAll: boolean){\r\n\r\n let planerLevelControls = _.filter(this._subControls(), (subControl) => {\r\n return subControl.GetType() === CONTROL_TYPES.PlannerLevel;\r\n });\r\n\r\n if(planerLevelControls.length === 0) return;\r\n\r\n plannerLevelRow.IsExpanded(!plannerLevelRow.IsExpanded());\r\n \r\n this.SetDefaultExpandedState(plannerLevelRow, plannerLevelRow.IsExpanded());\r\n plannerLevelRow.SubControls([]);\r\n if(plannerLevelRow.IsExpanded()) {\r\n plannerLevelRow.IsBlocked(true);\r\n _.each(planerLevelControls, (planerLevelControl) => {\r\n let control = planerLevelControl.Clone() as PlannerLevel;\r\n control.IsHightResolutionPlanning = this._isHightResolutionPlanning;\r\n control.SetCustomColumnHeaders(this._customColumnHeaders);\r\n control.SetParentBarId(plannerLevelRow.BarId, plannerLevelRow.SubjectId);\r\n control.SetLevel(this._level + 1);\r\n control.SetStartDate(this._startDate);\r\n control.SetViewType(this._viewType);\r\n control.SetWeekNumber(this._weekNumber);\r\n control.SetParentRecordId(plannerLevelRow.RecordId);\r\n control.SetProjectManager(this._managerId);\r\n control.SetParentRecords(this._parentRecords.concat([\r\n {\r\n BarId: plannerLevelRow.BarId,\r\n ParentBarId: this._parentBarId,\r\n ControlId: this.GetControlId(),\r\n RecordId: plannerLevelRow.RecordId\r\n }]));\r\n plannerLevelRow.SubControls.push(control);\r\n (control as PlannerLevel).LoadData(expandAll, plannerLevelRow);\r\n });\r\n }\r\n }\r\n\r\n EditValue(timeCell: TimeCellModel){\r\n timeCell.IsEditMode(true);\r\n }\r\n\r\n LinkRecord(plannerLevelRow: PlannerLevelRowModel) {\r\n let childPlannerLevel = _.find(this._subControls(), (item) => {\r\n return item.GetType() === CONTROL_TYPES.PlannerLevel;\r\n });\r\n\r\n let currentLevelSubject = this.GetModel().Fields[0];\r\n\r\n if(childPlannerLevel){\r\n let plannerLevelSubject = childPlannerLevel.GetModel().Fields[0];\r\n\r\n if(plannerLevelSubject.EntityName === 'SYS_USERS'){\r\n\r\n EntityTypesStore.GetTypes({ EntityId: plannerLevelSubject.EntityId, ParentTypeId: 0, WithRoot: false, OnlyEnabled: true })\r\n .then((result) => {\r\n\r\n let profileType = _.find(result.TableTypes, (item) => {\r\n return item.Name === USER_TYPES.PROFILE;\r\n });\r\n\r\n if(profileType){\r\n EntityTypesStore.GetTypes({ EntityId: plannerLevelSubject.EntityId, ParentTypeId: profileType.Id, WithRoot: false, OnlyEnabled: true })\r\n .then((result) => {\r\n let userType = _.find(result.TableTypes, (item) => {\r\n return item.Name === USER_TYPES.USER;\r\n });\r\n\r\n if(userType){\r\n this.ShowSearchScreen(\r\n plannerLevelSubject,\r\n currentLevelSubject,\r\n plannerLevelRow,\r\n childPlannerLevel,\r\n [userType.Id],\r\n profileType.Id,\r\n currentLevelSubject.EntityId,\r\n 0,\r\n currentLevelSubject.EntityId,\r\n plannerLevelRow.RecordId\r\n );\r\n }\r\n });\r\n }\r\n });\r\n }else{\r\n this.ShowSearchScreen(plannerLevelSubject, currentLevelSubject, plannerLevelRow, childPlannerLevel, []);\r\n }\r\n }\r\n }\r\n\r\n ShowSearchScreen(\r\n plannerLevelSubject: AttachedFieldModel,\r\n currentLevelSubject: AttachedFieldModel,\r\n plannerLevelRow: PlannerLevelRowModel,\r\n childPlannerLevel: IControl,\r\n allowedTypes: Array<number>,\r\n parentTypeId?: number,\r\n parentEntityId?: number,\r\n parentRecordId?: number,\r\n plannerLevelEntityId?: number,\r\n plannerLevelRecordId?: number\r\n ){\r\n if(plannerLevelSubject && plannerLevelSubject.EntityTypeName === EntityTypes[EntityTypes.Entity]){\r\n let searchScreen = new SearchScreen({\r\n EntityId: plannerLevelSubject.EntityId,\r\n SubjectEntityId: parentEntityId || currentLevelSubject.EntityId,\r\n SubjectRecordId: parentRecordId || plannerLevelRow.RecordId,\r\n SubjectTypeId: parentTypeId || plannerLevelRow.SubjectTypeId,\r\n SearchTerm: '',\r\n ButtonAdd: false,\r\n SearchByTypes: allowedTypes,\r\n PlannerLevelEntityId: plannerLevelEntityId,\r\n PlannerLevelRecordId: plannerLevelRecordId\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n this.CreateLink(eventArgs.data.RecordId, plannerLevelRow, childPlannerLevel as PlannerLevel);\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n }\r\n\r\n GetNexLevelSubjectEntityName(){\r\n let nextPlannerLevel = _.find(this._subControls(), (subControl) => {\r\n return subControl.GetType() === CONTROL_TYPES.PlannerLevel;\r\n });\r\n\r\n if(nextPlannerLevel){\r\n let subjectEntityField = nextPlannerLevel.GetModel().Fields[0];\r\n if(subjectEntityField){\r\n return subjectEntityField.EntityName;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n MouseRowOver(row: PlannerLevelRowModel){\r\n row.IsActive(true);\r\n }\r\n\r\n MouseRowOut(row: PlannerLevelRowModel){\r\n row.IsActive(false)\r\n }\r\n\r\n MouseCellOver(cell: TimeCellModel){\r\n _.each(this._dataRows(), (dataRow) =>{\r\n let cellIndex = dataRow.TimeLine.indexOf(cell);\r\n if(cellIndex >= 0){\r\n this.ActivateParentColumn(cellIndex);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n MouseCellOut(cell: TimeCellModel){\r\n _.each(this._dataRows(), (dataRow) =>{\r\n let cellIndex = dataRow.TimeLine.indexOf(cell);\r\n if(cellIndex >= 0){\r\n this.DeactivateParentColumn(cellIndex);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n ActivateParentColumn(index: number){\r\n if(this._parentControl) {\r\n if (this._parentControl instanceof PlannerLevel) {\r\n this._parentControl.ActivateParentColumn(index);\r\n } else {\r\n (this._parentControl as any).ActivateColumn(index);\r\n }\r\n }\r\n }\r\n\r\n DeactivateParentColumn(index: number){\r\n if(this._parentControl) {\r\n if (this._parentControl instanceof PlannerLevel) {\r\n this._parentControl.DeactivateParentColumn(index);\r\n } else {\r\n (this._parentControl as any).DeactivateColumn(index);\r\n }\r\n }\r\n }\r\n\r\n UnselectParentCells(exceptCell: TimeCellModel){\r\n if(this._parentControl) {\r\n if (this._parentControl instanceof PlannerLevel) {\r\n this._parentControl.UnselectParentCells(exceptCell);\r\n } else {\r\n (this._parentControl as any).UnselectCells(exceptCell);\r\n }\r\n }\r\n }\r\n\r\n KeyDown(row: PlannerLevelRowModel, cell: TimeCellModel, event, cellElement: HTMLElement){\r\n if(event.keyCode === KEY_CODES.RIGHT){\r\n this.MoveRight(row, cell, event, cellElement);\r\n } else if(event.keyCode === KEY_CODES.LEFT){\r\n this.MoveLeft(row, cell, event, cellElement);\r\n } else if(event.keyCode === KEY_CODES.UP){\r\n this.MoveUp(row, cell, event, cellElement);\r\n }else if(event.keyCode === KEY_CODES.DOWN || event.keyCode === KEY_CODES.ENTER){\r\n this.MoveDown(row, cell, event, cellElement);\r\n }\r\n }\r\n\r\n MoveDown(row: PlannerLevelRowModel, cell: TimeCellModel, event, cellElement: HTMLElement){\r\n let nextRowElement = $(cellElement).closest('tr').next('tr')[0];\r\n if(nextRowElement){\r\n let nextRow = ko.dataFor(nextRowElement);\r\n if(nextRow instanceof RightBarRow){\r\n this.UnselectParentCells(cell);\r\n nextRow.SelectCell(row.TimeLine.indexOf(cell));\r\n }\r\n }\r\n }\r\n\r\n MoveUp(row: PlannerLevelRowModel, cell: TimeCellModel, event, cellElement: HTMLElement){\r\n let previousRowElement = $(cellElement).closest('tr').prev('tr')[0];\r\n if(previousRowElement){\r\n let previousRow = ko.dataFor(previousRowElement);\r\n if(previousRow instanceof RightBarRow){\r\n this.UnselectParentCells(cell);\r\n previousRow.SelectCell(row.TimeLine.indexOf(cell));\r\n }\r\n }\r\n }\r\n\r\n MoveLeft(row: PlannerLevelRowModel, cell: TimeCellModel, event, cellElement: HTMLElement){\r\n let previousCellElement = $(cellElement).prev('td')[0];\r\n if(previousCellElement){\r\n let previousCell = ko.dataFor(previousCellElement);\r\n if(previousCell instanceof RightBarCell){\r\n this.UnselectParentCells(cell);\r\n previousCell.IsSelected(true);\r\n }\r\n }\r\n }\r\n\r\n MoveRight(row: PlannerLevelRowModel, cell: TimeCellModel, event, cellElement: HTMLElement){\r\n let nextCellElement = $(cellElement).next('td')[0];\r\n if(nextCellElement){\r\n let nextCell = ko.dataFor(nextCellElement);\r\n if(nextCell instanceof RightBarCell){\r\n this.UnselectParentCells(cell);\r\n nextCell.IsSelected(true);\r\n }\r\n }\r\n }\r\n\r\n UnselectCells(exceptCell: TimeCellModel){\r\n _.each(this._dataRows(), (item) => {\r\n _.each(item.SubControls(), (subControl) =>{\r\n if(subControl instanceof PlannerLevel){\r\n subControl.UnselectCells(exceptCell);\r\n }\r\n })\r\n\r\n _.each(item.TimeLine, (cell) => {\r\n cell.IsSelected(false);\r\n });\r\n });\r\n }\r\n\r\n ActivateColumn(index: number){\r\n _.each(this._dataRows(), (item) => {\r\n _.each(item.SubControls(), (subControl) =>{\r\n if(subControl instanceof PlannerLevel){\r\n subControl.ActivateColumn(index);\r\n }\r\n })\r\n\r\n let timeCell = item.TimeLine[index];\r\n if(timeCell){\r\n timeCell.IsActive(true);\r\n }\r\n });\r\n }\r\n\r\n DeactivateColumn(index: number){\r\n _.each(this._dataRows(), (item) => {\r\n\r\n _.each(item.SubControls(), (subControl) =>{\r\n if(subControl instanceof PlannerLevel){\r\n subControl.DeactivateColumn(index);\r\n }\r\n })\r\n\r\n\r\n let timeCell = item.TimeLine[index];\r\n if(timeCell){\r\n timeCell.IsActive(false);\r\n }\r\n });\r\n }\r\n\r\n CreateLink(\r\n recordId: number,\r\n plannerLevelRow: PlannerLevelRowModel,\r\n childPlannerLevel: PlannerLevel\r\n ){\r\n BlockUI.Block();\r\n\r\n let treeRecords = this._parentRecords.concat(\r\n [{\r\n BarId: plannerLevelRow.BarId,\r\n ParentBarId: this._parentBarId,\r\n ControlId: this.GetControlId(),\r\n RecordId: plannerLevelRow.RecordId\r\n }]\r\n );\r\n\r\n PlannerLevelStore.LinkRecord({\r\n RecordId: recordId,\r\n ControlId: childPlannerLevel.GetControlId(),\r\n StartDate: this._startDate,\r\n ParentRecords: treeRecords\r\n }).then(()=>{\r\n plannerLevelRow.IsExpanded(true);\r\n plannerLevelRow.SubControls([]);\r\n\r\n if(plannerLevelRow.IsExpanded()) {\r\n let planerLevelControls = _.filter(this._subControls(), (subControl) => {\r\n return subControl.GetType() === CONTROL_TYPES.PlannerLevel;\r\n });\r\n\r\n _.each(planerLevelControls, (planerLevelControl) => {\r\n let control = planerLevelControl.Clone() as PlannerLevel;\r\n control.SetParentBarId(plannerLevelRow.BarId, plannerLevelRow.SubjectId);\r\n control.SetLevel(this._level + 1);\r\n control.SetStartDate(this._startDate);\r\n control.SetParentRecords(this._parentRecords.concat([\r\n {\r\n BarId: plannerLevelRow.BarId,\r\n ParentBarId: this._parentBarId,\r\n ControlId: this.GetControlId(),\r\n RecordId: plannerLevelRow.RecordId\r\n }]));\r\n control.LoadData();\r\n plannerLevelRow.SubControls.push(control);\r\n });\r\n }\r\n })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n AddAndLink(plannerLevelRow: PlannerLevelRowModel){\r\n\r\n let childPlannerLevel = _.find(this._subControls(), (item) => {\r\n return item.GetType() === CONTROL_TYPES.PlannerLevel;\r\n });\r\n\r\n let itSelfRelation = this.GetModel().Fields[0].EntityId === childPlannerLevel.GetModel().Fields[0].EntityId;\r\n let parentType = itSelfRelation ? plannerLevelRow.SubjectTypeId : 0;\r\n\r\n let plannerLevelSubject = childPlannerLevel.GetModel().Fields[0];\r\n if(plannerLevelSubject && plannerLevelSubject.EntityTypeName === EntityTypes[EntityTypes.Entity]){\r\n let typeScreen = new TypeScreen(plannerLevelSubject.EntityId, parentType, false);\r\n\r\n typeScreen.On('TYPE_SELECTED', this, eventArgs => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.AddAndLinkRecord(\r\n plannerLevelSubject.EntityId,\r\n typeId,\r\n kindId,\r\n exampleRecordId,\r\n plannerLevelRow,\r\n childPlannerLevel as PlannerLevel\r\n );\r\n }).On('TYPES_NOT_FOUND', this, (eventArgs) =>\r\n new Notifier($(this._el)).Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND)\r\n );\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n }\r\n\r\n async AddAndLinkRecord(\r\n relatedEntityId: number,\r\n typeId: number,\r\n kindId: number,\r\n exampleRecordId: number,\r\n plannerLevelRow: PlannerLevelRowModel,\r\n childPlannerLevel: PlannerLevel\r\n ){\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: relatedEntityId,\r\n TableTypeId: typeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n }).then((screen) => {\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.CreateLink(\r\n eventArgs.data.RecordId,\r\n plannerLevelRow,\r\n childPlannerLevel\r\n );\r\n });\r\n\r\n screen.ShowInModal();\r\n\r\n });\r\n }\r\n\r\n AfterRowRender(el: Array<HTMLElement>, row: PlannerLevelRowModel){\r\n ko.tasks.schedule(() => {\r\n let height = $(el[1]).height();\r\n row.RowHeight(height);\r\n });\r\n }\r\n\r\n get Paginator(): KnockoutObservable<Paginator>{\r\n return this._paginator;\r\n }\r\n\r\n get HasPagination(): boolean {\r\n return this._level === 0 && !!this._paginator() && this._paginator().GetIsReady();\r\n }\r\n\r\n SelectCopyFromCell(index: number){\r\n _.each(this._timeRows(), (row)=>{\r\n row.SelectCopyFromCell(index);\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.SelectCopyFromCell(index);\r\n }\r\n });\r\n }); \r\n }\r\n\r\n UnSelectCopyFromCell(){\r\n _.each(this._timeRows(), (row)=>{\r\n row.UnSelectCopyFromCells();\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.UnSelectCopyFromCell();\r\n }\r\n });\r\n }); \r\n }\r\n\r\n\r\n SelectCopyToCell(index: number){\r\n if(this.IsCopyToCellSelected(index)){\r\n this.UnSelectCopyToCell(index);\r\n return;\r\n }\r\n _.each(this._timeRows(), (row)=>{\r\n row.SelectCopyToCell(index);\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.SelectCopyToCell(index);\r\n }\r\n });\r\n }); \r\n }\r\n\r\n IsCopyToCellSelected(index: number): boolean{\r\n let isSelected = false\r\n _.each(this._timeRows(), (row)=>{\r\n if(row.IsCopyToCellSelected(index)){\r\n isSelected = true;\r\n }\r\n }); \r\n return isSelected;\r\n }\r\n\r\n UnSelectCopyToCell(index: number){\r\n _.each(this._timeRows(), (row)=>{\r\n row.UnSelectCopyToCell(index);\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.UnSelectCopyToCell(index);\r\n }\r\n });\r\n }); \r\n }\r\n \r\n UnSelectCopyToCells(){\r\n _.each(this._timeRows(), (row)=>{\r\n row.UnSelectCopyToCells();\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.UnSelectCopyToCells();\r\n }\r\n });\r\n }); \r\n }\r\n\r\n CopyColumn(index: number, overwrite: boolean, copyQueryButton1: boolean, copyQueryButton2: boolean){\r\n _.each(this._timeRows(), (row)=>{\r\n\r\n if(!this._readOnly || this.HasAnyQueryButton){\r\n row.CopyCell(index, overwrite, copyQueryButton1, copyQueryButton2);\r\n }else{\r\n row.UnSelectCopyToCells();\r\n }\r\n\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.CopyColumn(index, overwrite, copyQueryButton1, copyQueryButton2);\r\n }\r\n });\r\n\r\n }); \r\n }\r\n\r\n CopyCell(overwrite: boolean, copyQueryButton1: boolean, copyQueryButton2: boolean){\r\n _.each(this._timeRows(), (row)=>{\r\n let copyFromCellIndex = row.CopyFromCellIndex;\r\n \r\n if(!this._readOnly || this.HasAnyQueryButton){\r\n if(copyFromCellIndex >= 0){\r\n row.CopyCell(copyFromCellIndex, overwrite, copyQueryButton1, copyQueryButton2);\r\n }\r\n }else{\r\n row.UnSelectCopyToCells();\r\n }\r\n\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.CopyCell(overwrite, copyQueryButton1, copyQueryButton2);\r\n }\r\n });\r\n }); \r\n }\r\n\r\n get HasAnyQueryButton(){\r\n let hasQuery = this.GeneralProperties.GetPropertyValue(PROPERTIES.QUERY_BUTTON1) || this.GeneralProperties.GetPropertyValue(PROPERTIES.QUERY_BUTTON2);\r\n return !!hasQuery;\r\n }\r\n\r\n get HasData(){\r\n let hasData = false;\r\n _.each(this._timeRows(), (row)=>{\r\n if((!this._readOnly || this.HasAnyQueryButton) && row.HasData){\r\n hasData = true;\r\n }\r\n\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel && subControl.HasData){\r\n hasData = true;\r\n }\r\n });\r\n\r\n }); \r\n\r\n return hasData; \r\n }\r\n}","// Module\nvar code = \"<div class=\\\"planner-level-item\\\"> <div class=\\\"planner-item-content\\\"> <div class=\\\"plannerItemAreaBox\\\"> <!-- ko if: _showControlName --> <!-- ko text: Name --><!-- /ko --> <!-- /ko --> <div class=\\\"plannerItemArea plannerItemArea-bold\\\"> <!-- ko with: _subjectEntityIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: $data._subjectTitle\\\" class=\\\"planner-level-text\\\"></span> </div> <div class=\\\"plannerItemArea\\\"> <!-- ko with: _leftBarIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: $data._leftBarTitle\\\" class=\\\"planner-level-text\\\"></span> </div> <div class=\\\"plannerItemArea\\\"> <!-- ko with: _rightBarIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: $data._rightBarTitle\\\" class=\\\"planner-level-text\\\"></span> </div> </div> <div class=\\\"plannerItemAreaBox plannerItemAreaBox-actionsBox\\\"> <div class=\\\"plannerItemArea plannerItemArea-actions\\\"> <button data-bind=\\\"click: $root.CreatePlannerLevel.bind($root),\\r\\n\\t\\t\\t\\t \\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip:{ content: _labels.ADD_SUB_LEVEL_PLANNER }\\\" class=\\\"add-planner-sub-level-btn\\\"> <i class=\\\"fa fa-plus\\\"></i> </button> <button data-bind=\\\"click: $root.RemoveControl.bind($root, $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip:{ content: _labels.DELETE_PLANNER_LEVEL }\\\" class=\\\"remove-level-btn\\\"> <i class=\\\"fa fa-times\\\"></i> </button> </div> </div> </div> <!-- ko if: _subControls().length > 0 --> <div class=\\\"over-planner-sub-levels\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: $data._showDivideRow && Index !== 0 && HasPagination --> <tr data-bind=\\\"css: { 'paginator-row': !!Paginator }\\\" class=\\\"planner-table-divider-row\\\"> <td colspan=\\\"1\\\"></td> </tr> <!-- /ko --> <!-- ko foreach: { data: _dataRows, afterRender: $data.AfterRowRender } --> <tr class=\\\"planner-table-row\\\" data-bind=\\\"event: {\\r\\n mouseover: $parent.MouseRowOver.bind($data),\\r\\n mouseout: $parent.MouseRowOut($data)\\r\\n },\\r\\n style: {\\r\\n 'background-color' : $data.RowColor\\r\\n },\\r\\n css: {\\r\\n ['level-' + $parent._level] : 1,\\r\\n open : IsExpanded,\\r\\n 'active-row': $data.IsActive,\\r\\n 'copy-to-row': $data.IsCopyTo, \\r\\n 'copy-from-row': $data.IsCopyFrom\\r\\n }\\\"> <td data-bind=\\\"blockElement: $data.IsBlocked\\\" class=\\\"planner-table-name-cell\\\"> <!-- ko if: $parent._enableLink --> <a data-bind=\\\"click: $parent.LinkRecord.bind($parent, $data), tooltip: { content: $parent._linkUnderlyingTooltip }\\\" class=\\\"planner-table-link\\\"><i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i></a> <!-- /ko --> <!-- ko if: $parent._enableAddAndLink --> <a data-bind=\\\"click: $parent.AddAndLink.bind($parent, $data), tooltip: { content: $parent._addAndLinkUnderlyingTooltip }\\\" class=\\\"planner-table-link\\\"><i class=\\\"fa fa-plus\\\" aria-hidden=\\\"true\\\"></i></a> <!-- /ko --> <!-- ko with: $parent._subjectEntityIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: $data.BarName\\\" class=\\\"planner-bar-name\\\"></span> <!-- ko if: $parent._subControls().length > 0 --> <button class=\\\"planner-table-show-sub-items-btn\\\" data-bind=\\\"click: $parent.Toggle.bind($parent, $data, false), css : { active : IsExpanded }\\\"> <i class=\\\"fa fa-chevron-left\\\"></i> </button> <button class=\\\"planner-table-show-sub-items-btn\\\" data-bind=\\\"click: $parent.Toggle.bind($parent, $data, true)\\\"> <i data-bind=\\\"css: { 'fa-angle-double-down': !IsExpanded(), 'fa-angle-double-up': IsExpanded() }\\\" class=\\\"fa\\\"></i> </button> <!-- /ko --> </td> <!-- ko foreach: $data.CustomValues --> <td data-bind=\\\"blockElement: $parent.IsBlocked\\\" class=\\\"planner-table-name-cell-customCell\\\"> <!-- ko text: $data.Value --><!-- /ko --> </td> <!-- /ko --> </tr> <!-- ko if: IsExpanded --> <!-- ko foreach: SubControls --> <!-- ko template: { name: GetLeftBarTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: $data._showDivideRow && Index !== 0 && HasPagination --> <tr data-bind=\\\"css: { 'paginator-row': !!Paginator }\\\" class=\\\"planner-table-divider-row\\\"> <td data-bind=\\\"attr: { colspan: $data._divideRowColSpan }\\\"> <div class=\\\"planerPaginatorContainer planerPaginatorContainer--positionSticky\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> </td> </tr> <!-- /ko --> <!-- ko fastForEach: { data: _timeRows } --> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import {deserialize, deserializeAs, serializeAs} from 'libs/cerialize';\r\n\r\nexport class CustomColumnHeaderModel {\r\n @deserialize\r\n Title: string;\r\n\r\n @deserialize\r\n FieldType: string;\r\n\r\n @deserialize\r\n FieldName: string;\r\n}","import {deserialize, deserializeAs, serializeAs} from 'libs/cerialize';\r\n\r\nexport class ProjectManagerModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n}","import {deserialize, deserializeAs, serializeAs} from 'libs/cerialize';\r\nimport {PlannerLevelRowModel, TimeCellModel} from \"../../PlannerLevel/Models/PlannerLevelRowModel\";\r\nimport {CustomColumnHeaderModel} from \"./CustomColumnHeaderModel\";\r\nimport {ProjectManagerModel} from \"./ProjectManagerModel\";\r\n\r\nexport class TimeLineColumnModel {\r\n @deserialize\r\n TimeValue: string;\r\n\r\n @deserialize\r\n IsWeekend: boolean;\r\n}\r\n\r\nexport class PlannerPageModel {\r\n constructor(){\r\n this.PlannerLevels = [];\r\n this.CustomColumns = [];\r\n this.TimeLineColumns = [];\r\n this.ProjectManagers = [];\r\n }\r\n\r\n @deserializeAs(TimeLineColumnModel)\r\n TimeLineColumns: Array<TimeLineColumnModel>;\r\n\r\n @deserializeAs(PlannerLevelRowModel)\r\n PlannerLevels: Array<PlannerLevelRowModel>;\r\n\r\n @deserializeAs(CustomColumnHeaderModel)\r\n CustomColumns: Array<CustomColumnHeaderModel>;\r\n\r\n @deserializeAs(ProjectManagerModel)\r\n ProjectManagers: Array<ProjectManagerModel>;\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {PlannerPageModel} from \"../Models/PlannerPageModel\";\r\n\r\nexport interface IGetPlannerPageDataRequestModel {\r\n ControlId: number;\r\n WeekNumber: number;\r\n StartDate: string;\r\n RecordsPerPage: number;\r\n PageNumber: number;\r\n ViewType: string;\r\n ManagerId?: number\r\n SubjectRecordId?: number;\r\n}\r\n\r\nexport class PlannerPageStore {\r\n static GetData(params: IGetPlannerPageDataRequestModel): P.Promise<PlannerPageModel>{\r\n let deferredResult = P.defer<PlannerPageModel>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/PlannerApi/GetPlannerPageData',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if(result.IsSuccessfull){\r\n deferredResult.resolve( Deserialize(result.ResultObject, PlannerPageModel));\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {\r\n ConfirmationDialog,\r\n IConfirmationDialogOptions,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport Template from 'Core/Controls/PlannerPage/Dialogs/CopyQueryButtonConfirmationDialog.html';\r\n\r\nko.templates['Core/Controls/PlannerPage/Dialogs/CopyQueryButtonConfirmationDialog'] = Template;\r\n\r\nexport interface ICopyQueryButtonConfirmationDialogOptions extends IConfirmationDialogOptions {\r\n Entity1?: string;\r\n Entity2?: string;\r\n Width?: number;\r\n ModalClass?: string;\r\n}\r\n\r\nexport const EVENTS = {\r\n\tENTITY1_SELECTED: 'Entity1Selected',\r\n ENTITY2_SELECTED: 'Entity2Selected',\r\n ENTITY1_AND_ENTITY2_SELECTED: 'Entity1AndEntity2Selected'\r\n};\r\n\r\nexport class CopyQueryButtonConfirmationDialog extends ConfirmationDialog {\r\n private _textEntity1: KnockoutObservable<string>;\r\n private _textEntity2: KnockoutObservable<string>;\r\n private _textEntity1AndEntity2: KnockoutObservable<string>;\r\n\r\n constructor(options: ICopyQueryButtonConfirmationDialogOptions){\r\n super(options);\r\n this._textEntity1 = ko.observable(options.Entity1);\r\n this._textEntity2 = ko.observable(options.Entity2);\r\n this._textEntity1AndEntity2 = ko.observable(`${options.Entity1} and ${options.Entity2}`);\r\n }\r\n\r\n GetTemplateName() {\r\n\t\treturn 'Core/Controls/PlannerPage/Dialogs/CopyQueryButtonConfirmationDialog';\r\n }\r\n\r\n OnEntity1Click(){\r\n this.Close();\r\n this.Trigger(EVENTS.ENTITY1_SELECTED);\r\n }\r\n\r\n OnEntity2Click(){\r\n this.Close();\r\n this.Trigger(EVENTS.ENTITY2_SELECTED);\r\n }\r\n\r\n OnEntity1AndEntity2Click(){\r\n this.Close();\r\n this.Trigger(EVENTS.ENTITY1_AND_ENTITY2_SELECTED);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"confirmation-popup\\\"> <div class=\\\"header\\\"> <div class=\\\"app-logo\\\"> <img src=\\\"/img/Custom/App/official-main-logo-white.jpg\\\"> </div> <div class=\\\"icon\\\"> <!--ko if: IsQuestion--> <i class=\\\"fa fa-question-circle question\\\"></i> <!--/ko--> </div> </div> <div class=\\\"body\\\"> <p class=\\\"confirmation-text\\\" data-bind=\\\"html: _text\\\"></p> <div class=\\\"clearfix\\\"> <div class=\\\"confirmationButtons-Box\\\"> <button data-bind=\\\"click: OnEntity1Click, text: _textEntity1()\\\" class=\\\"btn btn-success\\\"></button> <button data-bind=\\\"click: OnEntity2Click, text: _textEntity2()\\\" class=\\\"btn btn-success\\\"></button> <button data-bind=\\\"click: OnEntity1AndEntity2Click, text: _textEntity1AndEntity2()\\\" class=\\\"btn btn-success\\\"></button> </div> <div class=\\\"actionButtons-Box\\\"> <button data-bind=\\\"click: OnCancelClick, text: _textDecline()\\\" class=\\\"btn btn-danger\\\"></button> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport 'editableCell';\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\n\r\nimport {IControl} from \"../IControl\";\r\nimport {CONTROL_TYPES, EVENTS} from \"../../Constant\";\r\nimport {TranslationManager} from \"../../Components/Translation/TranslationManager\";\r\n\r\nimport {PlannerLevel} from \"../PlannerLevel/PlannerLevel\";\r\nimport {PlannerLevelRowModel, TimeCellModel} from \"../PlannerLevel/Models/PlannerLevelRowModel\";\r\nimport {GlobalManager, GLOBALS} from \"../../GlobalManager/GlobalManager\";\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport DesignTemplate from 'Core/Controls/PlannerPage/Templates/Design.html';\r\nimport ViewTemplate from 'Core/Controls/PlannerPage/Templates/View.html';\r\nimport {IGetPlannerPageDataRequestModel, PlannerPageStore} from \"./Store/PlannerPageStore\";\r\nimport {BlockUI} from \"../../Common/BlockUi\";\r\nimport {CustomColumnHeaderModel} from \"./Models/CustomColumnHeaderModel\";\r\nimport {TimeLineColumnModel} from \"./Models/PlannerPageModel\";\r\nimport {ProjectManagerModel} from \"./Models/ProjectManagerModel\";\r\nimport {UserVarsManager, IPlannerPageParams} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport { CopyQueryButtonConfirmationDialog, EVENTS as QUERY_BUTTON_CONFIRMATION_DIALOG_EVENTS } from 'Core/Controls/PlannerPage/CopyQueryButtonConfirmationDialog';\r\n\r\nko.templates['Core/Controls/PlannerPage/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/PlannerPage/Templates/View'] = ViewTemplate;\r\n\r\nexport interface IMonth {\r\n\tTitle: string;\r\n\tIsActive: KnockoutObservable<boolean>;\r\n}\r\n\r\nexport interface IMonthHeader {\r\n\tYear: string;\r\n\tMonths: Array<IMonth>;\r\n}\r\n\r\nexport interface IDay {\r\n\tDayNum: string;\r\n\tDayName: string;\r\n\tIsWeekend: boolean;\r\n\tIsActive: KnockoutObservable<boolean>;\r\n}\r\n\r\nexport interface IWeek {\r\n\tTitle: string;\r\n\tIsActive: KnockoutObservable<boolean>;\r\n}\r\n\r\nexport interface IDayHeader {\r\n\tTitle: string;\r\n\tWeek: string;\r\n\tYear: string;\r\n\tStartDay: string;\r\n\tDays: Array<IDay>;\r\n}\r\n\r\nexport interface IWeekHeader {\r\n\tTitle: string;\r\n\tWeeks: Array<IWeek>;\r\n}\r\n\r\nexport const PLANNER_TYPES = {\r\n\tMONTH: 'Month',\r\n\tDAY: 'Day',\r\n\tWEEK: 'Week'\r\n}\r\n\r\nexport interface IViewType {\r\n\tValue: string,\r\n\tTitle: string\r\n}\r\n\r\nexport const PROPERTIES = {\r\n\tENABLE_MONTH_VIEW: 'EnableMonthView',\r\n\tENABLE_WEEK_VIEW: 'EnableWeekView',\r\n\tENABLE_DAY_VIEW: 'EnableDayView',\r\n\tENABLE_PROJECT_MANAGER_FILTER: 'EnableProjectManagerFilter'\r\n}\r\n\r\nexport class PlannerPage extends BaseControl{\r\n\tprivate _plannerLevels: KnockoutObservableArray<IControl>;\r\n\tprivate _startDate: KnockoutObservable<string>;\r\n\tprivate _weeks: Array<number>;\r\n\tprivate _selectedWeek: KnockoutObservable<number>;\r\n\tprivate _initialState: boolean;\r\n\tprivate _monthHeaders: KnockoutObservableArray<IMonthHeader>;\r\n\tprivate _dayHeaders: KnockoutObservableArray<IDayHeader>;\r\n\tprivate _weekHeaders: KnockoutObservableArray<IWeekHeader>;\r\n\tprivate _customColumnHeaders: KnockoutObservableArray<CustomColumnHeaderModel>;\r\n\tprivate _viewTypes: KnockoutObservableArray<IViewType>;\r\n\tprivate _selectedView: KnockoutObservable<IViewType>;\r\n\tprivate _renderViewMode: KnockoutObservable<string>;\r\n\tprivate _timeRangeLabel: KnockoutObservable<string>;\r\n\tprivate _weekPlanning: KnockoutObservable<boolean>;\r\n\tprivate _weekPlanningToggleClass: KnockoutComputed<string>;\r\n\tprivate _selectedDate: string;\r\n\tprivate _managers : KnockoutObservableArray<ProjectManagerModel>;\r\n\tprivate _manager: KnockoutObservable<ProjectManagerModel>;\r\n\tprotected _labels = LABELS;\r\n\tprivate _copyColumnMode: KnockoutObservable<boolean>;\r\n\tprivate _copyCellMode: KnockoutObservable<boolean>;\r\n\tprivate _copyFromColumnIndex: number;\r\n\tprivate _showManagerFilter: boolean;\r\n\r\n\tconstructor(params: IControlParam){\r\n\t\tsuper(params)\r\n\t\tthis._weekPlanning = ko.observable(this.GetDefaultIsWeekPlanning());\r\n\t\tthis._plannerLevels = ko.observableArray([]);\r\n\t\tthis._startDate = ko.observable(this.GetDefaultStartDate());\r\n\t\tthis._weeks = [];\r\n\t\tthis._selectedWeek = ko.observable(this.GetDefaultPeriod());\r\n\t\tthis._initialState = true;\r\n\t\tthis._monthHeaders = ko.observableArray([]);\r\n\t\tthis._dayHeaders = ko.observableArray([]);\r\n\t\tthis._weekHeaders = ko.observableArray([]);\r\n\t\tthis._managers = ko.observableArray([]);\r\n\t\tthis._manager = ko.observable(null);\r\n\t\tthis._copyColumnMode = ko.observable(false);\r\n\t\tthis._copyCellMode = ko.observable(false);\r\n\t\tthis._copyFromColumnIndex = null;\r\n\t\tthis._viewTypes = ko.observableArray([]);\r\n\t\tthis.ApplyProperties();\r\n\t\t\r\n\t\tthis._customColumnHeaders = ko.observableArray([]);\r\n\t\tthis._timeRangeLabel = ko.observable('');\r\n\r\n\t\tthis._selectedView = ko.observable(this.GetDefaultViewType());\r\n\t\tthis._renderViewMode = ko.observable(this._selectedView()?.Value);\r\n\r\n\t\tthis._weekPlanningToggleClass = ko.computed(()=>{\r\n\t\t\treturn this._weekPlanning() ? 'fa fa-toggle-on' : 'fa fa-toggle-off'\r\n\t\t});\r\n\r\n\t\tthis._selectedView.subscribe((newValue: IViewType) => {\r\n\t\t\tthis.SetDefaultViewType(newValue.Value);\r\n\t\t\tthis._weekPlanning(false);\r\n\t\t\tthis.LoadData();\r\n\r\n\t\t\tif(newValue.Value === PLANNER_TYPES.MONTH || newValue.Value === PLANNER_TYPES.WEEK){\r\n\t\t\t\tthis._timeRangeLabel(`${this._labels.MONTHS}:`);\r\n\t\t\t}\r\n\r\n\t\t\tif(newValue.Value === PLANNER_TYPES.DAY){\r\n\t\t\t\tthis._timeRangeLabel(`${this._labels.WEEKS}:`);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._weekPlanning.subscribe((newValue) => {\r\n\t\t\tthis.SetDefaultIsWeekPlanning(newValue);\r\n\t\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\t\tsubControl.IsHightResolutionPlanning = newValue;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t})\r\n\r\n\t\tthis._selectedWeek.subscribe(() =>{\r\n\t\t\tthis.SetDefaultPerion(this._selectedWeek());\r\n\t\t\tthis.LoadData();\r\n\t\t});\r\n\r\n\t\tfor(let weekNumber=1; weekNumber <= 36;weekNumber++){\r\n\t\t\tthis._weeks.push(weekNumber);\r\n\t\t}\r\n\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\tsubControl.ShowDivideRow = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.AddEvent(EVENTS.ON_PLANNER_PAGE_CLICK);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){\r\n\t\tlet parentProperties = this._parentControl.GeneralProperties; \r\n\t\tif(parentProperties.GetPropertyValue(PROPERTIES.ENABLE_MONTH_VIEW)){\r\n\t\t\tthis._viewTypes.push({ Value: PLANNER_TYPES.MONTH, Title: this._labels.MONTH });\r\n\t\t}\r\n\r\n\t\tif(parentProperties.GetPropertyValue(PROPERTIES.ENABLE_DAY_VIEW)){\r\n\t\t\tthis._viewTypes.push({ Value: PLANNER_TYPES.DAY, Title: this._labels.DAY });\r\n\t\t}\r\n\r\n\t\tif(parentProperties.GetPropertyValue(PROPERTIES.ENABLE_WEEK_VIEW)){\r\n\t\t\tthis._viewTypes.push({ Value: PLANNER_TYPES.WEEK, Title: this._labels.WEEK });\r\n\t\t}\r\n\r\n\t\tthis._showManagerFilter = parentProperties.GetPropertyValue(PROPERTIES.ENABLE_PROJECT_MANAGER_FILTER);\r\n\r\n\t\tif(this._viewTypes().length === 0){\r\n\t\t\tNotifier.Failed(NOTIFICATIONS.NO_ANY_VIEW_OPTIONS);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ResetSubControlState(){\r\n\t\t_.each(this._subControls(), (item)=>{\r\n\t\t\tif(item instanceof PlannerLevel){\r\n\t\t\t\titem.ResetDefaultExpandedState();\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tprivate GetDefaultStartDate(): string {\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tlet startDate = null;\r\n\t\tif(userVars){\r\n\t\t\tstartDate = userVars.StartDate;\r\n\t\t}\r\n\t\treturn startDate || moment().format();\r\n\t}\r\n\r\n\tprivate SetDefaultStartDate(value: string){\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tif(userVars.StartDate != value){\r\n\t\t\tuserVars.StartDate = value;\r\n\t\t\tthis.ResetSubControlState();\r\n\t\t\tthis.SetUserVars(userVars);\t\r\n\t\t}\r\n\t}\r\n\r\n\tprivate GetDefaultIsWeekPlanning(): boolean {\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tif(userVars){\r\n\t\t\treturn userVars.IsWeekPlannnig;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate SetDefaultIsWeekPlanning(value: boolean){\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tuserVars.IsWeekPlannnig = value;\r\n\t\tthis.ResetSubControlState();\r\n\t\tthis.SetUserVars(userVars);\r\n\t}\r\n\r\n\tprivate SetDefaultPerion(period: number){\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tuserVars.Period = period;\r\n\t\tthis.ResetSubControlState();\r\n\t\tthis.SetUserVars(userVars);\r\n\t}\r\n\r\n\tprivate GetDefaultPeriod(): number {\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tif(userVars){\r\n\t\t\treturn userVars.Period;\r\n\t\t}\r\n\t\treturn 36;\r\n\t}\r\n\r\n\tprivate SetDefaultProjectManagerId(projectManagerId: number){\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tuserVars.ProjectManagerId = projectManagerId;\r\n\t\tthis.ResetSubControlState();\r\n\t\tthis.SetUserVars(userVars);\r\n\t}\r\n\r\n\tprivate GetDefaultProjectManagerId(): number {\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tif(userVars){\r\n\t\t\treturn userVars.ProjectManagerId;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate GetDefaultViewType(): IViewType {\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tif(userVars){\r\n\t\t\tlet viewType = _.find(this._viewTypes(), (type)=> type.Value === userVars.ViewType);\r\n\t\t\tif(viewType) {\r\n\t\t\t\treturn viewType;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._viewTypes()[0];\r\n\t}\r\n\r\n\tprivate SetDefaultViewType(viewTypeValue: string){\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tuserVars.ViewType = viewTypeValue;\r\n\t\tthis.ResetSubControlState();\r\n\t\tthis.SetUserVars(userVars);\r\n\t}\r\n\r\n\tprivate GetUserVars(): IPlannerPageParams {\r\n\t\treturn UserVarsManager.Instance.GetPlannerPageParams(this.GetControlId());\r\n\t}\r\n\r\n\tprivate SetUserVars(params: IPlannerPageParams) {\r\n\t\tUserVarsManager.Instance.SetPlannerPageParams(this.GetControlId(), params);\r\n\t}\r\n\r\n\tToggleWeekPlanning(){\r\n\t\tthis._weekPlanning(!this._weekPlanning());\r\n\t}\r\n\r\n\tGetLocale() {\r\n\t\treturn moment.locale();\r\n\t}\r\n\r\n\tNext(){\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.WEEK){\r\n\t\t\tthis._startDate(moment(this._startDate()).add(1, 'week').format());\r\n\t\t}else{\r\n\t\t\tthis._startDate(moment(this._startDate()).add(1, 'M').format());\r\n\t\t}\r\n\t}\r\n\r\n\tNextYear(){\r\n\t\tthis._startDate(moment(this._startDate()).add(1, 'y').format());\r\n\t}\r\n\r\n\tPrevious(){\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.WEEK){\r\n\t\t\tthis._startDate(moment(this._startDate()).subtract(1, 'week').format());\r\n\t\t}else{\r\n\t\t\tthis._startDate(moment(this._startDate()).subtract(1, 'M').format());\r\n\t\t}\r\n\t}\r\n\r\n\tPreviousYear(){\r\n\t\tthis._startDate(moment(this._startDate()).subtract(1, 'y').format());\r\n\t}\r\n\r\n\tget MonthHeaders(){\r\n\t\treturn this._monthHeaders;\r\n\t}\r\n\r\n\tget DayHeaders(){\r\n\t\treturn this._dayHeaders;\r\n\t}\r\n\r\n\tget WeekHeaders(){\r\n\t\treturn this._weekHeaders;\r\n\t}\r\n\r\n\tget CustomColumnHeaders(){\r\n\t\treturn this._customColumnHeaders;\r\n\t}\r\n\r\n\tSetHeader(timeLine: Array<TimeLineColumnModel>){\r\n\t\tthis._monthHeaders([]);\r\n\t\tthis._dayHeaders([]);\r\n\t\tthis._weekHeaders([]);\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.MONTH) {\r\n\t\t\tthis.BuildMonthHeader(timeLine);\r\n\t\t}\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.DAY) {\r\n\t\t\tthis.BuildDayHeader(timeLine);\r\n\t\t}\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.WEEK) {\r\n\t\t\tthis.BuildWeekHeader(timeLine);\r\n\t\t}\r\n\t}\r\n\r\n\tBuildWeekHeader(timeLine: Array<TimeLineColumnModel>){\r\n\t\tif (timeLine) {\r\n\t\t\tlet byWeek = [];\r\n\t\t\tlet currentGroup = null;\r\n\r\n\t\t\tlet days = [];\r\n\t\t\t_.each(timeLine, (timeValue: TimeLineColumnModel) => {\r\n\t\t\t\tif(currentGroup !== null && moment(currentGroup).month() !== moment(timeValue.TimeValue).month()){\r\n\t\t\t\t\tbyWeek.push({ Month: currentGroup, Days: days });\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentGroup = timeValue.TimeValue;\r\n\t\t\t\tdays.push(timeValue);\r\n\r\n\t\t\t\tif(_.last(timeLine) === timeValue){\r\n\t\t\t\t\tbyWeek.push({ Month: currentGroup, Days: days });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t_.each(byWeek, (value) => {\r\n\t\t\t\tlet header: IWeekHeader = {\r\n\t\t\t\t\tTitle: `${moment(value.Month).format('MMMM')}, ${moment(value.Month).year()}`,\r\n\t\t\t\t\tWeeks: _.map(value.Days, (month: TimeLineColumnModel) => {\r\n\t\t\t\t\t\treturn { Title: `${this._labels.WEEK[0]}${moment(month.TimeValue).isoWeek()}`, StartDate: moment(month.TimeValue).format('DD'), IsActive: ko.observable(false) };\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._weekHeaders.push(header);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tBuildMonthHeader(timeLine: Array<TimeLineColumnModel>){\r\n\t\tif (timeLine) {\r\n\t\t\tlet byYear = _.groupBy(timeLine, (timeValue) => {\r\n\t\t\t\treturn moment(timeValue.TimeValue).year();\r\n\t\t\t});\r\n\r\n\t\t\t_.each(byYear, (value, key) => {\r\n\t\t\t\tlet header: IMonthHeader = {\r\n\t\t\t\t\tYear: key,\r\n\t\t\t\t\tMonths: _.map(value, (month) => {\r\n\t\t\t\t\t\treturn { Title: moment(month.TimeValue).format('MMM'), IsActive: ko.observable(false) };\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._monthHeaders.push(header);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tBuildDayHeader(timeLine: Array<TimeLineColumnModel>){\r\n\t\tlet byWeek = [];\r\n\t\tlet currentGroup = null;\r\n\t\tif (timeLine) {\r\n\r\n\t\t\tlet days = [];\r\n\t\t\t_.each(timeLine, (timeValue: TimeLineColumnModel) => {\r\n\r\n\t\t\t\tif(currentGroup !== null && currentGroup !== moment(timeValue.TimeValue).isoWeek()){\r\n\t\t\t\t\tbyWeek.push({ Week: currentGroup, Days: days });\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentGroup = moment(timeValue.TimeValue).isoWeek();\r\n\r\n\t\t\t\tdays.push(timeValue);\r\n\r\n\t\t\t\tif(_.last(timeLine) === timeValue){\r\n\t\t\t\t\tbyWeek.push({ Week: currentGroup, Days: days });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t_.each(byWeek, (value) => {\r\n\t\t\t\tlet firstDayOfWeek = _.first(value.Days) as TimeLineColumnModel;\r\n\r\n\t\t\t\tlet header: IDayHeader = {\r\n\t\t\t\t\tTitle: `${this._labels.WEEK} ${value.Week}: ${ moment(firstDayOfWeek.TimeValue).format('DD')} ${moment(firstDayOfWeek.TimeValue).format('MMM')} ${moment(firstDayOfWeek.TimeValue).format('YYYY')}`,\r\n\t\t\t\t\tWeek: value.Week,\r\n\t\t\t\t\tStartDay: moment(_.first(value.Days)).format('DD'),\r\n\t\t\t\t\tYear: value.Week,\r\n\t\t\t\t\tDays: _.map(value.Days, (item: TimeLineColumnModel) => {\r\n\t\t\t\t\t\treturn { IsActive: ko.observable(false), DayName: moment(item.TimeValue).format('ddd'), DayNum: moment(item.TimeValue).format('DD'), IsWeekend: item.IsWeekend }\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._dayHeaders.push(header);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tActivateColumn(index: number){\r\n\t\t_.each(this._subControls(), (control) => {\r\n\t\t\tif(control instanceof PlannerLevel){\r\n\t\t\t\tcontrol.ActivateColumn(index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.DAY) {\r\n\t\t\tlet allDays: Array<IDay> = [];\r\n\t\t\t_.each(this._dayHeaders(), (item) => {\r\n\t\t\t\tallDays = allDays.concat(item.Days);\r\n\t\t\t});\r\n\r\n\t\t\tlet activeDay = allDays[index];\r\n\t\t\tif (activeDay) {\r\n\t\t\t\tactiveDay.IsActive(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.MONTH) {\r\n\t\t\tlet allMonths: Array<IMonth> = [];\r\n\t\t\t_.each(this._monthHeaders(), (item) => {\r\n\t\t\t\tallMonths = allMonths.concat(item.Months);\r\n\t\t\t});\r\n\r\n\t\t\tlet activeMonth = allMonths[index];\r\n\t\t\tif (activeMonth) {\r\n\t\t\t\tactiveMonth.IsActive(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.WEEK) {\r\n\t\t\tlet allMonths: Array<IMonth> = [];\r\n\t\t\t_.each(this._weekHeaders(), (item) => {\r\n\t\t\t\tallMonths = allMonths.concat(item.Weeks);\r\n\t\t\t});\r\n\r\n\t\t\tlet activeMonth = allMonths[index];\r\n\t\t\tif (activeMonth) {\r\n\t\t\t\tactiveMonth.IsActive(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tDeactivateColumn(index: number){\r\n\t\t_.each(this._subControls(), (control) => {\r\n\t\t\tif(control instanceof PlannerLevel){\r\n\t\t\t\tcontrol.DeactivateColumn(index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.DAY) {\r\n\t\t\tlet allDays: Array<IDay> = [];\r\n\t\t\t_.each(this._dayHeaders(), (item) => {\r\n\t\t\t\tallDays = allDays.concat(item.Days);\r\n\t\t\t});\r\n\r\n\t\t\tlet activeDay = allDays[index];\r\n\t\t\tif (activeDay) {\r\n\t\t\t\tactiveDay.IsActive(false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.MONTH) {\r\n\t\t\tlet allMonths: Array<IMonth> = [];\r\n\t\t\t_.each(this._monthHeaders(), (item) => {\r\n\t\t\t\tallMonths = allMonths.concat(item.Months);\r\n\t\t\t});\r\n\r\n\t\t\tlet activeMonth = allMonths[index];\r\n\t\t\tif (activeMonth) {\r\n\t\t\t\tactiveMonth.IsActive(false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.WEEK ) {\r\n\t\t\tlet allMonths: Array<IMonth> = [];\r\n\t\t\t_.each(this._weekHeaders(), (item) => {\r\n\t\t\t\tallMonths = allMonths.concat(item.Weeks);\r\n\t\t\t});\r\n\r\n\t\t\tlet activeMonth = allMonths[index];\r\n\t\t\tif (activeMonth) {\r\n\t\t\t\tactiveMonth.IsActive(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tUnselectCells(exceptCell: TimeCellModel){\r\n\t\t_.each(this._subControls(), (control) => {\r\n\t\t\tif(control instanceof PlannerLevel){\r\n\t\t\t\tcontrol.UnselectCells(exceptCell);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tSelectDate(date: string){\r\n\t\tthis._selectedDate = moment(date).format();\r\n\t\tthis.SetDefaultStartDate(this._selectedDate);\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tprivate IsFilterBySubject(): boolean {\t\t\r\n\t\tlet subControl = _.first(this._subControls());\r\n\t\tif(subControl){\r\n\t\t\treturn this._form.GetScreen().IsConsultScreen && this._form.GetScreen().GetEntityId() === subControl.GetFieldModel().EntityId;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tLoadData(){\r\n\t\tif(!this._selectedView()){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.CancelCopy();\r\n\t\tlet requestModel: IGetPlannerPageDataRequestModel = {\r\n\t\t\tStartDate: this._selectedDate,\r\n\t\t\tControlId: this.GetControlId(),\r\n\t\t\tWeekNumber: this._selectedWeek(),\r\n\t\t\tRecordsPerPage: 20,\r\n\t\t\tPageNumber: 1,\r\n\t\t\tViewType: this._selectedView().Value,\r\n\t\t\tManagerId: this._manager() ? this._manager().Id : this.GetDefaultProjectManagerId(),\r\n\t\t\tSubjectRecordId: this.IsFilterBySubject() ? this._form.GetScreen().GetRecordId() : null\r\n\t\t};\r\n\r\n\t\tBlockUI.Block();\r\n\t\tPlannerPageStore.GetData(requestModel)\r\n\t\t\t.always(()=>{\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) =>{\r\n\t\t\t\tif(this._showManagerFilter && this._managers().length === 0){\r\n\t\t\t\t\tthis._managers(result.ProjectManagers);\r\n\t\t\t\t\tthis._manager(_.find(this._managers(), (item)=> item.Id === this.GetDefaultProjectManagerId()));\r\n\r\n\t\t\t\t\tthis._manager.subscribe(() =>{\r\n\t\t\t\t\t\tthis.SetDefaultProjectManagerId(this._manager() ? this._manager().Id : null);\r\n\t\t\t\t\t\tthis.LoadData();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.SetHeader(result.TimeLineColumns);\r\n\t\t\t\tthis._customColumnHeaders(result.CustomColumns);\r\n\t\t\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\t\t\tsubControl.SetWeekNumber(this._selectedWeek());\r\n\t\t\t\t\t\tlet managerId = this._manager() ? this._manager().Id : null;\r\n\t\t\t\t\t\tsubControl.SetProjectManager(managerId);\r\n\t\t\t\t\t\tsubControl.SetStartDate(this._selectedDate);\r\n\t\t\t\t\t\tsubControl.SetViewType(this._selectedView().Value);\r\n\t\t\t\t\t\tsubControl.SetCustomColumnHeaders(this._customColumnHeaders());\r\n\t\t\t\t\t\tlet controlData = _.filter(result.PlannerLevels, (item) =>{\r\n\t\t\t\t\t\t\treturn item.ControlId === subControl.GetControlId();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tsubControl.PopulateData(controlData);\r\n\t\t\t\t\t\tsubControl.Paginator().PageNumber = 1;\r\n\t\t\t\t\t\tsubControl.Paginator().RecordsPerPage = 20;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._renderViewMode(this._selectedView().Value);\r\n\t\t\t\t\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t($('.left-planner-table') as any).freezeTable('update');\r\n\t\t\t\t\t($('.right-planner-table') as any).freezeTable('update');\r\n\t\t\t\t},0);\r\n\r\n\t\t\t});\r\n\t}\r\n\r\n\tInit(){\r\n\t\tlet planerLevels = _.filter(this._subControls(), (subControl) => {\r\n\t\t\treturn subControl.GetType() === CONTROL_TYPES.PlannerLevel;\r\n\t\t});\r\n\r\n\t\tthis._plannerLevels(planerLevels);\r\n\r\n\t\tthis._subControls.subscribe(()=>{\r\n\t\t\tlet planerLevels = _.filter(this._subControls(), (subControl) => {\r\n\t\t\t\treturn subControl.GetType() === CONTROL_TYPES.PlannerLevel;\r\n\t\t\t});\r\n\r\n\t\t\tthis._plannerLevels(planerLevels);\r\n\t\t});\r\n\r\n\t\tif(this._selectedView()?.Value === PLANNER_TYPES.MONTH){\r\n\t\t\tthis._timeRangeLabel(`${this._labels.MONTHS}:`);\r\n\t\t}\r\n\r\n\t\tif(this._selectedView()?.Value === PLANNER_TYPES.DAY){\r\n\t\t\tthis._timeRangeLabel(`${this._labels.WEEKS}:`);\r\n\t\t}\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tthis.Trigger(EVENTS.ON_PLANNER_PAGE_CLICK);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate GetName(): string {\r\n\t\tlet translationList = this._model().NameTranslations;\r\n\t\tlet currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n\t\tlet currentLangItem = _.find(translationList, (item) => {\r\n\t\t\treturn currentLang.Id === item.Language.K_Language;\r\n\t\t});\r\n\t\tif (currentLangItem) {\r\n\t\t\tthis._getCurrentName = currentLangItem.Translation;\r\n\t\t}\r\n\r\n\t\tif (this._getCurrentName) {\r\n\t\t\treturn this._getCurrentName;\r\n\t\t} else {\r\n\t\t\treturn this._model().Name;\r\n\t\t}\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\treturn this.GetName() || this.GetDefaultName();\r\n\t}\r\n\r\n\tstatic GetDefaultName() {\r\n\t\treturn 'New page';\r\n\t}\r\n\r\n\tAddSubControl(control: IControl) {\r\n\t\tthis._subControls.push(control);\r\n\t}\r\n\r\n\tBuildColumnContextMenu(column: IMonth | IDay | IWeek, plannerPage: PlannerPage){\r\n return {\r\n callback: function() {\r\n\t\t\t\tlet index = plannerPage.GetColumnIndex(column);\r\n\t\t\t\tplannerPage._copyFromColumnIndex = index;\r\n\t\t\t\tplannerPage.CancelCopyToSelection();\r\n\t\t\t\tplannerPage.SelectCopyFromColumn(plannerPage);\r\n\t\t\t\tlet notifiler = new Notifier();\t\r\n\t\t\t\tnotifiler.Warning(NOTIFICATIONS.SELECT_PERIOD.replace('{periodName}', plannerPage._selectedView().Title));\r\n\t\t\t\tplannerPage._copyColumnMode(true);\r\n\t\t\t},\r\n\t\t\titems: {\r\n\t\t\t\t\"copyRow\": { name: LABELS.COPY_PERIOD.replace('{periodName}', plannerPage._selectedView().Title) },\r\n }\r\n };\r\n\t}\r\n\t\r\n\tGetColumnIndex(column: IMonth | IDay | IWeek): number{\r\n\t\tlet allItems: Array<IMonth | IDay | IWeek> = [];\r\n\r\n\t\tif(this._renderViewMode() === 'Month'){\r\n\t\t\t_.each(this._monthHeaders(), (header) => {\r\n\t\t\t\tallItems = allItems.concat(header.Months);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\r\n\t\tif(this._renderViewMode() === 'Day'){\r\n\t\t\t_.each(this._dayHeaders(), (header) => {\r\n\t\t\t\tallItems = allItems.concat(header.Days);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this._renderViewMode() === 'Week'){\r\n\t\t\t_.each(this._weekHeaders(), (header) => {\r\n\t\t\t\tallItems = allItems.concat(header.Weeks);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn allItems.indexOf(column);\r\n\t}\r\n\r\n\tSelectColumn(index: number){\r\n\t\tif(this._copyFromColumnIndex === index) return;\r\n\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\tsubControl.SelectCopyToCell(index);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tSelectCopyFromColumn(page: PlannerPage){\r\n\t\t_.each(page._subControls(), (subControl) => {\r\n\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\tsubControl.SelectCopyFromCell(page._copyFromColumnIndex);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tUnSelectCopyFromColumn(){\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\tsubControl.UnSelectCopyFromCell();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tGetButton1TableName(): string {\r\n\t\tlet button1TableName = null;\r\n\t\t_.each(this._subControls(), (control) => {\r\n\t\t\tif(control instanceof PlannerLevel && control.Button1TableName){\r\n\t\t\t\tbutton1TableName = control.Button1TableName;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn button1TableName;\r\n\t}\r\n\r\n\tGetButton2TableName(): string {\r\n\t\tlet button1TableName = null;\r\n\t\t_.each(this._subControls(), (control) => {\r\n\t\t\tif(control instanceof PlannerLevel && control.Button2TableName){\r\n\t\t\t\tbutton1TableName = control.Button2TableName;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn button1TableName;\r\n\t}\r\n\r\n\tCopyColumn(){\r\n\t\tthis.ShowSelectCellSubjectConfirmation();\r\n\t}\r\n\r\n\tShowSelectCellSubjectConfirmation(){\r\n\t\tlet button1TableName = this.GetButton1TableName();\r\n\t\tlet button2TableName = this.GetButton2TableName();\r\n\r\n\t\tif(button1TableName || button2TableName){\r\n\t\t\tlet copyQueryButtonConfirmationDialog = new CopyQueryButtonConfirmationDialog({\r\n\t\t\t\tText: CONFIRMATIONS.SELECT_CELL_SUBJECT,\r\n\t\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\t\tEntity1: button1TableName,\r\n\t\t\t\tEntity2: button2TableName,\r\n\t\t\t\tWidth: 500,\r\n\t\t\t\tModalClass: 'copyQueryButtonConfirmationDialog',\r\n\t\t\t\tTextDecline: LABELS.CANCEL\r\n\t\t\t});\r\n\t\t\tcopyQueryButtonConfirmationDialog.Show();\r\n\r\n\t\t\tcopyQueryButtonConfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, ()=>{\r\n\t\t\t\tthis.CancelCopyToSelection();\r\n\t\t\t});\r\n\r\n\t\t\tcopyQueryButtonConfirmationDialog.On(QUERY_BUTTON_CONFIRMATION_DIALOG_EVENTS.ENTITY1_SELECTED, this, ()=>{\r\n\t\t\t\tthis.ShowOverwriteDataConfirmation(true, false);\r\n\t\t\t});\r\n\r\n\t\t\tcopyQueryButtonConfirmationDialog.On(QUERY_BUTTON_CONFIRMATION_DIALOG_EVENTS.ENTITY2_SELECTED, this, ()=>{\r\n\t\t\t\tthis.ShowOverwriteDataConfirmation(false, true);\r\n\t\t\t});\r\n\t\t\t\t\r\n\t\t\tcopyQueryButtonConfirmationDialog.On(QUERY_BUTTON_CONFIRMATION_DIALOG_EVENTS.ENTITY1_AND_ENTITY2_SELECTED, this, ()=>{\r\n\t\t\t\tthis.ShowOverwriteDataConfirmation(true, true);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.ShowOverwriteDataConfirmation(false, false);\r\n\t\t}\r\n\t}\r\n\r\n\tShowOverwriteDataConfirmation(copyQueryButton1: boolean, copyQueryButton2: boolean){\r\n\t\tif(this.IsCopyToCellHasData){\r\n\t\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\t\tText: NOTIFICATIONS.COPY_PLANNER_DATA,\r\n\t\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\t\tTextConfirm: LABELS.OVERWRITE,\r\n\t\t\t\tTextSkip: LABELS.SKIP_EXISTING,\r\n\t\t\t\tTextDecline: LABELS.CANCEL\r\n\t\t\t});\r\n\r\n\t\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, ()=>{\r\n\t\t\t\tthis.CopyData(true, copyQueryButton1, copyQueryButton2);\r\n\t\t\t});\r\n\r\n\t\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.SKIP_SELECTED, this, ()=>{\r\n\t\t\t\tthis.CopyData(false, copyQueryButton1, copyQueryButton2);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, ()=>{\r\n\t\t\t\tthis.CancelCopyToSelection();\r\n\t\t\t});\r\n\r\n\t\t\tconfirmationDialog.Show();\t\t\t\r\n\r\n\t\t}else{\r\n\t\t\tthis.CopyData(true, copyQueryButton1, copyQueryButton2);\r\n\t\t}\r\n\t}\r\n\r\n\tCancelCopyToSelection(){\r\n\t\tthis._copyColumnMode(false);\r\n\t\tthis._copyCellMode(false);\r\n\t\tthis.UnSelectCopyFromColumn();\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\tsubControl.UnSelectCopyToCells();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tCopyData(overwrite: boolean, copyQueryButton1: boolean, copyQueryButton2: boolean){\r\n\t\tif(this._copyColumnMode()){\r\n\t\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\t\tsubControl.CopyColumn(this._copyFromColumnIndex, overwrite, copyQueryButton1, copyQueryButton2);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._copyColumnMode(false);\r\n\t\t\tthis._copyFromColumnIndex = null;\r\n\t\t\tthis.UnSelectCopyFromColumn();\r\n\t\t}\r\n\r\n\t\tif(this._copyCellMode()){\r\n\t\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\t\tsubControl.CopyCell(overwrite, copyQueryButton1, copyQueryButton2);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._copyCellMode(false);\r\n\t\t\tthis.CancelCopyToSelection();\r\n\t\t}\r\n\t}\r\n\r\n\tget IsCopyToCellHasData(){\r\n\t\tlet hasData = false;\r\n\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif(subControl instanceof PlannerLevel && subControl.HasData){\r\n\t\t\t\thasData = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn hasData;\r\n\t}\r\n\r\n\tCancelCopy(){\r\n\t\tthis.CancelCopyToSelection();\r\n\t}\r\n\t\r\n\tRightBarTableClick(page: PlannerPage, event: any){\t\r\n\t\tif(!page._copyColumnMode()) return;\t\r\n\t\tif($(event.target).data('index') != undefined){\r\n\t\t\tthis.SelectColumn($(event.target).data('index'));\r\n\t\t};\r\n\t}\t\r\n\r\n\tCalculateIndex(column: IMonth | IDay | IWeek){\r\n\t\treturn this.GetColumnIndex(column);\r\n\t}\r\n\r\n\tSetCopyCellMode(){\r\n\t\tthis.CancelCopyToSelection();\t\t\r\n\t\tthis._copyCellMode(true);\r\n\t}\r\n\r\n\tCopyCell(){\t\r\n\t\tthis.ShowSelectCellSubjectConfirmation();\r\n\t}\r\n}","// Module\nvar code = \"<button data-bind=\\\"css: { 'active': _isActive }\\\" class=\\\"tab tab-button\\\"> <span class=\\\"close-wrapper\\\"> <span data-bind=\\\"click: $root.RemoveControl.bind($root, $parent), preventBubble: ['click']\\\" class=\\\"close remove-control\\\" title=\\\"Remove control\\\"> <svg viewBox=\\\"0 0 24 24\\\" style=\\\"\\\"> <path d=\\\"M22.2,4c0,0,0.5,0.6,0,1.1l-6.8,6.8l6.9,6.9c0.5,0.5,0,1.1,0,1.1L20,22.3c0,0-0.6,0.5-1.1,0L12,15.4l-6.9,6.9c-0.5,0.5-1.1,0-1.1,0L1.7,20c0,0-0.5-0.6,0-1.1L8.6,12L1.7,5.1C1.2,4.6,1.7,4,1.7,4L4,1.7c0,0,0.6-0.5,1.1,0L12,8.5l6.8-6.8c0.5-0.5,1.1,0,1.1,0L22.2,4z\\\"></path> </svg> </span> </span> <a data-bind=\\\"text: Title, click: Click, preventBubble: ['click']\\\" class=\\\"tab-link\\\"></a> <i data-bind=\\\"click: $root.ShowControlEditor.bind($root, $data), preventBubble: ['click']\\\" class=\\\"fa fa-edit\\\"></i> </button>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click\\\" class=\\\"tab-link\\\"> <span data-bind=\\\"text: Title\\\"></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {IControl} from \"../IControl\";\r\nimport {PlannerPage} from \"../PlannerPage/PlannerPage\";\r\nimport {EVENTS} from 'Core/Constant'\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport Split from 'split.js';\r\nimport Config from 'Core/Controls/Planner/Config.json';\r\n\r\nimport DesignTemplate from 'Core/Controls/Planner/Templates/Design.html';\r\nimport ToolBarTemplate from 'Core/Controls/Planner/Templates/ToolBar.html';\r\nimport ViewTemplate from 'Core/Controls/Planner/Templates/View.html';\r\n\r\nko.templates['Core/Controls/Planner/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Planner/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Planner/Templates/View'] = ViewTemplate;\r\n\r\nexport class Planner extends BaseControl {\r\n\tprivate _currentPlannerPage: KnockoutObservable<PlannerPage> = ko.observable(null);\r\n\tprivate _currentTabIndex: number;\r\n\tprivate _plannerHtmlTable: HTMLTableElement;\r\n\tprivate _selection: KnockoutObservableArray<any>;\r\n\tprivate _blockElements: Array<HTMLElement>;\r\n\tprotected _labels = LABELS;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, Config);\r\n\t\tthis._currentTabIndex = 0;\r\n\t\tthis._blockElements = [];\r\n\t\tthis._selection = ko.observableArray([]);\r\n\t\tthis._selection.subscribe((newValue)=>{\r\n\t\t\tif(this._plannerHtmlTable && (this._plannerHtmlTable as any)._cellSelection){\r\n\t\t\t\tlet input = (this._plannerHtmlTable as any)._cellSelection.view.inputElement;\r\n\t\t\t\tif(input){\r\n\t\t\t\t\t$(input).inputmask('Regex', {regex: '^[0-9]+$'});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tResetSelection(){\r\n\t\tthis._selection([]);\r\n\t}\r\n\r\n\tBlockSelection(){\r\n\t\t_.each(this._selection(), (item) => {\r\n\t\t\tthis._blockElements.push(item.cell);\r\n\t\t\tBlockUI.Block({ Target: item.cell } );\r\n\t\t});\r\n\t}\r\n\r\n\tUnblockSelection(){\r\n\t\t_.each(this._blockElements, (item) => {\r\n\t\t\tBlockUI.Unblock(item);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tconst subControls = this._subControls();\r\n\t\tconst controlId = this.GetControlId();\r\n\r\n\t\tsubControls.forEach((plannerPage: IControl) => {\r\n\t\t\tlet page = <PlannerPage>plannerPage;\r\n\t\t\tpage.On(EVENTS.ON_PLANNER_PAGE_CLICK, this, (args: any) => {\r\n\t\t\t\tlet plannerPage = <PlannerPage>args.source;\r\n\t\t\t\tthis.SetActiveTabPage(plannerPage, args.source._parentControl.GetControlId());\r\n\t\t\t\tthis._plannerHtmlTable = $(this._el).find('.planner-table')[0] as HTMLTableElement;\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tconst plannerTabsParams = UserVarsManager.Instance.GetPlannerTabsParams();\r\n\t\tconst activityStorage = plannerTabsParams ? plannerTabsParams.plannerTabsActivityStorage || {} : {};\r\n\r\n\t\tif (_.isEmpty(activityStorage[controlId])) {\r\n\t\t\tconst startDate = new Date();\r\n\t\t\tstartDate.setDate(startDate.getDate() - 1);\r\n\t\t\tactivityStorage[controlId] = {};\r\n\t\t\tsubControls.forEach(control => activityStorage[controlId][control.GetControlId()] = startDate.getTime());\r\n\r\n\t\t\tUserVarsManager.Instance.SetPlannerTabsParams(null, activityStorage);\r\n\t\t}\r\n\r\n\t\tconst activeTab = this.GetPreselectTab();\r\n\r\n\t\tif (activeTab) {\r\n\t\t\tactiveTab.SetIsVisible(true);\r\n\r\n\t\t\tthis.SetActiveTab(subControls.indexOf(activeTab));\r\n\t\t\tthis.SetActiveTabPage(<PlannerPage>activeTab);\r\n\r\n\t\t} else {\r\n\t\t\tconst firstVisible = subControls.find(subControl => subControl.GetIsVisible());\r\n\r\n\t\t\tif (firstVisible) {\r\n\t\t\t\tthis.SetActiveTabPage(<PlannerPage>firstVisible);\r\n\t\t\t} else if (subControls.length >= 1) {\r\n\t\t\t\tsubControls[0].SetIsVisible(true);\r\n\t\t\t\tthis.SetActiveTabPage(<PlannerPage>subControls[0]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate GetPreselectTab() {\r\n\t\tlet preSelectedPlannerTab = UserVarsManager.Instance.GetPlannerTabsParams();\r\n\t\tif (preSelectedPlannerTab && this._form) {\r\n\t\t\tconst preselectedPlannerTabData: any = _.where(preSelectedPlannerTab.activePlannerTabPageCIDs, {screenId: this._form.GetScreen().GetScreenId()})[0];\r\n\t\t\tif (!preselectedPlannerTabData) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tlet plannerTabToSelect = <PlannerPage>this._subControls().filter((control) => {\r\n\t\t\t\treturn control.GetControlId() === preselectedPlannerTabData.activePlannerTabPageCID;\r\n\t\t\t})[0];\r\n\t\t\tif (plannerTabToSelect) {\r\n\t\t\t\treturn plannerTabToSelect;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tSetActiveTabPage(plannerPage: PlannerPage, parentControlId?: number) {\r\n\t\tconst screen = this._form.GetScreen();\r\n\t\tconst currentPlannerPage = this._currentPlannerPage();\r\n\t\tconst tabControlId = plannerPage.GetControlId();\r\n\t\tconst plannerTabsParams = UserVarsManager.Instance.GetPlannerTabsParams();\r\n\t\tconst activityStorage = plannerTabsParams ? plannerTabsParams.plannerTabsActivityStorage : {};\r\n\r\n\t\tthis._subControls().forEach(control => control.SetIsActive(false));\r\n\r\n\t\tif(currentPlannerPage){\r\n\t\t\tcurrentPlannerPage.SetIsActive(false);\r\n\t\t}\r\n\r\n\t\tplannerPage.SetIsActive(true);\r\n\t\tthis._currentTabIndex = this._subControls().indexOf(plannerPage);\r\n\t\tthis._currentPlannerPage(plannerPage);\r\n\r\n\t\tif (parentControlId) {\r\n\t\t\tif (!activityStorage[parentControlId]) {\r\n\t\t\t\tactivityStorage[parentControlId] = {};\r\n\t\t\t}\r\n\t\t\tactivityStorage[parentControlId][tabControlId] = Date.now();\r\n\t\t}\r\n\r\n\t\tUserVarsManager.Instance.SetPlannerTabsParams({\r\n\t\t\tscreenId: screen.GetScreenId(),\r\n\t\t\tactivePlannerTabPageCID: tabControlId\r\n\t\t}, activityStorage);\r\n\r\n\t\tif (screen) {\r\n\t\t\tscreen.SetState( {ActiveControlId: tabControlId});\r\n\t\t}\r\n\t\tthis.InitSplitter();\r\n\t}\r\n\r\n\r\n\tAddSubControl(control: IControl) {\r\n\t\tlet plannerPage = control as PlannerPage;\r\n\t\tthis._subControls.push(control);\r\n\r\n\t\tif (this._currentPlannerPage()) {\r\n\t\t\tthis._currentPlannerPage().SetIsActive(false);\r\n\t\t}\r\n\r\n\t\tplannerPage.SetIsActive(true);\r\n\t\tthis._currentPlannerPage(plannerPage);\r\n\r\n\t\tplannerPage.On(EVENTS.ON_PLANNER_PAGE_CLICK, this, (args: any) => {\r\n\t\t\tlet tabPage = <PlannerPage>args.source;\r\n\r\n\t\t\tif (this._currentPlannerPage()) {\r\n\t\t\t\tthis._currentPlannerPage().SetIsActive(false);\r\n\t\t\t}\r\n\t\t\tplannerPage.SetIsActive(true);\r\n\t\t\tthis._currentPlannerPage(tabPage);\r\n\t\t});\r\n\t}\r\n\r\n\tRemoveControl(control: IControl) {\r\n\t\tlet wrappers = new Array<Element>(control.GetWrapper());\r\n\r\n\t\t_.each(this._currentPlannerPage().GetAllSubControls(),\r\n\t\t\t(subControl) => {\r\n\t\t\t\twrappers.push(subControl.GetWrapper());\r\n\t\t\t});\r\n\r\n\t\twrappers.map((el) => {\r\n\t\t\t$(control.GetWrapper()).add(el).fadeOut('fast', () => {\r\n\t\t\t\tlet subControls = this._subControls();\r\n\t\t\t\tlet tabPage = control as PlannerPage;\r\n\t\t\t\tthis._subControls.remove(control);\r\n\r\n\t\t\t\tif (tabPage.GetIsActive()) {\r\n\t\t\t\t\tif (this._currentTabIndex <= subControls.length - 1) {\r\n\t\t\t\t\t\tthis.SetActiveTab(this._currentTabIndex);\r\n\t\t\t\t\t} else if (this._currentTabIndex > 0) {\r\n\t\t\t\t\t\tthis.SetActiveTab(this._currentTabIndex - 1);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._currentPlannerPage(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.SetActiveTabPage(this._currentPlannerPage());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tSetActiveTab(tabIndex: number) {\r\n\t\tconst subControls = this._subControls();\r\n\t\tif (subControls[tabIndex]) {\r\n\t\t\tconst tab = <PlannerPage>subControls[tabIndex];\r\n\t\t\tif (this._currentPlannerPage()) {\r\n\t\t\t\tthis._currentPlannerPage().SetIsActive(false);\r\n\t\t\t}\r\n\t\t\ttab.SetIsActive(true);\r\n\r\n\t\t\tthis._currentPlannerPage(tab);\r\n\t\t\tthis._currentTabIndex = tabIndex;\r\n\t\t\tthis.InitSplitter();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate InitSplitter(){\r\n\t\tlet leftView = $(this._el).find('.left-planner-table')[0];\r\n\t\tlet rightView = $(this._el).find('.right-planner-table')[0];\r\n\r\n\t\tif(leftView && rightView){\r\n\t\t\tSplit([leftView, rightView], {\r\n\t\t\t\tsizes: [35, 65],\r\n\t\t\t\telementStyle: (dimension, size, gutterSize) => {\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t($('.left-planner-table') as any).freezeTable('resize');\r\n\t\t\t\t\t($('.right-planner-table') as any).freezeTable('resize');\r\n\r\n\t\t\t\t\tif(size < 20){\r\n\t\t\t\t\t\tsize = 20;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(size > 80){\r\n\t\t\t\t\t\tsize = 80;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn ({\r\n\t\t\t\t\t\t'flex-basis': `calc(${size}% - ${gutterSize}px)`,\r\n\t\t\t\t\t})\r\n\t\t\t\t},\r\n\t\t\t\tgutterStyle: (dimension, gutterSize) => ({\r\n\t\t\t\t\t'flex-basis': `${gutterSize}px`,\r\n\t\t\t\t}),\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t\tthis._plannerHtmlTable = $(this._el).find('.planner-table')[1] as HTMLTableElement;\r\n\t\tthis.InitSplitter();\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-calendar-check-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper planner-control\\\"> <ul data-bind=\\\"dragula: {\\r\\n data: _subControls,\\r\\n group: 'ToolBarToDesigner',\\r\\n afterDrop: $root.AfterDropTapPageControl.bind($root)\\r\\n }\\\" class=\\\"nav nav-tabs\\\"> <li class=\\\"tab tab-button form-standard-control parent-control FormDesignerView\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </li> <!-- ko if: $index() === ($parent._subControls().length -1) --> <li class=\\\"tab addNewTabBtn onlyPlus\\\"> <a data-bind=\\\"click: $root.CreatePlannerPage.bind($root, $parent),\\r\\n preventBubble: ['click'],\\r\\n tooltip:{ content: _labels.CREATE_NEW_PLANNERTAB }\\\" class=\\\"tab-link\\\"> + </a> </li> <!-- /ko --> </ul> <!-- ko if: _subControls().length === 0 --> <ul class=\\\"nav nav-tabs\\\"> <li class=\\\"tab addNewTabBtn onlyPlus\\\"> <a data-bind=\\\"click: $root.CreatePlannerPage.bind($root),\\r\\n preventBubble: ['click']\\r\\n tooltip:{ content: _labels.CREATE_NEW_PLANNERTAB }\\\" class=\\\"tab-link\\\"> + </a> </li> </ul> <!-- /ko --> <!-- ko with: _currentPlannerPage --> <div class=\\\"active-tab-result\\\"> <button data-bind=\\\"click: $root.CreateRootLevel.bind($root), preventBubble: ['click']\\\" class=\\\"add-planner-level-btn\\\"> <i class=\\\"fa fa-plus\\\"></i> </button> <!-- ko if: _plannerLevels().length > 0 --> <div class=\\\"over-planner-levels\\\"> <!-- ko foreach: _plannerLevels --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <ul class=\\\"nav nav-tabs\\\"> <!-- ko foreach: _subControls --> <li data-bind=\\\"template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) }, css: { 'active': _isActive }, visible: _isVisible\\\" class=\\\"tab\\\" title=\\\"TabPage\\\"></li> <!-- /ko --> </ul> <!--ko with: _currentPlannerPage--> <div data-bind=\\\"css: {'wrapped-container-tab': $parent._isWrapped}\\\" class=\\\"tab-content\\\"> <div class=\\\"over-planner-table\\\"> <div class=\\\"thead-planner-table\\\"> <div data-bind=\\\"css: { 'day-view': $data._renderViewMode() === 'Day' }\\\" class=\\\"planner-table-head-row\\\"> <div class=\\\"planner-table-date-cell\\\"> <div class=\\\"\\\"> <span class=\\\"planner-label\\\"><!-- ko text: _labels.STARTING_DATE --><!-- /ko -->:</span> <div class=\\\"plannerPagination\\\"> <a data-bind=\\\"click: $data.PreviousYear\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only planner-navigation-btn previousYear\\\"> <i class=\\\"fa fa-bold fa-angle-double-left planner-navigation-icon\\\"></i> </a> <a data-bind=\\\"click: $data.Previous\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only planner-navigation-btn\\\"> <i class=\\\"fa fa-bold fa-angle-left planner-navigation-icon\\\"></i> </a> <input data-bind=\\\"datetimepicker: {\\r\\n value: $data._startDate,\\r\\n onUpdate: $data.SelectDate.bind($data),\\r\\n options: {\\r\\n format: 'L',\\r\\n locale: GetLocale(),\\r\\n minDate: '1900-01-01'\\r\\n }\\r\\n }\\\" type=\\\"text\\\" class=\\\"datepickerinput\\\"/> <a data-bind=\\\"click: $data.Next\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only planner-navigation-btn\\\"> <i class=\\\"fa fa-angle-right planner-navigation-icon\\\"></i> </a> <a data-bind=\\\"click: $data.NextYear\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only planner-navigation-btn previousYear\\\"> <i class=\\\"fa fa-angle-double-right planner-navigation-icon\\\"></i> </a> </div> </div> <!-- ko if: $data._viewTypes().length > 0 --> <div class=\\\"\\\"> <span class=\\\"planner-label\\\"><!-- ko text: _labels.VIEW --><!-- /ko -->:</span> <select data-bind=\\\"options: _viewTypes, value: _selectedView, optionsText: 'Title'\\\"></select> </div> <div class=\\\"\\\"> <span data-bind=\\\"text: $data._timeRangeLabel\\\" class=\\\"planner-label\\\"></span> <select data-bind=\\\"options: _weeks, value: _selectedWeek\\\"></select> </div> <!-- /ko --> <!-- ko if: $data._showManagerFilter --> <div class=\\\"\\\"> <span class=\\\"planner-label\\\"><!-- ko text: _labels.PROJECT_MANAGER --><!-- /ko -->:</span> <select data-bind=\\\"options: _managers, value: _manager, optionsText: 'Name', optionsCaption: _labels.SELECT_LABEL + '...'\\\"></select> </div> <!-- /ko --> <!-- ko if: $data._renderViewMode() === 'Month' --> <div class=\\\"planner-table-higher-resolution-toggle-cell\\\"> <label class=\\\"control-label\\\"><!-- ko text: _labels.WEEK_PLANNING --><!-- /ko -->:</label> <a data-bind=\\\"click: $data.ToggleWeekPlanning\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only u-padding-right-medium\\\"> <i data-bind=\\\"class: _weekPlanningToggleClass \\\" class=\\\"fa fa-toggle-off\\\"></i> </a> </div> <!-- /ko --> <!-- ko if: $data._copyColumnMode() --> <div class=\\\"\\\" style=\\\"float:right\\\"> <a data-bind=\\\"click: $data.CopyColumn.bind($data)\\\" class=\\\"btn green\\\"> <!-- ko text: _labels.CONFIRM_SELECTION --><!-- /ko --> </a> </div> <!-- /ko --> <!-- ko if: $data._copyCellMode() --> <div class=\\\"\\\" style=\\\"float:right\\\"> <a data-bind=\\\"click: $data.CopyCell.bind($data)\\\" class=\\\"btn green\\\"> <!-- ko text: _labels.CONFIRM_SELECTION --><!-- /ko --> </a> </div> <!-- /ko --> <!-- ko if: $data._copyColumnMode() || $data._copyCellMode() --> <div class=\\\"\\\" style=\\\"float:right\\\"> <a data-bind=\\\"click: $data.CancelCopy.bind($data)\\\" class=\\\"btn green\\\"> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a> </div> <!-- /ko --> </div> <!-- ko foreach: _subControls --> <!-- ko if: $data._showDivideRow && HasPagination --> <div class=\\\"plannerHeadPaginatorBox\\\"> <div data-bind=\\\"css: { 'paginator-row': !!Paginator }\\\" class=\\\"planner-table-divider-row\\\"> <div data-bind=\\\"attr: { colspan: $data._divideRowColSpan }\\\"> <div class=\\\"planerPaginatorContainer planerPaginatorContainer--positionSticky\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> <!-- ko if: $data._viewTypes().length > 0 --> <div class=\\\"body-planner-table\\\"> <div data-bind=\\\"freezeTable: { freezeHead: true, freezeColumn: false, namespace: 'left-planner-table' }\\\" class=\\\"left-planner-table\\\"> <table class=\\\"planner-table\\\"> <thead> <tr class=\\\"\\\"> <th> </th> </tr> <!-- ko if: _renderViewMode() === 'Day' --> <!-- ko if: DayHeaders().length > 0 --> <tr class=\\\"\\\"> <th> </th> </tr> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: CustomColumnHeaders().length > 0 --> <tr class=\\\"\\\"> <th> </th> </tr> <!-- /ko --> <!-- ko if: CustomColumnHeaders().length > 0 --> <tr class=\\\"planner-table-CustomHead-row\\\"> <th></th> <!-- ko foreach: CustomColumnHeaders --> <th class=\\\"customColumnHeader-cell\\\"><!-- ko text: $data.Title --><!-- /ko --></th> <!-- /ko --> </tr> <!-- /ko --> </thead> <tbody> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetLeftBarTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </tbody> </table> </div> <div data-bind=\\\"click: $data.RightBarTableClick.bind($data), freezeTable: { freezeHead: true, freezeColumn: false, namespace: 'right-planner-table' }\\\" class=\\\"right-planner-table\\\"> <table class=\\\"planner-table\\\"> <thead> <!-- ko if: CustomColumnHeaders().length > 0 --> <tr class=\\\"planner-table-head-row\\\"> <!--<th> <th>--> </tr> <!-- /ko --> <!-- ko if: _renderViewMode() === 'Month' --> <tr class=\\\"planner-table-head-row\\\"> <!-- ko foreach: MonthHeaders --> <th class=\\\"planner-table-year-cell\\\" data-bind=\\\"attr: { colspan: $data.Months.length }, text : $data.Year, css : $index() % 2 ? 'even' : 'odd'\\\"></th> <!-- /ko --> </tr> <tr class=\\\"planner-table-head-row\\\"> <!-- ko foreach: MonthHeaders --> <!-- ko foreach: Months --> <th class=\\\"planner-table-month-cell\\\" data-bind=\\\"\\r\\n contextMenu: { build: $parents[1].BuildColumnContextMenu.bind($parents[1], $data, $parents[1]) },\\r\\n attr: { 'data-index': $parents[1].CalculateIndex($data) },\\r\\n text : $data.Title,\\r\\n css : {\\r\\n even : $parentContext.$index() % 2,\\r\\n odd : !($parentContext.$index() % 2),\\r\\n 'active-cell': $data.IsActive\\r\\n }\\\"></th> <!-- /ko --> <!-- /ko --> </tr> <!-- /ko --> <!-- ko if: _renderViewMode() === 'Day' --> <tr class=\\\"planner-table-head-row\\\"> <!-- ko fastForEach: DayHeaders --> <th class=\\\"planner-table-year-cell\\\" data-bind=\\\"attr: { colspan: $data.Days.length }, text : $data.Title, css : $index() % 2 ? 'even' : 'odd'\\\"></th> <!-- /ko --> </tr> <tr class=\\\"planner-table-head-row\\\"> <!-- ko fastForEach: DayHeaders --> <!-- ko fastForEach: Days --> <th class=\\\"planner-table-month-cell\\\" data-bind=\\\"\\r\\n contextMenu: { build: $parents[1].BuildColumnContextMenu.bind($parents[1], $data, $parents[1]) },\\r\\n attr: { 'data-index': $parents[1].CalculateIndex($data) },\\r\\n css : {\\r\\n even : $parentContext.$index() % 2,\\r\\n odd : !($parentContext.$index() % 2),\\r\\n weekend: $data.IsWeekend,\\r\\n 'active-cell': $data.IsActive\\r\\n }\\\"> <!-- ko text: $data.DayName --><!-- /ko --> <br> <!-- ko text: $data.DayNum --><!-- /ko --> </th> <!-- /ko --> <!-- /ko --> </tr> <!-- /ko --> <!-- ko if: _renderViewMode() === 'Week' --> <tr class=\\\"planner-table-head-row\\\"> <!-- ko foreach: WeekHeaders --> <th class=\\\"planner-table-year-cell\\\" data-bind=\\\"attr: { colspan: $data.Weeks.length }, text : $data.Title, css : $index() % 2 ? 'even' : 'odd'\\\"></th> <!-- /ko --> </tr> <tr class=\\\"planner-table-head-row\\\"> <!-- ko fastForEach: WeekHeaders --> <!-- ko fastForEach: Weeks --> <th class=\\\"planner-table-month-cell\\\" data-bind=\\\"\\r\\n contextMenu: { build: $parents[1].BuildColumnContextMenu.bind($parents[1], $data, $parents[1]) },\\r\\n attr: { 'data-index': $parents[1].CalculateIndex($data) },\\r\\n css : {\\r\\n even : $parentContext.$index() % 2,\\r\\n odd : !($parentContext.$index() % 2),\\r\\n weekend: $data.IsWeekend,\\r\\n 'active-cell': $data.IsActive\\r\\n }\\\"> <!-- ko text: $data.Title --><!-- /ko --> </th> <!-- /ko --> <!-- /ko --> </tr> <!-- /ko --> </thead> <tbody> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetRightBarTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </tbody> </table> </div> </div> <!--/ko--> </div> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Constant\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\n\r\nimport {ITooltipConfig} from \"Core/KnockoutExtentions/TooltipExtention\";\r\nimport {ButtonViewModel} from \"../../Models/Buttons/ButtonViewModel\";\r\n\r\nexport abstract class PortletBarButton extends Event {\r\n\tprotected Tooltip: KnockoutObservable<ITooltipConfig>;\r\n ViewModel: ButtonViewModel;\r\n\r\n\tconstructor(buttonConfig: IButtonConfig) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tGetTemplateName() { return `${this.GetButtonTemplateFolder()}/Button`; }\r\n\r\n\tGetDesignTemplateName() { return `${this.GetButtonTemplateFolder()}/Design`}\r\n\r\n\tGetPropsTemplateName() { return `${this.GetButtonTemplateFolder()}/Props` }\r\n\r\n\tAfterRender() { }\r\n\r\n\tabstract OnClickEvent(): string;\r\n\tabstract OnClick(): void;\r\n\r\n\tprotected GetButtonTemplateFolder() {\r\n\t\treturn \"Core/Controls/PortletBar/Templates/Buttons\";\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\nimport {ButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ButtonViewModel\";\r\n\r\nimport RemoveButtonTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Remove/Button.html\";\r\nimport RemoveButtonDesignTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Remove/Design.html\";\r\nimport RemovePropsTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Remove/Props.html\";\r\n\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Remove/Button\"] = RemoveButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Remove/Design\"] = RemoveButtonDesignTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Remove/Props\"] = RemovePropsTemplate;\r\n\r\nexport class RemoveButtonViewModel extends ButtonViewModel {\r\n\tDisplayValue: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonName, buttonConfig);\r\n\r\n\t\tthis.DisplayValue = ko.observable(false);\r\n\t}\r\n}","// Module\nvar code = \"<a data-bind=\\\"click: OnClick, visible: ViewModel.DisplayValue, tooltip:{content: $parent._labels.REMOVE_LABEL}\\\" class=\\\"remove\\\"> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"visible: ViewModel.DisplayValue\\\" class=\\\"remove\\\"> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","import {EVENTS} from \"Core/Constant\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\"\r\nimport {PortletBarButton} from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\"\r\nimport {RemoveButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/RemoveButtonViewModel\"\r\n\r\nexport class RemoveButton extends PortletBarButton {\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonConfig);\r\n\t\tthis.ViewModel = new RemoveButtonViewModel(buttonName, buttonConfig);\r\n\t}\r\n\r\n\tOnClickEvent() {\r\n\t\treturn EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.REMOVE_BUTTON_CLICKED;\r\n\t}\r\n\r\n\tOnClick() {\r\n\t\tthis.Trigger(this.OnClickEvent());\r\n\t}\r\n\r\n\tprotected GetButtonTemplateFolder() {\r\n\t\treturn `${super.GetButtonTemplateFolder()}/Remove`;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\"\r\nimport {ButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ButtonViewModel\"\r\n\r\nimport SettingsButtonTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Settings/Button.html\";\r\nimport SettingsButtonDesignTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Settings/Design.html\";\r\nimport SettingsPropsTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Settings/Props.html\";\r\n\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Settings/Button\"] = SettingsButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Settings/Design\"] = SettingsButtonDesignTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Settings/Props\"] = SettingsPropsTemplate;\r\n\r\nexport class SettingsButtonViewModel extends ButtonViewModel {\r\n\tDisplayValue: KnockoutObservable<boolean>;\r\n PropsOpened: KnockoutObservable<boolean>;\r\n\r\n constructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonName, buttonConfig);\r\n\t\tthis.DisplayValue = ko.observable(this.Properties().Visible());\r\n this.PropsOpened = ko.observable(false);\r\n\t}\r\n}","// Module\nvar code = \"<a data-bind=\\\"tooltip: Tooltip,click: OnClick, visible: ViewModel.DisplayValue\\\" class=\\\"config\\\"> </a> <!--ko template: {name: $data.GetPropsTemplateName.bind($data)}--> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"visible: ViewModel.DisplayValue, tooltip:{content: $parent._labels.PORTLET_SETTINGS}\\\" class=\\\"config\\\"></a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<ul data-bind=\\\"style: {display: ViewModel.PropsOpened() ? 'block' : 'none'}\\\" class=\\\"dropdown-menu\\\" style=\\\"right:0;left:auto\\\"> <li> <div class=\\\"form-group text-center\\\"> <label class=\\\"col-md-3 control-label length\\\">Length</label> <div class=\\\"col-md-9\\\"> <input data-bind=\\\"knob: {value: $parent.RuntimeSettings().Length, min: 5}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" data-angleoffset=\\\"-125\\\" data-anglearc=\\\"250\\\" data-width=\\\"75\\\" data-height=\\\"75\\\" class=\\\"knob\\\"> </div> </div> </li> <li> <div class=\\\"md-checkbox checkbox-centering\\\"> <input data-bind=\\\"attr:{id: ViewModel.Guid + ' expand-collapse'}, checked: $parent.RuntimeSettings().CollapseButton\\\" type=\\\"checkbox\\\" class=\\\"md-check\\\"> <label data-bind=\\\"attr:{for: ViewModel.Guid + ' expand-collapse'}\\\" class=\\\"col-md-offset-1 col-md-11 portlet-checkbox\\\"> <span class=\\\"inc\\\"></span> <span class=\\\"check\\\"></span> <span class=\\\"box\\\"></span> Expand/Collapse </label> </div> </li> <li> <div class=\\\"md-checkbox checkbox-centering\\\"> <input data-bind=\\\"attr:{id: ViewModel.Guid + ' minimize-maximize'}, checked: $parent.RuntimeSettings().ExpandButton\\\" type=\\\"checkbox\\\" class=\\\"md-check\\\"> <label data-bind=\\\"attr:{for: ViewModel.Guid + ' minimize-maximize'}\\\" class=\\\"col-md-offset-1 col-md-11 portlet-checkbox\\\"> <span class=\\\"inc\\\"></span> <span class=\\\"check\\\"></span> <span class=\\\"box\\\"></span> Minimize/Maximize </label> </div> </li> <li class=\\\"text-center\\\"> <button data-bind=\\\"click: SaveSettings\\\" class=\\\"btn btn-success col-md-12\\\">Save</button> </li> </ul>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {EVENTS} from \"Core/Constant\";\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\"\r\nimport {PortletBarButton} from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\"\r\nimport {SettingsButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/SettingsButtonViewModel\"\r\nimport {ITooltipConfig} from \"Core/KnockoutExtentions/TooltipExtention\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class SettingsButton extends PortletBarButton {\r\n ViewModel: SettingsButtonViewModel;\r\n\r\n constructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonConfig);\r\n\t\tthis.ViewModel = new SettingsButtonViewModel(buttonName, buttonConfig);\r\n\t\tthis.Tooltip = ko.observable<ITooltipConfig>({content: LABELS.PORTLET_SETTINGS, outside: 'y', position: {x: 'center', y: LABELS.PORTLET_SETTINGS.length <= 8 ? 'top' : 'bottom'}});\r\n\t}\r\n\r\n\tOnClickEvent() {\r\n\t\treturn EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.SETTINGS_BUTTON_CLICKED;\r\n\t}\r\n\r\n\tOnClick() {\r\n\t\tthis.Trigger(this.OnClickEvent());\r\n\t\tthis.ViewModel.PropsOpened(!this.ViewModel.PropsOpened());\r\n\t}\r\n\r\n\tSaveSettings() {\r\n\t\tthis.ViewModel.PropsOpened(false);\r\n\t\tthis.Trigger(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED);\r\n\t}\r\n\r\n\tprotected GetButtonTemplateFolder() {\r\n\t\treturn `${super.GetButtonTemplateFolder()}/Settings`;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Guid} from \"Core/Common/Guid\"\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\"\r\n\r\nexport abstract class ButtonViewModel {\r\n\tGuid: Guid;\r\n\tName: string;\r\n\tProperties: KnockoutObservable<IButtonConfig>;\r\n\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tthis.Guid = Guid.NewGuid();\r\n\t\tthis.Name = buttonName;\r\n\t\tthis.Properties = ko.observable(buttonConfig);\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport { IPortletProperties } from \"Core/Controls/PortletBar/Interfaces/IPortletBarProperties\";\r\n\r\nexport class DefaultPortletProps implements IPortletProperties {\r\n\tReadOnly: KnockoutObservable<boolean> = ko.observable(true);\r\n\tSearch: KnockoutObservable<boolean> = ko.observable(true);\r\n\r\n\tPortletColor: KnockoutObservable<string> = ko.observable(\"#95a5a6\");\r\n\tUsePortletBarColor: KnockoutObservable<boolean> = ko.observable(false);\r\n\tDataSpaceColor: KnockoutObservable<string> = ko.observable(\"#fff\");\r\n\tKind: KnockoutObservable<string> = ko.observable(\"light\");\r\n\tLength: KnockoutObservable<number> = ko.observable(5);\r\n\r\n\tHeaderText: KnockoutObservable<string> = ko.observable(null);\r\n\tCollapseButton: KnockoutObservable<boolean> = ko.observable(true);\r\n\tExpandButton: KnockoutObservable<boolean> = ko.observable(false);\r\n\tSettingsButton: KnockoutObservable<boolean> = ko.observable(true);\r\n\tReloadButton: KnockoutObservable<boolean> = ko.observable(false);\r\n\tRemoveButton: KnockoutObservable<boolean> = ko.observable(true);\r\n\r\n\tUseBodySpace: KnockoutObservable<boolean> = ko.observable(true);\r\n\r\n\tprivate static _isInitialized: boolean = false;\r\n\tprivate static _props: DefaultPortletProps = null;\r\n\r\n\tstatic Props() {\r\n\t\tif (DefaultPortletProps._props === null) {\r\n\t\t\tDefaultPortletProps._props = new DefaultPortletProps();\r\n\t\t}\r\n\r\n\t\treturn DefaultPortletProps._props;\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tif (DefaultPortletProps._isInitialized) {\r\n\t\t\tthrow new Error(\"Props cannot be initialized twice. Use DefaultPortletProps.Props() instead\");\r\n\t\t}\r\n\r\n\t\tDefaultPortletProps._isInitialized = true;\r\n\t}\r\n}","// Module\nvar code = \"<a class=\\\"collapse\\\" data-bind=\\\"tooltip:Tooltip, click: $data.OnClick.bind($data)\\\"> </a>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\nimport {ButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ButtonViewModel\";\r\n\r\nimport CollapseButtonTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Collapse/Button.html\";\r\nimport CollapsePropsTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Collapse/Props.html\";\r\n\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Collapse/Button\"] = CollapseButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Collapse/Design\"] = CollapseButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Collapse/Props\"] = CollapsePropsTemplate;\r\n\r\nexport class CollapseButtonViewModel extends ButtonViewModel {\r\n\tIsCollapsed: boolean;\r\n\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonName, buttonConfig);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"md-checkbox\\\"> <input type=\\\"checkbox\\\" id=\\\"expand-collapse\\\" class=\\\"md-check\\\"> <label for=\\\"expand-collapse\\\" class=\\\"col-md-offset-1 col-md-11\\\"> <span class=\\\"inc\\\"></span> <span class=\\\"check\\\"></span> <span class=\\\"box\\\"></span> Expand/Collapse </label> </div>\";\n// Exports\nexport default code;","import {EVENTS} from \"Core/Constant\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\nimport {PortletBarButton} from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\";\r\nimport {CollapseButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/CollapseButtonViewModel\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ITooltipConfig} from \"Core/KnockoutExtentions/TooltipExtention\";\r\nimport * as ko from \"knockout\";\r\n\r\nexport class CollapseButton extends PortletBarButton {\r\n ViewModel: CollapseButtonViewModel;\r\n\r\n constructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n super(buttonConfig);\r\n\r\n this.ViewModel = new CollapseButtonViewModel(buttonName, buttonConfig);\r\n this.Tooltip = ko.observable<ITooltipConfig>({content: LABELS.COLLAPSE, outside: 'y', position: {x: 'center', y: LABELS.COLLAPSE.length <= 8 ? 'top' : 'bottom'}});\r\n }\r\n\r\n OnClickEvent() {\r\n return EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.COLLAPSE_BUTTON_CLICKED;\r\n }\r\n\r\n OnClick() {\r\n this.ViewModel.IsCollapsed = !this.ViewModel.IsCollapsed;\r\n this.UpdateTooltip();\r\n this.Trigger(this.OnClickEvent());\r\n }\r\n\r\n protected GetButtonTemplateFolder() {\r\n return `${super.GetButtonTemplateFolder()}/Collapse`;\r\n }\r\n\r\n private UpdateTooltip() {\r\n if (this.ViewModel.IsCollapsed) {\r\n this.Tooltip({content: LABELS.EXPAND});\r\n return;\r\n }\r\n\r\n this.Tooltip({content: LABELS.COLLAPSE});\r\n }\r\n}","// Module\nvar code = \"<a class=\\\"fullscreen\\\" data-bind=\\\"tooltip: Tooltip, click: $data.OnClick.bind($data)\\\"> </a>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\nimport {ButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ButtonViewModel\";\r\n\r\nimport ExpandButtonTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Expand/Button.html\";\r\nimport ExpandPropsTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Expand/Props.html\";\r\n\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Expand/Button\"] = ExpandButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Expand/Design\"] = ExpandButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Expand/Props\"] = ExpandPropsTemplate;\r\n\r\nexport class ExpandButtonViewModel extends ButtonViewModel {\r\n\tIsExpanded: boolean;\r\n\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonName, buttonConfig);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"md-checkbox\\\"> <input type=\\\"checkbox\\\" id=\\\"minimize-maximize\\\" class=\\\"md-check\\\"> <label for=\\\"minimize-maximize\\\" class=\\\"col-md-offset-1 col-md-11\\\"> <span class=\\\"inc\\\"></span> <span class=\\\"check\\\"></span> <span class=\\\"box\\\"></span> Minimize/Maximize </label> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {EVENTS} from \"Core/Constant\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\nimport {PortletBarButton} from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\";\r\nimport {ExpandButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ExpandButtonViewModel\";\r\nimport {ITooltipConfig} from \"Core/KnockoutExtentions/TooltipExtention\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class ExpandButton extends PortletBarButton {\r\n ViewModel: ExpandButtonViewModel;\r\n\r\n constructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n super(buttonConfig);\r\n this.ViewModel = new ExpandButtonViewModel(buttonName, buttonConfig);\r\n this.Tooltip = ko.observable<ITooltipConfig>({content: LABELS.MAXIMIZE, outside: 'y', position: {x: 'center', y: LABELS.MAXIMIZE.length <= 8 ? 'top' : 'bottom'}});\r\n }\r\n\r\n OnClickEvent() {\r\n return EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.EXPAND_BUTTON_CLICKED;\r\n }\r\n\r\n OnClick() {\r\n this.ViewModel.IsExpanded = !this.ViewModel.IsExpanded;\r\n this.UpdateTooltip();\r\n this.Trigger(this.OnClickEvent());\r\n }\r\n\r\n protected GetButtonTemplateFolder() {\r\n return `${super.GetButtonTemplateFolder()}/Expand`;\r\n }\r\n\r\n private UpdateTooltip() {\r\n if (this.ViewModel.IsExpanded) {\r\n this.Tooltip({content: LABELS.MINIMIZE});\r\n return;\r\n }\r\n\r\n this.Tooltip({content: LABELS.MAXIMIZE});\r\n }\r\n}","// Module\nvar code = \"<a class=\\\"reload\\\" data-bind=\\\"click: OnClick, tooltip: Tooltip\\\"> </a>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\nimport {ButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ButtonViewModel\";\r\n\r\nimport ReloadButtonTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Reload/Button.html\";\r\nimport ReloadPropsTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Reload/Props.html\";\r\n\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Reload/Button\"] = ReloadButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Reload/Design\"] = ReloadButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Reload/Props\"] = ReloadPropsTemplate;\r\n\r\nexport class ReloadButtonViewModel extends ButtonViewModel {\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonName, buttonConfig);\r\n\t}\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {EVENTS} from \"Core/Constant\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\"\r\nimport {PortletBarButton} from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\"\r\nimport {ReloadButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ReloadButtonViewModel\"\r\nimport {ITooltipConfig} from \"Core/KnockoutExtentions/TooltipExtention\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class ReloadButton extends PortletBarButton {\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonConfig);\r\n\t\tthis.ViewModel = new ReloadButtonViewModel(buttonName, buttonConfig);\r\n\t\tthis.Tooltip = ko.observable<ITooltipConfig>({content: LABELS.REFRESH, outside: 'y', position: {x: 'center', y: LABELS.REFRESH.length <= 8 ? 'top' : 'bottom'}});\r\n\t}\r\n\r\n\tOnClickEvent() {\r\n\t\treturn EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.RELOAD_BUTTON_CLICKED;\r\n\t}\r\n\r\n\tOnClick() {\r\n\t\tthis.Trigger(this.OnClickEvent());\r\n\t}\r\n\r\n\tprotected GetButtonTemplateFolder() {\r\n\t\treturn `${super.GetButtonTemplateFolder()}/Reload`;\r\n\t}\r\n} ","import {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\"\r\nimport {PortletBarButton} from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\";\r\nimport {CollapseButton} from \"Core/Controls/PortletBar/Managers/Buttons/CollapseButton\";\r\nimport {ExpandButton} from \"Core/Controls/PortletBar/Managers/Buttons/ExpandButton\";\r\nimport {ReloadButton} from \"Core/Controls/PortletBar/Managers/Buttons/ReloadButton\";\r\nimport {RemoveButton} from \"Core/Controls/PortletBar/Managers/Buttons/RemoveButton\";\r\nimport {SettingsButton} from \"Core/Controls/PortletBar/Managers/Buttons/SettingsButton\";\r\n\r\nexport class ButtonsFactory {\r\n\tstatic CreateButton(buttonName: string, buttonConfig: IButtonConfig): PortletBarButton {\r\n\t\treturn this[buttonName](buttonName, buttonConfig);\r\n\t}\r\n\r\n\tprivate static CollapseButton(buttonName: string, buttonConfig: IButtonConfig): PortletBarButton {\r\n\t\treturn new CollapseButton(buttonName, buttonConfig);\r\n\t}\r\n\r\n\tprivate static ExpandButton(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\treturn new ExpandButton(buttonName, buttonConfig);\r\n\t}\r\n\r\n\tprivate static ReloadButton(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\treturn new ReloadButton(buttonName, buttonConfig);\r\n\t}\r\n\r\n\tprivate static RemoveButton(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\treturn new RemoveButton(buttonName, buttonConfig);\r\n\t}\r\n\r\n\tprivate static SettingsButton(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\treturn new SettingsButton(buttonName, buttonConfig);\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\"\r\n\r\nimport { IPortletProperties } from \"Core/Controls/PortletBar/Interfaces/IPortletBarProperties\"\r\n\r\nimport { DefaultPortletProps } from \"Core/Controls/PortletBar/Defaults/DefaultPortletProps\"\r\n\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { ButtonsFactory } from \"Core/Controls/PortletBar/Utils/ButtonsFactory\";\r\nimport { PortletBarButton } from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\";\r\nimport { IPortletRuntimeSettings } from \"Core/Controls/PortletBar/Interfaces/IPortletRuntimeSettings\";\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\nimport { RenderModes, EVENTS } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\nimport { BaseControl } from \"Core/Controls/BaseControl/BaseControl\";\r\n\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport {GlobalManager, GLOBALS} from \"../../GlobalManager/GlobalManager\";\r\n\r\nimport PortletBarConfig from \"Core/Controls/PortletBar/Configs/portlet-bar-config.json\";\r\n\r\nimport PortletBarTemplate from 'Core/Controls/PortletBar/Templates/View.html';\r\nimport PortletBarDesign from 'Core/Controls/PortletBar/Templates/Design.html';\r\nimport PortletBarToolBar from 'Core/Controls/PortletBar/Templates/ToolBar.html';\r\n\r\nko.templates[\"Core/Controls/PortletBar/Templates/View\"] = PortletBarTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Design\"] = PortletBarDesign;\r\nko.templates[\"Core/Controls/PortletBar/Templates/ToolBar\"] = PortletBarToolBar;\r\n\r\nexport class PortletBar extends BaseControl {\r\n\tprivate _config: any;\r\n\t_labels = LABELS;\r\n\tObjectId: number;\r\n\tPortletIcon: Icon;\r\n\tButtons: KnockoutObservableArray<PortletBarButton>;\r\n\tRuntimeSettings: KnockoutObservable<IPortletRuntimeSettings>;\r\n\tIsReady: KnockoutObservable<boolean>;\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, PortletBarConfig);\r\n\r\n\t\tthis.Buttons = ko.observableArray([]);\r\n\r\n\t\tthis.Init();\r\n\t\tthis.RuntimeSettings = ko.observable(this.ExtendRuntimeSettings(null));\r\n\r\n\t\tthis.BindEvents();\r\n\t}\r\n\r\n\tprotected ApplyProperties() {}\r\n\r\n\tget ConfigProperties(): IPortletProperties {\r\n\t\treturn this._config\r\n\t\t\t? this.GetConfigSettings()\r\n\t\t\t: new DefaultPortletProps();\r\n\t}\r\n\r\n\tget HeaderText() {\r\n\t\tconst desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n\t\tlet portletControlName = this._model().Name;\r\n\r\n\t\t_.each(this.NameTranslations, item => {\r\n\t\t\tif (item.Translation && item.Translation !== '' && item.Translation !== null &&\r\n\t\t\t\titem.Language && item.Language.ShortName === desktopLanguage) {\r\n\t\t\t\tportletControlName = item.Translation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn portletControlName || this.EntityTranslatedName || this.EntityName;\r\n\t}\r\n\r\n\tget EntityName(): string {\r\n\t\treturn this._form.GetScreen().GetScreenName();\r\n\t}\r\n\r\n get EntityTranslatedName(): string {\r\n return this._form.GetScreen().GetScreenTranslatedName();\r\n }\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tApplyRuntimeSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n\t\tlet self = this;\r\n\t\tself.RuntimeSettings = ko.observable(self.ExtendRuntimeSettings(runtimeSettings));\r\n\t\tself.Buttons().forEach(button => button.ViewModel.Properties().Visible(self.RuntimeSettings()[button.ViewModel.Name]()));\r\n\t\tthis.Trigger(EVENTS.PORTLETS.RUNTIME_SETTINGS_APPLIED, self.RuntimeSettings());\r\n\t}\r\n\r\n\tSaveSettings() {\r\n\t\tthis.ApplyRuntimeSettings(this.RuntimeSettings());\r\n\t\tthis.Trigger(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED, this.RuntimeSettings());\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.COLLAPSE_BUTTON_CLICKED);\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.EXPAND_BUTTON_CLICKED);\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.RELOAD_BUTTON_CLICKED);\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.REMOVE_BUTTON_CLICKED);\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.SETTINGS_BUTTON_CLICKED);\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.RUNTIME_SETTINGS_APPLIED);\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED);\r\n\r\n\t\tthis._config = this._model().Properties;\r\n\r\n\t\tif (this._renderMode() !== RenderModes.ToolBar) {\r\n\t\t\tthis.PortletIcon = this._form.GetScreen().GetScreenIcon();\r\n\t\t}\r\n\r\n\t\tthis.Buttons(this.GetButtonsFromConfig());\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\t\tif (this._renderMode() !== RenderModes.Design) {\r\n\t\t\tlet settingsButton = this.GetButton(\"SettingsButton\");\r\n\t\t\tif (settingsButton) {\r\n\t\t\t\tsettingsButton.On(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED, this, eventArgs => this.SaveSettings());\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis._model.subscribe(() => this.Init());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate BindButtonClickEvent(button: PortletBarButton) {\r\n\t\tbutton.On(button.OnClickEvent(), this, () => {\r\n\t\t\tthis.Trigger(button.OnClickEvent());\r\n\t\t});\r\n\t}\r\n\r\n\tprivate ExtendRuntimeSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n\t\tlet self = this;\r\n\r\n\t\tif (!runtimeSettings) {\r\n\t\t\treturn self.GetConfigSettings();\r\n\t\t}\r\n\r\n\t\truntimeSettings.Length = runtimeSettings.Length || DefaultPortletProps.Props().Length;\r\n\t\truntimeSettings.CollapseButton = runtimeSettings.CollapseButton || DefaultPortletProps.Props().CollapseButton;\r\n\t\truntimeSettings.ExpandButton = runtimeSettings.ExpandButton || DefaultPortletProps.Props().ExpandButton;\r\n\r\n\t\truntimeSettings.ReadOnly(self.IsReadOnly());\r\n\t\truntimeSettings.Search(self.IsSearchEnabled());\r\n\t\truntimeSettings.PortletColor(self.GetPortletColor());\r\n\t\truntimeSettings.DataSpaceColor(self.GetDataSpaceColor());\r\n\t\truntimeSettings.Kind(self.GetKind());\r\n\t\truntimeSettings.UseBodySpace(self.UseBodySpace());\r\n\r\n\t\truntimeSettings.ReloadButton(self.IsButtonVisible(\"ReloadButton\"));\r\n\t\truntimeSettings.RemoveButton(self.IsButtonVisible(\"RemoveButton\"));\r\n\t\truntimeSettings.SettingsButton(self.IsButtonVisible(\"SettingsButton\"));\r\n\r\n\t\treturn runtimeSettings;\r\n\t}\r\n\r\n\tprivate GetConfigSettings(): IPortletRuntimeSettings {\r\n\t\tlet settings: IPortletRuntimeSettings = {\r\n\t\t\tReadOnly: ko.observable(this.IsReadOnly()),\r\n\t\t\tSearch: ko.observable(this.IsSearchEnabled()),\r\n\t\t\tPortletColor: ko.observable(this.GetPortletColor()),\r\n\t\t\tUsePortletBarColor: ko.observable(this.UsePortletBarColor()),\r\n\t\t\tDataSpaceColor: ko.observable(this.GetDataSpaceColor()),\r\n\t\t\tKind: ko.observable(this.GetKind()),\r\n\t\t\tHeaderText: ko.observable(this.GetHeaderText()),\r\n\t\t\tCollapseButton: ko.observable(this.IsButtonVisible(\"CollapseButton\")),\r\n\t\t\tExpandButton: ko.observable(this.IsButtonVisible(\"ExpandButton\")),\r\n\t\t\tSettingsButton: ko.observable(this.IsButtonVisible(\"SettingsButton\")),\r\n\t\t\tRemoveButton: ko.observable(this.IsButtonVisible(\"RemoveButton\")),\r\n\t\t\tReloadButton: ko.observable(this.IsButtonVisible(\"ReloadButton\")),\r\n\t\t\tLength: ko.observable(this.GetLengthFromConfig()),\r\n\t\t\tUseBodySpace: ko.observable(this.UseBodySpace())\r\n\t\t};\r\n\t\treturn settings;\r\n\t}\r\n\r\n\tprivate GetButton(buttonName: string) {\r\n\t\tlet buttons = this.Buttons().filter(button => button.ViewModel.Name === buttonName);\r\n\t\treturn buttons.length > 0 ? buttons[0] : null;\r\n\t}\r\n\r\n\tprivate IsButtonVisible(buttonName: string) {\r\n\t\tlet buttonViewModels = this.Buttons().filter(button => button.ViewModel.Name === buttonName).map(button => button.ViewModel);\r\n\r\n\t\tlet buttonViewModel = _.find(buttonViewModels, { Name: buttonName });\r\n\r\n\t\treturn buttonViewModel ? buttonViewModel.Properties().Visible() : false;\r\n\t}\r\n\r\n\tprivate IsReadOnly(): boolean {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().ReadOnly();\r\n\t\t}\r\n\r\n\t\tlet config = this._config.ReadOnly;\r\n\r\n\t\tif (!config) {\r\n\t\t\treturn DefaultPortletProps.Props().ReadOnly();\r\n\t\t}\r\n\r\n\t\treturn config.Properties[0].ReadOnly;\r\n\t}\r\n\r\n\tprivate IsSearchEnabled(): boolean {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().Search();\r\n\t\t}\r\n\r\n\t\tlet config = this._config.Search;\r\n\r\n\t\tif (!config) {\r\n\t\t\treturn DefaultPortletProps.Props().Search();\r\n\t\t}\r\n\r\n\t\treturn config.Properties[0].Search;\r\n\t}\r\n\r\n\tprivate GetPortletColor(): string {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().PortletColor();\r\n\t\t}\r\n\r\n\t\tlet config = this._config.PortletColor;\r\n\r\n\t\tif (!config || config.Properties[0].PortletColor === \"\") {\r\n\t\t\treturn DefaultPortletProps.Props().PortletColor();\r\n\t\t}\r\n\r\n\t\treturn config.Properties[0].PortletColor;\r\n\t}\r\n\r\n\tprivate UsePortletBarColor() {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().UsePortletBarColor();\r\n\t\t}\r\n\r\n\t\tlet config = this._config.UsePortletBarColor;\r\n\r\n\t\tif (!config) {\r\n\t\t\treturn DefaultPortletProps.Props().UsePortletBarColor();\r\n\t\t}\r\n\r\n\t\treturn config.Properties[0].UsePortletBarColor;\r\n\t}\r\n\r\n\tprivate GetDataSpaceColor(): string {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().DataSpaceColor();\r\n\t\t}\r\n\r\n\t\tlet config = this._config.UsePortletBarColor;\r\n\r\n\t\tif (!config || !config.Properties[0].UsePortletBarColor) {\r\n\t\t\treturn DefaultPortletProps.Props().DataSpaceColor();\r\n\t\t}\r\n\r\n\t\treturn this.GetPortletColor();\r\n\t}\r\n\r\n\tprivate UseBodySpace() {\r\n\t\treturn this.GetPortletColor() !== this.GetDataSpaceColor();\r\n\t}\r\n\r\n\tprivate GetKind(): string {\r\n\t\treturn \"boxed\";\r\n\t}\r\n\r\n\tprivate GetHeaderText(): string {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().HeaderText();\r\n\t\t}\r\n\r\n\t\tconst config = this._config.Header;\r\n\r\n\t\tif (!config) {\r\n\t\t\treturn DefaultPortletProps.Props().HeaderText();\r\n\t\t}\r\n\r\n\t\treturn config.Properties[0].HeaderText;\r\n\t}\r\n\r\n\tprivate GetButtonsFromConfig(): Array<PortletBarButton> {\r\n\t\tif (!this._config) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tlet config = this._config.PortletBarButtons;\r\n\r\n\t\tif (!config) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet buttons: Array<PortletBarButton> = config.Properties.map(prop => {\r\n\t\t\tlet name = Object.keys(prop)[1],\r\n\t\t\t\tvisible = prop[name];\r\n\r\n\t\t\tlet button = ButtonsFactory.CreateButton(name, {\r\n\t\t\t\tVisible: ko.observable(visible)\r\n\t\t\t});\r\n\r\n\t\t\tthis.BindButtonClickEvent(button);\r\n\r\n\t\t\treturn button;\r\n\t\t});\r\n\r\n\t\treturn buttons;\r\n\t}\r\n\r\n\tprivate GetLengthFromConfig(): number {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().Length();\r\n\t\t}\r\n\r\n\t\tlet config = this._config.Length;\r\n\r\n\t\tif (!config || config.Properties[0].Length === \"\") {\r\n\t\t\treturn DefaultPortletProps.Props().Length();\r\n\t\t}\r\n\r\n\t\treturn config.Properties[0].Length;\r\n\t}\r\n\r\n\tGetValue(): any {\r\n\t\tthrow new Error('GetValue not implemented');\r\n\t}\r\n\r\n\tDeserialize(): any {\r\n\t\treturn null;\r\n\t}\r\n}\r\n","// Module\nvar code = \"<div class=\\\"portlet-title position-r\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: {borderColor: RuntimeSettings().PortletColor}\\\"> <div class=\\\"caption\\\"> <!--ko with: PortletIcon--> <span> <!--ko template: {name: $data.GetPortletIconTemplate.bind($data)}--><!--/ko--> </span> <!--/ko--> <span data-bind=\\\"text: HeaderText\\\" class=\\\"caption-subject uppercase\\\"> </span> </div> <div class=\\\"tools\\\"> <!--ko foreach: Buttons--> <!--ko if: ViewModel.Properties().Visible--> <!--ko template: {name: $data.GetTemplateName.bind($data)}--><!--/ko--> <!--/ko--> <!--/ko--> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"portlet-design-wrapper\\\"> <div class=\\\"portlet boxed\\\"> <div class=\\\"portlet-title position-r design-view\\\" data-bind=\\\"style: {borderColor: $data.ConfigProperties.PortletColor}\\\"> <div class=\\\"caption\\\"> <!--ko with: PortletIcon--> <span> <!--ko template: {name: $data.GetPortletIconTemplate.bind($data)}--><!--/ko--> </span> <!--/ko--> <span data-bind=\\\"text: HeaderText\\\" class=\\\"caption-subject uppercase\\\"> </span> </div> <div class=\\\"tools\\\"> <!--ko foreach: Buttons--> <!--ko if: ViewModel.Properties().Visible--> <!--ko template: {name: $data.GetDesignTemplateName.bind($data)}--><!--/ko--> <!--/ko--> <!--/ko--> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-list-alt\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}, attr: { title: $data._errorMessage } \\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"\\\"></i> <!-- ko with: _queryBuilder --> <!-- ko template: {html: GetTemplateHtml, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {RequiredFieldModel} from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {RenderModes, FIELD_TYPES, TABLE_TYPES} from 'Core/Constant';\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {DEFAULT_ICONS} from 'Core/Constant'\r\nimport {QueryExpressionModel} from \"Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel\";\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {Serialize, Deserialize, GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport ViewTemplate from 'Core/Controls/QueryBuilder/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/QueryBuilder/Templates/ToolBar.html';\r\n\r\nko.templates['Core/Controls/QueryBuilder/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/QueryBuilder/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/QueryBuilder/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/QueryBuilder/Templates/Design'] = ComplexControl.designTemplate;\r\n\r\nexport class QueryBuilder extends ComplexControl {\r\n private _queryBuilder: KnockoutObservable<any>;\r\n private _recordTypeField: AttachedFieldModel;\r\n private _recordNameField: AttachedFieldModel;\r\n private _subjectField: AttachedFieldModel;\r\n private _subjectGridField: AttachedFieldModel;\r\n private _showInMenuField: AttachedFieldModel;\r\n private _showInPortletField: AttachedFieldModel;\r\n\r\n private _lockToGridField: AttachedFieldModel;\r\n\r\n private _gridIdField: AttachedFieldModel;\r\n private _queryField: AttachedFieldModel;\r\n private _oldQueryBuilderData: string;\r\n private _newQueryBuilderData: Array<any>;\r\n private _gridId: number;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._model().IsComplexControl = true;\r\n this._queryBuilder = ko.observable(null);\r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private Init(): void {\r\n if (this.GetRenderMode() !== RenderModes.Design && this.GetRenderMode() !== RenderModes.ToolBar) {\r\n [\r\n this._recordNameField,\r\n this._recordTypeField,\r\n this._subjectField,\r\n this._queryField,\r\n this._subjectGridField,\r\n this._showInMenuField,\r\n this._lockToGridField,\r\n this._gridIdField,\r\n this._showInPortletField\r\n ] = this._model().Fields;\r\n }\r\n\r\n this._requiredFields([\r\n new RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_SUBJECT', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('QUERY', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_GRIDSUBJECT', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('SHOWINMENU', FIELD_TYPES.YesNo, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('LOCKEDTOGRID', FIELD_TYPES.YesNo, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_GRID', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('SHOWINPORTLET', FIELD_TYPES.YesNo, TABLE_TYPES.Entity, null)\r\n ]);\r\n\r\n this.InitRequiredFields();\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.QueryBuilder));\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n const tableType = this._form.GetScreen().GetTableTypeName();\r\n\r\n if (value.Datas) {\r\n const queryData = _.find(value.Datas, (item) => {\r\n return item.FieldId === this._queryField.Id;\r\n });\r\n\r\n if (queryData) {\r\n let showInMenu = false;\r\n let showInPortlet = false;\r\n\r\n if (tableType === ViewModes[ViewModes.Query]) {\r\n const showInMenuField = _.find(value.Datas, (item) => {\r\n return item.FieldId === this._showInMenuField.Id;\r\n });\r\n\r\n const showInPortletField = _.find(value.Datas, (item) => {\r\n return item.FieldId === this._showInPortletField.Id;\r\n });\r\n\r\n showInMenu = showInMenuField.Value === 'True' || showInMenuField.Value === true;\r\n }\r\n\r\n const showInPortletField = _.find(value.Datas, (item) => {\r\n return item.FieldId === this._showInPortletField.Id;\r\n });\r\n\r\n showInPortlet = showInPortletField.Value === 'True' || showInPortletField.Value === true;\r\n\r\n this.EditQuery(queryData.Value, showInMenu, showInPortlet);\r\n } else {\r\n this.NewQuery(tableType);\r\n }\r\n } else {\r\n this.NewQuery(tableType);\r\n }\r\n }\r\n\r\n NewQuery(queryTypeName: string) {\r\n this._oldQueryBuilderData = queryTypeName;\r\n\r\n var queryBuilder = require('../../../QueryBuilder/QueryBuilder');\r\n this._queryBuilder(new queryBuilder.QueryBuilder(false));\r\n if (queryTypeName === ViewModes[ViewModes.Query] || queryTypeName === ViewModes[ViewModes.Spim]) {\r\n this._queryBuilder().QueryTypeName = ViewModes[this._form.GetScreen().GetTableTypeName()];\r\n this._queryBuilder().NewFreeQuery();\r\n }\r\n }\r\n\r\n EditQuery(queryModel: string, showInMenu: boolean = false, showInPortlet: boolean = false) {\r\n this._oldQueryBuilderData = queryModel;\r\n\r\n var queryBuilder = require('../../../QueryBuilder/QueryBuilder');\r\n this._queryBuilder(new queryBuilder.QueryBuilder(false));\r\n this._queryBuilder().QueryTypeName = ViewModes[this._form.GetScreen().GetTableTypeName()];\r\n this._queryBuilder().EditFreeQuery(GenericDeserialize<QueryExpressionModel>(JSON.parse(queryModel), QueryExpressionModel), showInMenu, showInPortlet);\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>): void {\r\n super.AfterRender(el);\r\n }\r\n\r\n Deserialize() {\r\n if (this._queryField && this._subjectField && this._queryBuilder()) {\r\n this._newQueryBuilderData = [];\r\n this._newQueryBuilderData.push([`${this._queryField.EntityName}.${this._queryField.Name}`, JSON.stringify(Serialize(this._queryBuilder().GetModel()))]);\r\n\r\n const data = [];\r\n\r\n data.push([`${this._queryField.EntityName}.${this._queryField.Name}`, JSON.stringify(Serialize(this._queryBuilder().GetModel()))]);\r\n data.push([`${this._subjectField.EntityName}.${this._subjectField.Name}`, this._queryBuilder().GetSubjectEntityId()]);\r\n\r\n if (this._subjectGridField) {\r\n data.push([`${this._subjectGridField.EntityName}.${this._subjectGridField.Name}`, this._queryBuilder().GetGridSubjectEntityId()]);\r\n }\r\n\r\n if (this._showInMenuField) {\r\n data.push([`${this._subjectGridField.EntityName}.${this._showInMenuField.Name}`, this._queryBuilder().GetShowInMenu()]);\r\n }\r\n \r\n if (this._showInPortletField) {\r\n data.push([`${this._subjectGridField.EntityName}.${this._showInPortletField.Name}`, this._queryBuilder().GetShowInPortlet()]);\r\n }\r\n\r\n if (this._gridIdField) {\r\n data.push([`${this._gridIdField.EntityName}.${this._gridIdField.Name}`, this._gridId]);\r\n }\r\n\r\n return data;\r\n }\r\n return null;\r\n }\r\n\r\n IsModified(): boolean {\r\n this.Deserialize();\r\n if (this._newQueryBuilderData.length !== 0) {\r\n let newQueryBuilderData = this._newQueryBuilderData[0][1];\r\n\r\n if (this._oldQueryBuilderData !== newQueryBuilderData.toString()) {\r\n return true;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this._queryField && this._subjectField && this._queryBuilder()) {\r\n if (this._queryBuilder().GetModel()) {\r\n this._isValid(true);\r\n } else {\r\n this._isValid(false);\r\n this._errorMessage('Please initialize query');\r\n }\r\n } else {\r\n this._isValid(false);\r\n this._errorMessage('Please initialize control');\r\n }\r\n return this._isValid();\r\n }\r\n\r\n SetSubjectEntityId(subjectEntityId: number): void {\r\n this._queryBuilder().SubjectEntityId = subjectEntityId;\r\n }\r\n\r\n SetSubjectRecordId(subjectRecordId: number): void {\r\n this._queryBuilder().SubjectRecordId = subjectRecordId;\r\n }\r\n\r\n SetQueryTypeName(queryTypeName: any): void {\r\n this._queryBuilder().QueryTypeName = queryTypeName;\r\n }\r\n\r\n SetGridId(id: number): void {\r\n this._gridId = id;\r\n }\r\n\r\n SetFilterByOwners(value: boolean) {\r\n this._queryBuilder().FilterByOwners = value;\r\n }\r\n\r\n GetQueryId(): number {\r\n return this._queryBuilder().QueryId;\r\n }\r\n\r\n InitQuery(data: QueryExpressionModel): void {\r\n this._queryBuilder().InitQuery(data);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"><img src=\\\"img/Custom/sql-256.png\\\"> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --></label> </div> \";\n// Exports\nexport default code;","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {CreateRecipeVersionDto} from \"../Models/Dto/CreateRecipeVersionDto\";\r\nimport {GetRecipeDataDto} from \"../Models/Dto/GetRecipeDataDto\";\r\nimport {RecipeRecordModel} from \"../RecipeEditorTree/Response/RecipeRecordModel\";\r\nimport {RecipeDataModel} from \"../Models/RecipeDataModel\";\r\nimport {DeleteRecipeVersionDto} from \"../Models/Dto/DeleteRecipeVersionDto\";\r\nimport {GetRecipeDataByVersionDto} from \"../Models/Dto/GetRecipeDataByVersionDto\";\r\nimport {CopyRecipeVersionDto} from \"../Models/Dto/CopyRecipeVersionDto\";\r\nimport {SaveRecipeDataDto} from \"../Models/Dto/SaveRecipeDataDto\";\r\nimport {CheckIfRecipeIsCreatedDto} from \"../Models/Dto/CheckIfRecipeIsCreatedDto\";\r\n\r\nexport interface GetLinkedRecordsDto {\r\n RootEntityId: number;\r\n ParentRecordId: number;\r\n VersionId: number;\r\n}\r\n\r\nexport class RecipeEditorStore {\r\n static CreateRecipeVersion(params: CreateRecipeVersionDto): P.Promise<RecipeDataModel>{\r\n const deferredResult = P.defer<RecipeDataModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/CreateRecipeVersion',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static SaveRecipeData(params: SaveRecipeDataDto): P.Promise<RecipeDataModel>{\r\n const deferredResult = P.defer<RecipeDataModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/SaveRecipeData',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static DeleteRecipeVersion(params: DeleteRecipeVersionDto): P.Promise<RecipeDataModel>{\r\n const deferredResult = P.defer<RecipeDataModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/DeleteRecipeVersion',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CopyRecipeVersion(params: CopyRecipeVersionDto): P.Promise<RecipeDataModel>{\r\n const deferredResult = P.defer<RecipeDataModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/CopyRecipeVersion',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetRecipeDataByVersion(params: GetRecipeDataByVersionDto): P.Promise<RecipeDataModel>{\r\n const deferredResult = P.defer<RecipeDataModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/GetRecipeDataByVersion',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetRecipeData(params: GetRecipeDataDto): P.Promise<RecipeDataModel>{\r\n const deferredResult = P.defer<RecipeDataModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/GetRecipeData',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n\r\n }\r\n\r\n static GetLinkedRecords(requestModel: GetLinkedRecordsDto): P.Promise<RecipeRecordModel[]> {\r\n const deferredResult = P.defer<RecipeRecordModel[]>();\r\n\r\n const requestOptions: IRequestOptions = {\r\n proxy: {\r\n url: 'api/RecipeEditorApi/GetLinkedRecords',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: requestModel\r\n }\r\n\r\n Request.Send(requestOptions)\r\n .then(response => this.ResolveResponse(response, deferredResult))\r\n .fail((response) => this.ResolveFail(deferredResult, \"Error!!!!\"));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CheckIfRecipeIsCreated(params: CheckIfRecipeIsCreatedDto): P.Promise<boolean>{\r\n const deferredResult = P.defer<boolean>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/CheckIfRecipeIsCreated',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n private static ResolveResponse(response, deferredResult: P.Deferred<any>) {\r\n if (response.length) {\r\n deferredResult.resolve(response);\r\n return;\r\n }\r\n\r\n this.ResolveFail(deferredResult, response.ErrorMessage);\r\n }\r\n\r\n private static ResolveFail(deferredResult: P.Deferred<any>, errorMessage: string) {\r\n const error = { message: errorMessage };\r\n deferredResult.reject(error);\r\n }\r\n}","export class RecipeRecordModel {\r\n Id: number;\r\n Name: string;\r\n NameTranslation: string;\r\n TypeId: number;\r\n TypeName: string;\r\n TypeNameTranslation: string;\r\n LifeStatusId: number;\r\n LifeStatusName: string;\r\n LifeStatusGroup: number;\r\n IsLocked: boolean;\r\n HasChildren: boolean;\r\n\r\n Children: RecipeRecordModel[];\r\n TypeColor?: string;\r\n\r\n constructor() {\r\n this.Children = []\r\n this.TypeColor = null;\r\n }\r\n}","import {RecipeRecordModel} from \"./RecipeRecordModel\";\r\n\r\nexport class RecipeResponseModel {\r\n Roots: RecipeRecordModel[];\r\n\r\n constructor() {\r\n this.Roots = [];\r\n }\r\n}","import {RecipeNodeViewModel} from \"./RecipeNodeViewModel\";\r\n\r\nexport class RecipeViewModel {\r\n private _nodes: RecipeNodeViewModel[];\r\n\r\n constructor() {\r\n this._nodes = [];\r\n }\r\n\r\n Add(node: RecipeNodeViewModel) {\r\n this._nodes.push(node);\r\n }\r\n\r\n AddRange(nodes: RecipeNodeViewModel[]) {\r\n nodes.forEach(this.Add.bind(this));\r\n }\r\n\r\n GetNode(id: string, callback: (matchedNode: RecipeNodeViewModel) => void) {\r\n this._nodes.forEach(node => node.GetNode(id, callback));\r\n }\r\n\r\n get RootNode(): RecipeNodeViewModel {\r\n return this._nodes[0];\r\n }\r\n\r\n GetNodeByRecordId(id: number, callback: (matchedNode: RecipeNodeViewModel) => void) {\r\n this._nodes.forEach(node => node.GetNodeByRecordId(id, callback));\r\n }\r\n\r\n SetInitialNode(initialNodeId: number) {\r\n this._nodes.forEach(node => node.SetInitialNode(initialNodeId));\r\n\r\n // if (this.CurrentNode) {\r\n // this.CurrentNode.SetInitialNode(initialNodeId);\r\n // }\r\n }\r\n\r\n ToJson() {\r\n return this._nodes.map(node => node.ToJson());\r\n }\r\n}","// Module\nvar code = \"<pre class=\\\"mt-code link-info-item\\\" data-bind=\\\"text: TypeName, style: { 'outline': OutlineColor, 'color': TypeColor }, attr: { id: `${Guid}_node-type` }\\\"></pre> <!-- ko if: IsLocked --> <i class=\\\"fa fa-lock\\\" data-bind=\\\"attr: { title: LockedTooltip }\\\"></i> <!-- /ko --> <span class=\\\"LeftColon link-name\\\" data-bind=\\\"text: Name, attr: { id: `${Guid}_node-name` }\\\"></span>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport { Guid } from \"Core/Common/Guid\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {LifeStatusGroupEnum, LifeStatusGroups} from \"../../../../../Common/Enums/LifeStatusGroups\";\r\n\r\nimport ItemNameTemplate from \"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/ItemNameTemplate.html\";\r\nimport {RecipeEditorTreeNodeViewModelMapping} from \"../../Mappings/RecipeEditorTreeNodeViewModelMapping\";\r\nko.templates[\"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/ItemNameTemplate\"] = ItemNameTemplate;\r\n\r\nexport class RecipeNodeViewModel {\r\n Guid: string;\r\n Id: number;\r\n Name: string;\r\n NameTranslation: string;\r\n TypeId: number;\r\n TypeName: string;\r\n TypeNameTranslation: string;\r\n LifeStatusId: number;\r\n LifeStatusName: string;\r\n LifeStatusGroup: number;\r\n IsInitialNode: boolean;\r\n IsLocked: boolean;\r\n HasChildren: boolean;\r\n OutlineColor?: string;\r\n TypeColor?: string;\r\n LockedTooltip?: string;\r\n\r\n\r\n private _children: RecipeNodeViewModel[];\r\n private _labels = LABELS;\r\n\r\n constructor() {\r\n this.Guid = Guid.NewGuid();\r\n this._children = [];\r\n if (!this.OutlineColor){\r\n this.OutlineColor = null;\r\n }\r\n if (!this.LockedTooltip){\r\n this.LockedTooltip = null;\r\n }\r\n }\r\n\r\n get Children() {\r\n return this._children;\r\n }\r\n\r\n GetOutlineColor() {\r\n return this.TypeColor ? `1px solid ${this.TypeColor}` : null;\r\n }\r\n\r\n GetTypeColor() {\r\n return this.TypeColor ? this.TypeColor : null;\r\n }\r\n\r\n GetNameTranslation() {\r\n return this.NameTranslation ? this.NameTranslation : this.Name;\r\n }\r\n\r\n GetTypeName() {\r\n return this.TypeNameTranslation ? this.TypeNameTranslation : this.TypeName ? this.TypeName : '-';\r\n }\r\n\r\n Copy() {\r\n return RecipeEditorTreeNodeViewModelMapping.Copy(this);\r\n }\r\n\r\n GetTemplateName() {\r\n return \"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/ItemNameTemplate\";\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Add(node: RecipeNodeViewModel) {\r\n this._children.push(node);\r\n }\r\n\r\n AddRange(nodes: RecipeNodeViewModel[]) {\r\n nodes.forEach(this.Add.bind(this));\r\n }\r\n\r\n GetNode(id: string, callback: (matchedNode: RecipeNodeViewModel) => void) {\r\n if (this.Guid === id) {\r\n callback(this);\r\n }\r\n\r\n this._children.forEach(child => child.GetNode(id, callback));\r\n }\r\n\r\n GetNodeByRecordId(id: number, callback: (matchedNode: RecipeNodeViewModel) => void) {\r\n if (this.Id === id) {\r\n callback(this);\r\n }\r\n\r\n this._children.forEach(child => child.GetNodeByRecordId(id, callback));\r\n }\r\n\r\n SetInitialNode(initialNodeId: number) {\r\n this.IsInitialNode = this.Id === initialNodeId;\r\n this._children.forEach(childRecord => childRecord.SetInitialNode(initialNodeId));\r\n }\r\n\r\n IsRetired() {\r\n return this.LifeStatusName === 'Disabled' ||\r\n (this.LifeStatusGroup && LifeStatusGroups.GetLifeStatusGroup(this.LifeStatusGroup) === LifeStatusGroupEnum.Retired);\r\n }\r\n\r\n\r\n ToJson() {\r\n const nestedNodes = this._children.map(child => child.ToJson());\r\n let children: object[] | boolean;\r\n\r\n // if (this.IsSubject || nestedNodes.length > 0) {\r\n if (nestedNodes.length > 0) {\r\n children = nestedNodes;\r\n } else {\r\n children = this.HasChildren;\r\n }\r\n\r\n return {\r\n id: this.Guid,\r\n text: (ko as any).renderTemplateXHtml(ItemNameTemplate,\r\n {\r\n TypeName: this.GetTypeName(),\r\n Name: this.GetNameTranslation(),\r\n Tooltip: this._labels.RECORD_DISABLED,\r\n IsRetired: this.IsRetired(),\r\n IsInitialNode: this.IsInitialNode,\r\n IsLocked: this.IsLocked,\r\n LockedTooltip: this._labels.LOCKED_THE_ROOT_NODE_IS_LINKED_TO_THE_LOCK_ENTITY,\r\n OutlineColor: this.GetOutlineColor(),\r\n TypeColor: this.GetTypeColor(),\r\n Guid: this.Guid\r\n }),\r\n children: children,\r\n record: this\r\n };\r\n }\r\n}","import * as _ from 'underscore'\r\nimport {RecipeRecordModel} from \"../Response/RecipeRecordModel\";\r\nimport {RecipeNodeViewModel} from \"../Models/View/RecipeNodeViewModel\";\r\nimport {ITypePropertyModel} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\n\r\n\r\nexport class RecipeEditorTreeNodeViewModelMapping {\r\n static MapFromResponse(record: RecipeRecordModel, typesProperty: ITypePropertyModel[]) {\r\n if (!record) {\r\n return null;\r\n }\r\n const nodeViewModel = new RecipeNodeViewModel();\r\n nodeViewModel.Id = record.Id;\r\n nodeViewModel.Name = record.Name || \"-\";\r\n nodeViewModel.NameTranslation = record.NameTranslation;\r\n nodeViewModel.TypeId = record.TypeId;\r\n nodeViewModel.TypeName = record.TypeName;\r\n nodeViewModel.TypeNameTranslation = record.TypeNameTranslation;\r\n nodeViewModel.LifeStatusId = record.LifeStatusId;\r\n nodeViewModel.LifeStatusName = record.LifeStatusName;\r\n nodeViewModel.LifeStatusGroup = record.LifeStatusGroup;\r\n nodeViewModel.IsLocked = record.IsLocked;\r\n nodeViewModel.HasChildren = record.HasChildren;\r\n nodeViewModel.TypeColor = record.TypeColor;\r\n\r\n if (!!typesProperty && !!typesProperty.length){\r\n _.each(typesProperty, (type:ITypePropertyModel)=>{\r\n if (type.TypeId === record.TypeId){\r\n nodeViewModel.TypeColor = type.TypeColor\r\n }\r\n })\r\n }\r\n\r\n const children = record.Children.map(childRecord => this.MapFromResponse(childRecord, typesProperty));\r\n nodeViewModel.AddRange(children);\r\n\r\n return nodeViewModel;\r\n }\r\n\r\n\r\n static Copy(record: RecipeNodeViewModel) {\r\n const nodeViewModel = new RecipeNodeViewModel();\r\n\r\n nodeViewModel.Id = record.Id;\r\n nodeViewModel.Name = record.Name;\r\n nodeViewModel.NameTranslation = record.NameTranslation;\r\n nodeViewModel.TypeId = record.TypeId;\r\n nodeViewModel.TypeName = record.TypeName;\r\n nodeViewModel.TypeNameTranslation = record.TypeNameTranslation;\r\n nodeViewModel.LifeStatusId = record.LifeStatusId;\r\n nodeViewModel.LifeStatusName = record.LifeStatusName;\r\n nodeViewModel.LifeStatusGroup = record.LifeStatusGroup;\r\n nodeViewModel.IsInitialNode = record.IsInitialNode;\r\n nodeViewModel.IsLocked = record.IsLocked;\r\n nodeViewModel.TypeColor = record.TypeColor;\r\n\r\n const children = record.Children.map(childRecord => this.Copy(childRecord));\r\n nodeViewModel.AddRange(children);\r\n\r\n return nodeViewModel;\r\n }\r\n}","import {RecipeResponseModel} from \"../Response/RecipeResponseModel\";\r\nimport {RecipeViewModel} from \"../Models/View/RecipeViewModel\";\r\nimport {RecipeEditorTreeNodeViewModelMapping} from \"./RecipeEditorTreeNodeViewModelMapping\";\r\nimport {ITypePropertyModel} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\n\r\nexport class RecipeEditorTreeViewModelMapping {\r\n static MapFromResponse(responseModel: RecipeResponseModel, typesProperty: ITypePropertyModel[]) {\r\n let viewModel = new RecipeViewModel();\r\n\r\n let roots = responseModel.Roots.map(root => RecipeEditorTreeNodeViewModelMapping.MapFromResponse(root, typesProperty));\r\n viewModel.AddRange(roots);\r\n return viewModel;\r\n }\r\n}","//Common\r\nimport * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport 'tree';\r\n\r\nimport {Guid} from \"../../../Common/Guid\";\r\nimport {RecipeNodeViewModel} from \"./Models/View/RecipeNodeViewModel\";\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\"\r\n\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {GetLinkedRecordsDto, RecipeEditorStore} from \"../Stores/RecipeEditorStore\";\r\nimport {GetRecipeDataDto} from \"../Models/Dto/GetRecipeDataDto\";\r\nimport {RecipeResponseModel} from \"./Response/RecipeResponseModel\";\r\nimport {RecipeEditorTreeViewModelMapping} from \"./Mappings/RecipeEditorTreeViewModelMapping\";\r\nimport {RecipeViewModel} from \"./Models/View/RecipeViewModel\";\r\nimport {Notifier} from \"../../../Common/Notifier\";\r\nimport {RecipeVersionModel} from \"../Models/RecipeVersionModel\";\r\nimport {RecipeEditorTreeNodeViewModelMapping} from \"./Mappings/RecipeEditorTreeNodeViewModelMapping\";\r\nimport {RecipeDataModel} from \"../Models/RecipeDataModel\";\r\nimport {ITypePropertyModel} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\n//Templates\r\nimport Template from \"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/Template.html\";\r\nimport ItemTemplate from \"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/ItemTemplate.html\";\r\nimport {EllipsisTooltipExtention} from \"../../../KnockoutExtentions/EllipsisTooltipExtention\";\r\n\r\nko.templates[\"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/Template\"] = Template;\r\nko.templates[\"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/ItemTemplate\"] = ItemTemplate;\r\n\r\nexport interface IGetNewDataParams {\r\n recipeDataModel: RecipeDataModel,\r\n recipeSelectedVersion: RecipeVersionModel\r\n}\r\n\r\nexport class RecipeEditorTreeUnit {\r\n private _entityId: number;\r\n private _recordId: KnockoutObservable<number>;\r\n private _controlId: number;\r\n private _expanded: KnockoutObservable<boolean>;\r\n private _model: KnockoutObservable<RecipeViewModel>;\r\n private _userVars: UserVarsManager;\r\n private _labels = LABELS;\r\n\r\n private _el: HTMLElement;\r\n private _recipeEditorTree: HTMLElement;\r\n private _recipeEditorTreeId: string;\r\n private _recipeEditorTreeRendered: boolean;\r\n private _treeRendered: boolean;\r\n private _dataLoaded: KnockoutObservable<boolean>;\r\n private _selectedRecipeVersion: KnockoutObservable<RecipeVersionModel>\r\n private _jbox: jBox;\r\n\r\n private _recipeVersionModel: KnockoutObservableArray<RecipeVersionModel>\r\n private _typesProperty: ITypePropertyModel[]\r\n\r\n constructor(entityId: number, controlId: number, typesProperty: ITypePropertyModel[]) {\r\n this._recipeEditorTreeId = Guid.NewGuid();\r\n this._entityId = entityId;\r\n this._recordId = ko.observable(null);\r\n this._controlId = controlId;\r\n this._model = ko.observable(null);\r\n this._recipeVersionModel = ko.observableArray([]);\r\n this._typesProperty = typesProperty;\r\n\r\n // let isExpanded = this.GetSettingsFromLockStorage();\r\n // this._expanded = ko.observable(isExpanded);\r\n this._expanded = ko.observable(false);\r\n this._selectedRecipeVersion = ko.observable(null);\r\n\r\n this._dataLoaded = ko.observable(false);\r\n this._dataLoaded.subscribe(dataLoaded => {\r\n if (dataLoaded) {\r\n this.RenderTree();\r\n }\r\n });\r\n }\r\n\r\n ExpandCollapse() {\r\n this._expanded(!this._expanded());\r\n // this.SetSettingsToLockStorage();\r\n }\r\n\r\n GetTemplateName() {\r\n return \"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/Template\";\r\n }\r\n\r\n AfterRender(el: HTMLElement[]) {\r\n this._recipeEditorTree = document.getElementById(this._recipeEditorTreeId);\r\n this._el = el[0];\r\n this.RenderTree();\r\n }\r\n\r\n LoadNewData(recordId: number, recipeVersions: KnockoutObservableArray<RecipeVersionModel>){\r\n const deferred = P.defer();\r\n this._dataLoaded(false);\r\n this._treeRendered = false;\r\n\r\n this._recipeVersionModel(recipeVersions());\r\n\r\n this._recordId(recordId);\r\n\r\n if (recordId){\r\n let params: GetRecipeDataDto = {\r\n RootEntityId: this._entityId,\r\n RootRecordId: recordId,\r\n ControlId: this._controlId\r\n }\r\n RecipeEditorStore.GetRecipeData(params)\r\n .then((data: RecipeDataModel) => {\r\n let roots: RecipeResponseModel = new RecipeResponseModel()\r\n roots.Roots.push(data.RecipeRecord);\r\n this.DataLoaded(roots);\r\n deferred.resolve(null);\r\n })\r\n .fail(() => {\r\n this.DataLoadFailed.bind(this)\r\n deferred.resolve(null);\r\n });\r\n }\r\n\r\n }\r\n\r\n GetNewData(params: IGetNewDataParams){\r\n const deferred = P.defer();\r\n this._dataLoaded(false);\r\n this._treeRendered = false;\r\n this._selectedRecipeVersion({\r\n VersionId: params.recipeSelectedVersion.VersionId,\r\n VersionName: params.recipeSelectedVersion.VersionName,\r\n IsActive: params.recipeSelectedVersion.IsActive,\r\n IsSelected: ko.observable(params.recipeSelectedVersion.IsSelected())\r\n })\r\n\r\n this._recipeVersionModel(params.recipeDataModel.RecipeVersions);\r\n this._recordId(params.recipeDataModel.RecipeRecord.Id);\r\n\r\n if (params.recipeDataModel){\r\n\r\n const promise = new Promise((resolve, reject) => {\r\n setTimeout(() => {\r\n resolve('Success');\r\n }, 100);\r\n });\r\n promise.then((value) => {\r\n let roots: RecipeResponseModel = new RecipeResponseModel();\r\n roots.Roots.push(params.recipeDataModel.RecipeRecord);\r\n\r\n this.DataLoaded(roots);\r\n deferred.resolve(null);\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n private DataLoadFailed(error) {\r\n new Notifier().Failed(error.message);\r\n }\r\n\r\n private DataLoaded(responseModel: RecipeResponseModel){\r\n if (responseModel) {\r\n const data = RecipeEditorTreeViewModelMapping.MapFromResponse(responseModel, this._typesProperty);\r\n this._model(data);\r\n } else {\r\n this.Clear();\r\n }\r\n\r\n if (this._model()) {\r\n // this._model().GetNodeByRecordId(this._recordId(),\r\n // record => {\r\n // if (!this._model().CurrentNode && record.IsSubject) {\r\n // this._model().CurrentNode = record;\r\n // }\r\n // });\r\n\r\n this._model().SetInitialNode(this._recordId());\r\n\r\n this._treeRendered = true;\r\n this._dataLoaded(true);\r\n }\r\n }\r\n\r\n Clear() {\r\n if (this._model()) {\r\n this._model(null);\r\n }\r\n }\r\n\r\n Destroy(){\r\n const $treeRoot = $(this._el)\r\n .next()\r\n .find('.recipeEditor-body');\r\n this.Clear();\r\n $treeRoot.jstree('destroy');\r\n }\r\n\r\n Refresh(){\r\n const $treeRoot = $(this._el)\r\n .next()\r\n .find('.recipeEditor-body');\r\n $treeRoot.jstree(true).refresh();\r\n }\r\n\r\n AddEllipsisTooltip(data) {\r\n this._model().GetNode(data.node.id, record => {\r\n this._jbox = EllipsisTooltipExtention.CreateEllipsisTooltipForPathRunner(record);\r\n });\r\n }\r\n\r\n private RenderTree() {\r\n const $treeRoot = $(this._el)\r\n .next()\r\n .find('.recipeEditor-body');\r\n\r\n $treeRoot.jstree('destroy');\r\n $treeRoot.jstree({\r\n state: {key: 'recipeEditor-state'},\r\n plugins: ['state'],\r\n core: {\r\n animation: false,\r\n data: this.ExtendTree.bind(this),\r\n multiple: false,\r\n themes: {\r\n icons: false\r\n }\r\n }\r\n });\r\n\r\n $treeRoot\r\n .on('ready.jstree', (event, data) => this.OpenCurrentNode(data))\r\n // .on('activate_node.jstree ', (event, data) => this.Navigate(data))\r\n .on('open_node.jstree', (event, data) => this.PathRunnerShowChildren(data))\r\n .on('close_node.jstree', (event, data) => this.PathRunnerHideChildren(data))\r\n .on('hover_node.jstree', (event, data) => {\r\n if (!$(`.${data.node.original.record.Guid}_tooltip`).length) {\r\n this.AddEllipsisTooltip(data);\r\n }\r\n })\r\n }\r\n\r\n PathRunnerShowChildren(data) {\r\n if ($(`.${data.node.id}_tooltip`).length) {\r\n $(`.${data.node.id}_tooltip`).remove();\r\n }\r\n }\r\n\r\n PathRunnerHideChildren(data) {\r\n if ($(`.${data.node.id}_tooltip`).length) {\r\n $(`.${data.node.id}_tooltip`).remove();\r\n }\r\n\r\n _.each(data.node.children, child => {\r\n if ($(`.${child}_tooltip`).length) {\r\n $(`.${child}_tooltip`).remove();\r\n }\r\n })\r\n }\r\n\r\n private OpenCurrentNode(data) {\r\n const currentRecord = this._model().RootNode;\r\n\r\n if (currentRecord) {\r\n if (currentRecord.HasChildren) {\r\n const currentNode = currentRecord.Guid;\r\n data.instance._open_to(currentNode);\r\n data.instance.open_node(currentNode);\r\n data.instance.disable_node(currentNode);\r\n }\r\n }\r\n }\r\n\r\n private ExtendTree(node, callback) {\r\n if (node.id === '#') {\r\n if (this._model()) {\r\n callback.call(node, this._model().ToJson());\r\n }\r\n } else {\r\n this.LoadLinkedRecords(node, this._selectedRecipeVersion())\r\n .then(linkedRecords => this.AddLinkedRecords(linkedRecords, node, callback))\r\n .fail(this.DataLoadFailed.bind(this));\r\n }\r\n }\r\n\r\n private LoadLinkedRecords(node, selectedRecipeVersionModel) {\r\n const deferredResult = P.defer<RecipeNodeViewModel[]>();\r\n\r\n const record = node.original.record;\r\n let nestedNodes = [];\r\n\r\n this._model().GetNodeByRecordId(record.Id, existingRecord => {\r\n if (existingRecord.Children.length > 0 && nestedNodes.length === 0) {\r\n nestedNodes = existingRecord.Children.map(nestedNode => nestedNode.Copy());\r\n }\r\n });\r\n\r\n if (nestedNodes.length === 0) {\r\n let parsms: GetLinkedRecordsDto = {\r\n RootEntityId: this._entityId,\r\n ParentRecordId: record.Id,\r\n VersionId: selectedRecipeVersionModel.VersionId,\r\n }\r\n\r\n RecipeEditorStore.GetLinkedRecords(parsms)\r\n .then(linkedRecords => {\r\n nestedNodes = linkedRecords.map(nestedNode => RecipeEditorTreeNodeViewModelMapping.MapFromResponse(nestedNode, this._typesProperty));\r\n deferredResult.resolve(nestedNodes);\r\n })\r\n .fail(error => deferredResult.reject(error));\r\n\r\n } else {\r\n deferredResult.resolve(nestedNodes);\r\n }\r\n\r\n return deferredResult.promise();\r\n\r\n }\r\n\r\n private AddLinkedRecords(linkedRecords: RecipeNodeViewModel[], node, callback) {\r\n const nestedNodes = linkedRecords.map(nestedNode => nestedNode.ToJson());\r\n this._model().GetNode(node.id, record => {\r\n record.AddRange(linkedRecords);\r\n });\r\n callback.call(node, nestedNodes);\r\n }\r\n\r\n\r\n}","// Module\nvar code = \"<!-- ko if: _model --> <!--<div data-bind=\\\"css: {'expand': _expanded}, attr: {id: _pathRunnerId}\\\" class=\\\"clearfix path-runner-container transition\\\">--> <div data-bind=\\\"attr: {id: _recipeEditorTreeId}\\\" class=\\\"recipeEditorTree clearfix path-runner-container transition expand\\\"> <div tabindex=\\\"-1\\\" class=\\\"path-runner-body recipeEditor-body transition linklist-control path-runner\\\"> <!--ko with: _model--> <ul class=\\\"group-item tree\\\"> <!-- ko foreach: _nodes --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> </ul> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<li> <!-- ko if: _children.length > 0 --> <ul> <!-- ko foreach: _children--> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> </ul> <!-- /ko --> </li>\";\n// Exports\nexport default code;","//Units\r\nimport { RecipeEditorTreeUnit } from \"Core/Controls/RecipeEditor/RecipeEditorTree/RecipeEditorTreeUnit\";\r\n\r\nimport {ITypePropertyModel} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\n\r\nexport class RecipeEditorTree {\r\n private static _instance: RecipeEditorTree;\r\n private static _initialized: boolean;\r\n\r\n private _entityToUnit: { [enityId: number]: RecipeEditorTreeUnit };\r\n\r\n constructor() {\r\n if (RecipeEditorTree._initialized) {\r\n throw new Error(\"Path runner already initialized\");\r\n }\r\n\r\n RecipeEditorTree._initialized = true;\r\n this._entityToUnit = {};\r\n }\r\n\r\n static get Instance() {\r\n if (RecipeEditorTree._instance) {\r\n return RecipeEditorTree._instance;\r\n }\r\n\r\n RecipeEditorTree._instance = new RecipeEditorTree();\r\n\r\n return RecipeEditorTree._instance;\r\n }\r\n\r\n GetUnit(entityId: number, controlId: number, typesProperty: ITypePropertyModel[]) {\r\n let unit = this._entityToUnit[entityId];\r\n\r\n if (!unit) {\r\n unit = new RecipeEditorTreeUnit(entityId, controlId, typesProperty);\r\n this._entityToUnit[entityId] = unit;\r\n }\r\n\r\n return unit;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"currency-dropdown-wrapper\\\"> <!-- ko foreach: $data._availableRecipeVersions --> <div class=\\\"recipe-editor-version-item\\\" data-bind=\\\"css: {chosen: IsSelected, disabled: IsSelected, active: IsActive}\\\"> <a data-bind=\\\"click: $parent.OnSelectVersion.bind($parent, $data)\\\" href=\\\"javascript:;\\\"> <i data-bind=\\\"visible: IsActive\\\" class=\\\"fa fa-check\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: VersionName --><!-- /ko --> </a> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","//Common\r\nimport * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport * as _ from \"underscore\";\r\nimport 'tree';\r\n\r\nimport {P} from \"Core/Common/Promise\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\n\r\nimport {CONFIRMATIONS, LABELS} from \"../../Components/Translation/Locales\";\r\nimport {IControlParam} from \"../../Screens/IScreen\";\r\nimport {RecipeDataModel} from \"./Models/RecipeDataModel\";\r\nimport {GetRecipeDataDto} from \"./Models/Dto/GetRecipeDataDto\";\r\nimport {RecipeEditorStore} from \"./Stores/RecipeEditorStore\";\r\nimport {IGetNewDataParams, RecipeEditorTreeUnit} from \"Core/Controls/RecipeEditor/RecipeEditorTree/RecipeEditorTreeUnit\";\r\nimport {RecipeRecordModel} from \"Core/Controls/RecipeEditor/RecipeEditorTree/Response/RecipeRecordModel\";\r\nimport {RecipeEditorTree} from \"./RecipeEditorTree/RecipeEditorTree\";\r\nimport {RecipeVersionModel} from \"./Models/RecipeVersionModel\";\r\nimport {Notifier} from \"../../Common/Notifier\";\r\nimport {IRecipeEditorCreateParams, RecipeEditorCreate} from \"Core/Controls/RecipeEditor/RecipeEditorCreate\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {DeleteRecipeVersionDto} from \"./Models/Dto/DeleteRecipeVersionDto\";\r\nimport {\r\n ConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {GetRecipeDataByVersionDto} from \"./Models/Dto/GetRecipeDataByVersionDto\";\r\nimport {SaveRecipeDataDto} from \"Core/Controls/RecipeEditor/Models/Dto/SaveRecipeDataDto\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {ITypePropertyModel} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\n\r\nimport RecipeEdit from \"Core/Controls/RecipeEditor/Templates/RecipeEdit.html\";\r\nimport RecipeVersionDropdownTemplate from \"Core/Controls/RecipeEditor/Templates/RecipeVersionDropdownTemplate.html\";\r\nko.templates[\"Core/Controls/RecipeEditor/Templates/RecipeVersionDropdownTemplate\"] = RecipeVersionDropdownTemplate;\r\nko.templates[\"Core/Controls/RecipeEditor/Templates/RecipeEdit\"] = RecipeEdit;\r\n\r\ninterface IActiveVersionType {\r\n Title: string;\r\n IsDisabled: boolean;\r\n IsChosen?: boolean;\r\n ActiveVersionId?: boolean;\r\n}\r\n\r\nconst TOGGLE_CLASSES = {\r\n ON: 'fa-toggle-on',\r\n OFF: 'fa-toggle-off'\r\n}\r\n\r\nexport interface IRecipeEditorTreeParams {\r\n RecordId: number,\r\n RecipeVersions: KnockoutObservableArray<RecipeVersionModel>,\r\n RecipeDataModel?: RecipeDataModel\r\n}\r\n\r\nexport interface IRecipeEditorEditParams {\r\n RecordId: number;\r\n EntityId: number;\r\n ControlId: number;\r\n IsAddingAllowed: boolean;\r\n IsEditingAllowed: boolean;\r\n IsDeletingAllowed: boolean;\r\n TypesProperty?: ITypePropertyModel[];\r\n}\r\n\r\nexport class RecipeEditorEdit extends Event {\r\n _labels = LABELS;\r\n private _modal: Modal;\r\n private _recordId: number;\r\n private _entityId: number;\r\n private _controlId: number;\r\n private _isAddingAllowed: boolean;\r\n private _isEditingAllowed: boolean;\r\n private _isDeletingAllowed: boolean;\r\n private _recipeDataModel: RecipeDataModel;\r\n private _recipeEditorTree: KnockoutObservable<RecipeEditorTreeUnit>\r\n private _recipeEditorCreate: KnockoutObservable<RecipeEditorCreate>;\r\n private _dropDown: JBoxDropDown;\r\n private _availableRecipeVersions: KnockoutObservableArray<RecipeVersionModel>;\r\n private _selectedRecipeVersion: KnockoutObservable<RecipeVersionModel>;\r\n private _toggleActiveVersionTypes: KnockoutObservableArray<IActiveVersionType>;\r\n private _toggleActiveVersionType: KnockoutObservable<IActiveVersionType>;\r\n private _activeVersionToggleClass: KnockoutComputed<string>;\r\n private _newVersionActive: KnockoutObservable<boolean>;\r\n private _typesProperty: ITypePropertyModel[];\r\n\r\n constructor(params: IRecipeEditorEditParams) {\r\n super();\r\n this._recordId = params.RecordId;\r\n this._entityId = params.EntityId;\r\n this._controlId = params.ControlId;\r\n this._isAddingAllowed = params.IsAddingAllowed;\r\n this._isEditingAllowed = params.IsEditingAllowed;\r\n this._isDeletingAllowed = params.IsDeletingAllowed;\r\n this._recipeDataModel = null;\r\n this._recipeEditorTree = ko.observable(null);\r\n this._recipeEditorCreate = ko.observable(null);\r\n this._availableRecipeVersions = ko.observableArray([]);\r\n this._selectedRecipeVersion = ko.observable(null);\r\n this._newVersionActive = ko.observable(false);\r\n this._typesProperty = params.TypesProperty ? params.TypesProperty : null;\r\n this.AddEvent(\"RECIPE_EDITOR_EDIT_CLOSE\");\r\n this.GetRecipeDataModel();\r\n\r\n }\r\n\r\n GetRecipeDataModel(){\r\n this._recipeEditorTree = ko.observable(RecipeEditorTree.Instance.GetUnit(this._entityId, this._controlId, this._typesProperty));\r\n\r\n const getRecipeDataParams: GetRecipeDataDto = {\r\n RootEntityId: this._entityId,\r\n RootRecordId: this._recordId,\r\n ControlId: this._controlId\r\n }\r\n\r\n RecipeEditorStore.GetRecipeData(getRecipeDataParams)\r\n .then((result: RecipeDataModel) => {\r\n this._recipeDataModel = result;\r\n this._recipeDataModel.RecipeRecord = this.MapRecord(result.RecipeRecord, this._typesProperty);\r\n\r\n const defaultRecipeVersion = _.find(result.RecipeVersions, (version: RecipeVersionModel) => version.IsActive);\r\n _.forEach(result.RecipeVersions, (version: RecipeVersionModel)=>{\r\n this._availableRecipeVersions.push({\r\n VersionId: version.VersionId,\r\n VersionName: version.VersionName,\r\n IsActive: version.IsActive,\r\n IsSelected: ko.observable(version.VersionId === defaultRecipeVersion.VersionId)\r\n })\r\n })\r\n if (defaultRecipeVersion){\r\n this._selectedRecipeVersion({\r\n VersionId: defaultRecipeVersion.VersionId,\r\n VersionName: defaultRecipeVersion.VersionName,\r\n IsActive: defaultRecipeVersion.IsActive,\r\n IsSelected: ko.observable(true)\r\n })\r\n this.InitToggleActiveVersionMod();\r\n }\r\n this.ShowInModal();\r\n let params: IRecipeEditorTreeParams = {\r\n RecordId: null,\r\n RecipeVersions: null,\r\n RecipeDataModel: this._recipeDataModel\r\n }\r\n this.LoadRecipeEditorTree(params);\r\n\r\n })\r\n .fail(() => {\r\n this.DataLoadFailed.bind(this)\r\n });\r\n }\r\n\r\n MapRecord(result: RecipeRecordModel, typesProperty: ITypePropertyModel[]): RecipeRecordModel {\r\n if (!result) {\r\n return null;\r\n }\r\n let recordModel = new RecipeRecordModel();\r\n recordModel.Id = result.Id;\r\n recordModel.Name = result.Name;\r\n recordModel.NameTranslation = result.NameTranslation;\r\n recordModel.TypeId = result.TypeId;\r\n recordModel.TypeName = result.TypeName;\r\n recordModel.TypeNameTranslation = result.TypeNameTranslation;\r\n recordModel.LifeStatusId = result.LifeStatusId;\r\n recordModel.LifeStatusName = result.LifeStatusName;\r\n recordModel.LifeStatusGroup = result.LifeStatusGroup;\r\n recordModel.IsLocked = result.IsLocked;\r\n recordModel.HasChildren = result.HasChildren;\r\n if (!!typesProperty && !!typesProperty.length){\r\n _.each(typesProperty, (type:ITypePropertyModel)=>{\r\n if (type.TypeId === result.TypeId){\r\n recordModel.TypeColor = type.TypeColor\r\n }\r\n })\r\n }\r\n recordModel.Children = result.Children.map(childRecord => this.MapRecord(childRecord, typesProperty));\r\n\r\n return recordModel;\r\n }\r\n\r\n private DataLoadFailed(error: any): void {\r\n new Notifier().Failed(error.message);\r\n }\r\n\r\n GetValue() {\r\n let versionValue: RecipeVersionModel = {\r\n VersionId: this._selectedRecipeVersion().VersionId,\r\n VersionName: this._selectedRecipeVersion().VersionName,\r\n IsActive: this._selectedRecipeVersion() && this._selectedRecipeVersion().IsActive,\r\n IsSelected: ko.observable(this._selectedRecipeVersion().IsSelected())\r\n }\r\n return versionValue;\r\n }\r\n\r\n ShowInModal(){\r\n let self = this;\r\n let isMobile = MobileChecker.IsMobile();\r\n this._modal = new Modal({\r\n addClass: 'recipeEditorEditModal',\r\n width: isMobile ? '90vw' : '60vw',\r\n height: '60vh',\r\n closeOnEsc: false,\r\n onOpen: function () {\r\n $(this.closeButton[0]).off('click');\r\n this.closeButton[0].addEventListener('click', self.Close.bind(self, false));\r\n }\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n }\r\n\r\n Close(){\r\n if (this._modal) {\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Controls/RecipeEditor/Templates/RecipeEdit';\r\n }\r\n\r\n AfterRender(el: HTMLElement): void{\r\n\r\n }\r\n\r\n AddVersion(){\r\n let recipeEditorCreateParams: IRecipeEditorCreateParams = {\r\n RecordId: this._recordId,\r\n EntityId: this._entityId,\r\n ControlId: this._controlId,\r\n IsRecipeCreated: null,\r\n IsCreateRecipeVersion: true,\r\n IsAddingAllowed: this._isAddingAllowed,\r\n IsEditingAllowed: this._isEditingAllowed,\r\n IsDeletingAllowed: this._isDeletingAllowed,\r\n ICopyRecipeVersion: null,\r\n }\r\n this._recipeEditorCreate(new RecipeEditorCreate(recipeEditorCreateParams));\r\n this._recipeEditorCreate().ShowInModal();\r\n this._recipeEditorCreate().On('RECIPE_EDITOR_VERSION', this, (event)=>{\r\n let recipeDataModel: RecipeDataModel = event.data;\r\n recipeDataModel.RecipeRecord = this.MapRecord(event.data.RecipeRecord, this._typesProperty);\r\n let params: IRecipeEditorTreeParams = {\r\n RecordId: null,\r\n RecipeVersions: null,\r\n RecipeDataModel: recipeDataModel\r\n }\r\n this.Update(params, recipeDataModel.RecipeVersions);\r\n this.SetActiveVersionType_On();\r\n });\r\n }\r\n\r\n CopyVersion(){\r\n let recipeEditorCreateParams: IRecipeEditorCreateParams = {\r\n RecordId: this._recordId,\r\n EntityId: this._entityId,\r\n ControlId: this._controlId,\r\n IsRecipeCreated: null,\r\n IsCreateRecipeVersion: true,\r\n IsAddingAllowed: this._isAddingAllowed,\r\n IsEditingAllowed: this._isEditingAllowed,\r\n IsDeletingAllowed: this._isDeletingAllowed,\r\n ICopyRecipeVersion: {\r\n NewVersionName: `${this._selectedRecipeVersion().VersionName} - copy`,\r\n CopiedVersionId: this._selectedRecipeVersion().VersionId\r\n },\r\n }\r\n if (this._recipeEditorCreate()){\r\n this._recipeEditorCreate = ko.observable(null);\r\n }\r\n this._recipeEditorCreate(new RecipeEditorCreate(recipeEditorCreateParams))\r\n this._recipeEditorCreate().On('COPY_RECIPE_EDITOR_VERSION', this, (event)=>{\r\n let recipeDataModel: RecipeDataModel = event.data;\r\n recipeDataModel.RecipeRecord = this.MapRecord(event.data.RecipeRecord, this._typesProperty);\r\n let params: IRecipeEditorTreeParams = {\r\n RecordId: null,\r\n RecipeVersions: null,\r\n RecipeDataModel: recipeDataModel\r\n }\r\n this.Update(params, recipeDataModel.RecipeVersions);\r\n this.SetActiveVersionType_On();\r\n });\r\n\r\n this._recipeEditorCreate().ShowInModal();\r\n }\r\n\r\n SetActiveVersionType_On() {\r\n if (this._toggleActiveVersionType().Title != 'On'){\r\n this._toggleActiveVersionType(_.find(this._toggleActiveVersionTypes(), (type) => {\r\n type.IsChosen = true;\r\n return type.Title === 'On'\r\n }));\r\n }\r\n }\r\n\r\n DeleteVersion(){\r\n let DeleteRecipeVersionParams: DeleteRecipeVersionDto = {\r\n VersionId: this._selectedRecipeVersion().VersionId,\r\n RootEntityId: this._entityId,\r\n RootRecordId: this._recordId,\r\n ControlId: this._controlId\r\n }\r\n const confirmationText = CONFIRMATIONS.ARE_YOU_SURE_YOU_WANT_TO_DELETE_VERSION\r\n .replace('{VersionName}', this._selectedRecipeVersion().VersionName);\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n RecipeEditorStore.DeleteRecipeVersion(DeleteRecipeVersionParams)\r\n .then((result: RecipeDataModel) => {\r\n result.RecipeRecord = this.MapRecord(result.RecipeRecord, this._typesProperty);\r\n if (result.RecipeVersions.length){\r\n let params: IRecipeEditorTreeParams = {\r\n RecordId: null,\r\n RecipeVersions: null,\r\n RecipeDataModel: result\r\n }\r\n this.Update(params, result.RecipeVersions);\r\n this.SetActiveVersionType_On();\r\n } else {\r\n this.Trigger('RECIPE_EDITOR_EDIT_CLOSE');\r\n this.Close();\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n })\r\n });\r\n confirmationDialog.Show();\r\n }\r\n\r\n Update(params: IRecipeEditorTreeParams, recipeVersions: Array<RecipeVersionModel>){\r\n this.SetAvailableRecipeVersions(recipeVersions);\r\n this.LoadRecipeEditorTree(params);\r\n }\r\n\r\n ClickSaveBtn(data, event) {\r\n if (this._newVersionActive()){\r\n\r\n let saveRecipeDataParams: SaveRecipeDataDto = {\r\n ActiveVersionId: this._selectedRecipeVersion().VersionId,\r\n RootEntityId: this._entityId,\r\n RootRecordId: this._recordId,\r\n ControlId: this._controlId\r\n }\r\n\r\n BlockUI.Block({Target: event.currentTarget});\r\n RecipeEditorStore.SaveRecipeData(saveRecipeDataParams)\r\n .then((result: RecipeDataModel) => {\r\n result.RecipeRecord = this.MapRecord(result.RecipeRecord, this._typesProperty);\r\n if (result.RecipeVersions){\r\n let params: IRecipeEditorTreeParams = {\r\n RecordId: null,\r\n RecipeVersions: null,\r\n RecipeDataModel: result\r\n }\r\n this.Update(params, result.RecipeVersions);\r\n this._newVersionActive(false);\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(event.currentTarget);\r\n $(event.currentTarget).blur();\r\n });\r\n }\r\n }\r\n\r\n ReturnToDefaultType() {\r\n if (this._toggleActiveVersionType().Title == 'On'){\r\n this._toggleActiveVersionType(_.find(this._toggleActiveVersionTypes(), (type) => {\r\n type.IsChosen = false;\r\n return type.Title === 'Off'\r\n }));\r\n }\r\n }\r\n\r\n ToggleActiveVersion(){\r\n if (!this._isEditingAllowed || (this._selectedRecipeVersion() && this._selectedRecipeVersion().IsActive)){\r\n return;\r\n }\r\n\r\n if (this._toggleActiveVersionType().Title != 'On'){\r\n this._toggleActiveVersionType(_.find(this._toggleActiveVersionTypes(), (type) => {\r\n type.IsChosen = true;\r\n return type.Title === 'On'\r\n }));\r\n return;\r\n } else if (this._toggleActiveVersionType().Title == 'On'){\r\n this._toggleActiveVersionType(_.find(this._toggleActiveVersionTypes(), (type) => {\r\n type.IsChosen = true;\r\n return type.Title === 'Off'\r\n }));\r\n return;\r\n }\r\n }\r\n\r\n InitToggleActiveVersionMod(){\r\n this._toggleActiveVersionTypes = ko.observableArray([\r\n {Title: 'Off', IsDisabled: false, IsChosen: false},\r\n {Title: 'On', IsDisabled: true, IsChosen: false}\r\n ]);\r\n\r\n this._toggleActiveVersionType = ko.observable(_.last(_.filter(this._toggleActiveVersionTypes(), activeVersionType => activeVersionType.IsDisabled)));\r\n\r\n this._activeVersionToggleClass = ko.computed(() =>{\r\n let toggleClass = (this._toggleActiveVersionType() && !this._toggleActiveVersionType().IsDisabled) && this._toggleActiveVersionType().Title === 'Off' ? TOGGLE_CLASSES.OFF : TOGGLE_CLASSES.ON;\r\n\r\n if (this._selectedRecipeVersion() && !this._selectedRecipeVersion().IsActive){\r\n\r\n if (this._toggleActiveVersionType().Title === 'On') {\r\n this._newVersionActive(true);\r\n } else {\r\n this._newVersionActive(false);\r\n }\r\n } else if (this._toggleActiveVersionType().Title === 'On'){\r\n this._newVersionActive(false);\r\n }\r\n\r\n return toggleClass;\r\n });\r\n }\r\n\r\n OnSelectVersion(version: RecipeVersionModel){\r\n if (version.IsSelected()){\r\n return;\r\n }\r\n\r\n if (this.IsModified()){\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n this.SelectVersion(version);\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.DISCARD_SELECTED, this, () => {\r\n return;\r\n });\r\n confirmationDialog.Show();\r\n } else {\r\n this.SelectVersion(version)\r\n }\r\n }\r\n\r\n SelectVersion(version: RecipeVersionModel) {\r\n _.forEach(this._availableRecipeVersions(), (data: RecipeVersionModel)=>{\r\n if (version.VersionId === data.VersionId){\r\n data.IsSelected(true)\r\n } else {\r\n data.IsSelected(false);\r\n }\r\n })\r\n\r\n let GetRecipeDataByVersionParams: GetRecipeDataByVersionDto ={\r\n VersionId: version.VersionId,\r\n RootEntityId: this._entityId,\r\n RootRecordId: this._recordId,\r\n ControlId: this._controlId\r\n }\r\n RecipeEditorStore.GetRecipeDataByVersion(GetRecipeDataByVersionParams)\r\n .then((result: RecipeDataModel) => {\r\n if (result.RecipeVersions){\r\n result.RecipeRecord = this.MapRecord(result.RecipeRecord, this._typesProperty);\r\n if (version.IsActive){\r\n this._selectedRecipeVersion(version);\r\n this._toggleActiveVersionType(_.find(this._toggleActiveVersionTypes(), (type) => {\r\n type.IsChosen = false;\r\n return type.Title === 'On'\r\n }));\r\n this._newVersionActive(false);\r\n } else {\r\n this.ReturnToDefaultType();\r\n this._selectedRecipeVersion(version);\r\n }\r\n\r\n let params: IRecipeEditorTreeParams = {\r\n RecordId: null,\r\n RecipeVersions: null,\r\n RecipeDataModel: result\r\n }\r\n\r\n this.LoadRecipeEditorTree(params);\r\n this._dropDown.Close();\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n })\r\n }\r\n\r\n private InitRecipeVersionDropdown(el: HTMLElement) {\r\n this._dropDown = new JBoxDropDown({\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n otherOptions: {\r\n addClass: \"recipeVersion-dropdown\",\r\n closeOnClick: 'body',\r\n attach: undefined,\r\n height: 'auto',\r\n maxHeight: 300,\r\n isolateScroll: true,\r\n pointer: \"\",\r\n maxWidth: 400,\r\n onCloseComplete: () => {},\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n }\r\n },\r\n onCreated: () => {\r\n this._dropDown.SetContent({ content: RecipeVersionDropdownTemplate as any });\r\n },\r\n onOpen: () => {}\r\n });\r\n }\r\n\r\n SetAvailableRecipeVersions(response: Array<RecipeVersionModel>){\r\n if (!response.length){\r\n return;\r\n }\r\n this._availableRecipeVersions([]);\r\n this._selectedRecipeVersion(null);\r\n const defaultRecipeVersion = _.find(response, (version: RecipeVersionModel) => version.IsActive);\r\n _.forEach(response, (version: RecipeVersionModel)=>{\r\n this._availableRecipeVersions.push({\r\n VersionId: version.VersionId,\r\n VersionName: version.VersionName,\r\n IsActive: version.IsActive,\r\n IsSelected: ko.observable(version.VersionId === defaultRecipeVersion.VersionId)\r\n })\r\n })\r\n\r\n if (defaultRecipeVersion){\r\n this._selectedRecipeVersion({\r\n VersionId: defaultRecipeVersion.VersionId,\r\n VersionName: defaultRecipeVersion.VersionName,\r\n IsActive: defaultRecipeVersion.IsActive,\r\n IsSelected: ko.observable(true)\r\n })\r\n }\r\n }\r\n\r\n ShowAvailableRecipeVersions(data, event){\r\n let target: HTMLElement,\r\n isRecipeVersionDropdownBox = $(event.target).parents('.recipeVersionDropdownBox').length > 0;\r\n\r\n target = isRecipeVersionDropdownBox ? $(event.target).parents('.recipeVersionDropdownBox')[0] : event.currentTarget;\r\n\r\n if (!this._availableRecipeVersions().length){\r\n this.InitRecipeVersionDropdown(target);\r\n this._dropDown.Open();\r\n } else {\r\n if (this._dropDown) {\r\n this._dropDown.Toggle();\r\n } else {\r\n this.InitRecipeVersionDropdown(target);\r\n this._dropDown.Open();\r\n }\r\n }\r\n }\r\n\r\n private LoadRecipeEditorTree(params: IRecipeEditorTreeParams) {\r\n\r\n if (!this._recipeEditorTree()) {\r\n return P.resolve(null);\r\n }\r\n\r\n let getNewDataParams: IGetNewDataParams = {\r\n recipeDataModel: params.RecipeDataModel,\r\n recipeSelectedVersion: this._selectedRecipeVersion()\r\n }\r\n\r\n if (params.RecipeDataModel){\r\n return this._recipeEditorTree().GetNewData(getNewDataParams);\r\n } else {\r\n return this._recipeEditorTree().LoadNewData(params.RecordId, params.RecipeVersions);\r\n }\r\n }\r\n\r\n get ActiveVersionTooltipText(): string {\r\n return this._selectedRecipeVersion() && this._selectedRecipeVersion().IsActive ? this._labels.CANNOT_MAKE_AN_ACTIVE_VERSION_INACTIVE : '';\r\n }\r\n\r\n get RecipeVersionActive(): boolean {\r\n return !this._isEditingAllowed || (this._selectedRecipeVersion() && this._selectedRecipeVersion().IsActive);\r\n }\r\n\r\n IsModified(): boolean {\r\n return this._newVersionActive();\r\n }\r\n\r\n IsAddingAllowed(): boolean {\r\n return this._isAddingAllowed;\r\n }\r\n\r\n IsCopyingAllowed(): boolean {\r\n return this._isAddingAllowed && this._isEditingAllowed;\r\n }\r\n\r\n IsSavingAllowed(): boolean {\r\n return this._isEditingAllowed && this.IsModified();\r\n }\r\n\r\n IsDeletingAllowed(): boolean {\r\n return this._isDeletingAllowed;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"recipeEditorScreen\\\"> <div class=\\\"screen consult-screen screenForm\\\"> <!-- <b class=\\\"spacerBackground\\\"></b>--> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix consult-screen-container\\\"> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"action-bar-wrapper\\\"> <div class=\\\"bar-left subforms-wrapper\\\"> <div class=\\\"actionBar-Controls\\\"> <div class=\\\"versionsBox\\\"> <a data-bind=\\\"click: AddVersion, css: { disabled: !IsAddingAllowed() }\\\" href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp subFormControl addButton\\\" id=\\\"addButton\\\"> <i class=\\\"fa fa-plus-circle\\\"></i><span data-bind=\\\"text: _labels.ADD\\\"></span> </a> <div class=\\\"version\\\" data-bind=\\\"text: 'Version'\\\"></div> <div class=\\\"recipeVersionDropdownBox\\\"> <!-- ko with: _selectedRecipeVersion --> <div class=\\\"form-control textarea-control selectRecipeVersion\\\" data-bind=\\\"text: VersionName\\\"></div> <!-- /ko --> <span class=\\\"btn default recipeVersionDropdownBtn jBox-content-target\\\" data-bind=\\\"click: ShowAvailableRecipeVersions\\\"> <i class=\\\"fa fa-caret-down\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <div data-bind=\\\"click: ToggleActiveVersion, css: {'recipeVersion_IsActive': RecipeVersionActive}, tooltip: {content: ActiveVersionTooltipText}\\\" class=\\\"custom-select-j toggleBox allRootBox\\\"> <a data-bind=\\\"\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only u-padding-right-medium toggleActiveVersion-btn\\\"> <i data-bind=\\\"class: _activeVersionToggleClass\\\" class=\\\"fa\\\"></i> </a> <label data-bind=\\\"text: 'Active'\\\" class=\\\"control-label\\\"/> </div> <button data-bind=\\\"click: CopyVersion,\\r\\n enableAttr: IsCopyingAllowed()\\\" type=\\\"button\\\" class=\\\"btn blue-dark subFormControl copyBtn\\\"> <i class=\\\"fa fa-copy\\\"></i><span><!-- ko text: _labels.COPY --><!-- /ko --></span> </button> <a data-bind=\\\"click: ClickSaveBtn, css: { 'disabled': !IsSavingAllowed() }\\\" tabindex=\\\"-1\\\" class=\\\"btn green subFormControl saveButton\\\"> <i class=\\\"fa fa-save\\\"></i><span><!-- ko text: _labels.SAVE --><!-- /ko --></span> </a> </div> </div> </div> <div class=\\\"bar-right\\\"> <div class=\\\"actionBar-Controls\\\"> <a data-bind=\\\"click: DeleteVersion, css: { disabled: !IsDeletingAllowed() }\\\" tabindex=\\\"-1\\\" class=\\\"btn red delete-button subFormControl\\\"> <i class=\\\"fa fa-trash\\\"></i><span data-bind=\\\"text: _labels.DELETE\\\"></span> </a> </div> <div class=\\\"action-bar-right lifestatus-bar-wrapper\\\"> <span class=\\\"text-left additional-icon custom-color-option fa-3x fa fa-indent\\\"></span> </div> </div> </div> </div> </form> </div> <div class=\\\"clearfix middle-block\\\"> <!-- ko with: _recipeEditorTree() --> <!-- ko template: {name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData)} --> <!-- /ko --> <!-- /ko --> <div class=\\\"content-block transition\\\"> <div class=\\\"row form-wrapper\\\"> <div class=\\\"mainSubForm recipeEditorScreen_right_form form-wrapper__main-sub-form fast-transition wrapped-container\\\"> </div> </div> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {NOTIFICATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {CreateRecipeVersionDto} from \"./Models/Dto/CreateRecipeVersionDto\";\r\nimport {RecipeEditorStore} from \"./Stores/RecipeEditorStore\";\r\nimport {IRecipeEditorEditParams, RecipeEditorEdit} from \"./RecipeEditorEdit\";\r\nimport {GetRecipeDataDto} from \"./Models/Dto/GetRecipeDataDto\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {CopyRecipeVersionDto} from \"./Models/Dto/CopyRecipeVersionDto\";\r\nimport {ITypePropertyModel} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {RecipeDataModel} from \"./Models/RecipeDataModel\";\r\n\r\nimport RecipeCreate from \"Core/Controls/RecipeEditor/Templates/RecipeCreate.html\";\r\nko.templates[\"Core/Controls/RecipeEditor/Templates/RecipeCreate\"] = RecipeCreate;\r\n\r\nexport interface ICopyRecipeVersion {\r\n NewVersionName: string;\r\n CopiedVersionId: number;\r\n}\r\n\r\nexport interface IRecipeEditorCreateParams {\r\n RecordId: number;\r\n EntityId: number;\r\n ControlId: number;\r\n IsRecipeCreated: boolean;\r\n IsCreateRecipeVersion: boolean;\r\n IsAddingAllowed: boolean;\r\n IsEditingAllowed: boolean;\r\n IsDeletingAllowed: boolean;\r\n ICopyRecipeVersion: ICopyRecipeVersion;\r\n TypesProperty?: ITypePropertyModel[];\r\n}\r\n\r\nexport class RecipeEditorCreate extends Event {\r\n _labels = LABELS;\r\n private _modal: Modal;\r\n private _isRecipeCreated: KnockoutObservable<boolean>\r\n private _value: KnockoutObservable<string>;\r\n private _recordId: number;\r\n private _entityId: number;\r\n private _controlId: number;\r\n private _recipeEditorEdit: KnockoutObservable<RecipeEditorEdit>\r\n private _isCreateRecipeVersion: boolean;\r\n private _isAddingAllowed: boolean;\r\n private _isEditingAllowed: boolean;\r\n private _isDeletingAllowed: boolean;\r\n private _copyRecipeVersion: ICopyRecipeVersion;\r\n private _typesProperty: ITypePropertyModel[];\r\n\r\n constructor(params: IRecipeEditorCreateParams) {\r\n super();\r\n this._copyRecipeVersion = params.ICopyRecipeVersion;\r\n this._isRecipeCreated = ko.observable(null);\r\n this._value = ko.observable(this._copyRecipeVersion ? this._copyRecipeVersion.NewVersionName: '');\r\n this._recordId = params.RecordId;\r\n this._entityId = params.EntityId;\r\n this._controlId = params.ControlId;\r\n this._recipeEditorEdit = ko.observable(null);\r\n this._isCreateRecipeVersion = params.IsCreateRecipeVersion;\r\n this._isAddingAllowed = params.IsAddingAllowed;\r\n this._isEditingAllowed = params.IsEditingAllowed;\r\n this._isDeletingAllowed = params.IsDeletingAllowed;\r\n this._typesProperty = params.TypesProperty ? params.TypesProperty : null;\r\n this.Init(params.IsRecipeCreated);\r\n this.AddEvent(\"RECIPE_EDITOR_CREATE\");\r\n this.AddEvent(\"RECIPE_EDITOR_VERSION\");\r\n this.AddEvent(\"COPY_RECIPE_EDITOR_VERSION\");\r\n this.AddEvent(\"RECIPE_EDITOR_EDIT_CLOSE\");\r\n }\r\n\r\n Init(isRecipeCreated: boolean) {\r\n this._isRecipeCreated(isRecipeCreated);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Controls/RecipeEditor/Templates/RecipeCreate';\r\n }\r\n\r\n AfterRender(el: HTMLElement): void{\r\n\r\n }\r\n\r\n ShowInModal(){\r\n let self = this;\r\n this._modal = new Modal({\r\n addClass: 'recipeEditorCreateModal',\r\n width: '400px',\r\n height: '167px',\r\n closeOnEsc: false,\r\n onOpen: function () {\r\n $(this.closeButton[0]).off('click');\r\n this.closeButton[0].addEventListener('click', self.Close.bind(self, false));\r\n }\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n }\r\n\r\n Close(){\r\n if (this._modal) {\r\n this._modal.Close();\r\n this.Off('RECIPE_EDITOR_CREATE');\r\n }\r\n }\r\n\r\n CreateClick(data, event){\r\n if (this._value().length >= 4){\r\n BlockUI.Block({Target: event.currentTarget});\r\n if (this._copyRecipeVersion){\r\n let copyRecipeParams: CopyRecipeVersionDto = {\r\n NewVersionName: this._value(),\r\n CopiedVersionId: this._copyRecipeVersion.CopiedVersionId,\r\n RootRecordId: this._recordId,\r\n RootEntityId: this._entityId,\r\n ControlId: this._controlId\r\n }\r\n RecipeEditorStore.CopyRecipeVersion(copyRecipeParams)\r\n .always(() => {\r\n BlockUI.Unblock(event.currentTarget);\r\n })\r\n .then((result:RecipeDataModel) => {\r\n this.Trigger('COPY_RECIPE_EDITOR_VERSION', result);\r\n this.Close();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n })\r\n } else {\r\n let createRecipeParams: CreateRecipeVersionDto = {\r\n VersionName: this._value(),\r\n RootRecordId: this._recordId,\r\n RootEntityId: this._entityId,\r\n ControlId: this._controlId\r\n }\r\n\r\n RecipeEditorStore.CreateRecipeVersion(createRecipeParams)\r\n .always(() => {\r\n BlockUI.Unblock(event.currentTarget);\r\n })\r\n .then((result: RecipeDataModel) => {\r\n let params: IRecipeEditorEditParams = {\r\n EntityId: this._entityId,\r\n RecordId: result.RecipeRecord.Id,\r\n ControlId: this._controlId,\r\n IsAddingAllowed: this._isAddingAllowed,\r\n IsEditingAllowed: this._isEditingAllowed,\r\n IsDeletingAllowed: this._isDeletingAllowed,\r\n TypesProperty: this._typesProperty\r\n }\r\n if (!this._isCreateRecipeVersion){\r\n this._recipeEditorEdit(new RecipeEditorEdit(params));\r\n this._recipeEditorEdit().On('RECIPE_EDITOR_EDIT_CLOSE', this, (handler)=> {\r\n this.Trigger('RECIPE_EDITOR_EDIT_CLOSE');\r\n })\r\n this.Trigger('RECIPE_EDITOR_CREATE');\r\n } else if (this._isCreateRecipeVersion){\r\n this.Trigger('RECIPE_EDITOR_VERSION', result);\r\n }\r\n this.Close();\r\n\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n })\r\n }\r\n } else {\r\n new Notifier().Failed('Minimum length of this field is 4');\r\n }\r\n }\r\n\r\n CancelClick(){\r\n this.Close();\r\n }\r\n}","// Module\nvar code = \"<!--ko ifnot: _isRecipeCreated()--> <div class=\\\"created-new-table box-shadow-wrapper\\\"> <div class=\\\"form-group form-standart-control recipe-input-container\\\" data-control-position=\\\"top\\\"> <label> <span data-bind=\\\"text: _labels.RECIPE_NAME\\\"></span> </label> <input type=\\\"text\\\" class=\\\"form-control recipe-input\\\" data-bind=\\\"textInput: _value\\\"> </div> <div class=\\\"btn-wrapper recipeCreated_buttonsBox\\\"> <button type=\\\"button\\\" data-bind=\\\"click: CreateClick\\\" class=\\\"btn green btn-table-create\\\"><!--ko text: _labels.CREATE--><!--/ko--></button> <button type=\\\"button\\\" data-bind=\\\"click: CancelClick\\\" class=\\\"btn default btn-table-close\\\"><!--ko text: _labels.CANCEL--><!--/ko--></button> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {IRecipeEditorCreateParams, RecipeEditorCreate} from \"Core/Controls/RecipeEditor/RecipeEditorCreate\";\r\nimport {IRecipeEditorEditParams, IRecipeEditorTreeParams, RecipeEditorEdit} from \"./RecipeEditorEdit\";\r\nimport {GetRecipeDataDto} from \"./Models/Dto/GetRecipeDataDto\";\r\nimport {CheckIfRecipeIsCreatedDto} from \"./Models/Dto/CheckIfRecipeIsCreatedDto\";\r\n\r\nimport {RecipeEditorStore} from \"./Stores/RecipeEditorStore\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\nimport RecipeEditorConfig from 'Core/Controls/RecipeEditor/Config/recipe-editor-config.json';\r\n\r\nimport ViewTemplate from \"Core/Controls/RecipeEditor/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/RecipeEditor/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/RecipeEditor/Templates/Design.html\";\r\nimport EditTemplate from \"Core/Controls/RecipeEditor/Templates/Edit.html\";\r\nimport HelpViewTemplate from \"Core/Controls/RecipeEditor/Templates/HelpView.html\";\r\nimport {ITypePropertyModel} from \"../../GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\nimport { PROPERTIES } from './Constants';\r\n\r\nko.templates['Core/Controls/RecipeEditor/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/RecipeEditor/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/RecipeEditor/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/RecipeEditor/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/RecipeEditor/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport class RecipeEditor extends BaseControl {\r\n _labels = LABELS;\r\n private _iControlParams: IControlParam;\r\n private _isRecipeCreated: KnockoutObservable<boolean>;\r\n private _recipeEditorCreate: KnockoutObservable<RecipeEditorCreate>;\r\n private _recipeEditorEdit: KnockoutObservable<RecipeEditorEdit>;\r\n private _typesProperty: ITypePropertyModel[];\r\n\r\n private _isAddingAllowed: KnockoutObservable<boolean>;\r\n private _isEditingAllowed: KnockoutObservable<boolean>;\r\n private _isDeletingAllowed: KnockoutObservable<boolean>;\r\n private _isButtonEnabled: KnockoutComputed<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, RecipeEditorConfig);\r\n\r\n this._iControlParams = params;\r\n this._isRecipeCreated = ko.observable(null);\r\n this._recipeEditorCreate = ko.observable(null);\r\n this._recipeEditorEdit = ko.observable(null);\r\n\r\n this._isAddingAllowed = ko.observable(false);\r\n this._isEditingAllowed = ko.observable(false);\r\n this._isDeletingAllowed = ko.observable(false);\r\n this._isButtonEnabled = ko.computed(() => this._isRecipeCreated() ? this._isEditingAllowed() : this._isAddingAllowed());\r\n\r\n this.ApplyProperties();\r\n }\r\n\r\n CheckIfRecipeIsCreated(params: CheckIfRecipeIsCreatedDto) {\r\n RecipeEditorStore.CheckIfRecipeIsCreated(params)\r\n .then((result: boolean) => {\r\n this._isRecipeCreated(result);\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n });\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.Data && value.Data.Rights && value.Data.Rights.IsRecordSecurityOk) {\r\n this._isAddingAllowed(value.Data.Rights.IsAddingRecordAllowed);\r\n this._isEditingAllowed(value.Data.Rights.IsEditingAllowed);\r\n this._isDeletingAllowed(value.Data.Rights.IsDeletingAllowed);\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n\r\n const entityId = this.GetForm() && this.GetForm().GetScreen().GetEntityId();\r\n const recordId = this.GetForm() && this.GetForm().GetScreen().GetRecordId();\r\n\r\n if ( (this._renderMode() === RenderModes.View) && (entityId && recordId) ) {\r\n this.CheckIfRecipeIsCreated({\r\n RootEntityId: entityId,\r\n RootRecordId: recordId\r\n });\r\n }\r\n }\r\n\r\n ApplyProperties() {\r\n this._typesProperty = this.GeneralProperties.GetPropertyValue(PROPERTIES.TYPES);\r\n }\r\n\r\n Click(){\r\n if (this._renderMode() === RenderModes.View){\r\n if (this._isRecipeCreated()){\r\n this.Edit();\r\n } else {\r\n this.Create();\r\n }\r\n }\r\n }\r\n\r\n Edit(){\r\n let params: IRecipeEditorEditParams = {\r\n EntityId: this.GetForm().GetScreen().GetEntityId(),\r\n RecordId: this.GetForm().GetScreen().GetRecordId(),\r\n ControlId: this.GetControlId(),\r\n IsAddingAllowed: this._isAddingAllowed(),\r\n IsEditingAllowed: this._isEditingAllowed(),\r\n IsDeletingAllowed: this._isDeletingAllowed(),\r\n TypesProperty: this._typesProperty\r\n }\r\n\r\n this._recipeEditorEdit(new RecipeEditorEdit(params));\r\n this._recipeEditorEdit().On('RECIPE_EDITOR_EDIT_CLOSE', this, (handler)=> {\r\n this._isRecipeCreated(false);\r\n })\r\n }\r\n\r\n Create(){\r\n let recipeEditorCreateParams: IRecipeEditorCreateParams = {\r\n RecordId: this.GetForm().GetScreen().GetRecordId(),\r\n EntityId: this.GetForm().GetScreen().GetEntityId(),\r\n ControlId: this.GetControlId(),\r\n IsRecipeCreated: this._isRecipeCreated(),\r\n IsCreateRecipeVersion: null,\r\n IsAddingAllowed: this._isAddingAllowed(),\r\n IsEditingAllowed: this._isEditingAllowed(),\r\n IsDeletingAllowed: this._isDeletingAllowed(),\r\n ICopyRecipeVersion: null,\r\n TypesProperty: this._typesProperty\r\n }\r\n\r\n this._recipeEditorCreate(new RecipeEditorCreate(recipeEditorCreateParams));\r\n this._recipeEditorCreate().ShowInModal();\r\n this._recipeEditorCreate().On('RECIPE_EDITOR_CREATE', this, (handler)=>{\r\n this._isRecipeCreated(true);\r\n });\r\n this._recipeEditorCreate().On('RECIPE_EDITOR_EDIT_CLOSE', this, (handler)=>{\r\n this._isRecipeCreated(false);\r\n })\r\n }\r\n}","// Module\nvar code = \"<a data-bind=\\\"click: Click, css: { disabled: !_isButtonEnabled() }\\\" class=\\\"btn blue-dark subFormControl list-screen-button\\\"> <!--ko if: _isRecipeCreated() --> <i class=\\\"fa fa-edit\\\"></i> <span><!-- ko text: _labels.EDIT --><!-- /ko --></span> <!--/ko--> <!--ko ifnot: _isRecipeCreated() --> <i class=\\\"fa fa-plus-circle\\\"></i> <span><!-- ko text: _labels.ADD --><!-- /ko --></span> <!--/ko--> <i class=\\\"fa fa-indent\\\" aria-hidden=\\\"true\\\"></i> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"recipeEditor-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-indent\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn subFormControl recipeEditorBtn\\\" data-bind=\\\"click: Click\\\"> <span class=\\\"\\\"> <i class=\\\"fa fa-indent\\\"></i> <!--ko text: Label--><!--/ko--> </span> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"edit Template\";\n// Exports\nexport default code;","// Module\nvar code = \"Help Template\";\n// Exports\nexport default code;","export const PROPERTIES = {\r\n LOCKED_LINK_ENTITY: 'LockedLinkEntity',\r\n TYPES: 'Types'\r\n};","import {P} from \"Core/Common/Promise\";\r\nimport { Request, IRequestOptions } from \"Core/Common/Request\";\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\n\r\nexport class RecordSecurityStore {\r\n\tstatic GetRecordSecurityScreen(securityProfileId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\t\tproxy: {\r\n\t\t\t\t\turl: '/api/RecordSecurityApi/GetRecordSecurityScreen',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\ttype: 'GET'\r\n\t\t\t\t},\r\n\t\t\t\tparams: { id: securityProfileId }\r\n\t\t}).then(result => deferredResult.resolve(result));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic ResetSecurity(securityProfileId: number): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/RecordSecurityApi/ResetSecurity\",\r\n\t\t\t\ttype: \"GET\",\r\n\t\t\t\tdataType: \"json\"\r\n\t\t\t}, params: { id: securityProfileId }\r\n\t\t}).then(result => {\r\n\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t} else {\r\n\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t}\r\n\t\t})\r\n\t\t\t.fail(() => deferredResult.reject({ message: \"Error reseting security\" }))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic ReserveGroup(profileId: number, groupId: number): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/RecordSecurityApi/ReserveGroup\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: { ProfileId: profileId, GroupId: groupId }\r\n\t\t}).then(result => {\r\n\t\t\t\tdeferredResult.resolve(null);\r\n\t\t})\r\n\t\t.fail((data) => {\r\n\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t})\r\n\t\t.always(() => BlockUI.Unblock());\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<input data-bind=\\\"click: $data.ShowSearchHelp.bind($data), hasFocus: _hasFocus, enterKey: EnterKey, textInput: _value, attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" tabindex=\\\"1\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl\\\"> <a data-bind=\\\"click: $data.Click.bind($data)\\\" tabindex=\\\"-1\\\" class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {SubForm} from 'Core/Screens/Forms/SubForm/SubForm'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {QueryConditionGroupModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {RenderModes} from 'Core/Constant';\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\nimport SearchConfig from 'Core/Controls/Search/Configs/text-search-term-config.json';\r\n\r\nimport ViewTemplate from \"Core/Controls/Search/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/Search/Templates/HelpView.html\";\r\nimport DesignTemplate from \"Core/Controls/Search/Templates/Design.html\";\r\nimport ToolBarTemplate from \"Core/Controls/Search/Templates/ToolBar.html\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\n\r\nko.templates[\"Core/Controls/Search/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/Search/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/Search/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/Search/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/Search/Templates/ToolBar\"] = ToolBarTemplate;\r\n\r\nexport class Search extends BaseControl {\r\n\tprivate _value: KnockoutObservable<string>;\r\n\tprivate _hasFocus: KnockoutObservable<boolean>;\r\n\tprivate _conditions: QueryConditionGroupModel;\r\n\tprivate _alternativeEntities: number[];\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, SearchConfig);\r\n\t\tthis._value = ko.observable('');\r\n\t\tthis._hasFocus = ko.observable(false);\r\n\t\tthis._conditions = null;\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t\tlet isMobile = MobileChecker.IsMobile();\r\n\t\tthis._hasFocus(!isMobile);\r\n\t}\r\n\tprivate ShowSearch() {\r\n\t\tvar screen = this._form.GetScreen();\r\n\t\tif (screen) {\r\n\t\t\tscreen.Trigger('SEARCH_RECORD');\r\n\t\t}\r\n\t}\r\n\r\n\tShowSearchHelp() {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t}\r\n\t}\r\n\r\n\tEnterKey() {\r\n\t\tthis.ShowSearch();\r\n\t}\r\n\r\n\tClick() {\r\n\t\tif (this._renderMode() !== RenderModes.Design && this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.ShowSearch();\r\n\t}\r\n\r\n\tSetSearchTerm(value) {\r\n\t\tthis._value(value);\r\n\t}\r\n\r\n\tGetValue(): string {\r\n\t\treturn this._value();\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\t//Condition\r\n\t\t\tif (this.Properties.Condition) {\r\n\t\t\t\t_.each(this.Properties.Condition.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.QueryCondition) {\r\n\t\t\t\t\t\tlet jsonObj = JSON.parse(property.QueryCondition);\r\n\t\t\t\t\t\tlet conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n\t\t\t\t\t\tthis._conditions = conditions;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t//AlternativeEntities\r\n\t\t\tif (this.Properties.AlternativeEntities) {\r\n\t\t\t\t_.each(this.Properties.AlternativeEntities.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.AlternativeEntities) {\r\n\t\t\t\t\t\tthis._alternativeEntities = property.AlternativeEntities;\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\tHasConditions(): boolean {\r\n\t\tif (this._conditions) {\r\n\t\t\treturn this._conditions.ConditionGroups.length > 0 || this._conditions.Items.length > 0;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"search-control\\\"> <input data-bind=\\\"attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" disabled=\\\"disabled\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl\\\"> <a data-bind=\\\"click: $data.Click.bind($data)\\\" tabindex=\\\"-1\\\" class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<input data-bind=\\\"hasFocus: _hasFocus, attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" type=\\\"text\\\" class=\\\"search-input subFormControl\\\"> <a class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"text-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-search\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","import { Request, IRequestOptions } from \"Core/Common/Request\";\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { SelectUserModel } from \"Core/Controls/SelectUser/Models/SelectUserModel\";\r\nimport { SelectUserByBusinessRoleModel } from \"Core/Controls/SelectUser/Models/SelectUserByBusinessRoleModel\";\r\n\r\nexport class SelectUserStore {\r\n\tstatic GetSelectUserModel(entityId: number): P.Promise<SelectUserModel> {\r\n\t\tconst requestOptions: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/ControlsApi/GetSelectUserList\",\r\n\t\t\t\ttype: \"GET\",\r\n\t\t\t\tdataType: \"json\"\r\n\t\t\t},params: {\r\n\t\t\t\tid: entityId\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst deffered = P.defer<SelectUserModel>();\r\n\r\n\t\tRequest.Send(requestOptions)\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (response.IsSuccessfull) {\r\n\t\t\t\t\tconst model = response.ResultObject;\r\n\t\t\t\t\tdeffered.resolve(model);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeffered.reject({ message: response.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail(() => deffered.reject({ message: \"Error getting data\" }));\r\n\t\treturn deffered.promise();\r\n\t}\r\n\r\n\tstatic GetSelectUsersByBusinessRole(entityId: number, roleId: number): P.Promise<SelectUserByBusinessRoleModel> {\r\n\t\tconst requestOptions: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/ControlsApi/GetSelectUsersByBusinessRole\",\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\tdataType: \"json\"\r\n\t\t\t},params: {\r\n\t\t\t\tEntityId: entityId,\r\n\t\t\t\tRoleId: roleId\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst deferred = P.defer<SelectUserByBusinessRoleModel>();\r\n\r\n\t\tRequest.Send(requestOptions)\r\n\t\t\t.then(selectUserByBusinessRoleModel => {\r\n\t\t\t\tdeferred.resolve(selectUserByBusinessRoleModel);\r\n\t\t\t}).fail(err => {\r\n\t\t\t\tdeferred.reject(this.GetResponseError(err, 'Error getting data'));\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tprivate static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n\t\tif (err.status === 400) {\r\n\t\t\treturn {message: JSON.parse(err.message).Message};\r\n\t\t}\r\n\r\n\t\treturn {message: generalError};\r\n\t}\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nexport interface IAssignSpimCopyClassRequestModel {\r\n ClassFeaturesTableId: number;\r\n ProductFeaturesTableId: number;\r\n ProductId: number;\r\n ClassId: number;\r\n}\r\n\r\nexport interface IUpdateVersionRequestModel {\r\n ClassFeaturesTableId: number;\r\n ProductFeaturesTableId: number;\r\n ProductId: number;\r\n ClassId: number;\r\n}\r\n\r\nexport class SpimCopyStore {\r\n static GetClass(params: {ClassFeaturesTableId: number, ProductsEntityId: number, ProductId: number}): P.Promise<any> {\r\n const deferred = P.defer<any>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.CONTROLS.SPIM_COPY.GET_CLASS,\r\n dataType: \"json\",\r\n type: \"GET\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(spimClass => deferred.resolve(spimClass))\r\n .fail(err => deferred.reject(this.GetResponseError(err, \"Error getting class\")));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static AssignClass(params: IAssignSpimCopyClassRequestModel): P.Promise<void> {\r\n const deferred = P.defer<void>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.CONTROLS.SPIM_COPY.ASSIGN_CLASS,\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, \"Error assigning class\")));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static UpdateVersion(params: IUpdateVersionRequestModel): P.Promise<void> {\r\n const deferred = P.defer<void>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.CONTROLS.SPIM_COPY.UPDATE_VERSION,\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, \"Error updating version\")));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError, status:err.status};\r\n }\r\n\r\n}","import * as ko from 'knockout';\r\n\r\nexport class SPIMCopyControlModel {\r\n IsDefaultState: KnockoutObservable<boolean>;\r\n UpdateAvailable: KnockoutObservable<boolean>;\r\n EtimLabel: KnockoutObservable<string>;\r\n CurrentVersionNumber: KnockoutObservable<number>;\r\n\r\n constructor() {\r\n this.IsDefaultState = ko.observable(false);\r\n this.UpdateAvailable = ko.observable(false);\r\n this.EtimLabel = ko.observable('');\r\n this.CurrentVersionNumber = ko.observable(null);\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\n//Constants\r\nimport {FIELD_TYPES, RenderModes, TABLE_TYPES} from \"Core/Constant\";\r\n\r\n//Controls\r\nimport {ComplexControl} from \"Core/Controls/ComplexControl/ComplexControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {RequiredFieldModel} from \"Core/Controls/ComplexControl/Models/RequiredFieldModel\";\r\nimport {CONFIRMATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {SpimCopyStore} from \"Core/Controls/SpimCopy/Stores/SPIMCopyStore\";\r\nimport {IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {Grid} from \"Core/Controls/Grid/Grid\";\r\nimport {SearchScreen} from \"Core/Screens/SearchScreen/SearchScreen\";\r\n\r\nimport ViewTemplate from \"Core/Controls/SpimCopy/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/SpimCopy/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/SpimCopy/Templates/ToolBar.html\";\r\n\r\nimport { SPIMCopyControlModel } from 'Core/Controls/SpimCopy/Models/SPIMCopyControlModel';\r\nimport {\r\n ConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nko.templates['Core/Controls/SPIMCopy/Templates/Design'] = ComplexControl.designTemplate;\r\nko.templates['Core/Controls/SPIMCopy/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/SPIMCopy/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/SPIMCopy/Templates/View'] = ViewTemplate;\r\n\r\nexport class SPIMCopy extends ComplexControl {\r\n protected _labels = LABELS;\r\n private _selectedClassId: number;\r\n private _viewModel: SPIMCopyControlModel;\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._selectedClassId = null;\r\n this._viewModel = new SPIMCopyControlModel();\r\n\r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n Init() {\r\n this._requiredFields([\r\n new RequiredFieldModel('F_FEATURE', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_UNIT', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_FEATURETYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null)\r\n ]);\r\n\r\n this.InitRequiredFields();\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (this._renderMode() !== RenderModes.ToolBar && this._renderMode() !== RenderModes.Design) {\r\n if(this._isRendered()) {\r\n this.LoadClass();\r\n } else {\r\n this._isRendered.subscribe(() => this.LoadClass());\r\n }\r\n }\r\n }\r\n\r\n FillViewModel(data) {\r\n this._viewModel.EtimLabel(`${data.EtimCode} - ${data.Name}`);\r\n this._viewModel.CurrentVersionNumber(data.CurentVersionNumber);\r\n this._viewModel.UpdateAvailable(data.NewVersionNumber);\r\n const grid = this._parentControl as Grid;\r\n grid.LoadData();\r\n }\r\n\r\n LoadClass() {\r\n BlockUI.Block();\r\n const params = {\r\n ClassFeaturesTableId: this.FieldModel.EntityId,\r\n ProductsEntityId: this.GetForm().GetScreen().GetEntityId(),\r\n ProductId: this.GetForm().GetScreen().GetRecordId()\r\n };\r\n SpimCopyStore.GetClass(params).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(data => {\r\n this._viewModel.IsDefaultState(false);\r\n this._selectedClassId = data.Id;\r\n this.FillViewModel(data);\r\n })\r\n .fail(error => {\r\n this._viewModel.IsDefaultState(true);\r\n if(error.status !== 404) {\r\n new Notifier().Failed(error.message);\r\n }\r\n });\r\n }\r\n\r\n AssignClass(recordId) {\r\n BlockUI.Block();\r\n const params = {\r\n ClassFeaturesTableId: this.FieldModel.EntityId,\r\n ProductFeaturesTableId: this._parentControl.GetFieldModel().EntityId,\r\n ProductId: this.GetForm().GetScreen().GetRecordId(),\r\n ClassId: recordId\r\n };\r\n SpimCopyStore.AssignClass(params).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n this.LoadClass();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n private SendUpdateVersionRequest() {\r\n BlockUI.Block();\r\n const params = {\r\n ClassFeaturesTableId: this.FieldModel.EntityId,\r\n ProductFeaturesTableId: this._parentControl.GetFieldModel().EntityId,\r\n ProductId: this.GetForm().GetScreen().GetRecordId(),\r\n ClassId: this._selectedClassId\r\n };\r\n SpimCopyStore.UpdateVersion(params).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n this.LoadClass();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n UpdateVersion() {\r\n if(this._viewModel.UpdateAvailable()) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ARE_SURE_TO_UPDATE_VERSION,\r\n Type: ConfirmationTypes.Question\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n this.SendUpdateVersionRequest();\r\n });\r\n confirmationDialog.Show();\r\n }\r\n }\r\n\r\n Search(): void {\r\n const searchScreen = new SearchScreen({\r\n EntityName: 'SYS_THESAURI',\r\n SearchTerm: '',\r\n CloseAfterSelectingRecord: false\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs) => {\r\n if(eventArgs.data.TypeName !== 'Class') {\r\n new Notifier().Warning(this._labels.CLASS_RECORD_SHOULD_BE_SELECTED);\r\n return;\r\n }\r\n var recordId = eventArgs.data.RecordId;\r\n if(this._selectedClassId) {\r\n this._selectedClassId = recordId;\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ARE_SURE_TO_CHANGE_CLASS,\r\n Type: ConfirmationTypes.Question\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n searchScreen.Close();\r\n this.AssignClass(recordId);\r\n });\r\n confirmationDialog.Show();\r\n } else {\r\n this._selectedClassId = recordId;\r\n searchScreen.Close();\r\n this.AssignClass(recordId);\r\n }\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-clipboard\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"spimCopy-wrapper\\\"> <span class=\\\"not-selected\\\"><!-- ko text: $parent._labels.CLASS_NOT_SELECTED --><!-- /ko --></span> <a data-bind=\\\"click: $parent.Search.bind($parent,true)\\\" href=\\\"#\\\" class=\\\"btn blue-sharp\\\"> <!-- ko text: $parent._labels.SEARCH --><!-- /ko --> </a> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko with: _viewModel--> <div class=\\\"spimCopy-wrapper\\\"> <!-- ko if: IsDefaultState --> <span class=\\\"not-selected\\\"><!-- ko text: $parent._labels.CLASS_NOT_SELECTED --><!-- /ko --></span> <a data-bind=\\\"click: $parent.Search.bind($parent,true)\\\" href=\\\"#\\\" class=\\\"btn blue-sharp\\\"> <!-- ko text: $parent._labels.SEARCH --><!-- /ko --> </a> <!-- /ko --> <!-- ko ifnot: IsDefaultState --> <div class=\\\"class-wrapper\\\"> <span data-bind=\\\"text: EtimLabel\\\"></span> </div> <a class=\\\"currentVersionNumber btn\\\" data-bind=\\\"text: CurrentVersionNumber, click: $parent.UpdateVersion.bind($parent),\\r\\n css: {'red': UpdateAvailable, 'green-soft': !UpdateAvailable()},\\r\\n attr: {disabled: !UpdateAvailable}\\\" href=\\\"#\\\"> </a> <a data-bind=\\\"click: $parent.Search.bind($parent)\\\" href=\\\"#\\\" class=\\\"btn orange change margin-l-5px\\\"> <!-- ko text: $parent._labels.CHANGE --><!-- /ko --> </a> <!-- /ko --> </div> <!--/ko-->\";\n// Exports\nexport default code;","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class SpreadsheetFieldDescriptorDto {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n @deserialize\r\n TypeId: number;\r\n\r\n @deserialize\r\n Type: string;\r\n\r\n @deserialize\r\n ValTableName?: string;\r\n\r\n @deserialize\r\n ValFieldName?: string;\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class SpreadsheetCellPositionDto {\r\n @deserialize\r\n Column: string;\r\n\r\n @deserialize\r\n Row: number;\r\n}\r\n","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport {SpreadsheetCellPositionDto} from './SpreadsheetCellPositionDto';\r\nimport {SpreadsheetDimensionDirections} from '../../Enums/SpreadsheetDimensionDirections';\r\nimport {SpreadsheetFieldDescriptorDto} from './SpreadsheetFieldDescriptorDto';\r\n\r\nexport class SpreadsheetDimensionDescriptorDto {\r\n @deserialize\r\n Number: number;\r\n\r\n @deserializeAs(SpreadsheetCellPositionDto)\r\n StartPosition: SpreadsheetCellPositionDto;\r\n\r\n @deserialize\r\n Direction: SpreadsheetDimensionDirections;\r\n\r\n @deserializeAs(SpreadsheetFieldDescriptorDto)\r\n Field: SpreadsheetFieldDescriptorDto;\r\n}","import {deserialize, deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport {SpreadsheetFieldDescriptorDto} from './SpreadsheetFieldDescriptorDto';\r\nimport {SpreadsheetCellPositionDto} from './SpreadsheetCellPositionDto';\r\nimport {SpreadsheetDimensionDescriptorDto} from './SpreadsheetDimensionDescriptorDto';\r\n\r\nexport class SpreadsheetDescriptorDto {\r\n @deserializeAs(SpreadsheetFieldDescriptorDto)\r\n ValueField: SpreadsheetFieldDescriptorDto;\r\n\r\n @deserializeAs(SpreadsheetFieldDescriptorDto)\r\n PageField: SpreadsheetFieldDescriptorDto;\r\n\r\n @deserializeAs(SpreadsheetCellPositionDto)\r\n Origin: SpreadsheetCellPositionDto;\r\n\r\n @deserializeAs(SpreadsheetDimensionDescriptorDto)\r\n Dimensions: SpreadsheetDimensionDescriptorDto[];\r\n\r\n @deserialize\r\n IsView: boolean;\r\n\r\n constructor() {\r\n this.Dimensions = [];\r\n }\r\n\r\n static Deserialize(jsonObj): SpreadsheetDescriptorDto {\r\n return GenericDeserialize<SpreadsheetDescriptorDto>(jsonObj, SpreadsheetDescriptorDto);\r\n }\r\n}","import {deserializeAs, deserialize} from 'libs/cerialize';\r\n\r\nimport {SpreadsheetCellPositionDto} from './SpreadsheetCellPositionDto';\r\n\r\nexport class SpreadsheetCellDataDto {\r\n @deserializeAs(SpreadsheetCellPositionDto)\r\n Position: SpreadsheetCellPositionDto;\r\n\r\n @deserialize\r\n Value: any;\r\n\r\n @deserialize\r\n DimensionNumber: number;\r\n\r\n get PositionName() {\r\n return `${this.Position.Column}${this.Position.Row}`;\r\n }\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class SpreadsheetPageDescriptorDto {\r\n @deserialize\r\n PageName: string;\r\n\r\n @deserialize\r\n PageDisplayName: string;\r\n}","import {deserializeAs} from 'libs/cerialize';\r\n\r\nimport {SpreadsheetCellDataDto} from './SpreadsheetCellDataDto';\r\nimport {SpreadsheetPageDescriptorDto} from './SpreadsheetPageDescriptorDto';\r\n\r\nexport class SpreadsheetPageDataDto {\r\n @deserializeAs(SpreadsheetCellDataDto)\r\n CellsData: SpreadsheetCellDataDto[];\r\n\r\n @deserializeAs(SpreadsheetPageDescriptorDto)\r\n Descriptor: SpreadsheetPageDescriptorDto;\r\n\r\n constructor() {\r\n this.CellsData = [];\r\n }\r\n}","export enum SpreadsheetDimensionDirections {\r\n Horizontal,\r\n Vertical\r\n}","import {deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport {SpreadsheetDescriptorDto} from './SpreadsheetDescriptorDto';\r\nimport {SpreadsheetPageDataDto} from './SpreadsheetPageDataDto';\r\n\r\nexport class SpreadsheetDataDto {\r\n @deserializeAs(SpreadsheetDescriptorDto)\r\n Descriptor: SpreadsheetDescriptorDto;\r\n\r\n @deserializeAs(SpreadsheetPageDataDto)\r\n Pages: SpreadsheetPageDataDto[];\r\n\r\n constructor() {\r\n this.Pages = [];\r\n }\r\n\r\n static Deserialize(jsonObj): SpreadsheetDataDto {\r\n return GenericDeserialize<SpreadsheetDataDto>(jsonObj, SpreadsheetDataDto);\r\n }\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {SpreadsheetDataDto} from '../Models/Dto/SpreadsheetDataDto';\r\nimport {SpreadsheetDescriptorDto} from '../Models/Dto/SpreadsheetDescriptorDto';\r\n\r\nexport class SpreadsheetStore {\r\n GetSpreadsheetDescriptor(params: {\r\n TableId: number,\r\n HorizontalDimensionFields: string[],\r\n VerticalDimensionFields: string[],\r\n ValueField: string,\r\n PageField: string\r\n }): P.Promise<SpreadsheetDescriptorDto> {\r\n\r\n const deferred = P.defer<SpreadsheetDescriptorDto>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/SpreadsheetApi/GetSpreadsheetDescriptor',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: params\r\n }).then(jsonObj => {\r\n deferred.resolve(SpreadsheetDescriptorDto.Deserialize(jsonObj))\r\n }).fail(err => {\r\n deferred.reject(this.GetResponseError(err, 'Error getting spreadsheet'));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetSpreadsheet(params: {\r\n TableId: number,\r\n EntityRecordId: number,\r\n HorizontalDimensionFields: string[],\r\n VerticalDimensionFields: string[],\r\n ValueField: string,\r\n PageField: string\r\n }): P.Promise<SpreadsheetDataDto> {\r\n\r\n const deferred = P.defer<SpreadsheetDataDto>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/SpreadsheetApi/GetSpreadsheet',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: params\r\n }).then(jsonObj => {\r\n deferred.resolve(SpreadsheetDataDto.Deserialize(jsonObj))\r\n }).fail(err => {\r\n deferred.reject(this.GetResponseError(err, 'Error getting spreadsheet'));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import {SpreadsheetNewPageDto} from './SpreadsheetNewPageDto';\r\nimport {SpreadsheetPageRemoveDto} from './SpreadsheetPageRemoveDto';\r\n\r\nexport class SpreadsheetSaveDto {\r\n public constructor(\r\n public TableId: number, public EntityRecordId: number,\r\n public NewPages: SpreadsheetNewPageDto[], public RemovedPages: SpreadsheetPageRemoveDto[],\r\n public Paged: boolean) {\r\n }\r\n}","export class SpreadsheetPageRemoveDto {\r\n constructor(public TableId: number,\r\n public EntityRecordId: number,\r\n public PageField: string,\r\n public PageName: string) {\r\n\r\n }\r\n}","import {SpreadsheetRecordDto} from './SpreadsheetRecordDto';\r\n\r\nexport class SpreadsheetNewPageDto {\r\n constructor(public TableId: number,\r\n public EntityRecordId: number,\r\n public PageField: string,\r\n public PageName: string,\r\n public ValueField: string,\r\n public CellsData: SpreadsheetRecordDto[]) {\r\n }\r\n}","import {SpreadsheetRecordFieldDto} from './SpreadsheetRecordFieldDto';\r\n\r\nexport class SpreadsheetRecordDto {\r\n constructor(public Value: string, public Fields: SpreadsheetRecordFieldDto[]) {\r\n }\r\n}","export class SpreadsheetRecordFieldDto {\r\n constructor(public FieldName: string, public Value: string) {\r\n }\r\n}","import {SpreadsheetFieldDescriptor} from './SpreadsheetFieldDescriptor';\r\nimport {SpreadsheetDimensionDescriptor} from './SpreadsheetDimensionDescriptor';\r\nimport {SpreadsheetCellPosition} from './SpreadsheetCellPosition';\r\n\r\nexport class SpreadsheetDescriptor {\r\n constructor(public ValueField: SpreadsheetFieldDescriptor,\r\n public PageField: SpreadsheetFieldDescriptor,\r\n public Origin: SpreadsheetCellPosition,\r\n public Dimensions: SpreadsheetDimensionDescriptor[],\r\n public IsView: boolean) {\r\n }\r\n\r\n get IsPaged() {\r\n return !!this.PageField;\r\n }\r\n}","import {FIELD_TYPES} from 'Core/Constant';\r\n\r\nexport class SpreadsheetFieldDescriptor {\r\n constructor(public Id: number,\r\n public Name: string,\r\n public TranslatedName: string,\r\n public TypeId: number,\r\n public Type: string,\r\n public ValTableName: string,\r\n public ValFieldName: string) {\r\n }\r\n\r\n get IsLookup() {\r\n return this.Type === FIELD_TYPES.Lookup;\r\n }\r\n}","import {SpreadsheetDimensionDirections} from '../../Enums/SpreadsheetDimensionDirections';\r\nimport {SpreadsheetCellPosition} from './SpreadsheetCellPosition';\r\nimport {SpreadsheetFieldDescriptor} from './SpreadsheetFieldDescriptor';\r\n\r\nexport class SpreadsheetDimensionDescriptor {\r\n constructor(public Field: SpreadsheetFieldDescriptor,\r\n public Direction: SpreadsheetDimensionDirections,\r\n public Number: number,\r\n public StartPosition: SpreadsheetCellPosition) {\r\n }\r\n}","export class SpreadsheetCellPosition {\r\n constructor(public Column: string, public Row: number) {\r\n\r\n }\r\n\r\n get PositionName() {\r\n return `${this.Column}${this.Row}`;\r\n }\r\n\r\n GetColumnIndex() {\r\n return this.GetColumnNumber() - 1;\r\n }\r\n\r\n GetColumnNumber() {\r\n let number = 0, pow = 1;\r\n\r\n for (let i = this.Column.length - 1; i >= 0; i--) {\r\n number += (this.Column.charCodeAt(i) - 'A'.charCodeAt(0) + 1) * pow;\r\n pow *= 26;\r\n }\r\n\r\n return number;\r\n }\r\n\r\n GetNextColumnName() {\r\n return SpreadsheetCellPosition.GetColumnNameByNumber(this.GetColumnNumber() + 1);\r\n }\r\n\r\n GetRowIndex() {\r\n return this.Row - 1;\r\n }\r\n\r\n IsSameAs(position: SpreadsheetCellPosition) {\r\n return this.Column == position.Column && this.Row === position.Row;\r\n }\r\n\r\n static Parse(cell: string) {\r\n const column = cell.match(/[A-Z]+/)[0];\r\n const row = +cell.split(column)[1];\r\n\r\n return new SpreadsheetCellPosition(column, row);\r\n }\r\n\r\n static GetColumnNameByNumber(n: number) {\r\n let columnName = '';\r\n\r\n while (n > 0) {\r\n const mod = Math.floor(n - 1) % 26;\r\n columnName = (String.fromCharCode(65 + mod)) + columnName;\r\n n = Math.floor((n - mod) / 26);\r\n }\r\n\r\n return columnName;\r\n }\r\n}","export class SpreadsheetPageDescriptor {\r\n constructor(public PageName: string, public PageDisplayName: string) {\r\n\r\n }\r\n}","import {SpreadsheetCellData} from './SpreadsheetCellData';\r\nimport {SpreadsheetDimensionDescriptor} from './SpreadsheetDimensionDescriptor';\r\nimport {SpreadsheetDescriptor} from './SpreadsheetDescriptor';\r\nimport {SpreadsheetPageDescriptor} from './SpreadsheetPageDescriptor';\r\n\r\nexport class SpreadsheetPageData {\r\n constructor(public Cells: SpreadsheetCellData[], public Dimensions: SpreadsheetDimensionDescriptor[], public Descriptor: SpreadsheetPageDescriptor) {\r\n }\r\n\r\n GetCell(name: string): SpreadsheetCellData {\r\n return this.Cells.find(c => c.cell === name);\r\n }\r\n\r\n static GetDefaultPageId() {\r\n return '<No id>';\r\n }\r\n\r\n static GetDefaultPageName() {\r\n return '<No name>';\r\n }\r\n\r\n static Empty(spreadsheetDescriptor: SpreadsheetDescriptor) {\r\n const pageDescriptor = new SpreadsheetPageDescriptor(this.GetDefaultPageId(), this.GetDefaultPageName());\r\n return new SpreadsheetPageData([], spreadsheetDescriptor.Dimensions, pageDescriptor);\r\n }\r\n}","export class SpreadsheetCellData {\r\n css: string;\r\n\r\n constructor(public cell: string, public value: any, public dimensionNumber?: number) {\r\n }\r\n}","import {SpreadsheetDescriptorDto} from '../Models/Dto/SpreadsheetDescriptorDto';\r\nimport {SpreadsheetFieldDescriptorDto} from '../Models/Dto/SpreadsheetFieldDescriptorDto';\r\nimport {SpreadsheetDimensionDescriptorDto} from '../Models/Dto/SpreadsheetDimensionDescriptorDto';\r\nimport {SpreadsheetCellPositionDto} from '../Models/Dto/SpreadsheetCellPositionDto';\r\nimport {SpreadsheetPageDataDto} from '../Models/Dto/SpreadsheetPageDataDto';\r\nimport {SpreadsheetCellDataDto} from '../Models/Dto/SpreadsheetCellDataDto';\r\n\r\nimport {SpreadsheetDescriptor} from '../Models/View/SpreadsheetDescriptor';\r\nimport {SpreadsheetFieldDescriptor} from '../Models/View/SpreadsheetFieldDescriptor';\r\nimport {SpreadsheetDimensionDescriptor} from '../Models/View/SpreadsheetDimensionDescriptor';\r\nimport {SpreadsheetCellPosition} from '../Models/View/SpreadsheetCellPosition';\r\nimport {SpreadsheetPageData} from '../Models/View/SpreadsheetPageData';\r\nimport {SpreadsheetCellData} from '../Models/View/SpreadsheetCellData';\r\nimport {SpreadsheetPageDescriptorDto} from '../Models/Dto/SpreadsheetPageDescriptorDto';\r\nimport {SpreadsheetPageDescriptor} from '../Models/View/SpreadsheetPageDescriptor';\r\n\r\nexport class SpreadsheetViewMappingProfile {\r\n ToSpreadsheetDescriptor(descriptor: SpreadsheetDescriptorDto): SpreadsheetDescriptor {\r\n const valueField = this.ToFieldDescriptor(descriptor.ValueField);\r\n const pageField = this.ToFieldDescriptor(descriptor.PageField);\r\n const origin = this.ToCellPosition(descriptor.Origin);\r\n const dimensions = this.ToDimensionDescriptors(descriptor.Dimensions);\r\n\r\n return new SpreadsheetDescriptor(valueField, pageField, origin, dimensions, descriptor.IsView);\r\n }\r\n\r\n ToFieldDescriptor(descriptor: SpreadsheetFieldDescriptorDto): SpreadsheetFieldDescriptor {\r\n return descriptor\r\n ? new SpreadsheetFieldDescriptor(descriptor.Id,\r\n descriptor.Name, descriptor.TranslatedName,\r\n descriptor.TypeId, descriptor.Type,\r\n descriptor.ValTableName, descriptor.ValFieldName)\r\n : null;\r\n }\r\n\r\n ToDimensionDescriptors(descriptors: SpreadsheetDimensionDescriptorDto[]): SpreadsheetDimensionDescriptor[] {\r\n return descriptors.map(descriptor => this.ToDimensionDescriptor(descriptor));\r\n }\r\n\r\n ToDimensionDescriptor(descriptor: SpreadsheetDimensionDescriptorDto): SpreadsheetDimensionDescriptor {\r\n const field = this.ToFieldDescriptor(descriptor.Field);\r\n const startPosition = this.ToCellPosition(descriptor.StartPosition);\r\n\r\n return new SpreadsheetDimensionDescriptor(field, descriptor.Direction, descriptor.Number, startPosition);\r\n }\r\n\r\n ToCellPosition(position: SpreadsheetCellPositionDto): SpreadsheetCellPosition {\r\n return new SpreadsheetCellPosition(position.Column, position.Row);\r\n }\r\n\r\n ToPagesData(pagesData: SpreadsheetPageDataDto[], spreadsheetDescriptor: SpreadsheetDescriptor) {\r\n return pagesData.map(pageData => this.ToPageData(pageData, spreadsheetDescriptor));\r\n }\r\n\r\n ToPageData(pageData: SpreadsheetPageDataDto, spreadsheetDescriptor: SpreadsheetDescriptor): SpreadsheetPageData {\r\n const cellsData = this.ToCellsData(pageData.CellsData);\r\n const pageDescriptor = spreadsheetDescriptor.PageField ? this.ToPageDescriptor(pageData.Descriptor, spreadsheetDescriptor.PageField) : null;\r\n return new SpreadsheetPageData(cellsData, spreadsheetDescriptor.Dimensions, pageDescriptor);\r\n }\r\n\r\n ToCellsData(cellsData: SpreadsheetCellDataDto[]): SpreadsheetCellData[] {\r\n return cellsData.map(cellData => this.ToCellData(cellData));\r\n }\r\n\r\n ToCellData(cellData: SpreadsheetCellDataDto): SpreadsheetCellData {\r\n return new SpreadsheetCellData(cellData.PositionName, cellData.Value, cellData.DimensionNumber);\r\n }\r\n\r\n ToPageDescriptor(descriptor: SpreadsheetPageDescriptorDto, pageFieldDescriptor: SpreadsheetFieldDescriptor): SpreadsheetPageDescriptor {\r\n const {defaultPageName, defaultPageDisplayName} =\r\n pageFieldDescriptor.IsLookup ? {\r\n defaultPageName: SpreadsheetPageData.GetDefaultPageId(),\r\n defaultPageDisplayName: SpreadsheetPageData.GetDefaultPageName()\r\n } : {\r\n defaultPageName: SpreadsheetPageData.GetDefaultPageName(),\r\n defaultPageDisplayName: SpreadsheetPageData.GetDefaultPageName()\r\n };\r\n\r\n return new SpreadsheetPageDescriptor(descriptor.PageName || defaultPageName, descriptor.PageDisplayName || defaultPageDisplayName);\r\n }\r\n}","import {SpreadsheetPageData} from './SpreadsheetPageData';\r\n\r\nexport class SpreadsheetData {\r\n constructor(public Pages: SpreadsheetPageData[]) {\r\n }\r\n}","import {SpreadsheetCellPosition} from './SpreadsheetCellPosition';\r\n\r\nexport class SpreadsheetCellRange {\r\n constructor(public Start: SpreadsheetCellPosition, public End: SpreadsheetCellPosition) {\r\n }\r\n\r\n get RangeName() {\r\n return `${this.Start.PositionName}:${this.End.PositionName}`;\r\n }\r\n\r\n ContainsCell(position: SpreadsheetCellPosition) {\r\n return this.Start.Row <= position.Row && this.Start.GetColumnNumber() <= position.GetColumnNumber()\r\n && this.End.Row >= position.Row && this.End.GetColumnNumber() >= position.GetColumnNumber();\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {PageName} from '../View/PageName';\r\n\r\nexport class RenamePageState {\r\n UseSearch: boolean;\r\n NameOptions: KnockoutObservableArray<PageName>;\r\n SelectedName: KnockoutObservable<PageName>;\r\n Error: KnockoutObservable<string>;\r\n\r\n constructor(selectedName: PageName, nameOptions: PageName[], useSearch: boolean) {\r\n this.UseSearch = useSearch;\r\n\r\n const value = useSearch ? selectedName : nameOptions.find(option => option.PageName === selectedName.PageName);\r\n\r\n this.NameOptions = ko.observableArray(nameOptions);\r\n this.SelectedName = ko.observable(value);\r\n\r\n this.Error = ko.observable(null);\r\n }\r\n}","export class PageName {\r\n constructor(public PageName: string, public PageDisplayName: string) {\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {RecordStore} from 'Core/Common/Stores/RecordStore';\r\n\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\n\r\nimport {RenamePageState} from './Models/State/RenamePageState';\r\n\r\nimport {PageName} from './Models/View/PageName';\r\nimport {SpreadsheetFieldDescriptor} from '../../Models/View/SpreadsheetFieldDescriptor';\r\nimport {SpreadsheetPageData} from '../../Models/View/SpreadsheetPageData';\r\n\r\nimport Template from './Templates/Template.html';\r\nimport SearchTemplate from './Templates/SearchTemplate.html';\r\nimport DropdownTemplate from './Templates/DropdownTemplate.html';\r\n\r\nko.templates['Core/Controls/Spreadsheet/Components/RenamePagePopup/Templates/Template'] = Template;\r\n\r\nexport class RenamePagePopup extends Event {\r\n private _modal: Modal;\r\n private _currentPageName: PageName;\r\n\r\n State: KnockoutObservable<RenamePageState>;\r\n\r\n constructor(private _pageField: SpreadsheetFieldDescriptor, currentName: string, currentDisplayName: string) {\r\n super();\r\n this._currentPageName = new PageName(currentName, currentDisplayName);\r\n\r\n this.State = ko.observable(null);\r\n }\r\n\r\n Show() {\r\n this.InitState()\r\n .then(() => {\r\n this._modal = new Modal({width: 400}, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n });\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n this._modal.Destroy();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Controls/Spreadsheet/Components/RenamePagePopup/Templates/Template';\r\n }\r\n\r\n GetSearchTemplate() {\r\n if (!this.State()) {\r\n return null;\r\n }\r\n\r\n return this.State().UseSearch ? SearchTemplate : DropdownTemplate;\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n SetError(error: string) {\r\n this.State().Error(error);\r\n }\r\n\r\n private InitState() {\r\n BlockUI.Block();\r\n\r\n return RecordStore.GetLookupData({\r\n TableName: this._pageField.ValTableName,\r\n DisplayValue: this._pageField.ValFieldName\r\n }).then(lookupData => {\r\n if (lookupData.Count > lookupData.Data.length) {\r\n this.State(new RenamePageState(this._currentPageName, [], true));\r\n } else {\r\n const nameOptions = lookupData.Data.map(record => new PageName(record.Value, record.Name));\r\n this.State(new RenamePageState(this._currentPageName, nameOptions, false));\r\n }\r\n\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(error.message)\r\n })\r\n }\r\n\r\n private OnSave() {\r\n if (!this.State().SelectedName() || !this.State().SelectedName().PageDisplayName) {\r\n this.SetError('Page name cannot be empty');\r\n return;\r\n }\r\n\r\n this.Trigger('PAGE_NAME_SAVE', this.State().SelectedName());\r\n }\r\n\r\n private OnCancel() {\r\n this.Close();\r\n }\r\n\r\n private SearchForPageName() {\r\n const search = new SearchScreen({EntityName: this._pageField.ValTableName, SearchTerm: ''});\r\n\r\n search.On('RECORD_SELECTED', this, eventArgs => this.SelectPageName(eventArgs.data.RecordId, eventArgs.data.Name));\r\n\r\n search.Show();\r\n }\r\n\r\n private SelectPageName(pageName: string, pageDisplayName) {\r\n const selectedPageName = new PageName(pageName.toString(), pageDisplayName);\r\n this.State().SelectedName(selectedPageName)\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"spreadsheet-control\\\"> <div class=\\\"rename-page\\\"> <!--ko if: State--> <!--ko template: {html: $data.GetSearchTemplate.bind($data)}--> <!--/ko--> <!--/ko--> <div class=\\\"text-center\\\"> <button class=\\\"btn btn-success\\\" data-bind=\\\"click: $data.OnSave.bind($data)\\\"> <i class=\\\"fa fa-save\\\"></i> Save </button> <button class=\\\"btn btn-danger\\\" data-bind=\\\"click: $data.OnCancel.bind($data)\\\"> <i class=\\\"fa fa-times\\\"></i> Cancel </button> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"form-group\\\"> <label>Page Name</label> <div class=\\\"dropdown-wraper\\\"> <div class=\\\"textarea-control form-control\\\"> <span data-bind=\\\"text: State().SelectedName() && State().SelectedName().PageDisplayName\\\"></span> </div> <div class=\\\"dropdown-controls\\\"> <button type=\\\"button\\\" class=\\\"btn default\\\" data-bind=\\\"click: $data.SearchForPageName.bind($data)\\\"> <i class=\\\"fa fa-search\\\"></i> </button> </div> </div> <!--ko if: State().Error--> <p data-bind=\\\"text: State().Error\\\" class=\\\"validation-message\\\"></p> <!--/ko--> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"form-group\\\"> <label>Page Name</label> <select class=\\\"form-control\\\" data-bind=\\\"options: State().NameOptions, optionsText: 'PageDisplayName', value: State().SelectedName\\\"></select> <!--ko if: State().Error--> <p data-bind=\\\"text: State().Error\\\" class=\\\"validation-message\\\"></p> <!--/ko--> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Spreadsheet} from 'spreadsheet';\r\n\r\nimport {RenderModes} from 'Core/Constant';\r\n\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport {BaseControl, IControlValue} from '../BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\n\r\nimport ConfigJson from 'Core/Controls/Spreadsheet/Configs/spreadsheet-config.json';\r\nimport {DimensionalTablePropertyField} from '../../GeneralProperties/Managers/DimensionalTableProperty/Models/DimensionalTablePropertyValue';\r\n\r\nimport {SpreadsheetStore} from './Store/SpreadsheetStore';\r\n\r\nimport {SpreadsheetDataDto} from './Models/Dto/SpreadsheetDataDto';\r\nimport {SpreadsheetDescriptorDto} from './Models/Dto/SpreadsheetDescriptorDto';\r\n\r\nimport {SpreadsheetSaveDto} from './Models/Dto/SpreadsheetSaveDto';\r\nimport {SpreadsheetPageRemoveDto} from './Models/Dto/SpreadsheetPageRemoveDto';\r\nimport {SpreadsheetNewPageDto} from './Models/Dto/SpreadsheetNewPageDto';\r\nimport {SpreadsheetRecordDto} from './Models/Dto/SpreadsheetRecordDto';\r\nimport {SpreadsheetRecordFieldDto} from './Models/Dto/SpreadsheetRecordFieldDto';\r\n\r\nimport {SpreadsheetViewMappingProfile} from './Mappings/SpreadsheetViewMappingProfile';\r\n\r\nimport {SpreadsheetData} from './Models/View/SpreadsheetData';\r\nimport {SpreadsheetDescriptor} from './Models/View/SpreadsheetDescriptor';\r\nimport {SpreadsheetDimensionDescriptor} from './Models/View/SpreadsheetDimensionDescriptor';\r\nimport {SpreadsheetPageData} from './Models/View/SpreadsheetPageData';\r\nimport {SpreadsheetCellPosition} from './Models/View/SpreadsheetCellPosition';\r\nimport {SpreadsheetCellData} from './Models/View/SpreadsheetCellData';\r\nimport {SpreadsheetDimensionDirections} from './Enums/SpreadsheetDimensionDirections';\r\nimport {SpreadsheetCellRange} from './Models/View/SpreadsheetCellRange';\r\n\r\nimport {RenamePagePopup} from './Components/RenamePagePopup/RenamePagePopup';\r\nimport {PageName} from './Components/RenamePagePopup/Models/View/PageName';\r\n\r\nimport ToolBarTemplate from './Templates/ToolBar.html';\r\nimport DesignTemplate from './Templates/Design.html';\r\nimport ViewTemplate from './Templates/View.html';\r\nimport EditTemplate from './Templates/Edit.html';\r\nimport HelpViewTemplate from './Templates/HelpView.html';\r\nimport LegendTemplate from './Templates/Legend.html';\r\n\r\n\r\nko.templates['Core/Controls/Spreadsheet/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Spreadsheet/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Spreadsheet/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Spreadsheet/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Spreadsheet/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport class SpreadsheetControl extends BaseControl {\r\n private _readonly: boolean;\r\n private _setValueWasRequested: boolean;\r\n private _isEditing: boolean;\r\n\r\n private _store: SpreadsheetStore;\r\n private _viewMappings: SpreadsheetViewMappingProfile;\r\n private _spreadsheetDescriptor: SpreadsheetDescriptor;\r\n\r\n private _renamePagePopup: RenamePagePopup;\r\n\r\n private _removedPages: string[];\r\n\r\n private _styles: any;\r\n private _rowsCount: number;\r\n private _colsCount: number;\r\n private _originCellValue: string;\r\n\r\n private _spreadsheet: Spreadsheet;\r\n\r\n IsLegendReady: KnockoutObservable<boolean>;\r\n Error: KnockoutObservable<string>;\r\n Dimension1: KnockoutObservable<string>;\r\n Dimension1Translated: KnockoutObservable<string>;\r\n\r\n Dimension2: KnockoutObservable<string>;\r\n Dimension2Translated: KnockoutObservable<string>;\r\n\r\n Dimension3: KnockoutObservable<string>;\r\n Dimension3Translated: KnockoutObservable<string>;\r\n\r\n Dimension4: KnockoutObservable<string>;\r\n Dimension4Translated: KnockoutObservable<string>;\r\n\r\n PageField: KnockoutObservable<string>;\r\n PageFieldTranslated: KnockoutObservable<string>;\r\n\r\n ValueField: KnockoutObservable<string>;\r\n ValueFieldTranslated: KnockoutObservable<string>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, ConfigJson);\r\n this.Init();\r\n }\r\n\r\n GetLegendTemplate() {\r\n return (ko as any).renderTemplateXHtml(LegendTemplate, this);\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n\r\n if (this._renderMode() === RenderModes.Design) {\r\n return;\r\n }\r\n\r\n if (this._renderMode() === RenderModes.View) {\r\n this.AfterViewRender();\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Edit) {\r\n this.AfterEditRender();\r\n }\r\n }\r\n\r\n SetValue(value: IControlValue) {\r\n this._setValueWasRequested = true;\r\n\r\n if (this._isRendered()) {\r\n this.LoadData();\r\n }\r\n }\r\n\r\n IsValid(): boolean {\r\n if (!this._isRendered()) {\r\n return true;\r\n }\r\n\r\n if (this._spreadsheetDescriptor.PageField && this._spreadsheetDescriptor.PageField.IsLookup) {\r\n const pagesWithoutDbId = this._spreadsheet.getSheets()\r\n .filter(sheet => !this.GetPageName(sheet.id))\r\n .map(sheet => this.GetPageDisplayName(sheet.id));\r\n\r\n if (pagesWithoutDbId.length > 0) {\r\n this.Error('Select the name for these sheets using Rename menu: ' + pagesWithoutDbId.join(', '));\r\n return false;\r\n }\r\n }\r\n\r\n if (this._isEditing) {\r\n this.Error('Please, finish editing on the spreadsheet');\r\n return false;\r\n }\r\n\r\n this.Error(null);\r\n return true;\r\n }\r\n\r\n Deserialize(): SpreadsheetSaveDto {\r\n if (!this._isRendered()) {\r\n return null;\r\n }\r\n\r\n if (this._spreadsheetDescriptor.IsView) {\r\n return null;\r\n }\r\n\r\n const newPages: SpreadsheetNewPageDto[] = this._spreadsheet.getSheets()\r\n .filter(sheet => this.GetPage(sheet.id))\r\n .map(sheet => {\r\n const origin = this.GetOriginPosition(sheet.id);\r\n let pageName = this.GetPageName(sheet.id);\r\n\r\n if (pageName === SpreadsheetPageData.GetDefaultPageId() || pageName === SpreadsheetPageData.GetDefaultPageName()) {\r\n pageName = null;\r\n }\r\n\r\n return new SpreadsheetNewPageDto(\r\n this.GetFieldModel().EntityId,\r\n this.GetEntityRecordId(),\r\n this.PageField(),\r\n pageName,\r\n this.ValueField(),\r\n this.GetCellsData(sheet.id, origin)\r\n );\r\n });\r\n\r\n const removedPages: SpreadsheetPageRemoveDto[] = this._removedPages.map(pageName => {\r\n const pageNameDto = pageName === SpreadsheetPageData.GetDefaultPageName() ? null : pageName;\r\n return new SpreadsheetPageRemoveDto(\r\n this.GetFieldModel().EntityId,\r\n this.GetEntityRecordId(),\r\n this.PageField(),\r\n pageNameDto\r\n );\r\n })\r\n\r\n const paged = !!this.PageField();\r\n return new SpreadsheetSaveDto(\r\n this.GetFieldModel().EntityId, this.GetEntityRecordId(),\r\n newPages, removedPages,\r\n paged\r\n );\r\n }\r\n\r\n private Init() {\r\n this._setValueWasRequested = false;\r\n this._isEditing = false;\r\n\r\n this._store = new SpreadsheetStore();\r\n this._viewMappings = new SpreadsheetViewMappingProfile();\r\n\r\n this._removedPages = [];\r\n\r\n this._styles = {\r\n origin: {\r\n textAlign: 'center',\r\n 'font-weight': 'bold',\r\n color: '#ddd'\r\n },\r\n dimension1: {\r\n background: '#1c87d9',\r\n color: '#fff'\r\n },\r\n dimension2: {\r\n background: '#ff9b00',\r\n color: '#fff'\r\n },\r\n dimension3: {\r\n background: '#4f4083',\r\n color: '#fff'\r\n },\r\n dimension4: {\r\n background: '#ccc',\r\n color: '#fff',\r\n 'font-weight': 'bold'\r\n },\r\n value: {\r\n 'font-weight': 'bold'\r\n }\r\n };\r\n\r\n this.IsLegendReady = ko.observable(false);\r\n\r\n if (this._renderMode() === RenderModes.View || this._renderMode() === RenderModes.HelpView) {\r\n this.InitForView();\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Edit) {\r\n this.InitForEdit();\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Design) {\r\n this.InitForDesign();\r\n }\r\n }\r\n\r\n private AfterViewRender() {\r\n this._readonly = true;\r\n\r\n this.RenderSpreadsheet();\r\n\r\n if (this._setValueWasRequested) {\r\n this.LoadData();\r\n }\r\n }\r\n\r\n private AfterEditRender() {\r\n this._readonly = false;\r\n\r\n this.RenderSpreadsheet();\r\n\r\n if (this._setValueWasRequested) {\r\n this.LoadData();\r\n }\r\n }\r\n\r\n private RenderSpreadsheet() {\r\n this._colsCount = 100;\r\n this._rowsCount = 100;\r\n this._originCellValue = '@ORIGIN';\r\n\r\n this._spreadsheet = new Spreadsheet(\r\n this._el.querySelector<HTMLDivElement>('.spreadsheet'), {\r\n multiSheets: !!this.PageField(),\r\n colsCount: this._colsCount,\r\n rowsCount: this._rowsCount\r\n });\r\n }\r\n\r\n private BindEvents() {\r\n if (this._readonly) {\r\n this._spreadsheet.events.on('beforeSheetAdd', () => false);\r\n this._spreadsheet.events.on('beforeSheetRemove', () => false);\r\n this._spreadsheet.events.on('beforeSheetRename', () => false);\r\n\r\n this._spreadsheet.events.on(\"beforeEditStart\", () => false);\r\n this._spreadsheet.events.on(\"beforeValueChange\", () => false);\r\n this._spreadsheet.events.on(\"beforeStyleChange\", () => false);\r\n\r\n this._spreadsheet.events.on(\"beforecolumndelete\", () => false);\r\n this._spreadsheet.events.on(\"beforerowdelete\", () => false);\r\n this._spreadsheet.events.on(\"beforecolumnadd\", () => false);\r\n this._spreadsheet.events.on(\"beforerowadd\", () => false);\r\n } else {\r\n if (this._spreadsheetDescriptor.IsPaged && this._spreadsheetDescriptor.PageField.IsLookup) {\r\n this.BindLookupPageContextMenuEvents();\r\n }\r\n\r\n this._spreadsheet.events.on('beforeSheetRemove', sheet => {\r\n const pageName = this.GetPageName(sheet.id);\r\n\r\n if (pageName === SpreadsheetPageData.GetDefaultPageId() || pageName === SpreadsheetPageData.GetDefaultPageName()) {\r\n this._removedPages.push(null);\r\n return;\r\n }\r\n\r\n this._removedPages.push(pageName);\r\n });\r\n\r\n this._spreadsheet.events.on('beforeSheetRename', sheet => {\r\n const pageName = this.GetPageName(sheet.id);\r\n\r\n if (pageName === SpreadsheetPageData.GetDefaultPageId() || pageName === SpreadsheetPageData.GetDefaultPageName()) {\r\n this._removedPages.push(null);\r\n return;\r\n }\r\n\r\n this._removedPages.push(pageName);\r\n });\r\n\r\n this._spreadsheet.events.on('afterSheetRename', sheet => {\r\n if (!this._spreadsheetDescriptor.PageField.IsLookup) {\r\n const pageName = this.GetPageName(sheet.id)\r\n this._spreadsheet._sheets.update(sheet.id, {\r\n pageDbId: pageName,\r\n value: pageName\r\n });\r\n }\r\n });\r\n\r\n this._spreadsheet.events.on('afterSheetAdd', sheet => {\r\n const newPageId = this._spreadsheet._dataStore._pageName2ID.get(sheet.name);\r\n const newPage = this._spreadsheet._dataStore.getPage(newPageId);\r\n const firstPage = this._spreadsheet._dataStore.getPage(0);\r\n\r\n let copiedPageData = JSON.parse(JSON.stringify(firstPage._data));\r\n _.each(copiedPageData, (data: any) => {\r\n _.each(data, (cell: any) => {\r\n if (cell && cell.css !== 'origin'){\r\n cell.value = null;\r\n }\r\n });\r\n });\r\n\r\n newPage._data = copiedPageData;\r\n });\r\n\r\n this._spreadsheet.events.on('afterEditStart', () => this._isEditing = true);\r\n this._spreadsheet.events.on('afterEditEnd', () => this._isEditing = false);\r\n this._spreadsheet.events.on('beforeValueChange', (id, value) => {\r\n\r\n });\r\n this._spreadsheet.events.on('afterValueChange', (id, value) => {\r\n\r\n });\r\n }\r\n }\r\n\r\n private BindLookupPageContextMenuEvents() {\r\n this._spreadsheet.sheetContextMenu.events.detach('click');\r\n this._spreadsheet.sheetContextMenu.events.on('click', id => {\r\n const sheetId = this.GetFocusedSheetId();\r\n switch (id) {\r\n case 'delete':\r\n this.RemovePage(sheetId);\r\n return;\r\n case 'rename':\r\n this.ShowRenamePopup(sheetId);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n private RemovePage(sheetId: string) {\r\n this._spreadsheet.removeSheet(sheetId);\r\n }\r\n\r\n private ShowRenamePopup(sheetId: string) {\r\n const pageName = this.GetPageName(sheetId);\r\n const pageDisplayName = this.GetPageDisplayName(sheetId);\r\n\r\n this._renamePagePopup = new RenamePagePopup(this._spreadsheetDescriptor.PageField, pageName, pageDisplayName);\r\n this._renamePagePopup.On('PAGE_NAME_SAVE', this, eventArgs => this.RenamePageTo(sheetId, eventArgs.data));\r\n\r\n this._renamePagePopup.Show();\r\n }\r\n\r\n private RenamePageTo(sheetId: string, pageName: PageName) {\r\n const currentPageDisplayName = this.GetPageDisplayName(sheetId);\r\n if (currentPageDisplayName === pageName.PageDisplayName) {\r\n return;\r\n }\r\n\r\n const nameIsNotUnique = !!this._spreadsheet.getSheets().find(sheet => {\r\n const pageDisplayName = this.GetPageDisplayName(sheet.id);\r\n return pageDisplayName === pageName.PageDisplayName;\r\n });\r\n if (nameIsNotUnique) {\r\n this._renamePagePopup.SetError(`A sheet ${pageName.PageDisplayName} already exists`);\r\n return;\r\n }\r\n\r\n this._spreadsheet._renameSheet(sheetId, pageName.PageDisplayName);\r\n this._spreadsheet._sheets.update(sheetId, {pageDbId: pageName.PageName, value: pageName.PageDisplayName});\r\n\r\n this._renamePagePopup.Close();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private InitForView() {\r\n this.Error = ko.observable(null);\r\n this.InitFields();\r\n this.ApplyRuntimeProperties();\r\n }\r\n\r\n private InitForEdit() {\r\n this.Error = ko.observable(null);\r\n this.InitFields();\r\n this.ApplyRuntimeProperties();\r\n }\r\n\r\n private InitForDesign() {\r\n this.InitFields();\r\n this.ApplyDesignProperties();\r\n }\r\n\r\n private InitFields() {\r\n this.Dimension1 = ko.observable(null);\r\n this.Dimension1Translated = ko.observable(null);\r\n\r\n this.Dimension2 = ko.observable(null);\r\n this.Dimension2Translated = ko.observable(null);\r\n\r\n this.Dimension3 = ko.observable(null);\r\n this.Dimension3Translated = ko.observable(null);\r\n\r\n this.Dimension4 = ko.observable(null);\r\n this.Dimension4Translated = ko.observable(null);\r\n\r\n this.PageField = ko.observable(null);\r\n this.PageFieldTranslated = ko.observable(null);\r\n\r\n this.ValueField = ko.observable(null);\r\n this.ValueFieldTranslated = ko.observable(null);\r\n }\r\n\r\n private ApplyDesignProperties() {\r\n const dimensionsProperty = this.GeneralProperties.GetPropertyValue('Dimensions');\r\n\r\n const valueField = dimensionsProperty && dimensionsProperty.ValueField;\r\n const pageField = dimensionsProperty && dimensionsProperty.PageField;\r\n const dimensions = dimensionsProperty && dimensionsProperty.DimensionFields || [];\r\n\r\n this.ValueField(valueField ? valueField.Name : 'Value');\r\n this.PageField(pageField ? pageField.Name : null);\r\n\r\n this.Dimension1(this.GetDimensionFieldName(dimensions, 0));\r\n this.Dimension2(this.GetDimensionFieldName(dimensions, 1));\r\n this.Dimension3(this.GetDimensionFieldName(dimensions, 2));\r\n this.Dimension4(this.GetDimensionFieldName(dimensions, 3));\r\n }\r\n\r\n private ApplyRuntimeProperties() {\r\n const dimensionsProperty = this.GeneralProperties.GetPropertyValue('Dimensions');\r\n\r\n const valueField = dimensionsProperty && dimensionsProperty.ValueField;\r\n const pageField = dimensionsProperty && dimensionsProperty.PageField;\r\n const dimensions = dimensionsProperty && dimensionsProperty.DimensionFields || [];\r\n\r\n this.ValueField(valueField.Name);\r\n this.PageField(pageField ? pageField.Name : null);\r\n\r\n if (dimensions.length > 0) {\r\n this.Dimension1(this.GetDimensionFieldName(dimensions, 0));\r\n this.Dimension2(this.GetDimensionFieldName(dimensions, 1));\r\n this.Dimension3(this.GetDimensionFieldName(dimensions, 2));\r\n this.Dimension4(this.GetDimensionFieldName(dimensions, 3));\r\n }\r\n }\r\n\r\n private GetDimensionFieldName(dimensions: DimensionalTablePropertyField[], index: number) {\r\n if (dimensions.length === 0) {\r\n return 'Dimension ' + (index + 1);\r\n }\r\n\r\n if (!dimensions[index]) {\r\n return null;\r\n }\r\n\r\n return dimensions[index].Name;\r\n }\r\n\r\n private LoadData() {\r\n const entityRecordId = this.GetForm().GetScreen().GetRecordId();\r\n\r\n if (!entityRecordId) {\r\n this.LoadEmptySpreadsheet();\r\n return;\r\n }\r\n\r\n this.LoadSpreadsheetData();\r\n }\r\n\r\n private LoadEmptySpreadsheet() {\r\n BlockUI.Block({Target: this._el});\r\n this._store.GetSpreadsheetDescriptor(this.GetRequestSpreadsheetDescriptor())\r\n .then((descriptorDto: SpreadsheetDescriptorDto) => {\r\n const descriptor = this._viewMappings.ToSpreadsheetDescriptor(descriptorDto);\r\n const emptyPage = SpreadsheetPageData.Empty(descriptor);\r\n const spreadsheetData = new SpreadsheetData([emptyPage]);\r\n\r\n this._spreadsheetDescriptor = descriptor;\r\n this.DisplaySpreadsheet(spreadsheetData);\r\n BlockUI.Unblock(this._el);\r\n this.ForceFocusOnTextControl();\r\n }).fail(error => {\r\n BlockUI.Unblock(this._el);\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n ForceFocusOnTextControl(){\r\n if(this._renderMode() === RenderModes.Edit) {\r\n\r\n let isFocusableControl = _.find(this._form.GetScreen().GetAllControls(), c => c.IsFocusable());\r\n isFocusableControl && isFocusableControl.ForceFocus();\r\n\r\n }\r\n }\r\n\r\n private LoadSpreadsheetData() {\r\n BlockUI.Block({Target: this._el});\r\n this._store.GetSpreadsheet(this.GetRequestSpreadsheetParams())\r\n .then((spreadsheet: SpreadsheetDataDto) => {\r\n const descriptor = this._viewMappings.ToSpreadsheetDescriptor(spreadsheet.Descriptor);\r\n const pages = this._viewMappings.ToPagesData(spreadsheet.Pages, descriptor);\r\n const spreadsheetData = new SpreadsheetData(pages);\r\n\r\n if (spreadsheetData.Pages.length === 0) {\r\n spreadsheetData.Pages.push(SpreadsheetPageData.Empty(descriptor));\r\n }\r\n\r\n this._spreadsheetDescriptor = descriptor;\r\n this.DisplaySpreadsheet(spreadsheetData);\r\n BlockUI.Unblock(this._el)\r\n\r\n this.ForceFocusOnTextControl();\r\n })\r\n .fail(error => {\r\n BlockUI.Unblock(this._el);\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n private DisplaySpreadsheet(spreadsheetData: SpreadsheetData) {\r\n if (this._spreadsheetDescriptor.IsView) {\r\n this._readonly = true;\r\n }\r\n\r\n const pageDataSets = spreadsheetData.Pages.map(page => this.BuildPageDataset(page));\r\n const spreadsheetDataset = {\r\n sheets: spreadsheetData.Pages.map((page, index) => ({\r\n name: this._spreadsheetDescriptor.PageField ? page.Descriptor.PageDisplayName : SpreadsheetPageData.GetDefaultPageName(),\r\n id: Guid.NewGuid(),\r\n data: pageDataSets[index].data\r\n }))\r\n };\r\n\r\n const dataset = {styles: this._styles, ...spreadsheetDataset};\r\n this._spreadsheet.parse(dataset);\r\n\r\n dataset.sheets.forEach((sheet, index) => {\r\n this._spreadsheet._dataStore.getPage(index).setMeta({toolbarId: sheet.id});\r\n if (this._spreadsheetDescriptor.PageField) {\r\n this._spreadsheet._sheets.update(sheet.id, {pageDbId: spreadsheetData.Pages[index].Descriptor.PageName});\r\n }\r\n });\r\n\r\n this.TranslateLegend();\r\n this.BindEvents();\r\n }\r\n\r\n private TranslateLegend() {\r\n this.ValueFieldTranslated(this._spreadsheetDescriptor.ValueField.TranslatedName || this._spreadsheetDescriptor.ValueField.Name);\r\n\r\n if (this._spreadsheetDescriptor.PageField) {\r\n this.PageFieldTranslated(this._spreadsheetDescriptor.PageField.TranslatedName || this._spreadsheetDescriptor.PageField.Name);\r\n }\r\n\r\n const dimensionObservables = [this.Dimension1Translated, this.Dimension2Translated, this.Dimension3Translated, this.Dimension4Translated];\r\n this._spreadsheetDescriptor.Dimensions.forEach((dimension) => {\r\n const observableIndex = dimension.Number - 1;\r\n dimensionObservables[observableIndex](dimension.Field.TranslatedName || dimension.Field.Name);\r\n });\r\n\r\n this.IsLegendReady(true);\r\n }\r\n\r\n private GetHorizontalDimensionFields() {\r\n return [this.Dimension1(), this.Dimension3()].filter(fieldName => !!fieldName);\r\n }\r\n\r\n private GetVerticalDimensionFields() {\r\n return [this.Dimension2(), this.Dimension4()].filter(fieldName => !!fieldName);\r\n }\r\n\r\n private GetEntityRecordId() {\r\n return this.GetForm().GetScreen().GetRecordId();\r\n }\r\n\r\n private GetRequestSpreadsheetDescriptor() {\r\n return {\r\n TableId: this.GetFieldModel().EntityId,\r\n HorizontalDimensionFields: this.GetHorizontalDimensionFields(),\r\n VerticalDimensionFields: this.GetVerticalDimensionFields(),\r\n ValueField: this.ValueField(),\r\n PageField: this.PageField(),\r\n }\r\n }\r\n\r\n private GetRequestSpreadsheetParams() {\r\n return {\r\n TableId: this.GetFieldModel().EntityId,\r\n EntityRecordId: this.GetEntityRecordId(),\r\n HorizontalDimensionFields: this.GetHorizontalDimensionFields(),\r\n VerticalDimensionFields: this.GetVerticalDimensionFields(),\r\n ValueField: this.ValueField(),\r\n PageField: this.PageField(),\r\n }\r\n }\r\n\r\n private BuildPageDataset(page: SpreadsheetPageData) {\r\n this.AddStylesToPage(page);\r\n this.AddOrigin(page);\r\n\r\n return {\r\n data: page.Cells\r\n };\r\n }\r\n\r\n private AddStylesToPage(page: SpreadsheetPageData) {\r\n page.Dimensions.forEach(dimension => {\r\n if (dimension.Direction === SpreadsheetDimensionDirections.Horizontal) {\r\n this.AddStylesToHorizontalDimension(page, dimension);\r\n } else {\r\n this.AddStylesToVerticalDimension(page, dimension);\r\n }\r\n });\r\n\r\n this.AddStylesToValueCells(page);\r\n }\r\n\r\n private GetCellsData(sheetId: string, origin: SpreadsheetCellPosition): SpreadsheetRecordDto[] {\r\n const fields =\r\n _.chain(this.GetHorizontalDimensionFields())\r\n .zip(this.GetVerticalDimensionFields())\r\n .flatten()\r\n .filter(field => !!field).value();\r\n\r\n const dimensionIndexes = Array.from(Array(fields.length).keys());\r\n const dimensionRanges = dimensionIndexes.map(index => this.GetDimensionRange(sheetId, index + 1, origin));\r\n\r\n const dimension1Range = dimensionRanges[0];\r\n const dimension2Range = dimensionRanges[1];\r\n\r\n const valuesBlockStart = new SpreadsheetCellPosition(dimension1Range.Start.Column, dimension1Range.Start.Row + 1);\r\n const valuesBlockEnd = fields.length > 1\r\n ? new SpreadsheetCellPosition(dimension1Range.End.Column, dimension2Range.End.Row)\r\n : new SpreadsheetCellPosition(dimension1Range.End.Column, dimension1Range.End.Row + 1);\r\n\r\n const valuesBlockRange = new SpreadsheetCellRange(valuesBlockStart, valuesBlockEnd);\r\n\r\n const cellsRewrite: SpreadsheetRecordDto[] = [];\r\n\r\n this.EachCell(sheetId, (rowIndex, columnIndex, cell) => {\r\n const cellPosition = new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(columnIndex + 1), rowIndex + 1);\r\n if (!valuesBlockRange.ContainsCell(cellPosition)) {\r\n return;\r\n }\r\n\r\n if (cell.value === null) {\r\n return;\r\n }\r\n\r\n if (cell.value.trim && cell.value.trim() === '') {\r\n return;\r\n }\r\n\r\n const dimensionRewrite = _.chain(dimensionIndexes)\r\n .map((index) => this.BuildDimensionRewrite(sheetId, index + 1, dimensionRanges[index], cellPosition, fields))\r\n .uniq(dimension => dimension.FieldName)\r\n .value();\r\n\r\n const cellRewrite = new SpreadsheetRecordDto(cell.value, dimensionRewrite);\r\n\r\n cellsRewrite.push(cellRewrite);\r\n }, valuesBlockRange.RangeName);\r\n\r\n return cellsRewrite;\r\n }\r\n\r\n private BuildDimensionRewrite(sheetId: string, dimensionNumber: number, dimensionRange: SpreadsheetCellRange, valueCellPosition: SpreadsheetCellPosition, fields: string[]) {\r\n const direction = this.GetDimensionDirection(dimensionNumber);\r\n const dimensionCellPosition = direction === SpreadsheetDimensionDirections.Horizontal\r\n ? new SpreadsheetCellPosition(valueCellPosition.Column, dimensionRange.Start.Row)\r\n : new SpreadsheetCellPosition(dimensionRange.Start.Column, valueCellPosition.Row);\r\n\r\n const dimensionValue = this.GetCellValue(sheetId, dimensionCellPosition);\r\n const fieldName = fields[dimensionNumber - 1];\r\n\r\n return new SpreadsheetRecordFieldDto(fieldName, dimensionValue);\r\n }\r\n\r\n private GetDimensionDirection(dimensionNumber: number) {\r\n return dimensionNumber % 2 === 0 ? SpreadsheetDimensionDirections.Vertical : SpreadsheetDimensionDirections.Horizontal;\r\n }\r\n\r\n private AddOrigin(page: SpreadsheetPageData) {\r\n const originCell = new SpreadsheetCellData(this._spreadsheetDescriptor.Origin.PositionName, this._originCellValue, null);\r\n originCell.css = 'origin';\r\n\r\n page.Cells.push(originCell);\r\n }\r\n\r\n private GetOriginPosition(sheetId: string) {\r\n const start = new SpreadsheetCellPosition('A', 1);\r\n const end = new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(this._colsCount), this._rowsCount);\r\n const searchRange = `${start.PositionName}:${end.PositionName}`;\r\n\r\n let rowNumber: number = null, columnNumber: number = null;\r\n this.EachCell(sheetId, (rowIndex, columnIndex, cell) => {\r\n if (cell.value === this._originCellValue) {\r\n rowNumber = rowIndex + 1;\r\n columnNumber = columnIndex + 1;\r\n }\r\n }, searchRange);\r\n\r\n if (rowNumber === null || columnNumber === null) return null;\r\n return new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(columnNumber), rowNumber);\r\n }\r\n\r\n private GetDimensionRange(sheetId: string, dimensionNumber: number, origin: SpreadsheetCellPosition): SpreadsheetCellRange {\r\n const dimensionStyles = this.GetStylesForDimension(dimensionNumber);\r\n\r\n const start = this.GetDimensionStart(sheetId, origin, dimensionStyles);\r\n if (!start) return null;\r\n\r\n const end = this.GetDimensionEnd(sheetId, start, dimensionStyles);\r\n return new SpreadsheetCellRange(start, end);\r\n }\r\n\r\n private GetDimensionStart(sheetId: string, origin: SpreadsheetCellPosition, dimensionStyles: any) {\r\n const end = this.GetEndOfSpreadsheetPosition();\r\n let searchRange = `${origin.PositionName}:${end.PositionName}`;\r\n\r\n let dimensionStartCell = null;\r\n this.EachCell(sheetId, (rowIndex, columnIndex, cell) => {\r\n if (dimensionStartCell) {\r\n return;\r\n }\r\n\r\n const cellPosition = new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(columnIndex + 1), rowIndex + 1);\r\n const cellStyles = this.GetStyle(sheetId, cellPosition) as any;\r\n if (cellStyles && cellStyles.background === dimensionStyles.background) {\r\n dimensionStartCell = cellPosition;\r\n }\r\n }, searchRange);\r\n\r\n return dimensionStartCell;\r\n }\r\n\r\n private GetDimensionEnd(sheetId: string, start: SpreadsheetCellPosition, dimensionStyles: any) {\r\n const end = this.GetEndOfSpreadsheetPosition();\r\n let searchRange = `${start.PositionName}:${end.PositionName}`;\r\n\r\n let dimensionEndCell = null;\r\n this.EachCell(sheetId, (rowIndex, columnIndex, cell) => {\r\n const cellPosition = new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(columnIndex + 1), rowIndex + 1);\r\n const cellStyles = this.GetStyle(sheetId, cellPosition) as any;\r\n if (cellStyles && cellStyles.background === dimensionStyles.background) {\r\n dimensionEndCell = cellPosition;\r\n }\r\n }, searchRange);\r\n\r\n return dimensionEndCell;\r\n }\r\n\r\n private GetEndOfSpreadsheetPosition() {\r\n return new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(this._colsCount), this._rowsCount);\r\n }\r\n\r\n private AddStylesToHorizontalDimension(page: SpreadsheetPageData, dimension: SpreadsheetDimensionDescriptor) {\r\n const iterableCell = new SpreadsheetCellPosition(dimension.StartPosition.Column, dimension.StartPosition.Row);\r\n const endCell = new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(this._colsCount), iterableCell.Row);\r\n const endCellColumnNumber = endCell.GetColumnNumber();\r\n\r\n while (iterableCell.GetColumnNumber() <= endCellColumnNumber) {\r\n const valueCell = page.GetCell(iterableCell.PositionName);\r\n if (valueCell) {\r\n valueCell.css = `dimension${dimension.Number}`;\r\n } else {\r\n const cell = new SpreadsheetCellData(iterableCell.PositionName, null, dimension.Number);\r\n cell.css = `dimension${dimension.Number}`;\r\n page.Cells.push(cell);\r\n }\r\n iterableCell.Column = iterableCell.GetNextColumnName();\r\n }\r\n }\r\n\r\n private AddStylesToVerticalDimension(page: SpreadsheetPageData, dimension: SpreadsheetDimensionDescriptor) {\r\n const iterableCell = new SpreadsheetCellPosition(dimension.StartPosition.Column, dimension.StartPosition.Row);\r\n const endCell = new SpreadsheetCellPosition(dimension.StartPosition.Column, this._rowsCount);\r\n\r\n while (iterableCell.Row <= endCell.Row) {\r\n let valueCell = page.GetCell(iterableCell.PositionName);\r\n if (valueCell) {\r\n valueCell.css = `dimension${dimension.Number}`;\r\n } else {\r\n valueCell = new SpreadsheetCellData(iterableCell.PositionName, null, dimension.Number);\r\n valueCell.css = `dimension${dimension.Number}`;\r\n page.Cells.push(valueCell);\r\n }\r\n iterableCell.Row++;\r\n }\r\n }\r\n\r\n private AddStylesToValueCells(page: SpreadsheetPageData) {\r\n const dimension1Start = page.Dimensions.find(d => d.Number === 1).StartPosition;\r\n const valuePosition = new SpreadsheetCellPosition(dimension1Start.Column, dimension1Start.Row + 1);\r\n\r\n while (valuePosition.Row <= this._rowsCount) {\r\n while (valuePosition.GetColumnNumber() <= this._colsCount) {\r\n let valueCell = page.GetCell(valuePosition.PositionName);\r\n\r\n if (valueCell) {\r\n valueCell.css = 'value';\r\n } else {\r\n valueCell = new SpreadsheetCellData(valuePosition.PositionName, null, null);\r\n valueCell.css = 'value';\r\n page.Cells.push(valueCell);\r\n }\r\n\r\n valuePosition.Column = valuePosition.GetNextColumnName();\r\n }\r\n\r\n valuePosition.Column = dimension1Start.Column;\r\n valuePosition.Row++;\r\n }\r\n }\r\n\r\n private GetStylesForDimension(dimensionNumber: number) {\r\n return this._styles['dimension' + dimensionNumber];\r\n }\r\n\r\n private GetCellValue(sheetId: string, position: SpreadsheetCellPosition) {\r\n return this.GetPage(sheetId).getValue(position.GetRowIndex(), position.GetColumnIndex());\r\n }\r\n\r\n private GetStyle(sheetId: string, position: SpreadsheetCellPosition) {\r\n const pageName = this.GetPageDisplayName(sheetId);\r\n\r\n let absoluteCell = `${pageName}!${position.PositionName}`;\r\n let style = this._spreadsheet.getStyle(absoluteCell);\r\n\r\n if (!style) {\r\n absoluteCell = `'${pageName}'!${position.PositionName}`;\r\n style = this._spreadsheet.getStyle(absoluteCell);\r\n }\r\n\r\n return style;\r\n }\r\n\r\n private EachCell(sheetId: string, iterator: (rowIndex: number, columnIndex: number, cell: any) => void, searchRange: string) {\r\n this.GetPage(sheetId).eachCell(iterator, searchRange);\r\n }\r\n\r\n private GetPage(sheetId: string) {\r\n return this._spreadsheet._dataStore._pages\r\n .filter(page => !!page)\r\n .find(page => page.getMeta().toolbarId === sheetId);\r\n }\r\n\r\n private GetPageName(sheetId: string): string {\r\n if (this._spreadsheetDescriptor.IsPaged && this._spreadsheetDescriptor.PageField.IsLookup) {\r\n return this._spreadsheet._sheets._pull[sheetId].pageDbId;\r\n }\r\n\r\n return this._spreadsheet.getSheets().find(sheet => sheet.id === sheetId).name;\r\n }\r\n\r\n private GetPageDisplayName(sheetId: string) {\r\n if (this._spreadsheetDescriptor.IsPaged && this._spreadsheetDescriptor.PageField.IsLookup) {\r\n return this._spreadsheet._sheets._pull[sheetId].value;\r\n }\r\n\r\n return this._spreadsheet.getSheets().find(sheet => sheet.id === sheetId).name;\r\n }\r\n\r\n private GetFocusedSheetId() {\r\n return this._spreadsheet._tabbar.data.getItem(this._spreadsheet._focusedSheet).id;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-table\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"Spreadsheet-control\\\" class=\\\"FormDesignerView\\\"> <table class=\\\"spreadsheet-design\\\"> <tr> <td class=\\\"layout-cell\\\" data-bind=\\\"css: {'layout-cell--skipped': !Dimension4()}\\\"></td> <td class=\\\"layout-cell\\\" data-bind=\\\"css: {'layout-cell--skipped': !Dimension2()}\\\"></td> <td class=\\\"layout-cell\\\"></td> </tr> <tr> <td rowspan=\\\"2\\\" colspan=\\\"2\\\"></td> <!--ko if: Dimension3--> <td class=\\\"cell cell--violet\\\" data-bind=\\\"text: Dimension3\\\"></td> <!--/ko--> </tr> <tr> <td class=\\\"cell cell--blue\\\" data-bind=\\\"text: Dimension1\\\"></td> </tr> <tr> <td class=\\\"cell cell--grey\\\" data-bind=\\\"text: Dimension4\\\"></td> <td class=\\\"cell cell--orange\\\" data-bind=\\\"text: Dimension2\\\"></td> <td class=\\\"cell cell--bold cell--centered\\\" data-bind=\\\"text: ValueField\\\"></td> </tr> <!--ko if: PageField--> <tr> <td colspan=\\\"3\\\" class=\\\"cell cell--bold cell--centered\\\" data-bind=\\\"text: PageField\\\"></td> </tr> <!--/ko--> </table> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"spreadsheet-control\\\"> <div class=\\\"spreadsheet-control-header\\\"> <!--ko if: IsLegendReady--> <div class=\\\"legend-icon\\\"> <i class=\\\"fa fa-info-circle text-info\\\" data-bind=\\\"tooltip: {content: GetLegendTemplate()}\\\"></i> </div> <!--/ko--> </div> <div class=\\\"spreadsheet-wrapper\\\"> <div class=\\\"spreadsheet\\\"></div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"spreadsheet-control\\\"> <div class=\\\"spreadsheet-control-header\\\"> <div class=\\\"error\\\" data-bind=\\\"text: Error\\\"></div> <!--ko if: IsLegendReady--> <div class=\\\"legend-icon\\\"> <i class=\\\"fa fa-info-circle text-info\\\" data-bind=\\\"tooltip: {content: GetLegendTemplate()}\\\"></i> </div> <!--/ko--> </div> <div class=\\\"spreadsheet-wrapper\\\"> <div class=\\\"spreadsheet\\\"></div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<table class=\\\"spreadsheet-design\\\"> <tr> <td class=\\\"layout-cell\\\" data-bind=\\\"css: {'layout-cell--skipped': !Dimension4()}\\\"></td> <td class=\\\"layout-cell\\\" data-bind=\\\"css: {'layout-cell--skipped': !Dimension2()}\\\"></td> <td class=\\\"layout-cell\\\"></td> </tr> <tr> <td rowspan=\\\"2\\\" colspan=\\\"2\\\"></td> <!--ko if: Dimension3--> <td class=\\\"cell cell--violet\\\" data-bind=\\\"text: Dimension3\\\"></td> <!--/ko--> </tr> <tr> <td class=\\\"cell cell--blue\\\" data-bind=\\\"text: Dimension1\\\"></td> </tr> <tr> <td class=\\\"cell cell--grey\\\" data-bind=\\\"text: Dimension4\\\"></td> <td class=\\\"cell cell--orange\\\" data-bind=\\\"text: Dimension2\\\"></td> <td class=\\\"cell cell--bold cell--centered\\\" data-bind=\\\"text: ValueField\\\"></td> </tr> <!--ko if: PageField--> <tr> <td colspan=\\\"3\\\" class=\\\"cell cell--bold cell--centered\\\" data-bind=\\\"text: PageField\\\"></td> </tr> <!--/ko--> </table>\";\n// Exports\nexport default code;","// Module\nvar code = \"<table class=\\\"spreadsheet-design\\\"> <tr> <td class=\\\"layout-cell\\\" data-bind=\\\"css: {'layout-cell--skipped': !Dimension4()}\\\"></td> <td class=\\\"layout-cell\\\" data-bind=\\\"css: {'layout-cell--skipped': !Dimension2()}\\\"></td> <td class=\\\"layout-cell\\\"></td> </tr> <tr> <td rowspan=\\\"2\\\" colspan=\\\"2\\\"></td> <!--ko if: Dimension3--> <td class=\\\"cell cell--violet\\\" data-bind=\\\"text: Dimension3Translated\\\"></td> <!--/ko--> </tr> <tr> <td class=\\\"cell cell--blue\\\" data-bind=\\\"text: Dimension1Translated\\\"></td> </tr> <tr> <td class=\\\"cell cell--grey\\\" data-bind=\\\"text: Dimension4Translated\\\"></td> <td class=\\\"cell cell--orange\\\" data-bind=\\\"text: Dimension2Translated\\\"></td> <td class=\\\"cell cell--bold cell--centered\\\" data-bind=\\\"text: ValueFieldTranslated\\\"></td> </tr> <!--ko if: PageField--> <tr> <td colspan=\\\"3\\\" class=\\\"cell cell--bold cell--centered\\\" data-bind=\\\"text: PageFieldTranslated\\\"></td> </tr> <!--/ko--> </table> \";\n// Exports\nexport default code;","import {CONTROL_TYPES} from 'Core/Constant';\r\n\r\nimport {ControlModel} from './BaseControl/Models/ControlModel';\r\nimport {ScreenTypes} from '../Common/Enums/ScreenTypes';\r\n\r\nexport interface IStaticControlsPosition {\r\n ActionBar: ControlModel[],\r\n SubForms: [ControlModel[], ControlModel[], ControlModel[], ControlModel[]],\r\n BottomBar: ControlModel[]\r\n}\r\n\r\nconst DEFAULT_POSITION: IStaticControlsPosition = {ActionBar: [], SubForms: [[], [], [], []], BottomBar: []};\r\n\r\nexport class StaticControlsProvider {\r\n static ForScreen(type: string, followUp: boolean, isDashMain: boolean): IStaticControlsPosition {\r\n switch (type) {\r\n case ScreenTypes[ScreenTypes.ConsultScreen]:\r\n return this.ForConsultScreen(followUp);\r\n\r\n case ScreenTypes[ScreenTypes.EditScreen]:\r\n return this.ForEditScreen(followUp, isDashMain);\r\n\r\n case ScreenTypes[ScreenTypes.ListScreen]:\r\n return this.ForListScreen();\r\n\r\n case ScreenTypes[ScreenTypes.SpecialScreen]:\r\n return this.ForSpecialScreen();\r\n\r\n default: {\r\n return DEFAULT_POSITION;\r\n }\r\n }\r\n }\r\n\r\n static ForConsultScreen(followUp: boolean): IStaticControlsPosition {\r\n const controlsPosition: IStaticControlsPosition = { ActionBar: [], SubForms: [[], [], [], []], BottomBar: [] };\r\n if (followUp) {\r\n controlsPosition.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonFollowUp));\r\n }\r\n\r\n return controlsPosition;\r\n }\r\n\r\n static ForListScreen(): IStaticControlsPosition {\r\n return DEFAULT_POSITION;\r\n }\r\n\r\n static ForSpecialScreen() : IStaticControlsPosition {\r\n return DEFAULT_POSITION;\r\n }\r\n\r\n static ForEditScreen(followUp: boolean, isDashMain: boolean): IStaticControlsPosition {\r\n const controlsPosition: IStaticControlsPosition = {ActionBar: [], SubForms: [[], [], [], []], BottomBar: []};\r\n\r\n if (isDashMain) {\r\n controlsPosition.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.Search));\r\n }\r\n\r\n controlsPosition.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonSave));\r\n controlsPosition.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonCancel));\r\n\r\n if (followUp) {\r\n controlsPosition.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonFollowUp));\r\n }\r\n\r\n return controlsPosition;\r\n }\r\n\r\n static ForLinkEditor(): IStaticControlsPosition {\r\n const controlModels: IStaticControlsPosition = {ActionBar: [], SubForms: [[], [], [], []], BottomBar: []};\r\n\r\n controlModels.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonSave));\r\n controlModels.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonCancel));\r\n\r\n return controlModels;\r\n }\r\n\r\n static AddForLookupEditorNewRecord() {\r\n const controlModels: IStaticControlsPosition = {ActionBar: [], SubForms: [[], [], [], []], BottomBar: []};\r\n\r\n controlModels.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonSave));\r\n controlModels.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonCancel));\r\n\r\n return controlModels;\r\n }\r\n\r\n private static BuildControlModel(typeName: string): ControlModel {\r\n const controlModel = new ControlModel();\r\n\r\n controlModel.TypeName = typeName;\r\n controlModel.Sort = 30;\r\n\r\n return controlModel;\r\n }\r\n}","// Module\nvar code = \"<a data-bind=\\\"click: Click, css: {'has-error': !_isValid()}\\\" class=\\\"tab-link step-control-steps-item-container\\\"> <div class=\\\"step-control-steps-item-container_wrapper\\\"> <div class=\\\"step-control-steps-item-icon\\\"> <span class=\\\"step-control-steps-icon\\\"> <!-- ko if: _process() --><!-- ko text: Index --><!-- /ko --><!-- /ko --> <!-- ko if: _wait() --><!-- ko text: Index --><!-- /ko --><!-- /ko --> <!-- ko if: _finish() --> <span role=\\\"img\\\" aria-label=\\\"check\\\" class=\\\"anticon anticon-check step-control-steps-finish-icon\\\"> <svg viewBox=\\\"64 64 896 896\\\" focusable=\\\"false\\\" data-icon=\\\"check\\\" width=\\\"1em\\\" height=\\\"1em\\\" fill=\\\"currentColor\\\" aria-hidden=\\\"true\\\"><path d=\\\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\\\"></path></svg> </span> <!-- /ko --> </span> </div> <div class=\\\"step-control-steps-item-content\\\"> <div class=\\\"step-control-steps-item-title\\\" data-bind=\\\"text: Title\\\"> <!-- <div title=\\\"00:00:05\\\" class=\\\"step-control-steps-item-subtitle\\\">00:00:05</div>--> </div> <div class=\\\"step-control-steps-item-description\\\" data-bind=\\\"text: DescriptionToolTipContent ? DescriptionToolTipContent : Description\\\"></div> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This tab has required field\\\"></i> </div> </div> </a> \";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class StepDto {\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport { StepDto } from '../Models/StepRecordDto';\r\nimport { GenericDeserialize } from '../../../../libs/cerialize';\r\n\r\nexport interface GetStepRecordDto {\r\n\tPreviousStepEntityId: number;\r\n\tPreviousStepRecordId: number;\r\n\r\n\tStepScreenId: Number;\r\n}\r\n\r\nexport class StepApi {\r\n\r\n\tstatic GetStepRecord(params: GetStepRecordDto): P.Promise<StepDto>{\r\n\t\tlet deferredResult = P.defer<StepDto>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/StepApi/GetStepRecord',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(GenericDeserialize<StepDto>(data, StepDto));\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import { RightBarCell } from 'Core/Controls/PlannerLevel/RightBarCell/RightBarCell';\r\nimport * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\n\r\nimport {RenderModes, EVENTS} from 'Core/Constant'\r\nimport {P} from 'Core/Common/Promise';\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {IControlParam, IScreen} from 'Core/Screens/IScreen'\r\n\r\nimport Config from 'Core/Controls/StepPage/config.json';\r\nimport ViewTemplate from 'Core/Controls/StepPage/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/StepPage/Templates/HelpView.html'\r\nimport DesignTemplate from 'Core/Controls/StepPage/Templates/Design.html'\r\nimport type { ProcessCardPage } from '../../Screens/ProcessCardPage/ProcessCardPage';\r\nimport { BlockUI } from '../../Common/BlockUi';\r\nimport { Notifier } from '../Grid/BaseGrid/Index';\r\nimport { StepApi } from '../Step/Stores/StepApi';\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\n\r\nko.templates['Core/Controls/StepPage/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/StepPage/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/StepPage/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/StepPage/Templates/Edit'] = ViewTemplate;\r\n\r\nexport class StepPage extends BaseControl {\r\n\t\r\n\tprivate _screen: KnockoutObservable<ProcessCardPage>;\r\n\tStepRecordId: number;\r\n\tStepEntityId: number;\r\n\tIsNewRecord: boolean;\r\n\tprivate _index: number;\r\n\tprotected _process: KnockoutObservable<boolean>;\r\n\tprotected _wait: KnockoutObservable<boolean>;\r\n\tprotected _finish: KnockoutObservable<boolean>;\r\n\tprivate _transactionId: string;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, Config);\r\n\t\tthis.StepRecordId = 0;\r\n\t\tthis._screen = ko.observable(null);\r\n\t\tthis._index = null;\r\n\t\tthis._process = ko.observable(null);\r\n\t\tthis._wait = ko.observable(null);\r\n\t\tthis._finish = ko.observable(null);\r\n\r\n\t\tthis.Init();\r\n\r\n\t\tthis.GetTemplateName = ko.computed(() => {\r\n\t\t\tvar template = RenderModes[this._renderMode()];\r\n\t\t\tvar templateName = `Core/Controls/StepPage/Templates/${template}`;\r\n\t\t\treturn templateName;\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tget IsLinked(): boolean{\r\n\t\treturn this.GeneralProperties.GetPropertyValue('Linked') == true;\r\n\t}\r\n\r\n\tApplyProperties() {\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.ApplyProperties();\r\n\t\tthis._isActive = ko.observable(false);\r\n\t\tthis.AddEvent(EVENTS.ON_TAB_CLICK);\r\n\t}\r\n\r\n\tLoadRecord({entityId, recordId, subjectRecordId, transactionId}: {entityId: number, recordId: number, subjectRecordId, transactionId: string}){\t\t\r\n\t\tthis._transactionId = transactionId;\r\n\t\tif(this.StepRecordId == 0){\r\n\t\t\tBlockUI.Block();\r\n\t\t\tStepApi.GetStepRecord({PreviousStepEntityId: entityId, PreviousStepRecordId: recordId, StepScreenId: this.ScreenId })\r\n\t\t\t.always(()=>{\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((record)=>{\r\n\r\n\t\t\t\tif(!this.IsLinked && record.EntityId == this.Screen.GetEntityId()){\r\n\t\t\t\t\tthis.StepRecordId = subjectRecordId;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.StepRecordId = record.RecordId ? record.RecordId : 0;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.StepEntityId = record.EntityId;\r\n\r\n\t\t\t\tthis.LoadScreen(this._transactionId);\r\n\t\t\t});\t\r\n\t\t}else{\r\n\t\t\tthis.LoadScreen(this._transactionId);\r\n\t\t}\r\n\t}\r\n\r\n\tasync LoadScreen(transactionId: string){\r\n\t\tthis._transactionId = transactionId;\r\n\t\tBlockUI.Block();\r\n\r\n\t\tlet screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\t\tthis.IsNewRecord = this.StepRecordId == 0;\r\n\r\n\t\tif(!this.IsNewRecord){\r\n\t\t\tawait LockManager.Instance.TryLock(this.StepEntityId, this.StepRecordId);\r\n\t\t}\t\t\r\n\r\n\t\tlet screen = (await screenManager.GetScreenById({ ScreenId: this._model().ScreenId, RecordId: this.StepRecordId }));\r\n\t\tif(screen){\r\n\t\t\tthis._screen(screen as ProcessCardPage);\r\n\t\t\tthis._screen().TransactionId = this._transactionId;\t\r\n\t\t}\r\n\t\tBlockUI.Unblock();\r\n\t}\r\n\r\n\tSave(){\r\n\t\tlet deferredResult = P.defer<any>();\r\n\t\tthis._screen().Save(true, false).then((result)=>{\r\n\t\t\tthis.StepRecordId = result.recordId;\r\n\t\t\tdeferredResult.resolve(null);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tget IsActiveTabPage(): boolean {\r\n\t\treturn this._isActive();\r\n\t}\r\n\r\n\tSetValue(value: any): void {}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tthis.Trigger(EVENTS.ON_TAB_CLICK);\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n private GetName(): string {\r\n var translationList = this._model().NameTranslations;\r\n let currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n let currentLangItem = _.find(translationList, (item) => {\r\n return currentLang.Id === item.Language.K_Language;\r\n });\r\n if (currentLangItem) {\r\n this._getCurrentName = currentLangItem.Translation;\r\n }\r\n\r\n if (this._getCurrentName) {\r\n return this._getCurrentName;\r\n } else {\r\n return this._model().Name;\r\n }\r\n }\r\n\r\n\tget Title(): string {\r\n\t\treturn this.GetName();\r\n\t}\r\n\r\n\tstatic GetDefaultName() {\r\n\t\treturn 'New step';\r\n\t}\r\n\r\n\tAddSubControl(control: IControl) {\r\n\t\tthis._subControls.push(control);\r\n\t}\r\n\r\n\tSelectRecord({ recordId, transactionId }: { recordId: number, transactionId: string }){\r\n\t\tif(this.Screen.GetEntityId() != this._screen().GetEntityId()){\r\n\t\t\tNotifier.Failed(`There is no process card page with ${this.Screen.GetEntityName()}`);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.StepRecordId = recordId;\r\n\t\tthis.LoadScreen(transactionId);\r\n\t}\r\n\r\n\tget EntityId(): number{\r\n\t\treturn this._screen().GetEntityId();\r\n\t}\r\n\r\n\tget EntityName(): string{\r\n\t\treturn this._screen().GetEntityName();\r\n\t}\r\n\r\n\tget ScreenId(): number{\r\n\t\treturn this._model().ScreenId;\r\n\t}\r\n\r\n\tget Index(): number {\r\n\t\treturn this._index;\r\n\t}\r\n\tset Index(index: number) {\r\n\t\tthis._index = index;\r\n\t}\r\n\r\n\tget Process(): boolean {\r\n\t\treturn this._process();\r\n\t}\r\n\tset Process(process: boolean) {\r\n\t\tthis._process(process);\r\n\t}\r\n\r\n\tget Wait(): boolean {\r\n\t\treturn this._wait();\r\n\t}\r\n\tset Wait(wait: boolean) {\r\n\t\tthis._wait(wait);\r\n\t}\r\n\r\n\tget Finish(): boolean {\r\n\t\treturn this._finish();\r\n\t}\r\n\tset Finish(finish: boolean) {\r\n\t\tthis._finish(finish);\r\n\t}\r\n}","// Module\nvar code = \"<button data-bind=\\\"css: { 'active': _isActive }\\\" class=\\\"tab tab-button\\\"> <div class=\\\"close-wrapper\\\"> <span data-bind=\\\"click: $root.RemoveControl.bind($root, $parent), preventBubble: ['click']\\\" class=\\\"close remove-control\\\" title=\\\"Remove control\\\"> <svg viewBox=\\\"0 0 24 24\\\" style=\\\"\\\"> <path d=\\\"M22.2,4c0,0,0.5,0.6,0,1.1l-6.8,6.8l6.9,6.9c0.5,0.5,0,1.1,0,1.1L20,22.3c0,0-0.6,0.5-1.1,0L12,15.4l-6.9,6.9c-0.5,0.5-1.1,0-1.1,0L1.7,20c0,0-0.5-0.6,0-1.1L8.6,12L1.7,5.1C1.2,4.6,1.7,4,1.7,4L4,1.7c0,0,0.6-0.5,1.1,0L12,8.5l6.8-6.8c0.5-0.5,1.1,0,1.1,0L22.2,4z\\\"></path> </svg> </span> </div> <a data-bind=\\\"text: Title, click: Click, preventBubble: ['click']\\\" class=\\\"tab-link\\\"></a> <i data-bind=\\\"click: $root.ShowControlEditor.bind($root, $data), preventBubble: ['click']\\\" class=\\\"fa fa-edit\\\"></i> </button>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click, css: {'has-error': !_isValid()}\\\" class=\\\"tab-link\\\"> <span data-bind=\\\"text: Title\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This tab has required field\\\"></i> </a> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper step-tabs\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <div class=\\\"nav-steps\\\"> <button data-bind=\\\"click: $data.Previous.bind($data), attr: { disabled: !$data._isEnablePreviousBtn() }\\\" title=\\\"Previous\\\" class=\\\"btn step-btn step-prev\\\"> <span class=\\\"arrow\\\"></span> <span class=\\\"title\\\">Prev</span> </button> <ul class=\\\"nav nav-tabs\\\"> <!-- ko foreach: _subControls --> <li data-bind=\\\"template: { name: GetTemplateName.bind($rawData),\\r\\n afterRender: $rawData.AfterRender.bind($rawData)\\r\\n },\\r\\n css: { 'active': _isActive,\\r\\n 'step-control-steps-item-process': Process,\\r\\n 'step-control-steps-item-wait': Wait,\\r\\n 'step-control-steps-item-finish': Finish\\r\\n },\\r\\n visible: _isVisible,\\r\\n attr:{'title': Title}\\\" class=\\\"tab step-control-steps-item\\\" title=\\\"TabPage\\\"></li> <!-- /ko --> </ul> <button data-bind=\\\"click: $data.Next.bind($data), attr: { disabled: !$data._isEnableNextBtn() }\\\" title=\\\"Next\\\" class=\\\"btn step-btn step-next\\\"> <span class=\\\"arrow\\\"></span> <span class=\\\"title\\\">Next</span> </button> </div> <!--ko with: _currentStepPage--> <div data-bind=\\\"css: {'wrapped-container-tab': $parent._isWrapped}\\\" class=\\\"tab-content tab-page-result step-page clearfix\\\"> <!-- ko with: $data._screen --> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nexport interface IStartTransactionDto {\r\n\tId: string;\r\n}\r\n\r\nexport interface ICommitTransactionDto {\r\n\tId: string;\r\n}\r\n\r\nexport interface IRollbackTransactionDto {\r\n\tId: string;\r\n}\r\n\r\nexport class TransactionApi {\r\n\r\n\tstatic Start(params: IStartTransactionDto): P.Promise<number>{\r\n\t\tlet deferredResult = P.defer<number>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TransactionApi/Start',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Commit(params: ICommitTransactionDto): P.Promise<number>{\r\n\t\tlet deferredResult = P.defer<number>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TransactionApi/Commit',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Continue(params: IRollbackTransactionDto): P.Promise<number>{\r\n\t\tlet deferredResult = P.defer<number>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TransactionApi/Continue',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Rollback(params: IRollbackTransactionDto): P.Promise<number>{\r\n\t\tlet deferredResult = P.defer<number>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TransactionApi/Rollback',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import { Notifier } from 'Core/Common/Notifier';\r\nimport * as ko from 'knockout'\r\n\r\nimport 'lockr';\r\n\r\nimport { BaseControl } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { EVENTS } from 'Core/Constant'\r\nimport { IControlParam, IForm } from 'Core/Screens/IScreen'\r\nimport { IControl } from 'Core/Controls/IControl'\r\nimport {\r\n\tConfirmationDialog,\r\n\tTypes as DialogTypes,\r\n\tEVENTS as DIALOG_EVENTS\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport { NOTIFICATIONS } from 'Core/Components/Translation/Locales';\r\n\r\nimport ViewTemplate from 'Core/Controls/Step/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/Step/Templates/HelpView.html'\r\nimport DesignTemplate from 'Core/Controls/Step/Templates/Design.html'\r\nimport ToolBarTemplate from 'Core/Controls/Step/Templates/ToolBar.html'\r\nimport { StepPage } from '../StepPage/StepPage';\r\nimport { RecordLinker } from '../../Components/RecordLinker/RecordLinker';\r\nimport { StepApi } from './Stores/StepApi';\r\nimport { TransactionApi } from './Stores/TransactionApi';\r\nimport { Guid } from '../../Common/Guid';\r\nimport { LOCK_EVENTS, LockManager } from \"Core/Components/Locker/LockManager\";\r\n\r\nko.templates['Core/Controls/Step/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Step/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Step/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Step/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Step/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Step extends BaseControl {\r\n\tprivate _currentStepPage: KnockoutObservable<StepPage> = ko.observable(null);\r\n\tprivate _currentStepIndex: KnockoutObservable<number>;\r\n\tprivate _isEnablePreviousBtn: KnockoutComputed<boolean>;\r\n\tprivate _isEnableNextBtn: KnockoutComputed<boolean>;\r\n\tprivate _transactionId: string;\r\n\tprivate _pulseTimer: number;\r\n\tprivate _subjectRecordId: number;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._currentStepIndex = ko.observable(0);\r\n\r\n\t\tthis._isEnablePreviousBtn = ko.computed(() => {\r\n\t\t\treturn this._currentStepPage() && this._currentStepIndex() != 0;\r\n\t\t});\r\n\r\n\t\tthis._isEnableNextBtn = ko.computed(() => {\r\n\t\t\treturn !!this._currentStepPage();\r\n\t\t});\r\n\r\n\t\tthis.Init();\r\n\t\tthis.AddEvent('FINISH_PROCESS');\r\n\t}\r\n\r\n\tApplyProperties() { }\r\n\r\n\tget Tabs() {\r\n\t\treturn this._subControls;\r\n\t}\r\n\r\n\tGetForm(): IForm {\r\n\t\treturn this._form;\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.On('AFTER_RENDER', this, () => {\r\n\r\n\t\t\tif (this.IsRunTime && !this.Screen.IsInModal()) {\r\n\t\t\t\tthis._transactionId = Guid.NewGuid();\r\n\t\t\t\tTransactionApi.Start({ Id: this._transactionId }).then(() => {\r\n\t\t\t\t\tthis.RestartPulseTransaction();\r\n\t\t\t\t\tthis._currentStepPage()?.LoadScreen(this._transactionId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tko.utils.domNodeDisposal.addDisposeCallback(this._el, () => this.Dispose())\r\n\t\t});\r\n\r\n\t\tthis.SetActiveTab(0);\r\n\r\n\t\tthis._subControls().forEach((page: StepPage, index) => {\r\n\t\t\tpage.Index = index + 1;\r\n\t\t\tpage.Wait = !page.Process;\r\n\t\t\tpage.On(EVENTS.ON_TAB_CLICK, this, (eventArgs: any) => {\r\n\t\t\t\tif (this._currentStepPage() == page) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst tabPage = <StepPage>eventArgs.source;\r\n\t\t\t\tthis.SetActiveTabPage(tabPage);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tSetActiveTabPage(tabPage: StepPage) {\r\n\t\tconst currentPage = this._currentStepPage();\r\n\r\n\t\tif (currentPage) {\r\n\r\n\t\t\tif (tabPage) {\r\n\t\t\t\tconst canSwitchToAdjacentTab = Math.abs(currentPage.Index - tabPage.Index) === 1;\r\n\t\t\t\tif (!canSwitchToAdjacentTab && this.IsRunTime) {\r\n\t\t\t\t\tNotifier.Warning('Can switch only to adjacent Step');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.IsRunTime) {\r\n\t\t\t\tcurrentPage.Save().then(() => {\r\n\t\t\t\t\tcurrentPage.Finish = true;\r\n\t\t\t\t\tcurrentPage.Process = false;\r\n\t\t\t\t\tif (currentPage.IsNewRecord) {\r\n\t\t\t\t\t\tthis.CreateLink();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcurrentPage.SetIsActive(false);\r\n\r\n\t\t\t\t\tif (tabPage) {\r\n\r\n\t\t\t\t\t\ttabPage.LoadRecord({ entityId: currentPage.EntityId, recordId: currentPage.StepRecordId, subjectRecordId: this._subjectRecordId, transactionId: this._transactionId });\r\n\r\n\t\t\t\t\t\ttabPage.SetIsActive(true);\r\n\t\t\t\t\t\ttabPage.Finish = false;\r\n\t\t\t\t\t\ttabPage.Wait = false;\r\n\t\t\t\t\t\ttabPage.Process = true;\r\n\r\n\t\t\t\t\t\tthis._currentStepIndex(this._subControls().indexOf(tabPage));\r\n\t\t\t\t\t\tthis._currentStepPage(tabPage);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tTransactionApi.Commit({ Id: this._transactionId }).then(() => {\r\n\t\t\t\t\t\t\tthis.ReleaseLock();\r\n\t\t\t\t\t\t\tthis.Trigger('FINISH_PROCESS');\r\n\t\t\t\t\t\t\tclearInterval(this._pulseTimer);\r\n\t\t\t\t\t\t\tthis._currentStepPage(null);\r\n\t\t\t\t\t\t\tthis._transactionId = 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\r\n\t\t\tif (this.IsDesignTime) {\r\n\t\t\t\tcurrentPage.SetIsActive(false);\r\n\t\t\t\ttabPage.SetIsActive(true);\r\n\t\t\t\tthis._currentStepIndex(this._subControls().indexOf(tabPage));\r\n\t\t\t\tthis._currentStepPage(tabPage);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tReleaseLock() {\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tlet stepPage = subControl as StepPage;\r\n\t\t\tLockManager.Instance.ReleaseLock(stepPage.StepEntityId, stepPage.StepRecordId);\r\n\t\t});\r\n\t}\r\n\r\n\tCreateLink() {\r\n\t\tlet previousPage: StepPage = this._subControls()[this._subControls().indexOf(this._currentStepPage()) - 1] as StepPage;\r\n\t\tconst relatedEntityName = this._currentStepPage().EntityName;\r\n\t\tif (previousPage) {\r\n\t\t\tconst mainEntityName = previousPage.EntityName;\t\t\t\r\n\t\t\tRecordLinker.LinkRecord({ TransactionId: this._transactionId, MainTableId: previousPage.EntityId, MainRecordId: previousPage.StepRecordId, LinkedTableId: this._currentStepPage().EntityId, LinkedRecordId: this._currentStepPage().StepRecordId })\r\n\t\t\t\t.then((result) => {\r\n\t\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\t\tNotifier.Failed(NOTIFICATIONS.COULD_NOT_PROCEED_PLEASE_CREATE_THE_LINK_BETWEEN_ENTITIES\r\n\t\t\t\t\t\t\t.replace('{entity1}', mainEntityName)\r\n\t\t\t\t\t\t\t.replace('{entity2}', relatedEntityName));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tif(previousPage.EntityId != this.Screen.GetEntityId() || (previousPage.EntityId == this.Screen.GetEntityId() && previousPage.StepRecordId != this._subjectRecordId)){\r\n\t\t\t\tRecordLinker.LinkRecord({ TransactionId: this._transactionId, MainTableId: this.Screen.GetEntityId(), MainRecordId: this._subjectRecordId, LinkedTableId: this._currentStepPage().EntityId, LinkedRecordId: this._currentStepPage().StepRecordId })\r\n\t\t\t\t.then((result) => {\r\n\t\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\t\tNotifier.Failed(NOTIFICATIONS.COULD_NOT_PROCEED_PLEASE_CREATE_THE_LINK_BETWEEN_ENTITIES\r\n\t\t\t\t\t\t\t.replace('{entity1}', mainEntityName)\r\n\t\t\t\t\t\t\t.replace('{entity2}', relatedEntityName));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}else{\t\t\t\r\n\t\t\tRecordLinker.LinkRecord({ TransactionId: this._transactionId, MainTableId: this.Screen.GetEntityId(), MainRecordId: this._subjectRecordId, LinkedTableId: this._currentStepPage().EntityId, LinkedRecordId: this._currentStepPage().StepRecordId })\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tNotifier.Failed(NOTIFICATIONS.COULD_NOT_PROCEED_PLEASE_CREATE_THE_LINK_BETWEEN_ENTITIES\r\n\t\t\t\t\t\t.replace('{entity1}', this.Screen.GetEntityName())\r\n\t\t\t\t\t\t.replace('{entity2}', relatedEntityName));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tSetActiveTab(tabIndex: number) {\r\n\t\tconst subControls = this._subControls();\r\n\t\tif (subControls[tabIndex]) {\r\n\t\t\tconst tab = <StepPage>subControls[tabIndex];\r\n\t\t\tif (this._currentStepPage()) {\r\n\t\t\t\tthis._currentStepPage().SetIsActive(false);\r\n\t\t\t}\r\n\t\t\ttab.SetIsActive(true);\r\n\t\t\ttab.Finish = false;\r\n\t\t\ttab.Wait = false;\r\n\t\t\ttab.Process = true;\r\n\t\t\tthis._currentStepPage(tab);\r\n\t\t\tthis._currentStepIndex(tabIndex);\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: any): void {\r\n\t}\r\n\r\n\tAddSubControl(control: IControl) {\r\n\t\tvar stepPage = control as StepPage;\r\n\t\tthis._subControls.push(control);\r\n\r\n\t\tif (this._currentStepPage()) {\r\n\t\t\tthis._currentStepPage().SetIsActive(false);\r\n\t\t}\r\n\t\tstepPage.SetIsActive(true);\r\n\t\tthis._currentStepPage(stepPage);\r\n\r\n\t\tstepPage.On(EVENTS.ON_TAB_CLICK, this, () => {\r\n\t\t\tif (this._currentStepPage()) {\r\n\t\t\t\tthis._currentStepPage().SetIsActive(false);\r\n\t\t\t}\r\n\t\t\tstepPage.SetIsActive(true);\r\n\t\t\tthis._currentStepPage(stepPage);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tRemoveControl(control: IControl) {\r\n\t\tvar wrappers = new Array<Element>(control.GetWrapper());\r\n\r\n\t\t_.each(this._currentStepPage().GetAllSubControls(),\r\n\t\t\t(subControl) => {\r\n\t\t\t\twrappers.push(subControl.GetWrapper());\r\n\t\t\t});\r\n\r\n\t\twrappers.map((el) => {\r\n\t\t\t$(control.GetWrapper()).add(el).fadeOut('slow', () => {\r\n\t\t\t\tvar subControls = this._subControls();\r\n\t\t\t\tvar tabPage = control as StepPage;\r\n\t\t\t\tthis._subControls.remove(control);\r\n\r\n\t\t\t\tif (tabPage.GetIsActive()) {\r\n\t\t\t\t\tif (this._currentStepIndex() <= subControls.length - 1) {\r\n\t\t\t\t\t\tthis.SetActiveTab(this._currentStepIndex());\r\n\t\t\t\t\t} else if (this._currentStepIndex() > 0) {\r\n\t\t\t\t\t\tthis.SetActiveTab(this._currentStepIndex() - 1);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._currentStepPage(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.SetActiveTabPage(this._currentStepPage());\r\n\t\t\t\t}\r\n\r\n\t\t\t\t(this.GetForm().GetScreen() as any).OnControlRemoved(control);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tPrevious() {\r\n\t\tconst tabPage = this._subControls()[this._subControls().indexOf(this._currentStepPage()) - 1] as StepPage;\r\n\t\tthis.SetActiveTabPage(tabPage);\r\n\t}\r\n\r\n\tNext() {\r\n\t\tconst tabPage = this._subControls()[this._subControls().indexOf(this._currentStepPage()) + 1] as StepPage;\r\n\t\tthis.SetActiveTabPage(tabPage);\r\n\t}\r\n\r\n\tget CurrentTabPage(): StepPage {\r\n\t\treturn this._currentStepPage();\r\n\t}\r\n\r\n\tSelectRecord({ recordId }: { recordId: number }) {\r\n\t\tthis.SetActiveTab(0);\r\n\r\n\t\tif (this._transactionId) {\r\n\t\t\tTransactionApi.Rollback({ Id: this._transactionId }).then(() => {\r\n\t\t\t\tthis._transactionId = Guid.NewGuid();\r\n\r\n\t\t\t\tTransactionApi.Start({ Id: this._transactionId }).then(() => {\r\n\t\t\t\t\tthis.RestartPulseTransaction();\r\n\t\t\t\t\tthis._currentStepPage().SelectRecord({ recordId, transactionId: this._transactionId });\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tthis._transactionId = Guid.NewGuid();\r\n\r\n\t\t\tTransactionApi.Start({ Id: this._transactionId }).then(() => {\r\n\t\t\t\tthis.RestartPulseTransaction();\r\n\t\t\t\tthis._currentStepPage().SelectRecord({ recordId, transactionId: this._transactionId });\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tSelectRecord2({ recordId }: { recordId: number }) {\r\n\t\tthis.SetActiveTab(0);\r\n\t\tthis._subjectRecordId = recordId;\r\n\t\tthis._transactionId = Guid.NewGuid();\r\n\t\tTransactionApi.Start({ Id: this._transactionId }).then(() => {\r\n\t\t\tthis.RestartPulseTransaction();\r\n\t\t\tthis._currentStepPage()?.LoadRecord({ entityId: this.Screen.GetEntityId(), recordId, subjectRecordId: this._subjectRecordId, transactionId: this._transactionId });\r\n\t\t});\r\n\t}\r\n\r\n\tDispose(): void {\r\n\t\tif (this._transactionId) {\r\n\t\t\tclearInterval(this._pulseTimer);\r\n\t\t\tTransactionApi.Rollback({ Id: this._transactionId });\r\n\t\t\tthis.ReleaseLock();\r\n\t\t}\r\n\t}\r\n\r\n\tRestartPulseTransaction() {\r\n\t\tclearInterval(this._pulseTimer);\r\n\t\tthis._pulseTimer = setInterval(() => {\r\n\t\t\tTransactionApi.Continue({ Id: this._transactionId });\r\n\t\t}, 10000);\r\n\t}\r\n} ","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <ul class=\\\"nav nav-tabs\\\"> <!-- ko foreach: _subControls --> <li data-bind=\\\"template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) }, css: { 'active': _isActive }, visible: _isVisible\\\" class=\\\"tab\\\" title=\\\"TabPage\\\"></li> <!-- /ko --> <!-- ko if: _isHiddenExist --> <li class=\\\"dropdown tabdrop\\\"> <a class=\\\"dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" href=\\\"#\\\" aria-expanded=\\\"false\\\"><i class=\\\"fa fa-ellipsis-v\\\"></i><b class=\\\"caret\\\"></b></a><ul class=\\\"dropdown-menu\\\"> <!-- ko foreach: _subControls --> <!-- ko if: !$data.GetIsVisible() --> <li class=\\\"active\\\"> <a data-bind=\\\"text: Label, click: $parent.SetTabIsVisible.bind($parent)\\\" href=\\\"#\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"true\\\">Section test</a> </li> <!-- /ko --> <!-- /ko --> </ul> </li> <li><a data-bind=\\\"click: $data.ShowAll.bind($data)\\\" class=\\\"\\\"><!-- ko text: _labels.SHOW_ALL --><!-- /ko --></a></li> <!-- /ko --> <!-- ko ifnot: _isHiddenExist --> <li data-bind=\\\"visible: _isShowHideButton\\\"><a data-bind=\\\"click: $data.SetTabsHidden.bind($data)\\\" class=\\\"\\\"><!-- ko text: _labels.HIDE --><!-- /ko --></a></li> <!-- /ko --> </ul> <!--ko with: _currentTabPage--> <div data-bind=\\\"css: {'wrapped-container-tab': $parent._isWrapped}\\\" class=\\\"tab-content clearfix\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper\\\"> <ul data-bind=\\\"dragula: {\\r\\n\\t\\t\\t\\t\\t\\tdata: _subControls,\\r\\n\\t\\t\\t\\t\\t\\tgroup: 'ToolBarToDesigner',\\r\\n\\t\\t\\t\\t\\t\\tafterDrop: $root.AfterDropTapPageControl.bind($root)\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"nav nav-tabs\\\"> <li class=\\\"tab tab-button parent-control FormDesignerView\\\" data-bind=\\\"css: {'active': IsActiveTabPage}\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </li> <!-- ko if: $index() === ($parent._subControls().length -1) --> <li class=\\\"tab addNewTabBtn onlyPlus\\\"> <a data-bind=\\\"click: $root.CreateStepPage.bind($root, $parent), preventBubble: ['click']\\\" class=\\\"tab-link createNewTab\\\" title=\\\"Create new Tab\\\">+</a> </li> <!-- /ko --> </ul> <!-- ko if: _subControls().length === 0 --> <ul class=\\\"nav nav-tabs\\\"> <li class=\\\"tab addNewTabBtn onlyPlus\\\"> <a data-bind=\\\"click: $root.CreateStepPage.bind($root), preventBubble: ['click']\\\" class=\\\"tab-link create-link createNewTab\\\" title=\\\"Create new Tab\\\">+</a> </li> </ul> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click, css: {'has-error': !_isValid()}\\\" class=\\\"tab-link\\\"> <span class=\\\"spreadsheet-background no-select\\\" data-bind=\\\"style: { backgroundColor: _tabSpreadsheetBackground() }, visible: _hasSpreadsheet\\\"></span> <span data-bind=\\\"text: Title\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This tab has required field\\\"></i> </a> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\n\r\nimport {RenderModes, EVENTS} from 'Core/Constant'\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\n\r\nimport TabPageConfigJson from \"Core/Controls/TabPage/Config/tab-page-config.json\";\r\n\r\nimport ViewTemplate from 'Core/Controls/TabPage/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/TabPage/Templates/HelpView.html'\r\nimport DesignTemplate from 'Core/Controls/TabPage/Templates/Design.html'\r\n\r\nko.templates['Core/Controls/TabPage/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/TabPage/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/TabPage/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/TabPage/Templates/Edit'] = ViewTemplate;\r\n\r\nexport class TabPage extends BaseControl {\r\n\t\r\n\tprivate _isTabSecurityProperties: KnockoutObservable<boolean>;\r\n\t_tabSpreadsheetBackground: KnockoutObservable<string>;\r\n\t_hasSpreadsheet: boolean;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, TabPageConfigJson);\r\n\t\tthis._isTabSecurityProperties = ko.observable(false);\r\n\t\tthis._tabSpreadsheetBackground = ko.observable(null);\r\n\t\tthis._hasSpreadsheet = null;\r\n\t\tthis.Init();\r\n\r\n\t\tthis.GetTemplateName = ko.computed(() => {\r\n\t\t\tvar template = RenderModes[this._renderMode()];\r\n\t\t\tvar templateName = `Core/Controls/TabPage/Templates/${template}`;\r\n\t\t\treturn templateName;\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tApplyProperties() {\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis._isActive = ko.observable(false);\r\n\t\tthis.AddEvent(EVENTS.ON_TAB_CLICK);\r\n\t}\r\n\r\n\tget IsActiveTabPage(): boolean {\r\n\t\treturn this._isActive();\r\n\t}\r\n\r\n\tSetSpreadsheetBackground(color: string): void {\r\n\t\tthis._tabSpreadsheetBackground(color);\r\n\t}\r\n\tSetHasSpreadsheet(data: boolean): void {\r\n\t\tthis._hasSpreadsheet = data;\r\n\t}\r\n\r\n\tSetValue(value: any): void {}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tthis.Trigger(EVENTS.ON_TAB_CLICK);\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n private GetName(): string {\r\n var translationList = this._model().NameTranslations;\r\n let currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n let currentLangItem = _.find(translationList, (item) => {\r\n return currentLang.Id === item.Language.K_Language;\r\n });\r\n if (currentLangItem) {\r\n this._getCurrentName = currentLangItem.Translation;\r\n }\r\n\r\n if (this._getCurrentName) {\r\n return this._getCurrentName;\r\n } else {\r\n return this._model().Name;\r\n }\r\n }\r\n\r\n\tget Title(): string {\r\n\t\treturn this.GetName() || TabPage.GetDefaultName();\r\n\t}\r\n\r\n\tIsTabSecurityProperties(): boolean {\r\n\t\t_.each(this.GeneralProperties.Groups, (group) => {\r\n\t\t\tlet tabSecurityProperty = group.Properties.filter(property => property.Type === 'TabSecurity');\r\n\r\n\t\t\tif (tabSecurityProperty) {\r\n\t\t\t\t_.each(tabSecurityProperty, (propertyModel)=>{\r\n\r\n\t\t\t\t\tif (!!propertyModel.Value && propertyModel.Value.TabSecuritySettings.length >= 1){\r\n\t\t\t\t\t\tthis._isTabSecurityProperties(true);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._isTabSecurityProperties(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthis._isTabSecurityProperties(false);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn this._isTabSecurityProperties();\r\n\t}\r\n\r\n\tget TabSecurityProperties(): boolean {\r\n\t\treturn this.IsTabSecurityProperties();\r\n\t}\r\n\r\n\tstatic GetDefaultName() {\r\n\t\treturn LABELS.NEW_TAB;\r\n\t}\r\n\r\n\tIsValid(): boolean {\r\n\t\tvar isValid = true;\r\n\t\t_.each(this._subControls(), control => {\r\n\t\t\tif (!control.IsValid()) {\r\n\t\t\t\tisValid = false;\r\n\t\t\t\tthis.SetIsVisible(true);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._isValid(isValid);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tAddSubControl(control: IControl) {\r\n\t\tthis._subControls.push(control);\r\n\t}\r\n}","// Module\nvar code = \"<button data-bind=\\\"css: { 'active': _isActive }\\\" class=\\\"tab tab-button\\\"> <div class=\\\"close-wrapper\\\"> <span data-bind=\\\"click: $root.RemoveControl.bind($root, $parent), preventBubble: ['click']\\\" class=\\\"close remove-control\\\" title=\\\"Remove control\\\"> <svg viewBox=\\\"0 0 24 24\\\" style=\\\"\\\"> <path d=\\\"M22.2,4c0,0,0.5,0.6,0,1.1l-6.8,6.8l6.9,6.9c0.5,0.5,0,1.1,0,1.1L20,22.3c0,0-0.6,0.5-1.1,0L12,15.4l-6.9,6.9c-0.5,0.5-1.1,0-1.1,0L1.7,20c0,0-0.5-0.6,0-1.1L8.6,12L1.7,5.1C1.2,4.6,1.7,4,1.7,4L4,1.7c0,0,0.6-0.5,1.1,0L12,8.5l6.8-6.8c0.5-0.5,1.1,0,1.1,0L22.2,4z\\\"></path> </svg> </span> </div> <a data-bind=\\\"text: Title, click: Click, preventBubble: ['click']\\\" class=\\\"tab-link\\\"></a> <i data-bind=\\\"click: $root.ShowControlEditor.bind($root, $data), preventBubble: ['click']\\\" class=\\\"fa fa-edit\\\"></i> <i data-bind=\\\"visible: TabSecurityProperties || _isTabSecurityProperties()\\\" class=\\\"fa fa-info-circle tabSecurityPropertiesIcon\\\"></i> </button>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click, css: {'has-error': !_isValid()}\\\" class=\\\"tab-link\\\"> <span data-bind=\\\"text: Title\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This tab has required field\\\"></i> </a> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: IsTabs --> <div class=\\\"tab-wrapper\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <ul class=\\\"nav nav-tabs\\\"> <!-- ko foreach: _subControls --> <li data-bind=\\\"template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) }, css: { 'active': _isActive }, visible: _isVisible, attr:{'title': Title}\\\" class=\\\"tab\\\" title=\\\"TabPage\\\"></li> <!-- /ko --> <!-- ko if: _isHiddenExist --> <li class=\\\"dropdown tabdrop\\\"> <a class=\\\"dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" href=\\\"#\\\" aria-expanded=\\\"false\\\"><i class=\\\"fa fa-ellipsis-v\\\"></i><b class=\\\"caret\\\"></b></a><ul class=\\\"dropdown-menu\\\"> <!-- ko foreach: _subControls --> <!-- ko if: !$data.GetIsVisible() --> <li class=\\\"active\\\"> <a data-bind=\\\"text: Label, click: $parent.SetTabIsVisible.bind($parent)\\\" href=\\\"#\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"true\\\">Section test</a> </li> <!-- /ko --> <!-- /ko --> </ul> </li> <li><a data-bind=\\\"click: $data.ShowAll.bind($data), attr:{'title': _labels.SHOW_ALL}\\\" class=\\\"tabShowAll\\\"><!-- ko text: _labels.SHOW_ALL --><!-- /ko --></a></li> <!-- /ko --> <!-- ko ifnot: _isHiddenExist --> <li data-bind=\\\"visible: _isShowHideButton\\\"><a data-bind=\\\"click: $data.SetTabsHidden.bind($data), attr:{'title': _labels.HIDE}\\\" class=\\\"tabHideButton\\\"><!-- ko text: _labels.HIDE --><!-- /ko --></a></li> <!-- /ko --> </ul> <!--ko with: _currentTabPage--> <div data-bind=\\\"css: {'wrapped-container-tab': $parent._isWrapped}\\\" class=\\\"tab-content tab-page-result clearfix\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> <!--/ko--> </div> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport 'lockr';\r\n\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {CONTROL_TYPES, EVENTS, RenderModes} from 'Core/Constant'\r\nimport {IControlParam, IForm} from 'Core/Screens/IScreen'\r\nimport {TabPage} from 'Core/Controls/TabPage/TabPage'\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {IControl} from 'Core/Controls/IControl'\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel';\r\n\r\nimport {\r\n\tConfirmationDialog, EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n\tTypes as ConfirmationTypes\r\n} from \"../../Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {LABELS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {SpreadsheetControl} from \"../Spreadsheet/SpreadsheetControl\";\r\n\r\nimport ViewTemplate from 'Core/Controls/Tab/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/Tab/Templates/HelpView.html'\r\nimport DesignTemplate from 'Core/Controls/Tab/Templates/Design.html'\r\nimport ToolBarTemplate from 'Core/Controls/Tab/Templates/ToolBar.html'\r\nimport {EntityTypes} from \"Core/Controls/Grid/BaseGrid/Enums/EntityTypes\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {Agenda} from \"../Agenda/Agenda\";\r\n\r\nko.templates['Core/Controls/Tab/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Tab/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Tab/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Tab/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Tab/Templates/Design'] = DesignTemplate;\r\n\r\nexport const SpreadsheetStatusColor = {\r\n\tVALID: \"#5ad539\",\r\n\tNOT_VALID: \"#FF3838\",\r\n\tEMPTY: \"#A4ABB6\"\r\n};\r\n\r\nexport class Tab extends BaseControl {\r\n\tprivate _currentTabPage: KnockoutObservable<TabPage> = ko.observable(null);\r\n\tprivate _currentTabIndex: number;\r\n\tprivate _dateRange: number;\r\n\tprivate _isHiddenExist: KnockoutObservable<boolean>;\r\n\tprivate _isShowHideButton: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._currentTabIndex = 0;\r\n\t\tthis._dateRange = 5;\r\n\t\tthis._isHiddenExist = ko.observable(false);\r\n\t\tthis._isShowHideButton = ko.observable(false);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n ApplyProperties(){}\r\n\r\n\tget Tabs() {\r\n\t\treturn this._subControls;\r\n\t}\r\n\r\n\tGetForm(): IForm {\r\n\t\treturn this._form;\r\n\t}\r\n\r\n\tget IsTabs(): boolean{\r\n\t\treturn (this._subControls().length > 0);\r\n\t}\r\n\r\n\tSpreadsheetSetActiveTabPage(page: TabPage, pageHasSpreadsheet: boolean, subControlsArr: IControl[], eventArgs: any): void {\r\n\t\tconst tabPage = <TabPage>eventArgs.source;\r\n\r\n\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: CONFIRMATIONS.YOU_CAN_LOSE_UNSAVED_DATA_IF_YOU_LEAVE,\r\n\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\tTextConfirm: LABELS.OK,\r\n\t\t\tTextDecline: LABELS.CANCEL\r\n\t\t});\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\tthis.ChangeTabPageBackground(page, pageHasSpreadsheet, subControlsArr);\r\n\t\t\tthis.SetActiveTabPage(tabPage, eventArgs.source._parentControl.GetControlId());\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n\t\t\treturn;\r\n\t\t});\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n\r\n\tIsSpreadsheetValid(page: TabPage) {\r\n\t\t_.each(page.GetSubControls(), control => {\r\n\t\t\tif (control instanceof SpreadsheetControl) {\r\n\t\t\t\treturn control.IsValid();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tconst hidingDays = GlobalManager.Instance.GetGlobal(GLOBALS.TAB_HIDING_DAYS);\r\n\t\tconst subControls = this._subControls();\r\n const controlId = this.GetControlId();\r\n\r\n\t\tif (hidingDays) {\r\n\t\t\tthis._dateRange = parseInt(hidingDays);\r\n\t\t}\r\n\r\n\t\tconst spreadsheetControls: IControl[] = _.filter(subControls,(control: IControl)=> control.HasSubControl('Spreadsheet'));\r\n\t\tconst emptySpreadsheets: boolean = _.every(spreadsheetControls, (control)=> control.HasSubControl('Spreadsheet') && !control.GetModel().HasSpreadsheetData);\r\n\t\tconst thereAreSeveralSpreadsheet = spreadsheetControls.length && spreadsheetControls.length > 1;\r\n\t\t// let isValidSpreadsheet: IControl = _.find(subControls,(control: IControl)=> control.GetModel().HasSpreadsheet && control.GetModel().HasSpreadsheetData);\r\n\t\t// let isValidGreySpreadsheet: IControl = _.find(subControls,(control: IControl)=> control.GetModel().HasSpreadsheet && control.GetModel()._tabSpreadsheetBackground() === '#5ad539');\r\n\r\n\t\tsubControls.forEach((page: TabPage, num: number, subControlsArr: IControl[]) => {\r\n\t\t\tconst pageHasSpreadsheet = page.HasSubControl('Spreadsheet');\r\n\t\t\tpage.SetHasSpreadsheet(pageHasSpreadsheet);\r\n\t\t\tthis.SetTabPageBackground(page, pageHasSpreadsheet, emptySpreadsheets);\r\n\r\n page.On(EVENTS.ON_TAB_CLICK, this, (eventArgs: any) => {\r\n const tabPage = <TabPage>eventArgs.source;\r\n\t\t\t\tlet currentPageHasSpreadsheet: boolean = this._currentTabPage().HasSubControl('Spreadsheet');\r\n\r\n\t\t\t\tif (pageHasSpreadsheet && this._renderMode() === RenderModes.Edit && thereAreSeveralSpreadsheet){\r\n\r\n\t\t\t\t\t// _.each(page.GetSubControls(), (control)=>{\r\n\t\t\t\t\t// \tif (control instanceof SpreadsheetControl){\r\n\t\t\t\t\t// \t\tcontrol.IsValid();\r\n\t\t\t\t\t// \t\tdebugger;\r\n\t\t\t\t\t// \t}\r\n\t\t\t\t\t// })\r\n\t\t\t\t\tif (this.IsSpreadsheetValid(tabPage)) {\r\n\t\t\t\t\t\tthis.ChangeTabPageSpreadsheetLogic(pageHasSpreadsheet, currentPageHasSpreadsheet, emptySpreadsheets, page, subControlsArr, eventArgs);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (currentPageHasSpreadsheet && this._renderMode() === RenderModes.Edit && thereAreSeveralSpreadsheet) {\r\n\t\t\t\t\t\tif (this.IsSpreadsheetValid(tabPage)) {\r\n\t\t\t\t\t\t\tthis.SpreadsheetSetActiveTabPage(page, pageHasSpreadsheet, subControlsArr, eventArgs);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.IsSpreadsheetValid(tabPage)) {\r\n\t\t\t\t\t\tthis.SetActiveTabPage(tabPage, eventArgs.source._parentControl.GetControlId());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n });\r\n });\r\n\r\n\t\tlet validSpreadsheet = _.find(spreadsheetControls, (control: IControl)=> control.GetModel().HasSpreadsheetData);\r\n\t\tif (validSpreadsheet && thereAreSeveralSpreadsheet) {\r\n\t\t\tlet spreadsheetActiveTabPage = validSpreadsheet as TabPage;\r\n\t\t\tthis.SetActiveTabPage(spreadsheetActiveTabPage, spreadsheetActiveTabPage.GetParentControl().GetControlId());\r\n\t\t}\r\n\r\n\t\tconst tabsParams = UserVarsManager.Instance.GetTabsParams();\r\n\t\tconst activityStorage = tabsParams ? tabsParams.tabsActivityStorage || {} : {};\r\n\r\n\t\tif (_.isEmpty(activityStorage[controlId])) {\r\n\t\t\tconst startDate = new Date();\r\n\t\t\tthis._isHiddenExist(false);\r\n\t\t\tstartDate.setDate(startDate.getDate() - 1);\r\n\t\t\tactivityStorage[controlId] = {};\r\n subControls.forEach(control => activityStorage[controlId][control.GetControlId()] = startDate.getTime());\r\n\r\n\t\t\tUserVarsManager.Instance.SetTabsParams(null, activityStorage);\r\n\t\t} else {\r\n\t\t\tthis.SetTabsHidden();\r\n\t\t}\r\n\r\n\t\tlet tab = this.GetSourceTab() || this.GetPreselectTab();\r\n\t\tconst activeTab = tab as TabPage;\r\n\t\tLockr.rm(LOCAL_STORAGE.HYPERLINK_SOURCE);\r\n\r\n\t\tif (activeTab) {\r\n\t\t\tthis.ActiveTabSetSpreadsheetBackground(activeTab);\r\n\t\t\tactiveTab.SetIsVisible(true);\r\n\t\t\tthis.SetActiveTab(subControls.indexOf(activeTab));\r\n\t\t\tthis.SetTabIsVisible(<TabPage>activeTab);\r\n\r\n this.SetActiveTabPage(<TabPage>activeTab);\r\n\t\t} else {\r\n const firstVisible: IControl | TabPage = subControls.find((subControl: IControl | TabPage) => subControl.GetIsVisible());\r\n\r\n if (firstVisible) {\r\n\t\t\t\tthis.ActiveTabSetSpreadsheetBackground(firstVisible as TabPage);\r\n this.SetActiveTabPage(<TabPage>firstVisible);\r\n } else if (subControls.length >= 1) {\r\n\t\t\t\tthis.ActiveTabSetSpreadsheetBackground(subControls[0] as TabPage);\r\n subControls[0].SetIsVisible(true);\r\n this.SetActiveTabPage(<TabPage>subControls[0]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ActiveTabSetSpreadsheetBackground(activeTab: TabPage): void {\r\n\t\tif (activeTab && activeTab.HasSubControl('Spreadsheet')) {\r\n\t\t\tactiveTab.SetSpreadsheetBackground(SpreadsheetStatusColor.VALID);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate GetPreselectTab() {\r\n\t\tlet preSelectedTab = UserVarsManager.Instance.GetTabsParams();\r\n\t\tif (preSelectedTab && this._form) {\r\n\t\t\tconst preselectedTabData: any = _.where(preSelectedTab.activeTabPageCIDs, {screenId: this._form.GetScreen().GetScreenId()})[0];\r\n\t\t\tif (!preselectedTabData) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tvar tabToSelect = <TabPage>this._subControls().filter((control) => {\r\n\t\t\t\treturn control.GetControlId() === preselectedTabData.activeTabPageCID;\r\n\t\t\t})[0];\r\n\t\t\tif (tabToSelect) {\r\n\t\t\t\treturn tabToSelect;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate GetSourceTab() {\r\n\t\tconst sourceEntityId = parseInt(Lockr.get(LOCAL_STORAGE.HYPERLINK_SOURCE));\r\n\r\n\t\tif (!sourceEntityId) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst tabPageControls = this.GetSubControls();\r\n\t\tconst tabPageSubControls = _.flatten(tabPageControls.map(tabPage => tabPage.GetSubControls()));\r\n\t\tconst gridControls = tabPageSubControls.filter(control => control.GetType() === CONTROL_TYPES.Grid);\r\n\r\n\t\tconst sourceGrid = _.find<BaseControl>(gridControls, grid => {\r\n\t\t\tconst attachedField = _.find(grid.Model.Fields, (field: AttachedFieldModel) => field.EntityTypeName === EntityTypes[EntityTypes.Entity]);\r\n\t\t\treturn attachedField && attachedField.EntityId === sourceEntityId;\r\n\t\t});\r\n\r\n\t\treturn sourceGrid && sourceGrid.GetParentControl();\r\n\t}\r\n\r\n\tSetTabsHidden() {\r\n\t\tconst tabParams = UserVarsManager.Instance.GetTabsParams();\r\n\t\tconst activityStorage = tabParams ? tabParams.tabsActivityStorage : {};\r\n\t\tconst subControls = this._subControls();\r\n\t\tconst controlId = this.GetControlId();\r\n\r\n\t\tif(subControls.length > 1) {\r\n\t\t\tlet hiddenTabs = 0;\r\n\t\t\tsubControls.forEach(control => {\r\n const activeDate = activityStorage[controlId][control.GetControlId()];\r\n if (activeDate) {\r\n const oneDay = 86400000;\r\n const date1 = new Date(activeDate);\r\n const date2 = new Date();\r\n const diffDays = Math.round(Math.abs((date2.getTime() - date1.getTime()) / (oneDay)));\r\n\r\n if (diffDays > this._dateRange && !control.GetIsActive()) {\r\n control.SetIsVisible(false);\r\n this._isHiddenExist(true);\r\n hiddenTabs++\r\n }\r\n }\r\n\t\t\t});\r\n\t\t\tif(hiddenTabs === subControls.length) {\r\n const activeTab = <TabPage>(subControls.find(control => control.GetIsActive()) || subControls[0]);\r\n this.SetActiveTabPage(activeTab);\r\n this.SetTabIsVisible(activeTab);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._isShowHideButton(false);\r\n\t}\r\n\r\n\tSetActiveTabPage(tabPage: TabPage, parentControlId?: number) {\r\n const controlId = this.GetControlId();\r\n const subControls = this._subControls();\r\n\t\tconst currentPage = this._currentTabPage();\r\n const tabControlId = tabPage.GetControlId();\r\n const activeSubControl = tabPage.GetAllSubControls().find(control => control.GetIsActive());\r\n const firstSubControl = tabPage.GetAllSubControls().length && tabPage.GetAllSubControls().length > 1 ? tabPage.GetAllSubControls()[1].GetControlId() : null;\r\n const activeSubControlId = (activeSubControl) ? activeSubControl.GetControlId() : firstSubControl;\r\n const storageTabsParams = UserVarsManager.Instance.GetTabsParams();\r\n const activityStorage = storageTabsParams ? storageTabsParams.tabsActivityStorage : {};\r\n const isShowHideButton = this._isShowHideButton();\r\n\r\n\t\tif (currentPage) {\r\n currentPage.SetIsActive(false);\r\n\t\t}\r\n\r\n\t\ttabPage.SetIsActive(true);\r\n\r\n\t\tthis._currentTabIndex = this._subControls().indexOf(tabPage);\r\n\t\tthis._currentTabPage(tabPage);\r\n\r\n\t\tif (parentControlId) {\r\n\t\t\tif (!activityStorage[parentControlId]) {\r\n\t\t\t\tactivityStorage[parentControlId] = {};\r\n\t\t\t}\r\n\t\t\tactivityStorage[parentControlId][tabControlId] = Date.now();\r\n\t\t}\r\n\r\n\t\tconst screen = this._form && this._form.GetScreen();\r\n\r\n\t\tif (screen) {\r\n\t\t\tUserVarsManager.Instance.SetTabsParams({\r\n\t\t\t\tscreenId: screen.GetScreenId(),\r\n\t\t\t\tactiveTabPageCID: tabControlId\r\n\t\t\t}, activityStorage);\r\n\t\t\tscreen.SetState( {ActiveControlId: tabControlId, ActiveSubControlId: activeSubControlId});\r\n\t\t}\r\n\r\n\t\tif(isShowHideButton) {\r\n\t\t\tlet i = 0;\r\n\t\t\tlet needToHideButton = true;\r\n\t\t\twhile (i < subControls.length) {\r\n\t\t\t\tconst control = subControls[i];\r\n\t\t\t\tconst activeDate = activityStorage[controlId][control.GetControlId()];\r\n\t\t\t\tif (activeDate) {\r\n\t\t\t\t\tconst oneDay = 86400000;\r\n\t\t\t\t\tconst date1 = new Date(activeDate);\r\n\t\t\t\t\tconst date2 = new Date();\r\n\t\t\t\t\tconst diffDays = Math.round(Math.abs((date2.getTime() - date1.getTime()) / (oneDay)));\r\n\r\n if (diffDays >= this._dateRange) {\r\n needToHideButton = false;\r\n break;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n \tneedToHideButton && this._isShowHideButton(false);\r\n\t\t}\r\n\t}\r\n\r\n\tSetActiveTab(tabIndex: number, defaultParams?: {controlId: number, params, action? :string, control?: any}) {\r\n\t\tconst subControls = this._subControls();\r\n\t\tif (subControls[tabIndex]) {\r\n\t\t\tconst tab = <TabPage>subControls[tabIndex];\r\n\t\t\tif (this._currentTabPage()) {\r\n\t\t\t\tthis._currentTabPage().SetIsActive(false);\r\n\t\t\t}\r\n\t\t\ttab.SetIsActive(true);\r\n\r\n this._currentTabPage(tab);\r\n this._currentTabIndex = tabIndex;\r\n\r\n\t\t\tif (defaultParams) {\r\n\t\t\t\tswitch (defaultParams.action) {\r\n\t\t\t\t\tcase 'OpenReplanMode' : {\r\n if (defaultParams.control) {\r\n defaultParams.control.SetRePlanMode(defaultParams.params);\r\n }\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n case 'ReturnFromScheduler' : {\r\n\t\t\t\t\t\t//go to agenda\r\n const controlAgenda = _.find(tab.GetSubControls(), (item) => {\r\n return (item.GetModel().Id === defaultParams.controlId) && (item.GetType() === CONTROL_TYPES.Agenda);\r\n }) as Agenda;\r\n\r\n if (controlAgenda) {\r\n controlAgenda.ReturnFromScheduler(defaultParams.params);\r\n }\r\n break;\r\n }\r\n case 'HyperlinkAgenda' : {\r\n\t\t\t\t\t\t//go to agenda\r\n const controlAgenda = _.find(tab.GetSubControls(), (item) => {\r\n return (item.GetModel().Id === defaultParams.controlId) && (item.GetType() === CONTROL_TYPES.Agenda);\r\n }) as Agenda;\r\n if (controlAgenda) {\r\n controlAgenda.SetStarting(defaultParams.params.starting);\r\n }\r\n break;\r\n }\r\n\t\t\t\t\tdefault : break;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: any): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tAddSubControl(control: IControl) {\r\n\t\tvar tabPage = control as TabPage;\r\n\t\tthis._subControls.push(control);\r\n\r\n\t\tif (this._currentTabPage()) {\r\n\t\t\tthis._currentTabPage().SetIsActive(false);\r\n\t\t}\r\n\t\ttabPage.SetIsActive(true);\r\n\t\tthis._currentTabPage(tabPage);\r\n\r\n\t\ttabPage.On(EVENTS.ON_TAB_CLICK, this, (evntArgs: any) => {\r\n\t\t\tvar tabPage = <TabPage>evntArgs.source;\r\n\r\n\t\t\tif (this._currentTabPage()) {\r\n\t\t\t\tthis._currentTabPage().SetIsActive(false);\r\n\t\t\t}\r\n\t\t\ttabPage.SetIsActive(true);\r\n\t\t\tthis._currentTabPage(tabPage);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tRemoveControl(control: IControl) {\r\n\t\tvar wrappers = new Array<Element>(control.GetWrapper());\r\n\r\n\t\t_.each(this._currentTabPage().GetAllSubControls(),\r\n\t\t\t(subControl) => {\r\n\t\t\t\twrappers.push(subControl.GetWrapper());\r\n\t\t\t});\r\n\r\n\t\twrappers.map((el) => {\r\n\t\t\t$(control.GetWrapper()).add(el).fadeOut('slow', () => {\r\n\t\t\t\tvar subControls = this._subControls();\r\n\t\t\t\tvar tabPage = control as TabPage;\r\n\t\t\t\tthis._subControls.remove(control);\r\n\r\n\t\t\t\tif (tabPage.GetIsActive()) {\r\n\t\t\t\t\tif (this._currentTabIndex <= subControls.length - 1) {\r\n\t\t\t\t\t\tthis.SetActiveTab(this._currentTabIndex);\r\n\t\t\t\t\t} else if (this._currentTabIndex > 0) {\r\n\t\t\t\t\t\tthis.SetActiveTab(this._currentTabIndex - 1);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._currentTabPage(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.SetActiveTabPage(this._currentTabPage());\r\n\t\t\t\t}\r\n\r\n\t\t\t\t(this.GetForm().GetScreen() as any).OnControlRemoved(control);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tget CurrentTabPage(): TabPage {\r\n\t\treturn this._currentTabPage();\r\n\t}\r\n\r\n\tShowAll() {\r\n\t\t_.each(this._subControls(), subControl => {\r\n\t\t\tsubControl.SetIsVisible(true);\r\n\t\t});\r\n\t\tthis._isHiddenExist(false);\r\n\t\tthis._isShowHideButton(true);\r\n\t}\r\n\r\n\tSetTabIsVisible(control: IControl) {\r\n\t\tcontrol.SetIsVisible(true);\r\n\t\tthis.SetActiveTabPage(<TabPage>control, this.GetControlId());\r\n\t\tthis._isHiddenExist(this._subControls().some(x => !x.GetIsVisible()));\r\n\t\tif (!this._subControls().some(x => !x.GetIsVisible())) {\r\n\t\t\tthis._isShowHideButton(false);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tSetTabPageBackground(page: TabPage, pageHasSpreadsheet: boolean, emptySpreadsheets: boolean): void {\r\n\t\tconst model: ControlModel = page.GetModel();\r\n\t\tif (pageHasSpreadsheet) {\r\n\t\t\tlet background: string = emptySpreadsheets ? SpreadsheetStatusColor.EMPTY : model.HasSpreadsheetData ? SpreadsheetStatusColor.VALID : SpreadsheetStatusColor.NOT_VALID;\r\n\t\t\tif (page.IsActiveTabPage) {\r\n\t\t\t\tbackground = model.HasSpreadsheetData ? SpreadsheetStatusColor.VALID : SpreadsheetStatusColor.NOT_VALID;\r\n\t\t\t}\r\n\t\t\tpage.SetSpreadsheetBackground(background);\r\n\t\t}\r\n\t}\r\n\r\n\tChangeTabPageBackground(page: TabPage, pageHasSpreadsheet: boolean, subControlsArr: IControl[]): void {\r\n\t\tif (pageHasSpreadsheet){\r\n\t\t\tlet allSpreadsheetsExceptSelectedOne = _.filter(subControlsArr,(control: IControl)=> control.HasSubControl('Spreadsheet') && control.GetGuid() != page.GetGuid());\r\n\t\t\tallSpreadsheetsExceptSelectedOne.forEach((pageControl: TabPage) => pageControl.SetSpreadsheetBackground(SpreadsheetStatusColor.NOT_VALID));\r\n\t\t\tpage.SetSpreadsheetBackground(SpreadsheetStatusColor.VALID);\r\n\t\t}\r\n\t}\r\n\r\n\tChangeTabPageSpreadsheetLogic(\r\n\t\tpageHasSpreadsheet: boolean,\r\n\t\tcurrentPageHasSpreadsheet: boolean,\r\n\t\temptySpreadsheets: boolean,\r\n\t\tpage: TabPage,\r\n\t\tsubControlsArr: IControl[],\r\n\t\teventArgs: any): void {\r\n\r\n\t\tconst tabPage = <TabPage>eventArgs.source;\r\n\r\n\t\tif (page.Guid === this._currentTabPage().Guid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (currentPageHasSpreadsheet) {\r\n\t\t\tthis.SpreadsheetSetActiveTabPage(page, pageHasSpreadsheet, subControlsArr, eventArgs);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!currentPageHasSpreadsheet && pageHasSpreadsheet) {\r\n\t\t\tif (emptySpreadsheets) {\r\n\t\t\t\tthis.ChangeTabPageBackground(page, pageHasSpreadsheet, subControlsArr);\r\n\t\t\t\tthis.SetActiveTabPage(tabPage, eventArgs.source._parentControl.GetControlId());\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.ChangeTabPageBackground(page, pageHasSpreadsheet, subControlsArr);\r\n\t\t\tthis.SetActiveTabPage(tabPage, eventArgs.source._parentControl.GetControlId());\r\n\t\t}\r\n\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-plus\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <ul class=\\\"nav nav-tabs\\\"> <!-- ko foreach: _subControls --> <li data-bind=\\\"template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) }, css: { 'active': _isActive }, visible: _isVisible\\\" class=\\\"tab\\\" title=\\\"TabPage\\\"></li> <!-- /ko --> <!-- ko if: _isHiddenExist --> <li class=\\\"dropdown tabdrop\\\"> <a class=\\\"dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" href=\\\"#\\\" aria-expanded=\\\"false\\\"><i class=\\\"fa fa-ellipsis-v\\\"></i><b class=\\\"caret\\\"></b></a><ul class=\\\"dropdown-menu\\\"> <!-- ko foreach: _subControls --> <!-- ko if: !$data.GetIsVisible() --> <li class=\\\"active\\\"> <a data-bind=\\\"text: Label, click: $parent.SetTabIsVisible.bind($parent)\\\" href=\\\"#\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"true\\\">Section test</a> </li> <!-- /ko --> <!-- /ko --> </ul> </li> <li><a data-bind=\\\"click: $data.ShowAll.bind($data)\\\" class=\\\"\\\"><!-- ko text: _labels.SHOW_ALL --><!-- /ko --></a></li> <!-- /ko --> <!-- ko ifnot: _isHiddenExist --> <li data-bind=\\\"visible: _isShowHideButton\\\"><a data-bind=\\\"click: $data.SetTabsHidden.bind($data)\\\" class=\\\"\\\"><!-- ko text: _labels.HIDE --><!-- /ko --></a></li> <!-- /ko --> </ul> <!--ko with: _currentTabPage--> <div data-bind=\\\"css: {'wrapped-container-tab': $parent._isWrapped}\\\" class=\\\"tab-content clearfix\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper\\\"> <ul data-bind=\\\"dragula: {\\r\\n\\t\\t\\t\\t\\t\\tdata: _subControls,\\r\\n\\t\\t\\t\\t\\t\\tgroup: 'ToolBarToDesigner',\\r\\n\\t\\t\\t\\t\\t\\tafterDrop: $root.AfterDropTapPageControl.bind($root)\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"nav nav-tabs\\\"> <li class=\\\"tab tab-button parent-control FormDesignerView\\\" data-bind=\\\"css: {'active': IsActiveTabPage}\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </li> <!-- ko if: $index() === ($parent._subControls().length -1) --> <li class=\\\"tab addNewTabBtn onlyPlus\\\"> <a data-bind=\\\"click: $root.CreateTab.bind($root, $parent), preventBubble: ['click']\\\" class=\\\"tab-link createNewTab\\\" title=\\\"Create new Tab\\\">+</a> </li> <!-- /ko --> </ul> <!-- ko if: _subControls().length === 0 --> <ul class=\\\"nav nav-tabs\\\"> <li class=\\\"tab addNewTabBtn onlyPlus\\\"> <a data-bind=\\\"click: $root.CreateTab.bind($root), preventBubble: ['click']\\\" class=\\\"tab-link create-link createNewTab\\\" title=\\\"Create new Tab\\\">+</a> </li> <li class=\\\"tab addNewTabBtn\\\"> <a data-bind=\\\"click: $root.InitializeTabs.bind($root), preventBubble: ['click']\\\" class=\\\"tab-link\\\" title=\\\"Initialize\\\">Initialize</a> </li> </ul> <!-- /ko --> <!-- ko with: _currentTabPage --> <div data-bind=\\\"dragula: { data: _subControls, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropControl.bind($root) }\\\" class=\\\"active-tab-result tab-page-result dropcontrol-container\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import {deserialize} from \"libs/cerialize\";\r\nimport { deserializeAs } from \"libs/cerialize\";\r\nimport * as ko from \"knockout\";\r\n\r\nexport class TagModel {\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTagId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tGroupId: number;\r\n\r\n\t@deserialize\r\n\tGroupName: string;\r\n}\r\n\r\nexport class TagGroupModel {\r\n\tconstructor() {\r\n\t\tthis.Tags = [];\r\n\t\tthis.GroupName = '';\r\n\t}\r\n\r\n\tGroupId: number;\r\n\r\n\tGroupName: string;\r\n\r\n\tTags: Array<TagModel>;\r\n}\r\n\r\nexport class TagListScreenModel {\r\n\t@deserialize\r\n\tScreenId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: number;\r\n}\r\n\r\nexport class TagsScreenDataModel {\r\n\tconstructor() {\r\n\t\tthis.Tags = [];\r\n\t\tthis.TagListScreens = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tControlId: number;\r\n\r\n\t@deserializeAs(TagModel)\r\n\tTags: Array<TagModel>;\r\n\r\n\t@deserializeAs(TagListScreenModel)\r\n\tTagListScreens: Array<TagListScreenModel>;\r\n}\r\n\r\n","import { Request, IRequestOptions } from \"Core/Common/Request\";\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { URL } from \"Core/Common/Url\";\r\nimport {GenericDeserialize, Deserialize} from \"libs/cerialize\";\r\nimport {TagModel} from 'Core/Controls/Tag/Models/TagsScreenDataModel';\r\n\r\nexport class TagStore {\r\n\tstatic GetTags(expression: string, tagScope: number, controlId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.TAG.GET_TAGS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: {\r\n\t\t\t\tExpression: expression,\r\n\t\t\t\tTagScopeId: tagScope,\r\n\t\t\t\tControlId: controlId\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultList);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail((err) => deferredResult.reject({ message: err.message }));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetAllTags(tagScope: number, controlId: number, byScopedRecords: boolean, hideDisabled: boolean = false): P.Promise<Array<TagModel>> {\r\n\t\tlet deferredResult = P.defer<Array<TagModel>>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.TAG.GET_ALL_TAGS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: {\r\n\t\t\t\tControlId: controlId,\r\n\t\t\t\tTagScopeId: tagScope,\r\n\t\t\t\tByScopedRecords: byScopedRecords,\r\n\t\t\t\tHideDisabled: hideDisabled\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(Deserialize(data.ResultList, TagModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail((err) => deferredResult.reject({ message: err.message }));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import {serialize} from \"libs/cerialize\";\r\n\r\nexport class TagListChanges {\r\n\t@serialize\r\n\tControlId: number;\r\n\t@serialize\r\n\tDeletedTags: number[];\r\n\t@serialize\r\n\tAddedTags: number[];\r\n\r\n\tprivate _oldValues: number[];\r\n\r\n\tconstructor(controlId: number, oldValues: number[]) {\r\n\t\tthis.ControlId = controlId;\r\n\t\tthis._oldValues = !!oldValues ? oldValues : [];\r\n\t\tthis.AddedTags = [];\r\n\t\tthis.DeletedTags = [];\r\n\t}\r\n\r\n\tAddTag(tagId: number) {\r\n\t\tthis.DeletedTags = _.without(this.DeletedTags, tagId);\r\n\t\t\r\n\t\tif (this._oldValues.indexOf(tagId) < 0) {\r\n\t\t\tthis.AddedTags.push(tagId);\r\n\t\t}\r\n\t}\r\n\r\n\tDeleteTag(tagId: number) {\r\n\t\tthis.AddedTags = _.without(this.AddedTags, tagId);\r\n\t\t\r\n\t\tif (this._oldValues.indexOf(tagId) > -1) {\r\n\t\t\tthis.DeletedTags.push(tagId);\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {TagViewModel} from 'Core/Controls/Tag/ViewModels/TagViewModel';\r\n\r\nexport class TagGroupViewModel {\r\n\tprivate _tags: KnockoutObservableArray<TagViewModel>;\r\n\t\r\n\tconstructor(tags: Array<TagViewModel>, name: string) {\r\n\t\tthis._tags = ko.observableArray(tags);\r\n\t\tthis.GroupName = name;\r\n\t}\r\n\r\n\tGroupId: number;\r\n\r\n\tGroupName: string;\r\n\r\n\tget Tags(): Array<TagViewModel> {\r\n\t\treturn this._tags();\r\n\t}\r\n\r\n\tget SelectedTags() {\r\n\t\treturn this._tags().filter(tag => tag.IsSelected()).length;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nexport class TagViewModel {\r\n\tconstructor(\r\n\t\tpublic Name: string,\r\n\t\tpublic TagId: number,\r\n\t\tpublic GroupId: number,\r\n\t\tpublic TypeId: number\r\n\t) {\r\n\t\tthis.IsSelected = ko.observable(false);\r\n\t\tthis.IsExcluded = ko.observable(false);\r\n\t\tthis.IsEnabled = ko.observable(true);\r\n\t\tthis.IsFirstWord = false;\r\n\t}\r\n\r\n\tIsSelected: KnockoutObservable<boolean>;\r\n\tIsEnabled: KnockoutObservable<boolean>;\r\n\tIsExcluded: KnockoutObservable<boolean>;\r\n\tIsFirstWord: boolean;\r\n}","// Module\nvar code = \"<div class=\\\"tagbook\\\"> <!--<legend class=\\\"tagbook-legend\\\">TagBook</legend>--> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"pull-left\\\"> <a data-bind=\\\"click: Save\\\" tabindex=\\\"-1\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-save\\\"></i> <!--ko text: _labels.SAVE --><!-- /ko--> </a> <a data-bind=\\\"click: Cancel\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\" tabindex=\\\"-1\\\"> <i class=\\\"fa fa-close\\\"></i> <!--ko text: _labels.CANCEL --><!-- /ko--> </a> <a data-bind=\\\"click: Reset\\\" tabindex=\\\"-1\\\" class=\\\"btn red delete-button subFormControl\\\"> <i class=\\\"fa fa-trash\\\"></i> <!--ko text: _labels.RESET --><!-- /ko--> </a> </div> </div> </div> </form> </div> <div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"header\\\"> <div class=\\\"nav-panel\\\"> <ul class=\\\"first-letters-list\\\" data-bind=\\\"foreach: _firstLetters, css: {'first-letters-list-disabled': _mode() === 'group' && !_currentGroup()}\\\"> <li class=\\\"first-letters-item\\\"> <a class=\\\"btn btn-link\\\" data-bind=\\\"text: $data,\\r\\n\\t\\t\\t\\t\\t\\t\\t css: {active: $parent.IsActiveLetter($data)},\\r\\n\\t\\t\\t\\t\\t\\t\\t click: $parent.SelectLetter.bind($parent, $data)\\\" href=\\\"javascript:;\\\"> </a> </li> </ul> <!-- ko if: _currentGroup --> <div class=\\\"current-group\\\" data-bind=\\\"click: ClearCurrentGroup\\\"> <span class=\\\"current-group-name\\\" data-bind=\\\"text: _currentGroup().Name\\\"></span> <span><i class=\\\"fa fa-arrow-up\\\"></i></span> </div> <!-- /ko --> <ul class=\\\"menu-items-list\\\"> <li class=\\\"menu-item\\\"> <a class=\\\"btn btn-link\\\" data-bind=\\\"click: ChangeMode.bind($data, 'book'), css: {active: _mode() === 'book'}\\\" href=\\\"javascript:;\\\"><!--ko text: _labels.BOOK --><!-- /ko--></a> </li> <li class=\\\"menu-item\\\"> <a class=\\\"btn btn-link\\\" data-bind=\\\"click: ChangeMode.bind($data, 'group'), css: {active: _mode() === 'group'}\\\" href=\\\"javascript:;\\\"><!--ko text: _labels.GROUP --><!-- /ko--></a> </li> </ul> </div> <div class=\\\"selected-tags\\\"> <ul class=\\\"selected-tags-list\\\" data-bind=\\\"if: _selectedTagsLength\\\"> <!-- ko foreach: _changeModel.SelectedTags --> <li class=\\\"selected-tags-item\\\"> <div class=\\\"selected-tags-name\\\" data-bind=\\\"text: $data.Name\\\"></div> <div class=\\\"selected-tags-remove\\\" data-bind=\\\"click: $parent.RemoveTag.bind($parent, $data)\\\"> <i class=\\\"fa fa-close\\\"></i> </div> </li> <!-- /ko --> </ul> <div class=\\\"selected-tags-notags\\\" data-bind=\\\"if: _selectedTagsLength() === 0\\\"> <span><!--ko text: _labels.NO_TAGS_SELECTED --><!-- /ko--></span> </div> </div> </div> <div class=\\\"body\\\"> <!-- ko with: _tagbookList --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport TagbookTemplate from \"Core/Controls/Tag/Tagbook/TagbookList/TagbookListTemplate.html\";\r\nimport {TagViewModel} from 'Core/Controls/Tag/ViewModels/TagViewModel';\r\nimport { TagModel } from \"../../Models/TagsScreenDataModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport class TagbookList extends Event {\r\n\tprivate _taglist: TagViewModel[];\r\n\tprivate _taglistFilteredByGroup: TagViewModel[];\r\n\tprivate _columnCount: number;\r\n\tprivate _tagGroups: any[];\r\n\tprivate _itemsPerColumn: number;\r\n\tprivate _initialTaglist: TagViewModel[];\r\n\tprivate _mappedTagsList: KnockoutObservableArray<any>;\r\n\tprivate _mappedGroupsList: KnockoutObservableArray<any>;\r\n\tprivate _mode: KnockoutObservable<string>;\r\n\tprivate _groupId: number;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(taglist: TagViewModel[], tagGroups) {\r\n\t\tsuper();\r\n\r\n\t\tthis._taglist = [...taglist];\r\n\t\tthis._taglistFilteredByGroup = [];\r\n\t\tthis._initialTaglist = taglist;\r\n\t\tthis._tagGroups = tagGroups;\r\n\t\tthis._columnCount = 1;\r\n\t\tthis._mappedTagsList = ko.observableArray([]);\r\n\t\tthis._mappedGroupsList = ko.observableArray([]);\r\n\t\tthis._itemsPerColumn = 12;\r\n\t\tthis._mode = ko.observable('book');\r\n\t\tthis._groupId = null;\r\n\r\n\t\tthis.MapToViewlist();\r\n\t}\r\n\r\n\tChangeMode(nextMode: string): void {\r\n\t\tthis._mode(nextMode);\r\n\r\n\t\tthis.MapToViewlist();\r\n\t}\r\n\r\n\tprivate MapToViewlist() {\r\n\t\tlet list;\r\n\t\tlet mappedListObservable;\r\n\r\n\t\tif (this._mode() === 'book') {\r\n\t\t\tlist = this._taglist;\r\n\t\t\tmappedListObservable = this._mappedTagsList;\r\n\t\t} else if (this._mode() === 'group') {\r\n\t\t\tlist = this._tagGroups;\r\n\t\t\tmappedListObservable = this._mappedGroupsList;\r\n\t\t}\r\n\r\n\t\tconst mappedListLength = Math.ceil(list.length / this._itemsPerColumn);\r\n\t\tlet mappedList = Array(mappedListLength >= 2 ? mappedListLength : 2).fill(null);\r\n\r\n\t\tmappedList = mappedList.map((el) => []);\r\n\r\n\t\tlist.forEach((el, index) => {\r\n\t\t\tconst arrayIndex = Math.floor(index / this._itemsPerColumn);\r\n\t\t\tconst elementIndex = index % this._itemsPerColumn;\r\n\r\n\t\t\tmappedList[arrayIndex][elementIndex] = el;\r\n\t\t});\r\n\r\n\t\tmappedListObservable(mappedList);\r\n\r\n\t\t// console.log('mappedListObservable()', mappedListObservable());\r\n\r\n\t\t// mappedListObservable.valueHasMutated();\r\n\t}\r\n\r\n\tFilterList(firstLetter: string, groupId: any, isInGroupMode?: boolean) {\r\n\t\tlet groupId_ = groupId ? groupId.Id : null;\r\n\r\n\t\tif (firstLetter === LABELS.ALL) {\r\n\t\t\tif (groupId_ === null) {\r\n\t\t\t\tthis._taglist = this._initialTaglist;\r\n\t\t\t} else {\r\n\t\t\t\tthis._taglist = this._initialTaglist.filter((tag) => tag.GroupId === groupId_);\r\n\t\t\t}\r\n\r\n\t\t\tthis.MapToViewlist();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (groupId_ !== null && firstLetter !== null) {\r\n\t\t\tthis._taglist = this._initialTaglist.filter((tag) => tag.Name[0].toUpperCase() === firstLetter);\r\n\t\t\tthis._taglist = this._taglist.filter((tag) => tag.GroupId === groupId_);\r\n\t\t} else if (firstLetter !== null) {\r\n\t\t\tthis._taglist = this._initialTaglist.filter((tag) => tag.Name[0].toUpperCase() === firstLetter);\r\n\t\t} else if (groupId_ !== null) {\r\n\t\t\tthis._taglist = this._initialTaglist.filter((tag) => tag.GroupId === groupId_);\r\n\t\t}\r\n\r\n\t\tthis.MapToViewlist();\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tSelectTag(tag): void {\r\n\t\tthis.Trigger('TagSeleted', {data: tag});\r\n\t}\r\n\r\n\tSelectGroup(group): void {\r\n\t\tthis.Trigger('GroupSeleted', {data: group});\r\n\t}\r\n\r\n\tIdentifyGroupName(id: number): string {\r\n\t\treturn this._tagGroups.filter((group) => group.Id === id)[0].Name;\r\n\t}\r\n\r\n\tDisplayName(tag) {\r\n\t\tlet displayName = `<span>${tag.Name}</span>`;\r\n\r\n\t\tif (tag.IsFirstWord) {\r\n\t\t\tdisplayName = `<span class=\"first-word-letter\">${tag.Name[0]}</span><span>${tag.Name.slice(1)}</span>`\r\n\t\t}\r\n\r\n\t\treturn displayName;\r\n\t}\r\n\r\n\tGetTemplate(): any {\r\n\t\treturn TagbookTemplate;\r\n\t}\r\n}\r\n","// Module\nvar code = \"<div class=\\\"tagbook-list\\\"> <!-- ko if: _taglist.length --> <!-- ko if: _mode() === 'book' --> <!-- ko foreach: _mappedTagsList --> <ul class=\\\"taglist\\\" data-bind=\\\"if: $parent._taglist.length\\\"> <!-- ko foreach: $data --> <li class=\\\"taglist-item\\\" data-bind=\\\"click: $parents[1].SelectTag.bind($parents[1], $data)\\\"> <div class=\\\"taglist-tag\\\" data-bind=\\\"html: $parents[1].DisplayName($data)\\\"></div> <!-- ko if: $data.GroupId !== 0 --> - <div class=\\\"taglist-tag-group\\\" data-bind=\\\"text: $parents[1].IdentifyGroupName(GroupId), tooltip: {content: $parents[1].IdentifyGroupName(GroupId)}\\\"></div> <!-- /ko --> </li> <!-- /ko --> </ul> <!-- /ko --> <!-- /ko --> <!-- ko if: _mode() === 'group' --> <!-- ko foreach: _mappedGroupsList --> <ul class=\\\"taglist\\\" data-bind=\\\"if: $parent._taglist.length\\\"> <!-- ko foreach: $data --> <li class=\\\"taglist-item\\\" data-bind=\\\"click: $parents[1].SelectGroup.bind($parents[1], $data)\\\"> <div class=\\\"taglist-tag\\\" data-bind=\\\"text: Name\\\"></div> </li> <!-- /ko --> </ul> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: _taglist.length --> <div class=\\\"taglist-notags\\\"> <div class=\\\"taglist-notags-text\\\"><!--ko text: _labels.NO_TAGS_AVAILABLE_FOR_ENTITY --><!-- /ko--></div> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nimport {TagModel} from \"Core/Controls/Tag/Models/TagsScreenDataModel\";\r\n\r\nexport class ChangeModel {\r\n\tprivate _addedList: TagModel[];\r\n\tprivate _deletedList: TagModel[];\r\n\tprivate _selectedTags: KnockoutObservableArray<TagModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis._addedList = [];\r\n\t\tthis._deletedList = [];\r\n\t\tthis._selectedTags = ko.observableArray([]);\r\n\t}\r\n\r\n\tSelectTag(tag: TagModel): void {\r\n\t\tthis._addedList.push(tag);\r\n\t\tthis._selectedTags.push(tag);\r\n\r\n\t\tthis._deletedList.forEach((el, index) => {\r\n\t\t\tif (el.TagId === tag.TagId) {\r\n\t\t\t\tthis._deletedList.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tRemoveTag(tag: TagModel): void {\r\n\t\tthis._deletedList.push(tag);\r\n\r\n\t\tthis._addedList.forEach((el, index) => {\r\n\t\t\tif (el.TagId === tag.TagId) {\r\n\t\t\t\tthis._addedList.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t@enumerable get AddedList() {\r\n\t\treturn this._addedList;\r\n\t}\r\n\r\n\t@enumerable get DeletedList() {\r\n\t\treturn this._deletedList;\r\n\t}\r\n\r\n\t@enumerable get SelectedTags() {\r\n\t\treturn this._selectedTags();\r\n\t}\r\n\r\n\tset SelectedTags(data) {\r\n\t\tthis._selectedTags(data);\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport TagbookTemplate from \"Core/Controls/Tag/Tagbook/TagbookTemplate.html\";\r\n\r\nko.templates[\"Core/Controls/Tag/Tagbook/TagbookTemplate\"] = TagbookTemplate;\r\n\r\nimport {TagbookList} from \"Core/Controls/Tag/Tagbook/TagbookList/TagbookList\";\r\nimport {TagModel, TagGroupModel} from \"Core/Controls/Tag/Models/TagsScreenDataModel\";\r\nimport {TagGroupViewModel} from 'Core/Controls/Tag/ViewModels/TagGroupViewModel';\r\nimport {TagViewModel} from 'Core/Controls/Tag/ViewModels/TagViewModel';\r\nimport {ChangeModel} from 'Core/Controls/Tag/Tagbook/ChangeModel';\r\nimport {IModalComponent} from 'Core/Common/Interfaces/IModalComponent';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nexport class Tagbook extends Event implements IModalComponent {\r\n\tprivate _firstLetters: KnockoutObservableArray<string>;\r\n\tprivate _activeLetter: KnockoutObservable<string>;\r\n\tprivate _tagbookList: KnockoutObservable<TagbookList>;\r\n\tprivate _taglist: TagViewModel[];\r\n\tprivate _term: string;\r\n\tprivate _groups: any[];\r\n\tprivate _selectedTagsLength: KnockoutComputed<number>;\r\n\tprivate _selectedTagsInitial: TagModel[];\r\n\tprivate _changeModel: ChangeModel;\r\n\tprivate _mode: KnockoutObservable<string>;\r\n\tprivate _currentGroup: KnockoutObservable<any>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis._mode = ko.observable('book');\r\n\t\tthis._changeModel = new ChangeModel();\r\n\t\tthis._activeLetter = ko.observable(null);\r\n\t\tthis._firstLetters = ko.observableArray([]);\r\n\t\tthis._currentGroup = ko.observable(null);\r\n\t\tthis._term = null;\r\n\t\tthis._taglist = [];\r\n\t\tthis._groups = [];\r\n\t\tthis._selectedTagsLength = ko.computed(() => this._changeModel.SelectedTags.length);\r\n\t\tthis._tagbookList = ko.observable(null);\r\n\t}\r\n\r\n\tChangeMode(nextMode: string):void {\r\n\t\tthis._mode(nextMode);\r\n\t\tthis._tagbookList().ChangeMode(nextMode);\r\n\t\tthis._activeLetter(LABELS.ALL);\r\n\t\tthis._currentGroup(null);\r\n\r\n\t\tthis._tagbookList().FilterList(LABELS.ALL, this._currentGroup());\r\n\r\n\t\tthis.SetLettersList(this._taglist);\r\n\t}\r\n\r\n\tSetTagsList(tagsModel: TagGroupViewModel[], selectedTags: TagModel[], term: string) {\r\n\t\tthis._selectedTagsInitial = selectedTags;\r\n\t\tthis._changeModel.SelectedTags = [...selectedTags];\r\n\r\n\t\ttagsModel.forEach((group: TagGroupViewModel) => {\r\n\t\t\tthis._taglist = this._taglist.concat(group.Tags);\r\n\t\t\tthis._groups.push({Name: group.GroupName, Id: group.Tags[0].GroupId})\r\n\t\t});\r\n\r\n\t\tthis.SetLettersList(this._taglist);\r\n\r\n\t\tconst takbookList = new TagbookList(this._taglist, this._groups);\r\n\r\n\t\tthis._tagbookList(takbookList);\r\n\r\n\t\ttakbookList.On('TagSeleted', this, (data) => this.SelectTag(data.data));\r\n\t\ttakbookList.On('GroupSeleted', this, (data) => this.SelectGroup(data.data));\r\n\r\n\t\tif (term !== null) {\r\n\t\t\tthis.SelectLetter(term[0]);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate SelectTag(tag: any): void {\r\n\t\tconst tagModel = tag.data;\r\n\t\tconst isTagAlreadySelected = this._changeModel.SelectedTags.filter((tag_) => tag_.TagId === tagModel.TagId).length;\r\n\r\n\t\tif (!isTagAlreadySelected) {\r\n\t\t\tconst mappedModel = this.MapToTagModel(tagModel);\r\n\r\n\t\t\tthis._changeModel.SelectTag(mappedModel);\r\n\t\t}\r\n\t}\r\n\r\n\tRemoveTag(data: TagModel): void {\r\n\t\tlet selectedTags = this._changeModel.SelectedTags;\r\n\r\n\t\tselectedTags = selectedTags.filter((tag) => tag !== data);\r\n\r\n\t\tthis._changeModel.SelectedTags = selectedTags;\r\n\r\n\t\tthis._changeModel.RemoveTag(data);\r\n\t}\r\n\r\n\tSelectGroup(data) {\r\n\t\tconst group = data.data;\r\n\r\n\t\tthis._tagbookList().ChangeMode('book');\r\n\r\n\t\tthis._currentGroup(group);\r\n\r\n\t\tconst list = this._taglist.filter((tag) => tag.GroupId === group.Id);\r\n\r\n\t\tthis.SetLettersList(list);\r\n\r\n\t\tthis._tagbookList().FilterList(LABELS.ALL, group);\r\n\t}\r\n\r\n\tClearCurrentGroup() {\r\n\t\tthis._currentGroup(null);\r\n\t\tthis.ChangeMode('group');\r\n\t}\r\n\r\n\tprivate SetLettersList(taglist): void {\r\n\t\tconst letters = this.GenerateFirstLetters(taglist);\r\n\r\n\t\tthis._activeLetter(letters[0]);\r\n\t\tthis._firstLetters(letters);\r\n\t}\r\n\r\n\tprivate GenerateFirstLetters(tagslist: TagViewModel[]): string[] {\r\n\t\tconst firstLetters = [LABELS.ALL];\r\n\r\n\t\ttagslist.sort((a, b) => {\r\n\t\t\tconst nameA = a.Name.toUpperCase();\r\n\t\t\tconst nameB = b.Name.toUpperCase();\r\n\r\n\t\t\tif (nameA < nameB) return -1;\r\n\r\n\t\t\tif (nameA > nameB) return 1;\r\n\r\n\t\t\treturn 0;\r\n\t\t});\r\n\r\n\t\tlet currentLetter;\r\n\r\n\t\ttagslist.forEach((tag: TagViewModel) => {\r\n\t\t\tconst nextLetter = tag.Name[0].toUpperCase();\r\n\r\n\t\t\tif (nextLetter !== currentLetter) {\r\n\t\t\t\ttag.IsFirstWord = true;\r\n\r\n\t\t\t\tcurrentLetter = nextLetter;\r\n\t\t\t\tfirstLetters.push(currentLetter);\r\n\t\t\t} else {\r\n\t\t\t\ttag.IsFirstWord = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn firstLetters;\r\n\t}\r\n\r\n\tSave() {\r\n\t\tthis.Trigger('Save', {\r\n\t\t\taddedTags: this._changeModel.AddedList,\r\n\t\t\tdeletedTags: this._changeModel.DeletedList,\r\n\t\t\tselectedTags: this._changeModel.SelectedTags\r\n\t\t});\r\n\t}\r\n\r\n\tCancel() {\r\n\t\tthis.Trigger('Cancel');\r\n\t}\r\n\r\n\tReset() {\r\n\t\tthis._changeModel.SelectedTags = [...this._selectedTagsInitial];\r\n\t}\r\n\r\n\tSelectLetter(letter: string): void {\r\n\t\tthis._activeLetter(letter);\r\n\r\n\t\tthis._tagbookList().FilterList(this._activeLetter(), this._currentGroup());\r\n\t}\r\n\r\n\tIsActiveLetter(letter: string): boolean {\r\n\t\treturn this._activeLetter() === letter;\r\n\t}\r\n\r\n\tMapToTagModel(model: TagViewModel): TagModel {\r\n\t\tconst group = this._groups.filter((el) => el.Id === model.GroupId)[0];\r\n\r\n\t\tconst tagModel: TagModel = {\r\n\t\t\tGroupId: model.GroupId,\r\n\t\t\tGroupName: group && group.Name,\r\n\t\t\tName: model.Name,\r\n\t\t\tTagId: model.TagId,\r\n\t\t\tTypeId: model.TypeId\r\n\t\t};\r\n\r\n\t\treturn tagModel;\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Core/Controls/Tag/Tagbook/TagbookTemplate';\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\tCloseComponentInModal() {\r\n\t\tthis.Trigger('Cancel');\r\n\t}\r\n}\r\n","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {TagStore} from \"Core/Controls/Tag/Stores/TagStore\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport {RequiredFieldModel} from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport {FIELD_TYPES, TABLE_TYPES, RenderModes, CONTROL_TYPES} from 'Core/Constant';\r\nimport {TagModel, TagGroupModel} from \"Core/Controls/Tag/Models/TagsScreenDataModel\";\r\nimport {TagListChanges} from \"Core/Controls/Tag/Models/TagListChanges\";\r\nimport {Serialize, Deserialize} from 'libs/cerialize';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {Grid} from 'Core/Controls/Grid/Grid';\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {DEFAULT_ICONS} from 'Core/Constant'\r\nimport {Modal} from \"Core/Common/Modal\";\r\n\r\nimport {TagGroupViewModel} from 'Core/Controls/Tag/ViewModels/TagGroupViewModel';\r\nimport {TagViewModel} from 'Core/Controls/Tag/ViewModels/TagViewModel';\r\nimport {IScreen} from 'Core/Screens/IScreen';\r\nimport {TagsScreenDataModel, TagListScreenModel} from 'Core/Controls/Tag/Models/TagsScreenDataModel';\r\nimport { Tagbook } from 'Core/Controls/Tag/Tagbook/Tagbook';\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\n\r\nimport Config from \"Core/Controls/Tag/Configs/tag-config.json\";\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\n\r\nimport ListTemplate from \"Core/Controls/Tag/Templates/List.html\";\r\nimport HelpViewTemplate from \"Core/Controls/Tag/Templates/HelpView.html\";\r\nimport ViewTemplate from \"Core/Controls/Tag/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/Tag/Templates/ToolBar.html\";\r\nimport EditTemplate from \"Core/Controls/Tag/Templates/Edit.html\";\r\nimport DesignTemplate from \"Core/Controls/Tag/Templates/Design.html\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport { BlockUI } from \"../../Common/BlockUi\";\r\nimport {ResizeObserver} from \"../../Common/ResizeObserver\";\r\n\r\nko.templates[\"Core/Controls/Tag/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/Tag/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/Tag/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/Tag/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/Tag/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/Tag/Templates/List\"] = ListTemplate;\r\n\r\nexport class Tag extends ComplexControl {\r\n\tprivate _selectedTags: KnockoutObservableArray<TagModel>;\r\n\tprivate _tags: KnockoutObservableArray<TagModel>;\r\n\tprivate _tagsByGroup: KnockoutObservableArray<TagGroupViewModel>;\r\n\tprivate _isTagsLoaded: KnockoutObservable<boolean>;\r\n\tprivate _isTagsSelected: KnockoutObservable<boolean>;\r\n\tprivate _changeModel: TagListChanges;\r\n\tprivate _labelStyle: KnockoutObservable<any>;\r\n\tprivate _term: KnockoutObservable<string>;\r\n\tprivate _termOperationMessage: KnockoutObservable<string>;\r\n\tprivate _showOptions: KnockoutObservable<boolean>;\r\n\tprivate _tagScope: number;\r\n\tprivate _filterByTags: KnockoutComputed<Array<TagViewModel>>;\r\n\tprivate _isEnableDropGrid: KnockoutObservable<boolean>;\r\n\tprivate _blockTagList: KnockoutObservable<boolean>;\r\n\tprivate _preselectedTags: Array<number>;\r\n\tprivate _tagListScreens: KnockoutObservableArray<TagListScreenModel>;\r\n\tprivate _isReloadGrid: boolean;\r\n\tprivate _isNoTags: KnockoutObservable<boolean>;\r\n\tprivate _inverseGridCondition: boolean;\r\n\tprivate _tagbook: Tagbook;\r\n\tprivate _modal: Modal;\r\n\tprivate _controlId: number;\r\n\tprivate _subControlsLoading: number;\r\n\tprivate _expandFilter: KnockoutObservable<boolean>;\r\n\tprivate _stickyFilter: boolean;\r\n\r\n\tprivate readonly _minTermLength: number = 3;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, Config);\r\n\r\n\t\tthis._tags = ko.observableArray([]);\r\n\t\tthis._tagsByGroup = ko.observableArray([]);\r\n\t\tthis._selectedTags = ko.observableArray([]);\r\n\t\tthis._term = ko.observable(null);\r\n\t\tthis._labelStyle = ko.observable(null);\r\n\t\tthis._isTagsLoaded = ko.observable(false);\r\n\t\tthis._isTagsSelected = ko.observable(false);\r\n\t\tthis._isEnableDropGrid = ko.observable(false);\r\n\t\tthis._blockTagList = ko.observable(false);\r\n\t\tthis._tagListScreens = ko.observableArray([]);\r\n\t\tthis._preselectedTags = [];\r\n\t\tthis._isReloadGrid = false;\r\n\t\tthis._isNoTags = ko.observable(false);\r\n\t\tthis._inverseGridCondition = false;\r\n\t\tthis._subControlsLoading = 0;\r\n\r\n\t\tthis._controlId = this.GetControlId();\r\n\r\n\t\tthis.SetDefaultIcon(new Icon(DEFAULT_ICONS.Tag));\r\n\r\n\t\tthis._selectedTags.subscribe(() => {\r\n\t\t\tthis._isTagsSelected(this._selectedTags().length > 0);\r\n\t\t});\r\n\r\n\t\tthis._termOperationMessage = ko.observable('');\r\n\t\tthis._showOptions = ko.observable(false);\r\n\r\n\t\tthis._filterByTags = ko.computed(() => {\r\n\t\t\tlet selectedTags = [];\r\n\r\n\t\t\t_.each(this._tagsByGroup(), (group) => {\r\n\t\t\t\tconst tags = _.filter(group.Tags, (tag) => tag.IsSelected());\r\n\r\n\t\t\t\tselectedTags = selectedTags.concat(tags);\r\n\t\t\t});\r\n\r\n\t\t\treturn selectedTags;\r\n\t\t});\r\n\t\tthis._expandFilter = ko.observable(null);\r\n\t\tthis._stickyFilter = false;\r\n\r\n\t\tthis.Init();\r\n\r\n\t\tthis._model.subscribe(() => {\r\n\t\t\tif (this.Properties) {\r\n\t\t\t\tthis.ApplyProperties();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tInit(): void {\r\n\r\n\t\tif (this._form) {\r\n\t\t\tthis._tagScope = this._form.GetScreen().GetEntityId();\r\n\t\t}\r\n\r\n\t\tthis.AddEvent('GRID_LOADED');\r\n\r\n\t\tif ((this._renderMode() === RenderModes.View || this._renderMode() === RenderModes.Edit) &&\r\n (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.SpecialScreen])) {\r\n\r\n\t\t\tif (this._renderMode() === RenderModes.View || this._renderMode() === RenderModes.Edit) {\r\n\t\t\t\tthis._renderMode(RenderModes.List);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._renderMode() === RenderModes.Design &&\r\n\t\t\tthis._form &&\r\n (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.SpecialScreen])) {\r\n\r\n\t\t\tthis._isEnableDropGrid(true);\r\n\t\t}\r\n\r\n\t\tthis._renderMode.subscribe((newValue) => {\r\n\t\t\tif (newValue === RenderModes.Design &&\r\n\t\t\t\tthis._form &&\r\n (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.SpecialScreen])) {\r\n\r\n\t\t\t\tthis._isEnableDropGrid(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._requiredFields([\r\n\t\t\tnew RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('F_TAGSCOPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null)\r\n\t\t]);\r\n\r\n\t\tthis.InitRequiredFields();\r\n\r\n\t\tif (this._renderMode() === RenderModes.Edit) {\r\n\t\t\tthis._term.subscribe(() => {\r\n\t\t\t\tconst termValid = this._term() && this._term().length > 0;\r\n\r\n\t\t\t\tif (!termValid) {\r\n\t\t\t\t\tthis._term(null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.LoadTagsBySearchTerm();\r\n\t\t\t\tthis._showOptions(termValid);\r\n\t\t\t});\r\n\r\n\t\t\tthis._tags.subscribe(() => {\r\n\t\t\t\tthis._isTagsLoaded(this._tags().length > 0);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif (subControl instanceof Grid) {\r\n\t\t\t\tsubControl.On('START_DATA_LOAD', this, () => {\r\n\t\t\t\t\tthis._subControlsLoading = this._subControlsLoading + 1;\r\n\t\t\t\t\tthis._blockTagList(true);\r\n\t\t\t\t});\r\n\t\t\t\tsubControl.On('DATA_LOADED', this, (eventArgs) => {\r\n\t\t\t\t\tthis._subControlsLoading = this._subControlsLoading - 1;\r\n\t\t\t\t\tif (this._subControlsLoading === 0) {\r\n\t\t\t\t\t\tthis._blockTagList(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.Trigger('GRID_LOADED', {Records: subControl.GetRecordIds()});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (this._renderMode() === RenderModes.List) {\r\n\t\t\tthis.InitTagList();\r\n\t\t}\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\r\n\t\t\tif (this.Properties.Conditions) {\r\n\t\t\t\tif (this.Properties.Conditions.Properties && this.Properties.Conditions.Properties[0]) {\r\n\t\t\t\t\tthis._inverseGridCondition = this.Properties.Conditions.Properties[0].InverseGridCondition;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//Label\r\n\t\t\tif (this.Properties.Label) {\r\n\t\t\t\tconst labelStyle = {backgroundColor: null, color: null};\r\n\r\n\t\t\t\t_.each(this.Properties.Label.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\tlabelStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (property.Color) {\r\n\t\t\t\t\t\tlabelStyle.color = property.Color;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._labelStyle(labelStyle);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.Data) {\r\n\t\t\ttry {\r\n\t\t\t\tlet tagsJson = JSON.parse(value.Data.Value);\r\n\t\t\t\tlet tagData = Deserialize(tagsJson, TagsScreenDataModel);\r\n\r\n\t\t\t\tif (tagData) {\r\n\t\t\t\t\tthis._selectedTags(tagData.Tags);\r\n\t\t\t\t\tthis._tagListScreens(tagData.TagListScreens);\r\n\t\t\t\t}\r\n\t\t\t} catch (err) {\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet selectedTags = this._selectedTags() || [];\r\n\t\tlet oldTags = selectedTags.map(tag => tag.TagId);\r\n\r\n\t\tthis._changeModel = new TagListChanges(this.GetControlId(), oldTags);\r\n\t}\r\n\r\n\tDeserialize() {\r\n\t\treturn Serialize(this._changeModel);\r\n\t}\r\n\r\n\tprivate IsTermMinimum() {\r\n\t\treturn this._term() && this._term().length >= this._minTermLength;\r\n\t}\r\n\r\n\tprivate IsTagSelected(model: TagModel) {\r\n\t\tconst sameItem = _.find(this._selectedTags(), (tag: TagModel) => model.TagId === tag.TagId);\r\n\r\n\t\treturn !!sameItem;\r\n\t}\r\n\r\n\tprivate FormatItemName(tag: TagModel): string {\r\n\t\tconst groupName = tag.GroupName ? (tag.GroupName + '/') : '';\r\n\t\tconst name = tag.Name || '';\r\n\r\n\t\treturn groupName + name;\r\n\t}\r\n\r\n\tprivate RemoveItem(model: TagModel) {\r\n\t\tthis._selectedTags.splice(this._selectedTags.indexOf(model), 1);\r\n\t\tthis._changeModel.DeleteTag(model.TagId);\r\n\t\tthis._term('');\r\n\t}\r\n\r\n\tprivate SelectItem(model: TagModel) {\r\n\t\tconst isSelected = this.IsTagSelected(model);\r\n\r\n\t\tif (!isSelected) {\r\n\t\t\tthis._term('');\r\n\t\t\tthis._selectedTags.push(model);\r\n\t\t\tthis._changeModel.AddTag(model.TagId);\r\n\t\t}\r\n }\r\n\r\n SelectItems(models: TagModel[]) {\r\n _.each(models, (model) => this.SelectItem(model));\r\n }\r\n\r\n\tprivate LoadTagsBySearchTerm() {\r\n\t\tconst term = this._term();\r\n\r\n\t\tif (this.IsTermMinimum()) {\r\n\t\t\tconst controlId = this.GetControlId();\r\n\r\n\t\t\tTagStore.GetTags(term, this._tagScope, controlId)\r\n\t\t\t\t.then(res => {\r\n\t\t\t\t\tthis._tags(res);\r\n\r\n\t\t\t\t\tif (this._tags.length <= 0) {\r\n\t\t\t\t\t\tthis._termOperationMessage('No such tags');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._termOperationMessage('');\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.fail((() => this._termOperationMessage('Unable to get tags')));\r\n\t\t} else {\r\n\t\t\tthis._termOperationMessage(`Please enter ${this._minTermLength} or more characters`);\r\n\t\t}\r\n\t}\r\n\r\n\tEnterKey() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate LoadAllTags(hideDisabled: boolean = false): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer();\r\n\t\tconst controlId = this.GetControlId();\r\n\r\n\t\tTagStore.GetAllTags(this._tagScope, controlId, false, hideDisabled)\r\n\t\t\t.then(tags => {\r\n\t\t\t\tconst tagsByGroup = _.groupBy(tags, (item) => item.GroupName);\r\n\r\n\t\t\t\tconst tagsByGroupModels = _.map(tagsByGroup, (value, key) => {\r\n\t\t\t\t\tconst groupName = key === 'null' ? 'No group' : key;\r\n\r\n\t\t\t\t\tconst tags = _.map(value, (tag) => {\r\n\t\t\t\t\t\tconst tagViewModel = new TagViewModel(tag.Name, tag.TagId, tag.GroupId, tag.TypeId);\r\n\r\n\t\t\t\t\t\ttagViewModel.IsSelected(this._preselectedTags.indexOf(tag.TagId) >= 0);\r\n\r\n\t\t\t\t\t\treturn tagViewModel;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn new TagGroupViewModel(tags, groupName);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst noGroupTags = tagsByGroupModels.find(g => g.GroupName == \"No group\");\r\n\r\n\t\t\t\tif (noGroupTags != null) {\r\n\t\t\t\t\ttagsByGroupModels.push(tagsByGroupModels.splice(tagsByGroupModels.indexOf(noGroupTags), 1)[0]);\r\n }\r\n\r\n\t\t\t\tthis._tagsByGroup(tagsByGroupModels);\r\n\t\t\t\tthis._isNoTags(this._tagsByGroup().length === 0);\r\n\r\n\t\t\t\tdeferredResult.resolve(tagsByGroupModels);\r\n\t\t\t})\r\n\t\t\t.fail((() => this._termOperationMessage('Unable to get tags')));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tprivate LoadScopedTags() {\r\n\t\tconst controlId = this.GetControlId();\r\n\r\n\t\tTagStore.GetAllTags(this._tagScope, controlId, true)\r\n\t\t\t.then(tags => {\r\n\t\t\t\t_.each(this._tagsByGroup(), (group) => {\r\n\t\t\t\t\t_.each(group.Tags, (tag) => {\r\n\t\t\t\t\t\tconst tagInList = _.find(tags, (tag_) => tag_.TagId === tag.TagId);\r\n\r\n\t\t\t\t\t\tif (!tagInList) {\r\n\t\t\t\t\t\t\ttag.IsEnabled(false);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\ttag.IsEnabled(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})\r\n\t\t\t.fail((() => this._termOperationMessage('Unable to get tags')));\r\n\t}\r\n\r\n\r\n\tprivate InitTagList() {\r\n\t\tconst loadAllTagsPromise = this.LoadAllTags();\r\n\r\n\t\tthis.On('GRID_LOADED', this, (eventArgs) => {\r\n\t\t\tif (loadAllTagsPromise.status === 0) {\r\n\t\t\t\tloadAllTagsPromise.then(() => {\r\n\t\t\t\t\tif (this._filterByTags().length === 0) {\r\n\t\t\t\t\t\tthis.LoadScopedTags();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this._isReloadGrid) {\r\n\t\t\t\t\t\tthis.FilterData();\r\n\t\t\t\t\t\tthis._isReloadGrid = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tif (this._isReloadGrid) {\r\n\t\t\t\t\tthis.FilterData();\r\n\t\t\t\t\tthis._isReloadGrid = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._filterByTags().length === 0) {\r\n\t\t\t\t\tthis.LoadScopedTags();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate UpdateFilter(tag: TagViewModel) {\r\n\t\tif (tag.IsEnabled()) {\r\n\t\t\ttag.IsSelected(!tag.IsSelected());\r\n\t\t\tthis.FilterData();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Exclude(tag: TagViewModel) {\r\n\t\tif (tag.IsEnabled()) {\r\n\t\t\ttag.IsExcluded(!tag.IsExcluded());\r\n\t\t\tthis.FilterData();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ResetFilter() {\r\n\t\t_.each(this._filterByTags(), (tag) => tag.IsSelected(false));\r\n\r\n\t\tthis.FilterData();\r\n\t}\r\n\r\n\tprivate FilterData() {\r\n\t\tlet tagIds = [];\r\n\r\n\t\tconst tags = _.filter(this._filterByTags(), tag => !tag.IsExcluded());\r\n\r\n\t\tconst tagsByGroup = _.groupBy(tags, (item) => item.GroupId);\r\n\r\n\t\ttagIds = _.map(tagsByGroup, (value, key, object) => {\r\n\t\t\treturn _.map(value, (value_) => value_.TagId);\r\n\t\t});\r\n\r\n\t\tconst entityId = this.FieldModel.EntityId;\r\n\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif (subControl instanceof Grid) {\r\n\t\t\t\tsubControl.SetPageNumber(1);\r\n\t\t\t\tsubControl.FilterByTags({ EntityId: entityId, Records: tagIds, InverseCondition: this._inverseGridCondition });\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tset PreselectedTags(tagIds: Array<number>) {\r\n\t\tthis._preselectedTags = tagIds;\r\n\t\tthis._isReloadGrid = true;\r\n\t}\r\n\r\n\tasync GoToListScreen(listScreen: TagListScreenModel, tag: Tag, evt) {\r\n\t\tconst isOpenInModal = evt.ctrlKey\r\n\r\n\t\tconst screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n\t\tBlockUI.Block();\r\n\t\tscreenManager.GetScreenById({ ScreenId: listScreen.ScreenId})\r\n\t\t.always(()=>BlockUI.Unblock())\r\n\t\t.then(async (screen: IScreen) => {\r\n\t\t\tscreen.SetIsReady(true);\r\n\r\n\t\t\tconst tagControl = screen.GetControl<Tag>(CONTROL_TYPES.Tag);\r\n\t\t\tconst selectedTagIds = _.map(this._selectedTags(), (tag) => tag.TagId);\r\n\r\n\t\t\tif (tagControl) {\r\n\t\t\t\ttagControl.PreselectedTags = selectedTagIds;\r\n\t\t\t}\r\n\r\n\t\t\tconst menuManager = (await import('MenuManager/MenuManager')).MenuManager;\r\n\t\t\tmenuManager.Instance.GoToScreen(screen, isOpenInModal);\r\n\t\t});\r\n\t}\r\n\r\n\tExpandFilter(evt): void {\r\n\t\tthis._expandFilter(!this._expandFilter());\r\n\t}\r\n\r\n\tStickyActionBarHeight(isModal:boolean, jBoxModal, _el): number{\r\n\t\tlet stickyActionBarHeight = 0;\r\n\t\tif (isModal){\r\n\t\t\tlet actionBarBlock = jBoxModal.find('#ActionBarBlock'),\r\n\t\t\t\tactionBarSubForm = jBoxModal.find('.actionBarSubForm'),\r\n\t\t\t\tstickyActionBar = actionBarBlock.length > 0 ? actionBarBlock : actionBarSubForm.length > 0 ? actionBarSubForm : null;\r\n\r\n\t\t\tif(stickyActionBar !== null && stickyActionBar.length !== 0 && stickyActionBar.css('position') === 'sticky'){\r\n\t\t\t\tlet paddingModalPX = $(_el).parents('.jBox-content').css('padding-top'),\r\n\t\t\t\t\tpaddingModal = +paddingModalPX.substring(0, paddingModalPX.length - 2);\r\n\r\n\t\t\t\tstickyActionBarHeight = Math.abs(stickyActionBar.innerHeight() + paddingModal);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn stickyActionBarHeight;\r\n\t}\r\n\r\n\tRepositionHeaderOnScroll = (scrollPositionInContainer?: number) => {\r\n\t\tconst headElement = this._el.querySelector<HTMLDivElement>('.tag-filter-column');\r\n\t\tif (!headElement) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst boundingRect = this._el.getBoundingClientRect();\r\n\t\tconst modalTopPosition = Math.abs(($('.jBox-content').parents('.jBox-Modal').height() - $(window).height()) / 2);\r\n\t\tlet fixedHeaderHeight = 0;\r\n\t\tlet jBoxModal = $(this._el).parents('.jBox-content').parents('.jBox-Modal');\r\n\t\tlet isModal = jBoxModal.length > 0 && jBoxModal.css('display') !== 'none';\r\n\t\tif (window.innerWidth > 991) {\r\n\t\t\tconst headerElement: HTMLDivElement = document.querySelector(\"body > .page-header\");\r\n\t\t\tfixedHeaderHeight = isModal ? modalTopPosition + this.StickyActionBarHeight(isModal, jBoxModal, this._el) : headerElement ? headerElement.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\tif (boundingRect.top < fixedHeaderHeight) {\r\n\t\t\tconst distanceFromTop = Math.min(boundingRect.top * -1 + fixedHeaderHeight, boundingRect.height - 28);\r\n\t\t\theadElement.style.top = Math.max(distanceFromTop, 0) + \"px\";\r\n\t\t} else {\r\n\t\t\tconst portletToolbarHeight = $(this._el).parents('.portlet-body-content').find('.toolbar-wrapper').height();\r\n\t\t\tconst topHeaderPosition = scrollPositionInContainer && portletToolbarHeight < scrollPositionInContainer ? scrollPositionInContainer - portletToolbarHeight - 5 + \"px\" : '0';\r\n\t\t\theadElement.style.top = topHeaderPosition;\r\n\t\t}\r\n\t}\r\n\r\n\tOnResize = () => {\r\n\t\tthis.RepositionHeaderOnScroll();\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\r\n\t\tif (this._stickyFilter) { //it is necessary to modernize and make logic\r\n\t\t\tconst unbindResize = ResizeService.SubscribeWidth(this.OnResize, this._el); // subscribe on resize\r\n\t\t\tko.utils.domNodeDisposal.addDisposeCallback(this._el, () => {\r\n\t\t\t\tunbindResize();\r\n\t\t\t\twindow.removeEventListener(\"scroll\", () => this.RepositionHeaderOnScroll())\r\n\t\t\t});\r\n\r\n\t\t\twindow.addEventListener(\"scroll\", () => this.RepositionHeaderOnScroll());\r\n\t\t\t$(this._el).parents('.jBox-content').on('scroll', () => this.RepositionHeaderOnScroll());\r\n\t\t\t$(this._el).parents('.portlet-body').on('scroll', () => this.RepositionHeaderOnScroll($(this._el).parents('.portlet-body').scrollTop()));\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tTagbookOpen(): void {\r\n\t\tthis._tagbook = new Tagbook();\r\n\r\n\t\tthis._form.GetScreen().AttachModalComponent(this._tagbook);\r\n\r\n\t\tlet hideDisabled : boolean = true;\r\n\t\tthis.LoadAllTags(hideDisabled)\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis._tagbook.SetTagsList(data, this._selectedTags(), this._term());\r\n\t\t\t});\r\n\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: 'tagbook-modal',\r\n\t\t\tcloseOnEsc: false\r\n\t\t});\r\n\r\n\t\tthis._tagbook.On('Save', this, (data) => {\r\n\t\t\tconst addedTags: TagModel[] = data.data.addedTags;\r\n\t\t\tconst deletedTags: TagModel[] = data.data.deletedTags;\r\n\t\t\tconst selectedTags: TagModel[] = data.data.selectedTags;\r\n\r\n\t\t\tdeletedTags.forEach((tag) => this._changeModel.DeleteTag(tag.TagId));\r\n\t\t\taddedTags.forEach((tag) => this._changeModel.AddTag(tag.TagId));\r\n\r\n\t\t\tthis._selectedTags(selectedTags);\r\n\r\n\t\t\tthis._modal.Close();\r\n\t\t});\r\n\r\n\t\tthis._tagbook.On('Cancel', this, () => {\r\n\t\t\tthis._modal.Close();\r\n\t\t});\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this._tagbook, this._modal.Wrapper);\r\n\r\n\t\tthis._modal.Show();\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label title=\\\"Tag\\\"> <i class=\\\"fa fa-tags\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"tag-control clearfix\\\" data-control-type=\\\"tag-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-toggle=\\\"dropdown\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div class=\\\"textarea-control multi-options-list form-control clearfix\\\"> <div data-bind=\\\"css: {'empty': !_isTagsSelected()}\\\" class=\\\"pull-left tag-list-items\\\"> <!-- ko foreach: _selectedTags --> <span class=\\\"multi-option-item\\\"> <!--ko text: $parent.FormatItemName($data) --><!-- /ko --> </span> <!-- /ko --> <!-- ko ifnot: _isTagsSelected --> No Tags <!-- /ko --> </div> <div class=\\\"btn-group pull-right\\\"> <button data-bind=\\\"css: {'disabled': !_isTagsSelected()}\\\" type=\\\"button\\\" class=\\\"btn btn blue dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"false\\\"> <!-- ko ifnot: _tagListScreens().length > 0 --> No screens <!-- /ko --> <!-- ko if: _tagListScreens().length > 0 --> <i class=\\\"fa fa-ellipsis-horizontal\\\"></i> Tags <i class=\\\"fa fa-angle-down\\\"></i> <!-- /ko --> </button> <!-- ko if: _tagListScreens().length > 0 --> <ul class=\\\"dropdown-menu\\\"> <!-- ko foreach: _tagListScreens --> <li> <a data-bind=\\\"click: $parent.GoToListScreen.bind($parent, $data), text: EntityName\\\" href=\\\"#\\\"></a> </li> <!-- /ko --> </ul> <!-- /ko --> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"tag-control clearfix\\\" data-control-type=\\\"tag-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-toggle=\\\"dropdown\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div class=\\\"textarea-control multi-options-list form-control clearfix\\\"> <div data-bind=\\\"css: {'empty': !_isTagsSelected()}\\\" class=\\\"pull-left tag-list-items\\\"> <!-- ko foreach: _selectedTags --> <span class=\\\"multi-option-item\\\"> <!--ko text: $parent.FormatItemName($data) --><!-- /ko --> </span> <!-- /ko --> <!-- ko ifnot: _isTagsSelected --> No Tags <!-- /ko --> </div> <div class=\\\"btn-group pull-right\\\"> <button data-bind=\\\"css: {'disabled': !_isTagsSelected()}\\\" type=\\\"button\\\" class=\\\"btn btn blue dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"false\\\"> <!-- ko ifnot: _tagListScreens().length > 0 --> No screens <!-- /ko --> <!-- ko if: _tagListScreens().length > 0 --> <i class=\\\"fa fa-ellipsis-horizontal\\\"></i> Tags <i class=\\\"fa fa-angle-down\\\"></i> <!-- /ko --> </button> <!-- ko if: _tagListScreens().length > 0 --> <ul class=\\\"dropdown-menu\\\"> <!-- ko foreach: _tagListScreens --> <li> <a data-bind=\\\"click: $parent.GoToListScreen.bind($parent, $data), text: EntityName\\\" href=\\\"#\\\"></a> </li> <!-- /ko --> </ul> <!-- /ko --> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"EditScreenView label-input form-standart-control tag-control clearfix\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\"> <label data-bind=\\\"text: Label, style: _labelStyle\\\"></label> <div class=\\\"multi-options-list textarea-control clearfix\\\" data-toggle=\\\"dropdown\\\"> <!-- ko foreach: _selectedTags --> <span class=\\\"multi-option-item\\\"> <a data-bind=\\\"click: $parent.RemoveItem.bind($parent, $data), preventBubble: ['click']\\\">x</a> <!--ko text: $parent.FormatItemName($data) --><!-- /ko --> </span> <!-- /ko --> <div class=\\\"autocomlete-wrapper\\\"> <input class=\\\"form-control autocomlete-input\\\" data-bind=\\\"textInput: _term, enterKey: EnterKey, attr: { placeholder: _labels.SELECT_TAG }\\\" type=\\\"text\\\"> <button class=\\\"btn-sm tagbook-open-btn\\\" data-bind=\\\"click: TagbookOpen\\\"> <i class=\\\"fa fa-bars\\\"></i> </button> </div> <!-- ko if: _showOptions --> <ul class=\\\"dropdown-menu\\\" role=\\\"menu\\\"> <!-- ko foreach: _tags --> <li data-bind=\\\"css: {'disabled': $parent.IsTagSelected($data, $parent)}\\\"> <a data-bind=\\\"text: $parent.FormatItemName($data), click: $parent.SelectItem.bind($parent, $data)\\\"></a> </li> <!-- /ko --> <!-- ko ifnot: _isTagsLoaded --> <li><a data-bind=\\\"text: _termOperationMessage\\\"></a></li> <!-- /ko --> </ul> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"FormDesignerView form-designer-view drop-control-container complex-control form-standart-control new-control\\\"> <div class=\\\"portlet light drop-control-portlet\\\"> <div data-bind=\\\"click: Expand, preventBubble: ['click'], css: { expanded: _isExpanded() }\\\" class=\\\"collapse-button toggle-button\\\" data-button=\\\"collapse\\\"> <span data-button=\\\"collapse\\\" class=\\\"link-entity-arrow\\\"></span> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"portlet-title\\\"> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: Title\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\" aria-describedby=\\\"sizing-addon1\\\" placeholder=\\\"\\\" readonly=\\\"readonly\\\"/> <span class=\\\"input-group-addon\\\"> <input data-bind=\\\"uniform: IsEntitySelected, enableAttr: false\\\" type=\\\"checkbox\\\"> </span> <span class=\\\"input-group-btn\\\"> <button class=\\\"btn setting-button\\\" type=\\\"button\\\">...</button> </span> </div> </div> <div data-bind=\\\"visible: IsExpanded\\\" class=\\\"portlet-content\\\"> <div class=\\\"\\\"> <!-- ko foreach: RequiredFields --> <div class=\\\"portlet-body\\\"> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: FieldName\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"\\\" aria-describedby=\\\"sizing-addon1\\\" readonly=\\\"readonly\\\"> <span class=\\\"input-group-addon\\\"> <input data-bind=\\\"uniform: IsSelected, enableAttr: false\\\" type=\\\"checkbox\\\"> </span> <span class=\\\"input-group-btn\\\"> <button class=\\\"btn\\\" type=\\\"button\\\">...</button> </span> </div> </div> <!-- /ko --> </div> </div> </div> <!-- ko if: $data._isEnableDropGrid --> <div data-bind=\\\"dragula: { data: _subControls, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropControl.bind($root) }\\\" class=\\\"group-elements\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tag-control-list clearfix\\\"> <div data-bind=\\\"blockElement: $data._blockTagList, css:{'open-filter': _expandFilter()}\\\" class=\\\"tag-filter-column\\\"> <div class=\\\"tag-filter-column-wrap\\\"> <div class=\\\"tag-open-btn transition\\\" data-bind=\\\"click: $data.ExpandFilter.bind($data)\\\"> <svg class=\\\"icon\\\"> <use xlink:href=\\\"#path-runner-icon\\\"></use> </svg> </div> <div class=\\\"tag-filter-column-content\\\"> <!-- ko if: $data._isNoTags --> <div class=\\\"alert alert-block alert-info h5\\\"><!-- ko text: _labels.NO_AVAILABLE_TAGS --><!-- /ko --></div> <!-- /ko --> <!-- ko foreach: _tagsByGroup --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\" data-toggle=\\\"collapse\\\" data-target=\\\"#tags-group\\\" data-bind=\\\"attr:{'data-target':'#tags-group'+$index()}\\\" aria-expanded=\\\"false\\\"> <i class=\\\"fa fa-chevron-right\\\"></i> <i class=\\\"fa fa-chevron-down\\\"></i> <div class=\\\"panel-heading-content\\\"> <span class=\\\"panel-heading-content__name\\\" data-bind=\\\"ellipsisTooltip: {\\r\\n content: GroupName ? GroupName : '',\\r\\n options: {\\r\\n isLineClampMode: false,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n },\\r\\n text: GroupName\\\"></span> <span class=\\\"panel-heading-content__select-tag\\\" data-bind=\\\"text: SelectedTags\\\"></span> </div> </div> <div class=\\\"panel-body tag-group collapse\\\" data-bind=\\\"attr:{'id':'tags-group'+$index()}\\\"> <!-- ko foreach: Tags --> <div class=\\\"tag-group-item\\\" data-bind=\\\"css: { 'disabled': !$data.IsEnabled()}, click: $parents[1].UpdateFilter.bind($parents[1], $data)\\\"> <label data-bind=\\\"style: { textDecoration: $data.IsEnabled() ? '' : 'line-through' }\\\" class=\\\"tag-group-item-label\\\"> <input data-bind=\\\"uniform: IsSelected, enableAttr: $data.IsEnabled\\\" type=\\\"checkbox\\\"> <span data-bind=\\\"ellipsisTooltip: {\\r\\n content: Name ? Name : '',\\r\\n options: {\\r\\n isLineClampMode: false,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n },\\r\\n text: Name\\\" class=\\\"tag-name\\\"></span> </label> </div> <!-- /ko --> </div> </div> <!-- /ko --> </div> </div> </div> <div class=\\\"tag-result-column\\\"> <div class=\\\"clearfix is-filter-tag\\\"> <!-- ko foreach: _filterByTags --> <span data-bind=\\\"click: $parent.Exclude.bind($parent, $data), css: { 'label-default': IsExcluded, 'label-success': !IsExcluded() }\\\" class=\\\"label tag-item\\\"><!-- ko text: Name --><!-- /ko --> <a class=\\\"remove-tag\\\" data-bind=\\\"click: $parent.UpdateFilter.bind($parent, $data)\\\" href=\\\"#\\\">x</a> </span> <!-- /ko --> <!-- ko if: _filterByTags().length > 0 --> <button data-bind=\\\"click: $data.ResetFilter.bind($data)\\\" class=\\\"btn btn-xs\\\" type=\\\"button\\\"><i class=\\\"fa blue fa-reply\\\"></i> Reset</button> <!-- /ko --> </div> <div class=\\\"clearfix\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","export const CONTROL_TYPES_LINK = {\r\n\tMail: {name: 'Mail', icon: 'fa fa-send'},\r\n\tURL: {name: 'URL', icon: 'fa fa-globe'},\r\n\tSKYPE: {name: 'SKYPE', icon: 'fa fa-skype'},\r\n\tLinkedin: {name: 'Linkedin', icon: 'fa fa-linkedin'},\r\n\tFacebook: {name : \"Facebook\", icon: \"fa fa-facebook-square\"},\r\n\tYouTube: {name : \"YouTube\", icon: \"fa fa-youtube-play\"},\r\n\tTwitter: {name : \"Twitter\", icon: \"fa fa-twitter-square\"},\r\n\tInstagram: {name : \"Instagram\", icon: \"fa fa-instagram\"},\r\n\tPinterest: {name : \"Pinterest\", icon: \"fa fa-pinterest-square\"},\r\n\tMedium: {name : \"Medium\", icon: \"fa fa-medium\"},\r\n\tSQL: {name: 'SQL', icon: ''}\r\n};","export const PHONE_NUMBER_LENGTH = [\r\n {iso2: 'af', min: 9, max: 9},\r\n {iso2: 'al', min: 6, max: 9},\r\n {iso2: 'dz', min: 8, max: 9},\r\n {iso2: 'as', min: 10, max: 10},\r\n {iso2: 'ad', min: 6, max: 9},\r\n {iso2: 'ao', min: 9, max: 9},\r\n {iso2: 'ai', min: 10, max: 10},\r\n {iso2: 'ag', min: 10, max: 10},\r\n {iso2: 'ar', min: 10, max: 11},\r\n {iso2: 'am', min: 8, max: 8},\r\n {iso2: 'aw', min: 7, max: 7},\r\n {iso2: 'au', min: 5, max: 10},\r\n {iso2: 'at', min: 4, max: 13},\r\n {iso2: 'az', min: 7, max: 9},\r\n {iso2: 'bs', min: 7, max: 11},\r\n {iso2: 'bh', min: 8, max: 8},\r\n {iso2: 'bd', min: 6, max: 10},\r\n {iso2: 'bb', min: 7, max: 11},\r\n {iso2: 'by', min: 5, max: 11},\r\n {iso2: 'be', min: 8, max: 9},\r\n {iso2: 'bz', min: 7, max: 11},\r\n {iso2: 'bj', min: 8, max: 8},\r\n {iso2: 'bm', min: 7, max: 11},\r\n {iso2: 'bt', min: 6, max: 8},\r\n {iso2: 'bo', min: 7, max: 9},\r\n {iso2: 'ba', min: 6, max: 9},\r\n {iso2: 'bw', min: 7, max: 8},\r\n {iso2: 'br', min: 8, max: 11},\r\n {iso2: 'io', min: 7, max: 7},\r\n {iso2: 'vg', min: 7, max: 11},\r\n {iso2: 'bn', min: 7, max: 7},\r\n {iso2: 'bg', min: 4, max: 9},\r\n {iso2: 'bf', min: 8, max: 8},\r\n {iso2: 'bi', min: 8, max: 8},\r\n {iso2: 'kh', min: 6, max: 10},\r\n {iso2: 'cm', min: 8, max: 9},\r\n {iso2: 'ca', min: 11, max: 11},\r\n {iso2: 'cv', min: 7, max: 7},\r\n {iso2: 'bq', min: 7, max: 8},\r\n {iso2: 'ky', min: 7, max: 11},\r\n {iso2: 'cf', min: 8, max: 8},\r\n {iso2: 'td', min: 8, max: 8},\r\n {iso2: 'cl', min: 9, max: 11},\r\n {iso2: 'cn', min: 7, max: 17},\r\n {iso2: 'cx', min: 5, max: 10},\r\n {iso2: 'cc', min: 5, max: 10},\r\n {iso2: 'co', min: 7, max: 11},\r\n {iso2: 'km', min: 7, max: 7},\r\n {iso2: 'cd', min: 7, max: 9},\r\n {iso2: 'cg', min: 9, max: 9},\r\n {iso2: 'ck', min: 5, max: 5},\r\n {iso2: 'cr', min: 8, max: 10},\r\n {iso2: 'ci', min: 8, max: 8},\r\n {iso2: 'hr', min: 6, max: 9},\r\n {iso2: 'cu', min: 4, max: 8},\r\n {iso2: 'cw', min: 7, max: 8},\r\n {iso2: 'cy', min: 8, max: 8},\r\n {iso2: 'cz', min: 9, max: 12},\r\n {iso2: 'dk', min: 8, max: 8},\r\n {iso2: 'dj', min: 8, max: 8},\r\n {iso2: 'dm', min: 7, max: 11},\r\n {iso2: 'do', min: 8, max: 11},\r\n {iso2: 'ec', min: 7, max: 11},\r\n {iso2: 'eg', min: 7, max: 10},\r\n {iso2: 'sv', min: 7, max: 11},\r\n {iso2: 'gq', min: 9, max: 9},\r\n {iso2: 'er', min: 6, max: 7},\r\n {iso2: 'ee', min: 7, max: 10},\r\n {iso2: 'et', min: 7, max: 9},\r\n {iso2: 'fk', min: 5, max: 5},\r\n {iso2: 'fo', min: 6, max: 6},\r\n {iso2: 'fj', min: 7, max: 11},\r\n {iso2: 'fi', min: 5, max: 10},\r\n {iso2: 'fr', min: 9, max: 9},\r\n {iso2: 'gf', min: 9, max: 9},\r\n {iso2: 'pf', min: 6, max: 8},\r\n {iso2: 'ga', min: 7, max: 8},\r\n {iso2: 'gm', min: 7, max: 7},\r\n {iso2: 'ge', min: 6, max: 9},\r\n {iso2: 'de', min: 4, max: 15},\r\n {iso2: 'gh', min: 7, max: 9},\r\n {iso2: 'gi', min: 8, max: 8},\r\n {iso2: 'gr', min: 10, max: 10},\r\n {iso2: 'gl', min: 6, max: 6},\r\n {iso2: 'gd', min: 7, max: 11},\r\n {iso2: 'gp', min: 9, max: 9},\r\n {iso2: 'gu', min: 7, max: 11},\r\n {iso2: 'gt', min: 8, max: 11},\r\n {iso2: 'gg', min: 4, max: 10},\r\n {iso2: 'gn', min: 8, max: 9},\r\n {iso2: 'gw', min: 7, max: 9},\r\n {iso2: 'gy', min: 7, max: 7},\r\n {iso2: 'ht', min: 8, max: 8},\r\n {iso2: 'us', min: 11, max: 11},\r\n {iso2: 'gb', min: 7, max: 10},\r\n {iso2: 'it', min: 6, max: 11},\r\n {iso2: 'lv', min: 8, max: 8},\r\n {iso2: 'lu', min: 4, max: 11},\r\n {iso2: 'lt', min: 8, max: 8},\r\n {iso2: 'md', min: 8, max: 8},\r\n {iso2: 'mc', min: 8, max: 9},\r\n {iso2: 'nl', min: 5, max: 10},\r\n {iso2: 'nz', min: 8, max: 10},\r\n {iso2: 'no', min: 5, max: 8},\r\n {iso2: 'ph', min: 6, max: 13},\r\n {iso2: 'pl', min: 6, max: 9},\r\n {iso2: 'pt', min: 9, max: 9},\r\n {iso2: 'ru', min: 10, max: 10},\r\n {iso2: 'sm', min: 6, max: 10},\r\n {iso2: 'sg', min: 8, max: 11},\r\n {iso2: 'sk', min: 6, max: 9},\r\n {iso2: 'si', min: 5, max: 8},\r\n {iso2: 'es', min: 9, max: 9},\r\n {iso2: 'lk', min: 7, max: 9},\r\n {iso2: 'se', min: 6, max: 12},\r\n {iso2: 'ch', min: 9, max: 12},\r\n {iso2: 'tr', min: 7, max: 10},\r\n {iso2: 'ua', min: 9, max: 9},\r\n {iso2: 've', min: 10, max: 10},\r\n {iso2: 'zm', min: 3, max: 10},\r\n {iso2: 'il', min: 7, max: 12},\r\n {iso2: 'jp', min: 8, max: 17},\r\n {iso2: 'mx', min: 10, max: 11},\r\n {iso2: 'ro', min: 6, max: 9}\r\n];","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport 'pubsub';\r\n\r\nimport * as $ from \"jquery\";\r\n\r\nimport { TypeScreen } from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nimport { TranslationManager } from \"Core/Components/Translation/TranslationManager\";\r\nimport { ITranslationValue } from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\n\r\nimport {TranslationModel} from \"Core/ScreenManager/Models/TranslationModel\";\r\nimport {SelectedRecordModel} from \"Core/ScreenManager/Models/SelectedRecordModel\";\r\nimport {SelectedEntityRecordModel} from \"Core/ScreenManager/Models/SelectedEntityRecordModel\";\r\nimport {SelectedEntityModel} from \"Core/ScreenManager/Models/SelectedEntityModel\";\r\nimport {ReferenceModel} from \"Core/ScreenManager/Models/ReferenceModel\";\r\nimport {ControlDataModel} from \"Core/ScreenManager/Models/ControlDataModel\";\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl';\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport { IControlParam, IScreen } from 'Core/Screens/IScreen';\r\nimport { CONTROL_TYPES, FIELD_TYPES, FONT_NAME, FONT_STYLES, LABEL_POSITIONS, RenderModes, TABLE_TYPES } from 'Core/Constant';\r\nimport { FormatManager } from 'Core/Components/FormatManager/FormatManager';\r\nimport { GeneralProperties } from 'Core/GeneralProperties/GeneralProperties';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport { FieldFormat, FORMATS } from 'Core/Common/FieldFormat';\r\nimport { CONTROL_TYPES_LINK } from 'Core/Controls/Text/Constants';\r\nimport { PHONE_NUMBER_LENGTH } from \"Core/Controls/Text/PhoneNumberLengths\";\r\nimport { TranslationFieldEditor } from 'Core/Components/TranslationFieldEditor/TranslationFieldEditor';\r\nimport { IconModel } from \"../BaseControl/Models/IconModel\";\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport { GlobalManager, GLOBALS } from \"Core/GlobalManager/GlobalManager\";\r\nimport { IntlTelInputExtention } from \"Core/KnockoutExtentions/IntlTelInputExtention\";\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\nimport { ScreenTypes } from \"../../Common/Enums/ScreenTypes\";\r\nimport { ICreateRecordRequest, IFieldDataModel, RecordStore } from \"../../Common/Stores/RecordStore\";\r\nimport { Notifier } from \"../../Common/Notifier\";\r\nimport { LABELS, NOTIFICATIONS } from 'Core/Components/Translation/Locales';\r\nimport { ITooltipConfig } from \"../../KnockoutExtentions/TooltipExtention\";\r\nimport { SipClient } from 'Core/Controls/Text/SipClient';\r\nimport { BarcodeScanner } from 'Core/Components/BarcodeScanner/BarcodeScanner';\r\nimport { DataModes } from \"Core/Enums/DataModes\";\r\nimport { EVENTS } from 'Core/Screens/Events';\r\nimport { DocumentManagerStore } from 'Core/Components/Controls/DocumentManager/Stores/DocumentManagerStore';\r\nimport { JsBarcodeExtension } from \"../../KnockoutExtentions/JsBarcodeExtension\";\r\nimport { GENERAL_PROPERTIES } from 'Core/GeneralProperties/Managers/Constants';\r\nimport { ZIndexManager } from \"../../Common/ZIndexManager\";\r\nimport { MobileChecker } from \"../../Common/MobileChecker\";\r\n\r\nimport TextConfigJson from 'Core/Controls/Text/Configs/text-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/Text/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/Text/Templates/HelpView.html';\r\nimport ToolBarTemplate from 'Core/Controls/Text/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Text/Templates/Design.html';\r\nimport EditTemplate from 'Core/Controls/Text/Templates/Edit.html';\r\n\r\nko.templates['Core/Controls/Text/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Text/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Text/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Text/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Text/Templates/Edit'] = EditTemplate;\r\n\r\nfunction getDecimalSize(fieldModel: AttachedFieldModel) {\r\n if (FieldFormat.IsPercentage(fieldModel.FormatName)) {\r\n return Math.max(fieldModel.Size - 2, 0);\r\n }\r\n\r\n return fieldModel.Size;\r\n}\r\n\r\nfunction getIntegerValidationMessage() {\r\n return LABELS.FILTER_RANGE_ERROR\r\n .replace('{MinValue}', FormatConverter.LocalizeDecimalOrInteger('-2147483648'))\r\n .replace('{MaxValue}', FormatConverter.LocalizeDecimalOrInteger('2147483647'));\r\n}\r\n\r\nfunction getDecimalValidationMessage(size: number) {\r\n return LABELS.DECIMAL_DIGITS_VALIDATION_MESSAGE\r\n .replace('{decimalDigits}', `${size}`)\r\n .replace('{totalDigits}', '29')\r\n}\r\n\r\nfunction isInIntegerBounds(value: number) {\r\n return -2147483648 <= value && value <= 2147483647;\r\n}\r\n\r\ninterface ICountryData {\r\n name: string;\r\n iso2: string;\r\n dialCode: string;\r\n}\r\n\r\nconst DEFAULT_COUNTRY_CODE_VALUE = 'nl';\r\n\r\nexport class Text extends BaseControl {\r\n private _isNewRecord: boolean;\r\n private _value: KnockoutObservable<string>;\r\n private _serverTranslations: TranslationModel[];\r\n private _labelStyle: KnockoutObservable<any>;\r\n private _textInputStyle: KnockoutObservable<any>;\r\n private _textHeight: KnockoutObservable<any>;\r\n private _originalValue: string;\r\n private _formatter: KnockoutObservable<FormatManager>;\r\n private _translationFieldEditor: TranslationFieldEditor;\r\n private _hasTranslations: KnockoutObservable<boolean>;\r\n private _hasTemplate: KnockoutObservable<boolean>;\r\n private _validationMsg: KnockoutObservable<string>;\r\n private _reference: KnockoutObservable<ReferenceModel>;\r\n private _phoneCountry: string;\r\n private _phoneCode: string;\r\n private _waitForPhoneCode = false;\r\n private _globalCountry: string;\r\n private _calculatedDependsOnValue: string;\r\n private _tooltip: KnockoutObservable<ITooltipConfig>;\r\n private _referenceConsultScreen: KnockoutObservable<IScreen>;\r\n private _isHyperlink: KnockoutObservable<boolean>;\r\n private _dataRecordId: number;\r\n private _isMobile: MobileChecker;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, TextConfigJson);\r\n\r\n this._value = ko.observable(null);\r\n\r\n this.Init();\r\n this.BindEvents();\r\n\r\n this._labelStyle = ko.observable(null);\r\n this._textHeight = ko.observable(null);\r\n this._textInputStyle = ko.observable({});\r\n this._formatter = ko.observable(null);\r\n this._hasTemplate = ko.observable(null);\r\n this._validationMsg = ko.observable(this._labels.THIS_FIELD_IS_REQUIRED);\r\n this._reference = ko.observable(null);\r\n this._referenceConsultScreen = ko.observable(null);\r\n this._isVisible = ko.observable(true);\r\n this._isHyperlink = ko.observable(false);\r\n this._isMobile = MobileChecker.IsMobile();\r\n\r\n this.SetPhoneCountry();\r\n this.SetPhoneCode();\r\n\r\n this._translationFieldEditor = new TranslationFieldEditor();\r\n this._translationFieldEditor.On('TranslationSelected', this, eventArgs => this.ChangeTranslation(eventArgs.data));\r\n\r\n this._hasTranslations = ko.observable(false);\r\n\r\n this.ApplyProperties();\r\n\r\n const screen = this._form && this._form.GetScreen();\r\n if (screen) {\r\n screen.On(EVENTS.DATA_CHANGED, this, (evt) => {\r\n if (evt.data && evt.data.ScreenVariable && this.FieldModel.FilledById != 0) {\r\n\r\n let dynamicField = _.find(this.FieldModel.DynamicFields, (field) => {\r\n return field === evt.data.ScreenVariable.Field.Id\r\n });\r\n\r\n if (dynamicField && !this._resetDependsOnValue()) {\r\n this.UpdateDependsOnValue();\r\n }\r\n }\r\n });\r\n }\r\n this.ApplyFormatter();\r\n\r\n this._tooltip = ko.observable(null);\r\n\r\n this.GetTemplateName = ko.computed(() => {\r\n if(this._isHideIfDataLoading()){\r\n return 'Core/Controls/BaseControl/Templates/DataLoadTemplate';\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Design) {\r\n if (this._model().Predefined) {\r\n return 'Core/Controls/BaseControl/Templates/PredefinedDesignWrapper';\r\n }\r\n\r\n if (this._isStatic) {\r\n return 'Core/Controls/BaseControl/Templates/StaticDesignWrapper';\r\n }\r\n\r\n return 'Core/Controls/BaseControl/Templates/DesignWrapper';\r\n }\r\n\r\n if (this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Reference && this._renderMode() === RenderModes.Edit) {\r\n return 'Core/Controls/Text/Templates/View';\r\n }\r\n\r\n let template = RenderModes[this._renderMode()];\r\n return `Core/Controls/${this.GetType()}/Templates/${template}`;\r\n });\r\n }\r\n\r\n get IsPercentageIcon() : boolean {\r\n return !!(this._value() && this._value().length !== 0 && this.FieldModel.FormatName === 'Percentage');\r\n }\r\n\r\n get IsBarcodeFormat(): boolean {\r\n return this.FieldModel.FormatName === \"Barcode\";\r\n }\r\n\r\n get IsDependsOn(): boolean {\r\n return this.EnableResetDependOnValue && this._resetDependsOnValue();\r\n }\r\n\r\n private UpdateDependsOnValue() {\r\n this.CalculateDependOnValue()\r\n .then(dependsOnValue => {\r\n this._calculatedDependsOnValue = this.FormatPercentageValue(dependsOnValue);\r\n this._calculatedDependsOnValue = this.ApplyCulture(this._calculatedDependsOnValue);\r\n this._value(this._calculatedDependsOnValue);\r\n if (this._resetDependsOnValue()) {\r\n this._resetDependsOnValue(false);\r\n }\r\n });\r\n }\r\n\r\n private SetPhoneCode() {\r\n const global = GlobalManager.Instance.GetGlobal(GLOBALS.DEFAULT_COUNTRY_CODE).toLowerCase();\r\n this._phoneCode = IntlTelInputExtention.GetCodeByIso2(global);\r\n }\r\n\r\n private SetPhoneCountry() {\r\n const global = GlobalManager.Instance.GetGlobal(GLOBALS.DEFAULT_COUNTRY_CODE).toLowerCase();\r\n if (IntlTelInputExtention.IsCountryValid(global)) {\r\n this._globalCountry = global;\r\n } else {\r\n this._globalCountry = DEFAULT_COUNTRY_CODE_VALUE;\r\n }\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n if (this.Properties.Label) {\r\n const labelStyle = { backgroundColor: null, color: null };\r\n\r\n _.each(this.Properties.Label.Properties, (property: any) => {\r\n if (property.BackgroundColor) {\r\n labelStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n\r\n if (property.Color) {\r\n labelStyle.color = property.Color;\r\n }\r\n });\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n if (this.Properties.BackgroundColor) {\r\n const backgroundColor = this.Properties.BackgroundColor;\r\n this._backgroundColor(backgroundColor);\r\n }\r\n\r\n if (this.Properties.TextInput) {\r\n const textInputStyle = { backgroundColor: null };\r\n\r\n _.each(this.Properties.TextInput.Properties, (property: any) => {\r\n if (property.BackgroundColor) {\r\n textInputStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n });\r\n\r\n this._textInputStyle(textInputStyle);\r\n }\r\n\r\n if (this.Properties.Height) {\r\n _.each(this.Properties.Height.Properties, (property: any) => {\r\n if (property.Height) {\r\n this._textHeight(property.Height.Value);\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n this.ApplyLinkEditorStyles();\r\n }\r\n\r\n if(this.HideIfCondition){\r\n if(this.IsRunTime){\r\n this._isVisible(false);\r\n }\r\n }\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if (!this.FieldModel.HasLinkEditorVisibility) {\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = FONT_STYLES.NORMAL;\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch (style.Name.toLowerCase()) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n })\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n private Init(): void {\r\n this.GetFieldMaxLength();\r\n }\r\n\r\n private BindEvents() {\r\n this._model.subscribe(() => this.Init());\r\n }\r\n\r\n private InitHyperLink(data: ControlDataModel) {\r\n if (data) {\r\n this._isHyperlink(\r\n this._form &&\r\n this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.ConsultScreen] &&\r\n this.FormatName === 'None' &&\r\n this.FieldModel.FieldTypeName === FIELD_TYPES.Text &&\r\n this.FieldModel.EntityId !== this._form.GetScreen().GetEntityId() &&\r\n this.FieldModel.EntityTypeName === TABLE_TYPES.Entity &&\r\n data.RecordId &&\r\n (data.DisplayValue || data.Value)\r\n );\r\n }\r\n }\r\n\r\n getPhoneNumberMinAndMaxLength(iso2: string) {\r\n let min, max;\r\n PHONE_NUMBER_LENGTH.map(function (el) {\r\n if (el.iso2 == iso2 && el.iso2 != undefined && el.iso2 != null) {\r\n min = el.min, max = el.max;\r\n }\r\n });\r\n return { min, max };\r\n }\r\n\r\n SetData(data: ControlDataModel) {\r\n this._dataRecordId = data.RecordId;\r\n let currentValue = data.DisplayValue || data.Value;\r\n\r\n this.InitHyperLink(data);\r\n\r\n currentValue = this.FormatPercentageValue(currentValue);\r\n\r\n let currentDefaultValue = currentValue;\r\n\r\n if (this.IsTranslatable()) {\r\n this._serverTranslations = data.Translations;\r\n\r\n const translation = this.GetTranslation(data);\r\n currentValue = translation.TranslatedValue || translation.Value;\r\n\r\n this._translationFieldEditor.LoadTranslationItems();\r\n this._translationFieldEditor.SetTranslations(data.Translations, data.DisplayValue);\r\n this._translationFieldEditor.SetTranslationMaxSize(this.GetFieldMaxLength());\r\n this._translationFieldEditor.SetActiveTranslation(translation.Language.Id);\r\n\r\n this._hasTranslations(true);\r\n }\r\n\r\n currentValue = this.ApplyCulture(currentValue);\r\n currentDefaultValue = this.ApplyCulture(currentDefaultValue);\r\n\r\n if (this.FormatName == FORMATS.PHONE_NUMBER && currentValue) {\r\n currentValue = `+${currentValue.replace(/\\D/g, '')}`;\r\n currentDefaultValue = `+${currentDefaultValue.replace(/\\D/g, '')}`;\r\n\r\n this._waitForPhoneCode = true;\r\n }\r\n\r\n this._value(currentValue);\r\n this._originalValue = currentDefaultValue;\r\n\r\n if (this.GetFieldModel() && this.GetFieldModel().FieldTypeName === FIELD_TYPES.Reference) {\r\n this.SetReferenceData(data.Reference);\r\n }\r\n this.ApplyFormatter();\r\n }\r\n\r\n private FormatPercentageValue(value: string){\r\n if (this.FieldModel\r\n && this.FieldModel.FieldTypeName === FIELD_TYPES.Decimal\r\n && FieldFormat.IsPercentage(this.FieldModel.FormatName)\r\n && this.IsModified && value) {\r\n return ((value as any).replace(',', '.') * 1 * 100).toFixed((this.FieldModel.Size < 2) ? 0 : this.FieldModel.Size - 2);\r\n }\r\n return value;\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (!value.Data) return;\r\n\r\n this._isNewRecord = value.RecordSpecsModel && value.RecordSpecsModel.IsNewRecord;\r\n\r\n this.SetData(value.Data);\r\n\r\n this._value.subscribe((newValue) => {\r\n\r\n this._translationFieldEditor.SetValue(newValue);\r\n\r\n if (this.FormatName == FORMATS.PHONE_NUMBER && newValue && newValue[0] === '+') {\r\n this._value(newValue.replace('+' + this._phoneCode, ''));\r\n }\r\n\r\n if (this._calculatedDependsOnValue && this.IsEqual(newValue, this._calculatedDependsOnValue)) {\r\n this._resetDependsOnValue(true);\r\n }\r\n\r\n let textarea = $(this._el).find('.input-group').find('textarea')[0];\r\n\r\n if(textarea?.hasOwnProperty('inputmask')){\r\n $(textarea).trigger(\"keyup\");\r\n };\r\n\r\n this.UpdateVariable({ Field: this.GetFieldModel(), ControlType: CONTROL_TYPES.Text }, this._value());\r\n\r\n this.ApplyFormatter();\r\n });\r\n\r\n this._value.extend({ rateLimit: { timeout: 500, method: 'notifyWhenChangesStop' } });\r\n }\r\n\r\n IsEqual(value1: string, value2: string): boolean {\r\n if(FieldFormat.IsDecimal(this.FieldModel.FieldTypeName)){\r\n let val = parseFloat(value1?.replace(',', '.')) - parseFloat(value2?.replace(',', '.'));\r\n return val != 0 \r\n }\r\n return value1 != value2;\r\n }\r\n\r\n OpenRecordScreen(_, data, evt) {\r\n const isOpenInModal: boolean = evt.ctrlKey || this.Screen.IsInModal();\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, { EntityId: this.FieldModel.EntityId, RecordId: this._dataRecordId, IsOpenInModal: isOpenInModal });\r\n }\r\n\r\n OpenEditScreen(text: Text, evt) {\r\n const entityRecord = this._reference() && this._reference().SelectedEntityRecord;\r\n const referenceTable = this._reference() && this._reference().ReferenceTable;\r\n\r\n if (entityRecord && entityRecord.IsValid) {\r\n let options = {\r\n EntityId: entityRecord.SelectedEntity.Id,\r\n RecordId: entityRecord.SelectedRecord.Id,\r\n IsOpenInModal: evt.ctrlKey || this._form.GetScreen().IsInModal(),\r\n Owner: this._form.GetScreen()\r\n };\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, options);\r\n }\r\n\r\n if (referenceTable && !entityRecord && this._renderMode() === RenderModes.Edit) {\r\n this.CreateRecord(referenceTable.Id);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n CreateRecord(entityId: number) {\r\n const typeScreen = new TypeScreen(entityId, 0, true);\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n let eventArgsData = eventArgs.data;\r\n this.NewRecord(entityId, eventArgsData.TypeId, eventArgsData.TypeName, eventArgsData.KindId, eventArgsData.ExampleRecordId);\r\n });\r\n typeScreen.Show();\r\n }\r\n\r\n\r\n NewRecord(\r\n entityId: number,\r\n tableTypeId: number,\r\n tableTypeName: string,\r\n kindId: number,\r\n exampleRecordId: number\r\n ) {\r\n let fields: Array<IFieldDataModel> = [\r\n { Name: 'F_TYPE', Value: tableTypeId.toString() },\r\n { Name: 'F_KIND', Value: kindId.toString() }];\r\n\r\n let createRecordRequest: ICreateRecordRequest = {\r\n TableId: entityId,\r\n RequiredValidation: false,\r\n Fields: fields,\r\n ExampleRecordId: exampleRecordId ? exampleRecordId : null\r\n };\r\n\r\n RecordStore.CreateRecord(createRecordRequest).then((recordId) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n let selectedEntityRecord = new SelectedEntityRecordModel();\r\n let selectedRecord = new SelectedRecordModel();\r\n selectedRecord.Id = recordId;\r\n selectedRecord.Memo = '';\r\n selectedRecord.TypeName = tableTypeName;\r\n selectedEntityRecord.SelectedRecord = selectedRecord;\r\n let selectedEntityModel = new SelectedEntityModel();\r\n selectedEntityModel.Id = this._reference().ReferenceTable.Id;\r\n selectedEntityModel.Icon = this._reference().ReferenceTable.EntityIcon;\r\n selectedEntityModel.Name = this._reference().ReferenceTable.Name;\r\n selectedEntityModel.Translation = this._reference().ReferenceTable.Translation;\r\n selectedEntityRecord.SelectedEntity = selectedEntityModel;\r\n this._reference().Name = '';\r\n this._reference().RecordId = recordId;\r\n this._value('');\r\n this._reference().IsModified = true;\r\n this._reference().SelectedEntityRecord = selectedEntityRecord;\r\n this.SetReferenceDataForEditMode();\r\n this.LoadReferenceConsultScreen();\r\n }).fail((err) => {\r\n let notifier = new Notifier(null);\r\n notifier.Failed(JSON.parse(err.message).Message);\r\n });\r\n }\r\n\r\n private GetClassName(): string {\r\n const classes = [this.FormatName, this._textHeight(), this._isIconVisible && 'with-icon'];\r\n\r\n if (this._reference()) {\r\n if (this._reference().SelectedEntityRecord ||\r\n (this._renderMode() === RenderModes.Edit && this._reference().ReferenceTable && this._reference().ReferenceTable.IsValid)) {\r\n classes.push('marker-link');\r\n }\r\n }\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n private SetInvalidIcon() {\r\n let iconModel = new IconModel();\r\n iconModel.IsImage = false;\r\n iconModel.IsIcon = true;\r\n iconModel.FontName = FONT_NAME.FONT_AWESOME;\r\n iconModel.Name = 'fa-times';\r\n\r\n this._icon(new Icon(iconModel));\r\n }\r\n\r\n private SetIcon(icon: IconModel) {\r\n this._icon(new Icon(icon));\r\n }\r\n\r\n SetReferenceData(reference: ReferenceModel) {\r\n this._reference(reference);\r\n\r\n if (!reference) {\r\n this.SetInvalidIcon();\r\n this._value(NOTIFICATIONS.REFERENCE_TABLE_NOT_SET);\r\n return;\r\n } else {\r\n if (reference.SelectedEntityRecord && !reference.SelectedEntityRecord.SelectedEntity) {\r\n this.SetInvalidIcon();\r\n this._value(NOTIFICATIONS.TABLE_NOT_FOUND);\r\n return;\r\n } else if (reference.SelectedEntityRecord && !reference.SelectedEntityRecord.SelectedRecord) {\r\n this.SetInvalidIcon();\r\n this._value(NOTIFICATIONS.RECORD_NOT_FOUND);\r\n return;\r\n } else if (reference.ReferenceTable && !reference.ReferenceTable.IsValid) {\r\n this.SetInvalidIcon();\r\n this._value(NOTIFICATIONS.INVALID_REFERENCE_TABLE);\r\n return;\r\n } else {\r\n if (this._renderMode() === RenderModes.View) {\r\n this.SetReferenceDataForViewMode();\r\n return;\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Edit) {\r\n this.SetReferenceDataForEditMode();\r\n this.LoadReferenceConsultScreen();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private SetReferenceDataForViewMode() {\r\n const entityRecord = this._reference().SelectedEntityRecord;\r\n const referenceTable = this._reference().ReferenceTable;\r\n\r\n if (referenceTable && referenceTable.IsValid) {\r\n this.SetInvalidIcon();\r\n this._value(LABELS.NO_RECORD);\r\n return;\r\n }\r\n\r\n if (entityRecord) {\r\n this.Label(entityRecord.SelectedEntity.Translation || entityRecord.SelectedEntity.Name);\r\n this.SetIcon(entityRecord.SelectedEntity.Icon);\r\n if (entityRecord.SelectedRecord.Name) {\r\n this._value(entityRecord.SelectedRecord.Name)\r\n } else {\r\n this._value('<i class=\"fa fa-external-link\"></i>');\r\n }\r\n }\r\n }\r\n\r\n private SetReferenceDataForEditMode() {\r\n const entityRecord = this._reference().SelectedEntityRecord;\r\n const referenceTable = this._reference().ReferenceTable;\r\n\r\n if (!entityRecord && referenceTable) {\r\n this._value(`${this._labels.CREATE}...`);\r\n this.Label(referenceTable.Translation || referenceTable.Name);\r\n this.SetIcon(referenceTable.EntityIcon);\r\n return;\r\n } else if (entityRecord) {\r\n if (this._form.GetScreen().IsLinkEditor) {\r\n this.AddStyle('display', 'none');\r\n }\r\n this.Label(entityRecord.SelectedEntity.Translation || entityRecord.SelectedEntity.Name);\r\n this.SetIcon(entityRecord.SelectedEntity.Icon);\r\n this._value(entityRecord.SelectedEntity.Translation || entityRecord.SelectedEntity.Name);\r\n if (entityRecord.SelectedRecord.Name) {\r\n this._value(entityRecord.SelectedRecord.Name);\r\n } else {\r\n this._value('<i class=\"fa fa-external-link\"></i>');\r\n }\r\n }\r\n }\r\n\r\n ApplyCulture(value: string): string {\r\n if (!!value && this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Decimal) {\r\n return FormatConverter.ConvertDecimal(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>): void {\r\n super.AfterRender(elements);\r\n this._el = _.find(elements, (element) => element.nodeType === 1);\r\n if (!this.FieldModel) return;\r\n\r\n const formatName = this.FieldModel.FormatName;\r\n if ((FieldFormat.IsDecimal(formatName) ||\r\n FieldFormat.IsCurrency(formatName) ||\r\n FieldFormat.IsPercentage(formatName) ||\r\n this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Integer)\r\n && (this._renderMode() === RenderModes.Edit)) {\r\n this.AddEventListenerChangeValue(elements);\r\n }\r\n\r\n this._tooltip({\r\n content: this.LineBreak || this.Reference ? this.FormatDisplayValue : _.escape(this.FormatDisplayValue),\r\n onlyOnOverflow: true,\r\n addClass: 'ellipsis-tooltip',\r\n })\r\n }\r\n\r\n AddEventListenerChangeValue(parentEl) {\r\n const textarea = $(parentEl).find('.es-textarea-control')[0];\r\n\r\n if (!textarea) return;\r\n\r\n textarea.onkeyup = () => {\r\n const actualValue: any = $(textarea).val();\r\n\r\n if (!actualValue.length) {\r\n this._value(actualValue);\r\n }\r\n };\r\n }\r\n\r\n Deserialize() {\r\n if (this.FormatName === FORMATS.PHONE_NUMBER && this._phoneCode && this.IsModified && this._value()) {\r\n this._value(this._phoneCode + '-' + this._value().replace(/\\D/g, '').replace('-', ''));\r\n }\r\n\r\n const undoPhoneChange = () => {\r\n const value = this._value();\r\n if (this.FormatName === FORMATS.PHONE_NUMBER && this._phoneCode && this.IsModified && value) {\r\n const dashPosition = value.indexOf('-');\r\n this._value(value.substr(dashPosition + 1));\r\n }\r\n };\r\n\r\n if (this.FieldModel\r\n && this.FieldModel.FieldTypeName === FIELD_TYPES.Decimal\r\n && FieldFormat.IsPercentage(this.FieldModel.FormatName)\r\n && this.IsModified && this._value()) {\r\n this._value(String((parseFloat(\r\n this._value().replace(',', '.')) / 100)\r\n .toFixed(this.FieldModel.Size)));\r\n }\r\n\r\n if (this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Reference) {\r\n if (this._reference() && (this._reference().IsModified)) {\r\n if (!this._reference()) {\r\n this._value(null);\r\n }\r\n if (this._reference().ReferenceTable) {\r\n this._value(`${this._reference().ReferenceTable.Id}`);\r\n }\r\n if (this._reference().SelectedEntityRecord) {\r\n this._value(`${this._reference().SelectedEntityRecord.SelectedEntity.Id};${this._reference().SelectedEntityRecord.SelectedRecord.Id}`);\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n const field = _.first(this._model().Fields);\r\n\r\n this.RemoveNotAllowedSymbols();\r\n\r\n if (!this._isReadonly && field) {\r\n let serializedValue = [`${field.EntityName}.${field.Name}`];\r\n\r\n if (!this.IsTranslatable()) {\r\n serializedValue.push(this._value());\r\n } else {\r\n const defaultTranslation = this._translationFieldEditor.GetDefaultTranslation().Value;\r\n serializedValue.push(defaultTranslation);\r\n\r\n const activeTranslations = this._translationFieldEditor.GetTranslations(false);\r\n const changedTranslations = activeTranslations.map(translation => {\r\n const languageShortName = TranslationManager.Instance.GetLanguageById(translation.LanguageId).ShortName;\r\n\r\n return !translation.Value ? `${languageShortName}_` : `${languageShortName}_${translation.Value}`;\r\n });\r\n\r\n serializedValue.push(...changedTranslations);\r\n }\r\n\r\n undoPhoneChange();\r\n\r\n return serializedValue;\r\n }\r\n\r\n undoPhoneChange();\r\n\r\n return null;\r\n }\r\n\r\n IsModified(): boolean {\r\n if (super.IsModified() || this._isNewRecord) {\r\n return true;\r\n }\r\n\r\n if (!this.IsTranslatable()) {\r\n return this._value() !== this._originalValue;\r\n }\r\n\r\n const defaultTranslation = this._translationFieldEditor.GetDefaultTranslation().Value;\r\n const activeTranslations = this._translationFieldEditor.GetTranslations(false);\r\n\r\n const translationDiffExists = _.any(activeTranslations, activeTranslation => {\r\n const serverTranslation = _.find(this._serverTranslations, serverTranslation => serverTranslation.LanguageId === activeTranslation.LanguageId);\r\n return serverTranslation && activeTranslation.Value !== serverTranslation.Value;\r\n });\r\n\r\n return defaultTranslation !== this._originalValue || translationDiffExists;\r\n }\r\n\r\n GetValue(): any {\r\n return this._value();\r\n }\r\n\r\n get Value(): any {\r\n return this._value();\r\n }\r\n\r\n GetTranslations() {\r\n return this._translationFieldEditor.GetTranslations(false);\r\n }\r\n\r\n GetDefaultTranslation() {\r\n return this._translationFieldEditor.GetDefaultTranslation();\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this.GetFieldModel() && this.GetFieldModel().IsVirtual) {\r\n this._isValid(true);\r\n return true;\r\n }\r\n\r\n this.SetDefaultValueByTranslation();\r\n if (this._isRequired && this._hasTranslations()) {\r\n\r\n let defaultItem = _.find(this._translationFieldEditor.TranslationItemsList, (item) => {\r\n return item.Language.IsDefault;\r\n });\r\n\r\n if (defaultItem && defaultItem.Value()) {\r\n this._isValid(true);\r\n } else {\r\n this._isValid(false);\r\n }\r\n } else {\r\n if (this._isRequired && (!this._value() || this._value() === '')) {\r\n this._isValid(false);\r\n } else if (this.FormatName === FORMATS.PHONE_NUMBER) {\r\n const value = this._value();\r\n const formattedValue = this.GetFormattedPhoneNumber(value ? value.replace(/\\D/g, '') : '');\r\n\r\n if (\r\n formattedValue &&\r\n intlTelInputUtils.getValidationError(formattedValue, this._phoneCountry ?? this._globalCountry)\r\n ) {\r\n let errorCode = parseInt(intlTelInputUtils.getValidationError(formattedValue, this._phoneCountry ?? this._globalCountry));\r\n let { min, max } = this.getPhoneNumberMinAndMaxLength(this._phoneCountry);\r\n\r\n if (errorCode === intlTelInputUtils.validationError.TOO_SHORT) {\r\n this._validationMsg(`${NOTIFICATIONS.MINIMUM_LENGTH_OF_THIS_FIELD} ${min}`);\r\n } else if (errorCode === intlTelInputUtils.validationError.TOO_LONG) {\r\n this._validationMsg(`${NOTIFICATIONS.MAXIMUM_LENGTH_OF_THIS_FIELD} ${max}`);\r\n } else if (errorCode == intlTelInputUtils.validationError.NOT_A_NUMBER) {\r\n this._validationMsg(`${NOTIFICATIONS.MINIMUM_LENGTH_OF_THIS_FIELD} ${min}`);\r\n }\r\n this._isValid(false);\r\n } else {\r\n this._isValid(true);\r\n }\r\n } else if (this.FormatName === FORMATS.DUTCH_POSTAL_CODE && this._isRequired) {\r\n let formattedValue = this._value() ? this._value().replace(/[^0-9\\sA-Z]/g, '') : '';\r\n if (formattedValue.length < 7) {\r\n this._validationMsg(LABELS.DUTCH_POSTAL_CODE_MUST_BE_FULFILLED);\r\n this._isValid(false);\r\n }\r\n } else if (this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Integer) {\r\n const value = this._value();\r\n if (value === undefined || value === null || value === '') {\r\n this._isValid(true);\r\n } else {\r\n if (isInIntegerBounds(Number(value))) {\r\n this._isValid(true);\r\n } else {\r\n this._validationMsg(getIntegerValidationMessage());\r\n this._isValid(false);\r\n }\r\n }\r\n } else if (this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Decimal) {\r\n const value = this._value();\r\n if (value === undefined || value === null || value === '') {\r\n this._isValid(true);\r\n } else {\r\n const [integerPart, decimalPart = ''] = value.replace('-', '').split(/[.,]/);\r\n\r\n const size = getDecimalSize(this.FieldModel);\r\n\r\n if (decimalPart.length <= size && integerPart.length + decimalPart.length <= 29) {\r\n this._isValid(true);\r\n } else {\r\n this._validationMsg(getDecimalValidationMessage(size));\r\n this._isValid(false);\r\n }\r\n }\r\n } else {\r\n this._isValid(true);\r\n }\r\n }\r\n return this._isValid();\r\n }\r\n\r\n ValidateTranslation(translationValue: string) {\r\n const fieldMaxLength = this.GetFieldMaxLength()\r\n if (translationValue && fieldMaxLength > 0 && translationValue.length >= fieldMaxLength) {\r\n this._isValid(false);\r\n this._validationMsg(`${NOTIFICATIONS.MAXIMUM_LENGTH_OF_THIS_FIELD} ${fieldMaxLength}`);\r\n } else {\r\n this._isValid(true);\r\n this._validationMsg(this._labels.THIS_FIELD_IS_REQUIRED);\r\n }\r\n }\r\n\r\n SetDefaultValueByTranslation() {\r\n if (this._isRequired && this._hasTranslations()) {\r\n\r\n let defaultItem = _.find(this._translationFieldEditor.TranslationItemsList, (item) => {\r\n return item.Language.IsDefault;\r\n });\r\n\r\n if (defaultItem && !defaultItem.Value()) {\r\n\r\n let currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n let currentLangItem = _.find(this._translationFieldEditor.TranslationItemsList, (item) => {\r\n return currentLang.Id === item.Language.Id;\r\n });\r\n\r\n if (currentLangItem.Value()) {\r\n defaultItem.Value(currentLangItem.Value());\r\n } else {\r\n let first = _.first(this._translationFieldEditor.TranslationItemsList);\r\n if (first) {\r\n defaultItem.Value(first.Value());\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n OnPastePhoneNumber(type, ev) {\r\n let pastedText = ev.originalEvent.clipboardData.getData('text');\r\n pastedText = pastedText.replace(/\\D/g, '');\r\n this._value(this.GetFormattedPhoneNumber(pastedText));\r\n return true;\r\n }\r\n\r\n GetFormattedPhoneNumber(value: string): string {\r\n if (value.startsWith('0')) {\r\n return value.substr(1);\r\n }\r\n\r\n const withoutPlus = value.replace('+', '');\r\n const withoutCode = withoutPlus.startsWith(this._phoneCode) ? withoutPlus.replace(this._phoneCode, '') : withoutPlus;\r\n\r\n if (withoutCode.startsWith('0')) {\r\n return withoutCode.substr(1);\r\n }\r\n\r\n return withoutCode;\r\n }\r\n\r\n OnKeyUpValidation(that, event): boolean {\r\n if (FormatManager.IsSocialFormat(this.FormatName)) {\r\n const value = this._value();\r\n const formattedUrl = FormatManager.FormatUrlForSocial(value);\r\n if (formattedUrl) {\r\n this._value(formattedUrl);\r\n this._isValid(true);\r\n } else {\r\n this._isValid(false);\r\n this._validationMsg(`${NOTIFICATIONS.INCORRECT_URL_PLEASE_TYPE_FULL_URL_LIKE}`);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n if (this._value() && this.GetFieldMaxLength() > 0 && this._value().length >= this.GetFieldMaxLength()) {\r\n this._isValid(false);\r\n this._validationMsg(`${NOTIFICATIONS.MAXIMUM_LENGTH_OF_THIS_FIELD} ${this.GetFieldMaxLength()}`);\r\n } else if (this._value() && this.FieldModel.FieldTypeName === FIELD_TYPES.Integer && !isInIntegerBounds(Number(this._value()))) {\r\n this._isValid(false);\r\n this._validationMsg(getIntegerValidationMessage());\r\n } else if (this._value() && this.FieldModel.FieldTypeName === FIELD_TYPES.Decimal && this._value().replace(/[-.,]/g, '').length > 29) {\r\n const size = getDecimalSize(this.FieldModel);\r\n\r\n this._isValid(false);\r\n this._validationMsg(getDecimalValidationMessage(size));\r\n } else {\r\n this._isValid(true);\r\n this._validationMsg(this._labels.THIS_FIELD_IS_REQUIRED);\r\n }\r\n\r\n this.FormatEditableValue(event);\r\n return this._isValid();\r\n }\r\n\r\n private FormatUrl(value): string {\r\n return value() && value().includes('://') ? value() : `http://${value()}`;\r\n }\r\n\r\n ApplyFormatter() {\r\n if (this.GetRenderMode() === RenderModes.View) {\r\n let screen = this.GetForm().GetScreen();\r\n\r\n this._formatter(new FormatManager({\r\n Screen: this.Screen,\r\n Icon: this.GetIconNameForLinkType(),\r\n Value: this._value(),\r\n Format: this.FormatName,\r\n TableId: screen.GetEntityId(),\r\n RecordId: screen.GetRecordId(),\r\n Label: this._model().Name,\r\n LabelPosition: this._model().LabelPosition,\r\n LabelStyle: this._labelStyle\r\n }));\r\n this._hasTemplate(!!this._formatter() && this._formatter().HasTemplate);\r\n }\r\n }\r\n\r\n IsSocialViewActive(): boolean {\r\n return (FormatManager.IsSocialFormat(this.FormatName)\r\n || FormatManager.IsSkypeFormat(this.FormatName))\r\n && this._hasTemplate();\r\n }\r\n\r\n IsLinkTypeControl(): boolean {\r\n return CONTROL_TYPES_LINK[this.FormatName];\r\n }\r\n\r\n IsBarcodeButtonVisible() {\r\n return FieldFormat.IsBarcode(this.FormatName) && !this.FieldModel.IsVirtual && !this.GetCombinedReadOnly();\r\n }\r\n\r\n IsBarcodeValid() {\r\n return JsBarcodeExtension.Validate(this.FormatDisplayValue);\r\n }\r\n\r\n GetTooltipContent() {\r\n let tooltipContent = null;\r\n\r\n if (this.FormatDisplayValue) {\r\n tooltipContent = this._labels.VALUE_CANNOT_BE_CONVERTED_TO_BARCODE;\r\n } else {\r\n tooltipContent = this._labels.EMPTY;\r\n }\r\n\r\n return tooltipContent;\r\n }\r\n\r\n GetIconNameForLinkType(): string {\r\n return CONTROL_TYPES_LINK[this.FormatName] ? CONTROL_TYPES_LINK[this.FormatName].icon : null;\r\n }\r\n\r\n FormatEditableValue = (event: { target: HTMLTextAreaElement }) => {\r\n const value = event.target.value;\r\n this._value(this.ModifyValueByFormat(value));\r\n };\r\n\r\n ModifyValueByFormat(value: string) {\r\n let result: string;\r\n if (FieldFormat.IsUppercase(this.FormatName)) {\r\n result = value.toUpperCase();\r\n } else if (FieldFormat.IsLowercase(this.FormatName)) {\r\n result = value.toLowerCase();\r\n } else if (FieldFormat.IsStartswithcapital(this.FormatName)) {\r\n if (value.length > 0) {\r\n result = value.charAt(0).toUpperCase() + value.slice(1);\r\n } else {\r\n result = value;\r\n }\r\n } else {\r\n result = value;\r\n }\r\n return result;\r\n };\r\n\r\n get LineBreak(): boolean {\r\n const value = this._value();\r\n if (value == null) {\r\n return null;\r\n }\r\n const preparedValue = value.toString().replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\r\n return preparedValue.indexOf('<br>') !== -1;\r\n }\r\n\r\n get Reference(): boolean {\r\n return !!this._reference();\r\n }\r\n\r\n get FormatDisplayValue(): string {\r\n const value = this._value();\r\n if (value == null) {\r\n return value;\r\n }\r\n\r\n const preparedValue = value.toString().replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\r\n\r\n const formattedValue = this.ModifyValueByFormat(preparedValue);\r\n\r\n const lineBreak = preparedValue.indexOf('<br>') !== -1;\r\n\r\n if (\r\n _.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], this.FieldModel.FieldTypeName) &&\r\n this.FieldModel.FormatName !== FORMATS.PHONE_NUMBER\r\n ) {\r\n return FormatConverter.LocalizeDecimalOrInteger(formattedValue);\r\n }\r\n\r\n return lineBreak ? formattedValue.replace(/<(?!br\\s*\\/?)[^>]+>/g, '') : formattedValue;\r\n }\r\n\r\n ToggleTranslations() {\r\n this._translationFieldEditor.Toggle();\r\n }\r\n\r\n ChangeTranslation(translation: ITranslationValue) {\r\n const value = this.ApplyCulture(translation.Value);\r\n this._value(value);\r\n this.ApplyFormatter();\r\n this.ValidateTranslation(value);\r\n }\r\n\r\n RemoveNotAllowedSymbols() {\r\n if (this.FieldModel.FormatName !== FORMATS.PHONE_NUMBER) {\r\n return;\r\n }\r\n\r\n const regex = /(\\(_\\)|_|\\(\\)|-(?=\\D))/gi;\r\n\r\n const result = this._value() &&\r\n this._value()\r\n .split(regex)[0]\r\n .replace(' ', '');\r\n\r\n this._value(result);\r\n }\r\n\r\n GetFieldMaxLength(): number {\r\n const fieldData = this._model().Fields[0];\r\n if (!fieldData) {\r\n return;\r\n }\r\n\r\n const maxLength = (fieldData.FieldTypeName === FIELD_TYPES.Decimal) ? -1 : fieldData.Size;\r\n\r\n return maxLength > 0 ? maxLength : -1;\r\n }\r\n\r\n OnPhoneListener(countryData: ICountryData, resetValue: boolean) {\r\n if (resetValue) {\r\n this._value('');\r\n }\r\n this._phoneCountry = countryData.iso2;\r\n this._phoneCode = countryData.dialCode;\r\n\r\n if (this._waitForPhoneCode) {\r\n this._value(this.GetFormattedPhoneNumber(this._value()));\r\n this._originalValue = this.GetFormattedPhoneNumber(this._originalValue);\r\n\r\n this._waitForPhoneCode = false;\r\n }\r\n }\r\n\r\n OpenBarcodeScanner() {\r\n const barcodeScanner = new BarcodeScanner();\r\n\r\n barcodeScanner.On('SUBMIT', this, eventArgs => {\r\n this._value(eventArgs.data.value);\r\n });\r\n\r\n barcodeScanner.Show();\r\n }\r\n\r\n MakeCall() {\r\n //SipClient.Instance.MakeCall(this._value());\r\n }\r\n\r\n GetPhoneCode(): string {\r\n return this._phoneCode;\r\n }\r\n\r\n ResetDependOnValue() {\r\n this.UpdateDependsOnValue();\r\n }\r\n\r\n async LoadReferenceConsultScreen() {\r\n if (this._reference() && this.Screen.IsLinkEditor) {\r\n let referenceTable = this.GetReferenceTable();\r\n let referenceRecord = this.GetReferenceRecord();\r\n\r\n if (!!referenceTable && !!referenceRecord) {\r\n BlockUI.Block({ Target: this._el });\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetScreenByScreenType(\r\n referenceTable,\r\n ScreenTypes.ConsultScreen,\r\n referenceRecord,\r\n DataModes.Default,\r\n this.Screen.IsLinkEditor\r\n )\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then((screen: IScreen) => {\r\n screen.RecordOpenInPopUp(!!this._reference(), this.Screen.IsLinkEditor);\r\n screen.SetIsReady(true);\r\n screen.IsReferenceScreen = true;\r\n screen.On('REFRESH_REFERENCE_SCREEN', this, ()=> this.LoadReferenceConsultScreen());\r\n this._referenceConsultScreen(screen);\r\n }).fail(err => new Notifier().Warning(err.message));\r\n }\r\n }\r\n }\r\n\r\n private GetReferenceTable() {\r\n return this._reference().SelectedEntityRecord ? this._reference().SelectedEntityRecord.SelectedEntity.Id : this._reference().ReferenceTable.Id;\r\n }\r\n\r\n private GetReferenceRecord() {\r\n return this._reference().SelectedEntityRecord ? this._reference().SelectedEntityRecord.SelectedRecord.Id : this._reference().RecordId;\r\n }\r\n\r\n get ReferenceConsultScreen(): KnockoutObservable<IScreen> {\r\n return this._referenceConsultScreen;\r\n }\r\n\r\n set BackgroundColor(value: string){\r\n let textInputStyle = { backgroundColor: value };\r\n this._textInputStyle(textInputStyle);\r\n };\r\n\r\n get BackgroundColor(): string{\r\n return this._textInputStyle() && this._textInputStyle().backgroundColor;\r\n };\r\n\r\n PrintBarCode(){\r\n DocumentManagerStore.PrintLabel({ Barcode: this._value() }).fail(err=>new Notifier().Failed(err.message));\r\n }\r\n\r\n ForceFocus(){\r\n let textareaElement = $(this._el).find('.input-group').find('textarea');\r\n\r\n setTimeout(() => {\r\n textareaElement.click();\r\n }, 200);\r\n\r\n textareaElement.one('click', ()=> {\r\n textareaElement.focus();\r\n })\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"text-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-font\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <!--ko if: (IsSocialViewActive()) --> <div data-control-type=\\\"text-control\\\" data-bind=\\\"style: { display: _display, backgroundColor: _backgroundColor }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"text-control inline-social-link\\\"> <!-- ko with: _formatter --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!--ko ifnot: (IsSocialViewActive()) --> <div data-control-type=\\\"text-control\\\" data-bind=\\\"blockElement: $data._isDataLoading, style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"text-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix popover-multiline-container\\\"> <!--ko if: _hasTemplate --> <!-- ko with: _formatter --> <label class=\\\"text-contol-label\\\" data-bind=\\\"tooltip: $parent.DescriptionToolTip, style: $parent._labelStyle\\\"> <strong data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\ttemplate: {\\r\\n\\t\\t\\t\\t\\t\\t\\thtml: $data.GetTemplate.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\tdata: { _onlyLabel: true, _isIconHidden: !$parent._isIconVisible, _isGrid: _isGrid }\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\\"> </strong> <span class=\\\"text-contol-label__name\\\" data-bind=\\\"text: $parent.Label\\\"></span> </label> <div data-bind=\\\"css: $parent.GetClassName(),\\r\\n\\t\\t\\t\\t\\t\\t\\tclick: $parent.OpenEditScreen.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\tattr: { 'data-text': $parent.Label ,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-toggle': $parent._reference() ? 'popover' : '' },\\r\\n\\t\\t\\t\\t\\t\\t\\tstyle: $parent._textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\ttriggerMode: 'hover',\\r\\n\\t\\t\\t\\t\\t\\t\\thtmlMode: true\\\" data-placement=\\\"left\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control link-type-control-input\\\"> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!--ko ifnot: _hasTemplate --> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle, css: _textHeight()\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!--ko if: FormatName === \\\"Phone number\\\" || FormatName === \\\"Barcode\\\" --> <!--ko if: FormatName === \\\"Phone number\\\" --> <div class=\\\"intl-wrapper\\\"> <a data-bind=\\\"attr: {href: _value() ? 'tel:+' + _phoneCode + _value(): 'javascript:void(0)'}, css: {'clickable': _value()}\\\"> <span data-bind=\\\"css: {[FormatName]: true, [_textHeight()]: true}, textInput: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttext: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tellipsisTooltip: {content: '+' + _phoneCode + _value()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tintlTelInput: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tautoPlaceholder: 'aggressive',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tutilsScript: 'intlTelInput-utils',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tseparateDialCode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thiddenInput: 'full_phone',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinitialCountry: _globalCountry\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tlistener: $data.OnPhoneListener.bind($data)\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t attr: {'value': _value, 'data-text': Label}\\\" class=\\\"form-control control record-field with-label es-textarea-control subFormControl\\\"> </span> <i data-bind=\\\"click: $data.MakeCall.bind($data)\\\" class=\\\"fa fa-phone make-call\\\" aria-hidden=\\\"true\\\"></i> </a> </div> <!-- /ko --> <!--ko if: FormatName === \\\"Barcode\\\" --> <!--ko if: IsBarcodeValid() --> <svg data-bind=\\\"jsBarcode: {code: FormatDisplayValue, options: {height: 40, width: 2, displayValue: true}}\\\" class=\\\"barcode-svg\\\"></svg> <!-- /ko --> <!--ko ifnot: IsBarcodeValid() --> <div class=\\\"ban-icon\\\" data-bind=\\\"tooltip: { content: GetTooltipContent() }\\\"> <i class=\\\"fa fa-ban\\\" aria-hidden=\\\"true\\\"></i> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!--ko ifnot: FormatName === \\\"Phone number\\\" || FormatName === \\\"Barcode\\\" --> <!-- ko if: _isHyperlink --> <div data-bind=\\\"css: GetClassName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tclick: $data.OpenRecordScreen.bind($data, $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tattr: { 'data-text': Label,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-value': !!_value(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-toggle': _reference() ? 'popover' : '' },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttooltip: _tooltip,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttext: FormatDisplayValue,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttriggerMode: 'hover',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\thtmlMode: true,\\\" data-placement=\\\"left\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control textarea-control_hyperlink\\\"> </div> <!-- /ko --> <!-- ko ifnot: _isHyperlink --> <!-- ko if: LineBreak || Reference --> <div data-bind=\\\"css: GetClassName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: $data.OpenEditScreen.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { 'data-text': Label,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-value': !!_value(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-toggle': _reference() ? 'popover' : '' },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip: _tooltip,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thtml: FormatDisplayValue,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttriggerMode: 'hover',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thtmlMode: true,\\\" data-placement=\\\"left\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"> </div> <!-- /ko --> <!-- ko ifnot: LineBreak || Reference --> <div data-bind=\\\"css: GetClassName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: $data.OpenEditScreen.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { 'data-text': Label,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-value': !!_value(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-toggle': _reference() ? 'popover' : '' },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip: _tooltip,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttext: FormatDisplayValue,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttriggerMode: 'hover',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thtmlMode: true,\\\" data-placement=\\\"left\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko if: IsBarcodeButtonVisible() && IsBarcodeValid() --> <button data-bind=\\\"click: PrintBarCode\\\" class=\\\"btn blue-sharp barcode-print-button\\\"> <i class=\\\"fa fa-print\\\"></i> </button> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: (IsSocialViewActive()) --> <div data-control-type=\\\"text-control\\\" data-bind=\\\"style: { display: _display, backgroundColor: _backgroundColor}\\\" class=\\\"text-control inline-social-link\\\"> <!-- ko with: _formatter --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!--ko ifnot: (IsSocialViewActive()) --> <div data-control-type=\\\"text-control\\\" data-bind=\\\"style: { display: _display }\\\" class=\\\"text-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix popover-multiline-container\\\"> <!--ko if: _hasTemplate --> <!-- ko with: _formatter --> <label class=\\\"text-contol-label\\\" data-bind=\\\"attr: {'title': $parent.Label }, style: $parent._labelStyle\\\"> <span data-bind=\\\"\\r\\n\\t\\t\\t\\t\\ttemplate: {\\r\\n\\t\\t\\t\\t\\t\\thtml: $data.GetTemplate.bind($data),\\r\\n\\t\\t\\t\\t\\t\\tdata: { _onlyLabel: true, _isIconHidden: !$parent._isIconVisible, _isGrid: _isGrid }\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\\"> </span> <span data-bind=\\\"text: $parent.Label, attr: {'title': $parent.Label }\\\"></span> </label> <div data-bind=\\\"css: $parent.GetClassName(),\\r\\n\\t\\t\\t\\t\\t\\tattr: { 'data-text': $parent.Label,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t'data-toggle': $parent._reference() ? 'popover' : '' },\\r\\n\\t\\t\\t\\t\\t\\tstyle: $parent._textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\thtmlMode: true\\\" data-placement=\\\"left\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control link-type-control-input\\\"> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!--ko ifnot: _hasTemplate --> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <!--ko if: FormatName === \\\"Phone number\\\" --> <div class=\\\"intl-wrapper\\\"> <a data-bind=\\\"attr: {href: _value() ? 'tel:+' + _phoneCode + _value(): 'javascript:void(0)'}, css: {'clickable': _value()}\\\"> <input data-bind=\\\"css: {[FormatName]: true, [_textHeight()]: true }, textInput: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\t value: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\t intlTelInput: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tautoPlaceholder: 'aggressive',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tutilsScript: 'intlTelInput-utils',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tseparateDialCode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thiddenInput: 'full_phone',\\r\\n\\t\\t\\t\\t\\t\\t \\t\\t\\tinitialCountry: _globalCountry\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t \\t\\tlistener: $data.OnPhoneListener.bind($data)\\r\\n\\t\\t\\t\\t\\t\\t\\t },\\r\\n\\t\\t\\t\\t\\t\\t\\t attr: {'value': _value, placeholder: Label}\\\" readonly=\\\"readonly\\\" disabled=\\\"disabled\\\" type=\\\"phone\\\" class=\\\"form-control control record-field with-label es-textarea-control subFormControl\\\" rows=\\\"1\\\"/> <i class=\\\"fa fa-phone make-call\\\" aria-hidden=\\\"true\\\"></i> </a> </div> <!-- /ko --> <!--ko ifnot: FormatName === \\\"Phone number\\\" --> <div data-bind=\\\"css: GetClassName(),\\r\\n\\t\\t\\t\\t\\t\\tclick: $data.OpenEditScreen.bind($data),\\r\\n\\t\\t\\t\\t\\t\\tattr: { 'data-text': Label,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t'data-value': !!_value(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t'data-toggle': _reference() ? 'popover' : '' },\\r\\n\\t\\t\\t\\t\\t\\ttooltip: _tooltip,\\r\\n\\t\\t\\t\\t\\t\\thtml: FormatDisplayValue,\\r\\n\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\ttriggerMode: 'hover',\\r\\n\\t\\t\\t\\t\\t\\thtmlMode: true,\\\" data-placement=\\\"left\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"> </div> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"text-control\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"attr: { 'data-text': Label }, text: _value, style: _textInputStyle, css: { _textHeight, 'with-icon': _isIconVisible}\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"></div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-bind=\\\"blockElement: $data._isDataLoading, click: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\" class=\\\"text-control\\\"> <!--<input type=\\\"text\\\" data-bind=\\\"hasFocus: IsTextFocused\\\"/>--> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition },\\r\\n\\t\\t\\t\\t\\t\\tstyle: { display: _display, backgroundColor: _backgroundColor},\\r\\n\\t\\t\\t\\t\\t\\tcss: {'has-error wobble animated': !_isValid()}\\\" data-control-type=\\\"text-control\\\" class=\\\"EditScreenView label-input form-standart-control clearfix\\\"> <label data-bind=\\\"style: _labelStyle, css: _textHeight()\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid},\\r\\n\\t\\t\\t\\t\\t\\t\\ttooltip:{ content: _validationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <!-- ko if: IsLinkTypeControl() --> <!--<div class=\\\"link-type-icon-wrapper\\\">\\r\\n\\t\\t\\t\\t<i data-bind=\\\"css: {[GetIconNameForLinkType()]: true}\\\"></i>\\r\\n\\t\\t\\t</div>--> <!-- /ko --> <!--ko if: LabelPosition === \\\"NoLabel\\\" --> <!--<span class=\\\"link-type-icon-wrapper\\\" style=\\\"position: absolute; top: 1px;\\\">\\r\\n\\t\\t\\t\\t<i class=\\\"fa fa-send\\\"></i>\\r\\n\\t\\t\\t</span>--> <!-- /ko --> <!--ko if: FormatName === \\\"Phone number\\\" --> <input data-bind=\\\"autogrow: {},\\r\\n\\t\\t\\t\\t\\t\\t\\tcss: {[FormatName]: true, [_textHeight()]: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t'link-type-control-input': IsLinkTypeControl()},\\r\\n\\t\\t\\t\\t\\t\\t\\thasFocus: IsFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\ttextInput: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\tevent: { blur: OnBlur },\\r\\n\\t\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\tintlTelInput: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tautoPlaceholder: 'aggressive',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tutilsScript: 'intlTelInput-utils',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tseparateDialCode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thiddenInput: 'full_phone',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tinitialCountry: _globalCountry,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdropdownContainer: document.body,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tisModal: _form && _form.GetScreen().IsInModal(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tscreen: _form && _form.GetScreen()\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlistener: $data.OnPhoneListener.bind($data)\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\tinputMask: { type: 'Decimal', value: _value },\\r\\n\\t\\t\\t\\t\\t\\t\\tattr: {'readonly': GetCombinedReadOnly(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'required': _isRequired,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'tabindex': GetCombinedReadOnly() ? -1 : 1,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'value': _value\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tevent: {'keyup': OnKeyUpValidation, 'paste': $data.OnPastePhoneNumber.bind($data)}\\\" type=\\\"phone\\\" class=\\\"form-control control record-field with-label es-textarea-control subFormControl entlTelInput--edit-mode\\\" rows=\\\"1\\\"/> <!-- /ko --> <!--ko ifnot: FormatName === \\\"Phone number\\\"--> <div class=\\\"input-group\\\" data-bind=\\\"css: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[FormatName]: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'barcode': IsBarcodeFormat\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\"> <textarea data-bind=\\\"autogrow: {},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[FormatName]: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[_textHeight()]: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'displayIcon': FormatName === 'Currency',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'link-type-control-input': IsLinkTypeControl(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'input-with-translations': _hasTranslations(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'input-with-barcode-button': IsBarcodeButtonVisible()\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thasFocus: IsFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tinputMask: { fieldModel: FieldModel, value: _value },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'readonly': GetCombinedReadOnly(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'required': _isRequired,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'tabindex': GetCombinedReadOnly() ? -1 : 1,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'maxlength': GetFieldMaxLength(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'placeholder' : Label},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tevent: {'keyup': OnKeyUpValidation, blur : OnKeyUpValidation}\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label es-textarea-control subFormControl\\\" rows=\\\"1\\\" data-with-number-group-separators=\\\"true\\\">\\r\\n\\t\\t\\t\\t</textarea> <!-- ko if: IsBarcodeButtonVisible() --> <button data-bind=\\\"click: OpenBarcodeScanner\\\" class=\\\"btn blue-sharp text-control__barcode-button\\\"> <i class=\\\"fa fa-barcode\\\"></i> </button> <!-- /ko --> <!-- ko ifnot: IsBarcodeFormat --> <!-- ko if: IsDependsOn --> <span class=\\\"input-group-addon u-cursor-pointer\\\" data-bind=\\\"click: $data.ResetDependOnValue\\\"> <i class=\\\"fa fa-refresh\\\"></i> </span> <!--/ko--> <!--ko if: _hasTranslations--> <div data-bind=\\\"css: { 'is-mobile': _isMobile }\\\" class=\\\"translation-container\\\"> <a class=\\\"btn btn-secondary translation-list\\\" data-bind=\\\"click: ToggleTranslations\\\"> <!--ko with: _translationFieldEditor._activeTranslationItem--> <!--ko if: Language.Flag--> <img class=\\\"language-selection-img\\\" data-bind=\\\"attr: {src: Language.Flag}\\\" height=\\\"20\\\"> <!--/ko--> <!--ko ifnot: Language.Flag--> <span class=\\\"language-shortname\\\" data-bind=\\\"text: Language.ShortName\\\"></span> <!--/ko--> <!--/ko--> </a> <!-- ko with: _translationFieldEditor --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!--/ko--> <!-- ko if: IsBarcodeButtonVisible() --> <button data-bind=\\\"click: OpenBarcodeScanner\\\" class=\\\"btn blue-sharp text-control__barcode-button\\\"> <i class=\\\"fa fa-barcode\\\"></i> </button> <!-- /ko --> <!--ko if: FormatName === 'Currency' --> <span class=\\\"currencyIcon\\\"></span> <!--/ko--> <!--ko if: IsPercentageIcon --> <span data-bind=\\\"css: {'is-depends-on': IsDependsOn}\\\" class=\\\"percentageIcon\\\"></span> <!--/ko--> <!--/ko--> </div> <!-- /ko --> <!--<i data-bind=\\\"click: $data.ResetDependOnValue\\\" class=\\\"fa fa-refresh\\\"></i>--> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","//Libs\r\nimport * as moment from \"moment\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\n\r\nexport class DateTime {\r\n\tstatic GetWeekNumber(date: Date): number {\r\n\t\treturn moment(date).isoWeek();\r\n\t}\r\n\r\n\tstatic DestructDate(date: Date): IDestructedDate {\r\n\t\tconst weekAndYear: IDestructedDate = {\r\n\t\t\tWeekNumber: this.GetWeekNumber(date),\r\n\t\t\tYear: this.GetWeekYear(date)\r\n\t\t}\r\n\r\n\t\treturn weekAndYear;\r\n\t}\r\n\r\n\tstatic GetWeekYear(date: Date): number {\r\n\t\treturn moment(date).isoWeekYear();\r\n\t}\r\n\r\n\tstatic GetWeekDescription(date: Date): string {\r\n return moment(date).format(DATE_FORMATS.LONG_DATE_SHORT_WEEK.MomentFormat);\r\n }\r\n\r\n\tstatic GetWeekStart(date: Date): Date {\r\n\t\treturn moment(date).startOf(\"isoWeek\").toDate();\r\n\t}\r\n\r\n\tstatic GetWeekStartByNumber(week: number, year: number): Date {\r\n\t\treturn moment().year(year).isoWeek(week).startOf(\"isoWeek\").toDate();\r\n\t}\r\n\r\n\tstatic GetWeekEnd(date: Date): Date {\r\n\t\treturn moment(date).endOf(\"isoWeek\").toDate();\r\n\t}\r\n\r\n\tstatic GetPrevWeekStartDate(date: Date) {\r\n\t\tconst weekStartDate = this.GetWeekStart(date);\r\n\t\treturn this.AddDays(weekStartDate, -7);\r\n\t}\r\n\r\n\tstatic GetNextWeekStartDate(date: Date) {\r\n\t\tconst weekEndDate = this.GetWeekEnd(date);\r\n\t\treturn this.AddSeconds(weekEndDate, 1);\r\n\t}\r\n\r\n\tstatic GetDatesBetween(start: Date, end: Date): Date[] {\r\n\t\tconst datesRange: Date[] = [];\r\n\t\tlet current = new Date(start.toString());\r\n\r\n\t\twhile (current <= end) {\r\n\t\t\tdatesRange.push(new Date(current.toString()));\r\n\t\t\tcurrent = this.AddDays(current, 1);\r\n\t\t}\r\n\r\n\t\treturn datesRange;\r\n\t}\r\n\r\n\tstatic GetWeeksCount(year: number): number {\r\n\t\treturn moment(new Date(year, 1, 1)).isoWeeksInYear();\r\n\t}\r\n\r\n\tstatic AddMinutes(date: Date, minutes: number): Date {\r\n\t\treturn moment(date).add(\"minutes\", minutes).toDate();\r\n\t}\r\n\r\n\tstatic AddSeconds(date: Date, seconds: number): Date {\r\n\t\treturn moment(date).add(\"seconds\", seconds).toDate();\r\n\t}\r\n\r\n\tstatic AreSame(first: Date, second: Date, withTime: boolean = false): boolean {\r\n\t\tif (withTime) {\r\n\t\t\treturn first === second;\r\n\t\t}\r\n\r\n const firstCopy = moment(new Date(first.toString())).hours(0).minutes(0).seconds(0).milliseconds(0).toDate();\r\n const secondCopy = moment(new Date(second.toString())).hours(0).minutes(0).seconds(0).milliseconds(0).toDate();\r\n\r\n\t\treturn firstCopy === secondCopy;\r\n\t}\r\n\r\n\tstatic Max(first: Date, second: Date, withTime: boolean = false): Date {\r\n\t\tif (withTime) {\r\n\t\t\treturn first >= second\r\n\t\t\t\t? first\r\n\t\t\t\t: second;\r\n\t\t}\r\n\r\n const firstCopy = moment(new Date(first.toString())).hours(0).minutes(0).seconds(0).milliseconds(0).toDate();\r\n const secondCopy = moment(new Date(second.toString())).hours(0).minutes(0).seconds(0).milliseconds(0).toDate();\r\n\r\n\t\treturn firstCopy >= secondCopy\r\n\t\t\t? first\r\n\t\t\t: second;\r\n\t}\r\n\r\n\tprivate static AddDays(date: Date, days: number): Date {\r\n\t\tconst newDate = new Date(date.valueOf());\r\n\t\tnewDate.setDate(newDate.getDate() + days);\r\n\t\treturn newDate;\r\n\t}\r\n}\r\n\r\nexport interface IDestructedDate {\r\n\tWeekNumber: number;\r\n\tYear: number;\r\n}","import {Event} from \"Core/Common/Event\";\r\n\r\nexport abstract class TimeWritingView extends Event {\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tabstract GetTemplate();\r\n\r\n\tabstract Show(params: any): void;\r\n\r\n\tAfterRender(): void {\r\n\r\n\t}\r\n\r\n\tCanBeUpdated() {\r\n\t\treturn true;\r\n\t}\r\n}","import { Week } from \"Core/Components/Controls/TimeWriting/Models/View/YearDataViewModel\";\r\n\r\nexport class State {\r\n\tYear: number;\r\n\tSelectedWeek: Week;\r\n\r\n\tconstructor(initializers?: Partial<State>) {\r\n\t\tif (initializers) {\r\n\t\t\tthis.Year = initializers.Year;\r\n\t\t\tthis.SelectedWeek = initializers.SelectedWeek;\r\n\t\t}\r\n\t}\r\n}","//Common\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Request} from \"Core/Common/Request\";\r\nimport {Deserialize} from 'libs/cerialize';\r\n\r\n//UI\r\n\r\n//Models\r\nimport {YearDataResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Year/Response/YearDataResponseModel\";\r\nimport {SaveReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\nimport {TimeWritingReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/TimeWritingReportResponseModel\";\r\nimport {DeleteReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel\";\r\nimport {UsersResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel\";\r\nimport {DisapprovedReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Disapproved/Response/DisapprovedReportResponseModel\";\r\nimport {TimeCloseReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/TimeCloseReportResponseModel\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\n\r\nexport class TimeWritingStore {\r\n static GetUsers(timeTableId: number) {\r\n const deferredResult = P.defer<UsersResponseModel>();\r\n\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/GetTimeWritingUsers\",\r\n type: \"GET\",\r\n dataType: \"json\"\r\n }, params: {timeTableId: timeTableId}\r\n }).then(response => this.ResolveObjectResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse('Error getting users', deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDay(params: {\r\n ControlId: number,\r\n TimeTableId: number,\r\n SubjectEntityId: number | null,\r\n SubjectRecordId: number | null,\r\n Date: string,\r\n UserId: number\r\n }): P.Promise<TimeWritingReportResponseModel> {\r\n const deferredResult = P.defer<TimeWritingReportResponseModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/GetTimeWritingReportForDay\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n }).then(response => {\r\n this.ResolveObjectResponse(response, deferredResult);\r\n if (response.ResultObject.WeekReports[0].Messages.length > 0) {\r\n response.ResultObject.WeekReports[0].Messages.forEach(message => {\r\n switch (message.Type) {\r\n case \"Warning\":\r\n new Notifier().Warning(message.Message);\r\n break;\r\n case \"Success\":\r\n new Notifier().Success(message.Message);\r\n break;\r\n case \"Failed\":\r\n new Notifier().Failed(message.Message);\r\n break;\r\n }\r\n })\r\n }\r\n }).fail(() => this.RejectResponse(\"Error getting day data\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDays(params: {\r\n ControlId: number,\r\n TimeTableId: number,\r\n SubjectEntityId: number | null,\r\n SubjectRecordId: number | null,\r\n StartDate: string,\r\n EndDate: string,\r\n UserId: number\r\n }): P.Promise<TimeWritingReportResponseModel> {\r\n const deferredResult = P.defer<TimeWritingReportResponseModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/GetTimeWritingReportForDays\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n }).then(response => {\r\n this.ResolveObjectResponse(response, deferredResult);\r\n }).fail(() => this.RejectResponse(\"Error getting day data\", deferredResult));\r\n return deferredResult.promise();\r\n }\r\n\r\n static CloseDate(params: {\r\n TimeCloseDate: string,\r\n UserId: number\r\n }): P.Promise<TimeCloseReportResponseModel> {\r\n const deferredResult = P.defer<TimeCloseReportResponseModel>();\r\n\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/CloseDate\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n }).then(response => this.ResolveObjectResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error setting time close date\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDisapproved(params: {\r\n ControlId: number,\r\n TimeTableId: number,\r\n SubjectEntityId: number | null,\r\n SubjectRecordId: number | null,\r\n UserId: number\r\n }): P.Promise<DisapprovedReportResponseModel> {\r\n const deferredResult = P.defer<DisapprovedReportResponseModel>();\r\n\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/GetDisapprovedReport\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n }).then(response => this.ResolveObjectResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error getting disapproved data\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetYear(model: { Year: number, EntityId: number, UserId: number, SubjectEntityId: number, SubjectRecordId: number }): P.Promise<YearDataResponseModel> {\r\n const deferredResult = P.defer<YearDataResponseModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/GetYearReport\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: model\r\n }).then(response => {\r\n this.ResolveObjectResponse(response, deferredResult);\r\n })\r\n .fail(() => this.RejectResponse(\"Error getting reservation by year\", deferredResult));\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreateReservation(model: SaveReservationRequestModel) {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/CreateReservation\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: model\r\n }).then(response => this.ResolveResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error updating reservation\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static AcceptReservation(model: SaveReservationRequestModel) {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/AcceptReservation\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: model\r\n }).then(response => this.ResolveResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error updating reservation\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateReservation(model: SaveReservationRequestModel): P.Promise<any> {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/UpdateReservation\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: model\r\n }).then(response => this.ResolveResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error updating reservation\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static DeleteReservation(model: DeleteReservationRequestModel): P.Promise<any> {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/DeleteReservation\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: model\r\n }).then(response => this.ResolveResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error updating reservation\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetSubject(entityId: number, recordId: number) {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/RecordsApi/Get\",\r\n type: \"GET\",\r\n dataType: \"json\"\r\n },\r\n params: {\r\n TableId: entityId,\r\n RecordId: recordId\r\n }\r\n })\r\n .then(response => deferredResult.resolve(response))\r\n .fail(() => this.RejectResponse(\"Error updating reservation\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static ValidateTimeWritingSubject(tableId: number, recordId: number) {\r\n const deferredResult = P.defer<any>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/ValidateTimeWritingSubject\",\r\n type: \"GET\",\r\n dataType: \"json\"\r\n },\r\n params: {\r\n tableId: tableId,\r\n recordId: recordId\r\n }\r\n })\r\n .then(response => this.ResolveObjectResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error validating time writing subject\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n private static ResolveResponse(response, deferredResult: P.Deferred<any>) {\r\n if (response.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: response.ErrorMessage});\r\n }\r\n }\r\n\r\n private static ResolveObjectResponse<T>(response, deferredResult: P.Deferred<T>) {\r\n if (response.IsSuccessfull) {\r\n deferredResult.resolve(response.ResultObject);\r\n } else {\r\n deferredResult.reject({message: response.ErrorMessage});\r\n }\r\n }\r\n\r\n private static RejectResponse<T>(message: string, deferredResult: P.Deferred<T>) {\r\n deferredResult.reject({message: message});\r\n }\r\n}","import {UsersViewModel} from \"./UsersViewModel\";\r\n\r\nexport class YearDataViewModel {\r\n\tYear: number;\r\n\tQuaters: Quater[];\r\n\r\n\tCurrentYear: number;\r\n\tCurrentWeek: number;\r\n DataBySubject: boolean;\r\n\r\n\tUsers: UsersViewModel;\r\n\r\n\tconstructor() {\r\n\t\tthis.Quaters = [];\r\n\t\tthis.DataBySubject = false;\r\n\t}\r\n\r\n\tIsCurrentYear() {\r\n\t\treturn this.Year === this.CurrentYear;\r\n\t}\r\n\r\n\tIsCurrentWeek(week: Week) {\r\n\t\treturn this.IsCurrentYear() && week.Number === this.CurrentWeek;\r\n\t}\r\n\r\n\tNavigationAllowed(week: Week) {\r\n\t\treturn this.Year < this.CurrentYear ||\r\n\t\t\t(this.Year === this.CurrentYear && week.Number <= this.CurrentWeek);\r\n\t}\r\n}\r\n\r\nexport class Quater {\r\n\tWeeks: Week[];\r\n\r\n\tconstructor(initializers?: Partial<Quater>) {\r\n\t\tlet weeks = [];\r\n\r\n\t\tif (initializers) {\r\n\t\t\tweeks = initializers.Weeks || [];\r\n\t\t}\r\n\r\n\t\tthis.Weeks = weeks;\r\n\t}\r\n}\r\n\r\nexport class Week {\r\n\tNumber: number;\r\n\tBooked: any;\r\n\tSaldo: any;\r\n\tIsEditable: boolean;\r\n\tEmpty: boolean;\r\n HasDisapprovedHours: boolean;\r\n}","//Store models\r\nimport { WeekDataResponseModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Year/Response/WeekDataResponseModel\";\r\n\r\n//View models\r\nimport { Week } from \"Core/Components/Controls/TimeWriting/Models/View/YearDataViewModel\";\r\n\r\nexport class WeekMappings {\r\n\tstatic OnViewModel(model: WeekDataResponseModel): Week {\r\n const week = new Week();\r\n\r\n\t\tweek.Number = model.WeekNumber;\r\n\t\tweek.Booked = Math.round(model.Booked * 100) / 100;\r\n\t\tweek.Saldo = Math.round(model.Saldo * 100) / 100;\r\n\t\tweek.IsEditable = model.IsEditable;\r\n\t\tweek.Empty = true;\r\n\t\tweek.HasDisapprovedHours = model.HasDisapprovedHours;\r\n\r\n\t\treturn week;\r\n\t}\r\n}","//Libs\r\nimport * as _ from \"underscore\";\r\n\r\n//Store models\r\nimport { YearDataResponseModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Year/Response/YearDataResponseModel\";\r\n\r\n//View models\r\nimport { YearDataViewModel, Quater } from \"Core/Components/Controls/TimeWriting/Models/View/YearDataViewModel\";\r\n\r\n//Mappings\r\nimport { WeekMappings } from \"Core/Components/Controls/TimeWriting/Mappings/Year/WeekMappings\";\r\n\r\nexport class YearMappingProfile {\r\n\tstatic OnViewModel(model: YearDataResponseModel): YearDataViewModel {\r\n\t\tconst viewModel = new YearDataViewModel();\r\n\r\n\t\tconst weeks = model.Summaries.map(week => WeekMappings.OnViewModel(week));\r\n\r\n\t\t// it was \"-\" instead of \"0\" while you have no record data Booked && Saldo\r\n\t\tlet firstRecord = _.find(weeks, function (week) { return week.Booked != 0 });\r\n\r\n\t\tlet emptyWeeks = weeks.every(function (elem) {\r\n\t\t\tvar bookedCheck = (elem.Booked == 0 && elem.Saldo == 0);\r\n\t\t\tif (bookedCheck) {\r\n\t\t\t\telem.Booked = \" - \";\r\n\t\t\t\telem.Saldo = \" - \";\r\n\t\t\t}\r\n\t\t\treturn bookedCheck;\r\n\t\t});\r\n\r\n\t\t_.each(weeks, week => {\r\n\t\t\tif (week.Saldo == 0) {\r\n\t\t\t\tweek.Booked = \" - \";\r\n\t\t\t\tweek.Saldo = \" - \";\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst chunkedWeeks = this.Chunk(weeks, 4);\r\n\r\n\t\tviewModel.DataBySubject = model.DataBySubject;\r\n\t\tviewModel.Quaters = chunkedWeeks.map(weeksOfQuater => new Quater({ Weeks: weeksOfQuater }));\r\n return viewModel;\r\n\t}\r\n\t\r\n\tprivate static Chunk<T>(array: Array<T>, chunks: number): T[][] {\r\n\t\tconst elementsInChunk = array.length / chunks;\r\n\r\n\t\tconst dictionary = _.groupBy(array, (element, index) => Math.floor(index / elementsInChunk));\r\n\r\n\t\tconst chunkedArray = Object.keys(dictionary).map(key => dictionary[key]);\r\n\t\treturn chunkedArray;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"portlet box blue time-writing-control year-template\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <!-- ko with: _viewModel --> <i class=\\\"fa fa-calendar\\\"></i> <!--ko text: $parent._labels.YEAR_OVERVIEW --><!-- /ko--> (<!--ko text: $parent._labels.NORM_40_HOURS --><!-- /ko-->) <!-- /ko --> </div> <div class=\\\"caption time-writting-caption-centered\\\"> <i class=\\\"glyphicon glyphicon-arrow-left prev-page\\\" data-bind=\\\"click: OnPrevYearClick\\\"></i> <!-- ko with: _viewModel --> <div class=\\\"current-year\\\"> <span class=\\\"navigation-link\\\" data-bind=\\\"text: Year, click: $parent.OnCurrentYearClick.bind($parent)\\\"></span> </div> <!-- /ko --> <!-- ko if: _isPastYear --> <i class=\\\"glyphicon glyphicon-arrow-right next-page\\\" data-bind=\\\"click: OnNextYearClick\\\"></i> <!-- /ko --> <!-- ko ifnot: _isPastYear --> <i class=\\\"glyphicon glyphicon-arrow-right next-page disabled\\\"></i> <!-- /ko --> </div> <div class=\\\"caption pull-right\\\"> <!--ko with: _viewModel--> <select class=\\\"form-control\\\" data-bind=\\\"options: Users.Users, optionsText: 'Name', value: Users.SelectedUser, event: {change: $parent.UserSelected.bind($parent, Users.SelectedUser())}\\\"></select> <!--/ko--> </div> </div> <div class=\\\"portlet-body\\\"> <!-- ko with: _viewModel --> <!-- ko foreach: Quaters --> <div class=\\\"weeks-table clearfix\\\"> <div class=\\\"week-row clearfix\\\"> <div class=\\\"week-column title-column\\\"><!--ko text: $parents[1]._labels.WEEK --><!-- /ko--></div> <!-- ko foreach: Weeks--> <div class=\\\"week-column\\\"> <!-- ko if: HasDisapprovedHours --> <i class=\\\"fa fa-clock-o icon-red\\\" aria-hidden=\\\"true\\\" data-bind=\\\"attr:{ title: $parents[2]._labels.WEEK_DISAP_RECORDS}\\\"></i> <!-- /ko --> <span class=\\\"week\\\" data-bind=\\\"text: Number,\\r\\n\\t\\t\\t\\t\\t\\t\\tcss: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'current': $parents[1].IsCurrentWeek($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'editable': IsEditable,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'navigatable': $parents[1].NavigationAllowed($data)\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\tclick: $parents[2].OnWeekClick.bind($parents[2], $data)\\\"></span> </div> <!-- /ko --> </div> <div class=\\\"week-row clearfix\\\"> <div class=\\\"week-column title-column\\\"><!--ko text: $parents[1]._labels.BOOKED --><!-- /ko--></div> <!-- ko foreach: Weeks--> <div data-bind=\\\"text: Booked, css: {'current-week': Number == $parents[2]._currentWeek()}\\\" class=\\\"week-column\\\"></div> <!-- /ko --> </div> <!--ko if: !$parents[1]._dataBySubject() --> <div class=\\\"week-row clearfix\\\"> <div class=\\\"week-column title-column\\\"><!--ko text: $parents[1]._labels.SALDO --><!-- /ko--></div> <!-- ko foreach: Weeks--> <div data-bind=\\\"text: Saldo, css: {'current-week': Number == $parents[2]._currentWeek()}\\\" class=\\\"week-column\\\"></div> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import {UserManager} from \"User/UserManager\";\r\n\r\nexport class UsersResponseModel {\r\n\tUsers: UserResponseModel[];\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = [];\r\n\t}\r\n\r\n\tstatic CreateDefault() {\r\n\t\tconst currentUser = UserManager.Instance.CurrentUser;\r\n\t\tconst defaultUser = new UserResponseModel();\r\n\r\n\t\tdefaultUser.Id = currentUser.Id;\r\n\t\tdefaultUser.Name = currentUser.Name;\r\n\r\n\t\tconst model = new UsersResponseModel();\r\n\t\tmodel.Users = [defaultUser];\r\n\r\n\t\treturn model;\r\n\t}\r\n}\r\n\r\nexport class UserResponseModel {\r\n\tId: number;\r\n\tName: string;\r\n}","import * as ko from 'knockout';\r\n\r\nexport class UsersViewModel {\r\n\tUsers: KnockoutObservableArray<UserViewModel>;\r\n\tSelectedUser: KnockoutObservable<UserViewModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = ko.observableArray([]);\r\n\t\tthis.SelectedUser = ko.observable(null);\r\n\t}\r\n}\r\n\r\nexport class UserViewModel {\r\n\tId: number;\r\n\tName: string;\r\n}","import {UserResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel\";\r\nimport {UserViewModel} from \"Core/Components/Controls/TimeWriting/Models/View/UsersViewModel\";\r\n\r\nexport class UserMappings {\r\n\tstatic OnViewModel(user: UserResponseModel) {\r\n\t\tconst userViewModel = new UserViewModel();\r\n\r\n\t\tuserViewModel.Id = user.Id;\r\n\t\tuserViewModel.Name = user.Name;\r\n\r\n\t\treturn userViewModel;\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport {UsersResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel\";\r\nimport {UsersViewModel} from \"Core/Components/Controls/TimeWriting/Models/View/UsersViewModel\";\r\nimport {UserMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/UserMappings\";\r\nimport { UserManager } from \"User/UserManager\";\r\n\r\nexport class UsersMappingProfile {\r\n\tstatic OnViewModel(model: UsersResponseModel) {\r\n\t\tconst viewModel = new UsersViewModel();\r\n\r\n\t\tconst users = model.Users.map(user => UserMappings.OnViewModel(user));\r\n\t\tconst selectedUser = _.find(users, user => user.Id === UserManager.Instance.CurrentUser.Id);\r\n\r\n\t\tviewModel.Users(users);\r\n\t\tviewModel.SelectedUser(selectedUser);\r\n\r\n\t\treturn viewModel;\r\n\t}\r\n}","//Libs\r\nimport * as ko from \"knockout\";\r\n\r\n//Common\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\n//Utils\r\nimport {DateTime, IDestructedDate} from \"Core/Components/Controls/TimeWriting/Utils/DateTime\";\r\n\r\n//Views\r\nimport {TimeWritingView} from \"Core/Components/Controls/TimeWriting/Views/TimeWritingView\";\r\n\r\n//State\r\nimport {State} from \"Core/Components/Controls/TimeWriting/Views/Year/State\";\r\n\r\n//ViewModels\r\nimport {YearDataViewModel, Week} from \"Core/Components/Controls/TimeWriting/Models/View/YearDataViewModel\";\r\n\r\n//Stores\r\nimport {TimeWritingStore} from \"Core/Components/Controls/TimeWriting/Stores/TimeWritingStore\";\r\n\r\n//StoreModels\r\nimport {YearDataResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Year/Response/YearDataResponseModel\";\r\n\r\n//Mappings\r\nimport {YearMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Year/YearMappingProfile\";\r\n\r\n//Templates\r\nimport YearTemplate from \"Core/Components/Controls/TimeWriting/Templates/YearTemplate.html\";\r\nimport {IYearViewSettings} from \"Core/Components/Controls/TimeWriting/Views/Year/IYearViewSettings\";\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {UserManager} from \"../../../../../../User/UserManager\";\r\nimport {UsersResponseModel} from \"../../Models/Store/Day/Response/UsersResponseModel\";\r\nimport {UsersMappingProfile} from \"../../Mappings/Day/UsersMappingProfile\";\r\nimport {UsersViewModel, UserViewModel} from \"../../Models/View/UsersViewModel\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nexport class YearView extends TimeWritingView {\r\n private _currentDate: IDestructedDate;\r\n private _state: KnockoutObservable<State>;\r\n private _viewModel: KnockoutObservable<YearDataViewModel>;\r\n private _isPastYear: KnockoutComputed<boolean>;\r\n private _currentWeek: KnockoutObservable<number>;\r\n private _labels = LABELS;\r\n private _dataBySubject: KnockoutObservable<boolean>;\r\n\r\n constructor(private _settings: IYearViewSettings) {\r\n super();\r\n this._currentDate = DateTime.DestructDate(new Date());\r\n this._state = ko.observable(new State({Year: this._currentDate.Year}));\r\n this._viewModel = ko.observable(null);\r\n this._currentWeek = ko.observable(null);\r\n this._isPastYear = ko.computed(() => this._state().Year < this._currentDate.Year, this);\r\n this._dataBySubject = ko.observable(null);\r\n }\r\n\r\n GetTemplate() {\r\n return YearTemplate;\r\n }\r\n\r\n Show(year: number, userId?: number) {\r\n this._state(new State({\r\n Year: year\r\n }));\r\n\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n if (usersList && userId) {\r\n const selectedUser = usersList.Users().find(user => user.Id === userId);\r\n if (selectedUser) {\r\n usersList.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n if (usersList) {\r\n this.LoadData(year, usersList.SelectedUser().Id)\r\n .then(model => this.RenderData(model, usersList))\r\n .fail(error => this.ShowError(error.message));\r\n } else {\r\n const loadDataPromise = this.LoadData(year, userId || UserManager.Instance.CurrentUser.Id);\r\n const loadUsersPromise = this.LoadUsers();\r\n\r\n loadDataPromise.fail(error => this.ShowError(error.message));\r\n loadUsersPromise.fail(error => this.ShowError(error.message));\r\n\r\n P.when(loadDataPromise, loadUsersPromise).then(result => this.RenderData(result[0], result[1], userId || UserManager.Instance.CurrentUser.Id));\r\n }\r\n }\r\n\r\n OnCurrentYearClick() {\r\n this.Show(this._viewModel().CurrentYear);\r\n }\r\n\r\n OnPrevYearClick() {\r\n const year = this._state().Year - 1;\r\n this.Show(year);\r\n }\r\n\r\n OnNextYearClick() {\r\n const year = this._state().Year + 1;\r\n this.Show(year);\r\n }\r\n\r\n OnWeekClick(week: Week) {\r\n if (this._viewModel().NavigationAllowed(week)) {\r\n this._state().SelectedWeek = week;\r\n this.Trigger(\"WeekSelected\", {State: this._state(), UserId: this._viewModel().Users.SelectedUser().Id});\r\n }\r\n }\r\n\r\n private LoadData(year: number, userId: number) {\r\n return TimeWritingStore.GetYear({\r\n Year: year,\r\n EntityId: this._settings.EntityId,\r\n UserId: userId,\r\n SubjectEntityId: this._settings.SubjectEntityId,\r\n SubjectRecordId: this._settings.SubjectRecordId\r\n });\r\n }\r\n\r\n private RenderData(model: YearDataResponseModel, users: UsersViewModel, selectedUserId?: number) {\r\n const viewModel = YearMappingProfile.OnViewModel(model);\r\n\r\n viewModel.Year = this._state().Year;\r\n viewModel.CurrentWeek = this._currentDate.WeekNumber;\r\n viewModel.CurrentYear = this._currentDate.Year;\r\n viewModel.Users = users;\r\n\r\n if (selectedUserId) {\r\n const selectedUser = viewModel.Users.Users().find(user => user.Id === selectedUserId);\r\n if (selectedUser) {\r\n viewModel.Users.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n this._currentWeek(viewModel.CurrentWeek);\r\n this._dataBySubject(viewModel.DataBySubject);\r\n\r\n this._viewModel(viewModel);\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n private LoadUsers() {\r\n return TimeWritingStore.GetUsers(this._settings.EntityId)\r\n .then(users => users.Users.length === 0\r\n ? UsersResponseModel.CreateDefault()\r\n : UsersMappingProfile.OnViewModel(users)\r\n )\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private UserSelected(user: UserViewModel) {\r\n this.Show(this._state().Year);\r\n }\r\n\r\n private ShowError(message: string) {\r\n new Notifier().Failed(message);\r\n }\r\n}","export enum DAYS_OF_WEEK {\r\n\tSunday,\r\n\tMonday,\r\n\tTuesday,\r\n\tWednesday,\r\n\tThursday,\r\n\tFriday,\r\n\tSaturday\r\n}","export enum TimeStatus {\r\n Disapproved = 'Disapproved',\r\n Booked = 'Booked',\r\n Approved = 'Approved'\r\n}\r\n","// Module\nvar code = \"<!-- ko foreach: _cellEditors --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> \";\n// Exports\nexport default code;","//Libs\r\nimport * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\nimport * as moment from \"moment\";\r\nimport {RecordStore} from \"Core/Common/Stores/RecordStore\";\r\n\r\n//Models\r\nimport {\r\n Subject,\r\n AllowedEntity,\r\n LookupField,\r\n LookupValue\r\n} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\n\r\n//Templates\r\nimport RowEditorTemplate from \"Core/Components/Controls/TimeWriting/Templates/RowEditorTemplate.html\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {TimeStatus} from \"Core/Components/Controls/TimeWriting/Constants/TimeStatus\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {FieldFormat} from \"Core/Common/FieldFormat\";\r\nimport {SearchScreen} from \"Core/Screens/SearchScreen/SearchScreen\";\r\nimport {TranslationFieldEditor} from \"../../../TranslationFieldEditor/TranslationFieldEditor\";\r\nimport {ITranslationValue} from \"../../../TranslationFieldEditor/ITranslationValue\";\r\nimport {TranslationManager} from \"../../../Translation/TranslationManager\";\r\nimport {TranslationItem} from \"../../../TranslationFieldEditor/TranslationItem\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport DropDownContentTemplate from 'Core/Controls/MultiSelect/Templates/DropDownContent.html';\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\nimport {ItemModel} from 'Core/Controls/MultiSelect/Models/MultiSelectListModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {SERVER_REQUEST_ERRORS} from \"Core/Common/Enums/ServerRequestErrors\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nexport class RowEditor {\r\n private _guid: string;\r\n public _day: string;\r\n private _lookupFields: LookupField[];\r\n private _cellEditors: CellEditor[];\r\n private _state: State;\r\n\r\n constructor(guid: string, day: string, lookupFields: LookupField[], ...cellEditors: CellEditor[]) {\r\n this._guid = guid;\r\n if (day) {\r\n this._day = day;\r\n }\r\n this._lookupFields = lookupFields;\r\n this._cellEditors = cellEditors;\r\n }\r\n\r\n get Guid() {\r\n return this._guid;\r\n }\r\n\r\n get IsEditState() {\r\n return this._state === State.Edit;\r\n }\r\n\r\n get IsNewState() {\r\n return this._state === State.New;\r\n }\r\n\r\n SetState(state: State) {\r\n this._state = state;\r\n this._cellEditors.forEach(editor => editor.SetState(state));\r\n }\r\n\r\n CancelChanges() {\r\n this.GetValueCellEditors()\r\n .forEach((editor: ValueCellEditor<any>) => editor.RollbackChanges());\r\n }\r\n\r\n SaveChanges() {\r\n this.GetValueCellEditors()\r\n .forEach((editor: ValueCellEditor<any>) => editor.CommitChanges());\r\n }\r\n\r\n GetTemplate() {\r\n return RowEditorTemplate;\r\n }\r\n\r\n Validate() {\r\n const validationEditors = this.GetValidationCellEditors();\r\n\r\n if (!_.any(validationEditors)) {\r\n return true;\r\n }\r\n\r\n const validationResults = validationEditors.map((editor: ValidationCellEditor<any>) => editor.Valid());\r\n const allEditorsAreValid = _.all(validationResults, result => result);\r\n\r\n return allEditorsAreValid;\r\n }\r\n\r\n private GetValueCellEditors() {\r\n return this._cellEditors\r\n .filter(editor => (editor instanceof ValueCellEditor));\r\n }\r\n\r\n private GetValidationCellEditors() {\r\n return this._cellEditors\r\n .filter(editor => (editor instanceof ValidationCellEditor));\r\n }\r\n}\r\n\r\nexport class WeekRowEditor {\r\n private _guid: string;\r\n public _day: string;\r\n private _lookupFields: LookupField[];\r\n private _cellEditors: CellEditor[];\r\n\r\n constructor(guid: string, day: string, lookupFields: LookupField[], ...cellEditors: CellEditor[]) {\r\n this._guid = guid;\r\n if (day) {\r\n this._day = day;\r\n }\r\n this._lookupFields = lookupFields;\r\n this._cellEditors = cellEditors;\r\n }\r\n\r\n get Guid() {\r\n return this._guid;\r\n }\r\n\r\n get Day() {\r\n return this._day;\r\n }\r\n\r\n GetTemplate() {\r\n return RowEditorTemplate;\r\n }\r\n}\r\n\r\nexport interface ICell {\r\n Name: string;\r\n Label;\r\n ViewTemplate: any;\r\n Visible: KnockoutObservable<boolean>;\r\n ClassName: string;\r\n Size?: any;\r\n}\r\n\r\nexport interface IDynamicCell extends ICell {\r\n EditTemplate: any;\r\n Size?: any;\r\n}\r\n\r\nexport interface IValueCell<T> extends IDynamicCell {\r\n Value: KnockoutObservable<T>;\r\n Editable: boolean;\r\n}\r\n\r\ninterface IValidationRule<T> {\r\n Validate: (value: T) => boolean;\r\n Message?: string;\r\n}\r\n\r\ninterface IValidated<T> {\r\n Valid: KnockoutObservable<boolean>;\r\n Rule: IValidationRule<T>;\r\n}\r\n\r\nexport interface IValidationCell<T> extends IValueCell<T> {\r\n RequiredRule?: IValidationRule<T>;\r\n MinLengthRule?: IValidationRule<T>;\r\n MaxLenghtRule?: IValidationRule<T>;\r\n}\r\n\r\ninterface IDropdownOption {\r\n FieldValue: number;\r\n DisplayValue: string;\r\n}\r\n\r\ninterface ITextCell extends IValidationCell<string> {\r\n Translations: KnockoutObservableArray<TranslationItem>;\r\n IsTranslate: boolean;\r\n}\r\n\r\nexport interface IDropdownCell<T extends IDropdownOption> extends IValidationCell<T> {\r\n Options: KnockoutObservableArray<T>;\r\n RequiresSearch: boolean;\r\n ValTableId: number;\r\n ValFieldId: number;\r\n ValFieldTypeName: string;\r\n ValFieldFormatName: string;\r\n ValFieldSize: number;\r\n}\r\n\r\ninterface IDecimalCell extends IValidationCell<number> {\r\n FormatName: string;\r\n}\r\n\r\ninterface IDateCell extends IValidationCell<Date> {\r\n FormatName: string;\r\n}\r\n\r\nexport interface ISubjectCell extends IValidationCell<Subject> {\r\n IsNewState: KnockoutObservable<boolean>;\r\n AllowedEntities: AllowedEntity[];\r\n OnEntityClick: (entity: AllowedEntity) => void;\r\n OnEntityIconClick: () => void;\r\n OnSubjectClick: () => void;\r\n}\r\n\r\nexport interface IActionsCell extends IDynamicCell {\r\n Accepted: boolean;\r\n OnAcceptReservation: (guid: string) => void;\r\n OnEditReservation: (guid: string) => void;\r\n OnDeleteReservation: (guid: string) => void;\r\n OnSaveReservationChanges: (guid: string) => void;\r\n OnCancelReservationChanges: (guid: string) => void;\r\n TimeStatus: string;\r\n}\r\n\r\n\r\nexport class CellEditor {\r\n protected _cell: ICell;\r\n protected _state: KnockoutObservable<State>;\r\n protected _template: KnockoutObservable<any>;\r\n\r\n constructor(cell: ICell) {\r\n this._cell = cell;\r\n this._state = ko.observable(State.Read);\r\n this._template = ko.observable(this._cell.ViewTemplate);\r\n }\r\n\r\n GetState() {\r\n return this._state();\r\n }\r\n\r\n SetState(state: State) {\r\n this._state(state);\r\n }\r\n}\r\n\r\nexport class DynamicCellEditor extends CellEditor {\r\n protected _cell: IDynamicCell;\r\n protected _labels = LABELS;\r\n private _timeStatus = TimeStatus;\r\n\r\n constructor(cell: IDynamicCell) {\r\n super(cell);\r\n this._state.subscribe(() => this._template(this.GetTemplate()), this);\r\n\r\n if (cell.Size) {\r\n this._cell.Size = cell.Size;\r\n }\r\n }\r\n\r\n protected GetTemplate() {\r\n switch (this._state()) {\r\n case State.Read:\r\n return this._cell.ViewTemplate;\r\n case State.Edit:\r\n case State.New:\r\n return this._cell.EditTemplate;\r\n default:\r\n return this._cell.ViewTemplate;\r\n }\r\n }\r\n}\r\n\r\nexport class ValueCellEditor<T> extends DynamicCellEditor {\r\n protected _cell: IValueCell<T>;\r\n protected _originalValue: KnockoutObservable<T>;\r\n\r\n constructor(cell: IValueCell<T>) {\r\n super(cell);\r\n\r\n this._originalValue = ko.observable(cell.Value());\r\n }\r\n\r\n RollbackChanges() {\r\n if (this._cell.Editable) {\r\n this._cell.Value(this._originalValue());\r\n }\r\n }\r\n\r\n CommitChanges() {\r\n if (this._cell.Editable) {\r\n this._originalValue(this._cell.Value());\r\n }\r\n }\r\n\r\n protected GetTemplate() {\r\n switch (this._state()) {\r\n case State.Read:\r\n return this._cell.ViewTemplate;\r\n case State.Edit:\r\n case State.New:\r\n return this._cell.Editable ? this._cell.EditTemplate : this._cell.ViewTemplate;\r\n default:\r\n return this._cell.ViewTemplate;\r\n }\r\n }\r\n}\r\n\r\nexport class ValidationCellEditor<T> extends ValueCellEditor<T> {\r\n protected _requiredValidation: IValidated<T>;\r\n protected _minLengthValidation: IValidated<T>;\r\n protected _maxLengthValidation: IValidated<T>;\r\n protected _startValue: string;\r\n\r\n protected _valid: KnockoutComputed<boolean>;\r\n\r\n constructor(protected _cell: IValidationCell<T>) {\r\n super(_cell);\r\n\r\n const requiredRule = _cell.RequiredRule || {Validate: () => true};\r\n const minLengthRule = _cell.MinLengthRule || {Validate: () => true};\r\n const maxLengthRule = _cell.MaxLenghtRule || {Validate: () => true};\r\n\r\n this._requiredValidation = {\r\n Valid: ko.observable(true),\r\n Rule: requiredRule\r\n };\r\n this._minLengthValidation = {\r\n Valid: ko.observable(true),\r\n Rule: minLengthRule\r\n };\r\n this._maxLengthValidation = {\r\n Valid: ko.observable(true),\r\n Rule: maxLengthRule\r\n };\r\n\r\n this._valid = ko.computed(() => this._requiredValidation.Valid() && this._minLengthValidation.Valid() && this._maxLengthValidation.Valid(), this);\r\n\r\n this._cell.Value.subscribe(() => this.Validate());\r\n }\r\n\r\n Valid() {\r\n this.Validate();\r\n return this._valid();\r\n }\r\n\r\n PreventLetters(d, e) {\r\n const code = e.keyCode;\r\n const character = String.fromCharCode(code);\r\n const digitsOnly = /[1234567890.,:]/g;\r\n if (character.match(digitsOnly)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n private Validate() {\r\n const validations = [\r\n this._requiredValidation,\r\n this._minLengthValidation,\r\n this._maxLengthValidation\r\n ];\r\n\r\n const value = this._cell.Value();\r\n\r\n validations.forEach(validation => validation.Valid(true));\r\n const failedValidation = _.find(validations, (validation: IValidated<T>) => !validation.Rule.Validate(value));\r\n\r\n if (failedValidation) {\r\n failedValidation.Valid(false);\r\n }\r\n }\r\n}\r\n\r\nexport class TextCellEditor extends ValidationCellEditor<string> {\r\n private _translationFieldEditor: TranslationFieldEditor;\r\n private _translations: KnockoutObservableArray<TranslationItem>;\r\n private _isTranslate: boolean;\r\n private _displayValue: KnockoutObservable<string>;\r\n\r\n constructor(cell: ITextCell) {\r\n super(cell);\r\n this._translations = cell.Translations;\r\n this._isTranslate = cell.IsTranslate;\r\n this._displayValue = ko.observable(cell.Value());\r\n\r\n if (this._isTranslate) {\r\n\r\n if (this._translations().length === 0) {\r\n this._translations(TranslationManager.Instance.Languages.filter(language => language.Id > 0).map(language => new TranslationItem(language)));\r\n }\r\n\r\n this._translationFieldEditor = new TranslationFieldEditor();\r\n this._translationFieldEditor\r\n .On(\"TranslationChanged\", this, eventArgs => this.SetTranslation(eventArgs.data))\r\n .On('TranslationSelected', this, eventArgs => this.ChangeTranslation(eventArgs.data));\r\n this._translationFieldEditor.LoadTranslationItems();\r\n\r\n const translationValues: ITranslationValue[] = this._translations().map(item => {\r\n return {\r\n LanguageId: item.Language.Id,\r\n Value: item.Value()\r\n }\r\n });\r\n\r\n this._translationFieldEditor.SetTranslations(translationValues, this._cell.Value());\r\n const activeTranslation = TranslationManager.Instance.GetTranslation(this._cell.Value(), translationValues);\r\n this._translationFieldEditor.SetActiveTranslation(activeTranslation.Language.Id);\r\n this._displayValue(activeTranslation.TranslatedValue);\r\n\r\n this._displayValue.subscribe(newValue => this._translationFieldEditor.SetValue(newValue));\r\n } else {\r\n this._displayValue.subscribe(value => this._cell.Value(value));\r\n }\r\n }\r\n\r\n ToggleTranslations() {\r\n this._translationFieldEditor.Toggle();\r\n }\r\n\r\n private SetTranslation(translation: TranslationItem) {\r\n if (translation.Language.Id !== 0) {\r\n const fieldTranslation = _.find(this._translations(), item => item.Language.Id === translation.Language.Id);\r\n fieldTranslation.Value(translation.Value());\r\n } else {\r\n this._cell.Value(translation.Value());\r\n }\r\n }\r\n\r\n private ChangeTranslation(translation: ITranslationValue) {\r\n if (translation.LanguageId === 0) {\r\n this._cell.Value(translation.Value);\r\n }\r\n this._displayValue(translation.Value);\r\n }\r\n}\r\n\r\nexport class DropdownCellEditor<T extends IDropdownOption> extends ValidationCellEditor<T> {\r\n protected _cell: IDropdownCell<T>;\r\n private _currentValue: KnockoutObservable<T>;\r\n\r\n constructor(cell: IDropdownCell<T>) {\r\n super(cell);\r\n\r\n this._cell.Value(cell.Value());\r\n this._currentValue = ko.observable(null);\r\n this._currentValue.subscribe(value => this._cell.Value(value));\r\n }\r\n\r\n FormatValue(value: string) {\r\n if (!value) {\r\n return LABELS.EMPTY_VALUE;\r\n }\r\n\r\n if (_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], this._cell.ValFieldTypeName)) {\r\n return FormatConverter.LocalizeDecimalOrInteger(\r\n this._cell.ValFieldFormatName === FieldFormat.PERCENTAGE\r\n ? (Number(value) * 100).toFixed(this._cell.ValFieldSize < 2 ? 0 : this._cell.ValFieldSize - 2)\r\n : value\r\n );\r\n }\r\n\r\n return value;\r\n }\r\n\r\n FormatSelectValue(dropdownOption: IDropdownOption) {\r\n return this.FormatValue(dropdownOption.DisplayValue);\r\n }\r\n\r\n SetState(state: State) {\r\n switch (state) {\r\n case State.Read:\r\n this.SetReadState(this._cell.Value());\r\n break;\r\n\r\n case State.New:\r\n this.SetNewState();\r\n break;\r\n\r\n case State.Edit:\r\n this.SetEditState(this._cell.Value());\r\n break;\r\n }\r\n\r\n super.SetState(state);\r\n }\r\n\r\n ShowSearchScreen() {\r\n const searchScreen = new SearchScreen({\r\n ButtonAdd: false,\r\n EntityId: this._cell.ValTableId,\r\n SearchTerm: ''\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n if (this._cell.ValFieldId) {\r\n this.ReplaceSelectedValue(<number>this._cell.ValTableId,\r\n <number>this._cell.ValFieldId,\r\n <number>eventArgs.data.RecordId);\r\n } else {\r\n const selectedRecord = {\r\n FieldValue: <number>eventArgs.data.RecordId,\r\n DisplayValue: <string>eventArgs.data.Name\r\n };\r\n\r\n this._cell.Value(<any>selectedRecord);\r\n }\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n protected ReplaceSelectedValue(tableId: number, fieldId: number, recordId: number) {\r\n BlockUI.Block();\r\n\r\n RecordStore.GetRecord({TableId: tableId, RecordId: recordId})\r\n .always(() => BlockUI.Unblock())\r\n .then((record: any) => {\r\n\r\n const selected = _.find(record.Fields, (item: any) => item.FieldId === fieldId);\r\n\r\n if (selected) {\r\n const selectedRecord = {\r\n FieldValue: recordId,\r\n DisplayValue: selected.FieldValue\r\n };\r\n\r\n this._cell.Value(<any>selectedRecord);\r\n }\r\n })\r\n .fail((error) => {\r\n if (error.requestError === SERVER_REQUEST_ERRORS.NOT_FOUND) {\r\n new Notifier().Warning('You can not see created record');\r\n } else if (error.requestError === SERVER_REQUEST_ERRORS.INTERNAL) {\r\n new Notifier().Failed('Error applying created record');\r\n }\r\n\r\n });\r\n }\r\n\r\n private FindOption(id: number) {\r\n return _.find(this._cell.Options(), option => option.FieldValue === id);\r\n }\r\n\r\n private SetReadState(requestedValue: LookupValue) {\r\n this._currentValue(<any>requestedValue);\r\n this._cell.Value(<any>requestedValue);\r\n }\r\n\r\n private SetNewState() {\r\n const value = !this._cell.RequiresSearch && _.first(this._cell.Options()) || null;\r\n this._currentValue(value);\r\n }\r\n\r\n private SetEditState(requestedValue: LookupValue) {\r\n if (!this._cell.RequiresSearch) {\r\n const value = requestedValue && this.FindOption(requestedValue.FieldValue) || _.first(this._cell.Options());\r\n this._currentValue(value);\r\n }\r\n }\r\n}\r\n\r\nexport class MultiSelectCellEditor<T extends IDropdownOption> extends ValidationCellEditor<T> {\r\n Items: KnockoutObservableArray<any>;\r\n SelectedItems: KnockoutComputed<Array<ItemModel>>;\r\n protected _cell: IDropdownCell<T>;\r\n private _currentValue: KnockoutObservable<T>;\r\n private _showEmptyValue: KnockoutObservable<boolean>;\r\n\r\n private _tooltip: JBoxDropDown;\r\n\r\n constructor(cell: IDropdownCell<T>) {\r\n super(cell);\r\n\r\n this.Items = ko.observableArray([]);\r\n this.SelectedItems = ko.computed(() => this.Items().filter(item => item.IsSelected), this);\r\n\r\n const items = cell.Value() && cell.Value().FieldValue != null ? cell.Value().FieldValue.toString().split(\";\") : [];\r\n\r\n if (!this._cell.RequiresSearch) {\r\n this.Items = ko.observableArray(_.map(this._cell.Options().filter(option => option.FieldValue != 0), option => {\r\n return {\r\n RecordId: option.FieldValue,\r\n Label: option.DisplayValue,\r\n IsSelected: ko.observable(items.indexOf(option.FieldValue.toString()) !== -1)\r\n }\r\n }));\r\n } else {\r\n if (items.length > 0) {\r\n const labels = cell.Value().DisplayValue != null ? cell.Value().DisplayValue.toString().split(\";\") : [];\r\n this.Items = ko.observableArray(items.map(function (item, i) {\r\n return {RecordId: item, Label: labels[i], IsSelected: ko.observable(true)}\r\n }));\r\n }\r\n }\r\n\r\n this._cell.Value(cell.Value());\r\n this._currentValue = ko.observable(null);\r\n this._currentValue.subscribe(value => this._cell.Value(value));\r\n this._showEmptyValue = ko.observable(true);\r\n }\r\n\r\n FormatValue(value: string) {\r\n if (!value) {\r\n return LABELS.EMPTY_VALUE;\r\n }\r\n\r\n if (_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], this._cell.ValFieldTypeName)) {\r\n const splitValues = value.split(';');\r\n\r\n const formattedValues = splitValues.map(singleValue =>\r\n FormatConverter.LocalizeDecimalOrInteger(\r\n this._cell.ValFieldFormatName === FieldFormat.PERCENTAGE\r\n ? (Number(singleValue) * 100).toFixed(\r\n this._cell.ValFieldSize < 2 ? 0 : this._cell.ValFieldSize - 2\r\n )\r\n : singleValue\r\n )\r\n );\r\n\r\n return formattedValues.join(';');\r\n }\r\n\r\n return value;\r\n }\r\n\r\n FormatSingleValue(value: string) {\r\n if (!value) {\r\n return LABELS.EMPTY_VALUE;\r\n }\r\n\r\n if (_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], this._cell.ValFieldTypeName)) {\r\n return FormatConverter.LocalizeDecimalOrInteger(\r\n this._cell.ValFieldFormatName === FieldFormat.PERCENTAGE\r\n ? (Number(value) * 100).toFixed(this._cell.ValFieldSize < 2 ? 0 : this._cell.ValFieldSize - 2)\r\n : value\r\n );\r\n }\r\n\r\n return value;\r\n }\r\n\r\n SetState(state: State) {\r\n switch (state) {\r\n case State.Read:\r\n this.SetReadState(this._cell.Value());\r\n break;\r\n\r\n case State.New:\r\n this.SetNewState();\r\n break;\r\n\r\n case State.Edit:\r\n this.SetEditState(this._cell.Value());\r\n break;\r\n }\r\n\r\n const items = this.Items().filter(item => item.IsSelected());\r\n this.CheckEmptyMultiSelect(items);\r\n super.SetState(state);\r\n }\r\n\r\n ShowSearchScreen(model, evt: MouseEvent) {\r\n if (this._cell.RequiresSearch) {\r\n\r\n const searchScreen = new SearchScreen({\r\n ButtonAdd: false,\r\n EntityId: this._cell.ValTableId,\r\n SearchTerm: ''\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n const selectedTtem = this.Items().find(item => item.RecordId == <number>eventArgs.data.RecordId);\r\n if (!selectedTtem) {\r\n this.ReplaceSelectedValue(this._cell.ValTableId, <number>this._cell.ValFieldId, eventArgs.data.RecordId, <string>eventArgs.data.Name);\r\n } else {\r\n selectedTtem.IsSelected(true);\r\n }\r\n });\r\n\r\n searchScreen.Show();\r\n } else {\r\n if (!this._tooltip) {\r\n const target: any = evt.currentTarget;\r\n this._tooltip = new JBoxDropDown({\r\n bindComponent: this,\r\n target: target,\r\n otherOptions: {\r\n addClass: \"multi-select-dropdown\",\r\n attach: undefined,\r\n pointer: \"\",\r\n isolateScroll: true,\r\n content: DropDownContentTemplate as any,\r\n position: {\r\n x: \"right\",\r\n y: \"bottom\"\r\n },\r\n height: 'auto',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n maxHeight: 200\r\n },\r\n bindTarget: target,\r\n bindOnCreate: true\r\n });\r\n }\r\n this._tooltip.Toggle();\r\n }\r\n }\r\n\r\n protected ReplaceSelectedValue(tableId: number, fieldId: number, recordId: number, name: string) {\r\n RecordStore.GetRecord({TableId: tableId, RecordId: recordId})\r\n .then((record: any) => {\r\n\r\n const selected = _.find(record.Fields, (item: any) => item.FieldId === fieldId);\r\n\r\n this.Items.push({\r\n RecordId: recordId,\r\n Label: selected ? selected.FieldValue : name,\r\n IsSelected: ko.observable(true)\r\n });\r\n const items = this.Items().filter(item => item.IsSelected);\r\n const selectedRecord = {\r\n FieldValue: <string>items.map(a => a.RecordId).join(\";\"),\r\n DisplayValue: <string>items.map(a => a.Label).join(\";\")\r\n };\r\n\r\n this.CheckEmptyMultiSelect(items);\r\n this._cell.Value(<any>selectedRecord);\r\n })\r\n .fail((error) => {\r\n if (error.requestError === SERVER_REQUEST_ERRORS.NOT_FOUND) {\r\n new Notifier().Warning('You can not see created record');\r\n } else if (error.requestError === SERVER_REQUEST_ERRORS.INTERNAL) {\r\n new Notifier().Failed('Error applying created record');\r\n }\r\n\r\n });\r\n }\r\n\r\n private FindOption(id: number) {\r\n return _.find(this._cell.Options(), option => option.FieldValue == id);\r\n }\r\n\r\n private SetReadState(requestedValue: LookupValue) {\r\n this._currentValue(<any>requestedValue);\r\n this._cell.Value(<any>requestedValue);\r\n }\r\n\r\n private SetNewState() {\r\n }\r\n\r\n private SetEditState(requestedValue: LookupValue) {\r\n }\r\n\r\n SelectItem(item: ItemModel) {\r\n item.IsSelected(true);\r\n const items = this.Items().filter(item => item.IsSelected());\r\n const selectedRecord = {\r\n FieldValue: <string>items.map(a => a.RecordId).join(\";\"),\r\n DisplayValue: <string>items.map(a => a.Label).join(\";\")\r\n };\r\n\r\n this.CheckEmptyMultiSelect(items);\r\n this._cell.Value(<any>selectedRecord);\r\n }\r\n\r\n RemoveItem(item: ItemModel) {\r\n item.IsSelected(false);\r\n const items = this.Items().filter(item => item.IsSelected());\r\n const selectedRecord = {\r\n FieldValue: <string>items.map(a => a.RecordId).join(\";\"),\r\n DisplayValue: <string>items.map(a => a.Label).join(\";\")\r\n };\r\n\r\n this.CheckEmptyMultiSelect(items);\r\n this._cell.Value(<any>selectedRecord);\r\n }\r\n\r\n CheckEmptyMultiSelect(selectedItems: Array<ItemModel>) {\r\n if (selectedItems.length === 0) {\r\n this._showEmptyValue(true);\r\n } else {\r\n this._showEmptyValue(false);\r\n }\r\n }\r\n}\r\n\r\nexport class IntegerCellEditor extends ValidationCellEditor<number> {\r\n constructor(cell: IValidationCell<number>) {\r\n super(cell);\r\n }\r\n\r\n FormatValue(value: string) {\r\n return value && FormatConverter.LocalizeDecimalOrInteger(value);\r\n }\r\n}\r\n\r\nexport class DecimalCellEditor extends ValidationCellEditor<number> {\r\n protected _cell: IDecimalCell;\r\n\r\n constructor(cell: IDecimalCell) {\r\n super(cell);\r\n }\r\n\r\n FormatValue(value: string) {\r\n return (\r\n value &&\r\n FormatConverter.LocalizeDecimalOrInteger(\r\n this._cell.FormatName === FieldFormat.PERCENTAGE\r\n ? (Number(value) * 100).toFixed(this._cell.Size < 2 ? 0 : this._cell.Size - 2)\r\n : value\r\n )\r\n );\r\n }\r\n}\r\n\r\nexport class DateTimeCellEditor extends ValidationCellEditor<Date> {\r\n protected _cell: IDateCell;\r\n\r\n constructor(cell: IDateCell) {\r\n super(cell);\r\n }\r\n\r\n GetLocale() {\r\n return moment.locale();\r\n }\r\n\r\n GetFormat() {\r\n const format = FormatConverter.GetDateFormatFromFieldModel({\r\n FieldTypeName: FIELD_TYPES.DateTime,\r\n FormatName: this._cell.FormatName\r\n });\r\n return format || DATE_FORMATS.DATE_TIME['MomentFormat'];\r\n }\r\n\r\n DateChanged(event) {\r\n this._cell.Value(event || null);\r\n }\r\n}\r\n\r\nexport class DateCellEditor extends ValidationCellEditor<Date> {\r\n protected _cell: IDateCell;\r\n\r\n constructor(cell: IDateCell) {\r\n super(cell);\r\n }\r\n\r\n GetLocale() {\r\n return moment.locale();\r\n }\r\n\r\n GetFormat() {\r\n const format = FormatConverter.GetDateFormatFromFieldModel({\r\n FieldTypeName: FIELD_TYPES.Date,\r\n FormatName: this._cell.FormatName\r\n });\r\n return format || DATE_FORMATS.SHORT_DATE['MomentFormat'];\r\n }\r\n\r\n DateChanged(event) {\r\n this._cell.Value(event || null);\r\n }\r\n}\r\n\r\nexport class TimeCellEditor extends ValidationCellEditor<string> {\r\n constructor(cell: IValidationCell<string>) {\r\n super(cell);\r\n }\r\n\r\n GetLocale() {\r\n return moment.locale();\r\n }\r\n\r\n GetFormat() {\r\n return DATE_FORMATS.TIME['MomentFormat'];\r\n }\r\n\r\n DateChanged(event) {\r\n const newDate = event ? moment(event).format(this.GetFormat()) : null;\r\n this._cell.Value(newDate);\r\n }\r\n}\r\n\r\nexport class SubjectCellEditor extends ValidationCellEditor<Subject> {\r\n constructor(cell: ISubjectCell) {\r\n super(cell);\r\n }\r\n}\r\n\r\nexport class DescriptionCellEditor extends ValidationCellEditor<string> {\r\n constructor(protected _cell: IValidationCell<string>) {\r\n super(_cell);\r\n }\r\n}\r\n\r\nexport class ActionsCellEditor extends DynamicCellEditor {\r\n constructor(cell: IActionsCell) {\r\n super(cell);\r\n }\r\n}\r\n\r\nexport enum State {\r\n Read,\r\n Edit,\r\n New\r\n}","export enum ViewState {\r\n\tRead,\r\n\tEdit,\r\n\tNew\r\n}","//Utils\r\nimport { DateTime } from \"Core/Components/Controls/TimeWriting/Utils/DateTime\";\r\n\r\nexport class State {\r\n\tDate: Date;\r\n\r\n\tconstructor(initializers?: Partial<State>) {\r\n\t\tif (initializers) {\r\n\t\t\tthis.Date = initializers.Date;\r\n\t\t}\r\n\t}\r\n\r\n\tget Year() {\r\n\t\treturn DateTime.GetWeekYear(this.Date);\r\n\t}\r\n\r\n\tget Week() {\r\n\t\treturn DateTime.GetWeekNumber(this.Date); \r\n\t}\r\n}","//Libs\r\nimport * as ko from \"knockout\";\r\nimport * as moment from \"moment\";\r\nimport * as _ from 'underscore';\r\n\r\n//Common\r\nimport {Guid} from \"Core/Common/Guid\";\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\n//Constants\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\n//UI\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {UsersViewModel} from \"./UsersViewModel\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {TranslationItem} from \"Core/Components/TranslationFieldEditor/TranslationItem\";\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\nexport class DayDataViewModel {\r\n WeekId: string;\r\n\r\n Date: Date;\r\n Day: string;\r\n Year: number;\r\n Week: number;\r\n TimeClosedDate: Date;\r\n DaysOfWeek: DayOfWeekStatistics[];\r\n LookupFields: LookupField[];\r\n DefaultValues: DefaultValue[];\r\n TranslatedFields: TranslatedField[];\r\n HasDisapprovals: boolean;\r\n\r\n RequestedDate: RequestedDate;\r\n AllowedEntities: AllowedEntity[];\r\n\r\n Users: UsersViewModel;\r\n StartBySchedule: Date;\r\n\r\n constructor() {\r\n this.WeekId = Guid.NewGuid();\r\n this.DaysOfWeek = [];\r\n this.AllowedEntities = [];\r\n this.HasDisapprovals = false;\r\n }\r\n\r\n get ClosedWeek() {\r\n return _.all(this.DaysOfWeek, dow => dow.ClosedDate);\r\n }\r\n\r\n get WeekDescription() {\r\n const formattedDate = moment(this.Date).format(DATE_FORMATS.LONG_DATE_SHORT_WEEK.MomentFormat);\r\n //return `${this.Year}-${this.Week}: ${formattedDate}`;\r\n return `${formattedDate}`;\r\n }\r\n\r\n get WeekNumber() {\r\n return `${this.Week}`;\r\n }\r\n\r\n get Booked() {\r\n const newSum = (sum: number, booked: any) => Math.round((sum + booked) * 100) / 100;\r\n this.IsWeekend();\r\n return this.DaysOfWeek.reduce((sum: number, current: DayOfWeekStatistics) => newSum(sum, current.Booked), 0);\r\n }\r\n\r\n get SelectedUser() {\r\n return this.Users.SelectedUser();\r\n }\r\n\r\n IsWeekend() {\r\n _.each(this.DaysOfWeek,\r\n day => {\r\n if (moment(day.Date).isoWeekday() === 6 || moment(day.Date).isoWeekday() === 7) {\r\n day.Weekend = true;\r\n }\r\n });\r\n }\r\n\r\n IsActive(day: DayOfWeekStatistics) {\r\n return day.Date.getDate() === this.Date.getDate();\r\n }\r\n\r\n IsNormBooked(day: DayOfWeekStatistics) {\r\n return day.Booked >= 8;\r\n }\r\n}\r\n\r\nexport class RequestedDate {\r\n Reservations: KnockoutObservableArray<Reservation>;\r\n\r\n constructor() {\r\n this.Reservations = ko.observableArray([]);\r\n }\r\n}\r\n\r\nexport class Reservation {\r\n Guid: string;\r\n Id: number;\r\n AgendaId: number;\r\n Start: KnockoutObservable<Date>;\r\n TimeSpent: KnockoutObservable<Date>;\r\n To: KnockoutObservable<Date>;\r\n Subject: KnockoutObservable<Subject>;\r\n Description: KnockoutObservable<string>;\r\n TimeStatus: KnockoutObservable<string>;\r\n Ovw: KnockoutObservable<LookupValue>;\r\n Pay: KnockoutObservable<LookupValue>;\r\n HourKind: KnockoutObservable<LookupValue>;\r\n Accepted: boolean;\r\n OptionalData: OptionalFieldData[];\r\n\r\n constructor() {\r\n\r\n this.Guid = Guid.NewGuid();\r\n this.Start = ko.observable(null);\r\n this.TimeSpent = ko.observable(null);\r\n this.To = ko.observable(null);\r\n this.Subject = ko.observable(null);\r\n this.Description = ko.observable(null);\r\n this.TimeStatus = ko.observable(null);\r\n this.Ovw = ko.observable(null);\r\n this.Pay = ko.observable(null);\r\n this.HourKind = ko.observable(null);\r\n this.OptionalData = [];\r\n\r\n this.AfterInit();\r\n }\r\n\r\n get StartFormat() {\r\n return moment(this.Start()).format(\"HH:mm\");\r\n }\r\n\r\n get ToFormat() {\r\n return moment(this.To()).format(\"HH:mm\");\r\n }\r\n\r\n get TimeSpentFormat() {\r\n const timeSpent = moment(this.TimeSpent());\r\n return timeSpent.format(\"HH:mm\");\r\n }\r\n\r\n GetOptionalField(fieldName: string) {\r\n return _.find(this.OptionalData, f => f.FieldName === fieldName);\r\n }\r\n\r\n GetOptionalValue(fieldName: string) {\r\n return this.GetOptionalField(fieldName).FieldValue;\r\n }\r\n\r\n GetTranslations(fieldName: string) {\r\n return this.GetOptionalField(fieldName).Translations;\r\n }\r\n\r\n SetOptionalValue(fieldName: string, value: any) {\r\n const field = this.GetOptionalField(fieldName);\r\n field.FieldValue(value);\r\n }\r\n\r\n ChangeDate(date: Date) {\r\n const startTime = this.Start();\r\n const startDate = new Date(date.toString());\r\n\r\n startDate.setHours(startTime.getHours(), startTime.getMinutes());\r\n this.Start(startDate);\r\n\r\n const timeSpent = this.TimeSpent();\r\n const timeDate = new Date(date.toString());\r\n\r\n timeDate.setHours(timeSpent.getHours(), timeSpent.getMinutes());\r\n this.TimeSpent(timeDate);\r\n }\r\n\r\n static ReserveFor(start: Date, timeSpent: Date, subject: Subject, optionalFields: AttachedFieldModel[]) {\r\n const model = new Reservation();\r\n model.Start(start);\r\n model.TimeSpent(timeSpent);\r\n model.Subject(subject || Subject.NotSpecified());\r\n model.OptionalData = optionalFields.map(field => new OptionalFieldData({\r\n FieldName: field.Name,\r\n FieldType: field.FieldTypeName,\r\n FieldValue: ko.observable(null),\r\n Translations: ko.observableArray([])\r\n }));\r\n\r\n return model;\r\n }\r\n\r\n private AfterInit() {\r\n this.BindTimeChangesEvents();\r\n }\r\n\r\n private BindTimeChangesEvents() {\r\n this.Start.subscribe(() => this.CalculateTo());\r\n this.TimeSpent.subscribe(() => this.CalculateTo());\r\n this.To.subscribe(() => this.CalculateDuration());\r\n }\r\n\r\n private CalculateTo() {\r\n if (!this.Start() || !this.TimeSpent()) {\r\n this.To(null);\r\n return;\r\n }\r\n\r\n const start = moment(this.Start());\r\n const timeSpent = moment(this.TimeSpent());\r\n const to = moment(start).add(timeSpent.hours(), 'h').add(timeSpent.minutes(), 'm');\r\n\r\n if (!to.isSame(moment(this.To()))) {\r\n this.To(to.toDate());\r\n }\r\n }\r\n\r\n private CalculateDuration() {\r\n if (!this.Start() || !this.To()) {\r\n this.TimeSpent(null);\r\n return;\r\n }\r\n\r\n const to = moment(this.To());\r\n const start = moment(this.Start());\r\n const timeSpent = moment(to).add(-start.hours(), 'h').add(-start.minutes(), 'm');\r\n\r\n if (!timeSpent.isSame(moment(this.TimeSpent()))) {\r\n this.TimeSpent(timeSpent.toDate());\r\n }\r\n }\r\n}\r\n\r\nexport class Subject {\r\n EntityId: number;\r\n EntityName: string;\r\n SubjectId: number;\r\n SubjectName: string;\r\n Icon: Icon;\r\n PathToRoot: string[];\r\n\r\n private _notSpecified: boolean;\r\n\r\n get SubjectLabel() {\r\n if (this.PathToRoot) {\r\n return [...this.PathToRoot.reverse(), this.SubjectName].join(' > ');\r\n }\r\n\r\n return this.SubjectName;\r\n }\r\n\r\n constructor(initialization?: Partial<Subject>) {\r\n this._notSpecified = false;\r\n\r\n if (initialization) {\r\n this.EntityId = initialization.EntityId;\r\n this.EntityName = initialization.EntityName;\r\n this.SubjectId = initialization.SubjectId;\r\n this.SubjectName = initialization.SubjectName;\r\n this.Icon = initialization.Icon;\r\n this.PathToRoot = initialization.PathToRoot;\r\n }\r\n }\r\n\r\n GoToRecordScreen() {\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: this.EntityId,\r\n RecordId: this.SubjectId,\r\n IsOpenInModal: true\r\n });\r\n\r\n }\r\n\r\n\r\n get NotSpecified() {\r\n return this._notSpecified;\r\n }\r\n\r\n static NotSpecified(): Subject {\r\n const model = new Subject();\r\n\r\n model.EntityId = 0;\r\n model.Icon = new Icon(new IconModel());\r\n model.SubjectName = \"\";\r\n\r\n model._notSpecified = true;\r\n\r\n return model;\r\n }\r\n}\r\n\r\nexport class DayOfWeekStatistics {\r\n Name: string;\r\n Date: Date;\r\n ClosedDate: boolean;\r\n Booked: any;\r\n Weekend: boolean;\r\n Hovered: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n this.Hovered = ko.observable(false);\r\n }\r\n\r\n get DayDescription() {\r\n let currentDay = new Date();\r\n currentDay.setHours(0, 0, 0, 0);\r\n\r\n if (this.Weekend) {\r\n //if saturday/sunday it will be '-' if not booked\r\n return this.Booked == 0 ? `${this.Name} - ` : `${this.Name} ${this.Booked}`;\r\n } else if (this.Date.getTime() > currentDay.getTime() && this.Booked == 0) {\r\n //future\r\n return `- ${this.Name}`;\r\n } else {\r\n return `${this.Booked} ${this.Name}`;\r\n }\r\n }\r\n}\r\n\r\nexport class LookupField {\r\n Id: number;\r\n Name: string;\r\n RequiresSearch: boolean;\r\n Values: LookupValue[];\r\n ValTableId: number;\r\n ValFieldId: number;\r\n ValFieldTypeName: string;\r\n ValFieldFormatName: string;\r\n ValFieldSize: number;\r\n\r\n constructor() {\r\n this.Values = [];\r\n }\r\n}\r\n\r\nexport class DefaultValue {\r\n Id: number;\r\n Name: string;\r\n TypeName: string;\r\n DefaultValue: any;\r\n\r\n constructor(partial?: Partial<DefaultValue>) {\r\n if (partial) {\r\n this.Id = partial.Id;\r\n this.Name = partial.Name;\r\n this.TypeName = partial.TypeName;\r\n this.DefaultValue = this.ProcessValue(partial.DefaultValue);\r\n }\r\n }\r\n\r\n private ProcessValue(value: any): any {\r\n if (this.TypeName === FIELD_TYPES.DateTime) {\r\n return new Date(FormatConverter.CorrectTimezone(value));\r\n }\r\n\r\n if (this.TypeName === FIELD_TYPES.Date) {\r\n return new Date(value);\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n\r\nexport class TranslatedField {\r\n Id: number;\r\n\r\n constructor(partial?: Partial<TranslatedField>) {\r\n if (partial) {\r\n this.Id = partial.Id;\r\n }\r\n }\r\n}\r\n\r\nexport class LookupValue {\r\n FieldValue: number;\r\n DisplayValue: string;\r\n\r\n constructor(partial?: Partial<LookupValue>) {\r\n if (partial) {\r\n this.FieldValue = partial.FieldValue;\r\n this.DisplayValue = partial.DisplayValue;\r\n }\r\n }\r\n}\r\n\r\nexport class OptionalFieldData {\r\n FieldName: string;\r\n FieldType: string;\r\n FieldValue: KnockoutObservable<any>;\r\n Translations: KnockoutObservableArray<TranslationItem>;\r\n\r\n constructor(partial?: Partial<OptionalFieldData>) {\r\n if (partial) {\r\n this.FieldName = partial.FieldName;\r\n this.FieldType = partial.FieldType;\r\n this.FieldValue = partial.FieldValue;\r\n this.Translations = partial.Translations;\r\n } else {\r\n this.Translations = ko.observableArray([]);\r\n this.FieldValue = ko.observable(null);\r\n }\r\n }\r\n}\r\n\r\nexport class AllowedEntity {\r\n Id: number;\r\n Name: string;\r\n Icon: Icon;\r\n\r\n constructor(partial?: Partial<AllowedEntity>) {\r\n if (partial) {\r\n this.Id = partial.Id;\r\n this.Name = partial.Name;\r\n this.Icon = partial.Icon;\r\n }\r\n }\r\n}","export class SaveReservationRequestModel {\r\n Id: number;\r\n AgendaId: number;\r\n Start: string;\r\n TimeSpent: string;\r\n Subject: SaveSubjectRequestModel;\r\n Description: string;\r\n OverWorkIndicatorId: number;\r\n PaymentIndicatorId: number;\r\n HourKindIndicatorId: number;\r\n\r\n TimeTableId: number;\r\n UserId: number;\r\n\r\n OptionalData: SaveOptionalDataRequestModel[];\r\n\r\n constructor() {\r\n this.OptionalData = [];\r\n }\r\n}\r\n\r\nexport class SaveSubjectRequestModel {\r\n EntityId: number;\r\n SubjectId: number;\r\n}\r\n\r\nexport class FieldDataTranslation {\r\n constructor(public Language: LanguageData,\r\n public Translation: string){\r\n\r\n }\r\n}\r\n\r\nexport class LanguageData {\r\n constructor(public K_Language: number,\r\n public Name: string,\r\n public ShortName: string){\r\n\r\n }\r\n}\r\n\r\nexport class SaveOptionalDataRequestModel {\r\n constructor(public FieldName: string, public FieldValue: string, public Translations: FieldDataTranslation[]) {\r\n\r\n }\r\n}","export class DeleteReservationRequestModel {\r\n\tId: number;\r\n\tTimeTableId: number;\r\n}","//Store models\r\nimport { SubjectResponseModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/SubjectResponseModel\";\r\nimport { SaveSubjectRequestModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\n\r\n//View models\r\nimport { Subject } from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\n\r\n//UI\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {FONT_NAME} from \"Core/Constant\";\r\n\r\nexport class SubjectMappings {\r\n\tstatic OnViewModel(model: SubjectResponseModel): Subject {\r\n\t\tconst viewModel = new Subject();\r\n\r\n\t\tviewModel.EntityId = model.EntityId;\r\n\t\tviewModel.EntityName = model.EntityName;\r\n\t\tviewModel.SubjectId = model.SubjectId;\r\n\t\tviewModel.SubjectName = model.SubjectName;\r\n\t\tviewModel.Icon = this.SelectIcon(model.Icon);\r\n\t\tviewModel.PathToRoot = model.PathToRoot;\r\n\r\n\t\treturn viewModel;\r\n\t}\r\n\r\n\tstatic OnSaveModel(model: Subject): SaveSubjectRequestModel {\r\n\t\tconst requestModel = new SaveSubjectRequestModel();\r\n\r\n\t\trequestModel.EntityId = model.EntityId;\r\n\t\trequestModel.SubjectId = model.SubjectId;\r\n\r\n\t\treturn requestModel;\r\n\t}\r\n\r\n\tprivate static SelectIcon(model: IconModel): Icon {\r\n\t\tif (model && model.Id > 0) {\r\n\t\t\treturn new Icon(model);\r\n\t\t}\r\n\r\n\t\tconst defaultIconModel = new IconModel();\r\n\r\n\t\tdefaultIconModel.Name = 'fa-file';\r\n\t\tdefaultIconModel.FontName = FONT_NAME.FONT_AWESOME;\r\n\t\tdefaultIconModel.IsIcon = true;\r\n\t\tdefaultIconModel.IsImage = false;\r\n\r\n\t\treturn new Icon(defaultIconModel);\r\n\t}\r\n}","//Store models\r\nimport {LookupValueResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Common/Response/LookupValueResponseModel\";\r\n\r\n//View models\r\nimport {LookupValue} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\"\r\n\r\nexport class LookupValueMappings {\r\n static OnViewModel(model: LookupValueResponseModel): LookupValue {\r\n const viewModel = new LookupValue();\r\n\r\n viewModel.FieldValue = model.Id;\r\n viewModel.DisplayValue = model.Value;\r\n\r\n return viewModel;\r\n }\r\n}","//Libs\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as moment from \"moment\";\r\n\r\n//Constants\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\n\r\n//Translations\r\nimport {TranslationItem} from \"Core/Components/TranslationFieldEditor/TranslationItem\";\r\nimport {LanguageModel} from \"Core/Components/Translation/Models/LanguageModel\";\r\nimport {ITranslationValue} from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\n\r\n//Utils\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\n//Store models\r\nimport {DayReservationResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/DayReservationResponseModel\";\r\nimport {\r\n FieldDataTranslation,\r\n LanguageData,\r\n SaveOptionalDataRequestModel,\r\n SaveReservationRequestModel\r\n} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\nimport {DeleteReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel\";\r\n\r\n//ViewModels\r\nimport {OptionalFieldData, Reservation} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\"\r\n\r\n//Mappings\r\nimport {SubjectMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/SubjectMappings\";\r\nimport {LookupValueMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Common/LookupValueMappings\";\r\nimport {TranslationManager} from \"../../../../Translation/TranslationManager\";\r\n\r\nexport class ReservationMappings {\r\n static OnViewModel(model: DayReservationResponseModel): Reservation {\r\n const viewModel = new Reservation();\r\n\r\n viewModel.Id = model.Id;\r\n viewModel.AgendaId = model.AgendaId;\r\n viewModel.Start(new Date(FormatConverter.CorrectTimezone(model.Start.toString())));\r\n viewModel.TimeSpent(model.TimeSpent);\r\n viewModel.Subject(SubjectMappings.OnViewModel(model.Subject));\r\n viewModel.Description(model.Description);\r\n viewModel.Ovw(model.OverWorkIndicator ? LookupValueMappings.OnViewModel(model.OverWorkIndicator) : null);\r\n viewModel.Pay(model.PaymentIndicator ? LookupValueMappings.OnViewModel(model.PaymentIndicator) : null);\r\n viewModel.HourKind(model.HourKindIndicator ? LookupValueMappings.OnViewModel(model.HourKindIndicator) : null);\r\n viewModel.Accepted = model.Accepted;\r\n viewModel.TimeStatus(model.TimeStatus);\r\n viewModel.OptionalData = model.OptionalData.map(field => {\r\n let value: any = field.FieldValue;\r\n if (field.FieldTypeName === FIELD_TYPES.Lookup) {\r\n value = {\r\n FieldValue: field.FieldValue,\r\n DisplayValue: field.DisplayValue\r\n }\r\n } else if (field.FieldTypeName === FIELD_TYPES.MultiSelect) {\r\n value = {\r\n FieldValue: field.FieldValue,\r\n DisplayValue: field.DisplayValue\r\n }\r\n }else if (field.FieldTypeName === FIELD_TYPES.YesNo) {\r\n value = !!field.FieldValue && field.FieldValue !== \"False\";\r\n } else if (field.FieldTypeName === FIELD_TYPES.DateTime) {\r\n value = field.FieldValue!= null ? new Date(FormatConverter.CorrectTimezone(field.FieldValue)) : null;\r\n } else if (field.FieldTypeName === FIELD_TYPES.Date) {\r\n value = field.FieldValue && new Date(field.FieldValue);\r\n }\r\n\r\n return new OptionalFieldData({\r\n FieldName: field.FieldName,\r\n FieldType: field.FieldTypeName,\r\n FieldValue: ko.observable(value),\r\n Translations: ko.observableArray(field.FieldValueTranslations.map(translationValue => this.OnTranslationItem(translationValue)))\r\n })\r\n });\r\n return viewModel;\r\n }\r\n\r\n static OnTranslationItem(translationValue: ITranslationValue) {\r\n const language = _.find(TranslationManager.Instance.Languages, language => language.Id === translationValue.LanguageId);\r\n const translationItem = new TranslationItem(language);\r\n translationItem.Value(translationValue.Value);\r\n\r\n return translationItem;\r\n }\r\n\r\n static OnSaveModel(model: Reservation): SaveReservationRequestModel {\r\n const requestModel = new SaveReservationRequestModel();\r\n\r\n requestModel.Id = model.Id;\r\n requestModel.AgendaId = model.AgendaId;\r\n requestModel.Start = FormatConverter.ConvertToUTC(moment(model.Start()).format(DATE_FORMATS.DATE_TIME.Format), DATE_FORMATS.DATE_TIME.Format);\r\n requestModel.TimeSpent = moment(model.TimeSpent()).format(DATE_FORMATS.DATE_TIME.Format);\r\n requestModel.Subject = SubjectMappings.OnSaveModel(model.Subject());\r\n requestModel.Description = model.Description();\r\n\r\n const ovwId = (model.Ovw() && model.Ovw().FieldValue) ? model.Ovw().FieldValue : null;\r\n const payId = (model.Pay() && model.Pay().FieldValue) ? model.Pay().FieldValue : null;\r\n const hourKindId = (model.HourKind() && model.HourKind().FieldValue) ? model.HourKind().FieldValue : null;\r\n\r\n requestModel.OverWorkIndicatorId = ovwId;\r\n requestModel.PaymentIndicatorId = payId;\r\n requestModel.HourKindIndicatorId = hourKindId;\r\n\r\n requestModel.OptionalData = model.OptionalData.map(data => {\r\n let value = null;\r\n\r\n switch (data.FieldType) {\r\n case FIELD_TYPES.Lookup:\r\n value = data.FieldValue() && data.FieldValue().FieldValue;\r\n break;\r\n\r\n case FIELD_TYPES.MultiSelect:\r\n value = data.FieldValue() && data.FieldValue().FieldValue;\r\n break;\r\n\r\n case FIELD_TYPES.DateTime:\r\n const dateTime = moment(data.FieldValue()).utc();\r\n value = dateTime.isValid() ? dateTime.format(DATE_FORMATS.DATE_TIME.Format) : null;\r\n break;\r\n\r\n case FIELD_TYPES.Time:\r\n value = data.FieldValue() && moment(data.FieldValue(), DATE_FORMATS.TIME.MomentFormat).format(DATE_FORMATS.TIME.Format);\r\n break;\r\n\r\n case FIELD_TYPES.Date:\r\n const date = moment(data.FieldValue());\r\n value = date.isValid() ? date.format(DATE_FORMATS.SHORT_DATE.Format) : null;\r\n break;\r\n\r\n case FIELD_TYPES.TimeSpan:\r\n value = data.FieldValue() && moment(data.FieldValue(), DATE_FORMATS.DATE_TIME.MomentFormat).format(DATE_FORMATS.DATE_TIME.Format);\r\n break;\r\n\r\n default:\r\n value = data.FieldValue();\r\n break;\r\n }\r\n\r\n const translations = data.Translations().map(item =>\r\n new FieldDataTranslation(\r\n new LanguageData(item.Language.Id, item.Language.Name, item.Language.ShortName),\r\n item.Value()));\r\n\r\n return new SaveOptionalDataRequestModel(data.FieldName, value, translations);\r\n });\r\n\r\n return requestModel;\r\n }\r\n\r\n static OnDeleteModel(model: Reservation): DeleteReservationRequestModel {\r\n const requestModel = new DeleteReservationRequestModel();\r\n\r\n requestModel.Id = model.Id;\r\n\r\n return requestModel;\r\n }\r\n}","//Store models\r\nimport { DayReservationsResponseModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/DayReservationsResponseModel\";\r\n\r\n//View models\r\nimport { RequestedDate } from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\"\r\n\r\n//Mappings\r\nimport { ReservationMappings } from \"./ReservationMappings\";\r\n\r\nexport class RequestedDateMappings {\r\n\tstatic OnViewModel(model: DayReservationsResponseModel): RequestedDate {\r\n\t\tconst viewModel = new RequestedDate();\r\n\r\n\t\tconst reservations = model.Reservations.map(reservation => ReservationMappings.OnViewModel(reservation));\r\n\r\n\t\tviewModel.Reservations(reservations);\r\n\r\n\t\treturn viewModel;\r\n\t}\r\n}","import * as moment from 'moment';\r\n\r\n//Constants\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\n//Store models\r\nimport { DayReportSummaryResponseModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/DayReportSummaryResponseModel\";\r\n\r\n//ViewModels\r\nimport { DayOfWeekStatistics } from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\"\r\n\r\nexport class DayMappings {\r\n\tstatic OnViewModel(model: DayReportSummaryResponseModel): DayOfWeekStatistics {\r\n\t\tconst date = new Date(model.Date);\r\n\r\n\t\tconst day = new DayOfWeekStatistics();\r\n\r\n\t\tday.Name = moment(date).format(DATE_FORMATS.WEEKDAY_SHORTNAME.MomentFormat);\r\n\t\tday.Date = date;\r\n\t\tday.Booked = Math.round(model.Booked * 100) / 100;\r\n\t\tday.ClosedDate = model.ClosedDate;\r\n\r\n\t\treturn day;\r\n\t}\r\n}","//UI\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {FONT_NAME} from \"Core/Constant\";\r\n\r\n//Store models\r\nimport {AllowedEntityResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/AllowedEntityResponseModel\";\r\n\r\n//View models\r\nimport {AllowedEntity} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\"\r\n\r\nexport class EntityMappings {\r\n static OnViewModel(model: AllowedEntityResponseModel): AllowedEntity {\r\n const entity = new AllowedEntity();\r\n\r\n entity.Id = model.Id;\r\n entity.Name = model.Name;\r\n entity.Icon = this.SelectIcon(model.Icon);\r\n\r\n return entity;\r\n }\r\n\r\n private static SelectIcon(model: IconModel): Icon {\r\n if (model && model.Id > 0) {\r\n return new Icon(model);\r\n }\r\n\r\n const defaultIconModel = new IconModel();\r\n\r\n defaultIconModel.Name = 'fa-file';\r\n defaultIconModel.FontName = FONT_NAME.FONT_AWESOME;\r\n defaultIconModel.IsIcon = true;\r\n defaultIconModel.IsImage = false;\r\n\r\n return new Icon(defaultIconModel);\r\n }\r\n}","import {FieldResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Common/Response/FieldResponseModel\";\r\nimport {LookupField} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\nimport {LookupValueMappings} from \"./LookupValueMappings\";\r\n\r\nexport class LookupFieldMappings {\r\n static OnViewModel(field: FieldResponseModel): LookupField {\r\n const lookupField = new LookupField();\r\n\r\n lookupField.Id = field.Id;\r\n lookupField.Name = field.Name;\r\n lookupField.RequiresSearch = field.RequiresSearch;\r\n lookupField.Values = field.Values.map(value => LookupValueMappings.OnViewModel(value));\r\n lookupField.ValFieldTypeName = field.ValFieldTypeName;\r\n lookupField.ValFieldFormatName = field.ValFieldFormatName;\r\n lookupField.ValFieldSize = field.ValFieldSize;\r\n\r\n return lookupField;\r\n }\r\n}","import {FIELD_TYPES} from \"Core/Constant\";\r\n\r\n//Store models\r\nimport {TimeWritingReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/TimeWritingReportResponseModel\";\r\nimport {SaveReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\nimport {DeleteReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel\";\r\n\r\n//View models\r\nimport {\r\n DayDataViewModel,\r\n DefaultValue,\r\n Reservation,\r\n TranslatedField\r\n} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\"\r\n\r\n//Mappings\r\nimport {RequestedDateMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/RequestedDateMappings\";\r\nimport {DayMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/DayMappings\";\r\nimport {EntityMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/EntityMappings\";\r\nimport {ReservationMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/ReservationMappings\";\r\nimport {LookupFieldMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Common/LookupFieldMappings\";\r\nimport {FormatConverter} from \"../../../../../../FormatEditor/FormatConverter\";\r\nimport {DayReportResponseModel} from '../../Models/Store/Day/Response/DayReportResponseModel';\r\nimport {WeekReportResponseModel} from '../../Models/Store/Day/Response/WeekReportResponseModel';\r\n\r\nexport class DayMappingProfile {\r\n static OnViewModel(dayReport: DayReportResponseModel, weekReport: WeekReportResponseModel): DayDataViewModel {\r\n const viewModel = new DayDataViewModel();\r\n viewModel.RequestedDate = RequestedDateMappings.OnViewModel(dayReport.DayReservations);\r\n viewModel.StartBySchedule = dayReport.DaySchedule && new Date(FormatConverter.CorrectTimezone(dayReport.DaySchedule.Starting.toString()));\r\n\r\n viewModel.DaysOfWeek = weekReport.DayReports.map(day => DayMappings.OnViewModel(day));\r\n viewModel.AllowedEntities = dayReport.GlobalSettings.AllowedEntities.map(entity => EntityMappings.OnViewModel(entity));\r\n viewModel.LookupFields = dayReport.Fields.filter(field => field.TypeName === FIELD_TYPES.Lookup || field.TypeName === FIELD_TYPES.MultiSelect).map(field => LookupFieldMappings.OnViewModel(field));\r\n\r\n viewModel.DefaultValues = dayReport.Fields.filter(field => field.DefaultValue).map(field => new DefaultValue({\r\n Id: field.Id,\r\n DefaultValue: field.DefaultValue,\r\n Name: field.Name,\r\n TypeName: field.TypeName\r\n }));\r\n viewModel.TranslatedFields = dayReport.Fields.filter(field => field.IsTranslate).map(field => new TranslatedField({\r\n Id: field.Id,\r\n }));\r\n viewModel.HasDisapprovals = dayReport.HasDisapprovals;\r\n\r\n return viewModel;\r\n }\r\n\r\n static OnSaveModel(model: Reservation): SaveReservationRequestModel {\r\n return ReservationMappings.OnSaveModel(model);\r\n }\r\n\r\n static OnDeleteModel(model: Reservation): DeleteReservationRequestModel {\r\n return ReservationMappings.OnDeleteModel(model);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet box time-writing-control\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"time-writing-caption clearfix\\\"> <div class=\\\"container-fluid time-writing-header\\\"> <div class=\\\"row weekly-container\\\"> <div class=\\\"weekly-subcontainer weekly-subcontainer-left days-container\\\"> <!--Todo: create translations--> <!-- ko with: _viewModel --> <!-- ko foreach: DaysOfWeek --> <div class=\\\"day-column selected-day\\\"> <span class=\\\"navigation-link\\\" data-bind=\\\"click: $parents[1].OnDayClick.bind($parents[1], $data.Date),\\r\\n\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t text: DayDescription,\\r\\n\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t css: {'selected': $parent.IsActive($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t \\t 'current-date': $data.Date.getTime() == $parents[1]._compareCurrentDate.getTime(),\\r\\n\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t \\t 'booked-norm-date': $parent.IsNormBooked($data) && !$parent.IsActive($data)}\\\"> </span> <!--ko if: $parents[1].TimeCloseDateVisiblePerDay || $parents[1].TimeCloseDateVisiblePerDayAndWeek--> <div class=\\\"custom\\\" data-bind=\\\"event: {\\r\\n mouseover: $parents[1].HoverOnDayClose.call($parents[1], event, $data.Date),\\r\\n mouseout: $parents[1].HoverOutDayClose.call($parents[1], event)\\r\\n },\\r\\n click: $parents[1].OnCloseDayClicked.bind($parents[1], event, $data.Date)\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.ClosedDate, attr: {'id': DayDescription, 'disabled': $data.ClosedDate || $parents[1].IsFutureDate($data.Date)}\\\"/> <label data-bind=\\\"attr: {'for': DayDescription}, css: {'hovered': $data.Hovered }\\\"></label> </div> <!-- /ko --> </div> <!-- /ko --> <div class=\\\"week-hours selected-day\\\"> <div class=\\\"navigation-link\\\" data-bind=\\\"click: $parent.OnWeekClick.bind($parent)\\\"> <span data-bind=\\\"text: Booked\\\"></span> <span> <!--ko text: $parent._labels.WEEK --><!-- /ko--> </span> </div> <!--ko if: $parent.TimeCloseDateVisiblePerWeek || $parent.TimeCloseDateVisiblePerDayAndWeek--> <div class=\\\"custom\\\" data-bind=\\\"event: {\\r\\n mouseover: $parent.HoverOnWeekClose.call($parent, event),\\r\\n mouseout: $parent.HoverOutWeekClose.call($parent, event)\\r\\n },\\r\\n click: $parent.OnCloseWeekClicked.bind($parent, event)\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.ClosedWeek, attr: {id: WeekId, disabled: $data.ClosedWeek || $parent._isDisableWeekBtn()}\\\"/> <label data-bind=\\\"attr: {for: WeekId}\\\"></label> </div> <!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"weekly-subcontainer weekly-subcontainer-center week-container\\\"> <i class=\\\"glyphicon glyphicon-arrow-left prev-page\\\" data-bind=\\\"click: OnPrevWeekClick\\\"></i> <!-- ko with: _viewModel --> <div class=\\\"header-button\\\" style=\\\"position:relative;display:inline-block\\\"> <!-- ko with: $parent._state --> <input data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdatetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: Date,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tonUpdate: $parents[1].SelectDate.bind($parents[1]),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tlocale: $parents[1].GetLocale(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tformat: $parents[1].GetShortDateFormat(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmaxDate: 'now',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\twidgetPositioning: {\\r\\n vertical: 'bottom'\\r\\n }\\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}\\\" type=\\\"text\\\" class=\\\"datepickerinput\\\"> <!-- /ko --> <!--ko text: $parent._labels.WEEK --><!-- /ko--> <!-- ko text: WeekNumber --> <!-- /ko --> (<span> <!-- ko text: WeekDescription --> <!-- /ko --> </span>) </div> <!-- /ko --> <!-- ko if: _isPastWeek --> <i class=\\\"glyphicon glyphicon-arrow-right prev-page\\\" data-bind=\\\"click: OnNextWeekClick\\\"></i> <!-- /ko --> <!-- ko ifnot: _isPastWeek --> <i class=\\\"glyphicon glyphicon-arrow-right next-page disable\\\"></i> <!-- /ko --> </div> <div class=\\\"weekly-subcontainer weekly-subcontainer-right\\\"> <!--ko with: _viewModel--> <select class=\\\"form-control\\\" data-bind=\\\"options: Users.Users, optionsText: 'Name', value: Users.SelectedUser, event: {change: $parent.UserSelected.bind($parent, Users.SelectedUser())}\\\"></select> <!--/ko--> </div> <div class=\\\"weekly-subcontainer yearwiew-container weekly-subcontainer-right\\\"> <span class=\\\"navigation-link yearwiew-link\\\" data-bind=\\\"click: OnYearClick\\\"> <span class=\\\"icon-magnifier\\\"></span> <!--ko text: _labels.YEARVIEW --><!-- /ko--> </span> </div> <!--ko with: _viewModel--> <!-- ko if: HasDisapprovals --> <div class=\\\"weekly-subcontainer weekly-subcontainer-right\\\"> <a class=\\\"btn red btn-disapprove\\\" data-bind=\\\"click: $parent.OnDisapprovedClick.bind($parent)\\\"> <!--ko text: $parent._labels.DISAPPROVED --><!-- /ko--> </a> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> <div class=\\\"portlet-body\\\"> <!-- ko if: _isFutureDay() --> <div class=\\\"splash-message\\\" data-bind=\\\"text: _labels.WRITING_TIME_FOR_FUTURE_NOT_ALLOWED\\\"> </div> <!-- /ko --> <!-- ko ifnot: _isFutureDay() --> <div class=\\\"timewriting-day-table clearfix\\\"> <div class=\\\"timewriting-day-table__content\\\"> <table> <thead class=\\\"timewriting-table-header timewriting-table-rows clearfix\\\"> <th></th> <th class=\\\"timewriting-table-column__name\\\"><!--ko text: _labels.SUBJECT --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isFromVisible\\\"> <!--ko text: _labels.FROM --><!-- /ko--></th> <th data-bind=\\\"visible: _isDashVisible\\\"></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isToVisible\\\"> <!--ko text: _labels.TO --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isDurationVisible\\\"> <!--ko text: _labels.DURATION --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isHourVisible\\\"> <!--ko text: _labels.HOUR --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isOvwVisible\\\"> <!--ko text: _labels.OVW --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isPayVisible\\\"> <!--ko text: _labels.PAY --><!-- /ko--></th> <!--ko foreach: GetCustomFieldNames()--> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"css: $data.Type\\\"><!--ko text: $data.Name --> <!-- /ko--></th> <!--/ko--> <th class=\\\"timewriting-table-column__full-width\\\"></th> </thead> <tbody class=\\\"timewriting-table-body\\\"> <!-- ko foreach: _rowEditors --> <tr class=\\\"timewriting-row-fields\\\"> <td rowspan=\\\"2\\\"> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name === 'Actions' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </td> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name !== 'Description' && $data._cell.Name !== 'Actions' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <td class=\\\"timewriting-table-column__empty-cell\\\"></td> </tr> <tr class=\\\"timewriting-row-description\\\"> <td data-bind=\\\"attr: { colspan: $parents[0]._countOfVisibleColumns + 1 }\\\"> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name === 'Description' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </td> </tr> <!-- /ko --> </tbody> </table> <div class=\\\"timewriting-day-table__add-row\\\"> <a href=\\\"#\\\" class=\\\"btn btn-primary btn-timewriting-plus\\\" data-bind=\\\"click: OnAddLineClick, visible: _isEditable() && _isReadState(), tooltip:{content: _labels.ADD_LINE}\\\"> <i class=\\\"fa fa-plus-circle\\\"></i> </a> </div> </div> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value text\\\"> <!-- ko if: _displayValue() != null && _displayValue().length >= 20 --> <span data-bind=\\\"text: _cell.Value, tooltip:{ content: _displayValue}\\\"></span> <!-- /ko --> <!-- ko if: _displayValue() != null && _displayValue().length < 20 --> <span data-bind=\\\"text: _displayValue\\\"></span> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <div class=\\\"input-group\\\"> <input type=\\\"text\\\" data-bind=\\\"textInput: _displayValue,\\r\\n\\t\\t css: {'invalid': !_valid()},\\r\\n\\t\\t attr: { maxlength: _cell.Size ? _cell.Size : '' }\\\" class=\\\"form-control timewriting-table-input\\\"/> <!--ko if: _isTranslate --> <div class=\\\"translation-container\\\" data-bind=\\\"style: { 'z-index': $parents[2]._zIndex }\\\"> <a class=\\\"btn btn-secondary translation-list\\\" data-bind=\\\"click: ToggleTranslations\\\"> <!--ko with: _translationFieldEditor._activeTranslationItem--> <!--ko if: Language.Flag--> <img class=\\\"language-selection-img\\\" data-bind=\\\"attr: {src: Language.Flag}\\\" height=\\\"20\\\"> <!--/ko--> <!--ko ifnot: Language.Flag--> <span class=\\\"language-shortname\\\" data-bind=\\\"text: Language.ShortName\\\"></span> <!--/ko--> <!--/ko--> </a> <!-- ko with: _translationFieldEditor --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value description\\\"> <span data-bind=\\\"text: _cell.Value\\\"></span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value description-edit\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <span> <input type=\\\"text\\\" data-bind=\\\"value: _cell.Value, css: {'invalid': !_valid()}\\\" class=\\\"form-control\\\"/> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> <!-- ko with: _minLengthValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> <!-- ko with: _maxLengthValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value integer\\\"> <span data-bind=\\\"text: FormatValue(_cell.Value())\\\"></span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <span> <input type=\\\"text\\\" data-bind=\\\"value: _cell.Value, inputMask: { type: 'Integer', value: _cell.Value }\\\" class=\\\"form-control\\\" data-with-number-group-separators=\\\"true\\\"/> </span> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value decimal\\\"> <span data-bind=\\\"text: FormatValue(_cell.Value())\\\"></span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <span> <input type=\\\"text\\\" data-bind=\\\"value: _cell.Value, inputMask: { type: 'Decimal', value: _cell.Value, decimalSize: _cell.Size }\\\" class=\\\"form-control\\\" data-with-number-group-separators=\\\"true\\\"/> </span> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value subject\\\"> <!-- ko with: _cell.Value --> <span class=\\\"subject-icon\\\"> <!-- ko with: Icon --> <!-- ko template: {name: GetTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> </span> <!-- ko if: SubjectLabel && SubjectLabel.length >= 50 --> <span class=\\\"navigation-link\\\" data-bind=\\\"text: SubjectLabel,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: GoToRecordScreen,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip:{ content: SubjectLabel }\\\"></span> <!-- /ko --> <!-- ko if: !SubjectLabel || SubjectLabel.length < 50 --> <span class=\\\"navigation-link\\\" data-bind=\\\"text: SubjectLabel, click: GoToRecordScreen\\\"></span> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value subject subject-edit\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <!-- ko with: _cell --> <!-- ko with: Value --> <!-- ko if: NotSpecified --> <!-- ko if: $parent.IsNewState --> <!-- ko foreach: $parent.AllowedEntities --> <!-- ko with: Icon --> <span data-bind=\\\"click: $parents[2].OnEntityClick.bind($parent, $parent)\\\" class=\\\"allowed-entity subject-icon\\\"> <span data-bind=\\\"tooltip:{content: $parent.Name}\\\"> <!-- ko template: {name: GetTemplateName.bind($data)} --> <!-- /ko --> </span> </span> <!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: SubjectLabel\\\"></span> <!-- ko if: $parent.IsNewState --> <!-- ko with: $parents[1]._requiredValidation --> <!-- ko if: !Valid() --> <div data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: NotSpecified --> <!-- ko if: $parent.IsNewState --> <span class=\\\"subject-icon\\\" data-bind=\\\"click: $parent.OnEntityIconClick\\\"> <!-- ko with: Icon --> <!-- ko template: {name: GetTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> </span> <!-- /ko --> <!-- ko ifnot: $parent.IsNewState --> <span class=\\\"subject-icon\\\"> <!-- ko with: Icon --> <!-- ko template: {name: GetTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> </span> <!-- /ko --> <span class=\\\"navigation-link\\\" data-bind=\\\"click: $parent.OnSubjectClick\\\"> <span data-bind=\\\"text: SubjectLabel\\\"></span> </span> <!-- /ko --> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value subject\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <!-- ko with: _cell --> <!-- ko with: Value --> <span class=\\\"subject-icon\\\"> <!-- ko with: Icon --> <!-- ko template: {name: GetTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> </span> <span data-bind=\\\"text: SubjectLabel\\\"></span> <!--/ko--> <!--/ko--> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\" data-bind=\\\"css: _cell.ClassName, visible: _cell.Visible\\\"> <div class=\\\"timewriting-table-mobile-label\\\"><span data-bind=\\\"text: _cell.Label\\\"></span>:</div> <span> <!-- ko with: _cell.Value --> <!-- ko text: $parent.FormatValue(DisplayValue) --> <!-- /ko --> <!-- /ko --> </span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\" data-bind=\\\"css: _cell.ClassName, visible: _cell.Visible\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <div> <!--ko if: _cell.RequiresSearch--> <div class=\\\"searchContainer\\\" data-bind=\\\"click: $data.ShowSearchScreen.bind($data)\\\"> <!--ko if: _cell.Value --> <!--ko with: _cell.Value--> <div class=\\\"dropdown-wraper form-control\\\" data-bind=\\\"tooltip:{ content: $parent.FormatValue(DisplayValue)}\\\"> <!--ko text: $parent.FormatValue(DisplayValue)--><!--/ko--> </div> <!--/ko--> <!--/ko--> <!--ko ifnot: _cell.Value --> <div class=\\\"dropdown-wraper form-control\\\"></div> <!--/ko--> <a class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></a> </div> <!--/ko--> <!--ko ifnot: _cell.RequiresSearch--> <select class=\\\"form-control\\\" data-bind=\\\"\\r\\n options: _cell.Options,\\r\\n optionsText: $data.FormatSelectValue.bind($data),\\r\\n value: _currentValue\\r\\n \\\"></select> <!--/ko--> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </div> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\" data-bind=\\\"css: _cell.ClassName, visible: _cell.Visible\\\"> <div class=\\\"timewriting-table-mobile-label\\\"><span data-bind=\\\"text: _cell.Label\\\"></span>:</div> <span data-bind=\\\"css: {empty: _showEmptyValue()}\\\"> <!-- ko with: _cell.Value --> <!-- ko text: $parent.FormatValue(DisplayValue) --> <!-- /ko --> <!-- /ko --> </span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value form-standart-control MultiSelect\\\" data-bind=\\\"css: _cell.ClassName, visible: _cell.Visible\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <div class=\\\"timewriting-table-column__multi-select-container\\\"> <div data-bind=\\\"\\\" class=\\\"multi-options-list dropdown-wraper form-control\\\"> <!-- ko foreach: Items --> <!-- ko if: IsSelected --> <span class=\\\"multi-option-item\\\"> <a data-bind=\\\"click: $parent.RemoveItem.bind($parent, $data), preventBubble: ['click']\\\" href=\\\"javascript:;\\\">x</a> <!--ko text: $parent.FormatSingleValue(Label) --><!-- /ko --> </span> <!--/ko--> <!--/ko--> <!-- ko if: _showEmptyValue() --> <span class=\\\"empty\\\" data-bind=\\\"text: !Items().length > 0 ? $data._labels.NO_RECORDS_TO_SELECT : $data._labels.SELECT_VALUE_LABEL\\\"></span> <!-- /ko --> </div> <!-- ko if: _cell.RequiresSearch --> <span class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\" data-bind=\\\"click: $data.ShowSearchScreen.bind($data)\\\"></span> <!-- /ko --> <!-- ko ifnot: _cell.RequiresSearch --> <span class=\\\"btn default dropdown-search-icon\\\" data-bind=\\\"click: $data.ShowSearchScreen.bind($data)\\\"><i class=\\\"fa fa-caret-down\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> </div> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value Time\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <span> <input type=\\\"text\\\" readonly=\\\"readonly\\\" class=\\\"time-editor\\\" data-bind=\\\"datetimepicker: {\\r\\n\\t\\t\\tvalue: _cell.Value,\\r\\n\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\tlocale: GetLocale(),\\r\\n\\t\\t\\t\\tformat: GetFormat()\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\\"/> </span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\" data-bind=\\\"css: _cell.ClassName\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <div class=\\\"form-group timewriting-day-datetimepicker\\\"> <div class=\\\"input-group date\\\" data-bind=\\\"datetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue: _cell.Value,\\r\\n\\t\\t\\t\\t\\t\\t\\tonUpdate: $data.DateChanged.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\tonClear: $data.DateChanged.bind($data, null),\\r\\n\\t\\t\\t\\t\\t\\t\\tnotFormatted: true,\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlocale: GetLocale(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tformat: GetFormat(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tminDate: '1900-01-01',\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\"/> <span class=\\\"input-group-addon\\\"> <span class=\\\"glyphicon glyphicon-calendar\\\"></span> </span> </div> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </div> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\" data-bind=\\\"css: _cell.ClassName, visible: _cell.Visible\\\"> <div class=\\\"timewriting-table-mobile-label\\\"><span data-bind=\\\"text: _cell.Label\\\"></span>:</div> <input autocomplete=\\\"off\\\" type=\\\"text\\\" readonly=\\\"readonly\\\" class=\\\"time-editor\\\" data-bind=\\\"datetimepicker: {\\r\\n\\t\\t\\t\\tvalue: _cell.Value,\\r\\n\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\tformat: 'HH:mm'\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t }\\\"/> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value time time-edit\\\" data-bind=\\\"css: _cell.ClassName, visible: _cell.Visible\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <div class=\\\"timewriting-day-datetimepicker\\\"> <div class=\\\"input-group date\\\" data-bind=\\\"datetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue: _cell.Value,\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tformat: 'HH:mm',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tallowInputToggle: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tkeyBinds: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tup: null,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdown: null,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tright: null,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: null\\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\\tonUpdate: function(newDate) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_cell.Value(newDate);\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t}\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"valueUpdate: 'input', event: {keypress: PreventLetters}\\\"/> <span class=\\\"input-group-addon\\\"> <span class=\\\"glyphicon glyphicon-time\\\"></span> </span> </div> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </div> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value yesNo\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"checked: _cell.Value, uniform: _cell.Value\\\" disabled=\\\"disabled\\\"/> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <span> <input type=\\\"checkbox\\\" data-bind=\\\"checked: _cell.Value, uniform: _cell.Value\\\"/> </span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value dash\\\" data-bind=\\\"visible: _cell.Visible\\\"> - </td>\";\n// Exports\nexport default code;","//Libs\r\nimport * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\nimport * as moment from \"moment\";\r\n\r\n//Constants\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\n\r\n//Common\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {RecordStore} from \"Core/Common/Stores/RecordStore\";\r\nimport {SERVER_REQUEST_ERRORS} from \"Core/Common/Enums/ServerRequestErrors\";\r\n\r\n//User\r\nimport {UserManager} from \"User/UserManager\";\r\n\r\n//Components\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\n//Screens\r\nimport {SearchScreen} from \"Core/Screens/SearchScreen/SearchScreen\";\r\n\r\n//Constants\r\nimport {DAYS_OF_WEEK} from \"Core/Components/Controls/TimeWriting/Constants/DaysOfWeek\";\r\nimport {TimeStatus} from \"Core/Components/Controls/TimeWriting/Constants/TimeStatus\";\r\n\r\n\r\n//Settings\r\nimport {IDayViewSettings} from \"Core/Components/Controls/TimeWriting/Views/Day/IDayViewSettings\";\r\n\r\n//Utils\r\nimport {DateTime} from \"Core/Components/Controls/TimeWriting/Utils/DateTime\";\r\n\r\nimport {\r\n ActionsCellEditor,\r\n CellEditor,\r\n DateCellEditor,\r\n DateTimeCellEditor,\r\n DecimalCellEditor,\r\n DescriptionCellEditor,\r\n DropdownCellEditor,\r\n IntegerCellEditor,\r\n MultiSelectCellEditor,\r\n RowEditor,\r\n State as RowEditorState,\r\n SubjectCellEditor,\r\n TextCellEditor,\r\n TimeCellEditor,\r\n ValidationCellEditor,\r\n ValueCellEditor\r\n} from \"Core/Components/Controls/TimeWriting/Utils/RowEditor\";\r\n\r\n//Views\r\nimport {TimeWritingView} from \"Core/Components/Controls/TimeWriting/Views/TimeWritingView\";\r\nimport {WeekView} from \"Core/Components/Controls/TimeWriting/Views/Week/WeekView\";\r\n\r\n//State\r\nimport {State} from \"Core/Components/Controls/TimeWriting/Views/Day/State\";\r\nimport {ViewState} from \"Core/Components/Controls/TimeWriting/Views/Day/ViewState\";\r\n\r\n//ViewModels\r\nimport {\r\n AllowedEntity,\r\n DayDataViewModel,\r\n DefaultValue,\r\n LookupField,\r\n OptionalFieldData,\r\n Reservation,\r\n Subject\r\n} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\n\r\nimport {UsersViewModel, UserViewModel} from \"Core/Components/Controls/TimeWriting/Models/View/UsersViewModel\";\r\n\r\n//Stores\r\nimport {TimeWritingStore} from \"Core/Components/Controls/TimeWriting/Stores/TimeWritingStore\";\r\n\r\n//Store models\r\nimport {TimeWritingReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/TimeWritingReportResponseModel\";\r\nimport {SaveReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\nimport {DeleteReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel\";\r\n\r\n//Mappings\r\nimport {DayMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Day/DayMappingProfile\";\r\nimport {UsersMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Day/UsersMappingProfile\";\r\n\r\n//Templates\r\nimport DayTemplate from \"Core/Components/Controls/TimeWriting/Templates/DayTemplate.html\";\r\n//TextColumn\r\nimport TextViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/View.html\";\r\nimport TextEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/Edit.html\";\r\n\r\nimport DescriptionViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/View.html\";\r\nimport DescriptionEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/Edit.html\";\r\n\r\n//Integer\r\nimport IntegerViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/View.html\";\r\nimport IntegerEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/Edit.html\";\r\n\r\n//Decimal\r\nimport DecimalViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/View.html\";\r\nimport DecimalEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/Edit.html\";\r\n\r\n//Subject\r\nimport SubjectViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/View.html\";\r\nimport SelectableSubjectEditTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/SelectableSubjectEdit.html\";\r\nimport SelectedSubjectEditTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/SelectedSubjectEdit.html\";\r\n//Dropdown\r\nimport DropdownViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/View.html\";\r\nimport DropdownEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/Edit.html\";\r\n\r\n//Multiselect\r\nimport MultiselectViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Multiselect/View.html\";\r\nimport MultiselectEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Multiselect/Edit.html\";\r\n\r\n//DateTime\r\nimport DateTimeViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/View.html\";\r\nimport DateTimeEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/Edit.html\";\r\n\r\n//Time\r\nimport TimeViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/View.html\";\r\nimport TimeEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/Edit.html\";\r\n\r\n//YesNo\r\nimport YesNoViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/View.html\";\r\nimport YesNoEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/Edit.html\";\r\n\r\n//Actions\r\nimport ActionsViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Actions/Day/View.html\";\r\nimport ActionsEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Actions/Day/Edit.html\";\r\n//Dash\r\nimport DashViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Dash/View.html\";\r\n\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\n\r\n\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {UsersResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport { DayReportResponseModel } from \"../../Models/Store/Day/Response/DayReportResponseModel\";\r\nimport { QueryConditionGroupModel } from \"Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup\";\r\nimport { GenericDeserialize } from \"libs/cerialize\";\r\n\r\nexport class DayView extends TimeWritingView {\r\n private _state: KnockoutObservable<State>;\r\n private _currentDate: Date;\r\n private _currentValue;\r\n private _isPastWeek: KnockoutComputed<boolean>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _viewModel: KnockoutObservable<DayDataViewModel>;\r\n\r\n private _viewState: KnockoutObservable<ViewState>;\r\n private _isReadState: KnockoutComputed<boolean>;\r\n private _isEditState: KnockoutComputed<boolean>;\r\n private _isNewState: KnockoutComputed<boolean>;\r\n private _isFutureDay: KnockoutObservable<boolean>;\r\n private _isDisableWeekBtn: KnockoutObservable<boolean>;\r\n\r\n private _countOfVisibleColumns: number;\r\n private _isFromVisible: KnockoutObservable<boolean>;\r\n private _isDashVisible: KnockoutObservable<boolean>;\r\n private _isToVisible: KnockoutObservable<boolean>;\r\n private _isDurationVisible: KnockoutObservable<boolean>;\r\n private _isHourVisible: KnockoutObservable<boolean>;\r\n private _isOvwVisible: KnockoutObservable<boolean>;\r\n private _isPayVisible: KnockoutObservable<boolean>;\r\n\r\n private _rowEditors: KnockoutObservableArray<RowEditor>;\r\n private _compareCurrentDate: Date;\r\n private _labels = LABELS;\r\n private _confirmations = CONFIRMATIONS;\r\n private _timeStatus = TimeStatus;\r\n\r\n private _initialDateSet = true;\r\n private _userId: number;\r\n\r\n constructor(private _settings: IDayViewSettings) {\r\n super();\r\n this._currentDate = new Date();\r\n this._state = ko.observable(new State({Date: new Date()}));\r\n this._isPastWeek = ko.computed(() => DateTime.GetWeekYear(this._state().Date) < DateTime.GetWeekYear(this._currentDate) || DateTime.GetWeekNumber(this._state().Date) < DateTime.GetWeekNumber(this._currentDate), this);\r\n this._isEditable = ko.observable(false);\r\n this._viewModel = ko.observable(null);\r\n\r\n this._viewState = ko.observable(ViewState.Read);\r\n this._isReadState = ko.computed(() => this._viewState() === ViewState.Read, this);\r\n this._isEditState = ko.computed(() => this._viewState() === ViewState.Edit, this);\r\n this._isNewState = ko.computed(() => this._viewState() === ViewState.New, this);\r\n this._rowEditors = ko.observableArray([]);\r\n this._compareCurrentDate = this._currentDate;\r\n this._compareCurrentDate.setHours(0, 0, 0, 0);\r\n this._isFutureDay = ko.observable(false);\r\n this._isDisableWeekBtn = ko.observable(false);\r\n\r\n const visibleFields = this._settings.Properties.Groups.find(group => group.Name === \"VisibleFields\").Properties;\r\n const dashVisibility = visibleFields.find(field => field.Name === \"START\").Value && visibleFields.find(field => field.Name === \"TO\").Value;\r\n\r\n this._countOfVisibleColumns = visibleFields.filter(f => f.Value === true).length + dashVisibility + this._settings.CustomFields.length;\r\n\r\n this._isFromVisible = ko.observable(visibleFields.find(field => field.Name === \"START\").Value);\r\n this._isDashVisible = ko.observable(dashVisibility);\r\n this._isToVisible = ko.observable(visibleFields.find(field => field.Name === \"TO\").Value);\r\n this._isDurationVisible = ko.observable(visibleFields.find(field => field.Name === \"TIMESPENT\").Value);\r\n this._isHourVisible = ko.observable(visibleFields.find(field => field.Name === \"F_HOURKIND\").Value);\r\n this._isOvwVisible = ko.observable(visibleFields.find(field => field.Name === \"F_OVERWORKINDICATOR\").Value);\r\n this._isPayVisible = ko.observable(visibleFields.find(field => field.Name === \"F_PAYMENTINDICATOR\").Value);\r\n }\r\n\r\n private GetTimeCloseDateVisibility() {\r\n const timeCloseDateOption = this._settings.Properties.Groups.find(group => group.Name === 'TimeCloseDateVisibility').Properties[0].Value;\r\n return timeCloseDateOption && timeCloseDateOption.Value || 'PerDay';\r\n }\r\n\r\n private InitAllowedEntities(dayReport: DayReportResponseModel) {\r\n let condition = this._settings.Properties.GetPropertyValue('AllowedEntityQueryCondition');\r\n\r\n if(condition){\r\n let conditions = GenericDeserialize<QueryConditionGroupModel>(JSON.parse(condition), QueryConditionGroupModel);\r\n if(conditions){\r\n dayReport.GlobalSettings.AllowedEntities = [_.find(dayReport.GlobalSettings.AllowedEntities, (entity)=> entity.Id === conditions.EntityId )];\r\n }\r\n }\r\n }\r\n\r\n get TimeCloseDateVisible() {\r\n const visibility = this.GetTimeCloseDateVisibility();\r\n return visibility !== 'Hidden';\r\n }\r\n\r\n get TimeCloseDateVisiblePerDay() {\r\n const visibility = this.GetTimeCloseDateVisibility();\r\n return visibility === 'PerDay';\r\n }\r\n\r\n get TimeCloseDateVisiblePerWeek() {\r\n const visibility = this.GetTimeCloseDateVisibility();\r\n return visibility === 'PerWeek';\r\n }\r\n\r\n get TimeCloseDateVisiblePerDayAndWeek() {\r\n const visibility = this.GetTimeCloseDateVisibility();\r\n return visibility === 'PerDayAndWeek';\r\n }\r\n\r\n GetTemplate() {\r\n return DayTemplate;\r\n }\r\n\r\n CanBeUpdated() {\r\n return this._viewState() === ViewState.Read;\r\n }\r\n\r\n Show(date: Date, userId?: number) {\r\n this._userId = userId;\r\n this._initialDateSet = true;\r\n this._compareCurrentDate.setHours(0, 0, 0, 0);\r\n this._state(new State({\r\n Date: date\r\n }));\r\n\r\n BlockUI.Block();\r\n\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n if (usersList && userId) {\r\n const selectedUser = usersList.Users().find(user => user.Id === userId);\r\n if (selectedUser) {\r\n usersList.SelectedUser(selectedUser);\r\n }\r\n }\r\n if (usersList) {\r\n this.LoadData(date, usersList.SelectedUser().Id)\r\n .then(dayReportResponse => this.RenderData(dayReportResponse, usersList))\r\n .fail(error => {\r\n this.ShowError(error.message);\r\n BlockUI.Unblock();\r\n });\r\n } else {\r\n const loadDataPromise = this.LoadData(date, userId || UserManager.Instance.CurrentUser.Id);\r\n const loadUsersPromise = this.LoadUsers();\r\n\r\n loadDataPromise.fail(error => this.ShowError(error.message));\r\n loadUsersPromise.fail(error => this.ShowError(error.message));\r\n\r\n P.when(loadDataPromise, loadUsersPromise).then(result => this.RenderData(result[0], result[1], userId || UserManager.Instance.CurrentUser.Id)).fail(() => BlockUI.Unblock());\r\n }\r\n }\r\n\r\n ShowStatic() {\r\n this._state(new State({\r\n Date: new Date()\r\n }));\r\n\r\n this.RenderStaticData();\r\n }\r\n\r\n OnDisapprovedClick() {\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n const selectedUser = usersList && usersList.SelectedUser().Id;\r\n\r\n if (this._viewState() === ViewState.Read) {\r\n this.Trigger(\"DisapprovedClicked\", {State: this._state(), UserId: selectedUser});\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Trigger(\"DisapprovedClicked\", {State: this._state(), UserId: selectedUser});\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Trigger(\"DisapprovedClicked\", this._state());\r\n });\r\n }\r\n\r\n OnPrevWeekClick() {\r\n const prevWeekStartDate = DateTime.GetPrevWeekStartDate(this._state().Date);\r\n if (this._viewState() === ViewState.Read) {\r\n this.Show(prevWeekStartDate);\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Show(prevWeekStartDate);\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Show(prevWeekStartDate);\r\n });\r\n }\r\n\r\n private SelectDate(date: Date) {\r\n if (!this._initialDateSet) {\r\n this.Show(date, this._userId);\r\n } else {\r\n this._initialDateSet = false;\r\n }\r\n return true;\r\n }\r\n\r\n OnYearClick() {\r\n if (this._viewState() === ViewState.Read) {\r\n this.Trigger(\"YearClicked\", {State: this._state(), UserId: this._viewModel().SelectedUser.Id});\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Trigger(\"YearClicked\", {State: this._state(), UserId: this._viewModel().SelectedUser.Id});\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Trigger(\"YearClicked\", {State: this._state(), UserId: this._viewModel().SelectedUser.Id});\r\n });\r\n }\r\n\r\n OnWeekClick() {\r\n const startDate = DateTime.GetWeekStart(this._state().Date);\r\n const endDate = moment(startDate).add(7, 'days').toDate();\r\n\r\n if (this._viewState() === ViewState.Read) {\r\n this.Trigger('WeekClicked', {\r\n StartDate: startDate,\r\n EndDate: endDate,\r\n UserId: this._viewModel().SelectedUser.Id\r\n });\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Trigger('WeekClicked', {\r\n StartDate: startDate,\r\n EndDate: endDate,\r\n UserId: this._viewModel().SelectedUser.Id\r\n });\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Trigger('WeekClicked', {\r\n StartDate: startDate,\r\n EndDate: endDate,\r\n UserId: this._viewModel().SelectedUser.Id\r\n });\r\n });\r\n }\r\n\r\n OnNextWeekClick() {\r\n const nextWeekStartDate = DateTime.GetNextWeekStartDate(this._state().Date);\r\n if (this._viewState() === ViewState.Read) {\r\n this.Show(nextWeekStartDate);\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Show(nextWeekStartDate);\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Show(nextWeekStartDate);\r\n });\r\n }\r\n\r\n OnCloseDayClicked(evt, date: Date) {\r\n if (!evt.target.control.disabled) {\r\n const confirmationText = CONFIRMATIONS.SELECTED_DAYS_WILL_NO_LONGER_TO_BE_EDITABLE;\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: this._labels.YES,\r\n TextDecline: this._labels.CANCEL\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => this.CloseDate(date));\r\n confirmationDialog.Show();\r\n }\r\n }\r\n\r\n OnCloseWeekClicked(evt) {\r\n if (!evt.target.control.disabled) {\r\n const confirmationText = CONFIRMATIONS.SELECTED_DAYS_WILL_NO_LONGER_TO_BE_EDITABLE;\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: this._labels.YES,\r\n TextDecline: this._labels.CANCEL\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n const dateToClose = this._viewModel().DaysOfWeek.slice().reverse().find(day => moment().diff(moment(day.Date)) >= 0).Date;\r\n this.CloseDate(dateToClose);\r\n });\r\n confirmationDialog.Show();\r\n }\r\n }\r\n\r\n private UpdateWeekCheckbox() {\r\n let daysOfWeekUntilToday = this._viewModel().DaysOfWeek.filter(day => moment().diff(moment(day.Date)) >= 0);\r\n this._isDisableWeekBtn(_.every(daysOfWeekUntilToday, dow => dow.ClosedDate));\r\n }\r\n\r\n private CloseDate(date: Date) {\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n const selectedUser = usersList && usersList.SelectedUser().Id;\r\n TimeWritingStore.CloseDate({\r\n TimeCloseDate: moment(date).format(),\r\n UserId: selectedUser\r\n })\r\n .then(() => this.Show(date, selectedUser))\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n OnDayClick(date: Date) {\r\n if (this._viewState() === ViewState.Read) {\r\n this.Show(date);\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Show(date);\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Show(date);\r\n });\r\n }\r\n\r\n OnAddLineClick() {\r\n const defaultTimeSpentValue = this._viewModel().DefaultValues.find(item => item.Name === 'TIMESPENT');\r\n const durationInMinutes = () => {\r\n const durationMoment = moment(defaultTimeSpentValue.DefaultValue);\r\n return durationMoment.hours() * 60 + durationMoment.minutes();\r\n };\r\n const duration = defaultTimeSpentValue ? durationInMinutes() : 60;\r\n\r\n const lastReservationTime = this.GetLastReservationTime();\r\n const timeOverflow = (lastReservationTime.getHours() === 0 && lastReservationTime.getMinutes() === 0);\r\n\r\n if (!lastReservationTime || timeOverflow) {\r\n new Notifier().Warning(NOTIFICATIONS.TIME_OVERFLOW);\r\n return;\r\n }\r\n\r\n const timeSpentMoment = moment(new Date(this._state().Date.toString())).hours(0).minutes(duration).seconds(0)\r\n\r\n const timeSpent = timeSpentMoment.toDate();\r\n\r\n this.GetNewReservationSubject().then(reservationSubject => {\r\n const reservation = Reservation.ReserveFor(lastReservationTime, timeSpent, reservationSubject, this._settings.CustomFields);\r\n this._viewModel().RequestedDate.Reservations.push(reservation);\r\n\r\n this._viewState(ViewState.New);\r\n this.AddRowEditor(reservation, this._viewModel().LookupFields, this._viewModel().AllowedEntities, RowEditorState.New, this._viewModel());\r\n });\r\n }\r\n\r\n OnReservationEdit(guid: string) {\r\n const rowEditor = _.find(this._rowEditors(), editor => editor.Guid === guid);\r\n\r\n if (!rowEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n return;\r\n }\r\n\r\n rowEditor.SetState(RowEditorState.Edit);\r\n\r\n this._viewState(ViewState.Edit);\r\n }\r\n\r\n OnReservationDelete(guid: string) {\r\n const rowEditor = _.find(this._rowEditors(), editor => editor.Guid === guid);\r\n\r\n if (!rowEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n return;\r\n }\r\n\r\n this.AskDeleteConfirmation(() => {\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === guid);\r\n\r\n const deleteModel = DayMappingProfile.OnDeleteModel(reservation);\r\n deleteModel.TimeTableId = this._settings.EntityId;\r\n\r\n this.DeleteReservation(deleteModel)\r\n .then(() => this.SaveAndReload(rowEditor))\r\n .fail(error => this.ShowError(error.message));\r\n });\r\n }\r\n\r\n OnSaveReservationChanges() {\r\n BlockUI.Block();\r\n this.SaveReservation()\r\n .then(rowEditor => this.SaveAndReload(rowEditor))\r\n .fail(error => {\r\n this.ShowError(error.message);\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n OnReservationAccept(guid: string) {\r\n const rowEditor = _.find(this._rowEditors(), editor => editor.Guid === guid);\r\n\r\n if (!rowEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n this._viewState(ViewState.Read);\r\n return;\r\n }\r\n\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === guid);\r\n\r\n const acceptModel = DayMappingProfile.OnSaveModel(reservation);\r\n\r\n acceptModel.TimeTableId = this._settings.EntityId;\r\n acceptModel.UserId = this._viewModel().SelectedUser.Id;\r\n\r\n this.AcceptReservation(acceptModel)\r\n .then(() => this.SaveAndReload(rowEditor))\r\n .fail(error => this.ShowError(error.message));\r\n }\r\n\r\n CancelChanges() {\r\n const editRow = _.find(this._rowEditors(), editor => editor.IsEditState || editor.IsNewState);\r\n this.OnCancelReservationChanges(editRow.Guid);\r\n }\r\n\r\n OnCancelReservationChanges(guid: string) {\r\n const rowEditor = _.find(this._rowEditors(), editor => editor.Guid === guid);\r\n\r\n if (!rowEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n return;\r\n }\r\n\r\n if (rowEditor.IsNewState) {\r\n this._viewModel().RequestedDate.Reservations().pop();\r\n this.CancelNewReservation(rowEditor);\r\n } else {\r\n this.CancelReservationChanges(rowEditor);\r\n }\r\n }\r\n\r\n IsFutureDate(date: Date) {\r\n return moment().diff(moment(date)) < 0;\r\n }\r\n\r\n HoverOnDayClose(evt, date) {\r\n if (evt.type === \"mouseover\" && evt.target.control && !evt.target.control.disabled) {\r\n this._viewModel().DaysOfWeek.forEach(day => {\r\n if (!day.ClosedDate) {\r\n day.Hovered(moment(day.Date).diff(moment(date)) <= 0);\r\n }\r\n });\r\n }\r\n }\r\n\r\n HoverOutDayClose(evt) {\r\n if (evt.type === \"mouseout\" && evt.target.control && !evt.target.control.disabled) {\r\n this._viewModel().DaysOfWeek.forEach(day => {\r\n day.Hovered(false);\r\n });\r\n }\r\n }\r\n\r\n HoverOnWeekClose(evt) {\r\n if (evt.type === \"mouseover\") {\r\n this._viewModel().DaysOfWeek.forEach(day => {\r\n if (!this._viewModel().ClosedWeek) {\r\n day.Hovered(moment().diff(moment(day.Date)) >= 0)\r\n }\r\n });\r\n }\r\n }\r\n\r\n HoverOutWeekClose(evt) {\r\n if (evt.type === \"mouseout\") {\r\n this._viewModel().DaysOfWeek.forEach(day => day.Hovered(false));\r\n }\r\n }\r\n\r\n OnAllowedEntityClick(entity: AllowedEntity) {\r\n const rowEditor = _.find(this._rowEditors(), editor => editor.IsNewState);\r\n\r\n if (!rowEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n this._viewState(ViewState.Read);\r\n return;\r\n }\r\n\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === rowEditor.Guid);\r\n\r\n this.SearchSubjectForEntity(entity, reservation);\r\n }\r\n\r\n SelectSubjectMode(reservation: Reservation) {\r\n reservation.Subject(Subject.NotSpecified());\r\n }\r\n\r\n private UserSelected(user: UserViewModel) {\r\n this.Show(this._state().Date);\r\n }\r\n\r\n private GetNewReservationSubject(): P.Promise<Subject> {\r\n const deferred = P.defer<Subject>();\r\n\r\n if (this._settings.SubjectEntityId === null) {\r\n deferred.resolve(null);\r\n } else {\r\n this.RequestNewReservationSubject().always(subject => deferred.resolve(subject))\r\n }\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private RequestNewReservationSubject(): P.Promise<Subject> {\r\n const deferred = P.defer<Subject>();\r\n\r\n const subjectIsAllowed = _.any(this._viewModel().AllowedEntities, e => e.Id === this._settings.SubjectEntityId);\r\n if (!subjectIsAllowed) {\r\n deferred.resolve(null);\r\n } else {\r\n TimeWritingStore.GetSubject(this._settings.SubjectEntityId, this._settings.SubjectRecordId)\r\n .then(record => {\r\n const nameField = _.find<any>((<any>record).Fields, field => field.FieldName.toUpperCase() === \"NAME\");\r\n const subject = new Subject({\r\n EntityId: this._settings.SubjectEntityId,\r\n EntityName: this._settings.SubjectEntityName,\r\n SubjectId: this._settings.SubjectRecordId,\r\n SubjectName: nameField.FieldValue,\r\n Icon: this._settings.SubjectEntityIcon\r\n });\r\n deferred.resolve(subject);\r\n })\r\n .fail(() => deferred.resolve(null));\r\n }\r\n return deferred.promise();\r\n }\r\n\r\n private CancelNewReservation(rowEditor: RowEditor) {\r\n const rowEditorIndex = this._rowEditors.indexOf(rowEditor);\r\n this._rowEditors.splice(rowEditorIndex, 1);\r\n\r\n this._viewState(ViewState.Read);\r\n }\r\n\r\n private CancelReservationChanges(rowEditor: RowEditor) {\r\n rowEditor.CancelChanges();\r\n rowEditor.SetState(RowEditorState.Read);\r\n\r\n this._viewState(ViewState.Read);\r\n }\r\n\r\n private LoadUsers() {\r\n return TimeWritingStore.GetUsers(this._settings.EntityId)\r\n .then(users => users.Users.length === 0\r\n ? UsersResponseModel.CreateDefault()\r\n : UsersMappingProfile.OnViewModel(users)\r\n )\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private LoadData(date: Date, userId: number): P.Promise<TimeWritingReportResponseModel> {\r\n return TimeWritingStore.GetDay({\r\n ControlId: this._settings.ControlId,\r\n TimeTableId: this._settings.EntityId,\r\n SubjectEntityId: this._settings.SubjectEntityId,\r\n SubjectRecordId: this._settings.SubjectRecordId,\r\n Date: moment(date).set({hours: 0, minutes: 0, seconds: 0}).utcOffset(0, true).format(),\r\n UserId: userId,\r\n });\r\n }\r\n\r\n private RenderData(model: TimeWritingReportResponseModel, users: UsersViewModel, selectedUserId?: number) {\r\n this.InitAllowedEntities(model.DayReports[0]);\r\n const viewModel = DayMappingProfile.OnViewModel(model.DayReports[0], model.WeekReports[0]);\r\n\r\n viewModel.Date = this._state().Date;\r\n viewModel.Day = DAYS_OF_WEEK[this._state().Date.getDay()];\r\n viewModel.Year = this._state().Year;\r\n viewModel.Week = this._state().Week;\r\n viewModel.Users = users;\r\n viewModel.TimeClosedDate = new Date();\r\n\r\n if (selectedUserId) {\r\n const selectedUser = viewModel.Users.Users().find(user => user.Id === selectedUserId);\r\n if (selectedUser) {\r\n viewModel.Users.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n const dayReport = model.DayReports[0];\r\n\r\n viewModel.HasDisapprovals = dayReport.HasDisapprovals;\r\n\r\n for (const reservation of viewModel.RequestedDate.Reservations()) {\r\n if (!_.any(reservation.OptionalData)) {\r\n this._settings.CustomFields.forEach(field => reservation.OptionalData.push(new OptionalFieldData({\r\n FieldName: field.Name,\r\n FieldValue: ko.observable(null),\r\n FieldType: field.FieldTypeName,\r\n Translations: ko.observableArray([])\r\n })));\r\n }\r\n }\r\n\r\n this._isFutureDay(this.IsFuture());\r\n this._isEditable(dayReport.Editable);\r\n this._viewState(ViewState.Read);\r\n this._rowEditors([]);\r\n this.InitRowEditors(viewModel);\r\n this._initialDateSet = true;\r\n this._viewModel(viewModel);\r\n\r\n if (dayReport.GlobalSettings.FreezeTime === undefined) {\r\n new Notifier().Warning(NOTIFICATIONS.FREEZE_TIME_NOT_SPECIFIED);\r\n }\r\n this.UpdateWeekCheckbox();\r\n BlockUI.Unblock();\r\n }\r\n\r\n GetShortDateFormat() {\r\n return DATE_FORMATS.SHORT_DATE['Format'];\r\n }\r\n\r\n private GetLocale() {\r\n return moment.locale();\r\n }\r\n\r\n private IsFuture() {\r\n return moment().diff(moment(this._state().Date)) < 0;\r\n }\r\n\r\n private RenderStaticData() {\r\n const viewModel = new DayDataViewModel();\r\n viewModel.Date = this._state().Date;\r\n viewModel.Day = DAYS_OF_WEEK[this._state().Date.getDay()];\r\n viewModel.Year = this._state().Year;\r\n viewModel.Week = this._state().Week;\r\n viewModel.Users = new UsersViewModel();\r\n\r\n this._isEditable(false);\r\n this._rowEditors([]);\r\n this._initialDateSet = true;\r\n this._viewModel(viewModel);\r\n }\r\n\r\n private ShowError(message: string) {\r\n new Notifier().Failed(message);\r\n }\r\n\r\n private ShowWarning(message: string) {\r\n new Notifier().Warning(message);\r\n }\r\n\r\n private ShowNotification(message: string) {\r\n new Notifier().Success(message);\r\n }\r\n\r\n private GetCustomFieldNames() {\r\n return this._settings.CustomFields.map(field => {\r\n return {Name: field.FieldNameTranslation, Type: field.FieldTypeName}\r\n });\r\n }\r\n\r\n private InitRowEditors(viewModel: DayDataViewModel) {\r\n viewModel.RequestedDate.Reservations().forEach(reservation => this.AddRowEditor(reservation, viewModel.LookupFields, viewModel.AllowedEntities, RowEditorState.Read, viewModel));\r\n }\r\n\r\n private AddRowEditor(reservation: Reservation, lookupFields: LookupField[], allowedEntities: AllowedEntity[], state: RowEditorState, viewModel: DayDataViewModel) {\r\n const rowEditor = this.GenerateRowEditor(reservation, lookupFields, allowedEntities, viewModel);\r\n rowEditor.SetState(state);\r\n this._rowEditors.push(rowEditor);\r\n }\r\n\r\n private GenerateOptionalCellEditor(field: AttachedFieldModel, reservation: Reservation, lookupFields: LookupField[], viewModel: DayDataViewModel): CellEditor {\r\n if (this._isNewState()) {\r\n const defaultValue = viewModel.DefaultValues.find(item => item.Name === field.Name) || new DefaultValue();\r\n if (field.FieldTypeName === FIELD_TYPES.Lookup) {\r\n const dropdownField = _.find(lookupFields, f => f.Name === field.Name);\r\n const dropdownFieldValue = +defaultValue.DefaultValue;\r\n const dropdownValue = _.find(dropdownField.Values, value => value.FieldValue === dropdownFieldValue);\r\n reservation.SetOptionalValue(field.Name, dropdownValue);\r\n } else {\r\n reservation.SetOptionalValue(field.Name, defaultValue.DefaultValue);\r\n }\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Lookup) {\r\n const dropdownField = _.find(lookupFields, f => f.Name === field.Name);\r\n\r\n return new DropdownCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n Options: ko.observableArray(dropdownField.Values),\r\n RequiresSearch: dropdownField.RequiresSearch,\r\n ValTableId: field.ValTableId,\r\n ValFieldId: field.ValFieldId,\r\n ValFieldTypeName: field.ValFieldTypeName,\r\n ValFieldFormatName: field.ValFieldFormatName,\r\n ValFieldSize: field.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'ovw',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value && value.FieldValue\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.MultiSelect) {\r\n const multiSelectField = _.find(lookupFields, f => f.Name === field.Name);\r\n\r\n return new MultiSelectCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n Options: ko.observableArray(multiSelectField.Values),\r\n RequiresSearch: multiSelectField.RequiresSearch,\r\n ValTableId: field.ValTableId,\r\n ValFieldId: field.ValFieldId,\r\n ValFieldTypeName: field.ValFieldTypeName,\r\n ValFieldFormatName: field.ValFieldFormatName,\r\n ValFieldSize: field.ValFieldSize,\r\n ViewTemplate: MultiselectViewCellTemplate,\r\n EditTemplate: MultiselectEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'ovw',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value && value.FieldValue\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Integer) {\r\n return new IntegerCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: IntegerViewCellTemplate,\r\n EditTemplate: IntegerEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: null,\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Decimal) {\r\n return new DecimalCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DecimalViewCellTemplate,\r\n EditTemplate: DecimalEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: null,\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n Size: field.Size,\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.DateTime) {\r\n return new DateTimeCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DateTimeViewCellTemplate,\r\n EditTemplate: DateTimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Date) {\r\n return new DateCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DateTimeViewCellTemplate,\r\n EditTemplate: DateTimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Time) {\r\n return new TimeCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.TimeSpan) {\r\n return new ValidationCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.YesNo) {\r\n return new ValueCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: YesNoViewCellTemplate,\r\n EditTemplate: YesNoEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'description'\r\n });\r\n }\r\n\r\n return new TextCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TextViewCellTemplate,\r\n EditTemplate: TextEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'description',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && !!value\r\n },\r\n Size: field.Size,\r\n Translations: reservation.GetTranslations(field.Name),\r\n IsTranslate: _.some(viewModel.TranslatedFields, item => item.Id === field.Id)\r\n });\r\n }\r\n\r\n private GenerateRowEditor(reservation: Reservation, lookupFields: LookupField[], allowedEntities: AllowedEntity[], viewModel: DayDataViewModel) {\r\n const customFieldCellEditors = this._settings.CustomFields.map(field => this.GenerateOptionalCellEditor(field, reservation, lookupFields, viewModel));\r\n\r\n const hourKindLookupField = _.find(lookupFields, f => f.Name === \"F_HOURKIND\");\r\n const ovwLookupField = _.find(lookupFields, f => f.Name === \"F_OVERWORKINDICATOR\");\r\n const payLookupField = _.find(lookupFields, f => f.Name === \"F_PAYMENTINDICATOR\");\r\n\r\n return new RowEditor(reservation.Guid,\r\n null,\r\n lookupFields,\r\n new SubjectCellEditor({\r\n Name: \"Subject\",\r\n Label: this._labels.SUBJECT,\r\n Value: reservation.Subject,\r\n ViewTemplate: SubjectViewCellTemplate,\r\n EditTemplate: reservation.Subject().NotSpecified ? SelectableSubjectEditTemplate : SelectedSubjectEditTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n OnEntityClick: this.OnAllowedEntityClick.bind(this),\r\n OnEntityIconClick: this.SelectSubjectMode.bind(this, reservation),\r\n OnSubjectClick: this.SearchSubject.bind(this, reservation),\r\n AllowedEntities: allowedEntities,\r\n IsNewState: this._isNewState,\r\n RequiredRule: {\r\n Validate: value => !value.NotSpecified,\r\n Message: this._labels.SELECT__RESERVATION_SUBJECT\r\n },\r\n ClassName: 'subject'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"Start\",\r\n Label: this._labels.FROM,\r\n Value: reservation.Start,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isFromVisible,\r\n ClassName: 'from'\r\n }),\r\n new CellEditor({\r\n Name: \"-\",\r\n Label: \"\",\r\n ViewTemplate: DashViewCellTemplate,\r\n Visible: this._isDashVisible,\r\n ClassName: 'dash'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"To\",\r\n Label: this._labels.TO,\r\n Value: reservation.To,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isToVisible,\r\n ClassName: 'to'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"TimeSpent\",\r\n Label: this._labels.TIME,\r\n Value: reservation.TimeSpent,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isDurationVisible,\r\n ClassName: 'duration'\r\n }),\r\n new DescriptionCellEditor({\r\n Name: \"Description\",\r\n Label: this._labels.DESCRIPTION,\r\n Value: reservation.Description,\r\n ViewTemplate: DescriptionViewCellTemplate,\r\n EditTemplate: DescriptionEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n RequiredRule: {\r\n Validate: value => value && value.length > 0,\r\n Message: this._labels.SPECIFY_RESERVATION_DESCRIPTION\r\n },\r\n MinLengthRule: {\r\n Validate: value => value.length >= 3,\r\n Message: this._labels.DESCRIPTION_MIN_LENGTH.replace('{minLengthValidation}', '3')\r\n },\r\n MaxLenghtRule: {\r\n Validate: value => value.length <= 80,\r\n Message: this._labels.DESCRIPTION_MAX_LENGTH.replace('{maxLengthValidation}', '80')\r\n },\r\n ClassName: 'description'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Hour\",\r\n Label: this._labels.HOUR,\r\n Value: reservation.HourKind,\r\n Options: ko.observableArray(hourKindLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: hourKindLookupField.ValTableId,\r\n ValFieldId: hourKindLookupField.ValFieldId,\r\n ValFieldTypeName: hourKindLookupField.ValFieldTypeName,\r\n ValFieldFormatName: hourKindLookupField.ValFieldFormatName,\r\n ValFieldSize: hourKindLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isHourVisible,\r\n ClassName: 'hour'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Ovw\",\r\n Label: this._labels.OVW,\r\n Value: reservation.Ovw,\r\n Options: ko.observableArray(ovwLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: ovwLookupField.ValTableId,\r\n ValFieldId: ovwLookupField.ValFieldId,\r\n ValFieldTypeName: ovwLookupField.ValFieldTypeName,\r\n ValFieldFormatName: ovwLookupField.ValFieldFormatName,\r\n ValFieldSize: ovwLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isOvwVisible,\r\n ClassName: 'ovw'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Pay\",\r\n Label: this._labels.PAY,\r\n Value: reservation.Pay,\r\n Options: ko.observableArray(payLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: payLookupField.ValTableId,\r\n ValFieldId: payLookupField.ValFieldId,\r\n ValFieldTypeName: payLookupField.ValFieldTypeName,\r\n ValFieldFormatName: payLookupField.ValFieldFormatName,\r\n ValFieldSize: payLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isPayVisible,\r\n ClassName: 'pay'\r\n }),\r\n ...customFieldCellEditors,\r\n new ActionsCellEditor({\r\n Name: \"Actions\",\r\n Label: this._labels.ACTIONS,\r\n ViewTemplate: ActionsViewCellTemplate,\r\n EditTemplate: ActionsEditCellTemplate,\r\n Visible: this._isEditable() ? this._isReadState : ko.observable(false),\r\n Accepted: reservation.Accepted,\r\n OnEditReservation: this.OnReservationEdit.bind(this, reservation.Guid),\r\n OnDeleteReservation: this.OnReservationDelete.bind(this, reservation.Guid),\r\n OnAcceptReservation: this.OnReservationAccept.bind(this, reservation.Guid),\r\n OnSaveReservationChanges: this.OnSaveReservationChanges.bind(this),\r\n OnCancelReservationChanges: this.OnCancelReservationChanges.bind(this, reservation.Guid),\r\n TimeStatus: reservation.TimeStatus(),\r\n ClassName: 'actions',\r\n })\r\n );\r\n }\r\n\r\n private GetLastReservationTime(): Date {\r\n const reservations = this._viewModel().RequestedDate.Reservations();\r\n const lastReservation = _.last(reservations);\r\n\r\n if (lastReservation) {\r\n const lastReservationTime = lastReservation.To();\r\n return lastReservationTime;\r\n }\r\n\r\n let startingDateTime = this._viewModel().StartBySchedule;\r\n\r\n //If startingTime by schedule is in future\r\n if (startingDateTime && startingDateTime > new Date()) {\r\n startingDateTime = null;\r\n }\r\n\r\n if (!startingDateTime) {\r\n const defaultStartingValue = this._viewModel().DefaultValues.find(item => item.Name === 'START');\r\n startingDateTime = defaultStartingValue && defaultStartingValue.DefaultValue && moment(FormatConverter.CorrectTimezone(defaultStartingValue.DefaultValue)).toDate();\r\n }\r\n\r\n if (startingDateTime) {\r\n const hours = moment(startingDateTime).hours();\r\n const minutes = moment(startingDateTime).minutes();\r\n const reservationTime = moment().hours(hours).minutes(minutes).seconds(0);\r\n return reservationTime.toDate();\r\n }\r\n\r\n const defaultReservationTime = moment(this._state().Date).hours(8).minutes(0).seconds(0).toDate();\r\n return defaultReservationTime;\r\n }\r\n\r\n private SearchSubject(reservation: Reservation) {\r\n const subject = reservation.Subject();\r\n\r\n const searchScreen = new SearchScreen({\r\n EntityId: subject.EntityId,\r\n SearchTerm: \"\",\r\n ButtonAdd: false,\r\n CloseAfterSelectingRecord: false\r\n });\r\n\r\n searchScreen.On(\"RECORD_SELECTED\", this, eventArgs => this.SelectSubject(eventArgs.data, reservation, searchScreen));\r\n searchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n private SearchSubjectForEntity(entity: AllowedEntity, reservation: Reservation) {\r\n const searchScreen = new SearchScreen({\r\n ConditionToggler: true,\r\n ControlId: this._settings.ControlId,\r\n EntityId: entity.Id,\r\n SearchTerm: \"\",\r\n ButtonAdd: false,\r\n CloseAfterSelectingRecord: false\r\n });\r\n\r\n searchScreen.On(\"RECORD_SELECTED\", this, eventArgs => this.SelectSubjectForEntity(eventArgs.data, entity, reservation, searchScreen));\r\n searchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n private SelectSubject(subjectData: any, reservation: Reservation, searchScreen: SearchScreen) {\r\n const oldSubject = reservation.Subject();\r\n\r\n const newSubject = new Subject({\r\n EntityId: oldSubject.EntityId,\r\n EntityName: oldSubject.EntityName,\r\n SubjectId: subjectData.RecordId,\r\n SubjectName: subjectData.Name,\r\n Icon: oldSubject.Icon\r\n });\r\n\r\n TimeWritingStore.ValidateTimeWritingSubject(subjectData.TableId, newSubject.SubjectId)\r\n .then(validationModel => {\r\n if (validationModel.IsValid) {\r\n reservation.Subject(newSubject);\r\n searchScreen.Close();\r\n } else {\r\n const allowedTypes = validationModel.LowestLevelTypes.map(item => item.Name).join(', ');\r\n new Notifier().Warning(NOTIFICATIONS.ONLY_FOLLOWING_TYPES_ARE_ALLOWED.replace('{LowestLevelTypes}', allowedTypes));\r\n }\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private SelectSubjectForEntity(subjectData: any, entity: AllowedEntity, reservation: Reservation, searchScreen: SearchScreen) {\r\n const newSubject = new Subject({\r\n EntityId: entity.Id,\r\n EntityName: entity.Name,\r\n SubjectId: subjectData.RecordId,\r\n SubjectName: subjectData.Name,\r\n Icon: entity.Icon\r\n });\r\n\r\n TimeWritingStore.ValidateTimeWritingSubject(subjectData.TableId, newSubject.SubjectId)\r\n .then(validationModel => {\r\n if (validationModel.IsValid) {\r\n if (subjectData.Name) {\r\n reservation.Subject(newSubject);\r\n } else {\r\n BlockUI.Block();\r\n\r\n this.GetSelectedSubjectData(entity.Id, subjectData.RecordId)\r\n .always(() => BlockUI.Unblock())\r\n .then((subjectRecord: any) => {\r\n const nameField = subjectRecord.Fields.find(f => f.FieldName === 'NAME');\r\n if (nameField) {\r\n newSubject.SubjectName = nameField.FieldValue;\r\n reservation.Subject(newSubject);\r\n }\r\n });\r\n }\r\n searchScreen.Close();\r\n } else {\r\n const allowedTypes = validationModel.LowestLevelTypes.map(item => item.Name).join(', ');\r\n new Notifier().Warning(NOTIFICATIONS.ONLY_FOLLOWING_TYPES_ARE_ALLOWED.replace('{LowestLevelTypes}', allowedTypes));\r\n }\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private CreateReservation(reservation: SaveReservationRequestModel) {\r\n return TimeWritingStore.CreateReservation(reservation);\r\n }\r\n\r\n private AcceptReservation(reservation: SaveReservationRequestModel) {\r\n return TimeWritingStore.AcceptReservation(reservation);\r\n }\r\n\r\n private UpdateReservation(reservation: SaveReservationRequestModel) {\r\n return TimeWritingStore.UpdateReservation(reservation);\r\n }\r\n\r\n private DeleteReservation(reservation: DeleteReservationRequestModel) {\r\n return TimeWritingStore.DeleteReservation(reservation);\r\n }\r\n\r\n private CommitChanges(rowEditor: RowEditor) {\r\n rowEditor.SaveChanges();\r\n rowEditor.SetState(RowEditorState.Read);\r\n this._viewState(ViewState.Read);\r\n this.ShowNotification(NOTIFICATIONS.CHANGES_APPLIED);\r\n }\r\n\r\n private SaveAndReload(rowEditor: RowEditor) {\r\n this.CommitChanges(rowEditor);\r\n this.Show(this._state().Date);\r\n }\r\n\r\n private AskConfirmation(message: string, onConfirm: () => void, onDecline: () => void) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: message,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: this._labels.YES,\r\n TextDecline: this._labels.CANCEL\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => onConfirm());\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => onDecline());\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n private AskSaveConfirmation(onConfirm: () => void, onDecline: () => void) {\r\n this.AskConfirmation(this._confirmations.SAVE_CHANGES, onConfirm, onDecline);\r\n }\r\n\r\n private AskDeleteConfirmation(onConfirm: () => void) {\r\n this.AskConfirmation(this._confirmations.ARE_YOUR_SURE_TO_DELETE_RECORDS, onConfirm, () => {\r\n });\r\n }\r\n\r\n private GetActiveRow() {\r\n return _.find(this._rowEditors(), (rowEditor: RowEditor) => rowEditor.IsNewState || rowEditor.IsEditState);\r\n }\r\n\r\n private SaveReservation(): P.Promise<RowEditor> {\r\n\r\n const result = P.defer<RowEditor>();\r\n\r\n const rowEditor = this.GetActiveRow();\r\n\r\n if (!rowEditor) {\r\n this._viewState(ViewState.Read);\r\n result.reject({message: NOTIFICATIONS.ROW_EDITOR_NOT_FOUND});\r\n return result.promise();\r\n }\r\n\r\n if (!rowEditor.Validate()) {\r\n result.reject({message: NOTIFICATIONS.FILL_REQUIRED_DATA});\r\n return result.promise();\r\n }\r\n\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === rowEditor.Guid);\r\n if (this._state().Date) {\r\n reservation.ChangeDate(this._state().Date);\r\n }\r\n\r\n const endTime = reservation.Start().getHours() +\r\n reservation.Start().getMinutes() / 60 +\r\n reservation.TimeSpent().getHours() +\r\n reservation.TimeSpent().getMinutes() / 60;\r\n\r\n if (endTime > 24) {\r\n result.reject({message: NOTIFICATIONS.DURATION_IS_TOO_LONG});\r\n return result.promise();\r\n }\r\n\r\n const updateModel = DayMappingProfile.OnSaveModel(reservation);\r\n\r\n updateModel.TimeTableId = this._settings.EntityId;\r\n updateModel.UserId = this._viewModel().SelectedUser.Id;\r\n\r\n const isNewReservation = rowEditor.IsNewState;\r\n\r\n if (isNewReservation) {\r\n this.CreateReservation(updateModel)\r\n .then(() => result.resolve(rowEditor))\r\n .fail(error => result.reject({message: error.message}));\r\n } else {\r\n this.UpdateReservation(updateModel)\r\n .then(() => result.resolve(rowEditor))\r\n .fail(error => result.reject({message: error.message}));\r\n }\r\n\r\n return result.promise();\r\n }\r\n\r\n private GetSelectedSubjectData(entityId: number, recordId: number) {\r\n return RecordStore.GetRecord({TableId: entityId, RecordId: recordId})\r\n .fail((error) => {\r\n if (error.requestError === SERVER_REQUEST_ERRORS.NOT_FOUND) {\r\n new Notifier().Warning(LABELS.NO_ACCESS_LABEL);\r\n } else if (error.requestError === SERVER_REQUEST_ERRORS.INTERNAL) {\r\n new Notifier().Failed('Error getting record');\r\n }\r\n });\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: _cell --> <div class=\\\"timewriting-table-column__actions-buttons\\\"> <!-- ko if: Accepted --> <!-- ko if: TimeStatus == $parent._timeStatus.Approved --> <a href=\\\"javascript:void(0)\\\" class=\\\"btn btn btn-success\\\"> <i class=\\\"fa fa-lock\\\"></i> </a> <!-- /ko --> <!-- ko if: TimeStatus === $parent._timeStatus.Disapproved || TimeStatus === $parent._timeStatus.Booked --> <a href=\\\"#\\\" class=\\\"btn btn-info\\\" data-bind=\\\"visible: Visible, click: OnEditReservation, tooltip:{content: $parent._labels.EDIT}\\\"> <i class=\\\"fa fa-edit\\\"></i> </a> <a href=\\\"#\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"visible: Visible, click: OnDeleteReservation, tooltip:{content: $parent._labels.DELETE}\\\"> <i class=\\\"fa fa-trash\\\"></i> </a> <!-- /ko --> <!-- ko if: TimeStatus === $parent._timeStatus.Disapproved --> <div class=\\\"timewriting-table-column__disapproved-icon\\\"> <i class=\\\"fa fa-clock-o icon-red icon-big\\\" aria-hidden=\\\"true\\\" data-bind=\\\"attr:{ title: $parent._labels.RECOLRD_IS_DISAP}\\\"></i> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: Accepted === false --> <a href=\\\"#\\\" class=\\\"btn btn-warning accept\\\" data-bind=\\\"click: OnAcceptReservation\\\"> <!-- ko text: $parent._labels.ACCEPT --><!-- /ko --> </a> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _cell --> <div class=\\\"timewriting-table-column__actions-buttons\\\"> <a href=\\\"#\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: OnSaveReservationChanges, tooltip:{content: $parent._labels.SAVE}\\\"> <i class=\\\"fa fa-save\\\"></i> </a> <a href=\\\"#\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: OnCancelReservationChanges, tooltip:{content: $parent._labels.CANCEL}\\\"> <i class=\\\"fa fa-close\\\"></i> </a> <!-- ko if: TimeStatus === $parent._timeStatus.Disapproved --> <div class=\\\"timewriting-table-column__disapproved-icon\\\"> <i class=\\\"fa fa-clock-o icon-red icon-big\\\" aria-hidden=\\\"true\\\" data-bind=\\\"attr: { title: $parent._labels.RECOLRD_IS_DISAP}\\\"></i> </div> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport {AllowedEntity, DayOfWeekStatistics, LookupField, Reservation, TranslatedField} from './DayDataViewModel';\r\nimport {UsersViewModel} from './UsersViewModel';\r\nimport {DATE_FORMATS} from '../../../../../Constants/DateTimeFormats';\r\n\r\nexport class WeekDataViewModel {\r\n Week: number;\r\n Days: DayOfWeekViewModel[];\r\n DaysOfWeek: DayOfWeekStatistics[];\r\n Users: UsersViewModel;\r\n AllowedEntities: AllowedEntity[];\r\n LookupFields: LookupField[];\r\n TranslatedFields: TranslatedField[];\r\n\r\n constructor() {\r\n this.Days = [];\r\n this.DaysOfWeek = [];\r\n this.Users = null;\r\n this.AllowedEntities = [];\r\n this.TranslatedFields = [];\r\n }\r\n\r\n get WeekNumber() {\r\n return `${this.Week}`;\r\n }\r\n\r\n get WeekDescription() {\r\n const formattedDate = moment(this.DaysOfWeek[0].Date).format(DATE_FORMATS.LONG_DATE_SHORT_WEEK.MomentFormat);\r\n return `${formattedDate}`;\r\n }\r\n\r\n get Booked() {\r\n const newSum = (sum: number, booked: any) => Math.round((sum + booked) * 100) / 100;\r\n this.IsWeekend();\r\n return this.DaysOfWeek.reduce((sum: number, current: DayOfWeekStatistics) => newSum(sum, current.Booked), 0);\r\n }\r\n\r\n get SelectedUser() {\r\n return this.Users.SelectedUser();\r\n }\r\n\r\n get Reservations() {\r\n return _.chain(this.Days).map(day => day.Reservations).flatten().value();\r\n }\r\n\r\n IsActive(day: DayOfWeekStatistics) {\r\n return day.Date.getDate() === new Date().getDate();\r\n }\r\n\r\n IsNormBooked(day: DayOfWeekStatistics) {\r\n return day.Booked >= 8;\r\n }\r\n\r\n IsWeekend() {\r\n _.each(this.DaysOfWeek,\r\n day => {\r\n if (moment(day.Date).isoWeekday() === 6 || moment(day.Date).isoWeekday() === 7) {\r\n day.Weekend = true;\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport class DayOfWeekViewModel {\r\n Day: string;\r\n Reservations: Reservation[];\r\n\r\n constructor() {\r\n this.Reservations = [];\r\n }\r\n}","import * as moment from 'moment';\r\n\r\nimport {TimeWritingReportResponseModel} from '../../Models/Store/Day/Response/TimeWritingReportResponseModel';\r\nimport {DayOfWeekViewModel, WeekDataViewModel} from '../../Models/View/WeekDataViewModel';\r\nimport {DayReportResponseModel} from '../../Models/Store/Day/Response/DayReportResponseModel';\r\nimport {ReservationMappings} from '../Day/ReservationMappings';\r\nimport {EntityMappings} from '../Day/EntityMappings';\r\nimport {FIELD_TYPES} from '../../../../../Constant';\r\nimport {LookupFieldMappings} from '../Common/LookupFieldMappings';\r\nimport {TranslationManager} from '../../../../Translation/TranslationManager';\r\nimport {TranslatedField} from '../../Models/View/DayDataViewModel';\r\nimport {DayMappings} from '../Day/DayMappings';\r\n\r\nexport class WeekMappingProfile {\r\n static OnViewModel(model: TimeWritingReportResponseModel): WeekDataViewModel {\r\n const viewModel = new WeekDataViewModel();\r\n\r\n viewModel.Days = model.DayReports.map(day => DayOfWeekMappingProfile.OnViewModel(day));\r\n viewModel.DaysOfWeek = model.WeekReports[0].DayReports.map(day => DayMappings.OnViewModel(day));\r\n\r\n viewModel.AllowedEntities = model.DayReports[0].GlobalSettings.AllowedEntities.map(entity => EntityMappings.OnViewModel(entity));\r\n viewModel.LookupFields = model.DayReports[0].Fields\r\n .filter(field => field.TypeName === FIELD_TYPES.Lookup || field.TypeName === FIELD_TYPES.MultiSelect)\r\n .map(field => LookupFieldMappings.OnViewModel(field));\r\n viewModel.TranslatedFields = model.DayReports[0].Fields\r\n .filter(field => field.IsTranslate)\r\n .map(field => new TranslatedField({\r\n Id: field.Id,\r\n }));\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class DayOfWeekMappingProfile {\r\n static OnViewModel(model: DayReportResponseModel): DayOfWeekViewModel {\r\n const viewModel = new DayOfWeekViewModel();\r\n\r\n viewModel.Day = moment(model.DayDate).locale(TranslationManager.Instance.GetCurrentLanguage().ShortName).format('ddd');\r\n viewModel.Reservations = model.DayReservations.Reservations.map(reservation => ReservationMappings.OnViewModel(reservation));\r\n\r\n return viewModel;\r\n }\r\n}","//Libs\r\nimport * as ko from \"knockout\";\r\nimport * as moment from \"moment\";\r\nimport * as _ from \"underscore\";\r\n\r\n//Constants\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\n\r\n//Templates\r\nimport WeekTemplate from \"Core/Components/Controls/TimeWriting/Templates/WeekTemplate.html\";\r\n\r\n//Views\r\nimport {TimeWritingView} from \"Core/Components/Controls/TimeWriting/Views/TimeWritingView\";\r\n\r\n//Settings\r\nimport {IWeekViewSettings} from \"Core/Components/Controls/TimeWriting/Views/Week/IWeekViewSettings\";\r\n\r\n//TextColumn\r\nimport TextViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/View.html\";\r\nimport TextEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/Edit.html\";\r\n\r\nimport DescriptionViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/View.html\";\r\nimport DescriptionEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/Edit.html\";\r\n\r\n//Integer\r\nimport IntegerViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/View.html\";\r\nimport IntegerEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/Edit.html\";\r\n\r\n//Decimal\r\nimport DecimalViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/View.html\";\r\nimport DecimalEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/Edit.html\";\r\n\r\n//Subject\r\nimport SubjectViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/View.html\";\r\n//Dropdown\r\nimport DropdownViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/View.html\";\r\nimport DropdownEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/Edit.html\";\r\n\r\n//Multiselect\r\nimport MultiselectViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Multiselect/View.html\";\r\nimport MultiselectEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Multiselect/Edit.html\";\r\n\r\n//DateTime\r\nimport DateTimeViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/View.html\";\r\nimport DateTimeEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/Edit.html\";\r\n\r\n//Time\r\nimport TimeViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/View.html\";\r\nimport TimeEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/Edit.html\";\r\n\r\n//YesNo\r\nimport YesNoViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/View.html\";\r\nimport YesNoEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/Edit.html\";\r\n\r\n//Dash\r\nimport DashViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Dash/View.html\";\r\n\r\n//Stores\r\nimport {TimeWritingStore} from \"Core/Components/Controls/TimeWriting/Stores/TimeWritingStore\";\r\n\r\n//Common\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\n//User\r\nimport {UserManager} from \"User/UserManager\";\r\n\r\n//Store models\r\nimport {TimeWritingReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/TimeWritingReportResponseModel\";\r\n\r\n//ViewModels\r\nimport {\r\n AllowedEntity,\r\n DayDataViewModel, DefaultValue,\r\n LookupField,\r\n OptionalFieldData,\r\n Reservation,\r\n} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\nimport {UsersViewModel, UserViewModel} from \"Core/Components/Controls/TimeWriting/Models/View/UsersViewModel\";\r\n\r\n//Mappings\r\nimport {DayMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Day/DayMappingProfile\";\r\nimport {UsersMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Day/UsersMappingProfile\";\r\n\r\n//State\r\nimport {State} from \"Core/Components/Controls/TimeWriting/Views/Day/State\";\r\nimport {ViewState} from \"Core/Components/Controls/TimeWriting/Views/Day/ViewState\";\r\n\r\n//Utils\r\nimport {\r\n CellEditor, DateCellEditor,\r\n DateTimeCellEditor,\r\n DecimalCellEditor,\r\n DescriptionCellEditor,\r\n DropdownCellEditor,\r\n IntegerCellEditor,\r\n MultiSelectCellEditor,\r\n SubjectCellEditor, TextCellEditor, TimeCellEditor,\r\n ValidationCellEditor, ValueCellEditor, WeekRowEditor\r\n} from \"Core/Components/Controls/TimeWriting/Utils/RowEditor\";\r\n\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {UsersResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {WeekMappingProfile} from '../../Mappings/Week/WeekMappingProfile';\r\nimport {WeekDataViewModel} from '../../Models/View/WeekDataViewModel';\r\nimport {DateTime} from '../../Utils/DateTime';\r\nimport {DATE_FORMATS} from '../../../../../Constants/DateTimeFormats';\r\n\r\nexport class WeekView extends TimeWritingView {\r\n private _state: KnockoutObservable<State>;\r\n private _currentDate: Date;\r\n private _isPastWeek: KnockoutComputed<boolean>;\r\n private _viewModel: KnockoutObservable<WeekDataViewModel>;\r\n\r\n private _viewState: KnockoutObservable<ViewState>;\r\n private _isReadState: KnockoutComputed<boolean>;\r\n private _isEditState: KnockoutComputed<boolean>;\r\n private _isNewState: KnockoutComputed<boolean>;\r\n private _isFutureDay: KnockoutObservable<boolean>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _rowEditors: KnockoutObservableArray<WeekRowEditor>;\r\n private _compareCurrentDate: Date;\r\n\r\n private _isFromVisible: KnockoutObservable<boolean>;\r\n private _isDashVisible: KnockoutObservable<boolean>;\r\n private _isToVisible: KnockoutObservable<boolean>;\r\n private _isDurationVisible: KnockoutObservable<boolean>;\r\n private _isHourVisible: KnockoutObservable<boolean>;\r\n private _isOvwVisible: KnockoutObservable<boolean>;\r\n private _isPayVisible: KnockoutObservable<boolean>;\r\n\r\n private _initialDateSet = true;\r\n\r\n private _countOfVisibleColumns: number;\r\n\r\n private _groupedRows: KnockoutObservable<any>;\r\n\r\n private _labels = LABELS;\r\n\r\n constructor(private _settings: IWeekViewSettings) {\r\n super();\r\n this._state = ko.observable(new State({Date: new Date()}));\r\n this._currentDate = new Date();\r\n this._isPastWeek = ko.computed(() => DateTime.GetWeekYear(this._state().Date) < DateTime.GetWeekYear(this._currentDate) || DateTime.GetWeekNumber(this._state().Date) < DateTime.GetWeekNumber(this._currentDate), this);\r\n this._viewModel = ko.observable(null);\r\n\r\n this._isFutureDay = ko.observable(false);\r\n this._isEditable = ko.observable(false);\r\n this._viewState = ko.observable(ViewState.Read);\r\n this._rowEditors = ko.observableArray([]);\r\n this._compareCurrentDate = this._currentDate;\r\n this._compareCurrentDate.setHours(0, 0, 0, 0);\r\n this._groupedRows = ko.observable(null);\r\n this._isReadState = ko.computed(() => this._viewState() === ViewState.Read, this);\r\n this._isEditState = ko.computed(() => this._viewState() === ViewState.Edit, this);\r\n this._isNewState = ko.computed(() => this._viewState() === ViewState.New, this);\r\n\r\n const visibleFields = this._settings.Properties.Groups.find(group => group.Name === \"VisibleFields\").Properties;\r\n const dashVisibility = visibleFields.find(field => field.Name === \"START\").Value && visibleFields.find(field => field.Name === \"TO\").Value;\r\n\r\n this._countOfVisibleColumns = visibleFields.filter(f => f.Value === true).length + dashVisibility + this._settings.CustomFields.length;\r\n\r\n this._isFromVisible = ko.observable(visibleFields.find(field => field.Name === \"START\").Value);\r\n this._isDashVisible = ko.observable(dashVisibility);\r\n this._isToVisible = ko.observable(visibleFields.find(field => field.Name === \"TO\").Value);\r\n this._isDurationVisible = ko.observable(visibleFields.find(field => field.Name === \"TIMESPENT\").Value);\r\n this._isHourVisible = ko.observable(visibleFields.find(field => field.Name === \"F_HOURKIND\").Value);\r\n this._isOvwVisible = ko.observable(visibleFields.find(field => field.Name === \"F_OVERWORKINDICATOR\").Value);\r\n this._isPayVisible = ko.observable(visibleFields.find(field => field.Name === \"F_PAYMENTINDICATOR\").Value);\r\n }\r\n\r\n Show({startDate, endDate}: { startDate: Date, endDate: Date }, userId?: number) {\r\n this._initialDateSet = true;\r\n this._compareCurrentDate.setHours(0, 0, 0, 0);\r\n this._state(new State({\r\n Date: startDate\r\n }));\r\n\r\n BlockUI.Block();\r\n\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n\r\n if (usersList && userId) {\r\n const selectedUser = usersList.Users().find(user => user.Id === userId);\r\n if (selectedUser) {\r\n usersList.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n if (usersList) {\r\n this.LoadData(startDate, endDate, usersList.SelectedUser().Id)\r\n .then(model => this.RenderData(model, usersList))\r\n .fail(error => {\r\n this.ShowError(error.message);\r\n BlockUI.Unblock();\r\n });\r\n } else {\r\n const loadDataPromise = this.LoadData(startDate, endDate, userId || UserManager.Instance.CurrentUser.Id);\r\n const loadUsersPromise = this.LoadUsers();\r\n\r\n loadDataPromise.fail(error => this.ShowError(error.message));\r\n loadUsersPromise.fail(error => this.ShowError(error.message));\r\n\r\n P.when(loadDataPromise, loadUsersPromise)\r\n .then(result => this.RenderData(result[0], result[1], userId || UserManager.Instance.CurrentUser.Id))\r\n .fail(() => BlockUI.Unblock());\r\n }\r\n }\r\n\r\n OnPrevWeekClick() {\r\n const startDate = DateTime.GetPrevWeekStartDate(this._state().Date);\r\n const endDate = moment(startDate).add(7, 'days').toDate()\r\n this.Show({startDate, endDate});\r\n }\r\n\r\n OnNextWeekClick() {\r\n const startDate = DateTime.GetNextWeekStartDate(this._state().Date);\r\n const endDate = moment(startDate).add(7, 'days').toDate()\r\n this.Show({startDate, endDate});\r\n }\r\n\r\n OnYearClick() {\r\n this.Trigger(\"YearClicked\", {State: this._state(), UserId: this._viewModel().SelectedUser.Id});\r\n }\r\n\r\n OnWeekClick() {\r\n const startDate = DateTime.GetWeekStart(this._state().Date);\r\n const endDate = moment(startDate).add(7, 'days').toDate()\r\n this.Show({startDate, endDate});\r\n }\r\n\r\n OnDayClick(date: Date) {\r\n this.Trigger(\"DayClicked\", {Date: date, UserId: this._viewModel().SelectedUser.Id});\r\n }\r\n\r\n SelectDate(date: Date) {\r\n if (!this._initialDateSet) {\r\n this.Trigger(\"DayClicked\", {Date: date, UserId: this._viewModel().SelectedUser.Id});\r\n } else {\r\n this._initialDateSet = false;\r\n }\r\n return true;\r\n }\r\n\r\n UserSelected(user: UserViewModel) {\r\n const startDate = DateTime.GetWeekStart(this._state().Date);\r\n const endDate = moment(startDate).add(7, 'days').toDate()\r\n this.Show({startDate, endDate});\r\n }\r\n\r\n private RenderData(model: TimeWritingReportResponseModel, users: UsersViewModel, selectedUserId?: number) {\r\n const viewModel = WeekMappingProfile.OnViewModel(model);\r\n\r\n viewModel.Users = users;\r\n viewModel.Week = this._state().Week;\r\n\r\n if (selectedUserId) {\r\n const selectedUser = viewModel.Users.Users().find(user => user.Id === selectedUserId);\r\n if (selectedUser) {\r\n viewModel.Users.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n for (const reservation of viewModel.Reservations) {\r\n if (!_.any(reservation.OptionalData)) {\r\n this._settings.CustomFields.forEach(field => reservation.OptionalData.push(new OptionalFieldData({\r\n FieldName: field.Name,\r\n FieldValue: ko.observable(null),\r\n FieldType: field.FieldTypeName,\r\n Translations: ko.observableArray([])\r\n })));\r\n }\r\n }\r\n this._isEditable(model.DayReports[0].Editable);\r\n this._viewState(ViewState.Read);\r\n this._rowEditors([]);\r\n this.InitRowEditors(viewModel);\r\n this._groupedRows(_.values(_.groupBy(this._rowEditors(), (rowEditor) => rowEditor.Day)));\r\n this._initialDateSet = true;\r\n this._viewModel(viewModel);\r\n\r\n if (model.DayReports[0].GlobalSettings.FreezeTime === undefined) {\r\n new Notifier().Warning(NOTIFICATIONS.FREEZE_TIME_NOT_SPECIFIED);\r\n }\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n private InitRowEditors(viewModel: WeekDataViewModel) {\r\n for (let dayDescriptor of viewModel.Days) {\r\n dayDescriptor.Reservations\r\n .filter(res => res.Accepted)\r\n .forEach(reservation => this.AddRowEditor(reservation, dayDescriptor.Day, viewModel.LookupFields, viewModel.AllowedEntities, viewModel));\r\n }\r\n }\r\n\r\n private AddRowEditor(reservation: Reservation, day: string, lookupFields: LookupField[], allowedEntities: AllowedEntity[], viewModel: WeekDataViewModel) {\r\n const rowEditor = this.GenerateRowEditor(reservation, day, lookupFields, allowedEntities, viewModel);\r\n this._rowEditors.push(rowEditor);\r\n }\r\n\r\n private GenerateRowEditor(reservation: Reservation, day: string, lookupFields: LookupField[], allowedEntities: AllowedEntity[], viewModel: WeekDataViewModel) {\r\n const customFieldCellEditors = this._settings.CustomFields.map(field => this.GenerateOptionalCellEditor(field, reservation, lookupFields, viewModel));\r\n const hourKindLookupField = _.find(lookupFields, f => f.Name === \"F_HOURKIND\");\r\n const ovwLookupField = _.find(lookupFields, f => f.Name === \"F_OVERWORKINDICATOR\");\r\n const payLookupField = _.find(lookupFields, f => f.Name === \"F_PAYMENTINDICATOR\");\r\n\r\n return new WeekRowEditor(reservation.Guid,\r\n day,\r\n lookupFields,\r\n new SubjectCellEditor({\r\n Name: \"Subject\",\r\n Label: this._labels.SUBJECT,\r\n Value: reservation.Subject,\r\n ViewTemplate: SubjectViewCellTemplate,\r\n EditTemplate: null,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n OnEntityClick: null,\r\n OnEntityIconClick: null,\r\n OnSubjectClick: null,\r\n AllowedEntities: allowedEntities,\r\n IsNewState: this._isNewState,\r\n RequiredRule: {\r\n Validate: value => !value.NotSpecified,\r\n Message: this._labels.SELECT__RESERVATION_SUBJECT\r\n },\r\n ClassName: 'subject'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"Start\",\r\n Label: this._labels.FROM,\r\n Value: reservation.Start,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isFromVisible,\r\n ClassName: 'from'\r\n }),\r\n new CellEditor({\r\n Name: \"-\",\r\n Label: \"\",\r\n ViewTemplate: DashViewCellTemplate,\r\n Visible: this._isDashVisible,\r\n ClassName: 'dash'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"To\",\r\n Label: this._labels.TO,\r\n Value: reservation.To,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isToVisible,\r\n ClassName: 'to'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"TimeSpent\",\r\n Label: this._labels.TIME,\r\n Value: reservation.TimeSpent,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isDurationVisible,\r\n ClassName: 'duration'\r\n }),\r\n new DescriptionCellEditor({\r\n Name: \"Description\",\r\n Label: this._labels.DESCRIPTION,\r\n Value: reservation.Description,\r\n ViewTemplate: DescriptionViewCellTemplate,\r\n EditTemplate: DescriptionEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n RequiredRule: {\r\n Validate: value => value && value.length > 0,\r\n Message: this._labels.SPECIFY_RESERVATION_DESCRIPTION\r\n },\r\n MinLengthRule: {\r\n Validate: value => value.length >= 3,\r\n Message: this._labels.DESCRIPTION_MIN_LENGTH.replace('{minLengthValidation}', '3')\r\n },\r\n MaxLenghtRule: {\r\n Validate: value => value.length <= 80,\r\n Message: this._labels.DESCRIPTION_MAX_LENGTH.replace('{maxLengthValidation}', '80')\r\n },\r\n ClassName: 'description'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Hour\",\r\n Label: this._labels.HOUR,\r\n Value: reservation.HourKind,\r\n Options: ko.observableArray(hourKindLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: hourKindLookupField.ValTableId,\r\n ValFieldId: hourKindLookupField.ValFieldId,\r\n ValFieldTypeName: hourKindLookupField.ValFieldTypeName,\r\n ValFieldFormatName: hourKindLookupField.ValFieldFormatName,\r\n ValFieldSize: hourKindLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isHourVisible,\r\n ClassName: 'hour'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Ovw\",\r\n Label: this._labels.OVW,\r\n Value: reservation.Ovw,\r\n Options: ko.observableArray(ovwLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: ovwLookupField.ValTableId,\r\n ValFieldId: ovwLookupField.ValFieldId,\r\n ValFieldTypeName: ovwLookupField.ValFieldTypeName,\r\n ValFieldFormatName: ovwLookupField.ValFieldFormatName,\r\n ValFieldSize: ovwLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isOvwVisible,\r\n ClassName: 'ovw'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Pay\",\r\n Label: this._labels.PAY,\r\n Value: reservation.Pay,\r\n Options: ko.observableArray(payLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: payLookupField.ValTableId,\r\n ValFieldId: payLookupField.ValFieldId,\r\n ValFieldTypeName: payLookupField.ValFieldTypeName,\r\n ValFieldFormatName: payLookupField.ValFieldFormatName,\r\n ValFieldSize: payLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isPayVisible,\r\n ClassName: 'pay'\r\n }),\r\n ...customFieldCellEditors,\r\n );\r\n }\r\n\r\n private GenerateOptionalCellEditor(field: AttachedFieldModel, reservation: Reservation, lookupFields: LookupField[], viewModel: WeekDataViewModel): CellEditor {\r\n if (field.FieldTypeName === FIELD_TYPES.Lookup) {\r\n const dropdownField = _.find(lookupFields, f => f.Name === field.Name);\r\n\r\n return new DropdownCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n Options: ko.observableArray(dropdownField.Values),\r\n RequiresSearch: dropdownField.RequiresSearch,\r\n ValTableId: field.ValTableId,\r\n ValFieldId: field.ValFieldId,\r\n ValFieldTypeName: field.ValFieldTypeName,\r\n ValFieldFormatName: field.ValFieldFormatName,\r\n ValFieldSize: field.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'ovw',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value && value.FieldValue\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.MultiSelect) {\r\n const multiSelectField = _.find(lookupFields, f => f.Name === field.Name);\r\n\r\n return new MultiSelectCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n Options: ko.observableArray(multiSelectField.Values),\r\n RequiresSearch: multiSelectField.RequiresSearch,\r\n ValTableId: field.ValTableId,\r\n ValFieldId: field.ValFieldId,\r\n ValFieldTypeName: field.ValFieldTypeName,\r\n ValFieldFormatName: field.ValFieldFormatName,\r\n ValFieldSize: field.ValFieldSize,\r\n ViewTemplate: MultiselectViewCellTemplate,\r\n EditTemplate: MultiselectEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'ovw',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value && value.FieldValue\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Integer) {\r\n return new IntegerCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: IntegerViewCellTemplate,\r\n EditTemplate: IntegerEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: null,\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Decimal) {\r\n return new DecimalCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DecimalViewCellTemplate,\r\n EditTemplate: DecimalEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: null,\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n Size: field.Size,\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.DateTime) {\r\n return new DateTimeCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DateTimeViewCellTemplate,\r\n EditTemplate: DateTimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Date) {\r\n return new DateCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DateTimeViewCellTemplate,\r\n EditTemplate: DateTimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Time) {\r\n return new TimeCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.TimeSpan) {\r\n return new ValidationCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.YesNo) {\r\n return new ValueCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: YesNoViewCellTemplate,\r\n EditTemplate: YesNoEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'description'\r\n });\r\n }\r\n\r\n return new TextCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TextViewCellTemplate,\r\n EditTemplate: TextEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'description',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && !!value\r\n },\r\n Size: field.Size,\r\n Translations: reservation.GetTranslations(field.Name),\r\n IsTranslate: _.some(viewModel.TranslatedFields, item => item.Id === field.Id)\r\n });\r\n }\r\n\r\n private LoadData(startDate: Date, endDate: Date, userId: number): P.Promise<TimeWritingReportResponseModel> {\r\n return TimeWritingStore.GetDays({\r\n ControlId: this._settings.ControlId,\r\n TimeTableId: this._settings.EntityId,\r\n SubjectEntityId: this._settings.SubjectEntityId,\r\n SubjectRecordId: this._settings.SubjectRecordId,\r\n StartDate: moment(startDate).set({hours: 0, minutes: 0, seconds: 0}).utcOffset(0, true).format(),\r\n EndDate: moment(endDate).set({hours: 0, minutes: 0, seconds: 0}).utcOffset(0, true).format(),\r\n UserId: userId,\r\n }).always(() => BlockUI.Unblock());\r\n }\r\n\r\n private LoadUsers() {\r\n return TimeWritingStore.GetUsers(this._settings.EntityId)\r\n .then(users => users.Users.length === 0\r\n ? UsersResponseModel.CreateDefault()\r\n : UsersMappingProfile.OnViewModel(users)\r\n )\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private GetCustomFieldNames() {\r\n return this._settings.CustomFields.map(field => {\r\n return {Name: field.FieldNameTranslation, Type: field.FieldTypeName}\r\n });\r\n }\r\n\r\n GetTemplate() {\r\n return WeekTemplate;\r\n }\r\n\r\n private ShowError(message: string) {\r\n new Notifier().Failed(message);\r\n }\r\n\r\n private GetLocale() {\r\n return moment.locale();\r\n }\r\n\r\n GetShortDateFormat() {\r\n return DATE_FORMATS.SHORT_DATE['Format'];\r\n }\r\n}\r\n","// Module\nvar code = \"<div class=\\\"portlet box time-writing-control time-writing-control__week-view\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"time-writing-caption clearfix\\\"> <div class=\\\"container-fluid time-writing-header\\\"> <div class=\\\"row weekly-container\\\"> <div class=\\\"weekly-subcontainer weekly-subcontainer-left days-container\\\"> <!--Todo: create translations--> <!-- ko with: _viewModel --> <!-- ko foreach: DaysOfWeek --> <div class=\\\"day-column selected-day\\\"> <span class=\\\"navigation-link\\\" data-bind=\\\"click: $parents[1].OnDayClick.bind($parents[1], $data.Date),\\r\\n\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t text: DayDescription,\\r\\n\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t css: {'booked-norm-date': $parent.IsNormBooked($data)}\\\"> </span> <!--ko if: $parents[1].TimeCloseDateVisiblePerDay || $parents[1].TimeCloseDateVisiblePerDayAndWeek--> <div class=\\\"custom\\\" data-bind=\\\"event: {\\r\\n mouseover: $parents[1].HoverOnDayClose.call($parents[1], event, $data.Date),\\r\\n mouseout: $parents[1].HoverOutDayClose.call($parents[1], event)\\r\\n },\\r\\n click: $parents[1].OnCloseDayClicked.bind($parents[1], event, $data.Date)\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.ClosedDate, attr: {'id': DayDescription, 'disabled': $data.ClosedDate || $parents[1].IsFutureDate($data.Date)}\\\"/> <label data-bind=\\\"attr: {'for': DayDescription}, css: {'hovered': $data.Hovered }\\\"></label> </div> <!-- /ko --> </div> <!-- /ko --> <div class=\\\"week-hours selected-day\\\"> <div class=\\\"navigation-link selected\\\" data-bind=\\\"click: $parent.OnWeekClick.bind($parent)\\\"> <span data-bind=\\\"text: Booked\\\"></span> <span> <!--ko text: $parent._labels.WEEK --><!-- /ko--> </span> </div> <!--ko if: $parent.TimeCloseDateVisiblePerWeek || $parent.TimeCloseDateVisiblePerDayAndWeek--> <div class=\\\"custom\\\" data-bind=\\\"event: {\\r\\n mouseover: $parent.HoverOnWeekClose.call($parent, event),\\r\\n mouseout: $parent.HoverOutWeekClose.call($parent, event)\\r\\n },\\r\\n click: $parent.OnCloseWeekClicked.bind($parent, event)\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.ClosedWeek, attr: {id: WeekId, disabled: $data.ClosedWeek || $parent._isDisableWeekBtn()}\\\"/> <label data-bind=\\\"attr: {for: WeekId}\\\"></label> </div> <!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"weekly-subcontainer weekly-subcontainer-center week-container\\\"> <i class=\\\"glyphicon glyphicon-arrow-left prev-page\\\" data-bind=\\\"click: OnPrevWeekClick\\\"></i> <!-- ko with: _viewModel --> <div class=\\\"header-button\\\" style=\\\"position:relative;display:inline-block\\\"> <!-- ko with: $parent._state --> <input data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdatetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: Date,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tonUpdate: $parents[1].SelectDate.bind($parents[1]),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tlocale: $parents[1].GetLocale(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tformat: $parents[1].GetShortDateFormat(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmaxDate: 'now'\\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}\\\" type=\\\"text\\\" class=\\\"datepickerinput\\\"> <!-- /ko --> <!--ko text: $parent._labels.WEEK --><!-- /ko--> <!-- ko text: WeekNumber --> <!-- /ko --> (<span> <!-- ko text: WeekDescription --> <!-- /ko --> </span>) </div> <!-- /ko --> <!-- ko if: _isPastWeek --> <i class=\\\"glyphicon glyphicon-arrow-right prev-page\\\" data-bind=\\\"click: OnNextWeekClick\\\"></i> <!-- /ko --> <!-- ko ifnot: _isPastWeek --> <i class=\\\"glyphicon glyphicon-arrow-right next-page disable\\\"></i> <!-- /ko --> </div> <div class=\\\"weekly-subcontainer weekly-subcontainer-right\\\"> <!--ko with: _viewModel--> <select class=\\\"form-control\\\" data-bind=\\\"options: Users.Users, optionsText: 'Name', value: Users.SelectedUser, event: {change: $parent.UserSelected.bind($parent, Users.SelectedUser())}\\\"></select> <!--/ko--> </div> <div class=\\\"weekly-subcontainer yearwiew-container weekly-subcontainer-right\\\"> <span class=\\\"navigation-link yearwiew-link\\\" data-bind=\\\"click: OnYearClick\\\"> <span class=\\\"icon-magnifier\\\"></span> <!--ko text: _labels.YEARVIEW --><!-- /ko--> </span> </div> </div> </div> </div> </div> <div class=\\\"portlet-body\\\"> <!-- ko if: _isFutureDay() --> <div class=\\\"splash-message\\\" data-bind=\\\"text: _labels.WRITING_TIME_FOR_FUTURE_NOT_ALLOWED\\\"> </div> <!-- /ko --> <!-- ko ifnot: _isFutureDay() --> <div class=\\\"timewriting-day-table clearfix\\\"> <div class=\\\"timewriting-day-table__content\\\"> <table> <thead class=\\\"timewriting-table-header timewriting-table-rows clearfix\\\"> <th></th> <th></th> <th class=\\\"timewriting-table-column__name\\\"><!--ko text: _labels.SUBJECT --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isFromVisible\\\"> <!--ko text: _labels.FROM --><!-- /ko--></th> <th data-bind=\\\"visible: _isDashVisible\\\"></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isToVisible\\\"> <!--ko text: _labels.TO --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isDurationVisible\\\"> <!--ko text: _labels.DURATION --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isHourVisible\\\"> <!--ko text: _labels.HOUR --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isOvwVisible\\\"> <!--ko text: _labels.OVW --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isPayVisible\\\"> <!--ko text: _labels.PAY --><!-- /ko--></th> <!--ko foreach: GetCustomFieldNames()--> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"css: $data.Type\\\"><!--ko text: $data.Name --> <!-- /ko--></th> <!--/ko--> <th class=\\\"timewriting-table-column__full-width\\\"></th> </thead> <!-- ko foreach: _groupedRows --> <tbody> <tr> <td data-bind=\\\"attr: { rowspan: $data.length * 2 + 1 }\\\" class=\\\"timewriting-table-column__dayName\\\"> <!--ko text: $data[0]._day--><!--/ko--> </td> </tr> <!-- ko foreach: $data --> <tr> <td rowspan=\\\"2\\\"> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name === 'Actions' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </td> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name !== 'Description' && $data._cell.Name !== 'Actions' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <td class=\\\"timewriting-table-column__empty-cell\\\"></td> </tr> <tr class=\\\"timewriting-table-column__description\\\"> <td data-bind=\\\"attr: { colspan: $parents[1]._countOfVisibleColumns + 1 }\\\"> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name === 'Description' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </td> </tr> <!-- /ko --> </tbody> <!-- /ko --> </table> </div> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import {RowEditor} from \"Core/Components/Controls/TimeWriting/Utils/RowEditor\";\r\n\r\nexport class DisapprovedEditor {\r\n RowEditor: RowEditor;\r\n DisapprovedInfo: DisapprovedInfo;\r\n\r\n constructor(disapprovedInfo: DisapprovedInfo, rowEditor: RowEditor) {\r\n this.RowEditor = rowEditor;\r\n this.DisapprovedInfo = disapprovedInfo;\r\n }\r\n}\r\n\r\nexport class DisapprovedInfo {\r\n DisapprovedReason: string;\r\n Comment: string;\r\n BookedCounter: number;\r\n WeekNumber: number;\r\n Date: string;\r\n\r\n constructor(disapprovedReason: string, comment: string, bookedCounter: number, weekNumber: number, date: string) {\r\n this.DisapprovedReason = disapprovedReason;\r\n this.Comment = comment;\r\n this.BookedCounter = bookedCounter;\r\n this.WeekNumber = weekNumber;\r\n this.Date = date;\r\n }\r\n}","//Libs\r\nimport * as ko from \"knockout\";\r\n\r\nimport {UsersViewModel} from \"./UsersViewModel\";\r\nimport {AllowedEntity, LookupField, Reservation} from \"./DayDataViewModel\";\r\n\r\nexport class DisapprovedDataViewModel {\r\n AllowedEntities: AllowedEntity[];\r\n Users: UsersViewModel;\r\n BookedCounter: number;\r\n Comment: string;\r\n DisapprovedReason: string;\r\n RequestedDate: DisapprovedRequestedDate;\r\n LookupFields: LookupField[];\r\n\r\n constructor() {\r\n this.AllowedEntities = [];\r\n this.LookupFields = [];\r\n }\r\n\r\n get SelectedUser() {\r\n return this.Users.SelectedUser();\r\n }\r\n}\r\n\r\nexport class DisapprovedRequestedDate {\r\n Reservations: KnockoutObservableArray<DisapprovedReservation>;\r\n\r\n constructor() {\r\n this.Reservations = ko.observableArray([]);\r\n }\r\n}\r\n\r\nexport class DisapprovedReservation extends Reservation{\r\n Comment: string;\r\n DisapprovedReason: string;\r\n BookedCounter: number;\r\n Date: string;\r\n WeekNumber: number;\r\n}","import * as ko from \"knockout\";\r\n\r\nimport { FIELD_TYPES } from \"Core/Constant\";\r\n\r\n//Store models\r\nimport {DisapprovedReservationResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Disapproved/Response/DisapprovedReservationResponseModel\";\r\n\r\n//Utils\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\n//ViewModels\r\nimport {DisapprovedReservation} from \"Core/Components/Controls/TimeWriting/Models/View/DisapprovedDataViewModel\"\r\n\r\n//Mappings\r\nimport {SubjectMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/SubjectMappings\";\r\nimport {LookupValueMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Common/LookupValueMappings\";\r\nimport {OptionalFieldData} from \"../../Models/View/DayDataViewModel\";\r\n\r\nexport class DisapprovedReservationMappings {\r\n static OnViewModel(model: DisapprovedReservationResponseModel): DisapprovedReservation {\r\n const viewModel = new DisapprovedReservation();\r\n\r\n viewModel.Id = model.Id;\r\n viewModel.AgendaId = model.AgendaId;\r\n viewModel.Start(new Date(FormatConverter.CorrectTimezone(model.Start.toString())));\r\n viewModel.TimeSpent(model.TimeSpent);\r\n viewModel.Subject(SubjectMappings.OnViewModel(model.Subject));\r\n viewModel.Description(model.Description);\r\n viewModel.Ovw(model.OverWorkIndicator ? LookupValueMappings.OnViewModel(model.OverWorkIndicator) : null);\r\n viewModel.Pay(model.PaymentIndicator ? LookupValueMappings.OnViewModel(model.PaymentIndicator) : null);\r\n viewModel.HourKind(model.HourKindIndicator ? LookupValueMappings.OnViewModel(model.HourKindIndicator) : null);\r\n viewModel.Accepted = model.Accepted;\r\n viewModel.BookedCounter = model.BookedCounter;\r\n viewModel.DisapprovedReason = model.DisapprovedReason;\r\n viewModel.Comment = model.Comment;\r\n\r\n // viewModel.OptionalData = model.OptionalData.map(field => new OptionalFieldData({\r\n // FieldName: field.FieldName,\r\n // FieldType:\r\n // field.FieldTypeName,\r\n // FieldValue: ko.observable(field.FieldTypeName === FIELD_TYPES.Lookup ? {\r\n // FieldValue: field.FieldValue,\r\n // DisplayValue: field.DisplayValue\r\n // } : field.FieldValue)\r\n // }\r\n // ));\r\n\r\n return viewModel;\r\n }\r\n}","//View models\r\nimport {DisapprovedRequestedDate} from \"Core/Components/Controls/TimeWriting/Models/View/DisapprovedDataViewModel\";\r\n\r\n//Mappings\r\nimport { DisapprovedReservationMappings } from \"Core/Components/Controls/TimeWriting/Mappings/Disapproved/DisapprovedReservationMappings\";\r\n\r\n\r\nexport class DisapprovedRequestedDateMappings {\r\n static OnViewModel(model: any): DisapprovedRequestedDate {\r\n const viewModel = new DisapprovedRequestedDate();\r\n\r\n const reservations = model.Reservations.map(reservation => DisapprovedReservationMappings.OnViewModel(reservation));\r\n viewModel.Reservations(reservations);\r\n\r\n return viewModel;\r\n }\r\n}","import {FIELD_TYPES} from \"Core/Constant\";\r\n\r\n//Store models\r\nimport { DisapprovedReportResponseModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Disapproved/Response/DisapprovedReportResponseModel\";\r\nimport { SaveReservationRequestModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\nimport { DeleteReservationRequestModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel\";\r\n\r\n//View models\r\nimport { Reservation } from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\nimport { DisapprovedDataViewModel } from \"Core/Components/Controls/TimeWriting/Models/View/DisapprovedDataViewModel\"\r\n\r\n//Mappings\r\nimport {DisapprovedRequestedDateMappings } from \"Core/Components/Controls/TimeWriting/Mappings/Disapproved/DisapprovedRequestedDateMappings\";\r\nimport { EntityMappings } from \"Core/Components/Controls/TimeWriting/Mappings/Day/EntityMappings\";\r\nimport { ReservationMappings } from \"Core/Components/Controls/TimeWriting/Mappings/Day/ReservationMappings\";\r\nimport {LookupFieldMappings} from \"../Common/LookupFieldMappings\";\r\n\r\nexport class DisapprovedMappingProfile {\r\n static OnViewModel(model: DisapprovedReportResponseModel): DisapprovedDataViewModel {\r\n const viewModel = new DisapprovedDataViewModel();\r\n viewModel.RequestedDate = DisapprovedRequestedDateMappings.OnViewModel(model.DayReservations);\r\n viewModel.AllowedEntities = model.GlobalSettings.AllowedEntities.map(entity => EntityMappings.OnViewModel(entity));\r\n viewModel.LookupFields = model.Fields.filter(field => field.TypeName === FIELD_TYPES.Lookup ).map(field => LookupFieldMappings.OnViewModel(field));\r\n\r\n return viewModel;\r\n }\r\n\r\n static OnSaveModel(model: Reservation): SaveReservationRequestModel {\r\n return ReservationMappings.OnSaveModel(model);\r\n }\r\n\r\n static OnDeleteModel(model: Reservation): DeleteReservationRequestModel {\r\n return ReservationMappings.OnDeleteModel(model);\r\n }\r\n}","//Libs\r\nimport * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\n//Common\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\n//User\r\nimport {UserManager} from \"User/UserManager\";\r\n\r\n//Components\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\n//Screens\r\nimport {SearchScreen} from \"Core/Screens/SearchScreen/SearchScreen\";\r\n\r\n//Settings\r\nimport {IDayViewSettings} from \"Core/Components/Controls/TimeWriting/Views/Day/IDayViewSettings\";\r\n\r\nimport {\r\n RowEditor,\r\n CellEditor,\r\n ActionsCellEditor,\r\n ValueCellEditor,\r\n DropdownCellEditor,\r\n MultiSelectCellEditor,\r\n SubjectCellEditor,\r\n DescriptionCellEditor,\r\n State as RowEditorState,\r\n IntegerCellEditor,\r\n DecimalCellEditor,\r\n DateTimeCellEditor,\r\n DateCellEditor,\r\n TimeCellEditor,\r\n ValidationCellEditor\r\n} from \"Core/Components/Controls/TimeWriting/Utils/RowEditor\";\r\nimport {DisapprovedEditor, DisapprovedInfo} from \"Core/Components/Controls/TimeWriting/Utils/DisapprovedEditor\";\r\n\r\n//Views\r\nimport {TimeWritingView} from \"Core/Components/Controls/TimeWriting/Views/TimeWritingView\";\r\n\r\n//State\r\nimport {State} from \"Core/Components/Controls/TimeWriting/Views/Day/State\";\r\nimport {ViewState} from \"Core/Components/Controls/TimeWriting/Views/Day/ViewState\";\r\n\r\n//ViewModels\r\nimport {\r\n AllowedEntity, LookupField,\r\n Reservation,\r\n Subject,\r\n} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\n\r\nimport {UsersViewModel, UserViewModel} from \"Core/Components/Controls/TimeWriting/Models/View/UsersViewModel\";\r\n\r\n//Stores\r\nimport {TimeWritingStore} from \"Core/Components/Controls/TimeWriting/Stores/TimeWritingStore\";\r\n\r\n//Store models\r\nimport {SaveReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\nimport {DeleteReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel\";\r\n\r\n//Mappings\r\nimport {DayMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Day/DayMappingProfile\";\r\nimport {UsersMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Day/UsersMappingProfile\";\r\n\r\n//Templates\r\nimport DisapprovedTemplate from \"Core/Components/Controls/TimeWriting/Templates/DisapprovedTemplate.html\";\r\n//TextColumn\r\nimport TextViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/View.html\";\r\nimport TextEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/Edit.html\";\r\n\r\nimport DescriptionViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/View.html\";\r\nimport DescriptionEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/Edit.html\";\r\n//Subject\r\nimport SubjectViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/View.html\";\r\nimport SelectableSubjectEditTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/SelectableSubjectEdit.html\";\r\nimport SelectedSubjectEditTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/SelectedSubjectEdit.html\";\r\n\r\n//Integer\r\nimport IntegerViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/View.html\";\r\nimport IntegerEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/Edit.html\";\r\n\r\n//Decimal\r\nimport DecimalViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/View.html\";\r\nimport DecimalEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/Edit.html\";\r\n\r\n//DateTime\r\nimport DateTimeViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/View.html\";\r\nimport DateTimeEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/Edit.html\";\r\n\r\n//YesNo\r\nimport YesNoViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/View.html\";\r\nimport YesNoEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/Edit.html\";\r\n\r\n//Dropdown\r\nimport DropdownViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/View.html\";\r\nimport DropdownEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/Edit.html\";\r\n//Time\r\nimport TimeViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/View.html\";\r\nimport TimeEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/Edit.html\";\r\n//Actions\r\nimport ActionsViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Actions/Disapproved/View.html\";\r\nimport ActionsEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Actions/Disapproved/Edit.html\";\r\n//Dash\r\nimport DashViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Dash/View.html\";\r\n\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\n\r\n\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {UsersResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel\";\r\nimport {\r\n DisapprovedDataViewModel,\r\n DisapprovedReservation\r\n} from \"Core/Components/Controls/TimeWriting/Models/View/DisapprovedDataViewModel\";\r\nimport {DisapprovedReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Disapproved/Response/DisapprovedReportResponseModel\";\r\nimport {DisapprovedMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Disapproved/DisapprovedMappingProfile\";\r\nimport {DateTime} from \"Core/Components/Controls/TimeWriting/Utils/DateTime\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nexport class DisapprovedView extends TimeWritingView {\r\n private _state: KnockoutObservable<State>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _viewModel: KnockoutObservable<DisapprovedDataViewModel>;\r\n\r\n private _viewState: KnockoutObservable<ViewState>;\r\n private _isReadState: KnockoutComputed<boolean>;\r\n private _isEditState: KnockoutComputed<boolean>;\r\n private _isNewState: KnockoutComputed<boolean>;\r\n\r\n private _disapprovedEditors: KnockoutObservableArray<DisapprovedEditor>;\r\n private _labels = LABELS;\r\n\r\n constructor(private _settings: IDayViewSettings) {\r\n super();\r\n this._state = ko.observable(new State({Date: new Date()}));\r\n this._isEditable = ko.observable(false);\r\n this._viewModel = ko.observable(null);\r\n\r\n this._viewState = ko.observable(ViewState.Read);\r\n this._isReadState = ko.computed(() => this._viewState() === ViewState.Read, this);\r\n this._isEditState = ko.computed(() => this._viewState() === ViewState.Edit, this);\r\n this._isNewState = ko.computed(() => this._viewState() === ViewState.New, this);\r\n this._disapprovedEditors = ko.observableArray([]);\r\n }\r\n\r\n GetTemplate() {\r\n return DisapprovedTemplate;\r\n }\r\n\r\n CanBeUpdated() {\r\n return this._viewState() === ViewState.Read;\r\n }\r\n\r\n Show(date: Date, userId?: number) {\r\n this._state(new State({\r\n Date: date\r\n }));\r\n\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n\r\n if (usersList && userId) {\r\n const selectedUser = usersList.Users().find(user => user.Id === userId);\r\n if (selectedUser) {\r\n usersList.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n if (usersList) {\r\n this.LoadData(date, usersList.SelectedUser().Id)\r\n .then(disapprovedReportResponse => this.RenderData(disapprovedReportResponse, usersList))\r\n .fail(error => this.ShowError(error.message));\r\n } else {\r\n const loadDataPromise = this.LoadData(date, userId || UserManager.Instance.CurrentUser.Id);\r\n const loadUsersPromise = this.LoadUsers();\r\n\r\n loadDataPromise.fail(error => this.ShowError(error.message));\r\n loadUsersPromise.fail(error => this.ShowError(error.message));\r\n\r\n P.when(loadDataPromise, loadUsersPromise).then(result => this.RenderData(result[0], result[1], userId || UserManager.Instance.CurrentUser.Id));\r\n }\r\n BlockUI.Unblock();\r\n }\r\n\r\n OnDayViewClick() {\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n const selectedUser = usersList && usersList.SelectedUser().Id;\r\n\r\n if (this._viewState() === ViewState.Read) {\r\n this.Trigger(\"DayViewClicked\", {State: this._state(), UserId: selectedUser});\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Trigger(\"DayViewClicked\", {State: this._state(), UserId: selectedUser});\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Trigger(\"DayViewClicked\", this._state());\r\n });\r\n }\r\n\r\n OnReservationEdit(guid: string) {\r\n const disapprovedEditor = _.find(this._disapprovedEditors(), editor => editor.RowEditor.Guid === guid);\r\n\r\n if (!disapprovedEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n return;\r\n }\r\n\r\n disapprovedEditor.RowEditor.SetState(RowEditorState.Edit);\r\n\r\n this._viewState(ViewState.Edit);\r\n }\r\n\r\n OnReservationDelete(guid: string) {\r\n const disapprovedEditor = _.find(this._disapprovedEditors(), editor => editor.RowEditor.Guid === guid);\r\n\r\n if (!disapprovedEditor) {\r\n this.ShowError(\"Row not found\");\r\n return;\r\n }\r\n\r\n this.AskDeleteConfirmation(() => {\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === guid);\r\n\r\n const deleteModel = DayMappingProfile.OnDeleteModel(reservation);\r\n deleteModel.TimeTableId = this._settings.EntityId;\r\n\r\n this.DeleteReservation(deleteModel)\r\n .then(() => this.SaveAndReload(disapprovedEditor.RowEditor))\r\n .fail(error => this.ShowError(error.message));\r\n });\r\n }\r\n\r\n OnSaveReservationChanges() {\r\n BlockUI.Block();\r\n this.SaveReservation()\r\n .then(rowEditor => this.SaveAndReload(rowEditor))\r\n .fail(error => {\r\n this.ShowError(error.message);\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n OnReservationAccept(guid: string) {\r\n const disapprovedEditor = _.find(this._disapprovedEditors(), editor => editor.RowEditor.Guid === guid);\r\n\r\n if (!disapprovedEditor) {\r\n this.ShowError(\"Row not found\");\r\n this._viewState(ViewState.Read);\r\n return;\r\n }\r\n\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === guid);\r\n\r\n const acceptModel = DayMappingProfile.OnSaveModel(reservation);\r\n\r\n acceptModel.TimeTableId = this._settings.EntityId;\r\n acceptModel.UserId = this._viewModel().SelectedUser.Id;\r\n\r\n this.AcceptReservation(acceptModel)\r\n .then(() => this.SaveAndReload(disapprovedEditor.RowEditor))\r\n .fail(error => this.ShowError(error.message));\r\n }\r\n\r\n CancelChanges() {\r\n const disapprovedEditor = _.find(this._disapprovedEditors(), editor => editor.RowEditor.IsEditState || editor.RowEditor.IsNewState);\r\n\r\n this.OnCancelReservationChanges(disapprovedEditor.RowEditor.Guid);\r\n }\r\n\r\n OnCancelReservationChanges(guid: string) {\r\n const disapprovedEditor = _.find(this._disapprovedEditors(), editor => editor.RowEditor.Guid === guid);\r\n\r\n if (!disapprovedEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n return;\r\n }\r\n\r\n if (disapprovedEditor.RowEditor.IsNewState) {\r\n this.CancelNewReservation(disapprovedEditor);\r\n } else {\r\n this.CancelReservationChanges(disapprovedEditor.RowEditor);\r\n }\r\n }\r\n\r\n OnAllowedEntityClick(entity: AllowedEntity) {\r\n const disapprovedEditor = _.find(this._disapprovedEditors(), editor => editor.RowEditor.IsNewState);\r\n\r\n if (!disapprovedEditor) {\r\n this.ShowError(\"Row not found\");\r\n this._viewState(ViewState.Read);\r\n return;\r\n }\r\n\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === disapprovedEditor.RowEditor.Guid);\r\n\r\n this.SearchSubjectForEntity(entity, reservation);\r\n }\r\n\r\n SelectSubjectMode(reservation: Reservation) {\r\n reservation.Subject(Subject.NotSpecified());\r\n }\r\n\r\n private UserSelected(user: UserViewModel) {\r\n this.Show(this._state().Date);\r\n }\r\n\r\n private GetNewReservationSubject(): P.Promise<Subject> {\r\n const deferred = P.defer<Subject>();\r\n\r\n if (this._settings.SubjectEntityId === null) {\r\n deferred.resolve(null);\r\n } else {\r\n this.RequestNewReservationSubject().always(subject => deferred.resolve(subject))\r\n }\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private RequestNewReservationSubject(): P.Promise<Subject> {\r\n const deferred = P.defer<Subject>();\r\n\r\n const subjectIsAllowed = _.any(this._viewModel().AllowedEntities, e => e.Id === this._settings.SubjectEntityId);\r\n if (!subjectIsAllowed) {\r\n deferred.resolve(null);\r\n } else {\r\n TimeWritingStore.GetSubject(this._settings.SubjectEntityId, this._settings.SubjectRecordId)\r\n .then(record => {\r\n const nameField = _.find<any>((<any>record).Fields, field => field.FieldName.toUpperCase() === \"NAME\");\r\n const subject = new Subject({\r\n EntityId: this._settings.SubjectEntityId,\r\n EntityName: this._settings.SubjectEntityName,\r\n SubjectId: this._settings.SubjectRecordId,\r\n SubjectName: nameField.FieldValue,\r\n Icon: this._settings.SubjectEntityIcon\r\n });\r\n deferred.resolve(subject);\r\n })\r\n .fail(() => deferred.resolve(null));\r\n }\r\n return deferred.promise();\r\n }\r\n\r\n private CancelNewReservation(disapprovedEditor: DisapprovedEditor) {\r\n const disapprovedEditorIndex = this._disapprovedEditors.indexOf(disapprovedEditor);\r\n this._disapprovedEditors.splice(disapprovedEditorIndex, 1);\r\n\r\n this._viewState(ViewState.Read);\r\n }\r\n\r\n private CancelReservationChanges(rowEditor: RowEditor) {\r\n rowEditor.CancelChanges();\r\n rowEditor.SetState(RowEditorState.Read);\r\n\r\n this._viewState(ViewState.Read);\r\n }\r\n\r\n private LoadUsers() {\r\n return TimeWritingStore.GetUsers(this._settings.EntityId)\r\n .then(users => users.Users.length === 0\r\n ? UsersResponseModel.CreateDefault()\r\n : UsersMappingProfile.OnViewModel(users)\r\n )\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private LoadData(date: Date, userId: number): P.Promise<DisapprovedReportResponseModel> {\r\n return TimeWritingStore.GetDisapproved({\r\n ControlId: this._settings.ControlId,\r\n TimeTableId: this._settings.EntityId,\r\n SubjectEntityId: this._settings.SubjectEntityId,\r\n SubjectRecordId: this._settings.SubjectRecordId,\r\n UserId: userId\r\n });\r\n }\r\n\r\n private RenderData(model: DisapprovedReportResponseModel, users: UsersViewModel, selectedUserId?: number) {\r\n const viewModel = DisapprovedMappingProfile.OnViewModel(model);\r\n viewModel.Users = users;\r\n\r\n if (selectedUserId) {\r\n const selectedUser = viewModel.Users.Users().find(user => user.Id === selectedUserId);\r\n if (selectedUser) {\r\n viewModel.Users.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n this._isEditable(model.Editable);\r\n this._disapprovedEditors([]);\r\n this.InitRowEditors(viewModel);\r\n this._viewModel(viewModel);\r\n\r\n if (model.GlobalSettings.FreezeTime === undefined) {\r\n this.ShowWarning(\"Freeze time not specified\");\r\n }\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n private ShowError(message: string) {\r\n new Notifier().Failed(message);\r\n }\r\n\r\n private ShowWarning(message: string) {\r\n new Notifier().Warning(message);\r\n }\r\n\r\n private ShowNotification(message: string) {\r\n new Notifier().Success(message);\r\n }\r\n\r\n private InitRowEditors(viewModel: DisapprovedDataViewModel) {\r\n viewModel.RequestedDate.Reservations().forEach(reservation => {\r\n let weekNumber = DateTime.GetWeekNumber(reservation.Start());\r\n let date = DateTime.GetWeekDescription(reservation.Start());\r\n this.AddDisapprovedEditor(reservation, viewModel.LookupFields, viewModel.AllowedEntities, RowEditorState.Read, weekNumber, date);\r\n });\r\n }\r\n\r\n private AddDisapprovedEditor(reservation: DisapprovedReservation,\r\n lookupFields: LookupField[],\r\n allowedEntities: AllowedEntity[],\r\n state: RowEditorState,\r\n weekNumber: number,\r\n date: string) {\r\n const rowEditor = this.GenerateRowEditor(reservation, lookupFields, allowedEntities);\r\n rowEditor.SetState(state);\r\n const disapprovedInfo = new DisapprovedInfo(reservation.DisapprovedReason, reservation.Comment, reservation.BookedCounter, weekNumber, date);\r\n\r\n this._disapprovedEditors.push(new DisapprovedEditor(disapprovedInfo, rowEditor));\r\n }\r\n\r\n private GenerateCellEditor(field: AttachedFieldModel, reservation: Reservation, lookupFields: LookupField[]): CellEditor {\r\n if (field.FieldTypeName === FIELD_TYPES.Lookup) {\r\n const dropdownField = _.find(lookupFields, f => f.Name === field.Name);\r\n\r\n return new DropdownCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n Options: ko.observableArray(dropdownField.Values),\r\n RequiresSearch: dropdownField.RequiresSearch,\r\n ValTableId: field.ValTableId,\r\n ValFieldId: field.ValFieldId,\r\n ValFieldTypeName: field.ValFieldTypeName,\r\n ValFieldFormatName: field.ValFieldFormatName,\r\n ValFieldSize: field.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'ovw',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value && value.FieldValue\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.MultiSelect) {\r\n const dropdownField = _.find(lookupFields, f => f.Name === field.Name);\r\n\r\n return new MultiSelectCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n Options: ko.observableArray(dropdownField.Values),\r\n RequiresSearch: dropdownField.RequiresSearch,\r\n ValTableId: field.ValTableId,\r\n ValFieldId: field.ValFieldId,\r\n ValFieldTypeName: field.ValFieldTypeName,\r\n ValFieldFormatName: field.ValFieldFormatName,\r\n ValFieldSize: field.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'ovw',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value && value.FieldValue\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Integer) {\r\n return new IntegerCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: IntegerViewCellTemplate,\r\n EditTemplate: IntegerEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: null,\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Decimal) {\r\n return new DecimalCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DecimalViewCellTemplate,\r\n EditTemplate: DecimalEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: null,\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n Size: field.Size,\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.DateTime) {\r\n return new DateTimeCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DateTimeViewCellTemplate,\r\n EditTemplate: DateTimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'from',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Date) {\r\n return new DateCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DateTimeViewCellTemplate,\r\n EditTemplate: DateTimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'from',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Time) {\r\n return new TimeCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.TimeSpan) {\r\n return new ValidationCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'from',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.YesNo) {\r\n return new ValueCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: YesNoViewCellTemplate,\r\n EditTemplate: YesNoEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'description'\r\n });\r\n }\r\n\r\n return new ValidationCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TextViewCellTemplate,\r\n EditTemplate: TextEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'description',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n private GenerateRowEditor(reservation: Reservation, lookupFields: LookupField[], allowedEntities: AllowedEntity[]) {\r\n // const customFieldCellEditors = this._settings.CustomFields.map(field => this.GenerateCellEditor(field, reservation, lookupFields));\r\n const customFieldCellEditors = [];\r\n const visibleFields = this._settings.Properties.Groups[0].Properties;\r\n\r\n const hourKindLookupField = _.find(lookupFields, f => f.Name === \"F_HOURKIND\");\r\n const ovwLookupField = _.find(lookupFields, f => f.Name === \"F_OVERWORKINDICATOR\");\r\n const payLookupField = _.find(lookupFields, f => f.Name === \"F_PAYMENTINDICATOR\");\r\n\r\n return new RowEditor(reservation.Guid,\r\n null,\r\n lookupFields,\r\n new SubjectCellEditor({\r\n Name: \"Subject\",\r\n Label: this._labels.SUBJECT,\r\n Value: reservation.Subject,\r\n ViewTemplate: SubjectViewCellTemplate,\r\n EditTemplate: reservation.Subject().NotSpecified ? SelectableSubjectEditTemplate : SelectedSubjectEditTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n OnEntityClick: this.OnAllowedEntityClick.bind(this),\r\n OnEntityIconClick: this.SelectSubjectMode.bind(this, reservation),\r\n OnSubjectClick: this.SearchSubject.bind(this, reservation),\r\n AllowedEntities: allowedEntities,\r\n IsNewState: this._isNewState,\r\n RequiredRule: {\r\n Validate: value => !value.NotSpecified,\r\n Message: this._labels.SELECT__RESERVATION_SUBJECT\r\n },\r\n ClassName: 'subject'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"Start\",\r\n Label: this._labels.FROM,\r\n Value: reservation.Start,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === 'START').Value),\r\n ClassName: 'from'\r\n }),\r\n new CellEditor({\r\n Name: \"-\",\r\n Label: \"\",\r\n ViewTemplate: DashViewCellTemplate,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === 'START').Value && visibleFields.find(field => field.Name === 'TO').Value),\r\n ClassName: 'dash'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"To\",\r\n Label: this._labels.TO,\r\n Value: reservation.To,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: false,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === 'TO').Value),\r\n ClassName: 'to'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"TimeSpent\",\r\n Label: this._labels.DURATION,\r\n Value: reservation.TimeSpent,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === 'TIMESPENT').Value),\r\n ClassName: 'duration'\r\n }),\r\n new DescriptionCellEditor({\r\n Name: \"Description\",\r\n Label: this._labels.DESCRIPTION,\r\n Value: reservation.Description,\r\n ViewTemplate: DescriptionViewCellTemplate,\r\n EditTemplate: DescriptionEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n RequiredRule: {\r\n Validate: value => value && value.length > 0,\r\n Message: this._labels.SPECIFY_RESERVATION_DESCRIPTION\r\n },\r\n MinLengthRule: {\r\n Validate: value => value.length >= 3,\r\n Message: this._labels.DESCRIPTION_MIN_LENGTH.replace('{minLengthValidation}', '3')\r\n },\r\n MaxLenghtRule: {\r\n Validate: value => value.length <= 80,\r\n Message: this._labels.DESCRIPTION_MAX_LENGTH.replace('{maxLengthValidation}', '80')\r\n },\r\n ClassName: 'description'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Hour\",\r\n Label: this._labels.HOUR,\r\n Value: reservation.HourKind,\r\n Options: ko.observableArray(hourKindLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: hourKindLookupField.ValTableId,\r\n ValFieldId: hourKindLookupField.ValFieldId,\r\n ValFieldTypeName: hourKindLookupField.ValFieldTypeName,\r\n ValFieldFormatName: hourKindLookupField.ValFieldFormatName,\r\n ValFieldSize: hourKindLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === 'F_HOURKIND').Value),\r\n ClassName: 'hour'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Ovw\",\r\n Label: this._labels.OVW,\r\n Value: reservation.Ovw,\r\n Options: ko.observableArray(ovwLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: ovwLookupField.ValTableId,\r\n ValFieldId: ovwLookupField.ValFieldId,\r\n ValFieldTypeName: ovwLookupField.ValFieldTypeName,\r\n ValFieldFormatName: ovwLookupField.ValFieldFormatName,\r\n ValFieldSize: ovwLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === \"F_OVERWORKINDICATOR\").Value),\r\n ClassName: 'ovw'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Pay\",\r\n Label: this._labels.PAY,\r\n Value: reservation.Pay,\r\n Options: ko.observableArray(payLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: payLookupField.ValTableId,\r\n ValFieldId: payLookupField.ValFieldId,\r\n ValFieldTypeName: payLookupField.ValFieldTypeName,\r\n ValFieldFormatName: payLookupField.ValFieldFormatName,\r\n ValFieldSize: payLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === \"F_PAYMENTINDICATOR\").Value),\r\n ClassName: 'pay'\r\n }),\r\n ...customFieldCellEditors,\r\n new ActionsCellEditor({\r\n Name: \"Actions\",\r\n Label: this._labels.ACTIONS,\r\n ViewTemplate: ActionsViewCellTemplate,\r\n EditTemplate: ActionsEditCellTemplate,\r\n Visible: this._isEditable() ? this._isReadState : ko.observable(false),\r\n Accepted: reservation.Accepted,\r\n OnEditReservation: this.OnReservationEdit.bind(this, reservation.Guid),\r\n OnDeleteReservation: this.OnReservationDelete.bind(this, reservation.Guid),\r\n OnAcceptReservation: this.OnReservationAccept.bind(this, reservation.Guid),\r\n OnSaveReservationChanges: this.OnSaveReservationChanges.bind(this),\r\n OnCancelReservationChanges: this.OnCancelReservationChanges.bind(this, reservation.Guid),\r\n TimeStatus: reservation.TimeStatus(),\r\n ClassName: 'actions'\r\n })\r\n );\r\n }\r\n\r\n private SearchSubject(reservation: Reservation) {\r\n const subject = reservation.Subject();\r\n\r\n const searchScreen = new SearchScreen({\r\n EntityId: subject.EntityId,\r\n SearchTerm: \"\",\r\n ButtonAdd: false\r\n });\r\n\r\n searchScreen.On(\"RECORD_SELECTED\", this, eventArgs => this.SelectSubject(eventArgs.data, reservation));\r\n searchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n private SearchSubjectForEntity(entity: AllowedEntity, reservation: Reservation) {\r\n const searchScreen = new SearchScreen({\r\n ConditionToggler: true,\r\n ControlId: this._settings.ControlId,\r\n EntityId: entity.Id,\r\n SearchTerm: \"\",\r\n ButtonAdd: false\r\n });\r\n\r\n searchScreen.On(\"RECORD_SELECTED\", this, eventArgs => this.SelectSubjectForEntity(eventArgs.data, entity, reservation));\r\n searchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n private SelectSubject(subjectData: any, reservation: Reservation) {\r\n const oldSubject = reservation.Subject();\r\n\r\n const newSubject = new Subject({\r\n EntityId: oldSubject.EntityId,\r\n EntityName: oldSubject.EntityName,\r\n SubjectId: subjectData.RecordId,\r\n SubjectName: subjectData.Name,\r\n Icon: oldSubject.Icon\r\n });\r\n\r\n reservation.Subject(newSubject);\r\n }\r\n\r\n private SelectSubjectForEntity(subjectData: any, entity: AllowedEntity, reservation: Reservation) {\r\n const newSubject = new Subject({\r\n EntityId: entity.Id,\r\n EntityName: entity.Name,\r\n SubjectId: subjectData.RecordId,\r\n SubjectName: subjectData.Name,\r\n Icon: entity.Icon\r\n });\r\n\r\n reservation.Subject(newSubject);\r\n }\r\n\r\n private AcceptReservation(reservation: SaveReservationRequestModel) {\r\n return TimeWritingStore.AcceptReservation(reservation);\r\n }\r\n\r\n private UpdateReservation(reservation: SaveReservationRequestModel) {\r\n return TimeWritingStore.UpdateReservation(reservation);\r\n }\r\n\r\n private DeleteReservation(reservation: DeleteReservationRequestModel) {\r\n return TimeWritingStore.DeleteReservation(reservation);\r\n }\r\n\r\n private CommitChanges(rowEditor: RowEditor) {\r\n rowEditor.SaveChanges();\r\n rowEditor.SetState(RowEditorState.Read);\r\n this._viewState(ViewState.Read);\r\n this.ShowNotification(NOTIFICATIONS.CHANGES_APPLIED);\r\n }\r\n\r\n private SaveAndReload(rowEditor: RowEditor) {\r\n this.CommitChanges(rowEditor);\r\n this.Show(this._state().Date);\r\n }\r\n\r\n private AskConfirmation(message: string, onConfirm: () => void, onDecline: () => void) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: message,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: \"Yes\",\r\n TextDecline: \"Cancel\"\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => onConfirm());\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => onDecline());\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n private AskSaveConfirmation(onConfirm: () => void, onDecline: () => void) {\r\n this.AskConfirmation(\"Save changes?\", onConfirm, onDecline);\r\n }\r\n\r\n private AskDeleteConfirmation(onConfirm: () => void) {\r\n this.AskConfirmation(\"Are you sure you want delete this record?\", onConfirm, () => {\r\n });\r\n }\r\n\r\n private GetActiveRow() {\r\n return _.find(this._disapprovedEditors(), (item: DisapprovedEditor) => item.RowEditor.IsNewState || item.RowEditor.IsEditState);\r\n }\r\n\r\n private SaveReservation(): P.Promise<RowEditor> {\r\n\r\n const result = P.defer<RowEditor>();\r\n\r\n const disapprovedEditor = this.GetActiveRow();\r\n\r\n if (!disapprovedEditor) {\r\n this._viewState(ViewState.Read);\r\n result.reject({message: \"Row not found\"});\r\n return result.promise();\r\n }\r\n\r\n if (!disapprovedEditor.RowEditor.Validate()) {\r\n result.reject({message: \"Fill required data\"});\r\n return result.promise();\r\n }\r\n\r\n\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === disapprovedEditor.RowEditor.Guid);\r\n reservation.ChangeDate(this._state().Date);\r\n\r\n const updateModel = DayMappingProfile.OnSaveModel(reservation);\r\n\r\n updateModel.TimeTableId = this._settings.EntityId;\r\n updateModel.UserId = this._viewModel().SelectedUser.Id;\r\n\r\n this.UpdateReservation(updateModel)\r\n .then(() => result.resolve(disapprovedEditor.RowEditor))\r\n .fail(error => result.reject({message: error.message}));\r\n\r\n return result.promise();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet box time-writing-control disapproved\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"time-writing-caption clearfix\\\"> <div class=\\\"container-fluid time-writing-header\\\"> <div class=\\\"row weekly-container\\\"> <div class=\\\"weekly-subcontainer weekly-subcontainer-left days-container\\\"> <a data-bind=\\\"click: OnDayViewClick\\\" class=\\\"btn blue-dark return-button\\\"> <i class=\\\"fa fa-mail-reply-all\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.RETURN --><!-- /ko --> </a> </div> <div class=\\\"weekly-subcontainer weekly-subcontainer-center week-container\\\"> <!-- ko text: _labels.DISAP_OVERVIEW --><!-- /ko --> </div> <div class=\\\"weekly-subcontainer weekly-subcontainer-right\\\"> <!--ko with: _viewModel--> <select class=\\\"form-control\\\" data-bind=\\\"options: Users.Users, optionsText: 'Name', value: Users.SelectedUser, event: {change: $parent.UserSelected.bind($parent, Users.SelectedUser())}\\\"></select> <!--/ko--> </div> </div> </div> </div> </div> <div class=\\\"portlet-body disapproved-portlet-body\\\"> <div class=\\\"timewriting-day-table clearfix timewriting-disapproved\\\"> <div class=\\\"timewriting-day-table__content\\\"> <div class=\\\"timewriting-table-body timewriting-table-rows timewriting-table-striped\\\"> <!-- ko foreach: _disapprovedEditors --> <div class=\\\"row timewriting-table-row\\\"> <div class=\\\"timewriting-disapproved__content-row\\\"> <div class=\\\"timewriting-table-item-disapproved disap-counter\\\"> <span class=\\\"badge badge-light badge-counter\\\" data-bind=\\\"text: DisapprovedInfo.BookedCounter ? DisapprovedInfo.BookedCounter : '0',\\r\\n tooltip: {content: $parent._labels.BOOKED_COUNTER}\\\"></span> </div> <div class=\\\"timewriting-table-item-disapproved\\\"> <span class=\\\"bold\\\"><!-- ko text: $parent._labels.DATE --><!-- /ko --> :</span> <span data-bind=\\\"text: DisapprovedInfo.Date ? DisapprovedInfo.Date : '-'\\\"></span> </div> <div class=\\\"timewriting-table-item-disapproved\\\"> <span class=\\\"bold\\\"><!-- ko text: $parent._labels.WEEK --><!-- /ko --> : </span> <span data-bind=\\\"text: DisapprovedInfo.WeekNumber ? DisapprovedInfo.WeekNumber : '-'\\\"></span> </div> <div class=\\\"timewriting-table-item-disapproved\\\"> <span class=\\\"bold timewriting-table-mobile-label-visible-sm\\\"><!-- ko text: $parent._labels.DISAP_REASON --><!-- /ko -->:</span> <span class=\\\"bold timewriting-table-mobile-label-visible-xs\\\"><!-- ko text: $parent._labels.REASON --><!-- /ko -->:</span> <span data-bind=\\\"text: DisapprovedInfo.DisapprovedReason ? DisapprovedInfo.DisapprovedReason : '-'\\\"></span> </div> <div class=\\\"timewriting-table-item-disapproved\\\"> <span class=\\\"bold\\\"><!-- ko text: $parent._labels.COMMENT --><!-- /ko --> :</span> <span data-bind=\\\"text: DisapprovedInfo.Comment ? DisapprovedInfo.Comment : '-'\\\"></span> </div> </div> <div class=\\\"timewriting-disapproved__content-row\\\"> <!-- ko with: RowEditor --> <div class=\\\"timewriting-disapproved__content-wrapper\\\"> <div class=\\\"timewriting-disapproved__row\\\"> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name !== 'Description' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <div> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name === 'Description' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> </div> </div> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _cell --> <div class=\\\"timewriting-table-column__actions-buttons\\\"> <!-- ko if: Accepted --> <a href=\\\"#\\\" class=\\\"btn btn-info\\\" data-bind=\\\"visible: Visible, click: OnEditReservation, tooltip:{content: $parent._labels.EDIT}\\\"> <i class=\\\"fa fa-edit\\\"></i> </a> <a href=\\\"#\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"visible: Visible, click: OnDeleteReservation, tooltip:{content: $parent._labels.DELETE}\\\"> <i class=\\\"fa fa-trash\\\"></i> </a> <!-- /ko --> <!-- ko ifnot: Accepted --> <a href=\\\"#\\\" class=\\\"btn btn-warning accept\\\" data-bind=\\\"click: OnAcceptReservation\\\"> <!-- ko text: $parent._labels.ACCEPT --><!-- /ko --> </a> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _cell --> <div class=\\\"timewriting-table-column__actions-buttons\\\"> <a href=\\\"#\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: OnSaveReservationChanges, tooltip:{content: $parent._labels.SAVE}\\\"> <i class=\\\"fa fa-save\\\"></i> </a> <a href=\\\"#\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: OnCancelReservationChanges, tooltip:{content: $parent._labels.CANCEL}\\\"> <i class=\\\"fa fa-close\\\"></i> </a> </div> <!-- /ko -->\";\n// Exports\nexport default code;","//Libs\r\nimport * as ko from \"knockout\";\r\n\r\n//Common\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\n//Params\r\nimport {ITimeWritingParams} from \"Core/Components/Controls/TimeWriting/ITimeWritingParams\";\r\n\r\n//Utils\r\nimport {DateTime} from \"Core/Components/Controls/TimeWriting/Utils/DateTime\";\r\n\r\n//Icon\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\n//Views\r\nimport {TimeWritingView} from \"Core/Components/Controls/TimeWriting/Views/TimeWritingView\";\r\nimport {YearView} from \"Core/Components/Controls/TimeWriting/Views/Year/YearView\";\r\nimport {DayView} from \"Core/Components/Controls/TimeWriting/Views/Day/DayView\";\r\nimport {WeekView} from \"Core/Components/Controls/TimeWriting/Views/Week/WeekView\";\r\nimport {DisapprovedView} from \"Core/Components/Controls/TimeWriting/Views/Day/DisapprovedView\";\r\n\r\n\r\n//States\r\nimport {State as DayViewState} from \"Core/Components/Controls/TimeWriting/Views/Day/State\";\r\nimport {State as YearViewState} from \"Core/Components/Controls/TimeWriting/Views/Year/State\";\r\n\r\n//Templates\r\nimport TimeWritingTemplate from \"Core/Components/Controls/TimeWriting/Templates/TimeWriting.html\";\r\nimport {AttachedFieldModel} from \"../../../Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {ConfigModel} from \"Core/GeneralProperties/Models/ConfigModel\";\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\n\r\nko.templates[\"Core/Components/Controls/TimeWriting/Templates/TimeWriting\"] = TimeWritingTemplate;\r\n\r\nexport class TimeWriting extends Event {\r\n private _controlId: number;\r\n private _entityId: number;\r\n\r\n private _subjectEntityId: number;\r\n private _subjectEntityName: string;\r\n private _subjectEntityIcon: Icon;\r\n\r\n private _recordId: number | null;\r\n private _recordName: string;\r\n\r\n private _customFields: AttachedFieldModel[];\r\n private _properties: ConfigModel;\r\n\r\n private _view: KnockoutObservable<TimeWritingView>;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _currentDate: KnockoutObservable<Date>;\r\n private _zIndex: number;\r\n\r\n constructor(params: ITimeWritingParams) {\r\n super();\r\n\r\n this._controlId = params.ControlId;\r\n this._entityId = params.EntityId;\r\n\r\n this._subjectEntityId = params.SubjectEntityId;\r\n this._subjectEntityName = params.SubjectEntityName;\r\n this._subjectEntityIcon = params.SubjectEntityIcon;\r\n\r\n this._recordId = params.SubjectRecordId;\r\n this._recordName = params.SubjectRecordName;\r\n\r\n this._customFields = params.CustomFields;\r\n\r\n this._properties = params.Properties;\r\n\r\n this._view = ko.observable(null);\r\n this._isReady = ko.observable(false);\r\n this._currentDate = ko.observable(null);\r\n this._zIndex = ZIndexManager.Instance.NextValue;\r\n }\r\n\r\n get DayViewIsUsed() {\r\n return this._view() instanceof DayView;\r\n }\r\n\r\n Render(node: HTMLElement) {\r\n ko.cleanNode(node);\r\n ko.applyBindings(this, node);\r\n }\r\n\r\n GetTemplateName() {\r\n return \"Core/Components/Controls/TimeWriting/Templates/TimeWriting\";\r\n }\r\n\r\n AfterRender() {\r\n this._isReady(true);\r\n }\r\n\r\n Show(date: Date) {\r\n this.SwitchToDayView(date);\r\n }\r\n\r\n ShowStatic() {\r\n this.SwitchToStaticDayView();\r\n }\r\n\r\n CanBeUpdated() {\r\n return this._view().CanBeUpdated();\r\n }\r\n\r\n private SwitchToDayView(date: Date, userId?: number) {\r\n const dayView = new DayView({\r\n ControlId: this._controlId,\r\n EntityId: this._entityId,\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectEntityName: this._subjectEntityName,\r\n SubjectRecordId: this._recordId,\r\n SubjectRecordName: this._recordName,\r\n SubjectEntityIcon: this._subjectEntityIcon,\r\n CustomFields: this._customFields,\r\n Properties: this._properties\r\n });\r\n dayView.On('WeekClicked', this, eventArgs => this.RequestWeek(eventArgs.data.StartDate, eventArgs.data.EndDate, eventArgs.data.UserId));\r\n dayView.On(\"YearClicked\", this, eventArgs => this.RequestYear(eventArgs.data.State, eventArgs.data.UserId));\r\n dayView.On('DisapprovedClicked', this, (eventArgs) => {\r\n if (eventArgs.data.State && eventArgs.data.UserId) {\r\n this.RequestDisapproved(eventArgs.data.State.Date, eventArgs.data.UserId);\r\n }\r\n });\r\n dayView.Show(date, userId);\r\n this._view(dayView);\r\n }\r\n\r\n private SwitchToWeekView(startDate: Date, endDate: Date, userId: number) {\r\n const weekView = new WeekView({\r\n ControlId: this._controlId,\r\n EntityId: this._entityId,\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectEntityName: this._subjectEntityName,\r\n SubjectRecordId: this._recordId,\r\n SubjectRecordName: this._recordName,\r\n CustomFields: this._customFields,\r\n Properties: this._properties\r\n });\r\n\r\n weekView.On('DayClicked', this, eventArgs => this.OnDayClicked(eventArgs.data.Date, eventArgs.data.UserId));\r\n weekView.On(\"YearClicked\", this, eventArgs => this.RequestYear(eventArgs.data.State, eventArgs.data.UserId));\r\n\r\n weekView.Show({startDate, endDate}, userId);\r\n this._view(weekView);\r\n }\r\n\r\n private SwitchToStaticDayView() {\r\n const dayView = new DayView({\r\n ControlId: this._controlId,\r\n EntityId: this._entityId,\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectEntityName: this._subjectEntityName,\r\n SubjectRecordId: this._recordId,\r\n SubjectRecordName: this._recordName,\r\n SubjectEntityIcon: this._subjectEntityIcon,\r\n CustomFields: this._customFields,\r\n Properties: this._properties\r\n });\r\n dayView.ShowStatic();\r\n this._view(dayView);\r\n }\r\n\r\n private SwitchToYearView(year: number, userId?: number) {\r\n const yearView = new YearView({\r\n EntityId: this._entityId,\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectRecordId: this._recordId\r\n });\r\n yearView.On(\"WeekSelected\", this, eventArgs => this.OnWeekClicked(eventArgs.data.State, eventArgs.data.UserId));\r\n yearView.Show(year, userId);\r\n this._view(yearView);\r\n }\r\n\r\n private SwitchToDisapprovedView(date: Date, userId?: number) {\r\n const disapprovedView = new DisapprovedView({\r\n ControlId: this._controlId,\r\n EntityId: this._entityId,\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectEntityName: this._subjectEntityName,\r\n SubjectRecordId: this._recordId,\r\n SubjectRecordName: this._recordName,\r\n SubjectEntityIcon: this._subjectEntityIcon,\r\n CustomFields: this._customFields,\r\n Properties: this._properties\r\n });\r\n\r\n disapprovedView.On(\"DayViewClicked\", this, eventArgs => this.SwitchToDayView(eventArgs.data.State.Date, eventArgs.data.UserId));\r\n disapprovedView.Show(date, userId);\r\n this._view(disapprovedView);\r\n }\r\n\r\n private RequestYear(state: DayViewState, userId?: number) {\r\n this.SwitchToYearView(state.Year, userId);\r\n }\r\n\r\n private RequestDisapproved(date: Date, userId: number) {\r\n this.SwitchToDisapprovedView(date, userId);\r\n }\r\n\r\n private RequestWeek(startDate: Date, endDate: Date, userId: number) {\r\n this.SwitchToWeekView(startDate, endDate, userId);\r\n }\r\n\r\n private OnWeekClicked(state: YearViewState, userId: number) {\r\n const weekStartDate = DateTime.GetWeekStartByNumber(state.SelectedWeek.Number, state.Year);\r\n this.SwitchToDayView(weekStartDate, userId);\r\n }\r\n\r\n private OnDayClicked(date: Date, userId: number) {\r\n this.SwitchToDayView(date, userId);\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: _view --> <!-- ko template: {html: GetTemplate, afterRender: AfterRender} --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _component --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","//Libs\r\nimport * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n//Constants\r\nimport {DEFAULT_ICONS, FIELD_TYPES, RenderModes, TABLE_TYPES, SortGroups} from \"Core/Constant\";\r\n\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n//Control\r\nimport {ComplexControl} from \"Core/Controls/ComplexControl/ComplexControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {RequiredFieldModel} from \"Core/Controls/ComplexControl/Models/RequiredFieldModel\";\r\nimport TimeWritingConfig from 'Core/Controls/TimeWriting/Configs/time-writing-config.json';\r\n//Components\r\nimport {TimeWriting as TimeWritingComponent} from \"Core/Components/Controls/TimeWriting/TimeWriting\";\r\n//Templates\r\nimport ViewTemplate from \"Core/Controls/TimeWriting/Templates/View.html\";\r\nimport DesignTemplate from \"Core/Controls/TimeWriting/Templates/Design.html\";\r\nimport ToolBarTemplate from \"Core/Controls/TimeWriting/Templates/ToolBar.html\";\r\n\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {AttachedFieldModel} from \"../BaseControl/Models/AttachedFieldModel\";\r\nimport {FieldModel} from \"../../../QueryBuilder/Models/FieldModel\";\r\nimport {EntityModel} from \"../../../QueryBuilder/Models/EntityModel\";\r\nimport {Notifier} from \"../../Common/Notifier\";\r\nimport {NOTIFICATIONS} from \"../../Components/Translation/Locales\";\r\nimport {DesignScreen} from \"../../Screens/DesignScreen/DesignScreen\";\r\nimport {GeneralProperties} from \"../../GeneralProperties/GeneralProperties\";\r\n\r\nko.templates[\"Core/Controls/TimeWriting/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/TimeWriting/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/TimeWriting/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class TimeWriting extends ComplexControl {\r\n private _component: TimeWritingComponent;\r\n private _customFields: KnockoutObservableArray<AttachedFieldModel>;\r\n protected _isRendered: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, TimeWritingConfig);\r\n\r\n this.Init();\r\n this.BindEvents();\r\n\r\n if (this._renderMode() === RenderModes.View) {\r\n this._component.ShowStatic();\r\n }\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n SetValue(value: IControlValue) {\r\n if (this._renderMode() !== RenderModes.View || !value.SubjectEntityId || !value.SubjectRecordId) {\r\n return;\r\n }\r\n\r\n const screen = this.GetForm().GetScreen();\r\n const screenType = screen.GetType();\r\n const params = {\r\n ControlId: this.GetControlId(),\r\n EntityId: this._model().EntityId,\r\n SubjectEntityId: null,\r\n SubjectEntityName: null,\r\n SubjectEntityIcon: null,\r\n SubjectRecordId: null,\r\n SubjectRecordName: null,\r\n CustomFields: this._customFields(),\r\n Properties: this.GeneralProperties\r\n };\r\n\r\n if (screenType === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n params.SubjectEntityId = value.SubjectEntityId;\r\n params.SubjectEntityName = screen.GetEntityName();\r\n params.SubjectEntityIcon = screen.GetScreenIcon();\r\n params.SubjectRecordId = value.SubjectRecordId;\r\n }\r\n\r\n this._component = new TimeWritingComponent(params);\r\n screen.On('AGENDA_CHANGED', this, () => {\r\n if (this._component.DayViewIsUsed && this._component.CanBeUpdated()) {\r\n this._component.Show(new Date());\r\n }\r\n });\r\n\r\n this._isRendered.subscribe(() => this._component.Show(new Date()));\r\n }\r\n\r\n GetAttachedTableId() {\r\n return this._model().SubTableId || this._model().EntityId;\r\n }\r\n\r\n Init() {\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.TimeWriting));\r\n this._requiredFields([\r\n new RequiredFieldModel('BOOKEDTIMESUBJECT', FIELD_TYPES.Reference, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_USER', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('START', FIELD_TYPES.DateTime, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('TIMESPENT', FIELD_TYPES.TimeSpan, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_OVERWORKINDICATOR', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_PAYMENTINDICATOR', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_HOURKIND', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('BOOKEDCOUNTER', FIELD_TYPES.Integer, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('COMMENT', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_TIMESTATUS', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_DISAPPROVEREASON', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null)\r\n ]);\r\n this.InitRequiredFields();\r\n this.InitCustomFields();\r\n this.InitRuntime();\r\n }\r\n\r\n BindEvents() {\r\n if (this._renderMode() === RenderModes.Design) {\r\n const oldAttachedTableId = this.GetAttachedTableId();\r\n\r\n this._model.subscribe(() => {\r\n if (oldAttachedTableId !== this.GetAttachedTableId()) {\r\n this.Init();\r\n }\r\n });\r\n }\r\n }\r\n\r\n InitCustomFields() {\r\n const requiredFields = this._requiredFields();\r\n const customFields = _.filter(this._model().Fields, field => !_.some(requiredFields, rf => rf.DefaultName === field.Name));\r\n this._customFields = ko.observableArray(customFields);\r\n }\r\n\r\n InitRuntime() {\r\n if (this._renderMode() !== RenderModes.ToolBar && this._renderMode() !== RenderModes.Design) {\r\n this._component = new TimeWritingComponent({\r\n ControlId: this.GetControlId(),\r\n EntityId: this.GetAttachedTableId(),\r\n SubjectEntityId: null,\r\n SubjectEntityName: null,\r\n SubjectEntityIcon: null,\r\n SubjectRecordId: null,\r\n SubjectRecordName: null,\r\n CustomFields: this._customFields(),\r\n Properties: this.GeneralProperties\r\n });\r\n }\r\n }\r\n\r\n FormatFieldName(field: AttachedFieldModel) {\r\n if (field.FieldNameTranslation) {\r\n return field.FieldNameTranslation;\r\n }\r\n\r\n return field.Name;\r\n }\r\n\r\n GetComplexControlDesignTemplate() {\r\n return ComplexControl.designTemplate;\r\n }\r\n\r\n AfterDropField(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n if (targetContext instanceof TimeWriting && item instanceof FieldModel && sourceContext instanceof EntityModel) {\r\n const field = item as FieldModel;\r\n const table = sourceContext as EntityModel;\r\n\r\n if (table.EntityId !== this.GetAttachedTableId()) {\r\n new Notifier().Warning(NOTIFICATIONS.ONLY_CUSTOM_FIELDS_ALLOWED);\r\n return;\r\n }\r\n\r\n if (!SortGroups.InCustom(field.Sort) || field.IsSystem) {\r\n new Notifier().Warning(NOTIFICATIONS.ONLY_CUSTOM_FIELDS_ALLOWED);\r\n return;\r\n }\r\n\r\n const alreadyAddedField = _.some(this._model().Fields, f => f.Name === field.FieldName);\r\n\r\n if (alreadyAddedField) {\r\n new Notifier().Warning(NOTIFICATIONS.FIELD_ALREADY_ADDED);\r\n return;\r\n }\r\n\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = field.FieldId;\r\n attachedFieldModel.Name = field.FieldName;\r\n attachedFieldModel.FieldNameTranslation = field.FieldNameTranslation;\r\n attachedFieldModel.EntityName = table.EntityName;\r\n attachedFieldModel.EntityNameTranslation = table.EntityNameTranslation;\r\n attachedFieldModel.EntityTypeName = table.TypeName;\r\n attachedFieldModel.EntityId = table.EntityId;\r\n\r\n this._customFields.push(attachedFieldModel);\r\n this._model().Fields.push(attachedFieldModel);\r\n\r\n this.DesignChanged();\r\n }\r\n\r\n if(targetContext instanceof TimeWriting && item instanceof AttachedFieldModel){\r\n targetItems.splice(targetIndex, 0, sourceItems.splice(sourceIndex, 1)[0]);\r\n this.DesignChanged();\r\n\r\n _.forEach(targetItems(), (targetItem: AttachedFieldModel, i) => {\r\n targetItem.Sort = i * 10;\r\n })\r\n }\r\n }\r\n\r\n RemoveField(customField: AttachedFieldModel) {\r\n const customFieldIndex = this._customFields.indexOf(customField);\r\n this._customFields.splice(customFieldIndex, 1);\r\n\r\n const attachedFieldIndex = this._model().Fields.indexOf(customField);\r\n this._model().Fields.splice(attachedFieldIndex, 1);\r\n\r\n this.DesignChanged();\r\n }\r\n\r\n DesignChanged() {\r\n (this.GetForm().GetScreen() as DesignScreen).HasChanges = true;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"glyphicon glyphicon-time\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko template: {html: GetComplexControlDesignTemplate}--><!--/ko--> <div class=\\\"edit-grid-root dropfield-container group-elements\\\"> <!-- ko if: !_customFields().length --> <div class=\\\"group-control-placeholder\\\">Custom fields</div> <!-- /ko --> <div data-bind=\\\"dragula: { data: _customFields,\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t group: 'ToolBarToDesigner',\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t afterDrop: $data.AfterDropField.bind($data) }\\\" class=\\\"tab-drop-container\\\"> <div class=\\\"alert draggable-field position-r subTableField\\\"> <div data-bind=\\\"click: $parent.RemoveField.bind($parent, $data), preventBubble: ['click']\\\" class=\\\"close-wrapper\\\"> <span class=\\\"close remove-control\\\" title=\\\"Remove field\\\"></span> </div> <!--ko text: $parent.FormatFieldName.call($parent, $data) --><!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\nimport * as moment from 'moment';\r\n\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { Icon } from 'Core/Icon/Icon';\r\n\r\nimport { TimerStore } from 'Core/Controls/Timer/Stores/TimerStore';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { DATE_FORMATS } from 'Core/Constants/DateTimeFormats';\r\nimport {CONFIRMATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_EVENTS,\r\n Types\r\n} from \"../../../Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {PUB_SUB_EVENTS} from \"../../../../MenuManager/PubSubEvents\";\r\nimport {IActiveTimer, IActiveTimerModal, TimerModel} from \"Core/Controls/Timer/Models/TimerModel\";\r\nimport {StopTimerResponseModel} from 'Core/Controls/Timer/Models/StopTimerResponseModel';\r\n\r\nimport ActiveTimersModalTemplate from 'Core/Controls/Timer/ActiveTimersModal/Templates/ActiveTimersModal.html';\r\nko.templates['Core/Controls/Timer/ActiveTimersModal/Templates/ActiveTimersModal'] = ActiveTimersModalTemplate;\r\n\r\nexport class ActiveTimersModal extends Event{\r\n private _modal: Modal;\r\n private _labels = LABELS;\r\n private _activeTimersModal: KnockoutObservableArray<IActiveTimerModal>;\r\n private _el: HTMLElement;\r\n private _notifier: Notifier;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._notifier = new Notifier();\r\n this._el = null;\r\n this._modal = new Modal(\r\n {\r\n width: 480,\r\n closeOnEsc: true,\r\n addClass: 'active-timers-modal-container jBox-padding-10px',\r\n blockScroll: true\r\n },\r\n false\r\n );\r\n this._activeTimersModal = ko.observableArray([]);\r\n }\r\n\r\n Show() {\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n }\r\n\r\n Close() {\r\n if (this._modal){\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n OnOvertimeClick(timer: IActiveTimerModal) {\r\n const newOvertime = !timer.Overtime();\r\n TimerStore.SetOvertime({ Id: timer.Id, Overtime: newOvertime })\r\n .then(() => timer.Overtime(newOvertime))\r\n .fail(error => this._notifier.Failed(error.message));\r\n }\r\n\r\n StopTimer(timer: IActiveTimerModal){\r\n const dialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.DO_YOU_WANT_TO_STOP_RECORD_NAME.replace(\r\n '{recordName}',\r\n `<b>${timer.SubjectName}</b>`\r\n ),\r\n Type: Types.Question\r\n });\r\n\r\n dialog.On(CONFIRMATION_EVENTS.CONFIRM_SELECTED, this, () =>{\r\n const activeTimersWrapper = $(this._el).find('.active-timers')[0];\r\n\r\n BlockUI.Block({Target: activeTimersWrapper});\r\n TimerStore.StopTimer({EntityId: timer.EntityId, RecordId: timer.RecordId })\r\n .always(() => {\r\n BlockUI.Unblock(activeTimersWrapper);\r\n })\r\n .then((responseModel: StopTimerResponseModel) => {\r\n _.each(responseModel.WarningMessages, message => this._notifier.Failed(message));\r\n\r\n this._activeTimersModal.splice(this._activeTimersModal.indexOf(timer), 1);\r\n\r\n const stopTimers: Array<IActiveTimer> = [this.GetActiveTimerFromActiveTimerModal(timer)];\r\n this.Trigger('STOP_TIMER', stopTimers);\r\n\r\n if (!this._activeTimersModal().length){\r\n this.Close();\r\n }\r\n })\r\n .fail(error => this._notifier.Failed(error.message));\r\n });\r\n\r\n dialog.Show();\r\n }\r\n\r\n GoToRecordScreen(timer: IActiveTimerModal, event){\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n IsOpenInModal: event.ctrlKey\r\n });\r\n\r\n if (!event.ctrlKey){\r\n this.Close();\r\n }\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Controls/Timer/ActiveTimersModal/Templates/ActiveTimersModal';\r\n }\r\n\r\n GetActiveTimerFromActiveTimerModal(activeTimerModal: IActiveTimerModal | TimerModel): IActiveTimer {\r\n const timer = activeTimerModal as IActiveTimerModal | TimerModel;\r\n return {\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n Id: timer.Id,\r\n SubjectName: timer instanceof TimerModel ? timer.Subject.TranslatedName || timer.Subject.Name : timer.SubjectName\r\n }\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n if (el){\r\n this._el = el[0];\r\n }\r\n\r\n const activeTimerWrapper = $(this._el).find('.active-timers')[0];\r\n BlockUI.Block({Target: activeTimerWrapper});\r\n TimerStore.GetActiveTimers()\r\n .always(()=>{BlockUI.Unblock(activeTimerWrapper);})\r\n .then((timers: TimerModel[]) => {\r\n this._activeTimersModal(\r\n timers.map((timer: TimerModel ) => {\r\n const duration = moment().diff(moment(`${timer.Starting}Z`));\r\n const overtimeObservable = ko.observable(timer.Overtime);\r\n const maxDurationComputed = ko.pureComputed(() => (overtimeObservable() ? 17 : 9) * 60 * 60 * 1000);\r\n\r\n const timersMenu: Array<IActiveTimer> = [this.GetActiveTimerFromActiveTimerModal(timer)];\r\n PubSub.publish('START_ACTIVE_TIMER', timersMenu);\r\n\r\n return {\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n Id: timer.Id,\r\n Duration: ko.observable(duration),\r\n DurationFormatted: moment.utc(duration).format(DATE_FORMATS.LONG_TIME.Format),\r\n MaxDuration: maxDurationComputed,\r\n KnobColor: ko.pureComputed(() =>\r\n duration > maxDurationComputed() ? '#e7505a' : overtimeObservable() ? '#5c9bd1' : '#28a745'\r\n ),\r\n Overtime: overtimeObservable,\r\n Tooltip: ko.pureComputed(() =>\r\n LABELS.SET_THE_MAXIMUM_DURATION_TO_HOURS.replace(\r\n '{hours}',\r\n `${overtimeObservable() ? 9 : 17}`\r\n )\r\n ),\r\n SubjectName: timer.Subject.TranslatedName || timer.Subject.Name,\r\n Icon: new Icon(timer.Subject.Icon)\r\n };\r\n })\r\n );\r\n this._modal.Reposition();\r\n });\r\n }\r\n}\r\n","// Module\nvar code = \"<div class=\\\"active-timers-modal box-shadow-wrapper\\\"> <div class=\\\"active-timers-modal__header\\\"> <!-- ko text: _labels.ACTIVE_TIMERS --><!-- /ko --> </div> <div class=\\\"active-timers\\\"> <!-- ko foreach: _activeTimersModal --> <div class=\\\"active-timers-modal__timer-block\\\"> <div class=\\\"active-timers-modal__progress-icon\\\"> <input data-bind=\\\"knob: { value: Duration, max: MaxDuration, fgColor: KnobColor }\\\" data-readOnly=\\\"true\\\" data-width=\\\"30\\\" data-height=\\\"30\\\" data-displayInput=\\\"false\\\" data-bgColor=\\\"#ccc\\\"> </div> <div class=\\\"active-timers-modal__subject-container\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span class=\\\"active-timers-modal__subject\\\" data-bind=\\\"click: $parent.GoToRecordScreen.bind($parent)\\\"> <!-- ko text: SubjectName --><!-- /ko --> </span> </div> <div class=\\\"active-timers-modal__duration\\\"> <!-- ko text: DurationFormatted --><!-- /ko --> </div> <div data-bind=\\\"css: { 'active-timers-modal__overtime--enabled': Overtime }\\\" class=\\\"active-timers-modal__overtime\\\"> <button class=\\\"delete-timer-button\\\" data-bind=\\\"click: $parent.StopTimer.bind($parent)\\\"> <i class=\\\"fa fa-stop\\\" aria-hidden=\\\"true\\\"></i> </button> <button class=\\\"overtime-button\\\" data-bind=\\\"click: $parent.OnOvertimeClick, tooltip: { content: Tooltip(),\\r\\n position: {\\r\\n x: 'left',\\r\\n y: 'center'\\r\\n },\\r\\n outside: 'x',\\r\\n addClass: 'jBox-padding-5px' }\\\"> <i class=\\\"fa fa-history\\\"></i> </button> </div> </div> <!-- /ko --> <!-- ko if: _activeTimersModal().length === 0 --> <div class=\\\"no-active-timers-modal\\\"> <span data-bind=\\\"text: _labels.NO_ACTIVE_TIMERS + ' :('\\\"></span> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport { Icon } from 'Core/Icon/Icon';\r\n\r\nexport interface IActiveTimerModal {\r\n Id: number;\r\n Duration: KnockoutObservable<number>;\r\n DurationFormatted: string;\r\n MaxDuration: KnockoutComputed<number>;\r\n KnobColor: KnockoutComputed<string>;\r\n Overtime: KnockoutObservable<boolean>;\r\n Tooltip: KnockoutObservable<string>;\r\n SubjectName: string;\r\n Icon: Icon;\r\n EntityId: number;\r\n RecordId: number;\r\n}\r\n\r\nexport interface IActiveTimer {\r\n Id: number;\r\n SubjectName: string;\r\n EntityId: number;\r\n RecordId: number;\r\n}\r\n\r\nclass Subject {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n @deserializeAs(IconModel)\r\n Icon: IconModel;\r\n}\r\n\r\nexport class TimerModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Starting: string;\r\n\r\n @deserialize\r\n Overtime: boolean;\r\n\r\n @deserializeAs(Subject)\r\n Subject: Subject;\r\n\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n}\r\n","import {Deserialize} from 'libs/cerialize';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {TimerModel} from 'Core/Controls/Timer/Models/TimerModel';\r\nimport {StartTimerResponseModel} from 'Core/Controls/Timer/Models/StartTimerResponseModel';\r\nimport {StopTimerResponseModel} from 'Core/Controls/Timer/Models/StopTimerResponseModel';\r\n\r\nimport {NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\n\r\nexport class TimerStore {\r\n static GetIsTimerStarted(params: { EntityId: number; RecordId: number }) {\r\n const deferred = P.defer<boolean>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TimerApi/GetFirstTimer',\r\n type: 'GET'\r\n },\r\n params\r\n }).then(() => {\r\n return deferred.resolve(true);\r\n }).fail(error => {\r\n if (error.status === 404) {\r\n return deferred.resolve(false);\r\n }\r\n\r\n return deferred.reject(this.GetResponseError(error, NOTIFICATIONS.ERROR_READING_TIMER_STATE));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static GetActiveTimers() {\r\n const deferred = P.defer<TimerModel[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TimerApi/GetActiveTimers',\r\n type: 'GET'\r\n }\r\n }).then(data => {\r\n const result: TimerModel[] = Deserialize(data, TimerModel);\r\n deferred.resolve(result);\r\n })\r\n .fail(error => deferred.reject(this.GetResponseError(error, NOTIFICATIONS.ERROR_GETTING_ACTIVE_TIMERS)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static CheckActiveTimers(params: { EntityId: number; RecordId: number; ActiveTimers: string; DefaultHourkind: number }) {\r\n const deferred = P.defer<boolean>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TimerApi/CheckActiveTimers',\r\n type: 'POST'\r\n },\r\n params\r\n }).then(data => {\r\n const result: boolean = Deserialize(data);\r\n deferred.resolve(result);\r\n })\r\n .fail(error => deferred.reject(this.GetResponseError(error, \"Error checking active timers\")));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static StartTimer(params: { EntityId: number; RecordId: number; ActiveTimers: string, DefaultHourkind: number }) {\r\n const deferred = P.defer<StartTimerResponseModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TimerApi/StartTimer',\r\n type: 'POST'\r\n },\r\n params\r\n }).then((data: StartTimerResponseModel) => deferred.resolve(data))\r\n .fail(error => deferred.reject(this.GetResponseError(error, NOTIFICATIONS.ERROR_STARTING_TIMER)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static StopTimer(params: { EntityId: number; RecordId: number }) {\r\n const deferred = P.defer<any>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TimerApi/StopTimer',\r\n type: 'POST'\r\n },\r\n params\r\n })\r\n .then((data: StopTimerResponseModel) => deferred.resolve(data))\r\n .fail(error => deferred.reject(this.GetResponseError(error, NOTIFICATIONS.ERROR_STOPPING_TIMER)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static SetOvertime(params: { Id: number; Overtime: boolean }) {\r\n const deferred = P.defer<any>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TimerApi/SetOvertime',\r\n type: 'POST'\r\n },\r\n params\r\n }).then(data => deferred.resolve(null))\r\n .fail(error => deferred.reject(this.GetResponseError(error, NOTIFICATIONS.ERROR_SETTING_OVERTIME)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}\r\n","export const ActiveTimers = {\r\n NoLimitations: 'NoLimitations',\r\n OneActivePerEntity: 'OneActivePerEntity',\r\n OneActiveForAll: 'OneActiveForAll'\r\n}\r\nexport const PROPERTIES = {\r\n TIMER_AUTOSTART: 'TimerAutoStart'\r\n}","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\nimport * as moment from \"moment\";\r\n\r\nconst TimeRegex = /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/; //hh:mm:ss\r\n\r\nexport class LiveTimer {\r\n private _timerIntervalId: number | null = null;\r\n private _pausedDuration: number = 0;\r\n private _initTimer: KnockoutObservable<boolean>;\r\n private _formattedDuration: KnockoutObservable<string>\r\n\r\n public CurrentDuration: KnockoutObservable<number>;\r\n\r\n // Test: KnockoutComputed<string>;\r\n\r\n constructor(currentDuration: string | null = null) {\r\n this._initTimer = ko.observable(!!currentDuration);\r\n const totalSeconds = currentDuration ? this.GetDurationInSeconds(currentDuration) : 0;\r\n this.CurrentDuration = ko.observable(totalSeconds);\r\n this._formattedDuration = ko.observable(null);\r\n\r\n this._formattedDuration.subscribe((newValue) => {\r\n });\r\n }\r\n\r\n get InitTimer(): boolean {\r\n return this._initTimer();\r\n }\r\n\r\n HasValidDuration(duration: string): boolean {\r\n return TimeRegex.test(duration);\r\n }\r\n\r\n StartTimer() {\r\n if (this._timerIntervalId) {\r\n clearInterval(this._timerIntervalId);\r\n this._timerIntervalId = null;\r\n }\r\n\r\n this._timerIntervalId = setInterval(() => {\r\n this.CurrentDuration(this.CurrentDuration() + 1);\r\n this._formattedDuration(this.FormattedDuration(this.CurrentDuration()));\r\n }, 1000);\r\n }\r\n\r\n PauseTimer() {\r\n if (this._timerIntervalId) {\r\n clearInterval(this._timerIntervalId);\r\n this._timerIntervalId = null;\r\n this._pausedDuration = this.CurrentDuration();\r\n }\r\n }\r\n\r\n StopTimer() {\r\n if (this._timerIntervalId) {\r\n clearInterval(this._timerIntervalId);\r\n this._timerIntervalId = null;\r\n }\r\n\r\n this._pausedDuration = 0;\r\n this.CurrentDuration(0);\r\n this._formattedDuration('00:00:00');\r\n this._initTimer(false);\r\n }\r\n\r\n UpdateCurrentDuration(currentDuration: string = '00:00:00') {\r\n this._initTimer(true);\r\n const totalSeconds = this.GetDurationInSeconds(currentDuration);\r\n this.CurrentDuration(totalSeconds);\r\n }\r\n\r\n private GetDurationInSeconds(duration: string): number {\r\n const [hours, minutes, seconds] = duration.split(':');\r\n return (+hours * 3600) + (+minutes * 60) + (+seconds);\r\n }\r\n\r\n private TimerIsPaused() {\r\n return this._timerIntervalId === null;\r\n }\r\n\r\n private FormattedDuration(currentDuration?: number): string {\r\n const currDuration = this.TimerIsPaused() ? this._pausedDuration : currentDuration;\r\n const hours = Math.floor(currDuration / 3600);\r\n const minutes = Math.floor((currDuration % 3600) / 60);\r\n const seconds = currDuration % 60;\r\n\r\n return `${hours.toString().padStart(2, '0')}:${minutes\r\n .toString()\r\n .padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\nimport * as moment from \"moment\";\r\n\r\nimport {BaseControl, IControlValue} from '../BaseControl/BaseControl';\r\nimport {IControlParam, IForm, IScreen} from 'Core/Screens/IScreen';\r\n\r\nimport TimerConfigJson from 'Core/Controls/Timer/Configs/timer-config.json';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {ActiveTimersModal} from 'Core/Controls/Timer/ActiveTimersModal/ActiveTimersModal';\r\nimport {TimerStore} from 'Core/Controls/Timer/Stores/TimerStore';\r\n\r\nimport {\r\n ConfirmationDialog, EVENTS as CONFIRMATION_DIALOG_EVENTS, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {CONFIRMATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport {ActiveTimers} from \"./Constants/ActiveTimers\";\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {LiveTimer} from \"Core/Controls/Timer/LiveTimer\";\r\nimport {TimerModel, IActiveTimer} from \"Core/Controls/Timer/Models/TimerModel\";\r\nimport {StartTimerResponseModel} from 'Core/Controls/Timer/Models/StartTimerResponseModel';\r\nimport {StopTimerResponseModel} from 'Core/Controls/Timer/Models/StopTimerResponseModel';\r\nimport {EventArgs} from \"Core/Common/Event\";\r\n\r\nimport {KanbanCard} from \"Core/Controls/Kanban/KanbanCard\"\r\nimport {ActionModel} from \"Core/Controls/Kanban/Models/StatusModel\";\r\n\r\nimport ViewTemplate from 'Core/Controls/Timer/Templates/View.html';\r\nimport EditTemplate from 'Core/Controls/Timer/Templates/Edit.html';\r\nimport DesignTemplate from 'Core/Controls/Timer/Templates/Design.html';\r\nimport ToolBarTemplate from 'Core/Controls/Timer/Templates/ToolBar.html';\r\nimport HelpViewTemplate from 'Core/Controls/Timer/Templates/HelpView.html';\r\nimport LiveTimerForKanbanTemplate from 'Core/Controls/Timer/Templates/LiveTimerForKanban.html';\r\n\r\nko.templates['Core/Controls/Timer/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Timer/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Timer/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Timer/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Timer/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Timer/Templates/LiveTimerForKanban'] = LiveTimerForKanbanTemplate;\r\n\r\nexport class Timer extends BaseControl {\r\n HasTimerStarted = ko.observable(false);\r\n private _defaultHourkind: number;\r\n private _defaultActiveTimers: string;\r\n\r\n private _activeTimers: KnockoutObservableArray<IActiveTimer>;\r\n\r\n private _timerEntityId: KnockoutObservable<number>;\r\n private _timerRecordId: KnockoutObservable<number>;\r\n private _currentDuration: KnockoutObservable<string>;\r\n\r\n private _liveTimer: KnockoutObservable<LiveTimer>;\r\n private _kanbanMode: boolean;\r\n private _notifier: Notifier;\r\n private _actionRecord: ActionModel;\r\n\r\n private _timerAutoStart: boolean;\r\n constructor(params: IControlParam) {\r\n super(params, TimerConfigJson);\r\n\r\n this._notifier = new Notifier();\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0'\r\n };\r\n });\r\n\r\n this._activeTimers = ko.observableArray([]);\r\n\r\n this._timerEntityId = ko.observable(null);\r\n this._timerRecordId = ko.observable(null);\r\n this._currentDuration = ko.observable(null);\r\n\r\n this._timerAutoStart = false;\r\n\r\n this.ApplyProperties();\r\n\r\n this._liveTimer = ko.observable(new LiveTimer(null));\r\n this._kanbanMode = false;\r\n this._actionRecord = null;\r\n\r\n this.BindEvents();\r\n }\r\n\r\n private BindEvents() {\r\n const self = this;\r\n\r\n PubSub.subscribe('STOP_ACTIVE_TIMERS',(message, data: Array<IActiveTimer>) =>{\r\n const stopTimer: IActiveTimer = data[0];\r\n\r\n if (stopTimer && this.TimerEntityId === stopTimer.EntityId && this.TimerRecordId === stopTimer.RecordId){\r\n self.HasTimerStarted(false);\r\n self.ResetTimersInActionRecord(self.ActionRecord);\r\n self.StopLiveTimer(self);\r\n }\r\n\r\n const idToDelete = stopTimer.Id;\r\n const indexToDelete = self._activeTimers().findIndex((item) => item.Id === idToDelete);\r\n if (indexToDelete !== -1) {\r\n self._activeTimers.splice(indexToDelete, 1);\r\n }\r\n })\r\n\r\n PubSub.subscribe('START_ACTIVE_TIMERS', (message, data: Array<TimerModel>) => {\r\n const startTimer: TimerModel = data[0];\r\n\r\n if (startTimer && this.TimerEntityId === startTimer.EntityId && this.TimerRecordId === startTimer.RecordId){\r\n this.HasTimerStarted(true);\r\n\r\n if (this.KanbanMode) {\r\n this.ActionRecord.NewActiveTimerModel = startTimer;\r\n }\r\n this.StartLiveTimer(startTimer);\r\n\r\n const activeTimers: Array<IActiveTimer> = _.map(data, (timer: TimerModel) => {\r\n let activeTimer: IActiveTimer = {\r\n Id: timer.Id,\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n SubjectName: timer.Subject.TranslatedName || timer.Subject.Name\r\n }\r\n return activeTimer;\r\n });\r\n\r\n const activeTimerIds = new Set(this._activeTimers().map(timer => timer.Id));\r\n this._activeTimers.push(...activeTimers.filter(timer => !activeTimerIds.has(timer.Id)));\r\n\r\n PubSub.publish('START_ACTIVE_TIMER', activeTimers);\r\n } else {\r\n if (this._defaultActiveTimers !== ActiveTimers.NoLimitations && this._activeTimers().length){\r\n _.each(this._activeTimers(), (timer: IActiveTimer) => {\r\n if (this.TimerRecordId === timer.RecordId) {\r\n PubSub.publish('STOP_ACTIVE_TIMERS', [timer]);\r\n }\r\n })\r\n }\r\n }\r\n })\r\n\r\n }\r\n get ActiveTimers() : KnockoutObservableArray<IActiveTimer> {\r\n return this._activeTimers;\r\n }\r\n\r\n get TimerAutostart(): boolean {\r\n return this._timerAutoStart\r\n }\r\n\r\n set TimerEntityId(entityId: number) {\r\n this._timerEntityId(entityId);\r\n };\r\n\r\n get TimerEntityId(): number {\r\n const form: IForm = this.GetForm();\r\n return this._timerEntityId() ||\r\n (form && form.GetScreen() && form.GetScreen().GetEntityId());\r\n };\r\n\r\n set TimerRecordId(recordId: number) {\r\n this._timerRecordId(recordId);\r\n };\r\n\r\n get TimerRecordId(): number {\r\n const form: IForm = this.GetForm();\r\n return this._timerRecordId() ||\r\n (form && form.GetScreen() && form.GetScreen().GetRecordId());\r\n };\r\n\r\n set ActionRecord(record: ActionModel) {\r\n this._actionRecord = record;\r\n }\r\n\r\n get ActionRecord(): ActionModel {\r\n return this._actionRecord\r\n }\r\n\r\n set KanbanMode(data: boolean) {\r\n this._kanbanMode = data;\r\n }\r\n\r\n get KanbanMode(): boolean {\r\n return this._kanbanMode\r\n }\r\n\r\n set CurrentDuration(starting: string) {\r\n const durationInt = moment().diff(moment(`${starting}Z`));\r\n const durationFormatted = moment.utc(durationInt).format(DATE_FORMATS.LONG_TIME.Format);\r\n\r\n this._currentDuration(durationFormatted);\r\n }\r\n\r\n get CurrentDuration(): string {\r\n return this._currentDuration();\r\n }\r\n\r\n get TooltipValue(): string {\r\n return LABELS.START_TIMER;\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (!this.TimerEntityId || !this.TimerRecordId) {\r\n this._model().IsDisabledByCondition = true;\r\n }\r\n }\r\n\r\n ShowConfirmModalForCheckActiveTimers(target?: HTMLElement){\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.THE_TIMER_IS_ALREADY_STARTED,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\r\n BlockUI.Block(BlockUI.GetTargetObjectFromTarget(target));\r\n TimerStore.StartTimer({EntityId: this.TimerEntityId, RecordId: this.TimerRecordId, ActiveTimers: this._defaultActiveTimers, DefaultHourkind: this._defaultHourkind })\r\n .always(() => {\r\n BlockUI.Unblock(target ? target : null);\r\n })\r\n .then((responseModel: StartTimerResponseModel) => {\r\n _.each(responseModel.WarningMessages, message => this._notifier.Failed(message));\r\n\r\n this.HasTimerStarted(true);\r\n PubSub.publish('START_ACTIVE_TIMERS', [responseModel.ActiveTimer]);\r\n })\r\n .fail(error => this._notifier.Failed(error.message));\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n InitTimer() {\r\n if (this.HasTimerStarted()) {\r\n this.StopTimer(this.TimerEntityId, this.TimerRecordId);\r\n return;\r\n }\r\n\r\n if (this._defaultActiveTimers === ActiveTimers.NoLimitations) {\r\n this.StartTimer(this.TimerEntityId, this.TimerRecordId, this._el);\r\n return;\r\n }\r\n\r\n this.CheckActiveTimers(this.TimerEntityId, this.TimerRecordId);\r\n }\r\n\r\n OnTimerClick() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n return;\r\n }\r\n\r\n this.InitTimer();\r\n }\r\n\r\n OpenActiveTimersModal() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n return;\r\n }\r\n\r\n const activeTimersModal = new ActiveTimersModal();\r\n activeTimersModal.On('STOP_TIMER', this, (data: EventArgs)=>{\r\n const activeTimer: IActiveTimer = data.data;\r\n if (this.TimerEntityId === activeTimer.EntityId && this.TimerRecordId === activeTimer.RecordId){\r\n this.HasTimerStarted(false);\r\n }\r\n PubSub.publish('STOP_ACTIVE_TIMERS', activeTimer);\r\n })\r\n activeTimersModal.Show();\r\n }\r\n\r\n AutoStopActiveTimer(): void {\r\n if (this.Screen.AllowTimerAutoStop && this.IsRunTime && this.IsConsultScreen ) {\r\n if (this._timerAutoStart && this.HasTimerStarted()) {\r\n const stopTimer: IActiveTimer = _.find(this._activeTimers(), timer=> timer.RecordId === this.TimerRecordId && timer.EntityId === this.TimerEntityId);\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: LABELS.STOP_THE_TIMER_FOR.replace('{recordName}', `<b>${stopTimer.SubjectName}</b>`),\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.StopTimer(this.TimerEntityId, this.TimerRecordId);\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n }\r\n }\r\n\r\n AutoStartTimer() {\r\n if (!this.HasTimerStarted() && this.IsRunTime && this.IsConsultScreen) {\r\n if (this._timerAutoStart) {\r\n this.OnTimerClick();\r\n }\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n const self = this;\r\n if (el) {\r\n this._el = el[0];\r\n }\r\n\r\n if (this.TimerEntityId && this.TimerRecordId && !this.KanbanMode) {\r\n TimerStore.GetIsTimerStarted({EntityId: this.TimerEntityId, RecordId: this.TimerRecordId})\r\n .then((isTimerStarted: boolean) => {\r\n this.HasTimerStarted(isTimerStarted);\r\n this.AutoStartTimer();\r\n })\r\n .fail((error) => {\r\n this._notifier.Failed(error.message)\r\n });\r\n this.GetActiveTimers();\r\n }\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(this._el, () => {\r\n self.StopLiveTimer(self);\r\n self.AutoStopActiveTimer();\r\n });\r\n }\r\n\r\n GetActiveTimers(){\r\n TimerStore.GetActiveTimers()\r\n .then(timers => {\r\n this._activeTimers(\r\n timers.map(timer => {\r\n return {\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n Id: timer.Id,\r\n SubjectName: timer.Subject.TranslatedName || timer.Subject.Name\r\n };\r\n })\r\n );\r\n if (this._activeTimers().length){\r\n PubSub.publish('START_ACTIVE_TIMERS', timers);\r\n }\r\n })\r\n }\r\n\r\n StopTimer(_entityId: number = null, _recordId: number = null, target?: HTMLElement): void{\r\n const entityId = _entityId ? _entityId : this.TimerEntityId;\r\n const recordId = _recordId ? _recordId : this.TimerRecordId;\r\n\r\n BlockUI.Block(BlockUI.GetTargetObjectFromTarget(target));\r\n TimerStore.StopTimer({EntityId: entityId, RecordId: recordId })\r\n .always(() => {\r\n BlockUI.Unblock(target ? target : null);\r\n })\r\n .then((responseModel: StopTimerResponseModel) => {\r\n _.each(responseModel.WarningMessages, message => this._notifier.Failed(message));\r\n\r\n this.HasTimerStarted(false);\r\n const stopTimer: IActiveTimer = _.find(this._activeTimers(), timer=> timer.RecordId === recordId && timer.EntityId === entityId);\r\n if (stopTimer){\r\n const timers: Array<IActiveTimer> = [stopTimer]\r\n PubSub.publish('STOP_ACTIVE_TIMERS', timers);\r\n }\r\n })\r\n .fail(error => this._notifier.Failed(error.message));\r\n }\r\n\r\n StartTimer(_entityId: number = null, _recordId: number = null, target?: HTMLElement): void {\r\n const entityId = _entityId ? _entityId : this.TimerEntityId;\r\n const recordId = _recordId ? _recordId : this.TimerRecordId;\r\n\r\n BlockUI.Block(BlockUI.GetTargetObjectFromTarget(target));\r\n TimerStore.StartTimer({EntityId: entityId, RecordId: recordId, ActiveTimers: this._defaultActiveTimers, DefaultHourkind: this._defaultHourkind})\r\n .always(() => {\r\n BlockUI.Unblock(target ? target : null);\r\n })\r\n .then((responseModel: StartTimerResponseModel) => {\r\n _.each(responseModel.WarningMessages, message => this._notifier.Failed(message));\r\n\r\n if (this._timerAutoStart) {\r\n let timerName: string = `<b>${responseModel.ActiveTimer.Subject.TranslatedName ||responseModel.ActiveTimer.Subject.Name}</b>`;\r\n new Notifier().Success(LABELS.THE_TIMER_FOR_STARTED_AUTOMATICALLY.replace('{recordName}', timerName));\r\n }\r\n PubSub.publish('START_ACTIVE_TIMERS', [responseModel.ActiveTimer]);\r\n })\r\n .fail(error => this._notifier.Failed(error.message));\r\n }\r\n\r\n CheckActiveTimers(_entityId: number = null, _recordId: number = null, target?: HTMLElement): void {\r\n const entityId = _entityId ? _entityId : this.TimerEntityId;\r\n const recordId = _recordId ? _recordId : this.TimerRecordId;\r\n\r\n BlockUI.Block();\r\n TimerStore.CheckActiveTimers({EntityId: entityId, RecordId: recordId, ActiveTimers: this._defaultActiveTimers, DefaultHourkind: this._defaultHourkind})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (result){\r\n this.ShowConfirmModalForCheckActiveTimers(target);\r\n } else {\r\n this.HasTimerStarted(true);\r\n this.GetActiveTimers();\r\n }\r\n })\r\n .fail(error => {\r\n this._notifier.Failed(error.message)\r\n });\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n if (this.Properties.Hourkinds) {\r\n\r\n _.each(this.Properties.Hourkinds.Properties, (property: any) => {\r\n if (property.DefaultHourkind) {\r\n this._defaultHourkind = parseInt(property.DefaultHourkind.Value) || null;\r\n }\r\n });\r\n }\r\n\r\n if (this.Properties.ActiveTimers) {\r\n\r\n _.each(this.Properties.ActiveTimers.Properties, (property: any) => {\r\n if (property.DefaultActiveTimers) {\r\n this._defaultActiveTimers = property.DefaultActiveTimers.Value || null;\r\n }\r\n });\r\n }\r\n\r\n if (this.Properties.AutoStart) {\r\n _.each(this.Properties.AutoStart.Properties, (property: any) => {\r\n this._timerAutoStart = property.TimerAutoStart || this._model().IsAutoStartByCondition;\r\n });\r\n }\r\n\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n StopLiveTimer(_self?: Timer){\r\n const liveTimer = _self?.KanbanMode ? _self._liveTimer() : this.KanbanMode && this._liveTimer();\r\n\r\n if (liveTimer?.InitTimer) {\r\n liveTimer.StopTimer();\r\n }\r\n }\r\n\r\n StartLiveTimer(timer: TimerModel){\r\n if (this.KanbanMode){\r\n const durationInt = moment().diff(moment(`${timer.Starting}Z`));\r\n const durationFormatted = moment.utc(durationInt).format(DATE_FORMATS.LONG_TIME.Format);\r\n this.SetLiveTimerCurrentDuration(durationFormatted);\r\n }\r\n }\r\n\r\n SetLiveTimerCurrentDuration(currentDuration: string): void {\r\n const liveTimer = this._liveTimer();\r\n if ( liveTimer.HasValidDuration(currentDuration) ) {\r\n liveTimer.UpdateCurrentDuration(currentDuration);\r\n liveTimer.StartTimer();\r\n }\r\n }\r\n\r\n SetKanbanActiveTimer(timer: TimerModel) {\r\n const durationInt = moment().diff(moment(`${timer.Starting}Z`));\r\n const durationFormatted = moment.utc(durationInt).format(DATE_FORMATS.LONG_TIME.Format);\r\n this.HasTimerStarted(true);\r\n\r\n this._activeTimers().push({\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n Id: timer.Id,\r\n SubjectName: timer.Subject.TranslatedName || timer.Subject.Name\r\n });\r\n\r\n this.SetLiveTimerCurrentDuration(durationFormatted);\r\n }\r\n\r\n ResetTimersInActionRecord(actionRecord: ActionModel): void {\r\n if (actionRecord) {\r\n actionRecord.NewActiveTimerModel = null;\r\n actionRecord.ActiveTimer = null;\r\n }\r\n }\r\n\r\n OnTimerClickFromKanbanCard(kanbanCard: KanbanCard, timer: Timer, event: JQuery.ClickEvent<HTMLElement>): void {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n return;\r\n }\r\n\r\n const target: HTMLElement = kanbanCard && kanbanCard.Element as HTMLElement;\r\n\r\n if (this.HasTimerStarted()) {\r\n this.StopTimer(this.TimerEntityId, this.TimerRecordId, target);\r\n return;\r\n }\r\n\r\n if (this._defaultActiveTimers === ActiveTimers.NoLimitations) {\r\n this.StartTimer(this.TimerEntityId, this.TimerRecordId, target);\r\n return;\r\n }\r\n\r\n this.CheckActiveTimers(this.TimerEntityId, this.TimerRecordId, target);\r\n }\r\n\r\n GetLiveTimerForKanbanTemplateName() {\r\n return 'Core/Controls/Timer/Templates/LiveTimerForKanban';\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"subFormControl timer-control--box\\\"> <span class=\\\"timer-control\\\"> <button data-bind=\\\"click: OnTimerClick, style: _style\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp timer-button\\\"> <i class=\\\"fa fa-clock-o\\\" aria-hidden=\\\"true\\\" data-bind=\\\"css:{'spin': HasTimerStarted}\\\"></i> <span> <!-- ko if: HasTimerStarted --> <!-- ko text: _labels.STOP --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: HasTimerStarted --> <!-- ko text: _labels.START --><!-- /ko --> <!-- /ko --> </span> </button> <span class=\\\"timer-control__wrapperSeparator\\\" data-bind=\\\"style: {\\r\\n backgroundColor: _backgroundColor,\\r\\n borderTopStyle: 'solid',\\r\\n borderBottomStyle: 'solid',\\r\\n borderTopColor: _borderColor,\\r\\n borderBottomColor: _borderColor,\\r\\n borderTopWidth: _border ? '1px' : '0',\\r\\n borderBottomWidth: _border ? '1px' : '0',\\r\\n borderRadius: 'unset'\\r\\n }\\\"> <span class=\\\"timer-control__separator\\\" data-bind=\\\"style: {backgroundColor: _color}\\\"></span> </span> <button data-bind=\\\"click: OpenActiveTimersModal, tooltip: { content: _labels.CLICK_TO_SHOW_ACTIVE_TIMERS }, style: _style\\\" style=\\\"border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp\\\"><i class=\\\"fa fa-hourglass\\\" aria-hidden=\\\"true\\\"></i></button> </span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"subFormControl timer-control--box\\\"> <span class=\\\"timer-control\\\"> <button data-bind=\\\"click: OnTimerClick, attr: { disabled: IsDisabledByCondition }, style: _style\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp timer-button\\\"> <i class=\\\"fa fa-clock-o\\\" data-bind=\\\"css:{'spin': HasTimerStarted}\\\"></i> <span> <!-- ko if: HasTimerStarted --> <!-- ko text: _labels.STOP --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: HasTimerStarted --> <!-- ko text: _labels.START --><!-- /ko --> <!-- /ko --> </span> </button> <span class=\\\"timer-control__wrapperSeparator\\\" data-bind=\\\"attr: { disabled: IsDisabledByCondition }, style: {\\r\\n backgroundColor: _backgroundColor,\\r\\n borderTopStyle: 'solid',\\r\\n borderBottomStyle: 'solid',\\r\\n borderTopColor: _borderColor,\\r\\n borderBottomColor: _borderColor,\\r\\n borderTopWidth: _border ? '1px' : '0',\\r\\n borderBottomWidth: _border ? '1px' : '0',\\r\\n borderRadius: 'unset'\\r\\n }\\\"> <span class=\\\"timer-control__separator\\\" data-bind=\\\"style: {backgroundColor: _color}\\\"></span> </span> <button data-bind=\\\"click: OpenActiveTimersModal, attr: { disabled: IsDisabledByCondition }, tooltip: { content: _labels.CLICK_TO_SHOW_ACTIVE_TIMERS }, style: _style\\\" tabindex=\\\"-1\\\" style=\\\"border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset\\\" class=\\\"btn blue-sharp\\\"><i class=\\\"fa fa-hourglass\\\"></i></button> </span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"subFormControl timer-control--box\\\"> <span class=\\\"timer-control\\\"> <button class=\\\"btn blue-sharp\\\" data-bind=\\\"style: _style\\\" style=\\\"border-right:none;border-top-right-radius:unset;border-bottom-right-radius:unset\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!-- ko text: _labels.TIMER --><!-- /ko --> </button> <span class=\\\"timer-control__wrapperSeparator\\\" data-bind=\\\"style: {\\r\\n backgroundColor: _backgroundColor,\\r\\n borderTopStyle: 'solid',\\r\\n borderBottomStyle: 'solid',\\r\\n borderTopColor: _borderColor,\\r\\n borderBottomColor: _borderColor,\\r\\n borderTopWidth: _border ? '1px' : '0',\\r\\n borderBottomWidth: _border ? '1px' : '0',\\r\\n borderRadius: 'unset'\\r\\n }\\\"> <span class=\\\"timer-control__separator\\\" data-bind=\\\"style: {backgroundColor: _color}\\\"></span> </span> <button class=\\\"btn blue-sharp\\\" data-bind=\\\"style: _style\\\" style=\\\"border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset\\\"> <i class=\\\"fa fa-hourglass\\\"></i> </button> </span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-sharp subFormControl\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!-- ko text: _labels.TIMER --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"subFormControl timer-control--box\\\"> <span class=\\\"timer-control\\\"> <button class=\\\"btn blue-sharp\\\" data-bind=\\\"style: _style\\\" style=\\\"border-right:none;border-top-right-radius:unset;border-bottom-right-radius:unset\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!-- ko text: _labels.TIMER --><!-- /ko --> </button> <span class=\\\"timer-control__wrapperSeparator\\\" data-bind=\\\"style: {\\r\\n backgroundColor: _backgroundColor,\\r\\n borderTopStyle: 'solid',\\r\\n borderBottomStyle: 'solid',\\r\\n borderTopColor: _borderColor,\\r\\n borderBottomColor: _borderColor,\\r\\n borderTopWidth: _border ? '1px' : '0',\\r\\n borderBottomWidth: _border ? '1px' : '0',\\r\\n borderRadius: 'unset'\\r\\n }\\\"> <span class=\\\"timer-control__separator\\\" data-bind=\\\"style: {backgroundColor: _color}\\\"></span> </span> <button class=\\\"btn blue-sharp\\\" data-bind=\\\"style: _style\\\" style=\\\"border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset\\\"> <i class=\\\"fa fa-hourglass\\\"></i> </button> </span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"kanban-card-timer\\\" data-bind=\\\"click: OnTimerClickFromKanbanCard.bind($data, $parent), tooltip: {content: TooltipValue}\\\"> <div class=\\\"kanban-card-timer__icon-box\\\"> <i class=\\\"fa fa-clock-o\\\" data-bind=\\\"css:{'spin': HasTimerStarted}\\\"></i> </div> <!-- ko with: _liveTimer() --> <!-- ko if: $parent.HasTimerStarted() --> <!-- ko if: _initTimer() --> <span class=\\\"kanban-card-timer__duration slide-in-animated\\\" data-bind=\\\"text: _formattedDuration()\\\"></span> <!-- /ko --> <!-- /ko --> <!-- <span class=\\\"kanban-card-timer__duration\\\" data-bind=\\\"text: _formattedDuration(), css: {'animated-text': _initTimer(), 'visible-duration': _initTimer(), 'not-visible-duration': !_initTimer()}\\\"></span>--> <!-- /ko --> </div>\";\n// Exports\nexport default code;","export enum DataModes {\r\n\tDefault,\r\n\tFollowUp,\r\n\tCopy,\r\n\tCopyWithRelations,\r\n\tCopyToType\r\n}","export class LifeStatuses {\r\n\tstatic Enabled = new LifeStatuses(\"Enabled\");\r\n\tstatic Disabled = new LifeStatuses(\"Disabled\");\r\n\r\n\tprivate readonly _name: string;\r\n\r\n\tprivate constructor(name: string) {\r\n\t\tthis._name = name;\r\n\t}\r\n\r\n\tget Name() {\r\n\t\treturn this._name;\r\n\t}\r\n\r\n\tstatic GetAll() {\r\n\t\treturn [\r\n\t\t\tLifeStatuses.Enabled.Name,\r\n\t\t\tLifeStatuses.Disabled.Name\r\n\t\t];\r\n\t}\r\n}","export enum SearchGroups {\r\n\tAll,\t\t\t\r\n\tActive,\t\t\t\r\n\tArchive,\t\t\r\n\tExample,\t\t\r\n\r\n\tPlanned,\r\n\tAcquired,\r\n\tMaintained,\r\n\tOperational,\r\n\tRetired\r\n}\r\n\r\nexport const LifeStatusGroupIndexes = [0, 1, 2, 3];\r\n\r\nexport const SimpleFilterGroupsSet = [0, 1, 2, 3];\r\n\r\nexport const MappedSearchGroups = {\r\n\t[SearchGroups[0]]: 0,\r\n\t[SearchGroups[1]]: 1,\r\n\t[SearchGroups[2]]: 6,\r\n\t[SearchGroups[3]]: 8,\r\n\r\n\t[SearchGroups[4]]: 2,\r\n\t[SearchGroups[5]]: 3,\r\n\t[SearchGroups[6]]: 4,\r\n\t[SearchGroups[7]]: 5,\r\n\t[SearchGroups[8]]: 7,\r\n\t[SearchGroups[9]]: 1\r\n};","import * as moment from 'moment';\r\n\r\nimport { DATE_FORMATS } from 'Core/Constants/DateTimeFormats';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\n\r\nexport interface ErrorItem {\r\n Error: string;\r\n Timestamp: string;\r\n}\r\n\r\nconst errors: ErrorItem[] = [];\r\n\r\nexport const ErrorHolder = {\r\n SaveError: (error: string) => {\r\n errors.push({\r\n Error: error,\r\n Timestamp: moment(FormatConverter.ShiftTimeZone(moment().format(), true)).format(\r\n DATE_FORMATS.FULL_DATETIME.Format\r\n )\r\n });\r\n },\r\n GetErrors: () => errors\r\n};\r\n","import * as ko from \"knockout\";\r\n\r\nexport abstract class BaseProperty {\r\n private _name: string;\r\n\tprivate _type: string;\r\n\tprivate _valueRequired: boolean;\r\n\tprotected _isEnabled: KnockoutObservable<boolean>;\r\n\tprivate _warningMessage: KnockoutObservable<string>;\r\n\tprivate _propertyDescriptionType: string;\r\n\r\n Value: KnockoutObservable<any>;\r\n\r\n\tconstructor(property: IPropertyDescription, isEnabled: boolean = true) {\r\n this._name = property.Name;\r\n\t\tthis._type = property.PropertyManager;\r\n\t\tthis._propertyDescriptionType = property.Type;\r\n\t\tthis._valueRequired = property.ValueRequired;\r\n\t\tthis._isEnabled = ko.observable(isEnabled);\r\n\t\tthis._warningMessage = ko.observable(null);\r\n\t}\r\n\r\n\tget PropertyDescriptionType() {\r\n\t\treturn this._propertyDescriptionType\r\n\t}\r\n\r\n\tOnInit() {\r\n\r\n\t}\r\n\r\n GetTemplateName(): string {\r\n return \"\";\r\n }\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\r\n\t}\r\n\r\n\tget IsEnabled(): KnockoutObservable<boolean> {\r\n\t\treturn this._isEnabled;\r\n\t}\r\n\r\n\tSetEnabled(enable: boolean) {\r\n\t\tthis._isEnabled(enable);\r\n\t}\r\n\r\n get Name() {\r\n return this._name;\r\n }\r\n\r\n get Type() {\r\n return this._type;\r\n\t}\r\n\r\n\tget ValueRequired() {\r\n\t\treturn this._valueRequired;\r\n\t}\r\n\r\n\tset WarningMessage(warningMessage: string) {\r\n\t\tthis._warningMessage(warningMessage);\r\n\t}\r\n\r\n\tget WarningMessage(): string {\r\n\t\treturn this._warningMessage();\r\n\t}\r\n\r\n GetDefaultValue(): any { }\r\n\r\n\tSetValue(propertyValue: any) { }\r\n\r\n\tIsValid(): boolean { return true; }\r\n\r\n\tErrorMessage(): string { return null; }\r\n\r\n\tReset() {};\r\n}\r\n\r\nexport interface IPropertyOption {\r\n\tName: string;\r\n\tValue: any;\r\n}\r\n\r\nexport interface IPropertyDescription {\r\n Name: string;\r\n\tType: string;\r\n\tPropertyManager: string;\r\n\tValueRequired: boolean;\r\n Options: Array<IPropertyOption>;\r\n Source: ISource;\r\n\tDefaultValue?: any;\r\n}\r\n\r\nexport interface IPropertySortOption {\r\n\tFieldId: number;\r\n\tSortOrder: number;\r\n}\r\n\r\nexport interface ISource {\r\n TableName: string;\r\n Value: string;\r\n DisplayValue: string;\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {BaseProperty, IPropertyDescription, IPropertyOption} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nexport class BaseSelectProperty extends BaseProperty {\r\n protected _options: KnockoutObservableArray<IPropertyOption>;\r\n private _initialValue: KnockoutObservable<IPropertyOption>;\r\n private _labels = LABELS;\r\n\r\n Value: KnockoutObservable<IPropertyOption>;\r\n IsInitiated: KnockoutObservable<boolean>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IPropertyOption) {\r\n super(property);\r\n\r\n this._options = ko.observableArray([]);\r\n this._initialValue = ko.observable(propertyValue);\r\n this.Value = ko.observable(null);\r\n this.IsInitiated = ko.observable(false);\r\n }\r\n\r\n get Options(): KnockoutObservableArray<IPropertyOption> {\r\n return this._options;\r\n }\r\n\r\n GetDefaultValue() {\r\n return _.first(this._options());\r\n }\r\n\r\n SetValue(propertyValue: IPropertyOption, isSearchMode?: boolean): void {\r\n if (!propertyValue) {\r\n this.Value(this.GetDefaultValue());\r\n return;\r\n }\r\n\r\n let selectedValue = _.find(this._options(), option => option.Value === propertyValue.Value);\r\n\r\n this.Value(selectedValue || this.GetDefaultValue());\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this.ValueRequired) {\r\n return this.Value() && this.Value().Value;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n Init(options: IPropertyOption[], propertyValue: IPropertyOption, isSearchMode?: boolean) {\r\n this.SetOptions(options);\r\n this.SetValue(propertyValue, isSearchMode);\r\n this.IsInitiated(true);\r\n }\r\n\r\n private SetOptions(options: IPropertyOption[]) {\r\n if (!this.ValueRequired) {\r\n const selectLabel = LABELS.SELECT_LABEL + '....';\r\n const empty: IPropertyOption = {Name: selectLabel, Value: null};\r\n\r\n let firstElem = _.first(options);\r\n if (firstElem && firstElem.Name !== selectLabel && !!firstElem.Value){\r\n options.unshift(empty);\r\n }\r\n }\r\n\r\n this._options(options);\r\n }\r\n\r\n RewriteOptions(options: IPropertyOption[]) {\r\n this.SetOptions(options);\r\n\r\n if (this._initialValue()) {\r\n this.SetValue(this._initialValue());\r\n this._initialValue(null);\r\n }\r\n }\r\n}","export const CHECKBOX_PROPERTIES = {\r\n HIDE_CAPTION: 'HideCaption'\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nimport {ColorModel} from \"Core/Components/ColorSelector/ColorModels/ColorModel\";\r\nimport {HexColorModel} from \"Core/Components/ColorSelector/ColorModels/Hex/HexColorModel\";\r\n\r\nimport ColorPickerTemplate from \"Core/GeneralProperties/Managers/ColorPicker/Templates/ColorPicker.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/ColorPicker/Templates/ColorPicker\"] = ColorPickerTemplate;\r\n\r\nexport class ColorPicker extends BaseProperty {\r\n private _colorModel: ColorModel;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: string) {\r\n super(property);\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n this.Init();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/ColorPicker/Templates/ColorPicker\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return '';\r\n }\r\n\r\n SetValue(propertyValue: string): void {\r\n this.Value(propertyValue);\r\n this._colorModel.SetColor(this.Value());\r\n }\r\n\r\n private Init() {\r\n this._colorModel = new HexColorModel({Label: this.Name, InitialColor: this.Value()});\r\n\r\n this._colorModel.On(\"COLOR_SET\", this, eventArgs => this.Value(eventArgs.data.Name));\r\n this._colorModel.On('COLOR_RESET', this, () => this.Value(null));\r\n }\r\n}\r\n\r\n","// Module\nvar code = \"<!-- ko with: _colorModel --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","export const GENERAL_PROPERTIES = {\r\n HIDE_IF_CONDITION: 'HideIfCondition'\r\n}","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {RecordStore} from 'Core/Common/Stores/RecordStore';\r\n\r\nimport {IPropertyDescription, IPropertyOption} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {BaseSelectProperty} from \"Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty\";\r\nimport {SearchScreen} from \"Core/Screens/SearchScreen/SearchScreen\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport SelectPropertyTemplate\r\n from \"Core/GeneralProperties/Managers/SelectProperty/Templates/SelectProperty.html\";\r\nimport SelectPropertyTemplateSource\r\n from \"Core/GeneralProperties/Managers/SelectProperty/Templates/SelectPropertySource.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/SelectProperty/Templates/SelectProperty\"] = SelectPropertyTemplate;\r\nko.templates[\"Core/GeneralProperties/Managers/SelectProperty/Templates/SelectPropertySource\"] = SelectPropertyTemplateSource;\r\n\r\nexport class SelectProperty extends BaseSelectProperty {\r\n private _templateName: string;\r\n private _isSearch: KnockoutObservable<boolean>;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _tableName: string;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IPropertyOption, getData: boolean = true) {\r\n super(property, propertyValue);\r\n this._templateName = \"Core/GeneralProperties/Managers/SelectProperty/Templates/SelectProperty\";\r\n this._isSearch = ko.observable(null);\r\n this._searchTerm = ko.observable('');\r\n this._tableName = '';\r\n\r\n if (property.Source && getData) {\r\n this._templateName = 'Core/GeneralProperties/Managers/SelectProperty/Templates/SelectPropertySource';\r\n this._tableName = property.Source.TableName;\r\n RecordStore.GetLookupData({\r\n TableName: property.Source.TableName,\r\n Value: property.Source.Value,\r\n DisplayValue: property.Source.DisplayValue\r\n }).then((result) => {\r\n let items: IPropertyOption[] = _.map(result.Data,\r\n (item: IPropertyOption) => {\r\n return {Name: item.Name, Value: item.Value}\r\n });\r\n this._isSearch(result.Count > items.length);\r\n this.Init(items, propertyValue, result.Count > items.length);\r\n }).fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n } else {\r\n this.Init(property.Options || [], propertyValue);\r\n }\r\n }\r\n\r\n GetTemplateName(): string {\r\n return this._templateName;\r\n }\r\n\r\n SetValue(propertyValue: IPropertyOption, isSearchMode?: boolean): void {\r\n if (!propertyValue) {\r\n this.Value(this.GetDefaultValue());\r\n return;\r\n }\r\n\r\n let selectedValue: IPropertyOption = null;\r\n if (isSearchMode) {\r\n selectedValue = propertyValue;\r\n } else {\r\n selectedValue = _.find(this._options(), option => option.Value === propertyValue.Value);\r\n }\r\n\r\n this.Value(selectedValue || this.GetDefaultValue());\r\n }\r\n\r\n Clear () {\r\n const selectLabel = LABELS.SELECT_LABEL + '....';\r\n const empty: IPropertyOption = {Name: selectLabel, Value: null};\r\n this.Value(empty);\r\n }\r\n\r\n Search(): void {\r\n const searchScreen = new SearchScreen({\r\n EntityName: this._tableName,\r\n SearchTerm: this._searchTerm(),\r\n ButtonAdd: false,\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs) => {\r\n this.Value({Name: `${eventArgs.data.Name}`, Value: `${eventArgs.data.RecordId}`});\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: Name\\\"></span> <select data-bind=\\\"options: Options, optionsText: 'Name', value: Value\\\" class=\\\"form-control\\\"></select> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"property-container\\\" data-bind=\\\"css: {'is-search-mode': _isSearch()}\\\"> <span data-bind=\\\"text: Name\\\"></span> <!-- ko if: !_isSearch() --> <select data-bind=\\\"options: Options, optionsText: 'Name', value: Value\\\" class=\\\"form-control\\\"></select> <!-- /ko --> <!-- ko if: _isSearch() --> <div class=\\\"search-select-box\\\"> <span data-bind=\\\"click: $data.Search.bind($data,true)\\\" class=\\\"formBtnTitle search-input search-input-name typeahead input-medium form-control\\\"> <!-- ko if: Value() --> <!--ko text: Value().Name --><!--/ko--> <!-- /ko --> <!-- ko if: !Value() --> <!--ko text: 'Select ...' --><!--/ko--> <!-- /ko --> </span> <a data-bind=\\\"click: $data.Search.bind($data,true)\\\" class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> <a data-bind=\\\"click: $data.Clear.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"subFormControl search-magnifier red\\\" style=\\\"\\\"> <i class=\\\"fa fa-times\\\"></i> </a> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","export class BusinessRoleRestrictions {\r\n static get View() {\r\n return new BusinessRoleRestriction('Hide', 2, 'fa-eye')\r\n }\r\n\r\n static get Create() {\r\n return new BusinessRoleRestriction('Create', 4, 'fa-plus-square-o')\r\n }\r\n\r\n static get Update() {\r\n return new BusinessRoleRestriction('Update', 8, 'fa-pencil')\r\n }\r\n\r\n static get Delete() {\r\n return new BusinessRoleRestriction('Delete', 16, 'fa-trash-o');\r\n }\r\n\r\n static AsList(value?: number) {\r\n const list = [this.View, this.Create, this.Update, this.Delete];\r\n if (!value && value !== 0) return list;\r\n\r\n return list.filter(restriction => (restriction.Value & value) === restriction.Value);\r\n }\r\n}\r\n\r\nclass BusinessRoleRestriction {\r\n constructor(public readonly Name: string, public readonly Value: number, public readonly IconName: string) {\r\n }\r\n\r\n PresentIn(value: number) {\r\n return (this.Value & value) === this.Value;\r\n }\r\n}","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BusinessRoleDto} from './Models/BusinessRoleDto';\r\n\r\nexport class TabSecurityStore {\r\n\r\n GetBusinessRoles() {\r\n const deferred = P.defer<BusinessRoleDto[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/BusinessRolesApi/GetBusinessRoles',\r\n type: 'GET'\r\n }\r\n })\r\n .then(roles => deferred.resolve(roles))\r\n .fail(error => deferred.reject(this.GetResponseError(error, 'Error getting business roles')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetUserBusinessRoles(userId: number) {\r\n const deferred = P.defer<BusinessRoleDto[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/BusinessRolesApi/GetUserBusinessRoles',\r\n type: 'GET'\r\n },\r\n params: { userId }\r\n })\r\n .then(roles => deferred.resolve(roles))\r\n .fail(error => deferred.reject(this.GetResponseError(error, 'Error getting business roles')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\nimport {BaseProperty, IPropertyDescription, IPropertyOption} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nimport WebSizePropertyTemplate\r\n from \"Core/GeneralProperties/Managers/WebSizeProperty/Templates/WebSizeProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/WebSizeProperty/Templates/WebSizeProperty\"] = WebSizePropertyTemplate;\r\n\r\nexport interface IWebSizeValue {\r\n Value: number;\r\n Unit: {\r\n Name: string;\r\n Value: any;\r\n }\r\n}\r\n\r\nexport class WebSizeProperty extends BaseProperty{\r\n private _options: KnockoutObservableArray<IPropertyOption>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IWebSizeValue) {\r\n super(property);\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\r\n this._options = ko.observableArray([]);\r\n\r\n this.Init(property.Options || [], propertyValue);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/WebSizeProperty/Templates/WebSizeProperty\";\r\n }\r\n\r\n private Init(options: IPropertyOption[], propertyValue: IWebSizeValue) {\r\n this.SetOptions(options);\r\n this.SetValue(propertyValue);\r\n }\r\n\r\n private SetOptions(options: IPropertyOption[]) {\r\n this._options(options);\r\n }\r\n\r\n get Options(): KnockoutObservableArray<IPropertyOption> {\r\n return this._options;\r\n }\r\n\r\n SetValue(propertyValue: IWebSizeValue): void {\r\n if (propertyValue) {\r\n if (propertyValue.Unit){\r\n propertyValue.Unit = _.find(this._options(), option => option.Value === propertyValue.Unit.Value);\r\n } else {\r\n let unit = _.find(this._options(), option => option.Value === propertyValue.Value)\r\n propertyValue = {\r\n Value: 100,\r\n Unit: unit\r\n }\r\n }\r\n\r\n this.Value(propertyValue);\r\n }\r\n }\r\n\r\n GetDefaultValue(): any {\r\n return {\r\n Value: 100,\r\n Unit: '%'\r\n };\r\n }\r\n\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <label data-bind=\\\"text: Name\\\"></label> <!--ko with: Value--> <div class=\\\"numberPixelOrPercentage\\\"> <input data-bind=\\\"value: Value,\\r\\n integerInputMask: { allowMinus: false, rightAlign: false },\\r\\n attr:{name: $parent.Type}\\\" class=\\\"form-control\\\"/> <select data-bind=\\\"options: $parent.Options, optionsText: 'Name', value: Unit\\\" class=\\\"form-control\\\"></select> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class SubFlowDto {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}\r\n","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport { SubFlowDto } from './SubFlowDto';\r\nimport { Deserialize } from 'libs/cerialize';\r\n\r\nexport interface IGetSubFlowsDto{\r\n EntityId: number;\r\n TypeId: number;\r\n}\r\n\r\nexport class SubFlowStore {\r\n\r\n static GetSubFlows(params: IGetSubFlowsDto) {\r\n const deferred = P.defer<SubFlowDto[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/FormDesignerApi/GetSubFlows',\r\n type: 'GET'\r\n },\r\n params: params\r\n })\r\n .then(subFlows => {\r\n deferred.resolve(Deserialize(subFlows, SubFlowDto))})\r\n .fail(error => {\r\n\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n}","import { Grid } from 'Core/Controls/Grid/Grid';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {IPropertyDescription, IPropertyOption} from 'Core/GeneralProperties/Managers/BaseProperty';\r\nimport {BaseSelectProperty} from 'Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty';\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\n\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel';\r\nimport {IControl} from 'Core/Controls/IControl';\r\n\r\nimport Template from 'Core/GeneralProperties/Managers/SubFlowProperty/Template.html';\r\nimport { SubFlowStore } from './SubFlowStore';\r\nimport { SubFlowDto } from './SubFlowDto';\r\nimport { CONTROL_TYPES, TABLE_TYPES } from '../../../Constant';\r\n\r\nko.templates['Core/GeneralProperties/Managers/SubFlowProperty/Template'] = Template;\r\n\r\nexport class SubFlowProperty extends BaseSelectProperty {\r\n private _control: IControl;\r\n private _propertyValue: IPropertyOption;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _el: HTMLElement;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IPropertyOption, control: IControl) {\r\n super(property, propertyValue);\r\n\r\n this._control = control;\r\n this._propertyValue = propertyValue;\r\n this._isValid = ko.observable(true);\r\n }\r\n\r\n IsValid(): boolean {\r\n return this._isValid();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/SubFlowProperty/Template';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._el = el[0];\r\n\r\n this._isValid(false);\r\n\r\n BlockUI.Block({Target: this._el});\r\n this.LoadData()\r\n .then(subFlows => {\r\n this.PopulateData(subFlows);\r\n })\r\n .fail(error => {\r\n Notifier.Failed(error.message);\r\n })\r\n .always(() => {\r\n this._isValid(true);\r\n BlockUI.Unblock(this._el);\r\n });\r\n }\r\n\r\n private LoadData() {\r\n return SubFlowStore.GetSubFlows({ EntityId: this.EntityId, TypeId: this.TypeId });\r\n }\r\n\r\n get EntityId(){\r\n let parentControl = this._control.GetParentControl();\r\n if(!parentControl){\r\n return this._control.Screen.GetEntityId();\r\n }\r\n\r\n if(parentControl && parentControl.GetType() == CONTROL_TYPES.Grid){\r\n return this.GridSubjectEntityId;\r\n }\r\n }\r\n\r\n get TypeId(){\r\n let parentControl = this._control.GetParentControl();\r\n\r\n if(!parentControl){\r\n return this._control.Screen.GetTableTypeId();\r\n }\r\n\r\n if(parentControl && parentControl.GetType() == CONTROL_TYPES.Grid){\r\n return 0;\r\n }\r\n }\r\n\r\n get GridSubjectEntityId(){\r\n let gridSubjectField = _.find(this._control.GetParentControl().GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Entity\r\n });\r\n\r\n if(gridSubjectField){\r\n return gridSubjectField.EntityId;\r\n }\r\n return null;\r\n }\r\n\r\n private PopulateData(subFlows: SubFlowDto[]){\r\n\r\n let items: IPropertyOption[] = _.map(subFlows,\r\n (item: SubFlowDto) => {\r\n return {Name: item.Name, Value: item.Id}\r\n });\r\n\r\n this.Init(items, this._propertyValue);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: Name\\\"></span> <select data-bind=\\\"options: Options, optionsText: 'Name', value: Value, enableAttr: IsEnabled()\\\" class=\\\"form-control\\\"></select> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nimport CheckboxPropertyTemplate from \"Core/GeneralProperties/Managers/CheckboxProperty/Templates/CheckboxProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/CheckboxProperty/Templates/CheckboxProperty\"] = CheckboxPropertyTemplate;\r\n\r\nexport class CheckboxProperty extends BaseProperty {\r\n constructor(property: IPropertyDescription, propertyValue: boolean, isEnabled: boolean = true) {\r\n super(property, isEnabled);\r\n\t\tthis.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\t}\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/CheckboxProperty/Templates/CheckboxProperty\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return false;\r\n }\r\n\r\n SetValue(propertyValue: boolean): void {\r\n this.Value(propertyValue);\r\n\t}\r\n}","// Module\nvar code = \"<label> <span data-bind=\\\"text: Name\\\"></span> <input data-bind=\\\"checked: Value, attr:{name: Type, disabled: !IsEnabled()}\\\" type=\\\"checkbox\\\"> </label> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nimport InputNumberPropertyTemplate from \"Core/GeneralProperties/Managers/InputNumberProperty/Templates/InputNumberProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/InputNumberProperty/Templates/InputNumberProperty\"] = InputNumberPropertyTemplate;\r\n\r\nexport class InputNumberProperty extends BaseProperty {\r\n constructor(property: IPropertyDescription, propertyValue: number) {\r\n super(property);\r\n\t\tthis.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/InputNumberProperty/Templates/InputNumberProperty\";\r\n }\r\n\r\n SetValue(propertyValue: number): void {\r\n if (propertyValue) {\r\n this.Value(propertyValue);\r\n }\r\n }\r\n\r\n GetDefaultValue() {\r\n return 0;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <label data-bind=\\\"text: Name\\\"></label> <input data-bind=\\\"value: Value, attr:{name: Type}\\\" type=\\\"number\\\" class=\\\"form-control\\\"/> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport { BaseProperty, IPropertyDescription } from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nimport InputTextPropertyTemplate from \"Core/GeneralProperties/Managers/InputTextProperty/Templates/InputTextProperty.html\";\r\nko.templates[\"Core/GeneralProperties/Managers/InputTextProperty/Templates/InputTextProperty\"] = InputTextPropertyTemplate;\r\n\r\nexport class InputTextProperty extends BaseProperty {\r\n\tprivate _oldValue: string;\r\n\tprivate _isValid: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: string) {\r\n\t\tsuper(property);\r\n\t\tthis.Value = ko.observable(propertyValue || '');\r\n\t\tthis._oldValue = this.Value();\r\n\t\tthis._isValid = ko.observable(true);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/InputTextProperty/Templates/InputTextProperty\";\r\n\t}\r\n\r\n\tSetValue(propertyValue: string): void {\r\n\t\tif (propertyValue) {\r\n\t\t\tthis.Value(propertyValue);\r\n\t\t\tthis._oldValue = propertyValue;\r\n\t\t}\r\n\t}\r\n\r\n\tIsValid(): boolean {\r\n\t\treturn this.CheckValidInput();\r\n\t}\r\n\r\n\tprivate CheckValidInput(): boolean {\r\n\t\tif (this.ValueRequired) {\r\n\t\t\tconst value = this.Value();\r\n\t\t\tconst isValid = value === this._oldValue || this.Value().toString() !== '';\r\n\r\n\t\t\tthis._isValid(isValid);\r\n\t\t\treturn isValid;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"property-container rss-properties clearfix\\\"> <div class=\\\"form-group clearfix\\\"> <label data-bind=\\\"text: Name\\\"></label> <input data-bind=\\\"value : Value ? Value : '', attr:{name: Type, disabled: !IsEnabled()}\\\" class=\\\"form-control\\\"/> </div> <!-- ko if: !_isValid() --> <div class=\\\"form-group clearfix\\\"> <label class=\\\"has-error control-label\\\">Please, input value</label> </div> <!--/ko--> <!-- ko if: WarningMessage --> <div class=\\\"property-container--warningBox\\\"> <div class=\\\"iconBox\\\"><i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i></div> <div class=\\\"textBox\\\"><span data-bind=\\\"text: WarningMessage\\\"></span></div> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {IPropertyDescription, IPropertyOption} from 'Core/GeneralProperties/Managers/BaseProperty';\r\nimport {BaseSelectProperty} from 'Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty';\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\n\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel';\r\nimport {IControl} from 'Core/Controls/IControl';\r\n\r\nimport SelectEntityTypePropertyTemplate\r\n from 'Core/GeneralProperties/Managers/SelectEntityTypeProperty/Templates/SelectEntityTypeProperty.html';\r\nimport { CONTROL_TYPES, TABLE_TYPES } from '../../../Constant';\r\nimport type { Grid } from 'Core/Controls/Grid/Grid';\r\n\r\nko.templates['Core/GeneralProperties/Managers/SelectEntityTypeProperty/Templates/SelectEntityTypeProperty'] = SelectEntityTypePropertyTemplate;\r\n\r\nexport class SelectEntityTypeProperty extends BaseSelectProperty {\r\n private _control: IControl;\r\n private _propertyValue: IPropertyOption;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _el: HTMLElement;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IPropertyOption, control: IControl) {\r\n super(property, propertyValue);\r\n\r\n this._control = control;\r\n this._propertyValue = propertyValue;\r\n this._isValid = ko.observable(true);\r\n }\r\n\r\n IsValid(): boolean {\r\n return this._isValid();\r\n }\r\n\r\n ErrorMessage(): string {\r\n return 'Wait for the control\\'s data load';\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/SelectEntityTypeProperty/Templates/SelectEntityTypeProperty';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._el = el[0];\r\n\r\n this._isValid(false);\r\n\r\n BlockUI.Block({Target: this._el});\r\n this.LoadData()\r\n .then(data => {\r\n this.PopulateData(data.TableTypes);\r\n })\r\n .fail(error => {\r\n Notifier.Failed(error.message);\r\n })\r\n .always(() => {\r\n this._isValid(true);\r\n BlockUI.Unblock(this._el);\r\n });\r\n }\r\n\r\n private LoadData() {\r\n return EntityTypesStore.GetAllTypes({\r\n EntityId: this.SubjectEntityId,\r\n ParentTypeId: 0,\r\n WithRoot: false,\r\n OnlyEnabled: true\r\n });\r\n }\r\n\r\n get SubjectEntityId(): number{\r\n if(this._control.GetType() === CONTROL_TYPES.ButtonCopy){\r\n let parentControl = this._control.GetParentControl();\r\n if((this._control.Screen.IsConsultScreen || this._control.Screen.IsEditScreen) && parentControl && parentControl.GetType() === CONTROL_TYPES.Grid){\r\n\r\n let fieldModel = _.find(parentControl.GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Entity\r\n });\r\n\r\n if (!fieldModel) {\r\n fieldModel = _.find(this._control.GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Sub\r\n });\r\n }\r\n\r\n if (fieldModel) {\r\n return fieldModel.EntityId;\r\n }\r\n }\r\n\r\n if(this._control.Screen.IsListScreen){\r\n return this._control.GetForm().GetScreen().GetEntityId(); \r\n }\r\n }\r\n\r\n return this._control.GetForm().GetScreen().GetEntityId();\r\n }\r\n\r\n private PopulateData(tableTypes: TableTypeModel[]){\r\n const nonDashTypes = _.filter(tableTypes, tableType => tableType.Id !== 0);\r\n\r\n let items: IPropertyOption[] = _.map(nonDashTypes,\r\n (item: TableTypeModel) => {\r\n return {Name: item.GetName(), Value: item.Id}\r\n });\r\n\r\n this.Init(items, this._propertyValue);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: Name\\\"></span> <select data-bind=\\\"options: Options, optionsText: 'Name', value: Value, enableAttr: IsEnabled()\\\" class=\\\"form-control\\\"></select> </div>\";\n// Exports\nexport default code;","import * as _ from \"underscore\";\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport {TABLE_TYPES} from \"Core/Constant\";\r\n\r\nimport {IPropertyDescription, IPropertyOption} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {BaseSelectProperty} from \"Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty\";\r\nimport {EntitiesStore} from \"Core/Screens/DesignScreen/ControlEditor/Stores/EntitiesStore\";\r\n\r\nimport {EntityModel} from \"Core/Screens/DesignScreen/ControlEditor/Models/EntityModel\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\n\r\nimport SelectLockedLinkEntityPropertyTemplate\r\n from \"Core/GeneralProperties/Managers/SelectLockedLinkEntityProperty/Templates/SelectLockedLinkEntityProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/SelectLockedLinkEntityProperty/Templates/SelectLockedLinkEntityProperty\"] = SelectLockedLinkEntityPropertyTemplate;\r\n\r\nexport class SelectLockedLinkEntityProperty extends BaseSelectProperty {\r\n private _control: IControl;\r\n private _propertyValue: IPropertyOption;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _el: HTMLElement;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IPropertyOption, control: IControl) {\r\n super(property, propertyValue);\r\n\r\n this._control = control;\r\n this._propertyValue = propertyValue;\r\n this._isValid = ko.observable(true);\r\n }\r\n\r\n IsValid(): boolean {\r\n return this._isValid();\r\n }\r\n\r\n ErrorMessage(): string {\r\n return 'Wait for the control\\'s data load';\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/SelectLockedLinkEntityProperty/Templates/SelectLockedLinkEntityProperty\";\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._el = el[0];\r\n\r\n this._isValid(false);\r\n\r\n BlockUI.Block({Target: this._el});\r\n this.LoadData()\r\n .then(entities => {\r\n this.PopulateData(entities);\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n })\r\n .always(() => {\r\n this._isValid(true);\r\n BlockUI.Unblock(this._el);\r\n });\r\n }\r\n\r\n private LoadData() {\r\n return EntitiesStore.Get({\r\n EntityId: this._control.Screen.GetEntityId(),\r\n TableTypeId: this._control.Screen.GetTypeId()\r\n });\r\n }\r\n\r\n private PopulateData(entities: EntityModel[]){\r\n const subjectEntityId = this._control.Screen.GetEntityId();\r\n const lockedEntities = _.filter(entities, entity => entity.TypeName === TABLE_TYPES.Entity && entity.EntityId !== subjectEntityId);\r\n\r\n let items: IPropertyOption[] = _.map(lockedEntities,\r\n (item: EntityModel) => {\r\n return {Name: item.EntityName, Value: item.EntityId}\r\n });\r\n this.Init(items, this._propertyValue);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container selectLocked-container\\\"> <span class=\\\"selectLocked-container--name\\\" data-bind=\\\"text: Name\\\"></span> <label> <select data-bind=\\\"options: Options, optionsText: 'Name', value: Value\\\" class=\\\"form-control\\\"></select> </label> <div class=\\\"property-container--warningBox\\\"> <div class=\\\"iconBox\\\"><i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i></div> <div class=\\\"textBox\\\"><span data-bind=\\\"text: _labels.WILL_BE_APPLICABLE_DURING_UNLINKING_OF_ANY_PART_OF_RECIPE\\\"></span></div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {TableStore} from 'Core/Common/Stores/TableStore';\r\nimport {RecordStore} from 'Core/Common/Stores/RecordStore';\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {\r\n BaseProperty,\r\n IPropertyDescription,\r\n ISource\r\n} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {ItemModel} from 'Core/Controls/MultiSelect/Models/MultiSelectListModel';\r\nimport {LookupEditorStore} from 'LookupEditor/Store/LookupEditorStore';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\n\r\nimport DropDownContentTemplate from 'Core/GeneralProperties/Managers/MultiSelectProperty/Templates/DropDownContent.html';\r\nimport MultiSelectPropertyTemplate from \"Core/GeneralProperties/Managers/MultiSelectProperty/Templates/MultiSelectProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/MultiSelectProperty/Templates/MultiSelectProperty\"] = MultiSelectPropertyTemplate;\r\n\r\nexport class MultiSelectProperty extends BaseProperty {\r\n Items: KnockoutObservableArray<ItemModel>;\r\n SelectedItems: KnockoutObservableArray<ItemModel>;\r\n\r\n private _showMultiSelectText: KnockoutComputed<boolean>;\r\n\r\n private _separator: string;\r\n private _el: HTMLElement;\r\n private _tooltip: JBoxDropDown;\r\n\r\n private _showSearchScreen: KnockoutObservable<boolean>;\r\n private _searchScreenIfRecordsCount: number;\r\n private _searchScreen: SearchScreen;\r\n\r\n private _tableId: number;\r\n private _source: ISource;\r\n\r\n private _labels = LABELS;\r\n\r\n Value: KnockoutObservable<string>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: string) {\r\n super(property);\r\n\r\n this._source = property.Source;\r\n\r\n this.Items = ko.observableArray([]);\r\n this.SelectedItems = ko.observableArray([]);\r\n this._showMultiSelectText = ko.computed(() => this.SelectedItems().length === 0);\r\n\r\n this._separator = ';';\r\n\r\n this._showSearchScreen = ko.observable(false);\r\n const searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n this._searchScreenIfRecordsCount = Number.isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n\r\n this.Value = ko.observable(propertyValue);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/MultiSelectProperty/Templates/MultiSelectProperty';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._el = el[0];\r\n\r\n this.LoadData();\r\n }\r\n\r\n private LoadData() {\r\n BlockUI.Block({Target: this._el});\r\n TableStore.Get({TableName: this._source.TableName})\r\n .then((tableModel: any) => {\r\n this._tableId = tableModel.Id;\r\n RecordStore.GetCount(this._tableId)\r\n .then(recordsCount => {\r\n const showSearchScreen = recordsCount && Number(recordsCount) > this._searchScreenIfRecordsCount;\r\n this._showSearchScreen(showSearchScreen);\r\n\r\n if (this._showSearchScreen())\r\n {\r\n this.LoadDataForSearch();\r\n } else {\r\n this.LoadDataForDropdown();\r\n }\r\n })\r\n .fail(error => {\r\n BlockUI.Unblock(this._el);\r\n new Notifier().Failed(error.message);\r\n });\r\n })\r\n .fail(error => {\r\n BlockUI.Unblock(this._el);\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n private LoadDataForSearch()\r\n {\r\n const selectedItemsIdsString = this.Value() ? this.Value().split(';') : [];\r\n if (!_.any(selectedItemsIdsString))\r\n {\r\n BlockUI.Unblock(this._el);\r\n return;\r\n }\r\n\r\n const selectedItemsIds = selectedItemsIdsString.map(item => item ? Number(item) : 0);\r\n this.AddRecordsByIds(selectedItemsIds);\r\n }\r\n\r\n private LoadNewDataForSearch(selectedItemsIds: number[]) {\r\n _.each(this.Items(), item => item.IsSelected(_.contains(selectedItemsIds, item.RecordId)));\r\n\r\n const existingItemsIds = _.map(this.Items(), item => item.RecordId);\r\n const newItems = _.difference(selectedItemsIds, existingItemsIds);\r\n\r\n if (!_.any(newItems)) {\r\n this.UpdateSelectedItems();\r\n return;\r\n }\r\n\r\n BlockUI.Block({Target: this._el});\r\n this.AddRecordsByIds(newItems);\r\n }\r\n\r\n private AddRecordsByIds(itemsIds: number[]) {\r\n LookupEditorStore.GetRecordsByIds(this._tableId, itemsIds)\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then((records: any) => {\r\n const fieldName = this._source.DisplayValue;\r\n\r\n _.each(records, (record: any) => {\r\n const chosenField = _.find(record.Fields, (field: any) => field.FieldName === fieldName);\r\n const newItem = new ItemModel();\r\n\r\n newItem.Label = chosenField.FieldValue;\r\n newItem.RecordId = record.RecordId;\r\n newItem.IsSelected(true);\r\n\r\n this.Items.push(newItem);\r\n });\r\n\r\n this.UpdateSelectedItems();\r\n }).fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private LoadDataForDropdown()\r\n {\r\n LookupEditorStore.GetRecords(this._tableId)\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then((records: any) => {\r\n const fieldName = this._source.DisplayValue;\r\n const selectedItemsIds = this.Value() ? this.Value().split(';') : [];\r\n\r\n _.each(records, (record: any) => {\r\n const chosenField = _.find(record.Fields, (field: any) => field.FieldName === fieldName);\r\n const newItem = new ItemModel();\r\n\r\n newItem.Label = chosenField.FieldValue;\r\n newItem.RecordId = record.RecordId;\r\n\r\n const isItemSelected = _.contains(selectedItemsIds, String(newItem.RecordId));\r\n newItem.IsSelected(isItemSelected);\r\n\r\n this.Items.push(newItem);\r\n });\r\n\r\n this.UpdateSelectedItems();\r\n }).fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n FormatValue(value: string) {\r\n if (!value) {\r\n return this._labels.EMPTY_VALUE;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n SelectItem(item: ItemModel) {\r\n item.IsSelected(true);\r\n this.UpdateSelectedItems();\r\n }\r\n\r\n RemoveItem(item: ItemModel) {\r\n item.IsSelected(false);\r\n this.UpdateSelectedItems();\r\n }\r\n\r\n UpdateSelectedItems() {\r\n var selectedItems = [];\r\n _.each(this.Items(),\r\n item => {\r\n if (item.IsSelected()) {\r\n selectedItems.push(item);\r\n }\r\n });\r\n this.SelectedItems(selectedItems);\r\n\r\n const itemIds = this.SelectedItems().map(item => item.RecordId);\r\n this.Value(itemIds.join(\";\"));\r\n }\r\n\r\n ShowListSearchScreen(model, evt: MouseEvent) {\r\n if (this._showSearchScreen()) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n\r\n this._searchScreen = new SearchScreen({\r\n EntityId: this._tableId,\r\n SearchTerm: '',\r\n ButtonAdd: false,\r\n MultiSelectMode: true,\r\n SelectedRecordIds: _.map(this.SelectedItems(), (item) => item.RecordId)\r\n });\r\n\r\n this._searchScreen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n this.LoadNewDataForSearch([evtArgs.data.RecordId]);\r\n });\r\n\r\n this._searchScreen.On('RECORDS_SELECTED', this, (eventArgs) => {\r\n this.LoadNewDataForSearch(eventArgs.data.Ids);\r\n });\r\n\r\n this._searchScreen.Show();\r\n } else {\r\n if (this.Items().length > 0) {\r\n\r\n if (!this._tooltip) {\r\n const target: any = evt.currentTarget;\r\n this._tooltip = new JBoxDropDown({\r\n bindComponent: this,\r\n target: target,\r\n otherOptions: {\r\n addClass: \"multi-select-dropdown\",\r\n attach: undefined,\r\n pointer: \"\",\r\n isolateScroll: true,\r\n content: DropDownContentTemplate as any,\r\n position: {\r\n x: \"right\",\r\n y: \"bottom\"\r\n },\r\n height: 'auto',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n maxHeight: 200\r\n },\r\n bindTarget: target,\r\n bindOnCreate: true\r\n });\r\n }\r\n\r\n this._tooltip.Toggle();\r\n }\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: Name\\\"></span> <div class=\\\"FormDesignerView label-input form-standart-control dropdown-container multiselect clearfix\\\"> <div class=\\\"multi-select-container\\\" data-bind=\\\"css: {'edit-screen__multi-select-dropdown': !_showSearchScreen()}\\\"> <div data-bind=\\\"attr: { 'data-val-search': _showSearchScreen() ? 'True' : 'False'}\\\" class=\\\"form-control multi-options-list textarea-control\\\"> <!-- ko foreach: SelectedItems --> <span class=\\\"multi-option-item\\\"> <a data-bind=\\\"click: $parent.RemoveItem.bind($parent, $data), preventBubble: ['click']\\\" href=\\\"javascript:;\\\"><i class=\\\"fa fa-times-circle\\\" aria-hidden=\\\"true\\\"></i></a> <span><!--ko text: $parent.FormatValue(Label) --><!-- /ko --></span> </span> <!-- /ko --> <!-- ko if: _showMultiSelectText() --> <span class=\\\"selectText\\\" data-bind=\\\"text: !_showSearchScreen() && !Items().length > 0 ? $data._labels.NO_RECORDS_TO_SELECT : $data._labels.SELECT_LABEL + '...'\\\"></span> <!-- /ko --> </div> <!-- ko if: _showSearchScreen() --> <span class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\" data-bind=\\\"click: $data.ShowListSearchScreen.bind($data)\\\"></span> <!-- /ko --> <!-- ko ifnot: _showSearchScreen() --> <span class=\\\"btn default dropdown-search-icon\\\" data-bind=\\\"click: $data.ShowListSearchScreen.bind($data)\\\"><i class=\\\"fa fa-caret-down\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko foreach: Items --> <div class=\\\"multi-select-item\\\" data-bind=\\\"css: {active: IsSelected, disabled: IsSelected }\\\"> <a data-bind=\\\"text: $parent.FormatValue(Label), click: $parent.SelectItem.bind($parent, $data)\\\" href=\\\"javascript:;\\\"> </a> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {Guid} from \"Core/Common/Guid\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport InputUrlPropertyTemplate from \"Core/GeneralProperties/Managers/InputUrlProperty/Templates/InputUrlProperty.html\";\r\nko.templates[\"Core/GeneralProperties/Managers/InputUrlProperty/Templates/InputUrlProperty\"] = InputUrlPropertyTemplate;\r\n\r\nexport class InputUrlProperty extends BaseProperty {\r\n\tprivate _isValid: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: string) {\r\n\t\tsuper(property);\r\n\t\tthis.Value = ko.observable(propertyValue || '');\r\n\t\tthis._isValid = ko.observable(true);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/InputUrlProperty/Templates/InputUrlProperty\";\r\n\t}\r\n\r\n\tSetValue(propertyValue: number): void {\r\n\t\tif (propertyValue) {\r\n\t\t\tthis.Value(propertyValue);\r\n\t\t}\r\n\t}\r\n\r\n\tIsValid(): boolean {\r\n\t\treturn this.CheckValidUrl();\r\n\t}\r\n\r\n\tprivate CheckValidUrl(): boolean {\r\n\t\tvar isValid = this.Value().toString() !== '';\r\n\t\tthis._isValid(isValid);\r\n\t\treturn isValid;\r\n\r\n\t\t//todo create correct regexp for url\r\n\t\t//var url = this.Value().toString();\r\n\t\t//var urlEtalon = \"(http|ftp|https)://[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?\";\r\n\t\t//var pattern = new RegExp(urlEtalon); // fragment locater\r\n\r\n\t\t//return pattern.test(url);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"property-container rss-properties clearfix\\\"> <div class=\\\"form-group clearfix\\\" data-bind=\\\"css: {'has-error': !_isValid()}\\\"> <input data-bind=\\\"textInput: Value ? Value : '', attr:{name: Type}\\\" placeholder=\\\"Enter URL\\\" class=\\\"form-control\\\"/> </div> <!-- ko if: !_isValid() --> <div class=\\\"form-group clearfix\\\"> <label class=\\\"has-error control-label\\\"><!-- ko text: _labels.PLEASE_SPECIFY_THE_URL --><!-- /ko --></label> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"dropzone: { url: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t\\t\\t\\t\\t\\tautoProcessQueue: false,\\r\\n\\t\\t\\t\\t\\t\\t\\tpreviewsContainer: false,\\r\\n\\t\\t\\t\\t\\t\\t\\tmaxFilesize: $data.MaxFileSize,\\r\\n\\t\\t\\t\\t\\t\\t\\taddedfile: $data.AfterUpload.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\tacceptedFiles: $data._extension()\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tcss: {'has-error': !_isValid()}\\\" class=\\\"dropzone\\\"> <div class=\\\"dz-message custom image-message\\\" data-dz-message> <span><!-- ko text: $data._dropZoneLabel --><!-- /ko --> <i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i></span> <!-- ko with: Value --> <div> <a data-bind=\\\"click: $parent.Download.bind($parent), preventBubble: ['click']\\\" href=\\\"javascript:;\\\" text=\\\"\\\" title=\\\"Download\\\"> <i class=\\\"fa fa-download\\\" aria-hidden=\\\"true\\\"> <!-- ko text: FileName --><!-- /ko --> </i> </a> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport Template from \"Core/GeneralProperties/Managers/FileUploadProperty/Templates/FileUploadPropertyTemplate.html\";\r\nimport { IControl } from \"../../../Controls/IControl\";\r\nimport { CONTROL_TYPES } from \"../../../Constant\";\r\nimport { FileDownloader } from \"../../../Components/FileDownloader/FileDownloader\";\r\nko.templates[\"Core/GeneralProperties/Managers/FileUploadProperty/Templates/FileUploadPropertyTemplate\"] = Template;\r\n\r\nexport class FileUploadProperty extends BaseProperty {\r\n\tprivate _isValid: KnockoutObservable<boolean>;\r\n\tprivate _control: IControl;\r\n\tprivate _labels = LABELS;\r\n\tprivate _extension: KnockoutObservable<string>;\r\n\tprivate _dropZoneLabel: KnockoutObservable<string>;\r\n\tMaxFileSize: number;\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: string, control: IControl) {\r\n\t\tsuper(property);\r\n\t\tthis._isValid = ko.observable(true);\r\n\t\tthis.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\t\tthis._extension = ko.observable('');\r\n\t\tthis._dropZoneLabel = ko.observable('');\r\n\t\tthis._control = control;\r\n\t\tthis.MaxFileSize = 5;\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/FileUploadProperty/Templates/FileUploadPropertyTemplate\";\r\n\t}\r\n\r\n\tGetDefaultValue() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tSetValue(propertyValue: string): void {\r\n\t\tthis.Value(propertyValue);\r\n\t}\r\n\r\n\tDownload(){\r\n\t\tFileDownloader.DownloadBase64(this.Value().FileData, this.Value().FileName);\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tif(this._control.GetControlTypeName() === CONTROL_TYPES.CrystalViewer){\r\n\t\t\tthis._extension('.rpt');\r\n\t\t\tthis._dropZoneLabel(this._labels.DROP_REPORT_HERE);\r\n\t\t}\r\n\r\n\t\tif(this._control.GetControlTypeName() === CONTROL_TYPES.IFrameExtension){\r\n\t\t\tthis._dropZoneLabel('Drop extension application ZIP');\r\n\t\t\tthis._extension('.zip');\r\n\t\t}\r\n\t}\r\n\r\n\tAfterUpload(file) {\r\n\t\tvar reader = new FileReader();\r\n\t\treader.onloadend = () => {\r\n\t\t\tif (file.status === 'removed') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar base64Data = (reader.result as string).split(',')[1];\r\n\t\t\tthis.Value({ FileName: file.name, FileData: base64Data });\r\n\t\t}\r\n\r\n\t\treader.readAsDataURL(file);\r\n\t}\r\n\r\n\tIsValid(): boolean {\r\n\t\tvar result = this.Value() != null;\r\n\t\tthis._isValid(result);\r\n\t\treturn result;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {ConditionBuilder} from \"QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {EntityMetadataStore} from 'QueryBuilder/Stores/EntityMetadataStore';\r\nimport {QueryConditionGroupModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport {CONTROL_TYPES, TABLE_TYPES} from \"Core/Constant\";\r\nimport {GenericDeserialize, Serialize} from 'libs/cerialize';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport Template\r\n from \"Core/GeneralProperties/Managers/QueryConditionProperty/Templates/QueryConditionPropertyTemplate.html\";\r\nimport {EntityTypes} from \"Core/Controls/Grid/BaseGrid/Enums/EntityTypes\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport { IControlAttachedField } from \"Core/Screens/BaseScreen\";\r\nimport { GENERAL_PROPERTIES } from \"../Constants\";\r\nimport { GLOBALS, GlobalManager } from \"Core/GlobalManager/GlobalManager\";\r\nimport { TableStore } from \"Core/Common/Stores/TableStore\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/QueryConditionProperty/Templates/QueryConditionPropertyTemplate\"] = Template;\r\n\r\n\r\ninterface IAllowedEntity{\r\n Id: number;\r\n Name: string;\r\n}\r\n\r\nexport class QueryConditionProperty extends BaseProperty {\r\n private _conditionBuilder: KnockoutObservable<ConditionBuilder>;\r\n private _control: IControl;\r\n private _el: HTMLElement;\r\n private _allowedEntities: KnockoutObservableArray<IAllowedEntity>;\r\n private _allowedEntity: KnockoutObservable<IAllowedEntity>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: string, control: IControl) {\r\n super(property);\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n this._control = control;\r\n this._allowedEntities = ko.observableArray([]);\r\n this._allowedEntity = ko.observable(null);\r\n this._conditionBuilder = ko.observable(null);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/QueryConditionProperty/Templates/QueryConditionPropertyTemplate\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return '';\r\n }\r\n\r\n SetValue(propertyValue: string): void {\r\n this.Value(propertyValue);\r\n }\r\n\r\n Reset() {\r\n this.Value('');\r\n this.Init();\r\n }\r\n\r\n private Init() {\r\n\r\n if (this._control.GetType() === CONTROL_TYPES.TimeWriting) {\r\n this.InitAllowedEntityCondition();\r\n return;\r\n }\r\n\r\n if(this.Name === GENERAL_PROPERTIES.HIDE_IF_CONDITION){\r\n this.InitShowIfConditions();\r\n return;\r\n }\r\n\r\n if (this._control.GetType() === CONTROL_TYPES.Search) {\r\n this.InitSearchConditions();\r\n return;\r\n }\r\n\r\n if (this._control.GetType() === CONTROL_TYPES.Dropdown || this._control.GetType() === CONTROL_TYPES.MultiSelect) {\r\n this.InitDropdownConditions();\r\n return;\r\n }\r\n\r\n if (this._control.GetType() === CONTROL_TYPES.Grid) {\r\n this.InitGridConditions();\r\n return;\r\n }\r\n\r\n if (this._control.GetType() === CONTROL_TYPES.GenericButton\r\n || this._control.GetType() === CONTROL_TYPES.Basket\r\n || this._control.GetType() === CONTROL_TYPES.Invoicing\r\n || this._control.GetType() === CONTROL_TYPES.Timer) {\r\n this.InitSearchConditions();\r\n return;\r\n }\r\n\r\n if (this._control.GetType() === CONTROL_TYPES.Book) {\r\n this.InitBookConditions();\r\n return;\r\n }\r\n }\r\n\r\n private InitSearchConditions() {\r\n if (this._control) {\r\n let entityId = this._control.GetForm().GetScreen().GetEntityId();\r\n this.InitConditionBuilder(entityId, []);\r\n }\r\n }\r\n\r\n\r\n private InitGridConditions() {\r\n let screenFields = this.GetScreenFields();\r\n if (this._control) {\r\n let gridSubjectEntityId = null;\r\n if (this._control.GetForm().GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.QueryScreen]) {\r\n gridSubjectEntityId = this._control.GetForm().GetScreen().GetEntityId();\r\n } else {\r\n let fieldModel = _.find(this._control.GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Entity\r\n });\r\n\r\n if (!fieldModel) {\r\n fieldModel = _.find(this._control.GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Sub\r\n });\r\n }\r\n\r\n if (fieldModel) {\r\n gridSubjectEntityId = fieldModel.EntityId;\r\n }\r\n }\r\n\r\n if (gridSubjectEntityId) {\r\n this.InitGridConditionBuilder(gridSubjectEntityId, screenFields);\r\n }\r\n }\r\n }\r\n\r\n private InitBookConditions() {\r\n const fieldModel = _.first(this._control.GetModel().Fields);\r\n\r\n if (fieldModel) {\r\n this.InitConditionBuilder(fieldModel.EntityId, []);\r\n }\r\n }\r\n\r\n private InitDropdownConditions() {\r\n var screenFields = this.GetScreenFields();\r\n const entityId = this._control.GetForm().GetScreen().GetEntityId();\r\n\r\n if (this._control) {\r\n var fieldModel = this._control.GetFieldModel();\r\n if (fieldModel && fieldModel.ValTableId) {\r\n screenFields = _.filter(screenFields, (item) => {\r\n return item.Field.Id !== fieldModel.Id\r\n });\r\n this.InitConditionBuilder(fieldModel.ValTableId, screenFields);\r\n } else {\r\n this.InitConditionBuilder(entityId, []);\r\n }\r\n }\r\n }\r\n\r\n private async InitAllowedEntityCondition(){\r\n const global = await GlobalManager.Instance.GetGlobal(GLOBALS.ALLOWED_ENTITIES);\r\n const entities = global.split('|');\r\n for (const entity of entities) {\r\n let table = await TableStore.GetStruct({ TableName: entity }) as any;\r\n this._allowedEntities.push({ Id: table.Id, Name: table.Name });\r\n }\r\n\r\n if(!this.Value() && this._allowedEntities().length > 0){\r\n this.InitConditionBuilder(this._allowedEntities()[0].Id, []);\r\n }\r\n\r\n if(this.Value() && this._allowedEntities().length > 0){\r\n let jsonObj = JSON.parse(this.Value());\r\n let conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n this._allowedEntity(_.find(this._allowedEntities(), (entity)=>entity.Id === conditions.EntityId));\r\n this.InitConditionBuilder(conditions.EntityId, []);\r\n }\r\n\r\n this._allowedEntity.subscribe((newValue)=>{ \r\n this.Value(null);\r\n this.InitConditionBuilder(newValue.Id, []);\r\n });\r\n }\r\n\r\n private InitShowIfConditions() {\r\n var screenFields = this.GetScreenFields();\r\n const entityId = this._control.GetForm().GetScreen().GetEntityId();\r\n if (this._control) {\r\n var fieldModel = this._control.GetFieldModel();\r\n if (fieldModel) {\r\n screenFields = _.filter(screenFields, (item) => {\r\n return item.Field.Id !== fieldModel.Id\r\n });\r\n this.InitConditionBuilder(entityId, screenFields);\r\n }\r\n }\r\n }\r\n\r\n private GetScreenFields(): Array<IControlAttachedField> {\r\n var screenFields: Array<IControlAttachedField> = [];\r\n if (this._control.GetForm()) {\r\n var excludedControlTypes = [CONTROL_TYPES.Grid, CONTROL_TYPES.Document, CONTROL_TYPES.Image];\r\n screenFields = this._control.GetForm().GetScreen().GetAllAttachedFields(excludedControlTypes, false);\r\n }\r\n return screenFields;\r\n }\r\n\r\n private InitConditionBuilder(entityId: number, screenFields: Array<IControlAttachedField>) {\r\n this._conditionBuilder(new ConditionBuilder(null, screenFields, false));\r\n var conditions = new QueryConditionGroupModel();\r\n\r\n if (this.Value()) {\r\n let jsonObj = JSON.parse(this.Value());\r\n conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n }\r\n\r\n const blockTarget = this._el.parentNode as HTMLElement;\r\n BlockUI.Block({ Target: blockTarget });\r\n EntityMetadataStore.GetEntityMetadata({EntityId: entityId})\r\n .always(() => {\r\n BlockUI.Unblock(blockTarget);\r\n })\r\n .then((entityMetadata) => {\r\n this._conditionBuilder().InitByEntity(entityMetadata.EntityMetadata, conditions, screenFields);\r\n });\r\n\r\n this._conditionBuilder().On('CHANGED', this, () => {\r\n this.Value(JSON.stringify(Serialize(this._conditionBuilder().ConditionModel)));\r\n });\r\n }\r\n\r\n private InitGridConditionBuilder(entityId: number, screenFields: Array<IControlAttachedField>) {\r\n this._conditionBuilder(new ConditionBuilder(null, [], false));\r\n var conditions = new QueryConditionGroupModel();\r\n\r\n if (this.Value()) {\r\n var jsonObj = JSON.parse(this.Value());\r\n conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n }\r\n\r\n EntityMetadataStore.GetEntityMetadata({EntityId: entityId})\r\n .always(() => {\r\n })\r\n .then((entityMetadata) => {\r\n let entities = [];\r\n entities.push(entityMetadata.EntityMetadata);\r\n if (entityMetadata.EntityMetadata.Type === EntityTypes[EntityTypes.Entity]) {\r\n if (this._control.GetForm().GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.EditScreen] || this._control.GetForm().GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n let subjectEntityId = this._control.GetForm().GetScreen().GetEntityId();\r\n let screenSubjectEntity = _.find(entityMetadata.RelatedEntitiesMetadata, (item) => {\r\n return item.EntityMetadata.Id === subjectEntityId\r\n });\r\n entities.push(screenSubjectEntity.LinkEntityMetadata);\r\n }\r\n }\r\n this._conditionBuilder().InitByEntities(entities, conditions, screenFields);\r\n });\r\n\r\n this._conditionBuilder().On('CHANGED', this, () => {\r\n this.Value(JSON.stringify(Serialize(this._conditionBuilder().ConditionModel)));\r\n });\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n this._el = el[0];\r\n this.Init();\r\n }\r\n}","// Module\nvar code = \"<!-- ko if: _allowedEntities().length > 0 --> <select data-bind=\\\"options: _allowedEntities, optionsText: 'Name', value: _allowedEntity\\\" class=\\\"form-control\\\"></select> <!-- /ko --> <!-- ko with: _conditionBuilder --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { Notifier } from \"Core/Common/Notifier\";\r\n\r\nimport { BaseProperty, IPropertyDescription } from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport { IControl } from \"Core/Controls/IControl\";\r\nimport { QueryBuilder } from \"QueryBuilder/QueryBuilder\";\r\nimport { EVENTS as QUERY_BUILDER_EVENTS } from \"QueryBuilder/Events\";\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\n\r\nimport Template from \"Core/GeneralProperties/Managers/QueryBuilderProperty/Template.html\";\r\n\r\nko.templates['Core/GeneralProperties/Managers/QueryBuilderProperty/Templates/Template'] = Template;\r\n\r\nexport class QueryBuilderProperty extends BaseProperty {\r\n\tprivate _control: IControl;\r\n\tprivate _queryBuilder: QueryBuilder;\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: string, control: IControl) {\r\n\t\tsuper(property);\r\n\t\tthis.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\r\n\t\tthis._control = control;\r\n\t\tthis._queryBuilder = this.InitQueryBuilder();\r\n\t}\r\n\r\n\tGetDefaultValue() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/GeneralProperties/Managers/QueryBuilderProperty/Templates/Template';\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis.LoadQueryExpression();\r\n\t}\r\n\r\n\tprivate InitQueryBuilder() {\r\n\t\tconst queryBuilder = new QueryBuilder(true, false, false);\r\n\t\tqueryBuilder.QueryType = ViewModes.Query;\r\n\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.DATA_SAVED, this, eventArgs => {\r\n\t\t\tthis.Value(eventArgs.data.QueryText);\r\n\t\t\tnew Notifier().Success('Query saved');\r\n\t\t});\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.CLOSE, this, () => this.LoadQueryExpression());\r\n\r\n\t\treturn queryBuilder;\r\n\t}\r\n\r\n\tprivate LoadQueryExpression() {\r\n\t\tif (this.Value() === this.GetDefaultValue()) {\r\n\t\t\tthis.InitDefaultQuery();\r\n\t\t} else {\r\n\t\t\tconst expressionModel = JSON.parse(this.Value());\r\n\t\t\tthis._queryBuilder.EditFreeQuery(expressionModel, false);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate InitDefaultQuery() {\r\n\t\tconst screen = this._control.GetForm().GetScreen();\r\n\r\n\t\tif (screen.IsSubjectScreen()) {\r\n\t\t\tconst subjectEntityId = screen.GetEntityId();\r\n\t\t\tthis._queryBuilder.InitQueryByEntityId(subjectEntityId);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._queryBuilder.NewFreeQuery();\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _queryBuilder --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"multi-options-list textarea-control clearfix alternativeEntities\\\"> <div class=\\\"entities-group\\\"> <!-- ko foreach: SelectedEntities --> <div class=\\\"btn-group\\\"> <button type=\\\"button\\\" data-bind=\\\"click: $parent.DeselectEntity.bind($parent)\\\" class=\\\"btn btn-light\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\"> <!-- ko template: {name: $parent.GetIconTemplateName.bind($data)} --> <!-- /ko --> <span data-bind=\\\"text: EntityTranslatedName\\\" class=\\\"name\\\"></span> <i class=\\\"fa fa-close transition\\\"></i> </button> </div> <!-- /ko --> <!-- ko if: SelectedEntities().length === 0 --> <h3> <!-- ko text: _labels.NO_ALTERNATIVE_ENTITIES_WERE_SELECTED --><!-- /ko --> </h3> <!-- /ko --> </div> <div class=\\\"list-group\\\"> <!-- ko foreach: Entities --> <!-- ko ifnot: SelectedStatus --> <a href=\\\"javascript:void(0)\\\" data-bind=\\\"click: $parent.SelectEntity.bind($parent)\\\" class=\\\"list-group-item list-group-item-action\\\"> <!-- ko template: {name: $parent.GetIconTemplateName.bind($data)} --> <!-- /ko --> <span data-bind=\\\"text: EntityTranslatedName\\\" class=\\\"name\\\"></span> </a> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import { URL } from 'Core/Common/Url';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { Deserialize } from 'libs/cerialize';\r\nimport { EntityModel } from \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Models/EntityModel\";\r\n\r\nexport class AlternativeEntitiesPropertyStore {\r\n\tstatic GetAlternativeEntities(entityId: number): P.Promise<EntityModel[]>{\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tlet params = {\r\n\t\t\tEntityId: entityId\r\n\t\t};\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.FORM_DESIGNER.GET_ALTERNATIVE_ENTITIES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams).then(data => {\r\n\t\t\tdeferredResult.resolve(data);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport Template from 'Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/AlternativeEntitiesProperty.html';\r\n\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { IControl } from \"Core/Controls/IControl\";\r\nimport { BaseProperty, IPropertyDescription } from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport { EntityModel } from \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Models/EntityModel\";\r\nimport { AlternativeEntitiesPropertyStore }\r\n\tfrom \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Stores/AlternativeEntitiesPropertyStore\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/AlternativeEntitiesProperty\"] = Template;\r\n\r\nimport AlternativeIconTemplate from 'Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate.html';\r\nko.templates['Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate'] = AlternativeIconTemplate;\r\n\r\n\r\nexport class AlternativeEntitiesProperty extends BaseProperty {\r\n\tprivate _control: IControl;\r\n\tprivate _showOptions: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tEntities: KnockoutObservableArray<EntityModel>;\r\n\tSelectedEntities: KnockoutObservableArray<EntityModel>;\r\n\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: string, control: IControl, getData: boolean = true) {\r\n\t\tsuper(property);\r\n\r\n\t\tthis.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\r\n\t\t//property is stored into value after that it will be saved automaticly\r\n\t\tthis.Value([]);\r\n\r\n\t\tthis._control = control;\r\n\r\n\t\tthis._showOptions = ko.observable(true);\r\n\r\n\t\tthis.Init(getData);\r\n\r\n\t\tthis.Entities = ko.observableArray([]);\r\n\t\tthis.SelectedEntities = ko.observableArray([]);\r\n\t}\r\n\r\n\tInit(getData: boolean = true) {\r\n\t\tif(getData) {\r\n\t\t\tthis.GetAlternativeEntities();\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/AlternativeEntitiesProperty\";\r\n\t}\r\n\r\n\tGetDefaultValue() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tSelectEntity(entity: EntityModel) {\r\n\t\tentity.SelectedStatus(true);\r\n\t\tthis.SelectedEntities.push(entity);\r\n\t\tthis.Value().push(entity.EntityId);\r\n\t}\r\n\r\n\tDeselectEntity(entity: EntityModel) {\r\n\t\tentity.SelectedStatus(false);\r\n\t\tconst filteredSelecteEntities = _.filter(this.SelectedEntities(), (selectedEntity: EntityModel) => {\r\n\t\t\treturn selectedEntity.EntityId !== entity.EntityId;\r\n\t\t});\r\n\t\tthis.Value(_.filter(this.Value(),\r\n\t\t\t(entityId: number) => {\r\n\t\t\t\treturn entityId !== entity.EntityId;\r\n\t\t\t})\r\n\t\t);\r\n\t\tthis.SelectedEntities(filteredSelecteEntities);\r\n\r\n\t}\r\n\r\n\tGetIconTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate\";\r\n\t}\r\n\r\n\tGetAlternativeEntities() {\r\n\t\tBlockUI.Block();\r\n\t\tlet entityId = this._control.GetForm().GetScreen().GetEntityId();\r\n\t\tAlternativeEntitiesPropertyStore.GetAlternativeEntities(entityId)\r\n\t\t\t.then(entities => {\r\n\t\t\t\tconst alternativeEntities = (this._control as any)._alternativeEntities;\r\n\t\t\t\talternativeEntities && alternativeEntities.map((entityId) => {\r\n\t\t\t\t\tthis.Value().push(entityId);\r\n\t\t\t\t});\r\n\t\t\t\tthis.Entities(entities.map((entity) => {\r\n\r\n\t\t\t\t\tconst mappedEntity = _.extend(entity, {\r\n\t\t\t\t\t\tSelectedStatus: this.Value().indexOf(entity.EntityId) !== -1 ?\r\n\t\t\t\t\t\t\tko.observable(true) :\r\n\t\t\t\t\t\t\tko.observable(false)\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.Value().indexOf(entity.EntityId) !== -1 && this.SelectedEntities.splice(this.Value().indexOf(entity.EntityId), 1, mappedEntity);\r\n\r\n\t\t\t\t\treturn mappedEntity;\r\n\t\t\t\t}));\r\n\r\n\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUI.Unblock())\r\n\t\t\t.fail((err) => new Notifier().Failed(err.message));\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"multi-options-list textarea-control clearfix typesPropertyContainer\\\"> <div class=\\\"entities-group\\\"> <!-- ko foreach: SelectedColorTypes --> <div class=\\\"btn-group\\\"> <button class=\\\"btn btn-light\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\"> <span class=\\\"colorBox\\\" data-bind=\\\"click: $parent.ChangeTypeColor.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'nonColor': !TypeColor()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: { 'background-color': TypeColor }\\\"></span> <span data-bind=\\\"text: Name\\\" class=\\\"name\\\"></span> <i class=\\\"fa fa-close transition\\\" data-bind=\\\"click: $parent.DeselectType.bind($parent)\\\"></i> </button> </div> <!-- /ko --> <!-- ko if: SelectedColorTypes().length === 0 --> <h3><!-- ko text: 'No types were selected' --><!-- /ko --></h3> <!-- /ko --> </div> <div class=\\\"list-group\\\"> <!-- ko foreach: ColorTypes --> <!-- ko ifnot: SelectedStatus --> <a href=\\\"javascript:void(0)\\\" data-bind=\\\"click: $parent.SelectType.bind($parent)\\\" class=\\\"list-group-item list-group-item-action\\\"> <span data-bind=\\\"text: Name\\\" class=\\\"name\\\"></span> </a> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"\\\"> <!-- ko with: _colorModel --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { IControl } from \"Core/Controls/IControl\";\r\nimport { BaseProperty, IPropertyDescription } from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport { TypeColorModel } from \"Core/GeneralProperties/Managers/TypesProperty/Models/TypeColorModel\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { EntityTypesStore, IGetTypesRequestModel } from \"Core/Screens/TypeScreen/Stores/EntityTypesStore\";\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel';\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\n\r\nimport Template from 'Core/GeneralProperties/Managers/TypesProperty/Templates/TypesProperty.html';\r\nko.templates[\"Core/GeneralProperties/Managers/TypesProperty/Templates/TypesProperty\"] = Template;\r\n\r\nimport TypePropertyColorDropdown from \"Core/GeneralProperties/Managers/TypesProperty/Templates/TypePropertyColorDropdown.html\";\r\nimport {HexColorModel} from \"../../../Components/ColorSelector/ColorModels/Hex/HexColorModel\";\r\nimport {ColorModel} from \"../../../Components/ColorSelector/ColorModels/ColorModel\";\r\nko.templates[\"Core/GeneralProperties/Managers/TypesProperty/Templates/TypePropertyColorDropdown\"] = TypePropertyColorDropdown;\r\n\r\nexport interface ITypePropertyModel {\r\n\tTypeId: number;\r\n\tTypeName: string;\r\n\tTypeColor: string;\r\n}\r\n\r\nexport class TypesProperty extends BaseProperty {\r\n\tprivate _control: IControl;\r\n\tprivate _showOptions: KnockoutObservable<boolean>;\r\n\tprivate _types: KnockoutObservableArray<TableTypeModel>;\r\n\tprivate _labels = LABELS;\r\n\tprivate _dropDown: JBoxDropDown;\r\n\tprivate _colorModel: ColorModel;\r\n\tprivate _el: HTMLElement;\r\n\r\n\tColorTypes: KnockoutObservableArray<TypeColorModel>;\r\n\tSelectedColorTypes: KnockoutObservableArray<TypeColorModel>;\r\n\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: string, control: IControl) {\r\n\t\tsuper(property);\r\n\r\n\t\tthis.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\r\n\t\t//property is stored into value after that it will be saved automaticly\r\n\t\tthis.Value([]);\r\n\r\n\t\tthis._control = control;\r\n\r\n\t\tthis._showOptions = ko.observable(true);\r\n\r\n\t\tthis._types = ko.observableArray([]);\r\n\r\n\t\tthis.ColorTypes = ko.observableArray([]);\r\n\t\tthis.SelectedColorTypes = ko.observableArray([]);\r\n\t}\r\n\r\n\tInit() {\r\n\t\tthis.GetTypes();\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/TypesProperty/Templates/TypesProperty\";\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t\tthis._el = el[0];\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tGetDefaultValue() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tSetValue(propertyValue: string): void {\r\n\t\tthis.Value(propertyValue);\r\n\t\tthis._colorModel.SetColor(this.Value());\r\n\t}\r\n\r\n\tSelectType(type: TypeColorModel) {\r\n\t\ttype.SelectedStatus(true);\r\n\t\tthis.SelectedColorTypes.push(type);\r\n\t\tlet entityProperty: ITypePropertyModel = {\r\n\t\t\tTypeId: type.Id,\r\n\t\t\tTypeName: type.Name,\r\n\t\t\tTypeColor: type.TypeColor()\r\n\t\t}\r\n\t\tthis.Value().push(entityProperty);\r\n\t}\r\n\r\n\tDeselectType(selectType: TypeColorModel) {\r\n\t\tselectType.SelectedStatus(false);\r\n\t\tconst filteredSelectedTypes = _.filter(this.SelectedColorTypes(), (type: TypeColorModel) => {\r\n\t\t\treturn type.Id !== selectType.Id;\r\n\t\t});\r\n\t\tthis.Value(_.filter(this.Value(),\r\n\t\t\t(type: ITypePropertyModel) => {\r\n\t\t\t\treturn selectType.Id !== type.TypeId;\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tthis.SelectedColorTypes(filteredSelectedTypes);\r\n\t}\r\n\r\n\tChangeTypeColor(selectType: TypeColorModel, event) {\r\n\t\tthis._colorModel = new HexColorModel({Label: null, InitialColor: selectType.TypeColor(), Positions: 'top left'});\r\n\t\tthis._colorModel.On(\"COLOR_SET\", this, eventArgs => {\r\n\t\t\tthis.ChangeColor(selectType, eventArgs);\r\n\t\t});\r\n\t\tthis._colorModel.On('COLOR_RESET', this, () => {\r\n\t\t\tthis.ChangeColor(selectType, null);\r\n\t\t});\r\n\r\n\t\tconst container = event.currentTarget;\r\n\t\tlet options = {\r\n\t\t\ttarget: container,\r\n\t\t\tbindTarget: container,\r\n\t\t\tbindComponent: this,\r\n\t\t\totherOptions: {\r\n\t\t\t\taddClass: \"colorPopUp\",\r\n\t\t\t\tcloseOnClick: 'body',\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\theight: 'auto',\r\n\t\t\t\tmaxHeight: 300,\r\n\t\t\t\tisolateScroll: true,\r\n\t\t\t\tmaxWidth: 400,\r\n\t\t\t\tminWidth: 240,\r\n\t\t\t\tonCloseComplete: () => {this._dropDown.Destroy()},\r\n\t\t\t\tzIndex: ZIndexManager.Instance.NextValue,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx: \"center\",\r\n\t\t\t\t\ty: \"top\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonCreated: () => {\r\n\t\t\t\tthis._dropDown.SetContent({ content: TypePropertyColorDropdown as any });\r\n\t\t\t},\r\n\t\t\tonOpen: () => {}\r\n\t\t}\r\n\t\tthis._dropDown = new JBoxDropDown(options);\r\n\t\tthis._dropDown.Open();\r\n\t}\r\n\r\n\tChangeColor(selectType: TypeColorModel, eventArgs) {\r\n\t\t_.each(this.Value(), (value: ITypePropertyModel)=> {\r\n\t\t\tif (value.TypeId === selectType.Id){\r\n\t\t\t\tvalue.TypeColor = eventArgs ? eventArgs.data.Name : null;\r\n\t\t\t}\r\n\t\t});\r\n\t\t_.each(this.SelectedColorTypes(), (value: TypeColorModel)=> {\r\n\t\t\tif (value.Id === selectType.Id){\r\n\t\t\t\tvalue.TypeColor(eventArgs ? eventArgs.data.Name : null);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tGetTypes() {\r\n\t\tBlockUI.Block({Target: this._el});\r\n\t\tlet request: IGetTypesRequestModel = {\r\n\t\t\tEntityId: this._control.GetForm().GetScreen().GetEntityId(),\r\n\t\t\tParentTypeId: 0,\r\n\t\t\tWithRoot: false,\r\n\t\t\tOnlyEnabled: false\r\n\t\t};\r\n\r\n\t\tEntityTypesStore.GetAllTypes(request)\r\n\t\t\t.then((data)=> {\r\n\r\n\t\t\t\tconst typesColor = (this._control as any)._typesProperty;\r\n\t\t\t\ttypesColor && typesColor.map(( type: ITypePropertyModel ) => {\r\n\t\t\t\t\tthis.Value().push(type);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._types(data.TableTypes);\r\n\r\n\t\t\t\tthis.ColorTypes(this._types().map((type: TableTypeModel) => {\r\n\r\n\t\t\t\t\tlet typeSelected = _.find(this.Value(), (value: ITypePropertyModel) => {\r\n\t\t\t\t\t\treturn value.TypeId === type.Id;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tconst mappedType = _.extend(type, {\r\n\t\t\t\t\t\tSelectedStatus: ko.observable(!!typeSelected),\r\n\t\t\t\t\t\tTypeColor: ko.observable(!!typeSelected ? typeSelected.TypeColor : null)\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t!!typeSelected && this.SelectedColorTypes.push(mappedType);\r\n\r\n\t\t\t\t\treturn mappedType;\r\n\t\t\t\t}));\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUI.Unblock(this._el))\r\n\t\t\t.fail((err) => new Notifier().Failed(err.message));\r\n\t}\r\n}","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {SubTableViewDto} from \"./Models/SubTableViewDto\";\r\n\r\nexport class Store {\r\n static GetSubTableViews(entityId: number): P.Promise<SubTableViewDto[]> {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/BackLinkApi/GetSubTableViews',\r\n type: 'GET',\r\n dataType: 'json'\r\n }, params: {entityId: entityId}\r\n });\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {SubTableViewDto} from \"../Store/Models/SubTableViewDto\";\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {LanguageModel} from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\n\r\nexport class ViewModel extends Event {\r\n BackLinkSettings: KnockoutObservableArray<BackLinkingSettings>;\r\n SubTableViews: SubTableView[];\r\n\r\n constructor(propertyValue: any[], subTableViews: SubTableViewDto[]) {\r\n super();\r\n\r\n this.SubTableViews = this.MapSubTableViews(subTableViews);\r\n\r\n const settings = this.MapSettings(propertyValue);\r\n settings.forEach(s => s.On('SETTINGS_UPDATED', this, () => this.PublishChanges()));\r\n\r\n this.BackLinkSettings = ko.observableArray(settings);\r\n }\r\n\r\n AddSettings() {\r\n const settings = new BackLinkingSettings({});\r\n settings.On('SETTINGS_UPDATED', this, () => this.PublishChanges());\r\n\r\n this.BackLinkSettings.push(settings);\r\n this.PublishChanges();\r\n }\r\n\r\n RemoveSettings(settings: BackLinkingSettings) {\r\n const index = this.BackLinkSettings.indexOf(settings);\r\n this.BackLinkSettings.splice(index, 1);\r\n this.PublishChanges();\r\n }\r\n\r\n private MapSettings(propertyValue: any[]) {\r\n if (!propertyValue) return [];\r\n return propertyValue.map(settings => BackLinkingSettings.FromJSON(settings, this.SubTableViews));\r\n }\r\n\r\n private MapSubTableViews(subTableViews: SubTableViewDto[]) {\r\n return subTableViews.map(view => new SubTableView(view.Id, view.TranslatedName || view.Name));\r\n }\r\n\r\n private PublishChanges() {\r\n const changes = {\r\n Settings: this.BackLinkSettings().map(settings => {\r\n return {\r\n ButtonName: settings.NameTranslations().length && settings.NameTranslations()[0].Translation,\r\n SubTableView: settings.SubTableView() && settings.SubTableView().Id,\r\n Intention: settings.Intention(),\r\n NameTranslations: settings.NameTranslations().length && _.map(settings.NameTranslations().slice(1), (item: any) => {\r\n return {Id: item.Language.K_Language, Value: item.Translation}\r\n })\r\n };\r\n })\r\n };\r\n\r\n this.Trigger('SETTINGS_UPDATED', changes);\r\n }\r\n}\r\n\r\nexport interface IBackLinkingSettingsOptions {\r\n ButtonName?: string,\r\n SubTableView?: SubTableView,\r\n Intention?: string,\r\n Translations?: Array<{Id: number, Value: string}>\r\n}\r\n\r\nexport class BackLinkingSettings extends Event {\r\n ButtonName: KnockoutObservable<string>;\r\n SubTableView: KnockoutObservable<SubTableView>;\r\n Intention: KnockoutObservable<string>;\r\n NameTranslations: KnockoutObservableArray<TranslationModel>;\r\n protected SelectedName: KnockoutObservable<TranslationModel>;\r\n protected NameTranslationsOpened: KnockoutObservable<boolean>;\r\n\r\n constructor(model: IBackLinkingSettingsOptions) {\r\n super();\r\n\r\n this.ButtonName = ko.observable(model.ButtonName);\r\n this.ButtonName.subscribe(() => this.PublishChanges());\r\n\r\n this.SubTableView = ko.observable(model.SubTableView);\r\n this.SubTableView.subscribe(() => this.PublishChanges());\r\n\r\n this.Intention = ko.observable(model.Intention);\r\n this.Intention.subscribe(() => this.PublishChanges());\r\n\r\n this.NameTranslationsOpened = ko.observable(false);\r\n this.SelectedName = ko.observable(null);\r\n\r\n this.NameTranslations = ko.observableArray(null);\r\n this.InitTranslations(model.Translations);\r\n\r\n this.NameTranslations.subscribe(() => this.PublishChanges());\r\n }\r\n\r\n private InitTranslations(translations) {\r\n const translationItems = TranslationManager.Instance.Languages.map(language => {\r\n const model = new TranslationModel();\r\n model.Language = new LanguageModel(language.Id);\r\n model.Language.FlagBase64 = language.Flag;\r\n model.Language.ShortName = language.ShortName;\r\n model.Language.Name = language.Name;\r\n model.Translation = '';\r\n if (!model.Language.K_Language) {\r\n model.Translation = this.ButtonName();\r\n }\r\n return model;\r\n });\r\n\r\n this.NameTranslations(translationItems);\r\n this.SelectedName(this.GetNameTranslation());\r\n\r\n if (translations) {\r\n _.forEach(translations, (item: any) => {\r\n const current = _.find(this.NameTranslations(), (translation) => translation.Language.K_Language === item.Id);\r\n if (current) {\r\n current.Translation = item.Value;\r\n }\r\n });\r\n }\r\n this.SetDefaultTranslation();\r\n }\r\n\r\n private GetNameTranslation() {\r\n\t\tconst name = _.find(this.NameTranslations(), language => language.Selected && language.Translation !== '' && language.Translation !== null);\r\n return name || _.first(this.NameTranslations());\r\n }\r\n\r\n\r\n static FromJSON(settings, subTableViews: SubTableView[]) {\r\n const subTableView = _.find(subTableViews, view => view.Id === settings.SubTableView);\r\n return new BackLinkingSettings( {\r\n ButtonName: settings.ButtonName,\r\n SubTableView: subTableView,\r\n Intention: settings.Intention,\r\n Translations: settings.NameTranslations\r\n });\r\n }\r\n\r\n private PublishChanges() {\r\n this.Trigger('SETTINGS_UPDATED', {\r\n ButtonName: this.NameTranslations().length && this.NameTranslations()[0].Translation,\r\n SubTableView: this.SubTableView() && this.SubTableView().Id,\r\n Intention: this.Intention(),\r\n Translations: this.NameTranslations().length && _.map(this.NameTranslations().slice(1), (item: any) => {\r\n return {Id: item.Language.K_Language, Value: item.Translation}\r\n })\r\n });\r\n }\r\n\r\n get DefaultTranslation() {\r\n return _.find(this.NameTranslations, (item) => item.Language.K_Language === -1);\r\n }\r\n\r\n ShowNameTranslations() {\r\n this.NameTranslationsOpened(true);\r\n }\r\n\r\n ToggleNameTranslations() {\r\n if (this.NameTranslationsOpened()) {\r\n this.HideNameTranslations();\r\n } else {\r\n this.ShowNameTranslations();\r\n }\r\n }\r\n\r\n HideNameTranslations() {\r\n this.NameTranslationsOpened(false);\r\n }\r\n\r\n SelectNameTranslation(translationModel: TranslationModel) {\r\n this.SelectedName(translationModel);\r\n this.HideNameTranslations();\r\n }\r\n\r\n UpdateTranslationList() {\r\n let languages = this.NameTranslations().slice();\r\n this.NameTranslations([]);\r\n this.NameTranslations(languages);\r\n }\r\n\r\n ChangeTranslation() {\r\n let current = _.find(this.NameTranslations(), (item) => {\r\n return item.Language.K_Language === this.SelectedName().Language.K_Language;\r\n });\r\n this.SelectedName(current);\r\n this.NameTranslations.valueHasMutated();\r\n }\r\n\r\n private SetDefaultTranslation() {\r\n const defLang = TranslationManager.Instance.GetCurrentLanguage();\r\n let defTranslation = _.find(this.NameTranslations(), (translation) => translation.Language.K_Language === defLang.Id);\r\n if (defTranslation && defTranslation.Translation) {\r\n this.SelectedName(defTranslation);\r\n }\r\n }\r\n}\r\n\r\nexport class SubTableView {\r\n constructor(public Id: number, public Name: string) {\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\n\r\nimport {Store} from \"./Store/Store\";\r\n\r\nimport {ViewModel} from \"./Models/ViewModel\";\r\n\r\nimport BackLinkingPropertyTemplate\r\n from \"Core/GeneralProperties/Managers/BackLinkingProperty/Templates/BackLinkingProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/BackLinkingProperty/Templates/BackLinkingProperty\"] = BackLinkingPropertyTemplate;\r\n\r\nexport class BackLinkingProperty extends BaseProperty {\r\n private _initValue: any[];\r\n private _control: IControl;\r\n\r\n private _viewModel: KnockoutObservable<ViewModel>;\r\n private _labels = LABELS;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: any[], control: IControl) {\r\n super(property);\r\n\r\n this._initValue = propertyValue || this.GetDefaultValue();\r\n this._control = control;\r\n this._viewModel = ko.observable(null);\r\n\r\n this.Value = ko.observable(propertyValue);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/BackLinkingProperty/Templates/BackLinkingProperty\";\r\n }\r\n\r\n SetValue(propertyValue: any[]): void {\r\n\r\n }\r\n\r\n GetDefaultValue(): any[] {\r\n return [];\r\n }\r\n\r\n OnInit() {\r\n const fieldModel = this._control.GetFieldModel();\r\n\r\n if (fieldModel) {\r\n BlockUI.Block();\r\n\r\n Store.GetSubTableViews(this._control.GetFieldModel().EntityId)\r\n .then(dto => {\r\n this._viewModel(new ViewModel(this._initValue, dto));\r\n this._viewModel().On('SETTINGS_UPDATED', this, eventArgs => this.ApplyChanges(eventArgs.data));\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n }\r\n\r\n private ApplyChanges(changes) {\r\n this.Value(changes.Settings);\r\n }\r\n}","// Module\nvar code = \"<table class=\\\"table\\\"> <thead> <tr> <th><!-- ko text: _labels.BUTTON_NAME --><!-- /ko --></th> <th><!-- ko text: _labels.SUB_TABLE_VIEW --><!-- /ko --></th> <th><!-- ko text: _labels.INTENTION --><!-- /ko --></th> <th> </th> </tr> </thead> <tbody> <!--ko with: _viewModel--> <!--ko foreach: BackLinkSettings--> <tr> <td class=\\\"language-parrent-drop\\\"> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input type=\\\"text\\\" class=\\\"form-control language-edit-field\\\" data-bind=\\\"textInput: Translation, event:{keyup: $parent.UpdateTranslationList.bind($parent)}\\\"> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </td> <td> <select class=\\\"form-control\\\" data-bind=\\\"options: $parent.SubTableViews, value: $data.SubTableView, optionsText: 'Name'\\\"></select> </td> <td> <select class=\\\"form-control\\\" data-bind=\\\"value: Intention\\\"> <option value=\\\"FillLookup\\\"><!-- ko text: $parents[1]._labels.FILL_LOOKUP --><!-- /ko --></option> <option value=\\\"MakeBackLink\\\"><!-- ko text: $parents[1]._labels.MAKE_A_BACK_LINK --><!-- /ko --></option> </select> </td> <td> <a href=\\\"#\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: $parent.RemoveSettings.bind($parent, $data)\\\"> <i class=\\\"fa fa-times\\\"></i> </a> </td> </tr> <!--/ko--> <!--/ko--> </tbody> </table> <!--ko if: _viewModel--> <a href=\\\"#\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: _viewModel().AddSettings.bind(_viewModel())\\\"> <i class=\\\"fa fa-plus\\\"></i> </a> <!--/ko--> <!--ko ifnot: _viewModel--> <a href=\\\"#\\\" class=\\\"btn btn-success disabled\\\"> <i class=\\\"fa fa-plus\\\"></i> </a> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {\r\n\tBaseProperty,\r\n\tIPropertyDescription,\r\n\tIPropertyOption,\r\n\tIPropertySortOption\r\n} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport { SortOrder } from 'QueryBuilder/Enums';\r\n\r\nimport QuerySortPropertyTemplate from \"Core/GeneralProperties/Managers/QuerySortProperty/Templates/QuerySortProperty.html\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { FIELD_TYPES } from \"Core/Constant\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/QuerySortProperty/Templates/QuerySortProperty\"] = QuerySortPropertyTemplate;\r\n\r\nexport class QuerySortProperty extends BaseProperty {\r\n\tprivate _control: IControl;\r\n\tprivate _fields: KnockoutObservableArray<AttachedFieldModel>;\r\n\tprivate _selectedField: KnockoutObservable<AttachedFieldModel>;\r\n\tprivate _orderByDescending: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: IPropertySortOption, control: IControl) {\r\n\t\tsuper(property);\r\n\t\tthis._control = control;\r\n\t\tthis._fields = ko.observableArray([]);\r\n\t\tthis._selectedField = ko.observable(null);\r\n\t\tthis.Value = ko.observable(null);\r\n\t\tthis._orderByDescending = ko.observable(false);\r\n\r\n\t\tthis.Init(propertyValue);\r\n\r\n\t\tthis._selectedField.subscribe((newValue)=>{\r\n\t\t\tif( newValue) {\r\n\t\t\t\tthis.Value( { FieldId: newValue.Id, SortDirection: this._orderByDescending() ? SortOrder.Descending : SortOrder.Ascending });\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._orderByDescending.subscribe((newValue) => {\r\n\t\t\tthis.Value().SortOrder = newValue ? SortOrder.Descending : SortOrder.Ascending;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Init(propertyValue: IPropertySortOption) {\r\n\r\n if (this._control) {\r\n const types = [\r\n FIELD_TYPES.Currency, FIELD_TYPES.Document, FIELD_TYPES.Icon, FIELD_TYPES.Image, FIELD_TYPES.Reference,\r\n FIELD_TYPES.Memo, FIELD_TYPES.MultiSelect, FIELD_TYPES.Password\r\n ];\r\n\r\n const attachedFields = this._control.GetModel().Fields;\r\n\r\n const sortingFields = _.filter(attachedFields,\r\n field => !_.contains(types, field.FieldTypeName) && !field.IsVirtual);\r\n\r\n this._fields(sortingFields);\r\n\t\t}\r\n\r\n\t\tthis.SetValue(propertyValue);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/QuerySortProperty/Templates/QuerySortProperty\";\r\n\t}\r\n\r\n\tFormatFieldName(field: AttachedFieldModel){\r\n\t\treturn field.FieldNameTranslation || field.Name;\r\n\t}\r\n\r\n\tGetDefaultValue() {\r\n\t\tlet firstField = _.first(this._fields());\r\n\t\tif(firstField){\r\n\t\t\treturn {\r\n\t\t\t\tFieldId: firstField.Id,\r\n\t\t\t\tSortOrder: SortOrder.Ascending\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(propertyValue: IPropertySortOption): void {\r\n\t\tif (!propertyValue) {\r\n\t\t\tthis.Value(this.GetDefaultValue());\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet value: IPropertySortOption = {\r\n\t\t\tFieldId : 0,\r\n\t\t\tSortOrder: SortOrder.Ascending\r\n\t\t}\r\n\r\n\t\tthis.Value({ FieldId: 0, SortOrder: SortOrder.Ascending } );\r\n\r\n\t\tlet field = _.find(this._fields(), (field)=>{\r\n\t\t\treturn field.Id === propertyValue.FieldId;\r\n\t\t});\r\n\r\n\t\tif(field) {\r\n\t\t\tvalue.FieldId = field.Id;\r\n\t\t\tthis._selectedField(field);\r\n\t\t}\r\n\r\n\t\tlet orderByDescending = propertyValue.SortOrder === SortOrder.Descending ? true : false;\r\n\r\n\t\tvalue.SortOrder = propertyValue.SortOrder;\r\n\t\tthis.Value(value);\r\n\r\n\t\tthis._orderByDescending(orderByDescending);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"property-container sortingItem\\\"> <select data-bind=\\\"options: _fields, optionsText: 'FullName', value: _selectedField\\\" class=\\\"form-control\\\"></select> <span class=\\\"inputCheckbox\\\"><input data-bind=\\\"checked: _orderByDescending\\\" type=\\\"checkbox\\\">Desc</span> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport { EntityTypesStore } from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { TableStore } from \"Core/Common/Stores/TableStore\";\r\nimport { SearchScreen, ISelectedRecord } from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {RecordStore} from \"Core/Common/Stores/RecordStore\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport Template from \"Core/GeneralProperties/Managers/QuerySelectorProperty/Templates/QuerySelectorProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/QuerySelectorProperty/Templates/QuerySelectorProperty\"] = Template;\r\n\r\nexport class QuerySelectorProperty extends BaseProperty {\r\n QueryName: KnockoutObservable<string>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: string, getData: boolean = true) {\r\n super(property, true);\r\n this.QueryName = ko.observable(null);\r\n this.Value = ko.observable(propertyValue);\r\n this.Value.subscribe(()=>{\r\n this.LoadData(getData);\r\n });\r\n this.LoadData(getData);\r\n\t}\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/QuerySelectorProperty/Templates/QuerySelectorProperty\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return null;\r\n }\r\n\r\n SetValue(propertyValue: string): void {\r\n this.Value(propertyValue);\r\n }\r\n\r\n LoadData(getData: boolean = true){\r\n if(this.Value() && getData){\r\n TableStore\r\n .Get({ TableName: 'Queries' })\r\n .then((table: any) => {\r\n BlockUI.Block();\r\n\r\n RecordStore.GetRecord({TableId: table.Id, RecordId: this.Value()})\r\n .always(() => BlockUI.Unblock())\r\n .then((record: any) => {\r\n let nameField = _.find(record.Fields, (field: any)=> field.FieldName === 'NAME');\r\n if(nameField){\r\n this.QueryName(nameField.FieldValue);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n \r\n Add(){\r\n EntityTypesStore.GetTypes({\r\n EntityId: 0,\r\n ParentTypeId: 0,\r\n WithRoot: true,\r\n OnlyEnabled: true,\r\n EntityName: 'Queries'\r\n }).then(tableTypesModel => {\r\n \r\n let queryType = _.find(tableTypesModel.TableTypes, (type) => type.Name === 'Query');\r\n\r\n this.ShowSearchScreen( 'Queries', false, [queryType.Id]).then((searchScreen) => {\r\n searchScreen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n let record = evtArgs.data as ISelectedRecord;\r\n this.Value(record.RecordId);\r\n });\r\n });\r\n })\r\n }\r\n\r\n ShowSearchScreen(\r\n\t\ttableName: string,\r\n\t\tmultiSelect: boolean = false,\r\n\t\tsearchTypes: Array<number> = []\r\n\t): P.Promise<SearchScreen> {\r\n\t\tconst deferredResult = P.defer<SearchScreen>();\r\n\t\tTableStore.Get({ TableName: tableName }).then((table: any) => {\r\n\r\n\t\t\tconst searchScreen = new SearchScreen({\r\n\t\t\t\tButtonAdd: false,\r\n\t\t\t\tEntityId: table.Id,\r\n\t\t\t\tSearchTerm: '',\r\n\t\t\t\tControlId: 0,\r\n\t\t\t\tConditionToggler: false,\r\n\t\t\t\tMultiSelectMode: multiSelect,\r\n\t\t\t\tSearchByTypes: searchTypes\r\n\t\t\t});\r\n\r\n\t\t\tsearchScreen.Show();\r\n\t\t\tdeferredResult.resolve(searchScreen);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n Clear(){\r\n this.Value(null);\r\n this.QueryName(null);\r\n }\r\n}","// Module\nvar code = \"<div> <!-- ko if: Value --> <a data-bind=\\\"click: Add, text: QueryName\\\" href=\\\"javascript:;\\\"></a> <!-- /ko --> <!-- ko ifnot: Value --> <a data-bind=\\\"click: Add\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only green\\\" title=\\\"Add\\\"> <i class=\\\"fa fa-plus\\\"></i> </a> <!-- /ko --> <!-- ko if: Value --> <a data-bind=\\\"click: Clear\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only red\\\" title=\\\"Remove\\\"> <i class=\\\"fa fa-remove\\\"></i> </a> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {BaseProperty, IPropertyDescription} from '../BaseProperty';\r\nimport {IConsultScreenLayoutValue} from './IConsultScreenLayoutValue';\r\n\r\nimport Template\r\n from 'Core/GeneralProperties/Managers/ConsultScreenLayout/Templates/ConsultScreenLayoutProperty.html';\r\n\r\nko.templates['Core/GeneralProperties/Managers/ConsultScreenLayout/Templates/ConsultScreenLayoutProperty'] = Template;\r\n\r\nexport class ConsultScreenLayout extends BaseProperty {\r\n constructor(property: IPropertyDescription, propertyValue: any) {\r\n super(property);\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/ConsultScreenLayout/Templates/ConsultScreenLayoutProperty';\r\n }\r\n\r\n SetValue(propertyValue: any) {\r\n if (propertyValue) {\r\n this.Value(propertyValue);\r\n }\r\n }\r\n\r\n GetDefaultValue(): IConsultScreenLayoutValue {\r\n return {\r\n ActionBar: {\r\n Checked: true\r\n },\r\n MainBlocks: {\r\n Checked: true,\r\n Minimized: false\r\n },\r\n BottomBar: {\r\n Checked: true\r\n }\r\n };\r\n }\r\n\r\n ToggleActionBar() {\r\n this.Value().ActionBar.Checked = !this.Value().ActionBar.Checked;\r\n this.Value.valueHasMutated();\r\n }\r\n\r\n ToggleMainBlocks() {\r\n this.Value().MainBlocks.Checked = !this.Value().MainBlocks.Checked;\r\n\r\n if (!this.Value().MainBlocks.Checked) {\r\n this.Value().MainBlocks.Minimized = false;\r\n }\r\n\r\n this.Value.valueHasMutated();\r\n }\r\n\r\n ToggleMinimizeMainBlocks() {\r\n this.Value().MainBlocks.Minimized = !this.Value().MainBlocks.Minimized;\r\n this.Value.valueHasMutated();\r\n }\r\n\r\n ToggleBottomBar() {\r\n this.Value().BottomBar.Checked = !this.Value().BottomBar.Checked;\r\n this.Value.valueHasMutated();\r\n }\r\n}","// Module\nvar code = \"<!--ko with: Value--> <div class=\\\"consult-screen-layout\\\"> <div class=\\\"action-bar\\\" data-bind=\\\"css: {checked: ActionBar.Checked}, click: $parent.ToggleActionBar.bind($parent)\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> <div class=\\\"block-check\\\"> <i class=\\\"fa\\\" data-bind=\\\"css: {\\r\\n checked: ActionBar.Checked,\\r\\n 'fa-check-circle-o': ActionBar.Checked,\\r\\n 'fa-circle-o': !ActionBar.Checked\\r\\n },\\r\\n click: $parent.ToggleActionBar.bind($parent)\\\"></i> </div> </div> <div class=\\\"main-blocks\\\" data-bind=\\\"click: $parent.ToggleMainBlocks.bind($parent)\\\"> <div class=\\\"main-block\\\" data-bind=\\\"css: {checked: MainBlocks.Checked}\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-block\\\" data-bind=\\\"css: {checked: MainBlocks.Checked}\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-block\\\" data-bind=\\\"css: {checked: MainBlocks.Checked}\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> <div class=\\\"block-check\\\"> <i class=\\\"fa fa-list-alt\\\" data-bind=\\\"tooltip: {content: 'Minimize main blocks'},\\r\\n style: {opacity: MainBlocks.Checked ? 1 : 0},\\r\\n css: {checked: MainBlocks.Minimized,},\\r\\n click: $parent.ToggleMinimizeMainBlocks.bind($parent)\\\"></i> <i class=\\\"fa\\\" data-bind=\\\"css: {\\r\\n checked: MainBlocks.Checked,\\r\\n 'fa-check-circle-o': MainBlocks.Checked,\\r\\n 'fa-circle-o': !MainBlocks.Checked\\r\\n },\\r\\n click: $parent.ToggleMainBlocks.bind($parent)\\\"></i> </div> </div> </div> <div class=\\\"bottom-bar\\\" data-bind=\\\"css: {checked: BottomBar.Checked}, click: $parent.ToggleBottomBar.bind($parent)\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> <div class=\\\"block-check\\\"> <i class=\\\"fa\\\" data-bind=\\\"css: {\\r\\n checked: BottomBar.Checked,\\r\\n 'fa-check-circle-o': BottomBar.Checked,\\r\\n 'fa-circle-o': !BottomBar.Checked\\r\\n },\\r\\n click: $parent.ToggleBottomBar.bind($parent)\\\"></i> </div> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","import {BusinessRole} from 'Core/GeneralProperties/Managers/TabSecurity/Models/BusinessRole';\r\nimport {BusinessRoleRestrictions} from 'Core/GeneralProperties/Managers/TabSecurity/Enums/BusinessRoleRestrictions';\r\n\r\nexport class BusinessRolesDisplaySettings {\r\n public _restrictions: { Name: string; IconName: string }[];\r\n\r\n constructor(public Role: BusinessRole, value: number) {\r\n this._restrictions = BusinessRoleRestrictions\r\n .AsList(value)\r\n .map((restriction) => {\r\n return {\r\n Name: restriction.Name,\r\n IconName: restriction.IconName\r\n }\r\n });\r\n }\r\n\r\n get Restrictions() {\r\n return this._restrictions.slice();\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport {ITabSecurityParams} from 'Core/GeneralProperties/Managers/TabSecurity/ITabSecurityParams';\r\n\r\nimport {BusinessRolesDisplaySettings} from './Models/BusinessRolesDisplaySettings';\r\n\r\nimport Template from 'Core/GeneralProperties/Managers/TabSecurity/Views/DisplayView/Templates/Template.html'\r\n\r\nexport class TabSecurityDisplayView extends Event {\r\n private _settings: KnockoutObservableArray<BusinessRolesDisplaySettings>;\r\n private _restrictionsIcons: KnockoutObservableArray<BusinessRolesDisplaySettings>;\r\n\r\n constructor(params: ITabSecurityParams) {\r\n super();\r\n this._settings = ko.observableArray(this.MapToSettings(params));\r\n this._restrictionsIcons = ko.observableArray(this.MapToRestrictionsIcon(params));\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n RequestEditView() {\r\n this.Trigger('RequestEditView');\r\n }\r\n\r\n private MapToSettings(params: ITabSecurityParams) {\r\n return params.Settings.map(settings => {\r\n const role = params.Roles.find(role => role.Id === settings.RoleId);\r\n return role\r\n ? new BusinessRolesDisplaySettings(role, settings.Value)\r\n : null;\r\n }).filter(settings => settings !== null);\r\n }\r\n\r\n private MapToRestrictionsIcon(params: ITabSecurityParams) {\r\n let mapToRestrictions = this.MapToSettings(params).map(settings => {\r\n return settings._restrictions;\r\n });\r\n return _.uniq(_.flatten(mapToRestrictions, true), false, restrictions => restrictions.Name);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"tab-security\\\"> <div class=\\\"tab-security__header\\\"> <!--ko if: _settings().length === 0--> <button type=\\\"button\\\" class=\\\"btn-new\\\" data-bind=\\\"click: $data.RequestEditView.bind($data)\\\"> <i class=\\\"fa fa-plus\\\"></i> Add </button> <!--/ko--> <!--ko if: _settings().length > 0--> <button type=\\\"button\\\" class=\\\"btn-edit\\\" data-bind=\\\"click: $data.RequestEditView.bind($data)\\\"> <i class=\\\"fa fa-edit\\\"></i> Edit </button> <!--/ko--> </div> <!--ko if: _settings().length > 0--> <div class=\\\"restriction-rules\\\"> <!--ko foreach: _settings--> <div class=\\\"restriction-rule\\\"> <div class=\\\"restriction-rule__role\\\" data-bind=\\\"text: Role.DisplayName\\\"></div> <div class=\\\"restriction-rule__values\\\"> <!--ko foreach: Restrictions--> <div class=\\\"restriction-value\\\" data-bind=\\\"text: $data.Name\\\"></div> <!--/ko--> </div> </div> <!--/ko--> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {BusinessRoleRestrictions} from 'Core/GeneralProperties/Managers/TabSecurity/Enums/BusinessRoleRestrictions';\r\nimport {BusinessRole} from 'Core/GeneralProperties/Managers/TabSecurity/Models/BusinessRole';\r\n\r\nexport class BusinessRolesEditSettings {\r\n View: KnockoutObservable<boolean>;\r\n Create: KnockoutObservable<boolean>;\r\n Update: KnockoutObservable<boolean>;\r\n Delete: KnockoutObservable<boolean>;\r\n\r\n constructor(public Role: BusinessRole, value: number) {\r\n this.View = ko.observable(BusinessRoleRestrictions.View.PresentIn(value));\r\n this.Create = ko.observable(BusinessRoleRestrictions.Create.PresentIn(value));\r\n this.Update = ko.observable(BusinessRoleRestrictions.Update.PresentIn(value));\r\n this.Delete = ko.observable(BusinessRoleRestrictions.Delete.PresentIn(value));\r\n }\r\n\r\n get Value() {\r\n return (this.View() && BusinessRoleRestrictions.View.Value) +\r\n (this.Create() && BusinessRoleRestrictions.Create.Value) +\r\n (this.Update() && BusinessRoleRestrictions.Update.Value) +\r\n (this.Delete() && BusinessRoleRestrictions.Delete.Value);\r\n }\r\n\r\n get AnyRestrictions() {\r\n return this.View() || this.Create() || this.Update() || this.Delete();\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\n\r\nimport {ITabSecurityEditParams} from './ITabSecurityEditParams';\r\n\r\nimport {IBusinessRoleSettings} from '../../ITabSecurityValue';\r\nimport {BusinessRolesEditSettings} from './Models/BusinessRolesEditSettings';\r\n\r\nimport EditTemplate from 'Core/GeneralProperties/Managers/TabSecurity/Views/EditView/Templates/Template.html'\r\n\r\nko.templates['Core/GeneralProperties/Managers/TabSecurity/Templates/Edit'] = EditTemplate;\r\n\r\nexport class TabSecurityEditView extends Event {\r\n private _settings: KnockoutObservableArray<BusinessRolesEditSettings>;\r\n private _modal: Modal;\r\n\r\n constructor(params: ITabSecurityEditParams) {\r\n super();\r\n this._settings = ko.observableArray(this.MapToSettings(params));\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/GeneralProperties/Managers/TabSecurity/Templates/Edit';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Show() {\r\n this._modal = new Modal({\r\n addClass: 'jBox-padding-15px',\r\n maxWidth: 470,\r\n maxHeight: 450,\r\n closeButton: false,\r\n closeOnClick: false,\r\n closeOnEsc: false\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n this._modal.Destroy();\r\n }\r\n\r\n Save() {\r\n const settings: IBusinessRoleSettings[] = this._settings()\r\n .filter(settings => settings.Value > 0)\r\n .map(settings => {\r\n return {RoleId: settings.Role.Id, Value: settings.Value}\r\n });\r\n\r\n this.Trigger('SaveChanges', {Settings: settings});\r\n }\r\n\r\n Cancel() {\r\n this.Close();\r\n }\r\n\r\n private MapToSettings(params: ITabSecurityEditParams) {\r\n return params.Roles.map(role => {\r\n const restriction = params.Settings.find(restriction => restriction.RoleId === role.Id);\r\n const value = restriction ? restriction.Value : 0;\r\n return new BusinessRolesEditSettings(role, value);\r\n });\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"tab-security-edit\\\"> <div class=\\\"tab-security-edit__actions\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: $data.Save.bind($data)\\\">Save</button> <button type=\\\"button\\\" class=\\\"btn btn-default\\\" data-bind=\\\"click: $data.Cancel.bind($data)\\\">Cancel</button> </div> <div class=\\\"tab-security-edit__header\\\"> <span>Tab Security</span> </div> <div class=\\\"tab-security-edit__table\\\"> <table class=\\\"table tab-security-edit__rules\\\"> <thead> <tr> <th class=\\\"first-cell\\\">Business roles</th> <th>Hide</th> </tr> </thead> <tbody> <!--ko foreach: _settings--> <tr> <td class=\\\"first-cell\\\" data-bind=\\\"text: Role.DisplayName, style: {'font-weight': Role.Id == null ? 'bold' : ''}\\\"></td> <td><input type=\\\"checkbox\\\" data-bind=\\\"checked: View\\\"></td> </tr> <!--/ko--> </tbody> </table> </div> <p class=\\\"tab-security-edit__hint\\\"> Tick a checkbox to restrict functionality for an appropriate business role </p> </div> </div>\";\n// Exports\nexport default code;","export class BusinessRole {\r\n constructor(\r\n public Id: number,\r\n public Name: string,\r\n public TranslatedName: string) {\r\n }\r\n\r\n get DisplayName() {\r\n return this.TranslatedName || this.Name;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {BaseProperty, IPropertyDescription} from '../BaseProperty';\r\nimport {ITabSecurityValue} from './ITabSecurityValue';\r\n\r\nimport {TabSecurityDisplayView} from './Views/DisplayView/TabSecurityDisplayView';\r\nimport {TabSecurityEditView} from './Views/EditView/TabSecurityEditView';\r\n\r\nimport {TabSecurityStore} from './Stores/TabSecurityStore';\r\n\r\nimport {BusinessRoleDto} from './Stores/Models/BusinessRoleDto';\r\nimport {BusinessRole} from './Models/BusinessRole';\r\n\r\n\r\nimport Template from 'Core/GeneralProperties/Managers/TabSecurity/Templates/Template.html'\r\n\r\nko.templates['Core/GeneralProperties/Managers/TabSecurity/Templates/Template'] = Template;\r\n\r\nexport class TabSecurity extends BaseProperty {\r\n private readonly _store: TabSecurityStore;\r\n private readonly _displayView: KnockoutObservable<TabSecurityDisplayView>;\r\n\r\n private _el: HTMLElement;\r\n private _roles: BusinessRole[];\r\n\r\n constructor(property: IPropertyDescription, propertyValue: any) {\r\n super(property);\r\n\r\n this._store = new TabSecurityStore();\r\n this._displayView = ko.observable(null);\r\n\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n }\r\n\r\n SetValue(propertyValue: any) {\r\n if (propertyValue) {\r\n this.Value(propertyValue);\r\n }\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/TabSecurity/Templates/Template';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n this._el = el[0];\r\n this.LoadRestrictions()\r\n .then(() => this.InitDisplayView());\r\n }\r\n\r\n GetDefaultValue(): ITabSecurityValue {\r\n return {\r\n TabSecuritySettings: []\r\n }\r\n }\r\n\r\n InitDisplayView() {\r\n const displayView = new TabSecurityDisplayView({\r\n Roles: this._roles,\r\n Settings: this.Value().TabSecuritySettings\r\n });\r\n\r\n displayView.On('RequestEditView', this, () => this.OpenEditView());\r\n\r\n this._displayView(displayView);\r\n }\r\n\r\n OpenEditView() {\r\n const editView = new TabSecurityEditView({\r\n Roles: this._roles,\r\n Settings: this.Value().TabSecuritySettings\r\n });\r\n\r\n editView.On('SaveChanges', this, eventArgs => {\r\n this.Value().TabSecuritySettings = eventArgs.data.Settings;\r\n this.Value.valueHasMutated();\r\n\r\n editView.Close();\r\n this.InitDisplayView();\r\n });\r\n\r\n editView.Show();\r\n }\r\n\r\n private LoadRestrictions() {\r\n BlockUI.Block({Target: this._el});\r\n return this._store.GetBusinessRoles()\r\n .then(roles => {\r\n this._roles = this.MapToRoles(roles);\r\n return P.resolve(null);\r\n })\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock(this._el));\r\n }\r\n\r\n private MapToRoles(rolesDto: BusinessRoleDto[]) {\r\n const roles = rolesDto.map(roleDto => new BusinessRole(roleDto.Id, roleDto.Name, roleDto.TranslatedName));\r\n roles.unshift(new BusinessRole(null, 'Without Role', null));\r\n\r\n return roles;\r\n }\r\n}","// Module\nvar code = \"<div> <!--ko with: _displayView--> <!--ko template: {html: $data.GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </div>\";\n// Exports\nexport default code;","import { URL } from 'Core/Common/Url';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { Deserialize } from 'libs/cerialize';\r\nimport { DWPackageModel } from \"Core/GeneralProperties/Managers/DWPackageProperty/Models/DWPackageModel\";\r\n\r\nexport class DWPackagePropertyStore {\r\n static GetDataWizardPackages(): P.Promise<DWPackageModel[]>{\r\n\t\tvar deferredResult = P.defer<any>();\r\n \r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n url: URL.CANVAS.GET_DW_PACKAGES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\t\tRequest.Send(requestParams).then(data => {\r\n deferredResult.resolve(data.ResultObject);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport Template from 'Core/GeneralProperties/Managers/DWPackageProperty/Templates/DWPackageProperty.html';\r\n\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { BaseProperty, IPropertyDescription, IPropertyOption } from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport { DWPackageModel } from \"Core/GeneralProperties/Managers/DWPackageProperty/Models/DWPackageModel\";\r\nimport { DWPackagePropertyStore }\r\n from \"Core/GeneralProperties/Managers/DWPackageProperty/Stores/DWPackagePropertyStore\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/DWPackageProperty/Templates/DWPackageProperty\"] = Template;\r\n\r\nexport class DWPackageProperty extends BaseProperty {\r\n private _options: KnockoutObservableArray<IPropertyOption>;\r\n private SelectedOption: KnockoutObservable<IPropertyOption>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: number, getData: boolean = true) {\r\n super(property);\r\n\r\n this._options = ko.observableArray([]);\r\n this.Value = ko.observable(null);\r\n this.SelectedOption = ko.observable(null);\r\n\r\n if(getData) {\r\n DWPackagePropertyStore.GetDataWizardPackages().then((result) => {\r\n let items: IPropertyOption[] = _.map(result,\r\n (item: DWPackageModel) => {\r\n return { Name: item.Name, Value: item.Id }\r\n });\r\n this.Init(items, propertyValue);\r\n }).fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n }\r\n\r\n get Options(): KnockoutObservableArray<IPropertyOption> {\r\n return this._options;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/DWPackageProperty/Templates/DWPackageProperty\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return _.first(this._options());\r\n }\r\n\r\n SetValue(propertyValue: number): void {\r\n this.SelectedOption.subscribe((newValue)=>{\r\n if(newValue){\r\n this.Value(newValue.Value)\r\n }\r\n });\r\n \r\n if (!propertyValue) {\r\n this.SelectedOption(this.GetDefaultValue());\r\n }else{\r\n let selectedValue = _.find(this._options(), option => option.Value === propertyValue);\r\n this.SelectedOption(selectedValue); \r\n }\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this.ValueRequired) {\r\n return this.Value();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private Init(options: IPropertyOption[], propertyValue: number) {\r\n this.SetOptions(options);\r\n this.SetValue(propertyValue);\r\n }\r\n\r\n private SetOptions(options: IPropertyOption[]) {\r\n if (!this.ValueRequired) {\r\n const empty: IPropertyOption = { Name: LABELS.SELECT_LABEL + '....', Value: null };\r\n options.unshift(empty);\r\n }\r\n\r\n this._options(options);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: Name\\\"></span> <select data-bind=\\\"options: Options, optionsText: 'Name', value: SelectedOption\\\" class=\\\"form-control\\\"></select> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport {DimensionField} from './DimensionField';\r\n\r\nexport class Dimension extends Event {\r\n private _initialized: boolean;\r\n private _oldSelectedField: DimensionField;\r\n\r\n Fields: KnockoutObservableArray<DimensionField>;\r\n SelectedField: KnockoutObservable<DimensionField>;\r\n\r\n constructor(fields: DimensionField[], selectedFieldId?: number) {\r\n super();\r\n\r\n this._initialized = false;\r\n\r\n this.Fields = ko.observableArray(fields);\r\n\r\n this.SelectedField = ko.observable(selectedFieldId ? fields.find(field => field.Id === selectedFieldId) : null);\r\n\r\n this.SelectedField.subscribe(oldSelectedField => this._oldSelectedField = oldSelectedField, undefined, 'beforeChange');\r\n this.SelectedField.subscribe(() => {\r\n if (!this._initialized) {\r\n this._initialized = true;\r\n return;\r\n }\r\n\r\n this.Trigger('SelectedField');\r\n });\r\n\r\n if (this.SelectedField()) {\r\n this._initialized = true;\r\n }\r\n }\r\n\r\n get OldSelectedField() {\r\n return this._oldSelectedField;\r\n }\r\n}","export class DimensionField {\r\n constructor(public Id: number, public Name: string) {\r\n }\r\n}\r\n","export class DimensionalTablePropertyValue {\r\n constructor(public ValueField: DimensionalTablePropertyField,\r\n public PageField: DimensionalTablePropertyField,\r\n public DimensionFields: DimensionalTablePropertyField[]) {\r\n }\r\n}\r\n\r\nexport class DimensionalTablePropertyField {\r\n constructor(public Id: number, public Name: string) {\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {TableStore} from 'Core/Common/Stores/TableStore';\r\n\r\nimport {IControl} from 'Core/Controls/IControl';\r\n\r\nimport {BaseProperty, IPropertyDescription} from '../BaseProperty';\r\n\r\nimport {Dimension} from './Models/Dimension';\r\nimport {DimensionField} from './Models/DimensionField';\r\nimport {DimensionalTablePropertyField, DimensionalTablePropertyValue} from './Models/DimensionalTablePropertyValue';\r\n\r\nimport DimensionalTablePropertyTemplate\r\n from \"Core/GeneralProperties/Managers/DimensionalTableProperty/Templates/DimensionalTableProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/DimensionalTableProperty/Templates/DimensionalTableProperty\"] = DimensionalTablePropertyTemplate;\r\n\r\nexport class DimensionalTableProperty extends BaseProperty {\r\n private _control: IControl;\r\n private _el: HTMLElement;\r\n private _labels = LABELS;\r\n\r\n private _maxDimensions: number;\r\n private _tableFields: DimensionField[];\r\n\r\n private _valueFieldChangedSub: KnockoutSubscription;\r\n private _pageFieldChangeSub: KnockoutSubscription;\r\n\r\n ValueField: KnockoutObservable<DimensionField>;\r\n PageField: KnockoutObservable<DimensionField>;\r\n\r\n ValueFields: KnockoutObservableArray<DimensionField>;\r\n Dimensions: KnockoutObservableArray<Dimension>;\r\n PageFields: KnockoutObservableArray<DimensionField>;\r\n\r\n AnyDimensionSelected: KnockoutComputed<boolean>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n super(property);\r\n\r\n this._control = control;\r\n this._maxDimensions = 4;\r\n this._tableFields = [];\r\n\r\n this.ValueField = ko.observable(null);\r\n this.PageField = ko.observable(null);\r\n\r\n this.ValueFields = ko.observableArray([]);\r\n this.Dimensions = ko.observableArray([]);\r\n this.PageFields = ko.observableArray([]);\r\n\r\n this.AnyDimensionSelected = ko.computed(() => this.Dimensions().length > 0, this);\r\n\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n }\r\n\r\n IsValid(): boolean {\r\n return this.Value() && this.Value().ValueField && this.Value().DimensionFields.length > 0;\r\n }\r\n\r\n Reset() {\r\n this.Value(this.GetDefaultValue());\r\n this.OnInit();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/DimensionalTableProperty/Templates/DimensionalTableProperty';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n this._el = el[0];\r\n }\r\n\r\n GetDefaultValue(): any {\r\n return null;\r\n }\r\n\r\n OnInit() {\r\n const fieldModel = this._control.GetFieldModel();\r\n if (fieldModel) {\r\n const tableId = fieldModel.EntityId;\r\n\r\n BlockUI.Block({Target: this._el});\r\n TableStore.GetStruct({TableId: tableId})\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then(tableStruct => {\r\n this.InitDimensionFields(tableStruct);\r\n\r\n if (this.Value()) {\r\n this.FillViewModel();\r\n } else {\r\n this.Dimensions([]);\r\n }\r\n\r\n this.BindEvents();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n }\r\n\r\n OnValueFieldChange() {\r\n //if deselected\r\n if (!this.ValueField()) {\r\n this.PageField(null);\r\n this.Dimensions([]);\r\n this.UpdateValue();\r\n this.UpdateAvailableFields();\r\n return;\r\n }\r\n\r\n //add dimension if possible\r\n if (this.Dimensions().length === 0) {\r\n this.AddDimension();\r\n this.UpdateValue();\r\n this.UpdateAvailableFields();\r\n }\r\n }\r\n\r\n OnPageFieldChange() {\r\n this.UpdateValue();\r\n this.UpdateAvailableFields();\r\n }\r\n\r\n OnDimensionalFieldSelect(dimension: Dimension) {\r\n const index = this.Dimensions().indexOf(dimension);\r\n\r\n //if deselected\r\n if (!dimension.SelectedField()) {\r\n this.Dimensions.splice(index + 1);\r\n this.UpdateValue();\r\n this.UpdateAvailableFields();\r\n return;\r\n }\r\n\r\n //add dimension if possible\r\n if (this.Dimensions().length < this._maxDimensions && index === this.Dimensions().length - 1) {\r\n this.AddDimension();\r\n this.UpdateValue();\r\n this.UpdateAvailableFields();\r\n return;\r\n }\r\n\r\n this.UpdateValue();\r\n this.UpdateAvailableFields();\r\n }\r\n\r\n private InitDimensionFields(tableStruct: any) {\r\n const allowedFieldTypes = [FIELD_TYPES.Integer, FIELD_TYPES.Decimal, FIELD_TYPES.Lookup, FIELD_TYPES.Text];\r\n\r\n const fields = _.chain(tableStruct.Fields)\r\n .filter(field => field.Sort >= 3000 && field.Sort <= 7999)\r\n .filter(field => field.IsPhysicalField)\r\n .filter(field => _.contains(allowedFieldTypes, field.Type))\r\n .map(field => new DimensionField(field.Id, field.Name))\r\n .value();\r\n\r\n this._tableFields = fields;\r\n\r\n this.ValueFields(fields);\r\n this.PageFields(fields);\r\n }\r\n\r\n private FillViewModel() {\r\n const valueField = this._tableFields.find(field => field.Id === this.Value().ValueField.Id);\r\n const pageField = this.Value().PageField && this._tableFields.find(field => field.Id === this.Value().PageField.Id);\r\n this.ValueField(valueField);\r\n this.PageField(pageField);\r\n\r\n this.Value().DimensionFields.forEach(field => this.AddDimension(field.Id));\r\n\r\n if (this.Value().DimensionFields.length < this._maxDimensions) {\r\n this.AddDimension();\r\n }\r\n\r\n this.UpdateAvailableFields();\r\n }\r\n\r\n private BindEvents() {\r\n if (this._valueFieldChangedSub) {\r\n this._valueFieldChangedSub.dispose();\r\n this._pageFieldChangeSub.dispose();\r\n }\r\n\r\n this._valueFieldChangedSub = this.ValueField.subscribe(() => this.OnValueFieldChange());\r\n this._pageFieldChangeSub = this.PageField.subscribe(() => this.OnPageFieldChange());\r\n }\r\n\r\n private AddDimension(selectedFieldId?: number) {\r\n const dimension = this.CreateDimension(selectedFieldId)\r\n this.Dimensions.push(dimension);\r\n }\r\n\r\n private CreateDimension(selectedFieldId?: number) {\r\n const dimension = new Dimension(this._tableFields, selectedFieldId);\r\n dimension.On('SelectedField', this, () => this.OnDimensionalFieldSelect(dimension));\r\n return dimension;\r\n }\r\n\r\n private UpdateValue() {\r\n if (!this.ValueField()) {\r\n this.Value(null);\r\n this.PageField(null);\r\n return;\r\n }\r\n\r\n const valueField = new DimensionalTablePropertyField(this.ValueField().Id, this.ValueField().Name);\r\n const pageField = this.PageField() ? new DimensionalTablePropertyField(this.PageField().Id, this.PageField().Name) : null;\r\n\r\n const dimensionFields: DimensionalTablePropertyField[] = this.Dimensions()\r\n .filter(dimension => dimension.SelectedField())\r\n .map(dimension => new DimensionalTablePropertyField(dimension.SelectedField().Id, dimension.SelectedField().Name));\r\n\r\n const value = new DimensionalTablePropertyValue(valueField, pageField, dimensionFields);\r\n this.Value(value);\r\n }\r\n\r\n private UpdateAvailableFields() {\r\n const dimensionFields = this.Dimensions().map(dimension => dimension.SelectedField());\r\n const valueField = this.ValueField();\r\n const pageField = this.PageField();\r\n const selectedFields = [valueField, pageField, ...dimensionFields].filter(field => !!field);\r\n\r\n const availableValueFields = _.without(this._tableFields, ...selectedFields.filter(field => field !== this.ValueField()))\r\n this.ValueFields(availableValueFields);\r\n\r\n this.Dimensions().forEach(dimension => {\r\n const otherSelectedFields = selectedFields.filter(field => field !== dimension.SelectedField());\r\n const availableFields = _.without(this._tableFields, ...otherSelectedFields);\r\n dimension.Fields(availableFields);\r\n });\r\n\r\n const availablePageFields = _.without(this._tableFields, ...selectedFields.filter(field => field !== this.PageField()))\r\n this.PageFields(availablePageFields);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"dimensional-table-property\\\"> <table class=\\\"spreadsheet-design\\\"> <tr> <td class=\\\"layout-cell\\\"></td> <td class=\\\"layout-cell\\\"></td> <td class=\\\"layout-cell\\\"></td> </tr> <tr> <td rowspan=\\\"2\\\" colspan=\\\"2\\\"></td> <td class=\\\"cell cell--violet\\\">Dimension 3</td> </tr> <tr> <td class=\\\"cell cell--blue\\\">Dimension 1</td> </tr> <tr> <td class=\\\"cell cell--grey\\\">Dimension 4</td> <td class=\\\"cell cell--orange\\\">Dimension 2</td> <td class=\\\"cell cell--bold cell--centered\\\">Value</td> </tr> <tr> <td colspan=\\\"3\\\" class=\\\"cell cell--bold cell--centered\\\">Page</td> </tr> </table> <div class=\\\"dimensions-mapping\\\"> <div class=\\\"form-group\\\"> <label>Value</label> <select class=\\\"form-control\\\" data-bind=\\\"options: ValueFields, optionsText: 'Name', optionsCaption: _labels.SELECT_VALUE_LABEL, value: ValueField\\\"></select> </div> <!--ko foreach: Dimensions--> <div class=\\\"form-group\\\"> <label> Dimension <span data-bind=\\\"text: ($index() + 1)\\\"></span> </label> <select class=\\\"form-control\\\" data-bind=\\\"options: Fields, optionsText: 'Name', optionsCaption: $parent._labels.SELECT_VALUE_LABEL, value: SelectedField\\\"></select> </div> <!--/ko--> <!--ko if: AnyDimensionSelected--> <div class=\\\"form-group\\\"> <label>Page</label> <select class=\\\"form-control\\\" data-bind=\\\"options: PageFields, optionsText: 'Name', optionsCaption: _labels.SELECT_VALUE_LABEL, value: PageField\\\"></select> </div> <!--/ko--> </div> </div> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {\r\n\tBaseProperty,\r\n\tIPropertyDescription,\r\n\tIPropertyOption,\r\n\tIPropertySortOption\r\n} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport { QueryBuilderStore } from 'QueryBuilder/Stores/QueryBuilderStore';\r\nimport { CardScreenModel } from 'QueryBuilder/Models/CardScreenModel';\r\nimport {CONTROL_TYPES, TABLE_TYPES} from \"Core/Constant\";\r\n\r\nimport {EntityTypes} from \"Core/Controls/Grid/BaseGrid/Enums/EntityTypes\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nimport Template from \"Core/GeneralProperties/Managers/CardScreenProperty/Templates/Template.html\";\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { BlockUI } from \"../../../Common/BlockUi\";\r\n\r\nko.templates['Core/GeneralProperties/Managers/CardScreenProperty/Templates/Template'] = Template;\r\n\r\nexport class CardScreenProperty extends BaseProperty {\r\n\tprivate _control: IControl;\r\n\tprivate _labels = LABELS;\r\n\tprivate _screens: KnockoutObservableArray<CardScreenModel>;\r\n\tprivate _selectedScreen: KnockoutObservable<CardScreenModel>;\r\n\tprivate _el: HTMLElement;\r\n\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: number, control: IControl, getData: boolean = true) {\r\n\t\tsuper(property);\r\n\t\tthis._control = control;\r\n\t\tthis.Value = ko.observable(null);\r\n\t\tthis._screens = ko.observableArray([]);\r\n\t\tthis._selectedScreen = ko.observable(null);\r\n\t\tthis.SetValue(propertyValue, getData);\r\n\r\n\t\tthis._selectedScreen.subscribe((newValue) => {\r\n\t\t\tif(newValue){\r\n\t\t\t\tthis.Value(newValue.Id);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.Value(null);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tthis._el = el[0];\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tSetValue(propertyValue: number, getData: boolean = true){\r\n\t\tif(getData) {\r\n\t\t\tQueryBuilderStore.GetCardScreens({EntityId: this.GridSubjectEntityId})\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t})\r\n\t\t\t\t.then((screens) => {\r\n\r\n\t\t\t\t\tthis._screens(screens);\r\n\r\n\t\t\t\t\tlet selectedScreen = _.find(screens, (screen) => {\r\n\t\t\t\t\t\treturn screen.Id === propertyValue;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (selectedScreen) {\r\n\t\t\t\t\t\tthis._selectedScreen(selectedScreen);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.Value(propertyValue);\r\n\t}\r\n\r\n\tget GridSubjectEntityId() {\r\n if (this._control) {\r\n let gridSubjectEntityId = null;\r\n if (this._control.GetForm().GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.QueryScreen] || this._control.GetForm().GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.ListScreen]) {\r\n gridSubjectEntityId = this._control.GetForm().GetScreen().GetEntityId();\r\n } else {\r\n let fieldModel = _.find(this._control.GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Entity\r\n });\r\n\r\n if (!fieldModel) {\r\n fieldModel = _.find(this._control.GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Sub\r\n });\r\n }\r\n\r\n if (fieldModel) {\r\n gridSubjectEntityId = fieldModel.EntityId;\r\n }\r\n }\r\n\r\n return gridSubjectEntityId;\r\n }\r\n }\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Core/GeneralProperties/Managers/CardScreenProperty/Templates/Template';\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: _labels.TEMPLATE_SCREEN\\\"></span> <select data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: _screens,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsCaption: _labels.SELECT_TEMPLATE_SCREEN,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsText: 'Name',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: _selectedScreen\\\" class=\\\"form-control\\\"></select> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel';\r\n\r\nimport Template from \"Core/GeneralProperties/Managers/TemplateTypeProperty/TemplateTypePropertyTemplate.html\";\r\nimport { EntityTypesStore, IGetTypesRequestModel } from \"Core/Screens/TypeScreen/Stores/EntityTypesStore\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/TemplateTypeProperty/TemplateTypePropertyTemplate\"] = Template;\r\n\r\n\r\nexport class TemplateTypeProperty extends BaseProperty {\r\n private _el: HTMLElement;\r\n private _control: IControl;\r\n private _types: KnockoutObservableArray<TableTypeModel>;\r\n private _selectedType: KnockoutObservable<TableTypeModel>;\r\n private _selectedTypeSubscription: KnockoutSubscription;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: string, control: IControl) {\r\n super(property);\r\n this._control = control;\r\n this._types = ko.observableArray([]);\r\n this._selectedType = ko.observable(null);\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n this._selectedTypeSubscription = null;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/TemplateTypeProperty/TemplateTypePropertyTemplate\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return null;\r\n }\r\n\r\n SetValue(propertyValue: string): void {\r\n this.Value(propertyValue);\r\n }\r\n\r\n OnInit(): void {\r\n if(this._control.GetFieldModel()) {\r\n let request: IGetTypesRequestModel = {\r\n EntityId: this._control.GetFieldModel().EntityId,\r\n ParentTypeId: 0,\r\n WithRoot: false,\r\n OnlyEnabled: true\r\n };\r\n\r\n EntityTypesStore.GetTypes(request).then((data)=> {\r\n _.each(data.TableTypes, (type) =>{\r\n type.Name = type.Name + ' only';\r\n });\r\n\r\n this._types(data.TableTypes);\r\n\r\n if(this.Value()){\r\n let selectedType = _.find(data.TableTypes, (type) => type.Id === this.Value());\r\n if(selectedType){\r\n this._selectedType(selectedType);\r\n }else{\r\n this.Value(null);\r\n } \r\n }\r\n\r\n this._selectedTypeSubscription = this._selectedType.subscribe((newValue)=> {\r\n if(newValue && newValue.Id){\r\n this.Value(newValue.Id);\r\n }else{\r\n this.Value(null);\r\n }\r\n }); \r\n \r\n });\r\n }\r\n }\r\n\r\n Reset() {\r\n if(this._selectedTypeSubscription){\r\n this._selectedTypeSubscription.dispose();\r\n }\r\n this.OnInit();\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {}\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"></div> <select data-bind=\\\"options: $data._types, optionsText: 'Name', value: $data._selectedType, optionsCaption: 'All'\\\" class=\\\"form-control\\\"></select> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel';\r\nimport { TemplateModel } from 'Core/Controls/ButtonTemplate/Models/TemplateModel';\r\nimport { ButtonTemplateStore, IMergeAndSaveRequestModel, IGetTemplatesRequestModel } from 'Core/Controls/ButtonTemplate/Stores/ButtonTemplateStore';\r\n\r\nimport Template from \"Core/GeneralProperties/Managers/DocumentTemplateProperty/DocumentTemplatePropertyTemplate.html\";\r\nimport { EntityTypesStore, IGetTypesRequestModel } from \"Core/Screens/TypeScreen/Stores/EntityTypesStore\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/DocumentTemplateProperty/DocumentTemplatePropertyTemplate\"] = Template;\r\n\r\n\r\nexport class DocumentTemplateProperty extends BaseProperty {\r\n private _el: HTMLElement;\r\n private _control: IControl;\r\n private _templates: KnockoutObservableArray<TemplateModel>;\r\n private _selectedTemplate: KnockoutObservable<TemplateModel>;\r\n private _selectedTypeSubscription: KnockoutSubscription;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: string, control: IControl) {\r\n super(property);\r\n this._control = control;\r\n this._templates = ko.observableArray([]);\r\n this._selectedTemplate = ko.observable(null);\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\r\n this.IsEnabled.subscribe(newValue=>{\r\n if(!newValue){\r\n this.Value(null);\r\n }\r\n });\r\n\r\n this.IsEnabled(control.GeneralProperties.GetPropertyValue('Position').Value === 'Row');\r\n\r\n control.GeneralProperties.GetPropertyManager('Position').Value.subscribe((newValue)=>{\r\n this.IsEnabled(newValue.Value == 'Row');\r\n });\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/DocumentTemplateProperty/DocumentTemplatePropertyTemplate\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return null;\r\n }\r\n\r\n SetValue(propertyValue: string): void {\r\n this.Value(propertyValue);\r\n }\r\n\r\n OnInit(): void {\r\n const requestModel: IGetTemplatesRequestModel = {\r\n\t\t\tSubjectEntityId: (this._control as any).ContextEntityId,\r\n\t\t\tObjectEntityId: (this._control as any).ContextEntityId,\r\n\t\t\tControlId: this._control.GetControlId()\r\n\t\t};\r\n\r\n ButtonTemplateStore.GetData(requestModel).then((templates)=>{\r\n this._templates(templates);\r\n\r\n if(this.Value()){\r\n let selectedTemplate = _.find(templates, (template) => template.Id === this.Value());\r\n if(selectedTemplate){\r\n this._selectedTemplate(selectedTemplate);\r\n }else{\r\n this.Value(null);\r\n }\r\n }\r\n\r\n this._selectedTemplate.subscribe((newValue)=> {\r\n if(newValue && newValue.Id){\r\n this.Value(newValue.Id);\r\n }else{\r\n this.Value(null);\r\n }\r\n }); \r\n });\r\n }\r\n\r\n Reset() {\r\n this.OnInit();\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {}\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"></div> <span data-bind=\\\"text: Name\\\">Position</span> <select data-bind=\\\"options: $data._templates, enable: IsEnabled, optionsText: 'Name', value: $data._selectedTemplate, optionsCaption: 'Select...'\\\" class=\\\"form-control\\\"></select> \";\n// Exports\nexport default code;","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class ExampleAppointmentResponseModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {ExampleAppointmentResponseModel} from 'Core/GeneralProperties/Managers/ExampleAppointmentProperty/Stores/Models/ExampleAppointmentResponseModel';\r\n\r\nexport class ExampleAppointmentStore {\r\n static GetExampleAppointments() {\r\n const deferred = P.defer<ExampleAppointmentResponseModel[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/FormDesignerApi/GetExampleAppointments',\r\n type: 'GET'\r\n }\r\n })\r\n .then(exampleAppointments => {\r\n deferred.resolve(Deserialize(exampleAppointments, ExampleAppointmentResponseModel))});\r\n\r\n return deferred.promise();\r\n }\r\n}","import * as _ from 'underscore';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {IPropertyDescription, IPropertyOption} from 'Core/GeneralProperties/Managers/BaseProperty';\r\nimport {BaseSelectProperty} from 'Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty';\r\n\r\nimport {ExampleAppointmentStore} from 'Core/GeneralProperties/Managers/ExampleAppointmentProperty/Stores/ExampleAppointmentStore';\r\nimport {ExampleAppointmentResponseModel} from 'Core/GeneralProperties/Managers/ExampleAppointmentProperty/Stores/Models/ExampleAppointmentResponseModel';\r\n\r\nimport Template from 'Core/GeneralProperties/Managers/ExampleAppointmentProperty/Templates/ExampleAppointmentProperty.html';\r\n\r\nko.templates['Core/GeneralProperties/Managers/ExampleAppointmentProperty/Templates/ExampleAppointmentProperty'] = Template;\r\n\r\nexport class ExampleAppointmentProperty extends BaseSelectProperty {\r\n private _propertyValue: IPropertyOption;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _el: HTMLElement;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IPropertyOption) {\r\n super(property, propertyValue);\r\n\r\n this._propertyValue = propertyValue;\r\n this._isValid = ko.observable(true);\r\n }\r\n\r\n IsValid(): boolean {\r\n return this._isValid();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/ExampleAppointmentProperty/Templates/ExampleAppointmentProperty';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._el = el[0];\r\n\r\n this._isValid(false);\r\n\r\n BlockUI.Block({Target: this._el});\r\n this.LoadData()\r\n .then(exampleAppointments => {\r\n this.PopulateData(exampleAppointments);\r\n })\r\n .fail(error => {\r\n Notifier.Failed(error.message);\r\n })\r\n .always(() => {\r\n this._isValid(true);\r\n BlockUI.Unblock(this._el);\r\n });\r\n }\r\n\r\n private LoadData() {\r\n return ExampleAppointmentStore.GetExampleAppointments();\r\n }\r\n\r\n private PopulateData(exampleAppointments: ExampleAppointmentResponseModel[]){\r\n let items: IPropertyOption[] = _.map(exampleAppointments,\r\n (item: ExampleAppointmentResponseModel) => {\r\n return {Name: item.Name, Value: item.Id}\r\n });\r\n\r\n this.Init(items, this._propertyValue);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: Name\\\"></span> <select data-bind=\\\"options: Options, optionsText: 'Name', value: Value\\\" class=\\\"form-control\\\"></select> </div>\";\n// Exports\nexport default code;","import { SubFlowProperty } from './../Managers/SubFlowProperty/SubFlowProperty';\r\nimport {PropertyManagers} from \"Core/GeneralProperties/Enums/PropertyManagers\";\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {CheckboxProperty} from \"Core/GeneralProperties/Managers/CheckboxProperty/CheckboxProperty\";\r\nimport {InputNumberProperty} from \"Core/GeneralProperties/Managers/InputNumberProperty/InputNumberProperty\";\r\nimport {InputTextProperty} from \"Core/GeneralProperties/Managers/InputTextProperty/InputTextProperty\";\r\nimport {ColorPicker} from \"Core/GeneralProperties/Managers/ColorPicker/ColorPicker\";\r\nimport {SelectProperty} from \"Core/GeneralProperties/Managers/SelectProperty/SelectProperty\";\r\nimport {SelectEntityTypeProperty} from \"Core/GeneralProperties/Managers/SelectEntityTypeProperty/SelectEntityTypeProperty\";\r\nimport {SelectLockedLinkEntityProperty} from \"Core/GeneralProperties/Managers/SelectLockedLinkEntityProperty/SelectLockedLinkEntityProperty\";\r\nimport {MultiSelectProperty} from \"Core/GeneralProperties/Managers/MultiSelectProperty/MultiSelectProperty\";\r\nimport {WebSizeProperty} from \"Core/GeneralProperties/Managers/WebSizeProperty/WebSizeProperty\";\r\nimport {InputUrlProperty} from \"Core/GeneralProperties/Managers/InputUrlProperty/InputUrlProperty\";\r\nimport {FileUploadProperty} from \"Core/GeneralProperties/Managers/FileUploadProperty/FileUploadProperty\";\r\nimport {QueryConditionProperty} from \"Core/GeneralProperties/Managers/QueryConditionProperty/QueryConditionProperty\";\r\nimport {QueryBuilderProperty} from \"Core/GeneralProperties/Managers/QueryBuilderProperty/QueryBuilderProperty\";\r\nimport {AlternativeEntitiesProperty} from \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/AlternativeEntitiesProperty\";\r\nimport {TypesProperty} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\nimport {BackLinkingProperty} from \"Core/GeneralProperties/Managers/BackLinkingProperty/BackLinkingProperty\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {QuerySortProperty} from \"Core/GeneralProperties/Managers/QuerySortProperty/QuerySortProperty\";\r\nimport {QuerySelectorProperty} from \"Core/GeneralProperties/Managers/QuerySelectorProperty/QuerySelectorProperty\";\r\nimport {ConsultScreenLayout} from 'Core/GeneralProperties/Managers/ConsultScreenLayout/ConsultScreenLayout';\r\nimport {TabSecurity} from 'Core/GeneralProperties/Managers/TabSecurity/TabSecurity';\r\nimport { DWPackageProperty } from 'Core/GeneralProperties/Managers/DWPackageProperty/DWPackageProperty';\r\nimport {DimensionalTableProperty} from '../Managers/DimensionalTableProperty/DimensionalTableProperty';\r\nimport {CardScreenProperty} from '../Managers/CardScreenProperty/CardScreenProperty';\r\nimport { TemplateTypeProperty } from \"../Managers/TemplateTypeProperty/TemplateTypeProperty\";\r\nimport { DocumentTemplateProperty } from \"../Managers/DocumentTemplateProperty/DocumentTemplateProperty\";\r\nimport {ExampleAppointmentProperty} from 'Core/GeneralProperties/Managers/ExampleAppointmentProperty/ExampleAppointmentProperty';\r\n\r\nexport class PropertyManagersFactory {\r\n\tprivate static _initialized: boolean;\r\n\tprivate static _propertyNameToProperty: { [name: string]: (property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean) => BaseProperty } = {};\r\n\r\n\tstatic GetPropertyManager(property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean = true): BaseProperty {\r\n\t\tthis.Init();\r\n\t\treturn this._propertyNameToProperty[property.PropertyManager](property, propertyValue, control, getData);\r\n\t}\r\n\r\n\tprivate static Init() {\r\n\t\tif (!this._initialized) {\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.CheckboxProperty] = this.GetCheckBoxProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.InputTextProperty] = this.GetInputTextProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.InputNumberProperty] = this.GetInputNumberProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.ColorPicker] = this.GetColorPicker.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.SelectProperty] = this.GetSelectProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.SelectEntityTypeProperty] = this.GetSelectEntityTypeProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.SelectLockedLinkEntityProperty] = this.GetSelectLockedLinkEntityProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.MultiSelectProperty] = this.GetMultiSelectProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.WebSizeProperty] = this.GetWebSizeProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.InputUrlProperty] = this.GetInputUrlProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.FileUploadProperty] = this.GetFileUploadProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.QueryConditionProperty] = this.GetQueryConditionProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.QueryBuilderProperty] = this.GetQueryBuilderProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.AlternativeEntitiesProperty] = this.GetAlternativeEntitiesProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.TypesProperty] = this.GetTypesProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.BackLinkingProperty] = this.GetBackLinkingProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.QuerySortProperty] = this.GetQuerySortProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.QuerySelectorProperty] = this.GetQuerySelectorProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.ConsultScreenLayout] = this.GetConsultScreenLayoutProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.TabSecurity] = this.GetTabSecurityProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.DimensionalTable] = this.GetDimensionalTableProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.CardScreenProperty] = this.GetCardScreenProperty.bind(this);\r\n this._propertyNameToProperty[PropertyManagers.DWPackageProperty] = this.GetDWPackageProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.TemplateTypeProperty] = this.GetTemplateTypeProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.DocumentTemplateProperty] = this.GetDocumentTemplateProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.SubFlowProperty] = this.GetSubFlowProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.ExampleAppointmentProperty] = this.GetExampleAppointmentProperty.bind(this);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static GetCardScreenProperty(property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean) {\r\n\t\treturn new CardScreenProperty(property, propertyValue, control, getData);\r\n\t}\r\n\r\n\tprivate static GetCheckBoxProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new CheckboxProperty(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetInputTextProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new InputTextProperty(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetInputNumberProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new InputNumberProperty(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetColorPicker(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new ColorPicker(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetSelectProperty(property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean ) {\r\n\t\treturn new SelectProperty(property, propertyValue, getData);\r\n\t}\r\n\r\n\tprivate static GetSelectEntityTypeProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new SelectEntityTypeProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetSelectLockedLinkEntityProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new SelectLockedLinkEntityProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetMultiSelectProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new MultiSelectProperty(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetWebSizeProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new WebSizeProperty(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetInputUrlProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new InputUrlProperty(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetFileUploadProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new FileUploadProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetQueryConditionProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new QueryConditionProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetQueryBuilderProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new QueryBuilderProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetAlternativeEntitiesProperty(property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean) {\r\n\t\treturn new AlternativeEntitiesProperty(property, propertyValue, control, getData);\r\n\t}\r\n\r\n\tprivate static GetTypesProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new TypesProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetBackLinkingProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new BackLinkingProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetQuerySortProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new QuerySortProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetQuerySelectorProperty(property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean) {\r\n\t\treturn new QuerySelectorProperty(property, propertyValue, getData);\r\n\t}\r\n\r\n\tprivate static GetConsultScreenLayoutProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new ConsultScreenLayout(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetTabSecurityProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new TabSecurity(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetDimensionalTableProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new DimensionalTableProperty(property, propertyValue, control);\r\n }\r\n\r\n private static GetDWPackageProperty(property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean) {\r\n return new DWPackageProperty(property, propertyValue, getData);\r\n }\r\n\r\n\tprivate static GetTemplateTypeProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n return new TemplateTypeProperty(property, propertyValue, control);\r\n }\r\n\r\n\tprivate static GetDocumentTemplateProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n return new DocumentTemplateProperty(property, propertyValue, control);\r\n }\r\n\r\n\tprivate static GetSubFlowProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n return new SubFlowProperty(property, propertyValue, control);\r\n }\r\n\r\n\tprivate static GetExampleAppointmentProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new ExampleAppointmentProperty(property, propertyValue);\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {\r\n ConfigStructModel,\r\n GroupStructModel,\r\n PropertyStructModel\r\n} from \"Core/GeneralProperties/Models/ConfigStructModel\";\r\nimport {PropertyManagersFactory} from \"Core/GeneralProperties/Utils/PropertyManagersFactory\";\r\nimport {BaseProperty} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {SelectProperty} from \"Core/GeneralProperties/Managers/SelectProperty/SelectProperty\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\nimport { Guid } from \"Core/Common/Guid\";\r\n\r\nexport class ConfigModel {\r\n Groups: Array<GroupModel>;\r\n\r\n constructor(configStruct: ConfigStructModel, properties: any, control: IControl) {\r\n if (properties) {\r\n this.Groups = this.FilterGroups(configStruct.Groups, control).map(groupStruct => {\r\n let group = properties[groupStruct.Name];\r\n return new GroupModel(groupStruct, group, control);\r\n });\r\n } else {\r\n this.Groups = this.FilterGroups(configStruct.Groups, control).map(groupStruct => new GroupModel(groupStruct, null, control));\r\n }\r\n }\r\n\r\n SetPropertyEnabled(typeName: string, enabled: boolean) {\r\n let property = this.GetProperty(typeName);\r\n if (property) {\r\n property.PropertyManager.SetEnabled(enabled);\r\n }\r\n }\r\n\r\n ResetProperty(typeName: string) {\r\n let property = this.GetProperty(typeName);\r\n if (property) {\r\n property.PropertyManager.Reset();\r\n }\r\n }\r\n\r\n GetPropertyDefaultValue(typeName: string) {\r\n let property = this.GetProperty(typeName);\r\n if (property) {\r\n return property.PropertyManager.GetDefaultValue();\r\n }\r\n }\r\n\r\n GetPropertyValue(typeName: string, groupName: string = null) {\r\n let property = this.GetProperty(typeName, groupName);\r\n return property ? property.Value : undefined;\r\n }\r\n\r\n GetPropertyManager(typeName: string, groupName: string = null): BaseProperty {\r\n let property = this.GetProperty(typeName, groupName);\r\n return property ? property.PropertyManager : undefined;\r\n }\r\n\r\n GetPropertyName(typeName: string) {\r\n let property = this.GetProperty(typeName);\r\n return property ? property.Name : undefined;\r\n }\r\n\r\n SetPropertyValue(type: string, value: any) {\r\n let property = this.GetProperty(type);\r\n\r\n if (property) {\r\n property.Value = value;\r\n }\r\n }\r\n\r\n HasProperty(typeName: string) {\r\n let property = this.GetProperty(typeName);\r\n\r\n return !!property;\r\n }\r\n\r\n SetPropertyOptions(type: string, options: any) {\r\n\t let property = this.GetProperty(type);\r\n\r\n\t if (property) {\r\n\t\t\tproperty.Options = options;\r\n\t }\r\n }\r\n\r\n Serialize(): string {\r\n let serializedConfig = {};\r\n\r\n this.Groups.forEach(group => {\r\n let serializedGroup = serializedConfig[group.Name] = {Properties: []};\r\n\r\n let serializedProperties = group.Properties.map(property => {\r\n let serializedProperty = {\r\n PropertyManager: property.PropertyManager.Type,\r\n [property.Type]: property.Value || property.PropertyManager.GetDefaultValue()\r\n };\r\n\r\n return serializedProperty;\r\n });\r\n\r\n serializedGroup.Properties = serializedProperties;\r\n });\r\n\r\n return JSON.stringify(serializedConfig);\r\n }\r\n\r\n IsValid(): boolean {\r\n return this.Groups.every(group => group.IsValid());\r\n }\r\n\r\n IsValidToSave(): boolean {\r\n return this.Groups.every(group => group.IsValidToSave());\r\n }\r\n\r\n GetPropertiesErrors(): string[] {\r\n let propertiesErrors = [];\r\n _.each(this.Groups, group => propertiesErrors = propertiesErrors.concat(group.GetPropertiesErrors()));\r\n\r\n const uniqueErrors = _.uniq(propertiesErrors);\r\n return uniqueErrors;\r\n }\r\n\r\n private FilterGroups(groups: GroupStructModel[], control: IControl) {\r\n if (control && control.GetForm()) {\r\n const screenType = control.GetForm().GetScreen().GetType();\r\n const parentControlType = control.GetParentControl();\r\n return groups\r\n .filter(group => !group.Screens || group.Screens.length === 0 || group.Screens.indexOf(screenType) > -1)\r\n .filter(group => !group.ParentControls || group.ParentControls.length === 0 || parentControlType && group.ParentControls.indexOf(parentControlType.GetType()) > -1);\r\n }\r\n\r\n return groups;\r\n }\r\n\r\n private GetProperty(typeName: string, groupName: string = null): PropertyModel {\r\n let propertyGroup =\r\n _.find(this.Groups,\r\n (group: GroupModel) => (group.Name === groupName || groupName == null) && _.any(_.filter(group.Properties, (property: PropertyModel) => property.Type === typeName)));\r\n if (!propertyGroup) {\r\n return null;\r\n }\r\n\r\n let groupProperties = _.map(propertyGroup.Properties, (property: PropertyModel) => property);\r\n\r\n let property = _.find(groupProperties, (property: PropertyModel) => property.Type === typeName) || null;\r\n\r\n return property;\r\n }\r\n}\r\n\r\nexport class GroupModel {\r\n Id: string;\r\n Name: string;\r\n Properties: Array<PropertyModel>;\r\n Expanded: KnockoutObservable<boolean>;\r\n\r\n constructor(groupStruct: GroupStructModel, groupData: any, control: IControl) {\r\n this.Id = Guid.NewGuid();\r\n this.Name = groupStruct.Name;\r\n this.Properties = this.MergePropertyStructWithData(groupStruct, groupData, control);\r\n this.Expanded = ko.observable(false);\r\n }\r\n\r\n private MergePropertyStructWithData(groupStruct: GroupStructModel, groupData: any, control: IControl) {\r\n let properties = groupStruct.Properties.map(propertyStruct => {\r\n if (groupData) {\r\n let property = this.GetProperty(groupData.Properties, propertyStruct.Type);\r\n\r\n if (property) {\r\n let propertyValue = property[propertyStruct.Type];\r\n return new PropertyModel(propertyStruct, control, propertyValue);\r\n }\r\n }\r\n\r\n return new PropertyModel(propertyStruct, control, null);\r\n });\r\n\r\n return properties;\r\n }\r\n\r\n private GetProperty(groupProperties: any, propertyName: string) {\r\n return _.find(groupProperties, property => property.hasOwnProperty(propertyName));\r\n }\r\n\r\n public IsValid(): boolean {\r\n var result = this.Properties.every(property => property.IsValid);\r\n this.Expanded(!result);\r\n return result;\r\n }\r\n\r\n public IsValidToSave(): boolean {\r\n var result = this.Properties.every(property => property.IsValidToSave);\r\n this.Expanded(!result);\r\n return result;\r\n }\r\n\r\n public GetPropertiesErrors(): string[] {\r\n return _.map(this.Properties, property => property.ErrorMessage);\r\n }\r\n\r\n Toggle() {\r\n this.Expanded(!this.Expanded());\r\n }\r\n}\r\n\r\nexport class PropertyModel {\r\n Name: string;\r\n Type: string;\r\n ValueRequired: boolean;\r\n\r\n private _propertyManager: KnockoutObservable<BaseProperty>;\r\n private _control: IControl;\r\n private _property: PropertyStructModel;\r\n\r\n private _value: KnockoutComputed<any>;\r\n private _propertyValue: any;\r\n\r\n constructor(property: PropertyStructModel, control: IControl, propertyValue?: any) {\r\n this.Name = property.Name;\r\n this.Type = property.Type;\r\n this.ValueRequired = property.ValueRequired;\r\n\r\n this._control = control;\r\n this._property = property;\r\n this._propertyManager = ko.observable(null);\r\n\r\n\r\n this._propertyValue = propertyValue == null ? property.DefaultValue : propertyValue;\r\n\r\n this._value = ko.computed(() => {\r\n if (this._propertyManager()) {\r\n return this.PropertyManager.Value();\r\n }\r\n return this._propertyValue;\r\n\r\n }, this\r\n );\r\n }\r\n\r\n CheckForPropertyManager(getData: boolean = true) {\r\n if (!this._propertyManager()) {\r\n const manager = PropertyManagersFactory.GetPropertyManager(this._property, this._propertyValue, this._control, getData);\r\n manager.OnInit();\r\n\r\n this._propertyManager(manager);\r\n }\r\n }\r\n\r\n @enumerable get PropertyManager(): BaseProperty {\r\n this.CheckForPropertyManager();\r\n\r\n return this._propertyManager();\r\n }\r\n\r\n @enumerable get PropertyManagerForSave(): BaseProperty {\r\n this.CheckForPropertyManager(false);\r\n\r\n return this._propertyManager();\r\n }\r\n\r\n @enumerable get IsValid(): boolean {\r\n return this.PropertyManager.IsValid();\r\n }\r\n\r\n @enumerable get IsValidToSave(): boolean {\r\n return this.PropertyManagerForSave.IsValid();\r\n }\r\n\r\n @enumerable get ErrorMessage(): string {\r\n return this.PropertyManager.ErrorMessage();\r\n }\r\n\r\n @enumerable get Value(): any {\r\n return this._value();\r\n }\r\n\r\n set Value(value: any) {\r\n this._propertyValue = value;\r\n\t}\r\n\r\n @enumerable get Options(): any {\r\n\t\treturn this._property.Options;\r\n }\r\n\r\n set Options(options: any) {\r\n\t\tconst property = this.PropertyManager as SelectProperty;\r\n\t\tif (property) {\r\n\t\t\tproperty.RewriteOptions(options);\r\n\t\t}\r\n }\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {GlobalModel} from 'Core/GlobalManager/Models/GlobalModel';\r\n\r\nexport interface IGetGlobalByNameRequestModel {\r\n GlobalName: string;\r\n};\r\n\r\nexport interface IGetGlobalByNamesRequestModel {\r\n GlobalNames: Array<string>;\r\n};\r\n\r\nexport class GlobalStore {\r\n static GetGlobalByNames(params: IGetGlobalByNamesRequestModel): P.Promise<Array<GlobalModel>> {\r\n const deferredResult = P.defer<Array<GlobalModel>>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/GlobalsApi/GetGlobals',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => deferredResult.resolve(this.DeserializeGlobals(data)))\r\n .fail(err => deferredResult.reject(this.GetResponseError(err, 'Error loading globals')));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetGlobalByName(params: IGetGlobalByNameRequestModel): P.Promise<GlobalModel> {\r\n const deferredResult = P.defer<GlobalModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/GlobalsApi/GetGlobal',\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(global => deferredResult.resolve(this.Deserialize(global)))\r\n .fail(err => deferredResult.reject(this.GetResponseError(err, `Error getting global ${params.GlobalName}`)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateUserGlobals(userGlobals: GlobalModel[]) {\r\n const deferredResult = P.defer<void>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/GlobalsApi/UpdateUserGlobals',\r\n type: 'POST'\r\n }, params: {UserGlobals: userGlobals}\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(() => deferredResult.resolve(null))\r\n .fail(err => deferredResult.reject(this.GetResponseError(err, `Error updating user globals`)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static DeserializeGlobals(jsonObject: any): any {\r\n return GenericDeserialize(jsonObject, GlobalModel);\r\n }\r\n\r\n static Deserialize(jsonObject: any): GlobalModel {\r\n return <GlobalModel>Deserialize(jsonObject, GlobalModel);\r\n }\r\n\r\n private static GetResponseError(err: P.Rejection, generalError: string) {\r\n if (err.status === 400) {\r\n return JSON.parse(err.message).Message;\r\n }\r\n\r\n return generalError;\r\n }\r\n}","export const CULTURE_CODES = {\r\n ps_AF: {Country: 'Afghanistan', Language: 'Pashto', CultureCode: 'ps-AF'},\r\n prs_AF: {Country: 'Afghanistan', Language: 'Dari', CultureCode: 'prs-AF'},\r\n sq_AL: {Country: 'Albania', Language: 'Albanian', CultureCode: 'sq-AL'},\r\n ar_DZ: {Country: 'Algeria', Language: 'Arabic', CultureCode: 'ar-DZ'},\r\n es_AR: {Country: 'Argentina', Language: 'Spanish', CultureCode: 'es-AR'},\r\n hy_AM: {Country: 'Armenia', Language: 'Armenian', CultureCode: 'hy-AM'},\r\n en_AU: {Country: 'Australia', Language: 'English', CultureCode: 'en-AU'},\r\n de_AT: {Country: 'Austria', Language: 'German', CultureCode: 'de-AT'},\r\n ar_BH: {Country: 'Bahrain', Language: 'Arabic', CultureCode: 'ar-BH'},\r\n bn_BD: {Country: 'Bangladesh', Language: 'Bengali', CultureCode: 'bn-BD'},\r\n eu_ES: {Country: 'Basque', Language: 'Basque', CultureCode: 'eu-ES'},\r\n be_BY: {Country: 'Belarus', Language: 'Belarusian', CultureCode: 'be-BY'},\r\n fr_BE: {Country: 'Belgium', Language: 'French', CultureCode: 'fr-BE'},\r\n nl_BE: {Country: 'Belgium', Language: 'Dutch', CultureCode: 'nl-BE'},\r\n en_BZ: {Country: 'Belize', Language: 'English', CultureCode: 'en-BZ'},\r\n es_VE: {Country: 'Bolivarian Republic of Venezuela', Language: 'Spanish', CultureCode: 'es-VE'},\r\n quz_BO: {Country: 'Bolivia', Language: 'Quechua', CultureCode: 'quz-BO'},\r\n es_BO: {Country: 'Bolivia', Language: 'Spanish', CultureCode: 'es-BO'},\r\n pt_BR: {Country: 'Brazil', Language: 'Portuguese', CultureCode: 'pt-BR'},\r\n ms_BN: {Country: 'Brunei Darussalam', Language: 'Malay', CultureCode: 'ms-BN'},\r\n bg_BG: {Country: 'Bulgaria', Language: 'Bulgarian', CultureCode: 'bg-BG'},\r\n km_KH: {Country: 'Cambodia', Language: 'Khmer', CultureCode: 'km-KH'},\r\n fr_CA: {Country: 'Canada', Language: 'French', CultureCode: 'fr-CA'},\r\n en_CA: {Country: 'Canada', Language: 'English', CultureCode: 'en-CA'},\r\n en_029: {Country: 'Caribbean', Language: 'English', CultureCode: 'en-029'},\r\n ca_ES: {Country: 'Catalan', Language: 'Catalan', CultureCode: 'ca-ES'},\r\n arn_CL: {Country: 'Chile', Language: 'Mapudungun', CultureCode: 'arn-CL'},\r\n es_CL: {Country: 'Chile', Language: 'Spanish', CultureCode: 'es-CL'},\r\n es_CO: {Country: 'Colombia', Language: 'Spanish', CultureCode: 'es-CO'},\r\n es_CR: {Country: 'Costa Rica', Language: 'Spanish', CultureCode: 'es-CR'},\r\n hr_HR: {Country: 'Croatia', Language: 'Croatian', CultureCode: 'hr-HR'},\r\n az_Cyrl_AZ: {Country: 'Cyrillic, Azerbaijan', Language: 'Azeri', CultureCode: 'az-Cyrl-AZ'},\r\n sr_Cyrl_BA: {Country: 'Cyrillic, Bosnia and Herzegovina', Language: 'Serbian', CultureCode: 'sr-Cyrl-BA'},\r\n bs_Cyrl_BA: {Country: 'Cyrillic, Bosnia and Herzegovina', Language: 'Bosnian', CultureCode: 'bs-Cyrl-BA'},\r\n mn_MN: {Country: 'Cyrillic, Mongolia', Language: 'Mongolian', CultureCode: 'mn-MN'},\r\n sr_Cyrl_ME: {Country: 'Cyrillic, Montenegro', Language: 'Serbian', CultureCode: 'sr-Cyrl-ME'},\r\n sr_Cyrl_RS: {Country: 'Cyrillic, Serbia', Language: 'Serbian', CultureCode: 'sr-Cyrl-RS'},\r\n sr_Cyrl_CS: {Country: 'Cyrillic, Serbia and Montenegro (Former', Language: 'Serbian )', CultureCode: 'sr-Cyrl-CS'},\r\n tg_Cyrl_TJ: {Country: 'Cyrillic, Tajikistan', Language: 'Tajik', CultureCode: 'tg-Cyrl-TJ'},\r\n uz_Cyrl_UZ: {Country: 'Cyrillic, Uzbekistan', Language: 'Uzbek', CultureCode: 'uz-Cyrl-UZ'},\r\n cs_CZ: {Country: 'Czech Republic', Language: 'Czech', CultureCode: 'cs-CZ'},\r\n da_DK: {Country: 'Denmark', Language: 'Danish', CultureCode: 'da-DK'},\r\n es_DO: {Country: 'Dominican Republic', Language: 'Spanish', CultureCode: 'es-DO'},\r\n quz_EC: {Country: 'Ecuador', Language: 'Quechua', CultureCode: 'quz-EC'},\r\n es_EC: {Country: 'Ecuador', Language: 'Spanish', CultureCode: 'es-EC'},\r\n ar_EG: {Country: 'Egypt', Language: 'Arabic', CultureCode: 'ar-EG'},\r\n es_SV: {Country: 'El Salvador', Language: 'Spanish', CultureCode: 'es-SV'},\r\n et_EE: {Country: 'Estonia', Language: 'Estonian', CultureCode: 'et-EE'},\r\n am_ET: {Country: 'Ethiopia', Language: 'Amharic', CultureCode: 'am-ET'},\r\n fo_FO: {Country: 'Faroe Islands', Language: 'Faroese', CultureCode: 'fo-FO'},\r\n fi_FI: {Country: 'Finland', Language: 'Finnish', CultureCode: 'fi-FI'},\r\n sv_FI: {Country: 'Finland', Language: 'Swedish', CultureCode: 'sv-FI'},\r\n se_FI: {Country: 'Finland', Language: 'Sami, Northern', CultureCode: 'se-FI'},\r\n sms_FI: {Country: 'Finland', Language: 'Sami, Skolt', CultureCode: 'sms-FI'},\r\n smn_FI: {Country: 'Finland', Language: 'Sami, Inari', CultureCode: 'smn-FI'},\r\n mk_MK: {Country: 'Former Yugoslav Republic of Macedonia', Language: 'Macedonian', CultureCode: 'mk-MK'},\r\n fr_FR: {Country: 'France', Language: 'French', CultureCode: 'fr-FR'},\r\n br_FR: {Country: 'France', Language: 'Breton', CultureCode: 'br-FR'},\r\n oc_FR: {Country: 'France', Language: 'Occitan', CultureCode: 'oc-FR'},\r\n co_FR: {Country: 'France', Language: 'Corsican', CultureCode: 'co-FR'},\r\n gsw_FR: {Country: 'France', Language: 'Alsatian', CultureCode: 'gsw-FR'},\r\n gl_ES: {Country: 'Galician', Language: 'Galician', CultureCode: 'gl-ES'},\r\n ka_GE: {Country: 'Georgia', Language: 'Georgian', CultureCode: 'ka-GE'},\r\n de_DE: {Country: 'Germany', Language: 'German', CultureCode: 'de-DE'},\r\n hsb_DE: {Country: 'Germany', Language: 'Upper Sorbian', CultureCode: 'hsb-DE'},\r\n dsb_DE: {Country: 'Germany', Language: 'Lower Sorbian', CultureCode: 'dsb-DE'},\r\n el_GR: {Country: 'Greece', Language: 'Greek', CultureCode: 'el-GR'},\r\n kl_GL: {Country: 'Greenland', Language: 'Greenlandic', CultureCode: 'kl-GL'},\r\n qut_GT: {Country: 'Guatemala', Language: \"K'iche\", CultureCode: 'qut-GT'},\r\n es_GT: {Country: 'Guatemala', Language: 'Spanish', CultureCode: 'es-GT'},\r\n es_HN: {Country: 'Honduras', Language: 'Spanish', CultureCode: 'es-HN'},\r\n hu_HU: {Country: 'Hungary', Language: 'Hungarian', CultureCode: 'hu-HU'},\r\n is_IS: {Country: 'Iceland', Language: 'Icelandic', CultureCode: 'is-IS'},\r\n hi_IN: {Country: 'India', Language: 'Hindi', CultureCode: 'hi-IN'},\r\n bn_IN: {Country: 'India', Language: 'Bengali', CultureCode: 'bn-IN'},\r\n pa_IN: {Country: 'India', Language: 'Punjabi', CultureCode: 'pa-IN'},\r\n gu_IN: {Country: 'India', Language: 'Gujarati', CultureCode: 'gu-IN'},\r\n or_IN: {Country: 'India', Language: 'Oriya', CultureCode: 'or-IN'},\r\n ta_IN: {Country: 'India', Language: 'Tamil', CultureCode: 'ta-IN'},\r\n te_IN: {Country: 'India', Language: 'Telugu', CultureCode: 'te-IN'},\r\n kn_IN: {Country: 'India', Language: 'Kannada', CultureCode: 'kn-IN'},\r\n ml_IN: {Country: 'India', Language: 'Malayalam', CultureCode: 'ml-IN'},\r\n as_IN: {Country: 'India', Language: 'Assamese', CultureCode: 'as-IN'},\r\n mr_IN: {Country: 'India', Language: 'Marathi', CultureCode: 'mr-IN'},\r\n sa_IN: {Country: 'India', Language: 'Sanskrit', CultureCode: 'sa-IN'},\r\n kok_IN: {Country: 'India', Language: 'Konkani', CultureCode: 'kok-IN'},\r\n en_IN: {Country: 'India', Language: 'English', CultureCode: 'en-IN'},\r\n id_ID: {Country: 'Indonesia', Language: 'Indonesian', CultureCode: 'id-ID'},\r\n fa_IR: {Country: 'Iran', Language: 'Persian', CultureCode: 'fa-IR'},\r\n ar_IQ: {Country: 'Iraq', Language: 'Arabic', CultureCode: 'ar-IQ'},\r\n ga_IE: {Country: 'Ireland', Language: 'Irish', CultureCode: 'ga-IE'},\r\n en_IE: {Country: 'Ireland', Language: 'English', CultureCode: 'en-IE'},\r\n ur_PK: {Country: 'Islamic Republic of Pakistan', Language: 'Urdu', CultureCode: 'ur-PK'},\r\n he_IL: {Country: 'Israel', Language: 'Hebrew', CultureCode: 'he-IL'},\r\n it_IT: {Country: 'Italy', Language: 'Italian', CultureCode: 'it-IT'},\r\n en_JM: {Country: 'Jamaica', Language: 'English', CultureCode: 'en-JM'},\r\n ja_JP: {Country: 'Japan', Language: 'Japanese', CultureCode: 'ja-JP'},\r\n ar_JO: {Country: 'Jordan', Language: 'Arabic', CultureCode: 'ar-JO'},\r\n kk_KZ: {Country: 'Kazakhstan', Language: 'Kazakh', CultureCode: 'kk-KZ'},\r\n sw_KE: {Country: 'Kenya', Language: 'Kiswahili', CultureCode: 'sw-KE'},\r\n ko_KR: {Country: 'Korea', Language: 'Korean', CultureCode: 'ko-KR'},\r\n ar_KW: {Country: 'Kuwait', Language: 'Arabic', CultureCode: 'ar-KW'},\r\n ky_KG: {Country: 'Kyrgyzstan', Language: 'Kyrgyz', CultureCode: 'ky-KG'},\r\n lo_LA: {Country: 'Lao P.D.R.', Language: 'Lao', CultureCode: 'lo-LA'},\r\n tzm_Latn_DZ: {Country: 'Latin, Algeria', Language: 'Tamazight', CultureCode: 'tzm-Latn-DZ'},\r\n az_Latn_AZ: {Country: 'Latin, Azerbaijan', Language: 'Azeri', CultureCode: 'az-Latn-AZ'},\r\n hr_BA: {Country: 'Latin, Bosnia and Herzegovina', Language: 'Croatian', CultureCode: 'hr-BA'},\r\n bs_Latn_BA: {Country: 'Latin, Bosnia and Herzegovina', Language: 'Bosnian', CultureCode: 'bs-Latn-BA'},\r\n sr_Latn_BA: {Country: 'Latin, Bosnia and Herzegovina', Language: 'Serbian', CultureCode: 'sr-Latn-BA'},\r\n iu_Lat_CA: {Country: 'Latin, Canada', Language: 'Inuktitut', CultureCode: 'iu-Latn-CA'},\r\n sr_Latn_ME: {Country: 'Latin, Montenegro', Language: 'Serbian', CultureCode: 'sr-Latn-ME'},\r\n ha_Latn_NG: {Country: 'Latin, Nigeria', Language: 'Hausa', CultureCode: 'ha-Latn-NG'},\r\n sr_Latn_RS: {Country: 'Latin, Serbia', Language: 'Serbian', CultureCode: 'sr-Latn-RS'},\r\n sr_Latn_CS: {Country: 'Latin, Serbia and Montenegro (Former', Language: 'Serbian )', CultureCode: 'sr-Latn-CS'},\r\n uz_Latn_UZ: {Country: 'Latin, Uzbekistan', Language: 'Uzbek', CultureCode: 'uz-Latn-UZ'},\r\n lv_LV: {Country: 'Latvia', Language: 'Latvian', CultureCode: 'lv-LV'},\r\n ar_LB: {Country: 'Lebanon', Language: 'Arabic', CultureCode: 'ar-LB'},\r\n ar_LY: {Country: 'Libya', Language: 'Arabic', CultureCode: 'ar-LY'},\r\n de_LI: {Country: 'Liechtenstein', Language: 'German', CultureCode: 'de-LI'},\r\n lt_LT: {Country: 'Lithuania', Language: 'Lithuanian', CultureCode: 'lt-LT'},\r\n lb_LU: {Country: 'Luxembourg', Language: 'Luxembourgish', CultureCode: 'lb-LU'},\r\n de_LU: {Country: 'Luxembourg', Language: 'German', CultureCode: 'de-LU'},\r\n fr_LU: {Country: 'Luxembourg', Language: 'French', CultureCode: 'fr-LU'},\r\n ms_MY: {Country: 'Malaysia', Language: 'Malay', CultureCode: 'ms-MY'},\r\n en_MY: {Country: 'Malaysia', Language: 'English', CultureCode: 'en-MY'},\r\n dv_MV: {Country: 'Maldives', Language: 'Divehi', CultureCode: 'dv-MV'},\r\n mt_MT: {Country: 'Malta', Language: 'Maltese', CultureCode: 'mt-MT'},\r\n es_MX: {Country: 'Mexico', Language: 'Spanish', CultureCode: 'es-MX'},\r\n moh_CA: {Country: 'Mohawk', Language: 'Mohawk', CultureCode: 'moh-CA'},\r\n fr_MC: {Country: 'Monaco', Language: 'French', CultureCode: 'fr-MC'},\r\n ar_MA: {Country: 'Morocco', Language: 'Arabic', CultureCode: 'ar-MA'},\r\n ne_NP: {Country: 'Nepal', Language: 'Nepali', CultureCode: 'ne-NP'},\r\n nl_NL: {Country: 'Netherlands', Language: 'Dutch', CultureCode: 'nl-NL'},\r\n fy_NL: {Country: 'Netherlands', Language: 'Frisian', CultureCode: 'fy-NL'},\r\n mi_NZ: {Country: 'New Zealand', Language: 'Maori', CultureCode: 'mi-NZ'},\r\n en_NZ: {Country: 'New Zealand', Language: 'English', CultureCode: 'en-NZ'},\r\n es_NI: {Country: 'Nicaragua', Language: 'Spanish', CultureCode: 'es-NI'},\r\n yo_NG: {Country: 'Nigeria', Language: 'Yoruba', CultureCode: 'yo-NG'},\r\n ig_NG: {Country: 'Nigeria', Language: 'Igbo', CultureCode: 'ig-NG'},\r\n nb_NO: {Country: 'Norway', Language: 'Norwegian, BokmÃ¥l', CultureCode: 'nb-NO'},\r\n se_NO: {Country: 'Norway', Language: 'Sami, Northern', CultureCode: 'se-NO'},\r\n nn_NO: {Country: 'Norway', Language: 'Norwegian, Nynorsk', CultureCode: 'nn-NO'},\r\n smj_NO: {Country: 'Norway', Language: 'Sami, Lule', CultureCode: 'smj-NO'},\r\n sma_NO: {Country: 'Norway', Language: 'Sami, Southern', CultureCode: 'sma-NO'},\r\n ar_OM: {Country: 'Oman', Language: 'Arabic', CultureCode: 'ar-OM'},\r\n es_PA: {Country: 'Panama', Language: 'Spanish', CultureCode: 'es-PA'},\r\n es_PY: {Country: 'Paraguay', Language: 'Spanish', CultureCode: 'es-PY'},\r\n quz_PE: {Country: 'Peru', Language: 'Quechua', CultureCode: 'quz-PE'},\r\n es_PE: {Country: 'Peru', Language: 'Spanish', CultureCode: 'es-PE'},\r\n fil_PH: {Country: 'Philippines', Language: 'Filipino', CultureCode: 'fil-PH'},\r\n pl_PL: {Country: 'Poland', Language: 'Polish', CultureCode: 'pl-PL'},\r\n pt_PT: {Country: 'Portugal', Language: 'Portuguese', CultureCode: 'pt-PT'},\r\n bo_CN: {Country: 'PRC', Language: 'Tibetan', CultureCode: 'bo-CN'},\r\n ii_CN: {Country: 'PRC', Language: 'Yi', CultureCode: 'ii-CN'},\r\n ug_CN: {Country: 'PRC', Language: 'Uyghur', CultureCode: 'ug-CN'},\r\n es_PR: {Country: 'Puerto Rico', Language: 'Spanish', CultureCode: 'es-PR'},\r\n ar_QA: {Country: 'Qatar', Language: 'Arabic', CultureCode: 'ar-QA'},\r\n en_PH: {Country: 'Republic of the Philippines', Language: 'English', CultureCode: 'en-PH'},\r\n ro_RO: {Country: 'Romania', Language: 'Romanian', CultureCode: 'ro-RO'},\r\n ru_RU: {Country: 'Russia', Language: 'Russian', CultureCode: 'ru-RU'},\r\n tt_RU: {Country: 'Russia', Language: 'Tatar', CultureCode: 'tt-RU'},\r\n ba_RU: {Country: 'Russia', Language: 'Bashkir', CultureCode: 'ba-RU'},\r\n sah_RU: {Country: 'Russia', Language: 'Yakut', CultureCode: 'sah-RU'},\r\n rw_RW: {Country: 'Rwanda', Language: 'Kinyarwanda', CultureCode: 'rw-RW'},\r\n ar_SA: {Country: 'Saudi Arabia', Language: 'Arabic', CultureCode: 'ar-SA'},\r\n wo_SN: {Country: 'Senegal', Language: 'Wolof', CultureCode: 'wo-SN'},\r\n zh_CN: {Country: 'Simplified, PRC', Language: 'Chinese', CultureCode: 'zh-CN'},\r\n zh_SG: {Country: 'Simplified, Singapore', Language: 'Chinese', CultureCode: 'zh-SG'},\r\n en_SG: {Country: 'Singapore', Language: 'English', CultureCode: 'en-SG'},\r\n sk_SK: {Country: 'Slovakia', Language: 'Slovak', CultureCode: 'sk-SK'},\r\n sl_SI: {Country: 'Slovenia', Language: 'Slovenian', CultureCode: 'sl-SI'},\r\n tn_ZA: {Country: 'South Africa', Language: 'Setswana', CultureCode: 'tn-ZA'},\r\n xh_ZA: {Country: 'South Africa', Language: 'isiXhosa', CultureCode: 'xh-ZA'},\r\n zu_ZA: {Country: 'South Africa', Language: 'isiZulu', CultureCode: 'zu-ZA'},\r\n af_ZA: {Country: 'South Africa', Language: 'Afrikaans', CultureCode: 'af-ZA'},\r\n nso_ZA: {Country: 'South Africa', Language: 'Sesotho sa Leboa', CultureCode: 'nso-ZA'},\r\n en_ZA: {Country: 'South Africa', Language: 'English', CultureCode: 'en-ZA'},\r\n es_ES: {Country: 'Spain, International Sort', Language: 'Spanish', CultureCode: 'es-ES'},\r\n si_LK: {Country: 'Sri Lanka', Language: 'Sinhala', CultureCode: 'si-LK'},\r\n sv_SE: {Country: 'Sweden', Language: 'Swedish', CultureCode: 'sv-SE'},\r\n se_SE: {Country: 'Sweden', Language: 'Sami, Northern', CultureCode: 'se-SE'},\r\n smj_SE: {Country: 'Sweden', Language: 'Sami, Lule', CultureCode: 'smj-SE'},\r\n sma_SE: {Country: 'Sweden', Language: 'Sami, Southern', CultureCode: 'sma-SE'},\r\n rm_CH: {Country: 'Switzerland', Language: 'Romansh', CultureCode: 'rm-CH'},\r\n de_CH: {Country: 'Switzerland', Language: 'German', CultureCode: 'de-CH'},\r\n it_CH: {Country: 'Switzerland', Language: 'Italian', CultureCode: 'it-CH'},\r\n fr_CH: {Country: 'Switzerland', Language: 'French', CultureCode: 'fr-CH'},\r\n iu_Cans_CA: {Country: 'Syllabics, Canada', Language: 'Inuktitut', CultureCode: 'iu-Cans-CA'},\r\n syr_SY: {Country: 'Syria', Language: 'Syriac', CultureCode: 'syr-SY'},\r\n ar_SY: {Country: 'Syria', Language: 'Arabic', CultureCode: 'ar-SY'},\r\n th_TH: {Country: 'Thailand', Language: 'Thai', CultureCode: 'th-TH'},\r\n mn_Mong_CN: {Country: 'Traditional Mongolian, PRC', Language: 'Mongolian', CultureCode: 'mn-Mong-CN'},\r\n zh_HK: {Country: 'Traditional, Hong Kong S.A.R.', Language: 'Chinese', CultureCode: 'zh-HK'},\r\n zh_MO: {Country: 'Traditional, Macao S.A.R.', Language: 'Chinese', CultureCode: 'zh-MO'},\r\n zh_TW: {Country: 'Traditional, Taiwan', Language: 'Chinese', CultureCode: 'zh-TW'},\r\n en_TT: {Country: 'Trinidad and Tobago', Language: 'English', CultureCode: 'en-TT'},\r\n ar_TN: {Country: 'Tunisia', Language: 'Arabic', CultureCode: 'ar-TN'},\r\n tr_TR: {Country: 'Turkey', Language: 'Turkish', CultureCode: 'tr-TR'},\r\n tk_TM: {Country: 'Turkmenistan', Language: 'Turkmen', CultureCode: 'tk-TM'},\r\n ar_AE: {Country: 'U.A.E.', Language: 'Arabic', CultureCode: 'ar-AE'},\r\n uk_UA: {Country: 'Ukraine', Language: 'Ukrainian', CultureCode: 'uk-UA'},\r\n cy_GB: {Country: 'United Kingdom', Language: 'Welsh', CultureCode: 'cy-GB'},\r\n gd_GB: {Country: 'United Kingdom', Language: 'Scottish Gaelic', CultureCode: 'gd-GB'},\r\n en_GB: {Country: 'United Kingdom', Language: 'English', CultureCode: 'en-GB'},\r\n en_US: {Country: 'United States', Language: 'English', CultureCode: 'en-US'},\r\n es_US: {Country: 'United States', Language: 'Spanish', CultureCode: 'es-US'},\r\n es_UY: {Country: 'Uruguay', Language: 'Spanish', CultureCode: 'es-UY'},\r\n vi_VN: {Country: 'Vietnam', Language: 'Vietnamese', CultureCode: 'vi-VN'},\r\n ar_YE: {Country: 'Yemen', Language: 'Arabic', CultureCode: 'ar-YE'},\r\n en_ZW: {Country: 'Zimbabwe', Language: 'English', CultureCode: 'en-ZW'},\r\n};\r\n","import * as _ from 'underscore';\r\nimport {GlobalStore} from 'Core/GlobalManager/Stores/GlobalStore';\r\nimport {GlobalModel} from 'Core/GlobalManager/Models/GlobalModel';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport * as $ from \"jquery\";\r\nimport {CULTURE_CODES} from \"Core/Constants/CultureCodes\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport enumerable from '../Common/Decorators/EnumerableDecorator';\r\n\r\nexport const GLOBALS = {\r\n POPUP_HEIGHT_IN_PERCENT: 'PopupHeightInPercent',\r\n POPUP_WIDHT_IN_PERCENT: 'PopupWidthInPercent',\r\n CONSULT_GRID_PAGE_LINES: 'ConsultGridPageLines',\r\n LIST_GRID_PAGE_LINES: 'ListGridPageLines',\r\n ALLOWED_ENTITIES: 'AllowedEntities',\r\n OTHER_GRID_PAGE_LINES: 'OtherGridPageLines',\r\n SEARCH_SCREEN_IF_RECORDS_COUNT: 'SearchScreenIf',\r\n LOCK_TIME: 'LockTime',\r\n CD_DATABASE_ID: 'CdDbId',\r\n CYBERDESK: 'CyberDesk',\r\n SUPERUSER_MAIL: 'Superusermail',\r\n TAB_HIDING_DAYS: 'TabHidingDays',\r\n REMEMBER_SELECT_USER: 'RememberSelectUser',\r\n ACTION_TABLE: 'ActionTable',\r\n USER_VARS_UPDATE_TIME: 'UserVarsUpdateTime',\r\n CULTURE_SETTINGS: 'CultureSettings',\r\n DESKTOP_LANGUAGE: 'DesktopLanguage',\r\n PATH_RUNNER_PARENTS_AMOUNT: 'PathRunnerParentsAmount',\r\n APPOINTMENT_DURATION: 'AppointmentDuration',\r\n NUMBER_OF_PERIODS: 'Number of periods',\r\n STARTING_TIME: 'Starting time',\r\n PERIOD_DURATION: 'Period Duration',\r\n USER_GROUPS: 'Usergroups',\r\n RESOURCES: 'Resources',\r\n DELETE_MAIL_AFTER_SAVING: 'DeleteMailAfterSaving',\r\n AUTO_MAIL_SAVING: 'AutoMailSaving',\r\n DEFAULT_COUNTRY_CODE: 'DefaultCountryCode',\r\n SUBJECT: 'Subject',\r\n DEFAULT_CURRENCY: 'DefaultCurrency',\r\n PREVIOUS_WEEKS_NUMBER: 'PreviousWeeksNumber',\r\n SHOW_CONTROL_ICONS: 'ShowControlIcons',\r\n ARTICLE_STORAGE_ENTITY: 'ArticleStorageEntity',\r\n HOME_SCREEN: 'HomeScreen',\r\n THEME: 'Theme',\r\n SHOW_PROFILE_SELECTOR: 'ShowProfileSelector',\r\n SHOW_BREADCRUMBS: 'ShowBreadcrumbs',\r\n MY_SETTINGS: 'MySettings',\r\n BASIC_MODE: 'BasicMode',\r\n READONLY_CREDENTIALS: 'ReadonlyCredentials',\r\n LOCK_SCREEN_HOURS: 'LockScreenHours',\r\n GOOGLE_MAPS_API_KEY: 'GoogleMapsAPIKey',\r\n MEMO_TIMESTAMP_FORMAT: 'Memo Timestamp Format',\r\n ENABLE_DD_AI_ASSISTANT: 'EnabledOnDD'\r\n};\r\n\r\nexport class GlobalManager {\r\n private static instance: GlobalManager;\r\n private static allowInstantiation: boolean;\r\n private _globals: Array<GlobalModel>;\r\n private _getAllGlobalPromises: P.Promise<any>[];\r\n\r\n constructor() {\r\n if (!GlobalManager.allowInstantiation) {\r\n throw new Error(\"Use MenuManager.Instance instead\");\r\n }\r\n this._getAllGlobalPromises = [];\r\n this._globals = [];\r\n }\r\n\r\n static get Instance(): GlobalManager {\r\n if (GlobalManager.instance == null) {\r\n GlobalManager.allowInstantiation = true;\r\n GlobalManager.instance = new GlobalManager();\r\n GlobalManager.allowInstantiation = false;\r\n }\r\n\r\n return GlobalManager.instance;\r\n }\r\n\r\n public AddGlobal(global: GlobalModel) {\r\n const cashedGlobal = _.find(this._globals, (item) => {\r\n return item.Name === global.Name;\r\n });\r\n\r\n if (cashedGlobal) {\r\n cashedGlobal.Value = global.Value;\r\n } else {\r\n this._globals.push(global);\r\n }\r\n }\r\n\r\n GetGlobal(name: string) {\r\n const globalDescriptor = this.GetGlobalDescriptor(name);\r\n return globalDescriptor ? globalDescriptor.Value : null;\r\n }\r\n\r\n GetGlobalDescriptor(name: string) : GlobalModel {\r\n const cashedGlobal = _.find(this._globals, (item) => {\r\n return item.Name === name;\r\n });\r\n return cashedGlobal || null;\r\n }\r\n\r\n public AddCulture(global: GlobalModel) {\r\n const currentCulture = global.Value;\r\n let cultureCode = _.map(CULTURE_CODES, (num, key) => {\r\n return num.CultureCode;\r\n });\r\n let code = _.find(cultureCode, item => item === currentCulture);\r\n\r\n if (code) {\r\n this.AddGlobal(global);\r\n } else {\r\n let newGlobal = global,\r\n localCulture;\r\n if (window.navigator.languages) {\r\n localCulture = window.navigator.languages[0];\r\n } else {\r\n localCulture = (window.navigator as any).userLanguage || window.navigator.language;\r\n }\r\n newGlobal.Value = localCulture;\r\n this.AddGlobal(newGlobal);\r\n new Notifier().Warning(NOTIFICATIONS.INVALID_CULTURE.replace('{currentCulture}', currentCulture).replace('{localCulture}', localCulture));\r\n }\r\n }\r\n\r\n AddDesktopLanguage(global: GlobalModel) {\r\n const currentDesktopLanguage = global.Value;\r\n const language = TranslationManager.Instance.GetLanguageByShortName(currentDesktopLanguage);\r\n\r\n if (!language) {\r\n const defaultDesktopLanguage = 'EN';\r\n global.Value = defaultDesktopLanguage;\r\n new Notifier().Warning(\r\n NOTIFICATIONS.INVALID_DESKTOP_LANGUAGE\r\n .replace('{currentDesktopLanguage}', currentDesktopLanguage)\r\n .replace('{defaultDesktopLanguage}', defaultDesktopLanguage)\r\n );\r\n }\r\n\r\n this.AddGlobal(global);\r\n }\r\n\r\n LoadGlobals(addDesktopLanguage: boolean = true): P.Promise<any> {\r\n BlockUI.Block();\r\n const deferredResult = P.defer<any>();\r\n const params = {\r\n GlobalNames: Object.keys(GLOBALS).map(globalName => GLOBALS[globalName])\r\n };\r\n\r\n GlobalStore.GetGlobalByNames(params)\r\n .always(() => BlockUI.Unblock())\r\n .then(globals => {\r\n _.each(globals, global => {\r\n if (global.Name === GLOBALS.CULTURE_SETTINGS) {\r\n this.AddCulture(global);\r\n } else if (global.Name === GLOBALS.DESKTOP_LANGUAGE && addDesktopLanguage) {\r\n this.AddDesktopLanguage(global);\r\n } else {\r\n this.AddGlobal(global);\r\n }\r\n });\r\n deferredResult.resolve(null);\r\n })\r\n .fail((err) => {\r\n const $preloader = $('.preloader');\r\n $preloader.detach();\r\n new Notifier().Show({Message: err.message, Type: {Color: 'red', Title: ''}});\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n UpdateUserGlobals(userGlobals: GlobalModel[]) {\r\n return GlobalStore.UpdateUserGlobals(userGlobals)\r\n .then(() => userGlobals.forEach(global => this.AddGlobal(global)))\r\n .fail(err => new Notifier().Failed(err.message));\r\n }\r\n\r\n GetCulture(): string {\r\n return this.GetGlobal(GLOBALS.CULTURE_SETTINGS) || 'en-GB';\r\n }\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class GlobalModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tKeepInSession: boolean;\r\n\r\n\t@deserialize\r\n\tLockToDefault: boolean;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tValue: string;\r\n}","import * as ko from 'knockout'\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel'\r\n\r\nimport { IconStore } from './IconStore';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport {FONT_NAME, ICON_NAME} from \"Core/Constant\";\r\n\r\n// Templates\r\nimport IconTemplate from 'Core/Icon/Templates/Icon.html';\r\nimport PortletIconTemplate from 'Core/Icon/Templates/PortletIcon.html';\r\nko.templates['Core/Icon/Templates/Icon'] = IconTemplate;\r\nko.templates['Core/Icon/Templates/PortletIcon'] = PortletIconTemplate;\r\n\r\nconst FONT_NAME_TO_CSS = {\r\n\t'fontawesome-webfont': 'fa fa-3x fa-stack',\r\n\t'Social-Icons': 'socicon-btn',\r\n\t'Simple-Line-Icons': 'simple-icons'\r\n}\r\n\r\nexport class Icon {\r\n\tprivate _model: IconModel;\r\n\tprivate _imageUrl: KnockoutObservable<string>;\r\n\r\n\tconstructor(model: IconModel) {\r\n\t\tthis._model = model;\r\n\t\tthis._imageUrl = ko.observable(this._model && this._model.Image);\r\n\t}\r\n\r\n\tprivate LoadImage(){\r\n\t\tif(this._model.IsImage && _.isEmpty(this._model.Image)){\r\n\t\t\tIconStore.GetImageIcon(this._model.Id).then((image)=>{\r\n\t\t\t\tthis._imageUrl(image);\r\n\t\t\t\tthis._model.Image = image;\r\n\t\t\t}).fail((err)=>{\r\n\t\t\t\tnew Notifier().Failed(err.message);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget FontName(): string {\r\n\t\treturn `${FONT_NAME_TO_CSS[this._model.FontName]} ${this._model.Name}`;\r\n\t}\r\n\r\n\tget Name(): string {\r\n\t\treturn this._model.Name;\r\n\t}\r\n\r\n\tget Id(): number {\r\n\t\treturn this._model.Id;\r\n\t}\r\n\r\n\tget IconFontName(): string {\r\n\t\treturn this._model.FontName;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\tthis.LoadImage();\r\n\t\treturn 'Core/Icon/Templates/Icon';\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\tthis.LoadImage();\r\n\t\treturn IconTemplate;\r\n\t}\r\n\r\n\tGetPortletIconTemplate() {\r\n\t\tthis.LoadImage();\r\n\t\treturn 'Core/Icon/Templates/PortletIcon';\r\n\t};\r\n\r\n\tGetIconTemplate(classes: string = '') {\r\n\t\tif (this._model) {\r\n\t\t\tlet iconClass = this._model.IsIcon ? `` : ``,\r\n\t\t\t\timageClass = this._model.IsImage ? `` : ``;\r\n\r\n\t\t\tif (this._model.IsImage && !this._model.IsIcon) {\r\n\t\t\t\treturn `<img class=\"img-responsive image-centered image-icon ${classes}\" src=\"${this._model.Image}\" alt=\"${this._model.Name}\">`;\r\n\t\t\t}\r\n\r\n\t\t\tlet iconDataName = this._model.Name ? `data-icon-font-name=\"${this._model.FontName}\"` : ``,\r\n\t\t\t\ticonName = !this._model.Name ? '' : this._model.Name;\r\n\r\n\t\t\tswitch (this._model.FontName) {\r\n\t\t\t\tcase FONT_NAME.FONT_AWESOME:\r\n\t\t\t\t\tif (this._model.Name === ICON_NAME.EMPTY_ICON){\r\n\t\t\t\t\t\treturn `<i class=\"noImageNoIconBox ${iconName} ${classes}\" ${iconDataName} data-icon-name=\"${iconName}\"></i>`;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn `<i class=\"fa ${iconName} ${classes}\" ${iconDataName}></i>`;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\tcase FONT_NAME.SOCIAL_ICONS:\r\n\t\t\t\t\treturn `<i class=\"socicon-btn ${iconName} ${classes}\" ${iconDataName}></i>`;\r\n\r\n\t\t\t\tcase FONT_NAME.SIMPLE_LINE:\r\n\t\t\t\t\treturn `<i class=\"${iconName} ${classes}\" ${iconDataName}></i>`;\r\n\r\n\t\t\t\tcase null:\r\n\t\t\t\t\treturn `<i class=\"noImageNoIconBox\" data-icon-font-name=\"no-Image-No-Icon\"></i>`;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn `<i class=\"${iconName} ${classes}\" ${iconDataName} data-icon-font-name=\"TestDefaultName\"></i>`;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn `<i class=\"noImageNoIconBox\" data-icon-font-name=\"null-icon-model\"></i>`;\r\n\t}\r\n\r\n\tget IsImage() {\r\n\t\treturn this._model.IsImage;\r\n\t}\r\n\r\n\tget Image() {\r\n\t\treturn this._model.Image;\r\n\t}\r\n\r\n\tget IsIcon() {\r\n\t\treturn this._model.IsIcon && (this._model.Name != '');\r\n\t}\r\n\r\n\tget NoIconNoImage(): boolean {\r\n\t\treturn !this.IsIcon && !this.IsImage\r\n\t}\r\n\r\n\tget Model(): IconModel{\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tget IsSocialIcon(){\r\n\t\treturn this.IconFontName === FONT_NAME.SOCIAL_ICONS;\r\n\t}\r\n\r\n\tget IsFontAwesome(){\r\n\t\treturn this.IconFontName === FONT_NAME.FONT_AWESOME;\r\n\t}\r\n\r\n\tget SimpleLineIcon(){\r\n\t\treturn this.IconFontName === FONT_NAME.SIMPLE_LINE;\r\n\t}\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {URL} from 'Core/Common/Url';\r\n\r\nexport class IconStore {\r\n static GetImageIcon(iconId: number): P.Promise<string> {\r\n const deferredResult = P.defer<string>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.ICON.GET_IMAGE_ICON,\r\n type: 'GET',\r\n xhrFields:{\r\n\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t}\r\n }, params: { IconId: iconId }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data =>{\r\n var blob = new Blob([data], { type: 'application/octet-stream' });\r\n var urlCreator = window.URL || window.webkitURL;\r\n var imageUrl = urlCreator.createObjectURL(blob);\r\n deferredResult.resolve(imageUrl);\r\n }).fail(data => {});\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport * as $ from 'jquery';\r\n\r\nexport class AddCssForAllExtention {\r\n static Init() {\r\n ko.bindingHandlers.addCssForAll = {\r\n init: (element, valueAccessor) => {\r\n const $current = $(element);\r\n const params: AddCssForAllParams = ko.unwrap(valueAccessor());\r\n $current.on(params.eventAdd, (event) => {\r\n $(`.${params.class}`).addClass(params.toggleClass);\r\n });\r\n $current.on(params.eventRemove, (event) => {\r\n $(`.${params.class}`).removeClass(params.toggleClass);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport interface AddCssForAllParams {\r\n eventAdd: string,\r\n eventRemove: string,\r\n class: string,\r\n toggleClass: string,\r\n}","import * as ko from 'knockout';\r\nimport * as $ from \"jquery\";\r\nimport {ZIndexManager} from \"../Common/ZIndexManager\";\r\n\r\nexport class AlignDropdown {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.alignDropdown = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tconst params: AlignDropdownParams = ko.unwrap(valueAccessor());\r\n\r\n\t\t\t\tconst dropdownType = params.type; // type of dropdown\r\n\t\t\t\tconst verticalAlign = params.directions.vertical; // if dropdown needed to manage vertical position\r\n\t\t\t\tconst horizontalAlign = params.directions.horizontal; // if dropdown needed to manage horizontal position\r\n\t\t\t\tconst addEventOnclick = params.addEventOnclick; // if need to add on click recalculation to open button\r\n\t\t\t\tconst dropdownInsideOverflow = params.dropdownInsideOverflow; //if dropdown located inside overflow: hidden block;\r\n\r\n\t\t\t\tlet $dropdownContainer, // main dropdown container\r\n\t\t\t\t\tappliedClassNameHorizontal, // class name for horizontal align\r\n\t\t\t\t\tappliedClassNameVertical, // class name for vertical align\r\n\t\t\t\t\t$dropdownList, // dropdown list (may be same as dropdown container)\r\n\t\t\t\t\t$target, // usually button that opens dropdown\r\n\t\t\t\t\tisRightSidebar = $('body').hasClass('page-sidebar-reversed'),\r\n $targetParent;\r\n\r\n\t\t\t\tif (!horizontalAlign && !verticalAlign) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (dropdownType === 'bootstrap') {\r\n\t\t\t\t\t$target = $(element);\r\n\t\t\t\t\t$targetParent = $(element).parent();\r\n\t\t\t\t\t$dropdownContainer = $target.parent();\r\n\t\t\t\t\tappliedClassNameVertical = 'dropup';\r\n\t\t\t\t\tappliedClassNameHorizontal = 'dropdown-menu-right';\r\n\t\t\t\t\t$dropdownList = $target.next();\r\n\t\t\t\t} else if (dropdownType === 'generic') {\r\n\t\t\t\t\t$target = $(element).parent();\r\n\t\t\t\t\t$dropdownContainer = $(params.applyToElement);\r\n\t\t\t\t\tappliedClassNameVertical = 'align-up';\r\n\t\t\t\t\tappliedClassNameHorizontal = 'align-left';\r\n\t\t\t\t\t$dropdownList = $dropdownContainer;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\taddEventOnclick && $target.on('click', changeAlignment);\r\n\r\n\t\t\t\twindow.addEventListener('resize', function() {\r\n changeAlignment();\r\n if (dropdownInsideOverflow) {\r\n if ($targetParent.hasClass('open')) {\r\n $targetParent.removeClass('open');\r\n $targetParent.trigger('hidden.bs.dropdown');\r\n }\r\n }\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// whether we need to wait for knockout to render dropdown list or not\r\n\t\t\t\tif (params.waitForRender) {\r\n\t\t\t\t\tsetTimeout(changeAlignment, 0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchangeAlignment();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction changeAlignment() {\r\n\t\t\t\t\tconst windowWidth = isRightSidebar ? $('#mainMenu').offset().left : document.body.clientWidth;\r\n\t\t\t\t\tconst windowHeight = document.body.clientHeight;\r\n\t\t\t\t\tconst buttonOffsetX = $target.offset().left;\r\n\t\t\t\t\tconst buttonOffsetY = $target.offset().top;\r\n\t\t\t\t\tconst buttonHeight = $target.height();\r\n\t\t\t\t\tconst buttonWidth = $target.width();\r\n\r\n\t\t\t\t\tconst isMultiDropdown: boolean =\r\n\t\t\t\t\t\tdropdownType === 'bootstrap' &&\r\n\t\t\t\t\t\t$dropdownContainer\r\n\t\t\t\t\t\t\t.find('.dropdown-menu')\r\n\t\t\t\t\t\t\t.children()\r\n\t\t\t\t\t\t\t.hasClass('dropdown-submenu');\r\n\r\n\t\t\t\t\tconst dropdownWidth = $dropdownList.width() > 170 ? $dropdownList.width() : 170;\r\n\t\t\t\t\tconst dropdownHeight = $dropdownList.height();\r\n\r\n\t\t\t\t\tif (verticalAlign &&\r\n\t\t\t\t\t\twindowHeight - buttonOffsetY - buttonHeight < dropdownHeight + 30 &&\r\n\t\t\t\t\t\tbuttonOffsetY > dropdownHeight) {\r\n\t\t\t\t\t\t$dropdownContainer.addClass(appliedClassNameVertical);\r\n\t\t\t\t\t} else if (verticalAlign) {\r\n\t\t\t\t\t\t$dropdownContainer.removeClass(appliedClassNameVertical);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (horizontalAlign && windowWidth - buttonOffsetX - buttonWidth < dropdownWidth) {\r\n\t\t\t\t\t\t$dropdownList.addClass(appliedClassNameHorizontal);\r\n\t\t\t\t\t} else if (horizontalAlign &&\r\n\t\t\t\t\t\tisMultiDropdown &&\r\n\t\t\t\t\t\twindowWidth - buttonOffsetX < 2 * dropdownWidth &&\r\n\t\t\t\t\t\tbuttonOffsetX > dropdownWidth) {\r\n\t\t\t\t\t\t$dropdownList.addClass(appliedClassNameHorizontal);\r\n\t\t\t\t\t} else if (horizontalAlign) {\r\n\t\t\t\t\t\t$dropdownList.removeClass(appliedClassNameHorizontal);\r\n\t\t\t\t\t}\r\n }\r\n\r\n\t\t\t\tif (dropdownInsideOverflow) {\r\n\t\t\t\t\tconst $parent = $(element).parent('.dropdown').parent();\r\n\r\n $(element).parent('.dropdown').on('show.bs.dropdown', function () {\r\n \tconst $button = $(this).children('.dropdown-toggle');\r\n\r\n \t$(this).parent().css({\r\n\t\t\t\t\t\t\twidth: $(this).parent().width(),\r\n\t\t\t\t\t\t\theight: $(this).parent().height()\r\n\t\t\t\t\t\t});\r\n\r\n $button.css({\r\n\t\t\t\t\t\t\tpadding: $button.css('padding')\r\n\t\t\t\t\t\t});\r\n $('body').append($(this).css({\r\n position:'absolute',\r\n left: $(this).offset().left,\r\n top: $(this).offset().top,\r\n 'z-index': ZIndexManager.Instance.NextValue\r\n }).detach());\r\n });\r\n\r\n $targetParent.on('hidden.bs.dropdown', function() {\r\n $parent.append($(this).css({\r\n position: 'static'\r\n }).detach());\r\n });\r\n\t\t\t\t}\r\n }\r\n\t\t};\r\n\t}\r\n}\r\n\r\nexport interface AlignDropdownParams {\r\n\ttype: string;\r\n\tapplyToElement?: string;\r\n\tdirections: {\r\n\t\thorizontal?: boolean;\r\n\t\tvertical?: boolean;\r\n\t},\r\n\taddEventOnclick?: boolean;\r\n\twaitForRender?: boolean;\r\n dropdownInsideOverflow?: boolean;\r\n}","import * as ko from \"knockout\"\r\n\r\nexport class AllowBindingsExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.allowBindings = {\r\n\t\t\tinit: function (elem, valueAccessor) {\r\n\t\t\t\tvar shouldAllowBindings = ko.unwrap(valueAccessor());\r\n\t\t\t\treturn { controlsDescendantBindings: !shouldAllowBindings };\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class AnimateExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.animate = {\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\t$(element).animate({ scrollTop: options._scrollValue() });\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport 'jquery';\r\nimport { ZIndexManager } from 'Core/Common/ZIndexManager';\r\n\r\nexport class AutoCompleteExtention {\r\n\r\n static Init() {\r\n ko.bindingHandlers.autoComplete = {\r\n init: (element, valueAccessor) => {\r\n let source = valueAccessor().source;\r\n if (source.length != 0){\r\n this.InitAutocomplete(element, valueAccessor);\r\n }\r\n },\r\n\r\n update: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n let valueUnwrapped = ko.unwrap(valueAccessor());\r\n if (valueUnwrapped.source.length != 0){\r\n this.InitAutocomplete(element, valueUnwrapped, true);\r\n }\r\n }\r\n };\r\n }\r\n\r\n private static InitAutocomplete(element, valueAccessor, update?: boolean){\r\n const OnSelect = update ? valueAccessor.onSelect : valueAccessor().onSelect;\r\n let source = update ? valueAccessor.source : valueAccessor().source;\r\n let options = update ? valueAccessor.options : valueAccessor().options;\r\n\r\n $(element).autocomplete({\r\n minLength: options && options.minLength ? options.minLength : null,\r\n autoFocus: options && options.autoFocus ? options.autoFocus : false,\r\n source: source,\r\n open: function(){\r\n $(this).autocomplete('widget').css({\r\n 'z-index': ZIndexManager.Instance.NextValue,\r\n 'max-width': $(this).outerWidth() + 'px'\r\n });\r\n return false;\r\n },\r\n select: function (event, ui) {\r\n OnSelect(ui.item);\r\n }\r\n });\r\n }\r\n}","import * as ko from 'knockout';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nconst Updater = (element: HTMLElement, valueAccessor) => {\r\n\tvar block = ko.unwrap(valueAccessor());\r\n\tconst isElementBlocked = element.dataset.isBlocked;\r\n\tif (block && !isElementBlocked) {\r\n\t\telement.dataset.isBlocked = \"true\";\r\n\t\tBlockUI.Block({ Target: element });\r\n\t} else if (!block && isElementBlocked == \"true\") {\r\n\t\telement.dataset.isBlocked = \"\";\r\n\t\tBlockUI.Unblock(element);\r\n\t}\r\n}\r\n\r\nexport class BlockElementExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.blockElement = {\r\n\t\t\tinit: Updater,\r\n\r\n\t\t\tupdate: Updater\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class BootstrapCollapseExtention {\r\n\r\n static Init() {\r\n ko.bindingHandlers.collapse = {\r\n init: (element, valueAccessor) => {\r\n var value: any = valueAccessor();\r\n let $collapse = $(element).collapse();\r\n\r\n $collapse.on('hidden.bs.collapse', () => value.onClose());\r\n $collapse.on('show.bs.collapse', () => value.onOpen());\r\n\r\n value.onReady($collapse);\r\n }\r\n };\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport 'bootstrap-multiselect';\r\nimport $ from \"jquery\";\r\n\r\nexport class BootstrapMultiselect {\r\n\tprivate static $multiselect: any;\r\n\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.multiselect = {\r\n\t\t\tinit: (element, valueAccessor, allBindings) => {\r\n\t\t\t\tthis.$multiselect = $(element) as any;\r\n\r\n\t\t\t\t($(element) as any).multiselect(valueAccessor());\r\n\r\n\t\t\t\t// let elementOffset = ($(element) as any).parent().offset();\r\n\t\t\t\t// let jBoxContent = ($(element) as any).closest( \".jBox-content\" );\r\n\t\t\t\tlet multiselectContainer = ($(element) as any).parent().find('.multiselect-container');\r\n\t\t\t\tmultiselectContainer.css({\r\n\t\t\t\t\t'max-width': '100%'\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tupdate: (element, valueAccessor, allBindings) => {\r\n\t\t\t\tconst options = allBindings().options();\r\n\r\n\t\t\t\tthis.$multiselect.multiselect('setOptions', options);\r\n\t\t\t\tthis.$multiselect.multiselect('rebuild');\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tstatic Update() {\r\n\t\tthis.$multiselect && this.$multiselect.multiselect('rebuild');\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nexport class BootstrapPopoverExtention {\r\n\tstatic RenderHtmlString(html, data) {\r\n\t\tconst node = new DOMParser().parseFromString(html, \"text/html\");\r\n\t\tko.applyBindings(data, node.body);\r\n\t\tvar res = node.body.innerHTML.toString();\r\n\t\tko.cleanNode(node);\r\n\t\treturn res;\r\n\t}\r\n\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.popover = {\r\n\t\t\tinit: (element, valueAccessor, allBindings) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tconst source = allBindings.get('popoverTitle');\r\n\t\t\t\tconst triggerMode = allBindings.get('triggerMode') || 'click';\r\n\t\t\t\tconst htmlMode = allBindings.get('htmlMode') || false;\r\n\t\t\t\tconst sourceUnwrapped = ko.unwrap(source);\r\n\r\n\t\t\t\tlet result = options;\r\n\r\n\t\t\t\tif (allBindings.get('koData')) {\r\n\t\t\t\t\tresult = this.RenderHtmlString(options, allBindings.get('koData'));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t($(element) as any).popover({\r\n\t\t\t\t\ttrigger: triggerMode,\r\n\t\t\t\t\tcontent: result,\r\n\t\t\t\t\ttitle: sourceUnwrapped,\r\n\t\t\t\t\thtml: htmlMode\r\n\t\t\t\t});\r\n\r\n\r\n\t\t\t},\r\n\t\t\tupdate(element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n\t\t\t\tvar value = valueAccessor();\r\n\t\t\t\tko.bindingHandlers.value.update(element, valueAccessor, allBindings, viewModel, bindingContext);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport 'bootstrapSwitch';\r\n\r\nexport class BootstrapSwitchExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.bootstrapSwitch = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\toptions['onSwitchChange'] = (event, state) => {\r\n\t\t\t\t\tif (options.value) {\r\n\t\t\t\t\t\toptions.value(state);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\t$(element).bootstrapSwitch(options);\r\n\t\t\t},\r\n\t\t\tupdate(element, valueAccessor) {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tif (options.value) {\r\n\t\t\t\t\t$(element).bootstrapSwitch('state', options.value(), true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\n\r\nexport class Canvas {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.canvas = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tif (options && options.context) {\r\n\t\t\t\t\tvar context = element.getContext('2d');\r\n\t\t\t\t\toptions.context(context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport 'contextMenu';\r\nlet id = 0;\r\nexport class ContextMenu {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.contextMenu = {\r\n\t\t\tinit: (element, valueAccessor) => {\t\t\t\t\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tif(options.hasOwnProperty('enabled') && !ko.unwrap(options.enabled)){\r\n\t\t\t\t\treturn;\t\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\tlet contextMenuSelector = `context-menu${id++}`;\r\n\t\t\t\t$(element).addClass(contextMenuSelector);\r\n\t\t\t\toptions.selector = `.${contextMenuSelector}`;\r\n\t\t\t\t$.contextMenu(options);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as $ from 'jquery';\r\nimport * as ko from \"knockout\"\r\n\r\nimport 'cropper';\r\n\r\nexport class CropperExtention {\r\n // README v2.2.5\r\n // https://github.com/fengyuanchen/cropper/blob/v2.2.5/README.md\r\n\r\n static Init() {\r\n ko.bindingHandlers.cropper = {\r\n init: (element, valueAccessor, allBindings, viewModel) => {\r\n let self = this;\r\n let options = valueAccessor();\r\n\r\n options.built = () => {\r\n if (options.afterCrop) {\r\n options.afterCrop($(element).cropper('getCroppedCanvas').toDataURL(options.type));\r\n }\r\n };\r\n\r\n\r\n $(element).on('cropend.cropper', function (e: JQuery.Event) {\r\n self.CroppedCanvas(options, this);\r\n });\r\n\r\n $(element).on('zoom.cropper', function (e: JQuery.Event) {\r\n self.CroppedCanvas(options, this);\r\n });\r\n\r\n $(element).cropper(options);\r\n }\r\n }\r\n }\r\n\r\n private static CroppedCanvas(options, $this){\r\n if (options.afterCrop) {\r\n if (options.type === 'image/jpeg' ||\r\n options.type === 'image/jpg' ||\r\n options.type === 'image/jpe' ) {\r\n options.afterCrop($($this).cropper('getCroppedCanvas', {fillColor: '#fff'}).toDataURL(options.type));\r\n } else {\r\n options.afterCrop($($this).cropper('getCroppedCanvas').toDataURL(options.type));\r\n }\r\n }\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class CustomScrollbarExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.customScrollbar = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\t$(element).customScrollbar(options);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class CustomTableExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.customTable = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tlet insideModal = null;\r\n\t\t\t\tlet modalWrapperClass = '.jBox-container';\r\n\t\t\t\tlet modalScrollClass = '.jBox-content';\r\n\t\t\t\tlet sysTableClassName = '.sys-table';\r\n\t\t\t\tlet headerWrapClassName = '.header-wrap';\r\n\t\t\t\tlet scrollHeaderClassName = '.scroll-header';\r\n\t\t\t\tconst formWrapper = '.jBox-container .form-wrapper';\r\n\t\t\t\tconst tabs = '.jBox-container .tabs';\r\n\t\t\t\tconst sysTableHeader = '.jBox-container .sys-table-header';\r\n\t\t\t\tconst actionBarBlock = '.jBox-container #ActionBarBlock'\r\n\r\n\t\t\t\tinsideModal = $(element).closest(modalWrapperClass);\r\n\r\n\r\n\t\t\t\tlet windowHeight = null;\r\n\t\t\t\tlet documentHeight = null;\r\n\r\n\t\t\t\tlet tableWidth = 0;\r\n\t\t\t\tlet scrollWidth = 0;\r\n\r\n\t\t\t\tlet tableContainer = $(element).closest(sysTableClassName);\r\n\t\t\t\tlet scrollRepeaterTop = $(tableContainer).find(headerWrapClassName);\r\n\t\t\t\tlet scrollHeader = $(tableContainer).find(scrollHeaderClassName);\r\n\r\n\t\t\t\tif (insideModal.length) {\r\n\t\t\t\t\ttableWidth = $(element).width();\r\n\t\t\t\t\tscrollWidth = $(element).innerWidth();\r\n\r\n\t\t\t\t\twindowHeight = $(modalScrollClass).height();\r\n\t\t\t\t\tdocumentHeight = $(modalScrollClass).innerHeight();\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttableWidth = $(element).width();\r\n\t\t\t\t\tscrollWidth = $(element).innerWidth();\r\n\r\n\t\t\t\t\twindowHeight = $(window).height();\r\n\t\t\t\t\tdocumentHeight = $(document).height();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$(scrollRepeaterTop).css({\r\n\t\t\t\t\t'overflow-x': 'auto',\r\n\t\t\t\t\t'overflow-y': 'hidden'\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$(scrollHeader).width(scrollWidth);\r\n\r\n\t\t\t\tif (documentHeight > windowHeight) {\r\n\t\t\t\t\tconst outerHeight = $(actionBarBlock).outerHeight() + $(formWrapper).outerHeight() + $(tabs).outerHeight() + $(sysTableHeader).outerHeight();\r\n\t\t\t\t\tconst height = $(actionBarBlock).height() + $(formWrapper).height() + $(tabs).height() + $(sysTableHeader).height();\r\n\r\n\t\t\t\t\t$(element).parent().css({\r\n\t\t\t\t\t\t'height': windowHeight - height - 20,\r\n\t\t\t\t\t\t'overflow': 'auto'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t\t$(window).trigger('resize');\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport 'datetimepicker';\r\nimport * as moment from 'moment';\r\nimport {WeekFormatUtils} from 'Core/Controls/DateTime/WeekFormatUtils';\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\nconst timeFormats = [\r\n DATE_FORMATS.TIME.Format,\r\n DATE_FORMATS.LONG_TIME.Format,\r\n DATE_FORMATS.TIME_SPAN.Format,\r\n DATE_FORMATS.TIME_SPAN_LONG.Format\r\n];\r\n\r\nexport class DatetimepickerExtention {\r\n static Init() {\r\n \r\n const valHook = ($.valHooks.input as any);\r\n // Extension of jQuery.fn.val\r\n // Inspired by https://github.com/RobinHerbots/Inputmask\r\n const valHookGet =\r\n $.valHooks.input && valHook.get\r\n ? valHook.get\r\n : function (element: HTMLInputElement) {\r\n return element.value;\r\n };\r\n\r\n const valHookSet =\r\n $.valHooks.input && valHook.set\r\n ? valHook.set\r\n : function (element: HTMLInputElement, value: string) {\r\n element.value = value;\r\n return value;\r\n };\r\n\r\n $.valHooks.input = {\r\n get: function (element: HTMLInputElement) {\r\n const dataGetInputValue: ((value: string) => string) | undefined = $(element).data('getWeekFormat');\r\n if (dataGetInputValue) {\r\n const savedValue = $(element).data('savedValue');\r\n if (savedValue) {\r\n return savedValue;\r\n }\r\n return dataGetInputValue(element.value) || '';\r\n }\r\n\r\n return valHookGet(element);\r\n },\r\n set: function (element: HTMLInputElement, value: string) {\r\n const dataSetInputValue: ((value: string) => string) | undefined = $(element).data('setWeekFormat');\r\n if (dataSetInputValue) {\r\n $(element).data('savedValue', value);\r\n\r\n const formattedValue = dataSetInputValue(value);\r\n if (!formattedValue) {\r\n return undefined;\r\n }\r\n\r\n element.value = formattedValue;\r\n return formattedValue;\r\n }\r\n\r\n return valHookSet(element, value);\r\n }\r\n };\r\n\r\n ko.bindingHandlers.datetimepicker = {\r\n init: (element, valueAccessor) => {\r\n const options = valueAccessor();\r\n const updateValueCallback = options.onUpdate || (value => {\r\n });\r\n\r\n this.SetInputParse(options);\r\n\r\n let scrollContainer;\r\n let gridScrollContainer;\r\n let listener;\r\n\r\n function resizePicker() {\r\n const picker: HTMLDivElement = this.parentElement.querySelector(\".bootstrap-datetimepicker-widget\");\r\n const {top, left, width, height} = this.querySelector(\".time-picker-button\").getBoundingClientRect();\r\n const pickerHeight = picker.offsetHeight;\r\n const pickerWidth = picker.offsetWidth;\r\n picker.style.right = \"auto\";\r\n picker.style.left = left + (width / 2 - pickerWidth / 2) + \"px\";\r\n\r\n if (window.innerHeight < top + pickerHeight) {\r\n picker.style.top = (top - pickerHeight) + \"px\";\r\n picker.classList.add(\"icon-bottom\");\r\n } else {\r\n picker.style.top = (top + height) + \"px\";\r\n picker.classList.remove(\"icon-bottom\");\r\n }\r\n scrollContainer = this.closest(\".jBox-content\");\r\n gridScrollContainer = this.closest(\".grid-container-wrapper\");\r\n }\r\n\r\n\r\n if (options.options) {\r\n const isWeekFormat = options.options.format === WeekFormatUtils.GetLocalizedWeekFormat();\r\n\r\n if (isWeekFormat) {\r\n const input = element instanceof HTMLInputElement ? element : element.querySelector('input');\r\n\r\n WeekFormatUtils.PatchWeekFormatInput(input, options.options.format);\r\n }\r\n\r\n const pickerOptions = isWeekFormat ? WeekFormatUtils.PatchWeekFormatOptions(options.options) : options.options;\r\n\r\n $(element).datetimepicker(pickerOptions)\r\n .on('dp.hide, dp.change', (e: any) => {\r\n if (!e.date && (options.options.format == 'HH:mm')) {\r\n updateValueCallback(\"0\");\r\n }\r\n if (e.date && e.date._d) {\r\n updateValueCallback(e.date.toDate());\r\n }\r\n })\r\n .on('dp.show', function (e: any) {\r\n\r\n $('#Condition, #Filtering, .table-scrollable, .tag-control-list')\r\n .css('overflow', 'visible');\r\n\r\n // if datetimepicker is inside grid\r\n let gridCell = $(this).closest('.flex-grid-tdata');\r\n\r\n if (gridCell.length > 0) {\r\n\r\n resizePicker.call(this);\r\n listener = resizePicker.bind(this);\r\n\r\n window.addEventListener(\"resize\", listener, false);\r\n window.addEventListener(\"scroll\", listener, false);\r\n scrollContainer && scrollContainer.addEventListener(\"scroll\", listener, false);\r\n gridScrollContainer && gridScrollContainer.addEventListener(\"scroll\", listener, false);\r\n }\r\n })\r\n .on('dp.hide', function (e: any) {\r\n $('#Condition, #Filtering, .table-scrollable, .tag-control-list')\r\n .css({'overflow-x': 'auto', 'overflow-y': 'auto'});\r\n\r\n scrollContainer && scrollContainer.removeEventListener(\"scroll\", listener, false);\r\n gridScrollContainer && gridScrollContainer.removeEventListener(\"scroll\", listener, false);\r\n window.removeEventListener(\"resize\", listener, false);\r\n window.removeEventListener(\"scroll\", listener, false);\r\n });\r\n\r\n\r\n $(element).find('input')\r\n .on('keyup', function (e: any) {\r\n if (!$(this).val()) {\r\n updateValueCallback('');\r\n }\r\n });\r\n\r\n if (options.changeTheCaret) {\r\n $(element).find('input')\r\n .on('keydown', function (e: any) {\r\n let caretPos = this.selectionStart;\r\n\r\n switch (e.which) {\r\n case 37:\r\n e.preventDefault();\r\n this.setSelectionRange(caretPos - 1, caretPos - 1);\r\n break;\r\n case 39:\r\n e.preventDefault();\r\n this.setSelectionRange(caretPos + 1, caretPos + 1);\r\n break;\r\n }\r\n });\r\n }\r\n }\r\n },\r\n\r\n update(element, valueAccessor) {\r\n const options = valueAccessor();\r\n const updateValueCallback = options.onUpdate || (value => {\r\n });\r\n const clearValueCallback = options.onClear || (value => {\r\n });\r\n const resetBtn = $(element).find('.date-remove');\r\n\r\n if (options.value) {\r\n let dateTimeValue = options.value instanceof Function ? options.value() : options.value;\r\n\r\n if (\r\n (!options.notFormatted && options.options.format !== WeekFormatUtils.GetLocalizedWeekFormat()) ||\r\n (dateTimeValue instanceof Date && timeFormats.indexOf(options.options.format) > -1)\r\n ) {\r\n dateTimeValue = moment(dateTimeValue).format(options.options.format);\r\n }\r\n\r\n $(element).data('DateTimePicker').date(dateTimeValue || null);\r\n\r\n $(resetBtn).on('click', () => {\r\n $(element).data('DateTimePicker').clear();\r\n clearValueCallback();\r\n updateValueCallback();\r\n });\r\n }\r\n }\r\n };\r\n }\r\n\r\n private static SetInputParse(options) {\r\n const currentFormat = options.options.format;\r\n\r\n if (!currentFormat) {\r\n return;\r\n }\r\n\r\n if (timeFormats.indexOf(currentFormat) > -1) {\r\n const fallbackMomentOfTime = moment('23:59', DATE_FORMATS.TIME.Format);\r\n\r\n options.options.parseInputDate = (inputValue) => {\r\n if (inputValue === 'Invalid date') {\r\n inputValue = '0';\r\n }\r\n\r\n if (inputValue && inputValue.indexOf(':') === -1) {\r\n const value = inputValue.replace(\",\", \".\");\r\n const minsRest = value % 1;\r\n\r\n const hours = Math.floor(value);\r\n const minutes = Math.round((minsRest % 1) * 60);\r\n\r\n if (hours < 0 || hours >= 24 || minutes < 0 || minutes >= 60) {\r\n return fallbackMomentOfTime;\r\n }\r\n\r\n const hrs = (hours < 10) ? (\"0\" + hours) : hours.toString();\r\n const mins = (minutes < 10) ? (\"0\" + minutes) : minutes.toString();\r\n\r\n const res = hrs + \":\" + mins;\r\n const momentOfTime = moment(res, 'hh:mm');\r\n\r\n if (!momentOfTime.isValid()) {\r\n return fallbackMomentOfTime;\r\n }\r\n\r\n return momentOfTime;\r\n }\r\n\r\n return moment(inputValue, currentFormat);\r\n };\r\n }\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nexport class DebugExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.debug = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tconsole.log('Knockoutbinding:');\r\n\t\t\t\tconsole.log(element);\r\n\t\t\t\tconsole.log(valueAccessor());\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nexport class DirtyFlagExtention {\r\n\tprivate static flag : Result;\r\n\tstatic Init() {\r\n\t\t(ko as any).dirtyFlag = <T>(currentState: T, isInitiallyDirty: boolean = false) => new Result(currentState, isInitiallyDirty);\r\n\t}\r\n}\r\n\r\nclass Result {\r\n\tprivate _currentState : KnockoutObservable<any>;\r\n\tprivate _initialState: KnockoutObservable<string>;\r\n\tprivate _isInitiallyDirty: boolean;\r\n\r\n\tIsDirty: KnockoutComputed<boolean>;\r\n\r\n\tconstructor(currentState: any, isInitiallyDirty: boolean = false) {\r\n\t\tthis._currentState = ko.observable(currentState);\r\n\t\tthis._initialState = ko.observable(ko.toJSON(this._currentState()));\r\n\t\tthis._isInitiallyDirty = isInitiallyDirty;\r\n\r\n\t\tthis.IsDirty = ko.computed(() => {\r\n\t\t\treturn this._isInitiallyDirty || (this._initialState() !== ko.toJSON(this._currentState()));\r\n\t\t}, this);\r\n\t}\r\n\r\n\tCommit() {\r\n\t\tthis._initialState(ko.toJSON(this._currentState()));\r\n\t\tthis._isInitiallyDirty = false;\r\n\t}\r\n\r\n\tGetInitialState() {\r\n\t\treturn ko.toJS(this._initialState());\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as dragula from 'dragula';\r\n\r\nexport class DragulaExtention {\r\n private static FOREACH_OPTIONS_PROPERTIES = ['afterAdd', 'afterMove', 'afterRender', 'as', 'beforeRemove'];\r\n private static LIST_KEY = 'ko_dragula_list';\r\n private static AFTER_DROP_KEY = 'ko_dragula_afterDrop';\r\n private static AFTER_DELETE_KEY = 'ko_dragula_afterDelete';\r\n private static AFTER_CLONE_KEY = 'ko_dragula_afterClone';\r\n private static DRAG_KEY = 'ko_dragula_drag';\r\n private static DRAG_END_KEY = 'ko_dragula_dragEnd';\r\n\r\n private static unwrap = ko.unwrap;\r\n private static setData = ko.utils.domData.set;\r\n private static getData = ko.utils.domData.get;\r\n private static foreachBinding = ko.bindingHandlers.foreach;\r\n private static fastForEachBinding = ko.bindingHandlers.fastForEach;\r\n private static addDisposeCallback = ko.utils.domNodeDisposal.addDisposeCallback;\r\n private static cloneBackup;\r\n private static copying;\r\n\r\n private static groups = [];\r\n\r\n static Init() {\r\n this.FOREACH_OPTIONS_PROPERTIES = ['afterAdd', 'afterMove', 'afterRender', 'as', 'beforeRemove'];\r\n this.LIST_KEY = 'ko_dragula_list';\r\n this.AFTER_DROP_KEY = 'ko_dragula_afterDrop';\r\n this.AFTER_DELETE_KEY = 'ko_dragula_afterDelete';\r\n this.AFTER_CLONE_KEY = 'ko_dragula_afterClone';\r\n this.DRAG_KEY = 'ko_dragula_drag';\r\n\r\n this.unwrap = ko.unwrap;\r\n this.setData = ko.utils.domData.set;\r\n this.getData = ko.utils.domData.get;\r\n this.foreachBinding = ko.bindingHandlers.foreach;\r\n this.addDisposeCallback = ko.utils.domNodeDisposal.addDisposeCallback;\r\n this.groups = [];\r\n var self = this;\r\n\r\n ko.bindingHandlers.dragula = {\r\n init: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n var options = self.unwrap(valueAccessor()) || {};\r\n var foreachOptions = self.MakeForeachOptions(valueAccessor, options);\r\n self.setData(element, self.LIST_KEY, foreachOptions.data);\r\n self.setData(element, self.AFTER_DROP_KEY, options.afterDrop);\r\n self.setData(element, self.AFTER_DELETE_KEY, options.afterDelete);\r\n self.setData(element, self.DRAG_KEY, options.onDrag);\r\n self.setData(element, self.DRAG_END_KEY, options.onDragEnd);\r\n\r\n if (options.useFastForEach) {\r\n self.fastForEachBinding.init(element, () => {\r\n return foreachOptions;\r\n }, allBindings, viewModel, bindingContext);\r\n } else {\r\n self.foreachBinding.init(element, () => {\r\n return foreachOptions;\r\n }, allBindings, viewModel, bindingContext);\r\n }\r\n\r\n if (options.disabled) {\r\n return {controlsDescendantBindings: true};\r\n }\r\n\r\n if (options.group) {\r\n self.CreateOrUpdateDrakeGroup(element, options);\r\n } else {\r\n (() => {\r\n var drake = self.CreateDrake(element, options);\r\n self.addDisposeCallback(element, () => {\r\n return drake.destroy();\r\n });\r\n })();\r\n }\r\n\r\n return {\r\n controlsDescendantBindings: true\r\n };\r\n },\r\n\r\n update(element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var options = self.unwrap(valueAccessor()) || {};\r\n var foreachOptions = self.MakeForeachOptions(valueAccessor, options);\r\n\r\n self.setData(element, self.LIST_KEY, foreachOptions.data);\r\n self.setData(element, self.AFTER_DROP_KEY, options.afterDrop);\r\n self.setData(element, self.DRAG_KEY, options.onDrag);\r\n self.setData(element, self.DRAG_END_KEY, options.onDragEnd);\r\n\r\n if (options.useFastForEach) {\r\n self.fastForEachBinding.init(element, () => {\r\n return foreachOptions;\r\n }, allBindings, viewModel, bindingContext);\r\n } else {\r\n self.foreachBinding.update(element, () => {\r\n return foreachOptions;\r\n }, allBindings, viewModel, bindingContext);\r\n }\r\n }\r\n };\r\n }\r\n\r\n static MakeForeachOptions(valueAccessor, options) {\r\n var templateOptions = {\r\n data: options.data || valueAccessor()\r\n };\r\n\r\n this.FOREACH_OPTIONS_PROPERTIES.forEach((option) => {\r\n if (options.hasOwnProperty(option)) {\r\n templateOptions[option] = options[option];\r\n }\r\n });\r\n\r\n return templateOptions;\r\n }\r\n\r\n static CreateOrUpdateDrakeGroup(container, options) {\r\n var group = this.FindGroup(options.group);\r\n if (group) {\r\n group.drake.containers.push(container);\r\n } else {\r\n group = this.AddGroup(options.group, this.CreateDrake(container, options));\r\n }\r\n\r\n this.addDisposeCallback(container, () => {\r\n return this.RemoveContainer(group, container);\r\n });\r\n }\r\n\r\n static AddGroupWithOptions(name, options) {\r\n var drake = dragula(options);\r\n this.RegisterEvents(drake);\r\n return this.AddGroup(name, drake);\r\n }\r\n\r\n static FindGroup(name) {\r\n for (var i = 0; i < this.groups.length; i++) {\r\n if (this.groups[i].name === name) {\r\n return this.groups[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n static FindGroups(name) {\r\n var result = [];\r\n for (var i = 0; i < this.groups.length; i++) {\r\n if (this.groups[i].name === name) {\r\n result.push(this.groups[i]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static AddGroup(name, drake) {\r\n var group = {\r\n name: name, drake: drake\r\n };\r\n this.groups.push(group);\r\n return group;\r\n }\r\n\r\n static RegisterEvents(drake) {\r\n drake.on('drop', this.OnDrop.bind(this));\r\n drake.on('drag', this.OnDrag.bind(this));\r\n drake.on('remove', this.OnRemove.bind(this));\r\n drake.on('cancel', this.OnCancel.bind(this));\r\n drake.on('cloned', this.OnCloned.bind(this));\r\n }\r\n\r\n static RemoveContainer(group, container) {\r\n var index = group.drake.containers.indexOf(container);\r\n group.drake.containers.splice(index, 1);\r\n\r\n if (!group.drake.containers.length) {\r\n this.DestroyGroup(group);\r\n }\r\n }\r\n\r\n static DestroyGroup(group) {\r\n var index = this.groups.indexOf(group);\r\n this.groups.splice(index, 1);\r\n group.drake.destroy();\r\n }\r\n\r\n static CreateDrake(element, options) {\r\n var drake = dragula([element], options);\r\n this.RegisterEvents(drake);\r\n return drake;\r\n }\r\n\r\n static OnDrop(el, target, source) {\r\n if (!target) {\r\n return;\r\n }\r\n var item = ko.dataFor(el);\r\n if (this.copying) {\r\n item = ko.dataFor(this.cloneBackup);\r\n this.copying = false;\r\n }\r\n var context = ko.contextFor(el);\r\n\r\n var sourceItems = this.getData(source, this.LIST_KEY);\r\n\r\n if (!sourceItems) {\r\n target.removeChild(el);\r\n return;\r\n }\r\n\r\n var sourceIndex = sourceItems.indexOf(item);\r\n\r\n var targetItems = this.getData(target, this.LIST_KEY);\r\n var targetIndex = Array.prototype.indexOf.call(target.children, el);\r\n var sourceContext = ko.dataFor(source);\r\n var targetContext = ko.dataFor(target);\r\n\r\n target.removeChild(el);\r\n\r\n /*if (this.copying) {\r\n var koCopy = item.Clone ? item.Clone() : mapping.fromJS(mapping.toJS(item));\r\n sourceItems.splice(sourceIndex, 1);\r\n sourceItems.splice(sourceIndex, 0, koCopy);\r\n targetItems.splice(targetIndex, 0, item);\r\n this.copying = false;\r\n } else {\r\n sourceItems.splice(sourceIndex, 1);\r\n targetItems.splice(targetIndex, 0, item);\r\n }*/\r\n\r\n var afterDrop = this.getData(target, this.AFTER_DROP_KEY);\r\n if (afterDrop) {\r\n afterDrop.call(context, item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n var onDragEnd = this.getData(target, this.DRAG_END_KEY);\r\n if (onDragEnd) {\r\n onDragEnd.call(context, item);\r\n }\r\n }\r\n\r\n static OnDrag(el, source) {\r\n var item = ko.dataFor(el);\r\n var context = ko.contextFor(el);\r\n var sourceItems = this.getData(source, this.LIST_KEY);\r\n var onDrag = this.getData(source, this.DRAG_KEY);\r\n if (onDrag) {\r\n onDrag.call(context, item, sourceItems);\r\n }\r\n }\r\n\r\n static OnRemove(el, container) {\r\n var item = ko.dataFor(el);\r\n var sourceItems = this.getData(container, this.LIST_KEY);\r\n var sourceIndex = sourceItems.indexOf(item);\r\n var context = ko.contextFor(el);\r\n\r\n sourceItems.splice(sourceIndex, 1);\r\n\r\n var afterDelete = this.getData(container, this.AFTER_DELETE_KEY);\r\n if (afterDelete) {\r\n afterDelete.call(context, item, sourceIndex, sourceItems);\r\n }\r\n\r\n var onDragEnd = this.getData(container, this.DRAG_END_KEY);\r\n if (onDragEnd) {\r\n onDragEnd.call(context, item);\r\n }\r\n }\r\n\r\n static OnCancel(el, container) {\r\n if (container) {\r\n var item = ko.dataFor(el);\r\n var sourceItems = this.getData(container, this.LIST_KEY);\r\n var sourceIndex = sourceItems.indexOf(item);\r\n\r\n container.removeChild(el);\r\n\r\n sourceItems.splice(sourceIndex, 1);\r\n sourceItems.splice(sourceIndex, 0, item);\r\n\r\n var onDragEnd = this.getData(container, this.DRAG_END_KEY);\r\n if (onDragEnd) {\r\n onDragEnd.call(ko.contextFor(el), item);\r\n }\r\n }\r\n }\r\n\r\n static OnCloned(clone, original, type) {\r\n if (type === 'copy') {\r\n this.copying = true;\r\n this.cloneBackup = original;\r\n }\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\n\r\nexport class DropdownExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.dropdown = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\t//var options = valueAccessor();\r\n\t\t\t\t//const updateValueCallback = options.onUpdate || (value => { });\r\n\t\t\t\tconsole.log(element, valueAccessor());\r\n\t\t\t\t//if (options.options) {\r\n\t\t\t\tconsole.log($(element));\r\n\t\t\t\t$(element).on('show.bs.dropdown', (e: any) => {\r\n\t\t\t\t\t\tconsole.log('show');\r\n\t\t\t\t\t\t$('#Condition, #Filtering').css('overflow', 'visible');\r\n\r\n\t\t\t\t\t}).on('hide.bs.dropdown', (e: any) => {\r\n\t\t\t\t\t\tconsole.log('hide');\r\n\t\t\t\t\t\t$('#Condition, #Filtering').css({ 'overflow-x': 'auto', 'overflow-y': 'hidden' });\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t//}\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n}","import * as ko from 'knockout'\r\nimport 'jquery'\r\n\r\nimport Dropzone from 'dropzone'\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class DropzoneExtenion {\r\n static Init() {\r\n\r\n ko.bindingHandlers.dropzone = {\r\n init: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n const options = valueAccessor();\r\n const dropzoneInstance = new Dropzone(element, options);\r\n let rawData = ko.unwrap(bindingContext.$rawData);\r\n\r\n dropzoneInstance.on('addedfiles', (files) => {\r\n setTimeout(() => { \r\n if (dropzoneInstance.files.length > bindingContext.$rawData.MaxFilesQty) {\r\n Array.prototype.forEach.call(files, file => dropzoneInstance.removeFile(file));\r\n new Notifier().Failed(NOTIFICATIONS.ALLOWED_FILES_AMOUNT_EXCEEDED.replace('{amount}', bindingContext.$rawData.MaxFilesQty));\r\n return;\r\n }\r\n\r\n Array.prototype.forEach.call(files, file => {\r\n if (file.size === 0) {\r\n dropzoneInstance.removeFile(file);\r\n new Notifier().Failed(NOTIFICATIONS.EMPTY_SIZE_FILES_RESTRICTION);\r\n return;\r\n }\r\n if ((file.size / (1024 * 1024)) > rawData.MaxFileSize) {\r\n return;\r\n }\r\n });\r\n\r\n const uploadSessionSize = dropzoneInstance.files.filter(file => file.status === 'queued').map(file => file.size).reduce((prevFileSize, currentFileSize) => prevFileSize + currentFileSize, 0);\r\n if ((uploadSessionSize / (1024 * 1024)) > rawData.MaxUploadingFilesSize) {\r\n Array.prototype.forEach.call(files, function (file) {\r\n if (file.previewElement.parentNode != null) {\r\n dropzoneInstance.removeFile(file)\r\n }\r\n });\r\n new Notifier().Failed(NOTIFICATIONS.ALLOWED_FILES_SIZE_EXCEEDED.replace('{size}', bindingContext.$rawData.MaxUploadingFilesSize));\r\n return;\r\n }\r\n\r\n const combinedSize = dropzoneInstance.files.map(file => file.size).reduce((prevFileSize, currentFileSize) => prevFileSize + currentFileSize, 0);\r\n if ((combinedSize / (1024 * 1024)) > bindingContext.$rawData.MaxCombinedSize) {\r\n Array.prototype.forEach.call(files, function (file) {\r\n if (file.previewElement.parentNode != null) {\r\n dropzoneInstance.removeFile(file)\r\n }\r\n });\r\n new Notifier().Failed(NOTIFICATIONS.OVERAL_FILE_SIZE_EXCEEDED);\r\n return;\r\n }\r\n\r\n const acceptedTypes: Array<string> = options && options.acceptedFiles\r\n ? options.acceptedFiles.split(',') : null;\r\n if (acceptedTypes) {\r\n let invalidFiles: Array<string> = [];\r\n Array.prototype.forEach.call(files, file => {\r\n if (!_.any(acceptedTypes, extension => file.name.toLowerCase().endsWith(extension))) {\r\n dropzoneInstance.removeFile(file);\r\n invalidFiles.push(file.name);\r\n }\r\n });\r\n\r\n if (invalidFiles.length > 0) {\r\n const message = `${NOTIFICATIONS.ALLOWED_FILE_EXTENSIONS_ARE_EXTENSIONS}. ${NOTIFICATIONS.CANNOT_UPLOAD_FILES}`\r\n .replace('{FileExtensions}', acceptedTypes.join(', '))\r\n .replace('{Files}', invalidFiles.join(', '));\r\n new Notifier().Failed(message);\r\n return;\r\n }\r\n }\r\n\r\n if (bindingContext.$rawData && bindingContext.$rawData.AfterUpload) {\r\n Array.prototype.forEach.call(files, file => bindingContext.$rawData.AfterUpload(file));\r\n }\r\n })\r\n });\r\n\r\n dropzoneInstance.on('addedfile', (file) => {\r\n if (file.status === 'preloaded' && bindingContext.$rawData && bindingContext.$rawData.AfterUpload) {\r\n bindingContext.$rawData.AfterUpload(file);\r\n }\r\n });\r\n\r\n ko.utils.domData.set(element, 'preloadFinished', false);\r\n\r\n dropzoneInstance.on('removedfile', (file) => {\r\n file.status = 'removed';\r\n\r\n if (typeof bindingContext.$rawData.ImageDelete === \"function\") {\r\n bindingContext.$rawData.ImageDelete(file);\r\n }\r\n });\r\n\r\n dropzoneInstance.on('error', (file) => {\r\n if ((file.size / (1024 * 1024)) > rawData.MaxFileSize) {\r\n dropzoneInstance.removeFile(file);\r\n new Notifier().Failed(NOTIFICATIONS.FILE_SIZE_IS_TOO_BIG.replace('{MaxFileSize}', rawData.MaxFileSize));\r\n }\r\n });\r\n\r\n ko.utils.domData.set(element, 'dropZoneInstance', dropzoneInstance);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n dropzoneInstance.off();\r\n dropzoneInstance.destroy();\r\n });\r\n },\r\n update: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n if (!bindingContext.$data.IsImageGallery) {\r\n return;\r\n }\r\n const images = bindingContext.$rawData._dataModel && bindingContext.$rawData._dataModel() && bindingContext.$rawData._dataModel().Files || null;\r\n if (images !== null && !ko.utils.domData.get(element, 'preloadFinished')) {\r\n const dropzoneInstance = ko.utils.domData.get(element, 'dropZoneInstance');\r\n if (images) {\r\n for (var i = 0; i < images.length; i++) {\r\n const imageToInject = _.extend(images[i], {\r\n preloaded: true,\r\n accepted: true,\r\n status: 'preloaded',\r\n upload: {filename: images[i].CacheFile ? images[i].CacheFile.name : (images[i].Name ? images[i].Name : 'prev' + i)},\r\n size: images[i].Size ? images[i].Size : images[i].CacheFile.size\r\n });\r\n dropzoneInstance.emit('addedfile', imageToInject);\r\n if (!!imageToInject.CacheFile) {\r\n dropzoneInstance.emit('thumbnail', imageToInject, imageToInject.CacheFile.dataURL || 'data:image/jpeg;base64,' + imageToInject.CacheFile.dataURL);\r\n } else {\r\n dropzoneInstance.emit('thumbnail', imageToInject, imageToInject.ImageData || 'data:image/jpeg;base64,' + imageToInject.ImageData);\r\n }\r\n if (imageToInject.ImageData) {\r\n dropzoneInstance.emit('complete', imageToInject);\r\n }\r\n dropzoneInstance.files.push(imageToInject);\r\n }\r\n }\r\n ko.utils.domData.set(element, 'preloadFinished', true);\r\n\r\n }\r\n }\r\n };\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nimport {Tooltip} from 'Core/Common/Tooltip';\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\n\r\n// customOptions\r\n// showHideOnlyOnHover - Restarts the tooltip on hover over the element.\r\n// isLineClampMode - Triggers the tooltip upon reaching a certain height, used together with the \".line-clamp-ellipsis\" class, but can be used without it\r\n\r\nexport class EllipsisTooltipExtention {\r\n private _jbox: jBox;\r\n private static _tooltip: Tooltip | null = null;\r\n\r\n static Init() {\r\n const self = this;\r\n ko.bindingHandlers.ellipsisTooltip = {\r\n init: (element, valueAccessor) => {\r\n const options = ko.unwrap(valueAccessor()).options;\r\n \r\n const updateEllipsisTooltip = () => {\r\n if (options && options.isLineClampMode){ //Used in conjunction with the \".line-clamp-ellipsis\" class, but can be used without it\r\n let currentEl = $(element);\r\n if (currentEl[0].offsetHeight < currentEl[0].scrollHeight ||\r\n currentEl[0].offsetWidth < currentEl[0].scrollWidth) {\r\n // your element have overflow\r\n if (options.showHideOnlyOnHover) {\r\n self.ShowTooltip(element, valueAccessor);\r\n } else {\r\n self.Update(element, valueAccessor);\r\n }\r\n } else {\r\n self.HideTooltip(options);\r\n }\r\n } else {\r\n let currentEl = $(element),\r\n parrentEl = currentEl.parent(),\r\n rightCoorCurrent = currentEl.offset().left + currentEl.prop('scrollWidth'),\r\n rightCoorParent = parrentEl.offset().left + parrentEl.prop('scrollWidth');\r\n\r\n if (rightCoorCurrent > rightCoorParent) {\r\n if (options && options.showHideOnlyOnHover) {\r\n self.ShowTooltip(element, valueAccessor);\r\n } else {\r\n self.Update(element, valueAccessor);\r\n }\r\n } else {\r\n self.HideTooltip(options);\r\n }\r\n }\r\n }\r\n\r\n $(document).ready(updateEllipsisTooltip);\r\n\r\n if (options && options.showHideOnlyOnHover) {\r\n $(element).on('mouseenter', function () {\r\n setTimeout(updateEllipsisTooltip, 1);\r\n });\r\n $(element).on('mouseleave', function () {\r\n setTimeout(()=> {\r\n self.HideTooltip(options);\r\n }, 1)\r\n });\r\n }\r\n \r\n }\r\n };\r\n }\r\n\r\n private static ShowTooltip(element, valueAccessor) {\r\n const options = ko.unwrap(valueAccessor()) as ITooltipConfig;\r\n\r\n if ((options && options.options) && options.options.showHideOnlyOnHover) {\r\n const otherOptions = options.options;\r\n if (!this._tooltip) {\r\n this._tooltip = new Tooltip(element, options.content, otherOptions);\r\n }\r\n \r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n });\r\n\r\n this._tooltip.Show(element);\r\n }\r\n }\r\n\r\n private static HideTooltip(options) {\r\n if (options && options.showHideOnlyOnHover) {\r\n if (this._tooltip) {\r\n this._tooltip.Close();\r\n this._tooltip.Destroy();\r\n this._tooltip = null;\r\n }\r\n }\r\n }\r\n\r\n private static Update(element, valueAccessor) {\r\n const options = ko.unwrap(valueAccessor()) as ITooltipConfig;\r\n const otherOptions = options.options;\r\n const tooltip = new Tooltip(element, options.content, otherOptions);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n });\r\n }\r\n\r\n static CreateEllipsisTooltipForPathRunner(record) {\r\n let currentNodeType = $(`#${record.Guid}_node-type`),\r\n currentAnchor = $(`#${record.Guid}_anchor`),\r\n jbox;\r\n\r\n if (!!currentAnchor.length && !!currentNodeType){\r\n if (currentAnchor.prop('offsetWidth') < currentAnchor.prop('scrollWidth') || currentNodeType.prop('offsetWidth') < currentNodeType.prop('scrollWidth')) {\r\n jbox = new jBox('Tooltip', {\r\n content: `<b>${record.TypeNameTranslation || record.TypeTranslatedName || record.TypeName}:</b> ${record.TranslatedName || record.NameTranslation || record.Name}`,\r\n addClass: `${record.Guid}_tooltip path-runner-tooltip`,\r\n closeOnClick: true,\r\n closeOnMouseleave: true,\r\n target: $(`#${record.Guid}_anchor`),\r\n zIndex: ZIndexManager.Instance.NextValue\r\n });\r\n jbox.open();\r\n\r\n return jbox;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport interface ITooltipConfig {\r\n content: string;\r\n options: any;\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class EnableAttrExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.enableAttr = {\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tvar enabled = ko.unwrap(valueAccessor());\r\n\t\t\t\tif (enabled) {\r\n\t\t\t\t\t$(element).removeAttr('disabled');\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t$(element).attr('disabled', 'disabled');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class EnterKeyExtention {\r\n\tstatic Init() {\r\n\t\tvar ENTER_KEY_CODE = 13;\r\n\r\n\t\tko.bindingHandlers.enterKey = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel) => {\r\n let accessor = valueAccessor();\r\n\t\t\t\t$(element).keypress((event) => {\r\n\t\t\t\t\tlet keyCode = (event.which ? event.which : event.keyCode);\r\n if (keyCode === ENTER_KEY_CODE) {\r\n if (accessor instanceof Function) {\r\n accessor.call(viewModel, event);\r\n return false;\r\n }\r\n accessor.handler.call(viewModel, event);\r\n return accessor.bubble;\r\n }\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}","import * as ko from 'knockout';\r\n\r\nvar original = new ko.bindingProvider();\r\nexport class ErrorHandlingBindingProvider implements KnockoutBindingProvider {\r\n\tgetBindingAccessors(node: Node, bindingContext: KnockoutBindingContext): { [index: string]: string; } {\r\n\t\tvar result = {};\r\n\t\t\r\n\t\t//catch general errors parsing binding syntax\r\n\t\ttry {\r\n\t\t\tresult = original.getBindingAccessors(node, bindingContext);\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tif (console && console.log) {\r\n\t\t\t\tconsole.log(\"Error in binding syntax: \" + e.message, node); \r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//catch errors when actually evaluating the value of a binding\r\n\t\tko.utils.objectForEach(result, (key, value) => {\r\n\t\t\tresult[key] = () => {\r\n\t\t\t\tvar result = null;\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tresult = value(); \r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\tif (console && console.log) {\r\n\t\t\t\t\t\tconsole.log(\"Error in \\\"\" + key + \"\\\" binding: \" + e.message);\r\n\t\t\t\t\t\tconsole.log('Node :', node);\r\n\t\t\t\t\t\tif (bindingContext && bindingContext.$data) {\r\n\t\t\t\t\t\t\tconsole.log('Model :', bindingContext.$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\t\r\n\t\t\t\treturn result;\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\treturn (result) as any;\r\n\t}\r\n\r\n\tnodeHasBindings = original.nodeHasBindings;\r\n\tgetBindings = original.getBindings;\r\n\r\n\t\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\n\r\nexport class EscKeyExtension {\r\n static Init() {\r\n const ESC_KEY_CODE = 27;\r\n\r\n ko.bindingHandlers.escKey = {\r\n init: (element, valueAccessor, allBindings, viewModel) => {\r\n const callback = valueAccessor();\r\n $(element).keyup(event => {\r\n const keyCode = event.which || event.keyCode;\r\n if (keyCode === ESC_KEY_CODE) {\r\n callback.call(viewModel);\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n };\r\n }\r\n}","/// <reference path=\"../../libs/typings/jqueryUi.d.ts\"/>\r\n/// <reference path=\"../../libs/typings/cropper.d.ts\"/>\r\n\r\nimport * as ko from \"knockout\";\r\nimport \"knockoutSelect2\";\r\nimport * as $ from \"jquery\";\r\nimport \"jqueryUi\";\r\n\r\n\r\nimport 'jqueryUniform';\r\n\r\nimport 'knockout-sortable';\r\n\r\n\r\nimport { DragulaExtention } from 'Core/KnockoutExtentions/DragulaExtention';\r\nimport { DropzoneExtenion } from 'Core/KnockoutExtentions/DropzoneExtention';\r\nimport { FullCalendarExtention } from 'Core/KnockoutExtentions/FullCalendarExtention';\r\nimport { InputMaskExtention, MaskFormater } from 'Core/KnockoutExtentions/InputMaskExtention';\r\nimport { IntlTelInputExtention } from 'Core/KnockoutExtentions/IntlTelInputExtention';\r\nimport { DebugExtention } from 'Core/KnockoutExtentions/DebugExtention';\r\nimport { ViewerJsExtention } from 'Core/KnockoutExtentions/ViewerJsExtention';\r\nimport { DirtyFlagExtention } from 'Core/KnockoutExtentions/DirtyFlagExtention';\r\nimport { ErrorHandlingBindingProvider } from 'Core/KnockoutExtentions/ErrorHandlingBindingProvider';\r\nimport { RenderTemplateXExtention } from 'Core/KnockoutExtentions/RenderTemplateXExtention';\r\nimport { SubformResizeExtention } from 'Core/KnockoutExtentions/SubformResizeExtention';\r\nimport { PreventBubbleExtention } from 'Core/KnockoutExtentions/PreventBubbleExtention';\r\nimport { NiceScrollExtention } from 'Core/KnockoutExtentions/NiceScrollExtention';\r\nimport { SlimScrollExtention } from 'Core/KnockoutExtentions/SlimScrollExtention';\r\nimport { ResizableExtention } from 'Core/KnockoutExtentions/ResizableExtention';\r\nimport { CustomScrollbarExtention } from 'Core/KnockoutExtentions/CustomScrollbarExtention';\r\nimport { ToggleExtention } from 'Core/KnockoutExtentions/ToggleExtention';\r\nimport { DatetimepickerExtention } from 'Core/KnockoutExtentions/DatetimepickerExtention';\r\nimport { EnterKeyExtention } from 'Core/KnockoutExtentions/EnterKeyExtention';\r\nimport { EscKeyExtension } from \"Core/KnockoutExtentions/EscKeyExtension\";\r\nimport { KnobExtention } from 'Core/KnockoutExtentions/KnobExtention';\r\nimport { CropperExtention } from 'Core/KnockoutExtentions/CropperExtention';\r\nimport { EnableAttrExtention } from 'Core/KnockoutExtentions/EnableAttrExtention';\r\nimport { AnimateExtention } from 'Core/KnockoutExtentions/AnimateExtention';\r\nimport { TinymceExtention } from 'Core/KnockoutExtentions/TinymceExtention';\r\nimport { MiniColorsExtention } from 'Core/KnockoutExtentions/MiniColorsExtention';\r\nimport { OptionExtention } from 'Core/KnockoutExtentions/OptionExtention';\r\nimport { TooltipExtention } from 'Core/KnockoutExtentions/TooltipExtention';\r\nimport { EllipsisTooltipExtention } from 'Core/KnockoutExtentions/EllipsisTooltipExtention';\r\nimport { BootstrapSwitchExtention } from 'Core/KnockoutExtentions/BootstrapSwitchExtention';\r\nimport { BootstrapPopoverExtention } from 'Core/KnockoutExtentions/BootstrapPopoverExtention';\r\nimport { ScrollFixerExtention } from 'Core/KnockoutExtentions/ScrollFixerExtention';\r\nimport { CustomTableExtention } from 'Core/KnockoutExtentions/CustomTableExtention';\r\nimport { UniformExtention } from 'Core/KnockoutExtentions/UniformExtention';\r\nimport { SmoothHeightExtention } from 'Core/KnockoutExtentions/SmoothHeightExtention';\r\nimport { KnockoutValidationExtensions } from \"Core/KnockoutExtentions/KnockoutValidationExtensions\";\r\nimport { ScreenHeightExtention } from 'Core/KnockoutExtentions/ScreenHeightExtention';\r\nimport { TabNavigationExtention } from 'Core/KnockoutExtentions/TabNavigationExtention';\r\nimport { AllowBindingsExtention } from 'Core/KnockoutExtentions/AllowBindingsExtention';\r\nimport { Canvas } from 'Core/KnockoutExtentions/Canvas';\r\nimport { BlockElementExtention } from 'Core/KnockoutExtentions/BlockElement';\r\nimport { AutoCompleteExtention } from 'Core/KnockoutExtentions/AutoComplete';\r\nimport { SearchExtention } from 'Core/KnockoutExtentions/SearchExtention';\r\nimport { TextAreAutogrowExtention } from 'Core/KnockoutExtentions/TextAreAutogrowExtention';\r\nimport { DropdownExtention } from 'Core/KnockoutExtentions/DropdownExtention';\r\nimport { AlignDropdown } from 'Core/KnockoutExtentions/AlignDropdown';\r\nimport { BootstrapMultiselect } from 'Core/KnockoutExtentions/BootstrapMultiselect';\r\nimport { BootstrapCollapseExtention } from 'Core/KnockoutExtentions/BootstrapCollapseExtention';\r\nimport { ScrollSynchronizingExtention } from 'Core/KnockoutExtentions/ScrollSynchronizingExtention';\r\nimport { ForEachPropExtention } from 'Core/KnockoutExtentions/ForEachPropExtention';\r\nimport { GroupedCheckboxExtention } from 'Core/KnockoutExtentions/GroupedCheckboxExtention'\r\nimport { MultilineEllipsis } from 'Core/KnockoutExtentions/MultilineEllipsis';\r\nimport { AddCssForAllExtention } from 'Core/KnockoutExtentions/AddCssForAllExtention'\r\nimport { IframeContentExtention } from 'Core/KnockoutExtentions/IframeContentExtention'\r\nimport { HasScrollBarExtention } from 'Core/KnockoutExtentions/HasScrollBarExtention';\r\nimport { FreezeTableExtention } from 'Core/KnockoutExtentions/FreezeTableExtention';\r\nimport { DecimalInputMaskExtension } from \"Core/KnockoutExtentions/InputMask/DecimalInputMask\";\r\nimport { IntegerInputMaskExtension } from \"Core/KnockoutExtentions/InputMask/IntegerInputMask\";\r\nimport { TippyExtention } from \"Core/KnockoutExtentions/TippyExtention\";\r\nimport { ContextMenu } from 'Core/KnockoutExtentions/ContextMenu';\r\nimport { PrismExtension } from \"../../AdminDashboard/KnockoutExtensions/PrismExtension\";\r\nimport { JsBarcodeExtension } from \"Core/KnockoutExtentions/JsBarcodeExtension\";\r\n\r\n\r\nexport class KnockoutExtenions {\r\n\tstatic Init() {\r\n\t\tDragulaExtention.Init();\r\n\t\tDropzoneExtenion.Init();\r\n\t\tFullCalendarExtention.Init();\r\n\t\tInputMaskExtention.Init();\r\n\t\tIntegerInputMaskExtension.Init();\r\n\t\tDecimalInputMaskExtension.Init();\r\n\t\tIntlTelInputExtention.Init();\r\n\t\tDebugExtention.Init();\r\n\t\tViewerJsExtention.Init();\r\n\t\tDirtyFlagExtention.Init();\r\n\t\tRenderTemplateXExtention.Init();\r\n\t\tSubformResizeExtention.Init();\r\n\t\tPreventBubbleExtention.Init();\r\n\t\tNiceScrollExtention.Init();\r\n\t\tSlimScrollExtention.Init();\r\n\t\tResizableExtention.Init();\r\n\t\tCustomScrollbarExtention.Init();\r\n\t\tToggleExtention.Init();\r\n\t\tDatetimepickerExtention.Init();\r\n\t\tEnterKeyExtention.Init();\r\n\t\tEscKeyExtension.Init();\r\n\t\tKnobExtention.Init();\r\n\t\tCropperExtention.Init();\r\n\t\tEnableAttrExtention.Init();\r\n\t\tAnimateExtention.Init();\r\n\t\tTinymceExtention.Init();\r\n\t\tMiniColorsExtention.Init();\r\n\t\tOptionExtention.Init();\r\n\t\tTooltipExtention.Init();\r\n\t\tEllipsisTooltipExtention.Init();\r\n\t\tBootstrapSwitchExtention.Init();\r\n\t\tBootstrapPopoverExtention.Init();\r\n\t\tScrollFixerExtention.Init();\r\n\t\tCustomTableExtention.Init();\r\n\t\tUniformExtention.Init();\r\n\t\tSmoothHeightExtention.Init();\r\n\t\tKnockoutValidationExtensions.Init();\r\n\t\tScreenHeightExtention.Init();\r\n\t\tTabNavigationExtention.Init();\r\n\t\tAllowBindingsExtention.Init();\r\n\t\tCanvas.Init();\r\n\t\tBlockElementExtention.Init();\r\n\t\tAutoCompleteExtention.Init();\r\n\t\tSearchExtention.Init();\r\n\t\tTextAreAutogrowExtention.Init();\r\n\t\tDropdownExtention.Init();\r\n\t\tAlignDropdown.Init();\r\n\t\tBootstrapMultiselect.Init();\r\n\t\tBootstrapCollapseExtention.Init();\r\n\t\tScrollSynchronizingExtention.Init();\r\n\t\tForEachPropExtention.Init();\r\n\t\tGroupedCheckboxExtention.Init();\r\n\t\tMultilineEllipsis.Init();\r\n\t\tAddCssForAllExtention.Init();\r\n\t\tIframeContentExtention.Init();\r\n\t\tHasScrollBarExtention.Init();\r\n\t\tFreezeTableExtention.Init();\r\n\t\tTippyExtention.Init();\r\n\t\tContextMenu.Init();\r\n\t\tPrismExtension.Init();\r\n\t\tJsBarcodeExtension.Init();\r\n\r\n\t\tko.bindingProvider.instance = new ErrorHandlingBindingProvider();\r\n\r\n\t\t//JQuery draggable\r\n\t\tko.bindingHandlers.draggable = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\t$(element).draggable(options);\r\n\t\t\t\t$(element).disableSelection();\r\n\t\t\t\tif (options.topPosition) {\r\n\t\t\t\t\t$(element).css('top', options.topPosition());\r\n\t\t\t\t}\r\n\t\t\t\tif (options.leftPosition) {\r\n\t\t\t\t\t$(element).css('left', options.leftPosition());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tupdate(element, valueAccessor) {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\tif (options.enabled) {\r\n\t\t\t\t\t$(element).draggable(options.enabled() ? \"enable\" : \"disable\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//JQuery droppable\r\n\t\tko.bindingHandlers.droppable = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\t$(element).droppable(options);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nexport class ForEachPropExtention{\r\n static Init() {\r\n ko.bindingHandlers.foreachprop = {\r\n transformObject: function (obj) {\r\n var properties = [];\r\n ko.utils.objectForEach(obj, function (key, value) {\r\n properties.push({ key: key, value: value });\r\n });\r\n return properties;\r\n },\r\n init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var properties = ko.pureComputed(function () {\r\n var obj = ko.utils.unwrapObservable(valueAccessor());\r\n return ko.bindingHandlers.foreachprop.transformObject(obj);\r\n });\r\n ko.applyBindingsToNode(element, { foreach: properties }, bindingContext);\r\n return { controlsDescendantBindings: true };\r\n }\r\n };\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport 'freeze-table-private';\r\n\r\nexport class FreezeTableExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.freezeTable = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel) => {\r\n\t\t\t\t($(element) as any).freezeTable(ko.unwrap(valueAccessor()));\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport 'jquery';\r\nimport 'fullcalendar';\r\nimport 'fullcalendar-scheduler';\r\nimport 'libs/FullCalendar/locale-all';\r\n\r\nexport class FullCalendarExtention {\r\n\r\n static Init() {\r\n ko.bindingHandlers.fullCalendar = {\r\n init: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n let ctrlIsPressed = false;\r\n const $element = $(element);\r\n const options = valueAccessor();\r\n\r\n function setEventsCopyable(isCopyable) {\r\n ctrlIsPressed = !ctrlIsPressed;\r\n $(\".fc-appointment\").draggable().draggable(\"option\", \"disabled\", !isCopyable);\r\n }\r\n\r\n if (options.options) {\r\n const eventAfterAllRender = function (view) {\r\n $(\".fc-appointment\").each(function() {\r\n const $event = $(this);\r\n const event = $event.data(\"fcSeg\").footprint.eventDef;\r\n $event.data(\"eventObj\", event);\r\n $event.draggable({\r\n disabled: true,\r\n helper: \"clone\",\r\n revert: true,\r\n revertDuration: 0,\r\n zIndex: 9999,\r\n start: (event, ui) => {\r\n $(ui.helper).css({ height: $(this).height(), width: $(this).width(), opacity: 0.7});\r\n },\r\n stop(event, ui) {\r\n if (ctrlIsPressed) {\r\n setEventsCopyable(true);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n $(document).on('keydown.fullCalendar', function(e) {\r\n if (e.ctrlKey && !ctrlIsPressed) {\r\n setEventsCopyable(true);\r\n }\r\n });\r\n\r\n $(document).on('keyup.fullCalendar',function(e) {\r\n if (ctrlIsPressed) {\r\n setEventsCopyable(false);\r\n }\r\n });\r\n\r\n if (options.options.eventAfterAllRender) {\r\n options.options.eventAfterAllRender = function (view) {\r\n options.options.eventAfterAllRender(view);\r\n eventAfterAllRender(view);\r\n }\r\n } else {\r\n options.options.eventAfterAllRender = eventAfterAllRender;\r\n }\r\n\r\n $element.fullCalendar(options.options);\r\n $element.on(\"remove\", () => {\r\n $(document).off('keydown.fullCalendar');\r\n $(document).off('keyup.fullCalendar');\r\n })\r\n\r\n if (ko.isObservable(options.groupByResource)) {\r\n options.groupByResource.subscribe(newValue => {\r\n $(element).fullCalendar('option', 'groupByResource', newValue);\r\n $(element).fullCalendar('rerenderEvents');\r\n $(element).fullCalendar('getCalendar') && $(element).fullCalendar('getCalendar').updateViewSize(true);\r\n // ($(element) as any).fullCalendar('updateSize');\r\n });\r\n }\r\n\r\n if (ko.isObservable(options.resources)) {\r\n options.resources.subscribe(newResources => {\r\n $(element).fullCalendar('getCalendar') && $(element).fullCalendar('getCalendar').updateViewSize(true);\r\n // $(element).fullCalendar('refetchResources');\r\n // $(element).fullCalendar('option', 'resources', newResources);\r\n // $(element).fullCalendar('rerenderEvents');\r\n });\r\n }\r\n }\r\n },\r\n\r\n update: (element, valueAccessor) => {\r\n const $element = $(element);\r\n const options = valueAccessor();\r\n\r\n const resources = options.resources && options.resources() || [];\r\n const specialDays = options.specialDays && options.specialDays() || [];\r\n const freeDays = resources.filter(resource => resource.freeDay).map(resource => {\r\n return {\r\n resourceId: resource.id,\r\n rendering: 'background',\r\n backgroundColor: 'red',\r\n start: resource.start,\r\n end: resource.end\r\n }\r\n });\r\n\r\n const events = (options.events && options.events() || []).concat(specialDays).concat(freeDays);\r\n\r\n $element.fullCalendar('removeEvents', null);\r\n $element.fullCalendar('addEventSource', events);\r\n $element.fullCalendar('refetchResources');\r\n $element.fullCalendar('option', 'businessHours', options.businessHours());\r\n $element.fullCalendar('addEventSource', options.specialDays());\r\n\r\n }\r\n }\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport * as $ from 'jquery';\r\n\r\nexport class GroupedCheckboxExtention {\r\n static Init() {\r\n ko.bindingHandlers.groupedCheckbox = {\r\n init: (element) => {\r\n const $group = $(element);\r\n\r\n const updateGroupState = ($nestedCheckbox: JQuery) => {\r\n const groupId = $nestedCheckbox.attr('data-option');\r\n const $group = $('#' + groupId);\r\n const $nestedCheckboxes = $('[data-option=\"' + groupId + '\"]');\r\n\r\n const allCheckboxesChecked = $nestedCheckboxes.filter(':checked').length === $nestedCheckboxes.length;\r\n $group.prop('checked', allCheckboxesChecked);\r\n\r\n const anyCheckboxChecked = $nestedCheckboxes.filter(':checked:first').length > 0;\r\n $group.prop({indeterminate: !allCheckboxesChecked && anyCheckboxChecked});\r\n };\r\n\r\n const updateOtherCheckboxes = ($nestedCheckbox: JQuery) => {\r\n const checkboxId = $nestedCheckbox.attr('checkbox-id');\r\n const checkboxType = $nestedCheckbox.attr('data-type');\r\n const checkboxChecked = $nestedCheckbox.is(':checked');\r\n\r\n const $otherCheckboxes = $('[checkbox-id=\"' + checkboxId + '\"][data-type=\"'+checkboxType+'\"]');\r\n $otherCheckboxes.prop('checked', checkboxChecked);\r\n\r\n $otherCheckboxes.each((index, otherCheckbox) => updateGroupState($(otherCheckbox)));\r\n };\r\n\r\n $(() => {\r\n const $nestedCheckboxes = $('[data-option=\"' + $group.attr('id') + '\"]');\r\n const $nestedCheckboxesChecked = $nestedCheckboxes.filter(':checked');\r\n\r\n if ($nestedCheckboxesChecked.length && ($nestedCheckboxesChecked.length < $nestedCheckboxes.length)) {\r\n $group.prop({indeterminate: true});\r\n }\r\n\r\n $group.change(() => {\r\n const groupChecked = $group.is(':checked');\r\n $nestedCheckboxes.prop('checked', groupChecked);\r\n $nestedCheckboxes.each((index, nestedCheckbox) => updateOtherCheckboxes($(nestedCheckbox)));\r\n });\r\n\r\n $nestedCheckboxes.change(event => {\r\n const $checkbox = $(event.target);\r\n updateGroupState($checkbox);\r\n updateOtherCheckboxes($checkbox);\r\n });\r\n });\r\n }\r\n }\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport * as $ from 'jquery';\r\n\r\ninterface IHasScrollBarExtention {\r\n addClass: string,\r\n position: string,\r\n isReady: boolean,\r\n checkElement: string\r\n}\r\n\r\nexport class HasScrollBarExtention {\r\n static Init() {\r\n ko.bindingHandlers.hasScrollBar = {\r\n update: (element: HTMLElement, valueAccessor) => {\r\n const options: IHasScrollBarExtention = valueAccessor();\r\n const $element = $(element);\r\n const isReady = ko.unwrap(options.isReady);\r\n const $checkElement = $element.find(options.checkElement);\r\n if (isReady) {\r\n if (options.position === 'vertical') {\r\n if ($checkElement.get(0).scrollHeight > $checkElement.height()) {\r\n $element.addClass(options.addClass);\r\n }\r\n } else if (options.position === 'horizontal') {\r\n if ($checkElement.get(0).scrollWidth > $checkElement.width()) {\r\n $element.addClass(options.addClass);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as $ from 'jquery';\r\n\r\nexport class IframeContentExtention {\r\n static Init() {\r\n ko.bindingHandlers.iframeContent = {\r\n update: function (element, valueAccessor) {\r\n let value = ko.unwrap(valueAccessor());\r\n\r\n setTimeout(function () {\r\n const doc = ($(element)[0] as any).contentWindow.document;\r\n const $body = $('body', doc);\r\n $body.html(value);\r\n }, 0);\r\n }\r\n };\r\n }\r\n}","import * as ko from 'knockout';\r\nimport 'jqueryInputmask';\r\nimport 'inputmaskExtensions';\r\nimport 'inputmaskRegEx';\r\nimport 'inputmaskNumeric';\r\nimport 'jqueryInputmask';\r\nimport * as moment from 'moment';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {AdditionalAliases} from 'Core/KnockoutExtentions/InputMask/AdditionalAliases';\r\n\r\nInputmask.extendAliases(AdditionalAliases);\r\n\r\nexport class MaskFormater {\r\n\tpublic static Format(el: HTMLElement, fieldModel: AttachedFieldModel, value: any, fieldType?: string, fieldNumExceptNegative?: boolean, fieldSize?: number) {\r\n\t\tconst defaultValue = value;\r\n\r\n\t\tif (value == null) {\r\n\t\t\tvalue = '';\r\n\t\t}\r\n\r\n\t\tlet formatName;\r\n\t\tlet size = 2;\r\n\t\tif(fieldSize){\r\n\t\t\tsize = fieldSize;\r\n\t\t}\r\n\t\tif (defaultValue) {\r\n\t\t\t$(el).val(value);\r\n\t\t}\r\n\r\n\t\tif (fieldModel) {\r\n\t\t\tformatName = fieldModel.FormatName;\r\n\t\t\tif (fieldModel.FieldTypeName === FIELD_TYPES.Decimal && fieldModel.FormatName === 'None') {\r\n\t\t\t\tformatName = FieldFormat.DECIMAL;\r\n\t\t\t}\r\n\r\n\t\t\tif (fieldModel.FieldTypeName === FIELD_TYPES.Currency) {\r\n\t\t\t\tformatName = FieldFormat.CURRENCY;\r\n\t\t\t}\r\n\t\t\tsize = fieldModel.Size;\r\n\t\t} else if (fieldType) {\r\n\t\t\tformatName = fieldType;\r\n\t\t}\r\n\r\n\t\tconst decimalSeparator = FormatConverter.GetSeparator();\r\n\t\tconst groupSeparator = FormatConverter.GetGroupSeparator();\r\n\r\n\t\tconst decimalInputMask = {\r\n\t\t\tradixPoint: decimalSeparator,\r\n\t\t\tdigits: size,\r\n\t\t\tintegerDigits: 29 - size,\r\n\t\t\tautoGroup: true,\r\n\t\t\tgroupSeparator,\r\n\t\t\tautoUnmask: true,\r\n\t\t\trightAlign: false\r\n\t\t};\r\n\r\n\t\t(moment as any).createFromInputFallback = config => config._d = new Date(config._i);\r\n\r\n\t\tif (FieldFormat.IsUppercase(formatName)) {\r\n\t\t\tvalue = value.toUpperCase();\r\n\t\t\t$(el).css('text-transform', 'uppercase');\r\n\t\t} else if (FieldFormat.IsLowercase(formatName)) {\r\n\t\t\tvalue = value.toLowerCase();\r\n\t\t\t$(el).css('text-transform', 'lowercase');\r\n\t\t} else if (FieldFormat.IsStartswithcapital(formatName)) {\r\n\t\t\tvalue = value.charAt(0).toUpperCase() + value.substr(1);\r\n\t\t}\r\n\r\n\t\telse if (FieldFormat.IsShortDate(formatName)) {\r\n\t\t\tlet time = value ? moment(value) : moment();\r\n\t\t\tvalue = time.format('YYYY-MM-DD');\r\n\t\t} else if (FieldFormat.IsLongDate(formatName)) {\r\n\t\t\tlet time = value ? moment(value) : moment();\r\n\t\t\tvalue = time.format('dddd, YYYY-MM-DD HH:mm');\r\n\t\t} else if (FieldFormat.IsLongTime(formatName)) {\r\n\t\t\tlet time = value ? moment(value) : moment();\r\n\t\t\tvalue = time.format('HH:mm:ss');\r\n\t\t} else if (FieldFormat.IsTime(formatName)) {\r\n\t\t\tlet time = value ? moment(value) : moment();\r\n\t\t\tvalue = time.format('HH:mm');\r\n\t\t} else if (FieldFormat.IsDateTime(formatName)) {\r\n\t\t\tlet time = value ? moment(value) : moment();\r\n\t\t\tvalue = time.format('YYYY-MM-DD HH:mm');\r\n\t\t}\r\n\r\n\t\telse if (FieldFormat.IsCurrency(formatName)) {\r\n\t\t\tif (el.dataset.withNumberGroupSeparators === 'true') {\r\n\t\t\t\t$(el).inputmask('patchedDecimal', decimalInputMask);\r\n\t\t\t} else {\r\n\t\t\t\t$(el).inputmask('Regex', {\r\n\t\t\t\t\tregex: '-?[0-9]{0,' + (29 - size) + '}[' + decimalSeparator + ']{1}[0-9]{0,' + size + '}'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if (FieldFormat.IsPercentage(formatName)) {\r\n\t\t\tif (el.dataset.withNumberGroupSeparators === 'true') {\r\n\t\t\t\t$(el).inputmask('patchedDecimal', { ...decimalInputMask, digits: Math.max(size - 2, 0) });\r\n\t\t\t} else if (size > 2) {\r\n\t\t\t\t$(el).inputmask('Regex', {regex: '-?[0-9]{0,' + (29 - size + 2) + '}[' + decimalSeparator + ']{1}[0-9]{0,' + (size - 2) + '}'});\r\n\t\t\t} else {\r\n\t\t\t\t$(el).inputmask('Regex', {regex: '-?[0-9]{0,' + 29 + '}$'});\r\n\t\t\t}\r\n\t\t} else if (FieldFormat.IsDecimal(formatName)) {\r\n\t\t\tif (el.dataset.withNumberGroupSeparators === 'true') {\r\n\t\t\t\t$(el).inputmask('patchedDecimal', decimalInputMask);\r\n\t\t\t} else {\r\n\t\t\t\t$(el).inputmask('Regex', {\r\n\t\t\t\t\tregex: '-?[0-9]{0,' + (29 - size) + '}[' + decimalSeparator + ']{1}[0-9]{0,' + size + '}'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if ((fieldModel && fieldModel.FieldTypeName === FIELD_TYPES.Integer) || FieldFormat.IsInteger(formatName)) {\r\n\t\t\ttry {\r\n if (el.dataset.withNumberGroupSeparators === 'true') {\r\n $(el).inputmask('integer', {\r\n integerDigits: 10,\r\n autoGroup: true,\r\n groupSeparator,\r\n autoUnmask: true,\r\n rightAlign: false\r\n });\r\n } else if (fieldNumExceptNegative) {\r\n $(el).inputmask('Regex', {regex: '^[0-9]+$'});\r\n } else {\r\n $(el).inputmask('Regex', {regex: '^-?[0-9]+$'});\r\n }\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\telse if (FieldFormat.IsIPAddress(formatName)) {\r\n\t\t\tMaskFormater.IpAddress(el);\r\n\t\t} else if (FieldFormat.IsPhonenumber(formatName)) {\r\n\t\t\t$(el).inputmask('+9{1,10}(9{1,10}) 9-999 99 999', {numericInput: false});\r\n\t\t} else if (FieldFormat.IsMail(formatName)) {\r\n\t\t\t$(el).inputmask({\r\n mask: '*{1,64}@[*{1,254}.*{2,254}[.*{1,2}]]*{4,254}',\r\n greedy: false,\r\n onBeforePaste: (pastedValue, option) => {\r\n pastedValue = pastedValue.toLowerCase();\r\n\r\n return pastedValue.replace('mailto:', '');\r\n },\r\n definitions: {\r\n '*': {\r\n validator: \"[0-9A-Za-z!#$\\.%&'*+/=?^_`{|}~\\-]\",\r\n cardinality: 1,\r\n casing: \"lower\"\r\n }\r\n }\r\n });\r\n\t\t} else if (FieldFormat.IsDutchPostalCode(formatName)) {\r\n\t\t\t$(el).inputmask({\r\n\t\t\t\tmask: '9{4} a{2}',\r\n\t\t\t\tgreedy: false,\r\n\t\t\t\tdefinitions: {\r\n\t\t\t\t\t'9': {\r\n\t\t\t\t\t\tvalidator: \"[0-9]\",\r\n\t\t\t\t\t\tcardinality: 1,\r\n\t\t\t\t\t\tcasing: \"lower\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'a': {\r\n\t\t\t\t\t\tvalidator: \"[A-Za-z]\",\r\n\t\t\t\t\t\tcardinality: 1,\r\n\t\t\t\t\t\tcasing: \"upper\"\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\tprivate static IpAddress(el: HTMLElement) {\r\n\t\t$(el).inputmask({\r\n\t\t\talias: 'ip',\r\n\t\t\t'placeholder': '_'\r\n\t\t});\r\n\r\n\t\tfunction validateIPAddress(inputID) {\r\n\t\t\t$(inputID).on('focusout', function () {\r\n\t\t\t\tconst $this = $(this);\r\n\t\t\t\tconst entered_ip = $this.val().toString();\r\n\r\n\t\t\t\tif (entered_ip) {\r\n\t\t\t\t\tconst ip_fields_array = entered_ip.split('.');\r\n\t\t\t\t\tconst formatted_ip = entered_ip.replace(/_/g, '');\r\n\t\t\t\t\tconst ip_error = document.createElement('span');\r\n\r\n\t\t\t\t\tip_error.setAttribute('id', 'ip_error');\r\n\r\n\t\t\t\t\tconst error_message = document.createTextNode(formatted_ip + ' is an incorrect IPv4 address');\r\n\r\n\t\t\t\t\tip_error.appendChild(error_message);\r\n\r\n\t\t\t\t\tconst ip_correct = document.createElement('span');\r\n\r\n\t\t\t\t\tip_correct.setAttribute('id', 'ip_success');\r\n\r\n\t\t\t\t\tconst success_message = document.createTextNode(formatted_ip + ' is a correct IPv4 address');\r\n\r\n\t\t\t\t\tip_correct.appendChild(success_message);\r\n\r\n\t\t\t\t\tconst array_length = ip_fields_array.length;\r\n\t\t\t\t\tconst regex = /^0([0-9])+/;\r\n\r\n\t\t\t\t\tfor (let i = 0; i < array_length; i++) {\r\n\t\t\t\t\t\tconst ip_field = ip_fields_array[i];\r\n\t\t\t\t\t\tconst regex_result = regex.test(ip_field.replace(/_/g, ''));\r\n\r\n\t\t\t\t\t\tif (ip_field == '___' || regex_result) {\r\n\t\t\t\t\t\t\t$this\r\n\t\t\t\t\t\t\t\t.siblings('#ip_success')\r\n\t\t\t\t\t\t\t\t.remove();\r\n\r\n\t\t\t\t\t\t\tif (!$this.siblings('#ip_error').length) {\r\n\t\t\t\t\t\t\t\t$this\r\n\t\t\t\t\t\t\t\t\t.parent()\r\n\t\t\t\t\t\t\t\t\t.append(ip_error);\r\n\r\n\t\t\t\t\t\t\t\t$this\r\n\t\t\t\t\t\t\t\t\t.removeClass('has-success')\r\n\t\t\t\t\t\t\t\t\t.addClass('has-error');\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t} else if (!$this.siblings('#ip_success').length) {\r\n\t\t\t\t\t\t\t$this\r\n\t\t\t\t\t\t\t\t.parent()\r\n\t\t\t\t\t\t\t\t.append(ip_correct);\r\n\r\n\t\t\t\t\t\t\t$this\r\n\t\t\t\t\t\t\t\t.removeClass('has-error')\r\n\t\t\t\t\t\t\t\t.addClass('has-success');\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$(inputID).on('focus', function () {\r\n\t\t\t\t$(this)\r\n\t\t\t\t\t.siblings('#ip_success, #ip_error')\r\n\t\t\t\t\t.remove();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvalidateIPAddress(el);\r\n\t}\r\n}\r\n\r\nexport class InputMaskExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.inputMask = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tconst options = valueAccessor();\r\n\t\t\t\tif (options.fieldModel) {\r\n\t\t\t\t const fieldModel = options.fieldModel as AttachedFieldModel;\r\n\t\t\t\t MaskFormater.Format(element, fieldModel, options.value());\r\n\t\t\t\t} else if (options.numExceptNegative) {\r\n\t\t\t\t\tMaskFormater.Format(element, null, options.value(), options.type, options.numExceptNegative);\r\n } else if(options.decimalSize){\r\n\t\t\t\t\tconst value = options.value instanceof Function ? options.value() : options.value;\r\n\t\t\t\t\tMaskFormater.Format(element, null, value, options.type, null, options.decimalSize);\r\n\t\t\t\t} else if (options.type) {\r\n\t\t\t\t\tMaskFormater.Format(element, null, options.value(), options.type);\r\n }\r\n\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","function isZero(stringifiedNumber: string) {\r\n const [integerPart, decimalPart] = stringifiedNumber.replace('-', '').split('.');\r\n\r\n return [...integerPart].every(digit => digit === '0') && (!decimalPart || [...decimalPart].every(digit => digit === '0'));\r\n}\r\n\r\n// Based on onBeforeWrite function from inputmask.numeric.extensions.js\r\n// Taken off additional conversions from string to number and from number to string which don't work well on large numbers\r\nexport const AdditionalAliases = {\r\n 'patchedDecimal': {\r\n alias: 'decimal',\r\n onBeforeWrite: function (e, buffer, caretPos, opts) {\r\n var rslt;\r\n if (e && (e.type === \"blur\" || e.type === \"checkval\" || e.type === \"keydown\")) {\r\n var maskedValue = opts.numericInput ? buffer.slice().reverse().join(\"\") : buffer.join(\"\"),\r\n processValue = maskedValue.replace(opts.prefix, \"\");\r\n processValue = processValue.replace(opts.suffix, \"\");\r\n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\r\n if (opts.radixPoint === \",\") processValue = processValue.replace(opts.radixPoint, \".\");\r\n //handle negation symbol\r\n var isNegative = processValue.match(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"));\r\n isNegative = isNegative !== null && isNegative.length === 1;\r\n processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\");\r\n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\r\n //strip placeholder at the end\r\n if (isNaN(opts.placeholder)) {\r\n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), \"g\"), \"\");\r\n }\r\n processValue = processValue === opts.negationSymbol.front ? processValue + \"0\" : processValue;\r\n\r\n if (processValue !== \"\" && isFinite(processValue)) {\r\n var absoluteProcessValue = processValue;\r\n var signedProcessValue = isNegative ? `-${processValue}` : processValue;\r\n if (opts.min !== null && isFinite(opts.min) && parseFloat(signedProcessValue) < parseFloat(opts.min)) {\r\n absoluteProcessValue = opts.min.replace('-', '');\r\n isNegative = opts.min < 0;\r\n maskedValue = undefined;\r\n } else if (opts.max !== null && isFinite(opts.max) && parseFloat(signedProcessValue) > parseFloat(opts.max)) {\r\n absoluteProcessValue = opts.max.replace('-', '');\r\n isNegative = opts.max < 0;\r\n maskedValue = undefined;\r\n }\r\n\r\n processValue = absoluteProcessValue.replace(\".\", opts.radixPoint).split('');\r\n if (isFinite(opts.digits)) {\r\n var radixPosition = $.inArray(opts.radixPoint, processValue);\r\n var rpb = $.inArray(opts.radixPoint, maskedValue);\r\n if (radixPosition === -1) {\r\n processValue.push(opts.radixPoint);\r\n radixPosition = processValue.length - 1;\r\n }\r\n for (var i = 1; i <= opts.digits; i++) {\r\n if (!opts.digitsOptional && (processValue[radixPosition + i] === undefined || processValue[radixPosition + i] === opts.placeholder.charAt(0))) {\r\n processValue[radixPosition + i] = \"0\";\r\n } else if (rpb !== -1 && maskedValue[rpb + i] !== undefined) {\r\n processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i];\r\n }\r\n }\r\n\r\n if (processValue[processValue.length - 1] === opts.radixPoint) {\r\n delete processValue[processValue.length - 1];\r\n }\r\n }\r\n\r\n if (isNegative && (!isZero(absoluteProcessValue) || e.type !== \"blur\")) {\r\n processValue.unshift(opts.negationSymbol.front);\r\n processValue.push(opts.negationSymbol.back);\r\n }\r\n processValue = (opts.prefix + processValue.join(\"\")).split(\"\");\r\n if (opts.numericInput) processValue = processValue.reverse();\r\n rslt = opts.postFormat(processValue, opts.numericInput ? caretPos : caretPos - 1, opts);\r\n if (rslt.buffer) rslt.refreshFromBuffer = rslt.buffer.join(\"\") !== buffer.join(\"\");\r\n return rslt;\r\n }\r\n }\r\n if (opts.autoGroup) {\r\n rslt = opts.postFormat(buffer, opts.numericInput ? caretPos : caretPos - 1, opts);\r\n rslt.caret = caretPos <= opts.prefix.length ? rslt.pos : rslt.pos + 1;\r\n return rslt;\r\n }\r\n }\r\n }\r\n};\r\n","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\n\r\nimport 'jqueryInputmask';\r\nimport 'inputmaskExtensions';\r\nimport 'inputmaskRegEx';\r\n\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\ninterface IDecimalInputMaskOptions {\r\n CanBeNegative: boolean;\r\n CanBeZero: boolean;\r\n Size: number;\r\n}\r\n\r\nexport class DecimalInputMaskExtension {\r\n static Init() {\r\n ko.bindingHandlers.decimalInputMask = {\r\n init: (element, valueAccessor: KnockoutObservable<IDecimalInputMaskOptions>) => {\r\n const options = this.ExtendOptions(valueAccessor());\r\n\r\n const decimalSeparator = this.GetSeparator();\r\n if (options.CanBeNegative && options.Size !== 0){\r\n $(element).inputmask('Regex', {regex: '-?[0-9]{0,' + (29 - options.Size) + '}[' + decimalSeparator + ']{1}[0-9]{0,' + options.Size + '}'});\r\n } else if (options.CanBeNegative && options.Size === 0) {\r\n $(element).inputmask('Regex', {regex: '-?[0-9]{0,' + (29 - options.Size) + '}'});\r\n } else if (!options.CanBeNegative && options.Size !== 0) {\r\n $(element).inputmask('Regex', {regex: '[0-9]{0,' + (29 - options.Size) + '}[' + decimalSeparator + ']{1}[0-9]{0,' + options.Size + '}'});\r\n } else {\r\n $(element).inputmask('Regex', {regex: '[0-9]{0,' + (29 - options.Size) + '}'});\r\n }\r\n }\r\n }\r\n }\r\n\r\n private static ExtendOptions(options: IDecimalInputMaskOptions): IDecimalInputMaskOptions {\r\n return {\r\n CanBeNegative: options.CanBeNegative !== undefined ? options.CanBeNegative : true,\r\n CanBeZero: options.CanBeZero !== undefined ? options.CanBeZero : true,\r\n Size: options.Size\r\n };\r\n }\r\n\r\n private static GetSeparator(): string {\r\n const culture = FormatConverter.GetLocale();\r\n const n = 1.1;\r\n return n.toLocaleString(culture).substring(1, 2);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\n\r\nimport 'jqueryInputmask';\r\nimport 'inputmaskNumeric';\r\n\r\nexport class IntegerInputMaskExtension {\r\n static Init() {\r\n ko.bindingHandlers.integerInputMask = {\r\n init: (element, valueAccessor: KnockoutObservable<object>) => {\r\n $(element).inputmask('integer', valueAccessor());\r\n }\r\n }\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport 'intl-tel-input';\r\nimport 'intl-tel-input-utils';\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nexport class IntlTelInputExtention {\r\n static Init() {\r\n ko.bindingHandlers.intlTelInput = {\r\n init: (element, valueAccessor) => {\r\n const params = valueAccessor();\r\n const options = params.options;\r\n const isModal: boolean = !!options.isModal;\r\n const isDropdownContainer: boolean = !!options.dropdownContainer;\r\n const screen = options.screen;\r\n\r\n const iti = window.intlTelInput(element, options);\r\n const country = iti.getSelectedCountryData();\r\n\r\n if (country) {\r\n if (params.listener) {\r\n params.listener(iti.getSelectedCountryData(), false);\r\n }\r\n }\r\n\r\n $(element).on('countrychange', () => {\r\n $(element).val('');\r\n\r\n params.listener(iti.getSelectedCountryData(), true);\r\n });\r\n\r\n if (isModal && isDropdownContainer){\r\n $(iti.dropdown).css('zIndex', ZIndexManager.Instance.NextValue);\r\n\r\n $(screen._modal._wrapper).parents('.jBox-content').on('scroll', () => this.OnScroll(iti));\r\n }\r\n }\r\n }\r\n }\r\n\r\n static OnScroll(iti) {\r\n iti._2(); //in the library this is key: \"_closeDropdown\";\r\n //here you can take the developer file: https://cdnjs.com/libraries/intl-tel-input/14.0.6\r\n }\r\n\r\n static IsCountryValid(country: string): boolean {\r\n const allCountries = window.intlTelInputGlobals.getCountryData();\r\n const selectedCountry = _.find(allCountries, item => item.iso2 === country);\r\n return !!selectedCountry;\r\n }\r\n\r\n static GetCodeByIso2(iso2: string): string {\r\n const allCountries = window.intlTelInputGlobals.getCountryData();\r\n const selectedCountry = _.find(allCountries, item => item.iso2 === iso2);\r\n\r\n return selectedCountry ? selectedCountry.dialCode: '31';\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport * as JsBarcode from \"jsbarcode\";\r\n\r\nexport class JsBarcodeExtension {\r\n static Init() {\r\n ko.bindingHandlers.jsBarcode = {\r\n init: (element, valueAccessor) => {\r\n const options = ko.unwrap(valueAccessor()) as IBarcodeConfig;\r\n const otherOptions = options.options;\r\n\r\n JsBarcode(element, options.code, otherOptions);\r\n }\r\n };\r\n }\r\n\r\n static Validate(barcode) {\r\n let isValid = false;\r\n\r\n if (barcode) {\r\n if (/^[\\x00-\\x7F\\xC8-\\xD3]+$/.test(barcode)) {\r\n isValid = true;\r\n }\r\n }\r\n\r\n return isValid;\r\n }\r\n}\r\n\r\nexport interface IBarcodeConfig {\r\n code: string;\r\n options: any;\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport \"knob\";\r\n\r\nexport class KnobExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.knob = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tlet value = Math.round(ko.unwrap(options.value));\r\n\t\t\t\tlet minCount = options.min || 0;\r\n\r\n\t\t\t\t$(element).knob({\r\n\t\t\t\t\tmin: minCount,\r\n\t\t\t\t\tmax: ko.unwrap(options.max),\r\n\t\t\t\t\tfgColor: ko.unwrap(options.fgColor),\r\n\t\t\t\t\trelease: newValue => {\r\n\t\t\t\t\t\tif (newValue < minCount) {\r\n\t\t\t\t\t\t\toptions.value(Math.round(minCount));\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\toptions.value(Math.round(newValue));\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$(element).val(value).trigger('change');\r\n\t\t\t},\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tlet max = ko.unwrap(options.max);\r\n\t\t\t\tlet fgColor = ko.unwrap(options.fgColor);\r\n\t\t\t\tif (max || fgColor) {\r\n\t\t\t\t\t$(element).trigger('configure', { max, fgColor });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport 'knockoutValidation';\r\n\r\nexport class KnockoutValidationExtensions {\r\n\tstatic Init() {\r\n\t\tko.validation.rules['areSame'] = {\r\n\t\t\tgetValue: o => typeof o === 'function' ? o() : o,\r\n\t\t\tvalidator: function (val, otherField) {\r\n\t\t\t\treturn val === this.getValue(otherField);\r\n\t\t\t},\r\n\t\t\tmessage: 'The fields must have the same value'\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport 'minicolors';\r\n\r\nexport class MiniColorsExtention {\r\n static Init() {\r\n ko.bindingHandlers.miniColors = {\r\n init: (element, valueAccessor) => {\r\n let options = valueAccessor();\r\n $(element)\r\n .minicolors({\r\n theme: options.theme,\r\n defaultValue: '',\r\n change: (colorValue: string) => options.changed(colorValue),\r\n changeDelay: 200,\r\n animationEasing: 'swing',\r\n inline: !!options.inline,\r\n position: !!options.position ? options.position : 'bottom left'\r\n });\r\n },\r\n update: (element, valueAccessor) => {\r\n let options = valueAccessor();\r\n if (options.value) {\r\n const value = options.value() || '';\r\n if ($(element).minicolors('value') !== value) {\r\n $(element).minicolors('value', value);\r\n }\r\n } else {\r\n $(element).val('');\r\n $(element).minicolors('destroy');\r\n $(element)\r\n .minicolors({\r\n theme: options.theme,\r\n change: (colorValue: string) => options.changed(colorValue),\r\n changeDelay: 200,\r\n animationEasing: 'swing',\r\n inline: !!options.inline,\r\n position: !!options.position ? options.position : 'bottom left'\r\n });\r\n }\r\n }\r\n };\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as $ from \"jquery\";\r\n\r\nexport class MultilineEllipsis {\r\n static Init() {\r\n ko.bindingHandlers.truncate = {\r\n update: (element, valueAccessor) => {\r\n var value = valueAccessor();\r\n var $element = $(element);\r\n $element.text(value());\r\n while (element.scrollHeight > element.offsetHeight) {\r\n $element.text(function (index, text) {\r\n return text.replace(/\\W*\\s(\\S)*$/, '...');\r\n });\r\n }\r\n }\r\n };\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport * as $ from 'jquery';\r\nimport 'jqery.nicescroll';\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\n\r\nexport class NiceScrollExtention {\r\n\tstatic Init() {\r\n\t\t//JQuery nicescroll\r\n\t\t//default options: scrollForMobile: false, horizontalScrollWithShift: false\r\n //don't use it with dragula\r\n\r\n\t\tko.bindingHandlers.niceScroll = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tlet isMobile = MobileChecker.IsMobile();\r\n\t\t\t\tif (!isMobile || options.scrollForMobile) {\r\n\t\t\t\t\tif (options.horizontalScrollWithShift) {\r\n\t\t\t\t\t\telement.addEventListener('wheel', (event: WheelEvent) => {\r\n\t\t\t\t\t\t\tif (!event.shiftKey) {\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\tevent.stopImmediatePropagation();\r\n\t\t\t\t\t\t\telement.scrollLeft += event.deltaY;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$(element).niceScroll(options);\r\n\r\n\t\t\t\t\tif (options.horizontalCursorClass) {\r\n\t\t\t\t\t\t$(element).getNiceScroll(0).cursorh.addClass(options.horizontalCursorClass);\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}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class OptionExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.option = {\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tvar value = ko.utils.unwrapObservable(valueAccessor());\r\n\t\t\t\tko.selectExtensions.writeValue(element, value);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nexport class PreventBubbleExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.preventBubble = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tvar eventName = ko.utils.unwrapObservable(valueAccessor());\r\n\t\t\t\tvar arr = eventName;\r\n\t\t\t\tif (!eventName.pop) {\r\n\t\t\t\t\tarr = [arr];\r\n\t\t\t\t}\r\n\t\t\t\tfor (var p in arr) {\r\n\t\t\t\t\tko.utils.registerEventHandler(element, arr[p], (event) => {\r\n\t\t\t\t\t\tevent.cancelBubble = true;\r\n\t\t\t\t\t\tif (event.stopPropagation && event.type != 'beforeunload') {\r\n\t\t\t\t\t\t\tevent.stopPropagation();\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};","import * as ko from 'knockout'\r\nimport * as $ from 'jquery'\r\n\r\nexport class RenderTemplateXExtention {\r\n static Init() {\r\n (ko as any).renderTemplateX = (htmlTemplate, data) => {\r\n var temp = document.createElement('DIV');\r\n ko.applyBindingsToNode(temp, {template: {html: htmlTemplate, data: data}});\r\n var html = temp.childNodes;\r\n temp.remove();\r\n return html;\r\n };\r\n\r\n (ko as any).renderTemplateXHtml = (htmlTemplate, data) => {\r\n var temp = document.createElement('DIV');\r\n ko.applyBindingsToNode(temp, {template: {html: htmlTemplate, data: data}});\r\n var result = $(temp).html();\r\n temp.remove();\r\n return result;\r\n }\r\n\r\n (ko as any).renderTemplateXByTemplateName = (templateName, data) => {\r\n const wrapper = document.createElement('div');\r\n wrapper.setAttribute('data-bind', `template: { name: '${templateName}'}`);\r\n\r\n ko.applyBindings(data, wrapper);\r\n return wrapper;\r\n };\r\n }\r\n}","import * as ko from 'knockout';\r\nimport 'jquery';\r\n\r\nexport class ResizableExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.resizable = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\toptions.minWidth = ko.unwrap(options.minWidth);\r\n\t\t\t\toptions.minHeight = ko.unwrap(options.minHeight);\r\n\t\t\t\t$(element).resizable(options);\r\n\t\t\t},\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\toptions.minWidth = ko.unwrap(options.minWidth);\r\n\t\t\t\toptions.minHeight = ko.unwrap(options.minHeight);\r\n\t\t\t\t$(element).resizable(options);\r\n\t\t\t\t$(element).trigger('resize');\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\nconst ResizeService = new ResizeObserver();\r\n\r\nexport class ScreenHeightExtention {\r\n\tstatic _preventResize: boolean = false;\r\n\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.screenHeight = {\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tconst ViewBody = $('#viewBody');\r\n\t\t\t\tconst FourthColumn = ViewBody.find('.fourth-column');\r\n\t\t\t\tconst RightColumn = ViewBody.find('.rightColumn');\r\n\r\n\t\t\t\tlet listener;\r\n\t\t\t\tthis.ResizeContainer.call(this, element, ViewBody, FourthColumn, RightColumn);\r\n\t\t\t\tlistener = this.ResizeContainer.bind(this, element, ViewBody, FourthColumn, RightColumn);\r\n\r\n\t\t\t\tconst unbindResize = ResizeService.SubscribeHeight(this.OnResize.bind(this, element, ViewBody, FourthColumn, RightColumn), RightColumn[0]); // subscribe on resize\r\n\t\t\t\tko.utils.domNodeDisposal.addDisposeCallback(RightColumn[0], () => {\r\n\t\t\t\t\tunbindResize();\r\n\t\t\t\t\twindow.removeEventListener(\"resize\", listener, false);\r\n\t\t\t\t});\r\n\t\t\t\twindow.addEventListener('resize', listener, false);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tstatic OnResize = (element, viewBody, fourthColumn, rightColumn) => {\r\n\t\tScreenHeightExtention.ResizeContainer(element, viewBody, fourthColumn, rightColumn);\r\n\t};\r\n\r\n\tstatic ResizeContainer = (element, viewBody, fourthColumn, rightColumn) => {\r\n\t\tlet paddingElement: number = 40;\r\n\t\tlet pageElements: number = 0;\r\n\t\tlet screenHeight = window.innerHeight;\r\n\t\tlet actionBarSubForm = viewBody.find('.actionBarSubForm');\r\n\t\tpageElements = actionBarSubForm.outerHeight(true);\r\n\r\n\t\tlet fixedHeaderHeight: number = 0;\r\n\t\tlet calculate: number = 0;\r\n\r\n\t\tlet fourthColumnHeight = fourthColumn.innerHeight()\r\n\t\tlet rightColumnHeight = rightColumn.innerHeight()\r\n\r\n\t\tif (window.innerWidth > 991) {\r\n\t\t\tconst headerElement: HTMLDivElement = document.querySelector(\"body > .page-header\");\r\n\t\t\tfixedHeaderHeight = headerElement ? headerElement.offsetHeight : 0;\r\n\t\t}\r\n\t\tcalculate = Math.abs(fixedHeaderHeight + pageElements + paddingElement);\r\n\t\tlet expectedHeight = screenHeight - calculate;\r\n\r\n\t\tif ( expectedHeight > 400 ) {\r\n\t\t\t$(element).css({\r\n\t\t\t\t'max-height': (fourthColumnHeight < rightColumnHeight) ? rightColumnHeight : expectedHeight,\r\n\t\t\t\t'position': 'sticky',\r\n\t\t\t\t'top': fixedHeaderHeight + 20\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t$(element).css({\r\n\t\t\t\t'max-height': 540,\r\n\t\t\t\t'position': 'static'\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class ScrollFixerExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.scrollFixer = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tlet isChrome = !!window['chrome'] && !!window['chrome'].webstore;\r\n\t\t\t\tlet isIE = /*@cc_on!@*/false || !!document['documentMode'];\r\n\t\t\t\tlet isEdge = !isIE && !!window['StyleMedia'];\r\n\t\t\t\tlet isOpera = (!!window['opr'] && !!window['addons']) || !!window['opera'] || navigator.userAgent.indexOf(' OPR/') >= 0;\r\n\t\t\t\tif (isChrome || isOpera || isEdge) {\r\n\t\t\t\t\t$(element).bind('mousewheel DOMMouseScroll', function (e) {\r\n\t\t\t\t\t\tvar scrollTo = 0;\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tif (e.type == 'mousewheel') {\r\n\t\t\t\t\t\t\tscrollTo = (e.originalEvent['wheelDelta'] * -1);\r\n\t\t\t\t\t\t} else if (e.type == 'DOMMouseScroll') {\r\n\t\t\t\t\t\t\tscrollTo = 40 * e.originalEvent['detail'];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t$(this).scrollTop(scrollTo + $(this).scrollTop());\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}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\ninterface IScrollSynchOptions {\r\n topScroll: string;\r\n bottomScroll: string;\r\n}\r\n\r\nexport class ScrollSynchronizingExtention {\r\n static Init() {\r\n ko.bindingHandlers.syncScroll = {\r\n init: (element, valueAccessor: any) => {\r\n\r\n let options: IScrollSynchOptions = {\r\n topScroll: valueAccessor().topScroll,\r\n bottomScroll: valueAccessor().bottomScroll\r\n };\r\n\r\n if (options.topScroll && options.bottomScroll) {\r\n let $topEl = $(element).find(options.topScroll);\r\n let $bottomEl = $(element).find(options.bottomScroll);\r\n\r\n $topEl.scroll(function() {\r\n let length = $(this).scrollLeft();\r\n $bottomEl.scrollLeft(length);\r\n });\r\n\r\n $bottomEl.scroll(function() {\r\n let length = $(this).scrollLeft();\r\n $topEl.scrollLeft(length);\r\n });\r\n }\r\n }\r\n }\r\n\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class SearchExtention {\r\n\tstatic Init() {\r\n\r\n\t\tko.bindingHandlers.searchExtention = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\tvar typingTimer;\r\n\t\t\t\tvar doneTypingInterval = 500;\r\n\t\t\t\tvar $input = $(element);\r\n\t\t\t\tvar backSpace = 8;\r\n\t\t\t\tvar shiftCode = 16;\r\n\t\t\t\tvar regExp = null;\r\n\r\n\t\t\t\tif (options.regexp) {\r\n\t\t\t\t\tregExp = options.regexp;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//on keyup, start the countdown\r\n\t\t\t\t$input.on('keyup', function (evt) {\r\n\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\tvar inp = String.fromCharCode(evt.keyCode);\r\n\r\n\t\t\t\t\t//need to move part with \"regexp\" somewhere\r\n\t\t\t\t\tif (regExp) {\r\n\t\t\t\t\t\tif (regExp.test(inp) || evt.keyCode == backSpace || evt.keyCode == shiftCode) {\r\n\t\t\t\t\t\t\ttypingTimer = setTimeout(doneTyping, doneTypingInterval);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttypingTimer = setTimeout(doneTyping, doneTypingInterval);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//on keydown, clear the countdown \r\n\t\t\t\t$input.on('keydown', function (evt) {\r\n\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//user is \"finished typing,\" do something\r\n\t\t\t\tfunction doneTyping() {\r\n\t\t\t\t\tif (options.search) {\r\n\t\t\t\t\t\toptions.search();\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}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport 'jquerySlimscroll';\r\n\r\nexport class SlimScrollExtention {\r\n\tstatic Init() {\r\n\t\t//JQuery slimscroll\r\n\t\tko.bindingHandlers.slimScroll = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\t$(element).slimScroll(options);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class SmoothHeightExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.smoothHeight = {\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\t$(element).animate({ height: options.height() }, 300);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class SubformResizeExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.subformResize = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tvar subForms = $(element).find('.mainSubForm');\r\n\t\t\t\tvar subformFirst = $(subForms.eq(0));\r\n\t\t\t\tvar subformSecond = $(subForms.eq(1));\r\n\t\t\t\tvar subformThird = $(subForms.eq(2));\r\n\t\t\t\tvar subformsParent = $(subForms).find('.row.form-wrapper');\r\n\t\t\t\tvar adaptiveBlockClassName = 'adaptive-block';\r\n\t\t\t\tvar bodyTag = 'body';\r\n\t\t\t\tvar closedMenuClassName = 'page-sidebar-closed';\r\n\r\n\t\t\t\tvar subformFirstHeight = $(subformFirst).height();\r\n\t\t\t\tvar subformSecondHeight = $(subformSecond).height();\r\n\t\t\t\tvar subformThirdHeight = $(subformThird).height();\r\n\r\n\t\t\t\tvar smallerBlock = 0;\r\n\r\n\t\t\t\tif ($(window).width() < 992 && $(window).width() > 768) {\r\n\t\t\t\t\tif (!$(subformThird).hasClass(adaptiveBlockClassName)) {\r\n\t\t\t\t\t\t$(subformThird).addClass(adaptiveBlockClassName);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (subformFirstHeight > subformSecondHeight) {\r\n\t\t\t\t\t\tsmallerBlock = subformSecondHeight;\r\n\t\t\t\t\t\t$(subformThird).css('right', '0');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsmallerBlock = subformFirstHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$(subformsParent).css('min-height', smallerBlock + subformThirdHeight + 30);\r\n\t\t\t\t\t$(subformThird).css('top', smallerBlock + 15);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$(window).on('resize', function () {\r\n\t\t\t\t\tif (($(window).width() < 992 && $(window).width() > 768) || (!$(bodyTag).hasClass(closedMenuClassName) && $(window).width() < 1300 && $(window).width() > 768)) {\r\n\t\t\t\t\t\tif (!$(subformThird).hasClass(adaptiveBlockClassName)) {\r\n\t\t\t\t\t\t\t$(subformThird).addClass(adaptiveBlockClassName);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (subformFirstHeight > subformSecondHeight) {\r\n\t\t\t\t\t\t\tsmallerBlock = subformSecondHeight;\r\n\t\t\t\t\t\t\t$(subformThird).css('right', '0');\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsmallerBlock = subformFirstHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$(subformsParent).css('min-height', smallerBlock + subformThirdHeight + 30);\r\n\t\t\t\t\t\t$(subformThird).css('top', smallerBlock + 15);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$(subformThird).removeClass(adaptiveBlockClassName);\r\n\t\t\t\t\t\t$(subformThird).css({\r\n\t\t\t\t\t\t\t'top': '',\r\n\t\t\t\t\t\t\t'right': ''\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t$(subformsParent).css('min-height', '');\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};","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class TabNavigationExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.tabNavigation = {\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\t$(window).off('keydown');\r\n\t\t\t\tlet arrowTop = 38;\r\n\t\t\t\tlet arrowBottom = 40;\r\n\t\t\t\tlet tabBtn = 9;\r\n\t\t\t\tlet viewBody = document.getElementById('viewBody');\r\n\t\t\t\tvar parentContainer = null;\r\n\t\t\t\tvar closestSearch = null;\r\n\r\n\t\t\t\t$(\"body\").on('keydown', '.tab-key-navigation tr', function (e) {\r\n\t\t\t\t\tif (e.keyCode == arrowBottom) {\r\n\t\t\t\t\t\t$(e.target).next().focus();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (e.keyCode == arrowTop) {\r\n\t\t\t\t\t\t$(e.target).prev().focus();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$(window).on('keydown', function (e) {\r\n\t\t\t\t\tif (e.keyCode == tabBtn) {\r\n\t\t\t\t\t\t$('.focus-guard').on('focus', function () {\r\n\t\t\t\t\t\t\tparentContainer = null;\r\n\t\t\t\t\t\t\tparentContainer = null;\r\n\t\t\t\t\t\t\tvar firstElement = null;\r\n\t\t\t\t\t\t\tparentContainer = $(this).offsetParent();\r\n\t\t\t\t\t\t\tclosestSearch = $(parentContainer).find('.search-input');\r\n\t\t\t\t\t\t\tif ($(closestSearch).length) {\r\n\t\t\t\t\t\t\t\t$(closestSearch).focus();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tfirstElement = $(parentContainer).find(\"[tabindex='1']\").first();\r\n\t\t\t\t\t\t\t\t$(firstElement).focus();\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}","import * as ko from 'knockout';\r\nimport 'jquery';\r\nimport 'jqueryAutogrow';\r\n\r\nexport class TextAreAutogrowExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.autogrow = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n\t\t\t\tvar timerId = setInterval(() => {\r\n\t\t\t\t\tif (element.offsetWidth > 0 || element.offsetHeight > 0) {\r\n\t\t\t\t\t\t($(element) as any).autogrow({ vertical: true, horizontal: false });\r\n\t\t\t\t\t\tclearInterval(timerId);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 200);\r\n\t\t\t\tko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n\t\t\t\t\tclearInterval(timerId);\r\n\t\t\t\t\tconst shadowId = $(element).data(\"shadow-id\");\r\n\t\t\t\t\tif (shadowId) {\r\n\t\t\t\t\t\t$(\"#\" + shadowId).remove();\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}","import * as ko from 'knockout';\r\nimport 'jquery';\r\nimport 'tinymceTheme';\r\nimport 'tinymceAdvList';\r\nimport 'tinymceAutoLink';\r\nimport 'tinymceLists';\r\nimport 'tinymceLink';\r\nimport 'tinymceImage';\r\nimport 'tinymcePreview';\r\nimport 'tinymceAnchor';\r\nimport 'tinymceCode';\r\nimport 'tinymcePrint';\r\nimport 'tinymceSearchreplace';\r\nimport 'tinymceFullscreen';\r\nimport 'tinymceVisualblocks';\r\nimport 'tinymceCharmap';\r\nimport 'tinymceAutoresize';\r\nimport 'tinymceTable';\r\nimport 'tinymcePaste';\r\nimport 'tinymceMedia';\r\nimport 'tinymceInsertdatetime';\r\nimport 'tinymceNoneditable';\r\nimport 'tinymceIcon';\r\nimport 'tinymceImageTools';\r\nimport 'tinymceHelp';\r\nimport 'tinymcePageBreak';\r\nimport 'tinymceVisualChars';\r\n\r\nimport {UserManager} from 'User/UserManager';\r\nimport {edit} from \"ace-builds\";\r\nimport * as moment from \"moment\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class TinymceExtention {\r\n\tstatic AddProtocol(url: string){\r\n\t\tif (!/^(https?:)?\\/\\//i.test(url)) {\r\n\t\t\treturn 'http://' + url;\r\n\t\t}\r\n\t\treturn url;\r\n\t}\r\n\r\n\tstatic ChangeTimestampFormat(format: string | null): string {\r\n\t\tconst defaultFormatValue = 'DD/MM/YY';\r\n\t\tconst formatType = format || defaultFormatValue;\r\n\r\n\t\tconst isValidMomentFormat: boolean = formatType === defaultFormatValue || moment(moment().format(formatType)).isValid();\r\n\t\tconst date: string = moment(new Date()).format(isValidMomentFormat ? formatType : defaultFormatValue);\r\n\r\n\t\tif (!isValidMomentFormat) {\r\n\t\t\tlet message = NOTIFICATIONS.WRONG_FORMAT_IN_MEMO_TIMESTAMP_FORMAT_GLOBAL\r\n\t\t\t\t.replace('{formatValue}', `<strong class=\"format-value\">${formatType}</strong>`)\r\n\t\t\t\t.replace('{defaultFormatValue}', `<strong class=\"default-format-value\">${defaultFormatValue}</strong>`)\r\n\t\t\tnew Notifier().Warning(message);\r\n\t\t}\r\n\r\n\t\treturn date;\r\n\t}\r\n\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.tinymce = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n\t\t\t\tconst options = valueAccessor();\r\n\t\t\t\tconst scroll = $(window).scrollTop();\r\n\t\t\t\tconst autofocusTarget = options.autofocus ? `${options.guid}` : null;\r\n\r\n\t\t\t\t(tinymce as any).baseURL = `${__webpack_public_path__}tinymce`;\r\n\r\n\t\t\t\tconst tinymceStyles =\r\n\t\t\t\t\t`.mce-content-body {\r\n\t\t\t\t\t\t padding-bottom: 4px !important;\r\n\t\t\t\t\t\t font-size: 13px !important;\r\n\t\t\t\t\t }\r\n\t\t\t\t\t \r\n\t\t\t\t\t .reply-signature-body {\r\n\t\t\t\t\t \tcolor: #666 !important;\r\n\t\t\t\t\t \tfont-style: italic !important;\r\n\t\t\t\t\t }\r\n\t\t\t\t\t `;\r\n\r\n\t\t\t\tconst tinymceOptions: any = {\r\n\t\t\t\t\textended_valid_elements : 'a[next-status|command-type|href|subscription-entity]',\r\n\t\t\t\t\tselector: `#${options.guid}`,\r\n\t\t\t\t\tmin_height: +options.min_height || 200,\r\n\t\t\t\t\theight: +options.height || '100%',\r\n\t\t\t\t\tmax_height: !!+options.max_height ? +options.max_height : '',\r\n\t\t\t\t\tresize: false,\r\n\t\t\t\t\tlink_assume_external_targets: true,\r\n\t\t\t\t\tdocument_base_url: '/',\r\n\t\t\t\t\tcontent_css: [`${__webpack_public_path__}codepen.css`],\r\n\t\t\t\t\tcontent_style: tinymceStyles,\r\n\t\t\t\t\tplugins: ['link image imagetools table'],\r\n\t\t\t\t\tcontextmenu: \"link image imagetools table\",\r\n\t\t\t\t\tquickEdit: options.quickEdit,\r\n\t\t\t\t\tisMailControl: options.isMailControl,\r\n\t\t\t\t\tautoresize: options.autoresize,\r\n\t\t\t\t\tfontsize_formats: \"8pt 10pt 12pt 14pt 18pt 24pt 36pt\",\r\n\t\t\t\t\tremoved_menuitems: 'spellchecker',\r\n\t\t\t\t\tpaste_data_images: true,\r\n\t\t\t\t\tconvert_urls: false,\r\n\t\t\t\t\tremove_script_host: false,\r\n table_responsive_width: false,\r\n table_default_styles: {\r\n collapse: 'collapse',\r\n },\r\n table_default_attributes: {\r\n border: '1',\r\n },\r\n\t\t\t\t\tmobile: {\r\n\t\t\t\t\t\ttheme: 'silver',\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// enable 'autoresize' plugin but only on grid\r\n\t\t\t\tif (tinymceOptions.autoresize && (tinymceOptions.quickEdit || tinymceOptions.isMailControl)) {\r\n\t\t\t\t\ttinymceOptions.plugins.push('autoresize');\r\n\t\t\t\t} else if (tinymceOptions.autoresize){\r\n\t\t\t\t\ttinymceOptions.plugins.push('autoresize');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (options.readOnly) {\r\n\t\t\t\t\tif (!options.quickEdit){\r\n\t\t\t\t\t\ttinymceOptions.min_height = !!+options.height || 100;\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttinymceOptions.toolbar = false;\r\n\t\t\t\t\ttinymceOptions.menubar = false;\r\n\t\t\t\t\ttinymceOptions.statusbar = false;\r\n\t\t\t\t\ttinymceOptions.readonly = 1;\r\n\r\n\t\t\t\t\ttinymceOptions.plugins.push(\r\n\t\t\t\t\t\t'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'print', 'preview', 'anchor', 'searchreplace', 'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'paste', 'code', 'help', 'pagebreak', 'searchreplace', 'visualchars'\r\n\t\t\t\t\t);\r\n\r\n\r\n\t\t\t\t\ttinymceOptions.init_instance_callback = (editor) => {\r\n\r\n\t\t\t\t\t\teditor.on('OpenNotification', function (notification) {\r\n if(notification.close && notification.settings && notification.settings.text.includes('blob:outlook-mobile-compose')){\r\n notification.close();\r\n } \r\n });\r\n\r\n\t\t\t\t\t\teditor.show();\r\n\t\t\t\t\t\t$(window).scrollTop(scroll);\r\n\t\t\t\t\t\toptions.afterInit(editor);\r\n\r\n\t\t\t\t\t\t$(editor.getBody()).find('a').click(function (e) {\r\n\t\t\t\t\t\t\tvar url = e.target.getAttribute('href');\r\n\t\t\t\t\t\t\twindow.open(TinymceExtention.AddProtocol(url));\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t};\r\n\t\t\t\t} else if (tinymceOptions.quickEdit) {\r\n\t\t\t\t\ttinymceOptions.toolbar = options.languages ? 'translations' : false;\r\n\t\t\t\t\ttinymceOptions.menubar = false;\r\n\t\t\t\t\ttinymceOptions.statusbar = false;\r\n\t\t\t\t\ttinymceOptions.readonly = 0;\r\n\t\t\t\t\ttinymceOptions.nowrap = false;\r\n\r\n\t\t\t\t\ttinymceOptions.height = '200';\r\n\t\t\t\t\ttinymceOptions.min_height = '200';\r\n\t\t\t\t\ttinymceOptions.max_height = '200';\r\n\r\n\t\t\t\t\ttinymceOptions.plugins.push(\r\n\t\t\t\t\t\t'advlist', 'autolink', 'lists', 'link', 'charmap', 'print', 'preview', 'anchor', 'searchreplace', 'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'paste', 'code', 'help', 'pagebreak', 'searchreplace', 'noneditable', 'visualchars'\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\ttinymceOptions.auto_focus = autofocusTarget;\r\n\r\n\t\t\t\t\ttinymceOptions.init_instance_callback = (editor) => {\r\n\r\n\t\t\t\t\t\teditor.on('OpenNotification', function (notification) {\r\n if(notification.close && notification.settings && notification.settings.text.includes('blob:outlook-mobile-compose')){\r\n notification.close();\r\n } \r\n });\r\n\r\n\t\t\t\t\t\teditor.show();\r\n\t\t\t\t\t\t$(window).scrollTop(scroll);\r\n\t\t\t\t\t\toptions.afterInit(editor);\r\n\r\n\t\t\t\t\t\teditor.on('Change', (e) => {\r\n\t\t\t\t\t\t\tif (options.afterChange) {\r\n\t\t\t\t\t\t\t\toptions.afterChange(editor.getContent());\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\teditor.on('click', function (e) {\r\n\t\t\t\t\t\t\tif (e.target.nodeName === 'A') {\r\n\t\t\t\t\t\t\t\tvar url = e.target.getAttribute('href');\r\n\t\t\t\t\t\t\t\twindow.open(TinymceExtention.AddProtocol(url));\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\ttinymceOptions.setup = (editor) => {\r\n\t\t\t\t\t\teditor.ui.registry.addButton('usertime',\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttitle: 'Add timestamp and user name',\r\n\t\t\t\t\t\t\t\ttooltip: 'Add timestamp and user name',\r\n\t\t\t\t\t\t\t\ticon: 'user',\r\n\r\n\t\t\t\t\t\t\t\tonAction: () => {\r\n\t\t\t\t\t\t\t\t\tconst content = editor.getContent({format: 'html'});\r\n\t\t\t\t\t\t\t\t\tconst userManager = UserManager.Instance;\r\n\r\n\t\t\t\t\t\t\t\t\tconst userNameAndDate =\r\n\t\t\t\t\t\t\t\t\t\t'<p><span style=\"text-decoration: underline;\" data-mce-style=\"text-decoration: underline;\"><strong>' + '<<< ' +\r\n\t\t\t\t\t\t\t\t\t\tuserManager.CurrentUser.Name +\r\n\t\t\t\t\t\t\t\t\t\t', at ' +\r\n\t\t\t\t\t\t\t\t\t\tnew Date().toLocaleString('en-US', options) + ' >>>' +\r\n\t\t\t\t\t\t\t\t\t\t'</strong></span></p>';\r\n\r\n\t\t\t\t\t\t\t\t\teditor.setContent(userNameAndDate + '<br />' + '<span id=\"_cursor\" />' + content);\r\n\t\t\t\t\t\t\t\t\teditor.selection.select(editor.dom.select('#_cursor')[0]);\r\n\t\t\t\t\t\t\t\t\teditor.selection.collapse(0);\r\n\t\t\t\t\t\t\t\t\teditor.dom.remove('_cursor');\r\n\r\n\t\t\t\t\t\t\t\t\tif (options.afterChange) {\r\n\t\t\t\t\t\t\t\t\t\toptions.afterChange(editor.getContent());\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\r\n\t\t\t\t\t};\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttinymceOptions.nowrap = false;\r\n\t\t\t\t\ttinymceOptions.readonly = 0;\r\n\r\n\t\t\t\t\ttinymceOptions.plugins.push(\r\n\t\t\t\t\t\t'advlist', 'autolink', 'lists', 'link', 'charmap', 'print', 'preview', 'anchor', 'searchreplace', 'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'paste', 'code', 'help', 'pagebreak' ,'searchreplace', 'noneditable', 'visualchars'\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\ttinymceOptions.toolbar = 'insertfile undo redo | styleselect | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link | usertime | forecolor backcolor | fontsizeselect | translations';\r\n\r\n\t\t\t\t\ttinymceOptions.auto_focus = autofocusTarget;\r\n\r\n\t\t\t\t\ttinymceOptions.init_instance_callback = (editor) => {\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\teditor.on('OpenNotification', function (notification) {\r\n\t\t\t\t\t\t\tif(notification.close && notification.settings && notification.settings.text.includes('blob:outlook-mobile-compose')){\r\n\t\t\t\t\t\t\t\tnotification.close();\r\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t });\r\n\r\n\t\t\t\t\t\teditor.show();\r\n\t\t\t\t\t\t$(window).scrollTop(scroll);\r\n\t\t\t\t\t\toptions.afterInit(editor);\r\n\r\n\t\t\t\t\t\teditor.on('Change', (e) => {\r\n\t\t\t\t\t\t\tif (options.afterChange) {\r\n\t\t\t\t\t\t\t\toptions.afterChange(editor.getContent());\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\teditor.on('click', function (e) {\r\n\t\t\t\t\t\t\tif (e.target.nodeName === 'A') {\r\n\t\t\t\t\t\t\t\tvar url = e.target.getAttribute('href');\r\n\t\t\t\t\t\t\t\twindow.open(TinymceExtention.AddProtocol(url));\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\ttinymceOptions.setup = (editor) => {\r\n\t\t\t\t\t\teditor.ui.registry.addButton('usertime',\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttitle: 'Add timestamp and user name',\r\n\t\t\t\t\t\t\t\ttooltip: 'Add timestamp and user name',\r\n\t\t\t\t\t\t\t\ticon: 'user',\r\n\r\n\t\t\t\t\t\t\t\tonAction: () => {\r\n\t\t\t\t\t\t\t\t\tconst content = editor.getContent({format: 'html'});\r\n\t\t\t\t\t\t\t\t\tconst userManager = UserManager.Instance;\r\n\t\t\t\t\t\t\t\t\tconst userName = userManager.CurrentUser.Name;\r\n\r\n\t\t\t\t\t\t\t\t\tconst userNameAndDate = `\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p><span style=\"text-decoration: underline;\" data-mce-style=\"text-decoration: underline;\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<strong>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<<< ${userName}, at ${TinymceExtention.ChangeTimestampFormat(GlobalManager.Instance.GetGlobal(GLOBALS.MEMO_TIMESTAMP_FORMAT))} >>>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</strong>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span></p>\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\teditor.setContent(`${userNameAndDate}<br /><span id=\"_cursor\" />${content}`);\r\n\t\t\t\t\t\t\t\t\teditor.selection.select(editor.dom.select('#_cursor')[0]);\r\n\t\t\t\t\t\t\t\t\teditor.selection.collapse(0);\r\n\t\t\t\t\t\t\t\t\teditor.dom.remove('_cursor');\r\n\r\n\t\t\t\t\t\t\t\t\tif (options.afterChange) {\r\n\t\t\t\t\t\t\t\t\t\toptions.afterChange(editor.getContent());\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\r\n\t\t\t\t\t\tif (options.languages) {\r\n\t\t\t\t\t\t\tconst container = editor.container || '.tox-editor-container';\r\n\t\t\t\t\t\t\tconst languages = options.languages.List.map(language => {\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\ttype: 'menuitem',\r\n\t\t\t\t\t\t\t\t\ttext: language.Name,\r\n\t\t\t\t\t\t\t\t\tonAction: function () {\r\n\t\t\t\t\t\t\t\t\t\tif (options.afterChange) {\r\n\t\t\t\t\t\t\t\t\t\t\toptions.afterChange(editor.getContent());\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\toptions.onChangeLanguage(language.Id);\r\n\r\n\t\t\t\t\t\t\t\t\t\t$(container)\r\n\t\t\t\t\t\t\t\t\t\t\t.find('.tox-toolbar')\r\n\t\t\t\t\t\t\t\t\t\t\t.find('.tox-toolbar__group')\r\n\t\t\t\t\t\t\t\t\t\t\t.last()\r\n\t\t\t\t\t\t\t\t\t\t\t.find('.tox-tbtn__select-label')\r\n\t\t\t\t\t\t\t\t\t\t\t.text(`Translations ${language.ShortName}`);\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\r\n\t\t\t\t\t\t\tlet languageActive = options.languages.Active.ShortName;\r\n\t\t\t\t\t\t\teditor.ui.registry.addMenuButton('translations', {\r\n\t\t\t\t\t\t\t\ttext: `Translations ${languageActive}`,\r\n\t\t\t\t\t\t\t\tfetch: function (callback) {\r\n\t\t\t\t\t\t\t\t\tlet items = languages;\r\n\t\t\t\t\t\t\t\t\tcallback(items);\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\ttinymce.init(tinymceOptions);\r\n\r\n\t\t\t\tko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n\t\t\t\t\tconst instance = tinymce.get(options.guid);\r\n\r\n\t\t\t\t\tif (instance) {\r\n\t\t\t\t\t\tinstance.remove();\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}","import * as ko from \"knockout\"\r\nimport * as tippy from \"tippy\";\r\n\r\n\r\nexport class TippyExtention {\r\n static Init() {\r\n\r\n ko.bindingHandlers.tippy = {\r\n init: (element, valueAccessor) => {\r\n var options = valueAccessor();\r\n (tippy as any)(element, options);\r\n }\r\n };\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class ToggleExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.toggle = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel, bindingContext) => { },\r\n\r\n\t\t\tupdate(element, valueAccessor) {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\tif (options.show) {\r\n\t\t\t\t\tif (options.show() === true) {\r\n\t\t\t\t\t\t$(element).toggle(\"slow\");\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$(element).toggle(options.show());\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}","import * as ko from \"knockout\"\r\nimport * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\nimport {Tooltip} from 'Core/Common/Tooltip';\r\n\r\nclass TooltipCollection {\r\n\r\n private _tooltips: Array<any>;\r\n\r\n constructor() {\r\n this._tooltips = [];\r\n }\r\n\r\n HasElement(element) {\r\n return !!this.Get(element);\r\n }\r\n\r\n Add(element, value) {\r\n const tooltip = new Tooltip(element, ko.unwrap(value.content), {\r\n position: value.position,\r\n outside: value.outside,\r\n pointer: value.pointer,\r\n closeOnMouseleave: value.closeOnMouseleave\r\n });\r\n tooltip.AddClass(value.addClass);\r\n this._tooltips.push({\r\n element: element,\r\n tooltip: tooltip\r\n });\r\n }\r\n\r\n Remove(element) {\r\n const tooltip = this.Get(element);\r\n tooltip.tooltip.Destroy();\r\n const index = this._tooltips.indexOf(tooltip);\r\n this._tooltips.splice(index, 1);\r\n }\r\n\r\n SetContent(element, options) {\r\n const tooltip = this.Get(element).tooltip;\r\n tooltip.SetContent(ko.unwrap(options.content));\r\n tooltip.AddClass(options.addClass);\r\n }\r\n\r\n private Get(element) {\r\n return _.find(this._tooltips, (tooltip) => tooltip.element === element);\r\n }\r\n}\r\n\r\nexport class TooltipExtention {\r\n\r\n private static _collection: TooltipCollection = new TooltipCollection();\r\n\r\n static Init() {\r\n ko.bindingHandlers.tooltip = {\r\n init: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n this.DestroyTooltip(element);\r\n });\r\n },\r\n update: (element, valueAccessor) => {\r\n const options = ko.unwrap(valueAccessor()) as ITooltipConfig;\r\n\t\t\t\tif (!options || !options.content) {\r\n\t\t\t\t\tthis.DestroyTooltip(element);\r\n return;\r\n }\r\n\r\n this.ExtendOptions(options);\r\n\r\n if (options.onlyOnOverflow) {\r\n this.RenderOnOverflow(element, options);\r\n } else {\r\n this.Render(element, options);\r\n }\r\n }\r\n };\r\n }\r\n\r\n private static ExtendOptions(options: ITooltipConfig) {\r\n if (!options.hasOwnProperty('onlyOnOverflow')) {\r\n options.onlyOnOverflow = false;\r\n }\r\n }\r\n\r\n private static RenderOnOverflow(element: HTMLInputElement, options: ITooltipConfig) {\r\n const $element = $(element);\r\n const elementText = $element.text() && $element.text().toLowerCase();\r\n const tooltipContent = options.content && options.content.toLowerCase();\r\n\r\n if (element.scrollWidth > element.offsetWidth || elementText !== tooltipContent) {\r\n this.Render(element, options);\r\n } else {\r\n this.DestroyTooltip(element);\r\n }\r\n }\r\n\r\n private static Render(element, options: ITooltipConfig) {\r\n if (!this._collection.HasElement(element)) {\r\n this._collection.Add(element, options);\r\n } else {\r\n this._collection.SetContent(element, options);\r\n }\r\n }\r\n\r\n private static DestroyTooltip(element) {\r\n if (this._collection.HasElement(element)) {\r\n this._collection.Remove(element);\r\n }\r\n }\r\n}\r\n\r\nexport interface ITooltipConfig {\r\n content: string;\r\n onlyOnOverflow?: boolean;\r\n position?: { x: string, y: string },\r\n outside?: string,\r\n pointer?: string,\r\n closeOnMouseleave?: boolean,\r\n addClass?: string,\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class UniformExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.uniform = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\t$(element).uniform();\r\n\t\t\t\tvar value = valueAccessor();\r\n\t\t\t\tvar isChecked = false;\r\n\t\t\t\tif (value instanceof Function) {\r\n\t\t\t\t\tisChecked = value();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tisChecked = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isChecked) {\r\n\t\t\t\t\t$(element).parent(\"span\").addClass('checked');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(element).parent(\"span\").removeClass('checked');\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tvar value = valueAccessor();\r\n\r\n\t\t\t\tvar isChecked = false;\r\n\t\t\t\tif (value instanceof Function) {\r\n\t\t\t\t\tisChecked = value();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tisChecked = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isChecked) {\r\n\t\t\t\t\t$(element).parent(\"span\").addClass('checked');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(element).parent(\"span\").removeClass('checked');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery'\r\nimport * as Viewer from \"viewer\";\r\n\r\nimport {BlockUI as BlockUi} from 'Core/Common/BlockUi';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport {MarkerArea} from \"markerjs2\";\r\n\r\nexport class ViewerJsExtention {\r\n static viewModel = null;\r\n static markerArea = null;\r\n static annotationsShown = false;\r\n static markerButton = null;\r\n static currentImage = null;\r\n\r\n static Init() {\r\n ko.bindingHandlers.viewerJs = {\r\n init: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n const self = this;\r\n this.viewModel = viewModel;\r\n const options = valueAccessor();\r\n let viewer = null;\r\n const template =\r\n `<!--ko with: $data -->\r\n\t\t\t\t\t\t<!--ko foreach: Images -->\r\n\t\t\t\t\t\t\t<div class=\"gallery-item\">\r\n\t\t\t\t\t\t\t\t<div class=\"mix mix_all\" >\r\n\t\t\t\t\t\t\t\t\t<div class=\"mix-inner\">\r\n\t\t\t\t\t\t\t\t\t\t<img data-bind=\"attr: { src: ImageData, 'data-original': OriginalImageData, 'data-id': UniqueId }, \r\n class: $parent.ImageClasses,\r\n style: {'max-height': $parent.GetHeightImage}\" \r\n\t\t\t\t\t\t\t\t\t\t class=\"max-width-50p\" width=\"\" height=\"\" alt=\"No Image\">\r\n\t\t\t\t\t\t\t\t\t\t<a class=\"image-open-btn\" data-bind=\"click: $parent.ShowImage\"></a>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<!-- /ko -->\r\n\t\t\t\t\t<!-- /ko -->`;\r\n\r\n const data = {\r\n Images: options.images,\r\n ImageClasses: options.imageClasses,\r\n AnnotationsEnabled: options.annotationsEnabled,\r\n ShowImage: (image, evt) => {\r\n self.currentImage = image\r\n options.getOriginalImage(image, viewer);\r\n },\r\n GetHeightImage: options.getHeightImage || function (){},\r\n ShowAnnotations: options.showAnnotations\r\n };\r\n\r\n //if (options.template) {\r\n //ko.templates['Template'] = options.template;\r\n ko.templates['Template'] = template;\r\n ko.renderTemplate('Template', data, null, element);\r\n //}\r\n\r\n\r\n const opt = {\r\n markerable: data.AnnotationsEnabled || false, //markerjs button for annotations available\r\n button: true, // Show the button on the top-right of the viewer\r\n inline: false, // Enable inline mode\r\n navbar: false, // Show the navbarwer\r\n title: false, // Show the title\r\n toolbar: true, // Show the toolbar\r\n tooltip: true, // Show the tooltip with image ratio (percentage) when zoom in or zoom out\r\n movable: true, // Enable to move the image\r\n zoomable: true, // Enable to zoom the image\r\n rotatable: true, // Enable to rotate the image\r\n scalable: true, // Enable to scale the image\r\n transition: true, // Enable CSS3 Transition for some special elements\r\n fullscreen: true, // Enable to request fullscreen when play\r\n keyboard: true, // Enable keyboard support\r\n url: 'data-original',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n filter() { // Initiate correct array for non loaded original images\r\n return true;\r\n },\r\n marker() {\r\n let annotations = self.viewModel.Files[viewer.index].Annotations || self.currentImage.Annotations;\r\n\r\n if (annotations && opt.markerable) {\r\n if (data.ShowAnnotations) {\r\n self.DisableViewerControls(viewer);\r\n\r\n self.markerArea = new MarkerArea(viewer.image);\r\n self.markerButton = viewer.image.parentNode.parentNode.getElementsByClassName(\"viewer-marker\")[0];\r\n self.markerArea.uiStyleSettings.editingControlsInactive = true;\r\n self.markerArea.uiStyleSettings.zIndex = ZIndexManager.Instance.NextValue;\r\n if (self.markerButton) {\r\n self.markerButton.classList.add(\"disabled\");\r\n self.markerButton.style.pointerEvents = \"none\";\r\n }\r\n self.markerArea.addCloseEventListener(() => {\r\n self.EnableViewerControls(viewer);\r\n self.annotationsShown = false;\r\n self.markerButton.classList.remove(\"disabled\");\r\n self.markerButton.style.pointerEvents = \"auto\";\r\n });\r\n\r\n self.markerArea.show(true);\r\n self.annotationsShown = true;\r\n\r\n self.markerArea.restoreState(JSON.parse(annotations));\r\n } else {\r\n\r\n if (self.annotationsShown) {\r\n self.DisableViewerControls(viewer);\r\n\r\n self.markerArea = new MarkerArea(viewer.image);\r\n self.markerButton = viewer.image.parentNode.parentNode.getElementsByClassName(\"viewer-marker\")[0];\r\n self.markerArea.uiStyleSettings.editingControlsInactive = true;\r\n self.markerArea.uiStyleSettings.zIndex = ZIndexManager.Instance.NextValue;\r\n if (self.markerButton) {\r\n self.markerButton.classList.add(\"disabled\");\r\n self.markerButton.style.pointerEvents = \"none\";\r\n }\r\n self.markerArea.addCloseEventListener(() => {\r\n self.EnableViewerControls(viewer);\r\n self.annotationsShown = true;\r\n self.markerButton.classList.remove(\"disabled\");\r\n self.markerButton.style.pointerEvents = \"auto\";\r\n });\r\n\r\n self.markerArea.show(true);\r\n self.annotationsShown = false;\r\n\r\n self.markerArea.restoreState(JSON.parse(annotations));\r\n\r\n return;\r\n }\r\n\r\n self.annotationsShown = true;\r\n }\r\n }\r\n },\r\n view(e) {\r\n let annotations = self.viewModel.Files[e.detail.index].Annotations || self.currentImage.Annotations;\r\n if (annotations == null) {\r\n viewer.options.markerable = false;\r\n } else {\r\n viewer.options.markerable = true;\r\n }\r\n },\r\n viewed() {\r\n if (!self.annotationsShown && opt.markerable) {\r\n opt.marker();\r\n\r\n if (self.markerButton) {\r\n self.markerButton.classList.add(\"disabled\");\r\n self.markerButton.style.pointerEvents = \"none\";\r\n }\r\n }\r\n },\r\n hide() {\r\n if (self.markerArea) {\r\n self.markerArea.close(true);\r\n }\r\n\r\n if (data.ShowAnnotations){\r\n self.annotationsShown = false;\r\n } else {\r\n self.annotationsShown = true;\r\n }\r\n }\r\n };\r\n\r\n viewer = new Viewer(element, opt);\r\n\r\n viewer.next = () => {\r\n if (viewer.index + 1 < options.images.length) {\r\n\r\n let image = options.images[viewer.index + 1];\r\n if (image.OriginalImageData == null) {\r\n BlockUi.Block();\r\n options.getOriginalImage(image, viewer, true);\r\n } else {\r\n viewer.view(Math.min(viewer.index + 1, viewer.length - 1));\r\n }\r\n }\r\n }\r\n viewer.prev = () => {\r\n if (viewer.index > 0) {\r\n\r\n let image = options.images[viewer.index - 1];\r\n if (image.OriginalImageData == null) {\r\n BlockUi.Block();\r\n options.getOriginalImage(image, viewer, false);\r\n } else {\r\n viewer.view(Math.max(viewer.index - 1, 0));\r\n }\r\n }\r\n }\r\n viewer.clickOnImage = (imageId: number, direction: boolean) => {\r\n\r\n BlockUi.Unblock();\r\n const im = $('body').find('.mix-inner').find(\"img[data-id=\" + imageId + \"]\");\r\n viewer.hide(); // hide viewer when image was changed;\r\n if (im) {\r\n im.click();\r\n }\r\n self.CustomTooltip();\r\n }\r\n return {controlsDescendantBindings: true};\r\n }\r\n };\r\n }\r\n\r\n static CustomTooltip() {\r\n let toolbar = $('body').find('.viewer-toolbar');\r\n\r\n if (toolbar.length != 0) {\r\n this.BootstrapTooltip(toolbar.find('.viewer-zoom-in'), LABELS.ZOOM_IN);\r\n this.BootstrapTooltip(toolbar.find('.viewer-zoom-out'), LABELS.ZOOM_OUT);\r\n this.BootstrapTooltip(toolbar.find('.viewer-one-to-one'), LABELS.ACTUAL_SIZE);\r\n this.BootstrapTooltip(toolbar.find('.viewer-reset'), LABELS.ROTATE_FLIP);\r\n this.BootstrapTooltip(toolbar.find('.viewer-prev'), LABELS.PREVIOUS);\r\n this.BootstrapTooltip(toolbar.find('.viewer-next'), LABELS.NEXT);\r\n this.BootstrapTooltip(toolbar.find('.viewer-rotate-left'), LABELS.ROTATE_LEFT);\r\n this.BootstrapTooltip(toolbar.find('.viewer-rotate-right'), LABELS.ROTATE_RIGHT);\r\n this.BootstrapTooltip(toolbar.find('.viewer-flip-horizontal'), LABELS.FLIP_HORIZONTALLY);\r\n this.BootstrapTooltip(toolbar.find('.viewer-flip-vertical'), LABELS.FLIP_VERTICALLY);\r\n this.BootstrapTooltip(toolbar.find('.viewer-marker'), LABELS.ANNOTATIONS);\r\n }\r\n }\r\n\r\n static BootstrapTooltip(element: JQuery, text: string) {\r\n let options = {\r\n container: 'body',\r\n template: '<div class=\"tooltip customZIndex\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>'\r\n };\r\n\r\n let tooltipElement = $(element)\r\n .attr('data-toggle', 'tooltip')\r\n .attr('title', text);\r\n tooltipElement.tooltip(options);\r\n }\r\n\r\n static DisableViewerControls(viewer: Viewer) {\r\n viewer.options.movable = false;\r\n viewer.options.zoomable = false;\r\n viewer.options.rotatable = false;\r\n viewer.options.flippable = false;\r\n }\r\n\r\n static EnableViewerControls(viewer: Viewer) {\r\n viewer.options.movable = true;\r\n viewer.options.zoomable = true;\r\n viewer.options.rotatable = true;\r\n viewer.options.flippable = true;\r\n }\r\n}\r\n","import {LIFE_STATUS_GROUPS} from \"Core/Constant\";\r\n\r\nexport const TOOL_MARKUP = [\r\n '<g class=\"link-tool\">',\r\n '<g class=\"tool-remove\" event=\"link:remove\">',\r\n '<circle r=\"11\" />',\r\n '<path transform=\"scale(.8) translate(-16, -16)\" d=\"M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z\"/>',\r\n '</g>',\r\n '</g>'\r\n].join('');\r\n\r\nexport const LABEL_MARKUP = [\r\n '<g class=\"label\">',\r\n '<rect/>',\r\n '<text/>',\r\n '<image width=\"15\" height=\"15\" xlink:href=\"img/Rappid/font-awesome-black/exclamation.png\" y=\"5\" data-type=\"30000\" visibility=\"hidden\"></image>',\r\n '<image width=\"15\" height=\"15\" xlink:href=\"img/Rappid/font-awesome-black/ban.png\" y=\"5\" data-type=\"20000\" visibility=\"hidden\"></image>',\r\n '<image width=\"15\" height=\"15\" xlink:href=\"img/Rappid/font-awesome-black/check-square.png\" y=\"5\" data-type=\"10000\" visibility=\"hidden\"></image>',\r\n '<image width=\"15\" height=\"15\" xlink:href=\"img/Rappid/font-awesome-black/step-forward.png\" y=\"-25\" x=\"-20\" data-type=\"4000\" visibility=\"hidden\"></image>',\r\n '<image width=\"15\" height=\"15\" xlink:href=\"img/Rappid/font-awesome-black/check.png\" y=\"-25\" data-type=\"3000\" visibility=\"hidden\"></image>',\r\n '<image width=\"15\" height=\"15\" xlink:href=\"img/Rappid/font-awesome-black/key.png\" y=\"-25\" data-type=\"2000\" visibility=\"hidden\"></image>',\r\n '</g>'\r\n].join('');\r\n\r\nexport const START_CIRCLE_MODEL = {\r\n fill: '#000',\r\n stroke: '#000',\r\n 'stroke-width': 1,\r\n style: {\r\n 'pointer-events': 'non‌​e'\r\n },\r\n};\r\n\r\nexport const CELL_OPTIONS = {\r\n markup: '',\r\n position: {\r\n x: 0,\r\n y: 0\r\n },\r\n size: {\r\n width: 80,\r\n height: 60\r\n },\r\n attrs: {\r\n 'image[data-name=\"OnLifestatusSetTrigger\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/bolt.png',\r\n width: 20,\r\n height: 20,\r\n x: 80,\r\n y: 5,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"retired\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/archive.png',\r\n width: 20,\r\n height: 20,\r\n x: 5,\r\n y: 35,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"NoActionNode\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/bell-slash-o.png',\r\n width: 20,\r\n height: 20,\r\n x: 5,\r\n y: 5,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"MultipleActions\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/clone.png',\r\n width: 20,\r\n height: 20,\r\n x: 5,\r\n y: 5,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"Locked\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/chain.png',\r\n width: 20,\r\n height: 20,\r\n x: 80,\r\n y: 35,\r\n visibility: 'hidden'\r\n },\r\n text: {\r\n text: '',\r\n fill: 'White',\r\n 'font-weight': 'normal',\r\n 'font-size': 14\r\n },\r\n rect: {\r\n fill: '#4a83b6',\r\n stroke: '#2d5f8b',\r\n 'stroke-width': 2,\r\n },\r\n sort: LIFE_STATUS_GROUPS.PLANNED.toString(),\r\n isStart: false,\r\n ActionItems: [],\r\n translations: []\r\n },\r\n ports: {items: []}\r\n};\r\n\r\nexport const CELL_OPTIONS_START = {\r\n markup: '',\r\n position: {\r\n x: 30,\r\n y: 30\r\n },\r\n size: {\r\n width: 40,\r\n height: 40\r\n },\r\n attrs: {\r\n 'image[data-name=\"OnLifestatusSetTrigger\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/bolt.png',\r\n width: 20,\r\n height: 20,\r\n x: 80,\r\n y: 5,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"retired\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/archive.png',\r\n width: 20,\r\n height: 20,\r\n x: 5,\r\n y: 35,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"NoActionNode\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/bell-slash-o.png',\r\n width: 20,\r\n height: 20,\r\n x: 5,\r\n y: 5,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"MultipleActions\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/clone.png',\r\n width: 20,\r\n height: 20,\r\n x: 5,\r\n y: 5,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"Locked\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/chain.png',\r\n width: 20,\r\n height: 20,\r\n x: 80,\r\n y: 35,\r\n visibility: 'hidden'\r\n },\r\n text: {\r\n text: 'Start',\r\n fill: '#fff',\r\n 'font-weight': 'normal',\r\n 'font-size': 14\r\n },\r\n sort: LIFE_STATUS_GROUPS.PLANNED.toString(),\r\n isStart: true,\r\n circle: START_CIRCLE_MODEL,\r\n ActionItems: []\r\n },\r\n ports: {items: []}\r\n};\r\n\r\nexport const LINK_OPTIONS = {\r\n source: {id: 0},\r\n target: {id: 0},\r\n labels: [{\r\n position: .5,\r\n attrs: {\r\n text: {\r\n text: '',\r\n 'font-weight': 'bold',\r\n },\r\n 'image[data-type=\"2000\"]': {\r\n visibility: 'hidden'\r\n },\r\n 'image[data-type=\"3000\"]': {\r\n visibility: 'hidden'\r\n },\r\n 'image[data-type=\"4000\"]': {\r\n visibility: 'hidden'\r\n }\r\n }\r\n }],\r\n vertices: [],\r\n attrs: {\r\n '.marker-target': {d: 'M 0 -5 L -10 0 L 0 5 Z' },\r\n '.connection': {\r\n strokeWidth: 2,\r\n stroke: '#000000'\r\n }\r\n},\r\n router: {\r\n name: 'normal'\r\n },\r\n connector: {\r\n name: 'smooth'\r\n }\r\n};\r\n\r\nexport enum COLORS {\r\n BLACK = '#000000',\r\n WHITE = '#ffffff',\r\n GREEN = 'rgb(49, 208, 198)'\r\n};\r\n\r\nexport enum LIFECYCLE_EVENTS {\r\n\tINSPECT_CHECK_LIST_CHANGE = 'change:attrs/checklist',\r\n INSPECT_TRANSITION_CHANGE_COLOR = 'change:attrs/.connection/stroke',\r\n INSPECT_TRANSITION_CHANGE_APPROVAL = 'change:attrs/approvalId',\r\n INSPECT_TRANSITION_CHANGE_STEPS_SCREEN = 'change:attrs/stepsScreenId',\r\n INSPECT_TRANSITION_CHANGE_NEXTALLOWED = 'change:attrs/nextAllowed',\r\n INSPECT_TRANSITION_CHANGE_TEST_CONDITION = 'change:attrs/testCondition',\r\n INSPECT_NODE_CHANGE_TRIGGER = 'change:attrs/OnLifestatusSetTrigger',\r\n INSPECT_NODE_CHANGE_DURATION = 'change:attrs/DateElapsed',\r\n INSPECT_NODE_CHANGE_AUTOCOMPLETE = 'change:attrs/IsAutocomplete',\r\n INSPECT_NODE_CHANGE_DEADLINE = 'change:attrs/DeadlineElapsed',\r\n INSPECT_NODE_CHANGE_SORT = 'change:attrs/sort',\r\n INSPECT_NODE_CHANGE_NO_ACTION = 'change:attrs/NoActionNode',\r\n INSPECT_NODE_CHANGE_MULTIPLE_ACTIONS = 'change:attrs/MultipleActions',\r\n INSPECT_NODE_CHANGE_LOCKED = 'change:attrs/Locked',\r\n TOOLBAR_RESET = 'reset:pointerclick',\r\n TOOLBAR_PRINT = 'print:pointerclick',\r\n TOOLBAR_AUTOLAYOUT = 'layout:pointerclick',\r\n TOOLBAR_FULLSCREEN = 'fullscreen:pointerclick',\r\n TOOLBAR_ZOOM = 'zoomSlider:change',\r\n ADVANCED_MODE_TOGGLE = 'toggleAdvancedMode:change',\r\n PAPER_CLICK = 'cell:pointerdown',\r\n LINK_REMOVE = 'link:remove',\r\n BLANK_CLICK = 'blank:pointerdown',\r\n CELL_POINTER_CLICK = 'cell:pointerclick',\r\n HALO_ENABLE = 'action:enable:pointerdown',\r\n HALO_DISABLE = 'action:disable:pointerdown',\r\n DIALOG_DELETELINK = 'action:deleteLink',\r\n DIALOG_CANCELDELETE = 'action:cancelDeleteLink',\r\n DIALOG_DISABLENODE = 'action:disableNode',\r\n DIALOG_CANCELDISABLENODE = 'action:cancelDisableNode',\r\n FULLSCREEN_WEBKIT = 'webkitfullscreenchange',\r\n FULLSCREEN_MOZ = 'mozfullscreenchange',\r\n FULLSCREEN = 'fullscreenchange',\r\n WINDOW_RESIZE = 'resize',\r\n LINK_HIGHTLIGHT = 'hightlight',\r\n LINK_UNHIGHTLIGHT = 'unHighlight',\r\n REMOVE_LINKS = 'removeLinks',\r\n MOUSEWHEEL = 'mousewheel DOMMouseScroll',\r\n ADD_BUTTON_CLICK = 'cell:addbutton:pointerdown',\r\n DEFAULT_RETIRED = 'change:attrs/DefaultRetired',\r\n INSPECT_NODE_CHANGE_SUB_FLOW_LINKED_ENTITY = 'change:attrs/SubFlowLinkedEntity',\r\n INSPECT_NODE_CHANGE_SUB_FLOW_TYPE = 'change:attrs/SubFlowType',\r\n INSPECT_NODE_CHANGE_SUB_FLOW_STATUS = 'change:attrs/SubFlowStatus',\r\n}\r\n\r\nexport enum HALO_HANDLES {\r\n RESIZE = 'resize',\r\n FORK = 'fork',\r\n LINK = 'link',\r\n CLONE = 'clone',\r\n UNLINK = 'unlink',\r\n REMOVE = 'remove',\r\n ROTATE = 'rotate',\r\n DISABLE = 'disable',\r\n ENABLE = 'enable'\r\n}\r\n\r\nexport enum LINK_CUSTOM_ATTRS {\r\n PASSWORD = 'image[data-type=\"2000\"]',\r\n YESNO = 'image[data-type=\"3000\"]',\r\n APPROVALID = 'approvalId',\r\n STEPSSCREENID = 'stepsScreenId',\r\n STEPSSCREENICON = 'image[data-type=\"4000\"]'\r\n}\r\n\r\nexport enum TEST_CONDITION_CUSTOM_ATTRS {\r\n VALID = 'image[data-type=\"10000\"]',\r\n NOT_VALID = 'image[data-type=\"20000\"]',\r\n ERROR = 'image[data-type=\"30000\"]',\r\n TESTCONDITION = 'testCondition'\r\n}\r\n\r\nexport enum CELL_CUSTOM_ATTRS {\r\n TRIGGER = 'image[data-name=\"OnLifestatusSetTrigger\"]',\r\n RETIRED = 'image[data-name=\"retired\"]',\r\n NO_ACTION = 'image[data-name=\"NoActionNode\"]',\r\n MULTIPLE_ACTIONS = 'image[data-name=\"MultipleActions\"]',\r\n LOCKED = 'image[data-name=\"Locked\"]',\r\n COPY_BUTTON = 'foreignObject[class=\"rect-with-image-copy-button-container\"]',\r\n DELETE_BUTTON = 'foreignObject[class=\"rect-with-image-delete-button-container\"]',\r\n DEFAULT_RETIRED = 'image[data-name=\"DefaultRetired\"]',\r\n}\r\n\r\nexport enum INSPECTOR_HTML_ATTRS {\r\n SUB_FLOW_LINKED_ITEMS = '[data-attribute=\"attrs/SubFlowLinkedEntity\"]',\r\n SUB_FLOW_TYPE = '[data-attribute=\"attrs/SubFlowType\"]',\r\n SUB_FLOW_STATUS = '[data-attribute=\"attrs/SubFlowStatus\"]',\r\n}\r\n\r\nexport enum NODE_TYPES {\r\n CONVENTIONAL = 'Conventional',\r\n STATUS = 'Status',\r\n ERROR = 'Error',\r\n APPROVE = 'Approve',\r\n MESSAGE = 'Message',\r\n FUNCTION = 'Function',\r\n TEST = 'Test',\r\n PARSE = 'Parse',\r\n JOIN = 'Join',\r\n SECURITY = 'Security',\r\n START_ACTION = 'StartAction',\r\n SUB_FLOW = 'Subflow'\r\n}\r\n\r\nexport enum NODE_TYPES_ID {\r\n START,\r\n CONVENTIONA,\r\n STATUS,\r\n ERROR,\r\n APPROVE,\r\n MESSAGE,\r\n FUNCTION,\r\n TEST,\r\n PARSE,\r\n JOIN,\r\n SECURITY,\r\n START_ACTION,\r\n SUB_FLOW\r\n}\r\n\r\nexport const DEFAULT_LINK_ATTRS = {\r\n '.connection': {stroke: '#000000', strokeWidth: 2},\r\n '.marker-target': {d: 'M 0 -5 L -10 0 L 0 5 Z' }\r\n};\r\n\r\n\r\n","import { deserialize, deserializeAs } from \"libs/cerialize\";\r\nimport { CanvasModel } from \"Core/Controls/CanvasDesigner/Models/CanvasModel\";\r\nimport { ModelState } from \"Core/Common/Enums/ModelState\";\r\n\r\nexport class DwPackageDto{\r\n\r\n constructor(init?: Partial<DwPackageDto>){ \r\n Object.assign(this, init);\r\n }\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserializeAs(CanvasModel)\r\n Canvas: CanvasModel;\r\n\r\n @deserialize\r\n State: ModelState;\r\n}","import { deserialize, deserializeAs } from \"libs/cerialize\";\r\n\r\nexport class FollowupModeDto{\r\n @deserialize\r\n Id: number;\r\n \r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n}","import { deserialize, deserializeAs } from \"libs/cerialize\";\r\n\r\nexport class NodeTypeDto{\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n}","import { Guid } from '../../../Common/Guid';\r\nimport { deserialize, deserializeAs } from \"libs/cerialize\";\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport { FollowupModeDto } from \"./FollowupModeDto\";\r\nimport { NodeTypeDto } from \"./NodeTypeDto\";\r\nimport { TriggerDto } from './TriggerDto';\r\n\r\nexport class LifecycleStepDto {\r\n\r\n constructor(init?: Partial<LifecycleStepDto>){\r\n Object.assign(this, init);\r\n }\r\n\r\n @deserialize\r\n Guid: string;\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n ActionItems: []\r\n\r\n @deserialize\r\n DateElapsed: string;\r\n\r\n @deserialize\r\n DeadlineElapsed: string;\r\n\r\n @deserialize\r\n DictionaryId: number;\r\n\r\n @deserialize\r\n Enabled: boolean\r\n\r\n @deserialize\r\n ExampleId: number;\r\n\r\n @deserialize\r\n FLifestatus: number;\r\n\r\n @deserializeAs(FollowupModeDto)\r\n FollowupMode: FollowupModeDto;\r\n\r\n @deserialize\r\n IsAutocomplete: boolean;\r\n\r\n @deserialize\r\n IsNew: boolean;\r\n\r\n @deserialize\r\n IsRetired: boolean;\r\n\r\n @deserialize\r\n Json: string;\r\n\r\n @deserialize\r\n Label: string;\r\n\r\n @deserialize\r\n LifeStatusGuid: string;\r\n\r\n @deserialize\r\n MultipleActions: boolean;\r\n\r\n @deserialize\r\n NoActionNode: boolean;\r\n\r\n @deserialize\r\n Locked: boolean;\r\n\r\n @deserialize\r\n DefaultRetired: boolean;\r\n\r\n @deserialize\r\n FSubflow: number;\r\n\r\n @deserialize\r\n FSubflowGuid: string;\r\n\r\n @deserializeAs(NodeTypeDto)\r\n NodeType: NodeTypeDto;\r\n\r\n @deserialize\r\n Sort: number;\r\n\r\n @deserialize\r\n Memo: string;\r\n\r\n @deserialize\r\n MemoTranslation: string;\r\n\r\n @deserialize\r\n MemoTranslations: Array<TranslationModel>;\r\n\r\n @deserializeAs(TranslationModel)\r\n Translations: Array<TranslationModel>;\r\n\r\n @deserializeAs(TriggerDto)\r\n Trigger: TriggerDto;\r\n\r\n @deserialize\r\n UserId: number;\r\n\r\n @deserialize\r\n DisplaySort: number;\r\n}","import { deserialize, deserializeAs } from \"libs/cerialize\";\r\nimport { DwPackageDto } from \"./DwPackageDto\";\r\nimport { ModelState } from \"../../../Common/Enums/ModelState\";\r\n\r\nexport class TriggerDto {\r\n\r\n constructor(init?: Partial<TriggerDto>){\r\n Object.assign(this, init);\r\n }\r\n\r\n @deserialize\r\n ExecuteSync: boolean;\r\n\r\n @deserializeAs(DwPackageDto)\r\n DwPackages: Array<DwPackageDto>;\r\n \r\n @deserialize\r\n State: ModelState;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class OperationResultModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tIsSuccessfull: boolean;\r\n\r\n\t@deserialize\r\n\tErrorMessage: string;\r\n\r\n\t@deserialize\r\n\tIsServerError: boolean;\r\n\r\n\t@deserialize\r\n\tErrorOccured: string;\r\n\r\n\t@deserializeAs(String)\r\n\tExceptions: Array<String>;\r\n\r\n\t@deserialize\r\n\tWarnings: string[];\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {SubFormModel} from 'Core/Models/Screens/SubFormModel'\r\nimport {ScreenDataModel} from \"Core/ScreenManager/Models/ScreenDataModel\";\r\nimport {RecordSpecsModel } from \"Core/ScreenManager/Models/RecordSpecsModel\";\r\nimport {ConcreteEntityModel} from 'QueryBuilder/Models/ConcreteEntityModel';\r\nimport {LanguageModel} from 'Core/Controls/BaseControl/Models/LanguageModel';\r\nimport {LanguageInfoModel} from \"Core/Components/Translation/Models/LanguageInfoModel\";\r\n\r\nimport {ControlToolBarModel} from 'Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlToolBarModel'\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport { IconModel } from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport { ActionSubjectRecordModel } from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\n\r\nexport class ScreenModel {\r\n\tconstructor(init?: Partial<ScreenModel>) {\r\n\t\tthis.TranslationModel = [];\r\n\t\tthis.SubForms = [];\r\n\t\tObject.assign(this, init);\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n @deserializeAs(TranslationModel)\r\n TranslationModel: Array<TranslationModel>;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tEntityNameTranslation: string;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tEntityIcon: IconModel;\r\n\r\n\t@deserialize\r\n\tEntityColor: string;\r\n\r\n\t@deserialize\r\n\tEntityIconImage: string;\r\n\r\n\t@deserialize\r\n\tFieldCollectionId: number;\r\n\r\n\t@deserialize\r\n\tTableTypeId: number;\r\n\r\n\t@deserialize\r\n TableTypeName: string;\r\n\r\n @deserialize\r\n TableTypeNameTranslation: string;\r\n\r\n @deserialize\r\n TableTypeFlowFolder: boolean;\r\n\r\n\t@deserialize\r\n\tKindId: number;\r\n\r\n\t@deserialize\r\n\tScreenTypeId: number;\r\n\r\n\t@deserialize\r\n\tScreenTypeName: string;\r\n\r\n\t@deserialize\r\n\tTemplateName: string;\r\n\r\n\t@deserialize\r\n\tIsDashMain: boolean;\r\n\r\n\t@deserialize\r\n\tIsEditScreenExist: boolean;\r\n\r\n\t@deserialize\r\n\tIsListScreenExist: boolean;\r\n\r\n\t@deserialize\r\n\tIsSpecialScreenExist: boolean;\r\n\r\n\t@deserialize\r\n\tIsDashboardScreenExist: boolean;\r\n\r\n @deserialize\r\n\tIsConsultScreenExist: boolean;\r\n\r\n @deserialize\r\n\tIsStepsScreenExist: boolean;\r\n\r\n @deserialize\r\n\tScreenDoesNotExistError: boolean;\r\n\r\n @deserialize\r\n\tScreenDoesNotExistErrorMessage: boolean;\r\n\r\n\t@deserialize\r\n\tShowFollowUp: boolean;\r\n\r\n\t@deserializeAs(SubFormModel)\r\n\tActionBar: SubFormModel;\r\n\r\n\t@deserializeAs(SubFormModel)\r\n\tBottomBar: SubFormModel;\r\n\r\n\t@deserializeAs(SubFormModel)\r\n\tSubForms: Array<SubFormModel>;\r\n\r\n\t@deserializeAs(ScreenDataModel)\r\n\tData: ScreenDataModel;\r\n\r\n\t@deserializeAs(LanguageInfoModel)\r\n\tLanguages: Array<LanguageInfoModel>;\r\n\r\n\t@deserializeAs(RecordSpecsModel)\r\n\tRecordSpecs: RecordSpecsModel;\r\n\r\n\t@deserialize\r\n\tProperties: string;\r\n\r\n\t@deserialize\r\n\tEntityProperties: string;\r\n\r\n\tDataMode: DataModes;\r\n SubjectLifestatusId: number;\r\n ActionSubjectRecord?: ActionSubjectRecordModel;\r\n IsNested: boolean;\r\n NestedLevel: number;\r\n AliasSuffix: string;\r\n\r\n\t@deserialize\r\n\tIsEnablePathRunner: boolean;\r\n}\r\n\r\nexport class FieldCollectionModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\tconstructor(id?: number, name?: string){\r\n\t\tthis.Id = isNaN(Number(id)) ? null : id;\r\n\t\tthis.Name = name;\r\n\t}\r\n}\r\n\r\nexport class TypedScreenModel {\r\n\t@deserialize\r\n\tFormId: number;\r\n\r\n\t@deserialize\r\n\tFieldCollectionId: number;\r\n\r\n\t@deserialize\r\n\tTableTypeId: number;\r\n}\r\n\r\nexport class TableType {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n GetName(): string {\r\n return this.TranslatedName ? this.TranslatedName : this.Name ? this.Name : '-'\r\n }\r\n\r\n constructor(id?: number, name?: string, translatedName?: string){\r\n\t\tthis.Id = id;\r\n this.Name = name;\r\n this.TranslatedName = translatedName;\r\n }\r\n}\r\n\r\nexport class FormTypeModel {\r\n\t@deserialize\r\n\tIsMain: boolean;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n TypeTranslatedName: string;\r\n\r\n\t@deserialize\r\n FormId: number;\r\n\r\n GetTypeName(): string {\r\n return this.TypeTranslatedName ? this.TypeTranslatedName : this.TypeName ? this.TypeName : '-'\r\n }\r\n}\r\n\r\nexport class DesignScreenModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.FieldCollections = [];\r\n\t\tthis.TypedScreens = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tFormId: number;\r\n\r\n\t@deserializeAs(ScreenModel)\r\n\tExistingScreenViewModel: ScreenModel;\r\n\r\n\t@deserializeAs(FieldCollectionModel)\r\n\tFieldCollections: Array<FieldCollectionModel>;\r\n\r\n\t@deserializeAs(TypedScreenModel)\r\n\tTypedScreens: Array<TypedScreenModel>;\r\n\r\n\t@deserializeAs(TableType)\r\n\tEntityTypes: Array<TableType>;\r\n\r\n\r\n\t@deserializeAs(ControlToolBarModel)\r\n\tControlToolbar: ControlToolBarModel;\r\n\r\n\t@deserializeAs(LanguageModel)\r\n\tLanguages: Array<LanguageModel>;\r\n\r\n\t@deserializeAs(FormTypeModel)\r\n\tScreenTypes: Array<FormTypeModel>;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tIcons: Array<IconModel>\r\n\r\n\t@deserialize\r\n\tFormProperties: string;\r\n}","import {Guid} from 'Core/Common/Guid';\r\n\r\nimport {deserialize, serialize, serializeAs} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {SubFormProperties} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\n\r\nexport class SubFormModel {\r\n constructor() {\r\n this.Guid = Guid.NewGuid();\r\n this.Controls = [];\r\n this.Properties = new SubFormProperties();\r\n this.Removable = false;\r\n }\r\n\r\n @serialize\r\n @deserialize\r\n Guid: string;\r\n\r\n @deserialize\r\n @serialize\r\n Id: number;\r\n\r\n @serialize\r\n @deserialize\r\n Name: string;\r\n\r\n @deserializeAs(ControlModel)\r\n Controls: Array<ControlModel>;\r\n\r\n @serializeAs(SubFormProperties)\r\n @deserializeAs(SubFormProperties)\r\n Properties: SubFormProperties;\r\n\r\n Removable: boolean;\r\n}","export enum PortletStates {\r\n\tNoChanges,\r\n\tNew,\r\n\tChanged,\r\n\tDeleted\r\n}","import {Event} from \"Core/Common/Event\";\r\n\r\nimport {PortletManager} from \"Core/Portlets/Managers/Runtime/PortletManager\";\r\n\r\nexport interface EventHandlerCallback {\r\n\tHandler: (portletManager: PortletManager) => void;\r\n}\r\nexport class PortletManagerEventHandlersFactory<THandlerOwner extends Event, TEventEmitter extends Event> {\r\n\tconstructor(private _handlerOwner: THandlerOwner, private _eventEmitter: TEventEmitter, private _handlers: { [eventName: string]: EventHandlerCallback }) {\r\n\r\n\t}\r\n\r\n\tBindEvent(eventName: string) {\r\n\t\tif (this._handlers[eventName]) {\r\n\t\t\tthis._eventEmitter.On(eventName, this, () => this._handlers[eventName].Handler.call(this._handlerOwner, this._eventEmitter));\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Constant\";\r\nimport {PortletRenderModes} from \"Core/Constant\"\r\n\r\nexport abstract class BasePortletManager extends Event {\r\n\tprotected renderMode: KnockoutObservable<PortletRenderModes>;\r\n\tprotected isChanged: boolean;\r\n\tprotected isReady: boolean;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.isChanged = false;\r\n\t\tthis.isReady = false;\r\n\t\tthis.renderMode = ko.observable(PortletRenderModes.View);\r\n\t\tthis.IsInViewMode = ko.computed(() => this.renderMode() === PortletRenderModes.View);\r\n\t\tthis.IsInDesignMode = ko.computed(() => this.renderMode() === PortletRenderModes.Design);\r\n\t}\r\n\r\n\tget IsReady(): boolean {\r\n\t\treturn this.isReady;\r\n\t}\r\n\r\n\tget RenderMode() {\r\n\t\treturn this.renderMode();\r\n\t}\r\n\r\n\tSwitchRenderMode(renderMode: PortletRenderModes) {\r\n\t\tthis.renderMode(renderMode);\r\n\t}\r\n\r\n\tIsInViewMode: KnockoutComputed<boolean>;\r\n\tIsInDesignMode: KnockoutComputed<boolean>;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {Guid} from \"Core/Common/Guid\"\r\n\r\nimport {Portlet} from \"Core/Portlets/Models/Runtime/Portlet\"\r\nimport {PortletStates} from \"Core/Portlets/Enums/PortletStates\"\r\nimport {IPosition} from \"Core/Portlets/Models/Common/Interfaces/IPosition\"\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\n\r\nexport class DesignedPortlet {\r\n\t@deserialize\r\n\tGuid: Guid;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n ScreenId: number;\r\n\r\n @deserializeAs(ScreenModel)\r\n ScreenModel: ScreenModel;\r\n\r\n\t@deserialize\r\n\tRowPosition: number;\r\n\r\n\t@deserialize\r\n\tColPosition: number;\r\n\r\n\tState: PortletStates;\r\n\r\n\tstatic Map(portletToSave: Portlet, position: IPosition, state: PortletStates) {\r\n\t\tlet portletStoreModel = new DesignedPortlet();\r\n\r\n\t\tportletStoreModel.Guid = portletToSave.Guid;\r\n\t\tportletStoreModel.Id = portletToSave.ObjectId;\r\n\t\tportletStoreModel.Name = portletToSave.Name || portletToSave.ScreenName;\r\n\t\tportletStoreModel.ScreenId = portletToSave.ScreenId;\r\n\t\tportletStoreModel.RowPosition = position.RowNumber;\r\n\t\tportletStoreModel.ColPosition = position.ColNumber;\r\n\t\tportletStoreModel.State = state;\r\n\r\n\t\treturn portletStoreModel;\r\n\t}\r\n} ","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport {DesignedPortlet} from \"Core/Portlets/Models/Store/DesignedPortlet\";\r\nimport {PortletSpace} from \"Core/Portlets/Models/Runtime/PortletSpace\"\r\n\r\nexport class DesignedPortletSpace {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tIsMain: boolean;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserializeAs(DesignedPortlet)\r\n\tPortlets: Array<DesignedPortlet>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Portlets = Array<DesignedPortlet>();\r\n\t}\r\n\r\n\tstatic Map(portletSpace: PortletSpace): DesignedPortletSpace {\r\n\t\tlet portletSpaceStoreModel = new DesignedPortletSpace();\r\n\r\n\t\tportletSpaceStoreModel.Id = portletSpace.ObjectId;\r\n\t\tportletSpaceStoreModel.Name = portletSpace.Name;\r\n\t\tportletSpaceStoreModel.IsMain = portletSpace.IsMain;\r\n\t\tportletSpaceStoreModel.Memo = portletSpace.Memo;\r\n\r\n\t\treturn portletSpaceStoreModel;\r\n\t}\r\n}","import {DesignedPortletSpace} from \"Core/Portlets/Models/Store/DesignedPortletSpace\";\r\n\r\nexport class PortletSpace {\r\n ObjectId: number;\r\n Name: string;\r\n IsMain: boolean;\r\n Memo: string;\r\n\r\n static Map(userPortletSpace: DesignedPortletSpace) : PortletSpace {\r\n let portletSpace = new PortletSpace();\r\n\r\n portletSpace.ObjectId = userPortletSpace.Id;\r\n portletSpace.Name = userPortletSpace.Name;\r\n portletSpace.IsMain = userPortletSpace.IsMain;\r\n portletSpace.Memo = userPortletSpace.Memo;\r\n\r\n\r\n return portletSpace;\r\n }\r\n}\r\n","import {Event} from \"Core/Common/Event\";\r\n\r\nexport interface EventHandlerCallback {\r\n\tHandler: () => void;\r\n}\r\n\r\nexport class PortletBarEventHandlersFactory<THandlerOwner extends Event, TEventEmmiter extends Event> {\r\n\tconstructor(private _handerOwner: THandlerOwner, private _eventEmitter: TEventEmmiter, private _handlers: { [eventName: string]: EventHandlerCallback }) {\r\n\r\n\t}\r\n\r\n\tBindEvent(eventName: string) {\r\n\t\tif (this._handlers[eventName]) {\r\n\t\t\tthis._eventEmitter.On(eventName, this, () => {\r\n\t\t\t\tthis._handlers[eventName].Handler.apply(this._handerOwner);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\"\r\n\r\nimport {IPortletRuntimeSettings} from \"Core/Controls/PortletBar/Interfaces/IPortletRuntimeSettings\"\r\nimport {ReadableRuntimeSettings} from \"Core/Controls/PortletBar/Utils/ReadableRuntimeSettings\"\r\n\r\nexport class RuntimeSettingsReader {\r\n\tconstructor(public RuntimeSettings?: IPortletRuntimeSettings) { }\r\n\r\n\tstatic GetRuntimeSettings(readableRuntimeSettings: ReadableRuntimeSettings): IPortletRuntimeSettings {\r\n\t\tif (!readableRuntimeSettings) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet dataSpaceColor = readableRuntimeSettings.UsePortletBarColor ? readableRuntimeSettings.PortletColor : \"#fff\";\r\n\t\t\r\n\t\tlet reader = new RuntimeSettingsReader({\r\n\t\t\tReadOnly: ko.observable(readableRuntimeSettings.ReadOnly),\r\n\t\t\tSearch: ko.observable(readableRuntimeSettings.Search),\r\n\t\t\tPortletColor: ko.observable(readableRuntimeSettings.PortletColor),\r\n\t\t\tUsePortletBarColor: ko.observable(readableRuntimeSettings.UsePortletBarColor),\r\n\t\t\tDataSpaceColor: ko.observable(dataSpaceColor),\r\n\t\t\tKind: ko.observable(readableRuntimeSettings.Kind),\r\n\t\t\tLength: ko.observable(readableRuntimeSettings.Length),\r\n\t\t\tHeaderText: ko.observable(readableRuntimeSettings.HeaderText),\r\n\t\t\tCollapseButton: ko.observable(readableRuntimeSettings.CollapseButton),\r\n\t\t\tExpandButton: ko.observable(readableRuntimeSettings.ExpandButton),\r\n\t\t\tSettingsButton: ko.observable(readableRuntimeSettings.SettingsButton),\r\n\t\t\tReloadButton: ko.observable(readableRuntimeSettings.ReloadButton),\r\n\t\t\tRemoveButton: ko.observable(readableRuntimeSettings.RemoveButton),\r\n\t\t\tUseBodySpace: ko.observable(readableRuntimeSettings.PortletColor !== dataSpaceColor)\r\n\t\t});\r\n\r\n\t\treturn reader.RuntimeSettings;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {EVENTS, PortletRenderModes, RenderModes} from \"Core/Constant\";\r\nimport {P} from \"Core/Common/Promise\";\r\n\r\nimport {BasePortletManager} from \"Core/Portlets/Managers/Base/BasePortletManager\"\r\nimport {EntityPortlet} from \"Core/Portlets/Models/Design/Explorer/EntityPortlet\"\r\nimport type {Portlet} from \"Core/Portlets/Models/Runtime/Portlet\"\r\nimport {ScreenStore} from 'Core/ScreenManager/Stores/ScreenStore';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {IPortletParams} from \"Core/Portlets/IPortletParams\";\r\nimport {ScreenDataModel} from \"Core/ScreenManager/Models/ScreenDataModel\";\r\n\r\nimport {PortletStates} from \"Core/Portlets/Enums/PortletStates\"\r\nimport {IPosition} from \"Core/Portlets/Models/Common/Interfaces/IPosition\";\r\n\r\nimport {EventHandlerCallback, PortletBarEventHandlersFactory} from \"Core/Portlets/Utils/PortletBarEventHandlersFactory\"\r\nimport {RemoveButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/RemoveButtonViewModel\"\r\nimport {SettingsButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/SettingsButtonViewModel\";\r\nimport {ReloadButtonViewModel} from 'Core/Controls/PortletBar/Models/Buttons/ReloadButtonViewModel';\r\n\r\nimport {SettingsButton} from \"Core/Controls/PortletBar/Managers/Buttons/SettingsButton\";\r\nimport {RemoveButton} from \"Core/Controls/PortletBar/Managers/Buttons/RemoveButton\";\r\nimport {ReloadButton} from 'Core/Controls/PortletBar/Managers/Buttons/ReloadButton';\r\n\r\nimport {IPortletRuntimeSettings} from \"Core/Controls/PortletBar/Interfaces/IPortletRuntimeSettings\";\r\n\r\nimport {RuntimeSettingsReader} from \"Core/Controls/PortletBar/Utils/RuntimeSettingsReader\";\r\n\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager'\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport PortletManagerTemplate from 'Core/Portlets/Templates/PortletManager.html';\r\n\r\nko.templates[\"Core/Portlets/Templates/PortletManager\"] = PortletManagerTemplate;\r\n\r\nexport class PortletManager extends BasePortletManager {\r\n private _params: IPortletParams;\r\n private _portlet: Portlet;\r\n private _labels = LABELS;\r\n\r\n get Portlet() {\r\n return this._portlet;\r\n }\r\n\r\n constructor(params: IPortletParams) {\r\n super();\r\n\r\n this._params = params;\r\n this.renderMode(params.IsNew ? PortletRenderModes.Design : PortletRenderModes.View);\r\n }\r\n\r\n async LoadPortlet(portletId: number, screenId: number, position: IPosition, model: ScreenModel) {\r\n this.SetPortletSubject(model);\r\n\r\n const portlet = (await import (\"Core/Portlets/Models/Runtime/Portlet\")).Portlet;\r\n this._portlet = new portlet(model);\r\n this.Portlet.ObjectId = portletId;\r\n this.Portlet.Position = position;\r\n\r\n this.BindPortletEvents();\r\n this.ApplyRuntimeSettings();\r\n }\r\n\r\n GeneratePortlet(portlet: EntityPortlet): P.Promise<any> {\r\n let deferedResult = P.defer<any>();\r\n\r\n ScreenStore.GetScreenById({\r\n ScreenId: portlet.ScreenId\r\n })\r\n .then(async (screen: ScreenModel) => {\r\n this.SetPortletSubject(screen);\r\n\r\n const portletType = (await import (\"Core/Portlets/Models/Runtime/Portlet\")).Portlet;\r\n\r\n this._portlet = new portletType(screen);\r\n this.Portlet.State = this._params.IsNew ? PortletStates.New : PortletStates.NoChanges;\r\n\r\n this.Portlet.Position = portlet.Position;\r\n this.Portlet.OldPosition = portlet.Position;\r\n\r\n this.BindPortletEvents();\r\n this.ApplyRuntimeSettings();\r\n this.SwitchRenderMode(PortletRenderModes.Design);\r\n\r\n deferedResult.resolve(null);\r\n });\r\n\r\n return deferedResult.promise();\r\n }\r\n\r\n ReloadPortlet() {\r\n this._portlet.Refresh();\r\n }\r\n\r\n SwitchRenderMode(renderMode: PortletRenderModes) {\r\n if (renderMode === PortletRenderModes.View) {\r\n renderMode = this.Portlet.GetRuntimeSettings().ReadOnly() ? PortletRenderModes.View : PortletRenderModes.Edit;\r\n }\r\n\r\n super.SwitchRenderMode(renderMode);\r\n\r\n this.Portlet.PortletBar.Buttons()\r\n .filter(button => button instanceof RemoveButton)\r\n .forEach(button => (<RemoveButtonViewModel>button.ViewModel).DisplayValue(button.ViewModel.Properties().Visible() && renderMode === PortletRenderModes.Design));\r\n\r\n this.Portlet.PortletBar.Buttons()\r\n .filter(button => button instanceof SettingsButton)\r\n .forEach(button => (<SettingsButtonViewModel>button.ViewModel).DisplayValue(button.ViewModel.Properties().Visible() && renderMode !== PortletRenderModes.Design));\r\n }\r\n\r\n SetState(state: PortletStates) {\r\n this.Portlet.State = state;\r\n }\r\n\r\n SetStateForcibly(state: PortletStates) {\r\n this.Portlet.State = state;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/Portlets/Templates/PortletManager\";\r\n }\r\n\r\n AfterRender() {\r\n }\r\n\r\n AddRuntimeSettings() {\r\n let runtimeSettings = this.Portlet.GetRuntimeSettings();\r\n\r\n let userVariables = UserVarsManager.Instance;\r\n\r\n userVariables.SetPortletSettings(this.Portlet.ObjectId, ko.toJSON(runtimeSettings));\r\n }\r\n\r\n private SetPortletSubject(model: ScreenModel) {\r\n if (this._params.Subject) {\r\n model.EntityId = this._params.Subject.EntityId;\r\n model.Data = new ScreenDataModel();\r\n model.Data.RecordId = this._params.Subject && this._params.Subject.RecordId;\r\n }\r\n }\r\n\r\n private GetRenderMode(screen: ScreenModel): RenderModes {\r\n let [portletBarControl, ...otherControls] = screen.SubForms[0].Controls;\r\n\r\n let config;\r\n\r\n try {\r\n config = JSON.parse(portletBarControl.Properties);\r\n } catch (err) {\r\n return RenderModes.View;\r\n }\r\n\r\n if (!config || !config.ReadOnly) {\r\n return RenderModes.View;\r\n }\r\n\r\n return config.ReadOnly.Properties[0].ReadOnly ? RenderModes.View : RenderModes.Edit;\r\n }\r\n\r\n private ApplyRuntimeSettings() {\r\n this.Portlet.ApplyRuntimeSettings(this.GetRuntimeSettings());\r\n }\r\n\r\n private GetRuntimeSettings(): IPortletRuntimeSettings {\r\n let variablesManager = UserVarsManager.Instance;\r\n\r\n let runtimeSettings = variablesManager.GetPortleteSettings(this.Portlet.ObjectId);\r\n\r\n return RuntimeSettingsReader.GetRuntimeSettings(runtimeSettings);\r\n }\r\n\r\n private UpdateRuntimeSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n let userVariables = UserVarsManager.Instance;\r\n if (this.Portlet.State !== PortletStates.New) {\r\n userVariables.SetPortletSettings(this.Portlet.ObjectId, ko.toJSON(runtimeSettings));\r\n }\r\n }\r\n\r\n private BindPortletEvents() {\r\n let controlButtonsClickEvents = EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS;\r\n\r\n let controlButtonsEventsHandlers: { [eventName: string]: EventHandlerCallback } = {};\r\n controlButtonsEventsHandlers[EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.REMOVE_BUTTON_CLICKED] = {Handler: this.RemovePortlet}\r\n controlButtonsEventsHandlers[EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.RELOAD_BUTTON_CLICKED] = {Handler: this.ReloadPortlet}\r\n\r\n let controlButtonsHandlersFactory = new PortletBarEventHandlersFactory<PortletManager, Portlet>(this, this.Portlet, controlButtonsEventsHandlers);\r\n\r\n Object.keys(controlButtonsClickEvents).forEach(event => {\r\n controlButtonsHandlersFactory.BindEvent(controlButtonsClickEvents[event]);\r\n });\r\n\r\n this.Portlet.On(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED, this, eventArgs => this.UpdateRuntimeSettings(eventArgs.data));\r\n }\r\n\r\n private RemovePortlet() {\r\n this.Trigger(EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.REMOVE_BUTTON_CLICKED, this);\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: Portlet--> <!-- ko template: {name: GetTemplateName(), afterRender: AfterRender} --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Constant\";\r\n\r\nimport {PortletsCollection} from \"Core/Portlets/Models/Design/Explorer/PortletsCollection\"\r\nimport PortleteExplolerTemplate from \"Core/Portlets/Templates/PortletExplorer.html\";\r\nko.templates[\"Core/Portlets/Templates/PortletExplorer\"] = PortleteExplolerTemplate;\r\n\r\nexport class PortletsExplorer extends Event {\r\n\tprivate _container: HTMLElement;\r\n\tprivate _portletsCollection: KnockoutObservable<PortletsCollection>;\r\n\r\n\tconstructor(portletsCollection: PortletsCollection) {\r\n\t\tsuper();\r\n\t\tthis._portletsCollection = ko.observable(portletsCollection);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn \"Core/Portlets/Templates/PortletExplorer\";\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis.Trigger(EVENTS.PORTLETS.EXPLORER_LOADED);\r\n\t}\r\n} ","// Module\nvar code = \"<div id=\\\"accordion\\\" class=\\\"panel-group\\\"> <!-- ko foreach: _portletsCollection().Entities --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr: {href: '#' + Name}, text: TableTranslatedName || Name\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Name}\\\" class=\\\"panel-collapse collapse\\\"> <div data-bind=\\\"foreach: Portlets\\\" class=\\\"panel-body\\\"> <div class=\\\"portlet-draggable\\\"> <div data-bind=\\\"attr: {screenid: ScreenId, guid: Guid, name: ScreenName}, text: ScreenTranslatedName || ScreenName\\\"></div> </div> </div> </div> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {IPosition} from \"Core/Portlets/Models/Common/Interfaces/IPosition\"\r\nimport {ScreenModel} from \"Core/Models/Screens/ScreenModel\"\r\n\r\nimport {Guid} from \"Core/Common/Guid\"\r\n\r\nexport class EntityPortlet {\r\n\tGuid: Guid;\r\n\r\n\t@deserialize\r\n\tScreenId: number;\r\n\r\n\t@deserialize\r\n ScreenName: string;\r\n\r\n @deserialize\r\n ScreenTranslatedName: string;\r\n\r\n @deserializeAs(ScreenModel) \r\n ScreenModel: ScreenModel;\r\n\r\n\tPosition: IPosition;\r\n\tOldPosition: IPosition;\r\n} ","import {IPosition} from \"Core/Portlets/Models/Common/Interfaces/IPosition\"\r\nimport {IPortletInfo} from \"Core/Portlets/Models/Common/Interfaces/IPortletInfo\"\r\n\r\nexport interface IKeyValuePair<TKey, TValue> {\r\n\tKey: TKey;\r\n\tValue: TValue;\r\n}\r\n\r\nexport class GuidToPortletInfoMap {\r\n\tprivate _keys: Array<string>;\r\n\tprivate _dictionary: { [guid: string]: IPortletInfo };\r\n\r\n\tconstructor() {\r\n\t\tthis._keys = new Array<string>();\r\n\t\tthis._dictionary = {};\r\n\t}\r\n\r\n\tAdd(guid: string, portletInfo: IPortletInfo) {\r\n\t\tthis._keys.push(guid);\r\n\t\tthis._dictionary[guid] = portletInfo;\r\n\t}\r\n\r\n\tGet(guid: string) {\r\n\t\treturn this._dictionary[guid];\r\n\t}\r\n\r\n\tToArray() {\r\n\t\tlet array = new Array<IKeyValuePair<string, IPortletInfo>>();\r\n\r\n\t\tthis._keys.forEach(key => array.push({\r\n\t\t\tKey: key,\r\n\t\t\tValue: this._dictionary[key]\r\n\t\t}));\r\n\r\n\t\treturn array;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport {Guid} from \"Core/Common/Guid\"\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Constant\";\r\n\r\nimport {PortletsCollection} from \"Core/Portlets/Models/Design/Explorer/PortletsCollection\"\r\nimport {PortletsExplorer} from \"Core/Portlets/Models/Design/Explorer/PortletsExplorer\"\r\nimport {IPosition} from \"Core/Portlets/Models/Common/Interfaces/IPosition\"\r\nimport {EntityPortlet} from \"Core/Portlets/Models/Design/Explorer/EntityPortlet\"\r\nimport {PortletManager} from \"Core/Portlets/Managers/Runtime/PortletManager\"\r\nimport {PortletStates} from \"Core/Portlets/Enums/PortletStates\"\r\nimport {GuidToPortletInfoMap} from \"Core/Portlets/Utils/GuidToPortletInfoMap\"\r\nimport {IPortletInfo} from \"Core/Portlets/Models/Common/Interfaces/IPortletInfo\";\r\n\r\nexport interface IDraggable {\r\n\tGuid: Guid;\r\n\tPrevPosition: IPosition;\r\n\tNewPosition: IPosition;\r\n}\r\n\r\nexport class PortletDesignManager extends Event {\r\n\tprivate _portletsCollection: PortletsCollection;\r\n\tprivate _portletExplorer: KnockoutObservable<PortletsExplorer>;\r\n\tprivate _draggedFromExplorer: boolean;\r\n\r\n\tprivate _portletExplorereLoaded: boolean;\r\n\tprivate _draggablePortlets: Array<JQuery>;\r\n\tprivate _attachedPortlets: JQuery;\r\n\r\n\tconstructor(portletsCollection: PortletsCollection) {\r\n\t\tsuper();\r\n\r\n\t\tportletsCollection.Entities.map(entity => entity.Portlets.forEach(portlet => portlet.Guid = Guid.NewGuid()));\r\n\r\n\t\tthis._portletsCollection = portletsCollection;\r\n\t\tthis._portletExplorer = ko.observable(new PortletsExplorer(portletsCollection));\r\n\t\tthis._draggedFromExplorer = false;\r\n\r\n\t\tthis._draggablePortlets = [];\r\n\r\n\t\tthis.BindEvents();\r\n\t}\r\n\r\n\tDestroyDragAndDrop() {\r\n\t\tthis._draggablePortlets.forEach((draggable: JQuery) => draggable.sortable(\"destroy\"));\r\n\t}\r\n\r\n\tInitDesignMode() {\r\n\t\tlet $explorer = $(\".portlet-explorer\");\r\n\t\tlet $exploredPortlets = $explorer.find(\".portlet-draggable\");\r\n\t\tlet $attachedPortlets = $(\".portlet-attached\");\r\n\r\n\t\tthis._draggablePortlets = new Array<JQuery>($exploredPortlets, $attachedPortlets);\r\n\t\tthis._attachedPortlets = $attachedPortlets;\r\n\r\n\t\tvar self = this;\r\n\t\t$exploredPortlets.sortable({\r\n\t\t\tconnectWith: $attachedPortlets,\r\n\t\t\thelper(event, portlet: JQueryUI.Sortable) {\r\n\t\t\t\tthis.copyHelper = portlet.clone().insertAfter(portlet);\r\n\r\n\t\t\t\t$(this).data('copied', true);\r\n\r\n\t\t\t\treturn portlet.clone();\r\n\t\t\t},\r\n\t\t\tstart() {\r\n\t\t\t\tself._draggedFromExplorer = true;\r\n\t\t\t},\r\n\t\t\tbeforeStop(event, portlet) {\r\n\t\t\t\tlet copied = $(this).data('copied');\r\n\t\t\t\tlet droppedIntoExplorer = portlet.item.closest('.portlet-explorer').length > 0;\r\n\r\n\t\t\t\tif (copied && droppedIntoExplorer) {\r\n\t\t\t\t\tthis.copyHelper.remove();\r\n\t\t\t\t\tthis.copyHelper = null;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tstop() {\r\n\t\t\t\tlet copied = $(this).data('copied');\r\n\r\n\t\t\t\tif (!copied) {\r\n\t\t\t\t\tthis.copyHelper.remove();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.copyHelper = null;\r\n\t\t\t}\r\n\t\t}).disableSelection();\r\n\r\n\t\t$attachedPortlets.sortable({\r\n\t\t\tconnectWith: $attachedPortlets,\r\n\t\t\thandle: \".portlet-title\",\r\n\t\t\tplaceholder: \"portlet-sortable-placeholder\",\r\n\t\t\topacity: .8,\r\n\t\t\trevert: 250,\r\n\t\t\tforcePlaceholderSize: true,\r\n\t\t\ttolerance: \"pointer\",\r\n\t\t\tcancel: \".portlet-fullscreen\",\r\n\t\t\tstart(event, portlet) {\r\n\t\t\t\tself._draggedFromExplorer = false;\r\n\r\n\t\t\t\tlet rowNumber = portlet.item.index();\r\n\t\t\t\tlet colNumber = portlet.item.closest('.portlet-block').data('number');\r\n\r\n\t\t\t\tportlet.item.attr('data-prev-row', rowNumber);\r\n\t\t\t\tportlet.item.attr('data-prev-col', colNumber);\r\n\t\t\t},\r\n\t\t\tupdate: (event, portlet) => {\r\n\t\t\t\tlet screenId = parseInt(portlet.item.attr('screenId'));\r\n\t\t\t\tlet guid = portlet.item.attr('guid');\r\n\t\t\t\tlet rowPositon = portlet.item.index();\r\n\t\t\t\tlet colPositon = portlet.item.closest('.portlet-block').data('number');\r\n\r\n\t\t\t\tlet position: IPosition = {\r\n\t\t\t\t\tRowNumber: rowPositon,\r\n\t\t\t\t\tColNumber: colPositon\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (self._draggedFromExplorer) {\r\n\t\t\t\t\tportlet.item.remove();\r\n\t\t\t\t\tself.AddNewPortlet(guid, screenId, position);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet prevRowPosition = portlet.item.data('prevRow');\r\n\t\t\t\t\tlet prevColPosition = portlet.item.data('prevCol');\r\n\r\n\t\t\t\t\tlet prevPosition: IPosition = {\r\n\t\t\t\t\t\tRowNumber: prevRowPosition,\r\n\t\t\t\t\t\tColNumber: prevColPosition\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tself.ChangePortletPosition(guid, prevPosition, position);\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}).disableSelection();\r\n\t}\r\n\r\n\tGetPositions(): GuidToPortletInfoMap {\r\n\t\tlet guidToPosition = new GuidToPortletInfoMap();\r\n\r\n\t\tthis._attachedPortlets.toArray().forEach(portletScope => {\r\n\t\t\tlet $portletScope = $(portletScope);\r\n\t\t\tlet $portlets = $portletScope.find('.portlet');\r\n\r\n\t\t\t$portlets.toArray().forEach(portlet => {\r\n\t\t\t\tlet $portlet = $(portlet);\r\n\t\t\t\tlet guid = $portlet.attr('guid');\r\n\r\n\t\t\t\tlet position: IPosition = {\r\n\t\t\t\t\tRowNumber: $portlet.index(),\r\n\t\t\t\t\tColNumber: $portlet.closest('.portlet-attached').data('number')\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet state = $portlet.attr('state');\r\n\r\n\t\t\t\tlet portletInfo: IPortletInfo = {\r\n\t\t\t\t\tPosition: position,\r\n\t\t\t\t\tState: PortletStates[state]\r\n\t\t\t\t};\r\n\r\n\t\t\t\tguidToPosition.Add(guid, portletInfo);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn guidToPosition;\r\n\t}\r\n\r\n\tprivate OnPortletExlorerLoaded() {\r\n\t\tif (!this._portletExplorereLoaded) {\r\n\t\t\tthis.InitDesignMode();\r\n\t\t}\r\n\t\tthis._portletExplorereLoaded = true;\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\t\tthis._portletExplorer().On(EVENTS.PORTLETS.EXPLORER_LOADED, this, () => this.OnPortletExlorerLoaded());\r\n\t}\r\n\r\n\tprivate AddNewPortlet(guid: Guid, screenId: number, position: IPosition) {\r\n\t\tlet portlet = new EntityPortlet();\r\n\t\tportlet.Guid = guid;\r\n\t\tportlet.ScreenId = screenId;\r\n\t\tportlet.Position = position;\r\n\r\n\t\tthis.Trigger(EVENTS.PORTLETS.NEW_PORTLET_ADDED, portlet);\r\n\t}\r\n\r\n\tprivate ChangePortletPosition(guid: Guid, prevPosition: IPosition, newPosition: IPosition) {\r\n\t\tlet droppedObject: IDraggable = {\r\n\t\t\tGuid: guid,\r\n\t\t\tPrevPosition: prevPosition,\r\n\t\t\tNewPosition: newPosition\r\n\t\t};\r\n\r\n\t\tthis.Trigger(EVENTS.PORTLETS.PORTLET_POSITION_CHANGED, droppedObject);\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport {EntityPortlets} from \"Core/Portlets/Models/Design/Explorer/EntityPortlets\"\r\n\r\nexport class PortletsCollection {\r\n\t@deserialize\r\n\tEntities: Array<EntityPortlets>\t\r\n} \r\n","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\n\r\nimport {DesignedPortletSpace} from \"Core/Portlets/Models/Store/DesignedPortletSpace\"\r\nimport {PortletsCollection} from \"Core/Portlets/Models/Design/Explorer/PortletsCollection\"\r\nimport {AddPortletSpaceDto} from \"Core/Portlets/Models/Store/AddPortletSpaceDto\";\r\nimport {CopyPortletSpaceDto} from \"Core/Portlets/Models/Store/CopyPortletSpaceDto\";\r\n\r\nexport class PortletSpaceStore {\r\n\tstatic GetPortletSpaces(controlId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.GET_PORTLET_SPACES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: {controlId: controlId || 0}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic GetMainPortletSpace(): P.Promise<DesignedPortletSpace> {\r\n\t\tlet deferredResult = P.defer<DesignedPortletSpace>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.GET_PORTLET_SPACE,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(portletSpace => deferredResult.resolve(<DesignedPortletSpace>Deserialize(portletSpace, DesignedPortletSpace)))\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetPortletSpace(id: number): P.Promise<DesignedPortletSpace> {\r\n\t\tlet deferredResult = P.defer<DesignedPortletSpace>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.GET_PORTLET_SPACE_BY_ID,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: {id: id}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(portletSpace => deferredResult.resolve(<DesignedPortletSpace>Deserialize(portletSpace, DesignedPortletSpace)))\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetPortletsExplorer(): P.Promise<PortletsCollection> {\r\n\t\tlet deferredResult = P.defer<PortletsCollection>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.GET_AVAILABLE_PORTLETS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(portletEntities => deferredResult.resolve(<PortletsCollection>Deserialize(portletEntities, PortletsCollection)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdatePortletSpace(changedPortletSpace: DesignedPortletSpace): P.Promise<any> {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.UPDATE_PORTLET_SPACE,\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: changedPortletSpace\r\n\t\t});\r\n\t}\r\n\r\n\tstatic CreatePortletSpace(params: AddPortletSpaceDto) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.CREATE_PORTLET_SPACE,\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t});\r\n\t}\r\n\r\n\tstatic CopyPortletSpace(params: CopyPortletSpaceDto) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.COPY_PORTLET_SPACE,\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t});\r\n\t}\r\n\r\n\tstatic UpdatePortletSpaceInfo(portletSpaceId: number, name: string, isMain?: boolean) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.UPDATE_PORTLET_SPACE_INFO,\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: {Id: portletSpaceId, Name: name, IsMain: isMain}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic BindToControl(portletSpaceId: number, controlId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.BIND_TO_CONTROL,\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: {PortletSpaceId: portletSpaceId, controlId: controlId}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic DeletePortletSpace(id: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.DELETE_PORTLET_SPACE,\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: {id: id}\r\n\t\t});\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {PortletSpace} from \"Core/Portlets/Models/Runtime/PortletSpace\"\r\n\r\nexport class PortletSpaceEditorModel {\r\n PortletSpaceName: KnockoutObservable<string>;\r\n\r\n ShowCopyFromDropdown: KnockoutComputed<boolean>;\r\n CopyFromPortletSpace: KnockoutObservable<PortletSpace>;\r\n AllPortletSpaces: KnockoutObservableArray<PortletSpace>;\r\n\r\n constructor() {\r\n this.PortletSpaceName = ko.observable('').extend({\r\n required: {\r\n message: LABELS.PLEASE_ENTER_PORTLET_SPACE_NAME\r\n }\r\n });\r\n\r\n this.AllPortletSpaces = ko.observableArray([]);\r\n this.CopyFromPortletSpace = ko.observable(null);\r\n this.ShowCopyFromDropdown = ko.computed(() => _.any(this.AllPortletSpaces()));\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport {PortletSpaceEditorModel} from \"Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModel\";\r\nimport {PortletSpace} from \"Core/Portlets/Models/Runtime/PortletSpace\"\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport Template from 'Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModal.html';\r\n\r\nko.templates['Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModal'] = Template;\r\n\r\nexport const EVENTS = {\r\n SAVE_PORTLET_SPACE: 'SAVE_PORTLET_SPACE'\r\n};\r\n\r\nexport interface IPortletSpaceEditorParams {\r\n Name?: string;\r\n AllPortletSpaces?: Array<PortletSpace>;\r\n}\r\n\r\nexport interface ISavePortletSpaceParams {\r\n Name: string;\r\n CopyFromId: number;\r\n}\r\n\r\nexport class PortletSpaceEditorModal extends Event {\r\n private _model: KnockoutValidatedObservable<PortletSpaceEditorModel>;\r\n private _modal: Modal;\r\n private _labels = LABELS;\r\n\r\n constructor(params: IPortletSpaceEditorParams) {\r\n super();\r\n\r\n this._model = ko.validatedObservable(new PortletSpaceEditorModel());\r\n\r\n if (params.Name) {\r\n this._model().PortletSpaceName(params.Name);\r\n }\r\n\r\n if (params.AllPortletSpaces && _.any(params.AllPortletSpaces)) {\r\n const newPortletSpace = new PortletSpace();\r\n newPortletSpace.ObjectId = 0;\r\n newPortletSpace.Name = this._labels.NEW;\r\n\r\n let allPortletSpaces = [newPortletSpace];\r\n params.AllPortletSpaces.forEach(val => allPortletSpaces.push(Object.assign({}, val)));\r\n\r\n this._model().AllPortletSpaces(allPortletSpaces);\r\n this._model().CopyFromPortletSpace(newPortletSpace);\r\n }\r\n\r\n this._modal = new Modal({\r\n addClass: 'jBox-padding-15px',\r\n width: 350,\r\n minHeight: 200\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this.InitValidation();\r\n }\r\n\r\n InitValidation() {\r\n ko.validation.init({ insertMessages: false }, true);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModal';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Show() {\r\n this._modal.Show();\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n }\r\n\r\n IsValid() {\r\n if (!this._model.isValid()) {\r\n this._model.errors.showAllMessages();\r\n }\r\n\r\n return this._model.isValid();\r\n }\r\n\r\n SavePortletSpace() {\r\n if (this.IsValid()) {\r\n const model = this._model();\r\n\r\n const params: ISavePortletSpaceParams = {Name: model.PortletSpaceName(), CopyFromId: model.CopyFromPortletSpace() && model.CopyFromPortletSpace().ObjectId};\r\n this.Trigger(EVENTS.SAVE_PORTLET_SPACE, params);\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"form\\\"> <fieldset> <legend> <span data-bind=\\\"text: _labels.PORTLET_SPACE_INFO\\\"></span> </legend> <!--ko with: _model--> <div class=\\\"form-group\\\"> <span data-bind=\\\"text: $parent._labels.PORTLET_SPACE_NAME\\\"></span> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"value: PortletSpaceName\\\"> <span data-bind=\\\"validationMessage: PortletSpaceName\\\" class=\\\"validation-message\\\"></span> </div> <!-- ko if: ShowCopyFromDropdown() --> <div class=\\\"form-group\\\"> <span data-bind=\\\"text: $parent._labels.SELECT_EXISTING_PORTLET_SPACE\\\"></span> <select class=\\\"form-control\\\" data-bind=\\\"options: AllPortletSpaces, optionsText: 'Name', value: CopyFromPortletSpace\\\"></select> </div> <!--/ko--> <!--/ko--> <div> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: SavePortletSpace\\\"> <span data-bind=\\\"text: _labels.SAVE\\\"></span> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: Close\\\"> <span data-bind=\\\"text: _labels.CANCEL\\\"></span> </button> </div> </fieldset> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as $ from \"jquery\";\r\nimport * as _ from 'underscore';\r\nimport \"bootstrapContextMenu\";\r\n\r\nimport {EventHandlerCallback, PortletManagerEventHandlersFactory} from \"Core/Portlets/Utils/PortletManagerEventHandlersFactory\"\r\n\r\nimport {EVENTS} from \"Core/Constant\";\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {PortletRenderModes} from \"Core/Constant\"\r\nimport {BasePortletManager} from \"Core/Portlets/Managers/Base/BasePortletManager\"\r\nimport {DesignedPortletSpace} from \"Core/Portlets/Models/Store/DesignedPortletSpace\"\r\nimport {DesignedPortlet} from \"Core/Portlets/Models/Store/DesignedPortlet\"\r\nimport {PortletSpace} from \"Core/Portlets/Models/Runtime/PortletSpace\"\r\nimport {EntityPortlet} from \"Core/Portlets/Models/Design/Explorer/EntityPortlet\"\r\nimport {PortletManager} from \"Core/Portlets/Managers/Runtime/PortletManager\"\r\nimport {PortletDesignManager, IDraggable} from \"Core/Portlets/Managers/Design/PortletDesignManager\"\r\nimport {PortletSpaceStore} from \"Core/Portlets/Stores/PortletSpaceStore\"\r\nimport {PortletStates} from \"Core/Portlets/Enums/PortletStates\"\r\n\r\nimport {\r\n\tPortletSpaceEditorModal,\r\n\tISavePortletSpaceParams,\r\n\tEVENTS as PORTLET_SPACE_EDITOR_EVENTS\r\n} from \"Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModal\";\r\n\r\nimport {\r\n\tTypes as DecisionDialogTypes,\r\n\tEVENTS as DECISION_DIALOG_EVENTS,\r\n\tDecisionDialog\r\n} from \"Core/Components/Dialogs/DecisionDialog/DecisionDialog\";\r\nimport {\r\n\tConfirmationDialog,\r\n\tTypes as DialogTypes,\r\n\tEVENTS as DIALOG_EVENTS\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport {IPortletSpaceParams} from \"Core/Portlets/IPortletSpaceParams\";\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport PortletSpaceTemplate from \"Core/Portlets/Templates/PortletSpace.html\";\r\nimport Rejection = P.Rejection;\r\n\r\nko.templates[\"Core/Portlets/Templates/PortletSpace\"] = PortletSpaceTemplate;\r\n\r\nexport class PortletSpaceManager extends BasePortletManager {\r\n\tprivate _params: IPortletSpaceParams;\r\n\tprivate _mainPortletSpaceId: number;\r\n\r\n\tprivate _portletSpaces: KnockoutObservableArray<PortletSpace>;\r\n\tprivate _portletSpace: KnockoutObservable<PortletSpace>;\r\n\r\n\tprivate _portletManagers1: KnockoutObservableArray<PortletManager>;\r\n\tprivate _portletManagers2: KnockoutObservableArray<PortletManager>;\r\n\tprivate _portletManagers3: KnockoutObservableArray<PortletManager>;\r\n\r\n\tprivate _newPortlets: Array<PortletManager>;\r\n\tprivate _removedPortlets: Array<PortletManager>;\r\n\r\n\tprivate _portletDesignManager: KnockoutObservable<PortletDesignManager>;\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\r\n\tprivate _isRendered: KnockoutObservable<boolean>;\r\n\tprivate _portletsAreLoaded: KnockoutObservable<boolean>;\r\n\r\n\tprivate _labels = LABELS;\r\n\r\n\tIsChanged: KnockoutObservable<boolean>;\r\n\tIsMain: KnockoutComputed<boolean>;\r\n\r\n\tconstructor(params: IPortletSpaceParams) {\r\n\t\tsuper();\r\n\r\n\t\tthis._params = params;\r\n\t\tthis._portletSpaces = ko.observableArray([]);\r\n\t\tthis._portletSpace = ko.observable(null);\r\n\t\tthis._portletDesignManager = ko.observable(null);\r\n\r\n\t\tthis._portletManagers1 = ko.observableArray([]);\r\n\t\tthis._portletManagers2 = ko.observableArray([]);\r\n\t\tthis._portletManagers3 = ko.observableArray([]);\r\n\r\n\t\tthis.IsChanged = ko.observable(false);\r\n\t\tthis.IsMain = ko.computed(() => this._portletSpace() && this._portletSpace().ObjectId === this._mainPortletSpaceId);\r\n\r\n\t\tthis._isReady = ko.observable(true);\r\n\r\n\t\tthis._isRendered = ko.observable(false);\r\n\t\tthis._portletsAreLoaded = ko.observable(false);\r\n\t}\r\n\r\n\tget IsReady(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tSwitchRenderMode(renderMode: PortletRenderModes) {\r\n\t\tsuper.SwitchRenderMode(renderMode);\r\n\r\n\t\tthis.GetPortletManagers().forEach((columnManagers: KnockoutObservableArray<PortletManager>) =>\r\n\t\t\tcolumnManagers().forEach((manager: PortletManager) => manager.SwitchRenderMode(renderMode))\r\n\t\t);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/Portlets/Templates/PortletSpace\";\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis._isRendered(true);\r\n\t\treturn this.IsReady;\r\n\t}\r\n\r\n\tLoad() {\r\n\t\treturn this.LoadPortletSpaces()\r\n\t\t\t.then(() => {\r\n\t\t\t\tif (this._mainPortletSpaceId) {\r\n\t\t\t\t\treturn this.LoadPortlets(this._mainPortletSpaceId)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tChangePortletSpace(portletSpaceId: number) {\r\n\t\tif (this.IsChanged()) {\r\n\t\t\tconst decisionDialog = new DecisionDialog({\r\n\t\t\t\tText: this._labels.CONFIRMATION_FOR_UNSAVED_CHANGES,\r\n\t\t\t\tType: DecisionDialogTypes.Question,\r\n\t\t\t});\r\n\r\n\t\t\tdecisionDialog.On(\r\n\t\t\t\tDECISION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n\t\t\t\tthis,\r\n\t\t\t\t() => this.SaveChanges()\r\n\t\t\t\t\t.then(() => this.SwitchPortletSpace(portletSpaceId))\r\n\t\t\t\t\t.then(() => this.EnableDesignMode())\r\n\t\t\t\t\t.fail(error => this.ShowError(error)));\r\n\r\n\t\t\tdecisionDialog.On(\r\n\t\t\t\tDECISION_DIALOG_EVENTS.DISCARD_SELECTED,\r\n\t\t\t\tthis,\r\n\t\t\t\t() => this.SwitchPortletSpace(portletSpaceId)\r\n\t\t\t\t\t.then(() => this.EnableDesignMode())\r\n\t\t\t\t\t.fail(error => this.ShowError(error)));\r\n\r\n\t\t\tdecisionDialog.Show();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn this.SwitchPortletSpace(portletSpaceId).then(() => this.EnableDesignMode());\r\n\t}\r\n\r\n\tMakeMain() {\r\n\t\tif (this._params.Control) {\r\n\t\t\tthis.BindToControl();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.SavePortletSpaceInfo(this._portletSpace().Name, true);\r\n\t\t}\r\n\t}\r\n\r\n\tEnableDesignMode() {\r\n\t\tthis._newPortlets = new Array<PortletManager>();\r\n\t\tthis._removedPortlets = new Array<PortletManager>();\r\n\r\n\t\tthis.SwitchRenderMode(PortletRenderModes.Design);\r\n\r\n\t\tif (this._portletDesignManager() !== null) {\r\n\t\t\tthis._portletDesignManager().InitDesignMode();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn PortletSpaceStore.GetPortletsExplorer()\r\n\t\t\t.then(portletsCollection => {\r\n\t\t\t\tthis._portletDesignManager(new PortletDesignManager(portletsCollection));\r\n\t\t\t\tthis._portletDesignManager()\r\n\t\t\t\t\t.On(EVENTS.PORTLETS.NEW_PORTLET_ADDED, this, (eventArgs: any) => this.AddNewPortlet(eventArgs.data))\r\n\t\t\t\t\t.On(EVENTS.PORTLETS.PORTLET_POSITION_CHANGED, this, (eventArgs: any) => this.ChangePortletPosition(eventArgs.data));\r\n\t\t\t});\r\n\t}\r\n\r\n\tEnableViewMode() {\r\n\t\tthis.SwitchRenderMode(PortletRenderModes.View);\r\n\r\n\t\tthis._newPortlets = new Array<PortletManager>();\r\n\t\tthis._removedPortlets = new Array<PortletManager>();\r\n\r\n\t\tthis._portletDesignManager().DestroyDragAndDrop();\r\n\t\tthis.ProcessEachManager((columnManagers, manager) => {\r\n\t\t\tmanager.SetState(PortletStates.NoChanges);\r\n\t\t\tmanager.SwitchRenderMode(PortletRenderModes.View);\r\n\t\t});\r\n\t}\r\n\r\n\tSaveChanges() {\r\n\t\tlet designedPortletSpace = DesignedPortletSpace.Map(this._portletSpace());\r\n\r\n\t\tlet portletGuidToInfo = this._portletDesignManager().GetPositions().ToArray();\r\n\r\n\t\tportletGuidToInfo.forEach(pair => {\r\n\t\t\tthis.GetPortletManagerByCriteria((manager: PortletManager) => manager.Portlet.Guid === pair.Key).then(manager => {\r\n\t\t\t\tdesignedPortletSpace.Portlets.push(DesignedPortlet.Map(manager.Portlet, pair.Value.Position, manager.Portlet.State));\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis._removedPortlets.forEach((manager: PortletManager) =>\r\n\t\t\tdesignedPortletSpace.Portlets.push(DesignedPortlet.Map(manager.Portlet, manager.Portlet.Position, manager.Portlet.State))\r\n\t\t);\r\n\r\n\t\treturn PortletSpaceStore.UpdatePortletSpace(designedPortletSpace)\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis.IsChanged(false);\r\n\t\t\t\tnew Notifier().Success(this._labels.PORTLET_SPACE_WAS_UPDATED);\r\n\t\t\t\treturn this.ChangePortletSpace(this._portletSpace().ObjectId);\r\n\t\t\t})\r\n\t\t\t.fail(error => this.ShowError(error));\r\n\t}\r\n\r\n\tBackToView() {\r\n\t\tthis.EnableViewMode();\r\n\t\tif (this._mainPortletSpaceId) {\r\n\t\t\tthis.SwitchPortletSpace(this._mainPortletSpaceId).fail(error => this.ShowError(error));\r\n\t\t}\r\n\t}\r\n\r\n\tRollbackChanges() {\r\n\t\treturn this.SwitchPortletSpace(this._portletSpace().ObjectId)\r\n\t\t\t.then(() => this.EnableDesignMode())\r\n\t\t\t.fail(error => this.ShowError(error));\r\n\t}\r\n\r\n\tRemovePortlet(portletManager: PortletManager) {\r\n\t\tif (portletManager.Portlet.State === PortletStates.New) {\r\n\t\t\tlet index = this._newPortlets.indexOf(portletManager);\r\n\t\t\tthis._newPortlets.splice(index, 1);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tportletManager.SetState(PortletStates.Deleted);\r\n\t\tthis._removedPortlets.push(portletManager);\r\n\t\tthis.IsChanged(true);\r\n\t}\r\n\r\n\tCreatePortletSpace() {\r\n\t\tif (this.IsChanged()) {\r\n\t\t\tconst decisionDialog = new DecisionDialog({\r\n\t\t\t\tText: 'You have unsaved changes. Do you want to save them?',\r\n\t\t\t\tType: DecisionDialogTypes.Question\r\n\t\t\t});\r\n\r\n\t\t\tdecisionDialog.On(DECISION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => this.SaveChanges().then(() => this.CreatePortletSpaceForce()));\r\n\t\t\tdecisionDialog.On(DECISION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n\t\t\t\tthis.SwitchPortletSpace(this._portletSpace().ObjectId)\r\n\t\t\t\t\t.then(() => this.EnableDesignMode())\r\n\t\t\t\t\t.then(() => this.CreatePortletSpaceForce());\r\n\t\t\t});\r\n\t\t\tdecisionDialog.Show();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.CreatePortletSpaceForce();\r\n\t}\r\n\r\n\tEditPortletSpace() {\r\n\t\tconst portletSpace = this._portletSpace();\r\n\r\n\t\tconst modal = new PortletSpaceEditorModal({\r\n\t\t\tName: portletSpace.Name\r\n\t\t});\r\n\r\n\t\tmodal.On(PORTLET_SPACE_EDITOR_EVENTS.SAVE_PORTLET_SPACE, this, eventArgs => {\r\n\t\t\tconst params = eventArgs.data as ISavePortletSpaceParams;\r\n\t\t\tthis.SavePortletSpaceInfo(params.Name).then(() => modal.Close());\r\n\t\t});\r\n\r\n\t\tmodal.Show();\r\n\t}\r\n\r\n\tDeletePortletSpace() {\r\n\t\tif (this._portletSpace().ObjectId === this._mainPortletSpaceId) {\r\n\t\t\tnew Notifier().Warning('You cannot delete main portlet space');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst dialog = new ConfirmationDialog({\r\n\t\t\tText: this._labels.PORTLET_SPACE_WILL_BE_DELETED,\r\n\t\t\tType: DialogTypes.Warning\r\n\t\t});\r\n\r\n\t\tdialog.On(DIALOG_EVENTS.CONFIRM_SELECTED, this, () => this.DeletePortletSpaceForce());\r\n\r\n\t\tdialog.Show();\r\n\t}\r\n\r\n\tprivate GetClasses(portletsColumnNumber: number) {\r\n\t\tif (this.IsInDesignMode()) {\r\n\t\t\treturn 'design-mode';\r\n\t\t}\r\n\r\n\t\tlet classes = [];\r\n\t\tconst division = [this._portletManagers1()[0], this._portletManagers2()[0], this._portletManagers3()[0]].filter(portlet => !!portlet).length;\r\n\r\n\t\tlet columnManager = null;\r\n\r\n\t\tswitch (portletsColumnNumber) {\r\n\t\t\tcase 1:\r\n\t\t\t\tcolumnManager = this._portletManagers1();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 2:\r\n\t\t\t\tcolumnManager = this._portletManagers2();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 3:\r\n\t\t\t\tcolumnManager = this._portletManagers3();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(!columnManager[0]) {\r\n\t\t\tclasses.push('portlet-block-empty');\r\n\t\t\treturn classes.join(' ');\r\n\t\t}\r\n\r\n\t\tif (division !== 0) {\r\n\t\t\tclasses.push('portlet-block-1-of-' + division);\r\n\t\t}\r\n\r\n\t\treturn classes.join(' ');\r\n\t}\r\n\r\n\tprivate SavePortletSpaceInfo(name: string, isMain?: boolean) {\r\n\t\tconst portletSpace = this._portletSpace();\r\n\t\tconst portletSpaceId = portletSpace.ObjectId;\r\n\r\n\t\tBlockUI.Block();\r\n\t\treturn PortletSpaceStore.UpdatePortletSpaceInfo(portletSpace.ObjectId, name, isMain)\r\n\t\t\t.then(() => {\r\n\t\t\t\tconst portletSpaces = this._portletSpaces();\r\n\t\t\t\tconst portletSpace = _.find(portletSpaces, ps => ps.ObjectId === portletSpaceId);\r\n\r\n\t\t\t\tif (isMain) {\r\n\t\t\t\t\tthis._mainPortletSpaceId = portletSpaceId;\r\n\t\t\t\t\tportletSpaces.forEach(ps => ps.IsMain = false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tportletSpace.Name = name;\r\n\t\t\t\tportletSpace.IsMain = isMain;\r\n\r\n\t\t\t\tthis._portletSpace().Name = name;\r\n\t\t\t\tthis._portletSpace().IsMain = isMain;\r\n\t\t\t\tthis._portletSpace.valueHasMutated();\r\n\r\n\t\t\t\tthis._portletSpaces([]);\r\n\t\t\t\tthis._portletSpaces(portletSpaces);\r\n\t\t\t})\r\n\t\t\t.fail(error => this.ShowError(error))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate BindToControl() {\r\n\t\tconst portletSpace = this._portletSpace();\r\n\t\tconst portletSpaceId = portletSpace.ObjectId;\r\n\r\n\t\tBlockUI.Block();\r\n\t\treturn PortletSpaceStore.BindToControl(portletSpaceId, this._params.Control.Id)\r\n\t\t\t.then(() => {\r\n\t\t\t\tconst portletSpaces = this._portletSpaces();\r\n\t\t\t\tconst portletSpace = _.find(portletSpaces, ps => ps.ObjectId === portletSpaceId);\r\n\r\n\t\t\t\tthis._mainPortletSpaceId = portletSpaceId;\r\n\t\t\t\tportletSpaces.forEach(ps => ps.IsMain = false);\r\n\r\n\t\t\t\tportletSpace.IsMain = true;\r\n\r\n\t\t\t\tthis._portletSpace().IsMain = true;\r\n\t\t\t\tthis._portletSpace.valueHasMutated();\r\n\r\n\t\t\t\tthis._portletSpaces([]);\r\n\t\t\t\tthis._portletSpaces(portletSpaces);\r\n\t\t\t})\r\n\t\t\t.fail(error => this.ShowError(error))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate CreatePortletSpaceForce() {\r\n\t\tconst modal = new PortletSpaceEditorModal({\r\n\t\t\tAllPortletSpaces: this._portletSpaces()\r\n\t\t});\r\n\r\n\t\tmodal.On(PORTLET_SPACE_EDITOR_EVENTS.SAVE_PORTLET_SPACE, this, eventArgs => {\r\n\t\t\tconst params = eventArgs.data as ISavePortletSpaceParams;\r\n\r\n\t\t\tBlockUI.Block();\r\n\t\t\tthis.SaveNewPortletSpace(params)\r\n\t\t\t\t.then(newPortletSpace => {\r\n\t\t\t\t\tmodal.Close();\r\n\r\n\t\t\t\t\tif (this._portletSpaces().length === 0) {\r\n\t\t\t\t\t\tthis._mainPortletSpaceId = newPortletSpace.Id;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst portletSpace = PortletSpace.Map(newPortletSpace);\r\n\t\t\t\t\tthis._portletSpaces.push(portletSpace);\r\n\r\n\t\t\t\t\tthis.SwitchPortletSpace(newPortletSpace.Id)\r\n\t\t\t\t\t\t.then(() => this.EnableDesignMode())\r\n\t\t\t\t\t\t.fail(error => this.ShowError(error));\r\n\t\t\t\t})\r\n\t\t\t\t.fail(error => this.ShowError(error))\r\n\t\t\t\t.always(() => BlockUI.Unblock());\r\n\t\t});\r\n\r\n\t\tmodal.Show();\r\n\t}\r\n\r\n\tprivate SwitchPortletSpace(portletSpaceId: number) {\r\n\t\tthis._portletSpace(null);\r\n\t\tthis.IsChanged(false);\r\n\r\n\t\tthis.GetPortletManagers().forEach((columnManagers: KnockoutObservableArray<PortletManager>) => columnManagers([]));\r\n\t\treturn this.LoadPortlets(portletSpaceId);\r\n\t}\r\n\r\n\tprivate SaveNewPortletSpace(params: ISavePortletSpaceParams) {\r\n\t\treturn params.CopyFromId !== 0\r\n\t\t\t? PortletSpaceStore.CopyPortletSpace({ Name: params.Name, CopyFromId: params.CopyFromId })\r\n\t\t\t: PortletSpaceStore.CreatePortletSpace({ Name: params.Name });\r\n\t}\r\n\r\n\tprivate DeletePortletSpaceForce() {\r\n\t\tconst portletSpaceId = this._portletSpace().ObjectId;\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tPortletSpaceStore.DeletePortletSpace(portletSpaceId)\r\n\t\t\t.then(() => {\r\n\t\t\t\tconst portletSpaces = this._portletSpaces();\r\n\t\t\t\tconst portletSpaceIndex = _.findIndex(portletSpaces, portletSpace => portletSpace.ObjectId === this._portletSpace().ObjectId);\r\n\r\n\t\t\t\tportletSpaces.splice(portletSpaceIndex, 1);\r\n\t\t\t\tthis._portletSpaces(portletSpaces);\r\n\r\n\t\t\t\tif (portletSpaceId !== this._mainPortletSpaceId) {\r\n\t\t\t\t\tthis.SwitchPortletSpace(this._mainPortletSpaceId)\r\n\t\t\t\t\t\t.then(() => this.EnableDesignMode());\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._portletSpaces().length > 0) {\r\n\t\t\t\t\tthis._mainPortletSpaceId = this._portletSpaces()[0].ObjectId;\r\n\r\n\t\t\t\t\tthis.SwitchPortletSpace(this._mainPortletSpaceId)\r\n\t\t\t\t\t\t.then(() => this.EnableDesignMode());\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._mainPortletSpaceId = null;\r\n\t\t\t\tthis._portletSpace(null);\r\n\t\t\t\tthis.GetPortletManagers().forEach((columnManagers: KnockoutObservableArray<PortletManager>) => columnManagers([]));\r\n\t\t\t})\r\n\t\t\t.fail(error => this.ShowError(error))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate ShowError(error: Rejection) {\r\n\t\tnew Notifier().Failed(JSON.parse(error.message).Message);\r\n\t}\r\n\r\n\tprivate LoadPortletSpaces() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\treturn PortletSpaceStore.GetPortletSpaces(this._params.Control && this._params.Control.Id)\r\n\t\t\t.then(portletSpacesDesign => {\r\n\t\t\t\tconst portletSpaces = portletSpacesDesign.map(portletSpace => PortletSpace.Map(portletSpace));\r\n\t\t\t\tthis._portletSpaces(portletSpaces);\r\n\r\n\t\t\t\tconst mainPortletSpace: PortletSpace = _.find<any>(portletSpaces, portletSpace => portletSpace.IsMain) || portletSpaces[0];\r\n\t\t\t\tthis._mainPortletSpaceId = mainPortletSpace && mainPortletSpace.ObjectId;\r\n\t\t\t})\r\n\t\t\t.fail(error => this.ShowError(error))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate LoadPortlets(portletSpaceId: number) {\r\n\t\tBlockUI.Block();\r\n\r\n\t\treturn PortletSpaceStore.GetPortletSpace(portletSpaceId)\r\n\t\t\t.then(async designedPortletSpace => {\r\n\t\t\t\tif (designedPortletSpace !== null) {\r\n\t\t\t\t\tawait this.ApplyPortletSpace(designedPortletSpace);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => this.ShowError(error))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate AddNewPortlet(portlet: EntityPortlet) {\r\n\t\tlet portletManager = new PortletManager({\r\n\t\t\tSubject: this._params.Subject,\r\n\t\t\tIsNew: true\r\n\t\t});\r\n\r\n\t\tportletManager.GeneratePortlet(portlet).then(() => {\r\n\t\t\tthis.ChangePortletPosition({\r\n\t\t\t\tGuid: portletManager.Portlet.Guid,\r\n\t\t\t\tPrevPosition: portlet.Position,\r\n\t\t\t\tNewPosition: portlet.Position\r\n\t\t\t});\r\n\r\n\t\t\tlet columnManagers = this.GetPortletManagersOfColumn(portlet.Position.ColNumber);\r\n\t\t\tthis.InsertInPosition(columnManagers(), portletManager, portlet.Position.RowNumber);\r\n\t\t\tcolumnManagers(columnManagers());\r\n\t\t});\r\n\r\n\t\tthis.BindPortletManagerEvents(portletManager);\r\n\r\n\t\tthis._newPortlets.push(portletManager);\r\n\r\n\t\tthis.IsChanged(true);\r\n\t}\r\n\r\n\tprivate async ApplyPortletSpace(designedPortletSpace: DesignedPortletSpace) {\r\n\t\tthis._portletSpace(PortletSpace.Map(designedPortletSpace));\r\n\r\n\t\tfor(let portlet of designedPortletSpace.Portlets){\r\n\r\n if (portlet && portlet.ScreenModel && portlet.ScreenModel.SubForms.length === 0) continue;\r\n\r\n\t\t\tlet portletManager = new PortletManager({\r\n\t\t\t\tSubject: this._params.Subject,\r\n\t\t\t\tIsNew: false\r\n\t\t\t});\r\n\r\n\t\t\tthis.BindPortletManagerEvents(portletManager);\r\n\r\n\t\t\tawait portletManager.LoadPortlet(portlet.Id, portlet.ScreenId, {\r\n\t\t\t\tRowNumber: portlet.RowPosition,\r\n\t\t\t\tColNumber: portlet.ColPosition\r\n\t\t\t}, portlet.ScreenModel);\r\n\r\n\t\t\tthis.InsertInObservableList(this.GetPortletManagersOfColumn(portlet.ColPosition), portletManager, portlet.RowPosition);\r\n\t\t};\r\n\r\n\t\tif (this._portletsAreLoaded()) {\r\n\t\t\tthis._portletsAreLoaded.valueHasMutated();\r\n\t\t} else {\r\n\t\t\tthis._portletsAreLoaded(true);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ChangePortletPosition(droppedObject: IDraggable) {\r\n\t\tthis.GetPortletManagerByCriteria(manager => manager.Portlet.Guid === droppedObject.Guid).then(manager => {\r\n\t\t\treturn manager || this.GetByCriteria(this._newPortlets, manager => manager.Portlet.Guid === droppedObject.Guid);\r\n\t\t}).then(droppedPortletManager => {\r\n\t\t\tif (droppedPortletManager.Portlet.State === PortletStates.NoChanges) {\r\n\t\t\t\tdroppedPortletManager.SetState(PortletStates.Changed);\r\n\t\t\t\tthis._newPortlets.push(droppedPortletManager);\r\n\t\t\t}\r\n\r\n\t\t\tthis.IsChanged(true);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate BindPortletManagerEvents(manager: PortletManager) {\r\n\t\tlet controlButtonsClickEvents = EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS;\r\n\r\n\t\tlet handlers: { [eventName: string]: EventHandlerCallback } = {};\r\n\t\thandlers[EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.REMOVE_BUTTON_CLICKED] = {Handler: this.RemovePortlet}\r\n\r\n\t\tlet eventHandlersFactory = new PortletManagerEventHandlersFactory(this, manager, handlers);\r\n\r\n\t\tObject.keys(controlButtonsClickEvents).forEach(event => eventHandlersFactory.BindEvent(controlButtonsClickEvents[event]));\r\n\t}\r\n\r\n\t//Helpers--------------------------------------------------------\r\n\tprivate ProcessByCriteria<TElement>(list: Array<TElement>, criteria: (element: TElement) => boolean, delegate: (element: TElement) => void) {\r\n\t\t_.where(list, criteria).forEach(delegate);\r\n\t}\r\n\r\n\tprivate GetByCriteria<TElement>(list: Array<TElement>, criteria: (element: TElement) => boolean) {\r\n\t\treturn _.find(list, criteria);\r\n\t}\r\n\r\n\t//Concrete helpers----------------------------------------------\r\n\tprivate GetPortletManagerByCriteria(criteria: (manager: PortletManager) => boolean): P.Promise<PortletManager> {\r\n\t\tlet deferredResult = P.defer<PortletManager>();\r\n\r\n\t\tthis.GetPortletManagers().map((columnManagers: KnockoutObservableArray<PortletManager>) => {\r\n\t\t\tcolumnManagers().filter(criteria).forEach((manager: PortletManager) => deferredResult.resolve(manager));\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tprivate GetPortletManagers(): Array<KnockoutObservableArray<PortletManager>> {\r\n\t\treturn [this._portletManagers1, this._portletManagers2, this._portletManagers3];\r\n\t}\r\n\r\n\tprivate GetPortletManagersOfColumn(columnNumber: number): KnockoutObservableArray<PortletManager> {\r\n\t\treturn this.GetPortletManagers()[columnNumber];\r\n\t}\r\n\r\n\tprivate ProcessEachManager(delegate: (columnManagers: KnockoutObservableArray<PortletManager>, manager: PortletManager) => void) {\r\n\t\tthis.GetPortletManagers().map((columnManagers: KnockoutObservableArray<PortletManager>) => {\r\n\t\t\tcolumnManagers().forEach((manager: PortletManager) => delegate(columnManagers, manager));\r\n\t\t});\r\n\t}\r\n\r\n\tprivate ProcessManagersByCriteria(criteria: (manager: PortletManager) => boolean,\r\n\t\t\t\t\t\t\t\t\t delegate: (columnManagers: KnockoutObservableArray<PortletManager>, manager: PortletManager) => void) {\r\n\r\n\t\tthis.GetPortletManagers().map((columnManagers: KnockoutObservableArray<PortletManager>) => {\r\n\t\t\tcolumnManagers().filter(criteria).forEach((manager: PortletManager) => delegate(columnManagers, manager));\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InsertInPosition<TElement>(list: Array<TElement>, element: TElement, insertPosition: number) {\r\n\t\tlet length = list.length;\r\n\r\n\t\tif (length === 0) {\r\n\t\t\tlist[insertPosition] = element;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlist.push(list[length - 1]);\r\n\r\n\t\tfor (let positionToShift = list.length - 1; positionToShift > insertPosition; positionToShift--) {\r\n\t\t\tlist[positionToShift] = list[positionToShift - 1];\r\n\t\t}\r\n\r\n\t\tlist[insertPosition] = element;\r\n\t}\r\n\r\n\tprivate InsertInObservableList<TElement>(list: KnockoutObservableArray<TElement>, element: TElement, insertPosition: number) {\r\n\t\tlet length = list.length;\r\n\r\n\t\tif (length === 0) {\r\n\t\t\tlist.splice(insertPosition, 0, element);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlist.push(list()[length - 1]);\r\n\r\n\t\tfor (let positionToShift = list.length - 1; positionToShift > insertPosition; positionToShift--) {\r\n\t\t\tlist.splice(positionToShift, 0, list()[positionToShift - 1]);\r\n\t\t}\r\n\r\n\t\tlist.splice(insertPosition, 1, element);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"portlet-space-editor-toolbox clearfix\\\" data-bind=\\\"visible: IsInDesignMode\\\"> <div class=\\\"pull-left\\\"> <a data-bind=\\\"click: CreatePortletSpace\\\" href=\\\"#\\\" title=\\\"Create portlet space\\\" class=\\\"btn btn-primary\\\"> <i class=\\\"fa fa-plus\\\"></i> </a> <!--ko if: _portletSpace--> <a data-bind=\\\"click: DeletePortletSpace\\\" title=\\\"Delete portlet space\\\" href=\\\"#\\\" class=\\\"btn btn-danger\\\"> <i class=\\\"fa fa-trash\\\"></i> </a> <div class=\\\"btn-group\\\"> <a class=\\\"btn btn-primary dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" data-bind=\\\"alignDropdown: {type: 'bootstrap', directions: {vertical: true, horizontal: true}, addEventOnclick: true}\\\"> <i class=\\\"fa fa-user\\\"></i> <!--ko with: _portletSpace--> <span data-bind=\\\"text: Name\\\"></span> <!--/ko--> <i class=\\\"fa fa-angle-down\\\"></i> </a> <ul class=\\\"dropdown-menu\\\"> <!--ko foreach: _portletSpaces--> <li data-bind=\\\"click: $parent.ChangePortletSpace.bind($parent, $data.ObjectId)\\\"> <a> <span data-bind=\\\"text: $data.Name\\\"></span> </a> </li> <!--/ko--> </ul> </div> <a data-bind=\\\"click: EditPortletSpace\\\" title=\\\"Edit portlet space\\\" href=\\\"#\\\" class=\\\"btn btn-danger\\\"> <i class=\\\"fa fa-edit\\\"></i> </a> <div class=\\\"make-main\\\"> <!--ko if: IsMain--> <a href=\\\"#\\\" class=\\\"btn btn-default main-active\\\" data-bind=\\\"attr: {title: _labels.MAIN_PORTLET}\\\"> <i class=\\\"fa fa-home\\\"></i> </a> <!--/ko--> </div> <!--ko ifnot: IsMain--> <a data-bind=\\\"click: MakeMain\\\" href=\\\"#\\\" class=\\\"btn btn-success\\\"> <i class=\\\"fa fa-home\\\"></i> Make Main </a> <!--/ko--> <!--/ko--> </div> <div class=\\\"pull-right\\\"> <!--ko if: IsChanged--> <a data-bind=\\\"click: SaveChanges\\\" href=\\\"#\\\" title=\\\"Save\\\" class=\\\"btn btn-success\\\"> <i class=\\\"fa fa-save\\\"></i> </a> <a data-bind=\\\"click: RollbackChanges\\\" href=\\\"#\\\" title=\\\"Cancel\\\" class=\\\"btn btn-danger\\\"> <i class=\\\"fa fa-times\\\"></i> </a> <!--/ko--> <!--ko ifnot: IsChanged--> <a data-bind=\\\"click: BackToView\\\" href=\\\"#\\\" title=\\\"Back to view\\\" class=\\\"btn btn-danger\\\"> <i class=\\\"fa fa-sign-out\\\"></i> </a> <!--/ko--> </div> </div> <div class=\\\"portlet-space-toolbox\\\"> <div data-bind=\\\"visible:IsInViewMode\\\"> <a class=\\\"enable-design-mode-btn\\\" data-bind=\\\"click: EnableDesignMode.bind($data),tooltip:{content: _labels.MY_DAILY_STUFF}\\\"> <i class=\\\"fa fa-cog\\\"></i> </a> </div> </div> <!-- ko if: _portletSpace--> <div id=\\\"portlet-area\\\" class=\\\"portlet-area\\\"> <div class=\\\"row portlet-container\\\"> <div data-bind=\\\"css: {'design-mode': IsInDesignMode}\\\" class=\\\"portlet-block portlet-explorer\\\"> <!-- ko with: _portletDesignManager --> <!-- ko with: _portletExplorer--> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <div data-bind=\\\"css: {'portletBlock-design-mode': IsInDesignMode}, class: GetClasses(1)\\\" data-number=\\\"0\\\" class=\\\"portlet-block portlet-attached\\\"> <!--ko foreach: _portletManagers1--> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data), visible: $rawData.IsReady} --> <!-- /ko --> <!--/ko--> </div> <div data-bind=\\\"css: {'portletBlock-design-mode': IsInDesignMode}, class: GetClasses(2)\\\" data-number=\\\"1\\\" class=\\\"portlet-block portlet-attached\\\"> <!--ko foreach: _portletManagers2--> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data), visible: $rawData.IsReady} --> <!-- /ko --> <!--/ko--> </div> <div data-bind=\\\"css: {'portletBlock-design-mode': IsInDesignMode}, class: GetClasses(3)\\\" data-number=\\\"2\\\" class=\\\"portlet-block portlet-attached\\\"> <!--ko foreach: _portletManagers3--> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data), visible: $rawData.IsReady} --> <!-- /ko --> <!--/ko--> </div> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {EVENTS} from \"Core/Constant\";\r\nimport {Guid} from \"Core/Common/Guid\";\r\n\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {BaseScreen} from \"Core/Screens/BaseScreen\";\r\nimport {ScreenModel} from \"Core/Models/Screens/ScreenModel\";\r\nimport {IPosition} from \"Core/Portlets/Models/Common/Interfaces/IPosition\";\r\nimport {PortletBar} from \"Core/Controls/PortletBar/PortletBar\";\r\nimport {IPortletRuntimeSettings} from \"Core/Controls/PortletBar/Interfaces/IPortletRuntimeSettings\";\r\nimport {Grid} from \"Core/Controls/Grid/Grid\";\r\nimport {ControlModel} from \"Core/Controls/BaseControl/Models/ControlModel\";\r\n\r\nimport PortletTemplate from 'Core/Portlets/Templates/Portlet.html';\r\nimport {PortletStates} from \"Core/Portlets/Enums/PortletStates\";\r\n\r\nko.templates[\"Core/Portlets/Templates/Portlet\"] = PortletTemplate;\r\n\r\nexport class Portlet extends BaseScreen {\r\n private _portletBarControl: PortletBar;\r\n private _grid: Grid;\r\n\r\n ObjectId: number;\r\n Name: string;\r\n State: PortletStates;\r\n Position: IPosition;\r\n OldPosition: IPosition;\r\n\r\n get Guid(): Guid {\r\n return this._guid;\r\n }\r\n\r\n get ScreenId(): number {\r\n return this.GetScreenId();\r\n }\r\n\r\n get ScreenName(): string {\r\n return this.GetScreenName();\r\n }\r\n\r\n get ScreenTranslatedName(): string {\r\n return this.GetScreenTranslatedName();\r\n }\r\n\r\n get EntityId(): number {\r\n return this._model.EntityId;\r\n }\r\n\r\n get PortletBar(): PortletBar {\r\n return this._portletBarControl;\r\n }\r\n\r\n constructor(screen: ScreenModel) {\r\n let [portletBar, ...otherControls] = screen.SubForms[0].Controls;\r\n screen.SubForms[0].Controls = otherControls;\r\n\r\n super(screen, RenderModes.View);\r\n\r\n this.Init(screen, portletBar);\r\n\r\n this.BindPortletBarEvents();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/Portlets/Templates/Portlet\";\r\n }\r\n\r\n AfterRender(el): void {\r\n }\r\n\r\n AddRuntimeSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n this.Trigger(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED, runtimeSettings);\r\n }\r\n\r\n ApplyRuntimeSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n this._portletBarControl.ApplyRuntimeSettings(runtimeSettings);\r\n let appliedSettings = this._portletBarControl.RuntimeSettings();\r\n this.GetAllControls().forEach(control => {\r\n control.ChangeProperty('Search', appliedSettings.Search());\r\n control.ChangeProperty('ReadOnly', appliedSettings.ReadOnly());\r\n });\r\n }\r\n\r\n GetRuntimeSettings(): IPortletRuntimeSettings {\r\n return this._portletBarControl.RuntimeSettings();\r\n }\r\n\r\n Refresh() {\r\n if (this._grid) {\r\n this._grid.LoadData();\r\n }\r\n }\r\n\r\n private Init(screen: ScreenModel, portletBar: ControlModel) {\r\n this.Name = this.ScreenTranslatedName || this.ScreenName;\r\n this._guid = Guid.NewGuid();\r\n this.State = PortletStates.NoChanges;\r\n\r\n this._portletBarControl = new PortletBar({\r\n Model: portletBar,\r\n Form: this.SubForms[0],\r\n RenderMode: RenderModes.View\r\n });\r\n\r\n this._portletBarControl.ObjectId = this.ObjectId;\r\n\r\n this._grid = this.GetControl<Grid>(\"Grid\");\r\n }\r\n\r\n private BindPortletBarEvents() {\r\n let events = EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS;\r\n\r\n Object.keys(events).forEach(event => {\r\n let eventName = events[event];\r\n this._portletBarControl.On(eventName, this, () => this.Trigger(eventName));\r\n });\r\n\r\n this._portletBarControl.One(EVENTS.PORTLETS.RUNTIME_SETTINGS_APPLIED, this, eventArgs => this.ApplyControlSettings(eventArgs.data));\r\n this._portletBarControl.On(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED, this, eventArgs => this.UpdateRuntimeSettings(eventArgs.data));\r\n }\r\n\r\n\r\n private ApplyControlSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n if (this._grid) {\r\n this._grid.SetRecordsPerPage(runtimeSettings.Length());\r\n\r\n if (this._model.Data) {\r\n this._grid.SetValue({\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._model.Data.RecordId,\r\n RecordSpecsModel: null\r\n });\r\n } else {\r\n this._grid.LoadData();\r\n }\r\n\r\n ['EnableLinkButton', 'EnableAdd&LinkButton', 'EnableAddQueryButton']\r\n .forEach(property => this._grid.ChangeProperty(property, false));\r\n }\r\n }\r\n\r\n private UpdateRuntimeSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n this.ApplyControlSettings(runtimeSettings);\r\n this.Trigger(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED, runtimeSettings);\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"attr: {\\r\\n\\t\\t\\t\\t\\tscreenId: ScreenId,\\r\\n\\t\\t\\t\\t\\tguid: Guid,\\r\\n\\t\\t\\t\\t\\tstate: State\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tcss: {\\r\\n\\t\\t\\t\\t\\t\\t'boxed': PortletBar.RuntimeSettings().Kind() === 'boxed',\\r\\n\\t\\t\\t\\t\\t\\t'light': PortletBar.RuntimeSettings().Kind() === 'light',\\r\\n\\t\\t\\t\\t\\t\\t'body-space': PortletBar.RuntimeSettings().UseBodySpace()\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"portlet body-space\\\"> <!--ko with: PortletBar --> <!--ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) }--> <!--/ko--> <!--/ko--> <div data-bind=\\\"scrollFixer: {}\\\" class=\\\"portlet-body overflow-a unselectable\\\"> <div data-bind=\\\"style: { backgroundColor: PortletBar.RuntimeSettings().DataSpaceColor }\\\"> <!--ko foreach: SubForms--> <!--ko foreach: Controls--> <div class=\\\"portlet-body-content portlet-grid-box\\\"> <div data-bind=\\\"template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) }\\\"></div> </div> <!--/ko--> <!--/ko--> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {Text} from 'Core/Controls/Text/Text'\r\nimport {ICell} from 'Core/ProfilePage/Deduplication/DeduplicationEditor/ICell';\r\nimport {DeduplicationStore, Actions} from 'Core/ProfilePage/Deduplication/Stores/DeduplicationStore';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {DeduplicationGrid} from 'Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationGrid';\r\n\r\nimport Template from 'Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationCell.html';\r\n\r\nimport {FIELD_TYPES} from 'Core/Constant'\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport enumerable from '../../../Common/Decorators/EnumerableDecorator';\r\n\r\n\r\nexport class DeduplicationCell implements ICell {\r\n\tprivate _grid: DeduplicationGrid;\r\n\r\n\tprivate _fieldName: string;\r\n\tpublic _fieldId: number;\r\n\tprivate _value: KnockoutObservable<string>;\r\n\tprivate _type: string;\r\n\tprivate _types = FIELD_TYPES;\r\n\tprivate _isEditMode: KnockoutObservable<boolean>;\r\n\tprivate _editor: KnockoutObservable<Text>;\r\n\tprivate _popUpTriggerAction: boolean = false;\r\n\tprivate _popUpAction: boolean = false;\r\n\tprivate _kSeq: number;\r\n\tprivate _entityId: number;\r\n\tprivate _entityName: string;\r\n\tpublic _selectionType: KnockoutObservable<string>;\r\n\tprivate _selectedAlignedTd: KnockoutObservable<boolean>;\r\n\tprivate _parentRow: any;\r\n\tprivate _deduplicationInstance: any;\r\n\tprivate _tooltipValue: KnockoutObservable<string>;\r\n\tprivate _leftRecordId: number;\r\n\tprivate _rightRecordId: number;\r\n\r\n\tconstructor(fieldId: number,\r\n\t\t\t\tvalue: string,\r\n\t\t\t\ttype: string,\r\n\t\t\t\trow?: any,\r\n\t\t\t\tIsSelected?: boolean,\r\n\t\t\t\tSelectionType?: string,\r\n\t\t\t\tactionType?: string,\r\n\t\t\t\tkSeq?: number,\r\n\t\t\t\tentityId?: number,\r\n\t\t\t\tentityName?: string,\r\n\t\t\t\tdeduplicationInstance?: any) {\r\n\t\tthis._type = type;\r\n\r\n\t\tlet endValue = value;\r\n\t\tthis._tooltipValue = ko.observable('');\r\n\r\n\t\tif (endValue && endValue.length > 25) {\r\n\t\t\tendValue = endValue.substr(0, 25) + '...';\r\n\t\t\tthis._tooltipValue(value);\r\n\t\t\tif (this._type === FIELD_TYPES.Memo) {\r\n\t\t\t\tendValue = '...';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._value = ko.observable(endValue);\r\n\t\tthis._kSeq = kSeq;\r\n\t\tthis._entityId = entityId;\r\n\t\tthis._entityName = entityName;\r\n\t\tthis._selectedAlignedTd = ko.observable(false);\r\n\t\tthis._parentRow = row;\r\n\t\tthis._fieldId = fieldId;\r\n\t\tthis._selectionType = ko.observable(SelectionType);\r\n\t\tthis._deduplicationInstance = deduplicationInstance;\r\n\r\n\t\tif (actionType === 'popUpTrigger') {\r\n\t\t\tthis._popUpTriggerAction = true;\r\n\t\t} else if (actionType === 'popUpAction') {\r\n\r\n\r\n\t\t\tthis._popUpAction = true;\r\n\r\n\t\t} else if (actionType === 'popUpData') {\r\n\t\t\tif (IsSelected) {\r\n\t\t\t\tthis._selectedAlignedTd(true)\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._grid = new DeduplicationGrid();\r\n\t\tthis._grid.On(EVENTS.SAVE_CHANGES, this, ()=> this.SaveChanges());\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\r\n\tSaveChanges() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst changesToSave = [];\r\n\t\tlet Deduplication = this._grid.Rows()[0].Model.Deduplication;\r\n\t\tthis._grid.Rows().map((row: any) => {\r\n\t\t\tif (row._disabled()) return;\r\n\t\t\tlet fieldId = null;\r\n\t\t\tlet actionType = null\r\n\t\t\trow.Cells().map((cell: DeduplicationCell) => {\r\n\t\t\t\tif (cell._fieldId) {\r\n\t\t\t\t\tfieldId = cell._fieldId;\r\n\t\t\t\t}\r\n\t\t\t\tif (cell._selectionType()) {\r\n\t\t\t\t\tactionType = cell._selectionType();\r\n\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (fieldId && actionType && actionType !== 'leftSide') {\r\n\t\t\t\tchangesToSave.push({\r\n\t\t\t\t\tFieldId: fieldId,\r\n\t\t\t\t\tAction: Actions[actionType]\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n \r\n const params = {\r\n EntityId: this._entityId,\r\n KSeq: this._kSeq,\r\n Changes: [...changesToSave]\r\n }\r\n\r\n\t\tDeduplicationStore.DeduplicateMatched(params).always(() => {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t}).then(result => {\r\n\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._grid.Cancel();\r\n\t\t\tthis._deduplicationInstance.GetRecordsList();\r\n\r\n\t\t}).fail((err) => {\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tGetDeduplicationRecord() {\r\n\r\n\t\tthis.InitLockWithRequest();\r\n\r\n\r\n\t}\r\n\r\n\tInitLockWithRequest() {\r\n\t\tconst params = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tKSeq: this._kSeq\r\n\t\t};\r\n\r\n\t\tDeduplicationStore.GetDeduplicationMatchedRecordModel(params).then(result => {\r\n\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._grid.RenderModal();\r\n\t\t\tBlockUI.Unblock(this._grid.GetModal().Wrapper);\r\n\r\n\t\t\tthis._grid.SetPopUpData(\r\n\t\t\t\tresult.ResultObject,\r\n\t\t\t\tthis._entityName,\r\n\t\t\t\tthis._deduplicationInstance,\r\n\t\t\t\tthis._entityId,\r\n\t\t\t\tthis._kSeq\r\n\t\t\t);\r\n\t\t}).fail((err) => {\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tSelectAction(selectionToActivate) {\r\n\t\tconst cells: Array<DeduplicationCell> = this._parentRow.Cells()\r\n\t\tconst indexOfActionCell = _.findIndex(cells,\r\n\t\t\t(cell: DeduplicationCell) => {\r\n\t\t\t\treturn cell._popUpAction;\r\n\t\t\t});\r\n\t\tthis._selectionType(selectionToActivate);\r\n\t\tcells && cells.map((cell) => {\r\n\t\t\tcell._selectedAlignedTd(false);\r\n\t\t});\r\n\t\tif (selectionToActivate === 'leftSide') {\r\n\t\t\tcells[indexOfActionCell - 1]._selectedAlignedTd(true);\r\n\t\t} else if (selectionToActivate === 'merge') {\r\n\t\t\tcells[indexOfActionCell - 1]._selectedAlignedTd(true);\r\n\t\t\tcells[indexOfActionCell + 1]._selectedAlignedTd(true);\r\n\t\t} else if (selectionToActivate === 'rightSide') {\r\n\t\t\tcells[indexOfActionCell + 1]._selectedAlignedTd(true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\t@enumerable get Value(): KnockoutObservable<string> {\r\n\t\treturn this._value;\r\n\t}\r\n}","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\n\r\n'Core/ProfilePage/Deduplication/DeduplicationEditor'\r\n\r\nimport { DeduplicationRow } from 'Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationRow';\r\nimport { DeduplicationHeader } from 'Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationHeader';\r\n\r\nimport Template from 'Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationGrid.html';\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {CONTROL_TYPES} from 'Core/Constant';\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\nimport {GridDataModel} from \"Core/Controls/Grid/Models/GridDataModel/GridDataModel\";\r\nimport {GridColumnModel} from \"Core/Controls/Grid/Models/GridDataModel/GridColumnModel\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport DeduplicationGridTemplate from 'Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationGridPopUp.html';\r\nimport enumerable from '../../../Common/Decorators/EnumerableDecorator';\r\n\r\nko.templates['Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationGridPopUp'] = DeduplicationGridTemplate;\r\n\r\nexport class DeduplicationGrid extends Event{\r\n\tprivate _modal: Modal;\r\n\tprivate _labels = LABELS;\r\n\tprivate _rows: KnockoutObservableArray<DeduplicationRow>;\r\n\tprivate _headerColumns: KnockoutObservableArray<DeduplicationHeader>;\r\n\r\n\r\n\tprivate _entityId: number;\r\n\tprivate _kSeq: number;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis._rows = ko.observableArray([]);\r\n\t\tthis._headerColumns = ko.observableArray([]);\r\n\r\n this.AddEvent(EVENTS.SORT);\r\n this.AddEvent(EVENTS.SAVE_CHANGES);\r\n }\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n @enumerable get Columns() {\r\n return this._headerColumns();\r\n }\r\n\r\n GetModal(){\r\n\t\treturn this._modal;\r\n\t}\r\n\r\n ResetSort(excludecolumn: DeduplicationHeader) {\r\n _.each(this._headerColumns(), item => {\r\n if (item !== excludecolumn) {\r\n item.ResetSort();\r\n }\r\n });\r\n }\r\n\r\n\tAfterRender() {}\r\n\r\n\tSetData(deduplications: GridDataModel, entityName: string, deduplicationInstance, restoreSortState?: boolean) {\r\n\t\tif (!deduplications) return;\r\n const headerColumns = [];\r\n\t\tthis._rows([]);\r\n\r\n\t\t_.each(deduplications.Columns, (deduplicationHeader: any, i: number) => {\r\n\t\t\tif (i !== 1) {\r\n\t\t\t\tconst headerName = i === 0 && '%' || deduplicationHeader.FieldMetadata.NameTranslated || deduplicationHeader.FieldMetadata.Name;\r\n const headerColumn = new DeduplicationHeader(deduplicationHeader, headerName);\r\n const oldHeader = this._headerColumns()[i];\r\n\r\n if (oldHeader) {\r\n if (restoreSortState) {\r\n headerColumn.SortOrder = oldHeader.SortOrder;\r\n }\r\n }\r\n\r\n headerColumn.On(EVENTS.SORT, this, (eventArgs: any) => {\r\n this.ResetSort(eventArgs.source);\r\n var sortColumns = [];\r\n _.each(this.Columns, (column) => {\r\n if (column.IsEnableSort) {\r\n sortColumns.push(column.GetSortModel());\r\n }\r\n });\r\n this.Trigger(EVENTS.SORT, { SortColumns: sortColumns });\r\n });\r\n\r\n headerColumns.push(headerColumn);\r\n\t\t\t}\r\n\t\t});\r\n\r\n headerColumns.push(new DeduplicationHeader(new GridColumnModel(), ''));\r\n\r\n this._headerColumns(headerColumns);\r\n\r\n\t\t_.each(deduplications.Rows, (deduplication) => {\r\n\t\t\tconst row = new DeduplicationRow(deduplication, true, entityName, deduplicationInstance);\r\n\t\t\tthis._rows.push(row);\r\n\t\t});\r\n\t}\r\n\r\n\tGetSelectionType(leftRecordRowCell): string {\r\n\t\tif (leftRecordRowCell.Type === 'MultiSelect' || leftRecordRowCell.Type === 'Memo') {\r\n\t\t\treturn 'merge';\r\n\t\t}\r\n\r\n\t\tconst fieldName = leftRecordRowCell.DefaultFieldName;\r\n\r\n\t\tif (fieldName === 'CHANGEDATE' || fieldName === 'CHANGEDBY') {\r\n\t\t\treturn 'notApplicable';\r\n\t\t}\r\n\r\n\t\tif (fieldName === 'CREATEDATE' || fieldName === 'CREATEDBY') {\r\n\t\t\treturn 'rightSide';\r\n\t\t}\r\n\r\n\t\treturn 'leftSide';\r\n\t}\r\n\r\n\r\n\tSetPopUpData(deduplications: any, entityName: string, deduplicationInstance: any, entityId: number, kSeq: number) {\r\n\t\tif (!deduplications) return;\r\n\r\n\t\tthis._entityId = entityId;\r\n\t\tthis._kSeq = kSeq;\r\n\r\n\t\tthis._rows([]);\r\n\t\tthis._headerColumns([]);\r\n\t\tconst headers: Array<string> = [entityName, 'Record 1', 'Action', 'Record 2'];\r\n\r\n\t\t_.each(headers, (deduplicationHeader: string) => {\r\n\t\t\tthis._headerColumns.push(new DeduplicationHeader(new GridColumnModel(), deduplicationHeader));\r\n\t\t});\r\n\r\n\t\t_.each(deduplications.LeftRecord.Data, (leftRecordRowCell: any, i) => {\r\n\t\t\tconst selectionType = this.GetSelectionType(leftRecordRowCell);\r\n\t\t\tconst rowToInject = {\r\n\t\t\t\tData: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFieldId: leftRecordRowCell.FieldId,\r\n\t\t\t\t\t\tDisplayValue: leftRecordRowCell.FieldName\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFieldId: leftRecordRowCell.FieldId,\r\n\t\t\t\t\t\tDisplayValue: this.FormatValue(leftRecordRowCell),\r\n\t\t\t\t\t\tIsSelected: selectionType === 'leftSide' || selectionType === 'merge',\r\n Type: leftRecordRowCell.Type\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tDisplayValue: 'Action'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFieldId: deduplications.RightRecord.Data[i].FieldId,\r\n\t\t\t\t\t\tDisplayValue: this.FormatValue(deduplications.RightRecord.Data[i]),\r\n\t\t\t\t\t\tIsSelected: selectionType === 'rightSide' || selectionType === 'merge',\r\n Type: leftRecordRowCell.Type\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tIsDisabled: leftRecordRowCell.IsSystem,\r\n\t\t\t\tIsMergeEnabled: leftRecordRowCell.Type === 'MultiSelect' || leftRecordRowCell.Type === 'Text' || leftRecordRowCell.Type === 'Memo',\r\n\t\t\t\tSelectionType: selectionType,\r\n\t\t\t\tDeduplicationInstance: deduplicationInstance,\r\n\t\t\t\tLeftRecordId: deduplications.LeftRecord.Id,\r\n\t\t\t\tRightRecordId: deduplications.RightRecord.Id\r\n\t\t\t};\r\n\t\t\tvar row = new DeduplicationRow(rowToInject);\r\n\t\t\tthis._rows.push(row);\r\n\t\t});\r\n\t}\r\n\r\n\tSetPopUpDataFromSearch(deduplications: any, entityName: string, deduplicationInstance: any, entityId: number) {\r\n\t\tif (!deduplications) return;\r\n\r\n\t\tthis._entityId = entityId;\r\n\r\n\t\tthis._rows([]);\r\n\t\tthis._headerColumns([]);\r\n\t\tconst headers: Array<string> = [entityName, 'Record 1', 'Action', 'Record 2'];\r\n\t\t_.each(headers, (deduplicationHeader: string) => {\r\n\t\t\tthis._headerColumns.push(new DeduplicationHeader(new GridColumnModel(), deduplicationHeader));\r\n\t\t});\r\n\r\n\t\t_.each(deduplications.LeftRecord.Data, (leftRecordRowCell: any, i) => {\r\n\t\t\tconst selectionType = this.GetSelectionType(leftRecordRowCell);\r\n\t\t\tconst rowToInject = {\r\n\t\t\t\tData: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFieldId: leftRecordRowCell.FieldId,\r\n\t\t\t\t\t\tDisplayValue: leftRecordRowCell.FieldName\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFieldId: leftRecordRowCell.FieldId,\r\n\t\t\t\t\t\tDisplayValue: this.FormatValue(leftRecordRowCell),\r\n\t\t\t\t\t\tIsSelected: selectionType === 'leftSide' || selectionType === 'merge',\r\n\t\t\t\t\t\tType: leftRecordRowCell.Type\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tDisplayValue: 'Action'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFieldId: deduplications.RightRecord.Data[i].FieldId,\r\n\t\t\t\t\t\tDisplayValue: this.FormatValue(deduplications.RightRecord.Data[i]),\r\n\t\t\t\t\t\tIsSelected: selectionType === 'rightSide' || selectionType === 'merge',\r\n\t\t\t\t\t\tType: leftRecordRowCell.Type\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tIsDisabled: leftRecordRowCell.IsSystem,\r\n\t\t\t\tIsMergeEnabled: leftRecordRowCell.Type === 'MultiSelect' || leftRecordRowCell.Type === 'Text' || leftRecordRowCell.Type === 'Memo',\r\n\t\t\t\tSelectionType: selectionType,\r\n\t\t\t\tDeduplicationInstance: deduplicationInstance,\r\n\t\t\t\tLeftRecordId: deduplications.LeftRecord.Id,\r\n\t\t\t\tRightRecordId: deduplications.RightRecord.Id\r\n\t\t\t};\r\n\t\t\tvar row = new DeduplicationRow(rowToInject);\r\n\t\t\tthis._rows.push(row);\r\n\t\t});\r\n\t}\r\n\r\n\tFormatValue(record: any): string {\r\n\t\tif (record.Type == CONTROL_TYPES.TimeSpan && record.Value) {\r\n\t\t\treturn moment(record.Value).format(DATE_FORMATS.LONG_TIME.Format);\r\n\t\t}\r\n\t\treturn record.Value;\r\n\t}\r\n\r\n\r\n\t@enumerable get Rows(): KnockoutObservableArray<DeduplicationRow> {\r\n\t\treturn this._rows;\r\n\t}\r\n\r\n\t@enumerable get Headers(): KnockoutObservableArray<DeduplicationHeader> {\r\n\t\treturn this._headerColumns;\r\n\t}\r\n\r\n\tSaveChanges(){\r\n\t\tthis.Trigger(EVENTS.SAVE_CHANGES);\r\n\t}\r\n\r\n\tCancel() {\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tResetRows() {\r\n\t\tthis._rows([]);\r\n\t}\r\n\r\n\tShowModal() {\r\n\t\tif (this._modal) {\r\n\t\t\tthis._modal.Show();\r\n\t\t\tBlockUI.Block({ Target: this._modal.Wrapper });\r\n\t\t}\r\n\t}\r\n\r\n\tRenderModal() {\r\n\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: 'deduplication-modal jBox-padding-20px'\r\n\t\t});\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis.ShowModal();\r\n\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationGridPopUp';\r\n\t}\r\n}","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\nimport {BaseColumn, SortOrder} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {GridColumnModel} from \"Core/Controls/Grid/Models/GridDataModel/GridColumnModel\";\r\nimport {SortModel} from \"Core/Controls/Grid/Models/SortModel\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport enumerable from '../../../Common/Decorators/EnumerableDecorator';\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\nimport {extractLookupValFieldMetadata} from \"Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel\";\r\n\r\n\r\nexport class DeduplicationHeader extends BaseColumn{\r\n\tprivate _columnName: string;\r\n\r\n\tconstructor(model: GridColumnModel, columnName: string) {\r\n super(model);\r\n\r\n this._columnName = columnName;\r\n\t}\r\n\r\n\t@enumerable get Title(): string {\r\n\t\treturn this._columnName;\r\n\t}\r\n\r\n get IsEnableSort(): boolean {\r\n return this._model.IsEnableSort;\r\n }\r\n\r\n ResetSort() {\r\n\t\tthis._sortOrder(SortOrder.Both);\r\n }\r\n\r\n\tget SortOrder() {\r\n\t\treturn this._sortOrder();\r\n\t}\r\n\r\n\tset SortOrder(order) {\r\n\t\tthis._sortOrder(order);\r\n\t}\r\n\r\n\tGetSortModel(): SortModel {\r\n\t\tconst model = new SortModel();\r\n\r\n\t\tmodel.OrderColumn = this._model.Alias;\r\n\t\tmodel.SortOrder = this._sortOrder();\r\n\r\n\t\treturn model;\r\n\t}\r\n\r\n\r\n\tSort() {\r\n BlockUI.Block();\r\n\t\tif (this._sortOrder() === SortOrder.Both) {\r\n\t\t\tthis._sortOrder(SortOrder.Asc);\r\n\t\t} else if (this._sortOrder() === SortOrder.Asc) {\r\n\t\t\tthis._sortOrder(SortOrder.Desc);\r\n\t\t} else if (this._sortOrder() === SortOrder.Desc) {\r\n\t\t\tthis._sortOrder(SortOrder.Both);\r\n\t\t}\r\n\t\tthis.Trigger(EVENTS.SORT);\r\n }\r\n\r\n\tGetClassNames(model: any, classNames?: string[]): string {\r\n\t\tlet result: string;\r\n\t\tlet additionalClassNames: string;\r\n\t\tif(!this.IsEnableSort){\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tif (model.FieldMetadata) {\r\n\t\t\tresult =\r\n\t\t\t\tmodel.FieldMetadata.Type.toString() + ' ' + model.FieldMetadata.FormatName.toString().replace(' ', '');\r\n\r\n\t\t\tif (model.FieldMetadata.Type === FIELD_TYPES.Lookup) {\r\n\t\t\t\tconst validationFieldMetadata = extractLookupValFieldMetadata(model.FieldMetadata);\r\n\r\n\t\t\t\tif (validationFieldMetadata) {\r\n\t\t\t\t\tresult += ` ${validationFieldMetadata.Type} ${validationFieldMetadata.FormatName.toString().replace(\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} else if (model.Type) {\r\n\t\t\tresult = model.Type;\r\n\t\t} else {\r\n\t\t\tresult = '';\r\n\t\t}\r\n\r\n\t\tif (classNames) {\r\n\t\t\tadditionalClassNames = classNames.join(' ');\r\n\r\n\t\t\treturn result + ' ' + additionalClassNames;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { DeduplicationCell } from \"Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationCell\";\r\nimport { DeduplicationModel } from \"Core/ProfilePage/Deduplication/Models/DeduplicationModel\";\r\nimport { DeduplicationActionCell } from 'Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationActionCell';\r\nimport { ICell } from 'Core/ProfilePage/Deduplication/DeduplicationEditor/ICell';\r\nimport { EVENTS } from 'Core/ProfilePage/Deduplication/DeduplicationEditor/Events';\r\n//import { UpdateDeduplicationModel } from 'Core/ProfilePage/Deduplication/Models/UpdateDeduplicationModel';\r\nimport { IDictionary } from 'Core/Screens/BaseScreen';\r\nimport { DeduplicationStore } from 'Core/ProfilePage/Deduplication/Stores/DeduplicationStore';\r\n\r\nimport { IKeyValuePair } from 'Core/Portlets/Utils/GuidToPortletInfoMap';\r\nimport { NOTIFICATIONS, LABELS, CONFIRMATIONS } from \"Core/Components/Translation/Locales\";\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nimport Template from 'Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationRow.html';\r\nimport enumerable from '../../../Common/Decorators/EnumerableDecorator';\r\n\r\nexport class DeduplicationRow {\r\n\tprivate _cells: KnockoutObservableArray<ICell>;\r\n\tprivate _model: any;\r\n\tprivate _mainGrid: boolean;\r\n\tprivate _disabled: KnockoutObservable<boolean>;\r\n\tprivate _mergedEnabled: KnockoutObservable<boolean>;\r\n\tprivate _entityName: string;\r\n\tprivate deduplicationIntance: any;\r\n\r\n\r\n\tconstructor(model: any, mainGrid?: boolean, entityName?: string, deduplicationIntance?: any) {\r\n\t\tthis._mainGrid = mainGrid || false;\r\n\t\tthis._model = model;\r\n\t\tthis._cells = ko.observableArray([]);\r\n\t\tthis._disabled = ko.observable(false);\r\n\t\tthis._mergedEnabled = ko.observable(false);\r\n\t\tthis._entityName = entityName;\r\n\t\tthis.deduplicationIntance = this._model.DeduplicationInstance || deduplicationIntance;\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\t@enumerable get Model() {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tInit() {\r\n\t\tconst editCells = [];\r\n\r\n\t\t_.each(this._model.Data, (rowCell: any, i: number) => {\r\n\t\t\tif (rowCell.DisplayValue === 'Action') {\r\n\t\t\t\tthis._cells.push(new DeduplicationCell(\r\n\t\t\t\t\trowCell.FieldId,\r\n\t\t\t\t\t'',\r\n\t\t\t\t\t'',\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tthis._model.SelectionType,\r\n\t\t\t\t\t'popUpAction',\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tthis.deduplicationIntance)\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tif (i === 1 && this._mainGrid) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tconst cell = new DeduplicationCell(\r\n\t\t\t\t\trowCell.FieldId,\r\n\t\t\t\t\trowCell.DisplayValue,\r\n\t\t\t\t\trowCell.Type,\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\trowCell.IsSelected,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t'popUpData',\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tthis.deduplicationIntance);\r\n\t\t\t\tthis._cells.push(cell);\r\n\t\t\t\teditCells.push(cell);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t\tthis._disabled(this._model.IsDisabled);\r\n\t\tthis._mergedEnabled(this._model.IsMergeEnabled);\r\n\t\tif (this._model.EntityId) {\r\n\t\t\tconst kSeq = this._model.Data[1].DisplayValue;\r\n\t\t\tconst entityId = this._model.EntityId;\r\n\t\t\tthis._cells.push(new DeduplicationCell(\r\n\t\t\t\tnull,\r\n\t\t\t\t'',\r\n\t\t\t\t'',\r\n\t\t\t\tthis,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\t'popUpTrigger',\r\n\t\t\t\tkSeq,\r\n\t\t\t\tentityId,\r\n\t\t\t\tthis._entityName,\r\n\t\t\t\tthis.deduplicationIntance));\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\r\n\t}\r\n\r\n\t@enumerable get Cells(): KnockoutObservableArray<ICell> {\r\n\t\treturn this._cells;\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport { URL } from 'Core/Common/Url';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { DeduplicationSubjectsModel, GetMatchedRecords } from 'Core/ProfilePage/Deduplication/Models/DeduplicationSubjectsModel';\r\n//import { MatchedRecordsModel } from 'Core/ProfilePage/Deduplication/Models/MatchedRecordsModel';\r\n\r\n\r\n\r\ninterface IMatchedRecordsModel {\r\n\tEntityId: number;\r\n\tPageNumber: number;\r\n\tRecordsPerPage: number;\r\n\tSort: Array<any>;\r\n}\r\n\r\ninterface IMatchAllModel {\r\n\tEntityId: number;\r\n}\r\n\r\ninterface IDeleteAllModel {\r\n\tEntityId: number;\r\n}\r\n\r\nexport enum Actions {\r\n\tleftSide = 0,\r\n\trightSide = 1,\r\n\tmerge = 2\r\n}\r\n\r\n\r\n\r\ninterface IDeduplicationMatchedRecordModel {\r\n\tEntityId: number,\r\n\tKSeq: number\r\n}\r\n\r\ninterface IDeduplicationRecordModel {\r\n EntityId: number,\r\n LeftRecordId: number,\r\n RightRecordId: number\r\n}\r\n\r\n\r\ninterface IDeduplicationAllModel {\r\n\tEntityId: number,\r\n\tMinimumRate: number\r\n}\r\n\r\ninterface IDeduplicationFieldModel {\r\n\tAction: number,\r\n\tFieldId: number\r\n}\r\n\r\ninterface IDeduplicationMatchedModel {\r\n\tEntityId: number,\r\n\tKSeq: number,\r\n\tChanges: Array<IDeduplicationFieldModel>\r\n}\r\n\r\ninterface IDeduplicationModel {\r\n EntityId: number,\r\n LeftRecordId: number,\r\n RightRecordId: number,\r\n Changes: Array<IDeduplicationFieldModel>\r\n}\r\n\r\n\r\nexport class DeduplicationStore {\r\n\tstatic GetDeduplicationSubjects(): P.Promise<Array<DeduplicationSubjectsModel>> {\r\n\t\tvar deferredResult = P.defer<Array<DeduplicationSubjectsModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/DeduplicationApi/GetCurrentEntityTypeDeduplicationSubjects\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMatchedRecords(params: IMatchedRecordsModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/DeduplicationApi/GetMatchedRecords\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic DeduplicateAll(params: IDeduplicationAllModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/DeduplicationApi/DeduplicateAll\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic MatchAll(params: IMatchAllModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/DeduplicationApi/MatchAll\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(JSON.parse(error.message).Message);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeleteAll(params: IDeleteAllModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/DeduplicationApi/DeleteAll\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(JSON.parse(error.message).Message);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetDeduplicationMatchedRecordModel(params: IDeduplicationMatchedRecordModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n url: \"api/DeduplicationApi/GetDeduplicationMatchedRecordModel\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n }\r\n\r\n static GetDeduplicationRecordModel(params: IDeduplicationRecordModel): P.Promise<any> {\r\n var deferredResult = P.defer<any>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"api/DeduplicationApi/GetDeduplicationRecordModel\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\r\n\r\n\tstatic DeduplicateMatched(params: IDeduplicationMatchedModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/DeduplicationApi/DeduplicateMatched\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n }\r\n\r\n static Deduplicate(params: IDeduplicationModel): P.Promise<any> {\r\n var deferredResult = P.defer<any>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"api/DeduplicationApi/Deduplicate\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\r\n\r\n\tstatic GetMatchingStatus(entityId: number): P.Promise<any> {\r\n var deferredResult = P.defer<any>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"api/DeduplicationApi/GetMatchingStatus\",\r\n dataType: \"json\",\r\n type: \"GET\"\r\n\t\t\t}, params: { EntityId: entityId }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => deferredResult.resolve(data));\r\n\r\n return deferredResult.promise();\r\n }\t\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class LicenseHolderModel {\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tLicenseUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tLicenseConnectUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveConnectUsersNumber: number;\r\n\t@deserialize\r\n\tLicenseRemoteUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveRemoteUsersNumber: number;\r\n\t@deserialize\r\n\tLicenseLimited1UsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveLimited1UsersNumber: number;\r\n\t@deserialize\r\n\tLicenseLimited2UsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveLimited2UsersNumber: number;\r\n\t@deserialize\r\n\tLicenseLimited3UsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveLimited3UsersNumber: number;\r\n\r\n\t@deserialize\r\n\tLicensePortalUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActivePortalUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tLicenseGDPRUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveGDPRUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tMaxRole: number;\r\n\r\n\t@deserialize\r\n\tUserMaxRole: string;\r\n\r\n\t@deserialize\r\n\tExpirationDate: Date;\r\n\r\n\t@deserialize\r\n\tImage: string;\r\n}","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport { LicenseHolderModel } from 'Core/ProfilePage/LicenseHolder/Models/LicenseHolderModel';\r\nimport { AttachmentModel } from \"Core/Controls/Image/Models/AttachmentModel\";\r\n\r\nexport class LicenseHolderStore {\r\n\tstatic GetLicenseHolderModel(): P.Promise<LicenseHolderModel> {\r\n\t\tvar deferredResult = P.defer<LicenseHolderModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.AUTH.GET_CACHED_LICENSE,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data.ResultObject));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject(data.ErrorMessage);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UploadLicenseLogo(params: AttachmentModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.AUTH.UPLOAD_LICENSE_LOGO,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject(data.ErrorMessage);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): LicenseHolderModel {\r\n\t\tvar model = GenericDeserialize<LicenseHolderModel>(jsonObject, LicenseHolderModel);\r\n\t\treturn model;\r\n\t}\r\n\t\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport default class Exception {\r\n\t@deserialize\r\n\tMessage: string;\r\n} ","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport Exception from \"Core/Results/Exceptions/Base/Exception\";\r\n\r\ninterface IOperationResult {\r\n\tIsSuccessful: boolean;\r\n\tErrorMessage: string;\r\n}\r\n\r\nexport default class OperationResult {\r\n\t@deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n FollowUpRecordId: number;\r\n\r\n\t@deserialize\r\n\tSequence: number;\r\n\r\n\t@deserialize\r\n\tMainLinkRecordId: number;\r\n\r\n\t@deserialize\r\n\tExampleTypeId: number;\r\n\r\n\t@deserialize\r\n\tIsSuccessfull: boolean;\r\n\r\n\t@deserialize\r\n\tErrorMessage: string;\r\n\r\n\t@deserialize\r\n\tOperationMessage: string;\r\n\r\n\t@deserializeAs(Exception)\r\n\tExceptions: Array<Exception>;\r\n\r\n\t@deserialize\r\n\tWarnings: string[];\r\n\r\n\tget Exception() {\r\n\t\treturn this.ErrorMessage;\r\n\t}\r\n\r\n\tconstructor(options?: IOperationResult) {\r\n\t\tif (options) {\r\n\t\t\tthis.ErrorMessage = options.ErrorMessage;\r\n\t\t\tthis.IsSuccessfull = options.IsSuccessful;\r\n\t\t}\r\n\t}\r\n}\t","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport class ActionSubjectRecordModel {\r\n @deserialize\r\n ActionEntityId: number;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tRecordName: string;\r\n\r\n\t@deserialize\r\n\tRecordTranslatedName: string;\r\n\r\n\t@deserialize\r\n RecordTypeName: string;\r\n\r\n\t@deserialize\r\n\tRecordTypeTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tLifeStatusId: number;\r\n\r\n\t@deserialize\r\n\tLifeStatusName: string;\r\n\r\n\t@deserialize\r\n\tLifeStatusTranslatedName: string;\r\n\r\n @deserialize\r\n IsFollowUpDisabled: boolean;\r\n\r\n @deserialize\r\n DisabledReason: string;\r\n\r\n @deserialize\r\n FollowupModeId: number;\r\n\r\n @deserialize\r\n FollowupModeName: string;\r\n\r\n get DisplayRecordTypeName(): string{\r\n \treturn this.RecordTypeTranslatedName || this.RecordTypeName;\r\n\t}\r\n\r\n\tget DisplayRecordName(): string{\r\n\t\treturn this.RecordTranslatedName || this.RecordName;\r\n\t}\r\n\r\n\tconstructor(entityId?: number, recordId?: number) {\r\n\t\tthis.EntityId = entityId;\r\n\t\tthis.RecordId = recordId;\r\n\t}\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\nimport { ReferenceModel } from \"./ReferenceModel\";\r\nimport { RightsModel } from \"./RightsModel\";\r\nimport { TranslationModel } from \"./TranslationModel\";\r\n\r\n\r\nexport class ControlDataModel {\r\n\tconstructor(init?: Partial<ControlDataModel>) {\r\n\t\tthis.ControlId = 0;\r\n\t\tthis.FieldName = null;\r\n\t\tthis.FieldId = null;\r\n\t\tthis.Value = '';\r\n\t\tthis.Translations = [];\r\n\t\tthis.ValFieldTypeName = null;\r\n\t\tthis.LabelOriginalValue = '';\r\n\t\tObject.assign(this, init);\r\n\t}\r\n\r\n\t@deserialize\r\n\tControlId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n\t@deserialize\r\n\tValue: string | any;\r\n\r\n\t@deserialize\r\n\tLabelOriginalValue: string | any;\r\n\r\n\t@deserialize\r\n\tValues: any;\r\n\r\n\t@deserialize\r\n\tFieldId: number;\r\n\r\n\t@deserialize\r\n\tDisplayValue: string;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tTranslations: Array<TranslationModel>;\r\n\r\n\t@deserializeAs(ReferenceModel)\r\n\tReference: ReferenceModel;\r\n\r\n\tRights: RightsModel;\r\n\r\n\tFieldName: string;\r\n\t\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tValFieldTypeName: string;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport class LifeStatusInfo {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tLastStatusDate: Date;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tMemoTranslation: string;\r\n\r\n\tModified: boolean;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\tconstructor(name?: string, lastStatusDate?: Date) {\r\n\t\tthis.Name = name;\r\n\t\tthis.LastStatusDate = lastStatusDate;\r\n\t}\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport interface IRecordExampleParams {\r\n\tIsExample: boolean;\r\n\tPossibleToExample: boolean;\r\n}\r\n\r\nexport class RecordExampleModel {\r\n\t@deserialize\r\n\tIsExample: boolean;\r\n \r\n\t@deserialize\r\n\tPossibleToExample: boolean;\r\n\r\n\tconstructor(params?: IRecordExampleParams) {\r\n\t\tif (params) {\r\n\t\t\tthis.IsExample = params.IsExample;\r\n\t\t\tthis.PossibleToExample = params.PossibleToExample;\r\n\t\t}\r\n\t}\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport interface IRecordPersonalizationParams {\r\n\tIsPersonalized: boolean;\r\n\tPossibleToPersonalize: boolean;\r\n}\r\n\r\nexport class RecordPersonalizationModel {\r\n\t@deserialize\r\n\tIsPersonalized: boolean;\r\n\t@deserialize\r\n\tPossibleToPersonalize: boolean;\r\n\r\n\tconstructor(params?: IRecordPersonalizationParams) {\r\n\t\tif (params) {\r\n\t\t\tthis.IsPersonalized = params.IsPersonalized;\r\n\t\t\tthis.PossibleToPersonalize = params.PossibleToPersonalize;\r\n\t\t}\r\n\t}\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\nimport { LifeStatusInfo } from \"./LifeStatusInfo\";\r\nimport { RecordExampleModel } from \"./RecordExampleModel\";\r\nimport { RecordPersonalizationModel } from \"./RecordPersonalizationModel\";\r\n\r\nexport interface IRecordSpecsParams {\r\n\tRecordPersonalization: RecordPersonalizationModel;\r\n\tLifeStatusInfo: LifeStatusInfo;\r\n\tRecordExampleInfo: RecordExampleModel;\r\n}\r\n\r\nexport class RecordSpecsModel {\r\n\t@deserialize\r\n\tIsNewRecord: boolean;\r\n\r\n\t@deserializeAs(RecordPersonalizationModel)\r\n\tRecordPersonalization: RecordPersonalizationModel;\r\n\r\n\t@deserializeAs(RecordExampleModel)\r\n\tRecordExampleInfo: RecordExampleModel;\r\n\r\n\t@deserializeAs(LifeStatusInfo)\r\n\tLifeStatusInfo: LifeStatusInfo;\r\n\r\n\t@deserialize\r\n\tRecordOwner: number;\r\n\r\n\t@deserialize\r\n\tIsExample: boolean;\r\n\r\n\t@deserialize\r\n\tIsEnabled: boolean;\r\n\r\n\t@deserialize\r\n\tIsDisabled: boolean;\r\n\r\n\tconstructor(params?: IRecordSpecsParams) {\r\n\t\tthis.IsNewRecord = true;\r\n\r\n\t\tif (params) {\r\n\t\t\tthis.RecordPersonalization = params.RecordPersonalization;\r\n\t\t\tthis.LifeStatusInfo = params.LifeStatusInfo;\r\n\t\t\tthis.RecordExampleInfo = params.RecordExampleInfo;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate GetDefaultParams(): IRecordSpecsParams {\r\n\t\treturn {\r\n\t\t\tRecordPersonalization: new RecordPersonalizationModel(),\r\n\t\t\tRecordExampleInfo: new RecordExampleModel(),\r\n\t\t\tLifeStatusInfo: new LifeStatusInfo()\r\n\t\t}\r\n\t}\r\n}\r\n","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\nimport { ReferenceTableModel } from \"./ReferenceTableModel\";\r\nimport { SelectedEntityRecordModel } from \"./SelectedEntityRecordModel\";\r\n\r\nexport class ReferenceModel {\r\n\t@deserializeAs(SelectedEntityRecordModel)\r\n\tSelectedEntityRecord: SelectedEntityRecordModel;\r\n\r\n\t@deserializeAs(ReferenceTableModel)\r\n\tReferenceTable: ReferenceTableModel;\r\n\r\n\t@deserialize\r\n\tIsModified: boolean;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class ReferenceTableModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslation: string;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tEntityIcon: IconModel;\r\n\r\n\t@deserialize\r\n\tValidationError: string;\r\n\r\n\t@deserialize\r\n\tIsValid: boolean;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport class RightsModel {\r\n\t@deserialize\r\n\tIsDeletingAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsEditingAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tChangeSecurityAllowance: boolean;\r\n\r\n\t@deserialize\r\n\tIsChangingSecurityAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsKanbanBoardExist: boolean;\r\n\r\n\t@deserialize\r\n\tIsAddingRecordAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsRecordSecurityOk: boolean;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nimport { TagsScreenDataModel } from \"Core/Controls/Tag/Models/TagsScreenDataModel\";\r\nimport { ControlDataModel } from \"./ControlDataModel\";\r\nimport { RightsModel } from \"./RightsModel\";\r\nimport { RecordSpecsModel } from \"./RecordSpecsModel\";\r\nimport { ActionSubjectRecordModel } from \"./ActionSubjectRecordModel\";\r\n\r\nexport class ScreenDataModel {\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tRecordExists: boolean;\r\n\r\n\tconstructor() {\r\n\t\tthis.ControlsData = [];\r\n\t\tthis.QueryBuilderData = [];\r\n\t\tthis.RecordId = 0;\r\n\t}\r\n\r\n\t@deserialize\r\n\tIsTypeTransformationRequired: boolean;\r\n\r\n\t@deserializeAs(ControlDataModel)\r\n\tControlsData: Array<ControlDataModel>;\r\n\r\n\t@deserializeAs(ControlDataModel)\r\n\tQueryBuilderData: Array<ControlDataModel>;\r\n\r\n\t@deserializeAs(RightsModel)\r\n\tRights: RightsModel;\r\n\r\n\t@deserializeAs(RecordSpecsModel)\r\n\tRecordSpecs: RecordSpecsModel;\r\n\r\n\t@deserializeAs(TagsScreenDataModel)\r\n\tScreenTags: Array<TagsScreenDataModel>;\r\n\r\n\t@deserializeAs(ActionSubjectRecordModel)\r\n\tActionSubjectRecord: ActionSubjectRecordModel;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class SelectedEntityModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n Translation: string;\r\n\r\n @deserializeAs(IconModel)\r\n\tIcon: IconModel;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\nimport { SelectedEntityModel } from \"./SelectedEntityModel\";\r\nimport { SelectedRecordModel } from \"./SelectedRecordModel\";\r\n\r\nexport class SelectedEntityRecordModel {\r\n\t@deserializeAs(SelectedEntityModel)\r\n\tSelectedEntity: SelectedEntityModel;\r\n\r\n\t@deserializeAs(SelectedRecordModel)\r\n\tSelectedRecord: SelectedRecordModel;\r\n\r\n\t@deserialize\r\n\tIsValid: boolean;\r\n\r\n\t@deserialize\r\n\tValidationError: string;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport class SelectedRecordModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslation: string;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tMemoTranslation: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport class TranslationModel {\r\n\t@deserialize\r\n\tLanguageId: number;\r\n\r\n\t@deserialize\r\n\tValue: string;\r\n}","import 'pubsub';\r\n\r\nimport {IScreen} from 'Core/Screens/IScreen';\r\nimport {ScreenStore} from 'Core/ScreenManager/Stores/ScreenStore';\r\nimport {ScreenFactory} from 'Core/Screens/ScreenFactory';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {DesignScreen} from 'Core/Screens/DesignScreen/DesignScreen';\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport { ConcreteEntityModel } from '../../QueryBuilder/Models/ConcreteEntityModel';\r\n\r\nexport interface IEditScreenOptions {\r\n EntityId: number;\r\n TableTypeId?: number;\r\n TableTypeName?: string;\r\n KindId?: number;\r\n RecordId?: number;\r\n LoadAsExample?: boolean;\r\n DataMode?: DataModes;\r\n SubjectLifestatusId?: number;\r\n ActionSubjectRecord?: ActionSubjectRecordModel;\r\n ParentRecordId?: number;\r\n AliasSuffix?: string;\r\n}\r\n\r\nexport interface IGetScreenByIdParams {\r\n ScreenId: number;\r\n RecordId?: number;\r\n RaiseNotImplemented?: boolean;\r\n}\r\n\r\nlet getScreenByIdDefaultParams: IGetScreenByIdParams = {\r\n ScreenId: 0,\r\n RecordId: 0,\r\n RaiseNotImplemented: false\r\n}\r\n\r\nexport class ScreenManager {\r\n static GetScreenById(params: IGetScreenByIdParams): P.Promise<IScreen> {\r\n var deferredResult = P.defer<IScreen>();\r\n\r\n params = Object.assign({}, getScreenByIdDefaultParams, params);\r\n ScreenStore.GetScreenById({ScreenId: params.ScreenId, RecordId: params.RecordId})\r\n .then(screenModel => {\r\n if (screenModel.Id === 0) {\r\n if (params.RaiseNotImplemented) {\r\n PubSub.publish('SCREEN_NOT_IMPLEMENTED', null);\r\n }\r\n deferredResult.reject({message: 'Screen not implemented'});\r\n return;\r\n }\r\n\r\n var screen = ScreenFactory.GetScreenInstance(screenModel);\r\n if (screen) {\r\n deferredResult.resolve(screen);\r\n } else {\r\n deferredResult.reject({message: \"Error loading screen\"});\r\n }\r\n })\r\n .fail(error => deferredResult.reject(error));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetEditScreen(options: IEditScreenOptions): P.Promise<IScreen> {\r\n const dataMode = options.DataMode || DataModes.Default;\r\n const entityId = options.EntityId;\r\n\r\n let tableTypeId = options.TableTypeId;\r\n\r\n if (!tableTypeId) {\r\n tableTypeId = !options.TableTypeName ? 0 : null;\r\n }\r\n\r\n const recordId = options.RecordId || 0;\r\n const aliasSuffix = options.AliasSuffix || '';\r\n\r\n var deferredResult = P.defer<IScreen>();\r\n\r\n ScreenStore.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: tableTypeId,\r\n TableTypeName: options.TableTypeName,\r\n KindId: options.KindId,\r\n RecordId: recordId,\r\n LoadAsExample: options.LoadAsExample,\r\n ParentRecordId: options.ParentRecordId,\r\n DataMode: dataMode,\r\n SubjectLifestatusId: options.SubjectLifestatusId\r\n }).then(screenModel => {\r\n if (!screenModel.Id) {\r\n deferredResult.resolve(null);\r\n return;\r\n }\r\n\r\n if (dataMode === DataModes.Copy || dataMode === DataModes.CopyWithRelations || dataMode === DataModes.CopyToType) {\r\n screenModel.Data.RecordSpecs.IsNewRecord = true;\r\n }\r\n\r\n screenModel.DataMode = dataMode;\r\n screenModel.SubjectLifestatusId = options.SubjectLifestatusId;\r\n screenModel.ActionSubjectRecord = options.ActionSubjectRecord;\r\n screenModel.AliasSuffix = aliasSuffix;\r\n\r\n var screen = ScreenFactory.GetScreenInstance(screenModel);\r\n if (screen) {\r\n deferredResult.resolve(screen);\r\n } else {\r\n deferredResult.reject({message: \"This type not found in screen factory\"});\r\n }\r\n }).fail(err => {\r\n deferredResult.reject(err);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDesignScreen(screenId: number): P.Promise<DesignScreen> {\r\n var deferredResult = P.defer<DesignScreen>();\r\n BlockUI.Block();\r\n\r\n let getSubjectEntityPromise = ScreenStore.GetSubjectEntity(screenId);\r\n let getDesignScreenPromise = ScreenStore.GetDesignScreen({ FormId: screenId });\r\n\r\n P.when(getDesignScreenPromise, getSubjectEntityPromise)\r\n .always(()=>BlockUI.Unblock())\r\n .then(result => {\r\n var screen = ScreenFactory.GetDesignScreenInstance(result[0], result[1])\r\n deferredResult.resolve(screen)\r\n }).fail(err => Notifier.Failed(err.message));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static DeleteScreen(screenId: number): P.Promise<any> {\r\n var deferredResult = P.defer<DesignScreen>();\r\n BlockUI.Block();\r\n ScreenStore.DeleteScreen({FormId: screenId})\r\n .always(() => BlockUI.Unblock())\r\n .then(() => deferredResult.resolve(null))\r\n .fail(error => deferredResult.reject(error));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateScreenName(screenId: number, name: string): P.Promise<any> {\r\n var deferredResult = P.defer<DesignScreen>();\r\n BlockUI.Block();\r\n ScreenStore.UpdateScreenName({FormId: screenId, Name: name})\r\n .always(() => BlockUI.Unblock())\r\n .then(() => deferredResult.resolve(null))\r\n .fail(error => deferredResult.reject(error));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetScreenByScreenType(entityId: number,\r\n screenType: ScreenTypes,\r\n recordId: number = 0,\r\n dataMode: DataModes = DataModes.Default,\r\n isLinkEditor: boolean = false) {\r\n var deferredResult = P.defer<IScreen>();\r\n\r\n ScreenStore.GetScreenByScreenType({\r\n EntityId: entityId,\r\n ScreenType: screenType,\r\n RecordId: recordId,\r\n DataMode: dataMode\r\n })\r\n .then(screenModel => {\r\n screenModel.DataMode = dataMode;\r\n var screen = ScreenFactory.GetScreenInstance(screenModel, isLinkEditor);\r\n if (screen) {\r\n deferredResult.resolve(screen);\r\n }\r\n })\r\n .fail(err => {\r\n if (err.status === 400) {\r\n let error = JSON.parse(err.message);\r\n deferredResult.reject({\r\n message: error.Message,\r\n status: err.status\r\n });\r\n } else {\r\n deferredResult.reject({\r\n message: err.message,\r\n status: err.status\r\n });\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static IsTypeTransformationRequired(entityId: number, recordId: number): P.Promise<boolean> {\r\n var deferredResult = P.defer<boolean>();\r\n ScreenStore.IsTypeTransformationRequired({EntityId: entityId, RecordId: recordId})\r\n\t .then((data) => deferredResult.resolve(data))\r\n .fail(error => deferredResult.reject(error));\r\n\r\n return deferredResult.promise();\r\n }\r\n}\r\n","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {ScreenModel, DesignScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport { ConcreteEntityModel } from '../../../QueryBuilder/Models/ConcreteEntityModel';\r\n\r\nexport interface IGetDesignScreenByIdRequestModel {\r\n FormId: number;\r\n};\r\n\r\nexport interface IUpdateScreenNameRequestModel {\r\n FormId: number;\r\n Name: string;\r\n};\r\n\r\nexport interface IGetScreenModelByIdRequestModel {\r\n ScreenId: number;\r\n RecordId?: number;\r\n};\r\n\r\nexport interface IGetScreenByScreenType {\r\n EntityId: number;\r\n ScreenType: number;\r\n RecordId: number;\r\n DataMode: DataModes;\r\n}\r\n\r\nexport interface IGetEditScreenRequestModel {\r\n EntityId: number;\r\n\tTableTypeId?: number;\r\n\tTableTypeName?: string;\r\n\tKindId?: number;\r\n RecordId: number;\r\n LoadAsExample: boolean;\r\n ParentRecordId?: number;\r\n DataMode?: DataModes;\r\n SubjectLifestatusId?: number;\r\n}\r\n\r\nexport class ScreenStore {\r\n static GetScreenById(params: IGetScreenModelByIdRequestModel): P.Promise<ScreenModel> {\r\n var deferredResult = P.defer<ScreenModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.GET_SCREEN_BY_ID,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n deferredResult.resolve(this.Deserialize(data));\r\n }).fail(() => deferredResult.reject({message: \"Error getting screen\"}));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDesignScreen(params: IGetDesignScreenByIdRequestModel): P.Promise<DesignScreenModel> {\r\n var deferredResult = P.defer<DesignScreenModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/FormDesignerApi/GetScreen',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(this.DeserializeDesignScreen(data));\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetSubjectEntity(screenId: number): P.Promise<ConcreteEntityModel> {\r\n var deferredResult = P.defer<ConcreteEntityModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/FormDesignerApi/GetSubjectEntity',\r\n type: 'GET'\r\n }, params: { ScreenId: screenId }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => deferredResult.resolve(GenericDeserialize<ConcreteEntityModel>(data, ConcreteEntityModel)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateScreenName(params: IUpdateScreenNameRequestModel): P.Promise<any> {\r\n var deferredResult = P.defer<DesignScreenModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.UPDATE_SCREEN_NAME,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(response => {\r\n if (response.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: response.ErrorMessage});\r\n }\r\n }).fail(() => deferredResult.reject({message: \"Error deleting screen\"}));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\r\n static DeleteScreen(params: IGetDesignScreenByIdRequestModel): P.Promise<any> {\r\n var deferredResult = P.defer<DesignScreenModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.DELETE_SCREEN,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(response => {\r\n if (response.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: response.ErrorMessage});\r\n }\r\n }).fail(() => deferredResult.reject({message: \"Error deleting screen\"}));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetScreenByScreenType(params: IGetScreenByScreenType): P.Promise<ScreenModel> {\r\n var deferredResult = P.defer<ScreenModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.GET_SCREEN_BY_SCREEN_TYPE,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(this.Deserialize(data.ResultObject));\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n\r\n })\r\n .fail(err => deferredResult.reject(err));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetEditScreen(params: IGetEditScreenRequestModel): P.Promise<ScreenModel> {\r\n var deferredResult = P.defer<ScreenModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.GET_EDIT_SCREEN,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(this.Deserialize(data.ResultObject));\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n static Deserialize(jsonObject: any): ScreenModel {\r\n var model = <ScreenModel>Deserialize(jsonObject, ScreenModel);\r\n return model;\r\n }\r\n\r\n static DeserializeDesignScreen(jsonObject: any): DesignScreenModel {\r\n var model = <DesignScreenModel>Deserialize(jsonObject.ResultObject, DesignScreenModel);\r\n return model;\r\n }\r\n\r\n static IsTypeTransformationRequired(params: any): P.Promise<boolean> {\r\n let deferredResult = P.defer<boolean>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.IS_TYPE_TRANSFORMATION_REQUIRED,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(data.ResultObject);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {BaseScreen} from \"Core/Screens/BaseScreen\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {RenderModes, CONTROL_TYPES } from \"Core/Constant\";\r\nimport {ControlModel} from \"Core/Controls/BaseControl/Models/ControlModel\";\r\nimport {Search} from \"Core/Controls/Search/Search\";\r\nimport {IForm} from \"Core/Screens/IScreen\";\r\nimport {ButtonSave} from \"Core/Controls/ButtonSave/ButtonSave\";\r\nimport {ButtonCancel} from \"Core/Controls/ButtonCancel/ButtonCancel\";\r\nimport { ButtonFollowUp } from \"Core/Controls/ButtonFollowUp/ButtonFollowUp\";\r\nimport {IStaticControlsPosition, StaticControlsProvider} from './StaticControlsProvider';\r\nimport {ControlFactory} from './ControlFactory';\r\n\r\nexport class StaticControlsInitializer {\r\n\tprivate static _initialized: boolean;\r\n\tprivate static _controlsDictionaryDelegate: { [screenType: string]: (screen: BaseScreen) => void };\r\n\r\n\tstatic AddStaticControls(screen: BaseScreen) {\r\n\t\tthis.Init();\r\n\t\tlet screenType = screen.GetType();\r\n\t\treturn this._controlsDictionaryDelegate[screenType](screen);\r\n\t}\r\n\r\n\tprivate static Init() {\r\n\t\tif (!this._initialized) {\r\n\t\t\tthis._controlsDictionaryDelegate = {};\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.ConsultScreen]] = this.AddForConsultScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.SpecialScreen]] = this.AddForSpecialScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.Dashboard]] = this.AddForDashboard.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.ListScreen]] = this.AddForListScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.EditScreen]] = this.AddForEditScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.Portlet]] = this.AddForPortlet.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.FormDesigner]] = this.AddForFormDesigner.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.LinkEditor]] = this.AddForLinkEditor.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.LookupEditorNewRecord]] = this.AddForLookupEditorNewRecord.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.QueryScreen]] = this.AddForQueryScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.CardScreen]] = this.AddForCardScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.ProcessCardPage]] = this.AddForProcessCardPage.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.StepsScreen]] = this.AddForStepsScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.EmptyScreen]] = this.AddForEmptyScreenScreen.bind(this);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static AddForQueryScreen(screen: BaseScreen) {}\r\n\r\n\tprivate static AddForCardScreen(screen: BaseScreen) {}\r\n\r\n\tprivate static AddForEmptyScreenScreen(screen: BaseScreen) {}\r\n\r\n private static AddForConsultScreen(screen: BaseScreen) {\r\n const staticControlsPosition = StaticControlsProvider.ForConsultScreen(screen.ShowFollowUp);\r\n this.RegisterStaticControls(staticControlsPosition, screen);\r\n\t}\r\n\r\n\tprivate static AddForSpecialScreen(screen: BaseScreen) {\r\n\t}\r\n\r\n\tprivate static AddForDashboard(screen: BaseScreen) {\r\n\t}\r\n\r\n\tprivate static AddForListScreen(screen: BaseScreen) {\r\n\t}\r\n\r\n\tprivate static AddForEditScreen(screen: BaseScreen) {\r\n\t\tconst staticControlsPosition = StaticControlsProvider.ForEditScreen(screen.ShowFollowUp, screen.IsDashMain);\r\n\t\tthis.RegisterStaticControls(staticControlsPosition, screen);\r\n\t}\r\n\r\n\tprivate static AddForLinkEditor(screen: BaseScreen) {\r\n\t\tconst staticControlsPosition = StaticControlsProvider.ForLinkEditor();\r\n\t\tthis.RegisterStaticControls(staticControlsPosition, screen);\r\n\t}\r\n\r\n\tprivate static AddForLookupEditorNewRecord(screen: BaseScreen) {\r\n\t\tconst staticControlsPosition = StaticControlsProvider.AddForLookupEditorNewRecord();\r\n\t\tthis.RegisterStaticControls(staticControlsPosition, screen);\r\n\t}\r\n\r\n\tprivate static AddForPortlet(screen: BaseScreen) { }\r\n\r\n\tprivate static AddForFormDesigner(screen: BaseScreen) { }\r\n\r\n\tprivate static AddForProcessCardPage(screen: BaseScreen) { }\r\n\r\n\tprivate static AddForStepsScreen(screen: BaseScreen) { }\r\n\r\n\tprivate static BuildControl(model: ControlModel, renderMode: RenderModes, subForm: IForm) {\r\n\t return ControlFactory.CreateControl({\r\n Model: model,\r\n Form: subForm,\r\n RenderMode: renderMode,\r\n IsStatic: true\r\n });\r\n }\r\n\r\n private static RegisterStaticControls(staticControlsPosition: IStaticControlsPosition, screen: BaseScreen) {\r\n\t\tstaticControlsPosition.ActionBar.reverse().forEach(controlModel => {\r\n const control = this.BuildControl(controlModel, screen.RenderMode, screen.ActionBar);\r\n\t\t\tscreen.ActionBar && screen.ActionBar.AddStaticControl(control);\r\n });\r\n\r\n\t\tstaticControlsPosition.SubForms.forEach((subForm, subFormIndex) => subForm.reverse().forEach(controlModel => {\r\n const control = this.BuildControl(controlModel, screen.RenderMode, screen.SubForms[subFormIndex]);\r\n screen.SubForms[subFormIndex].AddStaticControl(control);\r\n }));\r\n\r\n\t\tstaticControlsPosition.BottomBar.reverse().forEach(controlModel => {\r\n const control = this.BuildControl(controlModel, screen.RenderMode, screen.BottomBar);\r\n\t\t\tscreen.BottomBar && screen.BottomBar.AddStaticControl(control);\r\n })\r\n }\r\n}","import { GridRow } from \"Core/Controls/Grid/BaseGrid/GridRow/GridRow\";\r\n\r\nexport class MenuItemModel {\r\n\tconstructor(public row: GridRow,\r\n\t\tpublic DisplayValue: string, public Disabled: boolean) {\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport { GridRow } from 'Core/Controls/Grid/BaseGrid/GridRow/GridRow';\r\nimport { PathRunner } from \"Core/Components/PathRunner/PathRunner\";\r\n\r\nimport { LABELS, NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\nimport { GlobalManager, GLOBALS } from '../../GlobalManager/GlobalManager';\r\nimport { MenuItemModel } from './Models/MenuItemModel';\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\n\r\nimport ViewTemplate from 'Core/Components/ScreenSwitcher/Templates/View.html';\r\n\r\n\r\nexport class ScreenSwitcher {\r\n\tprivate _previousScreen: GridRow;\r\n\tprivate _nextScreen: GridRow;\r\n\tprivate _gridRowData: any;\r\n\tprivate _currentRow: GridRow;\r\n\tprivate _screen: any;\r\n\tprivate _labels = LABELS;\r\n\tprivate _notifications = NOTIFICATIONS;\r\n\r\n\tprivate _enabled: boolean;\r\n\tprivate _menuItems: Array<MenuItemModel>;\r\n\r\n\tconstructor(currentGridRow: GridRow, gridRowData: any, screen: any) {\r\n\t\tthis._gridRowData = gridRowData;\r\n\t\tthis._screen = screen;\r\n\t\tthis._menuItems = [];\r\n\r\n\t\tthis._currentRow = currentGridRow.Model\r\n\t\t\t? _.find(gridRowData, currentGridRow.Model)\r\n\t\t\t: _.find(gridRowData, currentGridRow);\r\n\r\n\t\tconst indexOfCurrentRow = this._gridRowData.indexOf(this._currentRow);\r\n\t\tif (indexOfCurrentRow === 0) {\r\n\t\t\tthis._previousScreen = null;\r\n\t\t\tthis._nextScreen = this._gridRowData[indexOfCurrentRow + 1];\r\n\t\t} else if (indexOfCurrentRow === this._gridRowData.length - 1) {\r\n\t\t\tthis._previousScreen = this._gridRowData[indexOfCurrentRow - 1];\r\n\t\t\tthis._nextScreen = null;\r\n\t\t} else {\r\n\t\t\tthis._previousScreen = this._gridRowData[indexOfCurrentRow - 1];\r\n\t\t\tthis._nextScreen = this._gridRowData[indexOfCurrentRow + 1];\r\n\t\t}\r\n\r\n\t\tconst searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n\t\tif (this._gridRowData.length > searchScreenIfRecordsCount) {\r\n\t\t\tthis._enabled = false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._enabled = true;\r\n\t\t\tthis._menuItems = this._gridRowData.map(row => this.GetMenuItem(row));\r\n\t\t}\r\n\t}\r\n\r\n private GetMenuItem(row: any): MenuItemModel {\r\n\t\tlet nameField = row.Data\r\n\t\t\t? row.Data.find(s => s.FieldMetadata.Name === \"NAME\")\r\n\t\t\t: row.Model.Data.find(s => s.FieldMetadata.Name === \"NAME\");\r\n const displayValue = nameField ? nameField.TranslatedValue ? nameField.TranslatedValue : nameField.DisplayValue : null;\r\n\r\n\t\treturn new MenuItemModel(row, displayValue, row == this._currentRow)\r\n }\r\n\r\n GetTemplate() {\r\n\t\treturn ViewTemplate;\r\n\t}\r\n\r\n\tGetEnabled():boolean {\r\n\t\treturn this._enabled;\r\n\t}\r\n\r\n\t@enumerable get GridRowData() {\r\n\t\treturn this._gridRowData;\r\n\t}\r\n\r\n\t@enumerable get NextScreen() {\r\n\t\treturn this._nextScreen;\r\n\t}\r\n\t@enumerable get CurrentRow() {\r\n\t\treturn this._currentRow;\r\n\t}\r\n\r\n\tGetPreviousScreen() {\r\n\t\tthis._screen._modal.Close();\r\n\t\tconst isSpecialScreenExist = this._previousScreen.Form && this._previousScreen.Form.GetScreen() && this._previousScreen.Form.GetScreen().IsSpecialScreenExist;\r\n\t\tPathRunner.Instance.GetUnit(this._previousScreen.EntityId, isSpecialScreenExist).LoadNewData(this._previousScreen.RecordId);\r\n\t\tPubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n\t\t\tEntityId: this._previousScreen.EntityId,\r\n\t\t\tRecordId: this._previousScreen.RecordId,\r\n\t\t\tRecordTypeId: this._previousScreen.RecordTypeId, \r\n\t\t\tIsOpenInModal: true,\r\n\t\t\tOwner: null, \r\n\t\t\tCurrentRow: this._previousScreen,\r\n\t\t\tRowList: this._gridRowData,\r\n\t\t\tIsOpenAgenda: false,\r\n\t\t\tIsHyperlink: true\r\n\t\t});\r\n\t};\r\n\r\n\tGetNextScreen() {\r\n\t\tthis._screen._modal.Close();\r\n\t\tconst isSpecialScreenExist = this._nextScreen.Form && this._nextScreen.Form.GetScreen() && this._nextScreen.Form.GetScreen().IsSpecialScreenExist;\r\n\t\tPathRunner.Instance.GetUnit(this._nextScreen.EntityId, isSpecialScreenExist).LoadNewData(this._nextScreen.RecordId);\r\n\t\tPubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n\t\t\tEntityId: this._nextScreen.EntityId,\r\n\t\t\tRecordId: this._nextScreen.RecordId,\r\n\t\t\tRecordTypeId: this._nextScreen.RecordTypeId,\r\n\t\t\tIsOpenInModal: true,\r\n\t\t\tOwner: null,\r\n\t\t\tCurrentRow: this._nextScreen,\r\n\t\t\tRowList: this._gridRowData,\r\n\t\t\tIsOpenAgenda: false,\r\n\t\t\tIsHyperlink: true\r\n\t\t});\r\n\t};\r\n\r\n\tClick(item: MenuItemModel) {\r\n\t\tthis._screen._modal.Close();\r\n\t\tconst isSpecialScreenExist = item.row.Form && item.row.Form.GetScreen() && item.row.Form.GetScreen().IsSpecialScreenExist;\r\n\t\tPathRunner.Instance.GetUnit(item.row.EntityId, isSpecialScreenExist).LoadNewData(item.row.RecordId);\r\n\t\tPubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n\t\t\tEntityId: item.row.EntityId,\r\n\t\t\tRecordId: item.row.RecordId,\r\n\t\t\tRecordTypeId: item.row.RecordTypeId,\r\n\t\t\tIsOpenInModal: true,\r\n\t\t\tOwner: null,\r\n\t\t\tCurrentRow: item.row,\r\n\t\t\tRowList: this._gridRowData,\r\n\t\t\tIsOpenAgenda: false,\r\n\t\t\tIsHyperlink: true\r\n\t\t});\r\n\t};\r\n}","// Module\nvar code = \"<a data-bind=\\\"click: GetPreviousScreen, css: { 'disabled': !_previousScreen },\\r\\n attr: {'title': _labels.PREVIOUS_RECORD}\\\" class=\\\"switch-screen-button previous\\\"> <i class=\\\"fa fa-angle-left\\\" align=\\\"center\\\"></i> </a> <div class=\\\"dropdown followListDropdown\\\"> <div data-bind=\\\" css: { 'disabled': !_enabled },\\r\\n\\t\\t\\t\\t\\t\\t alignDropdown: {\\r\\n\\t\\t\\t\\t\\t\\t \\t\\ttype: 'bootstrap',\\r\\n\\t\\t\\t\\t\\t\\t \\t\\tdirections: {vertical: true, horizontal: true},\\r\\n\\t\\t\\t\\t\\t\\t \\t\\taddEventOnclick: true\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t \\t},\\r\\n\\t\\t\\t\\t\\t tooltip:{\\r\\n content: _enabled? _notifications.CLICK_TO_SEE_ALL_RECORDS_IN_THE_LIST: _notifications.THE_NUMBER_OF_RECORDS_EXCEEDS_THE_CONFIGURED_LIMIT,\\r\\n position: { x: 'center', y: 'bottom' },\\r\\n\\t\\t\\toutside: 'y'\\r\\n }\\\" type=\\\"button\\\" class=\\\"btn subFormControl followListDropdown-center-button\\\" data-toggle=\\\"dropdown\\\"> <!-- ko text: _labels.FOLLOW_LIST --><!-- /ko --> <a data-bind=\\\" css: { 'disabled': !_enabled }\\\"><i class=\\\"fa\\\" align=\\\"center\\\"></i></a> </div> <!-- ko if: _enabled --> <ul class=\\\"dropdown-menu\\\" role=\\\"menu\\\"> <!-- ko foreach: _menuItems --> <li> <a data-bind=\\\"css: { 'disabled': Disabled }, click: $parent.Click.bind($parent, $data, null)\\\" href=\\\"javascript:;\\\"> <!-- ko text: DisplayValue --><!-- /ko --> <!-- ko ifnot: DisplayValue --> <i class=\\\"fa fa-external-link\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> </a> </li> <!-- /ko --> </ul> <!-- /ko --> </div> <a data-bind=\\\"click: GetNextScreen, css: { 'disabled': !_nextScreen },\\r\\n attr: {'title': _labels.NEXT_RECORD}\\\" class=\\\"switch-screen-button nextRecord\\\"> <i class=\\\"fa fa-angle-right\\\" align=\\\"center\\\"></i> </a>\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\nimport * as $ from \"jquery\";\r\n\r\nimport 'pubsub';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {IFormParam, IScreen, IScreenState} from 'Core/Screens/IScreen';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {SubForm} from 'Core/Screens/Forms/SubForm/SubForm';\r\nimport {ActionBar} from 'Core/Screens/Forms/ActionBar/ActionBar';\r\nimport {BottomBar} from 'Core/Screens/Forms/BottomBar/BottomBar';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {SubFormModel} from 'Core/Models/Screens/SubFormModel';\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {\r\n ControlTypes,\r\n CONTROL_TYPES,\r\n FIELD_TYPES,\r\n FONT_NAME,\r\n RenderModes,\r\n SYSTEM_TABLE_NAMES,\r\n SCREEN_PROPERTY_TYPE\r\n} from 'Core/Constant';\r\nimport {ScreenDataModel} from 'Core/ScreenManager/Models/ScreenDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {Icon} from 'Core/Icon/Icon';\r\nimport {StaticControlsInitializer} from 'Core/Controls/StaticControlsInitializer';\r\nimport {TabPage} from 'Core/Controls/TabPage/TabPage';\r\nimport {Tab} from 'Core/Controls/Tab/Tab';\r\nimport {Tag} from 'Core/Controls/Tag/Tag';\r\nimport {UserManager} from \"User/UserManager\";\r\nimport {SelectUser} from \"Core/Controls/SelectUser/SelectUser\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport {TagsScreenDataModel} from \"Core/Controls/Tag/Models/TagsScreenDataModel\";\r\nimport {QueryBuilder} from 'Core/Controls/QueryBuilder/QueryBuilder';\r\nimport {HelpBook} from 'HelpBook/HelpBook';\r\nimport {IModalComponent} from 'Core/Common/Interfaces/IModalComponent';\r\nimport {GridRow} from 'Core/Controls/Grid/BaseGrid/GridRow/GridRow';\r\nimport {ScreenSwitcher} from \"Core/Components/ScreenSwitcher/ScreenSwitcher\";\r\nimport {TranslationManager} from \"../Components/Translation/TranslationManager\";\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\nimport {IGetDependsOnResponse, RecordStore} from 'Core/Common/Stores/RecordStore';\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"../Components/Translation/Locales\";\r\nimport {PUB_SUB_EVENTS} from '../../MenuManager/PubSubEvents';\r\nimport { EVENTS } from './Events';\r\nimport { ActionSubjectRecordModel } from 'Core/ScreenManager/Models/ActionSubjectRecordModel';\r\n\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {FormProperties} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\nimport {ISettingsModal} from \"Core/Controls/FormDesigner/SettingsModal/SettingsModal\";\r\n\r\nexport interface IDictionary<T> {\r\n [K: string]: T;\r\n}\r\n\r\nexport interface IScreenVariable {\r\n Field: AttachedFieldModel;\r\n Value: string;\r\n\r\n FullName: string;\r\n}\r\n\r\n\r\nexport interface IControlAttachedField {\r\n Field: AttachedFieldModel,\r\n ControlType: string\r\n}\r\n\r\ninterface CustomStyleProperties {\r\n [key: string]: string | null;\r\n}\r\n\r\nexport class BaseScreen extends Event implements IScreen {\r\n protected _modal: Modal;\r\n protected _subForms: SubForm[];\r\n protected _actionBar: ActionBar;\r\n protected _bottomBar: BottomBar;\r\n protected _recordId: number;\r\n protected _tableTypeId: number;\r\n protected _model: ScreenModel;\r\n protected _isReady: KnockoutObservable<boolean>;\r\n private _source: IScreen;\r\n protected _controls: Array<IControl>;\r\n protected _renderMode: RenderModes;\r\n protected _dataModel: ScreenDataModel;\r\n protected _guid: string;\r\n protected _inModal: boolean;\r\n protected _isNested: boolean;\r\n protected _nestedLevel: number;\r\n protected _icon: Icon;\r\n protected _el: any;\r\n protected _modalOptions: any;\r\n protected _state: IScreenState;\r\n protected _isDashMain: boolean;\r\n protected _showFollowUp: boolean;\r\n protected _target: HTMLElement;\r\n protected _isListScreenExist: boolean;\r\n protected _isSpecialScreenExist: boolean;\r\n protected _isDashboardScreenExist: boolean;\r\n protected _isEditScreenExist: boolean;\r\n protected _isConsultScreenExist: boolean;\r\n protected _isStepsScreenExist: boolean;\r\n protected _dataMode: DataModes;\r\n protected _subjectLifeStatusId: number;\r\n protected _screenVariables: IDictionary<IScreenVariable>;\r\n protected _help: HelpBook;\r\n protected _gridRow: GridRow;\r\n protected _gridRowList: Array<GridRow>;\r\n protected _screenSwitcher: KnockoutObservable<ScreenSwitcher>;\r\n protected _actionSubjectRecord: ActionSubjectRecordModel;\r\n protected _labels = LABELS;\r\n private _modalComponents: IModalComponent[];\r\n private _controlsToUpdate: any;\r\n public IsReferenceScreen: boolean;\r\n public IsPathRunnerRefreshed: boolean;\r\n private _isQueryBuilderScreen: boolean;\r\n public AllowTimerAutoStop: boolean;\r\n private _screenFormProperties: FormProperties = {};\r\n private _screenFormEntityProperties: FormProperties = {};\r\n public ScreenBackgroundColor: string;\r\n public ScreenHeaderBackgroundColor: string;\r\n public TargetId: string;\r\n public IsOpenedViaBookControl: boolean;\r\n public ExampleAppointmentId: number;\r\n\r\n public TransactionId: string;\r\n\r\n constructor(model: ScreenModel, renderMode: RenderModes) {\r\n super();\r\n this._isDashMain = model.IsDashMain;\r\n this._isEditScreenExist = model.IsEditScreenExist;\r\n this._isListScreenExist = model.IsListScreenExist;\r\n this._isSpecialScreenExist = model.IsSpecialScreenExist;\r\n this._isDashboardScreenExist = model.IsDashboardScreenExist;\r\n this._isConsultScreenExist = model.IsConsultScreenExist;\r\n this._isStepsScreenExist = model.IsStepsScreenExist;\r\n this._showFollowUp = model.ShowFollowUp;\r\n this._guid = Guid.NewGuid();\r\n this._renderMode = renderMode;\r\n this._subForms = [];\r\n this._model = model;\r\n this._dataMode = model.DataMode;\r\n this._subjectLifeStatusId = model.SubjectLifestatusId;\r\n this.TargetId = null;\r\n this.IsOpenedViaBookControl = null;\r\n this.ExampleAppointmentId = 0;\r\n\r\n this._actionSubjectRecord = model.ActionSubjectRecord;\r\n\r\n this.InitUIColors(model);\r\n\r\n this.InitActionBar();\r\n this.InitBottomBar();\r\n this.InitSubForms();\r\n\r\n this.SetDefaultUserSelection();\r\n\r\n this._state = {ActiveControlId: null, ActiveSubControlId: null};\r\n StaticControlsInitializer.AddStaticControls(this);\r\n this._controls = this.GetAllControls();\r\n\r\n this._help = HelpBook.Instance;\r\n this._gridRow = null;\r\n this._gridRowList = null;\r\n\r\n this._isReady = ko.observable(false);\r\n this._inModal = false;\r\n this._isNested = model.IsNested;\r\n this._nestedLevel = model.NestedLevel || 0;\r\n this._modalOptions = {\r\n width: null\r\n };\r\n this._modalComponents = [];\r\n this._screenSwitcher = ko.observable(null);\r\n this._controlsToUpdate = {};\r\n\r\n this._icon = new Icon(this._model.EntityIcon);\r\n\r\n this.On('CLOSE', this, (eventArgs: any) => {\r\n this.Close();\r\n });\r\n this.On('SHOW_LIST_SCREEN', this, (eventArgs: any) => {\r\n this.ShowListScreen();\r\n });\r\n this.On('SHOW_SPECIAL_SCREEN', this, (eventArgs: any) => this.ShowSpecialScreen(eventArgs.data.ScreenType));\r\n this.On('SHOW_DASHBOARD_SCREEN', this, () => this.ShowDashboardScreen());\r\n this.On('SHOW_CONSULT_SCREEN', this, () => this.ShowConsultScreen());\r\n this.On('SHOW_PREVIOUS_SCREEN', this, (eventArgs: any) => {\r\n this.ShowPreviousScreen();\r\n });\r\n\r\n _.each(this._controls, (control: IControl) =>{\r\n control.On('CONTROL_MODIFY', this, (eventArgs: any) => {\r\n this.Trigger('CONTROL_MODIFY', {\r\n Control: eventArgs.data.Control,\r\n Screen: this\r\n })\r\n })\r\n });\r\n\r\n this.IsPathRunnerRefreshed = false;\r\n\r\n this._isQueryBuilderScreen = null;\r\n\r\n this.AllowTimerAutoStop = true;\r\n }\r\n\r\n get IsQueryBuilderScreen() {\r\n return this._isQueryBuilderScreen;\r\n }\r\n\r\n get IsLookupEditorNewRecord(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.LookupEditorNewRecord];\r\n }\r\n\r\n get IsLinkEditor(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor];\r\n }\r\n\r\n get IsConsultScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.ConsultScreen];\r\n }\r\n\r\n get IsPortlet(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.Portlet];\r\n }\r\n\r\n get IsEditScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.EditScreen];\r\n }\r\n\r\n get IsProcessCardPageScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.ProcessCardPage];\r\n }\r\n\r\n get IsCardScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.CardScreen];\r\n }\r\n\r\n get IsProcessCardScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.ProcessCardPage];\r\n }\r\n\r\n get IsListScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.ListScreen];\r\n }\r\n\r\n get IsSpecialScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.SpecialScreen];\r\n }\r\n\r\n get IsDashboard(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.Dashboard];\r\n }\r\n\r\n get IsQueryScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.QueryScreen];\r\n }\r\n\r\n get IsStepsScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.StepsScreen];\r\n }\r\n\r\n InitUIColors(model: ScreenModel): void {\r\n const deserializeProperties = (properties: string | undefined | null) =>\r\n properties ? GenericDeserialize(JSON.parse(properties), FormProperties) : new FormProperties();\r\n\r\n this._screenFormProperties = deserializeProperties(model.Properties);\r\n this._screenFormEntityProperties = deserializeProperties(model.EntityProperties);\r\n\r\n const propertyTypes = [\r\n SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR,\r\n SCREEN_PROPERTY_TYPE.SCREEN_HEADER_BACKGROUND_COLOR\r\n ];\r\n\r\n const [screenBGrColorProperties, screenHeaderBGrColorProperties] = propertyTypes.map(type =>\r\n this.FindElementByType(this._screenFormProperties.Options, type)?.Value\r\n );\r\n\r\n const [screenBGrColorEntityProperties, screenHeaderBGrColorEntityProperties] = propertyTypes.map(type =>\r\n this.FindElementByType(this._screenFormEntityProperties.Options, type)?.Value\r\n );\r\n\r\n this.ScreenBackgroundColor = screenBGrColorProperties || screenBGrColorEntityProperties;\r\n this.ScreenHeaderBackgroundColor = screenHeaderBGrColorProperties || screenHeaderBGrColorEntityProperties;\r\n }\r\n\r\n CopyTextToClipboard(value, callback) {\r\n if (!navigator.clipboard) {\r\n const textArea = document.createElement(\"textarea\");\r\n textArea.value = value;\r\n\r\n textArea.style.top = \"0\";\r\n textArea.style.left = \"0\";\r\n textArea.style.position = \"absolute\";\r\n\r\n document.body.appendChild(textArea);\r\n textArea.focus();\r\n textArea.select();\r\n\r\n try {\r\n let successful = document.execCommand(\"copy\");\r\n if (successful) {\r\n callback();\r\n }\r\n } catch (error) {\r\n new Notifier().Failed(error);\r\n return false;\r\n }\r\n\r\n document.body.removeChild(textArea);\r\n return;\r\n }\r\n\r\n navigator.clipboard.writeText(value)\r\n .then(() => {\r\n callback();\r\n }, (error) => {\r\n new Notifier().Failed(error);\r\n return false;\r\n });\r\n }\r\n\r\n RecordOpenInPopUp(reference: boolean, isScreen: boolean): boolean{\r\n return this._inModal = reference && isScreen;\r\n }\r\n\r\n IsSubjectScreen() {\r\n return false;\r\n }\r\n\r\n SetModalOptions(options: any) {\r\n this._modalOptions = {\r\n ...options\r\n };\r\n }\r\n\r\n GetDataMode(): DataModes {\r\n return this._dataMode;\r\n }\r\n\r\n GetDataModel(): ScreenDataModel {\r\n return this._dataModel;\r\n }\r\n\r\n GetSubjectLifeStatusId(): number {\r\n return this._subjectLifeStatusId;\r\n }\r\n\r\n SetRenderMode(renderMode: RenderModes) {\r\n this._renderMode = renderMode;\r\n _.each(this._controls, (item) => {\r\n item.SetRenderMode(renderMode);\r\n });\r\n }\r\n\r\n GetGuid(): string {\r\n return this._guid;\r\n }\r\n\r\n SearchRecord(): void {\r\n }\r\n\r\n EditRecord(): void {\r\n }\r\n\r\n GetRecordId(): number {\r\n return this._recordId;\r\n }\r\n\r\n GetScreenId(): number {\r\n return this._model.Id;\r\n }\r\n\r\n GetScreenName(): string {\r\n return this._model.Name;\r\n }\r\n\r\n GetScreenTranslatedName(): string {\r\n const selectedTranslation: TranslationModel = _.find(this._model.TranslationModel, (translation: TranslationModel) => translation.Selected);\r\n if (selectedTranslation && selectedTranslation.Translation) {\r\n return selectedTranslation.Translation;\r\n }\r\n\r\n return this.GetScreenName();\r\n }\r\n\r\n GetEntityId(): number {\r\n return this._model.EntityId;\r\n }\r\n\r\n GetFieldCollectionId(): number {\r\n return this._model.FieldCollectionId;\r\n }\r\n\r\n GetTableTypeId(): number {\r\n return this._model.TableTypeId;\r\n }\r\n\r\n GetTableTypeFlowFolder(): boolean {\r\n return this._model.TableTypeFlowFolder;\r\n }\r\n\r\n GetKindId(): number {\r\n return this._model.KindId;\r\n }\r\n\r\n GetEntityIcon(): string {\r\n return this._model.EntityIcon.FontName;\r\n }\r\n\r\n GetEntityName(): string {\r\n return this._model.EntityName;\r\n }\r\n\r\n\tGetEntityNameTranslation(): string {\r\n\t\treturn this._model.EntityNameTranslation ? this._model.EntityNameTranslation : this._model.EntityName;\r\n\t}\r\n\r\n GetWrapper(): HTMLElement {\r\n return this._el;\r\n }\r\n\r\n GetControl<TControl extends IControl>(type: string): TControl {\r\n return <TControl>_.find(this.GetAllControls(), (control) => control.GetType() === type);\r\n }\r\n\r\n GetControlBy(predicate: (control: IControl) => boolean) {\r\n return this.GetAllControls().filter(predicate)[0];\r\n }\r\n\r\n SetActionSubjectRecord(value: ActionSubjectRecordModel) {\r\n this._actionSubjectRecord = value;\r\n }\r\n\r\n GetActionSubjectRecord(): ActionSubjectRecordModel {\r\n if (this._actionSubjectRecord) {\r\n this._actionSubjectRecord.ActionEntityId = this.GetEntityId();\r\n }\r\n return this._actionSubjectRecord;\r\n }\r\n\r\n get DeleteRecordConfirmation() {\r\n return this.GetEntityName() === SYSTEM_TABLE_NAMES.SYS_USERS\r\n ? CONFIRMATIONS.ARE_YOUR_SURE_TO_DISABLE_RECORDS\r\n : CONFIRMATIONS.ARE_YOUR_SURE_TO_DELETE_RECORDS;\r\n }\r\n\r\n get DeleteRecordSuccessNotification() {\r\n return this.GetEntityName() === SYSTEM_TABLE_NAMES.SYS_USERS\r\n ? NOTIFICATIONS.RECORD_DISABLED\r\n : NOTIFICATIONS.RECORD_REMOVED;\r\n }\r\n\r\n get RenderMode() {\r\n return this._renderMode;\r\n }\r\n\r\n get Icon(): Icon {\r\n return this._icon;\r\n }\r\n\r\n get IsDashMain(): boolean {\r\n return this._isDashMain;\r\n }\r\n\r\n get IsEditScreenExist(): boolean {\r\n return this._isEditScreenExist;\r\n }\r\n\r\n get IsListScreenExist(): boolean {\r\n return this._isListScreenExist;\r\n }\r\n\r\n get IsSpecialScreenExist(): boolean {\r\n return this._isSpecialScreenExist;\r\n }\r\n\r\n get IsDashboardScreenExist() : boolean {\r\n return this._isDashboardScreenExist;\r\n }\r\n\r\n get IsConsultScreenExist(): boolean {\r\n return this._isConsultScreenExist;\r\n }\r\n\r\n get IsStepsScreenExist(): boolean {\r\n return this._isStepsScreenExist;\r\n }\r\n\r\n get ScreenDoesNotExistError(): boolean {\r\n return this._model.ScreenDoesNotExistError;\r\n }\r\n\r\n get ScreenDoesNotExistErrorMessage(): boolean {\r\n return this._model.ScreenDoesNotExistErrorMessage;\r\n }\r\n\r\n\r\n get ShowFollowUp(): boolean {\r\n return this._showFollowUp;\r\n }\r\n\r\n GetScreenIcon(): Icon {\r\n return this._icon;\r\n }\r\n\r\n get SubForms(): SubForm[] {\r\n return this._subForms;\r\n }\r\n\r\n get FirstSubForm(): SubForm {\r\n return this.SubForms[0];\r\n }\r\n\r\n get ThreeSubFormsWithoutFirst(): SubForm[] {\r\n return _.rest(this.SubForms)\r\n }\r\n\r\n get WithLinkList() {\r\n return this._subForms.some((subForm: any) => subForm._model.Controls[0] && subForm._model.Controls[0].TypeName === CONTROL_TYPES.LinkList)\r\n }\r\n\r\n get NoLinkList(): boolean {\r\n return this._subForms.length <= 3;\r\n }\r\n\r\n get ActionBar(): ActionBar {\r\n return this._actionBar;\r\n }\r\n\r\n get BottomBar(): BottomBar {\r\n return this._bottomBar;\r\n }\r\n\r\n get IsBottomBarControls(): boolean {\r\n return this._bottomBar && this._bottomBar.Controls().length > 0;\r\n }\r\n\r\n HasControl(controlType: string): boolean {\r\n return !!this.GetControlByType(controlType);\r\n }\r\n\r\n AttachModalComponent(component: IModalComponent) {\r\n this._modalComponents.push(component);\r\n }\r\n\r\n private CloseModalComponents() {\r\n this._modalComponents.forEach((component) => {\r\n component.CloseComponentInModal();\r\n });\r\n }\r\n\r\n private InitActionBar(): void {\r\n if (this._model && this._model.ActionBar) {\r\n var params: IFormParam = {\r\n Model: this._model.ActionBar,\r\n RenderMode: this._renderMode,\r\n Screen: this\r\n };\r\n\r\n this._actionBar = new ActionBar(params);\r\n }\r\n }\r\n\r\n private InitBottomBar(): void {\r\n if (this._model && this._model.BottomBar) {\r\n var params: IFormParam = {\r\n Model: this._model.BottomBar,\r\n RenderMode: this._renderMode,\r\n Screen: this\r\n };\r\n this._bottomBar = new BottomBar(params);\r\n }\r\n }\r\n\r\n private InitSubForms(): void {\r\n if (this._model && this._model.SubForms) {\r\n _.each(this._model.SubForms, (model: SubFormModel, index) => {\r\n var params: IFormParam = {\r\n Model: model,\r\n RenderMode: this._renderMode,\r\n Screen: this\r\n };\r\n\r\n var subForm = new SubForm(params);\r\n\r\n if (this.IsEditScreen && index === 3) {\r\n subForm.ShowExpandButton = true;\r\n }\r\n\r\n if (this.GetType() === ScreenTypes[ScreenTypes.EditScreen] && this._renderMode !== RenderModes.Design) {\r\n if (index === 3) {\r\n if (subForm.Controls().length > 0) {\r\n this._subForms.push(subForm);\r\n }\r\n } else {\r\n this._subForms.push(subForm);\r\n }\r\n } else {\r\n this._subForms.push(subForm);\r\n }\r\n });\r\n }\r\n }\r\n\r\n SetIsQueryBuilderScreen(data: boolean): void {\r\n this._isQueryBuilderScreen = data;\r\n }\r\n\r\n SetDefaultUserSelection() {\r\n const selectUser = this.GetControl(CONTROL_TYPES.SelectUser) as SelectUser;\r\n\r\n if ((!selectUser || !selectUser.IsRememberMe) && UserManager.Instance.CurrentUser) {\r\n this.Trigger('UsersSelectionChanged', {SelectedUsers: [UserManager.Instance.CurrentUser.Id]});\r\n }\r\n }\r\n\r\n SetData(dataModel: ScreenDataModel) {\r\n if (!dataModel) {\r\n return;\r\n }\r\n\r\n const languagesReceived = _.size(this._model.Languages) > 0;\r\n\r\n this._actionSubjectRecord = dataModel.ActionSubjectRecord || this._actionSubjectRecord;\r\n\r\n let languagesUpdatedPromise = null;\r\n if (languagesReceived) {\r\n const activeLanguages = this._model.Languages.map(l => l.Id);\r\n languagesUpdatedPromise = TranslationManager.Instance.UpdateLanguages(activeLanguages)\r\n } else {\r\n languagesUpdatedPromise = TranslationManager.Instance.LoadLanguages();\r\n }\r\n\r\n languagesUpdatedPromise\r\n .then(() => {\r\n this.ApplyData(dataModel, (control, controlValue) => control.SetValue(controlValue));\r\n });\r\n }\r\n\r\n SetCurrentGridRowData(gridRow: GridRow) {\r\n this._gridRow = gridRow;\r\n }\r\n\r\n GetCurrentGridRow() {\r\n return this._gridRow;\r\n }\r\n\r\n SetGridRowListData(gridRowList: Array<GridRow>) {\r\n this._gridRowList = gridRowList;\r\n }\r\n\r\n GetCurrentGridRowList() {\r\n return this._gridRowList;\r\n }\r\n\r\n SetDefaultData(dataModel: ScreenDataModel, excludingControlsTypes = null) {\r\n const mergedDataModel = Object.assign({}, this._dataModel, dataModel);\r\n this.ApplyData(mergedDataModel, (control, controlValue) => control.SetDefaultValue(controlValue), excludingControlsTypes);\r\n }\r\n\r\n private ApplyData(dataModel: ScreenDataModel, setValueCallback: (control: IControl, controlValue: IControlValue) => void, excludingControlsTypes = null) {\r\n if (dataModel) {\r\n if (dataModel.ControlsData) {\r\n this._recordId = dataModel.RecordId;\r\n this._dataModel = dataModel;\r\n let controls = this._controls;\r\n if (excludingControlsTypes) {\r\n controls = _.filter(this._controls, control => !_.contains(excludingControlsTypes, control.GetType()));\r\n }\r\n _.each(controls,\r\n control => {\r\n let baseControl = control as BaseControl;\r\n let controlData = this.GetControlDataByControlId(control.GetControlId(), this._dataModel.ControlsData);\r\n\r\n if (!controlData) {\r\n var field = baseControl.FieldModel;\r\n if (field) {\r\n controlData = this.GetControlDataByField(field.Id, this._dataModel.ControlsData);\r\n if (!controlData) {\r\n controlData = new ControlDataModel();\r\n controlData.ControlId = control.GetControlId();\r\n controlData.Rights = this._dataModel.Rights;\r\n }\r\n } else {\r\n controlData = new ControlDataModel();\r\n controlData.Rights = this._dataModel.Rights;\r\n controlData.ControlId = control.GetControlId();\r\n }\r\n }\r\n\r\n if (!controlData.Rights) {\r\n controlData.Rights = this._dataModel.Rights;\r\n }\r\n\r\n if (control instanceof Tag) {\r\n let controlTags = this.GetTagControlData(control.GetControlId());\r\n if (controlTags) {\r\n controlData.Value = JSON.stringify(controlTags);\r\n }\r\n }\r\n\r\n if (control instanceof QueryBuilder) {\r\n let queryBuilderData = this.GetQueryBuilderControlData(control.GetControlId());\r\n\r\n var queryBuilderValue: IControlValue = {\r\n Datas: queryBuilderData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: dataModel.RecordSpecs || new RecordSpecsModel()\r\n };\r\n control.SetValue(queryBuilderValue);\r\n return;\r\n }\r\n\r\n var controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: dataModel.RecordSpecs || new RecordSpecsModel()\r\n };\r\n\r\n setValueCallback(control, controlValue);\r\n });\r\n }\r\n }\r\n\r\n _.each(this._controls, (control)=>{\r\n control.PostInit();\r\n });\r\n }\r\n\r\n GetControlDataByControlId(controlId: number, controlsData: Array<ControlDataModel>): ControlDataModel {\r\n var controlData = _.find(controlsData, (item: ControlDataModel) => {\r\n return item.ControlId === controlId\r\n });\r\n return controlData;\r\n }\r\n\r\n GetControlDataByField(fieldId: number, controlsData: Array<ControlDataModel>): ControlDataModel {\r\n var controlData = _.find(controlsData, (item: ControlDataModel) => {\r\n return item.FieldId === fieldId;\r\n });\r\n return controlData;\r\n }\r\n\r\n private GetQueryBuilderControlData(controlId: number): Array<ControlDataModel> {\r\n let data = this._model.Data;\r\n if (data) {\r\n if (data.ScreenTags) {\r\n let result = _.where(data.QueryBuilderData, (item: ControlDataModel) => item.ControlId === controlId);\r\n return result;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n GetFieldByFieldName(fieldName: string): AttachedFieldModel {\r\n let result;\r\n\r\n _.forEach(this.GetAllControls(), control => {\r\n let field = control.GetFieldModel();\r\n if (field && field.Name === fieldName) {\r\n result = field;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n GetControlByFieldName(fieldName: string, controlTypeName?: string): BaseControl {\r\n let controls = controlTypeName ? this.GetControlsByType(controlTypeName) : this.GetAllControls();\r\n const nameControl = _.find(controls, control => {\r\n const field = control.GetFieldModel();\r\n return field && field.Name === fieldName;\r\n });\r\n\r\n return nameControl as BaseControl;\r\n }\r\n\r\n GetControlByFieldNameOnScreenEntity(fieldName: string, controlTypeName?: string): BaseControl {\r\n let controls = controlTypeName ? this.GetControlsByType(controlTypeName) : this.GetAllControls();\r\n const screenEntityId = this.GetEntityId();\r\n\r\n const nameControl = _.find(controls, control => {\r\n const field = control.GetFieldModel();\r\n return field && field.Name === fieldName && field.EntityId === screenEntityId;\r\n });\r\n\r\n return nameControl as BaseControl;\r\n }\r\n\r\n GetDependsOnControls(fieldId: number, controlTypeName?: string): Array<IControl> {\r\n let controls = controlTypeName ? this.GetControlsByType(controlTypeName) : this.GetAllControls();\r\n\r\n let filtered = _.filter(controls, (control) => {\r\n const fieldModel = control.GetFieldModel();\r\n return fieldModel.DependsOnId && fieldModel.DependsOnId === fieldId;\r\n });\r\n\r\n return filtered;\r\n }\r\n\r\n RemoveNonEmptyDependsOn(dependsOnControls: Array<IControl>): Array<IControl> {\r\n return _.filter(dependsOnControls, (control) => {\r\n const fieldModel = control.GetFieldModel();\r\n const controlValue = control.GetValue();\r\n\r\n return fieldModel.IsVirtual || fieldModel.FieldTypeName !== FIELD_TYPES.Text\r\n || !controlValue || _.isEmpty(controlValue);\r\n });\r\n }\r\n\r\n public GetAllControls(): Array<IControl> {\r\n var controls: Array<IControl> = [];\r\n\r\n if (this._actionBar) {\r\n var actionBarControls = this._actionBar.Controls();\r\n controls = controls.concat(actionBarControls);\r\n _.each(actionBarControls, (control: IControl) => {\r\n controls = controls.concat(control.GetAllSubControls());\r\n });\r\n }\r\n\r\n if (this._bottomBar) {\r\n var bottomBarControls = this._bottomBar.Controls();\r\n controls = controls.concat(bottomBarControls);\r\n _.each(bottomBarControls, (control: IControl) => {\r\n controls = controls.concat(control.GetAllSubControls());\r\n });\r\n }\r\n\r\n _.each(this._subForms, (subForm) => {\r\n var subFormControls = subForm.Controls();\r\n controls = controls.concat(subFormControls);\r\n var subControls = [];\r\n _.each(subFormControls, (control: IControl) => {\r\n subControls = subControls.concat(control.GetAllSubControls());\r\n });\r\n controls = controls.concat(subControls);\r\n });\r\n\r\n return controls;\r\n }\r\n\r\n RenderByTargetId(target: string): void {\r\n this.TargetId = target;\r\n this._target = document.getElementById(target);\r\n ko.cleanNode(this._target);\r\n ko.applyBindings(this, this._target);\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.SCREEN_OPENED, this);\r\n }\r\n\r\n RenderByTarget(target: HTMLElement): void {\r\n this._target = target;\r\n ko.cleanNode(target);\r\n ko.applyBindings(this, target);\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.SCREEN_OPENED, this);\r\n }\r\n\r\n GetTarget(): HTMLElement {\r\n return this._target;\r\n }\r\n\r\n SetScreenStyle(isModal?: boolean, isParentControlExist?: boolean): void {\r\n const pageContainer: JQuery<HTMLElement> = $(document.body).find(\".page-container\");\r\n const pageHeader: JQuery<HTMLElement> = $(document.body).find(\".page-header.navbar\");\r\n\r\n const openInPopUpByCtrl = !isModal && this.IsInModal();\r\n if (openInPopUpByCtrl) {\r\n isModal = openInPopUpByCtrl;\r\n }\r\n\r\n if (this.ScreenBackgroundColor) {\r\n const setColorForContainer = () => {\r\n if (isParentControlExist) {\r\n let properties: CustomStyleProperties = {\r\n '--book-background-color': this.ScreenBackgroundColor,\r\n '--root-background-color': this.ScreenBackgroundColor\r\n };\r\n this.SetStyleProperty($(this._el).parent(), properties);\r\n } else if (!isModal) {\r\n let properties: CustomStyleProperties = {\r\n '--root-background-color': this.ScreenBackgroundColor\r\n };\r\n this.SetStyleProperty(pageContainer, properties);\r\n }\r\n };\r\n setColorForContainer();\r\n }\r\n\r\n if (this.ScreenHeaderBackgroundColor) {\r\n if (!isModal && !isParentControlExist) {\r\n let properties: CustomStyleProperties = {\r\n 'background-color': this.ScreenHeaderBackgroundColor,\r\n '--page-header-hover-color': this.DarkenHexColor(this.ScreenHeaderBackgroundColor, 50)\r\n };\r\n this.SetStyleProperty(pageHeader, properties);\r\n }\r\n if (isModal && !isParentControlExist) {\r\n const jBoxContainer: JQuery<HTMLElement> = $(this._el).closest(\".jBox-container\");\r\n let properties: CustomStyleProperties = {\r\n '--root-background-color': this.ScreenBackgroundColor\r\n };\r\n this.SetStyleProperty(jBoxContainer, properties);\r\n }\r\n }\r\n }\r\n\r\n SetStyleProperty(element: JQuery<HTMLElement> | null, properties: CustomStyleProperties): void {\r\n if (element && element.length) {\r\n for (const [property, value] of Object.entries(properties)) {\r\n element.get(0).style.setProperty(property, value);\r\n }\r\n }\r\n }\r\n\r\n DarkenHexColor(hex: string, amount: number): string {\r\n hex = hex.replace(/^#/, '');\r\n\r\n let r: number = parseInt(hex.substring(0, 2), 16);\r\n let g: number = parseInt(hex.substring(2, 4), 16);\r\n let b: number = parseInt(hex.substring(4, 6), 16);\r\n\r\n if (hex === '000000') { //Increasing the value of each channel\r\n r = Math.max(0, r + amount);\r\n g = Math.max(0, g + amount);\r\n b = Math.max(0, b + amount);\r\n } else { //Decrease the value of each channel\r\n r = Math.max(0, r - amount);\r\n g = Math.max(0, g - amount);\r\n b = Math.max(0, b - amount);\r\n }\r\n\r\n return \"#\" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\r\n }\r\n\r\n FindElementByType(array: ISettingsModal[], type: string): ISettingsModal | undefined {\r\n return _.find(array, { Type: type });\r\n }\r\n\r\n AfterRender(el) {\r\n this._el = el[0];\r\n }\r\n\r\n GetTypeId() {\r\n return this._model.ScreenTypeId;\r\n }\r\n\r\n GetType() {\r\n return this._model.ScreenTypeName;\r\n }\r\n\r\n get TemplateName(): string {\r\n return this._model.TemplateName;\r\n }\r\n\r\n SetRecordId(recordId: number): void {\r\n };\r\n\r\n SetRecordIdAndRender(recordId: number, target: string): void {\r\n };\r\n\r\n SetIsReady(isReady: boolean) {\r\n this._isReady(true);\r\n }\r\n\r\n GetSource() {\r\n return this._source;\r\n }\r\n\r\n SetSource(screen: IScreen) {\r\n this._source = screen;\r\n }\r\n\r\n GetTemplateName(): string {\r\n throw new Error('GetTemplateName not implemented');\r\n }\r\n\r\n ShowInModal(extraClass?: string) {\r\n const currentGridRow = this.GetCurrentGridRow();\r\n const currentGridRowList = this.GetCurrentGridRowList();\r\n\r\n if (currentGridRow && currentGridRowList) {\r\n const recordsIds = [...new Set(currentGridRowList.map(row => row.RecordId))];\r\n\r\n const distincLinkedRecords = [];\r\n\r\n recordsIds.forEach(id => distincLinkedRecords.push(currentGridRowList.find(row => row.RecordId == id)));\r\n\r\n this._screenSwitcher(new ScreenSwitcher(currentGridRow, distincLinkedRecords, this));\r\n }\r\n\r\n this._inModal = true;\r\n\r\n let isUseGlobal = !this._modalOptions.width,\r\n extraClassValue = !!extraClass ? extraClass : '',\r\n options = this._modalOptions || {};\r\n\r\n options.blockScroll = true;\r\n options.addClass = options.addClass ? options.addClass : `showScrollModal jBox-padding-15px ${extraClassValue}`;\r\n\r\n this._modal = new Modal(options, isUseGlobal);\r\n this._modal.On('CLOSE', this, () => {\r\n this.CloseModalComponents();\r\n this.Trigger(EVENTS.MODAL_CLOSE);\r\n if (this.IsConsultScreen) {\r\n this.IsPathRunnerRefreshed = true;\r\n }\r\n PubSub.publish(PUB_SUB_EVENTS.SCREEN_CLOSED, this);\r\n });\r\n\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.SCREEN_OPENED, this);\r\n PubSub.publish(PUB_SUB_EVENTS.CHANGE_SCREEN, this);\r\n }\r\n\r\n IsInModal(): boolean {\r\n return this._inModal;\r\n }\r\n\r\n IsNested(): boolean {\r\n return this._isNested;\r\n }\r\n\r\n get NestedLevel(): number {\r\n return this._nestedLevel;\r\n }\r\n\r\n IsEntitySysUsersOrCd() {\r\n const entityName = this.GetEntityName();\r\n return entityName && (entityName === SYSTEM_TABLE_NAMES.SYS_USERS || entityName.startsWith('CD_'));\r\n }\r\n\r\n Close(skipClosedEvent?: boolean) {\r\n if (this._modal) {\r\n this._modal.Close();\r\n }\r\n\r\n this.Dispose();\r\n\r\n if (!skipClosedEvent) {\r\n PubSub.publish(PUB_SUB_EVENTS.SCREEN_CLOSED, this);\r\n }\r\n }\r\n\r\n GetId(): number {\r\n return this._model.Id;\r\n }\r\n\r\n GetTypeName(): string {\r\n return this._model.ScreenTypeName;\r\n }\r\n\r\n GetTableTypeName(): string {\r\n return this._model.TableTypeName;\r\n }\r\n\r\n GetTableTypeNameTranslation(): string {\r\n return this._model.TableTypeNameTranslation;\r\n }\r\n\r\n GetControlByType(controlType: string): IControl {\r\n return _.first(this.GetControlsByType(controlType));\r\n }\r\n\r\n GetControlsByType(controlType: string): IControl[] {\r\n return _.filter(this.GetAllControls(), (control: IControl) => control.GetType() === controlType);\r\n }\r\n\r\n RestoreState(screenState: IScreenState) {\r\n if (screenState) {\r\n _.each(this._controls, (control) => {\r\n if (control.GetControlId() === screenState.ActiveControlId) {\r\n control.SetIsActive(true);\r\n if (control instanceof TabPage) {\r\n var parent = control.GetParentControl();\r\n if (parent && parent instanceof Tab) {\r\n var tabControl = <Tab>parent;\r\n tabControl.SetActiveTabPage(control);\r\n }\r\n }\r\n } else {\r\n control.SetIsActive(false);\r\n }\r\n });\r\n }\r\n }\r\n\r\n GetState(): IScreenState {\r\n return this._state;\r\n }\r\n\r\n SetState(screenState: IScreenState) {\r\n this._state = screenState;\r\n _.each(this._controls, (control) => {\r\n if (control.GetControlTypeName() !== CONTROL_TYPES.TabPage) {\r\n control.SetIsActive(null);\r\n }\r\n\r\n if (control.GetControlId() === this._state.ActiveControlId || control.GetControlId() === this._state.ActiveSubControlId) {\r\n control.SetIsActive(true);\r\n }\r\n });\r\n }\r\n\r\n Dispose() {\r\n this.GetAllControls().forEach(control => control.Dispose());\r\n }\r\n\r\n Refresh() {\r\n }\r\n\r\n async ShowListScreen(): Promise<void> {\r\n const menuManager = (await import (\"MenuManager/MenuManager\")).MenuManager;\r\n menuManager.Instance.GoToScreenByType(this.GetEntityId(), ScreenTypes.ListScreen, this._inModal);\r\n }\r\n\r\n async ShowSpecialScreen(screenType: ScreenTypes): Promise<void> {\r\n const menuManager = (await import (\"MenuManager/MenuManager\")).MenuManager;\r\n menuManager.Instance.GoToScreenByType(this.GetEntityId(), screenType, this._inModal);\r\n }\r\n\r\n async ShowDashboardScreen() : Promise<void> {\r\n const menuManager = (await import (\"MenuManager/MenuManager\")).MenuManager;\r\n menuManager.Instance.GoToScreenByType(this.GetEntityId(), ScreenTypes.Dashboard, this._inModal);\r\n }\r\n\r\n async ShowConsultScreen(): Promise<void> {\r\n const menuManager = (await import (\"MenuManager/MenuManager\")).MenuManager;\r\n menuManager.Instance.GoToScreenByType(this.GetEntityId(), ScreenTypes.ConsultScreen, this._inModal);\r\n }\r\n\r\n async ShowPreviousScreen() {\r\n if (this._inModal) {\r\n this.Close();\r\n }\r\n const menuManager = (await import (\"MenuManager/MenuManager\")).MenuManager;\r\n menuManager.Instance.BackToPreviousScreen(this._inModal);\r\n }\r\n\r\n GetAllAttachedFields(excludeControlTypes: Array<string>, onlyScreenSubject: boolean): Array<IControlAttachedField> {\r\n var fields: Array<IControlAttachedField> = [];\r\n _.each(this.GetAllControls(),\r\n (control) => {\r\n if (excludeControlTypes.indexOf(control.GetType()) === -1) {\r\n _.each(control.Fields, field => {\r\n\r\n if(control.GetType() === CONTROL_TYPES.LinkList){\r\n let linkListField = new AttachedFieldModel();\r\n linkListField.EntityName = field.EntityName;\r\n linkListField.Name = field.PrimaryKeyName;\r\n linkListField.FieldTypeName = FIELD_TYPES.PKey;\r\n field = linkListField;\r\n }\r\n\r\n if (onlyScreenSubject) {\r\n if (field.EntityId === this.GetEntityId()) {\r\n fields.push({ Field: field, ControlType: control.GetControlTypeName()});\r\n }\r\n } else {\r\n fields.push({ Field: field, ControlType: control.GetControlTypeName() });\r\n }\r\n });\r\n }\r\n });\r\n return fields;\r\n }\r\n\r\n private GetTagControlData(controlId: number): TagsScreenDataModel {\r\n let data = this._model.Data;\r\n if (data) {\r\n if (data.ScreenTags) {\r\n let result = _.find(data.ScreenTags, (tagsModel: TagsScreenDataModel) => tagsModel.ControlId === controlId);\r\n return result;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n IsTypeAvailable(typeId: number, exampleTypeId: number, entityId): P.Promise<any> {\r\n BlockUI.Block();\r\n var deferredResult = P.defer<any>();\r\n\r\n EntityTypesStore.IsTypeAvailable({TypeId: typeId, ExampleTypeId: exampleTypeId, EntityId: entityId })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(isTypeAvailableModel => {\r\n if (!isTypeAvailableModel.IsTypeAvailable) {\r\n new Notifier().Warning(isTypeAvailableModel.WarningMessage);\r\n return;\r\n }\r\n\r\n deferredResult.resolve(null);\r\n })\r\n .fail(error => {\r\n new Notifier().Warning(error.message);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n UpdateVariable(controlField: IControlAttachedField, value: string) {\r\n let variableName = `$[${controlField.Field.EntityName}].[${controlField.Field.Name}]`;\r\n\r\n if(controlField.ControlType === CONTROL_TYPES.LinkList){\r\n variableName = `$[LinkList].[Main].[${controlField.Field.EntityName}].[${controlField.Field.Name}]`;\r\n }\r\n\r\n let screenVariable: IScreenVariable = { FullName: variableName, Field: controlField.Field, Value: value };\r\n this.Trigger(EVENTS.DATA_CHANGED, { ScreenVariable: screenVariable });\r\n }\r\n\r\n UpdateDependsOnValues(recordId: number, dependsOnId: number, isPreselect?: boolean) {\r\n let dependsOnFields = this.GetDependsOnControls(dependsOnId, CONTROL_TYPES.Text);\r\n let fieldIds: Array<number> = [];\r\n\r\n if (isPreselect) {\r\n dependsOnFields = this.RemoveNonEmptyDependsOn(dependsOnFields);\r\n }\r\n\r\n let controlsByDependsOn = {};\r\n\r\n _.forEach(dependsOnFields, (control) => {\r\n const key = control.GetFieldModel().FilledById;\r\n if (controlsByDependsOn[key]) {\r\n controlsByDependsOn[key].push(control);\r\n } else {\r\n controlsByDependsOn[key] = [];\r\n controlsByDependsOn[key].push(control);\r\n fieldIds.push(key);\r\n }\r\n });\r\n\r\n this._controlsToUpdate[dependsOnId] = controlsByDependsOn;\r\n\r\n if (fieldIds.length) {\r\n if (recordId) {\r\n RecordStore.GetDependsOnValues({FieldIds: fieldIds, RecordId: recordId})\r\n .then((response: IGetDependsOnResponse) => {\r\n const controls = response.ResultObject;\r\n _.forEach(controls, (item) => {\r\n const controlsToUpdate = this._controlsToUpdate[dependsOnId] && this._controlsToUpdate[dependsOnId][item.Id];\r\n _.forEach(controlsToUpdate, (controlToUpdate: IControl) => {\r\n const controlData = new ControlDataModel();\r\n controlData.Value = item.Value;\r\n\r\n if (controlToUpdate.GetType() === CONTROL_TYPES.Text) {\r\n controlData.DisplayValue = item.Value;\r\n }\r\n\r\n controlToUpdate.SetValue({\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: new RecordSpecsModel(),\r\n Data: controlData\r\n })\r\n });\r\n });\r\n })\r\n .fail((error) => {\r\n new Notifier().Failed('Error getting data');\r\n });\r\n\r\n } else {\r\n _.forEach(fieldIds, (fieldId) => {\r\n const controlsToUpdate = this._controlsToUpdate[fieldId];\r\n _.forEach(controlsToUpdate, (control: IControl) => {\r\n const controlData = new ControlDataModel();\r\n controlData.Value = '';\r\n control.SetValue({\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: new RecordSpecsModel(),\r\n Data: controlData\r\n })\r\n });\r\n });\r\n }\r\n }\r\n }\r\n}","import {Width} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\n\r\nexport function isWidthValid(width: Width) {\r\n return (\r\n width && (\r\n (width.Unit.Value === 'px' && width.Value > 0) ||\r\n (width.Unit.Value === '%' && width.Value > 0 && width.Value <= 100)\r\n )\r\n );\r\n}\r\n\r\nexport function getWidthValue(width: Width) {\r\n if (!isWidthValid(width)) {\r\n return '100%';\r\n }\r\n\r\n return `${width.Value}${width.Unit.Value}`;\r\n}\r\n","export enum SoftColorScheme {\r\n RGBA\r\n}\r\n\r\nexport class SoftColorsProvider {\r\n static GetColor(index: number, scheme: SoftColorScheme) {\r\n const colorPalette = this.GetColorPallet();\r\n\r\n while (index >= colorPalette.length) {\r\n index -= colorPalette.length;\r\n }\r\n\r\n return colorPalette[index].As(scheme);\r\n }\r\n\r\n private static GetColorPallet() {\r\n const colors = ['rgba(246,219,219,0.5)', 'rgba(242,227,198,0.5)', 'rgba(211,236,225,0.5)', 'rgba(194,238,199,0.5)', 'rgba(238,210,232,0.5)'];\r\n return colors.map(rgbaColor => new SoftColor(rgbaColor));\r\n }\r\n}\r\n\r\nexport class SoftColor {\r\n constructor(private _rgba) {\r\n }\r\n\r\n As(scheme: SoftColorScheme) {\r\n switch (scheme) {\r\n case SoftColorScheme.RGBA:\r\n return this._rgba;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\n\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {SortModel} from 'Core/Controls/Grid/Models/SortModel';\r\n\r\nexport interface IGetTabGridDataParams {\r\n TableId: number;\r\n TargetTableId: number;\r\n LookupFieldId: number;\r\n RecordId: number;\r\n PageNumber: number;\r\n RecordsPerPage: number;\r\n TableViewId: number;\r\n Sort: Array<SortModel>;\r\n ScopedRecordId: number;\r\n ScopedTableId: number;\r\n}\r\n\r\n\r\nexport interface IGetLinkEditorDefaultTableViewDto {\r\n TableId: number;\r\n TargetTableId: number;\r\n LookupFieldId: number;\r\n}\r\n\r\nexport class TabGridStore {\r\n GetGridData(params: IGetTabGridDataParams): P.Promise<GridDataModel> {\r\n const deferred = P.defer<GridDataModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n type: 'POST',\r\n dataType: 'json',\r\n url: '/api/GridApi/GetLinkEditorGridData'\r\n },\r\n params\r\n }).then(gridData => {\r\n deferred.resolve(GenericDeserialize(gridData, GridDataModel));\r\n }).fail(error => {\r\n deferred.reject(this.GetResponseError(error, 'Error reading grid data'));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n\r\n GetDefaultTableView(params: IGetLinkEditorDefaultTableViewDto): P.Promise<QueryExpressionModel> {\r\n const deferred = P.defer<QueryExpressionModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n type: 'GET',\r\n dataType: 'json',\r\n url: '/api/GridApi/GetLinkEditorDefaultTableView'\r\n },\r\n params\r\n }).then(gridData => {\r\n deferred.resolve(GenericDeserialize(gridData, QueryExpressionModel));\r\n }).fail(error => {\r\n deferred.reject(this.GetResponseError(error, 'Error get default table view'));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string) {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import { ILinkEditor } from \"Core/Screens/Common/LinkEditor/LinkEditor\";\r\nimport { controlFacade } from \"./ControlFacade\";\r\n\r\nexport const linkEditorFacade = (screen: ILinkEditor)=> {\r\n\r\n const getControlByFieldName = (fieldName: string) => {\r\n let control = _.find(screen.GetAllControls(), (c) => c.GetFieldModel() && c.GetFieldModel().Name === fieldName);\r\n if(control){\r\n return controlFacade(control);\r\n }\r\n return null;\r\n }\r\n return { getControlByFieldName }\r\n}","import { GenericButton } from \"Core/Controls/GenericButton/GenericButton\";\r\nimport { BaseGrid } from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport { Grid } from \"Core/Controls/Grid/Grid\";\r\nimport { IControl } from \"Core/Controls/IControl\";\r\nimport { ILinkEditor } from \"Core/Screens/Common/LinkEditor/LinkEditor\";\r\nimport { IForm } from \"Core/Screens/IScreen\";\r\nimport { linkEditorFacade } from \"./LinkEditorFacade\";\r\n\r\nexport const linkEditorTabGridFacade = (grid: BaseGrid, screen: ILinkEditor)=> {\r\n \r\n const getTotalRecords = () => {\r\n return grid.TotalRows;\r\n }\r\n\r\n const getScreen = ()=> {\r\n return linkEditorFacade(screen);\r\n }\r\n\r\n return { getTotalRecords, getScreen }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\n\r\nimport { ScreenTypes } from 'Core/Common/Enums/ScreenTypes';\r\n\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {Paginator} from 'Core/Components/Paginator/Paginator';\r\n\r\nimport {EVENTS as PAGINATOR_EVENTS} from 'Core/Components/Paginator/Constants';\r\nimport {EVENTS as BASE_GRID_EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport { BaseGrid } from 'Core/Controls/Grid/BaseGrid/BaseGrid';\r\nimport { GridDataModel as BaseGridDataModel } from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {DEFAULT_RECORDS_PER_PAGE} from 'Core/Controls/Grid/Constants';\r\nimport {IBaseGridOptions} from 'Core/Controls/Grid/Models/GridDataModel/BaseGridModel';\r\nimport {GridStore, IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {LockQueryStore} from 'QueryBuilder/Stores/LockQueryStore';\r\n\r\nimport {ITabTableParams} from '../TabTables/ITabTablesParams';\r\n\r\nimport {GridDataModel} from '../../Models/DataModel';\r\n\r\nimport {IGetTabGridDataParams, TabGridStore} from './Stores/TabGridStore';\r\n\r\nimport { UserManager, UserRoles } from 'User/UserManager';\r\nimport { RecordLinker } from 'Core/Components/RecordLinker/RecordLinker';\r\n\r\nimport {ActionSubjectRecordModel} from 'Core/ScreenManager/Models/ActionSubjectRecordModel';\r\nimport { SearchScreen, ISelectedRecord} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen';\r\nimport {QueryBuilder as QueryBuilderControl} from 'Core/Controls/QueryBuilder/QueryBuilder';\r\nimport {CONTROL_TYPES} from 'Core/Constant';\r\nimport {ViewGridModel} from 'Core/Controls/Grid/Models/ViewGridModel';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {IGetLinkEditorGridViewListDto, ViewGridListStore} from 'Core/Controls/Grid/Stores/ViewGridListStore';\r\nimport {LOCK_EVENTS, LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {SortModel} from 'Core/Controls/Grid/Models/SortModel';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {DeleteQueryStore} from 'QueryBuilder/Stores/DeleteQueryStore';\r\nimport { BarcodeScanner } from 'Core/Components/BarcodeScanner/BarcodeScanner';\r\n\r\nimport Template from './Templates/TabGrid.html'\r\nimport { Guid } from 'Core/Common/Guid';\r\nimport { TriggerStore } from 'Core/Components/Triggers/TriggerStore';\r\nimport { IOnLinkEditorGridSaveTrigger, IOnLinkEditorUnlinkTrigger, TriggerManager } from 'Core/Components/Triggers/TriggerManager';\r\nimport { ILinkEditor } from '../../LinkEditor';\r\nimport { FunctionBuilder } from 'Core/Components/CustomFunctions/FunctionBuilder';\r\nimport { linkEditorTabGridFacade } from 'Core/Components/CustomFunctions/Facades/LinkEditorTabGridFacade';\r\n\r\nexport class TabGrid {\r\n private _labels = LABELS;\r\n\r\n private _dataLoaded: boolean;\r\n private _prevPageNumber: number;\r\n\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _showAddButton: KnockoutObservable<boolean>;\r\n private _showAddAndLinkButton: KnockoutObservable<boolean>;\r\n private _showScanAndLinkButton: KnockoutObservable<boolean>;\r\n private _showLinkButton: KnockoutObservable<boolean>;\r\n\r\n private _el: HTMLElement;\r\n\r\n private _store: TabGridStore;\r\n\r\n private _paginator: Paginator;\r\n private _baseGrid: BaseGrid;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _errorMessage: KnockoutObservable<string>;\r\n private _sorting: Array<SortModel>;\r\n\r\n \r\n private _tableView: KnockoutObservable<ViewGridModel> = ko.observable(null);\r\n private _showTableViewElement: KnockoutObservable<boolean> = ko.observable(true);\r\n private _showTableViewLookup: KnockoutObservable<boolean> = ko.observable(true);\r\n private _showFunctionLookup: KnockoutObservable<boolean> = ko.observable(true);\r\n private _isEnabled: KnockoutObservable<boolean> = ko.observable(true);\r\n private _viewGridList: KnockoutObservableArray<ViewGridModel> = ko.observableArray([]);\r\n private _isAddingRecordAllowed : KnockoutObservable<boolean> = ko.observable(true);\r\n private _enableEditTableView: KnockoutObservable<boolean> = ko.observable(false);\r\n private _enableDeleteTableView: KnockoutObservable<boolean> = ko.observable(false);\r\n private _enableLockItem: KnockoutObservable<boolean> = ko.observable(false);\r\n private _exportDataAllowed: KnockoutObservable<boolean> = ko.observable(false);\r\n private _showLockItem: boolean = UserManager.Instance.IsUserInRole(UserRoles.SuperUser);\r\n private _userVarsManager: UserVarsManager;\r\n private _isTableViewUpdating: KnockoutObservable<boolean>;\r\n private _tableViewUpdatingSubscription: KnockoutSubscription;\r\n private _showEditAllButton: KnockoutObservable<boolean>;\r\n private _editAll: KnockoutObservable<boolean>;\r\n private _guid: string;\r\n private _isDataLoading: KnockoutObservable<boolean>;\r\n\r\n constructor(private _params: ITabTableParams, private _screen: ILinkEditor) {\r\n this._dataLoaded = false;\r\n this._prevPageNumber = 1;\r\n\r\n this._isEditable = ko.observable(false);\r\n this._showAddButton = ko.observable(false);\r\n this._showAddAndLinkButton = ko.observable(false);\r\n this._showLinkButton = ko.observable(false);\r\n this._isValid = ko.observable(true);\r\n this._errorMessage = ko.observable('');\r\n this._store = new TabGridStore();\r\n this._viewGridList = ko.observableArray([]);\r\n this._userVarsManager = UserVarsManager.Instance;\r\n\r\n this._paginator = new Paginator();\r\n this._baseGrid = new BaseGrid(this.GetGridOptions());\r\n this._isTableViewUpdating = ko.observable(false);\r\n this._showScanAndLinkButton = ko.observable(false);\r\n this._showEditAllButton = ko.observable(true);\r\n this._editAll = ko.observable(true);\r\n this._guid = Guid.NewGuid();\r\n this._isDataLoading = ko.observable(false);\r\n\r\n this.Init();\r\n this.BindEvents();\r\n\r\n this._tableView.subscribe((newValue) => {\r\n this.SaveTableViewId(newValue.Id);\r\n this._enableEditTableView(newValue.IsEditingAllowed);\r\n this._enableDeleteTableView(newValue.IsDeletingAllowed);\r\n this._enableLockItem(this._showLockItem && this._tableView().Id > 0);\r\n this.LoadData();\r\n });\r\n\r\n this.UpdateTableViewList();\r\n\r\n }\r\n\r\n get IsValid(): boolean {\r\n this._baseGrid.SaveEditRows();\r\n\r\n if (this._baseGrid && this._baseGrid.HasEditRows()) {\r\n this._errorMessage('Please save record');\r\n this._isValid(false);\r\n } else {\r\n this._errorMessage('');\r\n this._isValid(true);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n get ShowTableViewList(){\r\n let isSubTable = this._baseGrid.DataModel.QueryExpression.SubEntityJoins.length > 0;\r\n return !isSubTable;\r\n }\r\n\r\n get IsEditable() {\r\n const isSubTableView =\r\n this._baseGrid.DataModel.QueryExpression.SubEntityJoins.length > 0\r\n && this._baseGrid.DataModel.QueryExpression.SubEntityJoins[0].Entity.Metadata.IsView;\r\n\r\n return !isSubTableView;\r\n }\r\n\r\n get ShowAddButton() {\r\n if(this._params.LookupFieldId){\r\n return true;\r\n }\r\n\r\n const isSubTable = this._baseGrid.DataModel.QueryExpression.SubEntityJoins.length > 0;\r\n\r\n if (!isSubTable) {\r\n return false;\r\n }\r\n\r\n const isSubTableView = this._baseGrid.DataModel.QueryExpression.SubEntityJoins[0].Entity.Metadata.IsView;\r\n return !isSubTableView;\r\n }\r\n\r\n get ShowAddAndLinkButton() {\r\n const isEntity = this._baseGrid.DataModel.QueryExpression.EntityJoins.length > 0;\r\n\r\n if (isEntity) {\r\n return true;\r\n }\r\n\r\n if(this._params.LookupFieldId){\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n get ShowLinkButton() {\r\n const isEntity = this._baseGrid.DataModel.QueryExpression.EntityJoins.length > 0;\r\n\r\n if (!isEntity) {\r\n return false;\r\n }\r\n\r\n return !this._params.LookupFieldId; \r\n }\r\n\r\n ToggleEditAll(){\r\n if(this._editAll()){\r\n this._baseGrid.EditAll();\r\n this._editAll(false);\r\n }else{\r\n this._baseGrid.SaveAll();\r\n this._editAll(true);\r\n }\r\n }\r\n\r\n Init() {\r\n this.InitRecordPerPage();\r\n }\r\n\r\n ToggleLock() {\r\n if (this._tableView().Locked) {\r\n this.UnlockTableView();\r\n } else {\r\n this.LockTableView();\r\n }\r\n }\r\n\r\n LockTableView() {\r\n if (this._tableView().Id > 0) { \r\n LockQueryStore.Lock({Id: this._tableView().Id})\r\n .always(() => {\r\n\r\n })\r\n .then(() => {\r\n this._tableView().Lock();\r\n });\r\n }\r\n }\r\n\r\n UnlockTableView() {\r\n if (this._tableView().Id > 0) {\r\n LockQueryStore.Unlock({Id: this._tableView().Id})\r\n .always(() => {\r\n\r\n })\r\n .then(() => {\r\n this._tableView().Unlock();\r\n });\r\n }\r\n }\r\n\r\n BindEvents() {\r\n this._paginator.On(PAGINATOR_EVENTS.CHANGE, this, (eventArgs: any) => {\r\n this.LoadData();\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.OPEN_HYPERLINK, this, (eventArgs: any) => {\r\n UserVarsManager.Instance.AddRecent(eventArgs.data.EntityId, eventArgs.data.RecordId, eventArgs.data.RecordTypeId);\r\n this.GoToRecordScreen(eventArgs.data);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.SORT, this, (eventArgs: any) => {\r\n this._sorting = eventArgs.data.SortColumns;\r\n this.LoadData();\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.UNDO_EVERY_RECORD, this, () => {\r\n\t this._editAll(true);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.RECORD_DELETED, this, async() => {\r\n\t await this.ExecuteOnLinkEditorUnlinkTrigger();\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.UNLINK_RECORD, this, async() => {\r\n\t await this.ExecuteOnLinkEditorUnlinkTrigger();\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.RECORD_SAVED, this, async () => {\r\n\r\n let options: IOnLinkEditorGridSaveTrigger = {\r\n LeftEntityId: this._screen.LinkLeftEntityId,\r\n RightEntityId: this._screen.LinkRightEntityId,\r\n RelationTypeId: this._screen.RelationTypeId,\r\n GridEntityId: this._params.TableId\r\n }\r\n this._isDataLoading(true);\r\n\t await TriggerManager.ExecuteOnLinkEditorGridSaveTrigger(options, this._guid); \r\n this._isDataLoading(false);\r\n });\r\n \r\n PubSub.subscribe(PUB_SUB_EVENTS.EXECUTE_SCRIPT, (_, data) => {\r\n if(data && data.ObjectId === this._guid){\r\n FunctionBuilder.Execute(data.Code, data.Params, linkEditorTabGridFacade(this._baseGrid, this._screen));\r\n }\r\n });\r\n }\r\n\r\n async ExecuteOnLinkEditorUnlinkTrigger(){\r\n let options: IOnLinkEditorUnlinkTrigger = {\r\n LeftEntityId: this._screen.LinkLeftEntityId,\r\n RightEntityId: this._screen.LinkRightEntityId,\r\n RelationTypeId: this._screen.RelationTypeId,\r\n GridEntityId: this._params.TableId\r\n }\r\n this._isDataLoading(true);\r\n await TriggerManager.ExecuteOnLinkEditorUnlinkTrigger(options, this._guid); \r\n this._isDataLoading(false);\r\n }\r\n\r\n GoToRecordScreen(data: any) {\r\n data.IsOpenInModal = true;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n }\r\n\r\n\r\n InitRecordPerPage() {\r\n const recordsPerPageGlobalValue = GlobalManager.Instance.GetGlobal(GLOBALS.CONSULT_GRID_PAGE_LINES);\r\n this._paginator.RecordsPerPage = parseInt(recordsPerPageGlobalValue) || DEFAULT_RECORDS_PER_PAGE;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n this._el = el;\r\n }\r\n\r\n Serialize(): GridDataModel {\r\n const dataModel = new GridDataModel();\r\n\r\n dataModel.Rows = this._baseGrid.SerializeRows();\r\n\r\n _.each(dataModel.Rows, (item)=>{\r\n item.ReferenceLookupFieldId = this._params.LookupFieldId;\r\n item.ScopedRecordId = this._params.ScopedRecordId;\r\n item.ScopedTableId = this._params.ScopedTableId;\r\n });\r\n\r\n dataModel.LinkListChanges = this._baseGrid.SerializeLinkEditorData();\r\n dataModel.LinkListChanges.forEach(linkEditor => {\r\n linkEditor.MainEntityId = this._baseGrid.Model.SubjectEntityId;\r\n linkEditor.MainRecordId = this._baseGrid.Model.SubjectRecordId;\r\n linkEditor.ReferenceLookupFieldId = this._params.LookupFieldId;\r\n });\r\n\r\n return dataModel;\r\n }\r\n\r\n NewRecord() {\r\n this._baseGrid.SelectType();\r\n }\r\n\r\n AddAndLinkRecord() {\r\n const selfRelation = this._params.TargetTableId === this._params.TableId;\r\n const typeScreen = new TypeScreen(this._params.TableId,\r\n selfRelation && !this._params.LookupFieldId ? this._params.RecordTypeId : null,\r\n false);\r\n\r\n typeScreen\r\n .On('TYPE_SELECTED', this, async eventArgs => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n const globalManager = GlobalManager.Instance;\r\n const actionGlobal = globalManager.GetGlobal(GLOBALS.ACTION_TABLE);\r\n const actionSubjectRecord = this._params.TableName === actionGlobal\r\n ? new ActionSubjectRecordModel(this._params.TargetTableId, this._params.RecordId)\r\n : null;\r\n\r\n this.BlockUI();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: this._params.TableId,\r\n TableTypeId: typeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n SubjectLifestatusId: this._params.LifeStatusId,\r\n ActionSubjectRecord: actionSubjectRecord\r\n }).fail(error=>{\r\n new Notifier().Failed(error.message);\r\n })\r\n .then(screen => {\r\n const editScreen = screen as EditScreen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const createdRecordId = eventArgs.data.RecordId;\r\n this.LinkSelectedRecord([createdRecordId]);\r\n });\r\n\r\n this.UnblockUI();\r\n screen.ShowInModal();\r\n }).always(() => {\r\n this.UnblockUI()\r\n });\r\n })\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n LinkRecord() {\r\n const searchScreen = new SearchScreen({\r\n EntityId: this._params.TableId,\r\n SearchTerm: '',\r\n ButtonAdd: true,\r\n HasLinkingCondition: false,\r\n EnableBulkScan: true,\r\n MultiSelectMode: true,\r\n });\r\n\r\n let isBulkBarcodeScanning = false;\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n const selectedRecordId = eventArgs.data.RecordId;\r\n this.LinkSelectedRecord([selectedRecordId], {\r\n isBulkBarcodeScanning,\r\n onAfterLinking: () => {\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n });\r\n });\r\n\r\n searchScreen.On('RECORDS_SELECTED',\r\n this,\r\n eventArgs => {\r\n this.PrepareRecordsToSelect({\r\n linkedRecordIds: eventArgs.data.Ids,\r\n isBulkBarcodeScanning: isBulkBarcodeScanning,\r\n onAfterLinking: () => {\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n });\r\n });\r\n\r\n searchScreen.On('BULK_BARCODE_SCAN_STARTED', this, () => {\r\n isBulkBarcodeScanning = true;\r\n\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n });\r\n\r\n searchScreen.On('BULK_BARCODE_SCAN_STOPPED', this, () => {\r\n isBulkBarcodeScanning = false;\r\n });\r\n\r\n searchScreen.On('NEW_RECORD', this, () => {\r\n searchScreen.Close();\r\n this.AddAndLinkRecord();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n\r\n private PrepareRecordsToSelect({ linkedRecordIds, isBulkBarcodeScanning, onAfterLinking }: {\r\n linkedRecordIds: number[];\r\n isBulkBarcodeScanning: boolean;\r\n onAfterLinking?: () => void;\r\n }) {\r\n let kSeqValue = _.find(this._baseGrid.Model.QueryExpression.EntityJoins[0].LinkEntity.Metadata.Fields,\r\n field => field.Name === 'K_SEQ');\r\n if (kSeqValue) {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Block();\r\n }\r\n this.LinkSelectedRecord(linkedRecordIds, {\r\n isBulkBarcodeScanning,\r\n onAfterLinking: onAfterLinking\r\n });\r\n } else {\r\n let deletedRows = this._baseGrid.GetUnlinkedGridRowsByRecordIds(linkedRecordIds);\r\n\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Block();\r\n }\r\n \r\n RecordLinker.GetExistingLinksWithRecords({\r\n MainTableId: this._params.TargetTableId,\r\n MainRecordId: this._params.RecordId,\r\n LinkedTableId: this._params.TableId,\r\n LinkedRecordIds: linkedRecordIds\r\n })\r\n .always(() => {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Unblock();\r\n onAfterLinking();\r\n }\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n _.each(result.ResultObject, (id) => {\r\n let deletedRow = _.find(deletedRows, (row) => row.RecordId === id)\r\n if (deletedRow) {\r\n deletedRow.LinkEditorData.DeletedRelations = _.reject(deletedRow.LinkEditorData.DeletedRelations,\r\n (item) => item.EntityId === deletedRow.EntityId\r\n && item.RecordId === deletedRow.RecordId\r\n && item.KSeq === deletedRow.KSeq);\r\n\r\n this._baseGrid.AddRow(deletedRow);\r\n\r\n setTimeout(() => {\r\n this._baseGrid.ResizeTableCellsAfterRender();\r\n }, 0);\r\n }\r\n });\r\n\r\n let newLinks = _.difference(linkedRecordIds, result.ResultObject);\r\n this.LinkSelectedRecord(newLinks, {\r\n isBulkBarcodeScanning,\r\n onAfterLinking: onAfterLinking\r\n });\r\n });\r\n }\r\n }\r\n\r\n private LinkSelectedRecord(\r\n recordIds: number[],\r\n { isBulkBarcodeScanning, onAfterLinking }: { isBulkBarcodeScanning?: boolean; onAfterLinking?: () => void } = {}\r\n ) {\r\n const requestModel: IGetGridDataRequestModel = {\r\n ControlId: 0,\r\n TableViewId: this._tableView() ? this._tableView().Id : 0,\r\n SubjectEntityId: this._params.TargetTableId,\r\n SubjectRecordId: this._params.RecordId,\r\n SubjectTypeId: this._params.RecordTypeId,\r\n SubjectKindId: 0,\r\n SubjectStatusId: this._params.LifeStatusId,\r\n ViewMode: ViewModes.TableView,\r\n PageNumber: this._paginator.PageNumber,\r\n RecordsPerPage: this._paginator.RecordsPerPage,\r\n Sort: [],\r\n SearchPhrase: '',\r\n FilterByOwners: false,\r\n RecordOwners: [],\r\n ShowPlanned: false,\r\n SelectedTags: [],\r\n GridSubjectEntityId: this._params.TableId,\r\n GridSubjectRecordIds: recordIds,\r\n ReferenceLookupFieldId: this._params.LookupFieldId,\r\n ScopedRecordId: this._params.ScopedRecordId,\r\n ScopedTableId: this._params.ScopedTableId\r\n };\r\n\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Block();\r\n }\r\n GridStore.GetData(requestModel)\r\n .always(() => {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Unblock();\r\n onAfterLinking();\r\n }\r\n })\r\n .then(gridDataModel => {\r\n this._baseGrid.AddLinkedRows(gridDataModel);\r\n });\r\n }\r\n\r\n private LoadData() {\r\n const getData = () => {\r\n this.BlockUI();\r\n this._store.GetGridData(this.GetLoadData())\r\n .then(gridDataModel => {\r\n gridDataModel.SubjectEntityId = this._params.TargetTableId;\r\n gridDataModel.SubjectRecordId = +gridDataModel.QueryExpression.Condition.Items[0].Value;\r\n\r\n this._paginator.TotalRecords = gridDataModel.TotalRecords;\r\n this._baseGrid.SetData(gridDataModel, true, true);\r\n this._isEditable(this.IsEditable);\r\n this._showAddButton(this.ShowAddButton);\r\n this._showAddAndLinkButton(this.ShowAddAndLinkButton);\r\n this._showLinkButton(this.ShowLinkButton);\r\n this._showScanAndLinkButton(gridDataModel.IsScanAndLinkAllowed);\r\n\r\n this._dataLoaded = true;\r\n\r\n this._showTableViewElement(this.ShowTableViewList);\r\n this._showTableViewLookup(this.ShowTableViewList);\r\n this._showFunctionLookup(this.ShowTableViewList);\r\n\r\n this.UnblockUI();\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message);\r\n this.UnblockUI();\r\n });\r\n }\r\n\r\n if (this._isTableViewUpdating()) {\r\n if (this._tableViewUpdatingSubscription) {\r\n this._tableViewUpdatingSubscription.dispose();\r\n }\r\n this._tableViewUpdatingSubscription = this._isTableViewUpdating.subscribe((value) => {\r\n if (!value) {\r\n getData();\r\n }\r\n });\r\n } else {\r\n getData();\r\n }\r\n }\r\n\r\n private ScanAndLinkRecord(){\r\n let isBulkBarcodeScanning = true;\r\n const barcodeScanner = new BarcodeScanner({ isContinuous: false });\r\n\r\n barcodeScanner.On('SUBMIT', this, eventArgs => {\r\n const { value } = eventArgs.data;\r\n\r\n GridStore.SearchByBarcode({ EntityId: this._params.TableId, Barcode: value })\r\n .then(linkedRecordId => {\r\n this.LinkSelectedRecord([linkedRecordId], {\r\n isBulkBarcodeScanning,\r\n onAfterLinking: () => {}\r\n });\r\n })\r\n .fail(error => {\r\n barcodeScanner.Reenable();\r\n new Notifier().Failed(error.message);\r\n });\r\n });\r\n\r\n barcodeScanner.Show();\r\n }\r\n\r\n private BlockUI() {\r\n BlockUI.Block({Target: this._el});\r\n }\r\n\r\n private UnblockUI() {\r\n BlockUI.Unblock(this._el);\r\n }\r\n\r\n private GetGridOptions(): IBaseGridOptions {\r\n return {\r\n isEditable: this._isEditable,\r\n screenType: ScreenTypes[ScreenTypes.EditScreen]\r\n };\r\n }\r\n\r\n private GetLoadData(): IGetTabGridDataParams {\r\n return {\r\n TableViewId: this._tableView() ? this._tableView().Id : 0,\r\n TableId: this._params.TableId,\r\n TargetTableId: this._params.TargetTableId,\r\n LookupFieldId: this._params.LookupFieldId,\r\n RecordId: this._params.RecordId,\r\n PageNumber: this._paginator.PageNumber,\r\n RecordsPerPage: this._paginator.RecordsPerPage,\r\n Sort: this._sorting,\r\n ScopedRecordId: this._params.ScopedRecordId,\r\n ScopedTableId: this._params.ScopedTableId\r\n };\r\n }\r\n\r\n DeleteTableView() {\r\n if (this._tableView().Id > 0) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: 'Are you sure?',\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: 'Yes',\r\n TextDecline: 'Cancel'\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n BlockUI.Block();\r\n DeleteQueryStore.Delete({Id: this._tableView().Id})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n this.UpdateTableViewList();\r\n });\r\n });\r\n confirmationDialog.Show();\r\n }\r\n }\r\n\r\n EditTableView(){\r\n if (this._tableView().Id > 0) {\r\n BlockUI.Block();\r\n\r\n GridStore.GetDefaultTableViewMetaData(ScreenTypes.LinkEditor)\r\n .then(data => {\r\n\r\n LockManager.Instance.TryLock(data.TableId, this._tableView().Id)\r\n .then(async() => {\r\n\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId,\r\n RecordId: this._tableView().Id\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n })\r\n .then((screen) => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === data.TableId && eventArgs.data.RecordId === this._tableView().Id) {\r\n screen.Close();\r\n }\r\n });\r\n screen.On('MODAL_CLOSE', this, () => {\r\n LockManager.Instance.ReleaseLock(data.TableId, this._tableView().Id);\r\n });\r\n\r\n const editScreen = screen as BaseScreen;\r\n\r\n editScreen.ShowInModal();\r\n\r\n editScreen.On('RECORD_DELETED', this, (eventArgs) => {\r\n this.UpdateTableViewList();\r\n });\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectRecordId(this._params.RecordId);\r\n queryBuilderControl.SetQueryTypeName(ViewModes.TableView);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.UpdateTableViewList();\r\n });\r\n }\r\n });\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n }\r\n\r\n NewTableView() {\r\n BlockUI.Block();\r\n GridStore.GetDefaultTableViewMetaData(ScreenTypes.LinkEditor)\r\n .then(async(data) => {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n\r\n notifier.Warning(error.message);\r\n }).then(screen => this.ShowQueryEditScreen(screen as BaseScreen));\r\n \r\n })\r\n .fail(err => {\r\n new Notifier($(this._el)).Failed(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n CopyTableView() {\r\n if (this._tableView().Id > 0) {\r\n BlockUI.Block();\r\n\r\n GridStore.GetDefaultTableViewMetaData(ScreenTypes.LinkEditor)\r\n .then(async(data) => {\r\n BlockUI.Block();\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId,\r\n RecordId: this._tableView().Id,\r\n LoadAsExample: true\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n })\r\n .then((screen) => {\r\n const editScreen = screen as EditScreen;\r\n editScreen.IsDataFromExample = true;\r\n editScreen.ShowInModal();\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectRecordId(this._params.RecordId);\r\n queryBuilderControl.SetQueryTypeName(ViewModes.TableView);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.SaveTableViewId(eventArgs.data.RecordId);\r\n this.UpdateTableViewList();\r\n });\r\n }\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n BlockUI.Unblock();\r\n });\r\n }\r\n }\r\n\r\n private SaveTableViewId(id: number){\r\n let key = `${this._params.TableId}_${this._params.TargetTableId}_${this._params.LookupFieldId}`;\r\n this._userVarsManager.SetLinkEditorGridView(key, id);\r\n }\r\n\r\n private GetTableViewId(){\r\n let key = `${this._params.TableId}_${this._params.TargetTableId}_${this._params.LookupFieldId}`;\r\n return this._userVarsManager.GetLinkEditorGridView(key);\r\n }\r\n\r\n private ShowQueryEditScreen(editScreen: BaseScreen){\r\n editScreen.ShowInModal();\r\n \r\n this._store.GetDefaultTableView({\r\n TableId: this._params.TableId,\r\n TargetTableId: this._params.TargetTableId,\r\n LookupFieldId: this._params.LookupFieldId\r\n }).then(data => {\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectEntityId(this._params.TargetTableId);\r\n queryBuilderControl.SetSubjectRecordId(this._params.RecordId);\r\n queryBuilderControl.SetQueryTypeName(ViewModes.TableView);\r\n\r\n queryBuilderControl.InitQuery(data);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.SaveTableViewId(eventArgs.data.RecordId);\r\n this.UpdateTableViewList();\r\n });\r\n }\r\n });\r\n }\r\n\r\n private UpdateTableViewList(){\r\n this._isTableViewUpdating(true);\r\n\r\n ViewGridListStore.GetLinkEditorGridViewList({\r\n TableId: this._params.TableId,\r\n TargetTableId: this._params.TargetTableId,\r\n LookupFieldId: this._params.LookupFieldId\r\n })\r\n .always(()=>{\r\n this._isTableViewUpdating(false);\r\n })\r\n .then(data => {\r\n \r\n let defaultView = new ViewGridModel(0, LABELS.DEFAULT_VIEW);\r\n defaultView.IsEditingAllowed = false;\r\n let tableViewList = [defaultView];\r\n data.GridViews.forEach(view => view.Init());\r\n tableViewList = data.GridViews ? tableViewList.concat(data.GridViews) : tableViewList;\r\n this._viewGridList(tableViewList);\r\n\r\n let tableViewId = this.GetTableViewId();\r\n if(tableViewId){\r\n let tableView = _.find(this._viewGridList(), (view) => view.Id == tableViewId) || defaultView;\r\n this._tableView(tableView);\r\n }else{\r\n this._tableView(defaultView);\r\n }\r\n \r\n });\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._isDataLoading\\\"> <div class=\\\"clearfix table-toolbar-line\\\"> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}, attr: { title: $data._errorMessage }\\\" class=\\\"fa fa-warning control-tooltip\\\"></i> <query-dropdowns params=\\\"\\r\\n showElement: _showTableViewElement,\\r\\n showViewLookup: _showTableViewLookup,\\r\\n showFunctionLookup: _showFunctionLookup,\\r\\n view: _tableView,\\r\\n isEnabled: _isEnabled,\\r\\n viewList: _viewGridList,\\r\\n isAddingRecordAllowed: _isAddingRecordAllowed,\\r\\n enableEditView: _enableEditTableView,\\r\\n enableDeleteView: _enableDeleteTableView,\\r\\n enableLockItem: _enableLockItem,\\r\\n exportDataAllowed: _exportDataAllowed,\\r\\n showLockItem: _showLockItem,\\r\\n queryLocked: _tableView() ? _tableView().LockedTableView : null,\\r\\n newView: NewTableView.bind($data),\\r\\n editView: EditTableView.bind($data),\\r\\n deleteView: DeleteTableView.bind($data),\\r\\n copyView: CopyTableView.bind($data),\\r\\n toggleLock: ToggleLock.bind($data)\\r\\n \\\"> </query-dropdowns> <div class=\\\"pull-left\\\"> <!-- ko with: _paginator --> <!-- ko template: {name: GetTemplateName} --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"pull-right additional-buttons\\\"> <!-- ko if: _showAddButton --> <a data-bind=\\\"click: $data.NewRecord.bind($data)\\\" class=\\\"btn blue-sharp showAddButton subFormControl\\\"> <i class=\\\"icon-plus\\\"></i> <!-- ko text: _labels.NEW --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showEditAllButton() --> <a data-bind=\\\"visible: _isEditable(), click: $data.ToggleEditAll.bind($data)\\\" class=\\\"btn blue-sharp showEditAllButton subFormControl\\\"> <!-- ko if: _editAll --> <!-- ko text: _labels.EDIT_ALL --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: _editAll --> <!-- ko text: _labels.SAVE_ALL --><!-- /ko --> <!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showAddAndLinkButton --> <a data-bind=\\\"click: $data.AddAndLinkRecord.bind($data)\\\" class=\\\"btn blue-sharp tab-add-and-link-button subFormControl\\\"> <!-- ko text: _labels.ADD_AND_LINK --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showLinkButton --> <a data-bind=\\\"click: $data.LinkRecord.bind($data)\\\" class=\\\"btn blue-sharp tab-link-button subFormControl\\\"> <!-- ko text: _labels.LINK --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showScanAndLinkButton --> <a data-bind=\\\"click: $data.ScanAndLinkRecord.bind($data)\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl tab-scan-and-link-button\\\"> <!-- ko text: _labels.SCAN_AND_LINK --><!-- /ko --> </a> <!-- /ko --> </div> </div> <!--ko with: _baseGrid--> <div class=\\\"grid-relative-container\\\"> <div class=\\\"grid-container-wrapper\\\"> <div data-bind=\\\"template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)}\\\"></div> </div> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import {Guid} from 'Core/Common/Guid';\r\n\r\nimport {TABLE_TYPES} from 'Core/Constant';\r\n\r\nimport {ITabTableParams} from '../ITabTablesParams';\r\n\r\nimport {TabGrid} from '../../TabGrid/TabGrid';\r\nimport { ILinkEditor } from '../../../LinkEditor';\r\n\r\nexport class TabTableData {\r\n private _id: string;\r\n private _grid: TabGrid;\r\n\r\n constructor(private _params: ITabTableParams, screen: ILinkEditor) {\r\n this._id = Guid.NewGuid();\r\n this._grid = new TabGrid(this._params, screen);\r\n }\r\n\r\n get Id() {\r\n return this._id;\r\n }\r\n\r\n get TableName() {\r\n return this._params.TableName;\r\n }\r\n\r\n get TableTypeName() {\r\n return this._params.TableTypeName;\r\n }\r\n\r\n get TargetTableName() {\r\n return this._params.TargetTableName;\r\n }\r\n\r\n get LookupFieldId() {\r\n return this._params.LookupFieldId;\r\n }\r\n\r\n get LookupFieldName() {\r\n return this._params.LookupFieldName;\r\n }\r\n\r\n get TabName() {\r\n if (this.TableTypeName === TABLE_TYPES.Sub) {\r\n return this.TableName;\r\n }\r\n\r\n if (this.LookupFieldId) {\r\n return `${this.TableName} (${this.LookupFieldName} -> ${this.TargetTableName})`;\r\n }\r\n\r\n return `${this.TableName} (${this.TargetTableName})`;\r\n }\r\n\r\n get Grid() {\r\n return this._grid;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {ITabTablesParams} from './ITabTablesParams';\r\nimport {TabTableData} from './Models/TabTableData';\r\n\r\nimport {GridDataModel} from '../../Models/DataModel';\r\n\r\nimport Template from './Templates/TabTables.html';\r\n\r\n\r\nexport class TabTables {\r\n Data: TabTableData[];\r\n CurrentTabTable: KnockoutObservable<TabTableData>;\r\n\r\n constructor(params: ITabTablesParams) {\r\n this.Data = params.TableParams.map(tableParams => new TabTableData(tableParams, params.Screen));\r\n this.CurrentTabTable = ko.observable(null);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n ValidateData(): boolean {\r\n let result = true;\r\n\r\n _.each(this.Data, (tab) =>{\r\n if(!tab.Grid.IsValid){\r\n result = false;\r\n };\r\n });\r\n return result;\r\n }\r\n\r\n OnTabClick(tableData: TabTableData) {\r\n this.CurrentTabTable(tableData);\r\n }\r\n\r\n SelectTab(index: number) {\r\n const tabTable = this.Data[index];\r\n\r\n if (tabTable) {\r\n this.CurrentTabTable(tabTable);\r\n }\r\n }\r\n\r\n Serialize(): GridDataModel[] {\r\n return this.Data\r\n .map(data => data.Grid.Serialize())\r\n .filter(gridData => gridData.Rows.length > 0 || gridData.LinkListChanges.length > 0);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"tab-wrapper\\\"> <div role=\\\"tabpanel\\\"> <ul class=\\\"nav nav-tabs\\\" role=\\\"tablist\\\"> <!--ko foreach: Data--> <li role=\\\"presentation\\\" class=\\\"tab\\\" data-bind=\\\", css: {'active': $data === $parent.CurrentTabTable()}\\\"> <a class=\\\"tab-link\\\" role=\\\"tab\\\" data-toggle=\\\"tab\\\" data-bind=\\\"text: TabName, click: $parent.OnTabClick.bind($parent)\\\"> </a> </li> <!--/ko--> </ul> <!--ko with: CurrentTabTable--> <div class=\\\"tab-content tab-page-result\\\"> <!--ko with: Grid--> <div data-bind=\\\"template: {html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)}\\\"> </div> <!--/ko--> </div> <!--/ko--> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore'\r\n\r\nimport {CONTROL_TYPES, FIELD_TYPE_TO_CONTROL, FIELD_TYPES, RenderModes, SIMPLE_CONTROLS} from 'Core/Constant';\r\nimport {ClusterModes} from \"Core/Constants/ClusterModes\";\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen'\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel'\r\nimport {SubFormModel} from 'Core/Models/Screens/SubFormModel'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\nimport {Notifier} from 'Core/Common/Notifier'\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes'\r\nimport {IGetRelationTypesRequestModel, LinkEditorStore} from 'Core/Screens/Common/LinkEditor/Stores/LinkEditorStore'\r\nimport {LinkedFieldValueModel} from 'Core/Screens/Common/LinkEditor/Models/LinkedFieldValueModel'\r\n\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList'\r\n\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel'\r\nimport {ScreenDataModel} from \"Core/ScreenManager/Models/ScreenDataModel\"\r\nimport {ControlDataModel} from \"Core/ScreenManager/Models/ControlDataModel\"\r\nimport {LinkEditorModel, LinkedRecordModel} from 'Core/Screens/Common/LinkEditor/Models/LinkEditorModel'\r\nimport {DataModel, FieldDataModel} from 'Core/Screens/Common/LinkEditor/Models/DataModel'\r\n\r\nimport {P} from 'Core/Common/Promise'\r\nimport LinkEditorTemplate from 'Core/Screens/Common/LinkEditor/Templates/LinkEditor.html'\r\nimport {IControl} from \"../../../Controls/IControl\";\r\nimport {SoftColorScheme, SoftColorsProvider} from \"../../../Common/SoftColorsProvider\";\r\nimport {LABELS} from \"../../../Components/Translation/Locales\";\r\nimport {TabTables} from './Components/TabTables/TabTables';\r\nimport { IScreen } from 'Core/Controls/Grid/BaseGrid/Index';\r\nimport { IconModel } from 'Core/Controls/BaseControl/Models/IconModel';\r\nimport { EditLinkDataModel } from 'Core/Controls/LinkList/Models/UpdateDataModel';\r\n\r\nko.templates['Core/Screens/Common/LinkEditor/Templates/LinkEditor'] = LinkEditorTemplate;\r\n\r\nexport interface ILoadScreenRelationModel {\r\n MainEntityId: number;\r\n MainRecordId: number;\r\n MainRecordTypeId?: number;\r\n MainRecordKindId?: number;\r\n\r\n RelatedEntityId: number;\r\n RelatedRecordId: number;\r\n RelatedRecordTypeId: number;\r\n\r\n KSeq?: number;\r\n}\r\n\r\nexport interface ILinkEditor extends IScreen {\r\n LinkLeftEntityId: number;\r\n LinkRightEntityId: number;\r\n RelationTypeId: number;\r\n}\r\n\r\nexport class LinkEditor extends BaseScreen implements ILinkEditor {\r\n\r\n private _linkEditorModel: LinkEditorModel;\r\n private _tabTables: TabTables;\r\n private _relatedEntityId: number;\r\n private _relatedRecordId: number;\r\n private _mainEntityId: number;\r\n private _mainRecordTypeId: number;\r\n private _mainRecordId: number;\r\n private _kSeq: number;\r\n private _editorDataModel: DataModel;\r\n private _leftLinkedEntityName: string;\r\n private _rightLinkedEntityName: string;\r\n private _closeAfterSave: boolean = true;\r\n private _relationTypes: Array<any>;\r\n private _selectedRelationTypeId: KnockoutObservable<number>;\r\n private _selectedRelationTypeName: KnockoutObservable<string>;\r\n private _defaultDisabled: KnockoutObservable<boolean>;\r\n private _linkListInstance: LinkList;\r\n private _hasRelations: KnockoutObservable<boolean>;\r\n private _relationTypeValuesEnabled: KnockoutObservable<boolean>;\r\n\r\n constructor(screenModel: ScreenModel, linkEditorModel: LinkEditorModel = null, relation: ILoadScreenRelationModel = null) {\r\n super(screenModel, RenderModes.Edit);\r\n this._linkEditorModel = linkEditorModel;\r\n this._relatedEntityId = relation.RelatedEntityId;\r\n this._relatedRecordId = relation.RelatedRecordId;\r\n this._kSeq = relation.KSeq;\r\n this._mainEntityId = relation.MainEntityId;\r\n this._mainRecordTypeId = relation.MainRecordTypeId;\r\n this._mainRecordId = relation.MainRecordId;\r\n this._renderMode = RenderModes.Edit;\r\n this._rightLinkedEntityName = '';\r\n this._leftLinkedEntityName = '';\r\n this._relationTypes = (screenModel as any).RelationTypes || [];\r\n this._selectedRelationTypeId = ko.observable(null);\r\n this.SetFirstEnabledRelationType();\r\n this._defaultDisabled = ko.observable(!!_.find(this._relationTypes, (type) => type.Enabled));\r\n (screenModel as any).SelectedRelationTypeId && this._selectedRelationTypeId((screenModel as any).SelectedRelationTypeId);\r\n this._selectedRelationTypeName = ko.observable((screenModel as any).SelectedRelationTypeName || null);\r\n this._linkListInstance = null;\r\n this._hasRelations = ko.observable(!!this._relationTypes.length);\r\n this._relationTypeValuesEnabled = ko.observable(false);\r\n this.AddEvents();\r\n this.Init();\r\n this.SetData(screenModel.Data);\r\n\r\n\r\n this._selectedRelationTypeId.subscribe((newValue) => {\r\n this.FireUpdateVariable(newValue.toString());\r\n });\r\n }\r\n \r\n get LinkLeftEntityId() {\r\n return this._linkEditorModel.LeftLinkedEntityId\r\n };\r\n\r\n get LinkRightEntityId(){\r\n return this._linkEditorModel.RightLinkedEntityId;\r\n }\r\n\r\n get RelationTypeId(){\r\n return this._selectedRelationTypeId();\r\n }\r\n\r\n FireUpdateVariable(value: string){\r\n if(this.RelationTypeField){\r\n let fieldModel = new AttachedFieldModel();\r\n fieldModel.Id = this.RelationTypeField.Id;\r\n this.UpdateVariable({ Field: fieldModel, ControlType: CONTROL_TYPES.Dropdown }, value);\r\n } \r\n }\r\n\r\n GetEntityId(): number {\r\n return this._mainEntityId;\r\n }\r\n\r\n GetTableTypeId(): number {\r\n return this._mainRecordTypeId;\r\n }\r\n\r\n GetRecordId(): number {\r\n return this._mainRecordId;\r\n }\r\n\r\n GetKseq(): number {\r\n return this._kSeq;\r\n }\r\n\r\n GetRelatedEntityId(): number {\r\n return this._relatedEntityId;\r\n }\r\n\r\n GetRelatedRecordId(): number {\r\n return this._relatedRecordId;\r\n }\r\n\r\n get KSeq(): number {\r\n return this._kSeq;\r\n }\r\n\r\n SetRelationTypeValue(linkEditor, event) {\r\n this._selectedRelationTypeId(event.target.value);\r\n }\r\n\r\n SetFirstEnabledRelationType() {\r\n if (this._relationTypes.length && !(this._model as any).SelectedRelationTypeId) {\r\n const firstRel = _.find(this._relationTypes, (type) => type.Enabled);\r\n if (firstRel) {\r\n this._selectedRelationTypeId(firstRel.RecordId);\r\n this.FireUpdateVariable(firstRel.RecordId);\r\n }\r\n }\r\n }\r\n\r\n get ReferenceControls(): Array<IControl> {\r\n return _.filter(this.GetAllControls(), (control) => {\r\n return control.GetType() === CONTROL_TYPES.Text && control.GetFieldModel().FieldTypeName === FIELD_TYPES.Reference;\r\n });\r\n }\r\n\r\n private Init() {\r\n this.On('SAVE', this, (eventArgs: any) => {\r\n this.Save();\r\n });\r\n }\r\n\r\n AddEvents() {\r\n this.AddEvent(\"SAVE\");\r\n this.AddEvent(\"CANCEL\");\r\n this.AddEvent(\"SAVE_DATA\");\r\n this.AddEvent(\"MODAL_CLOSE\");\r\n this.AddEvent(\"DATA_CHANGED\");\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/Common/LinkEditor/Templates/LinkEditor';\r\n }\r\n\r\n SetFocusOnFirstControl() {\r\n const control = this.GetControlBy(c => c.IsFocusable());\r\n if (control) {\r\n control.SetFocus(true);\r\n }\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n this.SetFocusOnFirstControl();\r\n }\r\n\r\n static LoadScreen(\r\n relationModel: ILoadScreenRelationModel,\r\n isNew: boolean,\r\n data: any,\r\n closeAfterSave: boolean = true,\r\n linkListInstance = null,\r\n requestedFromEditScreen: boolean = false\r\n ): P.Promise<LinkEditor> {\r\n var deferredResult = P.defer<LinkEditor>();\r\n BlockUI.Block();\r\n LinkEditorStore.GetData({\r\n MainEntityId: relationModel.MainEntityId,\r\n MainRecordId: relationModel.MainRecordId,\r\n MainRecordTypeId: relationModel.MainRecordTypeId,\r\n MainRecordKindId: relationModel.MainRecordKindId,\r\n RelatedEntityId: relationModel.RelatedEntityId,\r\n RelatedRecordId: relationModel.RelatedRecordId,\r\n Kseq: relationModel.KSeq,\r\n IsNew: isNew\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(model => {\r\n if (model !== null) {\r\n const FRelationFieldModel = _.where(model.Fields, {Name: 'F_RELATIONTYPEVALUE'})[0];\r\n\r\n this.GetRelationTypesData({\r\n MainEntityId: relationModel.MainEntityId,\r\n MainRecordId: relationModel.MainRecordId,\r\n MainRecordTypeId: relationModel.MainRecordTypeId,\r\n RelatedEntityId: relationModel.RelatedEntityId,\r\n RelatedRecordId: relationModel.RelatedRecordId,\r\n RelatedRecordTypeId: relationModel.RelatedRecordTypeId,\r\n SequenceId: relationModel.KSeq\r\n }, FRelationFieldModel,\r\n (relationTypes, relationTypeFieldData) => {\r\n let screen = this.GenerateScreen(\r\n model,\r\n data,\r\n closeAfterSave,\r\n relationTypes,\r\n relationTypeFieldData,\r\n linkListInstance,\r\n requestedFromEditScreen,\r\n relationModel\r\n );\r\n if (screen) {\r\n screen._editorDataModel = data;\r\n }\r\n deferredResult.resolve(screen);\r\n }\r\n );\r\n }\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetRelationTypesData(GetRelationTypesRequestModel: IGetRelationTypesRequestModel, FRelationFieldModel, callback) {\r\n if (FRelationFieldModel) {\r\n LinkEditorStore.GetRelationTypesData(GetRelationTypesRequestModel).then(model => {\r\n callback.call(this, model.Items,\r\n {\r\n FieldId: FRelationFieldModel.Id,\r\n FieldName: FRelationFieldModel.Name,\r\n FieldValue: FRelationFieldModel.Value,\r\n RelatedRecordId: GetRelationTypesRequestModel.RelatedRecordId,\r\n CurrentClusterMode: model.CurrentClusterMode,\r\n });\r\n }).fail(error => new Notifier().Failed(error.message));\r\n } else {\r\n callback();\r\n }\r\n\r\n }\r\n\r\n private static GetControlDataModel(field: LinkedFieldValueModel, model: LinkEditorModel, data: DataModel) {\r\n const controlDataModel = new ControlDataModel();\r\n controlDataModel.Reference = field.Reference;\r\n controlDataModel.ControlId = field.Id;\r\n\r\n if (data) {\r\n const existsData = _.find(data.FieldValues, item => item.FieldId === field.Id);\r\n if (existsData) {\r\n controlDataModel.Value = existsData.FieldValue[1];\r\n controlDataModel.DisplayValue = existsData.FieldValue[1];\r\n } else {\r\n controlDataModel.Value = field.Value;\r\n }\r\n } else {\r\n controlDataModel.Translations = field.Translations;\r\n controlDataModel.Value = field.Value;\r\n controlDataModel.DisplayValue = field.DisplayValue;\r\n }\r\n\r\n return controlDataModel;\r\n }\r\n\r\n get RelationTypeField(): LinkedFieldValueModel{\r\n return this._linkEditorModel.Fields.find(field => field.Name === 'F_RELATIONTYPEVALUE');\r\n }\r\n\r\n static GenerateScreen(\r\n model: LinkEditorModel,\r\n data: DataModel,\r\n closeAfterSave: boolean = true,\r\n relationTypes,\r\n relationTypeFieldData,\r\n linkListInstance,\r\n requestedFromEditScreen: boolean,\r\n relation: ILoadScreenRelationModel\r\n ): LinkEditor {\r\n let screenModel = new ScreenModel();\r\n screenModel.EntityIcon = new IconModel();\r\n screenModel.EntityIcon.FontName = \"1\";\t\t// TODO specify FontName\r\n screenModel.ScreenTypeName = ScreenTypes[ScreenTypes.LinkEditor];\r\n screenModel.ActionBar = new SubFormModel();\r\n screenModel.EntityName = model.LinkEntity;\r\n\r\n const subForm = new SubFormModel();\r\n screenModel.SubForms = [subForm];\r\n\r\n const dataModel = new ScreenDataModel();\r\n let relationTypeSelectedData = null;\r\n\r\n const propertyFields = model.Fields\r\n .filter(field => field.TypeName === FIELD_TYPES.Property)\r\n .map((field, index) => ({\r\n Field: field,\r\n BackgroundColor: SoftColorsProvider.GetColor(index, SoftColorScheme.RGBA)\r\n }));\r\n\r\n const controlledFields = model.Fields\r\n .filter(field => field.Name !== 'F_RELATIONTYPEVALUE')\r\n .filter(field => field.TypeName !== FIELD_TYPES.Property)\r\n .sort((field1, field2) => field2.Sort > field1.Sort ? -1 : 1);\r\n\r\n let controlsWithFields: ControlModel[] = [];\r\n _.each(controlledFields, field => {\r\n const controlModel = this.GetControlModel(field, model.LinkEntity);\r\n\r\n const propertyField = _.find(propertyFields, pField => pField.Field.Id === field.PropertyFieldId);\r\n if (propertyField) {\r\n controlModel.SetBackgroundColor(propertyField.BackgroundColor);\r\n }\r\n\r\n const controlDataModel = this.GetControlDataModel(field, model, data);\r\n\r\n dataModel.ControlsData.push(controlDataModel);\r\n controlsWithFields.push(controlModel);\r\n });\r\n\r\n controlsWithFields = _.chain(controlsWithFields).sortBy(control => control.Sort).sortBy(control => control.Fields[0].PropertyFieldId).value();\r\n\r\n let memoControl = _.find(controlsWithFields, control=>{\r\n return control.TypeName == CONTROL_TYPES.Memo;\r\n });\r\n\r\n if(memoControl){\r\n controlsWithFields.splice(controlsWithFields.indexOf(memoControl), 1);\r\n controlsWithFields.push(memoControl);\r\n }\r\n\r\n subForm.Controls.push(...controlsWithFields);\r\n\r\n if (data) {\r\n const relationTypeField = _.filter(data.FieldValues, field => field.FieldValue[0].split('.')[1] === 'F_RELATIONTYPEVALUE')[0];\r\n relationTypeSelectedData = relationTypeField && relationTypeField.FieldValue[1];\r\n }\r\n\r\n screenModel.Data = dataModel;\r\n\r\n if (relationTypes) {\r\n let listAvailabilityStatus = null;\r\n let SelectedRelationTypeName = null;\r\n\r\n const RelationTypes = relationTypes.map(relationType => {\r\n relationType.Id = relationTypeFieldData.FieldId;\r\n relationType.FieldName = relationTypeFieldData.FieldName;\r\n if (+relationType.RecordId === +relationTypeFieldData.FieldValue\r\n || +relationType.RecordId === +relationTypeSelectedData) {\r\n SelectedRelationTypeName = relationType.TypeName;\r\n }\r\n return relationType;\r\n });\r\n\r\n screenModel = _.extend(screenModel, {\r\n RelationTypes: RelationTypes,\r\n SelectedRelationTypeId: relationTypeFieldData.FieldValue,\r\n SelectedRelationTypeName: SelectedRelationTypeName,\r\n });\r\n\r\n if (linkListInstance) {\r\n listAvailabilityStatus = linkListInstance.GetLinkTypesState(model.RightLinkedEntityName, relationTypeFieldData.RelatedRecordId);\r\n listAvailabilityStatus && listAvailabilityStatus.map((linkType) => {\r\n if (linkType.InstancingMaximum === 0) {\r\n const targetedLinkType: any = _.where((screenModel as any).RelationTypes, {\r\n TypeName: linkType.Name\r\n });\r\n if (targetedLinkType.length) {\r\n targetedLinkType.map((linkType) => {\r\n linkType.Enabled = false;\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n const screen = new LinkEditor(screenModel, model, relation);\r\n\r\n screen._linkListInstance = linkListInstance;\r\n screen._linkEditorModel = model;\r\n screen._tabTables = !requestedFromEditScreen && model.TabSettings.length > 0\r\n ? new TabTables({ \r\n Screen: screen,\r\n TableParams: model.TabSettings.map(tabSettings => {\r\n const record = screen._linkEditorModel.LeftLinkedEntityId === tabSettings.TargetTableId\r\n ? screen._linkEditorModel.LeftLinkedRecord\r\n : screen._linkEditorModel.RightLinkedRecord;\r\n\r\n const scopedRecord = screen._linkEditorModel.LeftLinkedEntityId === tabSettings.TargetTableId\r\n ? screen._linkEditorModel.RightLinkedRecord.Id\r\n : screen._linkEditorModel.LeftLinkedRecord.Id\r\n\r\n const scopedTable = screen._linkEditorModel.LeftLinkedEntityId === tabSettings.TargetTableId\r\n ? screen._linkEditorModel.RightLinkedEntityId\r\n : screen._linkEditorModel.LeftLinkedEntityId\r\n\r\n return {\r\n ...tabSettings,\r\n RecordId: record.Id,\r\n RecordTypeId: record.TypeId,\r\n RecordTypeName: record.TypeName,\r\n LifeStatusId: record.LifeStatusId,\r\n LifeStatusName: record.LifeStatusName,\r\n ScopedRecordId: scopedRecord,\r\n ScopedTableId: scopedTable\r\n }\r\n })\r\n }) : null;\r\n\r\n if (screen._tabTables) {\r\n screen._tabTables.SelectTab(0);\r\n }\r\n\r\n screen.SetModalOptions({\r\n maxWidth: '700',\r\n addClass: 'link-editor-modal showScrollModal',\r\n minHeight: '550',\r\n height: '520',\r\n blockScroll: true\r\n });\r\n\r\n let hasRelations = relationTypes ? !!relationTypes.length : false;\r\n screen._hasRelations(hasRelations);\r\n\r\n if (model.Fields.length == 1 && model.Fields[0].Name === 'F_RELATIONTYPEVALUE' && !hasRelations) {\r\n return null;\r\n }\r\n\r\n if (hasRelations) {\r\n const relationTypeValuesEnabled = relationTypeFieldData.CurrentClusterMode === ClusterModes.Use;\r\n screen._relationTypeValuesEnabled(relationTypeValuesEnabled);\r\n }\r\n\r\n relationTypeSelectedData && screen._selectedRelationTypeId(relationTypeSelectedData);\r\n screen._leftLinkedEntityName = screen._linkEditorModel.LeftLinkedEntityTranslatedName;\r\n screen._rightLinkedEntityName = screen._linkEditorModel.RightLinkedEntityTranslatedName;\r\n screen.Show(closeAfterSave);\r\n return screen;\r\n }\r\n\r\n private Show(closeAfterSave: boolean = true) {\r\n super.ShowInModal();\r\n this._closeAfterSave = closeAfterSave;\r\n }\r\n\r\n static GetControlModel(fieldModel: LinkedFieldValueModel, entityName: string): ControlModel {\r\n const attachedField = new AttachedFieldModel();\r\n\r\n attachedField.Id = fieldModel.Id;\r\n attachedField.Name = fieldModel.Name;\r\n attachedField.FormatName = fieldModel.FormatName;\r\n attachedField.EntityName = entityName;\r\n attachedField.ValFieldId = fieldModel.ValFieldId;\r\n attachedField.ValFieldTypeName = fieldModel.ValFieldTypeName;\r\n attachedField.ValFieldFormatName = fieldModel.ValFieldFormatName;\r\n attachedField.ValFieldSize = fieldModel.ValFieldSize;\r\n attachedField.AllowCustomValue = fieldModel.AllowCustomValue;\r\n attachedField.AllowCreatingRecords = fieldModel.AllowCreatingRecords;\r\n attachedField.IsRequired = fieldModel.IsRequired;\r\n attachedField.IsReadOnly = fieldModel.IsReadOnly;\r\n attachedField.IsSystem = fieldModel.IsSystem;\r\n attachedField.IsVirtual = fieldModel.IsVirtual;\r\n attachedField.ValTableId = fieldModel.ValTableId;\r\n attachedField.ValTableName = fieldModel.ValTableName;\r\n attachedField.HasDefaultValue = fieldModel.HasDefaultValue;\r\n attachedField.FieldTypeName = fieldModel.TypeName;\r\n attachedField.Size = fieldModel.Size;\r\n attachedField.AllowInsert = fieldModel.AllowInsert;\r\n attachedField.ValTableType = fieldModel.ValTableType;\r\n attachedField.DependsOnId = fieldModel.DependsOnId;\r\n attachedField.FilledById = fieldModel.FilledById;\r\n attachedField.PropertyFieldId = fieldModel.PropertyFieldId;\r\n attachedField.DynamicFields = fieldModel.DynamicFields;\r\n attachedField.FontColor = fieldModel.FontColor;\r\n attachedField.FullWidth = fieldModel.FullWidth;\r\n attachedField.HasLinkEditorVisibility = fieldModel.HasLinkEditorVisibility;\r\n attachedField.FontStyles = fieldModel.FontStyles;\r\n attachedField.FilterByField = fieldModel.FilterByField;\r\n attachedField.HasFilter = fieldModel.HasFilter;\r\n\r\n const controlModel = new ControlModel();\r\n\r\n controlModel.Fields.push(attachedField);\r\n controlModel.Id = fieldModel.Id;\r\n controlModel.Name = fieldModel.Name;\r\n controlModel.Label = fieldModel.NameTranslated || fieldModel.Name;\r\n controlModel.LabelPosition = \"Left\";\r\n controlModel.TypeName = FIELD_TYPE_TO_CONTROL[fieldModel.TypeName];\r\n controlModel.IsRequired = fieldModel.IsRequired;\r\n controlModel.IsReadOnly = fieldModel.IsReadOnly;\r\n controlModel.FieldFlag = fieldModel.FieldFlag;\r\n controlModel.ResetDependsOnValue = fieldModel.ResetDependsOnValue;\r\n controlModel.SkipTimeShifting = fieldModel.SkipTimeShifting;\r\n controlModel.UseFieldName = true;\r\n\r\n return controlModel;\r\n }\r\n\r\n ValidateData() {\r\n var result = true;\r\n _.each(this._controls, control => {\r\n var isControlValid = control.IsValid();\r\n if (!isControlValid) {\r\n result = false;\r\n }\r\n });\r\n\r\n if(this._tabTables && !this._tabTables.ValidateData()){\r\n result = false;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n Save() {\r\n if (this.ValidateData()) {\r\n var dataModel = this.DeserializeData();\r\n if (dataModel.FieldValues.length > 0 || dataModel.Grids.length > 0) {\r\n this.Trigger(\"SAVE_DATA\", dataModel);\r\n if (this._closeAfterSave) {\r\n this.Close();\r\n }\r\n } else {\r\n this.Close();\r\n }\r\n }\r\n }\r\n\r\n GetNotifier(): Notifier {\r\n return new Notifier($(this._el));\r\n }\r\n\r\n GetLinkedRecordLabel(linkedRecord: LinkedRecordModel) {\r\n if (!linkedRecord) {\r\n return '';\r\n }\r\n\r\n return `: ${linkedRecord.TranslatedName || linkedRecord.Name}${linkedRecord.Alias ? ` - ${linkedRecord.Alias}` : ''}`;\r\n }\r\n\r\n GetRelationTypeLabel(relationType) {\r\n const typeName = relationType.TypeNameTranslation || relationType.TypeName;\r\n const name = relationType.NameTranslation || relationType.Name;\r\n const reverse = relationType.ReverseTranslation || relationType.Reverse;\r\n\r\n return `${typeName} : ${name} > ${reverse}`;\r\n }\r\n\r\n DeserializeData(): DataModel {\r\n var dataModel = new DataModel();\r\n dataModel.EntityId = this._relatedEntityId;\r\n dataModel.RecordId = this._relatedRecordId;\r\n dataModel.KSeq = this._kSeq;\r\n _.each(this._controls, control => {\r\n let controlType = control.GetType();\r\n\r\n if (SIMPLE_CONTROLS.indexOf(controlType) >= 0) {\r\n if (control.IsModified() || control.GetFieldModel().HasDefaultValue) {\r\n const data = control.Deserialize();\r\n if (data) {\r\n var fieldDataModel = new FieldDataModel();\r\n fieldDataModel.FieldId = control.GetControlId();\r\n fieldDataModel.FieldValue = data;\r\n dataModel.FieldValues.push(fieldDataModel);\r\n }\r\n }\r\n }\r\n });\r\n if (this._selectedRelationTypeId()) {\r\n const selectedRelationTypeField = _.where(this._relationTypes, {\r\n RecordId: +this._selectedRelationTypeId()\r\n })[0];\r\n let unselectedRelationtype = null;\r\n if (!selectedRelationTypeField) unselectedRelationtype = this._relationTypes[0];\r\n const fieldDataModel = new FieldDataModel();\r\n const FieldValueKey = `${this._linkEditorModel.LinkEntity}.${selectedRelationTypeField && selectedRelationTypeField.FieldName || unselectedRelationtype.FieldName}`;\r\n selectedRelationTypeField && this._linkListInstance && this._linkListInstance.UpdateLinkTypesState(this._linkEditorModel.RightLinkedEntityName, this._relatedRecordId, selectedRelationTypeField.TypeName, -1);\r\n fieldDataModel.FieldId = selectedRelationTypeField && selectedRelationTypeField.Id || unselectedRelationtype.Id;\r\n fieldDataModel.FieldValue = [FieldValueKey, selectedRelationTypeField && selectedRelationTypeField.RecordId || 0];\r\n dataModel.FieldValues.push(fieldDataModel);\r\n }\r\n\r\n dataModel.Grids = this._tabTables ? this._tabTables.Serialize() : [];\r\n\r\n return dataModel;\r\n }\r\n}","// Module\nvar code = \"<div id=\\\"wrapper\\\"> <div class=\\\"clearfix\\\"> <b class=\\\"spacerBackground\\\"></b> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"action-bar-wrapper\\\"> <div class=\\\"bar-left\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> </div> </form> </div> <div class=\\\"link-editor-container clearfix\\\"> <!--<legend data-bind=\\\"text: GetLeftLinkedEntityName()\\\"></legend>--> <div class=\\\"clearfix subFormWrapper\\\"> <div class=\\\"box-shadow-wrapper link-editor-nameContainer\\\"> <div class=\\\"link-editor-nameWrapper\\\"> <legend class=\\\"link-editor-name\\\"> <div data-bind=\\\"text: _leftLinkedEntityName + GetLinkedRecordLabel(_linkEditorModel.LeftLinkedRecord)\\\"></div> <i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i> <div data-bind=\\\"text: _rightLinkedEntityName + GetLinkedRecordLabel(_linkEditorModel.RightLinkedRecord)\\\"></div> </legend> </div> </div> <!--ko if: _hasRelations --> <div class=\\\"box-shadow-wrapper relationsDropdown\\\"> <select data-bind=\\\"attr: {value: _selectedRelationTypeId(), disabled: !_relationTypeValuesEnabled()}, event:{ change: SetRelationTypeValue}, css: {disabled: !_relationTypeValuesEnabled()}\\\" class=\\\"relation-types-select\\\"> <option value=\\\"0\\\" data-bind=\\\"attr: {selected: !_defaultDisabled()}, text: _labels.NO_RELATION_TYPE\\\">No relation type </option> <!-- ko foreach: _relationTypes --> <option title=\\\"\\\" data-bind=\\\"text: $parent.GetRelationTypeLabel($data),\\r\\n\\t\\t\\t\\t\\t\\tstyle: {backgroundColor: !IsRecordEnabled || !Enabled ? '#ccc' : ''},\\r\\n\\t\\t\\t\\t\\t\\tattr: {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue: RecordId,\\r\\n\\t\\t\\t\\t\\t\\t\\tselected: (+$parent._selectedRelationTypeId() === +RecordId),\\r\\n\\t\\t\\t\\t\\t\\t\\tdisabled: !IsRecordEnabled || !Enabled\\r\\n\\t\\t\\t\\t\\t\\t}\\\"></option> <!-- /ko --> </select> </div> <!-- /ko --> <div class=\\\"box-shadow-wrapper subFormsWrapper\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped}\\\" class=\\\"clearfix\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> <!-- /ko --> </div> </div> <!-- ko foreach: ReferenceControls --> <!-- ko with: ReferenceConsultScreen --> <!-- ko template: { name: $data.GetReferenceConsultScreenTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!--ko with: _tabTables--> <!-- ko template: { html: $data.GetTemplate.bind($data) } --> <!-- /ko --> <!-- /ko --> </div> </div> </div> \";\n// Exports\nexport default code;","import {GridRowDataModel} from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateDataModel';\r\nimport {UpdateDataModel} from 'Core/Controls/LinkList/Models/UpdateDataModel';\r\n\r\nexport class FieldDataModel {\r\n constructor() {\r\n this.FieldValue = [];\r\n }\r\n\r\n FieldId: number;\r\n FieldValue: Array<string>;\r\n}\r\n\r\nexport class GridDataModel {\r\n Rows: GridRowDataModel[];\r\n LinkListChanges: UpdateDataModel[];\r\n}\r\n\r\nexport class DataModel {\r\n constructor() {\r\n this.FieldValues = [];\r\n this.Grids = [];\r\n }\r\n\r\n FieldValues: Array<FieldDataModel>;\r\n Grids: GridDataModel[];\r\n\r\n EntityId: number;\r\n RecordId: number;\r\n KSeq?: number;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class PropertyTable {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n}\r\n\r\nexport class PropertyMode {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n}\r\n\r\nexport class PropertyFieldConfigModel {\r\n @deserializeAs(PropertyTable)\r\n PropertyTable: PropertyTable;\r\n\r\n @deserializeAs(PropertyMode)\r\n PropertyMode: PropertyMode;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize'\r\nimport { ReferenceModel } from \"Core/ScreenManager/Models/ReferenceModel\"\r\nimport {PropertyFieldConfigModel} from \"./PropertyFieldConfigModel\";\r\n\r\nexport class TranslationValue {\r\n\t@deserialize\r\n\tLanguageId: number;\r\n\r\n\t@deserialize\r\n\tValue: string;\r\n}\r\n\r\nexport class LinkedFieldValueModel {\r\n\tconstructor() {\r\n\t\tthis.IsModified = false;\r\n\t\tthis.Translations = [];\r\n\t\tthis.DynamicFields = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tValue: string;\r\n\r\n\t@deserialize\r\n\tDisplayValue: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tFormatName: string;\r\n\r\n\t@deserialize\r\n\tAllowCustomValue: boolean;\r\n\r\n\t@deserialize\r\n\tAllowCreatingRecords: boolean;\r\n\r\n\t@deserialize\r\n\tIsModified: boolean;\r\n\r\n\t@deserialize\r\n\tIsRequired: boolean;\r\n\r\n\t@deserialize\r\n\tIsReadOnly: boolean;\r\n\r\n\t@deserialize\r\n IsSystem: boolean;\r\n\r\n @deserialize\r\n IsVirtual: boolean;\r\n\r\n\t@deserialize\r\n\tAllowInsert: boolean;\r\n\r\n\t@deserialize\r\n\tValTableType: string;\r\n\r\n\t@deserialize\r\n\tValTableId: number;\r\n\r\n\t@deserialize\r\n\tValTableName: string;\r\n\r\n\t@deserialize\r\n\tValFieldId: number;\r\n\r\n\t@deserialize\r\n\tValFieldTypeName: string;\r\n\r\n\t@deserialize\r\n\tValFieldFormatName: string;\r\n\r\n\t@deserialize\r\n\tValFieldSize: number;\r\n\r\n\t@deserialize\r\n\tPropertyFieldId: number;\r\n\r\n\t@deserializeAs(PropertyFieldConfigModel)\r\n\tPropertyConfig: PropertyFieldConfigModel;\r\n\r\n\t@deserialize\r\n\tFilledById: number;\r\n\r\n\t@deserialize\r\n\tHasDefaultValue: boolean;\r\n\r\n\t@deserialize\r\n\tFieldFlag: number;\r\n\r\n\t@deserialize\r\n\tTranslations: Array<TranslationValue>;\r\n\r\n\t@deserialize\r\n\tNameTranslated: string;\r\n\r\n @deserialize\r\n Size: number;\r\n\r\n @deserialize\r\n\tSort: number;\r\n\r\n @deserialize\r\n DependsOnId: number;\r\n\r\n @deserialize\r\n\tDynamicFields: Array<number>;\r\n\r\n @deserialize\r\n\tResetDependsOnValue: boolean;\r\n\r\n @deserialize\r\n SkipTimeShifting: boolean;\r\n\r\n @deserialize\r\n\tFullWidth: boolean;\r\n\r\n @deserialize\r\n\tHasLinkEditorVisibility: boolean;\r\n\r\n @deserialize\r\n\tFontStyles: Array<{Id: number, Name: string}>;\r\n\r\n @deserialize\r\n FontColor: string;\r\n\r\n @deserialize\r\n Reference: ReferenceModel;\r\n\r\n\t@deserialize\r\n\tFilterByField: number;\r\n\r\n\t@deserialize\r\n\tHasFilter: boolean;\r\n}","import {deserialize} from 'libs/cerialize'\r\n\r\nexport class LinkEditorTabSettingsModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n TableId: number;\r\n\r\n @deserialize\r\n TableName: string;\r\n\r\n @deserialize\r\n TableTypeName: string;\r\n\r\n @deserialize\r\n TargetTableId: number;\r\n\r\n @deserialize\r\n TargetTableName: string;\r\n\r\n @deserialize\r\n LookupFieldId: number;\r\n\r\n @deserialize\r\n LookupFieldName: string;\r\n}","import {deserialize} from 'libs/cerialize'\r\nimport {deserializeAs} from 'libs/cerialize'\r\nimport {LinkedFieldValueModel} from 'Core/Screens/Common/LinkEditor/Models/LinkedFieldValueModel'\r\nimport {LinkEditorTabSettingsModel} from './LinkEditorTabSettingsModel';\r\n\r\nexport class LinkedRecordModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n @deserialize\r\n TypeId: number;\r\n\r\n @deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n LifeStatusId: number;\r\n\r\n @deserialize\r\n LifeStatusName: string;\r\n\r\n @deserialize\r\n Alias: string;\r\n}\r\n\r\nexport class LinkEditorModel {\r\n @deserialize\r\n LinkTableId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n Subject: string;\r\n\r\n @deserialize\r\n LinkEntity: string;\r\n\r\n @deserialize\r\n LinkEntityTranslatedName: string;\r\n\r\n @deserialize\r\n RightLinkedEntityId: number;\r\n\r\n @deserialize\r\n RightLinkedEntityName: string;\r\n\r\n @deserialize\r\n RightLinkedEntityTranslatedName: string;\r\n\r\n @deserialize\r\n LeftLinkedEntityId: number;\r\n\r\n @deserialize\r\n LeftLinkedEntityName: string;\r\n\r\n @deserialize\r\n LeftLinkedEntityTranslatedName: string;\r\n\r\n @deserialize\r\n HasCustomFields: boolean;\r\n\r\n @deserializeAs(LinkedFieldValueModel)\r\n Fields: Array<LinkedFieldValueModel>;\r\n\r\n @deserializeAs(LinkedRecordModel)\r\n LeftLinkedRecord: LinkedRecordModel;\r\n\r\n @deserializeAs(LinkedRecordModel)\r\n RightLinkedRecord: LinkedRecordModel;\r\n\r\n @deserializeAs(LinkEditorTabSettingsModel)\r\n TabSettings: LinkEditorTabSettingsModel[];\r\n}","import * as _ from 'underscore'\r\nimport {GenericDeserialize} from 'libs/cerialize'\r\nimport {URL} from 'Core/Common/Url'\r\nimport {Request, IRequestOptions} from 'Core/Common/Request'\r\nimport {P} from 'Core/Common/Promise'\r\nimport {Deserialize} from 'libs/cerialize'\r\n\r\nimport {LinkEditorModel} from 'Core/Screens/Common/LinkEditor/Models/LinkEditorModel'\r\n\r\nexport interface IGetLinkEditorRequestModel {\r\n\tMainEntityId: number;\r\n\tMainRecordId: number;\r\n\tMainRecordTypeId: number;\r\n\tMainRecordKindId: number;\r\n\tRelatedEntityId: number;\r\n\tRelatedRecordId: number;\r\n\tKseq: number;\r\n\tIsNew: boolean;\r\n\tErrorMessage?: string;\r\n}\r\n\r\nexport interface IGetRelationTypesRequestModel {\r\n\tMainEntityId: number,\r\n\tMainRecordId: number,\r\n\tMainRecordTypeId: number,\r\n\tRelatedEntityId: number,\r\n\tRelatedRecordId: number,\r\n\tRelatedRecordTypeId: number,\r\n\tSequenceId: number;\r\n}\r\n\r\nexport class LinkEditorStore {\r\n\tstatic GetData(params: IGetLinkEditorRequestModel): P.Promise<LinkEditorModel> {\r\n\t\tvar deferredResult = P.defer<LinkEditorModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.LINK_EDITOR.GET_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tif (data.ResultObject !== null) {\r\n\t\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data.ResultObject));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetRelationTypesData(params: IGetRelationTypesRequestModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<LinkEditorModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.LINK_EDITOR.GET_RELATION_TYPES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): LinkEditorModel {\r\n\t\treturn GenericDeserialize<LinkEditorModel>(jsonObject, LinkEditorModel);\r\n\t}\r\n}","export var EVENTS = {\r\n\tREFRESH_GRID: 'REFRESH_GRID',\r\n\tLINK_BOOK_RECORD: 'LINK_BOOK_RECORD'\r\n}","import {deserialize} from 'libs/cerialize'\r\nimport {deserializeAs} from 'libs/cerialize'\r\n\r\nexport class EntityTypeModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n IsRoot: boolean;\r\n\r\n @deserialize\r\n LifeStatusId: number;\r\n\r\n @deserialize\r\n LifeStatusName: string;\r\n}","import {deserialize, serializeAs} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {TranslationModel} from \"./TranslationModel\";\r\n\r\nexport class FieldModel {\r\n\tconstructor() {\r\n\t\tthis.IsEnabled = true;\r\n\t\tthis.Translations = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tFieldId: number;\r\n\r\n\t@deserialize\r\n FieldName: string;\r\n\r\n @deserialize\r\n FieldNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tFieldTypeName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tValTableId: number;\r\n\r\n\t@deserialize\r\n\tValFieldId: number;\r\n\r\n\t@deserialize\r\n\tIsSystem: boolean;\r\n\r\n\tIsEnabled: boolean;\r\n\r\n\tEntityIcon: Icon;\r\n\r\n\tIsPrimaryKey(): boolean {\r\n\t\treturn this.FieldTypeName === 'PKey';\r\n\t};\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tTranslations: Array<TranslationModel>;\r\n\r\n\t@serializeAs('FieldName')\r\n\tFullName: string;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class LanguageModel {\r\n\t@deserialize\r\n\tK_Language: number;\r\n}\r\n\r\nexport class TranslationModel {\r\n\t@deserialize\r\n\tTranslation: string;\r\n\r\n\r\n\t@deserialize\r\n\tLanguage: LanguageModel;\r\n}","import {deserialize} from 'libs/cerialize'\r\nimport {deserializeAs} from 'libs/cerialize'\r\nimport {FieldModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/FieldModel'\r\nimport {EntityTypeModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/EntityTypeModel'\r\n\r\nexport class EntityModel {\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tEntityFullName: string;\r\n\r\n\t@deserialize\r\n\tEntityFullNameTranslation: string;\r\n\r\n\t@deserializeAs(EntityTypeModel)\r\n\tEntityTypes: Array<EntityTypeModel>;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tFontName: string;\r\n\r\n\t@deserialize\r\n\tIconName: string;\r\n\r\n\t@deserialize\r\n\tGraphicalIcon: string;\r\n\t\r\n\t@deserializeAs(FieldModel)\r\n\tFields: Array<FieldModel>;\r\n\r\n\t@deserialize\r\n\tIsView: boolean;\r\n}","import {deserializeAs} from 'libs/cerialize'\r\nimport {EntityModel} from \"./EntityModel\";\r\n\r\nexport class PlannerLevelEntityModel {\r\n\r\n constructor(){\r\n this.SubEntities = [];\r\n }\r\n\r\n @deserializeAs(EntityModel)\r\n Entity: EntityModel;\r\n\r\n @deserializeAs(EntityModel)\r\n SubEntities: Array<EntityModel>;\r\n\r\n}","import {deserialize, deserializeAs, serializeAs} from 'libs/cerialize';\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\n\r\nexport class ImageFieldModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n NameTranslated: string;\r\n\r\n @deserializeAs(TranslationModel)\r\n NameTranslations: Array<TranslationModel>;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize'\r\nimport {ImageFieldModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/ImageFieldModel'\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\n\r\nexport class TableWithImagesModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Type: string;\r\n\r\n @deserializeAs(ImageFieldModel)\r\n ImageFields: Array<ImageFieldModel>;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n NameTranslated: string;\r\n\r\n @deserializeAs(TranslationModel)\r\n NameTranslations: Array<TranslationModel>;\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {EntityModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/EntityModel';\r\nimport {PlannerLevelEntityModel} from \"../Models/PlannerLevelEntityModel\";\r\nimport {TableWithImagesModel} from \"../Models/TableWithImagesModel\";\r\n\r\nexport interface IGetEntitiesRequestModel {\r\n\tEntityId: number;\r\n\tTableTypeId: number;\r\n}\r\n\r\nexport interface IGetSignatureEntitiesRequestModel {\r\n\tSubjectTableId: number;\r\n}\r\n\r\nexport interface IGetImageEntitiesRequestModel {\r\n\tSubjectTableId: number;\r\n}\r\n\r\nexport class EntitiesStore {\r\n\tstatic Get(params: IGetEntitiesRequestModel): P.Promise<Array<EntityModel>> {\r\n\t\tvar deferredResult = P.defer<Array<EntityModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetEntities\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetImageEntities(params: IGetImageEntitiesRequestModel) {\r\n\t\tconst deferredResult = P.defer<Array<TableWithImagesModel>>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/ImageApi/GetImageControlConfig\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.ImageDeserialize(data.Tables));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetSignatureEntities(params: IGetSignatureEntitiesRequestModel): P.Promise<Array<TableWithImagesModel>> {\r\n\r\n\t\tvar deferredResult = P.defer<Array<TableWithImagesModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/SignatureApi/GetSignatureControlConfig\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(this.SignatureDeserialize(data.Tables)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetPlanerLevelEntities(params: IGetEntitiesRequestModel): P.Promise<Array<PlannerLevelEntityModel>> {\r\n\t\tlet deferredResult = P.defer<Array<PlannerLevelEntityModel>>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetPlannerLevelEntities\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(Deserialize(data.ResultObject, PlannerLevelEntityModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetSubEntities(params: IGetEntitiesRequestModel): P.Promise<Array<EntityModel>> {\r\n\t\tvar deferredResult = P.defer<Array<EntityModel>>();\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetSubEntities\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): any {\r\n\t\tvar model = GenericDeserialize<EntityModel>(jsonObject, EntityModel);\r\n\t\treturn model;\r\n\t}\r\n\r\n\tstatic SignatureDeserialize(jsonObject: any): any {\r\n\t\tvar model = GenericDeserialize<TableWithImagesModel>(jsonObject, TableWithImagesModel);\r\n\t\treturn model;\r\n\t}\r\n\r\n\tstatic ImageDeserialize(jsonObject: any): any {\r\n\t\treturn GenericDeserialize<TableWithImagesModel>(jsonObject, TableWithImagesModel);\r\n\t}\r\n}","import {serialize, deserialize, deserializeAs, serializeAs} from 'libs/cerialize';\r\nimport {GridStackWidget} from 'gridstack';\r\nimport {ISettingsModal} from \"Core/Controls/FormDesigner/SettingsModal/SettingsModal\";\r\nimport {IWebSizeValue} from \"Core/GeneralProperties/Managers/WebSizeProperty/WebSizeProperty\";\r\n\r\nexport class Width {\r\n constructor(option: IWebSizeValue) {\r\n this.Value = option.Value;\r\n this.Unit = option.Unit;\r\n }\r\n\r\n @serialize\r\n @deserialize\r\n Value: number;\r\n\r\n @serialize\r\n @deserialize\r\n Unit: {\r\n Name: string;\r\n Value: any\r\n };\r\n}\r\n\r\nexport class DashboardBlock {\r\n constructor(widget: GridStackWidget) {\r\n if (widget) {\r\n this.x = widget.x;\r\n this.y = widget.y;\r\n this.w = widget.w;\r\n this.h = widget.h;\r\n }\r\n }\r\n\r\n @serializeAs('X')\r\n @deserializeAs('X')\r\n x: number;\r\n\r\n @serializeAs('Y')\r\n @deserializeAs('Y')\r\n y: number;\r\n\r\n @serializeAs('W')\r\n @deserializeAs('W')\r\n w: number;\r\n\r\n @serializeAs('H')\r\n @deserializeAs('H')\r\n h: number;\r\n}\r\n\r\nexport class SubFormProperties {\r\n @serializeAs(DashboardBlock)\r\n @deserializeAs(DashboardBlock)\r\n DashboardBlock: DashboardBlock;\r\n}\r\n\r\nexport class FormProperties {\r\n @serialize\r\n @deserialize\r\n Options?: Array<ISettingsModal>;\r\n}","export var EVENTS = {\r\n\tRECORD_SAVED: 'RECORD_SAVED',\r\n\tRECORD_DELETED: 'RECORD_DELETED'\r\n}","import { PasswordActions } from \"Core/Controls/Password/Password\";\r\nimport { FollowUpRecordModel } from \"Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel\";\r\nimport { TagListChanges } from \"Core/Controls/Tag/Models/TagListChanges\";\r\nimport {RecordSpecsModel} from \"Core/ScreenManager/Models/RecordSpecsModel\";\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\n\r\nimport { SecurityEditorModel } from \"Core/Components/SecurityEditor/Models/SecurityEditorModel\";\r\nimport { GridRowDataModel } from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateDataModel';\r\nimport {SpreadsheetSaveDto} from 'Core/Controls/Spreadsheet/Models/Dto/SpreadsheetSaveDto';\r\nimport {TypeSecuritySerializedModel} from \"Core/Controls/TypeSecurity/Models/TypeSecuritySerializedModel\";\r\n\r\nexport class DataModel {\r\n\r\n\tEntityId: number;\r\n\tEntityTypeId: number;\r\n\tKindId: number;\r\n\tRecordId: number;\r\n\tParentRecordId: number;\r\n\tParentRecordTypeId: number;\r\n\tScreenTypeId: number;\r\n\tUseLinking: boolean;\r\n\tFieldValueList: Array<Array<string>>;\r\n\tRecordSpecs: RecordSpecsModel;\r\n\tRecordSettings: SecurityEditorModel;\r\n\tAttachments: Array<any>;\r\n\tRemoveAttachments: Array<any>;\r\n\tDropAttachments: Array<any>;\r\n\tExampleRecordId: number;\r\n\tFillFromExample: boolean;\r\n\tDataMode?: DataModes;\r\n\tLinklistChanges: any;\r\n\tTableSecurityChanges: any;\r\n\tTypeSecurityChanges: TypeSecuritySerializedModel;\r\n\tRecordSecurityChanges: any;\r\n\tRecordSharingChanges: any;\r\n\tUserSecurityChanges: any;\r\n\tUserAllowanceChanges: any;\r\n\tFieldSecurityControlChanges: any;\r\n\tPasswordFieldList: Array<Array<string>>;\r\n\tPasswordAction: PasswordActions;\r\n\tFollowUpRecord: FollowUpRecordModel;\r\n\tTagsChanges: Array<TagListChanges>;\r\n\tSpreadsheets: Array<SpreadsheetSaveDto>;\r\n\tGridsData: Array<Array<GridRowDataModel>>;\r\n\tActionSubjectRecord: ActionSubjectRecordModel;\r\n\tAnnotations: Array<any>;\r\n\tLinkToSource: boolean;\r\n\tAliasSuffix: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.FieldValueList = [];\r\n\t\tthis.PasswordFieldList = [];\r\n\t\tthis.RecordSpecs = new RecordSpecsModel();\r\n\t\tthis.Attachments = [];\r\n\t\tthis.RemoveAttachments = [];\r\n\t\tthis.Annotations = [];\r\n\t\tthis.GridsData = [];\r\n\t\tthis.DropAttachments = [];\r\n\t\tthis.LinklistChanges = {\r\n\t\t\tChangedRelations: [],\r\n\t\t\tChangedSecurity: [],\r\n\t\t\tDeletedRelations: [],\r\n\t\t\tLinkEditorChanges: [],\r\n\t\t\tNewRelations: [],\r\n\t\t\tActionSubjectRecord: null\r\n\t\t};\r\n\t\tthis.Spreadsheets = [];\r\n\t}\r\n}","import * as _ from 'underscore'\r\nimport {GenericDeserialize} from 'libs/cerialize'\r\n\r\nimport {URL} from 'Core/Common/Url'\r\nimport {Request, IRequestOptions} from 'Core/Common/Request'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {P} from 'Core/Common/Promise'\r\nimport {Deserialize} from 'libs/cerialize'\r\nimport {DataModel} from 'Core/Screens/EditScreen/Models/DataModel'\r\nimport OperationResult from 'Core/Results/ResultModels/OperationResult'\r\n\r\nexport class InsertOrUpdateRecordStore {\r\n\tstatic UpdateData(params: DataModel, transactionId: string = null): P.Promise<OperationResult> {\r\n\t\tvar deferredResult = P.defer<OperationResult>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/ScreenFormApi/InsertOrUpdateRecord',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttransactionId: transactionId,\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t}).fail(err => {\r\n\t\t\t\tdeferredResult.reject(err);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): OperationResult {\r\n\t\tvar model = GenericDeserialize<OperationResult>(jsonObject, OperationResult);\r\n\t\treturn model;\r\n\t}\r\n}","export var EVENTS = {\r\n\tMODAL_CLOSE: 'MODAL_CLOSE',\r\n\tDATA_CHANGED: 'DATA_CHANGED'\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {IScreen, IFormParam, IControlParam, IForm} from \"Core/Screens/IScreen\";\r\nimport {ControlFactory} from \"Core/Controls/ControlFactory\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {SubFormModel} from 'Core/Models/Screens/SubFormModel'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {BaseForm} from \"Core/Screens/Forms/Base/BaseForm\";\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {LOCAL_STORAGE} from \"Core/Common/Enums/LocalStorageItems\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nexport class ActionBar extends BaseForm {\r\n\tIcon: string;\r\n\tprivate _activeScreen: any;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(params: IFormParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Icon = params.Screen.GetEntityIcon();\r\n\t\tthis._activeScreen = params.Screen;\r\n\t}\r\n\r\n\tget IsStaticControls(): boolean {\r\n\t\treturn this.Controls().filter(control => control.IsStatic).length >= 1;\r\n\t}\r\n\r\n\tCopyRecordLink() {\r\n\t\tlet url = new URL(window.location.href);\r\n\t\tlet lastDb = Lockr.get(LOCAL_STORAGE.LAST_DB);\r\n\r\n\r\n\t\tlet urlForCopying = `${url.origin}/view?db=${lastDb}&recordId=${this._activeScreen.GetRecordId()}&entityId=${this._activeScreen.GetEntityId()}`;\r\n\r\n\t\tthis._activeScreen.CopyTextToClipboard(urlForCopying, this.Success);\r\n\r\n\t}\r\n\r\n\tSuccess() {\r\n\t\tconst notifier = new Notifier();\r\n\t\tnotifier.Success(NOTIFICATIONS.LINK_HAS_BEEN_COPIED);\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {IScreen, IFormParam, IControlParam, IForm} from \"Core/Screens/IScreen\";\r\nimport {ControlFactory} from \"Core/Controls/ControlFactory\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {SubFormModel} from 'Core/Models/Screens/SubFormModel'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {RenderModes, CONTROL_TYPES} from \"Core/Constant\";\r\nimport {Event} from 'Core/Common/Event';\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\n\r\nexport class BaseForm extends Event implements IForm {\r\n protected _model: SubFormModel;\r\n protected _controls: KnockoutObservableArray<IControl>;\r\n protected _screen: IScreen;\r\n protected _renderMode: RenderModes;\r\n protected _el: HTMLElement;\r\n protected _isWrapped: KnockoutObservable<boolean>;\r\n protected _controlToWrap: IControl;\r\n protected _isExpanded: KnockoutObservable<boolean>;\r\n protected _noSubControls: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IFormParam) {\r\n super();\r\n this._model = params.Model;\r\n this._screen = params.Screen;\r\n this._isWrapped = ko.observable(false);\r\n this._renderMode = params.RenderMode;\r\n this._controls = ko.observableArray([]);\r\n this._renderMode = params.RenderMode;\r\n this._isExpanded = ko.observable(false);\r\n this.InitControls();\r\n\r\n this._controls.subscribe((subControls) => {\r\n _.each(subControls,\r\n (control, index) => {\r\n control.SetSort(index * 10);\r\n });\r\n });\r\n this._noSubControls = ko.observable(!this._controls().length);\r\n }\r\n\r\n GetModel() {\r\n return this._model;\r\n }\r\n\r\n GetScreen(): IScreen {\r\n return this._screen;\r\n }\r\n\r\n private InitControls(): void {\r\n _.each(this._model.Controls, (controlModel: ControlModel) => {\r\n var params: IControlParam = {\r\n Model: controlModel,\r\n Form: this,\r\n RenderMode: this._renderMode\r\n };\r\n var control = ControlFactory.CreateControl(params);\r\n if (control) {\r\n this._controls.push(control);\r\n }\r\n });\r\n }\r\n\r\n Remove() {\r\n this.Trigger('REMOVE_SUB_FORM', {subForm: this});\r\n }\r\n\r\n RemoveControl(parent, control: IControl) {\r\n if (parent instanceof BaseControl) {\r\n const parentControl = parent as BaseControl;\r\n parentControl.RemoveControl(control);\r\n } else {\r\n $(control.GetWrapper())\r\n .fadeOut('slow',\r\n () => {\r\n this._controls.remove(control);\r\n });\r\n\r\n (this.GetScreen() as any).OnControlRemoved(control);\r\n }\r\n }\r\n\r\n get Controls(): KnockoutObservableArray<IControl> {\r\n return this._controls;\r\n }\r\n\r\n AddStaticControl(control: IControl) {\r\n let isFavourite: boolean = control.GetType() === CONTROL_TYPES.ButtonFavorite;\r\n const controlNotExists = !_.any(this._controls(), c => c.GetModel().TypeName === control.GetModel().TypeName);\r\n\r\n if (!isFavourite && controlNotExists) {\r\n this._controls.unshift(control);\r\n return;\r\n }\r\n\r\n }\r\n\r\n AfterRender(el): void {\r\n this._el = el[0];\r\n }\r\n\r\n Wrap(controlToWrap: IControl, value: boolean) {\r\n this._controlToWrap = controlToWrap;\r\n this._isWrapped(value);\r\n }\r\n\r\n GetFormId(): number {\r\n return this._model.Id;\r\n }\r\n\r\n GetFormGuid(): string {\r\n return this._model.Guid;\r\n }\r\n\r\n ValidateExpandSubForm(){\r\n\r\n }\r\n\r\n set IsExpanded(isExpanded: boolean) {\r\n this._isExpanded(isExpanded);\r\n }\r\n} ","import * as ko from \"knockout\";\r\nimport {ControlFactory} from \"Core/Controls/ControlFactory\";\r\nimport {IScreen, IFormParam, IControlParam, IForm} from \"Core/Screens/IScreen\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {SubFormModel} from 'Core/Models/Screens/SubFormModel'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {BaseForm} from \"Core/Screens/Forms/Base/BaseForm\";\r\n\r\nimport 'Core/Screens/Forms/BottomBar/Templates/BottomBar.html'\r\n\r\nexport class BottomBar extends BaseForm {\r\n\r\n\tconstructor(params: IFormParam) {\r\n\t\tsuper(params);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn `Core/Screens/Forms/BottomBar/Templates/BottomBar`;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\nimport {IFormParam} from 'Core/Screens/IScreen'\r\nimport {IControl} from 'Core/Controls/IControl'\r\nimport {RenderModes} from 'Core/Constant'\r\nimport {BaseForm} from \"Core/Screens/Forms/Base/BaseForm\";\r\n\r\nimport ViewTemplate from 'Core/Screens/Forms/SubForm/Templates/View.html'\r\nimport DesignTemplate from 'Core/Screens/Forms/SubForm/Templates/Design.html'\r\n\r\nko.templates['Core/Screens/Forms/SubForm/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Screens/Forms/SubForm/Templates/Design'] = DesignTemplate;\r\n\r\nexport class SubForm extends BaseForm {\r\n private _guid: string;\r\n private _showRemoveButton: boolean;\r\n private _showExpandButton: KnockoutObservable<boolean>;\r\n private _configuringLayout : KnockoutObservable<boolean>;\r\n\r\n constructor(params: IFormParam) {\r\n super(params);\r\n\r\n this._showRemoveButton = params.Screen.IsDashboard && params.RenderMode === RenderModes.Design;\r\n this._showExpandButton = ko.observable(false);\r\n this._configuringLayout = ko.observable(false);\r\n this._isExpanded = ko.observable(false);\r\n\r\n this.AddEvent(\"EXPANDED\");\r\n this.AddEvent(\"COLLAPSED\");\r\n this.AddEvent(\"AFTER_DROP_CONTROL\");\r\n this.AddEvent(\"CONTROL_EDITOR_REQUESTED\");\r\n this.AddEvent(\"REMOVE_SUB_FORM\");\r\n }\r\n\r\n RenderDynamically(targetId: string, context) {\r\n const $target = $(`#${targetId}`);\r\n\r\n const wrapper = document.createElement('div');\r\n wrapper.innerHTML = `\r\n <!-- ko with: _subForm -->\r\n <!-- ko template: {name: GetTemplateName.bind($data)} -->\r\n <!-- /ko -->\r\n <!-- /ko -->\r\n `;\r\n ko.applyBindings(_.create(context, { _subForm: this }), wrapper);\r\n\r\n $target.append(wrapper);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return this._renderMode === RenderModes.Design\r\n ? 'Core/Screens/Forms/SubForm/Templates/Design'\r\n : 'Core/Screens/Forms/SubForm/Templates/View';\r\n }\r\n\r\n get IsNew() {\r\n return !this._model.Id;\r\n }\r\n\r\n get ConfiguringLayout() {\r\n return this._configuringLayout();\r\n }\r\n\r\n set ShowExpandButton(showButton: boolean) {\r\n this._showExpandButton(showButton);\r\n }\r\n\r\n get IsExpanded(): boolean {\r\n return this._isExpanded();\r\n }\r\n\r\n StartLayoutConfiguration() {\r\n this._configuringLayout(true);\r\n }\r\n\r\n ApplyLayout() {\r\n this._configuringLayout(false);\r\n }\r\n\r\n Expand() {\r\n if (this._showExpandButton()) {\r\n this._isExpanded(!this._isExpanded());\r\n if (this._isExpanded()) {\r\n this.Trigger(\"EXPANDED\");\r\n } else {\r\n this.Trigger(\"COLLAPSED\");\r\n }\r\n }\r\n }\r\n\r\n ValidateExpandSubForm() {\r\n if (this._showExpandButton() && !this._isExpanded()) {\r\n this.Trigger(\"EXPANDED\");\r\n this._isExpanded(true);\r\n }\r\n }\r\n\r\n ExpandOnControlClicking() {\r\n if (!this._isExpanded()) {\r\n this.Trigger(\"EXPANDED\");\r\n this._isExpanded(!this._isExpanded());\r\n }\r\n }\r\n\r\n AfterDropControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n this.Trigger('AFTER_DROP_CONTROL', {\r\n item,\r\n sourceIndex,\r\n sourceItems,\r\n sourceContext,\r\n targetIndex,\r\n targetItems,\r\n targetContext\r\n });\r\n }\r\n\r\n ShowControlEditor(control: IControl) {\r\n this.Trigger('CONTROL_EDITOR_REQUESTED', {control});\r\n }\r\n\r\n Remove() {\r\n this.Trigger('REMOVE_SUB_FORM', {subForm: this});\r\n }\r\n}","// Module\nvar code = \"<form data-bind=\\\"css: {'full-size': _showExpandButton}\\\" role=\\\"form\\\"> <div class=\\\"form-body\\\"><!-- ko foreach: Controls --><!-- ko template: {name: $data.GetTemplateName.bind($rawData), afterRender: $data.AfterRender.bind($rawData)} --><!-- /ko --><!--/ko--></div> </form> <!--ko if: _showExpandButton--> <div data-bind=\\\"click: $data.Expand.bind($data), css: {'link-list-toggle-button-reversed': IsExpanded}\\\" class=\\\"link-list-toggle-button\\\"> <svg class=\\\"icon\\\"> <use xlink:href=\\\"#path-runner-icon\\\"></use> </svg> </div> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<form role=\\\"form\\\"> <!--ko if: _showRemoveButton--> <div class=\\\"close-wrapper\\\" data-bind=\\\"hidden: !_configuringLayout(), click: $data.Remove.bind($data), preventBubble: ['click']\\\"> <span class=\\\"close\\\"></span> </div> <!--/ko--> <div data-bind=\\\"hidden: _configuringLayout, dragula: { data: $data.Controls, group: 'ToolBarToDesigner', afterDrop: $data.AfterDropControl.bind($data) }\\\" class=\\\"form-body form-drop-container clearfix microClearfix\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> </div> </form> <!--ko if: _showExpandButton--> <div data-bind=\\\"hidden: _configuringLayout, click: $data.Expand.bind($data), css: {'link-list-toggle-button-reversed': IsExpanded}\\\" class=\\\"link-list-toggle-button\\\"> <svg class=\\\"icon\\\"> <use xlink:href=\\\"#path-runner-icon\\\"></use> </svg> </div> <!--/ko--> \";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {ProfileSelectorItem} from '../Models/ProfileSelectorItem';\r\n\r\nexport class ProfileSelectorStore {\r\n\r\n GetCreatorProfiles(entityId: number) {\r\n const deferred = P.defer<ProfileSelectorItem[]>()\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/SecurityApi/GetCreatorProfiles',\r\n type: 'GET',\r\n dataType: 'json'\r\n },\r\n params: {entityId}\r\n })\r\n .then(creatorProfiles => deferred.resolve(creatorProfiles))\r\n .fail(error => this.GetResponseError(error, 'Error getting creator profiles'));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"form-group\\\"> <label data-bind=\\\"text: _labels.SELECT_SECURITY_PROFILE\\\"></label> <select class=\\\"form-control\\\" data-bind=\\\"options: Profiles, optionsText: 'Name', value: SelectedProfile, optionsCaption: _labels.SELECT_VALUE_LABEL\\\"></select> <!--ko if: Error--> <p data-bind=\\\"text: Error\\\" class=\\\"validation-message\\\"></p> <!--/ko--> </div> <div class=\\\"text-center\\\"> <button class=\\\"btn btn-success\\\" data-bind=\\\"click: OnConfirm\\\"> <i class=\\\"fa fa-check\\\"></i> <!-- ko text: _labels.CONFIRM --><!-- /ko --> </button> <button class=\\\"btn btn-danger\\\" data-bind=\\\"click: OnCancel\\\"> <i class=\\\"fa fa-times\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </button> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport {SecurityProfileStore} from 'Core/Common/Security/SecurityProfile/Stores/SecurityProfileStore';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {ProfileSelectorStore} from './Stores/ProfileSelectorStore';\r\nimport {ProfileSelectorItem} from './Models/ProfileSelectorItem';\r\n\r\nimport Template from './Templates/Template.html';\r\nimport {GlobalManager, GLOBALS} from '../../GlobalManager/GlobalManager';\r\n\r\nko.templates['Core/Screens/ProfileSelectorScreen/Templates/Template'] = Template;\r\n\r\nexport class ProfileSelectorScreen extends Event {\r\n private _originalMainProfileId: number;\r\n\r\n private _modal: Modal;\r\n private _store: ProfileSelectorStore;\r\n\r\n private _labels: LABELS;\r\n\r\n Profiles: KnockoutObservableArray<ProfileSelectorItem>;\r\n SelectedProfile: KnockoutObservable<ProfileSelectorItem>;\r\n Error: KnockoutObservable<string>;\r\n\r\n constructor(private _entityId: number, private _entityName: string) {\r\n super();\r\n\r\n this._store = new ProfileSelectorStore();\r\n this._labels = LABELS;\r\n\r\n this.Profiles = ko.observableArray([]);\r\n this.SelectedProfile = ko.observable(null);\r\n this.Error = ko.observable(null);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/ProfileSelectorScreen/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n ShowIfNeeded() {\r\n\t\tif (!this.HasToBeShownByGlobal() || this.IsCdTable() || this.IsSysTable()) {\r\n this.Trigger('USED_CURRENT_PROFILE');\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n this.LoadCreatorProfiles()\r\n .then(() => this.ResolveCreatorProfiles())\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n OnConfirm() {\r\n if (!this.SelectedProfile()) {\r\n this.Error(LABELS.PLEASE_SELECT_THE_PROFILE);\r\n return;\r\n }\r\n\r\n if (this._originalMainProfileId === this.SelectedProfile().Id) {\r\n this.Trigger('USED_CURRENT_PROFILE');\r\n return;\r\n }\r\n\r\n SecurityProfileStore.SelectMainProfile(this.SelectedProfile().Id)\r\n .then(() => {\r\n PubSub.publish(PUB_SUB_EVENTS.REFRESH_SECURITY_PROFILE, null);\r\n this.Trigger('PROFILE_SELECTED');\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message));\r\n }\r\n\r\n OnCancel() {\r\n this.Trigger('PROFILE_SELECTION_CANCELLED');\r\n }\r\n\r\n Close() {\r\n if (!this._modal) {\r\n return;\r\n }\r\n\r\n this._modal.Close();\r\n this._modal.Destroy();\r\n }\r\n\r\n private LoadCreatorProfiles() {\r\n return this._store.GetCreatorProfiles(this._entityId)\r\n .then(profiles => {\r\n const selectedProfile = profiles.find(profile => profile.Main);\r\n this._originalMainProfileId = selectedProfile && selectedProfile.Id;\r\n this.Profiles(profiles);\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private ResolveCreatorProfiles() {\r\n if (this.Profiles().length === 0) {\r\n this.Trigger('PROFILES_NOT_FOUND');\r\n return;\r\n }\r\n if (this.Profiles().length === 1) {\r\n this.Trigger('USED_CURRENT_PROFILE');\r\n return;\r\n }\r\n\r\n this.RenderSelector();\r\n }\r\n\r\n private RenderSelector() {\r\n this._modal = new Modal({width: 400}, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n private HasToBeShownByGlobal() {\r\n return GlobalManager.Instance.GetGlobal(GLOBALS.SHOW_PROFILE_SELECTOR) === '1';\r\n\t}\r\n\r\n\tprivate IsCdTable() {\r\n\t\treturn this._entityName && this._entityName.startsWith('CD_');\r\n\t}\r\n\r\n\tprivate IsSysTable() {\r\n\t\treturn this._entityName && this._entityName.startsWith('SYS_');\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nexport class LifeStatusViewModel {\r\n\tName: KnockoutObservable<string>;\r\n\tDate: KnockoutObservable<string>;\r\n\tEnabled: KnockoutObservable<boolean>;\r\n\r\n\tModified: boolean;\r\n\r\n\tconstructor() {\r\n\t\tthis.Name = ko.observable(null);\r\n\t\tthis.Date = ko.observable(null);\r\n\t\tthis.Enabled = ko.observable(false);\r\n\t}\r\n}","// Module\nvar code = \"<ul class=\\\"multi-level\\\"> <!-- ko if: _showStatusSelector --> <li> <a data-bind=\\\"click: $data.ShowStatusSelector.bind($data)\\\" class=\\\"lookup-dropdown-item\\\" href=\\\"#\\\"><!-- ko text: $data._labels.STATUS_SELECTOR --><!-- /ko --></a> </li> <!-- /ko --> <!-- ko foreach: _processCardsLifeStatuses --> <li> <!-- ko ifnot: $data.DisabledReason --> <a data-bind=\\\"text: $parent.FormatDisplayValue($data), click: $parent.SelectLifeStatus.bind($parent, $data)\\\" class=\\\"lookup-dropdown-item\\\" href=\\\"#\\\">1</a> <!-- /ko --> <!-- ko if: $data.DisabledReason --> <a class=\\\"lookup-dropdown-item\\\" href=\\\"#\\\"> <!-- ko text: $parent.FormatDisplayValue($data) --><!-- /ko --> <i class=\\\"fa fa-times-circle-o text-red\\\" data-bind=\\\"tooltip: {content: $data.DisabledReason }\\\"></i> </a> <!-- /ko --> </li> <!-- /ko --> </ul>\";\n// Exports\nexport default code;","import { LifeStatusSimpleModel } from 'Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel';\r\nimport * as ko from \"knockout\";\r\n\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {EVENTS as GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {PivotDetailModel} from \"Core/Controls/Grid/Models/PivotDetailModel\";\r\nimport {FONT_NAME} from \"Core/Constant\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nimport Template from 'Core/Components/ProgressBar/ActionDropdown/Templates/ActionDropdown.html';\r\nko.templates['Core/Components/ProgressBar/ActionDropdown/Templates/ActionDropdown'] = Template;\r\n\r\nexport class ActionDropdown extends Event {\r\n private readonly _id: string;\r\n private _dropDown: JBoxDropDown;\r\n private _labels = LABELS;\r\n\r\n constructor(private _processCardsLifeStatuses: Array<LifeStatusSimpleModel>, private _showStatusSelector: boolean){\r\n super();\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this.AddEvent('SHOW_STATUS_SELECTOR');\r\n this.AddEvent(EVENTS.RECORD_SELECTED);\r\n }\r\n\r\n Close(){\r\n if(this._dropDown){\r\n this._dropDown.Close();\r\n }\r\n }\r\n\r\n SelectLifeStatus(status: LifeStatusSimpleModel){\r\n this.Trigger(EVENTS.RECORD_SELECTED, { status: status });\r\n }\r\n\r\n ShowStatusSelector(){\r\n this.Trigger('SHOW_STATUS_SELECTOR');\r\n }\r\n\r\n Show(target: any){\r\n this._dropDown = new JBoxDropDown({\r\n target: target || \".\" + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: 'body',\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: () => this._dropDown.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n blockScroll: true,\r\n addClass: 'lookup-dropdown',\r\n maxWidth: \"calc(100%)\"\r\n },\r\n onOpen: () => {\r\n this._dropDown.SetContent({ content: Template as any });\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n\r\n FormatDisplayValue(status: LifeStatusSimpleModel){\r\n return _.isEmpty(status.TranslatedName) ? status.Name : status.TranslatedName;\r\n }\r\n}","import { GridStore } from 'Core/Controls/Grid/Stores/GridStore';\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\nimport * as ko from 'knockout'\r\n\r\nimport {LifeStatuses} from \"Core/Enums/LifeStatuses\";\r\nimport {RenderModes, CONTROL_TYPES} from \"Core/Constant\";\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\nimport {IProgressBarParams} from \"Core/Components/ProgressBar/IProgressBarParams\";\r\n\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport {LifeStatusInfo} from \"Core/ScreenManager/Models/LifeStatusInfo\";\r\nimport {RecordSpecsModel} from \"Core/ScreenManager/Models/RecordSpecsModel\";\r\nimport {LifeStatusViewModel} from \"Core/Components/ProgressBar/Models/View/LifeStatusViewModel\";\r\nimport {FlowFolderStore} from \"Core/Components/ProgressBar/Stores/FlowFolderStore\";\r\nimport {HelpBook} from 'HelpBook/HelpBook';\r\n\r\nimport ViewTemplate from 'Core/Components/ProgressBar/Templates/View.html';\r\nimport EditTemplate from 'Core/Components/ProgressBar/Templates/Edit.html';\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport { ActionCheckList } from \"../ActionCheckList/ActionCheckList\";\r\nimport { LifeStatusesGeneralModel } from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel\";\r\nimport { FollowUpRecordModel } from \"Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel\";\r\nimport { FollowUpParentRecordModel } from \"Core/Controls/ButtonFollowUp/Models/FollowUpParentRecordModel \";\r\nimport { FollowUpLifeStatuses } from \"Core/Controls/ButtonFollowUp/FollowUpLifeStatuses\";\r\nimport { LifeStatusesModel } from 'Core/Controls/ButtonFollowUp/Models/LifeStatusesModel';\r\nimport { FollowUpOptionModel } from \"Core/Controls/ButtonFollowUp/Models/FollowUpOptionModel\";\r\nimport { BaseScreen } from \"Core/Screens/BaseScreen\";\r\nimport { SubjectActionModel } from \"Core/Controls/ButtonFollowUp/Models/SubjectActionModel\";\r\n\r\n\r\nimport {Notifier} from \"../../Common/Notifier\";\r\nimport {FlowFolderModel} from \"./Models/Response/FlowFolderModel\";\r\nimport {ScreenParamsModel} from \"Core/Controls/ButtonFollowUp/Models/ScreenParamsModel\";\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { ProgressBarInfoModel } from './Models/Response/ProgressBarInfoModel';\r\nimport { LifeStatusSimpleModel } from 'Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel';\r\nimport { ActionDropdown } from './ActionDropdown/ActionDropdown';\r\nimport type { StepsScreen } from 'Core/Screens/StepsScreen/StepsScreen';\r\n\r\ninterface IProgressBarActiveParams {\r\n RenderMode: RenderModes;\r\n ActiveLifeStatus: LifeStatusInfo;\r\n}\r\n\r\nexport class ProgressBar {\r\n private _entityId: number;\r\n\tprivate _recordId: number;\r\n\tprivate _typeId: number;\r\n private _actionSubject: ActionSubjectRecordModel;\r\n private _recordSpecs: RecordSpecsModel;\r\n private _renderMode: RenderModes;\r\n\tprivate _lifeStatus: LifeStatusViewModel;\r\n\tprivate _help: HelpBook;\r\n private _title: KnockoutObservable<string>;\r\n private _tableTypeName: KnockoutObservable<string>;\r\n private _checkList: ActionCheckList;\r\n private _labels = LABELS;\r\n private _flowFolder: boolean;\r\n private _isEditScreen: boolean;\r\n\r\n private _followUpRecord: FollowUpRecordModel;\r\n private _followUpLifeStatuses: FollowUpLifeStatuses;\r\n private _lifeStatuses: LifeStatusesModel;\r\n private _screen: BaseScreen;\r\n private _el: HTMLElement;\r\n private _data: ProgressBarInfoModel;\r\n\r\n constructor(params: IProgressBarParams) {\r\n this._title = ko.observable(null);\r\n this._screen = params.Screen;\r\n const tableTypeName = this._screen.GetTableTypeNameTranslation()\r\n ? this._screen.GetTableTypeNameTranslation()\r\n : this._screen.GetTableTypeName();\r\n\r\n if (tableTypeName && tableTypeName !== '-') {\r\n this._tableTypeName = ko.observable(tableTypeName +', ');\r\n }\r\n\r\n this._recordSpecs = params.RecordSpecs;\r\n\r\n this._entityId = params.EntityId;\r\n\t\tthis._recordId = params.RecordId;\r\n\t\tthis._typeId = params.TypeId;\r\n this._actionSubject = this._screen.GetActionSubjectRecord();\r\n\r\n this._flowFolder = params.Screen.GetTableTypeFlowFolder();\r\n this._isEditScreen = params.Screen.IsEditScreen;\r\n\r\n const activeParams = this.GetActiveParams(params);\r\n\r\n this._renderMode = activeParams.RenderMode;\r\n\r\n this._lifeStatus = this.MapToViewModel(activeParams.ActiveLifeStatus);\r\n this._lifeStatus.Enabled.subscribe(() => this.ModifyLifeStatus());\r\n\r\n this._lifeStatuses = null;\r\n this._followUpLifeStatuses = null;\r\n\r\n\t\tthis._help = HelpBook.Instance;\r\n }\r\n\r\n GetTemplate() {\r\n switch (this._renderMode) {\r\n case RenderModes.View:\r\n return this.GetViewTemplate();\r\n case RenderModes.Edit:\r\n return this.GetEditTemplate();\r\n default:\r\n throw new Error(`Render mode ${RenderModes[this._renderMode]} is not supported`);\r\n }\r\n }\r\n\r\n GetLifeStatus() {\r\n const lifeStatus = new LifeStatusInfo();\r\n\r\n lifeStatus.Name = this._lifeStatus.Enabled() ? LifeStatuses.Enabled.Name : LifeStatuses.Disabled.Name;\r\n lifeStatus.LastStatusDate = new Date(this._lifeStatus.Date());\r\n lifeStatus.Modified = this._lifeStatus.Modified;\r\n\r\n return lifeStatus;\r\n }\r\n\r\n\tRequestCheckList() {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowTypeHelp(this);\r\n\t\t\treturn;\r\n }\r\n\r\n if (this._screen.GetDataModel().RecordSpecs.IsDisabled) {\r\n new Notifier().Warning(this._labels.RECORD_IS_DISABLED);\r\n return;\r\n }\r\n\r\n if (!this._recordId){\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n FlowFolderStore.GetProgressBarInfo({ EntityId: this._entityId, RecordId: this._recordId })\r\n .always(()=>BlockUI.Unblock())\r\n .then(result => {\r\n this._data = result;\r\n this.DoProgressBarProcess();\r\n })\r\n .fail((err) => new Notifier().Failed(err.message));\r\n }\r\n\r\n DoProgressBarProcess(){\r\n let lifeStatuses = _.filter(this._data.NextLifeStatuses.Child.LifeStatuses, (lifeStatus)=>lifeStatus.StepsScreenId != 0);\r\n let showStatusSelector = this._data.NextLifeStatuses.Child.LifeStatuses.length != lifeStatuses.length;\r\n if(lifeStatuses.length > 0){\r\n this.ShowActionDropdown({ lifeStatuses, showStatusSelector });\r\n return;\r\n }\r\n if (this._data.NextLifeStatuses.SubjectAction) {\r\n if (this._screen.IsConsultScreen) {\r\n this.ProcessingStatuses(this._data.NextLifeStatuses, this._data.FlowFolder);\r\n } else {\r\n this.ProcessingCheckList(this._data.NextLifeStatuses);\r\n }\r\n\r\n } else {\r\n new Notifier().Warning(this._labels.ACTIVE_ACTIONS_NOT_FOUND);\r\n }\r\n \r\n }\r\n\r\n ShowStatusSelector(){\r\n this._data.NextLifeStatuses.Child.LifeStatuses = _.filter(this._data.NextLifeStatuses.Child.LifeStatuses, (lifeStatus)=>lifeStatus.StepsScreenId == 0);\r\n\r\n if (this._data.NextLifeStatuses.SubjectAction) {\r\n if (this._screen.IsConsultScreen) {\r\n this.ProcessingStatuses(this._data.NextLifeStatuses, this._data.FlowFolder);\r\n } else {\r\n this.ProcessingCheckList(this._data.NextLifeStatuses);\r\n }\r\n\r\n } else {\r\n new Notifier().Warning(this._labels.ACTIVE_ACTIONS_NOT_FOUND);\r\n }\r\n }\r\n\r\n async ShowStepsScreen(status: LifeStatusSimpleModel){\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetScreenById({ ScreenId: status.StepsScreenId })\r\n .always(()=>BlockUI.Unblock())\r\n .then((screen: StepsScreen)=>{\r\n screen.On('FINISH_PROCESS', this, ()=>this.SwitchToNextStatus(status.Id));\r\n screen.LoadStepControlData({ recordId: this._recordId });\r\n screen.ShowInModal(); \r\n });\r\n }\r\n\r\n SwitchToNextStatus(nextStatusId: number){\r\n GridStore.SwitchToNextStatus({ EntityId: this._entityId, RecordId: this._recordId, NextStatusId: nextStatusId }).then(()=>this._screen.Refresh());\r\n }\r\n\r\n ShowActionDropdown({ lifeStatuses, showStatusSelector }: { lifeStatuses: Array<LifeStatusSimpleModel>, showStatusSelector: boolean }){\r\n let actionDropdown = new ActionDropdown(lifeStatuses, showStatusSelector);\r\n actionDropdown.On('SHOW_STATUS_SELECTOR', this, ()=>this.ShowStatusSelector());\r\n actionDropdown.On('RECORD_SELECTED', this, (evtArgs)=>this.ShowStepsScreen(evtArgs.data.status));\r\n actionDropdown.Show(this._el); \r\n }\r\n\r\n ProcessingCheckList(model: LifeStatusesGeneralModel) {\r\n if (!this._checkList) {\r\n this._checkList = new ActionCheckList({\r\n EntityId: this._entityId,\r\n RecordId: this._recordId,\r\n FollowUpMode: false,\r\n CurrentLifestatus: model.Child.CurrentLifeStatus\r\n });\r\n }\r\n\r\n this._checkList.ProvideData(model.Child && model.Child.CheckLists);\r\n if (this._checkList.HasAnyCheckedStatuses()) {\r\n this._checkList.Show();\r\n } else {\r\n new Notifier().Warning(this._labels.THERE_ARE_NO_NEXT_STATUSES_WITH_CHECK_LIST);\r\n }\r\n }\r\n\r\n ProcessingStatuses(result: LifeStatusesGeneralModel, flowFolderModel?: FlowFolderModel) {\r\n if (result == null || !result.Child) {\r\n return;\r\n }\r\n\r\n if (!this._followUpRecord) {\r\n this._followUpRecord = new FollowUpRecordModel();\r\n }\r\n\r\n if (!this._followUpLifeStatuses){\r\n this._followUpLifeStatuses = new FollowUpLifeStatuses();\r\n }\r\n const screenParams: ScreenParamsModel = { EntityId: this._entityId, RecordId: this._recordId };\r\n\r\n if (result.Child.CurrentLifeStatus === null && result.Child.LifeStatuses.length === 1) {\r\n const firstStatus = result.Child.LifeStatuses[0];\r\n this._followUpRecord.LifeStatusId = firstStatus.Id;\r\n this._followUpRecord.LifeStatusSort = firstStatus.Sort;\r\n this._followUpRecord.LifeStatusName = firstStatus.Name;\r\n this._followUpRecord.LifeStatusNoActionNode = firstStatus.NoActionNode;\r\n this.FireFollowUp(result.SubjectAction);\r\n return;\r\n }\r\n\r\n this._followUpRecord.CurrentLifeStatus = result.Child.CurrentLifeStatus;\r\n\r\n this._lifeStatuses = result.Child;\r\n const showCheckLists = _.any(this._lifeStatuses.CheckLists, checkList => checkList.CheckItems.length > 0)\r\n && (!result.IsManyActions || result.Child.CurrentLifeStatus.MultipleActions);\r\n\r\n if (!result.IsManyActions && showCheckLists) {\r\n this.ShowCheckLists(result, this._flowFolder && !this._isEditScreen, screenParams, flowFolderModel);\r\n return;\r\n }\r\n\r\n let infiniteLoop = result.Parent && result.Child && (result.Parent.ActionSubjectRecord.RecordId === result.Child.ActionSubjectRecord.RecordId);\r\n if(!result.IsManyActions && infiniteLoop && showCheckLists) {\r\n this.ShowCheckLists(result, this._flowFolder && !this._isEditScreen, screenParams, flowFolderModel);\r\n return;\r\n }\r\n\r\n if (result.IsManyActions && !result.Child.CurrentLifeStatus.MultipleActions) {\r\n result.Child.LifeStatuses = [result.Child.CurrentLifeStatus];\r\n this._followUpLifeStatuses.Caption = LABELS.EXIST_ACTIVE_ACTIONS;\r\n } else if (showCheckLists && result.Child.CurrentLifeStatus.MultipleActions) {\r\n this.ShowCheckLists(result, this._flowFolder && !this._isEditScreen, screenParams, flowFolderModel);\r\n return;\r\n }\r\n\r\n const followUpOption = new FollowUpOptionModel();\r\n followUpOption.LifeStatuses = result.Child;\r\n\r\n let followUpParentOption: FollowUpOptionModel;\r\n if (result.Parent) {\r\n followUpParentOption = new FollowUpOptionModel();\r\n followUpParentOption.LifeStatuses = result.Parent;\r\n }\r\n\r\n if (this._lifeStatuses.LifeStatuses.length === 0) {\r\n new Notifier().Warning(NOTIFICATIONS.NEXT_STATUS_NOT_AVAILABLE);\r\n }\r\n\r\n\r\n this._followUpLifeStatuses.Init(followUpOption, followUpParentOption, screenParams);\r\n this._followUpLifeStatuses.InitFlowFolder(this._flowFolder && !this._isEditScreen, this._entityId, flowFolderModel, result);\r\n\r\n this.ShowStandardFollowUp(result);\r\n }\r\n\r\n private ShowCheckLists(result: LifeStatusesGeneralModel, isFlowFolder: boolean, screenParams, flowFolderModel: FlowFolderModel) {\r\n const actionSubject = result.Child.ActionSubjectRecord;\r\n const checkLists = result.Child.CheckLists;\r\n\r\n if (!this._checkList) {\r\n this._checkList = new ActionCheckList({\r\n EntityId: actionSubject.EntityId,\r\n RecordId: actionSubject.RecordId,\r\n FollowUpMode: true,\r\n CurrentLifestatus: result.Child.CurrentLifeStatus\r\n });\r\n this._checkList.On('LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n this._followUpRecord.LifeStatusId = eventArgs.data.LifeStatus.Id || eventArgs.data.LifeStatus.LifeStatusId;\r\n this._followUpRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort || eventArgs.data.LifeStatus.LifeStatusSort;\r\n this._followUpRecord.LifeStatusName = eventArgs.data.LifeStatus.Name || eventArgs.data.LifeStatus.LifeStatusName;\r\n this._followUpRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode || eventArgs.data.LifeStatus.LifeStatusNoActionNode;\r\n this._followUpRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.RetireChildren = eventArgs.data.RetireChildren;\r\n this.FireFollowUp(result.SubjectAction);\r\n });\r\n }\r\n\r\n this._checkList.ProvideData(checkLists);\r\n this._checkList.InitFlowFolder(isFlowFolder, screenParams.EntityId, flowFolderModel, result);\r\n this._checkList.Show();\r\n }\r\n\r\n private ShowStandardFollowUp(result: LifeStatusesGeneralModel) {\r\n this._followUpLifeStatuses.On('LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n this._followUpRecord.LifeStatusId = eventArgs.data.LifeStatus.Id || eventArgs.data.LifeStatus.LifeStatusId;\r\n this._followUpRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort || eventArgs.data.LifeStatus.LifeStatusSort;\r\n this._followUpRecord.LifeStatusName = eventArgs.data.LifeStatus.Name || eventArgs.data.LifeStatus.LifeStatusName;\r\n this._followUpRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode || eventArgs.data.LifeStatus.LifeStatusNoActionNode;\r\n this._followUpRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.RetireChildren = eventArgs.data.RetireChildren;\r\n this.FireFollowUp(result.SubjectAction);\r\n });\r\n\r\n this._followUpLifeStatuses.On('PARENT_LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n const parentRecord = new FollowUpParentRecordModel();\r\n parentRecord.ParentActionSubject = result.Parent.ActionSubjectRecord;\r\n parentRecord.CurrentLifeStatus = result.Parent.CurrentLifeStatus;\r\n parentRecord.LifeStatusId = eventArgs.data.LifeStatus.Id || eventArgs.data.LifeStatus.LifeStatusId;\r\n parentRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort || eventArgs.data.LifeStatus.LifeStatusSort;\r\n parentRecord.LifeStatusName = eventArgs.data.LifeStatus.Name || eventArgs.data.LifeStatus.LifeStatusName;\r\n parentRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode || eventArgs.data.LifeStatus.LifeStatusNoActionNode;\r\n parentRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.FollowUpParentRecord = parentRecord;\r\n this.FireFollowUp(result.SubjectAction);\r\n });\r\n\r\n this._followUpLifeStatuses.On('CHILD_LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n this._followUpRecord.LifeStatusId = eventArgs.data.LifeStatus.Id || eventArgs.data.LifeStatus.LifeStatusId;\r\n this._followUpRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort || eventArgs.data.LifeStatus.LifeStatusSort;\r\n this._followUpRecord.LifeStatusName = eventArgs.data.LifeStatus.Name || eventArgs.data.LifeStatus.LifeStatusName;\r\n this._followUpRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode || eventArgs.data.LifeStatus.LifeStatusNoActionNode;\r\n this._followUpRecord.ConfirmationPassword = eventArgs.data.Password;\r\n });\r\n\r\n this._followUpLifeStatuses.On('DONE',\r\n this,\r\n () => {\r\n this._screen.Trigger('FOLLOWUP_DONE');\r\n });\r\n\r\n this._followUpLifeStatuses.ShowInModal();\r\n }\r\n\r\n CloseActionCheckList() {\r\n if (this._checkList) {\r\n this._checkList.Close();\r\n }\r\n }\r\n\r\n private GetActiveParams(params: IProgressBarParams) {\r\n switch (params.RenderMode) {\r\n case RenderModes.View:\r\n return this.GetViewActiveParams(params.RecordSpecs);\r\n case RenderModes.Edit:\r\n return this.GetEditActiveParams(params.MigratedRequired, params.RecordSpecs);\r\n default:\r\n throw new Error(`Render mode ${RenderModes[this._renderMode]} is not supported`);\r\n }\r\n }\r\n\r\n private GetViewActiveParams(recordSpecs: RecordSpecsModel): IProgressBarActiveParams {\r\n let activeRenderMode = RenderModes.View;\r\n let activeLifeStatus = recordSpecs.LifeStatusInfo;\r\n\r\n return {\r\n RenderMode: activeRenderMode,\r\n ActiveLifeStatus: activeLifeStatus\r\n };\r\n }\r\n\r\n private GetEditActiveParams(migratedRequired: boolean, recordSpecs: RecordSpecsModel) {\r\n let activeRenderMode: RenderModes;\r\n let activeLifeStatus = recordSpecs.LifeStatusInfo;\r\n\r\n if (recordSpecs.IsNewRecord) {\r\n activeRenderMode = RenderModes.View;\r\n\r\n return {\r\n RenderMode: activeRenderMode,\r\n ActiveLifeStatus: activeLifeStatus\r\n };\r\n }\r\n\r\n if (migratedRequired) {\r\n activeRenderMode = RenderModes.View;\r\n this._title(NOTIFICATIONS.TITLE_CONVERTED_TYPE_OF_RECORD);\r\n return {\r\n RenderMode: activeRenderMode,\r\n ActiveLifeStatus: activeLifeStatus\r\n };\r\n }\r\n\r\n const enabledDisabledStatuses = [LifeStatuses.Enabled.Name.toUpperCase(), LifeStatuses.Disabled.Name.toUpperCase()];\r\n\r\n\r\n const validStatus = !!activeLifeStatus.Name\r\n ? _.find<string>(enabledDisabledStatuses, status => status === activeLifeStatus.Name.toUpperCase())\r\n : null;\r\n activeRenderMode = validStatus ? RenderModes.Edit : RenderModes.View;\r\n\r\n return {\r\n RenderMode: activeRenderMode,\r\n ActiveLifeStatus: activeLifeStatus\r\n };\r\n }\r\n\r\n private GetViewTemplate() {\r\n return ViewTemplate;\r\n }\r\n\r\n private GetEditTemplate() {\r\n return EditTemplate;\r\n }\r\n\r\n private FireFollowUp(subjectAction: SubjectActionModel) {\r\n if (subjectAction) {\r\n this._screen.Trigger('FOLLOWUP_FROM_SUBJECT',\r\n { followUpRecord: this._followUpRecord, subjectAction: subjectAction });\r\n }\r\n }\r\n\r\n private MapToViewModel(lifeStatus: LifeStatusInfo) {\r\n const viewModel = new LifeStatusViewModel();\r\n\r\n viewModel.Name(lifeStatus.TranslatedName || lifeStatus.Name);\r\n viewModel.Date(this.FormatDate(lifeStatus.Name && FormatConverter.CorrectTimezone(lifeStatus.LastStatusDate.toString())));\r\n viewModel.Enabled(lifeStatus.Name && lifeStatus.Name.toUpperCase() === LifeStatuses.Enabled.Name.toUpperCase());\r\n\r\n return viewModel;\r\n }\r\n\r\n private ModifyLifeStatus() {\r\n this._lifeStatus.Modified = true;\r\n\r\n const lifeStatusName = this._lifeStatus.Enabled() ? LifeStatuses.Enabled.Name : LifeStatuses.Disabled.Name;\r\n\r\n this._lifeStatus.Name(lifeStatusName);\r\n this._lifeStatus.Date(this.FormatDate(new Date()));\r\n }\r\n\r\n private FormatDate(date: string | Date) {\r\n const momentDate = moment(date);\r\n return date && momentDate.isValid() ? momentDate.format(DATE_FORMATS.FULL_DATETIME.MomentFormat) : 'Date undefined';\r\n }\r\n\r\n AfterRender(elements: HTMLElement[]) {\r\n this._el = _.find(elements, (element) => element.nodeType === 1);\r\n \r\n if (this._flowFolder) {\r\n const flowFolderIcon = elements[2];\r\n\r\n $(flowFolderIcon).droppable({\r\n accept: '.recent-block-list-container__flow-folder-popover, .grid-relative-container__flow-folder-popover',\r\n tolerance: 'touch',\r\n drop: (event, ui) => {\r\n FlowFolderStore.CreateFlowRecord({\r\n EntityId: this._entityId,\r\n RecordId: this._recordId,\r\n ReferenceEntityId: ui.draggable.data('EntityId'),\r\n ReferenceRecordId: ui.draggable.data('RecordId')\r\n })\r\n .then(result => {\r\n if (result.Warnings.length > 0) {\r\n result.Warnings.forEach(warningMessage => {\r\n new Notifier().Warning(warningMessage);\r\n });\r\n } else if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n } else {\r\n new Notifier().Success(NOTIFICATIONS.DATA_SAVED);\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n}","// Module\nvar code = \"<!-- ko if: _flowFolder && !_isEditScreen --> <i class=\\\"fa fa-folder-open-o additional-icon flow-folder-icon\\\" data-bind=\\\"attr: { title: _labels.DRAG_N_DROP_FLOWFOLDER, trigger: 'hover'}\\\"></i> <!-- /ko --> <!-- ko with: _lifeStatus --> <!-- ko if: Name --> <div class=\\\"lifestatus-bar well\\\" data-bind=\\\"attr: { title: $parent._title , trigger: 'hover'}, click: $parent.RequestCheckList.bind($parent), preventBubble: ['click']\\\"> <div> <!-- ko if: $parent._tableTypeName --> <span data-bind=\\\"text: $parent._tableTypeName\\\" class=\\\"bold\\\"></span> <!-- /ko --> <span data-bind=\\\"text:Name\\\" class=\\\"bold\\\"></span>: </div> <div> <span data-bind=\\\"text: Date\\\" class=\\\"progressBarDate\\\"></span> </div> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _lifeStatus --> <div class=\\\"lifestatus-bar lifestatus-bar--edit\\\" data-bind=\\\"click: $parent._help.ShowTypeHelp.bind($parent._help, $parent)\\\"> <div class=\\\"name-wrap\\\"> <!-- ko if: $parent._tableTypeName --> <span data-bind=\\\"text: $parent._tableTypeName\\\" class=\\\"bold\\\"></span> <!-- /ko --> <label class=\\\"custom-toggle_container mode-check small-mode\\\"> <span class=\\\"toggle-name bold\\\">Enabled</span> <span class=\\\"custom-toggle_wrapper transition\\\"> <input type=\\\"checkbox\\\" class=\\\"toggle-checkbox\\\" data-bind=\\\"checked: Enabled\\\"> <i class=\\\"fa fa-toggle-on\\\" data-toggle-name=\\\"✓\\\"></i> <i class=\\\"fa fa-toggle-off\\\" data-toggle-name=\\\"X\\\"></i> </span> </label> </div> <span data-bind=\\\"text: Date\\\" class=\\\"progressBarDate\\\"></span> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import {serialize, serializeAs} from 'libs/cerialize';\r\n\r\nexport class FollowUpActionSubjectModel {\r\n\tRecordId: number;\r\n LifestatusId: number;\r\n ConfirmationPassword: string;\r\n}\r\n\r\nexport class FollowUpRecordRequestModel {\r\n\tRecordId: number;\r\n EntityId: number;\r\n RetireChildren: boolean;\r\n ActionSubject: FollowUpActionSubjectModel;\r\n ParentActionSubject: FollowUpActionSubjectModel;\r\n}","\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {ScreenDataModel} from \"Core/ScreenManager/Models/ScreenDataModel\";\r\nimport { FollowUpRecordRequestModel } from \"Core/Screens/ConsultScreen/Models/FollowUpRecordRequestModel\";\r\nimport { FollowUpRecordResponseModel } from \"Core/Screens/ConsultScreen/Models/FollowUpRecordResponseModel\";\r\nimport { UpdateRecordLifestatusRequestModel } from \"Core/Screens/ConsultScreen/Models/UpdateRecordLifestatusRequestModel\";\r\nimport { UpdateRecordLifestatusResponseModel } from \"Core/Screens/ConsultScreen/Models/UpdateRecordLifestatusResponseModel\";\r\n\r\nexport interface IGetConsultScreenDataRequestModel {\r\n\tEntityId: number;\r\n\tScreenId: number;\r\n\tRecordId: number;\r\n};\r\n\r\nexport class ScreenDataStore {\r\n\tstatic GetData(params: IGetConsultScreenDataRequestModel): P.Promise<ScreenDataModel> {\r\n\t\tvar deferredResult = P.defer<ScreenDataModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ScreenFormApi/GetScreenData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data.ResultObject));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n }\r\n\r\n static FollowUp(params: FollowUpRecordRequestModel): P.Promise<FollowUpRecordResponseModel> {\r\n var deferredResult = P.defer<FollowUpRecordResponseModel>();\r\n \r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/FollowUpApi/FollowUpRecord',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n\r\n Request.Send(requestParams)\r\n .then(result => deferredResult.resolve(result))\r\n .fail(error => deferredResult.reject(this.GetResponseError(error, 'Error followUp record')));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateRecordLifestatus(params: UpdateRecordLifestatusRequestModel): P.Promise<UpdateRecordLifestatusResponseModel> {\r\n var deferredResult = P.defer<FollowUpRecordResponseModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/RecordsApi/UpdateRecordLifestatus',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n\r\n Request.Send(requestParams)\r\n .then(result => deferredResult.resolve(result))\r\n .fail(error => deferredResult.reject(this.GetResponseError(error, 'Error followUp record')));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\tstatic Deserialize(jsonObject: any): ScreenDataModel {\r\n\t\tvar model = GenericDeserialize<ScreenDataModel>(jsonObject, ScreenDataModel);\r\n\t\treturn model;\r\n }\r\n\r\n static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return { message: JSON.parse(err.message).Message };\r\n }\r\n if (err.status === 500) {\r\n return { message: JSON.parse(err.message).ExceptionMessage };\r\n }\r\n\r\n return { message: generalError };\r\n }\r\n}\r\n","import {serialize, serializeAs} from 'libs/cerialize';\r\nexport class UpdateRecordLifestatusRequestModel {\r\n EntityId: number;\r\n\tRecordId: number;\r\n LifestatusId: number;\r\n}","import * as $ from \"jquery\";\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {EventArgs} from \"Core/Common/Event\";\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {Search} from 'Core/Controls/Search/Search';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {\r\n CONTROL_TYPES,\r\n LIFE_STATUS_GROUPS,\r\n RenderModes,\r\n CARD_SCREEN_PROPERTY_TYPE,\r\n SCREEN_PROPERTY_TYPE\r\n} from 'Core/Constant';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {RecordStore} from 'Core/Screens/Stores/RecordStore';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {\r\n\tDeletionModeDialog,\r\n\tEVENTS as DELETION_MODE_DIALOG_EVENTS\r\n} from 'Core/Components/Dialogs/DeletionModeDialog/DeletionModeDialog';\r\nimport {DeletionModeModel} from \"Core/Screens/Models/DeletionModeModel\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {PathRunner} from 'Core/Components/PathRunner/PathRunner';\r\nimport {PathRunnerUnit} from 'Core/Components/PathRunner/PathRunnerUnit';\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {RecordSecurityStore} from 'Core/Controls/RecordSecurity/Stores/RecordSecurityStore';\r\nimport {EVENTS as CONSULT_SCREEN_EVENTS} from 'Core/Screens/ConsultScreen/Events';\r\nimport {EVENTS as DROP_EVENTS} from 'Core/Controls/Drop/Events';\r\n\r\nimport {ScreenDataModel} from 'Core/ScreenManager/Models/ScreenDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel'\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel'\r\nimport {DataModes} from 'Core/Enums/DataModes';\r\nimport {ProgressBar} from 'Core/Components/ProgressBar/ProgressBar';\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport { ButtonFollowUp } from 'Core/Controls/ButtonFollowUp/ButtonFollowUp';\r\nimport { FollowUpRecordModel } from 'Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel';\r\nimport { FollowUpRecordRequestModel, FollowUpActionSubjectModel } from \"Core/Screens/ConsultScreen/Models/FollowUpRecordRequestModel\";\r\nimport { ScreenDataStore } from \"Core/Screens/ConsultScreen/Stores/ScreenDataStore\";\r\nimport { FollowupModes } from 'Core/Constants/FollowupModes';\r\nimport { ProfileSelectorScreen } from '../ProfileSelectorScreen/ProfileSelectorScreen';\r\nimport { SubjectActionModel } from \"Core/Controls/ButtonFollowUp/Models/SubjectActionModel\";\r\nimport { UpdateRecordLifestatusRequestModel} from \"Core/Screens/ConsultScreen/Models/UpdateRecordLifestatusRequestModel\";\r\nimport { UpdateRecordLifestatusResponseModel } from \"Core/Screens/ConsultScreen/Models/UpdateRecordLifestatusResponseModel\";\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\n\r\nimport {ButtonEdit} from \"Core/Controls/ButtonEdit/ButtonEdit\";\r\nimport {ButtonAdd} from \"Core/Controls/ButtonAdd/ButtonAdd\";\r\nimport {ButtonDelete} from \"Core/Controls/ButtonDelete/ButtonDelete\";\r\nimport {ButtonListScreen} from \"Core/Controls/ButtonListScreen/ButtonListScreen\";\r\nimport {ButtonSpecialScreen} from \"Core/Controls/ButtonSpecialScreen/ButtonSpecialScreen\";\r\nimport {History} from \"Core/Controls/History/History\";\r\nimport {ButtonDashboardScreen} from \"Core/Controls/ButtonDashboardScreen/ButtonDashboardScreen\";\r\nimport {IScreen} from \"Core/Screens/IScreen\";\r\nimport {Timer} from \"Core/Controls/Timer/Timer\";\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList';\r\n\r\n// Templates\r\nimport ConsultScreenTemplate\r\n from 'Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ConsultScreen.html';\r\nimport ReferenceConsultScreenTemplate\r\n from 'Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ReferenceConsultScreen.html';\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ConsultScreen'] = ConsultScreenTemplate;\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ReferenceConsultScreen'] = ReferenceConsultScreenTemplate;\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\nexport class ConsultScreen extends BaseScreen {\r\n private _Search: IControl;\r\n private _favouritesButton: IControl;\r\n private _pathRunner: KnockoutObservable<PathRunnerUnit>;\r\n private _progressBar: ProgressBar;\r\n private _sourceSearchTerm: KnockoutObservable<string>;\r\n private _statusDescription: string;\r\n private _isHamburgerActive: KnockoutObservable<boolean>;\r\n private _areWidthsEqual: KnockoutObservable<boolean>;\r\n private _hideButtonCaption: KnockoutObservable<boolean>;\r\n private _actionBarButtonControls: IControl[]\r\n\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel, RenderModes.View);\r\n this._renderMode = RenderModes.View;\r\n this._pathRunner = ko.observable(null);\r\n\r\n if (!screenModel.IsNested && screenModel.Data && screenModel.IsEnablePathRunner) {\r\n this._pathRunner(PathRunner.Instance.GetUnit(this.GetEntityId(), screenModel.IsSpecialScreenExist));\r\n }\r\n\r\n this._progressBar = null;\r\n this._sourceSearchTerm = ko.observable('');\r\n this._isHamburgerActive = ko.observable(false);\r\n this._areWidthsEqual = ko.observable(false);\r\n this._hideButtonCaption = ko.observable(false);\r\n\r\n this.Init();\r\n this.SetData(screenModel.Data);\r\n this._actionBarButtonControls = [];\r\n if (this.ActionBar) {\r\n this.InitProgressBar(screenModel.Data);\r\n\r\n this._actionBarButtonControls = _.filter(this.ActionBar.Controls(), (control: IControl) =>\r\n control instanceof ButtonAdd ||\r\n control instanceof ButtonEdit ||\r\n control instanceof ButtonDelete ||\r\n control instanceof ButtonListScreen ||\r\n control instanceof ButtonSpecialScreen ||\r\n control instanceof History ||\r\n control instanceof ButtonDashboardScreen\r\n )\r\n\r\n }\r\n this.ApplyEvents();\r\n }\r\n\r\n IsSubjectScreen() {\r\n return true;\r\n }\r\n\r\n SetData(dataModel: ScreenDataModel) {\r\n if (!dataModel) {\r\n return;\r\n }\r\n\r\n if (!dataModel.Rights.IsRecordSecurityOk) {\r\n new Notifier().Warning(`Record security is not set for ${this.GetEntityName()} table`);\r\n return;\r\n }\r\n\r\n super.SetData(dataModel);\r\n }\r\n\r\n private Init() {\r\n this.On('SEARCH_RECORD', this, (eventArgs: any) => {\r\n this.SearchRecord();\r\n });\r\n this.On('EDIT_RECORD', this, (eventArgs: any) => {\r\n this.EditRecord();\r\n });\r\n this.On('DELETE_RECORD', this, (eventArgs: any) => {\r\n this.DeleteRecord();\r\n });\r\n this.On('ADD_RECORD', this, (eventArgs: any) => {\r\n this.CreateRecord();\r\n });\r\n\r\n this.On('SECURITY_RESET', this, (eventArgs: any) => this.SecurityReset());\r\n\r\n this.On('COPY_RECORD', this, (eventArgs: any) => this.OnCopy(DataModes.Copy, eventArgs.data.linkToSource));\r\n this.On('COPY_RECORD_WITH_RELATIONS', this, (eventArgs: any) => this.OnCopy(DataModes.CopyWithRelations, eventArgs.data.linkToSource));\r\n this.On('COPY_TO_TYPE', this, (eventArgs: any) => this.OnCopy(DataModes.CopyToType, eventArgs.data.linkToSource, eventArgs.data.copyToType, eventArgs.data.aliasSuffix));\r\n\r\n this.On('FOLLOWUP', this, (eventArgs: any) => {\r\n this.FollowUpFromConsultScreen();\r\n });\r\n\r\n this.On('FOLLOWUP_FROM_SUBJECT', this, (eventArgs: any) => {\r\n this.FollowUpFromSubject(eventArgs.data.followUpRecord, eventArgs.data.subjectAction);\r\n });\r\n\r\n this.On('MODIFY_LIFESTATUS', this, (eventArgs: any) => {\r\n this.ModifyLifestatus(eventArgs.data.followUpRecord);\r\n });\r\n }\r\n\r\n FollowUpFromConsultScreen() {\r\n let followUpControl = this.GetControlByType(CONTROL_TYPES.ButtonFollowUp) as ButtonFollowUp;\r\n\r\n let requestModel = new FollowUpRecordRequestModel();\r\n requestModel.EntityId = this.GetEntityId();\r\n requestModel.RecordId = this.GetRecordId();\r\n\r\n const followUpRecordModel = followUpControl.GetRecord();\r\n if (followUpRecordModel) {\r\n let actionSubject = new FollowUpActionSubjectModel();\r\n actionSubject.LifestatusId = followUpControl.GetRecord().LifeStatusId;\r\n actionSubject.ConfirmationPassword = followUpControl.GetRecord().ConfirmationPassword;\r\n\r\n requestModel.ActionSubject = actionSubject;\r\n requestModel.RetireChildren = followUpControl.GetRecord().RetireChildren;\r\n }\r\n\r\n BlockUI.Block();\r\n ScreenDataStore.FollowUp(requestModel)\r\n .always(()=>BlockUI.Unblock())\r\n .then((result) => {\r\n if (followUpRecordModel &&\r\n followUpRecordModel.CurrentLifeStatus.FollowupModeName === FollowupModes.DIRECT_STATUS_UPDATE) {\r\n const recordId = result.RecordId ? result.RecordId : this.GetRecordId();\r\n this.LoadPathRunnerData(recordId);\r\n if (this.IsInModal()) {\r\n this.Close();\r\n } else {\r\n this.LoadData(recordId, this._model.TableTypeId);\r\n }\r\n\r\n }else if (followUpRecordModel &&\r\n followUpRecordModel.LifeStatusSort !== LIFE_STATUS_GROUPS.RETIRED &&\r\n followUpRecordModel.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW) {\r\n if (followUpRecordModel.LifeStatusNoActionNode) {\r\n this.LoadData(this.GetRecordId(), this._model.TableTypeId);\r\n } else {\r\n this.NewRecord(this._model.TableTypeId,\r\n this._model.KindId,\r\n this.GetRecordId(),\r\n null,\r\n DataModes.FollowUp,\r\n followUpRecordModel.LifeStatusId);\r\n }\r\n }\r\n })\r\n .fail((error) => new Notifier().Failed(error.message));\r\n }\r\n\r\n FollowUpFromSubject(followUpRecord: FollowUpRecordModel, subjectAction: SubjectActionModel) {\r\n if (!followUpRecord.CurrentLifeStatus \r\n ||!followUpRecord.CurrentLifeStatus.FollowupModeName \r\n || followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT\r\n || followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT_AND_NEW) {\r\n this.ShowSubjectActionEditScreen(subjectAction, followUpRecord);\r\n } else {\r\n let requestModel = new FollowUpRecordRequestModel();\r\n requestModel.EntityId = subjectAction.EntityId;\r\n requestModel.RecordId = subjectAction.Id;\r\n requestModel.RetireChildren = followUpRecord.RetireChildren;\r\n\r\n let actionSubject = new FollowUpActionSubjectModel();\r\n actionSubject.LifestatusId = followUpRecord.LifeStatusId;\r\n actionSubject.ConfirmationPassword = followUpRecord.ConfirmationPassword;\r\n requestModel.ActionSubject = actionSubject;\r\n\r\n if (followUpRecord.FollowUpParentRecord) {\r\n let parentActionSubject = new FollowUpActionSubjectModel();\r\n parentActionSubject.RecordId = followUpRecord.FollowUpParentRecord.ParentActionSubject.RecordId;\r\n parentActionSubject.LifestatusId = followUpRecord.FollowUpParentRecord.LifeStatusId;\r\n parentActionSubject.ConfirmationPassword = followUpRecord.FollowUpParentRecord.ConfirmationPassword;\r\n requestModel.ParentActionSubject = parentActionSubject;\r\n }\r\n\r\n BlockUI.Block();\r\n ScreenDataStore.FollowUp(requestModel)\r\n .always(()=>BlockUI.Unblock())\r\n .then((result) => {\r\n if (followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.DIRECT_STATUS_UPDATE) {\r\n this.LoadData(this.GetRecordId(), this.GetTypeId());\r\n } else if (followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW) {\r\n if (followUpRecord.LifeStatusNoActionNode || followUpRecord.LifeStatusSort === LIFE_STATUS_GROUPS.RETIRED) {\r\n this.LoadData(this.GetRecordId(), this._model.TableTypeId);\r\n } else {\r\n this.NewSubjectActionRecord(subjectAction.EntityId,\r\n subjectAction.TypeId,\r\n subjectAction.KindId,\r\n subjectAction.Id,\r\n DataModes.FollowUp,\r\n followUpRecord.LifeStatusId);\r\n }\r\n }\r\n })\r\n .fail((error) => new Notifier().Failed(error.message));\r\n }\r\n }\r\n\r\n ModifyLifestatus(followUpRecord: FollowUpRecordModel) {\r\n let requestModel = new UpdateRecordLifestatusRequestModel();\r\n requestModel.EntityId = this.GetEntityId();\r\n requestModel.RecordId = this.GetRecordId();\r\n requestModel.LifestatusId = followUpRecord.LifeStatusId;\r\n\r\n ScreenDataStore.UpdateRecordLifestatus(requestModel)\r\n .then((result) => {\r\n this.LoadData(this.GetRecordId(), this.GetTypeId());\r\n })\r\n .fail((error) => new Notifier().Failed(error.message));\r\n }\r\n\r\n private OnCopy(dataMode: DataModes, linkToSource: boolean, copyToType: number = 0, aliasSuffix: string = '') {\r\n const tableTypeId = copyToType || this.GetTableTypeId();\r\n this.IsTypeAvailable(tableTypeId, this.GetTableTypeId(), this.GetEntityId())\r\n .then(() => this.NewRecord(tableTypeId, this.GetKindId(), this.GetRecordId(), null, dataMode, null, linkToSource, aliasSuffix));\r\n }\r\n\r\n private InitProgressBar(data: ScreenDataModel) {\r\n if (data && data.RecordSpecs && data.RecordSpecs.LifeStatusInfo) {\r\n this._progressBar = new ProgressBar({\r\n EntityId: this.GetEntityId(),\r\n RecordId: this.GetRecordId(),\r\n TypeId: this.GetTableTypeId(),\r\n Screen: this,\r\n RenderMode: this._renderMode,\r\n RecordSpecs: data.RecordSpecs\r\n });\r\n\r\n this._statusDescription = data.RecordSpecs.LifeStatusInfo.MemoTranslation || data.RecordSpecs.LifeStatusInfo.Memo;\r\n }\r\n }\r\n\r\n private ApplyEvents() {\r\n _.each(this._controls, control => {\r\n if (control.GetType() === CONTROL_TYPES.Drop) {\r\n control.On(DROP_EVENTS.DOCUMENT_UPLOADED, this, (eventArgs) =>\r\n this.Trigger(CONSULT_SCREEN_EVENTS.REFRESH_GRID, {EntityId: eventArgs.data.EntityId}));\r\n }\r\n });\r\n }\r\n\r\n private ReleaseLockOnWindowClose = () => {\r\n LockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n window.removeEventListener('beforeunload', this.ReleaseLockOnWindowClose);\r\n };\r\n\r\n private HandleOnWindowClose() {\r\n window.addEventListener('beforeunload', this.ReleaseLockOnWindowClose);\r\n }\r\n\r\n private RemoveOnWindowCloseHandler() {\r\n window.removeEventListener('beforeunload', this.ReleaseLockOnWindowClose);\r\n }\r\n\r\n SecurityReset() {\r\n RecordSecurityStore.ResetSecurity(this.GetRecordId())\r\n .then(() => {\r\n new Notifier().Success(NOTIFICATIONS.SECURITY_RESET_DONE);\r\n PubSub.publish(PUB_SUB_EVENTS.RELOAD_SCREEN, null);\r\n PubSub.publish(PUB_SUB_EVENTS.REFRESH_MAIN_MENU, null);\r\n })\r\n .fail((error) => new Notifier().Failed(error.message));\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ConsultScreen';\r\n }\r\n\r\n GetReferenceConsultScreenTemplate() {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ReferenceConsultScreen';\r\n }\r\n\r\n SearchRecord(): void {\r\n const SearchControl = this.GetTextSearchTermControl() as Search;\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n const conditionToggler = SearchControl ? SearchControl.HasConditions() : false;\r\n const searchScreen = new SearchScreen({\r\n EntityId: this.GetEntityId(),\r\n SearchTerm: searchTerm,\r\n ControlId: SearchControl != null ? SearchControl.GetControlId() : 0,\r\n ConditionToggler: conditionToggler\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs) => {\r\n this._sourceSearchTerm(eventArgs.data.SearchTerm);\r\n var recordId = eventArgs.data.RecordId;\r\n var typeId = eventArgs.data.TypeId;\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), recordId, typeId);\r\n this.LoadData(recordId, typeId);\r\n });\r\n\r\n\r\n searchScreen.On('ALT_ENTITY_RECORD_SELECTED', this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n data.IsOpenInModal = this.IsInModal();\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.On('NEW_RECORD', this, (eventArgs) => {\r\n const showTypeSelector = (allowChildrenTypes: boolean) => {\r\n const parentTypeId = allowChildrenTypes ? this.GetTableTypeId() : 0;\r\n const typeScreen = new TypeScreen(this.GetEntityId(), parentTypeId, true);\r\n\r\n typeScreen\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND))\r\n .On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n searchScreen.Cancel();\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchScreen.SearchTerm());\r\n });\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n if (this.IsInModal()) {\r\n showTypeSelector(true);\r\n return;\r\n }\r\n\r\n const profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n searchScreen.Cancel();\r\n showTypeSelector(false);\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector(true);\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n LoadData(recordId: number, tableTypeId: number, closeScreen: boolean = false) {\r\n if (closeScreen) {\r\n this.Close();\r\n }\r\n\r\n return this.LoadScreenFor(tableTypeId, recordId);\r\n }\r\n\r\n Refresh() {\r\n this.LoadPathRunnerData(this.GetRecordId());\r\n if(this.IsReferenceScreen){\r\n this.Trigger('REFRESH_REFERENCE_SCREEN');\r\n }else{\r\n this.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n } \r\n }\r\n\r\n ProhibitionAutoStopTimerForCurrentScreen(currentScreen: IScreen, newScreen: IScreen): void {\r\n if (currentScreen && (newScreen.GetRecordId() === currentScreen.GetRecordId()) ) {\r\n\r\n let timerControl: IControl = currentScreen.GetControl('Timer');\r\n if (timerControl instanceof Timer) {\r\n if (timerControl.TimerAutostart && timerControl.HasTimerStarted()) {\r\n currentScreen.AllowTimerAutoStop = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n LoadScreenFor(tableTypeId: number, recordId: number): Promise<any> {\r\n\r\n BlockUI.Block();\r\n return new Promise(async (resolve, reject) => {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n \r\n screenManager.GetScreenByScreenType(this.GetEntityId(), ScreenTypes.ConsultScreen, recordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(async screen => {\r\n if(screen.ScreenDoesNotExistError){\r\n Notifier.Failed(screen.ScreenDoesNotExistErrorMessage);\r\n return;\r\n }\r\n this.Close();\r\n screen.SetIsReady(true);\r\n\r\n this.ProhibitionAutoStopTimerForCurrentScreen(this, screen);\r\n\r\n const menuManager = (await import (\"MenuManager/MenuManager\")).MenuManager;\r\n menuManager.Instance.GoToScreen(screen, this.IsInModal());\r\n menuManager.Instance.SelectedScreen(screen, this.IsInModal());\r\n var baseScreen = screen as BaseScreen;\r\n\r\n var textSearchTerm = baseScreen.GetControl<Search>(CONTROL_TYPES.Search);\r\n if (textSearchTerm) {\r\n textSearchTerm.SetSearchTerm(this._sourceSearchTerm());\r\n }\r\n\r\n if (screen.GetType() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n this.LoadPathRunnerData(screen.GetRecordId()).always(() => resolve(null))\r\n } else {\r\n resolve(null);\r\n }\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.CHANGE_SCREEN, screen);\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n });\r\n }\r\n\r\n GetTextSearchTermControl(): IControl {\r\n return _.first(_.filter(this.GetAllControls(), (control: IControl) => control.GetType() === CONTROL_TYPES.Search));\r\n }\r\n\r\n DeleteRecord(): void {\r\n const notifier = new Notifier($(this._el));\r\n\r\n if (!this.GetRecordId()) {\r\n notifier.Warning(NOTIFICATIONS.PLEASE_SELECT_ANY_RECORD);\r\n return;\r\n }\r\n\r\n this.HandleOnWindowClose();\r\n BlockUI.Block();\r\n\r\n LockManager.Instance.TryLock(this.GetEntityId(), this.GetRecordId())\r\n .then(() => {\r\n\t\t\t\tif (!this.IsEntitySysUsersOrCd()) {\r\n\t\t\t\t\tRecordStore.GetDeletionMode({ EntityId: this.GetEntityId(), RecordId: this.GetRecordId() })\r\n\t\t\t\t\t\t.always(() => {\r\n\t\t\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\t\t\t\tnotifier.Failed(result.ErrorMessage || NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n\t\t\t\t\t\t\t\tLockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n\t\t\t\t\t\t\t\tthis.RemoveOnWindowCloseHandler();\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\tconst deletionMode = result.ResultObject;\r\n\r\n\t\t\t\t\t\t\tif (deletionMode.OnDelete || deletionMode.OnDelete === 0) {\r\n\t\t\t\t\t\t\t\tthis.ShowDeletionModeDialog(deletionMode);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.ShowConfirmationDialog();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.ShowConfirmationDialog();\r\n\t\t\t\t}\r\n })\r\n .fail(() => this.RemoveOnWindowCloseHandler())\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private ShowDeletionModeDialog(deletionModeModel: DeletionModeModel) {\r\n\t const deletionModeDialog = new DeletionModeDialog({\r\n\t\t DeletionMode: deletionModeModel.OnDelete,\r\n\t\t HasCustomLifeStatus: deletionModeModel.HasCustomLifeStatus\r\n\t });\r\n\r\n\t deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DELETE_SELECTED, this, () => {\r\n\t\t this.UseDeleteDeletionMode();\r\n\t });\r\n\r\n\t deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DISABLE_SELECTED, this, () => {\r\n\t\t this.UseDisableDeletionMode();\r\n\t });\r\n\r\n\t deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n\t\t LockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n\t\t this.RemoveOnWindowCloseHandler();\r\n\t });\r\n\r\n\t deletionModeDialog.Show();\r\n }\r\n\r\n\tprivate ShowConfirmationDialog() {\r\n\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: this.DeleteRecordConfirmation,\r\n\t\t\tType: ConfirmationTypes.Question\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\tthis.UseDeleteDeletionMode();\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n\t\t\tLockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n\t\t\tthis.RemoveOnWindowCloseHandler();\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n\r\n\tprivate UseDeleteDeletionMode() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst notifier = new Notifier();\r\n\t\tRecordStore.DeleteRecord({ EntityId: this.GetEntityId(), RecordId: this.GetRecordId() })\r\n\t\t\t.always(() => {\r\n\t\t\t\tLockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n\t\t\t\tthis.RemoveOnWindowCloseHandler();\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tnotifier.Failed(result.ErrorMessage || NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (result.Warnings && result.Warnings.length > 0) {\r\n\t\t\t\t\t_.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n\r\n\t\t\t\t\tnotifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n\t\t\t\t\tthis.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnotifier.Success(this.DeleteRecordSuccessNotification);\r\n\t\t\t\t\tthis.DeleteFromRecent();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tnotifier.Warning(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate UseDisableDeletionMode() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst notifier = new Notifier($(this._el));\r\n\t\tRecordStore.DeleteRecord({ EntityId: this.GetEntityId(), RecordId: this.GetRecordId(), Disable: true })\r\n\t\t\t.always(() => {\r\n\t\t\t\tLockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n\t\t\t\tthis.RemoveOnWindowCloseHandler();\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tnotifier.Failed(result.ErrorMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnotifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n\t\t\t\tthis.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tnotifier.Warning(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n async NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, searchTerm?: string,\r\n dataMode: DataModes = DataModes.Default, subjectLifestatusId: number = null, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n BlockUI.Block();\r\n\r\n const screenManager = (await import ('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n DataMode: dataMode,\r\n SubjectLifestatusId: subjectLifestatusId,\r\n ParentRecordId: this.GetRecordId(),\r\n AliasSuffix: aliasSuffix\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = this.GetRecordId();\r\n editScreen.UseLinking = true;\r\n editScreen.NewlyCreatedRecord = true;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n if (searchTerm) {\r\n this.NameControlSetValue(editScreen, searchTerm);\r\n }\r\n\r\n screen\r\n .On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), eventArgs.data.RecordId, tableTypeId);\r\n this.LoadPathRunnerData(eventArgs.data.RecordId);\r\n\r\n if (this.IsNested()) {\r\n this.Trigger(CONSULT_SCREEN_EVENTS.LINK_BOOK_RECORD, {EntityId: this.GetEntityId(), RecordId: eventArgs.data.RecordId});\r\n }\r\n else if (this.IsInModal()) {\r\n this.Close();\r\n } else {\r\n this.LoadData(eventArgs.data.RecordId, tableTypeId);\r\n }\r\n })\r\n .On('COPY', this, (eventArgs) => {\r\n if (this.IsInModal()) {\r\n this.Close();\r\n }\r\n\r\n const copyTableTypeId = eventArgs.data.copyToType || this._model.TableTypeId;\r\n this.IsTypeAvailable(copyTableTypeId, this._model.TableTypeId, this._model.EntityId)\r\n .then(() => this.NewRecord(copyTableTypeId, null, eventArgs.data.recordId, null, eventArgs.data.dataMode, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix));\r\n });\r\n\r\n screen.ShowInModal();\r\n })\r\n .fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n async NewSubjectActionRecord(entityId: number, tableTypeId: number, kindId: number, exampleRecordId: number,\r\n dataMode: DataModes = DataModes.Default, subjectLifestatusId: number = null, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n BlockUI.Block();\r\n const screenManager = (await import ('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n DataMode: dataMode,\r\n SubjectLifestatusId: subjectLifestatusId,\r\n AliasSuffix: aliasSuffix\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = exampleRecordId;\r\n editScreen.UseLinking = true;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n screen\r\n .On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n if (this.IsInModal()) {\r\n this.Close();\r\n } else {\r\n this.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n }\r\n })\r\n .On('COPY', this, (eventArgs) => {\r\n if (this.IsInModal()) {\r\n this.Close();\r\n }\r\n\r\n const copyTableTypeId = eventArgs.data.copyToType || tableTypeId;\r\n this.IsTypeAvailable(copyTableTypeId, tableTypeId, entityId)\r\n .then(() => this.NewSubjectActionRecord(entityId, copyTableTypeId, kindId, eventArgs.data.recordId, eventArgs.data.dataMode, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix));\r\n });\r\n\r\n screen.ShowInModal();\r\n })\r\n .fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n EditRecord() {\r\n if (!this.GetRecordId()) {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Warning(NOTIFICATIONS.PLEASE_SELECT_ANY_RECORD);\r\n return;\r\n }\r\n\r\n\r\n if (this._dataModel.IsTypeTransformationRequired) {\r\n const typeScreen = new TypeScreen(this.GetEntityId(), this.GetTableTypeId(), true, false);\r\n\r\n typeScreen.On(\"TYPE_SELECTED\",\r\n this,\r\n (eventArgs) => {\r\n UserVarsManager.Instance.RemoveFromRecent(this.GetRecordId(), this._model.EntityId, this.GetTableTypeId());\r\n\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), this.GetRecordId(), typeId);\r\n this.ShowEditScreen(typeId, kindId);\r\n })\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => {\r\n new Notifier($(this._el)).Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n\r\n typeScreen.Show();\r\n } else {\r\n this.ShowEditScreen();\r\n }\r\n }\r\n\r\n CreateRecord() {\r\n const showTypeSelector = (allowChildrenTypes: boolean) => {\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n const parentTypeId = allowChildrenTypes ? this.GetTableTypeId() : 0;\r\n const typeScreen = new TypeScreen(this.GetEntityId(), parentTypeId, true);\r\n\r\n typeScreen\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n })\r\n .On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchTerm);\r\n });\r\n\r\n typeScreen.Show();\r\n };\r\n\r\n if (this.IsInModal()) {\r\n showTypeSelector(true);\r\n return;\r\n }\r\n\r\n\t\tconst profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector(false);\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector(true);\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n }\r\n\r\n ShowEditScreen(newTypeId?: number, kindId?: number) {\r\n BlockUI.Block();\r\n\r\n LockManager.Instance.TryLock(this.GetEntityId(), this.GetRecordId())\r\n .then(async () => {\r\n const screenManager = (await import ('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: newTypeId ? newTypeId : this.GetTableTypeId(),\r\n KindId: kindId,\r\n RecordId: this.GetRecordId(),\r\n DataMode: DataModes.Default\r\n })\r\n .then((screen: EditScreen) => {\r\n\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs: any) => {\r\n if (eventArgs.data.TableId === this.GetEntityId() && eventArgs.data.RecordId === this.GetRecordId()) {\r\n screen.Close();\r\n }\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId()));\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n if (newTypeId) {\r\n this._model.TableTypeId = newTypeId;\r\n }\r\n\r\n const notifier = new Notifier();\r\n\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n\r\n this.LoadPathRunnerData(this.GetRecordId());\r\n\r\n if (this.IsInModal()) {\r\n this.Close();\r\n if (!eventArgs.data.IsFollowUp) {\r\n this.Trigger('RECORD_SAVED');\r\n }\r\n } else {\r\n this.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n }\r\n });\r\n\r\n screen.On('RECORD_REMOVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Success(screen.DeleteRecordSuccessNotification);\r\n this.LoadData(null, null, this.IsInModal());\r\n this.ClearPathRunner();\r\n });\r\n\r\n screen.On('FOLLOWUP_RECORD', this, (eventArgs) => this.OnFollowUpRecordFromEditScreen(eventArgs));\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || this._model.TableTypeId;\r\n this.IsTypeAvailable(copyTableType, this._model.TableTypeId, this._model.EntityId)\r\n .then(() => this.NewRecord(copyTableType, this.GetKindId(), eventArgs.data.recordId, null, eventArgs.data.dataMode, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix));\r\n });\r\n\r\n screen.ShowInModal();\r\n\r\n })\r\n .fail(err => {\r\n LockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n })\r\n .fail(err => BlockUI.Unblock());\r\n }\r\n\r\n ShowSubjectActionEditScreen(subjectAction: SubjectActionModel, followUpRecord: FollowUpRecordModel) {\r\n BlockUI.Block();\r\n\r\n LockManager.Instance.TryLock(subjectAction.EntityId, subjectAction.Id)\r\n .then(async () => {\r\n const screenManager = (await import ('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: subjectAction.EntityId,\r\n TableTypeId: subjectAction.TypeId,\r\n KindId: subjectAction.KindId,\r\n RecordId: subjectAction.Id,\r\n DataMode: DataModes.Default\r\n })\r\n .then((screen: EditScreen) => {\r\n let followUpControl = screen.GetControlByType(CONTROL_TYPES.ButtonFollowUp) as ButtonFollowUp;\r\n followUpControl.SetRecord(followUpRecord);\r\n\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs: any) => {\r\n if (eventArgs.data.TableId === subjectAction.EntityId && eventArgs.data.RecordId === subjectAction.Id) {\r\n screen.Close();\r\n }\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(subjectAction.EntityId, subjectAction.Id));\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n\r\n if (this.IsInModal()) {\r\n this.Close();\r\n if (!eventArgs.data.IsFollowUp) {\r\n this.Trigger('RECORD_SAVED');\r\n }\r\n } else {\r\n this.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n }\r\n });\r\n\r\n screen.On('RECORD_REMOVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(screen.DeleteRecordSuccessNotification);\r\n this.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n });\r\n\r\n screen.On('FOLLOWUP_RECORD', this, (eventArgs) => this.OnFollowUpSubjectActionRecordFromEditScreen(subjectAction.EntityId, subjectAction.TypeId, subjectAction.KindId, eventArgs));\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableTypeId = eventArgs.data.copyToType || subjectAction.TypeId;\r\n this.IsTypeAvailable(copyTableTypeId, subjectAction.TypeId, subjectAction.EntityId)\r\n .then(() => this.NewSubjectActionRecord(subjectAction.EntityId, copyTableTypeId, subjectAction.KindId, eventArgs.data.recordId, eventArgs.data.dataMode, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix));\r\n });\r\n\r\n screen.ShowInModal();\r\n\r\n })\r\n .fail(err => {\r\n LockManager.Instance.ReleaseLock(subjectAction.EntityId, subjectAction.Id);\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n })\r\n .fail(err => BlockUI.Unblock());\r\n }\r\n\r\n OnFollowUpSubjectActionRecordFromEditScreen(entityId: number, typeId: number, kindId: number, eventArgs: EventArgs) {\r\n const followUp = eventArgs.data.followUpRecordModel as FollowUpRecordModel;\r\n \r\n if (!followUp) {\r\n this.NewSubjectActionRecord(entityId, typeId, kindId, eventArgs.data.RecordId, DataModes.FollowUp);\r\n } else if (followUp.LifeStatusSort !== null\r\n && followUp.LifeStatusSort !== LIFE_STATUS_GROUPS.RETIRED\r\n && !followUp.LifeStatusNoActionNode) {\r\n if (!followUp.CurrentLifeStatus.FollowupModeName\r\n || followUp.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT_AND_NEW\r\n || followUp.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW) {\r\n this.NewSubjectActionRecord(entityId, typeId, kindId, eventArgs.data.recordId,DataModes.FollowUp, followUp.LifeStatusId);\r\n } else {\r\n this.LoadData(this.GetRecordId(), this._model.TableTypeId);\r\n }\r\n }\r\n }\r\n\r\n OnFollowUpRecordFromEditScreen(eventArgs: EventArgs) {\r\n const followUp = eventArgs.data.followUpRecordModel as FollowUpRecordModel;\r\n if (!followUp) {\r\n this.NewRecord(this._model.TableTypeId, this._model.KindId, eventArgs.data.recordId, null, DataModes.FollowUp);\r\n } else if (followUp.LifeStatusSort !== null\r\n && followUp.LifeStatusSort !== LIFE_STATUS_GROUPS.RETIRED\r\n && !followUp.LifeStatusNoActionNode) {\r\n if (!followUp.CurrentLifeStatus.FollowupModeName\r\n || followUp.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT_AND_NEW\r\n || followUp.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW) {\r\n this.NewRecord(this._model.TableTypeId,\r\n this._model.KindId,\r\n eventArgs.data.recordId,\r\n null,\r\n DataModes.FollowUp,\r\n followUp.LifeStatusId);\r\n } else {\r\n this.LoadData(eventArgs.data.followUpRecordId, this._model.TableTypeId);\r\n }\r\n }else{\r\n if (!this.IsInModal()) {\r\n this.LoadData(null, null);\r\n }\r\n\r\n this.ClearPathRunner();\r\n }\r\n }\r\n\r\n SetRecordId(recordId: number): void {\r\n this._recordId = recordId;\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n this.SetScreenStyle(false, this.IsOpenedViaBookControl);\r\n\r\n const unbindResize = ResizeService.SubscribeWidth(this.OnResize.bind(this, el), el[0]); // subscribe on resize\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(el, () => {\r\n unbindResize();\r\n });\r\n this.CheckHideButtonCaption(el);\r\n // this.ToggleActionBar(el);\r\n }\r\n\r\n OnResize = (el) => {\r\n this.CheckHideButtonCaption(el);\r\n // this.ToggleActionBar(el);\r\n };\r\n\r\n CheckHideButtonCaption(el): void {\r\n const actionBarWrapper = $(el).find('.action-bar-wrapper');\r\n if (actionBarWrapper.length) {\r\n const actionBar_barLeft = $('.bar-left', actionBarWrapper).width();\r\n const actionBar_controls = $('.actionBar-Controls', actionBarWrapper).width();\r\n this._hideButtonCaption(actionBar_barLeft === actionBar_controls);\r\n\r\n _.each(this._actionBarButtonControls, (control: IControl)=> {\r\n control.SetHideCaption(this._hideButtonCaption());\r\n })\r\n }\r\n }\r\n\r\n // ToggleActionBar(el){\r\n // const actionBarWrapper = $(el).find('.action-bar-wrapper');\r\n // if (actionBarWrapper.length) {\r\n // const actionBar_barLeft = $('.bar-left', actionBarWrapper).width();\r\n // const actionBar_controls = $('.actionBar-Controls', actionBarWrapper).width();\r\n // this._areWidthsEqual(actionBar_barLeft === actionBar_controls);\r\n // }\r\n // }\r\n\r\n ToggleHamburger(data, event){\r\n $(event.target).find('.ham').toggleClass('active')\r\n this._isHamburgerActive(!this._isHamburgerActive());\r\n\r\n\r\n // this._hideButtonCaption(!this._hideButtonCaption());\r\n // _.each(this._actionBarButtonControls, (control: IControl)=> {\r\n // control.SetHideCaption(this._hideButtonCaption());\r\n // })\r\n }\r\n\r\n ToggleLifeStatusBarClass(data, event){\r\n if ($(window).width() <= 991){\r\n $(event.target).parents('.lifestatus-bar-wrapper').toggleClass('showLifeStatus');\r\n }\r\n }\r\n\r\n get ScreenSwitcher(): boolean {\r\n return this._screenSwitcher() && this._screenSwitcher().GetEnabled();\r\n }\r\n\r\n GridRowDataDeleteCurrentRow() {\r\n let currentRow = this._screenSwitcher().GridRowData.indexOf(this._screenSwitcher().CurrentRow);\r\n this._screenSwitcher().GridRowData.splice(currentRow, 1);\r\n }\r\n\r\n private DeleteFromRecent() {\r\n UserVarsManager.Instance.RemoveFromRecent(this.GetRecordId(), this._model.EntityId, this._model.TableTypeId);\r\n\r\n const lastRecentRecord = UserVarsManager.Instance.GetLastRecentRecordByEntityId(this._model.EntityId);\r\n\r\n if (!lastRecentRecord) {\r\n this.LoadScreenFor(0, 0);\r\n\r\n return;\r\n }\r\n\r\n if (this._screenSwitcher()) {\r\n if (this._screenSwitcher().GridRowData.length > 1) {\r\n\r\n this.GridRowDataDeleteCurrentRow();\r\n\r\n if (this._screenSwitcher().NextScreen) {\r\n this._screenSwitcher().GetNextScreen();\r\n } else {\r\n this._screenSwitcher().GetPreviousScreen();\r\n }\r\n } else {\r\n this.GridRowDataDeleteCurrentRow();\r\n this.Close();\r\n }\r\n\r\n } else {\r\n this.LoadData(lastRecentRecord.id, lastRecentRecord.typeId);\r\n this.LoadPathRunnerData(lastRecentRecord.id);\r\n }\r\n }\r\n\r\n private NameControlSetValue(screen: EditScreen, value: string) {\r\n const control = screen.GetControlByFieldName('NAME', CONTROL_TYPES.Text);\r\n\r\n if (control) {\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.FieldId = control.FieldModel.Id;\r\n controlData.Value = value;\r\n controlData.DisplayValue = value;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n };\r\n\r\n control.SetDefaultValue(controlValue);\r\n }\r\n }\r\n\r\n private LoadPathRunnerData(recordId: number) {\r\n if (!this._pathRunner()) {\r\n return P.resolve(null);\r\n }\r\n\r\n return this._pathRunner().LoadNewData(recordId);\r\n }\r\n\r\n get IsPathRunner(): boolean {\r\n return this._pathRunner() && this._pathRunner().IsPathRunner();\r\n }\r\n\r\n get HasSpecialScreen(): boolean {\r\n return this._pathRunner() && this._pathRunner().IsSpecialScreenExist();\r\n }\r\n\r\n private ClearPathRunner() {\r\n this._pathRunner() && this._pathRunner().Clear();\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId()), attr: {'data-screen-name': $data.GetTypeName()}\\\" id=\\\"wrapper\\\"> <div class=\\\"screen consult-screen screenForm\\\"> <div class=\\\"portlet light\\\"> <div data-bind=\\\"subformResize: {}\\\" class=\\\"clearfix consult-screen-container\\\"> <!--ko if: ActionBar--> <div class=\\\"actionBarSubForm clearfix\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body clearfix\\\"> <div class=\\\"action-bar-wrapper\\\" data-bind=\\\"css: {'show-wrapper': _isHamburgerActive(), 'hidden-wrapper': _areWidthsEqual()}\\\"> <div class=\\\"bar-left\\\"> <!-- ko with: ActionBar --> <div class=\\\"actionBar-Controls\\\"> <a class=\\\"subFormControl copy-link-button\\\" data-bind=\\\"click: CopyRecordLink, tooltip: {content: _labels.CLICK_TO_COPY_URL}\\\"> <i class=\\\"fa fa-link\\\"></i> </a> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> <span data-bind=\\\"click: ToggleHamburger.bind($data), css: {'hamburger-btn_wrapper__hidden': !_areWidthsEqual()}\\\" class=\\\"hamburger-btn_wrapper\\\"> <svg class=\\\"hamburger-btn hamburger-btn--Rotate hamburger-btn_type_4\\\" viewBox=\\\"0 0 100 100\\\" width=\\\"80\\\" data-bind=\\\"css: {'active': _isHamburgerActive()}\\\"> <path class=\\\"hamburger-btn_line hamburger-btn--top\\\" d=\\\"m 70,33 h -40 c 0,0 -8.5,-0.149796 -8.5,8.5 0,8.649796 8.5,8.5 8.5,8.5 h 20 v -20\\\"/> <path class=\\\"hamburger-btn_line hamburger-btn--middle\\\" d=\\\"m 70,50 h -40\\\"/> <path class=\\\"hamburger-btn_line hamburger-btn--bottom\\\" d=\\\"m 30,67 h 40 c 0,0 8.5,0.149796 8.5,-8.5 0,-8.649796 -8.5,-8.5 -8.5,-8.5 h -20 v 20\\\"/> </svg> </span> <div class=\\\"bar-right\\\" data-bind=\\\"tooltip: { content: _statusDescription}\\\"> <div class=\\\"pull-right-sm lifestatus-bar-wrapper\\\"> <!-- ko with: _progressBar --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"click: ToggleLifeStatusBarClass.bind($data)\\\" class=\\\"toggleLifeStatusBarButton\\\"></span> </div> <!--ko if: ScreenSwitcher--> <div class=\\\"pull-right-sm screen-switcher-container\\\"> <!-- ko with: _screenSwitcher --> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </form> </div> <!-- /ko --> <div class=\\\"clearfix middle-block\\\"> <!-- ko with: $data._pathRunner --> <!-- ko template: {name: GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <div class=\\\"content-block transition\\\" data-bind=\\\"css: {'isPathRunner': IsPathRunner || HasSpecialScreen}\\\"> <div class=\\\"row form-wrapper\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, 'hidden-form': _noSubControls()}\\\" class=\\\"mainSubForm col-md-4 form-wrapper__main-sub-form fast-transition\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> <!-- /ko --> </div> <!-- ko if: BottomBar --> <!-- ko if: IsBottomBarControls --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko with: BottomBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId())\\\" id=\\\"wrapper\\\"> <div class=\\\"screen consult-screen screenForm\\\"> <div class=\\\"portlet light\\\"> <div data-bind=\\\"subformResize: {}\\\" class=\\\"clearfix consult-screen-container\\\"> <div class=\\\"clearfix middle-block\\\"> <div class=\\\"content-block transition\\\"> <div> <!-- ko if: BottomBar --> <!-- ko if: IsBottomBarControls --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko with: BottomBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {ISearchScreenParam} from 'Core/Screens/IScreen';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {CONTROL_TYPES, RenderModes} from 'Core/Constant';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {MenuManager} from 'MenuManager/MenuManager';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {Grid} from 'Core/Controls/Grid/Grid';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {NOTIFICATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\nimport ListScreenTemplate from 'Core/Screens/Templates/AdditionalConsultScreen/ListScreen/ListScreen.html';\r\nimport {LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {ProfileSelectorScreen} from '../ProfileSelectorScreen/ProfileSelectorScreen';\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/ListScreen/ListScreen'] = ListScreenTemplate;\r\n\r\nexport class ListScreen extends BaseScreen {\r\n private _grid: Grid;\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel, RenderModes.Edit);\r\n\r\n this.Init();\r\n }\r\n\r\n private Init() {\r\n this._grid = this.GetControl<Grid>('Grid');\r\n\r\n if (this._grid) {\r\n ['EnableLinkButton', 'EnableAdd&LinkButton', 'EnableAddQueryButton']\r\n .forEach(property => this._grid.ChangeProperty(property, false));\r\n }\r\n\r\n if (!this._model.Data) {\r\n return;\r\n }\r\n\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.Rights = this._model.Data.Rights;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: -1,\r\n RecordSpecsModel: null\r\n };\r\n \r\n _.each(this.GetAllControls(), (control: IControl) => { \r\n control.SetValue(controlValue);\r\n });\r\n \r\n this.On('SEARCH_RECORD', this, (eventArgs: any) => this.SearchRecord());\r\n this.On('ADD_RECORD', this, (eventArgs: any) => this.CreateRecord());\r\n }\r\n\r\n Refresh() {\r\n this._grid.LoadData();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return `Core/Screens/Templates/AdditionalConsultScreen/ListScreen/ListScreen`;\r\n }\r\n\r\n GetTextSearchTermControl(): IControl {\r\n return _.first(_.filter(this.GetAllControls(), (control: IControl) => control.GetType() === 'Search'));\r\n }\r\n\r\n SearchRecord(): void {\r\n LockManager.Instance.ReleaseAllLocks();\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchControlId = SearchControl != null ? SearchControl.GetControlId() : 0;\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n const searchParams: ISearchScreenParam = {\r\n EntityId: this.GetEntityId(),\r\n ControlId: searchControlId,\r\n SearchTerm: searchTerm\r\n };\r\n\r\n const searchScreen = new SearchScreen(searchParams);\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs: any) => {\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), eventArgs.data.RecordId, eventArgs.data.TypeId);\r\n\r\n searchScreen.Close();\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: this.GetEntityId(),\r\n RecordId: eventArgs.data.RecordId,\r\n RecordTypeId: eventArgs.data.TypeId\r\n });\r\n });\r\n\r\n searchScreen.On('ALT_ENTITY_RECORD_SELECTED', this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.On('NEW_RECORD', this, (eventArgs) => {\r\n const showTypeSelector = () => {\r\n const typeScreen = new TypeScreen(this.GetEntityId(), this.GetTableTypeId(), true);\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n searchScreen.Cancel();\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchScreen.SearchTerm());\r\n });\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n if (this.IsInModal()) {\r\n showTypeSelector();\r\n return;\r\n }\r\n\r\n\t\t\tconst profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n searchScreen.Cancel();\r\n showTypeSelector();\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n EditRecord(): void {\r\n\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, searchTerm?: string) {\r\n ScreenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0\r\n })\r\n .fail((err) => {\r\n var notifier = new Notifier();\r\n notifier.Failed(err.message);\r\n })\r\n .then((screen: EditScreen) => {\r\n if (!screen) {\r\n new Notifier($(this._el)).Warning(NOTIFICATIONS.EDIT_SCREEN_NOT_EXISTS);\r\n\r\n return;\r\n }\r\n\r\n LockManager.Instance.ReleaseAllLocks();\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = this.GetRecordId();\r\n editScreen.UseLinking = true;\r\n\r\n if (searchTerm) {\r\n this.NameControlSetValue(editScreen, searchTerm);\r\n }\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(eventArgs.data.RecordId, tableTypeId);\r\n });\r\n\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n CreateRecord() {\r\n const showTypeSelector = () => {\r\n const typeScreen = new TypeScreen(this.GetEntityId(), this.GetTableTypeId(), true);\r\n\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchTerm);\r\n });\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n if (this.IsInModal()) {\r\n showTypeSelector();\r\n return;\r\n }\r\n\r\n\t\tconst profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n }\r\n\r\n LoadData(recordId: number, tableTypeId: number) {\r\n this.LoadScreenFor(tableTypeId, recordId);\r\n }\r\n\r\n LoadScreenFor(tableTypeId: number, recordId: number) {\r\n if (this.IsDashMain) {\r\n this._grid.UpdateTableViewList();\r\n } else {\r\n ScreenManager.GetScreenByScreenType(this.GetEntityId(), ScreenTypes.ConsultScreen, recordId)\r\n .then(screen => {\r\n screen.SetIsReady(true);\r\n MenuManager.Instance.GoToScreen(screen);\r\n })\r\n .fail(err => {\r\n new Notifier().Warning(err.message);\r\n\r\n });\r\n }\r\n }\r\n\r\n private NameControlSetValue(screen: EditScreen, value: string) {\r\n const control = screen.GetControlByFieldName('NAME', CONTROL_TYPES.Text);\r\n\r\n if (control) {\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.FieldId = control.FieldModel.Id;\r\n controlData.Value = value;\r\n controlData.DisplayValue = value;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n };\r\n\r\n control.SetDefaultValue(controlValue);\r\n }\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n this.SetScreenStyle();\r\n }\r\n\r\n} ","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId())\\\" id=\\\"wrapper\\\"> <div class=\\\"list-screen\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"list-screen-container\\\"> <!--ko if: ActionBar--> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"action-bar-wrapper\\\"> <div class=\\\"bar-left\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"bar-right\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> </div> </form> </div> <!-- /ko --> <div class=\\\"clearfix middle-block\\\"> <div class=\\\"content-block transition\\\"> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped}\\\" class=\\\"form-wrapper__main-sub-form\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import { record } from 'rrweb';\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen'\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen'\r\nimport {Search} from 'Core/Controls/Search/Search'\r\nimport {IControlParam, ISearchScreenParam} from 'Core/Screens/IScreen'\r\nimport {CONTROL_TYPES, EVENTS} from 'Core/Constant'\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\nimport {Request, IRequestOptions} from 'Core/Common/Request'\r\nimport {URL} from 'Core/Common/Url'\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControl} from 'Core/Controls/IControl'\r\nimport {RenderModes} from 'Core/Constant'\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen'\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager'\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen'\r\nimport {Notifier} from 'Core/Common/Notifier'\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager'\r\nimport {ScreenDataStore} from 'Core/Screens/ConsultScreen/Stores/ScreenDataStore'\r\nimport {MenuManager} from 'MenuManager/MenuManager'\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes'\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel'\r\nimport {ScreenDataModel} from 'Core/ScreenManager/Models/ScreenDataModel'\r\nimport {DataModes} from 'Core/Enums/DataModes';\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList';\r\n\r\nimport SpecialScreenTemplate\r\n from 'Core/Screens/Templates/AdditionalConsultScreen/SpecialScreen/SpecialScreen.html';\r\nimport {PUB_SUB_EVENTS} from \"../../../MenuManager/PubSubEvents\";\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {LOCK_EVENTS, LockManager} from \"../../Components/Locker/LockManager\";\r\nimport {ProfileSelectorScreen} from '../ProfileSelectorScreen/ProfileSelectorScreen';\r\nimport { Step } from '../../Controls/Step/Step';\r\n\r\nko.templates[\"Core/Screens/Templates/AdditionalConsultScreen/SpecialScreen/SpecialScreen\"] = SpecialScreenTemplate;\r\n\r\nexport class SpecialScreen extends BaseScreen {\r\n private _Search: IControl;\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel, RenderModes.View);\r\n this._renderMode = RenderModes.View;\r\n this.Init();\r\n }\r\n\r\n Init() {\r\n if (!this._model.Data) {\r\n return;\r\n }\r\n\r\n this._dataModel = this._model.Data;\r\n\r\n var controlData = new ControlDataModel();\r\n controlData.Rights = this._model.Data.Rights;\r\n\r\n var controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: -1,\r\n RecordSpecsModel: null\r\n };\r\n\r\n _.each(this._controls, (control: IControl) => {\r\n control.SetValue(controlValue);\r\n });\r\n\r\n this.On('SEARCH_RECORD', this, (eventArgs: any) => {\r\n this.SearchRecord();\r\n });\r\n this.On('EDIT_RECORD', this, (eventArgs: any) => {\r\n if (eventArgs.data && eventArgs.data.TableTypeId && eventArgs.data.RecordId) {\r\n this.EditRecord(eventArgs.data.RecordId, eventArgs.data.TableTypeId);\r\n } else {\r\n this.EditRecord();\r\n }\r\n });\r\n\r\n this.On('NEW_RECORD', this, (eventArgs: any) => {\r\n var screenData = null;\r\n if (eventArgs.data && eventArgs.data.ScreenData instanceof ScreenDataModel) {\r\n screenData = eventArgs.data.ScreenData;\r\n }\r\n\r\n if (eventArgs.data && eventArgs.data.TableTypeId) {\r\n this.NewRecord(eventArgs.data.TableTypeId, 0, screenData);\r\n } else {\r\n this.ShowTypeScreen(screenData);\r\n }\r\n });\r\n\r\n this.On('ADD_RECORD', this, (eventArgs: any) => {\r\n this.ShowProfileSelector();\r\n });\r\n }\r\n\r\n Refresh() {\r\n this.LoadData(this.GetRecordId());\r\n }\r\n\r\n SearchRecord(): void {\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchControlId = SearchControl != null ? SearchControl.GetControlId() : 0;\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : \"\";\r\n\r\n const searchParams: ISearchScreenParam = {\r\n EntityId: this.GetEntityId(),\r\n ControlId: searchControlId,\r\n SearchTerm: searchTerm\r\n };\r\n\r\n const searchScreen = new SearchScreen(searchParams);\r\n\r\n searchScreen.On(\"RECORD_SELECTED\", this, (eventArgs: any) => {\r\n this.SelectRecord({recordId: eventArgs.data.RecordId, typeId: eventArgs.data.TypeId});\r\n searchScreen.Close(); \r\n });\r\n\r\n searchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n searchScreen.On(\"NEW_RECORD\", this, (eventArgs) => {\r\n this.ShowProfileSelector(null, searchScreen);\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n SelectRecord({recordId, typeId}: {recordId: number, typeId: number}){\r\n const stepControl: Step = this.GetControlByType(CONTROL_TYPES.Step) as Step;\r\n if(stepControl){\r\n stepControl.SelectRecord({ recordId });\r\n }else{\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(),recordId, typeId);\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: this.GetEntityId(),\r\n RecordId: recordId,\r\n RecordTypeId: typeId,\r\n Owner: this\r\n });\r\n }\r\n }\r\n\r\n LoadData(recordId: number) {\r\n BlockUI.Block();\r\n ScreenManager.GetScreenByScreenType(this.GetEntityId(), ScreenTypes.SpecialScreen, recordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n screen.SetIsReady(true);\r\n MenuManager.Instance.GoToScreen(screen);\r\n }).fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n ShowProfileSelector(screenData?: ScreenDataModel, searchScreen: SearchScreen = null) {\r\n if (this.IsInModal()) {\r\n this.ShowTypeScreen(screenData, searchScreen);\r\n return;\r\n }\r\n\r\n\t\tconst profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n this.ShowTypeScreen(screenData, searchScreen);\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n this.ShowTypeScreen(screenData, searchScreen);\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n }\r\n\r\n ShowTypeScreen(screenData?: ScreenDataModel, searchScreen: SearchScreen = null) {\r\n var typeScreen = new TypeScreen(this.GetEntityId(), 0, true);\r\n typeScreen.On(\"TYPE_SELECTED\", this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n if (searchScreen) {\r\n searchScreen.Cancel();\r\n }\r\n this.NewRecord(typeId, kindId, exampleRecordId, screenData);\r\n });\r\n\r\n typeScreen.On(\"TYPES_NOT_FOUND\", this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n typeScreen.Show();\r\n }\r\n\r\n EditRecord(recordId?: number, tableTypeId?: number) {\r\n if (!this.GetRecordId() && !recordId) {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Warning(NOTIFICATIONS.PLEASE_SELECT_ANY_RECORD);\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n\r\n const lockedRecordId = recordId || this.GetRecordId();\r\n LockManager.Instance.TryLock(this.GetEntityId(), lockedRecordId)\r\n .then(result => {\r\n\r\n ScreenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId || this.GetTableTypeId(),\r\n RecordId: recordId || this.GetRecordId()\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((screen: EditScreen) => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs: any) => {\r\n if (eventArgs.data.EntityId === this.GetEntityId() && eventArgs.data.RecordId === lockedRecordId) {\r\n screen.Close();\r\n }\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => {\r\n LockManager.Instance.ReleaseLock(this.GetEntityId(), lockedRecordId);\r\n });\r\n\r\n screen.On(\"RECORD_SAVED\", this, (eventArgs) => {\r\n var notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n this.LoadData(this.GetRecordId());\r\n });\r\n\r\n screen.On(\"RECORD_REMOVED\", this, () => {\r\n LockManager.Instance.ReleaseLock(this.GetEntityId(), lockedRecordId);\r\n this.LoadData(this.GetRecordId());\r\n });\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || this.GetTableTypeId();\r\n this.NewRecord(copyTableType, this.GetKindId(), eventArgs.data.recordId, null, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(err => {\r\n LockManager.Instance.ReleaseLock(this.GetEntityId(), lockedRecordId);\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(err.message);\r\n });\r\n })\r\n .fail(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, screenData?: ScreenDataModel, dataMode: DataModes = DataModes.Default, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n BlockUI.Block();\r\n ScreenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n DataMode: dataMode,\r\n LoadAsExample: exampleRecordId > 0,\r\n AliasSuffix: aliasSuffix\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail((err) => {\r\n var notifier = new Notifier();\r\n notifier.Failed(err.message);\r\n }).then(screen => {\r\n var editScreen = <EditScreen>screen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n if (searchTerm) {\r\n editScreen.NameControlSetValue(searchTerm);\r\n }\r\n\r\n if (screenData) {\r\n editScreen.SetDefaultData(screenData);\r\n }\r\n\r\n screen.On(\"RECORD_SAVED\", this, (eventArgs) => {\r\n var notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(eventArgs.data.RecordId);\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), eventArgs.data.RecordId, tableTypeId);\r\n });\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || this.GetTableTypeId();\r\n this.NewRecord(copyTableType, this.GetKindId(), eventArgs.data.recordId, null, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n GetTextSearchTermControl(): IControl {\r\n return _.first(_.filter(this.GetAllControls(), (control: IControl) => control.GetType() === \"Search\"));\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n this.SetScreenStyle();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/SpecialScreen/SpecialScreen';\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId())\\\" id=\\\"wrapper\\\"> <div class=\\\"special-screen\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"special-screen-content\\\"> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </form> </div> <div class=\\\"row form-wrapper\\\" data-bind=\\\"css: {'notBottomBar': BottomBar && !IsBottomBarControls}\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, 'hidden-form': _noSubControls()}\\\" class=\\\"mainSubForm col-md-12 form-wrapper__main-sub-form\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div> <!-- ko if: BottomBar --> <!-- ko if: IsBottomBarControls --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko with: BottomBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {serialize, serializeAs} from 'libs/cerialize';\r\nimport {SubFormModel} from '../../../Models/Screens/SubFormModel';\r\n\r\nexport class FieldModel {\r\n\t@serialize\r\n\tId: number;\r\n\r\n\t@serialize\r\n\tSort: number;\r\n\r\n\t@serialize\r\n\tLinkRequired: boolean;\r\n}\r\n\r\n\r\nexport class ControlModel {\r\n\tconstructor() {\r\n\t\tthis.Fields = [];\r\n\t\tthis.NameTranslations = [];\r\n\t\tthis.DescriptionTranslations = [];\r\n\t}\r\n\r\n\t@serialize\r\n\tId: number;\r\n\r\n\t@serialize\r\n\tName: string;\r\n\r\n\t@serialize\r\n\tTypeName: string;\r\n\r\n\t@serialize\r\n\tRecordLifeStatusId: number;\r\n\r\n\t@serialize\r\n\tDestinationTypeId: number;\r\n\r\n\t@serialize\r\n\tLabelPosition: number;\r\n\r\n\t@serialize\r\n\tGuid: String;\r\n\r\n\t@serialize\r\n\tFormId: number;\r\n\r\n\t@serialize\r\n\tFormGuid: string;\r\n\r\n\t@serialize\r\n\tParentControlId: number;\r\n\r\n\t@serialize\r\n\tParentControlGuid: string;\r\n\r\n\t@serialize\r\n\tProperties: string;\r\n\r\n\t@serialize\r\n\tSort: number;\r\n\r\n\t@serialize\r\n\tDescription: string;\r\n\r\n\t@serializeAs(FieldModel)\r\n\tFields: Array<FieldModel>;\r\n\r\n\t@serializeAs(TranslationModel)\r\n\tNameTranslations: Array<TranslationModel>;\r\n\r\n @serializeAs(TranslationModel)\r\n DescriptionTranslations: Array<TranslationModel>;\r\n\r\n @serialize\r\n IconId: number;\r\n\r\n @serialize\r\n UseFieldName: boolean;\r\n\r\n @serialize\r\n\tTitleFieldId: number;\r\n\r\n\t@serialize\r\n\tKanbanSubjectId: number;\r\n\r\n\t@serialize\r\n\tTodoEntityId: number;\r\n\r\n\t@serialize\r\n\tTodoTypeId: number;\r\n\r\n\t@serialize\r\n\tTodoFieldId: number;\r\n\r\n\t@serialize\r\n\tScreenId: number;\r\n\r\n\r\n\tAddField(fieldId: number, sort: number, linkRequired?: boolean) {\r\n\t\tvar fieldModel = new FieldModel();\r\n\t\tfieldModel.Id = fieldId;\r\n\t\tfieldModel.Sort = sort;\r\n\t\tfieldModel.LinkRequired = linkRequired;\r\n\t\tthis.Fields.push(fieldModel);\r\n\t}\r\n}\r\n\r\nexport interface IMainFormUpdateModel {\r\n\tEntityId: number;\r\n\tIsMain: boolean;\r\n\tFormId: number;\r\n}\r\n\r\nexport class MainFormUpdateModel {\r\n\tconstructor(params: IMainFormUpdateModel) {\r\n\t\tthis.EntityId = params.EntityId;\r\n\t\tthis.FormId = params.FormId;\r\n\t\tthis.IsMain = params.IsMain;\r\n\t}\r\n\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@serialize\r\n\tIsMain: boolean;\r\n\r\n\t@serialize\r\n\tFormId: number;\r\n}\r\n\r\nexport class UpdateScreenModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.DeletedFormIds = [];\r\n\t\tthis.DeletedControlIds = [];\r\n\t\tthis.SubForms = [];\r\n\t\tthis.Controls = [];\r\n\t}\r\n\r\n\t\r\n\t@serialize\r\n\tIsEnablePathRunner: boolean;\r\n\r\n\t@serialize\r\n\tScreenId: number;\r\n\r\n\t@serialize\r\n\tDeletedFormIds: Array<number>;\r\n\r\n\t@serialize\r\n\tDeletedControlIds: Array<number>;\r\n\r\n\t@serializeAs(SubFormModel)\r\n\tSubForms: SubFormModel[];\r\n\r\n\t@serializeAs(ControlModel)\r\n\tControls: Array<ControlModel>;\r\n\r\n\t@serializeAs(MainFormUpdateModel)\r\n\tTableFormLinks: Array<MainFormUpdateModel>;\r\n\r\n\t@serialize\r\n\tFormProperties: string;\r\n}","\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {ConcreteEntityModel} from 'QueryBuilder/Models/ConcreteEntityModel';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Serialize, Deserialize, GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport {UpdateScreenModel} from 'Core/Screens/DesignScreen/Models/UpdateScreenModel'\r\n\r\nexport class UpdateScreenStore {\r\n\tstatic UpdateScreen(params: UpdateScreenModel): P.Promise<UpdateScreenModel> {\r\n\t\tvar deferredResult = P.defer<UpdateScreenModel>();\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FormDesignerApi/UpdateScreenForm',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: Serialize(params)\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\t\tdeferredResult.resolve(Deserialize(data.ResultObject));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\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\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tprivate static Serialize(model: any) {\r\n\t\treturn Serialize(model);\r\n\t}\r\n\r\n\tprivate static Deserialize(jsonObj: any): UpdateScreenModel {\r\n\t\treturn GenericDeserialize(jsonObj, UpdateScreenModel);\r\n\t}\r\n}","import {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {serializeAs} from 'libs/cerialize';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class ControlEditorModel {\r\n\tconstructor() {\r\n\t\tthis.NameTranslations = [];\r\n\t\tthis.DescriptionTranslations = [];\r\n\t\tthis.AttachedFields = [];\r\n\t}\r\n\tName: string;\r\n\tNameMaxSize: number;\r\n\tFieldName: string;\r\n FieldNameTranslation: string;\r\n EntityName: string;\r\n\tF_Type: number;\r\n\tTypeName: string;\r\n TypeTranslatedName: string;\r\n K_Control: number;\r\n\tFieldId: number;\r\n\tValTableId: number;\r\n\tValFieldId: number;\r\n\tSubFormId: number;\r\n\tMemo: string;\r\n\tMaskId: number;\r\n\tHasParentControl: boolean;\r\n\tParentControlId: number;\r\n\tParenControlType: string;\r\n\tParentControlSubFormId: number;\r\n\tLabelPos: number;\r\n\tLabelPosName: string;\r\n\tProperties: string;\r\n\tEntityId: number;\r\n\tSubTableId: number;\r\n\tRecordLifeStatusId: number;\r\n\tDestinationTypeId: number;\r\n\tDescription: string;\r\n\tIcon: IconModel;\r\n\t@serializeAs(TranslationModel)\r\n\tNameTranslations: Array<TranslationModel>;\r\n @serializeAs(TranslationModel)\r\n DescriptionTranslations: Array<TranslationModel>;\r\n UseFieldName: boolean;\r\n TitleFieldId: number;\r\n KanbanSubjectId: number;\r\n TodoEntityId: number;\r\n TodoTypeId: number;\r\n TodoFieldId: number;\r\n\r\n\tAttachedFields: Array<AttachedFieldModel>;\r\n\r\n\tScreenId: number;\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <!-- ko if: TypeName === 'ButtonCopy' --> <div class=\\\"form-group pull-left dbd-icon-place\\\"> <a class=\\\"icon-btn icon-btn-lg icon-manager-btn\\\" data-bind=\\\"click: OpenIconManager\\\"> <!-- ko if: Icon && Icon.Id--> <!-- ko ifnot: Icon.Image --> <i class=\\\"fa-5x fa-stack custom-color-option\\\" data-bind=\\\"text: !Icon.Id ? 'Select icon' : '', css: _iconModel.GetClasses(Icon.FontName, Icon.Name)\\\"></i> <!-- /ko --> <!-- ko if: Icon.Image--> <img class=\\\"img-responsive image-centered image-button\\\" data-bind=\\\"attr: {src: Icon.Image}\\\"> <!-- /ko --> <!-- /ko --> <!-- ko if: !Icon || !Icon.Id --> <i class=\\\"fa-5x fa-stack custom-color-option fa empty-icon\\\" data-bind=\\\"text: 'Select icon'\\\"></i> <!-- /ko --> </a> </div> <!-- /ko --> <div class=\\\"form-group\\\" data-bind=\\\"css: {'form-group-to-right' : TypeName === 'ButtonCopy'} \\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thasFocus: IsFocusedItem,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"text: Name, click: Toggle, class: Expanded() ? '' : 'collapsed'\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"class: Expanded() ? '' : 'collapse', css: { height: Expanded() ? '' : '0'}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {ControlModel} from \"Core/Controls/BaseControl/Models/ControlModel\";\r\n\r\nimport {DesignScreen} from \"Core/Screens/DesignScreen/DesignScreen\";\r\n\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport {LanguageModel} from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\n\r\nimport {ControlEditorModel} from \"../Models/ControlEditorModel\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/BaseControlEditor.html';\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/BaseControlEditor'] = Template;\r\n\r\nexport const EVENTS = {\r\n CONTROL_SAVED: 'CONTROL_SAVED'\r\n};\r\n\r\nexport const CONTROL_DEFAULT_NAME: string = 'Default';\r\n\r\nexport class BaseControlEditor extends Event {\r\n private _modal: Modal;\r\n\r\n protected Control: IControl;\r\n protected SubjectEntityId: number;\r\n\r\n protected EditControl: IControl;\r\n protected EditControlModel: ControlModel;\r\n\r\n protected NameTranslations: KnockoutObservableArray<TranslationModel>;\r\n protected DescriptionTranslations: KnockoutObservableArray<TranslationModel>;\r\n protected SelectedName: KnockoutObservable<TranslationModel>;\r\n protected SelectedDescription: KnockoutObservable<TranslationModel>;\r\n\r\n protected NameFocused: KnockoutObservable<boolean>;\r\n protected NameTranslationsOpened: KnockoutObservable<boolean>;\r\n protected DescriptionTranslationsOpened: KnockoutObservable<boolean>;\r\n protected UseFieldName: KnockoutObservable<boolean>;\r\n\r\n protected Description: KnockoutObservable<string>;\r\n\r\n protected IsValid: KnockoutObservable<boolean>;\r\n private ValidationMsg: KnockoutObservable<string>;\r\n\r\n protected Labels = LABELS;\r\n\r\n constructor(control: IControl) {\r\n super();\r\n\r\n this._modal = new Modal({\r\n closeOnEsc: false,\r\n addClass: 'jBox-padding-15px',\r\n });\r\n\r\n this.NameFocused = ko.observable(true);\r\n this.NameTranslationsOpened = ko.observable(false);\r\n this.DescriptionTranslationsOpened = ko.observable(false);\r\n\r\n this.SelectedName = ko.observable(null);\r\n this.SelectedDescription = ko.observable(null);\r\n this.Description = ko.observable(null);\r\n\r\n this.UseFieldName = ko.observable(false);\r\n\r\n this.IsValid = ko.observable(true);\r\n this.ValidationMsg = ko.observable(this.Labels.THIS_FIELD_IS_REQUIRED);\r\n\r\n this.InitEditControlData(control);\r\n }\r\n\r\n get Id() {\r\n return this.EditControlModel.Id;\r\n }\r\n\r\n get TypeName() {\r\n return this.EditControlModel.TypeName;\r\n }\r\n\r\n get TypeTranslatedName() {\r\n return this.EditControlModel.TypeTranslatedName ? this.EditControlModel.TypeTranslatedName : this.TypeName;\r\n }\r\n\r\n get GeneralProperties() {\r\n return this.EditControl.GeneralProperties;\r\n }\r\n\r\n get DefaultTranslation() {\r\n return _.find(this.NameTranslations, (item) => item.Language.K_Language === -1);\r\n }\r\n\r\n\r\n Show() {\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n ShowNameTranslations() {\r\n this.NameTranslationsOpened(true);\r\n }\r\n\r\n ToggleNameTranslations() {\r\n if (this.NameTranslationsOpened()) {\r\n this.HideNameTranslations();\r\n } else {\r\n this.ShowNameTranslations();\r\n this.SetFocusItem(this.NameTranslations());\r\n }\r\n }\r\n\r\n ToggleDescriptionTranslations() {\r\n if (this.DescriptionTranslationsOpened()) {\r\n this.DescriptionTranslationsOpened(false);\r\n } else {\r\n this.DescriptionTranslationsOpened(true);\r\n this.SetFocusItem(this.DescriptionTranslations());\r\n }\r\n }\r\n\r\n // Add to focus the first blank item Name and item Description\r\n SetFocusItem(ArrTranslate: Array<TranslationModel>) {\r\n let focusEmptyElement = _.find(ArrTranslate, item => {\r\n if (item.Translation === undefined) {\r\n return item.Translation === undefined;\r\n } else if (item.Translation === null) {\r\n return item.Translation === null;\r\n } else if (item.Translation === '') {\r\n return item.Translation === '';\r\n }\r\n });\r\n let isMobile = MobileChecker.IsMobile();\r\n focusEmptyElement && focusEmptyElement.IsFocusedItem(!isMobile);\r\n }\r\n\r\n HideNameTranslations() {\r\n this.NameTranslationsOpened(false);\r\n }\r\n\r\n SelectNameTranslation(translationModel: TranslationModel) {\r\n this.NameFocused(true);\r\n this.SelectedName(translationModel);\r\n this.HideNameTranslations();\r\n }\r\n\r\n SelectDescriptionTranslation(translationModel: TranslationModel) {\r\n this.SelectedDescription(translationModel);\r\n this.DescriptionTranslationsOpened(false);\r\n }\r\n\r\n UpdateTranslationList() {\r\n let languages = this.NameTranslations().slice();\r\n this.NameTranslations([]);\r\n this.NameTranslations(languages);\r\n }\r\n\r\n GetFieldMaxLength(): number {\r\n if(!this.EditControlModel) {\r\n return;\r\n }\r\n const maxLength = this.EditControlModel.NameMaxSize;\r\n\r\n return maxLength > 0 ? maxLength : -1;\r\n }\r\n\r\n UpdateDescriptionTranslationList() {\r\n let languages = this.DescriptionTranslations().slice();\r\n this.DescriptionTranslations([]);\r\n this.DescriptionTranslations(languages);\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n this._modal.Show();\r\n }\r\n\r\n Validate(): string {\r\n if (!this.SelectedName()) {\r\n this.IsValid(false);\r\n return 'Please, provide control name';\r\n }\r\n\r\n if (!this.EditControl.IsPropertiesValid()) {\r\n this.IsValid(false);\r\n const propertiesErrors = this.EditControl.GetPropertiesErrors();\r\n\r\n const errorMessage = _.find(propertiesErrors, error => !_.isEmpty(error));\r\n return !_.isEmpty(errorMessage) ? errorMessage : NOTIFICATIONS.PLEASE_SET_ALL_PROPERTIES;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n Cancel() {\r\n this.Close();\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n }\r\n\r\n Save(): void {\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n const controlEditorModel = this.GetControlEditorModel();\r\n\r\n this.Trigger(EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n\r\n this.Close();\r\n }\r\n\r\n ChangeTranslation() {\r\n let current = _.find(this.NameTranslations(), (item) => {\r\n return item.Language.K_Language === this.SelectedName().Language.K_Language;\r\n });\r\n this.SelectedName(current);\r\n }\r\n\r\n OnKeyUpUpdateTranslationList(that, event): boolean {\r\n this.UpdateTranslationList();\r\n\r\n return this.NameValidate(that, event);\r\n }\r\n\r\n OnKeyUpChangeTranslation(that, event): boolean {\r\n this.ChangeTranslation();\r\n\r\n return this.NameValidate(that, event);\r\n }\r\n\r\n NameValidate(that, event): boolean {\r\n const fieldMaxLength = this.GetFieldMaxLength();\r\n if(that.Translation && that.Translation.length > 0 && fieldMaxLength !== -1 && that.Translation.length >= fieldMaxLength){\r\n this.IsValid(false);\r\n this.ValidationMsg(`${NOTIFICATIONS.MAXIMUM_LENGTH_OF_THIS_FIELD} ${fieldMaxLength}`);\r\n }else {\r\n this.IsValid(true);\r\n }\r\n\r\n return this.IsValid();\r\n }\r\n\r\n ChangeDescriptionTranslation() {\r\n let current = _.find(this.DescriptionTranslations(), (item) => {\r\n return item.Language.K_Language === this.SelectedDescription().Language.K_Language;\r\n });\r\n this.SelectedDescription(current);\r\n }\r\n\r\n GetControlEditorModel() {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n const controlEditorModel = new ControlEditorModel();\r\n\r\n controlEditorModel.K_Control = this.EditControlModel.Id;\r\n controlEditorModel.Name = _.find(this.EditControlModel.NameTranslations, translationItem => translationItem.IsDefault).Translation;\r\n controlEditorModel.F_Type = this.EditControlModel.TypeId;\r\n controlEditorModel.TypeName = this.EditControlModel.TypeName;\r\n controlEditorModel.TypeTranslatedName = this.EditControlModel.TypeTranslatedName;\r\n controlEditorModel.ScreenId = this.EditControlModel.ScreenId;\r\n\r\n controlEditorModel.RecordLifeStatusId = this.EditControlModel.RecordLifeStatusId;\r\n controlEditorModel.DestinationTypeId = this.EditControlModel.DestinationTypeId;\r\n controlEditorModel.Description = _.find(this.EditControlModel.DescriptionTranslations, translationItem => translationItem.IsDefault).Translation;\r\n\r\n const generalProperties = this.EditControl.GeneralProperties;\r\n controlEditorModel.Properties = generalProperties ? generalProperties.Serialize() : null;\r\n\r\n this.EditControlModel.NameTranslations\r\n .filter(translationItem => !translationItem.IsDefault)\r\n .forEach(translationItem => controlEditorModel.NameTranslations.push(translationItem));\r\n\r\n if (this.UseFieldName()) {\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n translation.Translation = '';\r\n })\r\n } else {\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n if (translation.Selected || (desktopLanguage == translation.Language.ShortName)) {\r\n translation.Selected = true;\r\n }\r\n });\r\n }\r\n\r\n this.EditControlModel.DescriptionTranslations\r\n .filter(translationItem => !translationItem.IsDefault)\r\n .forEach(translationItem => controlEditorModel.DescriptionTranslations.push(translationItem));\r\n\r\n const parentControl = this.EditControl.GetParentControl();\r\n\r\n controlEditorModel.ParentControlId = parentControl ? parentControl.GetControlId() : 0;\r\n controlEditorModel.HasParentControl = !!parentControl;\r\n controlEditorModel.SubFormId = parentControl ? 0 : this.EditControl.GetForm().GetFormId();\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/BaseControlEditor';\r\n }\r\n\r\n protected GetSubjectEntityId() {\r\n return this.EditControl.GetForm().GetScreen().GetEntityId();\r\n }\r\n\r\n protected GetSubjectEntityName() {\r\n return this.EditControl.GetForm().GetScreen().GetEntityName();\r\n }\r\n\r\n protected GetSubjectTableTypeId() {\r\n return this.EditControl.GetForm().GetScreen().GetTableTypeId();\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n this.Control = control;\r\n this.SubjectEntityId = control.GetForm().GetScreen().GetEntityId();\r\n\r\n this.EditControl = this.Control.Clone();\r\n\r\n this.EditControlModel = this.EditControl.GetModel();\r\n this.EditControlModel.Id = this.Control.GetControlId();\r\n\r\n this.Description(this.EditControlModel.Description);\r\n this.UseFieldName(this.EditControlModel.UseFieldName);\r\n\r\n this.InitName();\r\n }\r\n\r\n protected GetDesignScreen() {\r\n return <DesignScreen>this.EditControl.GetForm().GetScreen();\r\n }\r\n\r\n protected IsScreenOfType(...screenTypes: ScreenTypes[]) {\r\n const screenTypeName = this.GetDesignScreen().GetType();\r\n return _.any(screenTypes, requestedType => requestedType === ScreenTypes[screenTypeName]);\r\n }\r\n\r\n private InitName() {\r\n const defaultName = new TranslationModel();\r\n defaultName.Language = new LanguageModel(-1);\r\n if (this.UseFieldName()) {\r\n defaultName.Translation = this.EditControlModel.Name || (this.Control.GetFieldModel() && this.Control.GetFieldModel().Name) || CONTROL_DEFAULT_NAME;\r\n } else {\r\n defaultName.Translation = this.EditControlModel.Name;\r\n }\r\n\r\n const defaultTranslation = new TranslationModel();\r\n defaultTranslation.Language = new LanguageModel(-1);\r\n defaultTranslation.Translation = this.EditControlModel.Description;\r\n\r\n this.EditControlModel.NameTranslations.unshift(defaultName);\r\n this.EditControlModel.DescriptionTranslations.unshift(defaultTranslation);\r\n this.NameTranslations = ko.observableArray(this.EditControlModel.NameTranslations);\r\n this.DescriptionTranslations = ko.observableArray(this.EditControlModel.DescriptionTranslations);\r\n this.SelectedName(this.GetNameTranslation());\r\n this.SelectedDescription(this.GetDescriptionTranslation());\r\n }\r\n\r\n private GetNameTranslation() {\r\n const name = _.find(this.EditControlModel.NameTranslations, language => language.Selected && language.Translation !== '' && language.Translation !== null);\r\n return name || _.first(this.NameTranslations());\r\n }\r\n\r\n private GetDescriptionTranslation() {\r\n const description = _.find(this.EditControlModel.DescriptionTranslations, language => language.Selected && language.Translation !== '' && language.Translation !== null);\r\n return description || _.first(this.DescriptionTranslations());\r\n }\r\n\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nimport { TranslationModel } from \"./TranslationModel\";\r\n\r\nexport class BlobFieldModel {\r\n\t@deserialize\r\n\tFieldId: number;\r\n\r\n\t@deserialize\r\n\tFieldName: string;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tFieldNameTranslations: Array<TranslationModel>;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tEntityNameTranslations: Array<TranslationModel>;\r\n\r\n\t@deserialize\r\n\tEntityNameWithFieldName: string;\r\n}","\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {BlobFieldModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/BlobFieldModel';\r\n\r\nexport interface IGetBlobFieldsRequestModel {\r\n\tControlTypeName: string;\r\n\tContextEntityId: number;\r\n\tIsControlInMainSubForm: boolean;\r\n};\r\n\r\nexport class BlobFieldsStore {\r\n\tstatic Get(params: IGetBlobFieldsRequestModel): P.Promise<Array<BlobFieldModel>> {\r\n\t\tvar deferredResult = P.defer<Array<BlobFieldModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetBlobFields\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif ( data.IsSuccessfull ) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): any {\r\n\t\tvar model = GenericDeserialize<BlobFieldModel>(jsonObject.Data, BlobFieldModel);\r\n\t\treturn model;\r\n\t}\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class LookupFieldModel {\r\n\t@deserialize\r\n\tLookupTableTableId: number;\r\n\r\n\t@deserialize\r\n\tLookupTableTableName: string;\r\n\r\n\t@deserialize\r\n\tLookupTableValueFieldId: number;\r\n\r\n\t@deserialize\r\n\tLookupTableValueFieldName: string;\r\n\r\n\t@deserialize\r\n\tPrimaryTableLookupFieldName: string;\r\n\t\r\n\t@deserialize\r\n\tPrimaryTableLookupFieldId: number;\r\n\r\n\t@deserialize\r\n\tValTableId: number;\r\n\r\n\t@deserialize\r\n\tValFieldId: number;\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {LookupFieldModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/LookupFieldModel';\r\n\r\nexport interface IGetLookupFieldsRequestModel {\r\n\tContextEntityId: number;\r\n};\r\n\r\nexport class LookupFieldsStore {\r\n\tstatic GetLookup( params: IGetLookupFieldsRequestModel ): P.Promise<Array<LookupFieldModel>> {\r\n\t\tvar deferredResult = P.defer<Array<LookupFieldModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetLookupFields\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif ( data.IsSuccessfull ) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMultiSelect(params: IGetLookupFieldsRequestModel): P.Promise<Array<LookupFieldModel>> {\r\n\t\tvar deferredResult = P.defer<Array<LookupFieldModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetMultiSelectFields\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize( jsonObject: any ): any {\r\n\t\tvar model = GenericDeserialize<LookupFieldModel>(jsonObject.Data, LookupFieldModel);\r\n\t\treturn model;\r\n\t}\r\n}","export enum LabelPositions {\r\n\tNoLabel = 0,\r\n\tLeft = 1,\r\n\tUpperLeft = 2,\r\n\tUpperMiddle = 3,\r\n\tUpperRight = 4,\r\n\tRight = 5,\r\n\tLeftColon = 6\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport Dropzone from 'dropzone';\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request} from 'Core/Common/Request';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {FONT_NAME, ICON_NAME} from 'Core/Constant';\r\n\r\n// Templates\r\nimport IconManagerTemplate from 'Core/Components/IconManager/Templates/IconManager.html'\r\nko.templates['Core/Components/IconManager/Templates/IconManager'] = IconManagerTemplate;\r\n\r\nexport class IconManager extends Event {\r\n private _modal: Modal;\r\n private _icons: IconModel[];\r\n private _entityColor: string;\r\n private _groupedIcons: KnockoutObservable<any>;\r\n private _dropzoneShown: KnockoutObservable<boolean>;\r\n private _uploadetImages: any[];\r\n private dropZone: any;\r\n private FONT_NAME = FONT_NAME;\r\n private _iconModel = IconModel;\r\n\r\n constructor(icons: IconModel[]) {\r\n super();\r\n\r\n this._icons = icons;\r\n this._entityColor = null;\r\n this._groupedIcons = ko.observable(null);\r\n this._dropzoneShown = ko.observable(false);\r\n this._uploadetImages = [];\r\n this.AddEvent('ICON_SELECTED');\r\n this.InitUI();\r\n }\r\n\r\n RenderTemplate() {\r\n let i = 0;\r\n this._groupedIcons(_.groupBy(this._icons, (item) => item.FontName));\r\n\r\n _.each(this._groupedIcons(), (value: IconModel[], key: any) => {\r\n if (i === 0) {\r\n value.splice(0, 0, {\r\n Name: ICON_NAME.EMPTY_ICON,\r\n FontName: key,\r\n Image: null,\r\n IsIcon: true,\r\n IsImage: false,\r\n Id: 0\r\n });\r\n i++;\r\n }\r\n });\r\n }\r\n\r\n SetIcon(icon: IconModel) {\r\n this.Trigger('ICON_SELECTED', {Icon: icon});\r\n this._modal.Close();\r\n }\r\n\r\n InitUI() {\r\n this._modal = new Modal();\r\n this.RenderTemplate();\r\n }\r\n\r\n Show() {\r\n this._modal = new Modal({});\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n AfterRender() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n }\r\n\r\n OpenDropzone() {\r\n this._dropzoneShown(true);\r\n this.InitDropzone();\r\n }\r\n\r\n HideDropzone() {\r\n this._dropzoneShown(false);\r\n }\r\n\r\n private InitDropzone() {\r\n var self = this;\r\n var dz = new Dropzone('.imagedropzone',\r\n {\r\n url: URL.CONTROLS.IMAGE.SAVE_UPLOADED_FILE,\r\n autoProcessQueue: false,\r\n addRemoveLinks: true,\r\n dictRemoveFile: '',\r\n acceptedFiles: '.png,.gif,.jpg,.jpeg,.jpe,.jif,.jfif,.jfi',\r\n });\r\n\r\n dz.on('addedfile', self.AfterUpload.bind(self));\r\n dz.on('removedfile', (file) => {\r\n var self = this;\r\n let fileIndex = self._uploadetImages.indexOf(file);\r\n if (fileIndex === -1) {\r\n const fileToRemove = self._uploadetImages.find(image => image.Image === (file as any).dataURL && image.Name === file.name);\r\n fileIndex = self._uploadetImages.indexOf(fileToRemove);\r\n }\r\n self._uploadetImages.splice(fileIndex, 1);\r\n });\r\n self.dropZone = dz;\r\n }\r\n\r\n AfterUpload(file) {\r\n var self = this;\r\n var reader = new FileReader();\r\n reader.onloadend = () => {\r\n self._uploadetImages.push({\r\n Name: file.name,\r\n FontName: 'Graphical',\r\n Image: reader.result\r\n });\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n };\r\n\r\n Upload() {\r\n var self = this;\r\n if (this._uploadetImages.length > 0) {\r\n BlockUI.Block();\r\n Request.Send({\r\n proxy: {\r\n contentType: 'application/json; charset=utf-8',\r\n type: 'POST',\r\n url: '/api/DataBaseDesignerApi/SaveIcons'\r\n }, params: JSON.stringify({ IconsList : this._uploadetImages })\r\n }).always(() => BlockUI.Unblock())\r\n .then((response) => {\r\n self._uploadetImages = [];\r\n self.dropZone.removeAllFiles(true);\r\n self._dropzoneShown(false);\r\n new Notifier().Success('Successfully saved.');\r\n self._icons.push(...response);\r\n self._groupedIcons(_.groupBy(self._icons, (item) => item.FontName));\r\n }).fail(data => { \r\n let jsonResult = JSON.parse(data.message);\r\n\t\t\t\tnew Notifier().Failed(jsonResult.Message);\r\n\t\t\t });\r\n }\r\n };\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/IconManager/Templates/IconManager';\r\n }\r\n}","// Module\nvar code = \"<div id=\\\"icon-manager\\\" class=\\\"icon-manager box-shadow-wrapper\\\"> <div class=\\\"tab-wrapper\\\"> <ul data-bind=\\\"foreachprop: _groupedIcons\\\" class=\\\"nav nav-tabs\\\"> <li data-bind=\\\"css: {'active': $index() == 0}\\\" class=\\\"tab\\\"> <a data-toggle=\\\"tab\\\" class=\\\"tab-link\\\" data-bind=\\\"text: key, attr: {href: '#tab_' + key}\\\"> </a> </li> </ul> </div> <div class=\\\"tab-content tab-page-result\\\" data-bind=\\\"foreachprop: _groupedIcons\\\"> <div data-bind=\\\"attr: {id: 'tab_' + key}, css: {'in active': $index() == 0, 'mix-grid': key === $parent.FONT_NAME.GRAPHICAL}\\\" class=\\\"tab-pane mix-grid fade\\\"> <!--ko if: $index() == 0 --> <div class=\\\"icon-manager__dropzoneWrapper\\\"> <!--ko ifnot: $parent._dropzoneShown --> <button type=\\\"submit\\\" class=\\\"btn\\\" data-bind=\\\"click: $parent.OpenDropzone.bind($parent)\\\"> <i class=\\\"fa fa-plus\\\"></i> </button> <!-- /ko --> <!--ko if: $parent._dropzoneShown --> <button type=\\\"submit\\\" class=\\\"btn\\\" data-bind=\\\"click: $parent.HideDropzone.bind($parent)\\\"> <i class=\\\"fa fa-minus\\\"></i> </button> <div id=\\\"dropZone\\\" class=\\\"dropZoneBox\\\"> <button type=\\\"submit\\\" class=\\\"btn blue start\\\" data-bind=\\\"click: $parent.Upload.bind($parent)\\\"> <i class=\\\"fa fa-upload\\\"></i> <span> Start upload </span> </button> <form class=\\\"dropzone imagedropzone dz-clickable\\\" fieldid=\\\"dropzoneId\\\" data=\\\"\\\" id=\\\"dropFileId\\\"> <div class=\\\"dz-default dz-message\\\"></div> </form> </div> <!-- /ko --> </div> <!-- /ko --> <div class=\\\"mix-grid\\\"> <!--ko foreach: value --> <!--ko ifnot: IsImage--> <span class=\\\"icon-container\\\"> <a href=\\\"#\\\" class=\\\"icon-btn\\\" data-bind=\\\"click: $parents[1].SetIcon.bind($parents[1], $data)\\\"> <i class=\\\"fa-5x fa-stack custom-color-option\\\" data-bind=\\\"css: $parents[1]._iconModel.GetClasses(FontName, Name)\\\"></i> </a> <span class=\\\"icon-name\\\" data-bind=\\\"text: Name.replace('fa-', '')\\\"></span> </span> <!-- /ko --> <!--ko if: IsImage--> <div class=\\\"col-md-1 col-sm-1 mix mix_all\\\"> <div class=\\\"mix-inner image-icon white-bordered\\\"> <img class=\\\"img-responsive image-centered\\\" data-bind=\\\"attr: {src: Image}, click: $parents[1].SetIcon.bind($parents[1], $data)\\\"/> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: _labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: _labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: _labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <!-- ko if: TypeName === 'GenericButton' || TypeName === 'ButtonTemplate' --> <div class=\\\"form-group pull-left dbd-icon-place\\\"> <a class=\\\"icon-btn icon-btn-lg icon-manager-btn\\\" data-bind=\\\"click: OpenIconManager\\\"> <!-- ko if: Icon && Icon.Id--> <!-- ko ifnot: Icon.Image --> <i class=\\\"fa-5x fa-stack custom-color-option\\\" data-bind=\\\"text: !Icon.Id ? 'Select icon' : '', css: _iconModel.GetClasses(Icon.FontName, Icon.Name)\\\"></i> <!-- /ko --> <!-- ko if: Icon.Image--> <img class=\\\"img-responsive image-centered image-button\\\" data-bind=\\\"attr: {src: Icon.Image}\\\"> <!-- /ko --> <!-- /ko --> <!-- ko if: !Icon || !Icon.Id --> <i class=\\\"fa-5x fa-stack custom-color-option fa empty-icon\\\" data-bind=\\\"text: 'Select icon'\\\"></i> <!-- /ko --> </a> </div> <!-- /ko --> <div class=\\\"form-group\\\" data-bind=\\\"css: {'form-group-to-right' : TypeName === 'GenericButton' || TypeName === 'ButtonTemplate'} \\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: _labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValidName(), 'has-error-without-border': !IsValidName()},\\r\\n tooltip:{ content: ValidationMsgForName() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: _currentControlName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent._isControlNameHasFocus,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tenable: !$parent._useFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'has-error': !$parent._isValid()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: _showLanguageList }, click: $data.ShowLanguageList.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: _showLanguageList }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: Translations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t\\tenable: !$parent._useFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t\\thasFocus: IsFocusedItem,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> <!--ko if: ShowUseFieldNameToggle--> <label class=\\\"control-label\\\"><!-- ko text: _labels.USE_FIELD_NAME --><!-- /ko --></label> <a data-bind=\\\"click: ToggleUseFieldName\\\" tabindex=\\\"-1\\\" class=\\\"control-toggle-button\\\" href=\\\"#\\\"> <i data-bind=\\\"css: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'fa-toggle-off': !_useFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'fa-toggle-on': _useFieldName()\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t }\\\" class=\\\"fa transition fa-toggle-on\\\"></i> </a> <!--/ko--> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: _labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group labelPosition-block\\\"> <label class=\\\"control-label\\\" for=\\\"labelPositionId\\\"> <!-- ko text: _labels.LABEL_POSITION --><!-- /ko --> </label> <div> <select data-bind=\\\"options: LabelPositions, optionsText: 'Title', value: SelectedLabelPosition\\\" id=\\\"labelPositionId\\\" class=\\\"form-control\\\" name=\\\"labelPositionId\\\"></select> </div> </div> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: _labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: _currentControlDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent._labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: _showDescriptionsLanguageList }, click: $data.ShowDescriptionLanguageList.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: _showDescriptionsLanguageList }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: _labels.FIELD --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div data-bind=\\\"visible: _showEntityList\\\" class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"entityId\\\"> <!-- ko text: _labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: Entities,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsText: 'EntityName',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: SelectedEntity,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalueAllowUnset: true\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"> </select> </div> </div> <div data-bind=\\\"visible: _showEntityTypesList\\\" class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"entityTypeId\\\"> <!-- ko text: _labels.TYPE --><!-- /ko --> </label> <div> <select data-bind=\\\"options: EntityTypes, optionsText: 'Name', value: SelectedEntityType\\\" class=\\\"form-control\\\" name=\\\"entityTypeId\\\"></select> </div> </div> <div data-bind=\\\"visible: _showSubEntityList\\\" class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"subEntityId\\\"> <!-- ko text: _labels.SUB_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: SubEntities, optionsText: 'EntityName', value: SelectedSubEntity\\\" class=\\\"form-control\\\" name=\\\"subEntityId\\\"></select> </div> </div> <div data-bind=\\\"visible: _allowSelectField\\\" class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"fieldId\\\"> <!-- ko text: _labels.FIELD --><!-- /ko --> </label> <div> <select data-bind=\\\"options: Fields, optionsText: 'FullName', optionsAfterRender: SetOptionDisable, value: SelectedField, enableAttr: Fields().length > 0\\\" id=\\\"selectedFieldId\\\" class=\\\"form-control\\\" name=\\\"fieldId\\\"></select> </div> </div> <div data-bind=\\\"visible: _allowSelectField\\\" class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"maskId\\\"> <!-- ko text: _labels.MASK --><!-- /ko --> </label> <div> <select id=\\\"selectedMaskId\\\" class=\\\"form-control\\\" name=\\\"maskId\\\" disabled=\\\"disabled\\\"> <option>None</option> </select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion3\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr: { href: '#' + $data.Id }, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion3\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr: { id: $data.Id }\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel';\r\nimport {BaseControlEditor, CONTROL_DEFAULT_NAME} from \"./BaseControlEditor\";\r\n\r\nimport {EntitiesStore} from 'Core/Screens/DesignScreen/ControlEditor/Stores/EntitiesStore';\r\nimport {BlobFieldsStore} from 'Core/Screens/DesignScreen/ControlEditor/Stores/BlobFieldsStore';\r\nimport {LookupFieldsStore} from 'Core/Screens/DesignScreen/ControlEditor/Stores/LookupFieldsStore';\r\nimport {EntityModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/EntityModel';\r\nimport {EntityTypeModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/EntityTypeModel';\r\nimport {FieldModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/FieldModel';\r\nimport {LabelPositions} from 'Core/Screens/DesignScreen/ControlEditor/Enums/LabelPositions';\r\nimport {ControlEditorModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/ControlEditorModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {TabPage} from 'Core/Controls/TabPage/TabPage';\r\nimport {DesignScreen} from 'Core/Screens/DesignScreen/DesignScreen';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {IconManager} from 'Core/Components/IconManager/IconManager'\r\nimport {TABLE_TYPES, CONTROL_TYPES, FIELD_TYPES} from 'Core/Constant';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/ControlEditor.html'\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/ControlEditor'] = Template;\r\n\r\nimport {LanguageModel} from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {TranslationFieldEditor} from \"Core/Components/TranslationFieldEditor/TranslationFieldEditor\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {Drop} from \"Core/Controls/Drop/Drop\";\r\nimport {TimeWriting} from \"Core/Controls/TimeWriting/TimeWriting\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {BlobFieldModel} from '../Models/BlobFieldModel';\r\nimport { ButtonTemplate } from 'Core/Controls/ButtonTemplate/ButtonTemplate';\r\n\r\nexport interface ILabelPosition {\r\n Value: number;\r\n Title: string;\r\n}\r\n\r\nvar DEFAULT_CONTROL_NAME = \"Default name\";\r\n\r\nexport class ControlEditor extends Event {\r\n private _control: IControl;\r\n private _editControl: IControl;\r\n private _modal: Modal;\r\n private _controlName: KnockoutObservable<string>;\r\n private _controlTypeName: KnockoutObservable<string>;\r\n private _editControlModel: ControlModel;\r\n private _controlId: number;\r\n private _controlGuid: string;\r\n private _subjectEntityId: number;\r\n private _subjectSubEntityId: number;\r\n private _tableTypeId: number;\r\n private _entities: KnockoutObservableArray<EntityModel>;\r\n private _entityTypes: KnockoutObservableArray<EntityTypeModel>;\r\n private _subEntities: KnockoutObservableArray<EntityModel>;\r\n private _fields: KnockoutObservableArray<FieldModel>;\r\n private _selectedEntity: KnockoutObservable<EntityModel>;\r\n private _selectedEntityType: KnockoutObservable<EntityTypeModel>;\r\n private _selectedSubEntity: KnockoutObservable<EntityModel>;\r\n private _selectedField: KnockoutObservable<FieldModel>;\r\n private _labelPositions: KnockoutObservableArray<ILabelPosition>;\r\n private _selectedLabelPosition: KnockoutObservable<ILabelPosition>;\r\n private _controlEditorModel: ControlEditorModel;\r\n private _showEntityList: KnockoutObservable<boolean>;\r\n private _showEntityTypesList: KnockoutObservable<boolean>;\r\n private _showSubEntityList: KnockoutObservable<boolean>;\r\n private _allowSelectField: KnockoutObservable<boolean>;\r\n private _currentControlName: KnockoutObservable<TranslationModel>;\r\n private _controlNameTranslations: KnockoutObservableArray<TranslationModel>;\r\n private _currentControlDescription: KnockoutObservable<TranslationModel>;\r\n private _controlDescriptionTranslations: KnockoutObservableArray<TranslationModel>;\r\n\r\n\tprivate _blobFields: KnockoutObservableArray<BlobFieldModel>;\r\n private _useFieldName: KnockoutObservable<boolean>;\r\n\r\n private _instantaneousValue: KnockoutObservable<string>;\r\n private _isControlNameHasFocus: KnockoutObservable<boolean>;\r\n private _showLanguageList: KnockoutObservable<boolean>;\r\n private _showDescriptionsLanguageList: KnockoutObservable<boolean>;\r\n private _selectFieldSubscription: KnockoutSubscription;\r\n private _labels = LABELS;\r\n private _icon: KnockoutObservable<IconModel>;\r\n private _iconModel = IconModel;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _translationFieldEditor: TranslationFieldEditor;\r\n private _defaultEntityType: EntityTypeModel;\r\n\r\n private IsValidName: KnockoutObservable<boolean>;\r\n private ValidationMsgForName: KnockoutObservable<string>;\r\n\r\n constructor(control: IControl) {\r\n super();\r\n this._modal = new Modal();\r\n this._control = control;\r\n this._icon = ko.observable(control.GetIcon());\r\n\r\n this._editControl = control.Clone();\r\n this._editControlModel = this._editControl.GetModel();\r\n this._editControlModel.Id = control.GetControlId();\r\n this._controlName = ko.observable(this._editControlModel.Name);\r\n\t\tthis._selectFieldSubscription = null;\r\n\r\n\t\tthis._blobFields = ko.observableArray(null);\r\n this._useFieldName = ko.observable(this._editControlModel.UseFieldName);\r\n\t\tthis._useFieldName.subscribe((newValue) => {\r\n\t if (newValue) {\r\n\t\t this.UseFieldNameForControlName();\r\n\t }\r\n });\r\n\r\n const defaultName = new TranslationModel();\r\n defaultName.Language = new LanguageModel(-1);\r\n defaultName.Translation = this._editControlModel.Name || CONTROL_DEFAULT_NAME;\r\n this._editControlModel.NameTranslations.unshift(defaultName);\r\n\r\n const defaultTranslation = new TranslationModel();\r\n defaultTranslation.Language = new LanguageModel(-1);\r\n defaultTranslation.Translation = this._editControlModel.Description;\r\n this._editControlModel.DescriptionTranslations.unshift(defaultTranslation);\r\n\r\n this._controlNameTranslations = ko.observableArray(this._editControlModel.NameTranslations);\r\n this._controlDescriptionTranslations = ko.observableArray(this._editControlModel.DescriptionTranslations);\r\n\r\n this._defaultEntityType = new EntityTypeModel();\r\n this._defaultEntityType.Name = this._labels.ALL;\r\n\r\n this._subjectEntityId = this._editControl.GetForm().GetScreen().GetEntityId();\r\n this._tableTypeId = this._editControl.GetForm().GetScreen().GetTableTypeId();\r\n this._entities = ko.observableArray([]);\r\n this._entityTypes = ko.observableArray([this._defaultEntityType]);\r\n this._subEntities = ko.observableArray([]);\r\n this._fields = ko.observableArray([]);\r\n this._selectedEntity = ko.observable(null);\r\n this._selectedEntityType = ko.observable(this._defaultEntityType);\r\n this._selectedSubEntity = ko.observable(null);\r\n this._selectedField = ko.observable(null);\r\n this._controlEditorModel = new ControlEditorModel();\r\n this._showEntityList = ko.observable(true);\r\n this._showEntityTypesList = ko.observable(false);\r\n this._showSubEntityList = ko.observable(false);\r\n this._allowSelectField = ko.observable(true);\r\n this._isControlNameHasFocus = ko.observable(true);\r\n this._showLanguageList = ko.observable(false);\r\n this._showDescriptionsLanguageList = ko.observable(false);\r\n this._isValid = ko.observable(true);\r\n\r\n this._labelPositions = ko.observableArray([\r\n {Value: LabelPositions.NoLabel, Title: LabelPositions[LabelPositions.NoLabel]},\r\n {Value: LabelPositions.Left, Title: LabelPositions[LabelPositions.Left]},\r\n {Value: LabelPositions.UpperLeft, Title: LabelPositions[LabelPositions.UpperLeft]},\r\n {Value: LabelPositions.UpperMiddle, Title: LabelPositions[LabelPositions.UpperMiddle]},\r\n {Value: LabelPositions.UpperRight, Title: LabelPositions[LabelPositions.UpperRight]},\r\n {Value: LabelPositions.Right, Title: LabelPositions[LabelPositions.Right]},\r\n {Value: LabelPositions.LeftColon, Title: LabelPositions[LabelPositions.LeftColon]}\r\n ]);\r\n\r\n var uniqFieldsByEntityType = _.uniq(this._editControl.GetModel().Fields, false, field => field.EntityTypeId);\r\n\r\n _.forEach(uniqFieldsByEntityType,\r\n field => {\r\n if (field.EntityTypeName === TABLE_TYPES.Entity) {\r\n this._subjectEntityId = field.EntityId;\r\n this._tableTypeId = 0;\r\n }\r\n\r\n if (field.EntityTypeName === TABLE_TYPES.Sub) {\r\n this._subjectSubEntityId = field.EntityId;\r\n }\r\n });\r\n\r\n var selectedLabelPosition = _.find(this._labelPositions(), item => {\r\n return item.Value === LabelPositions[this._editControlModel.LabelPosition]\r\n });\r\n this._selectedLabelPosition = ko.observable(selectedLabelPosition);\r\n\r\n this._selectedLabelPosition.subscribe(newValue => {\r\n this._editControlModel.LabelPosition = LabelPositions[newValue.Value];\r\n });\r\n\r\n this._selectedEntity.subscribe(newValue => {\r\n if (newValue) {\r\n let editControl = this._editControl;\r\n if (editControl instanceof ComplexControl) {\r\n editControl.AutoSelectFields([newValue]);\r\n this._fields([]);\r\n\r\n if (this._editControl instanceof Drop) {\r\n this._fields(_.filter(newValue.Fields, (field) => {\r\n return field.FieldTypeName === FIELD_TYPES.Document;\r\n }));\r\n this._entityTypes(_.union([this._defaultEntityType], newValue.EntityTypes));\r\n this._selectedEntityType(this._defaultEntityType);\r\n }\r\n\r\n BlockUI.Block();\r\n EntitiesStore.GetSubEntities({EntityId: newValue.EntityId, TableTypeId: this._tableTypeId})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(subEntities => {\r\n if (this._editControl instanceof Drop) {\r\n let documentFields = [];\r\n _.each(subEntities, (subEntity) => {\r\n documentFields = documentFields.concat(\r\n _.filter(subEntity.Fields, (field) => {\r\n field.FullName = `${subEntity.EntityName}, ${field.FieldName}`;\r\n return field.FieldTypeName === FIELD_TYPES.Document;\r\n }));\r\n });\r\n\r\n this._fields(this._fields().concat(documentFields));\r\n this._fields(_.uniq(this._fields(), false, field => field.FieldId));\r\n this.SetCurrentField();\r\n } else {\r\n this._subEntities(subEntities);\r\n let selectedSubEntity = _.find(subEntities, subEntity => {\r\n return subEntity.EntityId === this._subjectSubEntityId\r\n });\r\n\r\n if (selectedSubEntity) {\r\n this._selectedSubEntity(selectedSubEntity);\r\n }\r\n }\r\n });\r\n } else if (this._editControlModel.IsLookupFieldAttached) {\r\n this.LoadLookupFieldsForEntity(newValue);\r\n } else {\r\n this._fields(newValue.Fields);\r\n }\r\n\r\n var generalProperties = this._editControl.GeneralProperties;\r\n if (generalProperties && this._editControl instanceof ButtonTemplate) {\r\n generalProperties.ResetProperty('TemplateType');\r\n }\r\n }\r\n });\r\n\r\n this._selectedSubEntity.subscribe(newValue => {\r\n if (newValue) {\r\n let editControl = this._editControl;\r\n if (editControl instanceof ComplexControl) {\r\n const selectedEntity = this.SelectedEntity();\r\n editControl.AutoSelectFields([selectedEntity, newValue]);\r\n\r\n if (editControl instanceof TimeWriting) {\r\n const nameField = selectedEntity.Fields.find(field => field.FieldName === 'NAME');\r\n\r\n if (nameField) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = nameField.FieldId;\r\n attachedFieldModel.Name = nameField.FieldName;\r\n attachedFieldModel.EntityName = selectedEntity.EntityName;\r\n attachedFieldModel.EntityId = selectedEntity.EntityId;\r\n attachedFieldModel.EntityTypeName = selectedEntity.TypeName;\r\n attachedFieldModel.EntityTypeId = selectedEntity.TypeId;\r\n attachedFieldModel.Sort = this._editControlModel.Fields.length * 10;\r\n attachedFieldModel.FieldTypeName = nameField.FieldTypeName;\r\n this._editControlModel.Fields.push(attachedFieldModel);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n this._currentControlName = ko.observable(null);\r\n this._currentControlDescription = ko.observable(null);\r\n\r\n this.IsValidName = ko.observable(true);\r\n this.ValidationMsgForName = ko.observable(LABELS.THIS_FIELD_IS_REQUIRED);\r\n }\r\n\r\n LoadLookupFieldsForEntity(entity: EntityModel) {\r\n var requestModel = {\r\n ContextEntityId: entity.EntityId\r\n };\r\n LookupFieldsStore.GetLookup(requestModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(data => {\r\n var fields = [];\r\n _.each(data, (item) => {\r\n var field = new FieldModel();\r\n field.FieldId = item.PrimaryTableLookupFieldId;\r\n field.FieldName = `${item.PrimaryTableLookupFieldName}`;\r\n field.ValTableId = item.ValTableId;\r\n field.ValFieldId = item.ValFieldId;\r\n field.FieldTypeName = FIELD_TYPES.Lookup;\r\n fields.push(field);\r\n });\r\n this._fields(fields);\r\n this.SetCurrentField();\r\n });\r\n }\r\n\r\n SetCurrent() {\r\n let translationsModel = _.find(this._editControlModel.NameTranslations, language => language.Selected && language.Translation !== '' && language.Translation !== null)\r\n || _.first(this._controlNameTranslations());\r\n\r\n this._currentControlName(translationsModel);\r\n }\r\n\r\n SetCurrentDescription() {\r\n let translationsModel = _.find(this._editControlModel.DescriptionTranslations, language => language.Selected && language.Translation !== '' && language.Translation !== null)\r\n || _.first(this._controlDescriptionTranslations());\r\n\r\n this._currentControlDescription(translationsModel);\r\n }\r\n\r\n SelectTranslation(translationModel: TranslationModel) {\r\n this._currentControlName(translationModel);\r\n this._isControlNameHasFocus(true);\r\n this._showLanguageList(false);\r\n }\r\n\r\n SelectDescriptionTranslation(translationModel: TranslationModel) {\r\n this._currentControlDescription(translationModel);\r\n this._showDescriptionsLanguageList(false);\r\n }\r\n\r\n UpdateTranslationList() {\r\n let languages = this._controlNameTranslations().slice(0);\r\n this._controlNameTranslations([]);\r\n this._controlNameTranslations(languages);\r\n }\r\n\r\n UpdateDescriptionTranslationList() {\r\n let languages = this._controlDescriptionTranslations().slice(0);\r\n this._controlDescriptionTranslations([]);\r\n this._controlDescriptionTranslations(languages);\r\n }\r\n\r\n ChangeTranslation() {\r\n let current = _.find(this._controlNameTranslations(), (item) => {\r\n return item.Language.K_Language === this._currentControlName().Language.K_Language;\r\n });\r\n this._currentControlName(current);\r\n }\r\n\r\n ChangeDescriptionTranslation() {\r\n let current = _.find(this._controlDescriptionTranslations(), (item) => {\r\n return item.Language.K_Language === this._currentControlDescription().Language.K_Language;\r\n });\r\n this._currentControlDescription(current);\r\n }\r\n\r\n ShowLanguageList(controlEditor) {\r\n this._showLanguageList(!this._showLanguageList());\r\n this.SetFocusItem(this._controlNameTranslations());\r\n }\r\n\r\n ShowDescriptionLanguageList(controlEditor) {\r\n this._showDescriptionsLanguageList(!this._showDescriptionsLanguageList());\r\n this.SetFocusItem(this._controlDescriptionTranslations());\r\n }\r\n\r\n ToggleUseFieldName() {\r\n\t this._useFieldName(!this._useFieldName());\r\n }\r\n\r\n // Add to focus the first blank item Name and item Description\r\n SetFocusItem(ArrTranslate: Array<TranslationModel>) {\r\n let focusEmptyElement = _.find(ArrTranslate, item => {\r\n if (item.Translation === undefined) {\r\n return item.Translation === undefined;\r\n } else if (item.Translation === null) {\r\n return item.Translation === null;\r\n } else if (item.Translation === '') {\r\n return item.Translation === '';\r\n }\r\n });\r\n let isMobile = MobileChecker.IsMobile();\r\n focusEmptyElement && focusEmptyElement.IsFocusedItem(!isMobile);\r\n }\r\n\r\n LoadData() {\r\n if (this._editControlModel.IsBlobFieldAttached) {\r\n this._showEntityList(false);\r\n return this.LoadBlobControlData();\r\n }\r\n\r\n if (this._editControlModel.IsLookupFieldAttached) {\r\n this._showEntityList(true);\r\n return this.LoadLookupControlData();\r\n }\r\n\r\n if (this._editControlModel.IsMultiSelectFieldAttached) {\r\n this._showEntityList(false);\r\n return this.LoadMultiSelectControlData();\r\n }\r\n\r\n if (this._editControlModel.IsFieldAttached) {\r\n return this.LoadGeneralControlData();\r\n }\r\n\r\n if (this._editControlModel.IsComplexControl) {\r\n if (this._editControl instanceof Drop) {\r\n this._allowSelectField(true);\r\n this._showEntityTypesList(true);\r\n this._showSubEntityList(false);\r\n } else {\r\n this._allowSelectField(false);\r\n this._showEntityTypesList(false);\r\n this._showSubEntityList(true);\r\n }\r\n return this.LoadGeneralControlData();\r\n }\r\n\r\n BlockUI.Unblock();\r\n this._allowSelectField(false);\r\n }\r\n\r\n LoadLookupControlData() {\r\n return EntitiesStore.Get({EntityId: this._subjectEntityId, TableTypeId: this._tableTypeId})\r\n .always(() => BlockUI.Unblock())\r\n .then(entities => {\r\n this._entities(entities);\r\n\r\n /*var selectedEntity = _.find(entities, entity => { return entity.EntityId === this._subjectEntityId });\r\n\r\n if (!selectedEntity) {\r\n selectedEntity = _.first(entities);\r\n }\r\n\r\n if (selectedEntity) {\r\n this.LoadLookupFieldsForEntity(selectedEntity);\r\n }*/\r\n });\r\n }\r\n\r\n LoadMultiSelectControlData() {\r\n var requestModel = {\r\n ContextEntityId: this._editControl.GetForm().GetScreen().GetEntityId()\r\n };\r\n var fields = [];\r\n return LookupFieldsStore.GetMultiSelect(requestModel)\r\n .always(() => BlockUI.Unblock())\r\n .then(data => {\r\n _.each(data, (item) => {\r\n var field = new FieldModel();\r\n field.FieldId = item.PrimaryTableLookupFieldId;\r\n field.FieldName = `${item.LookupTableTableName} ${item.LookupTableValueFieldName}`;\r\n fields.push(field);\r\n });\r\n this._fields(fields);\r\n this.SetCurrentField();\r\n });\r\n }\r\n\r\n LoadBlobControlData() {\r\n var isControlInMainSubForm = true;\r\n if (this._editControl.GetParentControl()) {\r\n isControlInMainSubForm = !(this._editControl.GetParentControl() instanceof TabPage);\r\n }\r\n\r\n var requestModel = {\r\n ControlTypeName: this._editControlModel.TypeName,\r\n ContextEntityId: this._editControl.GetForm().GetScreen().GetEntityId(),\r\n IsControlInMainSubForm: isControlInMainSubForm\r\n }\r\n return BlobFieldsStore.Get(requestModel)\r\n .always(() => BlockUI.Unblock())\r\n .then(data => {\r\n var fields = [];\r\n _.each(data, (item) => {\r\n var field = new FieldModel();\r\n field.FieldId = item.FieldId;\r\n field.FieldName = item.EntityNameWithFieldName;\r\n field.FullName = item.EntityNameWithFieldName;\r\n fields.push(field);\r\n\t\t\t\t});\r\n\r\n this._blobFields(data);\r\n this._fields(fields);\r\n this.SetCurrentField();\r\n });\r\n }\r\n\r\n LoadGeneralControlData() {\r\n return EntitiesStore.Get({EntityId: this._subjectEntityId, TableTypeId: this._tableTypeId})\r\n .always(() => BlockUI.Unblock())\r\n .then(entities => {\r\n entities.forEach(entity => entity.Fields = entity.Fields.filter(field => field.FieldTypeName !== FIELD_TYPES.Property));\r\n\r\n if (this._editControl instanceof Drop) {\r\n entities = _.filter(entities, entity => entity.TypeName !== TABLE_TYPES.Link);\r\n _.each(entities, (entity) => {\r\n _.each((entity.Fields), (field) => {\r\n field.FullName = `${entity.EntityName}, ${field.FieldName}`;\r\n });\r\n });\r\n }\r\n\r\n let designScreen = <DesignScreen>this._editControl.GetForm().GetScreen();\r\n let isEditScreen = designScreen.GetType() === ScreenTypes[ScreenTypes.EditScreen];\r\n let isListScreen = designScreen.GetType() === ScreenTypes[ScreenTypes.ListScreen];\r\n let isOnlySubject =\r\n (isEditScreen || isListScreen) && this._control.GetType() !== CONTROL_TYPES.Drop && !(this._editControl instanceof ComplexControl);\r\n\r\n if (isOnlySubject) {\r\n let subjectEntity = _.find(entities, entity => {\r\n return entity.EntityId === this._subjectEntityId\r\n });\r\n\r\n let existFieldIds = [];\r\n\r\n _.each(designScreen.Controls,\r\n (control) => {\r\n if (control.GetModel().Fields.length === 1) {\r\n existFieldIds.push(control.GetModel().Fields[0].Id);\r\n }\r\n });\r\n\r\n let currentField = _.first(this._editControlModel.Fields);\r\n\r\n if (currentField) {\r\n _.each(subjectEntity.Fields, (field) => {\r\n if ((_.contains(existFieldIds, field.FieldId) && currentField.Id !== field.FieldId)\r\n || field.IsPrimaryKey() || (isEditScreen && field.IsSystem)) {\r\n field.IsEnabled = false;\r\n }\r\n });\r\n } else {\r\n _.each(subjectEntity.Fields, (field) => {\r\n if (_.contains(existFieldIds, field.FieldId) || field.IsPrimaryKey() || (isEditScreen && field.IsSystem)) {\r\n field.IsEnabled = false;\r\n }\r\n });\r\n }\r\n\r\n this._entities([subjectEntity]);\r\n } else {\r\n this._entities(entities);\r\n }\r\n\r\n let selectedEntity = _.find(entities, entity => {\r\n return entity.EntityId === this._subjectEntityId\r\n });\r\n\r\n if (!selectedEntity) {\r\n selectedEntity = _.first(entities);\r\n }\r\n\r\n if (selectedEntity) {\r\n const subjectField = _.first(this._editControl.GetModel().Fields);\r\n\r\n if (this._editControl instanceof Drop) {\r\n const dropControlSubjectEntity = subjectField && _.find(this._entities(), (entity) => {\r\n return !!_.find(entity.Fields, (entityField) => {\r\n return entityField.FieldId === subjectField.Id;\r\n });\r\n });\r\n\r\n this._selectedEntity(dropControlSubjectEntity || selectedEntity);\r\n\r\n const destinationTypeId = this._editControl.GetModel().DestinationTypeId;\r\n if(destinationTypeId && destinationTypeId > 0){\r\n let entityType = _.find(this._entityTypes(), item => item.Id === destinationTypeId);\r\n entityType = entityType? entityType : _.first(this._entityTypes());\r\n this._selectedEntityType(entityType);\r\n }else{\r\n this._selectedEntityType(_.first(this._entityTypes()));\r\n }\r\n\r\n this._fields(_.filter(this._selectedEntity().Fields, (field) => {\r\n return field.FieldTypeName === FIELD_TYPES.Document\r\n }));\r\n } else {\r\n const controlSubjectEntity = subjectField && _.find(entities, entity =>\r\n entity.EntityId === subjectField.ValTableId\r\n );\r\n if (controlSubjectEntity) {\r\n selectedEntity = controlSubjectEntity;\r\n }\r\n\r\n this._selectedEntity(selectedEntity);\r\n this._fields(selectedEntity.Fields);\r\n }\r\n this.SetCurrentField();\r\n }\r\n });\r\n }\r\n\r\n SetCurrentSubEntity() {\r\n var entity = _.first(this._subEntities());\r\n\r\n if (entity) {\r\n this._selectedSubEntity(entity);\r\n }\r\n }\r\n\r\n SetCurrentField() {\r\n let field = null;\r\n\r\n if (this._editControl instanceof Drop) {\r\n if (this._editControl.Files.length === 3) {\r\n field = this._editControlModel.Fields[2];\r\n }\r\n } else {\r\n field = _.first(this._editControlModel.Fields);\r\n }\r\n\r\n if (field) {\r\n let selectedField = _.find(this._fields(), item => {\r\n return item.FieldId === field.Id\r\n });\r\n if (selectedField) {\r\n this._selectedField(selectedField);\r\n }\r\n } else {\r\n let selectedField = _.find(this._fields(), (item) => {\r\n return item.IsEnabled\r\n });\r\n\r\n if (this._editControl instanceof Drop) {\r\n if (selectedField) {\r\n let attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = selectedField.FieldId;\r\n attachedFieldModel.Name = selectedField.FieldName;\r\n attachedFieldModel.Sort = 2 * 10;\r\n attachedFieldModel.FieldTypeName = selectedField.FieldTypeName;\r\n this._editControl.GetModel().Fields[2] = attachedFieldModel;\r\n }\r\n }\r\n\r\n this._selectedField(selectedField);\r\n\t\t\tif (this._selectedField()) {\r\n\t\t\t\tvar generalProperties = this._editControl.GeneralProperties;\r\n if (generalProperties && !(this._editControl instanceof Drop)) {\r\n if (!this._editControl.GetFieldModel()) {\r\n var attachedField = new AttachedFieldModel();\r\n this._editControl.GetModel().Fields.push(attachedField);\r\n }\r\n\r\n this._editControl.GetFieldModel().Id = this._selectedField().FieldId;\r\n this._editControl.GetFieldModel().ValTableId = this._selectedField().ValTableId;\r\n\r\n generalProperties.ResetProperty('QueryCondition');\r\n\t\t\t\t}\r\n\r\n if (this._useFieldName()) {\r\n\t this.UseFieldNameForControlName();\r\n }\r\n }\r\n }\r\n\r\n if (this._selectFieldSubscription) {\r\n this._selectFieldSubscription.dispose();\r\n }\r\n\r\n this._selectFieldSubscription = this._selectedField.subscribe(newValue => {\r\n\r\n\t\t\tif (newValue) {\r\n\t\t\t\tif (this._editControl instanceof Drop) {\r\n\t\t\t\t\tlet attachedFieldModel = new AttachedFieldModel();\r\n\t\t\t\t\tattachedFieldModel.Id = newValue.FieldId;\r\n\t\t\t\t\tattachedFieldModel.Name = newValue.FieldName;\r\n\t\t\t\t\tattachedFieldModel.Sort = 2 * 10;\r\n\t\t\t\t\tattachedFieldModel.FieldTypeName = newValue.FieldTypeName;\r\n\t\t\t\t\tthis._editControl.GetModel().Fields[2] = attachedFieldModel;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar generalProperties = this._editControl.GeneralProperties;\r\n\t\t\t\t\tif (generalProperties) {\r\n\r\n\t\t\t\t\t\tif (!this._editControl.GetFieldModel()) {\r\n\t\t\t\t\t\t\tvar attachedField = new AttachedFieldModel();\r\n\t\t\t\t\t\t\tthis._editControl.GetModel().Fields.push(attachedField);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis._editControl.GetFieldModel().Id = this._selectedField().FieldId;\r\n\t\t\t\t\t\tthis._editControl.GetFieldModel().ValTableId = this._selectedField().ValTableId;\r\n\r\n\t\t\t\t\t\tgeneralProperties.ResetProperty('QueryCondition');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._controlName(newValue.FieldName);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._useFieldName()) {\r\n\t\t\t\t\tthis.UseFieldNameForControlName();\r\n\t\t\t\t}\r\n\t\t\t}\r\n \r\n });\r\n\r\n }\r\n\r\n OpenIconManager() {\r\n const screen = this._control.GetForm().GetScreen() as DesignScreen;\r\n const icons = screen.DesignModel.Icons;\r\n\r\n let iconManager = new IconManager(icons);\r\n iconManager.Show();\r\n\r\n iconManager.On('ICON_SELECTED', this, (eventArgs) => {\r\n this._icon(eventArgs.data.Icon);\r\n });\r\n }\r\n\r\n GetFieldMaxLength(): number {\r\n if(!this._editControlModel) {\r\n return ;\r\n }\r\n const maxLength = this._editControlModel.NameMaxSize;\r\n\r\n return maxLength > 0 ? maxLength : -1;\r\n }\r\n\r\n NameValidate(that, event): boolean {\r\n const fieldMaxLength = this.GetFieldMaxLength();\r\n if(that.Translation && that.Translation.length > 0 && fieldMaxLength !== -1 && that.Translation.length >= fieldMaxLength){\r\n this.IsValidName(false);\r\n this.ValidationMsgForName(`${NOTIFICATIONS.MAXIMUM_LENGTH_OF_THIS_FIELD} ${fieldMaxLength}`);\r\n }else {\r\n this.IsValidName(true);\r\n }\r\n\r\n return this.IsValidName();\r\n }\r\n\r\n OnKeyUpUpdateTranslationList(that, event): boolean {\r\n this.UpdateTranslationList();\r\n\r\n return this.NameValidate(that, event);\r\n }\r\n\r\n OnKeyUpChangeTranslation(that, event): boolean {\r\n this.ChangeTranslation();\r\n\r\n return this.NameValidate(that, event);\r\n }\r\n\r\n get SelectedLabelPosition() {\r\n\r\n return this._selectedLabelPosition;\r\n }\r\n\r\n get LabelPositions() {\r\n return this._labelPositions;\r\n }\r\n\r\n get SelectedEntity() {\r\n return this._selectedEntity;\r\n }\r\n\r\n get SelectedEntityType() {\r\n return this._selectedEntityType;\r\n }\r\n\r\n get SelectedSubEntity() {\r\n return this._selectedSubEntity;\r\n }\r\n\r\n get SelectedField() {\r\n return this._selectedField;\r\n }\r\n\r\n get Entities() {\r\n return this._entities;\r\n }\r\n\r\n get EntityTypes() {\r\n return this._entityTypes;\r\n }\r\n\r\n get SubEntities() {\r\n return this._subEntities;\r\n }\r\n\r\n get Fields() {\r\n return this._fields;\r\n }\r\n\r\n get Id() {\r\n return this._editControlModel.Id === 0 || !this._editControlModel.Id ? this._editControl.GetGuid() : this._editControlModel.Id;\r\n }\r\n\r\n get Name() {\r\n return this._controlName;\r\n }\r\n\r\n get Translations() {\r\n return this._controlNameTranslations();\r\n }\r\n\r\n get DescriptionTranslations() {\r\n return this._controlDescriptionTranslations();\r\n }\r\n\r\n get TypeName() {\r\n return this._editControlModel.TypeName;\r\n }\r\n\r\n get TypeTranslatedName() {\r\n return this._editControlModel.TypeTranslatedName ? this._editControlModel.TypeTranslatedName : this.TypeName;\r\n }\r\n\r\n get Icon() {\r\n return this._icon();\r\n }\r\n\r\n get GeneralProperties() {\r\n return this._editControl.GeneralProperties;\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/ControlEditor';\r\n }\r\n\r\n Show() {\r\n this._modal = new Modal({});\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n AfterRender() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n BlockUI.Block();\r\n\r\n this.SetCurrent();\r\n this.SetCurrentDescription();\r\n this.LoadData();\r\n }\r\n\r\n Validate() {\r\n return this.IsValid() && this._editControl.IsPropertiesValid();\r\n }\r\n\r\n Save() {\r\n if (this.Validate()) {\r\n this.Deserialize();\r\n this.Trigger('CONTROL_SAVED', {UpdateControlModel: this._controlEditorModel});\r\n if (this._modal) {\r\n this._modal.Close();\r\n }\r\n } else {\r\n //todo create nice validation\r\n new Notifier().Warning(NOTIFICATIONS.PLEASE_SET_ALL_PROPERTIES);\r\n }\r\n\r\n }\r\n\r\n Deserialize() {\r\n let self = this;\r\n this._controlEditorModel.Name = this._controlName();\r\n this._controlEditorModel.K_Control = this._editControlModel.Id;\r\n this._controlEditorModel.F_Type = this._editControlModel.TypeId;\r\n this._controlEditorModel.TypeName = this._editControlModel.TypeName;\r\n this._controlEditorModel.LabelPosName = this._editControlModel.LabelPosition;\r\n this._controlEditorModel.LabelPos = LabelPositions[this._editControlModel.LabelPosition];\r\n var parentControl = this._editControl.GetParentControl();\r\n this._controlEditorModel.ParentControlId = parentControl ? parentControl.GetControlId() : 0;\r\n this._controlEditorModel.HasParentControl = parentControl ? true : false;\r\n this._controlEditorModel.FieldId = this._selectedField() ? this._selectedField().FieldId : 0;\r\n this._controlEditorModel.ValTableId = this._selectedField() ? this._selectedField().ValTableId : 0;\r\n this._controlEditorModel.ValFieldId = this._selectedField() ? this._selectedField().ValFieldId : 0;\r\n this._controlEditorModel.TypeName = this._selectedField() ? this._selectedField().FieldTypeName : '';\r\n this._controlEditorModel.FieldName = this._selectedField() ? this._selectedField().FieldName : '';\r\n this._controlEditorModel.EntityName = this._selectedEntity() ? this._selectedEntity().EntityName : this._editControl.GetForm().GetScreen().GetEntityName();\r\n\r\n this._controlEditorModel.EntityId = this._selectedEntity() ? this._selectedEntity().EntityId : this._editControl.GetForm().GetScreen().GetEntityId();\r\n this._controlEditorModel.DestinationTypeId = this._selectedEntityType() ? this._selectedEntityType().Id : 0;\r\n this._controlEditorModel.SubTableId = this._selectedSubEntity() && this._selectedSubEntity().EntityId;\r\n this._controlEditorModel.SubFormId = parentControl ? 0 : this._editControl.GetForm().GetFormId();\r\n this._controlEditorModel.Description = this._controlDescriptionTranslations()[0].Translation;\r\n this._controlEditorModel.Icon = this._icon();\r\n this._controlEditorModel.UseFieldName = this._useFieldName();\r\n\r\n var editControl = this._editControl;\r\n\r\n if (editControl instanceof ComplexControl) {\r\n this._controlEditorModel.AttachedFields = editControl.GetModel().Fields;\r\n _.forEach(this._controlEditorModel.AttachedFields, field => {\r\n let iconModel = new IconModel();\r\n iconModel.Name = this._selectedEntity().IconName;\r\n iconModel.FontName = this._selectedEntity().FontName;\r\n iconModel.Image = this._selectedEntity().GraphicalIcon;\r\n iconModel.IsIcon = this._selectedEntity().GraphicalIcon == null;\r\n iconModel.IsImage = !iconModel.IsIcon;\r\n\r\n field.EntityIcon = iconModel;\r\n });\r\n }\r\n\r\n _.each(self._editControlModel.NameTranslations, (item) => {\r\n if (item.Language.K_Language === -1) {\r\n self._controlEditorModel.Name = item.Translation;\r\n } else {\r\n self._controlEditorModel.NameTranslations.push(item);\r\n }\r\n });\r\n\r\n _.each(self._editControlModel.DescriptionTranslations, (item) => {\r\n if (item.Language.K_Language === -1) {\r\n self._controlEditorModel.Description = item.Translation;\r\n } else {\r\n self._controlEditorModel.DescriptionTranslations.push(item);\r\n }\r\n });\r\n\r\n let generalProperties = this._editControl.GeneralProperties;\r\n\r\n this._controlEditorModel.Properties = generalProperties ? generalProperties.Serialize() : null;\r\n }\r\n\r\n SetOptionDisable(option, item) {\r\n ko.applyBindingsToNode(option, {\r\n enableAttr: item.IsEnabled,\r\n css: {\r\n disabled: !item.IsEnabled\r\n }\r\n }, item);\r\n }\r\n\r\n Cancel() {\r\n this._modal.Close();\r\n }\r\n\r\n IsValid(): boolean {\r\n this.SetDefaultValueByTranslation();\r\n if (this.DefaultName.Translation) {\r\n this._isValid(true);\r\n return true;\r\n }\r\n this._isValid(false);\r\n return false;\r\n }\r\n\r\n get DefaultName() {\r\n return _.find(this.Translations, (item) => item.Language.K_Language === -1);\r\n }\r\n\r\n get DefaultDescription() {\r\n return _.find(this.DescriptionTranslations, (item) => item.Language.K_Language === -1);\r\n }\r\n\r\n\tget ShowUseFieldNameToggle() {\r\n\t\treturn this.TypeName === CONTROL_TYPES.Document;\r\n\t}\r\n\r\n private SetDefaultValueByTranslation() {\r\n let defaultItem = this.DefaultName;\r\n if (defaultItem && defaultItem.Translation) {\r\n return true;\r\n } else if (defaultItem && !defaultItem.Translation) {\r\n let currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n let currentLangItem = _.find(this.Translations, (item) => {\r\n return currentLang.Id === item.Language.K_Language;\r\n });\r\n\r\n if (currentLangItem.Translation) {\r\n defaultItem.Translation = currentLangItem.Translation;\r\n } else {\r\n let first = _.find(this.Translations, (item) => {\r\n return item.Translation;\r\n });\r\n if (first) {\r\n defaultItem.Translation = first.Translation;\r\n }\r\n }\r\n }\r\n\t}\r\n\r\n\tprivate UseFieldNameForControlName() {\r\n\t\tif (this.TypeName === CONTROL_TYPES.Document) {\r\n\t\t\tconst blobField = _.find(this._blobFields(), field => this._selectedField() && field.FieldId === this._selectedField().FieldId);\r\n\t\t\tif (blobField) {\r\n\t\t\t\tconst controlName = `${blobField.EntityName}.${blobField.FieldName}`;\r\n\t\t\t\tthis._controlName(controlName);\r\n\r\n\t\t\t\t_.each(this._controlNameTranslations(),\r\n\t\t\t\t\ttranslationModel => {\r\n\t\t\t\t\t\tif (translationModel.Language.K_Language === -1) {\r\n\t\t\t\t\t\t\ttranslationModel.Translation = controlName;\r\n\t\t\t\t\t\t\tthis._currentControlName(translationModel);\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\tconst entityNameTranslation =\r\n\t\t\t\t\t\t\t_.find(blobField.EntityNameTranslations, entityTranslation => entityTranslation.Language.K_Language === translationModel.Language.K_Language);\r\n\t\t\t\t\t\tif (!entityNameTranslation || !entityNameTranslation.Translation) {\r\n\t\t\t\t\t\t\ttranslationModel.Translation = null;\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\tconst fieldNameTranslation =\r\n\t\t\t\t\t\t\t_.find(blobField.FieldNameTranslations, fieldTranslation => fieldTranslation.Language.K_Language === translationModel.Language.K_Language);\r\n\t\t\t\t\t\tif (!fieldNameTranslation || !fieldNameTranslation.Translation) {\r\n\t\t\t\t\t\t\ttranslationModel.Translation = null;\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\ttranslationModel.Translation = `${entityNameTranslation.Translation}.${fieldNameTranslation.Translation}`;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tthis.UpdateTranslationList();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tenable: !$parent.UseFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\" enable: !$parent.UseFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t textInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t hasFocus: IsFocusedItem,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> <label class=\\\"control-label\\\"><!-- ko text: Labels.USE_FIELD_NAME --><!-- /ko --></label> <a data-bind=\\\"click: ToggleUseFieldName\\\" tabindex=\\\"-1\\\" class=\\\"control-toggle-button\\\" href=\\\"#\\\"> <i data-bind=\\\"css: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'fa-toggle-off': !UseFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'fa-toggle-on': UseFieldName()\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t }\\\" class=\\\"fa transition fa-toggle-on\\\"></i> </a> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group labelPosition-block\\\"> <label class=\\\"control-label\\\" for=\\\"labelPositionId\\\"> <!-- ko text: Labels.LABEL_POSITION --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _labelPositions, optionsText: 'Title', value: _selectedLabelPosition\\\" id=\\\"labelPositionId\\\" class=\\\"form-control\\\" name=\\\"labelPositionId\\\"></select> </div> </div> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field only-vertical-resize\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> <span data-bind=\\\"css: { open: $parent.DescriptionTranslationsOpened }, click: $parent.ToggleDescriptionTranslations.bind($parent)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: Labels.FIELD --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _entities, optionsText: 'EntityName', value: _selectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.FIELD --><!-- /ko --> </label> <div data-bind=\\\"if: _selectedEntity\\\"> <select data-bind=\\\"options: _fields, optionsText: 'FieldName',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsAfterRender: FieldSelectorAfterRender,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: _selectedField,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tenableAttr: _fields().length > 0,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent: { change: $data.OnSelectField.bind($data, $data) }\\\" id=\\\"selectedFieldId\\\" class=\\\"form-control\\\" name=\\\"fieldId\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\n\r\nimport {LabelPositions} from 'Core/Screens/DesignScreen/ControlEditor/Enums/LabelPositions';\r\n\r\nimport {BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS} from \"./BaseControlEditor\";\r\n\r\nimport {ILabelPosition} from \"./ControlEditor\";\r\n\r\nimport {EntitiesStore} from \"Core/Screens/DesignScreen/ControlEditor/Stores/EntitiesStore\";\r\nimport {EntityModel} from \"Core/Screens/DesignScreen/ControlEditor/Models/EntityModel\";\r\n\r\nimport {FieldModel} from \"../Models/FieldModel\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/FieldControlEditor.html';\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {FIELD_TYPES} from \"../../../../Constant\";\r\nimport { GENERAL_PROPERTIES } from 'Core/GeneralProperties/Managers/Constants';\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/FieldControlEditor'] = Template;\r\n\r\nexport const EVENTS = {\r\n ENTITY_SELECTED: 'ENTITY_SELECTED',\r\n FIELD_SELECTED: 'FIELD_SELECTED'\r\n};\r\n\r\nexport class FieldControlEditor extends BaseControlEditor {\r\n private _labelPositions: KnockoutObservableArray<ILabelPosition>;\r\n private _selectedLabelPosition: KnockoutObservable<ILabelPosition>;\r\n\r\n private _fields: KnockoutObservableArray<FieldModel>;\r\n private _selectedField: KnockoutObservable<FieldModel>;\r\n\r\n protected _entities: KnockoutObservableArray<EntityModel>;\r\n protected _selectedEntity: KnockoutObservable<EntityModel>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this.InitEditControlData(control);\r\n this.BindEvents();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/FieldControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n BlockUI.Block();\r\n\r\n this.LoadData()\r\n .then(entities => this.PopulateEntities(entities))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n LoadData() {\r\n return EntitiesStore.Get({\r\n EntityId: this.GetSubjectEntityId(),\r\n TableTypeId: this.GetSubjectTableTypeId()\r\n });\r\n }\r\n\r\n Save(): void {\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const controlEditorModel = this.GetControlEditorModel();\r\n\r\n this.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n\r\n this.Close();\r\n }\r\n\r\n Validate() {\r\n const validationError = super.Validate();\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedField()) {\r\n this.IsValid(false);\r\n return 'Please, select field';\r\n }\r\n }\r\n\r\n GetControlEditorModel() {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n const controlEditorModel = super.GetControlEditorModel();\r\n controlEditorModel.LabelPosName = this._selectedLabelPosition().Title;\r\n controlEditorModel.LabelPos = this._selectedLabelPosition().Value;\r\n\r\n const selectedEntity = this._selectedEntity();\r\n controlEditorModel.EntityId = selectedEntity.EntityId;\r\n controlEditorModel.EntityName = selectedEntity.EntityName;\r\n\r\n const selectedField = this._selectedField();\r\n controlEditorModel.FieldId = selectedField.FieldId;\r\n controlEditorModel.FieldName = selectedField.FieldName;\r\n controlEditorModel.FieldNameTranslation = selectedField.FieldNameTranslation;\r\n controlEditorModel.ValTableId = selectedField.ValTableId;\r\n controlEditorModel.ValFieldId = selectedField.ValFieldId;\r\n\r\n controlEditorModel.UseFieldName = this.UseFieldName();\r\n if (controlEditorModel.UseFieldName) {\r\n controlEditorModel.Name = selectedField.FieldName;\r\n } else {\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n if (translation.Selected || (desktopLanguage == translation.Language.ShortName)) {\r\n translation.Selected = true;\r\n }\r\n });\r\n }\r\n return controlEditorModel;\r\n }\r\n\r\n FieldSelectorAfterRender(option, item) {\r\n ko.applyBindingsToNode(option, {\r\n // has removed the functionality of the \"disabled/enabled of Fields\"\r\n enableAttr: true,\r\n css: {\r\n disabled: false\r\n }\r\n }, item);\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n super.InitEditControlData(control);\r\n\r\n this.InitLabelPositions();\r\n this.InitEntities();\r\n }\r\n\r\n protected BindEvents() {\r\n this._selectedEntity.subscribe(selectedEntity => {\r\n if (this._selectedEntity()) {\r\n this.Trigger(EVENTS.ENTITY_SELECTED, selectedEntity);\r\n }\r\n });\r\n\r\n this.On(EVENTS.ENTITY_SELECTED, this, eventArgs => this.OnEntityChange());\r\n this.On(EVENTS.FIELD_SELECTED, this, () => this.OnFieldChange());\r\n\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n\r\n this.UseFieldName.subscribe((newValue) => {\r\n if (newValue) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n });\r\n }\r\n\r\n OnSelectField(selectedField) {\r\n this.Trigger(EVENTS.FIELD_SELECTED, selectedField);\r\n }\r\n\r\n InitLabelPositions() {\r\n this._labelPositions = ko.observableArray([\r\n {Value: LabelPositions.NoLabel, Title: LabelPositions[LabelPositions.NoLabel]},\r\n {Value: LabelPositions.Left, Title: LabelPositions[LabelPositions.Left]},\r\n {Value: LabelPositions.UpperLeft, Title: LabelPositions[LabelPositions.UpperLeft]},\r\n {Value: LabelPositions.UpperMiddle, Title: LabelPositions[LabelPositions.UpperMiddle]},\r\n {Value: LabelPositions.UpperRight, Title: LabelPositions[LabelPositions.UpperRight]},\r\n {Value: LabelPositions.Right, Title: LabelPositions[LabelPositions.Right]},\r\n {Value: LabelPositions.LeftColon, Title: LabelPositions[LabelPositions.LeftColon]}\r\n ]);\r\n\r\n const selectedLabelPosition = _.find(this._labelPositions(), item => item.Value === LabelPositions[this.EditControlModel.LabelPosition]);\r\n this._selectedLabelPosition = ko.observable(selectedLabelPosition);\r\n }\r\n\r\n private InitEntities() {\r\n this._entities = ko.observableArray([]);\r\n this._selectedEntity = ko.observable(null);\r\n\r\n this._fields = ko.observableArray([]);\r\n this._selectedField = ko.observable(null);\r\n }\r\n\r\n PopulateEntities(entities: EntityModel[]) {\r\n entities = this.FilterEntities(entities);\r\n\r\n this._entities(entities);\r\n this.MarkAcceptableFields(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.EntityId === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this._selectedEntity(attachedEntity);\r\n } else {\r\n const subjectEntity = _.find(entities, entity => entity.EntityId === this.SubjectEntityId);\r\n this._selectedEntity(subjectEntity);\r\n }\r\n \r\n this._selectedField.subscribe(field=>{\r\n this.ResetProperties();\r\n });\r\n this.ResetProperties();\r\n }\r\n\r\n protected FilterEntities(entities: EntityModel[]) {\r\n const onlySubjectAcceptable = this.IsScreenOfType(ScreenTypes.EditScreen, ScreenTypes.ListScreen);\r\n\r\n if (onlySubjectAcceptable) {\r\n entities = entities.filter(entity => entity.EntityId === this.SubjectEntityId);\r\n }\r\n\r\n entities = _.uniq(entities, false, entity => entity.EntityId);\r\n entities.forEach(entity => entity.Fields = entity.Fields.filter(field => field.FieldTypeName !== FIELD_TYPES.Property));\r\n\r\n return entities;\r\n }\r\n\r\n protected ResetProperties(){\r\n let controlField = this.EditControl.GetFieldModel();\r\n if(this._selectedField() && this.EditControl.GeneralProperties && controlField?.Id != this._selectedField().FieldId){\r\n let attachedField = new AttachedFieldModel();\r\n attachedField.Id = this._selectedField().FieldId;\r\n this.EditControl.Fields[0] = attachedField;\r\n this.EditControl.GeneralProperties.ResetProperty(GENERAL_PROPERTIES.HIDE_IF_CONDITION);\r\n }\r\n }\r\n\r\n private MarkAcceptableFields(entities: EntityModel[]) {\r\n const usedFields = this.FindUsedFields();\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n\r\n //Disable used fields\r\n entities.forEach(entity => {\r\n entity.Fields\r\n .filter(field => (!attachedField || field.FieldId !== attachedField.Id) && _.contains(usedFields, field.FieldId))\r\n .forEach(field => field.IsEnabled = false);\r\n });\r\n }\r\n\r\n private FindUsedFields() {\r\n return this.GetDesignScreen().Controls\r\n .filter(control => control.HasOneField())\r\n .map(control => control.GetFieldModel().Id);\r\n }\r\n\r\n private OnEntityChange() {\r\n const selectedEntity = this._selectedEntity();\r\n\r\n this._fields(selectedEntity.Fields);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n if (attachedField) {\r\n const selectedField = _.find(selectedEntity.Fields, field => field.FieldId === attachedField.Id);\r\n this._selectedField(selectedField);\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n }\r\n }\r\n\r\n private OnFieldChange() {\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n } else {\r\n const translations = this.NameTranslations();\r\n const defTrans = this.NameTranslations()[0];\r\n defTrans.Translation = this._selectedField().FieldName;\r\n this.SelectedName(defTrans);\r\n this.NameTranslations([]);\r\n this.NameTranslations(translations);\r\n }\r\n }\r\n\r\n ToggleUseFieldName() {\r\n this.UseFieldName(!this.UseFieldName());\r\n }\r\n\r\n UseFieldNameAsControlName() {\r\n let field = this._selectedField();\r\n if (field) {\r\n _.each(this.NameTranslations(), (translation) => {\r\n\r\n if (translation.Language.K_Language === -1) {\r\n translation.Translation = field.FieldName;\r\n }\r\n\r\n let fieldTranslation = _.find(field.Translations, (fieldTranslation) => {\r\n return fieldTranslation.Language.K_Language === translation.Language.K_Language;\r\n });\r\n if (fieldTranslation) {\r\n\r\n if (this.SelectedName() && this.SelectedName().Language.K_Language == fieldTranslation.Language.K_Language) {\r\n this.SelectedName().Translation = fieldTranslation.Translation;\r\n this.SelectedName.valueHasMutated();\r\n }\r\n\r\n translation.Translation = fieldTranslation.Translation;\r\n }\r\n });\r\n let translations = this.NameTranslations();\r\n this.NameTranslations([]);\r\n this.NameTranslations(translations);\r\n\r\n const defTrans = this.NameTranslations()[0];\r\n defTrans.Translation = this._selectedField().FieldName;\r\n this.SelectedName(defTrans);\r\n }\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {BaseControlEditor} from \"./BaseControlEditor\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/GridControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/GridControlEditor'] = Template;\r\n\r\nexport class GridControlEditor extends BaseControlEditor {\r\n\tconstructor(control: IControl) {\r\n\t\tsuper(control);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Screens/DesignScreen/ControlEditor/Templates/GridControlEditor';\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'has-error': !$parent.IsValid()},\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class InvoiceTable {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tPrimaryFieldId: number;\r\n\r\n\t@deserialize\r\n\tPrimaryFieldName: string;\r\n}\r\n\r\nexport class LifeStatusModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tMemoTranslation: string;\r\n}\r\n\r\nexport class InvoiceType {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n\t@deserialize\r\n TableId: number;\r\n\r\n GetName(): string {\r\n return this.TranslatedName ? this.TranslatedName : this.Name\r\n }\r\n}\r\n\r\nexport class InvoicingControlConfigOptions {\r\n\t@deserialize\r\n\tIssue: string;\r\n\r\n\t@deserializeAs(InvoiceTable)\r\n\tSourceTables: InvoiceTable[];\r\n\r\n\t@deserializeAs(LifeStatusModel)\r\n\tSourceLifeStatuses: LifeStatusModel[];\r\n\r\n\t@deserializeAs(InvoiceTable)\r\n\tDestinationTables: InvoiceTable[];\r\n\r\n\t@deserializeAs(InvoiceType)\r\n\tDestinationTypes: InvoiceType[];\r\n}","import {Request} from 'Core/Common/Request';\r\n\r\nexport class FinancialControlStore {\r\n\tstatic GetConfigOptions(subjectTypeId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/FormDesignerApi/GetInvoiceControlConfigOptions',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: {subjectTypeId: subjectTypeId}\r\n\t\t});\r\n\t}\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\nimport {GenericDeserialize } from 'libs/cerialize';\r\n\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\nimport { Notifier } from \"Core/Common/Notifier\";\r\n\r\nimport { BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS } from \"../BaseControlEditor\";\r\nimport { IControl } from \"Core/Controls/IControl\";\r\n\r\nimport { AttachedFieldModel } from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\n\r\nimport {\r\n\tInvoicingControlConfigOptions,\r\n\tInvoiceTable,\r\n\tInvoiceType,\r\n\tLifeStatusModel\r\n} from \"./Models/InvoicingControlConfigOptions\";\r\n\r\n\r\nimport { FinancialControlStore } from \"Core/Screens/DesignScreen/ControlEditor/Stores/Controls/FinancialControlStore\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/FinancialControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/FinancialControlEditor'] = Template;\r\n\r\nexport class InvoicingControlEditor extends BaseControlEditor {\r\n\tprivate _configIssue: string;\r\n\r\n\tprivate _sourceTables: KnockoutObservableArray<InvoiceTable>;\r\n\tprivate _selectedSourceTable: KnockoutObservable<InvoiceTable>;\r\n\r\n\tprivate _sourceLifeStatuses: KnockoutObservableArray<LifeStatusModel>;\r\n\tprivate _selectedSourceLifeStatus: KnockoutObservable<LifeStatusModel>;\r\n\r\n\tprivate _destinationTables: KnockoutObservableArray<InvoiceTable>;\r\n\tprivate _selectedDestinationTable: KnockoutObservable<InvoiceTable>;\r\n\r\n\tprivate _destinationTypes: KnockoutObservableArray<InvoiceType>;\r\n\tprivate _selectedDestinationType: KnockoutObservable<InvoiceType>;\r\n\r\n\tconstructor(control: IControl) {\r\n\t\tsuper(control);\r\n\r\n\t\tthis._sourceTables = ko.observableArray([]);\r\n\t\tthis._selectedSourceTable = ko.observable(null);\r\n\r\n\t\tthis._sourceLifeStatuses = ko.observableArray([]);\r\n\t\tthis._selectedSourceLifeStatus = ko.observable(null);\r\n\r\n\t\tthis._destinationTables = ko.observableArray([]);\r\n\t\tthis._selectedDestinationTable = ko.observable(null);\r\n\r\n\t\tthis._destinationTypes = ko.observableArray([]);\r\n\t\tthis._selectedDestinationType = ko.observable(null);\r\n\t}\r\n\r\n\tSave(): void {\r\n\t\tif (this._configIssue) {\r\n\t\t\tnew Notifier().Warning(this._configIssue);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst validationError = this.Validate();\r\n\t\tif (validationError) {\r\n\t\t\tnew Notifier().Warning(validationError);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst controlEditorModel = this.GetControlEditorModel();\r\n\t\tthis.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, { UpdateControlModel: controlEditorModel });\r\n\r\n\t\tthis.Close();\r\n\t}\r\n\r\n\tGetControlEditorModel() {\r\n\t\tconst controlEditorModel = super.GetControlEditorModel();\r\n\r\n\t\tconst sourceTable = this._selectedSourceTable();\r\n\t\tconst sourceField = new AttachedFieldModel({ Id: sourceTable.PrimaryFieldId, Name: sourceTable.PrimaryFieldName, EntityId: sourceTable.Id });\r\n\r\n\t\tconst destinationTable = this._selectedDestinationTable();\r\n\t\tcontrolEditorModel.EntityId = destinationTable.Id;\r\n\t\tcontrolEditorModel.EntityName = destinationTable.Name;\r\n\r\n\t\tconst destinationField = new AttachedFieldModel({ Id: destinationTable.PrimaryFieldId, Name: destinationTable.PrimaryFieldName, EntityId: destinationTable.Id });\r\n\t\tcontrolEditorModel.FieldId = destinationField.Id;\r\n\t\tcontrolEditorModel.FieldName = destinationField.Name;\r\n\r\n\t\tcontrolEditorModel.RecordLifeStatusId = this._selectedSourceLifeStatus().Id;\r\n\t\tcontrolEditorModel.DestinationTypeId = this._selectedDestinationType().Id;\r\n\t\tcontrolEditorModel.AttachedFields = [destinationField, sourceField];\r\n\r\n\t\tcontrolEditorModel.Icon = this.EditControlModel.Icon;\r\n\r\n\t\treturn controlEditorModel;\r\n\t}\r\n\r\n\tValidate() {\r\n\t\tconst validationError = super.Validate();\r\n\t\tif (validationError) {\r\n\t\t\treturn validationError;\r\n\t\t}\r\n\r\n\t\tif (!this._selectedSourceTable()) {\r\n\t\t\tthis.IsValid(false);\r\n\t\t\treturn this.Labels.PLEASE_SELECT_DATA_SOURCE;\r\n\t\t}\r\n\r\n\t\tif (!this._selectedSourceLifeStatus()) {\r\n\t\t\tthis.IsValid(false);\r\n\t\t\treturn this.Labels.PLEASE_SELECT_WAITING_FOR_INVOICE_LIFESTATUS;\r\n\t\t}\r\n\r\n\t\tif (!this._selectedDestinationType()) {\r\n\t\t\tthis.IsValid(false);\r\n\t\t\treturn this.Labels.PLEASE_SELECT_INVOICE_ENTITY;\r\n\t\t}\r\n\r\n\t\tif (!this._selectedDestinationType()) {\r\n\t\t\tthis.IsValid(false);\r\n\t\t\treturn this.Labels.PLEASE_SELECT_OUTPUT_RECORD_TYPE;\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Core/Screens/DesignScreen/ControlEditor/Templates/FinancialControlEditor';\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement) {\r\n\t\tconst container = el[0];\r\n\t\tsuper.AfterRender(container);\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tthis.LoadData()\r\n .then(configOptionsResponse => {\r\n const configOptions = GenericDeserialize<InvoicingControlConfigOptions>(configOptionsResponse, InvoicingControlConfigOptions);\r\n this.ApplyConfigOptions(configOptions);\r\n })\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate LoadData() {\r\n\t\tconst subjectTypeId = this.EditControl.GetForm().GetScreen().GetTableTypeId();\r\n\t\treturn FinancialControlStore.GetConfigOptions(subjectTypeId)\r\n\t}\r\n\r\n\tprivate ApplyConfigOptions(configOptions: InvoicingControlConfigOptions) {\r\n\t\tif (configOptions.Issue) {\r\n\t\t\tthis._configIssue = configOptions.Issue;\r\n\t\t\tnew Notifier().Warning(configOptions.Issue);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst controlModel = this.EditControl.GetModel();\r\n\t\tconst attachedFields = controlModel.Fields;\r\n\t\tconst recordLifeStatusId = controlModel.RecordLifeStatusId;\r\n\t\tconst destinationTypeId = controlModel.DestinationTypeId;\r\n\r\n\t\tconst defaultLifestatus = new LifeStatusModel();\r\n\t\tdefaultLifestatus.Id = null;\r\n\t\tdefaultLifestatus.Name = 'Select lifestatus';\r\n\r\n\t\tconst translatedSourceLifeStatus = configOptions.SourceLifeStatuses.find(t => t.TranslatedName !== null);\r\n\t\tif (translatedSourceLifeStatus) {\r\n\t\t\ttranslatedSourceLifeStatus.Name = translatedSourceLifeStatus.TranslatedName;\r\n\t\t}\r\n\r\n\t\tconfigOptions.SourceLifeStatuses.unshift(defaultLifestatus);\r\n\r\n\t\tthis._sourceTables(configOptions.SourceTables);\r\n\r\n\t\tconst selectedSourceTable = configOptions.SourceTables.find(table => _.any(attachedFields, field => field.EntityId === table.Id));\r\n\t\tthis._selectedSourceTable(selectedSourceTable);\r\n\r\n\t\tthis._sourceLifeStatuses(configOptions.SourceLifeStatuses);\r\n\r\n\t\tconst selectedSourceLifeStatus = configOptions.SourceLifeStatuses.find(lifeStatus => lifeStatus.Id === recordLifeStatusId);\r\n\t\tthis._selectedSourceLifeStatus(selectedSourceLifeStatus);\r\n\t\tthis._selectedSourceLifeStatus.subscribe(lifeStatus => this.EditControlModel.RecordLifeStatusId = lifeStatus.Id);\r\n\r\n\t\tthis._destinationTables(configOptions.DestinationTables);\r\n\r\n\t\tconst selectedDestinationTable = configOptions.DestinationTables.find(table => _.any(attachedFields, field => field.EntityId === table.Id));\r\n\t\tthis._selectedDestinationTable(selectedDestinationTable);\r\n\t\tthis._selectedDestinationTable.subscribe(destinationTable => this.UpdateDestinationTypes(destinationTable, configOptions), this);\r\n\r\n\t\tif(selectedDestinationTable) {\r\n\t\t\tconst destinationTypes = configOptions.DestinationTypes.filter(type => type.TableId === selectedDestinationTable.Id)\r\n\t\t\tthis._destinationTypes(destinationTypes);\r\n\r\n\t\t\tthis._selectedDestinationType(destinationTypes.find(type => type.Id === destinationTypeId));\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._selectedDestinationType(configOptions.DestinationTypes.find(type => type.Id === destinationTypeId));\r\n\t\t\tconst selectedDestinationTableId = this._selectedDestinationType()\r\n\t\t\t\t? this._selectedDestinationType().TableId\r\n\t\t\t\t: _.any(configOptions.DestinationTypes) ? configOptions.DestinationTypes[0].TableId : 0;\r\n\t\t\tconst destinationTypes = configOptions.DestinationTypes.filter(type => type.TableId === selectedDestinationTableId)\r\n\t\t\tthis._destinationTypes(destinationTypes);\r\n\t\t}\r\n\r\n\t\tthis._selectedDestinationType.subscribe(type => this.EditControlModel.DestinationTypeId = type.Id);\r\n\t}\r\n\r\n\tprivate UpdateDestinationTypes(destinationTable: InvoiceTable, configOptions: InvoicingControlConfigOptions) {\r\n\t\tconst destinationTypes = configOptions.DestinationTypes.filter(type => type.TableId === destinationTable.Id);\r\n\t\tthis._destinationTypes(destinationTypes);\r\n\t\tthis._selectedDestinationType(destinationTypes[0]);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'has-error': !$parent.IsValid()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"> Source & Destination </legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.DATA_SOURCE --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _sourceTables, optionsText: 'Name', value: _selectedSourceTable\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.WAITING_FOR_INVOICING_LIFESTATUS --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _sourceLifeStatuses, optionsText: 'Name', value: _selectedSourceLifeStatus\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.INVOICE_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _destinationTables, optionsText: 'Name', value: _selectedDestinationTable\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.INVOICE_TYPE --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _destinationTypes, optionsText: (item) => item.GetName(), value: _selectedDestinationType\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS} from \"./BaseControlEditor\";\r\nimport {DesignScreen} from \"Core/Screens/DesignScreen/DesignScreen\";\r\nimport {IconManager} from \"Core/Components/IconManager/IconManager\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/GenericButtonControlEditor.html';\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/GenericButtonControlEditor'] = Template;\r\n\r\nexport class GenericButtonControlEditor extends BaseControlEditor {\r\n\r\n private _labels = LABELS;\r\n private _iconModel = IconModel;\r\n private _icon: KnockoutObservable<IconModel>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n this._icon = ko.observable(control.GetIcon());\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/GenericButtonControlEditor';\r\n }\r\n\r\n GetControlEditorModel() {\r\n const controlEditorModel = super.GetControlEditorModel();\r\n controlEditorModel.Icon = this._icon();\r\n return controlEditorModel;\r\n }\r\n\r\n Save(): void {\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const controlEditorModel = this.GetControlEditorModel();\r\n this.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n this.Close();\r\n }\r\n\r\n OpenIconManager() {\r\n const screen = this.Control.GetForm().GetScreen() as DesignScreen;\r\n const icons = screen.DesignModel.Icons;\r\n\r\n let iconManager = new IconManager(icons);\r\n iconManager.Show();\r\n\r\n iconManager.On('ICON_SELECTED', this, (eventArgs) => {\r\n this._icon(eventArgs.data.Icon);\r\n });\r\n }\r\n\r\n get Icon() {\r\n return this._icon();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group pull-left dbd-icon-place\\\"> <a class=\\\"icon-btn icon-btn-lg icon-manager-btn\\\" data-bind=\\\"click: OpenIconManager\\\"> <!-- ko if: Icon && Icon.Id--> <!-- ko ifnot: Icon.Image --> <i class=\\\"fa-5x fa-stack custom-color-option\\\" data-bind=\\\"text: !Icon.Id ? 'Select icon' : '', css: _iconModel.GetClasses(Icon.FontName, Icon.Name)\\\"></i> <!-- /ko --> <!-- ko if: Icon.Image--> <img class=\\\"img-responsive image-centered image-button\\\" data-bind=\\\"attr: {src: Icon.Image}\\\"> <!-- /ko --> <!-- /ko --> <!-- ko if: !Icon || !Icon.Id --> <i class=\\\"fa-5x fa-stack custom-color-option fa empty-icon\\\" data-bind=\\\"text: 'Select icon'\\\"></i> <!-- /ko --> </a> </div> <div class=\\\"form-group form-group-to-right\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n css: {'has-error': !$parent.IsValid()},\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n </textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {FIELD_TYPES} from \"Core/Constant\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {EntityModel} from \"Core/Screens/DesignScreen/ControlEditor/Models/EntityModel\";\r\nimport {FieldControlEditor} from \"Core/Screens/DesignScreen/ControlEditor/Editors/FieldControlEditor\";\r\n\r\nexport class CurrencyControlEditor extends FieldControlEditor {\r\n constructor(control: IControl) {\r\n super(control);\r\n }\r\n\r\n protected FilterEntities(entities: EntityModel[]) {\r\n let filteredEntities = [];\r\n\r\n for (let entity of entities) {\r\n const filteredFields = entity.Fields.filter(field => field.FieldTypeName === FIELD_TYPES.Currency);\r\n\r\n if (filteredFields.length > 0) {\r\n entity.Fields = filteredFields;\r\n filteredEntities.push(entity);\r\n }\r\n }\r\n\r\n return super.FilterEntities(filteredEntities);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nimport {BaseControlEditor, EVENTS} from \"./BaseControlEditor\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\n\r\nimport {ILabelPosition} from \"./ControlEditor\";\r\nimport {LabelPositions} from \"../Enums/LabelPositions\";\r\n\r\nimport {EntityModel} from \"../Models/EntityModel\";\r\n\r\nimport {EntitiesStore} from \"../Stores/EntitiesStore\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/EntityControlEditor.html';\r\nimport {AttachedFieldModel} from '../../../../Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/EntityControlEditor'] = Template;\r\n\r\nexport class EntityControlEditor extends BaseControlEditor {\r\n protected LabelPositions: KnockoutObservableArray<ILabelPosition>;\r\n protected SelectedLabelPosition: KnockoutObservable<ILabelPosition>;\r\n\r\n protected Entities: KnockoutObservableArray<EntityModel>;\r\n protected SelectedEntity: KnockoutObservable<EntityModel>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this.InitLabelPositions();\r\n this.InitEntities();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/EntityControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n BlockUI.Block();\r\n\r\n this.LoadData()\r\n .then(entities => this.PopulateEntities(entities))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n Validate(): string {\r\n const errorMessage = super.Validate();\r\n\r\n if (errorMessage) {\r\n this.IsValid(false);\r\n return errorMessage;\r\n }\r\n\r\n if (!this.SelectedEntity()) {\r\n this.IsValid(false);\r\n return 'Please, select entity';\r\n }\r\n }\r\n\r\n GetControlEditorModel() {\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n controlEditorModel.LabelPosName = this.SelectedLabelPosition().Title;\r\n controlEditorModel.LabelPos = this.SelectedLabelPosition().Value;\r\n\r\n const selectedEntity = this.SelectedEntity();\r\n if (selectedEntity) {\r\n controlEditorModel.EntityId = selectedEntity.EntityId;\r\n controlEditorModel.EntityName = selectedEntity.EntityName;\r\n }\r\n\r\n const selectedField = this.GetSelectedField();\r\n if (selectedField) {\r\n controlEditorModel.FieldId = selectedField.FieldId;\r\n }\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n protected InitLabelPositions() {\r\n this.LabelPositions = ko.observableArray([\r\n {Value: LabelPositions.NoLabel, Title: LabelPositions[LabelPositions.NoLabel]},\r\n {Value: LabelPositions.Left, Title: LabelPositions[LabelPositions.Left]},\r\n {Value: LabelPositions.UpperLeft, Title: LabelPositions[LabelPositions.UpperLeft]},\r\n {Value: LabelPositions.UpperMiddle, Title: LabelPositions[LabelPositions.UpperMiddle]},\r\n {Value: LabelPositions.UpperRight, Title: LabelPositions[LabelPositions.UpperRight]},\r\n {Value: LabelPositions.Right, Title: LabelPositions[LabelPositions.Right]},\r\n {Value: LabelPositions.LeftColon, Title: LabelPositions[LabelPositions.LeftColon]}\r\n ]);\r\n\r\n const selectedLabelPosition = _.find(this.LabelPositions(), item => item.Value === LabelPositions[this.EditControlModel.LabelPosition]);\r\n this.SelectedLabelPosition = ko.observable(selectedLabelPosition);\r\n }\r\n\r\n protected InitEntities() {\r\n this.Entities = ko.observableArray([]);\r\n this.SelectedEntity = ko.observable(null);\r\n }\r\n\r\n private GetSelectedField() {\r\n return this.SelectedEntity() && this.SelectedEntity().Fields.find(f => f.IsPrimaryKey());\r\n }\r\n\r\n protected BindEvents() {\r\n this.SelectedEntity.subscribe(entity => this.InitField(entity));\r\n }\r\n\r\n protected LoadData() {\r\n return EntitiesStore.Get({\r\n EntityId: this.GetSubjectEntityId(),\r\n TableTypeId: this.GetSubjectTableTypeId()\r\n });\r\n }\r\n\r\n protected PopulateEntities(entities: EntityModel[]) {\r\n const onlySubjectAcceptable = this.IsScreenOfType(ScreenTypes.EditScreen, ScreenTypes.ListScreen);\r\n\r\n if (onlySubjectAcceptable) {\r\n entities = entities.filter(entity => entity.EntityId === this.SubjectEntityId);\r\n }\r\n\r\n entities = _.uniq(entities, false, entity => entity.EntityId);\r\n\r\n this.Entities(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.EntityId === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this.SelectedEntity(attachedEntity);\r\n } else {\r\n const subjectEntity = _.find(entities, entity => entity.EntityId === this.SubjectEntityId);\r\n this.SelectedEntity(subjectEntity);\r\n }\r\n\r\n this.InitField(this.SelectedEntity());\r\n this.BindEvents();\r\n }\r\n\r\n protected InitField(entity: EntityModel) {\r\n const selectedField = this.GetSelectedField();\r\n if (!selectedField) {\r\n return;\r\n }\r\n\r\n let controlFieldModel = this.EditControl.GetFieldModel();\r\n if (!controlFieldModel) {\r\n controlFieldModel = new AttachedFieldModel();\r\n this.EditControl.GetModel().Fields.push(controlFieldModel);\r\n }\r\n\r\n controlFieldModel.EntityId = entity.EntityId;\r\n controlFieldModel.EntityName = entity.EntityName;\r\n\r\n controlFieldModel.Id = selectedField.FieldId;\r\n controlFieldModel.Name = selectedField.FieldName;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tenable: !$parent.UseFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\" enable: !$parent.UseFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thasFocus: IsFocusedItem,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group labelPosition-block\\\"> <label class=\\\"control-label\\\" for=\\\"labelPositionId\\\"> <!-- ko text: Labels.LABEL_POSITION --><!-- /ko --> </label> <div> <select data-bind=\\\"options: LabelPositions, optionsText: 'Title', value: SelectedLabelPosition\\\" id=\\\"labelPositionId\\\" class=\\\"form-control\\\" name=\\\"labelPositionId\\\"></select> </div> </div> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: Labels.ENTITY --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: Entities, optionsText: 'EntityName', value: SelectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\n\r\nimport {EntityControlEditor} from \"./EntityControlEditor\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\n\r\nimport {EntityModel} from \"../Models/EntityModel\";\r\n\r\nexport class BasketControlEditor extends EntityControlEditor {\r\n constructor(control: IControl) {\r\n super(control);\r\n }\r\n\r\n protected PopulateEntities(entities: EntityModel[]) {\r\n entities = _.uniq(entities, false, entity => entity.EntityId);\r\n\r\n this.Entities(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.EntityId === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this.SelectedEntity(attachedEntity);\r\n } else {\r\n const subjectEntity = _.find(entities, entity => entity.EntityId === this.SubjectEntityId);\r\n this.SelectedEntity(subjectEntity);\r\n }\r\n }\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\nimport { Notifier } from \"Core/Common/Notifier\";\r\n\r\nimport { BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS } from \"../BaseControlEditor\";\r\nimport { IControl } from \"Core/Controls/IControl\";\r\nimport {EntitiesStore} from \"../../Stores/EntitiesStore\";\r\nimport {EntityModel} from \"../../Models/EntityModel\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/PlannerLevelControlEditor.html';\r\nimport {PlannerLevelEntityModel} from \"../../Models/PlannerLevelEntityModel\";\r\nimport {AttachedFieldModel} from \"../../../../../Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {FIELD_TYPES} from \"../../../../../Constant\";\r\nimport {IconModel} from \"../../../../../Controls/BaseControl/Models/IconModel\";\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/PlannerLevelControlEditor'] = Template;\r\n\r\nexport class PlannerLevelControlEditor extends BaseControlEditor {\r\n\r\n private _entities: KnockoutObservableArray<EntityModel>;\r\n private _selectedEntity: KnockoutObservable<EntityModel>;\r\n\r\n private _leftBarSubEntities: KnockoutObservableArray<EntityModel>;\r\n private _selectedLeftBarSubEntity: KnockoutObservable<EntityModel>;\r\n\r\n private _rightBarSubEntities: KnockoutObservableArray<EntityModel>;\r\n private _selectedRightBarSubEntity: KnockoutObservable<EntityModel>;\r\n\r\n private _plannerLevelEntities : Array<PlannerLevelEntityModel>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this._leftBarSubEntities = ko.observableArray([]);\r\n this._selectedLeftBarSubEntity = ko.observable();\r\n\r\n this._entities = ko.observableArray([]);\r\n this._selectedEntity = ko.observable();\r\n\r\n this._rightBarSubEntities = ko.observableArray([]);\r\n this._selectedRightBarSubEntity = ko.observable();\r\n this._plannerLevelEntities = [];\r\n\r\n this._selectedEntity.subscribe((newValue) => {\r\n this._selectedRightBarSubEntity(null);\r\n this._selectedLeftBarSubEntity(null);\r\n if(newValue){\r\n let planerLevelEntity = _.find(this._plannerLevelEntities, (entity) =>{\r\n return entity.Entity.EntityId === newValue.EntityId;\r\n });\r\n if(planerLevelEntity){\r\n this._leftBarSubEntities(planerLevelEntity.SubEntities);\r\n this._rightBarSubEntities(planerLevelEntity.SubEntities);\r\n }\r\n }\r\n });\r\n }\r\n\r\n Save() {\r\n\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const controlEditorModel = this.GetControlEditorModel();\r\n this.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, { UpdateControlModel: controlEditorModel });\r\n\r\n this.Close();\r\n }\r\n\r\n GetControlEditorModel() {\r\n let controlEditorModel = super.GetControlEditorModel();\r\n\r\n let primaryField = _.find(this._selectedEntity().Fields, (field) => {\r\n return field.FieldTypeName === FIELD_TYPES.PKey;\r\n });\r\n\r\n let primaryAttachedField = new AttachedFieldModel({ Id: primaryField.FieldId, Name: primaryField.FieldName, EntityId: this._selectedEntity().EntityId });\r\n let primaryIconModel = new IconModel();\r\n primaryIconModel.Name = this._selectedEntity().IconName;\r\n primaryIconModel.FontName = this._selectedEntity().FontName;\r\n primaryIconModel.Image = this._selectedEntity().GraphicalIcon;\r\n primaryIconModel.IsIcon = this._selectedEntity().GraphicalIcon == null;\r\n primaryIconModel.IsImage = !primaryIconModel.IsIcon;\r\n primaryAttachedField.EntityIcon = primaryIconModel;\r\n primaryAttachedField.EntityTypeName = this._selectedEntity().TypeName;\r\n primaryAttachedField.EntityName = this._selectedEntity().EntityName;\r\n primaryAttachedField.Sort = 0;\r\n\r\n let primaryLeftField = _.find(this._selectedLeftBarSubEntity().Fields, (field) => {\r\n return field.FieldTypeName === FIELD_TYPES.PKey;\r\n });\r\n\r\n let primaryLeftAttachedField = new AttachedFieldModel({ Id: primaryLeftField.FieldId, Name: primaryLeftField.FieldName, EntityId: this._selectedLeftBarSubEntity().EntityId });\r\n let leftIconModel = new IconModel();\r\n leftIconModel.Name = this._selectedLeftBarSubEntity().IconName;\r\n leftIconModel.FontName = this._selectedLeftBarSubEntity().FontName;\r\n leftIconModel.Image = this._selectedLeftBarSubEntity().GraphicalIcon;\r\n leftIconModel.IsIcon = this._selectedLeftBarSubEntity().GraphicalIcon == null;\r\n leftIconModel.IsImage = !leftIconModel.IsIcon;\r\n primaryLeftAttachedField.EntityIcon = leftIconModel;\r\n primaryLeftAttachedField.EntityTypeName = this._selectedLeftBarSubEntity().TypeName;\r\n primaryLeftAttachedField.EntityName = this._selectedLeftBarSubEntity().EntityFullNameTranslation || this._selectedLeftBarSubEntity().EntityFullName;\r\n primaryLeftAttachedField.Sort = 10;\r\n\r\n let primaryRightField = _.find(this._selectedRightBarSubEntity().Fields, (field) => {\r\n return field.FieldTypeName === FIELD_TYPES.PKey;\r\n });\r\n\r\n let primaryRightAttachedField = new AttachedFieldModel({ Id: primaryRightField.FieldId, Name: primaryRightField.FieldName, EntityId: this._selectedRightBarSubEntity().EntityId });\r\n let rightIconModel = new IconModel();\r\n rightIconModel.Name = this._selectedRightBarSubEntity().IconName;\r\n rightIconModel.FontName = this._selectedRightBarSubEntity().FontName;\r\n rightIconModel.Image = this._selectedRightBarSubEntity().GraphicalIcon;\r\n rightIconModel.IsIcon = this._selectedRightBarSubEntity().GraphicalIcon == null;\r\n rightIconModel.IsImage = !rightIconModel.IsIcon;\r\n primaryLeftAttachedField.EntityIcon = rightIconModel;\r\n primaryRightAttachedField.EntityTypeName = this._selectedRightBarSubEntity().TypeName;\r\n primaryRightAttachedField.EntityName = this._selectedRightBarSubEntity().EntityFullNameTranslation || this._selectedLeftBarSubEntity().EntityFullName;\r\n primaryRightAttachedField.Sort = 20;\r\n\r\n controlEditorModel.AttachedFields = [primaryAttachedField, primaryLeftAttachedField, primaryRightAttachedField];\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n GetSubEntity(entityModel: PlannerLevelEntityModel, fieldId: number){\r\n return _.find(entityModel.SubEntities, (sub) => {\r\n return !!_.find(sub.Fields, (field) => {\r\n return field.FieldId === fieldId;\r\n });\r\n });\r\n }\r\n\r\n PopulateData(){\r\n let entities = _.map(this._plannerLevelEntities, (entity) => {\r\n return entity.Entity;\r\n });\r\n\r\n this._entities(entities);\r\n\r\n let entityField = this.EditControlModel.Fields[0];\r\n\r\n if(entityField){\r\n\r\n let subjectEntity = _.find(this._plannerLevelEntities, (entity) => {\r\n return entity.Entity.EntityId == entityField.EntityId;\r\n });\r\n\r\n if(subjectEntity) {\r\n\r\n this._selectedEntity(subjectEntity.Entity);\r\n\r\n let leftBarField = this.EditControlModel.Fields[1];\r\n\r\n if (leftBarField) {\r\n let leftBarSubEntityView = this.GetSubEntity(subjectEntity, leftBarField.Id);\r\n this._selectedLeftBarSubEntity(leftBarSubEntityView);\r\n }\r\n\r\n let rightBarField = this.EditControlModel.Fields[2];\r\n\r\n if (rightBarField) {\r\n let rightBarSubEntityView = this.GetSubEntity(subjectEntity, rightBarField.Id);\r\n this._selectedRightBarSubEntity(rightBarSubEntityView);\r\n }\r\n }\r\n }\r\n }\r\n\r\n LoadData() {\r\n BlockUI.Block();\r\n EntitiesStore.GetPlanerLevelEntities({\r\n EntityId: this.GetSubjectEntityId(),\r\n TableTypeId: this.GetSubjectTableTypeId()\r\n }).always(()=>{\r\n BlockUI.Unblock();\r\n }).then((entities) => {\r\n this._plannerLevelEntities = entities;\r\n this.PopulateData();\r\n });\r\n }\r\n\r\n Validate() {\r\n const validationError = super.Validate();\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedEntity()) {\r\n this.IsValid(false);\r\n return 'Please select entity';\r\n }\r\n\r\n if (!this._selectedLeftBarSubEntity()) {\r\n this.IsValid(false);\r\n return 'Please select left bar sub entity';\r\n }\r\n\r\n if (!this._selectedRightBarSubEntity()) {\r\n this.IsValid(false);\r\n return 'Please select right bar sub entity';\r\n }\r\n\r\n }\r\n\r\n GetTemplateName(): string {\r\n\t\treturn 'Core/Screens/DesignScreen/ControlEditor/Templates/PlannerLevelControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n this.LoadData();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'has-error': !$parent.IsValid()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _entities, optionsText: 'EntityName', value: _selectedEntity\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"> Left bar view </legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUB_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _leftBarSubEntities, optionsText: 'EntityName', value: _selectedLeftBarSubEntity\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"> Right bar view </legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUB_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _rightBarSubEntities, optionsText: 'EntityName', value: _selectedRightBarSubEntity\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Name.replace(' ', '')}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Name.replace(' ', '')}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GanttChartDesignOptions} from '../Models/GanttChartDesignOptions';\r\n\r\nexport class GanttChartControlEditorStore {\r\n GetDesignOptions(entityId: number): P.Promise<GanttChartDesignOptions> {\r\n const deferred = P.defer<GanttChartDesignOptions>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/GanttChartApi/GetGanttChartControlConfig',\r\n type: 'GET',\r\n dataType: 'json',\r\n },\r\n params: {\r\n subjectTableId: entityId\r\n }\r\n })\r\n .then(options => deferred.resolve(options))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting design options')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\n\r\nimport {BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS} from '../BaseControlEditor';\r\n\r\nimport {GanttChartControlEditorStore} from './Stores/GanttChartControlEditorStore';\r\nimport {GanttChartDesignOptions} from './Models/GanttChartDesignOptions';\r\n\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/GanttChartControlEditor.html';\r\nimport {ChartControlEditorStore} from '../ChartControl/Stores/ChartControlEditorStore';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/GanttChartControlEditor'] = Template;\r\n\r\nexport class GanttChartControlEditor extends BaseControlEditor {\r\n private _control: ComplexControl;\r\n private _store: GanttChartControlEditorStore;\r\n\r\n private _selectedEntity: any;\r\n\r\n private _ganttViews: KnockoutObservableArray<any>;\r\n private _selectedGanttView: KnockoutObservable<any>;\r\n\r\n private _resourcesViews: KnockoutObservableArray<any>;\r\n private _selectedResourcesView: KnockoutObservable<any>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this._control = this.EditControl as ComplexControl;\r\n this._store = new GanttChartControlEditorStore();\r\n\r\n this._selectedEntity = {Id: this.GetSubjectEntityId(), Name: this.GetSubjectEntityName()}\r\n\r\n this._ganttViews = ko.observableArray([]);\r\n this._selectedGanttView = ko.observable(null);\r\n\r\n this._resourcesViews = ko.observableArray([]);\r\n this._selectedResourcesView = ko.observable(null);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/GanttChartControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n this.LoadData();\r\n }\r\n\r\n Save() {\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const controlEditorModel = this.GetControlEditorModel();\r\n this.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n\r\n this.Close();\r\n }\r\n\r\n Validate() {\r\n const validationError = super.Validate();\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedGanttView()) {\r\n this.IsValid(false);\r\n return 'Please select Gantt View';\r\n }\r\n\r\n if (!this._selectedResourcesView()) {\r\n this.IsValid(false);\r\n return 'Please select Resources View';\r\n }\r\n }\r\n\r\n GetControlEditorModel() {\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n this._control.AutoSelectFieldsFromStruct([this._selectedGanttView()]);\r\n\r\n const resourcesViewPkey = _.find(this._selectedResourcesView().Fields, (field: any) => field.Type === FIELD_TYPES.PKey);\r\n const fieldSort = this._control.Model.Fields[this._control.Model.Fields.length - 1].Sort + 10;\r\n const resourcesAttachedField = this.CreateAttachedField(this._selectedResourcesView(), resourcesViewPkey, fieldSort);\r\n\r\n controlEditorModel.AttachedFields.push(...this._control.Model.Fields, resourcesAttachedField);\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n private LoadData() {\r\n BlockUI.Block();\r\n\r\n this._store.GetDesignOptions(this.GetSubjectEntityId())\r\n .then(options => this.PopulateData(options))\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private PopulateData(options: GanttChartDesignOptions) {\r\n this._ganttViews(options.GanttViews);\r\n this._resourcesViews(options.ResourcesViews);\r\n\r\n const attachedSubTableViews = _.chain(this.EditControlModel.Fields).map(f => f.EntityId).uniq().value();\r\n\r\n if (attachedSubTableViews && attachedSubTableViews.length) {\r\n const selectedGanttView = _.find(options.GanttViews, t => t.Id === attachedSubTableViews[0]);\r\n this._selectedGanttView(selectedGanttView);\r\n\r\n const selectedResourcesView = _.find(options.ResourcesViews, t => t.Id === attachedSubTableViews[1]);\r\n this._selectedResourcesView(selectedResourcesView);\r\n }\r\n }\r\n\r\n private CreateAttachedField(subTableView: any, field: any, sort: number) {\r\n const attachedField = new AttachedFieldModel({ Id: field.Id, Name: field.Name, EntityId: subTableView.Id});\r\n attachedField.EntityTypeName = subTableView.Type;\r\n attachedField.EntityName = subTableView.Name;\r\n attachedField.Sort = 10;\r\n\r\n return attachedField;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n css: {'has-error': !$parent.IsValid()},\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n </textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <input type=\\\"text\\\" data-bind=\\\"value: _selectedEntity.Name\\\" class=\\\"form-control\\\" disabled=\\\"disabled\\\"> </div> </div> </div> </fieldset> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"> Gantt View </legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUB_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _ganttViews, optionsText: 'Name', value: _selectedGanttView\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"> Resources View </legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUB_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _resourcesViews, optionsText: 'Name', value: _selectedResourcesView\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Name.replace(' ', '')}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Name.replace(' ', '')}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {ProductConfiguratorDesignOptions} from '../Models/ProductConfiguratorDesignOptions';\r\n\r\nexport class ProductConfiguratorControlEditorStore {\r\n GetDesignOptions(entityId: number): P.Promise<ProductConfiguratorDesignOptions> {\r\n const deferred = P.defer<ProductConfiguratorDesignOptions>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetDesignOptions',\r\n type: 'GET',\r\n dataType: 'json'\r\n },\r\n params: {entityId}\r\n })\r\n .then(options => deferred.resolve(options))\r\n .fail(error => deferred.reject(this.GetResponseError(error, 'Error reading design options')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout'\r\n\r\nimport {TABLE_TYPES} from 'Core/Constant';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {ProductConfigurator} from 'Core/Controls/ProductConfigurator/ProductConfigurator';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nimport {BaseControlEditor} from '../BaseControlEditor';\r\nimport {ControlEditorModel} from '../../Models/ControlEditorModel';\r\n\r\nimport {BaseProperty} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {BaseSelectProperty} from \"Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty\";\r\n\r\nimport {ProductConfiguratorControlEditorStore} from './Stores/ProductConfiguratorControlEditorStore';\r\nimport {ProductsEntity, ProductsView} from './Models/ProductConfiguratorDesignOptions';\r\n\r\nimport Template\r\n from 'Core/Screens/DesignScreen/ControlEditor/Templates/ProductConfiguratorControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/ProductConfiguratorControlEditor'] = Template;\r\n\r\nexport class ProductConfiguratorControlEditor extends BaseControlEditor {\r\n private _control: ProductConfigurator;\r\n private _store: ProductConfiguratorControlEditorStore;\r\n\r\n private _tables: KnockoutObservableArray<ProductsEntity>;\r\n\r\n private _selectedTable: KnockoutObservable<ProductsEntity>;\r\n private _selectedView: KnockoutObservable<ProductsView>;\r\n private _useView: KnockoutObservable<boolean>;\r\n\r\n private _selectedProductDescription: KnockoutObservable<any>;\r\n private _useProductDescription: KnockoutObservable<boolean>;\r\n\r\n constructor(control: ProductConfigurator) {\r\n super(control);\r\n\r\n this._control = this.EditControl as ProductConfigurator;\r\n this._store = new ProductConfiguratorControlEditorStore();\r\n\r\n this._tables = ko.observableArray([]);\r\n\r\n this._selectedTable = ko.observable(null);\r\n this._selectedView = ko.observable(null);\r\n this._useView = ko.observable(false);\r\n\r\n this._selectedProductDescription = ko.observable(null);\r\n this._useProductDescription = ko.observable(false);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/ProductConfiguratorControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n this.LoadData()\r\n }\r\n\r\n GetControlEditorModel(): ControlEditorModel {\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n this._control.AutoSelectFieldsFromStruct([this._selectedTable()]);\r\n\r\n if (this._useView()) {\r\n const attachedFields = this._control.Model.Fields;\r\n const viewField = this._selectedView().Fields.find(f => f.IsPrimaryKey);\r\n const viewFieldSort = attachedFields[attachedFields.length - 1].Sort + 10;\r\n\r\n const attachedField = this.CreateAttachedField(this._selectedView(), viewField, viewFieldSort);\r\n this._control.Model.Fields.push(attachedField);\r\n }\r\n\r\n if (this._useProductDescription()) {\r\n const attachedFields = this._control.Model.Fields;\r\n const descriptionFieldSort = attachedFields[attachedFields.length - 1].Sort + 10;\r\n\r\n const attachedField = this.CreateAttachedField(this._selectedTable().LinkEntity, this._selectedProductDescription(), descriptionFieldSort);\r\n this._control.Model.Fields.push(attachedField);\r\n }\r\n\r\n controlEditorModel.AttachedFields.push(...this._control.Model.Fields);\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n Validate() {\r\n const validationError = super.Validate();\r\n\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedTable()) {\r\n this.IsValid(false);\r\n return 'Please, select table'\r\n }\r\n\r\n if (this._useView() && !this._selectedView()) {\r\n this.IsValid(false);\r\n return 'Please, select sub table view'\r\n }\r\n\r\n if (this._useProductDescription() && !this._selectedProductDescription()) {\r\n this.IsValid(false);\r\n return 'Please, select description'\r\n }\r\n\r\n return null;\r\n }\r\n\r\n CheckForDescriptionFields() {\r\n return this._selectedTable() && this._selectedTable().LinkEntity\r\n && _.any(this._selectedTable().LinkEntity.Fields, field => field.IsText);\r\n }\r\n\r\n GetDescriptionFields() {\r\n return _.filter(this._selectedTable().LinkEntity.Fields, field => field.IsText);\r\n }\r\n\r\n private LoadData() {\r\n BlockUI.Block();\r\n\r\n this._store.GetDesignOptions(this.GetSubjectEntityId())\r\n .then(options => this.PopulateData(options.Entities))\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n\r\n\r\n let annotation = this.GeneralProperties.GetPropertyManager('Annotations');\r\n let showAnnotations = this.GeneralProperties.GetPropertyManager('ShowAnnotations');\r\n\r\n if(annotation && showAnnotations){\r\n showAnnotations.SetEnabled(annotation.Value());\r\n\r\n if(!annotation.Value()){\r\n showAnnotations.Value(annotation.Value());\r\n }\r\n\r\n annotation.Value.subscribe((val)=>{\r\n if(!val){\r\n showAnnotations.Value(val);\r\n }\r\n \r\n showAnnotations.SetEnabled(val);\r\n });\r\n }\r\n\r\n let enableAlternativePriceCalculation = this.GeneralProperties.GetPropertyManager('EnableAlternativePriceCalculation');\r\n let alternativePriceCalculationRule = this.GeneralProperties.GetPropertyManager('AlternativePriceCalculationRule');\r\n\r\n if (enableAlternativePriceCalculation && alternativePriceCalculationRule) {\r\n alternativePriceCalculationRule.SetEnabled(enableAlternativePriceCalculation.Value());\r\n alternativePriceCalculationRule.WarningMessage = this.Labels.THE_TRANSLATION_ALTERNATIVE_PRICE_WITH_CODE_WILL_BE_USED_ON_PCF\r\n .replace('{CODE}', '1467');\r\n\r\n if (!enableAlternativePriceCalculation.Value()) {\r\n alternativePriceCalculationRule.Value(null);\r\n }\r\n\r\n enableAlternativePriceCalculation.Value.subscribe((val)=>{\r\n if (!val) {\r\n alternativePriceCalculationRule.Value(null);\r\n }\r\n\r\n alternativePriceCalculationRule.SetEnabled(val);\r\n });\r\n }\r\n\r\n const level1BaseProperty = this.GeneralProperties.GetPropertyManager('Level1');\r\n const level1 = level1BaseProperty && level1BaseProperty as BaseSelectProperty;\r\n\r\n const level2BaseProperty = this.GeneralProperties.GetPropertyManager('Level2');\r\n const level2 = level2BaseProperty && level2BaseProperty as BaseSelectProperty;\r\n\r\n const lockLevel1 = this.GeneralProperties.GetPropertyManager('LockLevel1');\r\n\r\n const self = this;\r\n\r\n if (level1 && level2 && lockLevel1) {\r\n level1.Value.subscribe(()=>{\r\n self.SetLockLevel1(lockLevel1, level1, level2);\r\n });\r\n\r\n level2.Value.subscribe(()=>{\r\n self.SetLockLevel1(lockLevel1, level1, level2);\r\n });\r\n\r\n level1.IsInitiated.subscribe(()=>{\r\n self.SetLockLevel1(lockLevel1, level1, level2);\r\n });\r\n\r\n level2.IsInitiated.subscribe(()=>{\r\n self.SetLockLevel1(lockLevel1, level1, level2);\r\n });\r\n }\r\n }\r\n\r\n SetLockLevel1(lockLevel1: BaseProperty, level1: BaseSelectProperty, level2: BaseSelectProperty) {\r\n const isLevel1Initiated = level1.IsInitiated();\r\n const isLevel2Initiated = level2.IsInitiated();\r\n\r\n if (!isLevel1Initiated || !isLevel2Initiated) {\r\n lockLevel1.SetEnabled(false);\r\n return;\r\n }\r\n\r\n const isLevel1Set = !!(level1 && level1.Value() && level1.Value().Value);\r\n const isLevel2Set = !!(level2 && level2.Value() && level2.Value().Value);\r\n\r\n if (!isLevel1Set || !isLevel2Set) {\r\n lockLevel1.Value(false);\r\n }\r\n\r\n lockLevel1.SetEnabled(isLevel1Set && isLevel2Set);\r\n }\r\n\r\n private PopulateData(entities: ProductsEntity[]) {\r\n this._tables(entities);\r\n\r\n const attachedFields = this.EditControlModel.Fields;\r\n\r\n if (attachedFields.length > 0) {\r\n const entityId = attachedFields[0].EntityId;\r\n\r\n for (let entity of entities) {\r\n if (entity.Id === entityId) {\r\n this._selectedTable(entity);\r\n break;\r\n }\r\n }\r\n\r\n if (!this._selectedTable()) {\r\n return;\r\n }\r\n\r\n const lastField = attachedFields[attachedFields.length - 1];\r\n if (lastField.EntityTypeName === TABLE_TYPES.Link) {\r\n this.PopulateProductDescription(lastField);\r\n\r\n const viewField = attachedFields[attachedFields.length - 2];\r\n if (viewField.EntityTypeName === TABLE_TYPES.Sub) {\r\n this.PopulateProductView(viewField);\r\n }\r\n }\r\n else if (lastField.EntityTypeName === TABLE_TYPES.Sub) {\r\n this.PopulateProductView(lastField);\r\n }\r\n }\r\n }\r\n\r\n private PopulateProductView(viewField: AttachedFieldModel){\r\n for (let view of this._selectedTable().Views) {\r\n if (view.Id === viewField.EntityId) {\r\n this._selectedView(view);\r\n this._useView(true);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n private PopulateProductDescription(descriptionField: AttachedFieldModel){\r\n if(!this.CheckForDescriptionFields) {\r\n return;\r\n }\r\n\r\n for (let description of this.GetDescriptionFields()) {\r\n if (description.Id === descriptionField.Id) {\r\n this._selectedProductDescription(description);\r\n this._useProductDescription(true);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n private CreateAttachedField(table: any, field: any, sort: number) {\r\n const attachedField = new AttachedFieldModel({ Id: field.Id, Name: field.Name, EntityId: table.Id });\r\n\r\n attachedField.EntityId = table.Id;\r\n attachedField.EntityTypeName = table.Type;\r\n attachedField.EntityName = table.Name;\r\n attachedField.Sort = sort;\r\n\r\n return attachedField;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n css: {'has-error': !$parent.IsValid()},\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n </textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _tables, optionsText: 'Name', value: _selectedTable\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> <!--ko if: _selectedTable() && _selectedTable().Views.length > 0--> <div class=\\\"form-group\\\"> <label> <input type=\\\"checkbox\\\" data-bind=\\\"checked: _useView\\\"> Use view </label> <div> <select data-bind=\\\"enable: _useView, options: _selectedTable().Views, optionsText: 'Name', value: _selectedView\\\" class=\\\"form-control\\\" name=\\\"subEntityId\\\"></select> </div> </div> <!--/ko--> <!--ko if: CheckForDescriptionFields() --> <div class=\\\"form-group\\\"> <label> <input type=\\\"checkbox\\\" data-bind=\\\"checked: _useProductDescription\\\"> <!-- ko text: Labels.USE_DESCRIPTION --><!-- /ko --> </label> <div> <select data-bind=\\\"enable: _useProductDescription, options: GetDescriptionFields(), optionsText: 'Name', value: _selectedProductDescription\\\" class=\\\"form-control\\\" name=\\\"subEntityId\\\"></select> </div> </div> <!--/ko--> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {EntitiesStore} from \"../Stores/EntitiesStore\";\r\nimport {LabelPositions} from \"../Enums/LabelPositions\";\r\nimport {TableWithImagesModel} from \"../Models/TableWithImagesModel\";\r\nimport {BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS} from \"./BaseControlEditor\";\r\nimport {ILabelPosition} from \"./ControlEditor\";\r\n\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {ImageFieldModel} from \"../Models/ImageFieldModel\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/SignatureControlEditor.html';\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/SignatureControlEditor'] = Template;\r\n\r\nexport const EVENTS = {\r\n ENTITY_SELECTED: 'ENTITY_SELECTED',\r\n FIELD_SELECTED: 'FIELD_SELECTED'\r\n};\r\n\r\nexport class SignatureControlEditor extends BaseControlEditor {\r\n private _labelPositions: KnockoutObservableArray<ILabelPosition>;\r\n private _selectedLabelPosition: KnockoutObservable<ILabelPosition>;\r\n\r\n private _fields: KnockoutObservableArray<ImageFieldModel>;\r\n private _selectedField: KnockoutObservable<ImageFieldModel>;\r\n\r\n private _entities: KnockoutObservableArray<TableWithImagesModel>;\r\n private _selectedEntity: KnockoutObservable<TableWithImagesModel>;\r\n\r\n constructor(control: IControl){\r\n super(control);\r\n\r\n this.InitEditControlData(control);\r\n this.BindEvents();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/SignatureControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n BlockUI.Block();\r\n\r\n this.LoadData()\r\n .then(entities => {\r\n this.PopulateEntities(entities)\r\n })\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n LoadData(){\r\n return EntitiesStore.GetSignatureEntities({\r\n // EntityId: this.GetSubjectEntityId()\r\n SubjectTableId: this.GetSubjectEntityId()\r\n });\r\n }\r\n\r\n Save(): void {\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const controlEditorModel = this.GetControlEditorModel();\r\n\r\n this.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n\r\n this.Close();\r\n }\r\n\r\n Validate() {\r\n const validationError = super.Validate();\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedField()) {\r\n this.IsValid(false);\r\n return 'Please, select field';\r\n }\r\n }\r\n\r\n GetControlEditorModel() {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n const controlEditorModel = super.GetControlEditorModel();\r\n controlEditorModel.LabelPosName = this._selectedLabelPosition().Title;\r\n controlEditorModel.LabelPos = this._selectedLabelPosition().Value;\r\n\r\n const selectedEntity = this._selectedEntity();\r\n controlEditorModel.EntityId = selectedEntity.Id;\r\n controlEditorModel.EntityName = selectedEntity.Name;\r\n\r\n const selectedField = this._selectedField();\r\n controlEditorModel.FieldId = selectedField.Id;\r\n controlEditorModel.FieldName = selectedField.Name;\r\n // controlEditorModel.FieldNameTranslation = selectedField.NameTranslated;\r\n // controlEditorModel.ValTableId = selectedField.ValTableId;\r\n // controlEditorModel.ValFieldId = selectedField.ValFieldId;\r\n\r\n controlEditorModel.UseFieldName = this.UseFieldName();\r\n if (controlEditorModel.UseFieldName) {\r\n controlEditorModel.Name = selectedField.Name;\r\n } else {\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n if (translation.Selected || (desktopLanguage == translation.Language.ShortName)) {\r\n translation.Selected = true;\r\n }\r\n });\r\n }\r\n return controlEditorModel;\r\n }\r\n\r\n FieldSelectorAfterRender(option, item) {\r\n ko.applyBindingsToNode(option, {\r\n // has removed the functionality of the \"disabled/enabled of Fields\"\r\n enableAttr: true,\r\n css: {\r\n disabled: false\r\n }\r\n }, item);\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n super.InitEditControlData(control);\r\n\r\n this.InitLabelPositions();\r\n this.InitEntities();\r\n }\r\n\r\n protected BindEvents() {\r\n this._selectedEntity.subscribe(selectedEntity => {\r\n if (this._selectedEntity()) {\r\n this.Trigger(EVENTS.ENTITY_SELECTED, selectedEntity);\r\n }\r\n });\r\n\r\n this.On(EVENTS.ENTITY_SELECTED, this, eventArgs => this.OnEntityChange());\r\n this.On(EVENTS.FIELD_SELECTED, this, () => this.OnFieldChange());\r\n\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n\r\n this.UseFieldName.subscribe((newValue) => {\r\n if (newValue) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n });\r\n }\r\n\r\n OnSelectField(selectedField) {\r\n this.Trigger(EVENTS.FIELD_SELECTED, selectedField);\r\n }\r\n\r\n InitLabelPositions(){\r\n this._labelPositions = ko.observableArray([\r\n {Value: LabelPositions.UpperLeft, Title: LabelPositions[LabelPositions.UpperLeft]},\r\n {Value: LabelPositions.NoLabel, Title: LabelPositions[LabelPositions.NoLabel]}\r\n\r\n ]);\r\n\r\n const selectedLabelPosition = _.find(this._labelPositions(), item => item.Value === LabelPositions[this.EditControlModel.LabelPosition]);\r\n this._selectedLabelPosition = ko.observable(selectedLabelPosition);\r\n }\r\n\r\n private InitEntities() {\r\n this._entities = ko.observableArray([]);\r\n this._selectedEntity = ko.observable(null);\r\n\r\n this._fields = ko.observableArray([]);\r\n this._selectedField = ko.observable(null);\r\n }\r\n\r\n PopulateEntities(entities: TableWithImagesModel[]){\r\n entities = _.uniq(entities, false, entity => entity.Id);\r\n\r\n this._entities(entities);\r\n // this.MarkAcceptableFields(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.Id === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this._selectedEntity(attachedEntity);\r\n } else {\r\n const subjectEntity = _.find(entities, entity => entity.Id === this.SubjectEntityId);\r\n this._selectedEntity(subjectEntity);\r\n }\r\n }\r\n\r\n // private MarkAcceptableFields(entities: TableWithModel[]) {\r\n // const usedFields = this.FindUsedFields();\r\n // const attachedField = _.first(this.EditControlModel.Fields);\r\n // //Disable used fields\r\n // entities.forEach(entity => {\r\n // entity.ImageFields\r\n // .filter(field => (!attachedField || field.Id !== attachedField.Id) && _.contains(usedFields, field.Id))\r\n // .forEach(field => field.IsEnabled = false);\r\n // });\r\n // }\r\n\r\n // private FindUsedFields() {\r\n // return this.GetDesignScreen().Controls\r\n // .filter(control => control.HasOneField())\r\n // .map(control => control.GetFieldModel().Id);\r\n // }\r\n\r\n private OnEntityChange() {\r\n const selectedEntity = this._selectedEntity();\r\n\r\n this._fields(selectedEntity.ImageFields);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n if (attachedField) {\r\n const selectedField = _.find(selectedEntity.ImageFields, field => field.Id === attachedField.Id);\r\n this._selectedField(selectedField);\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n }\r\n }\r\n\r\n private OnFieldChange() {\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n } else {\r\n const translations = this.NameTranslations();\r\n const defTrans = this.NameTranslations()[0];\r\n defTrans.Translation = this._selectedField().Name;\r\n this.SelectedName(defTrans);\r\n this.NameTranslations([]);\r\n this.NameTranslations(translations);\r\n }\r\n\r\n\r\n }\r\n\r\n ToggleUseFieldName() {\r\n this.UseFieldName(!this.UseFieldName());\r\n }\r\n\r\n UseFieldNameAsControlName() {\r\n let field = this._selectedField();\r\n if (field) {\r\n _.each(this.NameTranslations(), (translation) => {\r\n\r\n if (translation.Language.K_Language === -1) {\r\n translation.Translation = field.Name;\r\n }\r\n\r\n let fieldTranslation = _.find(field.NameTranslations, (fieldTranslation) => {\r\n return fieldTranslation.Language.K_Language === translation.Language.K_Language;\r\n });\r\n if (fieldTranslation) {\r\n\r\n if (this.SelectedName() && this.SelectedName().Language.K_Language == fieldTranslation.Language.K_Language) {\r\n this.SelectedName().Translation = fieldTranslation.Translation;\r\n this.SelectedName.valueHasMutated();\r\n }\r\n\r\n translation.Translation = fieldTranslation.Translation;\r\n }\r\n });\r\n let translations = this.NameTranslations();\r\n this.NameTranslations([]);\r\n this.NameTranslations(translations);\r\n\r\n const defTrans = this.NameTranslations()[0];\r\n defTrans.Translation = this._selectedField().Name;\r\n this.SelectedName(defTrans);\r\n }\r\n }\r\n\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n enable: !$parent.UseFieldName(),\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\" enable: !$parent.UseFieldName(),\\r\\n textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> <label class=\\\"control-label\\\"><!-- ko text: Labels.USE_FIELD_NAME --><!-- /ko --></label> <a data-bind=\\\"click: ToggleUseFieldName\\\" tabindex=\\\"-1\\\" class=\\\"control-toggle-button\\\" href=\\\"#\\\"> <i data-bind=\\\"css: {\\r\\n 'fa-toggle-off': !UseFieldName(),\\r\\n 'fa-toggle-on': UseFieldName()\\r\\n }\\\" class=\\\"fa transition fa-toggle-on\\\"></i> </a> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group labelPosition-block\\\"> <label class=\\\"control-label\\\" for=\\\"labelPositionId\\\"> <!-- ko text: Labels.LABEL_POSITION --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _labelPositions, optionsText: 'Title', value: _selectedLabelPosition\\\" id=\\\"labelPositionId\\\" class=\\\"form-control\\\" name=\\\"labelPositionId\\\"></select> </div> </div> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field only-vertical-resize\\\">\\r\\n </textarea> <span data-bind=\\\"css: { open: $parent.DescriptionTranslationsOpened }, click: $parent.ToggleDescriptionTranslations.bind($parent)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: Labels.FIELD --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _entities, optionsText: 'Name', value: _selectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.FIELD --><!-- /ko --> </label> <div data-bind=\\\"if: _selectedEntity\\\"> <select data-bind=\\\"options: _fields, optionsText: 'Name',\\r\\n optionsAfterRender: FieldSelectorAfterRender,\\r\\n value: _selectedField,\\r\\n enableAttr: _fields().length > 0,\\r\\n event: { change: $data.OnSelectField.bind($data, $data) }\\\" id=\\\"selectedFieldId\\\" class=\\\"form-control\\\" name=\\\"fieldId\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {TABLE_TYPES} from 'Core/Constant';\r\n\r\nimport {EntityControlEditor} from '../EntityControlEditor';\r\nimport {IControl} from 'Core/Controls/IControl';\r\n\r\nimport {EntityModel} from '../../Models/EntityModel';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/BookControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/BookControlEditor'] = Template;\r\n\r\nexport class BookControlEditor extends EntityControlEditor {\r\n constructor(control: IControl) {\r\n super(control);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/BookControlEditor';\r\n }\r\n\r\n protected BindEvents() {\r\n super.BindEvents();\r\n this.SelectedEntity.subscribe(() => {\r\n this.ResetSelectOnlyProperty();\r\n });\r\n }\r\n\r\n protected PopulateEntities(entities: EntityModel[]) {\r\n entities = entities.filter(e => e.TypeName === TABLE_TYPES.Entity);\r\n\r\n this.Entities(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.EntityId === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this.SelectedEntity(attachedEntity);\r\n } else {\r\n const subjectEntity = _.find(entities, entity => entity.EntityId === this.SubjectEntityId);\r\n this.SelectedEntity(subjectEntity);\r\n }\r\n\r\n this.InitField(this.SelectedEntity());\r\n this.BindEvents();\r\n\r\n if (!attachedEntity) {\r\n this.ResetSelectOnlyProperty();\r\n }\r\n }\r\n\r\n private ResetSelectOnlyProperty() {\r\n this.EditControl.GeneralProperties.ResetProperty('SelectOnly');\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n enable: !$parent.UseFieldName(),\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\" enable: !$parent.UseFieldName(),\\r\\n textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group labelPosition-block\\\"> <label class=\\\"control-label\\\" for=\\\"labelPositionId\\\"> <!-- ko text: Labels.LABEL_POSITION --><!-- /ko --> </label> <div> <select data-bind=\\\"options: LabelPositions, optionsText: 'Title', value: SelectedLabelPosition\\\" id=\\\"labelPositionId\\\" class=\\\"form-control\\\" name=\\\"labelPositionId\\\"></select> </div> </div> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n </textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: Labels.ENTITY --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: Entities, optionsText: 'EntityName', value: SelectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {BaseControlEditor} from \"./BaseControlEditor\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/TabPageControlEditor.html';\r\nimport {TabSecurityDisplayView} from \"../../../../GeneralProperties/Managers/TabSecurity/Views/DisplayView/TabSecurityDisplayView\";\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/TabPageControlEditor'] = Template;\r\n\r\nexport class TabPageControlEditor extends BaseControlEditor {\r\n\r\n private readonly _displayView: KnockoutObservable<TabSecurityDisplayView>;\r\n\tconstructor(control: IControl) {\r\n\t\tsuper(control);\r\n this._displayView = ko.observable(null);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Screens/DesignScreen/ControlEditor/Templates/TabPageControlEditor';\r\n\t}\r\n\r\n get GeneralProperties() {\r\n return this.EditControl.GeneralProperties;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default tabPage\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"click: Toggle, class: Expanded() ? '' : 'collapsed'\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" aria-expanded=\\\"false\\\"> <!-- ko text: Name --><!-- /ko --> <!-- ko foreach: Properties --> <!-- ko with: _propertyManager --> <!--ko with: _displayView --> <!--ko foreach: _restrictionsIcons --> <i data-bind=\\\"css: $data.IconName\\\" class=\\\"restriction-icon fa\\\"></i> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </a> </h4> </div> <div data-bind=\\\"class: Expanded() ? '' : 'collapse', css: { height: Expanded() ? '' : '0'}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {TABLE_TYPES} from 'Core/Constant';\r\n\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {BaseControlEditor} from '../BaseControlEditor';\r\n\r\nimport {EntityModel} from '../../Models/EntityModel';\r\nimport {EntitiesStore} from '../../Stores/EntitiesStore';\r\n\r\nimport {EVENTS} from '../FieldControlEditor';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/SpreadsheetControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/SpreadsheetControlEditor'] = Template;\r\n\r\nexport class SpreadsheetControlEditor extends BaseControlEditor {\r\n protected _entities: KnockoutObservableArray<EntityModel>;\r\n protected _selectedEntity: KnockoutObservable<EntityModel>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this.InitEditControlData(control);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/SpreadsheetControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0]\r\n super.AfterRender(container);\r\n\r\n BlockUI.Block();\r\n\r\n this.LoadData()\r\n .then(entities => this.PopulateEntities(entities))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n GetControlEditorModel() {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n const selectedEntity = this._selectedEntity();\r\n controlEditorModel.EntityId = selectedEntity.EntityId;\r\n controlEditorModel.EntityName = selectedEntity.EntityName;\r\n\r\n const selectedField = this.EditControl.GetFieldModel();\r\n controlEditorModel.FieldId = selectedField.Id;\r\n controlEditorModel.FieldName = selectedField.Name;\r\n controlEditorModel.FieldNameTranslation = selectedField.FieldNameTranslation;\r\n\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n if (translation.Selected || (desktopLanguage == translation.Language.ShortName)) {\r\n translation.Selected = true;\r\n }\r\n });\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n LoadData() {\r\n return EntitiesStore.Get({\r\n EntityId: this.GetSubjectEntityId(),\r\n TableTypeId: this.GetSubjectTableTypeId()\r\n });\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n super.InitEditControlData(control);\r\n this.InitEntities();\r\n }\r\n\r\n private InitEntities() {\r\n this._entities = ko.observableArray([]);\r\n this._selectedEntity = ko.observable(null);\r\n }\r\n\r\n private PopulateEntities(entities: EntityModel[]) {\r\n entities = _.chain(entities)\r\n .filter(entity => entity.TypeName == TABLE_TYPES.Sub && _.any(entity.Fields, f => f.FieldName === 'K_SEQ'))\r\n .uniq(false, entity => entity.EntityId)\r\n .value();\r\n\r\n this._entities(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.EntityId === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this._selectedEntity(attachedEntity);\r\n } else {\r\n this.UpdateField();\r\n\r\n if (this._selectedEntity()) {\r\n this.ResetDimensions();\r\n }\r\n }\r\n\r\n this.BindEvents();\r\n }\r\n\r\n private BindEvents() {\r\n this._selectedEntity.subscribe(selectedEntity => {\r\n if (this._selectedEntity()) {\r\n this.Trigger(EVENTS.ENTITY_SELECTED, selectedEntity);\r\n }\r\n });\r\n\r\n this.On(EVENTS.ENTITY_SELECTED, this, () => this.OnEntityChange());\r\n }\r\n\r\n private OnEntityChange() {\r\n this.UpdateField();\r\n this.ResetDimensions();\r\n }\r\n\r\n private UpdateField() {\r\n if (!this._selectedEntity()) {\r\n return;\r\n }\r\n\r\n const primaryKey = this._selectedEntity().Fields.find(field => field.IsPrimaryKey() && field.FieldName !== 'K_SEQ');\r\n\r\n let fieldModel = this.EditControl.GetFieldModel();\r\n\r\n if (!fieldModel) {\r\n fieldModel = new AttachedFieldModel({ Id: primaryKey.FieldId, Name: primaryKey.FieldName, EntityId: this._selectedEntity().EntityId });\r\n this.EditControl.GetModel().Fields.push(fieldModel);\r\n } else {\r\n fieldModel.Id = primaryKey.FieldId;\r\n fieldModel.Name = primaryKey.FieldName;\r\n fieldModel.EntityId = this._selectedEntity().EntityId;\r\n }\r\n }\r\n\r\n private ResetDimensions() {\r\n this.GeneralProperties.ResetProperty('Dimensions');\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t textInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field only-vertical-resize\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t</textarea> <span data-bind=\\\"css: { open: $parent.DescriptionTranslationsOpened }, click: $parent.ToggleDescriptionTranslations.bind($parent)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: Labels.FIELD --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _entities, optionsText: 'EntityName', value: _selectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {TABLE_TYPES} from 'Core/Constant';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\n\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {ILabelPosition} from '../ControlEditor';\r\n\r\nimport {EntitiesStore} from 'Core/Screens/DesignScreen/ControlEditor/Stores/EntitiesStore';\r\nimport {LabelPositions} from 'Core/Screens/DesignScreen/ControlEditor/Enums/LabelPositions';\r\n\r\nimport {TableWithImagesModel} from '../../Models/TableWithImagesModel';\r\nimport {ImageFieldModel} from '../../Models/ImageFieldModel';\r\n\r\nimport {BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS} from '../BaseControlEditor';\r\n\r\nimport {EVENTS} from '../SignatureControlEditor';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/ImageControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/ImageControlEditor'] = Template;\r\n\r\nexport class ImageControlEditor extends BaseControlEditor {\r\n private _fields: KnockoutObservableArray<ImageFieldModel>;\r\n private _selectedField: KnockoutObservable<ImageFieldModel>;\r\n\r\n private _entities: KnockoutObservableArray<TableWithImagesModel>;\r\n private _selectedEntity: KnockoutObservable<TableWithImagesModel>;\r\n\r\n private _uncheckShowAnnotations: KnockoutObservable<boolean>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this.InitEditControlData(control);\r\n this.BindEvents();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/ImageControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n BlockUI.Block();\r\n\r\n this.LoadData()\r\n .then(entities => {\r\n this.PopulateEntities(entities);\r\n this.EnableOrDisableShowAnnotations(container);\r\n })\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n LoadData() {\r\n return EntitiesStore.GetImageEntities({\r\n SubjectTableId: this.GetSubjectEntityId()\r\n });\r\n }\r\n\r\n Save(): void {\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const controlEditorModel = this.GetControlEditorModel();\r\n\r\n this.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n\r\n this.Close();\r\n }\r\n\r\n Validate() {\r\n const validationError = super.Validate();\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedField()) {\r\n this.IsValid(false);\r\n return 'Please, select field';\r\n }\r\n }\r\n\r\n GetControlEditorModel() {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n const selectedEntity = this._selectedEntity();\r\n controlEditorModel.EntityId = selectedEntity.Id;\r\n controlEditorModel.EntityName = selectedEntity.Name;\r\n\r\n const selectedField = this._selectedField();\r\n controlEditorModel.FieldId = selectedField.Id;\r\n controlEditorModel.FieldName = selectedField.Name;\r\n controlEditorModel.UseFieldName = this.UseFieldName();\r\n\r\n if (controlEditorModel.UseFieldName) {\r\n controlEditorModel.Name = selectedField.Name;\r\n } else {\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n if (translation.Selected || (desktopLanguage == translation.Language.ShortName)) {\r\n translation.Selected = true;\r\n }\r\n });\r\n }\r\n\r\n if (this._uncheckShowAnnotations()) {\r\n let propsObj = JSON.parse(controlEditorModel.Properties);\r\n propsObj.Annotations.Properties[1].ShowAnnotations = false;\r\n\r\n let propsString = JSON.stringify(propsObj);\r\n controlEditorModel.Properties = propsString;\r\n\r\n this._uncheckShowAnnotations(false);\r\n }\r\n return controlEditorModel;\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n super.InitEditControlData(control);\r\n\r\n this.InitEntities();\r\n }\r\n\r\n BindEvents() {\r\n this._selectedEntity.subscribe(selectedEntity => {\r\n if (this._selectedEntity()) {\r\n this.Trigger(EVENTS.ENTITY_SELECTED, selectedEntity);\r\n }\r\n });\r\n\r\n this.On(EVENTS.ENTITY_SELECTED, this, eventArgs => this.OnEntityChange());\r\n this.On(EVENTS.FIELD_SELECTED, this, () => this.OnFieldChange());\r\n\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n\r\n this.UseFieldName.subscribe((newValue) => {\r\n if (newValue) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n });\r\n }\r\n\r\n OnSelectField(selectedField) {\r\n this.Trigger(EVENTS.FIELD_SELECTED, selectedField);\r\n }\r\n\r\n private InitEntities() {\r\n this._entities = ko.observableArray([]);\r\n this._selectedEntity = ko.observable(null);\r\n\r\n this._fields = ko.observableArray([]);\r\n this._selectedField = ko.observable(null);\r\n\r\n this._uncheckShowAnnotations = ko.observable(false);\r\n }\r\n\r\n PopulateEntities(entities: TableWithImagesModel[]) {\r\n entities = _.uniq(entities, false, entity => entity.Id);\r\n\r\n if (this.EditControl.GetForm().GetScreen().IsEditScreen) {\r\n entities = _.filter(entities, entity => entity.Id === this.GetSubjectEntityId() || entity.Type === TABLE_TYPES.Sub);\r\n }\r\n\r\n this._entities(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.Id === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this._selectedEntity(attachedEntity);\r\n } else {\r\n const subjectEntity = _.find(entities, entity => entity.Id === this.SubjectEntityId);\r\n this._selectedEntity(subjectEntity);\r\n }\r\n }\r\n\r\n EnableOrDisableShowAnnotations(container) {\r\n const spansArray = $(`#${container.id} .panel-default .form-group > label > span`);\r\n let useAnnotationsCheckbox = null, showAnnotationsCheckbox = null;\r\n\r\n _.each(spansArray, elem => {\r\n if (elem.innerText === this.GeneralProperties.GetPropertyName('Annotations')) {\r\n useAnnotationsCheckbox = elem.nextElementSibling;\r\n }\r\n\r\n if (elem.innerText === this.GeneralProperties.GetPropertyName('ShowAnnotations')) {\r\n showAnnotationsCheckbox = elem.nextElementSibling;\r\n }\r\n });\r\n\r\n if (!useAnnotationsCheckbox.checked) {\r\n showAnnotationsCheckbox.checked = false;\r\n this._uncheckShowAnnotations(true);\r\n showAnnotationsCheckbox.disabled = true;\r\n }\r\n\r\n let annotationsCheckboxListener = useAnnotationsCheckbox as HTMLElement;\r\n annotationsCheckboxListener.addEventListener('change', () => {\r\n if (!useAnnotationsCheckbox.checked) {\r\n showAnnotationsCheckbox.checked = false;\r\n this._uncheckShowAnnotations(true);\r\n showAnnotationsCheckbox.disabled = true;\r\n } else {\r\n this._uncheckShowAnnotations(false);\r\n showAnnotationsCheckbox.disabled = false;\r\n }\r\n })\r\n }\r\n\r\n private OnEntityChange() {\r\n const selectedEntity = this._selectedEntity();\r\n\r\n this._fields(selectedEntity.ImageFields);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n if (attachedField) {\r\n const selectedField = _.find(selectedEntity.ImageFields, field => field.Id === attachedField.Id);\r\n this._selectedField(selectedField);\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n }\r\n }\r\n\r\n private OnFieldChange() {\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n } else {\r\n const translations = this.NameTranslations();\r\n const defTrans = this.NameTranslations()[0];\r\n defTrans.Translation = this._selectedField().Name;\r\n this.SelectedName(defTrans);\r\n this.NameTranslations([]);\r\n this.NameTranslations(translations);\r\n }\r\n\r\n\r\n }\r\n\r\n ToggleUseFieldName() {\r\n this.UseFieldName(!this.UseFieldName());\r\n }\r\n\r\n UseFieldNameAsControlName() {\r\n let field = this._selectedField();\r\n if (field) {\r\n _.each(this.NameTranslations(), (translation) => {\r\n\r\n if (translation.Language.K_Language === -1) {\r\n translation.Translation = field.Name;\r\n }\r\n\r\n let fieldTranslation = _.find(field.NameTranslations, (fieldTranslation) => {\r\n return fieldTranslation.Language.K_Language === translation.Language.K_Language;\r\n });\r\n if (fieldTranslation) {\r\n\r\n if (this.SelectedName() && this.SelectedName().Language.K_Language == fieldTranslation.Language.K_Language) {\r\n this.SelectedName().Translation = fieldTranslation.Translation;\r\n this.SelectedName.valueHasMutated();\r\n }\r\n\r\n translation.Translation = fieldTranslation.Translation;\r\n }\r\n });\r\n let translations = this.NameTranslations();\r\n this.NameTranslations([]);\r\n this.NameTranslations(translations);\r\n\r\n const defTrans = this.NameTranslations()[0];\r\n defTrans.Translation = this._selectedField().Name;\r\n this.SelectedName(defTrans);\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n enable: !$parent.UseFieldName(),\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\" enable: !$parent.UseFieldName(),\\r\\n textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> <label class=\\\"control-label\\\"><!-- ko text: Labels.USE_FIELD_NAME --><!-- /ko --></label> <a data-bind=\\\"click: ToggleUseFieldName\\\" tabindex=\\\"-1\\\" class=\\\"control-toggle-button\\\" href=\\\"#\\\"> <i data-bind=\\\"css: {\\r\\n 'fa-toggle-off': !UseFieldName(),\\r\\n 'fa-toggle-on': UseFieldName()\\r\\n }\\\" class=\\\"fa transition fa-toggle-on\\\"></i> </a> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field only-vertical-resize\\\">\\r\\n </textarea> <span data-bind=\\\"css: { open: $parent.DescriptionTranslationsOpened }, click: $parent.ToggleDescriptionTranslations.bind($parent)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: Labels.FIELD --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _entities, optionsText: 'Name', value: _selectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.FIELD --><!-- /ko --> </label> <div data-bind=\\\"if: _selectedEntity\\\"> <select data-bind=\\\"options: _fields, optionsText: 'Name',\\r\\n value: _selectedField,\\r\\n enableAttr: _fields().length > 0,\\r\\n event: { change: $data.OnSelectField.bind($data, $data) }\\\" id=\\\"selectedFieldId\\\" class=\\\"form-control\\\" name=\\\"fieldId\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nexport interface IKanbanTodoType {\r\n Id: number;\r\n Name: string;\r\n}\r\n\r\nexport interface IKanbanField {\r\n Id: number;\r\n Name: string;\r\n}\r\n\r\nexport interface IKanbanSubjectEntity {\r\n Id: number;\r\n Name: string;\r\n Fields: IKanbanField[];\r\n}\r\n\r\nexport interface IKanbanTodoEntity {\r\n Id: number;\r\n Name: string;\r\n Types: IKanbanTodoType[];\r\n Fields: IKanbanField[];\r\n}\r\n\r\ninterface DesignOptionsResponseModel {\r\n ScreenSubjectFields: IKanbanField[];\r\n KanbanSubjectEntities: IKanbanSubjectEntity[];\r\n TodoEntities: IKanbanTodoEntity[];\r\n}\r\n\r\nexport class KanbanControlEditorStore {\r\n GetDesignOptions(subjectEntityId: number) {\r\n const deferred = P.defer<DesignOptionsResponseModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/KanbanBoardApi/GetDesignOptions',\r\n type: 'GET',\r\n dataType: 'json'\r\n },\r\n params: {subjectEntityId}\r\n })\r\n .then((options: DesignOptionsResponseModel) => deferred.resolve(options))\r\n .fail(error => deferred.reject(this.GetResponseError(error, 'Error reading design options')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {KanbanBoard} from 'Core/Controls/Kanban/KanbanBoard';\r\n\r\nimport {BaseControlEditor, EVENTS} from '../BaseControlEditor';\r\nimport {\r\n KanbanControlEditorStore,\r\n IKanbanSubjectEntity,\r\n IKanbanTodoEntity,\r\n IKanbanField,\r\n IKanbanTodoType\r\n} from './Stores/KanbanControlEditorStore';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/KanbanControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/KanbanControlEditor'] = Template;\r\n\r\nexport class KanbanControlEditor extends BaseControlEditor {\r\n protected EditControl: KanbanBoard;\r\n\r\n private _store: KanbanControlEditorStore;\r\n\r\n private _kanbanSubjectEntities: KnockoutObservableArray<IKanbanSubjectEntity>;\r\n private _selectedKanbanSubjectEntity: KnockoutObservable<IKanbanSubjectEntity>;\r\n\r\n private _kanbanSubjectFields: KnockoutComputed<IKanbanField[]>;\r\n private _selectedKanbanSubjectField: KnockoutObservable<IKanbanField>;\r\n\r\n private _todoEntities: KnockoutObservableArray<IKanbanTodoEntity>;\r\n private _selectedTodoEntity: KnockoutObservable<IKanbanTodoEntity>;\r\n\r\n private _todoTypes: KnockoutComputed<IKanbanTodoType[]>;\r\n private _selectedTodoType: KnockoutObservable<IKanbanTodoType>;\r\n\r\n private _todoFields: KnockoutComputed<IKanbanField[]>;\r\n private _selectedTodoField: KnockoutObservable<IKanbanField>;\r\n\r\n constructor(control: KanbanBoard) {\r\n super(control);\r\n\r\n this._store = new KanbanControlEditorStore();\r\n\r\n this._kanbanSubjectEntities = ko.observableArray([]);\r\n this._selectedKanbanSubjectEntity = ko.observable();\r\n\r\n this._kanbanSubjectFields = ko.pureComputed(() => {\r\n const selectedKanbanSubjectEntity = this._selectedKanbanSubjectEntity();\r\n return selectedKanbanSubjectEntity ? selectedKanbanSubjectEntity.Fields : [];\r\n });\r\n this._selectedKanbanSubjectField = ko.observable();\r\n\r\n this._todoEntities = ko.observableArray([]);\r\n this._selectedTodoEntity = ko.observable();\r\n\r\n this._todoTypes = ko.pureComputed(() => {\r\n const selectedTodoEntity = this._selectedTodoEntity();\r\n return selectedTodoEntity ? selectedTodoEntity.Types : [];\r\n });\r\n this._selectedTodoType = ko.observable();\r\n\r\n this._todoFields = ko.pureComputed(() => {\r\n const selectedTodoEntity = this._selectedTodoEntity();\r\n return selectedTodoEntity ? selectedTodoEntity.Fields : [];\r\n });\r\n this._selectedTodoField = ko.observable();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/KanbanControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n this.LoadData();\r\n }\r\n\r\n Save(): void {\r\n const validationError = this.Validate();\r\n\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n const controlEditorModel = this.GetControlEditorModel();\r\n\r\n this.Trigger(EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n\r\n this.Close();\r\n }\r\n\r\n Validate() {\r\n let validationError = super.Validate();\r\n\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedKanbanSubjectField()) {\r\n return 'Please, select Kanban title field';\r\n }\r\n\r\n if (!this._selectedTodoEntity()) {\r\n return 'Please, select Todo entity';\r\n }\r\n\r\n if (!this._selectedTodoType()) {\r\n return 'Please, select Todo type';\r\n }\r\n\r\n if (!this._selectedTodoField()) {\r\n return 'Please, select Todo field';\r\n }\r\n\r\n return null;\r\n }\r\n\r\n GetControlEditorModel() {\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n const selectedKanbanSubjectEntity = this._selectedKanbanSubjectEntity();\r\n if (selectedKanbanSubjectEntity) {\r\n controlEditorModel.KanbanSubjectId = selectedKanbanSubjectEntity.Id;\r\n }\r\n\r\n const selectedTitleField = this._selectedKanbanSubjectField();\r\n if (selectedTitleField) {\r\n controlEditorModel.TitleFieldId = selectedTitleField.Id;\r\n }\r\n\r\n const selectedTodoEntity = this._selectedTodoEntity();\r\n if (selectedTodoEntity) {\r\n controlEditorModel.TodoEntityId = selectedTodoEntity.Id;\r\n }\r\n\r\n const selectedTodoType = this._selectedTodoType();\r\n if (selectedTodoType) {\r\n controlEditorModel.TodoTypeId = selectedTodoType.Id;\r\n }\r\n\r\n const selectedTodoField = this._selectedTodoField();\r\n if (selectedTodoField) {\r\n controlEditorModel.TodoFieldId = selectedTodoField.Id;\r\n }\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n private LoadData() {\r\n BlockUI.Block();\r\n\r\n this._store.GetDesignOptions(this.GetSubjectEntityId())\r\n .then(options => this.PopulateData(options.ScreenSubjectFields, options.KanbanSubjectEntities, options.TodoEntities))\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private PopulateData(screenSubjectFields: IKanbanField[], kanbanSubjectEntities: IKanbanSubjectEntity[], todoEntities: IKanbanTodoEntity[]) {\r\n const defaultKanbanSubject: IKanbanSubjectEntity = {\r\n Id: null,\r\n Name: this.Labels.SCREEN_SUBJECT,\r\n Fields: screenSubjectFields\r\n };\r\n kanbanSubjectEntities.unshift(defaultKanbanSubject);\r\n this._kanbanSubjectEntities(kanbanSubjectEntities);\r\n\r\n const selectedKanbanSubjectEntity = _.any(kanbanSubjectEntities, entity => entity.Id === this.EditControl.Model.KanbanSubjectId)\r\n ? kanbanSubjectEntities.find(entity => entity.Id === this.EditControl.Model.KanbanSubjectId)\r\n : defaultKanbanSubject;\r\n this._selectedKanbanSubjectEntity(selectedKanbanSubjectEntity);\r\n\r\n const selectedKanbanSubjectField = selectedKanbanSubjectEntity.Fields.find(field => field.Id === this.EditControl.Model.TitleFieldId);\r\n this._selectedKanbanSubjectField(selectedKanbanSubjectField);\r\n\r\n const selectedTodoEntity = todoEntities.find(entity => entity.Id === this.EditControl.Model.TodoEntityId);\r\n this._todoEntities(todoEntities);\r\n this._selectedTodoEntity(selectedTodoEntity);\r\n\r\n if (this._selectedTodoEntity()) {\r\n const todoTypes = this._selectedTodoEntity().Types;\r\n\r\n const selectedTodoType = todoTypes.find(type => type.Id === this.EditControl.Model.TodoTypeId);\r\n this._selectedTodoType(selectedTodoType);\r\n\r\n const todoFields = this._selectedTodoEntity().Fields;\r\n\r\n const selectedTodoField = todoFields.find(field => field.Id === this.EditControl.Model.TodoFieldId);\r\n this._selectedTodoField(selectedTodoField);\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUBJECT_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _kanbanSubjectEntities, optionsText: 'Name', value: _selectedKanbanSubjectEntity\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUBJECT_FIELD --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _kanbanSubjectFields, optionsText: 'Name', value: _selectedKanbanSubjectField\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.TODO_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _todoEntities, optionsText: 'Name', value: _selectedTodoEntity\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.TODO_TYPE --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _todoTypes, optionsText: 'Name', value: _selectedTodoType\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.TODO_FIELD --><!-- /ko --> </label> <div> <select data-bind=\\\"\\r\\n options: _todoFields,\\r\\n optionsText: 'Name',\\r\\n value: _selectedTodoField\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"text: Name, click: Toggle, class: Expanded() ? '' : 'collapsed'\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"class: Expanded() ? '' : 'collapse', css: { height: Expanded() ? '' : '0'}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {ChartControlOptions} from '../Models/ChartControlOptions';\r\n\r\nimport {CONTROL_TYPES} from \"Core/Constant\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class ChartControlEditorStore {\r\n\r\n GetControlOptions() {\r\n const deferred = P.defer<ChartControlOptions>()\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ChartApi/GetControlOptions',\r\n type: 'GET',\r\n dataType: 'json',\r\n }\r\n }).then(options => {\r\n deferred.resolve(options);\r\n }).fail(err => {\r\n\t\t\tconst generalError = NOTIFICATIONS.ERROR_GETTING_CONTROL_OPTIONS.replace('{controlName}', CONTROL_TYPES.Chart);\r\n\t\t\tdeferred.reject(this.GetResponseError(err, generalError));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport clone from 'clone';\r\n\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {BaseControlEditor} from '../BaseControlEditor';\r\n\r\nimport {ChartControlEditorStore} from './Stores/ChartControlEditorStore';\r\nimport {ChartEntity} from './Models/ChartEntity';\r\nimport {ChartView} from './Models/ChartView';\r\n\r\nimport {PROPERTIES} from 'Core/Controls/Chart/Constants';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/ChartControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/ChartControlEditor'] = Template;\r\n\r\nexport const EVENTS = {\r\n ENTITY_SELECTED: 'ENTITY_SELECTED',\r\n VIEW_SELECTED: 'VIEW_SELECTED'\r\n};\r\n\r\nexport class ChartControlEditor extends BaseControlEditor {\r\n private _store: ChartControlEditorStore;\r\n\r\n private _entities: KnockoutObservableArray<ChartEntity>;\r\n private _selectedEntity: KnockoutObservable<ChartEntity>;\r\n private _hasEntities: KnockoutComputed<boolean>;\r\n\r\n private _views: KnockoutObservableArray<ChartView>;\r\n private _selectedView: KnockoutObservable<ChartView>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this._store = new ChartControlEditorStore();\r\n this.InitEditControlData(control);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/ChartControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0]\r\n super.AfterRender(container);\r\n\r\n BlockUI.Block();\r\n\r\n this._store.GetControlOptions()\r\n .then(options => this.PopulateEntities(options.Entities))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n GetControlEditorModel() {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n\t if (translation.Selected || (desktopLanguage == translation.Language.ShortName)) {\r\n\t\t translation.Selected = true;\r\n\t }\r\n });\r\n\r\n const selectedView = this._selectedView();\r\n\t\tif (!selectedView) {\r\n\t\t\treturn controlEditorModel;\r\n\t\t}\r\n\r\n controlEditorModel.EntityId = selectedView.Id;\r\n controlEditorModel.EntityName = selectedView.Name;\r\n\r\n\t\tconst selectedField = this.EditControl.GetFieldModel();\r\n\t\tif (!selectedField) {\r\n\t\t\treturn controlEditorModel;\r\n\t\t}\r\n\r\n controlEditorModel.FieldId = selectedField.Id;\r\n controlEditorModel.FieldName = selectedField.Name;\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n super.InitEditControlData(control);\r\n this.InitEntities();\r\n }\r\n\r\n private InitEntities() {\r\n this._entities = ko.observableArray([]);\r\n this._selectedEntity = ko.observable(null);\r\n this._hasEntities = ko.computed(() => _.any(this._entities()));\r\n\r\n this._views = ko.observableArray([]);\r\n this._selectedView = ko.observable(null);\r\n }\r\n\r\n\tprivate PopulateEntities(entities: ChartEntity[]) {\r\n\t\tif (!_.any(entities)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n this._entities(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n const selectedView = attachedField && _.chain(entities)\r\n .map(entity => entity.Views)\r\n .flatten()\r\n .value()\r\n .find(v => v.PkFieldId === attachedField.Id);\r\n\r\n if (selectedView) {\r\n const selectedEntity = _.find(entities, entity => _.any(entity.Views, view => view.Id === selectedView.Id));\r\n\r\n if (selectedEntity) {\r\n this._selectedEntity(selectedEntity);\r\n this._views(selectedEntity.Views);\r\n\t\t\t\tthis._selectedView(selectedView);\r\n\t\t\t\tthis.UpdateAxisOptions();\r\n this.BindEvents();\r\n\r\n return;\r\n }\r\n }\r\n\r\n this._selectedEntity(entities[0]);\r\n this.UpdateSubTableView();\r\n this.BindEvents();\r\n }\r\n\r\n private BindEvents() {\r\n this._selectedEntity.subscribe(selectedEntity => {\r\n if (this._selectedEntity()) {\r\n this.Trigger(EVENTS.ENTITY_SELECTED, selectedEntity);\r\n }\r\n });\r\n\r\n this._selectedView.subscribe(selectedView => {\r\n if (this._selectedView()) {\r\n this.Trigger(EVENTS.VIEW_SELECTED, selectedView);\r\n }\r\n })\r\n\r\n this.On(EVENTS.ENTITY_SELECTED, this, () => this.UpdateSubTableView());\r\n\t\tthis.On(EVENTS.VIEW_SELECTED, this, () => {\r\n\t\t\tthis.UpdateField();\r\n\t\t\tthis.UpdateAxisOptions();\r\n\t\t});\r\n }\r\n\r\n private UpdateSubTableView() {\r\n const selectedEntity = this._selectedEntity();\r\n\r\n if (!selectedEntity) {\r\n return;\r\n }\r\n\r\n this._views(selectedEntity.Views);\r\n this._selectedView(selectedEntity.Views[0]);\r\n\r\n\t\tthis.UpdateField();\r\n\t\tthis.UpdateAxisOptions();\r\n }\r\n\r\n private UpdateField() {\r\n const selectedView = this._selectedView();\r\n if (!selectedView) {\r\n return;\r\n }\r\n\r\n let fieldModel = this.EditControl.GetFieldModel();\r\n\r\n if (!fieldModel) {\r\n fieldModel = new AttachedFieldModel({ Id: selectedView.PkFieldId, Name: selectedView.PkFieldName, EntityId: selectedView.Id});\r\n this.EditControl.GetModel().Fields.push(fieldModel);\r\n } else {\r\n fieldModel.Id = selectedView.PkFieldId;\r\n fieldModel.Name = selectedView.PkFieldName;\r\n fieldModel.EntityId = selectedView.Id;\r\n }\r\n\t}\r\n\r\n\tprivate UpdateAxisOptions() {\r\n\t\tconst selectedView = this._selectedView();\r\n\t\tif (!selectedView) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst generalProperties = this.EditControl.GeneralProperties;\r\n\t\tconst seriesOptions = _.map(selectedView.Fields, (f) => {\r\n\t\t\treturn {\r\n\t\t\t\tName: f.Name,\r\n\t\t\t\tValue: f.Id\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tgeneralProperties.SetPropertyOptions('Series', clone(seriesOptions));\r\n\r\n\t\tconst axisFields = _.filter(selectedView.Fields, f => f.IsInteger || f.IsDecimal || f.IsText || f.IsDate || f.IsDatetime);\r\n\t\tif (!_.any(axisFields)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst axisOptions = _.map(axisFields, (f) => {\r\n\t\t\treturn {\r\n\t\t\t\tName: f.Name,\r\n\t\t\t\tValue: f.Id\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tgeneralProperties.SetPropertyOptions(PROPERTIES.X_AXIS, clone(axisOptions));\r\n\t\tgeneralProperties.SetPropertyOptions(PROPERTIES.Y_AXIS, clone(axisOptions));\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t textInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field only-vertical-resize\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t</textarea> <span data-bind=\\\"css: { open: $parent.DescriptionTranslationsOpened }, click: $parent.ToggleDescriptionTranslations.bind($parent)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _entities, \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsText: 'Name', \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsCaption: !_hasEntities() ? Labels.NO_VALID_SUBTABLE_VIEW : null,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: _selectedEntity, \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { disabled: !_hasEntities() }\\\" class=\\\"form-control\\\"></select> </div> </div> </div> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUB_TABLE_VIEW --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _views, \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsText: 'Name', \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: _selectedView, \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { disabled: !_hasEntities() }\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko with: PropertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControlEditor} from \"../BaseControlEditor\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/RecipeEditorControlEditor.html';\r\nimport {BlockUI} from \"../../../../../Common/BlockUi\";\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/RecipeEditorControlEditor'] = Template;\r\n\r\nexport class RecipeEditorControlEditor extends BaseControlEditor {\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this.InitEditControlData(control);\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n super.InitEditControlData(control);\r\n // this.InitEntities();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/RecipeEditorControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n // BlockUI.Block();\r\n // this.LoadData()\r\n // .then(entities => {\r\n // this.PopulateEntities(entities)\r\n // })\r\n // .always(() => BlockUI.Unblock());\r\n }\r\n\r\n // private InitEntities() {\r\n // this._entities = ko.observableArray([]);\r\n // this._selectedEntity = ko.observable(null);\r\n //\r\n // this._fields = ko.observableArray([]);\r\n // this._selectedField = ko.observable(null);\r\n // }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal recipeEditorControlEditor\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n enable: !$parent.UseFieldName()\\r\\n event:{keyup: $parent.UpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\" enable: !$parent.UseFieldName(), textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> <!-- <label class=\\\"control-label\\\"><!– ko text: Labels.USE_FIELD_NAME –><!– /ko –></label>--> <!-- <a data-bind=\\\"click: ToggleUseFieldName\\\" tabindex=\\\"-1\\\" class=\\\"control-toggle-button\\\" href=\\\"#\\\">--> <!-- <i data-bind=\\\"css: {--> <!-- 'fa-toggle-off': !UseFieldName(),--> <!-- 'fa-toggle-on': UseFieldName()--> <!-- }\\\" class=\\\"fa transition fa-toggle-on\\\"></i>--> <!-- </a>--> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <!-- <div class=\\\"form-group labelPosition-block\\\">--> <!-- <label class=\\\"control-label\\\" for=\\\"labelPositionId\\\">--> <!-- <!– ko text: Labels.LABEL_POSITION –><!– /ko –>--> <!-- </label>--> <!-- <div>--> <!-- <select data-bind=\\\"options: _labelPositions, optionsText: 'Title', value: _selectedLabelPosition\\\" id=\\\"labelPositionId\\\" class=\\\"form-control\\\" name=\\\"labelPositionId\\\"></select>--> <!-- </div>--> <!-- </div>--> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field only-vertical-resize\\\">\\r\\n </textarea> <span data-bind=\\\"css: { open: $parent.DescriptionTranslationsOpened }, click: $parent.ToggleDescriptionTranslations.bind($parent)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <!-- <fieldset class=\\\"field-attachment-block\\\">--> <!-- <legend class=\\\"control-editor-legend\\\"><!– ko text: Labels.FIELD –><!– /ko –></legend>--> <!-- <div class=\\\"entity-field-group\\\">--> <!-- <div class=\\\"form-group\\\">--> <!-- <label class=\\\"control-label\\\">--> <!-- <!– ko text: Labels.ENTITY –><!– /ko –>--> <!-- </label>--> <!-- <div>--> <!-- <select data-bind=\\\"options: _entities, optionsText: 'Name', value: _selectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select>--> <!-- </div>--> <!-- </div>--> <!-- <div class=\\\"form-group\\\">--> <!-- <label class=\\\"control-label\\\">--> <!-- <!– ko text: Labels.FIELD –><!– /ko –>--> <!-- </label>--> <!-- <div data-bind=\\\"if: _selectedEntity\\\">--> <!-- <select data-bind=\\\"options: _fields, optionsText: 'Name',--> <!-- optionsAfterRender: FieldSelectorAfterRender,--> <!-- value: _selectedField,--> <!-- enableAttr: _fields().length > 0,--> <!-- event: { change: $data.OnSelectField.bind($data, $data) }\\\"--> <!-- id=\\\"selectedFieldId\\\" class=\\\"form-control\\\" name=\\\"fieldId\\\"></select>--> <!-- </div>--> <!-- </div>--> <!-- </div>--> <!-- </fieldset>--> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {FIELD_TYPES} from \"Core/Constant\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {EntityModel} from \"Core/Screens/DesignScreen/ControlEditor/Models/EntityModel\";\r\nimport {FieldControlEditor} from \"Core/Screens/DesignScreen/ControlEditor/Editors/FieldControlEditor\";\r\n\r\nexport class MapsControlEditor extends FieldControlEditor {\r\n constructor(control: IControl) {\r\n super(control);\r\n }\r\n\r\n protected FilterEntities(entities: EntityModel[]) {\r\n let filteredEntities = [];\r\n\r\n for (let entity of entities) {\r\n const filteredFields = entity.Fields.filter(field => field.FieldTypeName === FIELD_TYPES.Text);\r\n\r\n if (filteredFields.length > 0) {\r\n entity.Fields = filteredFields;\r\n filteredEntities.push(entity);\r\n }\r\n }\r\n\r\n return filteredEntities;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'has-error': !$parent.IsValid()},\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"processCardPageScreen\\\"> Process card </label> <div> <select data-bind=\\\"blockElement: $data._isLoading, optionsCaption: 'Select...', options: _processCardPageScreens, optionsText: 'Name', value: _selectedProcessCardScreen\\\" id=\\\"processCardPageScreen\\\" class=\\\"form-control\\\" name=\\\"processCardPageScreen\\\"></select> </div> </div> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class ProcessCardPageModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {LookupFieldModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/LookupFieldModel';\r\nimport { ProcessCardPageModel } from '../Models/ProcessCardPageModel';\r\n\r\nexport class StepPageStore {\r\n\tstatic GetProcessCardPageScreens(): P.Promise<Array<ProcessCardPageModel>> {\r\n\t\tvar deferredResult = P.defer<Array<ProcessCardPageModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetProcessCardPageScreens\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(Deserialize(data, ProcessCardPageModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {BaseControlEditor} from \"./BaseControlEditor\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/StepPageControlEditor.html';\r\nimport { ProcessCardPageModel } from \"../Models/ProcessCardPageModel\";\r\nimport { StepPageStore } from \"../Stores/StepPageStore\";\r\nimport { BlockUI } from \"../../../../Common/BlockUi\";\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/StepPageControlEditor'] = Template;\r\n\r\nexport class StepPageControlEditor extends BaseControlEditor {\r\n\tprivate _processCardPageScreens: KnockoutObservableArray<ProcessCardPageModel>;\r\n\tprivate _selectedProcessCardScreen: KnockoutObservable<ProcessCardPageModel>;\r\n\tprivate _isLoading: KnockoutObservable<boolean>;\r\n\t\r\n\tconstructor(control: IControl) {\t\t\r\n\t\tsuper(control);\r\n\t\tthis._isLoading = ko.observable(false);\r\n\t\tthis._processCardPageScreens = ko.observableArray([]);\r\n\t\tthis._selectedProcessCardScreen = ko.observable(null);\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tLoadData(){\r\n\t\tthis._isLoading(true);\r\n\t\tStepPageStore.GetProcessCardPageScreens()\r\n\t\t.always(()=>{\r\n\t\t\tthis._isLoading(false);\r\n\t\t})\r\n\t\t.then(screens=>{\r\n\t\t\tthis._processCardPageScreens(screens);\r\n\t\t\tthis._selectedProcessCardScreen(_.find(screens, screen=>screen.Id == this.EditControlModel.ScreenId));\r\n\t\t\tthis._selectedProcessCardScreen.subscribe((newValue)=>{\r\n\t\t\t\tthis.EditControlModel.ScreenId = newValue?.Id;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Screens/DesignScreen/ControlEditor/Templates/StepPageControlEditor';\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {BaseControlEditor} from 'Core/Screens/DesignScreen/ControlEditor/Editors/BaseControlEditor';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {Behavior} from 'Core/Controls/ButtonCopy/Constants/Behavior';\r\nimport {IconManager} from 'Core/Components/IconManager/IconManager';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\nimport {DesignScreen} from 'Core/Screens/DesignScreen/DesignScreen';\r\n\r\nexport class ButtonCopyControlEditor extends BaseControlEditor {\r\n private _iconModel = IconModel;\r\n private _icon: KnockoutObservable<IconModel>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n this._icon = ko.observable(control.GetIcon());\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n this.CheckProperties();\r\n }\r\n\r\n private CheckProperties() {\r\n let behavior = this.GeneralProperties.GetPropertyManager('Behavior');\r\n let type = this.GeneralProperties.GetPropertyManager('Type');\r\n let aliasSuffix = this.GeneralProperties.GetPropertyManager('AliasSuffix');\r\n\r\n if (behavior && type && aliasSuffix) {\r\n let isEnabled = behavior.Value() && behavior.Value().Value === Behavior.CopyToType;\r\n\r\n type.SetEnabled(isEnabled);\r\n aliasSuffix.SetEnabled(isEnabled);\r\n\r\n if (!isEnabled){\r\n type.SetValue(null);\r\n aliasSuffix.Value('');\r\n }\r\n\r\n behavior.Value.subscribe((val)=>{\r\n isEnabled = val && val.Value === Behavior.CopyToType;\r\n\r\n type.SetEnabled(isEnabled);\r\n aliasSuffix.SetEnabled(isEnabled);\r\n\r\n if (!isEnabled){\r\n type.SetValue(null);\r\n aliasSuffix.Value('');\r\n }\r\n });\r\n }\r\n }\r\n\r\n GetControlEditorModel() {\r\n const controlEditorModel = super.GetControlEditorModel();\r\n controlEditorModel.Icon = this._icon();\r\n return controlEditorModel;\r\n }\r\n\r\n OpenIconManager() {\r\n const screen = this.Control.GetForm().GetScreen() as DesignScreen;\r\n const icons = screen.DesignModel.Icons;\r\n\r\n let iconManager = new IconManager(icons);\r\n iconManager.Show();\r\n\r\n iconManager.On('ICON_SELECTED', this, (eventArgs) => {\r\n this._icon(eventArgs.data.Icon);\r\n });\r\n }\r\n\r\n get Icon() {\r\n return this._icon();\r\n }\r\n}","import {CONTROL_TYPES} from \"Core/Constant\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {ProductConfigurator} from 'Core/Controls/ProductConfigurator/ProductConfigurator';\r\nimport {KanbanBoard} from 'Core/Controls/Kanban/KanbanBoard';\r\nimport {Book} from 'Core/Controls/Book/Book';\r\n\r\nimport {ControlEditor} from \"../Editors/ControlEditor\";\r\n\r\nimport {BaseControlEditor} from \"../Editors/BaseControlEditor\";\r\nimport {FieldControlEditor} from \"../Editors/FieldControlEditor\";\r\n\r\nimport {GridControlEditor} from '../Editors/GridControlEditor';\r\nimport {InvoicingControlEditor} from \"../Editors/InvoicingControl/InvoicingControlEditor\";\r\nimport {GenericButtonControlEditor} from '../Editors/GenericButtonControlEditor';\r\nimport {CurrencyControlEditor} from \"../Editors/CurrencyControlEditor\";\r\nimport {BasketControlEditor} from \"../Editors/BasketControlEditor\";\r\nimport {PlannerLevelControlEditor} from \"../Editors/PLannerLevelControl/PlannerLevelControlEditor\";\r\nimport {GanttChartControlEditor} from '../Editors/GanttChartControl/GanttChartControlEditor';\r\nimport {ProductConfiguratorControlEditor} from '../Editors/ProductConfigurator/ProductConfiguratorControlEditor';\r\nimport {SignatureControlEditor} from \"../Editors/SignatureControlEditor\";\r\nimport {BookControlEditor} from '../Editors/BookControl/BookControlEditor';\r\nimport {TabPageControlEditor} from \"../Editors/TabPageControlEditor\";\r\nimport {SpreadsheetControlEditor} from '../Editors/SpreadsheetControl/SpreadsheetControlEditor';\r\nimport {ImageControlEditor} from '../Editors/Image/ImageControlEditor';\r\nimport {KanbanControlEditor} from '../Editors/KanbanControl/KanbanControlEditor';\r\nimport {ChartControlEditor} from '../Editors/ChartControl/ChartControlEditor';\r\nimport {RecipeEditorControlEditor} from \"../Editors/RecipeEditorControl/RecipeEditorControlEditor\";\r\nimport {MapsControlEditor} from \"../Editors/MapsControl/MapsControlEditor\";\r\nimport { StepPageControlEditor } from \"../Editors/StepPageControlEditor\";\r\nimport {ButtonCopyControlEditor} from 'Core/Screens/DesignScreen/ControlEditor/Editors/ButtonCopyControl/ButtonCopyControlEditor';\r\n\r\nexport class ControlEditorFactory {\r\n static GetEditor(control: IControl) {\r\n switch (control.GetType()) {\r\n case CONTROL_TYPES.StepPage:\r\n return new StepPageControlEditor(control);\r\n case CONTROL_TYPES.Grid:\r\n return new GridControlEditor(control);\r\n\r\n case CONTROL_TYPES.Basket:\r\n return new BasketControlEditor(control);\r\n\r\n case CONTROL_TYPES.Invoicing:\r\n return new InvoicingControlEditor(control);\r\n\r\n case CONTROL_TYPES.GenericButton:\r\n return new GenericButtonControlEditor(control);\r\n\r\n case CONTROL_TYPES.MultiSelect:\r\n return new FieldControlEditor(control);\r\n\r\n case CONTROL_TYPES.Image:\r\n return new ImageControlEditor(control);\r\n\r\n case CONTROL_TYPES.Signature:\r\n return new SignatureControlEditor(control);\r\n\r\n case CONTROL_TYPES.PlannerLevel:\r\n return new PlannerLevelControlEditor(control);\r\n\r\n case CONTROL_TYPES.GanttChart:\r\n return new GanttChartControlEditor(control);\r\n\r\n case CONTROL_TYPES.ProductConfigurator:\r\n return new ProductConfiguratorControlEditor(control as ProductConfigurator);\r\n\r\n case CONTROL_TYPES.Book:\r\n return new BookControlEditor(control as Book);\r\n\r\n case CONTROL_TYPES.TabPage:\r\n return new TabPageControlEditor(control);\r\n\r\n case CONTROL_TYPES.Spreadsheet:\r\n return new SpreadsheetControlEditor(control);\r\n\r\n case CONTROL_TYPES.Kanban:\r\n return new KanbanControlEditor(control as KanbanBoard);\r\n\r\n case CONTROL_TYPES.Chart:\r\n\t\t\t\treturn new ChartControlEditor(control);\r\n\r\n case CONTROL_TYPES.RecipeEditor:\r\n return new RecipeEditorControlEditor(control);\r\n\r\n case CONTROL_TYPES.Maps:\r\n return new MapsControlEditor(control);\r\n\r\n case CONTROL_TYPES.ButtonCopy:\r\n return new ButtonCopyControlEditor(control);\r\n }\r\n\r\n const controlModel = control.GetModel();\r\n\r\n if (controlModel.TypeName === CONTROL_TYPES.Currency) {\r\n return new CurrencyControlEditor(control);\r\n }\r\n\r\n if (controlModel.IsFieldAttached || controlModel.IsLookupFieldAttached || controlModel.IsColorFieldAttached) {\r\n return new FieldControlEditor(control);\r\n }\r\n\r\n if (controlModel.IsBlobFieldAttached || control.GetModel().IsComplexControl) {\r\n return new ControlEditor(control);\r\n }\r\n\r\n return new BaseControlEditor(control);\r\n }\r\n}","export class AfterDropValidation {\r\n\tIsPositionValid(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext): boolean {\r\n\t\treturn true;\r\n\t}\r\n}","import {SubForm} from 'Core/Screens/Forms/SubForm/SubForm';\r\nimport {AfterDropValidation} from \"Core/Screens/DesignScreen/AfterDropValidation/AfterDropValidation\";\r\n\r\nexport class PortletAfterDropValidation extends AfterDropValidation {\r\n IsPositionValid(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext): boolean {\r\n return !(targetContext instanceof SubForm) || targetIndex !== 0;\r\n }\r\n}","import { AfterDropValidation } from \"Core/Screens/DesignScreen/AfterDropValidation/AfterDropValidation\";\r\nimport { PortletAfterDropValidation } from \"Core/Screens/DesignScreen/AfterDropValidation/PortletAfterDropValidation\";\r\nimport { ScreenTypes } from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nexport class ScreenTypeToDropControlValidation {\r\n\tstatic GetValidationDelegate(screenType: string): AfterDropValidation {\r\n\t\tswitch (screenType) {\r\n\t\t\tcase ScreenTypes[ScreenTypes.Portlet]:\r\n\t\t\t\treturn new PortletAfterDropValidation();\r\n\t\t\tdefault:\r\n\t\t\t\treturn new AfterDropValidation();\r\n\t\t}\r\n\t}\r\n}","import { GridStackOptions } from 'gridstack';\r\n\r\nexport const defaultGridStackOptions: GridStackOptions = {\r\n float: true,\r\n staticGrid: true,\r\n cellHeight: 100\r\n};","// Module\nvar code = \"<div class=\\\"portlet-body\\\" data-bind=\\\"style: _screenWidth(), css: {'custom-weight': _hasCustomWeight()}, class: _customStyle()\\\"> <!-- ko with: ActionBar --> <div id=\\\"actionBarSubForm\\\" class=\\\"dropcontrol-container actionBarSubForm static-controls-container\\\"> <div data-bind=\\\"dragula: { data: Controls, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropControl.bind($root) }\\\" class=\\\"action-drop-zone microClearfix\\\"> <!-- ko if: $data.IsStatic --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> <!-- ko if: !$data.IsStatic --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"action-icon-type\\\"> <!-- ko with: $parent.Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> <div class=\\\"row form-wrapper\\\" data-bind=\\\"css: {'custom-color': _hasCustomColor()}, style: _fontColor()\\\"> <div class=\\\"form-container\\\" data-bind=\\\"css: {'link-list-subform': WithLinkList}\\\"> <div class=\\\"container-scroll relative-block clearfix\\\"> <!-- ko foreach: SubForms --> <!-- ko ifnot: $data._model.Controls[0] && $data._model.Controls[0].TypeName === 'LinkList' --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, show: _isExpanded}\\\" class=\\\"mainSubForm col-md-4 form-wrapper__main-sub-form\\\"> <div class=\\\"box-shadow-wrapper\\\" data-bind=\\\"style: $parent._screenBgColor()\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> <!-- ko with: BottomBar --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <div data-bind=\\\"dragula: { data: Controls, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropControl.bind($root) }\\\" id=\\\"bottomSubForm\\\" class=\\\"dropcontrol-container microClearfix\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> <!-- ko foreach: SubForms --> <!-- ko if: $data._model.Controls[0] && $data._model.Controls[0].TypeName === 'LinkList' --> <div class=\\\"link-list-wrapper\\\" data-bind=\\\"css: {'link-list-opened': _isExpanded}\\\"> <div class=\\\"link-list-container\\\"> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, show: _isExpanded}\\\" class=\\\"mainSubForm link-list-control col-md-4 form-wrapper__main-sub-form\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import { ListScreen } from './../ListScreen/ListScreen';\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as $ from 'jquery';\r\n\r\nimport clone from 'clone';\r\n\r\nimport {GenericDeserialize, Serialize} from 'libs/cerialize';\r\nimport * as GridStack from 'gridstack';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen'\r\nimport {Search} from 'Core/Controls/Search/Search'\r\nimport {ButtonFavorite} from 'Core/Controls/ButtonFavorite/ButtonFavorite'\r\nimport {Grid} from 'Core/Controls/Grid/Grid'\r\nimport {IControlParam, IForm} from 'Core/Screens/IScreen'\r\nimport {\r\n CONTROL_TYPES,\r\n FIELD_TYPE_TO_CONTROL,\r\n FIELD_TYPES,\r\n RenderModes,\r\n CARD_SCREEN_PROPERTY_TYPE\r\n} from 'Core/Constant'\r\nimport {DesignScreenModel} from 'Core/Models/Screens/ScreenModel'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {IControl} from 'Core/Controls/IControl'\r\nimport {Tab} from 'Core/Controls/Tab/Tab'\r\nimport {TabPage} from 'Core/Controls/TabPage/TabPage'\r\nimport {DragulaExtention} from 'Core/KnockoutExtentions/DragulaExtention'\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList'\r\nimport {ButtonTemplate} from 'Core/Controls/ButtonTemplate/ButtonTemplate'\r\nimport {FieldModel} from 'QueryBuilder/Models/FieldModel'\r\nimport {ControlFactory} from 'Core/Controls/ControlFactory'\r\nimport {UpdateScreenStore} from 'Core/Screens/DesignScreen/Stores/UpdateScreenStore'\r\nimport {\r\n ControlModel as UpdateControlModel,\r\n MainFormUpdateModel,\r\n UpdateScreenModel\r\n} from 'Core/Screens/DesignScreen/Models/UpdateScreenModel';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {DashboardBlock, FormProperties} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\nimport {ControlEditorFactory} from 'Core/Screens/DesignScreen/ControlEditor/Factory/ControlEditorFactory';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel'\r\nimport {SubForm} from 'Core/Screens/Forms/SubForm/SubForm'\r\nimport {BaseForm} from 'Core/Screens/Forms/Base/BaseForm'\r\nimport {ActionBar} from 'Core/Screens/Forms/ActionBar/ActionBar'\r\nimport {BottomBar} from 'Core/Screens/Forms/BottomBar/BottomBar'\r\nimport {ControlGroup} from 'Core/Controls/FormDesigner/ToolBar/ControlToolBar/ControlGroup';\r\nimport {ControlEditorModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/ControlEditorModel'\r\nimport {EntityModel} from 'QueryBuilder/Models/EntityModel'\r\nimport {Notifier} from 'Core/Common/Notifier'\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\nimport {Icon} from 'Core/Icon/Icon';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {ConcreteEntityModel} from 'QueryBuilder/Models/ConcreteEntityModel';\r\nimport {ControlGroupModel} from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlGroupModel\";\r\nimport {LabelPositions} from \"Core/Screens/DesignScreen/ControlEditor/Enums/LabelPositions\";\r\nimport {ScreenTypeToDropControlValidation} from \"Core/Screens/DesignScreen/AfterDropValidation/ScreenTypeToAfterDropValidation\";\r\nimport {AfterDropValidation} from \"Core/Screens/DesignScreen/AfterDropValidation/AfterDropValidation\";\r\nimport {Basket} from 'Core/Controls/Basket/Basket';\r\nimport {GenericButton} from 'Core/Controls/GenericButton/GenericButton';\r\nimport {LABELS, NOTIFICATIONS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {defaultGridStackOptions} from \"Core/Screens/Dashboard/DashboardUtils\";\r\n\r\nimport BaseDesignScreenTemplate from 'Core/Screens/Templates/DesignScreen/BaseDesignScreen.html'\r\nimport DashboardDesignScreenTemplate from 'Core/Screens/Templates/DesignScreen/DashboardDesignScreen.html'\r\nimport ProcessCardDesignScreenTemplate from 'Core/Screens/Templates/DesignScreen/ProcessCardDesignScreen.html'\r\n\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {LanguageModel} from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {Planner} from \"Core/Controls/Planner/Planner\";\r\nimport {PlannerPage} from \"Core/Controls/PlannerPage/PlannerPage\";\r\nimport {PlannerLevel} from \"../../Controls/PlannerLevel/PlannerLevel\";\r\nimport {SPIMCopy} from \"../../Controls/SpimCopy/SpimCopy\";\r\nimport {EntityTypes} from \"../../Controls/Grid/BaseGrid/Enums/EntityTypes\";\r\nimport {ButtonCopy} from '../../Controls/ButtonCopy/ButtonCopy';\r\nimport {KanbanBoard} from '../../Controls/Kanban/KanbanBoard';\r\nimport {SubFormModel} from '../../Models/Screens/SubFormModel';\r\nimport {RecipeEditor} from \"../../Controls/RecipeEditor/RecipeEditor\";\r\nimport {Timer} from \"Core/Controls/Timer/Timer\";\r\nimport {log} from \"fullcalendar/src/util\";\r\nimport {ISettingsModal} from \"../../Controls/FormDesigner/SettingsModal/SettingsModal\";\r\nimport { Step } from '../../Controls/Step/Step';\r\nimport { StepPage } from '../../Controls/StepPage/StepPage';\r\nimport { ButtonPlan } from '../../Controls/ButtonPlan/ButtonPlan';\r\n\r\nko.templates['Core/Screens/Templates/DesignScreen/BaseDesignScreen'] = BaseDesignScreenTemplate;\r\nko.templates['Core/Screens/Templates/DesignScreen/DashboardDesignScreen'] = DashboardDesignScreenTemplate;\r\nko.templates['Core/Screens/Templates/DesignScreen/ProcessCardDesignScreen'] = ProcessCardDesignScreenTemplate;\r\n\r\nconst DEFAULT_LABEL_POSITION = 'Left';\r\nconst LINK_LIST_REQUIRED_ENTITY = 'SYS_USERS';\r\nconst CONRTOL_WITH_BLOBFIELDATTACHED = ['Image', 'Document'];\r\n\r\nenum RelationTypes {\r\n OneToOneSubject,\r\n OneToOne,\r\n OneToMain,\r\n OneToMany\r\n}\r\n\r\nenum SortGroups {\r\n Header,\r\n OptionalHeader,\r\n Custom,\r\n OptionalFooter,\r\n Footer,\r\n Undefined\r\n}\r\n\r\nfunction getSubFormGridOptions(subForm: SubForm) {\r\n return {\r\n id: subForm.GetFormGuid(),\r\n content: `\r\n <div class=\"mainSubForm form-wrapper__main-sub-form grid-stack-item__main-sub-form\">\r\n <div class=\"dashboardSubForm-box\" id=\"${subForm.GetFormGuid()}\"></div>\r\n </div>\r\n `\r\n };\r\n}\r\n\r\nexport class DesignScreen extends BaseScreen {\r\n private _designModel: DesignScreenModel;\r\n private _subFormsWith: KnockoutObservable<any>;\r\n private _configuringLayout: KnockoutObservable<boolean>;\r\n private _updateModel: UpdateScreenModel;\r\n\tprivate _hasChanges: KnockoutObservable<boolean>;\r\n private _afterDropValidation: AfterDropValidation;\r\n private _formProperties: FormProperties = new FormProperties();\r\n private _gridStack: GridStack;\r\n SubjectEntity: ConcreteEntityModel;\r\n\r\n private _hasCustomColor: KnockoutObservable<boolean>;\r\n private _hasCustomWeight: KnockoutObservable<boolean>;\r\n private _screenWidth: KnockoutObservable<any>;\r\n private _screenBgColor: KnockoutObservable<any>;\r\n private _screenColors: KnockoutObservable<any>;\r\n private _fontColor: KnockoutObservable<any>;\r\n private _customStyle: KnockoutObservable<any>;\r\n\r\n private _fontFamily: KnockoutObservable<string>;\r\n private _fontWeight: KnockoutObservable<string>;\r\n private _fontStyle: KnockoutObservable<string>;\r\n\r\n constructor(screenModel: DesignScreenModel, subjectEntity: ConcreteEntityModel) {\r\n super(screenModel.ExistingScreenViewModel, RenderModes.Design);\r\n\r\n this.SubjectEntity = subjectEntity;\r\n this._designModel = screenModel;\r\n this._subFormsWith = ko.observable({});\r\n this._configuringLayout = ko.observable(false);\r\n this.InitCalcSubFormSize();\r\n this._updateModel = new UpdateScreenModel();\r\n this._hasChanges = ko.observable(false);\r\n this._afterDropValidation = ScreenTypeToDropControlValidation.GetValidationDelegate(this.GetType());\r\n this._hasCustomColor = ko.observable(null);\r\n this._hasCustomWeight = ko.observable(null);\r\n this._screenWidth = ko.observable(null);\r\n this._screenBgColor = ko.observable(null);\r\n this._screenColors = ko.observable(null);\r\n this._fontColor = ko.observable(null);\r\n this._customStyle = ko.observable(null);\r\n\r\n this._fontFamily = ko.observable(null);\r\n this._fontWeight = ko.observable(null);\r\n this._fontStyle = ko.observable(null);\r\n this._updateModel.IsEnablePathRunner = screenModel.ExistingScreenViewModel.IsEnablePathRunner;\r\n\r\n try {\r\n this._formProperties = GenericDeserialize(JSON.parse(screenModel.FormProperties), FormProperties);\r\n } catch (error) {\r\n }\r\n\r\n let body = $('body');\r\n if (!body.hasClass('Dashboard') && this.IsDashboard){\r\n body.addClass('Dashboard');\r\n }\r\n\r\n this.Init();\r\n this.InitEvents();\r\n }\r\n\r\n set HasCustomColor(val: boolean) {\r\n this._hasCustomColor(val);\r\n }\r\n set HasCustomWeight(val: boolean) {\r\n this._hasCustomWeight(val);\r\n }\r\n set ScreenWidth(val: string) {\r\n this._screenWidth({width: val});\r\n }\r\n set ScreenBgColor(val: string) {\r\n this._screenBgColor({backgroundColor: val})\r\n }\r\n set Color(val: string) {\r\n this._fontColor({color: val});\r\n this._hasCustomColor(!!val);\r\n }\r\n\r\n set FontFamily(val:string) {\r\n this._fontFamily(val)\r\n this._customStyle(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n }\r\n set FontWeight(val:string) {\r\n this._fontWeight(val)\r\n this._customStyle(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n this._hasCustomWeight(!!this._fontWeight());\r\n }\r\n set FontStyle(val:string) {\r\n this._fontStyle(val)\r\n this._customStyle(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n }\r\n\r\n private InitEvents() {\r\n this.On('CONTROL_MODIFY', this, (eventArgs: any) => {\r\n this._hasChanges(true);\r\n eventArgs.data.Control.ModelHasMutated();\r\n });\r\n }\r\n\r\n IsSubjectScreen() {\r\n const screenType = this.GetType();\r\n return screenType === ScreenTypes[ScreenTypes.ConsultScreen]\r\n || screenType === ScreenTypes[ScreenTypes.EditScreen];\r\n }\r\n\r\n get ScreenId(): number {\r\n return this._model.Id;\r\n }\r\n\r\n get ControlGroups(): Array<ControlGroupModel> {\r\n return this._designModel.ControlToolbar.Groups;\r\n }\r\n\r\n\r\n TogglePathRunner(){\r\n this._updateModel.IsEnablePathRunner = !this._updateModel.IsEnablePathRunner;\r\n this._hasChanges(true);\r\n }\r\n\r\n get IsEnablePathRunner(){\r\n return this._updateModel.IsEnablePathRunner;\r\n }\r\n\r\n StartLayoutConfiguration() {\r\n this._configuringLayout(true);\r\n\r\n if (this.IsDashboard) {\r\n this._gridStack.setStatic(false);\r\n\r\n this._subForms.forEach(subForm => subForm.StartLayoutConfiguration());\r\n }\r\n }\r\n\r\n ApplyLayout() {\r\n this._configuringLayout(false);\r\n\r\n if (this.IsDashboard) {\r\n this._gridStack.setStatic(true);\r\n\r\n this._subForms.forEach(subForm => subForm.ApplyLayout());\r\n }\r\n }\r\n\r\n private GetDefaultControlModel(controlType: string) {\r\n let controlModel = null;\r\n _.each(this.ControlGroups, (controlGroup) => {\r\n const model = _.find(controlGroup.Controls, (control) => {\r\n return control.TypeName === controlType\r\n });\r\n\r\n if (model) {\r\n controlModel = model;\r\n }\r\n });\r\n return controlModel;\r\n }\r\n\r\n get Controls(): Array<IControl> {\r\n return this._controls;\r\n }\r\n\r\n get HasChanges(): boolean {\r\n return this._hasChanges();\r\n }\r\n\r\n set HasChanges(value: boolean) {\r\n this._hasChanges(value);\r\n }\r\n\r\n get ScreenType(): string {\r\n return this._model.ScreenTypeName;\r\n }\r\n\r\n private DestroyDragula() {\r\n const toolBarToDesignerDrake = DragulaExtention.FindGroup('ToolBarToDesigner');\r\n if (toolBarToDesignerDrake) {\r\n DragulaExtention.DestroyGroup(toolBarToDesignerDrake);\r\n }\r\n }\r\n\r\n private Init() {\r\n this.DestroyDragula();\r\n this.SubForms.forEach(subForm => this.BindSubFormEvents(subForm));\r\n\r\n const toolBarToDesignerDrake = DragulaExtention.AddGroupWithOptions('ToolBarToDesigner', {\r\n accepts: (el, target, source, sibling) => {\r\n const elModel = ko.dataFor(el);\r\n const targetModel = ko.dataFor(target);\r\n const sourceModel = ko.dataFor(source);\r\n\r\n if (elModel instanceof FieldModel) {\r\n if (elModel.FieldTypeName === FIELD_TYPES.Property) {\r\n return false;\r\n }\r\n\r\n if (elModel.FieldTypeName === FIELD_TYPES.Spim) {\r\n\r\n if (!(targetModel instanceof Grid)) {\r\n return false;\r\n }\r\n\r\n const isSubTableGrid = targetModel.FieldModel && targetModel.FieldModel.EntityTypeName === EntityTypes[EntityTypes.Sub];\r\n if (!isSubTableGrid) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (elModel instanceof LinkList) {\r\n //allow move link list only in Main4 block\r\n let screenModel = this._designModel.ExistingScreenViewModel;\r\n let allowedLinkListSubFormIndex = 3;\r\n if (this._subForms.indexOf(targetModel) !== allowedLinkListSubFormIndex) {\r\n return false;\r\n }\r\n\r\n //forbid linkList dropping on the Edit Screen of the SYS_USERS\r\n if (screenModel.EntityName === LINK_LIST_REQUIRED_ENTITY) {\r\n if (screenModel.ScreenTypeName === ScreenTypes[ScreenTypes.EditScreen]) {\r\n return false;\r\n }\r\n }\r\n\r\n //forbid second linkList dropping\r\n if (targetModel.Controls()) {\r\n return !targetModel.Controls().some(control => control instanceof LinkList);\r\n }\r\n }\r\n\r\n //forbid second recipeEditor dropping\r\n if (elModel instanceof RecipeEditor) {\r\n return this.IsEnableDragRecipeEditor(elModel);\r\n }\r\n\r\n //prevent dragging non timer controls on kanban\r\n if (!(elModel instanceof Timer) && targetModel instanceof KanbanBoard) {\r\n return false;\r\n }\r\n\r\n //check if it is possible to drag timer control\r\n if (elModel instanceof Timer && !this.IsEnableDragTimer(targetModel)) {\r\n return false;\r\n }\r\n\r\n if (targetModel instanceof SubForm) {\r\n const form = (targetModel as SubForm);\r\n\r\n if (form.ConfiguringLayout) {\r\n return false;\r\n }\r\n }\r\n\r\n //prevent move controls or fields into tab header\r\n if (targetModel instanceof Tab && !(elModel instanceof TabPage)) {\r\n return false;\r\n }\r\n\r\n //prevent move any fields into TemplateButton container\r\n if (targetModel instanceof Grid && (elModel instanceof AttachedFieldModel || elModel instanceof FieldModel)) {\r\n if (target.hasAttribute('subControls')) {\r\n return false;\r\n }\r\n }\r\n\r\n //prevent move not allowed controls into Grid\r\n if (targetModel instanceof Grid && elModel instanceof BaseControl) {\r\n const allowedSubControlTypes = [ButtonTemplate, Basket, GenericButton, SPIMCopy, ButtonCopy, ButtonPlan];\r\n const controlTypeAllowed = !!allowedSubControlTypes.find(ct => elModel instanceof ct);\r\n\r\n if (!controlTypeAllowed) {\r\n return false;\r\n }\r\n\r\n if (elModel instanceof ButtonCopy) {\r\n const allowedScreens = [ScreenTypes[ScreenTypes.ConsultScreen], ScreenTypes[ScreenTypes.EditScreen], ScreenTypes[ScreenTypes.ListScreen]];\r\n return !!allowedScreens.find(screenType => this.GetType() === screenType);\r\n }\r\n }\r\n\r\n if (!(targetModel instanceof Grid) && elModel instanceof ButtonCopy && this.GetType() === ScreenTypes[ScreenTypes.ListScreen]) {\r\n return false;\r\n }\r\n\r\n if (!(targetModel instanceof Grid) && elModel instanceof SPIMCopy) {\r\n return false;\r\n }\r\n\r\n //prevent move field into Grid more than once\r\n if (targetModel instanceof Grid && elModel instanceof FieldModel) {\r\n const fieldAlreadyDropped = _.any(targetModel.Fields, field => field.Id === elModel.FieldId);\r\n\r\n if (fieldAlreadyDropped) {\r\n return false;\r\n }\r\n }\r\n\r\n //prevent drop Basket to any places except of Grid\r\n if (!(targetModel instanceof Grid) && elModel instanceof Basket) {\r\n return false;\r\n }\r\n\r\n //disable move TabPage control from Tab to Form\r\n if (elModel instanceof TabPage && !(targetModel instanceof Tab)) {\r\n return false;\r\n }\r\n\r\n //prevent moving fields from linkList into subForm\r\n if (elModel instanceof AttachedFieldModel && sourceModel instanceof LinkList && !(targetModel instanceof LinkList)) {\r\n return false;\r\n }\r\n\r\n //prevent moving fields from Grid into subForm\r\n if (elModel instanceof AttachedFieldModel && sourceModel instanceof Grid && !(targetModel instanceof Grid)) {\r\n return false;\r\n }\r\n\r\n //forbidden drop duplicate Field into EditScreen\r\n if ((this.GetType() === ScreenTypes[ScreenTypes.ListScreen] || this.GetType() === ScreenTypes[ScreenTypes.EditScreen]) && !(targetModel instanceof Grid)\r\n && !(targetModel instanceof LinkList && sourceModel instanceof EntityModel))\r\n {\r\n if (elModel instanceof FieldModel) {\r\n var field = <FieldModel>elModel;\r\n const controls = this.GetAllControls();\r\n let result = true;\r\n\r\n _.each(controls, (control) => {\r\n\r\n if(control.GetType() === CONTROL_TYPES.Maps){\r\n return;\r\n }\r\n\r\n const baseControl = control as BaseControl;\r\n if (control.GetModel().Fields.length === 1) {\r\n if (baseControl.GetFieldId() === field.FieldId) {\r\n $(control.GetWrapper()).addClass('has-error');\r\n result = false;\r\n }\r\n }\r\n });\r\n\r\n if (!result) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n //prevent drop Tab into himself or nested TabPage or nested grid\r\n if (elModel instanceof Tab && (targetModel instanceof TabPage || targetModel instanceof Grid)) {\r\n return false;\r\n }\r\n\r\n if (targetModel instanceof EntityModel) {\r\n return false;\r\n }\r\n\r\n //prevent drop control into himself\r\n if (ko.dataFor(el) === ko.dataFor(target)) {\r\n return false;\r\n }\r\n\r\n if (elModel instanceof FieldModel && sourceModel instanceof EntityModel && this.GetType() === ScreenTypes[ScreenTypes.EditScreen] && !(targetModel instanceof Grid)) {\r\n return this.IsEnableDragField(elModel, sourceModel, targetModel);\r\n }\r\n\r\n if (elModel instanceof Search) {\r\n return this.IsEnableDragSearchTerm(elModel);\r\n }\r\n\r\n if (elModel instanceof ButtonFavorite) {\r\n return this.IsEnableButtonFavorite(elModel);\r\n }\r\n\r\n if (elModel instanceof FieldModel && sourceModel instanceof EntityModel && this.GetType() === ScreenTypes[ScreenTypes.QueryScreen] && targetModel instanceof Grid) {\r\n return false;\r\n }\r\n\r\n if (this.GetType() === ScreenTypes[ScreenTypes.StepsScreen]) {\r\n //disable move StepPage control from Step to Form\r\n if (elModel instanceof StepPage && !(targetModel instanceof Step)) {\r\n return false;\r\n }\r\n \r\n if (sourceModel instanceof ControlGroup) {\r\n if (elModel instanceof Step) {\r\n //forbid second Step dropping\r\n return this.HasOnlyOneInstanceOf(this.GetAllControls(), Step);\r\n }\r\n }\r\n \r\n }\r\n\r\n return true;\r\n },\r\n copy: (el, source) => {\r\n const sourceModel = ko.dataFor(source);\r\n if (sourceModel instanceof ControlGroup || sourceModel instanceof EntityModel) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n moves: (el, source, handle, sibling) => {\r\n //prevent moving system fields from toolbar\r\n if (this.GetType() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n if (ko.dataFor(el) instanceof FieldModel && ko.dataFor(source) instanceof EntityModel\r\n && (ko.dataFor(el) as FieldModel).IsSystem && (ko.dataFor(el) as FieldModel).FieldTypeName !== FIELD_TYPES.Reference) {\r\n return false;\r\n }\r\n }\r\n\r\n //prevent moving fields from toolbar\r\n //if (ko.dataFor(el) instanceof FieldModel && ko.dataFor(source) instanceof EntityModel) {\r\n //return this.IsEnableDragField(ko.dataFor(el), ko.dataFor(source));\r\n //};\r\n\r\n //prevent moving property field\r\n if (ko.dataFor(el) instanceof AttachedFieldModel) {\r\n const fieldModel = ko.dataFor(el) as AttachedFieldModel;\r\n\r\n //prevent moving required entity for LinkList control\r\n if (ko.dataFor(source) instanceof LinkList) {\r\n if (fieldModel.EntityName === LINK_LIST_REQUIRED_ENTITY) {\r\n return false;\r\n }\r\n }\r\n\r\n if (fieldModel.FieldTypeName === FIELD_TYPES.Property) {\r\n return false;\r\n }\r\n }\r\n\r\n //prevent moving static control\r\n if (ko.dataFor(el) instanceof BaseControl) {\r\n const control = <BaseControl>ko.dataFor(el);\r\n if (control.IsStatic) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n });\r\n\r\n toolBarToDesignerDrake.drake.on('drag', (el) => {\r\n _.each(toolBarToDesignerDrake.drake.containers, (container) => {\r\n let isShowDropContainer = true;\r\n const context = ko.dataFor(container);\r\n\r\n const elementContext = ko.dataFor(el);\r\n\r\n if (context instanceof EntityModel) {\r\n isShowDropContainer = false;\r\n }\r\n\r\n if (context instanceof ControlGroup) {\r\n isShowDropContainer = false;\r\n }\r\n\r\n if (elementContext instanceof LinkList) {\r\n let allowedLinkListSubFormIndex = 3;\r\n if (this._subForms.indexOf(context) === allowedLinkListSubFormIndex) {\r\n if (context.Controls() && !context.Controls().some(control => control instanceof LinkList)) {\r\n $(container).addClass('start-drag');\r\n }\r\n }\r\n } else {\r\n if (isShowDropContainer) {\r\n $(container).addClass('start-drag');\r\n }\r\n }\r\n });\r\n });\r\n\r\n toolBarToDesignerDrake.drake.on('dragend', () => {\r\n _.each(toolBarToDesignerDrake.drake.containers, (container) => {\r\n $(container).removeClass('start-drag');\r\n $(container).find('.has-error').removeClass('has-error');\r\n });\r\n });\r\n\r\n toolBarToDesignerDrake.drake.on('over', (el, container, source) => {\r\n const context = ko.dataFor(container);\r\n if (context instanceof SubForm && !context.IsExpanded) {\r\n context.Expand();\r\n }\r\n });\r\n }\r\n \r\n private HasOnlyOneInstanceOf<T>(array: any[], instanceType: new (...args: any[]) => T): boolean {\r\n const filteredArray = _.filter(array, (item) => item instanceof instanceType);\r\n\r\n // We check whether there is only one such element\r\n return filteredArray.length === 0;\r\n }\r\n\r\n private BindSubFormEvents(subForm: SubForm) {\r\n subForm.On('AFTER_DROP_CONTROL', this, eventArgs => {\r\n this.AfterDropControl(\r\n eventArgs.data.item,\r\n eventArgs.data.sourceIndex,\r\n eventArgs.data.sourceItems,\r\n eventArgs.data.sourceContext,\r\n eventArgs.data.targetIndex,\r\n eventArgs.data.targetItems,\r\n eventArgs.data.targetContext\r\n );\r\n });\r\n\r\n subForm.On('CONTROL_EDITOR_REQUESTED', this, eventArgs => {\r\n this.ShowControlEditor(eventArgs.data.control);\r\n });\r\n\r\n\t\tsubForm.On('REMOVE_SUB_FORM', this, eventArgs => {\r\n\t\t\tif (this.IsDashboard) {\r\n\t\t\t\tthis.ShowRemoveSubFormConfirmationDialog(eventArgs.data.subForm);\r\n\t\t\t} else {\r\n\t\t\t\tthis.RemoveSubForm(eventArgs.data.subForm);\r\n\t\t\t}\r\n\t\t});\r\n }\r\n\r\n\r\n get DesignModel(): DesignScreenModel {\r\n return this._designModel;\r\n }\r\n\r\n get FormProperties() {\r\n return this._formProperties;\r\n }\r\n\r\n GetTemplateName(): string {\r\n if (this.IsDashboard) {\r\n return 'Core/Screens/Templates/DesignScreen/DashboardDesignScreen';\r\n }\r\n\r\n if (this.IsProcessCardScreen) {\r\n return 'Core/Screens/Templates/DesignScreen/ProcessCardDesignScreen';\r\n }\r\n\r\n return 'Core/Screens/Templates/DesignScreen/BaseDesignScreen';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n this._el = el[3];\r\n\r\n if (this.IsDashboard) {\r\n setTimeout(() => {\r\n this._gridStack = GridStack.addGrid(\r\n document.querySelector('#dashboard-design-container'),\r\n {\r\n ...defaultGridStackOptions,\r\n children: this.SubForms.map(subForm => ({\r\n ...subForm.GetModel().Properties.DashboardBlock,\r\n ...getSubFormGridOptions(subForm)\r\n }))\r\n }\r\n );\r\n\r\n this._gridStack.on('added removed change', () => {\r\n this._hasChanges(true);\r\n });\r\n\r\n this.SubForms.forEach(subForm => {\r\n subForm.RenderDynamically(subForm.GetFormGuid(), this);\r\n });\r\n });\r\n }\r\n\r\n let width = this.FindElementByType(this._formProperties.Options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_WIDTH)?.Value;\r\n let bgColor = this.FindElementByType(this._formProperties.Options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR)?.Value;\r\n\r\n this._screenWidth({width: `${width?.Value}${width?.Unit?.Value}`});\r\n this._screenBgColor({backgroundColor: bgColor});\r\n\r\n let color = this.FindElementByType(this._formProperties.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_COLOR)?.Value\r\n this._fontColor({color: color});\r\n\r\n this._fontFamily(this.FindElementByType(this._formProperties.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_FAMILY)?.Value.Value);\r\n this._fontWeight(this.FindElementByType(this._formProperties.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_WEIGHT)?.Value.Value);\r\n this._fontStyle(this.FindElementByType(this._formProperties.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_STYLE)?.Value.Value);\r\n\r\n this._customStyle(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n\r\n this._hasCustomColor(!!color);\r\n this._hasCustomWeight(!!this._fontWeight());\r\n }\r\n\r\n FindElementByType(array: ISettingsModal[], type: string): ISettingsModal | undefined {\r\n return _.find(array, { Type: type });\r\n }\r\n\r\n AddSubForm() {\r\n const subFormModel = new SubFormModel();\r\n subFormModel.Name = `${this._model.Name} Block`;\r\n\r\n const subForm = new SubForm({Screen: this, Model: subFormModel, RenderMode: this._renderMode});\r\n subForm.StartLayoutConfiguration();\r\n\r\n this._subForms.push(subForm);\r\n this.BindSubFormEvents(subForm);\r\n\r\n this._gridStack.addWidget(getSubFormGridOptions(subForm));\r\n subForm.RenderDynamically(subForm.GetFormGuid(), this);\r\n }\r\n\r\n GetScreenIcon(): Icon {\r\n return new Icon({\r\n IsImage: Boolean(this._model.EntityIcon.Image),\r\n IsIcon: !Boolean(this._model.EntityIcon.Image),\r\n Image: this._model.EntityIcon.Image,\r\n FontName: this._model.EntityIcon.FontName,\r\n Name: this._model.EntityIcon.Name\r\n } as IconModel);\r\n }\r\n\r\n IsEnableButtonFavorite(elModel): boolean {\r\n let controls = this.GetAllControls();\r\n let button = _.find(controls, control => control instanceof ButtonFavorite);\r\n\r\n return !!button ? elModel.GetRenderMode() !== RenderModes.ToolBar : true;\r\n }\r\n\r\n IsEnableDragSearchTerm(elModel): boolean {\r\n let controls = this.GetAllControls();\r\n let seachTermControl = _.find(controls, control => control instanceof Search);\r\n\r\n return !!seachTermControl ? elModel.GetRenderMode() !== RenderModes.ToolBar : true;\r\n }\r\n\r\n IsEnableDragRecipeEditor(elModel): boolean {\r\n let controls = this.GetAllControls();\r\n let recipeEditorControl = _.find(controls, control => control instanceof RecipeEditor);\r\n let isEnabled = true;\r\n\r\n if (!!recipeEditorControl) {\r\n if (elModel.GetGuid() !== recipeEditorControl.GetGuid()) {\r\n isEnabled = false;\r\n }\r\n }\r\n\r\n return isEnabled;\r\n }\r\n\r\n IsEnableDragTimer(targetModel): boolean {\r\n const isDragOnKanban = targetModel instanceof KanbanBoard;\r\n if ((this.GetType() === ScreenTypes[ScreenTypes.SpecialScreen] || this.GetType() === ScreenTypes[ScreenTypes.Dashboard]) && !isDragOnKanban)\r\n {\r\n return false;\r\n }\r\n\r\n const isAlreadyAddedInKanban = isDragOnKanban\r\n && _.any(targetModel.GetSubControls(), control => control instanceof Timer);\r\n\r\n return !isAlreadyAddedInKanban;\r\n }\r\n\r\n IsEnableDragField(field: FieldModel, entity: EntityModel, targetModel): boolean {\r\n if (this.GetType() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n if (targetModel instanceof LinkList)\r\n {\r\n return field.FieldTypeName === FIELD_TYPES.Text && (entity.EntityId === this.GetEntityId() ||\r\n (_.contains(entity.RelationTypes, RelationTypes.OneToMany) && _.contains(entity.RelationTypes, RelationTypes.OneToMain)));\r\n }\r\n\r\n if (field.IsPrimaryKey) {\r\n return false;\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Document) {\r\n return true;\r\n }\r\n\r\n if (entity.EntityId === this.GetEntityId()) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n RemoveField(fieldObj, controlObj) {\r\n if (fieldObj instanceof AttachedFieldModel && controlObj instanceof BaseControl) {\r\n const field = fieldObj as AttachedFieldModel;\r\n const control = controlObj as BaseControl;\r\n const model = control.GetModel();\r\n model.Fields.splice(control.GetModel().Fields.indexOf(field), 1);\r\n control.ModelHasMutated();\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n RemoveControl(parent, control: BaseControl) {\r\n if (parent instanceof BaseForm) {\r\n const subForm = parent as SubForm;\r\n subForm.RemoveControl(subForm, control);\r\n } else if (parent instanceof BaseControl) {\r\n const parentControl = parent as BaseControl;\r\n parentControl.RemoveControl(control);\r\n } else {\r\n this.OnControlRemoved(control);\r\n }\r\n }\r\n\r\n OnControlRemoved(control: BaseControl) {\r\n if (!control.IsNew) {\r\n this._updateModel.DeletedControlIds.push(control.GetControlId());\r\n }\r\n\r\n this._hasChanges(true);\r\n }\r\n\r\n AddTranslationsToControl(control: IControl) {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n\r\n if (control.GetModel().NameTranslations.length === 0 && this._designModel.Languages.length > 0) {\r\n _.each(this._designModel.Languages, language => {\r\n let translation = new TranslationModel();\r\n translation.Language = language;\r\n translation.Selected = desktopLanguage === language.ShortName;\r\n translation.Translation = null;\r\n\r\n control.GetModel().NameTranslations.push(translation);\r\n });\r\n }\r\n\r\n if (control.GetModel().DescriptionTranslations.length === 0 && this._designModel.Languages.length > 0) {\r\n _.each(this._designModel.Languages, language => {\r\n let translationDescr = new TranslationModel();\r\n translationDescr.Language = language;\r\n translationDescr.Selected = desktopLanguage === language.ShortName;\r\n translationDescr.Translation = null;\r\n\r\n control.GetModel().DescriptionTranslations.push(translationDescr);\r\n });\r\n }\r\n }\r\n\r\n RemoveSubForm(subForm: SubForm) {\r\n const subFormIndex = this._subForms.indexOf(subForm);\r\n\r\n if (subFormIndex > -1) {\r\n this._subForms.splice(subFormIndex, 1);\r\n }\r\n\r\n if (this.IsDashboard) {\r\n this._gridStack.removeWidget(this._el.querySelector(`[gs-id=\"${subForm.GetFormGuid()}\"]`));\r\n }\r\n\r\n if (!subForm.IsNew) {\r\n this._updateModel.DeletedFormIds.push(subForm.GetFormId());\r\n }\r\n\r\n this._hasChanges(true);\r\n }\r\n\r\n\tprivate ShowRemoveSubFormConfirmationDialog(subForm: SubForm) {\r\n\t const confirmationDialog = new ConfirmationDialog({\r\n\t\t Text: CONFIRMATIONS.SUBFORM_AND_ITS_CONTROLS_WILL_BE_DELETED,\r\n\t\t Type: ConfirmationTypes.Question\r\n\t });\r\n\r\n\t confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\tthis.RemoveSubForm(subForm);\r\n\t });\r\n\t confirmationDialog.Show();\r\n }\r\n\r\n ShowControlEditor(control: IControl) {\r\n this.AddTranslationsToControl(control);\r\n const controlEditor = ControlEditorFactory.GetEditor(control);\r\n\r\n controlEditor.On(\"CONTROL_SAVED\", this, (eventArgs: any) => {\r\n const updateModel = eventArgs.data.UpdateControlModel as ControlEditorModel;\r\n const controlModel = control.GetModel();\r\n controlModel.LabelPositionValue = updateModel.LabelPos;\r\n controlModel.LabelPosition = updateModel.LabelPosName;\r\n controlModel.EntityId = updateModel.EntityId;\r\n controlModel.Id = updateModel.K_Control;\r\n controlModel.RecordLifeStatusId = updateModel.RecordLifeStatusId;\r\n controlModel.DestinationTypeId = updateModel.DestinationTypeId;\r\n controlModel.Description = updateModel.Description;\r\n controlModel.Properties = JSON.parse(updateModel.Properties);\r\n controlModel.NameTranslations = updateModel.NameTranslations;\r\n controlModel.DescriptionTranslations = updateModel.DescriptionTranslations;\r\n controlModel.Icon = updateModel.Icon;\r\n controlModel.UseFieldName = updateModel.UseFieldName;\r\n controlModel.Name = updateModel.Name;\r\n controlModel.TitleFieldId = updateModel.TitleFieldId;\r\n controlModel.KanbanSubjectId = updateModel.KanbanSubjectId,\r\n controlModel.TodoEntityId = updateModel.TodoEntityId;\r\n controlModel.TodoTypeId = updateModel.TodoTypeId;\r\n controlModel.TodoFieldId = updateModel.TodoFieldId;\r\n controlModel.ScreenId = updateModel.ScreenId;\r\n\r\n if (!controlModel.UseFieldName) {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n _.each(updateModel.NameTranslations, (translation) => {\r\n if (desktopLanguage == translation.Language.ShortName) {\r\n if (translation.Translation) {\r\n controlModel.Label = translation.Translation;\r\n } else {\r\n controlModel.Label = updateModel.Name;\r\n }\r\n }\r\n });\r\n } else {\r\n controlModel.Label = updateModel.Name;\r\n controlModel.Name = updateModel.Name\r\n }\r\n\r\n const attachedField = new AttachedFieldModel();\r\n attachedField.Id = updateModel.FieldId;\r\n attachedField.ValFieldId = updateModel.ValFieldId;\r\n attachedField.ValTableId = updateModel.ValTableId;\r\n attachedField.EntityId = updateModel.EntityId;\r\n attachedField.FieldTypeName = updateModel.TypeName;\r\n attachedField.EntityId = updateModel.EntityId;\r\n attachedField.EntityName = updateModel.EntityName;\r\n attachedField.Name = updateModel.FieldName;\r\n attachedField.FieldNameTranslation = updateModel.FieldNameTranslation;\r\n\r\n attachedField.RelatedField = this.CheckEntityTypeByName(updateModel.EntityName);\r\n\r\n if (!(control instanceof Grid) && !(control instanceof ComplexControl) && attachedField.Id !== 0 && attachedField.Id !== undefined && attachedField.Id !== null) {\r\n controlModel.Fields = [attachedField];\r\n }\r\n\r\n if ((control instanceof ComplexControl || control instanceof PlannerLevel)) {\r\n if (controlModel.TypeName === CONTROL_TYPES.TimeWriting) {\r\n if (controlModel.Fields.length > 0) {\r\n if (controlModel.Fields[0].EntityId === updateModel.AttachedFields[0].EntityId) {\r\n controlModel.Fields = updateModel.AttachedFields.concat(controlModel.Fields.filter(field => !updateModel.AttachedFields.find(item => item.Id === field.Id)))\r\n } else {\r\n controlModel.Fields = updateModel.AttachedFields;\r\n }\r\n } else {\r\n controlModel.Fields = updateModel.AttachedFields;\r\n }\r\n } else {\r\n controlModel.Fields = updateModel.AttachedFields;\r\n }\r\n\r\n controlModel.SubTableId = updateModel.SubTableId;\r\n }\r\n\r\n this._hasChanges(true);\r\n control.ModelHasMutated();\r\n\r\n if (control instanceof TabPage){\r\n control.IsTabSecurityProperties();\r\n }\r\n\r\n control.UpdateLabel();\r\n });\r\n\r\n controlEditor.Show();\r\n }\r\n\r\n CreateTab(control: IControl) {\r\n if (control instanceof Tab) {\r\n const controlModel = new ControlModel();\r\n controlModel.Name = TabPage.GetDefaultName();\r\n controlModel.TypeName = CONTROL_TYPES.TabPage;\r\n const controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design,\r\n CreateControl: control.CreateControl\r\n };\r\n const tabPage = new TabPage(controlParam);\r\n control.AddSubControl(tabPage);\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n CreateStepPage(control: IControl) {\r\n if (control instanceof Step) {\r\n const controlModel = new ControlModel();\r\n controlModel.Name = StepPage.GetDefaultName();\r\n controlModel.TypeName = CONTROL_TYPES.StepPage;\r\n const controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design,\r\n CreateControl: control.CreateControl\r\n };\r\n const tabPage = new StepPage(controlParam);\r\n control.AddSubControl(tabPage);\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n CreatePlannerPage(control: IControl) {\r\n if (control instanceof Planner) {\r\n let controlModel = new ControlModel();\r\n controlModel.Name = PlannerPage.GetDefaultName();\r\n controlModel.TypeName = CONTROL_TYPES.PlannerPage;\r\n let controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design,\r\n CreateControl: control.CreateControl\r\n };\r\n let plannerPage = new PlannerPage(controlParam);\r\n control.AddSubControl(plannerPage);\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n CreateRootLevel(control: IControl) {\r\n if (control instanceof PlannerPage) {\r\n let controlModel = new ControlModel();\r\n controlModel.Name = PlannerLevel.GetDefaultName();\r\n controlModel.TypeName = CONTROL_TYPES.PlannerLevel;\r\n let controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design,\r\n CreateControl: control.CreateControl\r\n };\r\n let plannerLevel = new PlannerLevel(controlParam);\r\n control.AddSubControl(plannerLevel);\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n CreatePlannerLevel(control: IControl) {\r\n if (control instanceof PlannerLevel) {\r\n let controlModel = new ControlModel();\r\n controlModel.Name = PlannerLevel.GetDefaultName();\r\n controlModel.TypeName = CONTROL_TYPES.PlannerLevel;\r\n let controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design,\r\n CreateControl: control.CreateControl\r\n };\r\n let plannerLevel = new PlannerLevel(controlParam);\r\n control.AddSubControl(plannerLevel);\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n private InitTranslations(translationModel: TranslationModel[]): TranslationModel[] {\r\n const languages = TranslationManager.Instance.Languages;\r\n let translations: TranslationModel[] = [];\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n\r\n _.forEach(languages, (item) => {\r\n const defaultTranslation = new TranslationModel();\r\n const defaultLanguage = new LanguageModel();\r\n if (item.Id) {\r\n defaultLanguage.K_Language = item.Id;\r\n defaultLanguage.FlagBase64 = item.Flag;\r\n defaultLanguage.ShortName = item.ShortName;\r\n defaultLanguage.Name = item.Name;\r\n defaultTranslation.Language = defaultLanguage;\r\n const selectedTranslation = _.find(translationModel, translation => translation.Language.K_Language === item.Id);\r\n defaultTranslation.Translation = selectedTranslation == null || selectedTranslation.Translation == null\r\n ? \"\" : this.CapitalizeFirstLetter(selectedTranslation.Translation);\r\n defaultTranslation.Selected = desktopLanguage === defaultLanguage.ShortName;\r\n translations.push(defaultTranslation);\r\n }\r\n });\r\n return translations;\r\n }\r\n\r\n InitializeTabs(control: IControl) {\r\n if (control instanceof Tab) {\r\n\r\n _.each(this.SubjectEntity.RelatedSubEntitiesModel,\r\n relatedSubEntities => {\r\n _.each(relatedSubEntities.Entities,\r\n subEntity => {\r\n const controlModel = new ControlModel();\r\n controlModel.Name = this.CapitalizeFirstLetter(subEntity.EntityName);\r\n controlModel.NameTranslations = this.InitTranslations(subEntity.Translations);\r\n controlModel.TypeName = CONTROL_TYPES.TabPage;\r\n const controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design\r\n };\r\n const tabPage = new TabPage(controlParam);\r\n const gridControl = this.GenerateGridControl(subEntity, control.GetForm(), tabPage);\r\n tabPage.AddSubControl(gridControl);\r\n control.AddSubControl(tabPage);\r\n });\r\n });\r\n\r\n _.each(this.SubjectEntity.RelatedEntities.Entities,\r\n entity => {\r\n const controlModel = new ControlModel();\r\n controlModel.Name = this.CapitalizeFirstLetter(entity.EntityName);\r\n controlModel.NameTranslations = this.InitTranslations(entity.Translations);\r\n controlModel.TypeName = CONTROL_TYPES.TabPage;\r\n const controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design\r\n };\r\n const tabPage = new TabPage(controlParam);\r\n const gridControl = this.GenerateGridControl(entity, control.GetForm(), tabPage);\r\n tabPage.AddSubControl(gridControl);\r\n control.AddSubControl(tabPage);\r\n });\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n private CheckEntityTypeByName(entityName: string): boolean {\r\n if (!entityName) return false;\r\n if (entityName.indexOf('SYS_') !== -1 || entityName.indexOf('CD_') !== -1) {\r\n return entityName.split('').filter(item => item === '_').length > 1;\r\n } else {\r\n return entityName.indexOf('_') !== -1;\r\n }\r\n }\r\n\r\n AfterDropFieldIntoGrid(context, item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n if (targetContext instanceof Grid && item instanceof FieldModel) {\r\n const field = item as FieldModel;\r\n const entity = sourceContext as EntityModel;\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = field.FieldId;\r\n attachedFieldModel.Name = field.FieldName;\r\n attachedFieldModel.FieldNameTranslation = field.FieldNameTranslation;\r\n let entityName = entity.EntityName;\r\n let entityNameTranslation = entity.EntityNameTranslation;\r\n if (entity.EntityFullName) {\r\n entityName = entity.EntityFullName;\r\n entityNameTranslation = entity.EntityFullNameTranslation;\r\n }\r\n attachedFieldModel.EntityName = entityName;\r\n attachedFieldModel.EntityNameTranslation = entityNameTranslation;\r\n attachedFieldModel.EntityTypeName = entity.TypeName;\r\n attachedFieldModel.EntityId = entity.EntityId;\r\n attachedFieldModel.RelatedField = this.CheckEntityTypeByName(entity.EntityName);\r\n attachedFieldModel.SubTableField = entity.TypeName === \"Sub\";\r\n const alreadyAddedField = _.find(targetItems, (item: any) => {\r\n return item.Id === attachedFieldModel.Id\r\n });\r\n if (alreadyAddedField) {\r\n const notifier = new Notifier();\r\n notifier.Warning(NOTIFICATIONS.FIELD_ALREADY_ADDED);\r\n return;\r\n }\r\n targetItems.splice(targetIndex, 0, attachedFieldModel);\r\n }\r\n\r\n if (targetContext instanceof Grid && item instanceof AttachedFieldModel) {\r\n targetItems.splice(targetIndex, 0, sourceItems.splice(sourceIndex, 1)[0]);\r\n }\r\n this._hasChanges(true);\r\n }\r\n\r\n DropControlFromToolBarProcess(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n if (item instanceof BaseControl) {\r\n let parentControl = null;\r\n let subForm = null;\r\n if (targetContext instanceof BaseForm) {\r\n subForm = targetContext;\r\n }\r\n\r\n if (targetContext instanceof BaseControl) {\r\n parentControl = targetContext as BaseControl;\r\n subForm = parentControl.GetForm();\r\n }\r\n\r\n if (!subForm) {\r\n throw new Error(\"SubForm is not defined\");\r\n }\r\n if (item instanceof BaseControl) {\r\n item.SetForm(subForm);\r\n const newControl = item.ToDesignedControl() as BaseControl;\r\n newControl.Model.Id = item.Model.Id;\r\n newControl.Model.LabelPosition = item.Model.LabelPosition || DEFAULT_LABEL_POSITION;\r\n newControl.Model.Name = item.Model.Name || item.GetDefaultName();\r\n newControl.Model.FieldNameTranslation = item.Model.FieldNameTranslation;\r\n\r\n newControl.SetForm(subForm);\r\n newControl.SetParentControl(parentControl);\r\n item.SetForm(null);\r\n\r\n if (item instanceof LinkList) {\r\n let allowedFormIndex = 3;\r\n if (this._subForms.indexOf(targetContext) !== allowedFormIndex) {\r\n return;\r\n }\r\n\r\n const usersEntity = _.find(this.SubjectEntity.RelatedEntities.Entities, (entity) => {\r\n return entity.EntityName === LINK_LIST_REQUIRED_ENTITY\r\n });\r\n if (usersEntity) {\r\n\r\n const usersEntityIconModel = new IconModel();\r\n usersEntityIconModel.FontName = usersEntity.FontName;\r\n usersEntityIconModel.Image = usersEntity.GraphicalIcon;\r\n usersEntityIconModel.Name = usersEntity.IconName;\r\n usersEntityIconModel.IsImage = Boolean(usersEntityIconModel.Image);\r\n usersEntityIconModel.IsIcon = !usersEntityIconModel.IsImage;\r\n\r\n const usersModel = new AttachedFieldModel();\r\n usersModel.EntityId = usersEntity.EntityId;\r\n usersModel.EntityName = usersEntity.EntityName;\r\n usersModel.EntityNameTranslation = usersEntity.EntityNameTranslation;\r\n usersModel.EntityIcon = usersEntityIconModel;\r\n\r\n const nameField = _.find(usersEntity.Fields, (field) => {\r\n return field.FieldName && field.FieldName.toUpperCase() === 'NAME'\r\n });\r\n if (nameField) {\r\n usersModel.Id = nameField.FieldId;\r\n usersModel.Name = nameField.FieldName;\r\n usersModel.FieldNameTranslation = nameField.FieldNameTranslation;\r\n }\r\n newControl.Model.Fields.push(usersModel);\r\n }\r\n }\r\n\r\n targetItems.splice(targetIndex, 0, newControl);\r\n if (newControl.GetRenderMode() === RenderModes.ToolBar) {\r\n newControl.SetRenderMode(RenderModes.Design);\r\n }\r\n\r\n if (parentControl && parentControl instanceof TabPage && parentControl.GetSubControls().length == 1) {\r\n parentControl.Name = this.CapitalizeFirstLetter(newControl.Name);\r\n parentControl.NameTranslations = this.InitTranslations(newControl.NameTranslations);\r\n parentControl.ModelHasMutated();\r\n }\r\n }\r\n }\r\n }\r\n\r\n DropFieldFromToolBarProcess(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n let control = null;\r\n let subForm = null;\r\n let parentControl = null;\r\n if (targetContext instanceof SubForm || targetContext instanceof ActionBar || targetContext instanceof BottomBar) {\r\n subForm = targetContext;\r\n }\r\n\r\n if (targetContext instanceof BaseControl) {\r\n parentControl = targetContext as BaseControl;\r\n subForm = parentControl.GetForm();\r\n }\r\n\r\n if (item instanceof FieldModel) {\r\n const controlType = FIELD_TYPE_TO_CONTROL[item.FieldTypeName];\r\n let controlModel = new ControlModel();\r\n const defaultControlModel = this.GetDefaultControlModel(controlType);\r\n if (defaultControlModel) {\r\n controlModel = clone(defaultControlModel);\r\n }\r\n\r\n const entity = sourceContext as EntityModel;\r\n controlModel.TypeName = controlType;\r\n controlModel.Name = item.FieldName;\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = item.FieldId;\r\n attachedFieldModel.Name = item.FieldName;\r\n attachedFieldModel.FieldNameTranslation = item.FieldNameTranslation;\r\n\r\n attachedFieldModel.FieldIcon = new IconModel();\r\n attachedFieldModel.EntityId = entity.EntityId;\r\n attachedFieldModel.EntityTypeName = entity.TypeName;\r\n attachedFieldModel.EntityName = entity.EntityName;\r\n attachedFieldModel.EntityNameTranslation = entity.EntityNameTranslation;\r\n attachedFieldModel.FieldTypeName = item.FieldTypeName;\r\n attachedFieldModel.ValTableId = item.ValTableId;\r\n attachedFieldModel.ValFieldId = item.ValFieldId;\r\n attachedFieldModel.RelatedField = this.CheckEntityTypeByName(entity.EntityName);\r\n attachedFieldModel.SubTableField = entity.TypeName === \"Sub\";\r\n if (item.FieldIcon) {\r\n attachedFieldModel.FieldIcon.Name = item.FieldIcon.Name;\r\n attachedFieldModel.FieldIcon.FontName = item.FieldIcon.IconFontName;\r\n attachedFieldModel.FieldIcon.Image = item.FieldIcon.Image;\r\n attachedFieldModel.FieldIcon.IsIcon = item.FieldIcon.IsIcon;\r\n attachedFieldModel.FieldIcon.IsImage = item.FieldIcon.IsImage;\r\n }\r\n\r\n if (controlModel.LabelPosition === undefined) {\r\n controlModel.LabelPosition = DEFAULT_LABEL_POSITION;\r\n }\r\n\r\n controlModel.EntityId = entity.EntityId;\r\n controlModel.EntityTypeName = entity.TypeName;\r\n controlModel.Fields = [attachedFieldModel];\r\n controlModel.LabelPositionValue = LabelPositions[controlModel.LabelPosition];\r\n controlModel.IsBlobFieldAttached = CONRTOL_WITH_BLOBFIELDATTACHED.indexOf(attachedFieldModel.FieldTypeName) > -1;\r\n controlModel.Label = item.FieldNameTranslation || item.FieldName;\r\n controlModel.IsFieldAttached = true;\r\n const controlParams: IControlParam = {\r\n Form: subForm,\r\n Model: controlModel,\r\n RenderMode: RenderModes.Design,\r\n ParentControl: parentControl\r\n };\r\n\r\n control = ControlFactory.CreateControl(controlParams) as BaseControl;\r\n targetItems.splice(targetIndex, 0, control);\r\n new Notifier().Success(NOTIFICATIONS.NEW_CONTROL_CREATED);\r\n\r\n if (parentControl && parentControl.GetSubControls().length == 1 && parentControl.GetType() !== CONTROL_TYPES.Group) {\r\n parentControl.Name = this.CapitalizeFirstLetter(control.Name);\r\n parentControl.NameTranslations = this.InitTranslations(item.Translations);\r\n parentControl.ModelHasMutated();\r\n }\r\n }\r\n }\r\n\r\n MovingControlProcess(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n if (item instanceof BaseControl) {\r\n const control = item as BaseControl;\r\n\r\n sourceItems.splice(sourceIndex, 1);\r\n targetItems.splice(targetIndex, 0, control);\r\n\r\n if (targetContext instanceof BaseForm) {\r\n control.SetForm(targetContext);\r\n }\r\n if (targetContext instanceof BaseControl) {\r\n const parentControl = targetContext as BaseControl;\r\n control.SetParentControl(targetContext);\r\n control.SetForm(parentControl.GetForm());\r\n } else {\r\n control.SetParentControl(null);\r\n }\r\n }\r\n }\r\n\r\n AfterDropEntityIntoLinkList(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n if (item instanceof AttachedFieldModel) {\r\n if (targetIndex === 0) {\r\n if (targetItems()[0].EntityName === LINK_LIST_REQUIRED_ENTITY) {\r\n targetItems.splice(sourceIndex, 0, targetItems.splice(sourceIndex, 1)[0]);\r\n }\r\n return;\r\n }\r\n\r\n targetItems.splice(targetIndex, 0, targetItems.splice(sourceIndex, 1)[0]);\r\n this._hasChanges(true);\r\n return;\r\n }\r\n\r\n if (item instanceof FieldModel) {\r\n const entity = sourceContext as EntityModel;\r\n\r\n const alreadyAttachedField = _.find(targetItems(), (field: any) => {\r\n return field.EntityId === entity.EntityId\r\n });\r\n if (alreadyAttachedField) {\r\n const notifier = new Notifier();\r\n notifier.Warning(NOTIFICATIONS.FIELD_FROM_ENTITY_NAME_IS_ALREADY_PRESENT.replace('{entityName}', entity.EntityName));\r\n return;\r\n }\r\n\r\n this.AttachFieldToLinkList(item, entity, targetIndex, targetItems, targetContext);\r\n return;\r\n }\r\n\r\n if (parseInt(item) === RelationTypes.OneToMain) {\r\n const entity = sourceContext as EntityModel;\r\n const nameField = _.find(entity.Fields, (item) => item.FieldName === 'NAME');\r\n\r\n if (nameField) {\r\n const alreadyAttachedField = _.find(targetItems(), (field: any) => {\r\n return field.EntityId === entity.EntityId\r\n });\r\n if (alreadyAttachedField) {\r\n const notifier = new Notifier();\r\n notifier.Warning(NOTIFICATIONS.ENTITY_ALREADY_ADDED);\r\n return;\r\n }\r\n\r\n this.AttachFieldToLinkList(nameField, entity, targetIndex, targetItems, targetContext);\r\n }\r\n }\r\n }\r\n\r\n private AttachFieldToLinkList(field: FieldModel, entity: EntityModel, targetIndex, targetItems, targetContext) {\r\n const parentControl = targetContext as BaseControl;\r\n const attachedField = new AttachedFieldModel();\r\n\r\n attachedField.Id = field.FieldId;\r\n attachedField.Name = field.FieldName;\r\n attachedField.FieldNameTranslation = field.FieldNameTranslation;\r\n\r\n const icon = new IconModel();\r\n const isImage = entity.GraphicalIcon !== null;\r\n icon.Image = entity.GraphicalIcon;\r\n icon.FontName = entity.FontName;\r\n icon.Name = entity.IconName;\r\n icon.IsIcon = !isImage;\r\n icon.IsImage = isImage;\r\n\r\n attachedField.EntityIcon = icon;\r\n attachedField.EntityId = entity.EntityId;\r\n attachedField.EntityName = entity.EntityName;\r\n attachedField.EntityNameTranslation = entity.EntityNameTranslation;\r\n\r\n const primaryKeyField = _.find(entity.Fields, (item) => item.IsPrimaryKey);\r\n attachedField.PrimaryKeyName = primaryKeyField?.FieldName;\r\n\r\n if (targetIndex === 0 && targetItems()[0] && targetItems()[0].EntityName === LINK_LIST_REQUIRED_ENTITY) {\r\n targetItems.push(attachedField);\r\n } else {\r\n targetItems.splice(targetIndex, 0, attachedField);\r\n }\r\n\r\n parentControl.ModelHasMutated();\r\n this._hasChanges(true);\r\n }\r\n\r\n GenerateGridControl(entity: EntityModel, subForm: IForm, parentControl: IControl) {\r\n const controlModel = new ControlModel();\r\n controlModel.Id = 0;\r\n controlModel.TypeName = CONTROL_TYPES.Grid;\r\n controlModel.Name = entity.EntityName;\r\n controlModel.Label = entity.EntityNameTranslation;\r\n controlModel.EntityTypeName = entity.TypeName;\r\n controlModel.NameTranslations = entity.Translations;\r\n controlModel.IsFieldAttached = true;\r\n const topDefaultFields = ['F_TYPE', 'F_KIND', 'NAME'];\r\n _.each(topDefaultFields, (field) => {\r\n const defaultField = _.find(entity.Fields, (item) => {\r\n return item.FieldName === field\r\n });\r\n if (defaultField) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = defaultField.FieldId;\r\n attachedFieldModel.Name = defaultField.FieldName;\r\n attachedFieldModel.FieldNameTranslation = defaultField.FieldNameTranslation;\r\n attachedFieldModel.FieldTypeName = defaultField.FieldTypeName;\r\n attachedFieldModel.EntityName = entity.EntityFullName || entity.EntityName;\r\n attachedFieldModel.EntityNameTranslation = entity.EntityFullNameTranslation || entity.EntityNameTranslation;\r\n attachedFieldModel.EntityId = entity.EntityId;\r\n attachedFieldModel.EntityTypeName = entity.TypeName;\r\n attachedFieldModel.RelatedField = this.CheckEntityTypeByName(entity.EntityName);\r\n attachedFieldModel.SubTableField = entity.TypeName === \"Sub\";\r\n controlModel.Fields.push(attachedFieldModel);\r\n }\r\n });\r\n\r\n const entityFields = _.chain(entity.Fields).filter(item => item.FieldTypeName !== FIELD_TYPES.Property)\r\n .sortBy('Sort').value();\r\n _.each(entityFields, (field) => {\r\n if (this.GetSortGroup(field.Sort) === SortGroups.Custom) {\r\n let existField = _.find(controlModel.Fields, (item) => {\r\n return item.Id === field.FieldId\r\n });\r\n if (!existField) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = field.FieldId;\r\n attachedFieldModel.Name = field.FieldName;\r\n attachedFieldModel.IsVirtual = field.IsVirtual;\r\n attachedFieldModel.IsSystem = field.IsSystem;\r\n attachedFieldModel.FieldNameTranslation = field.FieldNameTranslation;\r\n attachedFieldModel.EntityName = entity.EntityFullName || entity.EntityName;\r\n attachedFieldModel.EntityNameTranslation = entity.EntityFullNameTranslation || entity.EntityNameTranslation;\r\n attachedFieldModel.FieldTypeName = field.FieldTypeName;\r\n attachedFieldModel.EntityId = entity.EntityId;\r\n attachedFieldModel.EntityTypeName = entity.TypeName;\r\n attachedFieldModel.RelatedField = this.CheckEntityTypeByName(entity.EntityName);\r\n attachedFieldModel.SubTableField = entity.TypeName === \"Sub\";\r\n controlModel.Fields.push(attachedFieldModel);\r\n }\r\n }\r\n });\r\n\r\n\r\n if (entity.LinkEntity) {\r\n const linkEntityFields = _.chain(entity.LinkEntity.Fields).filter(item => item.FieldTypeName !== FIELD_TYPES.Property)\r\n .sortBy('Sort').value();\r\n _.each(linkEntityFields,\r\n (field) => {\r\n if (this.GetSortGroup(field.Sort) === SortGroups.Custom) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = field.FieldId;\r\n attachedFieldModel.Name = field.FieldName;\r\n attachedFieldModel.FieldNameTranslation = field.FieldNameTranslation;\r\n attachedFieldModel.FieldTypeName = field.FieldTypeName;\r\n attachedFieldModel.EntityName = entity.LinkEntity.EntityFullName || entity.LinkEntity.EntityName;\r\n attachedFieldModel.EntityNameTranslation = entity.LinkEntity.EntityFullNameTranslation || entity.LinkEntity.EntityNameTranslation;\r\n attachedFieldModel.EntityId = entity.LinkEntity.EntityId;\r\n attachedFieldModel.EntityTypeName = entity.LinkEntity.TypeName;\r\n attachedFieldModel.RelatedField = this.CheckEntityTypeByName(entity.LinkEntity.EntityName);\r\n attachedFieldModel.SubTableField = entity.TypeName === \"Sub\";\r\n controlModel.Fields.push(attachedFieldModel);\r\n }\r\n });\r\n }\r\n\r\n const bottomDefaultFields = ['CREATEDATE', 'CREATEDBY'];\r\n _.each(bottomDefaultFields, (field) => {\r\n const defaultField = _.find(entity.Fields, (item) => {\r\n return item.FieldName === field\r\n });\r\n if (defaultField) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = defaultField.FieldId;\r\n attachedFieldModel.Name = defaultField.FieldName;\r\n attachedFieldModel.FieldNameTranslation = defaultField.FieldNameTranslation;\r\n attachedFieldModel.FieldTypeName = defaultField.FieldTypeName;\r\n attachedFieldModel.EntityName = entity.EntityFullName || entity.EntityName;\r\n attachedFieldModel.EntityNameTranslation = entity.EntityFullNameTranslation || entity.EntityNameTranslation;\r\n attachedFieldModel.EntityId = entity.EntityId;\r\n attachedFieldModel.EntityTypeName = entity.TypeName;\r\n attachedFieldModel.RelatedField = this.CheckEntityTypeByName(entity.EntityName);\r\n attachedFieldModel.SubTableField = entity.TypeName === \"Sub\";\r\n controlModel.Fields.push(attachedFieldModel);\r\n }\r\n });\r\n\r\n _.each(controlModel.Fields,\r\n (field, index) => {\r\n field.Sort = index * 10;\r\n });\r\n\r\n const controlParams: IControlParam = {\r\n Form: subForm,\r\n Model: controlModel,\r\n RenderMode: RenderModes.Design,\r\n ParentControl: parentControl\r\n };\r\n\r\n const control = ControlFactory.CreateControl(controlParams) as BaseControl;\r\n return control;\r\n }\r\n\r\n ConvertEntityToGrid(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n\r\n let subForm = null;\r\n let parentControl = null;\r\n if (targetContext instanceof BaseForm) {\r\n subForm = targetContext;\r\n }\r\n\r\n if (targetContext instanceof BaseControl) {\r\n parentControl = targetContext as BaseControl;\r\n subForm = parentControl.GetForm();\r\n }\r\n\r\n const entity = sourceContext as EntityModel;\r\n const gridControl = this.GenerateGridControl(entity, subForm, parentControl);\r\n targetItems.splice(targetIndex, 0, gridControl);\r\n\r\n if (parentControl && parentControl.GetSubControls().length == 1) {\r\n parentControl.Name = this.CapitalizeFirstLetter(entity.EntityName);\r\n parentControl.NameTranslations = this.InitTranslations(entity.Translations);\r\n parentControl.ModelHasMutated();\r\n }\r\n }\r\n\r\n AfterDropTapPageControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n if (item instanceof BaseControl) {\r\n const control = item as BaseControl;\r\n sourceItems.splice(sourceIndex, 1);\r\n targetItems.splice(targetIndex, 0, control);\r\n }\r\n this._hasChanges(true);\r\n }\r\n\r\n\r\n AfterDropControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n const isExistingControl = sourceContext instanceof BaseForm || sourceContext instanceof BaseControl;\r\n if (isExistingControl) {\r\n this.DropExistingControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n this.DropNewControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n\r\n this._hasChanges(true);\r\n }\r\n\r\n Save(): P.Promise<any> {\r\n const deferredResult = P.defer<any>();\r\n\r\n if (this.Validate()) {\r\n if (this.IsDashboard) {\r\n const gridStackSaveResult = this._gridStack.save(false);\r\n const gridStackWidgets = Array.isArray(gridStackSaveResult) ? gridStackSaveResult : [];\r\n\r\n this._subForms.forEach(subForm => {\r\n subForm.GetModel().Properties.DashboardBlock = new DashboardBlock(\r\n gridStackWidgets.find(widget => widget.id === subForm.GetFormGuid())\r\n );\r\n\r\n this._updateModel.SubForms.push(subForm.GetModel());\r\n })\r\n }\r\n\r\n const controls = _.filter(this.GetAllControls(), control => !control.IsStatic || control.GetModel().Predefined);\r\n\r\n this._updateModel.Controls = [];\r\n this._updateModel.ScreenId = this.GetId();\r\n\r\n _.each(controls, (item) => {\r\n const baseControl = item as BaseControl;\r\n const controlModel = new UpdateControlModel();\r\n\r\n controlModel.Id = baseControl.GetControlId();\r\n controlModel.Guid = baseControl.GetGuid();\r\n controlModel.Name = baseControl.GetModel().Name;\r\n controlModel.NameTranslations = baseControl.GetModel().NameTranslations;\r\n controlModel.DescriptionTranslations = baseControl.GetModel().DescriptionTranslations;\r\n controlModel.TypeName = baseControl.GetType();\r\n controlModel.RecordLifeStatusId = baseControl.GetModel().RecordLifeStatusId;\r\n controlModel.DestinationTypeId = baseControl.GetModel().DestinationTypeId;\r\n controlModel.FormId = baseControl.GetForm().GetFormId();\r\n controlModel.FormGuid = baseControl.GetForm().GetFormGuid();\r\n controlModel.LabelPosition = LabelPositions[baseControl.LabelPosition];\r\n controlModel.Properties = JSON.stringify(baseControl.Properties);\r\n if(!baseControl.Properties){\r\n let getGeneralProperties = baseControl.GeneralProperties;\r\n controlModel.Properties = getGeneralProperties ? getGeneralProperties.Serialize() : null;\r\n }\r\n controlModel.Description = baseControl.Description;\r\n controlModel.IconId = baseControl.Icon ? baseControl.Icon.Id : null;\r\n controlModel.UseFieldName = baseControl.GetModel().UseFieldName;\r\n controlModel.TitleFieldId = baseControl.GetModel().TitleFieldId;\r\n controlModel.KanbanSubjectId = baseControl.GetModel().KanbanSubjectId;\r\n controlModel.TodoEntityId = baseControl.GetModel().TodoEntityId;\r\n controlModel.TodoTypeId = baseControl.GetModel().TodoTypeId;\r\n controlModel.TodoFieldId = baseControl.GetModel().TodoFieldId;\r\n controlModel.ScreenId = baseControl.GetModel().ScreenId;\r\n\r\n _.each(baseControl.GetModel().Fields,\r\n field => {\r\n controlModel.AddField(field.Id, field.Sort, field.LinkRequiredObservable());\r\n });\r\n\r\n const parentControl = baseControl.GetParentControl();\r\n if (parentControl) {\r\n controlModel.ParentControlId = parentControl.GetControlId();\r\n controlModel.ParentControlGuid = parentControl.GetGuid();\r\n }\r\n controlModel.Sort = baseControl.GetSort();\r\n this._updateModel.Controls.push(controlModel);\r\n });\r\n\r\n this._updateModel.TableFormLinks = _.map(this._designModel.ScreenTypes,\r\n (screenType) => new MainFormUpdateModel({\r\n EntityId: this._designModel.ExistingScreenViewModel.EntityId,\r\n IsMain: screenType.IsMain,\r\n FormId: screenType.FormId\r\n }));\r\n\r\n this._updateModel.FormProperties = JSON.stringify(Serialize(this._formProperties));\r\n\r\n UpdateScreenStore.UpdateScreen(this._updateModel)\r\n .then(updateScreenModel => {\r\n PubSub.publish('RELOAD_MENU_AREAS', {});\r\n this.SetSubFormIds(updateScreenModel);\r\n this.SetControlIds(updateScreenModel);\r\n\r\n this._hasChanges(false);\r\n deferredResult.resolve(null);\r\n this.AfterSaveRemoveNotInitializedControlClass();\r\n })\r\n .fail(err => {\r\n let resultMessage = `Error occured during the update: ${err.message}`;\r\n deferredResult.reject({message: resultMessage});\r\n });\r\n } else {\r\n deferredResult.reject({message: 'Please, initialize controls'});\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n SetSubFormIds(model: UpdateScreenModel) {\r\n _.each(this._subForms, subForm => {\r\n const updatedSubForm = _.find(model.SubForms, item => item.Guid === subForm.GetFormGuid());\r\n\r\n if (updatedSubForm) {\r\n subForm.GetModel().Id = updatedSubForm.Id;\r\n }\r\n });\r\n }\r\n\r\n SetControlIds(model: UpdateScreenModel) {\r\n const controls = _.filter(this.GetAllControls(), control => {\r\n return control.IsStatic === false\r\n });\r\n _.each(controls, control => {\r\n const updatedControlModel = _.find(model.Controls, item => {\r\n return item.Guid === control.GetGuid()\r\n });\r\n if (updatedControlModel) {\r\n control.GetModel().Id = updatedControlModel.Id;\r\n }\r\n });\r\n }\r\n\r\n Validate() {\r\n let isValid = true;\r\n _.each(this.GetAllControls(), (item) => {\r\n const controlModel = item.GetModel();\r\n if (item instanceof StepPage) {\r\n if (!item.GetModel().ScreenId) {\r\n isValid = false;\r\n this.NotInitializedControl(item);\r\n } else {\r\n this.SetInitializedControl(item);\r\n this.RemoveParentControlClass(item);\r\n }\r\n } else if (item instanceof PlannerLevel) {\r\n if (item.GetModel().Fields.length < 2) {\r\n isValid = false;\r\n this.NotInitializedControl(item);\r\n } else {\r\n this.SetInitializedControl(item);\r\n this.RemoveParentControlClass(item);\r\n }\r\n } else if (item instanceof KanbanBoard) {\r\n if (!(controlModel.TitleFieldId && controlModel.TodoEntityId && controlModel.TodoTypeId && controlModel.TodoFieldId)) {\r\n isValid = false;\r\n this.NotInitializedControl(item);\r\n } else {\r\n this.SetInitializedControl(item);\r\n this.RemoveParentControlClass(item);\r\n }\r\n } else if (item instanceof ComplexControl) {\r\n if (!item.IsDesignValid()) {\r\n isValid = false;\r\n this.NotInitializedControl(item);\r\n } else {\r\n this.SetInitializedControl(item);\r\n this.RemoveParentControlClass(item);\r\n }\r\n } else {\r\n if (controlModel.IsFieldAttached || controlModel.IsBlobFieldAttached || controlModel.IsLookupFieldAttached || controlModel.IsMultiSelectFieldAttached) {\r\n if (controlModel.Fields.length === 0) {\r\n isValid = false;\r\n this.NotInitializedControl(item);\r\n } else {\r\n this.SetInitializedControl(item);\r\n this.RemoveParentControlClass(item);\r\n }\r\n }\r\n }\r\n if (!item.IsPropertiesValidToSave()) {\r\n isValid = false;\r\n this.NotInitializedControl(item);\r\n }\r\n });\r\n return isValid;\r\n }\r\n\r\n RemoveParentControlClass(item: IControl){\r\n const parentControl = item.GetParentControl();\r\n if(parentControl && (parentControl.GetType() === CONTROL_TYPES.TabPage || parentControl.GetType() === CONTROL_TYPES.StepPage)){\r\n let leastOneNotInitialized = _.filter(parentControl.GetSubControls(), (control)=> !control.GetModel().InitializedControl)\r\n if ($(parentControl.GetWrapper()).hasClass('notInitializedControl')){\r\n if (leastOneNotInitialized.length === 0){\r\n $(parentControl.GetWrapper()).removeClass('notInitializedControl');\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n AfterSaveRemoveNotInitializedControlClass(){\r\n $('.notInitializedControl').removeClass('notInitializedControl');\r\n }\r\n\r\n SetInitializedControl(item: IControl){\r\n item.GetModel().SetInitializedControl(true);\r\n }\r\n\r\n NotInitializedControl(item: IControl){\r\n const parentControl = item.GetParentControl();\r\n\r\n $(item.GetWrapper()).effect('bounce');\r\n item.GetModel().SetInitializedControl(false);\r\n\r\n if (item.GetType() === CONTROL_TYPES.StepPage){\r\n if (!$(item.GetWrapper()).hasClass('notInitializedControl')){\r\n $(item.GetWrapper()).addClass('notInitializedControl');\r\n $([document.documentElement, document.body]).animate({\r\n scrollTop: $(item.GetWrapper()).offset().top\r\n }, 1000);\r\n }\r\n }else if (parentControl && item.GetParentControl().GetType() === CONTROL_TYPES.TabPage){\r\n if (!$(parentControl.GetWrapper()).hasClass('notInitializedControl')){\r\n $(parentControl.GetWrapper()).addClass('notInitializedControl');\r\n $([document.documentElement, document.body]).animate({\r\n scrollTop: $(parentControl.GetWrapper()).offset().top\r\n }, 1000);\r\n } else {\r\n $([document.documentElement, document.body]).animate({\r\n scrollTop: $(parentControl.GetWrapper()).offset().top\r\n }, 1000);\r\n }\r\n }\r\n }\r\n\r\n get SubFormsWith() {\r\n return this._subFormsWith;\r\n }\r\n\r\n InitCalcSubFormSize() {\r\n const self = this;\r\n let style = {};\r\n const mqb = window.matchMedia(\"(max-width: 1600px)\");\r\n const mqm = window.matchMedia(\"(max-width: 1270px)\");\r\n const consultSubform = () => {\r\n if (self.GetType() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n if (self._subForms.length === 4) {\r\n if (mqb.matches) {\r\n style = {width: '48%'}\r\n }\r\n\r\n if (mqm.matches) {\r\n style = {width: '96%'}\r\n }\r\n\r\n if (!mqb.matches) {\r\n style = {width: '30%'}\r\n }\r\n }\r\n }\r\n if (self._subForms.length === 3) {\r\n if (mqb.matches) {\r\n style = {width: '48%'}\r\n }\r\n\r\n if (mqm.matches) {\r\n style = {width: '96%'}\r\n }\r\n\r\n if (!mqb.matches) {\r\n style = {width: '32.3%'}\r\n }\r\n }\r\n self._subFormsWith(style);\r\n };\r\n\r\n window.onresize = () => {\r\n consultSubform();\r\n }\r\n\r\n consultSubform();\r\n }\r\n\r\n GetSortGroup(sort: number) {\r\n if (_.include(_.range(1000, 1999), sort)) {\r\n return SortGroups.Header;\r\n }\r\n if (_.include(_.range(2000, 2999), sort)) {\r\n return SortGroups.OptionalHeader;\r\n }\r\n if (_.include(_.range(3000, 7999), sort)) {\r\n return SortGroups.Custom;\r\n }\r\n if (_.include(_.range(8000, 8999), sort)) {\r\n return SortGroups.OptionalFooter;\r\n }\r\n if (_.include(_.range(9000, 9999), sort)) {\r\n return SortGroups.Footer;\r\n }\r\n if (_.include([0], sort)) {\r\n return SortGroups.Undefined;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private DropNewControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n //Check sequence\r\n const positionIsValid = this._afterDropValidation.IsPositionValid(item,\r\n sourceIndex,\r\n sourceItems,\r\n sourceContext,\r\n targetIndex,\r\n targetItems,\r\n targetContext);\r\n\r\n if (!positionIsValid) {\r\n return;\r\n }\r\n\r\n //Drop control from toolBar\r\n if (sourceContext instanceof ControlGroup) {\r\n this.DropControlFromToolBarProcess(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n if (sourceContext instanceof EntityModel) {\r\n const itemNumber = parseInt(item);\r\n\r\n const screenType = this.GetType();\r\n\r\n //Drop 1:N\r\n if (\r\n itemNumber === RelationTypes.OneToMany &&\r\n _.includes(\r\n [\r\n ScreenTypes[ScreenTypes.EditScreen],\r\n ScreenTypes[ScreenTypes.ConsultScreen]\r\n ],\r\n screenType\r\n )\r\n ) {\r\n this.ConvertEntityToGrid(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n //Drop 1:1 Subject\r\n if (\r\n itemNumber === RelationTypes.OneToOneSubject &&\r\n _.includes(\r\n [\r\n ScreenTypes[ScreenTypes.ListScreen],\r\n ScreenTypes[ScreenTypes.Portlet],\r\n ScreenTypes[ScreenTypes.SpecialScreen],\r\n ScreenTypes[ScreenTypes.Dashboard]\r\n ],\r\n screenType\r\n )\r\n ) {\r\n this.ConvertEntityToGrid(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n //Drop 1:1\r\n if (\r\n itemNumber === RelationTypes.OneToOne &&\r\n _.includes(\r\n [\r\n ScreenTypes[ScreenTypes.EditScreen],\r\n ScreenTypes[ScreenTypes.ConsultScreen],\r\n ScreenTypes[ScreenTypes.ListScreen]\r\n ],\r\n screenType\r\n )\r\n ) {\r\n this.ConvertEntityToGrid(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n //Drop field from ToolBar\r\n this.DropFieldFromToolBarProcess(\r\n item,\r\n sourceIndex,\r\n sourceItems,\r\n sourceContext,\r\n targetIndex,\r\n targetItems,\r\n targetContext\r\n );\r\n }\r\n }\r\n\r\n private DropExistingControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n const positionIsValid = this._afterDropValidation.IsPositionValid(item,\r\n sourceIndex,\r\n sourceItems,\r\n sourceContext,\r\n targetIndex,\r\n targetItems,\r\n targetContext);\r\n\r\n if (!positionIsValid) {\r\n const movingControl = targetItems.splice(sourceIndex, 1)[0];\r\n targetItems.splice(sourceIndex, 0, movingControl);\r\n return;\r\n }\r\n\r\n //Moving existing control\r\n this.MovingControlProcess(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n CapitalizeFirstLetter(stringValue: string) {\r\n return stringValue.charAt(0).toUpperCase() + stringValue.slice(1).toLowerCase();\r\n }\r\n}","// Module\nvar code = \"<!--ko if: _configuringLayout--> <div class=\\\"layout-controls clearfix\\\"> <div class=\\\"pull-right\\\"> <button class=\\\"btn blue-dark\\\" data-bind=\\\"click: AddSubForm\\\"> <i class=\\\"fa fa-plus\\\"></i> <!--ko text: _labels.ADD_SUBFORM --><!-- /ko--> </button> <button class=\\\"btn green\\\" data-bind=\\\"click: ApplyLayout\\\"> <i class=\\\"fa fa-align-left\\\"></i> <!--ko text: _labels.APPLY --><!-- /ko--> </button> </div> </div> <!--/ko--> <div class=\\\"portlet-body\\\"> <div class=\\\"row form-wrapper\\\"> <div class=\\\"form-container\\\"> <div id=\\\"dashboard-design-container\\\" class=\\\"grid-stack\\\" style=\\\"min-height:300px\\\"></div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"portlet-body process-card-design-screen\\\" data-bind=\\\"style: _screenWidth(), css: {'custom-weight': _hasCustomWeight()}, class: _customStyle()\\\"> <div class=\\\"row form-wrapper\\\" data-bind=\\\"css: {'custom-color': _hasCustomColor()}, style: _fontColor()\\\"> <div class=\\\"form-container\\\" data-bind=\\\"css: {'link-list-subform': WithLinkList}\\\"> <div class=\\\"left-site\\\"> <div class=\\\"form-wrapper\\\"> <!-- ko with: FirstSubForm --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, show: _isExpanded}\\\" class=\\\"mainSubForm form-wrapper__main-sub-form\\\"> <div class=\\\"box-shadow-wrapper\\\" data-bind=\\\"style: $parent._screenBgColor()\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> </div> <!-- /ko --> </div> </div> <div class=\\\"right-site\\\"> <div class=\\\"form-wrapper\\\"> <!-- ko foreach: ThreeSubFormsWithoutFirst --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, show: _isExpanded}\\\" class=\\\"mainSubForm col-md-4 form-wrapper__main-sub-form\\\"> <div class=\\\"box-shadow-wrapper\\\" data-bind=\\\"style: $parent._screenBgColor()\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> </div> <!-- /ko --> </div> <!-- ko with: BottomBar --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <div data-bind=\\\"dragula: { data: Controls, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropControl.bind($root) }\\\" id=\\\"bottomSubForm\\\" class=\\\"dropcontrol-container microClearfix\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nexport interface IRecordPersonalizationParams {\r\n\tPossibleToPersonalize: boolean;\r\n\tIsPersonal: boolean;\r\n}\r\n\r\nexport class RecordPersonalizationModel {\r\n\tPossibleToPersonalize: KnockoutObservable<boolean>;\r\n\tAlreadyPersonalized: KnockoutObservable<boolean>;\r\n\tPersonalizationSelected: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(params?: IRecordPersonalizationParams) {\r\n\t\tlet options = params || this.GetDefaultParams();\r\n\t\tthis.PossibleToPersonalize = ko.observable(options.PossibleToPersonalize);\r\n\t\tthis.AlreadyPersonalized = ko.observable(options.IsPersonal);\r\n\t\tthis.PersonalizationSelected = ko.observable(options.IsPersonal);\r\n\t}\r\n\r\n\tprivate GetDefaultParams(): IRecordPersonalizationParams {\r\n\t\treturn {\r\n\t\t\tPossibleToPersonalize: false,\r\n\t\t\tIsPersonal: false\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport { RecordPersonalizationModel, IRecordPersonalizationParams } from \"Core/Components/Controls/MakePersonal/Models/RecordPersonalizationModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport MakePersonalTemplate from \"Core/Components/Controls/MakePersonal/Templates/MakePersonal.html\";\r\n\r\nexport class MakePersonal {\r\n\tprivate _model: KnockoutObservable<RecordPersonalizationModel>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(params?: IRecordPersonalizationParams) {\r\n\t\tthis._model = ko.observable(new RecordPersonalizationModel(params));\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn MakePersonalTemplate;\r\n\t}\r\n\r\n\tGetPersonalizationInfo(): RecordPersonalizationModel {\r\n\t\treturn this._model();\r\n\t}\r\n\r\n\tget IsMakePersonal(): boolean {\r\n\t\treturn this._model() && (this._model().AlreadyPersonalized() || this._model().PersonalizationSelected() || this._model().PossibleToPersonalize())\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _model --> <!-- ko if: PossibleToPersonalize --> <label class=\\\"custom-toggle_container medium-mode\\\"> <span class=\\\"custom-toggle_wrapper transition\\\"> <input type=\\\"checkbox\\\" class=\\\"toggle-checkbox\\\" data-bind=\\\"checked: PersonalizationSelected\\\"> <i class=\\\"fa fa-toggle-on\\\" data-toggle-name=\\\"ON\\\"></i> <i class=\\\"fa fa-toggle-off\\\" data-toggle-name=\\\"OFF\\\"></i> </span> <span class=\\\"toggle-name\\\"><!-- ko text: $parent._labels.MAKE_PERSONAL --><!-- /ko --></span> </label> <!-- /ko --> <!-- ko if: AlreadyPersonalized --> <label class=\\\"control-label\\\"><pre>Record personalized</pre></label> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nexport interface IRecordExampleInfoParams {\r\n\tPossibleToExample: boolean;\r\n\tIsExample: boolean;\r\n}\r\n\r\nexport class RecordExampleInfoModel {\r\n\tPossibleToExample: KnockoutObservable<boolean>;\r\n\tAlreadyExample: KnockoutObservable<boolean>;\r\n\tExampleSelected: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(params?: IRecordExampleInfoParams) {\r\n\t\tlet options = params || this.GetDefaultParams();\r\n\t\tthis.PossibleToExample = ko.observable(options.PossibleToExample);\r\n\t\tthis.AlreadyExample = ko.observable(options.IsExample);\r\n\t\tthis.ExampleSelected = ko.observable(options.IsExample);\r\n\t}\r\n\r\n\tprivate GetDefaultParams(): IRecordExampleInfoParams {\r\n\t\treturn {\r\n\t\t\tPossibleToExample: false,\r\n\t\t\tIsExample: false\r\n\t\t}\r\n\t}\r\n}","export const EVENTS = {\r\n\tMAKE_EXAMPLE: 'MAKE_EXAMPLE'\r\n}","import * as ko from \"knockout\";\r\n\r\nimport { RecordExampleInfoModel, IRecordExampleInfoParams } from \"Core/Components/Controls/MakeExample/Models/RecordExampleInfoModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {Event} from 'Core/Common/Event'\r\nimport {EVENTS} from \"Core/Components/Controls/MakeExample/Events\";\r\n\r\nimport MakeExampleTemplate from \"Core/Components/Controls/MakeExample/Templates/MakeExample.html\";\r\n\r\n\r\nexport class MakeExample extends Event {\r\n\tprivate _model: KnockoutObservable<RecordExampleInfoModel>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(params?: IRecordExampleInfoParams) {\r\n\t\tsuper();\r\n\t\tthis._model = ko.observable(new RecordExampleInfoModel(params));\r\n\t\tthis.AddEvent(EVENTS.MAKE_EXAMPLE);\r\n\t\tthis._model().ExampleSelected.subscribe((newValue) => {\r\n\t\t\tthis.Trigger(EVENTS.MAKE_EXAMPLE, {IsExample: newValue });\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn MakeExampleTemplate;\r\n\t}\r\n\r\n\tGetExampleInfo(): RecordExampleInfoModel {\r\n\t\treturn this._model();\r\n\t}\r\n\r\n\tget IsMakeExample(): boolean {\r\n\t\treturn this._model() && (this._model().PossibleToExample() || this._model().AlreadyExample() || this._model().ExampleSelected())\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _model --> <!-- ko if: PossibleToExample --> <label class=\\\"custom-toggle_container medium-mode\\\"> <span class=\\\"custom-toggle_wrapper transition\\\"> <input type=\\\"checkbox\\\" class=\\\"toggle-checkbox\\\" data-bind=\\\"checked: ExampleSelected\\\"> <i class=\\\"fa fa-toggle-on\\\" data-toggle-name=\\\"ON\\\"></i> <i class=\\\"fa fa-toggle-off\\\" data-toggle-name=\\\"OFF\\\"></i> </span> <span class=\\\"toggle-name\\\"><!-- ko text: $parent._labels.MAKE_EXAMPLE --><!-- /ko --></span> </label> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import { SecurityDataModel } from \"../Form/Models/SecurityDataModel\";\r\n\r\nexport class SecurityEditorModel {\r\n\tOwner: User;\r\n\tUsers: User[];\r\n\tSecurityPass: SecurityPassConfig;\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = [];\r\n\t\tthis.SecurityPass = new SecurityPassConfig();\r\n\t}\r\n}\r\n\r\nexport class User {\r\n\tId: number;\r\n\tName: string;\r\n\tSecurityData: SecurityDataModel;\r\n\tLevel: number;\r\n\tRights: number;\r\n\tOptionalRights: number;\r\n\tDeleted: boolean;\r\n}\r\n\r\nexport class SecurityPassConfig {\r\n\tDoNotPass: boolean;\r\n\tPassRights: boolean;\r\n\tPassOptionalRights: boolean;\r\n\tPassInheritance: boolean;\r\n\tRefusePass: boolean;\r\n\tPassOwner: boolean;\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { Event } from \"Core/Common/Event\";\r\n\r\nimport { Modal } from \"Core/Common/Modal\";\r\n\r\nimport { SecurityEditorModel, User } from \"Core/Components/SecurityEditor/Models/SecurityEditorModel\";\r\nimport { SecurityEditorFormModel, User as UserFormModel } from \"Core/Components/SecurityEditor/Form/Models/SecurityEditorFormModel\";\r\n\r\nimport SecurityEditorFormTemplate from 'Core/Components/SecurityEditor/Form/Templates/SecurityEditorForm.html';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nko.templates['Core/Components/SecurityEditor/Form/Templates/SecurityEditorForm'] = SecurityEditorFormTemplate;\r\n\r\n\r\n\r\nexport const EVENTS = {\r\n ADDING_NEW_USER: 'AddingNewUser',\r\n SAVING_USERS: 'SavingUsers',\r\n SELECT_OWNER: 'SelectOwner'\r\n};\r\n\r\nexport class SecurityEditorForm extends Event {\r\n private _model: SecurityEditorFormModel;\r\n private _readonly: boolean;\r\n private _modal: Modal;\r\n private _labels = LABELS;\r\n\r\n constructor(model: SecurityEditorFormModel, readOnly: boolean) {\r\n super();\r\n\r\n this._model = model;\r\n this._readonly = readOnly;\r\n\r\n this.Init();\r\n }\r\n\r\n Show() {\r\n this._modal.Show();\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/SecurityEditor/Form/Templates/SecurityEditorForm';\r\n }\r\n\r\n AfterRender(el) {\r\n\r\n }\r\n\r\n OnRemove(user: UserFormModel) {\r\n user.Deleted(true);\r\n }\r\n\r\n OnAdd() {\r\n this.Trigger(EVENTS.ADDING_NEW_USER);\r\n }\r\n\r\n OnSave() {\r\n const model = new SecurityEditorModel();\r\n model.Users = this._model.Users().map(user => {\r\n const securityEditorUser = new User();\r\n\r\n securityEditorUser.Id = user.Id;\r\n\t\t\tsecurityEditorUser.Name = user.Name;\r\n\t\t\tsecurityEditorUser.SecurityData = user.SecurityData;\r\n securityEditorUser.Rights = user.ActiveRights().Value;\r\n securityEditorUser.OptionalRights = user.ActiveOptionalRights().Value;\r\n securityEditorUser.Deleted = user.Deleted();\r\n\r\n return securityEditorUser;\r\n });\r\n\r\n const owner = new User();\r\n\r\n owner.Name = this._model.Owner().Name;\r\n\t\towner.Id = this._model.Owner().Id;\r\n\t\towner.SecurityData = this._model.Owner().SecurityData;\r\n model.Owner = owner;\r\n\r\n model.SecurityPass.PassOwner = this._model.SecurityPass.PassOwner();\r\n model.SecurityPass.DoNotPass = this._model.SecurityPass.DoNotPassRights;\r\n model.SecurityPass.PassRights = this._model.SecurityPass.PassRights;\r\n model.SecurityPass.PassOptionalRights = this._model.SecurityPass.PassOptionalRights;\r\n model.SecurityPass.PassInheritance = this._model.SecurityPass.PassInheritance();\r\n model.SecurityPass.RefusePass = this._model.SecurityPass.RefusePass();\r\n\r\n this.Trigger(EVENTS.SAVING_USERS, model);\r\n this.Close();\r\n }\r\n\r\n OnCancel() {\r\n this.Close();\r\n }\r\n\r\n AddUser(user: UserFormModel) {\r\n const existingUser = _.find<UserFormModel>(this._model.Users(), u => u.Id === user.Id);\r\n\r\n if (existingUser) {\r\n existingUser.Deleted(false);\r\n } else {\r\n this._model.Users.push(user);\r\n }\r\n }\r\n\r\n private Init() {\r\n this.InitModal();\r\n this.AddEvent(EVENTS.ADDING_NEW_USER);\r\n this.AddEvent(EVENTS.SAVING_USERS);\r\n this.AddEvent(EVENTS.SELECT_OWNER);\r\n }\r\n\r\n private InitModal() {\r\n this._modal = new Modal({\r\n width: '700',\r\n minHeight: '300'\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n private SelectOwner() {\r\n this.Trigger(EVENTS.SELECT_OWNER);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet box blue\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject\\\"> <i class=\\\"fa fa-lock\\\"></i> <!-- ko text: _labels.SECURITY_LABEL --><!-- /ko --> </span> </div> </div> <div class=\\\"portlet-body\\\"> <div class=\\\"form clearfix\\\"> <div class=\\\"form-group\\\"> <div class=\\\"lead\\\"> <div> <label class=\\\"bold\\\"><!-- ko text: _labels.PROFILE --><!-- /ko -->:</label> <span data-bind=\\\"text: _model.Owner().SecurityData.ProfileName\\\"></span> </div> <div> <label class=\\\"bold\\\"><!-- ko text: _labels.OWNER_LABEL --><!-- /ko -->:</label> <span data-bind=\\\"text: _model.Owner().Name\\\"></span> <a data-bind=\\\"click: SelectOwner\\\" class=\\\"fa fa-search\\\"></a> </div> </div> </div> <table class=\\\"table table-striped\\\"> <thead> <tr> <th><!-- ko text: _labels.USER_USER_GROUP_LABEL --><!-- /ko --></th> <th><!-- ko text: _labels.RIGHTS_LABEL --><!-- /ko --></th> <th><!-- ko text: _labels.OPTIONALS_RIGHTS_LABEL --><!-- /ko --></th> <!-- ko if: !_readonly --> <th></th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: _model.Users --> <!-- ko if: !Deleted() --> <tr class=\\\"vertical-align-m\\\"> <td data-bind=\\\"text: Name\\\"></td> <!-- ko if: $parent._readonly--> <td> <span data-bind=\\\"text: ActiveRights().Name\\\"></span> </td> <td> <span data-bind=\\\"text: ActiveOptionalRights().Name\\\"></span> </td> <!-- /ko --> <!-- ko if: !$parent._readonly --> <td> <select data-bind=\\\"options:\\r\\n Rights,\\r\\n optionsText: 'Translation',\\r\\n value: ActiveRights\\\" class=\\\"form-control\\\"></select> </td> <td> <select data-bind=\\\"options:\\r\\n OptionalRights,\\r\\n optionsText: 'Translation',\\r\\n value: ActiveOptionalRights\\\" class=\\\"form-control\\\"></select> </td> <td> <a data-bind=\\\"click: $parent.OnRemove.bind($parent, $data)\\\" class=\\\"btn btn-danger\\\"> <i class=\\\"fa fa-remove\\\"></i> </a> </td> <!-- /ko --> </tr> <!-- /ko --> <!-- /ko --> </tbody> </table> <!--ko with: _model.SecurityPass--> <div class=\\\"form clearfix\\\"> <div class=\\\"form-group pull-left\\\"> <div> <input name=\\\"passoption\\\" value=\\\"do not pass\\\" data-bind=\\\"checked: PassOption, disable: $parent._readonly\\\" type=\\\"radio\\\"> <label class=\\\"bold\\\"><!-- ko text: $parent._labels.DO_NOT_PASS_SECURITY_LABEL --> <!-- /ko --></label> </div> <div> <input name=\\\"passoption\\\" value=\\\"pass\\\" data-bind=\\\"checked: PassOption, disable: $parent._readonly\\\" type=\\\"radio\\\"> <label class=\\\"bold\\\"><!-- ko text: $parent._labels.PASS_RIGHTS_LABEL --><!-- /ko --></label> </div> <div> <input name=\\\"passoption\\\" value=\\\"pass optional\\\" data-bind=\\\"checked: PassOption, disable: $parent._readonly\\\" type=\\\"radio\\\"> <label class=\\\"bold\\\"><!-- ko text: $parent._labels.PASS_OPTIONAL_RIGHTS_LABEL --> <!-- /ko --></label> </div> </div> <div class=\\\"form-group pull-right\\\"> <div> <input data-bind=\\\"uniform: PassOwner, checked: PassOwner, enable: EnablePassOwner() && !$parent._readonly\\\" type=\\\"checkbox\\\"> <label data-bind=\\\"css: {bold: EnablePassOwner() && !$parent._readonly}\\\"><!-- ko text: $parent._labels.PASS_OWNER_LABEL --> <!-- /ko --></label> </div> <div> <input data-bind=\\\"uniform: PassInheritance, checked: PassInheritance, enable: EnablePassInheritance() && !$parent._readonly\\\" type=\\\"checkbox\\\"> <label data-bind=\\\"css: {bold: EnablePassInheritance() && !$parent._readonly}\\\"><!-- ko text: $parent._labels.PASS_INHERITANCE_SETTINGS_LABEL --> <!-- /ko --></label> </div> <div> <input data-bind=\\\"uniform: RefusePass, checked: RefusePass, disable: $parent._readonly\\\" type=\\\"checkbox\\\"> <label class=\\\"bold\\\"><!-- ko text: $parent._labels.REFUSE_PASSED_SECURITY_LABEL --> <!-- /ko --></label> </div> </div> </div> <!--/ko--> <!-- ko if: _readonly --> <div class=\\\"pull-right\\\"> <button data-bind=\\\"click: OnCancel\\\" class=\\\"btn btn-default\\\"><!-- ko text: _labels.CLOSE_LABEL --> <!-- /ko --></button> </div> <!-- /ko --> <!-- ko if: !_readonly --> <button data-bind=\\\"click: OnAdd\\\" class=\\\"btn btn-primary\\\"><!-- ko text: _labels.ADD --><!-- /ko --></button> <div class=\\\"pull-right\\\"> <button data-bind=\\\"click: OnSave\\\" class=\\\"btn btn-success\\\"><!-- ko text: _labels.SAVE --> <!-- /ko --></button> <button data-bind=\\\"click: OnCancel\\\" class=\\\"btn btn-danger\\\"><!-- ko text: _labels.CANCEL --> <!-- /ko --></button> </div> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {RecordSecurityRights, Rights} from \"Core/Common/Enums/RecordSecurityRights\";\r\nimport { SecurityDataModel } from './SecurityDataModel';\r\nimport enumerable from '../../../../Common/Decorators/EnumerableDecorator';\r\n\r\nexport class SecurityEditorFormModel {\r\n\tOwner: KnockoutObservable<User>;\r\n\tUsers: KnockoutObservableArray<User>;\r\n\tSecurityPass: SecurityPassViewModel;\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = ko.observableArray([]);\r\n\t\tthis.Owner = ko.observable(null);\r\n\t}\r\n}\r\n\r\nexport class User {\r\n\tId: number;\r\n\tName: string;\r\n\tSecurityData: SecurityDataModel;\r\n\tActiveRights: KnockoutObservable<Rights>;\r\n\tRights: KnockoutObservableArray<Rights>;\r\n\r\n\tActiveOptionalRights: KnockoutObservable<Rights>;\r\n\tOptionalRights: KnockoutObservableArray<Rights>;\r\n\r\n\tDeleted: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Rights = ko.observableArray(RecordSecurityRights.Instance.GetAll());\r\n\t\tthis.OptionalRights = ko.observableArray(RecordSecurityRights.Instance.GetAll());\r\n\r\n\t\tconst defaultRights = _.find<Rights>(this.Rights(), rights => rights.Name === RecordSecurityRights.Instance.NoAccess.Name);\r\n\t\tthis.ActiveRights = ko.observable(defaultRights);\r\n\r\n\t\tconst defaultOptionalRights = _.find<Rights>(this.Rights(), rights => rights.Name === RecordSecurityRights.Instance.NoAccess.Name);\r\n\t\tthis.ActiveOptionalRights = ko.observable(defaultOptionalRights);\r\n\r\n\t\tthis.Deleted = ko.observable(false);\r\n\t}\r\n\r\n\tstatic Create(id: number, name: string, securityData: SecurityDataModel, rightsValue?: number, optionaRightsValue?: number, deleted?: boolean) {\r\n\t\tconst user = new User();\r\n\r\n\t\tuser.Id = id;\r\n\t\tuser.Name = name;\r\n\t\tuser.SecurityData = securityData;\r\n\r\n\t\tif (!id) {\r\n\t\t\tuser.Name = \"Undefined\";\r\n\t\t}\r\n\r\n\t\tif (deleted) {\r\n user.Deleted(deleted);\r\n }\r\n\r\n\t\tif (rightsValue || optionaRightsValue) {\r\n\t\t\tif (rightsValue >= 512) {\r\n\t\t\t\trightsValue -= 512;\r\n\t\t\t}\r\n\r\n\t\t\tconst activeRights = _.find<Rights>(user.Rights(), r => r.Value === rightsValue);\r\n\t\t\tuser.ActiveRights(activeRights);\r\n\r\n\t\t\tconst optionalRights = _.find<Rights>(user.OptionalRights(), r => r.Value === optionaRightsValue);\r\n\t\t\tuser.ActiveOptionalRights(optionalRights);\r\n\t\t}\r\n\r\n\t\treturn user;\r\n\t}\r\n}\r\n\r\nexport class SecurityPassViewModel {\r\n\tPassOption: KnockoutObservable<string>;\r\n\tPassInheritance: KnockoutObservable<boolean>;\r\n\tRefusePass: KnockoutObservable<boolean>;\r\n\tPassOwner: KnockoutObservable<boolean>;\r\n\r\n\tEnablePassOwner: KnockoutObservable<boolean>;\r\n\tEnablePassInheritance: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis.PassOption = ko.observable(null);\r\n\t\tthis.PassInheritance = ko.observable(false);\r\n\t\tthis.RefusePass = ko.observable(false);\r\n\t\tthis.PassOwner = ko.observable(false);\r\n\r\n\t\tthis.EnablePassOwner = ko.observable(false);\r\n\t\tthis.EnablePassInheritance = ko.observable(false);\r\n\r\n\t\tthis.PassOption.subscribe(() => {\r\n\t\t\tconst passAnyRights = this.PassRights || this.PassOptionalRights;\r\n\r\n\t\t\tthis.EnablePassOwner(passAnyRights);\r\n\t\t\tthis.EnablePassInheritance(passAnyRights);\r\n\r\n\t\t\tif (!passAnyRights) {\r\n\t\t\t\tthis.PassOwner(false);\r\n\t\t\t\tthis.PassInheritance(false);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t@enumerable get DoNotPassRights() {\r\n\t\treturn this.PassOption() === 'do not pass';\r\n\t}\r\n\r\n\t@enumerable get PassRights() {\r\n\t\treturn this.PassOption() === 'pass';\r\n\t}\r\n\r\n\t@enumerable get PassOptionalRights() {\r\n\t\treturn this.PassOption() === 'pass optional';\r\n\t}\r\n\r\n\tstatic Create(doNotPass: boolean,\r\n\t\t\t\t passRights: boolean,\r\n\t\t\t\t passOptionalRights: boolean,\r\n\t\t\t\t passInheritance: boolean,\r\n\t\t\t\t refusePass: boolean,\r\n\t\t\t\t passOwner: boolean) {\r\n\r\n\t\tconst viewModel = new SecurityPassViewModel();\r\n\r\n\t\tconst passOption = doNotPass && 'do not pass' || passRights && 'pass' || passOptionalRights && 'pass optional';\r\n\r\n\t\tviewModel.PassOption(passOption);\r\n\t\tviewModel.PassInheritance(passInheritance);\r\n\t\tviewModel.RefusePass(refusePass);\r\n\t\tviewModel.PassOwner(passOwner);\r\n\r\n\t\treturn viewModel;\r\n\t}\r\n}","import { URL } from 'Core/Common/Url';\nimport { Request, IRequestOptions } from 'Core/Common/Request';\nimport { P } from 'Core/Common/Promise';\nimport { SecurityDataDtoModel } from '../Models/SecurityDataDtoModel';\r\n\nexport class SecurityEditorStore {\n\tstatic GetSecurityInfoForRecord(params: { EntityId: number, RecordId: number }): P.Promise<any> {\n\n\t\tvar deferredResult = P.defer<any>();\n\n\t\tvar requestParams: IRequestOptions = {\n\t\t\tproxy: {\n\t\t\t\turl: URL.SECURITY_EDITOR.GET_SECURITY_INFO_FOR_RECORD,\n\t\t\t\tdataType: 'json',\n\t\t\t\ttype: 'POST'\n\t\t\t}, params: params\n\t\t};\n\n\t\tRequest.Send(requestParams)\n\t\t\t.then(data => this.ResolveObjectResponse(data, deferredResult))\n\t\t\t.fail(() => this.RejectResponse(\"Error getting security information\", deferredResult));\n\n\t\treturn deferredResult.promise();\n\t}\n\n\tstatic GetSecurityData(params: { UserId: number }): P.Promise<SecurityDataDtoModel> {\n\n\t\tvar deferredResult = P.defer<any>();\n\n\t\tvar requestParams: IRequestOptions = {\n\t\t\tproxy: {\n\t\t\t\turl: URL.USER.GET_SECURITY_DATA,\n\t\t\t\tdataType: 'json',\n\t\t\t\ttype: 'GET'\n\t\t\t},\n\t\t\tparams: params\n\t\t};\n\n\t\tRequest.Send(requestParams).then(data => {\n\t\t\tdeferredResult.resolve(data);\n\t\t}).fail(data => { deferredResult.reject({ message: JSON.parse(data.message).Message }) });\n\n\t\treturn deferredResult.promise();\n\t}\n\n\tprivate static ResolveObjectResponse<T>(response, deferredResult: P.Deferred<T>) {\n\t\tif (response.IsSuccessfull) {\n\t\t\tdeferredResult.resolve(response.ResultObject);\n\t\t} else {\n\t\t\tdeferredResult.reject({ message: response.ErrorMessage });\n\t\t}\n\t}\n\n\tprivate static RejectResponse<T>(message: string, deferredResult: P.Deferred<T>) {\n\t\tdeferredResult.reject({ message: message });\n\t}\n\n}","// Module\nvar code = \"<!-- ko if: _visible --> <a data-bind=\\\"click: OnClick\\\" class=\\\"btn yellow subFormControl securityEditor\\\"> <i class=\\\"fa fa-lock\\\"></i><span><!-- ko text: _labels.SECURITY_EDITOR_LABEL --><!-- /ko --></span> </a> <!-- /ko -->\";\n// Exports\nexport default code;","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class SecurityDataModel {\r\n\t@deserialize\r\n\tProfileId: number;\r\n\r\n\t@deserialize\r\n\tProfileName: string;\r\n\r\n\t@deserialize\r\n\tUserAllowance: number;\r\n\r\n\tconstructor(partial?: Partial<SecurityDataModel>) {\r\n\t\tif (partial) {\r\n\t\t\tthis.ProfileId = partial.ProfileId;\r\n\t\t\tthis.ProfileName = partial.ProfileName;\r\n\t\t\tthis.UserAllowance = partial.UserAllowance;\r\n\t\t}\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport { Event } from \"Core/Common/Event\";\r\nimport { BlockUI } from 'Core/Common/BlockUi'\r\n\r\nimport { SearchScreen } from \"Core/Screens/SearchScreen/SearchScreen\";\r\n\r\nimport {\r\n\tSecurityEditorForm,\r\n\tEVENTS as SECURITY_EDITOR_FORM_EVENTS\r\n} from 'Core/Components/SecurityEditor/Form/SecurityEditorForm';\r\nimport { SecurityEditorModel } from \"Core/Components/SecurityEditor/Models/SecurityEditorModel\";\r\nimport {\r\n\tSecurityEditorFormModel, SecurityPassViewModel,\r\n\tUser\r\n} from \"Core/Components/SecurityEditor/Form/Models/SecurityEditorFormModel\";\r\nimport { SecurityEditorStore } from \"Core/Components/SecurityEditor/Stores/SecurityEditorStore\";\r\n\r\nimport SecurityEditorTemplate from \"Core/Components/SecurityEditor/Templates/SecurityEditor.html\";\r\nimport { Notifier } from \"Core/Common/Notifier\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { SecurityDataModel } from './Form/Models/SecurityDataModel';\r\n\r\nexport class SecurityEditor extends Event {\r\n\tprivate _entityId: number;\r\n\tprivate _recordId: number;\r\n\r\n\tprivate _visible: KnockoutObservable<boolean>;\r\n\tprivate _readonly: KnockoutObservable<boolean>;\r\n\r\n\tprivate _data: SecurityEditorModel;\r\n\tprivate _form: SecurityEditorForm;\r\n\tprivate _formModel: SecurityEditorFormModel;\r\n\tprivate _searchScreen: SearchScreen;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(entityId: number, recordId: number) {\r\n\t\tsuper();\r\n\r\n\t\tthis._entityId = entityId;\r\n\t\tthis._recordId = recordId;\r\n\r\n\t\tthis._visible = ko.observable(false);\r\n\t\tthis._readonly = ko.observable(true);\r\n\t}\r\n\r\n\tSetup(visible: boolean, readonly: boolean) {\r\n\t\tthis._visible(visible);\r\n\t\tthis._readonly(readonly);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn SecurityEditorTemplate;\r\n\t}\r\n\r\n\tOnClick() {\r\n\t\tthis.ShowEditor();\r\n\t}\r\n\r\n\tShowEditor() {\r\n\t\tif (this._formModel) {\r\n\t\t\tthis.CreateForm(this.MapToFormModel(this._data));\r\n\t\t} else {\r\n\t\t\tthis.GetServerData().then(model => {\r\n\t\t\t\tmodel.Owner.SecurityData = new SecurityDataModel({ ProfileName: model.Owner.Profile });\r\n\t\t\t\tthis._data = model;\r\n\t\t\t\tthis._formModel = this.MapToFormModel(model);\r\n\t\t\t\tthis.CreateForm(this._formModel);\r\n\t\t\t}).fail(error => new Notifier().Failed(error.message));\r\n\t\t}\r\n\t}\r\n\r\n\tCreateForm(formModel: SecurityEditorFormModel) {\r\n\t\tthis._form = new SecurityEditorForm(formModel, this._readonly());\r\n\r\n\t\tthis._form.On(SECURITY_EDITOR_FORM_EVENTS.ADDING_NEW_USER, this, () => this.SearchUsers());\r\n\t\tthis._form.On(SECURITY_EDITOR_FORM_EVENTS.SELECT_OWNER, this, () => this.SelectOwner(formModel));\r\n\t\tthis._form.On(SECURITY_EDITOR_FORM_EVENTS.SAVING_USERS, this, eventArgs => this.Save(eventArgs.data));\r\n\t\tthis._form.Show();\r\n\t}\r\n\r\n\r\n\tClose() {\r\n\t\tif (this._form) {\r\n\t\t\tthis._form.Close();\r\n\r\n\t\t\tif (this._searchScreen) {\r\n\t\t\t\tthis._searchScreen.Close();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tGetData() {\r\n\t\treturn this._data;\r\n\t}\r\n\r\n\tprivate GetServerData() {\r\n\t\treturn SecurityEditorStore.GetSecurityInfoForRecord({\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordId: this._recordId\r\n\t\t});\r\n\t}\r\n\r\n\tprivate SearchUsers() {\r\n\t\tthis._searchScreen = new SearchScreen({\r\n\t\t\tSearchTerm: '',\r\n\t\t\tEntityName: 'SYS_USERS',\r\n\t\t\tButtonAdd: false,\r\n\t\t\tCloseAfterSelectingRecord: false\r\n\t\t});\r\n\r\n\t\tthis._searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n\t\t\tconst validTypes = ['USER', 'USERGROUP'];\r\n\r\n\t\t\tif (validTypes.indexOf(eventArgs.data.TypeName.toUpperCase()) < 0) {\r\n\t\t\t\tnew Notifier().Warning(NOTIFICATIONS.TYPE_IS_NOT_SUPPORTED);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst user = new User();\r\n\r\n\t\t\tuser.Id = eventArgs.data.RecordId;\r\n\t\t\tuser.Name = eventArgs.data.Name;\r\n\r\n\t\t\tthis._form.AddUser(user);\r\n\r\n\t\t\tthis._searchScreen.Close();\r\n\t\t});\r\n\r\n\t\tthis._searchScreen.Show();\r\n\t}\r\n\r\n\tprivate SelectOwner(formModel: SecurityEditorFormModel) {\r\n\r\n\t\tthis._searchScreen = new SearchScreen({\r\n\t\t\tSearchTerm: '',\r\n\t\t\tEntityName: 'SYS_USERS',\r\n\t\t\tButtonAdd: false,\r\n\t\t\tCloseAfterSelectingRecord: false\r\n\t\t});\r\n\r\n\t\tthis._searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n\t\t\tconst validTypes = ['USER'];\r\n\r\n\t\t\tif (validTypes.indexOf(eventArgs.data.TypeName.toUpperCase()) < 0) {\r\n\t\t\t\tnew Notifier().Warning(\"This type is not supported\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tBlockUI.Block();\r\n\t\t\tSecurityEditorStore.GetSecurityData({\r\n\t\t\t\tUserId: eventArgs.data.RecordId\r\n\t\t\t})\r\n\t\t\t\t.then(securityDataDto => {\r\n\t\t\t\t\tconst securityData = new SecurityDataModel();\r\n\t\t\t\t\tsecurityData.UserAllowance = securityDataDto.UserAllowance;\r\n\r\n\t\t\t\t\tconst mainProfile = securityDataDto.SecurityProfiles.find(profile => profile.Main);\r\n\t\t\t\t\tsecurityData.ProfileId = mainProfile.Id;\r\n\t\t\t\t\tsecurityData.ProfileName = mainProfile.Name;\r\n\r\n\r\n\t\t\t\t\tconst owner = User.Create(eventArgs.data.RecordId, eventArgs.data.Name, securityData);\r\n\t\t\t\t\tformModel.Owner(owner);\r\n\t\t\t\t\tthis._searchScreen.Close();\r\n\t\t\t\t})\r\n\t\t\t\t.fail(error => new Notifier().Failed(error.message))\r\n\t\t\t\t.always(() => { BlockUI.Unblock() });\r\n\t\t});\r\n\r\n\t\tthis._searchScreen.Show();\r\n\t}\r\n\r\n\r\n\tprivate MapToFormModel(model: SecurityEditorModel) {\r\n\t\tconst formModel = new SecurityEditorFormModel();\r\n\t\tconst owner = <any>(model.Owner || {});\r\n\r\n\t\tconst user = User.Create(owner.Id, owner.Name, owner.SecurityData);\r\n\t\tformModel.Owner(user);\r\n\r\n\t\tconst users = model.Users.filter(user => user.Rights > 0 || user.OptionalRights > 0).map(user => User.Create(user.Id, user.Name, user.SecurityData, user.Rights, user.OptionalRights, user.Deleted));\r\n\t\tformModel.Users(users);\r\n\r\n\t\tformModel.SecurityPass = SecurityPassViewModel.Create(\r\n\t\t\tmodel.SecurityPass.DoNotPass,\r\n\t\t\tmodel.SecurityPass.PassRights,\r\n\t\t\tmodel.SecurityPass.PassOptionalRights,\r\n\t\t\tmodel.SecurityPass.PassInheritance,\r\n\t\t\tmodel.SecurityPass.RefusePass,\r\n\t\t\tmodel.SecurityPass.PassOwner\r\n\t\t);\r\n\r\n\t\treturn formModel;\r\n\t}\r\n\r\n\tprivate Save(data: SecurityEditorModel) {\r\n\t\tthis._data = data;\r\n\t\tthis.Trigger('SAVING_CHANGES', data);\r\n\t}\r\n}","import { SecurityDataModel } from \"Core/Components/SecurityEditor/Form/Models/SecurityDataModel\";\r\n\r\nexport class UserModel {\r\n\tconstructor(public Id: number, public Name: string, public UserAllowance) {\r\n\r\n\t}\r\n}","import * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen';\r\nimport {SubForm} from 'Core/Screens/Forms/SubForm/SubForm';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Search} from 'Core/Controls/Search/Search';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {RenderModes, ControlTypes, SYSTEM_TABLE_NAMES, LIFE_STATUS_GROUPS} from 'Core/Constant';\r\nimport { FollowupModes } from 'Core/Constants/FollowupModes';\r\nimport {DataModel} from 'Core/Screens/EditScreen/Models/DataModel';\r\nimport {InsertOrUpdateRecordStore} from 'Core/Screens/EditScreen/Stores/InsertOrUpdateRecordStore';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {ScreenDataModel} from 'Core/ScreenManager/Models/ScreenDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {RecordPersonalizationModel} from 'Core/ScreenManager/Models/RecordPersonalizationModel';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {LifeStatusInfo} from 'Core/ScreenManager/Models/LifeStatusInfo';\r\nimport {RecordExampleModel} from 'Core/ScreenManager/Models/RecordExampleModel';\r\n\r\nimport {MenuManager} from 'MenuManager/MenuManager';\r\nimport {MakePersonal} from 'Core/Components/Controls/MakePersonal/MakePersonal';\r\nimport {MakeExample} from 'Core/Components/Controls/MakeExample/MakeExample';\r\nimport {RecordStore} from 'Core/Screens/Stores/RecordStore';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {\r\n\tDeletionModeDialog,\r\n\tEVENTS as DELETION_MODE_DIALOG_EVENTS\r\n} from 'Core/Components/Dialogs/DeletionModeDialog/DeletionModeDialog';\r\nimport {DeletionModeModel} from \"Core/Screens/Models/DeletionModeModel\";\r\nimport {Password} from 'Core/Controls/Password/Password';\r\nimport {CONTROL_TYPES, SIMPLE_CONTROLS, SECURITY_CONTROLS} from 'Core/Constant';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {DataModes} from 'Core/Enums/DataModes';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {NewRelationModel} from 'Core/Controls/LinkList/Models/NewRelationModel';\r\nimport {NOTIFICATIONS, LABELS, CONFIRMATIONS} from 'Core/Components/Translation/Locales';\r\nimport {ButtonFollowUp} from 'Core/Controls/ButtonFollowUp/ButtonFollowUp';\r\nimport {FollowUpRecordModel} from 'Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel';\r\nimport {SecurityEditor} from 'Core/Components/SecurityEditor/SecurityEditor';\r\nimport {ProgressBar} from 'Core/Components/ProgressBar/ProgressBar';\r\nimport {Grid} from 'Core/Controls/Grid/Grid';\r\n\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\nimport {Serialize} from 'libs/cerialize';\r\nimport {LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {SecurityEditorModel} from 'Core/Components/SecurityEditor/Models/SecurityEditorModel';\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList';\r\nimport {UserModel} from 'Core/Controls/LinkList/Models/UserModel';\r\nimport {EVENTS as MAKE_EXAMPLE_EVENTS} from \"Core/Components/Controls/MakeExample/Events\";\r\nimport {GetServerRequestError} from \"Core/Common/Enums/ServerRequestErrors\";\r\nimport {UpdateDataModel} from 'Core/Controls/LinkList/Models/UpdateDataModel';\r\nimport {ILoadScreenRelationModel, LinkEditor} from 'Core/Screens/Common/LinkEditor/LinkEditor';\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\nimport {BREADCRUMBS_UPDATE_RECORD_NAME} from \"MenuManager/Breadcrumbs/Breadcrumbs\";\r\n\r\n// Templates\r\nimport Template from 'Core/Screens/Templates/AdditionalConsultScreen/EditScreen/EditScreen.html';\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/EditScreen/EditScreen'] = Template;\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\nexport class EditScreen extends BaseScreen {\r\n private _isDataFromExample: boolean;\r\n private _isFollowUp: boolean = false;\r\n private _makePersonal: MakePersonal;\r\n private _makeExample: MakeExample;\r\n private _securityEditor: SecurityEditor;\r\n private _progressBar: ProgressBar;\r\n private _sourceSearchTerm: KnockoutObservable<string>;\r\n private _followUpRecord: FollowUpRecordModel;\r\n private _requiredControls: Array<IControl>;\r\n private _statusDescription: string;\r\n private _isHamburgerActive: KnockoutObservable<boolean>;\r\n private _areWidthsEqual: KnockoutObservable<boolean>;\r\n private _aliasSuffix: string;\r\n\r\n ParentRecordId: number = 0;\r\n ParentRecordTypeId: number = 0;\r\n UseLinking: boolean = false;\r\n SaveImmediately: boolean = true;\r\n NewlyCreatedRecord: boolean = false;\r\n LinkToSource: boolean = false;\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel, RenderModes.Edit);\r\n let self = this;\r\n this._sourceSearchTerm = ko.observable('');\r\n this._aliasSuffix = screenModel.AliasSuffix || '';\r\n\r\n MobileChecker.IsMobile();\r\n let mobileOptions = MobileChecker.IsMobile() ? {\r\n minWidth: '100%',\r\n width: '100%',\r\n height: '100%',\r\n } : {};\r\n\r\n this.SetModalOptions({\r\n minHeight: MobileChecker.IsMobile() ? '100%' : 450,\r\n closeOnEsc: false,\r\n addClass: 'edit-screen-modal showScrollModal',\r\n blockScroll: true,\r\n onOpen: function () {\r\n $(this.closeButton[0]).off('click');\r\n this.closeButton[0].addEventListener('click', self.Close.bind(self));\r\n },\r\n ...mobileOptions\r\n });\r\n\r\n this._renderMode = RenderModes.Edit;\r\n\r\n this._makePersonal = null;\r\n this._makeExample = null;\r\n this._securityEditor = null;\r\n\r\n this.AddEvents();\r\n\r\n this.Init(screenModel);\r\n\r\n this._requiredControls = _.filter(this.GetAllControls(), (control) => {\r\n return control.GetIsRequired()\r\n });\r\n\r\n this.SetData(screenModel.Data);\r\n this.InitProgressBar(screenModel.Data);\r\n\r\n if (!screenModel.Data) {\r\n screenModel.Data = new ScreenDataModel();\r\n screenModel.Data.RecordId = 0;\r\n }\r\n\r\n const changingSecurityAllowed = screenModel.Data.Rights &&\r\n screenModel.Data.Rights.ChangeSecurityAllowance &&\r\n screenModel.Data.RecordSpecs &&\r\n !screenModel.Data.RecordSpecs.IsNewRecord;\r\n\r\n const editingSecurityAllowed = screenModel.Data.Rights && screenModel.Data.Rights.IsChangingSecurityAllowed;\r\n this._securityEditor && this._securityEditor.Setup(changingSecurityAllowed, !editingSecurityAllowed);\r\n\r\n this.On('CANCEL', this, () => {\r\n this.Close();\r\n });\r\n this._isHamburgerActive = ko.observable(false);\r\n this._areWidthsEqual = ko.observable(false);\r\n }\r\n\r\n AddEvents() {\r\n this.AddEvent('CLOSE');\r\n this.AddEvent('CANCEL');\r\n this.AddEvent('ON_CHANGED_PAGE_LEAVING');\r\n this.AddEvent('SAVE');\r\n this.AddEvent('DELETE_RECORD');\r\n this.AddEvent('SEARCH_RECORD');\r\n this.AddEvent('FOLLOWUP');\r\n this.AddEvent('FOLLOWUP_DONE');\r\n this.AddEvent('COPY_RECORD');\r\n this.AddEvent('COPY_RECORD_WITH_RELATIONS');\r\n this.AddEvent('COPY_TO_TYPE');\r\n this.AddEvent('MODAL_CLOSE');\r\n this.AddEvent('RECORD_SAVED');\r\n this.AddEvent('RECORD_REMOVED');\r\n this.AddEvent('FOLLOWUP_RECORD');\r\n this.AddEvent('COPY');\r\n this.AddEvent('RECORD_DELETED');\r\n this.AddEvent('DATA_CHANGED');\r\n this.AddEvent('LINK_LIST_DATA_LOADED');\r\n this.AddEvent('READY_TO_SAVE');\r\n this.AddEvent('RECORD_SELECTED');\r\n }\r\n\r\n PreventWindowConfirmation() {\r\n const eventWindowConfirmation = (event) => {\r\n let isModifiedControl = _.find(this.GetAllControls(), (control) => {\r\n return control.IsModified();\r\n });\r\n if (isModifiedControl && this.IsInModal()) {\r\n // Cancel the event as stated by the standard.\r\n event.preventDefault();\r\n // Chrome requires returnValue to be set.\r\n event.returnValue = 'Would you like to leave the page?';\r\n return 'Would you like to leave the page?'\r\n } else {\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n };\r\n\r\n window.addEventListener('beforeunload', eventWindowConfirmation);\r\n\r\n this.On('ON_CHANGED_PAGE_LEAVING', this, () => {\r\n window.removeEventListener('beforeunload', eventWindowConfirmation);\r\n });\r\n }\r\n\r\n ToggleActionBar(el){\r\n const actionBarWrapper = $(el).find('.action-bar-wrapper');\r\n this._areWidthsEqual(false);\r\n\r\n if (actionBarWrapper.length) {\r\n const actionBar_barLeft = $('.bar-left', actionBarWrapper).width();\r\n const actionBar_controls = $('.actionBar-Controls', actionBarWrapper).width();\r\n\r\n let isLeftAndControlsEqual: boolean = actionBar_barLeft === actionBar_controls\r\n if (actionBar_barLeft === 0 && actionBar_controls == 0) {\r\n isLeftAndControlsEqual = false\r\n }\r\n\r\n this._areWidthsEqual(isLeftAndControlsEqual);\r\n }\r\n }\r\n\r\n ToggleHamburger(data, event){\r\n $(event.target).find('.ham').toggleClass('active');\r\n this._isHamburgerActive(!this._isHamburgerActive());\r\n }\r\n\r\n ToggleLifeStatusBarClass(data, event){\r\n if ($(window).width() <= 991){\r\n $(event.target).parents('.lifestatus-bar-wrapper').toggleClass('showLifeStatus');\r\n }\r\n }\r\n\r\n IsSubjectScreen() {\r\n return true;\r\n }\r\n\r\n SetData(dataModel: ScreenDataModel) {\r\n if (!dataModel) {\r\n return;\r\n }\r\n\r\n if (!dataModel.Rights.IsRecordSecurityOk) {\r\n new Notifier().Warning(`Record security is not set for ${this.GetEntityName()} table`);\r\n return;\r\n }\r\n\r\n if (dataModel.RecordSpecs.LifeStatusInfo.Name === 'Example' && dataModel.RecordSpecs.RecordExampleInfo.IsExample) {\r\n this.AllowEmptyRequiredControls(true);\r\n }\r\n\r\n super.SetData(dataModel);\r\n }\r\n\r\n private Init(screenModel: ScreenModel) {\r\n this.PreventWindowConfirmation();\r\n this.On('SAVE', this, (eventArgs: any) => {\r\n this.SaveGrids();\r\n this.Save();\r\n });\r\n this.On('DELETE_RECORD', this, (eventArgs: any) => {\r\n this.DeleteRecord();\r\n });\r\n this.On('SEARCH_RECORD', this, (eventArgs: any) => {\r\n this.SearchRecord();\r\n });\r\n this.On('FOLLOWUP', this, (eventArgs: any) => {\r\n this.FollowUp();\r\n });\r\n this.On('FOLLOWUP_DONE', this, (eventArgs: any) => {\r\n this.FollowUp(true);\r\n });\r\n this.On('COPY_RECORD', this, (eventArgs: any) => this.OnCopy(DataModes.Copy, eventArgs.data.linkToSource));\r\n this.On('COPY_RECORD_WITH_RELATIONS', this, (eventArgs: any) => this.OnCopy(DataModes.CopyWithRelations, eventArgs.data.linkToSource));\r\n this.On('COPY_TO_TYPE', this, (eventArgs: any) => this.OnCopy(DataModes.CopyToType, eventArgs.data.linkToSource, eventArgs.data.copyToType, eventArgs.data.aliasSuffix));\r\n\r\n var bottomBar = this._bottomBar;\r\n if (bottomBar) {\r\n _.each(this.SubForms, subForm => {\r\n subForm.On('EXPANDED', this, (eventArgs: any) => {\r\n bottomBar.IsExpanded = true;\r\n });\r\n subForm.On('COLLAPSED', this, (eventArgs: any) => {\r\n bottomBar.IsExpanded = false;\r\n });\r\n });\r\n }\r\n\r\n if (screenModel.Data) {\r\n var recordSpec = screenModel.RecordSpecs || screenModel.Data.RecordSpecs;\r\n if (recordSpec) {\r\n this._makePersonal = new MakePersonal({\r\n IsPersonal: recordSpec.RecordPersonalization.IsPersonalized,\r\n PossibleToPersonalize: recordSpec.RecordPersonalization.PossibleToPersonalize\r\n });\r\n\r\n this._makeExample = new MakeExample({\r\n IsExample: recordSpec.RecordExampleInfo.IsExample,\r\n PossibleToExample: recordSpec.RecordExampleInfo.PossibleToExample\r\n });\r\n this._makeExample.On(MAKE_EXAMPLE_EVENTS.MAKE_EXAMPLE, this, (evtArgs) => {\r\n this.AllowEmptyRequiredControls(evtArgs.data.IsExample);\r\n });\r\n }\r\n\r\n this._securityEditor = new SecurityEditor(screenModel.EntityId, screenModel.Data.RecordId);\r\n this._securityEditor.On('SAVING_CHANGES', this, eventArgs => this.ApplySecurityEditorChanges(eventArgs.data));\r\n }\r\n }\r\n\r\n private AllowEmptyRequiredControls(isAllowed: boolean) {\r\n _.each(this._requiredControls, (control) => {\r\n control.SetIsRequired(!isAllowed);\r\n });\r\n }\r\n\r\n private OnCopy(dataMode: DataModes, linkToSource: boolean, copyToType: number = 0, aliasSuffix: string = '') {\r\n const self = this;\r\n this._dataMode = dataMode;\r\n\r\n if (this.ValidateData()) {\r\n this.IsTypeAvailable(copyToType || self._model.TableTypeId, self._model.TableTypeId, self._model.EntityId)\r\n .then(() => {\r\n this.DeserializeData().then(result => {\r\n UserVarsManager.Instance.RemoveFromRecent(self.GetRecordId(), self._model.EntityId, self._model.TableTypeId);\r\n this.Trigger('COPY', {recordId: result.recordId, dataMode: dataMode, linkToSource: linkToSource, copyToType: copyToType, aliasSuffix: aliasSuffix});\r\n });\r\n });\r\n }\r\n }\r\n\r\n private ApplySecurityEditorChanges(model: SecurityEditorModel) {\r\n const linkList = this.GetControl(CONTROL_TYPES.LinkList) as LinkList;\r\n if (!linkList) return;\r\n\r\n linkList.UpdateRecordOwner(new UserModel(model.Owner.Id, model.Owner.Name, model.Owner.SecurityData.UserAllowance));\r\n }\r\n\r\n private InitProgressBar(data: ScreenDataModel) {\r\n if (data && data.RecordSpecs && data.RecordSpecs.LifeStatusInfo) {\r\n this._progressBar = new ProgressBar({\r\n EntityId: this.GetEntityId(),\r\n RecordId: this.GetRecordId(),\r\n TypeId: this.GetTableTypeId(),\r\n RenderMode: this._renderMode,\r\n Screen: this,\r\n RecordSpecs: data.RecordSpecs,\r\n MigratedRequired: data.IsTypeTransformationRequired\r\n });\r\n this._statusDescription = data.RecordSpecs.LifeStatusInfo.MemoTranslation || data.RecordSpecs.LifeStatusInfo.Memo;\r\n }\r\n }\r\n\r\n SetFocusOnFirstControl() {\r\n const control = this.GetControlBy(c => c.IsFocusable());\r\n if (control) {\r\n control.SetFocus(true);\r\n }\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/EditScreen/EditScreen';\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n let isModalMode: boolean = !this.TargetId || false;\r\n this.SetScreenStyle(isModalMode);\r\n\r\n if (this._dataModel) {\r\n this.SetFocusOnFirstControl();\r\n }\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(el[0], ()=>{\r\n $(document).off('keydown', this.CtrlS);\r\n });\r\n\r\n $(document).keydown(this.CtrlS);\r\n\r\n const unbindResize = ResizeService.SubscribeWidth(this.OnResize.bind(this, el), el[0]); // subscribe on resize\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(el, () => {\r\n unbindResize();\r\n });\r\n this.ToggleActionBar(el);\r\n }\r\n\r\n OnResize = (el) => {\r\n this.ToggleActionBar(el);\r\n };\r\n\r\n CtrlS = (event) => {\r\n if(event.keyCode == 83 && event.ctrlKey && MenuManager.Instance.GetTopScreen() === this) {\r\n this.Trigger('SAVE');\r\n return false;\r\n }\r\n }\r\n\r\n FollowUp(isDone: boolean = false) {\r\n const self = this;\r\n if (this.ValidateData()) {\r\n this._isFollowUp = true;\r\n\r\n this.DeserializeData().then(result => {\r\n UserVarsManager.Instance.RemoveFromRecent(self.GetRecordId(), self._model.EntityId, self._model.TableTypeId);\r\n\r\n let followUpControl = this.GetControlByType(CONTROL_TYPES.ButtonFollowUp) as ButtonFollowUp;\r\n if (!isDone) {\r\n this.Trigger('FOLLOWUP_RECORD', {recordId: result.recordId, followUpRecordModel: followUpControl.GetRecord(), followUpRecordId: result.followUpRecordId});\r\n }\r\n });\r\n }\r\n }\r\n\r\n SaveGrids() {\r\n let grids = this.GetControlsByType(CONTROL_TYPES.Grid);\r\n _.each(grids,\r\n item => {\r\n let grid = item as Grid;\r\n grid.SaveEditRows();\r\n grid.ReleaseLockRows();\r\n });\r\n }\r\n\r\n ReleaseLockGrids() {\r\n let grids = this.GetControlsByType(CONTROL_TYPES.Grid);\r\n _.each(grids,\r\n item => {\r\n let grid = item as Grid;\r\n grid.ReleaseLockRows();\r\n });\r\n }\r\n\r\n Save(close: boolean = true, refreshScreen: boolean = true) {\r\n let deferredResult = P.defer<any>();\r\n if (this._dataModel.Rights.IsRecordSecurityOk) {\r\n if (this.ValidateData()) {\r\n this.DeserializeData(close, refreshScreen).then((data) => {\r\n deferredResult.resolve(data);\r\n });\r\n }\r\n } else {\r\n new Notifier().Warning(`Record security is not set for ${this.GetEntityName()} table`);\r\n }\r\n return deferredResult.promise();\r\n }\r\n\r\n Close() {\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n if ((!this._dataModel.RecordSpecs || !this._dataModel.RecordSpecs.IsNewRecord) && !this.TransactionId) {\r\n LockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n }\r\n\r\n this.ReleaseLockGrids();\r\n this.ControlPopupsClose();\r\n super.Close();\r\n }\r\n\r\n AfterSave(refreshScreen: boolean) {\r\n if (!this.IsInModal()) {\r\n if (this._isFollowUp) {FollowupModes\r\n if (!this._followUpRecord ||\r\n (this._followUpRecord.LifeStatusSort !== null\r\n && this._followUpRecord.LifeStatusSort !== LIFE_STATUS_GROUPS.RETIRED\r\n && !this._followUpRecord.LifeStatusNoActionNode\r\n && this._actionSubjectRecord\r\n && (this._followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT_AND_NEW\r\n || this._followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW))) {\r\n this.NewRecord(this.GetTableTypeId(), this.GetKindId(), this.GetRecordId(), null, DataModes.FollowUp);\r\n }\r\n } else if (this._dataMode === DataModes.Copy || this._dataMode === DataModes.CopyWithRelations || this._dataMode === DataModes.CopyToType) {\r\n this.IsTypeAvailable(this.GetTableTypeId(), this.GetTableTypeId(), this.GetEntityId())\r\n .then(() => this.NewRecord(this.GetTableTypeId(), this.GetKindId(), this.GetRecordId(), null, this._dataMode));\r\n } else {\r\n if(refreshScreen){\r\n this.LoadScreenFor(this.GetTableTypeId(), this.GetRecordId());\r\n } \r\n }\r\n } else {\r\n super.Close();\r\n }\r\n }\r\n\r\n\r\n ControlPopupsClose() {\r\n let followUpControl = this.GetControlByType(CONTROL_TYPES.ButtonFollowUp);\r\n\r\n if (followUpControl) {\r\n (followUpControl as ButtonFollowUp).Close();\r\n }\r\n\r\n if (this._securityEditor) {\r\n this._securityEditor.Close();\r\n }\r\n\r\n this._progressBar.CloseActionCheckList();\r\n }\r\n\r\n GetTextSearchTermControl(): IControl {\r\n return _.first(_.filter(this.GetAllControls(), (control: IControl) => control.GetType() === 'Search'));\r\n }\r\n\r\n SearchRecord(): void {\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n const searchScreen = new SearchScreen({EntityId: this.GetEntityId(), SearchTerm: searchTerm});\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs) => {\r\n this._sourceSearchTerm(eventArgs.data.SearchTerm);\r\n\r\n\t\t\tconst recordId = eventArgs.data.RecordId;\r\n\t\t\tconst typeId = eventArgs.data.TypeId;\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), recordId, typeId);\r\n\r\n this.Trigger('RECORD_SELECTED', {\r\n\t\t\t\tRecordId: recordId,\r\n\t\t\t\tTableTypeId: typeId,\r\n SearchTerm: eventArgs.data.SearchTerm\r\n });\r\n });\r\n\r\n searchScreen.On('NEW_RECORD', this, (eventArgs) => {\r\n const typeScreen = new TypeScreen(this.GetEntityId(), this.GetTableTypeId(), true);\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n\r\n typeScreen.On('TYPES_FOUND', this, (eventArgs) => searchScreen.Cancel());\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchScreen.SearchTerm());\r\n });\r\n\r\n typeScreen.Show();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n LoadScreenFor(tableTypeId: number, recordId: number) {\r\n BlockUI.Block();\r\n ScreenManager.GetScreenByScreenType(this.GetEntityId(), ScreenTypes.EditScreen, recordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n screen.SetIsReady(true);\r\n MenuManager.Instance.GoToScreen(screen, this.IsInModal());\r\n var baseScreen = screen as BaseScreen;\r\n var textSearchTerm = baseScreen.GetControl<Search>('Search');\r\n if (textSearchTerm) {\r\n textSearchTerm.SetSearchTerm(this._sourceSearchTerm());\r\n }\r\n }).fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, searchTerm: string, dataMode: DataModes = DataModes.Default, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n BlockUI.Block();\r\n\r\n ScreenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n DataMode: dataMode,\r\n ParentRecordId: this.GetRecordId(),\r\n SubjectLifestatusId: this._followUpRecord ? this._followUpRecord.LifeStatusId : null,\r\n AliasSuffix: aliasSuffix\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = this.GetRecordId();\r\n editScreen.ParentRecordTypeId = this.GetTableTypeId();\r\n\r\n editScreen.UseLinking = true;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n if (searchTerm && searchTerm !== '') {\r\n this.NameControlSetValue(searchTerm);\r\n }\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n LockManager.Instance.ReleaseLock(screen.GetEntityId(), screen.GetRecordId());\r\n if (this.IsInModal() && !this.IsDashMain) {\r\n this.Trigger('RECORD_SAVED');\r\n } else {\r\n this.LoadScreenFor(tableTypeId, eventArgs.data.RecordId);\r\n }\r\n\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), eventArgs.data.RecordId, tableTypeId);\r\n });\r\n\r\n screen.On('RECORD_REMOVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(screen.DeleteRecordSuccessNotification);\r\n this.LoadScreenFor(null, null);\r\n });\r\n\r\n if (this.IsDashMain) {\r\n screen.On('COPY',\r\n this,\r\n (eventArgs: any) => {\r\n const copyTableTypeId = eventArgs.data.copyToType || this.GetTableTypeId();\r\n this.IsTypeAvailable(copyTableTypeId, this.GetTableTypeId(), this.GetEntityId())\r\n .then(() => this.NewRecord(copyTableTypeId, this.GetKindId(), eventArgs.data.recordId, null, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix));\r\n });\r\n }\r\n\r\n screen.ShowInModal();\r\n\r\n })\r\n .fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n DeleteRecord(): void {\r\n const notifier = new Notifier($(this._el));\r\n let checkRecordId = this._isDataFromExample ? 0 : this.GetRecordId();\r\n\r\n if (!checkRecordId || checkRecordId === 0) {\r\n notifier.Warning(NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n return;\r\n }\r\n\r\n\t\tif (!this.IsEntitySysUsersOrCd()) {\r\n\t\t\tRecordStore.GetDeletionMode({ EntityId: this.GetEntityId(), RecordId: this.GetRecordId() })\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.then(result => {\r\n\t\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\t\tnotifier.Failed(result.ErrorMessage || NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst deletionMode = result.ResultObject;\r\n\r\n\t\t\t\t\tif (deletionMode.OnDelete || deletionMode.OnDelete === 0) {\r\n\t\t\t\t\t\tthis.ShowDeletionModeDialog(deletionMode);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.ShowConfirmationDialog();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.ShowConfirmationDialog();\r\n\t\t}\r\n \r\n }\r\n\r\n\tprivate ShowDeletionModeDialog(deletionModeModel: DeletionModeModel) {\r\n\t const deletionModeDialog = new DeletionModeDialog({\r\n\t\t DeletionMode: deletionModeModel.OnDelete,\r\n\t\t\tHasCustomLifeStatus: deletionModeModel.HasCustomLifeStatus\r\n\t });\r\n\r\n\t deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DELETE_SELECTED, this, () => {\r\n\t\t this.UseDeleteDeletionMode();\r\n\t\t});\r\n\r\n\t deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DISABLE_SELECTED, this, () => {\r\n\t\t this.UseDisableDeletionMode();\r\n\t });\r\n\r\n\t deletionModeDialog.Show();\r\n }\r\n\r\n\tprivate ShowConfirmationDialog() {\r\n\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: this.DeleteRecordConfirmation,\r\n\t\t\tType: ConfirmationTypes.Question\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\tthis.UseDeleteDeletionMode();\r\n\t\t});\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n\r\n\tprivate UseDeleteDeletionMode() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst notifier = new Notifier($(this._el));\r\n\t\tRecordStore.DeleteRecord({ EntityId: this.GetEntityId(), RecordId: this.GetRecordId() })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tnotifier.Failed(result.ErrorMessage || NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (result.Warnings && result.Warnings.length > 0) {\r\n\t\t\t\t\t_.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n\t\t\t\t\tthis.Trigger('RECORD_SAVED', {\r\n\t\t\t\t\t\tEntityId: this.GetEntityId(),\r\n\t\t\t\t\t\tRecordId: this.GetRecordId()\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.Close();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.Trigger('RECORD_DELETED', { RecordId: this.GetRecordId() });\r\n\t\t\t\t\tthis.DeleteFromRecent();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tnotifier.Warning(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate UseDisableDeletionMode() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst notifier = new Notifier($(this._el));\r\n\t\tRecordStore.DeleteRecord({ EntityId: this.GetEntityId(), RecordId: this.GetRecordId(), Disable: true })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tnotifier.Failed(result.ErrorMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.Trigger('RECORD_SAVED', {\r\n\t\t\t\t\tEntityId: this.GetEntityId(),\r\n\t\t\t\t\tRecordId: this.GetRecordId()\r\n\t\t\t\t});\r\n\t\t\t\tthis.Close();\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tnotifier.Warning(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n private DeleteFromRecent() {\r\n UserVarsManager.Instance.RemoveFromRecent(this.GetRecordId(), this._model.EntityId, this._model.TableTypeId);\r\n this.Trigger('RECORD_REMOVED');\r\n this.Close();\r\n }\r\n\r\n set IsDataFromExample(isFromExample: boolean) {\r\n this._isDataFromExample = isFromExample;\r\n }\r\n\r\n get IsDataFromExample(): boolean {\r\n return this._isDataFromExample;\r\n }\r\n\r\n get AliasSuffix(): string {\r\n return this._aliasSuffix;\r\n }\r\n\r\n ValidateData() {\r\n var result = true;\r\n _.each(this._controls, control => {\r\n var isControlValid = control.IsValid();\r\n if (!isControlValid) {\r\n result = false;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n DeserializeData(close: boolean = true, refreshScreen: boolean = true): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n\r\n const dataModel = new DataModel();\r\n dataModel.EntityId = this.GetEntityId();\r\n dataModel.RecordId = this._isDataFromExample ? 0 : this.GetRecordId();\r\n dataModel.ParentRecordId = this.ParentRecordId;\r\n dataModel.ParentRecordTypeId = this.ParentRecordTypeId;\r\n dataModel.ScreenTypeId = this.GetTypeId();\r\n dataModel.UseLinking = this.UseLinking;\r\n dataModel.FillFromExample = this._isDataFromExample && (this.GetDataMode() === DataModes.Default\r\n || this.GetDataMode() === DataModes.FollowUp || this.GetDataMode() === DataModes.CopyWithRelations || this.GetDataMode() === DataModes.CopyToType);\r\n dataModel.ExampleRecordId = this._isDataFromExample && (this.GetDataMode() === DataModes.Default\r\n || this.GetDataMode() === DataModes.FollowUp || this.GetDataMode() === DataModes.CopyWithRelations || this.GetDataMode() === DataModes.CopyToType) ? this.GetRecordId() : 0;\r\n dataModel.DataMode = this.GetDataMode();\r\n dataModel.EntityTypeId = this.GetTableTypeId();\r\n dataModel.KindId = this.GetKindId();\r\n dataModel.ActionSubjectRecord = this._actionSubjectRecord;\r\n dataModel.LinkToSource = this.LinkToSource;\r\n dataModel.AliasSuffix = this.AliasSuffix;\r\n\r\n let passwordControl = this.GetControl<Password>(CONTROL_TYPES.Password);\r\n\r\n if (passwordControl) {\r\n dataModel.PasswordAction = passwordControl.SelectedAction;\r\n }\r\n\r\n let personalizationInfo = this._makePersonal.GetPersonalizationInfo();\r\n let exampleInfo = this._makeExample.GetExampleInfo();\r\n\r\n dataModel.RecordSpecs = new RecordSpecsModel({\r\n RecordPersonalization: new RecordPersonalizationModel({\r\n PossibleToPersonalize: personalizationInfo.PossibleToPersonalize(),\r\n IsPersonalized: personalizationInfo.PersonalizationSelected()\r\n }),\r\n RecordExampleInfo: new RecordExampleModel({\r\n PossibleToExample: exampleInfo.PossibleToExample(),\r\n IsExample: exampleInfo.ExampleSelected()\r\n }),\r\n LifeStatusInfo: new LifeStatusInfo()\r\n });\r\n\r\n if (this._securityEditor) {\r\n dataModel.RecordSettings = this._securityEditor.GetData();\r\n }\r\n\r\n if (this._progressBar) {\r\n const lifeStatusInfo = this._progressBar.GetLifeStatus();\r\n dataModel.RecordSpecs.LifeStatusInfo = lifeStatusInfo;\r\n }\r\n\r\n if (this._isFollowUp) {\r\n dataModel.FollowUpRecord = new FollowUpRecordModel();\r\n }\r\n\r\n _.each(this._controls, control => {\r\n let controlType = control.GetType();\r\n\r\n if (SIMPLE_CONTROLS.indexOf(controlType) >= 0) {\r\n const hasChanges = control.IsModified() || control.GetFieldModel().HasDefaultValue\r\n || this._isDataFromExample || this._actionSubjectRecord;\r\n const data = control.Deserialize();\r\n if (data && hasChanges) {\r\n dataModel.FieldValueList.push(data);\r\n }\r\n }\r\n\r\n if (SECURITY_CONTROLS.indexOf(controlType) >= 0) {\r\n const data = control.Deserialize();\r\n\r\n if (data) {\r\n if (controlType === CONTROL_TYPES.TableSecurity) {\r\n dataModel.TableSecurityChanges = data;\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.TypeSecurity) {\r\n dataModel.TypeSecurityChanges = data;\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.RecordSecurity) {\r\n dataModel.RecordSecurityChanges = data;\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.RecordSharing) {\r\n dataModel.RecordSharingChanges = data;\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.UserSecurity) {\r\n dataModel.UserSecurityChanges = data;\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.UserAllowance) {\r\n dataModel.UserAllowanceChanges = data;\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.Password) {\r\n dataModel.PasswordFieldList.push(data);\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.FieldSecurity) {\r\n dataModel.FieldSecurityControlChanges = data;\r\n }\r\n }\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Signature) {\r\n const controlAttachments = control.Deserialize();\r\n dataModel.Attachments = dataModel.Attachments.concat(controlAttachments['attachments']);\r\n dataModel.RemoveAttachments = dataModel.RemoveAttachments.concat(controlAttachments['removeAttachments']);\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Image) {\r\n const controlAttachments = control.Deserialize();\r\n dataModel.Attachments = dataModel.Attachments.concat(controlAttachments['attachments']);\r\n dataModel.RemoveAttachments = dataModel.RemoveAttachments.concat(controlAttachments['removeAttachments']);\r\n dataModel.Annotations = dataModel.Annotations.concat(controlAttachments['annotations']);\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.QueryBuilder) {\r\n const data = control.Deserialize();\r\n dataModel.FieldValueList = dataModel.FieldValueList.concat(data);\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Drop) {\r\n const controlAttachments = control.Deserialize();\r\n dataModel.DropAttachments.push(controlAttachments);\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.LinkList) {\r\n let linkListData = control.Deserialize();\r\n dataModel.LinklistChanges.ChangedRelations.push(...linkListData.ChangedRelations);\r\n dataModel.LinklistChanges.ChangedSecurity.push(...linkListData.ChangedSecurity);\r\n dataModel.LinklistChanges.DeletedRelations.push(...linkListData.DeletedRelations);\r\n dataModel.LinklistChanges.LinkEditorChanges.push(...linkListData.LinkEditorChanges);\r\n dataModel.LinklistChanges.NewRelations.push(...linkListData.NewRelations);\r\n dataModel.LinklistChanges.ActionSubjectRecord = linkListData.ActionSubjectRecord;\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Grid) {\r\n let gridData = (control as Grid).Serialize();\r\n let linkEditorChanges = (control as Grid).SerializeLinkEditorData();\r\n\r\n _.each(linkEditorChanges, (item) => {\r\n dataModel.LinklistChanges.LinkEditorChanges.push(...item.LinkEditorChanges);\r\n dataModel.LinklistChanges.DeletedRelations.push(...item.DeletedRelations);\r\n });\r\n\r\n if (gridData.length > 0) {\r\n dataModel.GridsData.push(gridData);\r\n }\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Tag) {\r\n let tagChanges = control.Deserialize();\r\n if (!dataModel.TagsChanges) {\r\n dataModel.TagsChanges = [];\r\n }\r\n dataModel.TagsChanges.push(tagChanges);\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Spreadsheet) {\r\n const spreadsheetRewrite = control.Deserialize();\r\n if (spreadsheetRewrite) {\r\n dataModel.Spreadsheets.push(spreadsheetRewrite);\r\n }\r\n }\r\n\r\n if (this._isFollowUp && control.GetType() === CONTROL_TYPES.ButtonFollowUp) {\r\n let followUpControl = control as ButtonFollowUp;\r\n this._followUpRecord = followUpControl.GetRecord();\r\n if(this._followUpRecord){\r\n dataModel.FollowUpRecord = this._followUpRecord;\r\n }\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Alias && this.AliasSuffix) {\r\n const data = control.Deserialize();\r\n if (data) {\r\n dataModel.FieldValueList.push(data);\r\n }\r\n }\r\n });\r\n\r\n if (this.SaveImmediately) {\r\n BlockUI.Block();\r\n InsertOrUpdateRecordStore.UpdateData(dataModel, this.TransactionId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (result.Warnings && result.Warnings.length > 0) {\r\n const notifier = new Notifier();\r\n _.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n }\r\n\r\n if (result.IsSuccessfull) {\r\n if (dataModel.TableSecurityChanges || dataModel.UserSecurityChanges) {\r\n MenuManager.Instance.RefreshMenuAreas(false);\r\n }\r\n const control = this.GetControlByFieldName('NAME', CONTROL_TYPES.Text);\r\n const name = control ? control.GetValue() : null;\r\n this.Trigger('RECORD_SAVED', {\r\n EntityId: this.GetEntityId(),\r\n RecordId: result.Id,\r\n Name: name,\r\n IsFollowUp: this._isFollowUp\r\n });\r\n\r\n if (!this.IsQueryBuilderScreen) {\r\n PubSub.publish(BREADCRUMBS_UPDATE_RECORD_NAME, {\r\n Screen: this,\r\n Name: name\r\n });\r\n }\r\n\r\n deferredResult.resolve({ recordId: result.Id, followUpRecordId: result.FollowUpRecordId });\r\n if (close) {\r\n this.Close();\r\n }\r\n this.AfterSave(refreshScreen);\r\n\r\n if (dataModel.LinkToSource && result.Sequence) {\r\n let relation: ILoadScreenRelationModel = null;\r\n\r\n if (result.Id === result.MainLinkRecordId) {\r\n relation = {\r\n MainEntityId: dataModel.EntityId,\r\n MainRecordId: result.Id,\r\n MainRecordTypeId: dataModel.EntityTypeId,\r\n RelatedEntityId: dataModel.EntityId,\r\n RelatedRecordId: dataModel.ExampleRecordId,\r\n RelatedRecordTypeId: result.ExampleTypeId,\r\n KSeq: result.Sequence\r\n };\r\n }\r\n else {\r\n relation = {\r\n MainEntityId: dataModel.EntityId,\r\n MainRecordId: dataModel.ExampleRecordId,\r\n MainRecordTypeId: result.ExampleTypeId,\r\n RelatedEntityId: dataModel.EntityId,\r\n RelatedRecordId: result.Id,\r\n RelatedRecordTypeId: dataModel.EntityTypeId,\r\n KSeq: result.Sequence\r\n };\r\n }\r\n\r\n this.UpdateLinkRecord(relation);\r\n }\r\n else if (dataModel.ParentRecordId && dataModel.EntityTypeId != 0) {\r\n const relation: ILoadScreenRelationModel = {\r\n MainEntityId: dataModel.EntityId,\r\n MainRecordId: dataModel.ParentRecordId,\r\n MainRecordTypeId: dataModel.ParentRecordTypeId,\r\n RelatedEntityId: dataModel.EntityId,\r\n RelatedRecordId: result.Id,\r\n RelatedRecordTypeId: dataModel.EntityTypeId,\r\n KSeq: result.Sequence\r\n };\r\n\r\n this.UpdateLinkRecord(relation);\r\n }\r\n } else {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Failed(result.ErrorMessage);\r\n }\r\n }).fail(error => {\r\n const requestError = GetServerRequestError(error.status);\r\n const notifier = new Notifier($(this._el));\r\n notifier.Failed(NOTIFICATIONS.DATA_IS_NOT_SAVED);\r\n deferredResult.reject({message: null, status: error.status, requestError: requestError});\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n this.Trigger('READY_TO_SAVE', dataModel);\r\n if (close) {\r\n this.Close();\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n UpdateLinkRecord(relation: ILoadScreenRelationModel, isNew: boolean = false): P.Promise<any> {\r\n let data = null;\r\n let deferredResult = P.defer<any>();\r\n\r\n LinkEditor.LoadScreen(relation, isNew, data, false)\r\n .then(screen => {\r\n if (screen !== null) {\r\n const linkEditor = screen as LinkEditor;\r\n\r\n linkEditor.On('SAVE_DATA', this, eventArgs => {\r\n const dataModel = new DataModel();\r\n\r\n dataModel.EntityId = relation.MainEntityId;\r\n dataModel.RecordId = relation.MainRecordId;\r\n const updateDataModel = new UpdateDataModel();\r\n\r\n updateDataModel.LinkEditorChanges.push(eventArgs.data);\r\n dataModel.LinklistChanges = Serialize(updateDataModel);\r\n\r\n InsertOrUpdateRecordStore.UpdateData(dataModel, this.TransactionId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n new Notifier($(this._el)).Success(NOTIFICATIONS.RECORD_UPDATED);\r\n linkEditor.Close();\r\n deferredResult.resolve(null);\r\n } else {\r\n linkEditor.GetNotifier().Failed(result.ErrorMessage);\r\n }\r\n });\r\n });\r\n }\r\n }).fail(err => {\r\n new Notifier($(this._el)).Warning(err.message);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n public NameControlSetValue(value: string) {\r\n const control = this.GetControlByFieldName('NAME', CONTROL_TYPES.Text);\r\n\r\n if (control) {\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.FieldId = control.FieldModel.Id;\r\n controlData.Value = value;\r\n controlData.DisplayValue = value;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._dataMode === DataModes.Default ? this._recordId : 0,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n };\r\n\r\n control.SetDefaultValue(controlValue);\r\n }\r\n }\r\n\r\n public AddInnerRelation(relatedEntityId: number, relatedRecordId: number) {\r\n const linkList = this.GetControl(CONTROL_TYPES.LinkList) as LinkList;\r\n if (!linkList) return;\r\n\r\n const entityRelation = linkList.DataModel().Entities().find(e => e.EntityId === relatedEntityId);\r\n if (!entityRelation) return;\r\n\r\n BlockUI.Block();\r\n\r\n RecordStore.GetRecord({\r\n TableId: relatedEntityId,\r\n TableTypeId: 0,\r\n RecordId: relatedRecordId,\r\n ReadLookups: false\r\n })\r\n .always(() => BlockUI.Unblock())\r\n .then(recordDataModel => {\r\n const nameField = recordDataModel.Fields.find(f => f.FieldName === 'NAME');\r\n const linkedRecordName = nameField && nameField.FieldValue || 'N/A;'\r\n\r\n const newRelationModel = new NewRelationModel();\r\n newRelationModel.Id = relatedRecordId;\r\n newRelationModel.Name = linkedRecordName;\r\n\r\n linkList.AddRecord(relatedRecordId, entityRelation, newRelationModel);\r\n }).fail(error => {\r\n if (error.status === 404) {\r\n new Notifier().Failed('Link cannot be added. Record not found')\r\n } else {\r\n new Notifier().Failed('Error getting record for link');\r\n }\r\n });\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId()), attr: {'data-screen-name': $data.GetTypeName()}\\\" id=\\\"wrapper\\\"> <div class=\\\"screen edit-screen screenForm\\\"> <b class=\\\"spacerBackground\\\"></b> <div class=\\\"portlet light\\\"> <div class=\\\"container relative-block\\\"> <div class=\\\"row\\\" id=\\\"ActionBarBlock\\\"> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"action-bar-wrapper\\\" data-bind=\\\"css: {'show-wrapper': _isHamburgerActive(), 'hidden-wrapper': _areWidthsEqual()}\\\"> <div class=\\\"bar-left subforms-wrapper\\\"> <!-- ko with: ActionBar --> <div class=\\\"actionBar-Controls\\\"> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- ko with: $parent._securityEditor --> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: $parent.NewlyCreatedRecord --> <a class=\\\"subFormControl copy-link-button\\\" data-bind=\\\"click: CopyRecordLink, tooltip: {content: _labels.CLICK_TO_COPY_URL}\\\"> <i class=\\\"fa fa-link\\\"></i> </a> <!-- /ko --> </div> <!-- /ko --> </div> <span data-bind=\\\"click: ToggleHamburger.bind($data), css: {'hamburger-btn_wrapper__hidden': !_areWidthsEqual()}\\\" class=\\\"hamburger-btn_wrapper\\\"> <svg class=\\\"hamburger-btn hamburger-btn--Rotate hamburger-btn_type_4\\\" viewBox=\\\"0 0 100 100\\\" width=\\\"80\\\" data-bind=\\\"css: {'active': _isHamburgerActive()}\\\"> <path class=\\\"hamburger-btn_line hamburger-btn--top\\\" d=\\\"m 70,33 h -40 c 0,0 -8.5,-0.149796 -8.5,8.5 0,8.649796 8.5,8.5 8.5,8.5 h 20 v -20\\\"/> <path class=\\\"hamburger-btn_line hamburger-btn--middle\\\" d=\\\"m 70,50 h -40\\\"/> <path class=\\\"hamburger-btn_line hamburger-btn--bottom\\\" d=\\\"m 30,67 h 40 c 0,0 8.5,0.149796 8.5,-8.5 0,-8.649796 -8.5,-8.5 -8.5,-8.5 h -20 v 20\\\"/> </svg> </span> <div class=\\\"bar-right\\\"> <div class=\\\"action-bar-right lifestatus-bar-wrapper\\\"> <!-- ko with: _progressBar --> <div class=\\\"editScreenProgressBar\\\" data-bind=\\\"tooltip: { content: $parent._statusDescription }\\\"> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"editScreen-rightWrapper\\\"> <!-- ko with: _makePersonal --> <!-- ko if: IsMakePersonal --> <div class=\\\"make-personal-record-wrapper\\\"> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- ko with: _makeExample --> <!-- ko if: IsMakeExample --> <div class=\\\"make-example-record-wrapper\\\"> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- ko with: _screenSwitcher --> <div class=\\\"pull-right screen-switcher-container\\\"> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> </div> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"click: ToggleLifeStatusBarClass.bind($data)\\\" class=\\\"toggleLifeStatusBarButton\\\"></span> </div> </div> </div> </div> </form> </div> </div> <div class=\\\"row form-wrapper\\\" data-bind=\\\"css: {'noLinkList': NoLinkList}\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, show: _isExpanded, 'hidden-form': _noSubControls()}\\\" class=\\\"mainSubForm col-xs-12 col-sm-6 col-lg-4 form-wrapper__main-sub-form\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div> <!-- ko if: BottomBar --> <!-- ko if: IsBottomBarControls --> <!-- ko with: BottomBar --> <div class=\\\"full-width-block\\\" data-bind=\\\"css: {'expanded': _isExpanded, 'noLinkList': $parent.NoLinkList}\\\"> <div class=\\\"box-shadow-wrapper\\\"> <form role=\\\"form\\\" class=\\\"full-size\\\"> <div class=\\\"form-body\\\"> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> </form> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <span tabindex=\\\"1\\\" class=\\\"focus-guard\\\"></span> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {ISearchScreenParam} from 'Core/Screens/IScreen';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {CONTROL_TYPES, RenderModes} from 'Core/Constant';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {MenuManager} from 'MenuManager/MenuManager';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {Grid} from 'Core/Controls/Grid/Grid';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {NOTIFICATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\nimport {LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {IQueryScreen} from \"Core/Screens/QueryScreen/IQueryScreen\";\r\n\r\nimport ListScreenTemplate from 'Core/Screens/Templates/AdditionalConsultScreen/QueryScreen/QueryScreen.html';\r\nimport {ProfileSelectorScreen} from '../ProfileSelectorScreen/ProfileSelectorScreen';\r\nimport {QueryExpressionModel} from \"../../Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel\";\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/QueryScreen/QueryScreen'] = ListScreenTemplate;\r\n\r\nexport class QueryScreen extends BaseScreen implements IQueryScreen {\r\n private _grid: Grid;\r\n private _queryName: String;\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel, RenderModes.Edit);\r\n\r\n this.AddEvent('NEW_RECORD_CREATED');\r\n this.AddEvent('SEARCH_RECORD');\r\n this.AddEvent('ADD_RECORD');\r\n this.AddEvent('DATA_CHANGED');\r\n this.Init();\r\n }\r\n\r\n private Init() {\r\n if(!this._model.Data) {\r\n return;\r\n }\r\n this._grid = this.GetControl<Grid>('Grid');\r\n this._queryName = null;\r\n\r\n if (this._grid) {\r\n ['EnableLinkButton', 'EnableAdd&LinkButton', 'EnableAddQueryButton']\r\n .forEach(property => this._grid.ChangeProperty(property, false));\r\n }\r\n\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.Rights = this._model.Data ? this._model.Data.Rights : null;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: -1,\r\n RecordSpecsModel: null\r\n };\r\n\r\n _.each(this._controls, (control: IControl) => control.SetValue(controlValue));\r\n\r\n this.On('SEARCH_RECORD', this, (eventArgs: any) => this.SearchRecord());\r\n this.On('ADD_RECORD', this, (eventArgs: any) => this.CreateRecord());\r\n }\r\n\r\n Refresh() {\r\n this._grid.LoadData();\r\n }\r\n\r\n SetRecordId(recordId: number): void {\r\n this._recordId = recordId;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return `Core/Screens/Templates/AdditionalConsultScreen/QueryScreen/QueryScreen`;\r\n }\r\n\r\n GetTextSearchTermControl(): IControl {\r\n return _.first(_.filter(this.GetAllControls(), (control: IControl) => control.GetType() === 'Search'));\r\n }\r\n\r\n SearchRecord(): void {\r\n LockManager.Instance.ReleaseAllLocks();\r\n\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchControlId = SearchControl != null ? SearchControl.GetControlId() : 0;\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n const searchParams: ISearchScreenParam = {\r\n EntityId: this.GetEntityId(),\r\n ControlId: searchControlId,\r\n SearchTerm: searchTerm\r\n };\r\n\r\n const searchScreen = new SearchScreen(searchParams);\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs: any) => {\r\n this._tableTypeId = eventArgs.data.TypeId;\r\n this._recordId = eventArgs.data.RecordId;\r\n\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), this._recordId, this._tableTypeId);\r\n\r\n searchScreen.Close();\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: this.GetEntityId(),\r\n RecordId: this._recordId,\r\n RecordTypeId: this._tableTypeId\r\n });\r\n });\r\n\r\n searchScreen.On('ALT_ENTITY_RECORD_SELECTED', this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.On('NEW_RECORD', this, (eventArgs) => {\r\n const typeScreen = new TypeScreen(this.GetEntityId(), this.GetTableTypeId(), true);\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchScreen.SearchTerm());\r\n });\r\n\r\n this.On('NEW_RECORD_CREATED', this, () => {\r\n searchScreen.Cancel();\r\n });\r\n\r\n typeScreen.Show();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n EditRecord(): void {\r\n\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, searchTerm?: string) {\r\n ScreenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0\r\n })\r\n .then((screen: EditScreen) => {\r\n if (!screen) {\r\n new Notifier($(this._el)).Warning(NOTIFICATIONS.EDIT_SCREEN_NOT_EXISTS);\r\n\r\n return;\r\n }\r\n\r\n LockManager.Instance.ReleaseAllLocks();\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = this.GetRecordId();\r\n editScreen.UseLinking = true;\r\n\r\n if (searchTerm) {\r\n this.NameControlSetValue(editScreen, searchTerm);\r\n }\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.Trigger('NEW_RECORD_CREATED');\r\n this.LoadData(eventArgs.data.RecordId);\r\n });\r\n\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n CreateRecord() {\r\n const showTypeSelector = () => {\r\n const typeScreen = new TypeScreen(this.GetEntityId(), this.GetTableTypeId(), true);\r\n\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchTerm);\r\n });\r\n\r\n typeScreen.Show();\r\n };\r\n\r\n if (this.IsInModal()) {\r\n showTypeSelector();\r\n return;\r\n }\r\n\r\n\t\tconst profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n }\r\n\r\n LoadData(recordId: number) {\r\n this.LoadScreenFor(recordId);\r\n }\r\n\r\n LoadScreenFor(recordId: number) {\r\n if (this.IsDashMain) {\r\n this._grid.UpdateTableViewList();\r\n } else {\r\n ScreenManager.GetScreenByScreenType(this.GetEntityId(), ScreenTypes.ConsultScreen, recordId)\r\n .then(screen => {\r\n screen.SetIsReady(true);\r\n MenuManager.Instance.GoToScreen(screen);\r\n })\r\n .fail(err => {\r\n new Notifier().Warning(err.message);\r\n\r\n });\r\n }\r\n }\r\n\r\n private NameControlSetValue(screen: EditScreen, value: string) {\r\n const control = screen.GetControlByFieldName('NAME', CONTROL_TYPES.Text);\r\n\r\n if (control) {\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.FieldId = control.FieldModel.Id;\r\n controlData.Value = value;\r\n controlData.DisplayValue = value;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n };\r\n\r\n control.SetDefaultValue(controlValue);\r\n }\r\n }\r\n\r\n SetQuery(query: QueryExpressionModel, queryName: string = '') {\r\n if (this._grid) {\r\n this._grid.SetQuery(query);\r\n this._grid.SetSubjectRecord(this._recordId);\r\n }\r\n this._queryName = queryName;\r\n }\r\n} ","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId())\\\" id=\\\"wrapper\\\"> <div class=\\\"list-screen\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body atesting-grid-container\\\"> <div class=\\\"action-bar-wrapper form-group searchToolbarFormGroup\\\"> <div class=\\\"bar-left\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"bar-right pull-right search-entity-heading\\\"> <div class=\\\"caption search-screen custom-color-option\\\"> <span class=\\\"search-entity-name\\\" data-bind=\\\"text: $data._queryName\\\"></span> </div> <span class=\\\"entity-data-container\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </span> </div> </div> </div> </form> </div> <div class=\\\"clearfix\\\"> <div class=\\\"box-shadow-wrapper margin-t-5px\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped}\\\" class=\\\"form-wrapper__main-sub-form\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <!-- ko foreach: SubForms --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","import * as $ from \"jquery\";\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {FormProperties} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\nimport CardScreenTemplate\r\n from 'Core/Screens/Templates/AdditionalConsultScreen/CardScreen/CardScreen.html';\r\n\r\nimport { ConsultScreen } from \"Core/Screens/ConsultScreen/ConsultScreen\";\r\n\r\nimport {getWidthValue} from \"Core/Screens/CardScreen/CardScreenUtils\";\r\nimport {CARD_SCREEN_PROPERTY_TYPE} from \"../../Constant\";\r\nimport {ISettingsModal} from \"../../Controls/FormDesigner/SettingsModal/SettingsModal\";\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/CardScreen/CardScreen'] = CardScreenTemplate;\r\n\r\nexport class CardScreen extends ConsultScreen {\r\n private _properties: FormProperties = {};\r\n\r\n private _hasCustomColor: KnockoutObservable<boolean>;\r\n private _hasCustomWeight: KnockoutObservable<boolean>;\r\n private _screenWidth: KnockoutObservable<any>;\r\n private _screenBgColor: KnockoutObservable<any>;\r\n private _screenColors: KnockoutObservable<any>;\r\n private _fontColor: KnockoutObservable<any>;\r\n private _customStyle: KnockoutObservable<any>;\r\n\r\n private _fontFamily: KnockoutObservable<string>;\r\n private _fontWeight: KnockoutObservable<string>;\r\n private _fontStyle: KnockoutObservable<string>;\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel);\r\n\r\n this._hasCustomColor = ko.observable(null);\r\n this._hasCustomWeight = ko.observable(null);\r\n this._screenWidth = ko.observable(null);\r\n this._screenBgColor = ko.observable(null);\r\n this._screenColors = ko.observable(null);\r\n this._fontColor = ko.observable(null);\r\n this._customStyle = ko.observable(null);\r\n\r\n this._fontFamily = ko.observable(null);\r\n this._fontWeight = ko.observable(null);\r\n this._fontStyle = ko.observable(null);\r\n\r\n try {\r\n this._properties = GenericDeserialize(JSON.parse(screenModel.Properties), FormProperties);\r\n } catch (error) {}\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/CardScreen/CardScreen';\r\n }\r\n\r\n AfterRender(el: HTMLElement[]) {\r\n super.AfterRender(el);\r\n\r\n const bgColor = this.FindElementByType(this._properties?.Options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR)?.Value,\r\n screenWidth = this.FindElementByType(this._properties?.Options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_WIDTH)?.Value,\r\n fontColor = this.FindElementByType(this._properties?.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_COLOR)?.Value,\r\n fontFamily = this.FindElementByType(this._properties?.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_FAMILY)?.Value.Value,\r\n fontWeight = this.FindElementByType(this._properties?.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_WEIGHT)?.Value.Value,\r\n fontStyle = this.FindElementByType(this._properties?.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_STYLE)?.Value.Value;\r\n\r\n this._screenWidth(!!screenWidth?.Value ? `calc(${getWidthValue(screenWidth)} - 5px)` : null);\r\n this._screenBgColor(!!bgColor ? bgColor : null);\r\n this._fontColor(!!fontColor ? fontColor : null);\r\n\r\n this._fontFamily(!!fontFamily ? fontFamily : null);\r\n this._fontWeight(!!fontWeight ? fontWeight : null);\r\n this._fontStyle(!!fontStyle ? fontStyle : null);\r\n\r\n this._customStyle(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n this._hasCustomWeight(!!this._fontWeight());\r\n this._hasCustomColor(!!this._fontColor());\r\n\r\n }\r\n\r\n FindElementByType(array: ISettingsModal[], type: string): ISettingsModal | undefined {\r\n return _.find(array, { Type: type });\r\n }\r\n}","import { CONTROL_TYPES } from 'Core/Constant';\r\nimport * as ko from 'knockout';\r\n\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {ScreenDataModel} from 'Core/ScreenManager/Models/ScreenDataModel'\r\nimport {SpecialScreen} from 'Core/Screens/SpecialScreen/SpecialScreen';\r\n\r\nimport Template from 'Core/Screens/Templates/AdditionalConsultScreen/StepsScreen/StepsScreen.html';\r\nimport { Step } from '../../Controls/Step/Step';\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/StepsScreen/StepsScreen'] = Template;\r\n\r\nexport class StepsScreen extends SpecialScreen {\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel);\r\n }\r\n\r\n Init() {\r\n if (!this._model.Data) {\r\n return;\r\n }\r\n\r\n this.SetData(this._model.Data);\r\n\r\n this.On('SEARCH_RECORD', this, (eventArgs: any) => {\r\n this.SearchRecord();\r\n });\r\n this.On('EDIT_RECORD', this, (eventArgs: any) => {\r\n if (eventArgs.data && eventArgs.data.TableTypeId && eventArgs.data.RecordId) {\r\n this.EditRecord(eventArgs.data.RecordId, eventArgs.data.TableTypeId);\r\n } else {\r\n this.EditRecord();\r\n }\r\n });\r\n\r\n this.On('NEW_RECORD', this, (eventArgs: any) => {\r\n var screenData = null;\r\n if (eventArgs.data && eventArgs.data.ScreenData instanceof ScreenDataModel) {\r\n screenData = eventArgs.data.ScreenData;\r\n }\r\n\r\n if (eventArgs.data && eventArgs.data.TableTypeId) {\r\n this.NewRecord(eventArgs.data.TableTypeId, 0, screenData);\r\n } else {\r\n this.ShowTypeScreen(screenData);\r\n }\r\n });\r\n\r\n this.On('ADD_RECORD', this, (eventArgs: any) => {\r\n this.ShowProfileSelector();\r\n });\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/StepsScreen/StepsScreen';\r\n }\r\n\r\n LoadStepControlData({recordId}: {recordId: number }){\r\n const stepControl: Step = this.GetControlByType(CONTROL_TYPES.Step) as Step;\r\n if(stepControl){\r\n stepControl.On('FINISH_PROCESS', this, ()=>{\r\n this.Trigger('FINISH_PROCESS');\r\n this._modal?.Close();\r\n });\r\n stepControl.SelectRecord2({ recordId });\r\n }\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId())\\\" id=\\\"wrapper\\\"> <div class=\\\"special-screen\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"special-screen-content\\\"> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </form> </div> <div class=\\\"row form-wrapper\\\" data-bind=\\\"css: {'notBottomBar': BottomBar && !IsBottomBarControls}\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, 'hidden-form': _noSubControls()}\\\" class=\\\"mainSubForm col-md-12 form-wrapper__main-sub-form\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div> <!-- ko if: BottomBar --> <!-- ko if: IsBottomBarControls --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko with: BottomBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {ConsultScreen} from \"Core/Screens/ConsultScreen/ConsultScreen\";\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ScreenDataModel} from \"Core/ScreenManager/Models/ScreenDataModel\";\r\nimport {RightsModel} from \"Core/ScreenManager/Models/RightsModel\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {SubFormModel} from \"Core/Models/Screens/SubFormModel\";\r\nimport {ControlModel} from \"Core/Controls/BaseControl/Models/ControlModel\";\r\nimport {CONTROL_TYPES} from \"Core/Constant\";\r\n\r\nimport EmptyScreenTemplate\r\n from 'Core/Screens/Templates/AdditionalConsultScreen/EmptyScreen/EmptyScreen.html';\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/EmptyScreen/EmptyScreen'] = EmptyScreenTemplate;\r\n\r\nexport class EmptyScreen extends ConsultScreen {\r\n private _emptyBar: boolean;\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel);\r\n this._emptyBar = true;\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/EmptyScreen/EmptyScreen';\r\n }\r\n\r\n AfterRender(el: HTMLElement[]) {\r\n super.AfterRender(el);\r\n this.SearchRecord();\r\n }\r\n\r\n static EmptyScreenModel(model): ScreenModel {\r\n let screenModel = new ScreenModel();\r\n screenModel.Data = new ScreenDataModel();\r\n screenModel.Data.RecordId = 0;\r\n screenModel.Data.Rights = new RightsModel();\r\n screenModel.Data.Rights.IsRecordSecurityOk = true;\r\n\r\n screenModel.EntityIcon = model.EntityIcon;\r\n screenModel.ScreenTypeName = ScreenTypes[ScreenTypes.EmptyScreen];\r\n screenModel.EntityId = model.EntityId;\r\n\t\tscreenModel.EntityName = model.EntityName;\r\n\t\tscreenModel.EntityNameTranslation = model.EntityNameTranslation;\r\n screenModel.ActionBar = new SubFormModel();\r\n\r\n let controlModel = new ControlModel();\r\n\r\n const searchControl = _.find(model.ActionBar.Controls, control => {\r\n const searchControlModel = control as ControlModel;\r\n return searchControlModel && searchControlModel.TypeName === CONTROL_TYPES.Search;\r\n }) as ControlModel;\r\n\r\n if (searchControl) {\r\n controlModel.Id = searchControl.Id;\r\n controlModel.Properties = searchControl.Properties;\r\n }\r\n\r\n controlModel.TypeName = CONTROL_TYPES.Search;\r\n\r\n screenModel.ActionBar.Controls = [controlModel]\r\n\r\n return screenModel;\r\n }\r\n\r\n OpenSearch(){\r\n this.SearchRecord();\r\n }\r\n}","// Module\nvar code = \"<div id=\\\"wrapper\\\" class=\\\"full-height empty-screen-page\\\"> <div class=\\\"screen consult-screen empty-screen screenForm full-height\\\"> <div class=\\\"portlet light full-height\\\"> <div data-bind=\\\"subformResize: {}\\\" class=\\\"clearfix consult-screen-container empty-screen-container full-height\\\"> <!--ko if: ActionBar--> <div class=\\\"actionBarSubForm clearfix\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body clearfix\\\"> <div class=\\\"action-bar-wrapper\\\"> <div class=\\\"bar-left\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"bar-right\\\"> <div class=\\\"pull-right-sm lifestatus-bar-wrapper\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </form> </div> <!-- /ko --> <div class=\\\"clearfix middle-block\\\"> <div class=\\\"content-block transition\\\"> <!-- ko if: _emptyBar --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"emptyContent\\\"> <span><!-- ko text: _labels.NO_RECORD_SELECTED --><!-- /ko --></span> <a data-bind=\\\"click: OpenSearch.bind($data)\\\"><!-- ko text: _labels.SEARCH --><!-- /ko --></a> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\n\r\nimport * as GridStack from 'gridstack';\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\n\r\nimport {CONTROL_TYPES, RenderModes} from 'Core/Constant';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\nimport {ProfileSelectorScreen} from \"Core/Screens/ProfileSelectorScreen/ProfileSelectorScreen\";\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {ScreenManager} from \"Core/ScreenManager/ScreenManager\";\r\nimport {EditScreen} from \"Core/Screens/EditScreen/EditScreen\";\r\n\r\nimport { defaultGridStackOptions } from 'Core/Screens/Dashboard/DashboardUtils';\r\n\r\nimport DashboardTemplate\r\n from 'Core/Screens/Templates/AdditionalConsultScreen/Dashboard/DashboardTemplate.html';\r\n\r\nko.templates[\"Core/Screens/Templates/AdditionalConsultScreen/Dashboard/Dashboard\"] = DashboardTemplate;\r\n\r\nexport class Dashboard extends BaseScreen {\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel, RenderModes.View);\r\n this.Init();\r\n\r\n let body = $('body');\r\n if (!body.hasClass('Dashboard') && this.IsDashboard){\r\n body.addClass('Dashboard');\r\n }\r\n }\r\n\r\n private Init() {\r\n if (!this._model.Data) {\r\n return;\r\n }\r\n\r\n this._dataModel = this._model.Data;\r\n\r\n var controlData = new ControlDataModel();\r\n controlData.Rights = this._model.Data.Rights;\r\n\r\n var controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: -1,\r\n RecordSpecsModel: null\r\n };\r\n\r\n _.each(this._controls, (control: IControl) => {\r\n control.SetValue(controlValue);\r\n });\r\n\r\n this.On('ADD_RECORD', this, (eventArgs: any) => {\r\n this.CreateRecord();\r\n });\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n\r\n setTimeout(() => {\r\n GridStack.addGrid(\r\n this._el.querySelector('.dashboard-container'),\r\n {\r\n ...defaultGridStackOptions,\r\n children: this.SubForms.map(subForm => ({\r\n ...subForm.GetModel().Properties.DashboardBlock,\r\n content: `<div class=\"dashboard-RuntimeContentBox\" id=\"${subForm.GetFormGuid()}\"></div>`\r\n }))\r\n }\r\n );\r\n\r\n this.SubForms.forEach(subForm => {\r\n subForm.RenderDynamically(subForm.GetFormGuid(), this);\r\n });\r\n });\r\n }\r\n\r\n CreateRecord() {\r\n const showTypeSelector = (allowChildrenTypes: boolean) => {\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n const parentTypeId = allowChildrenTypes ? this.GetTableTypeId() : 0;\r\n const typeScreen = new TypeScreen(this.GetEntityId(), parentTypeId, true);\r\n\r\n typeScreen\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n })\r\n .On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchTerm);\r\n });\r\n\r\n typeScreen.Show();\r\n };\r\n\r\n if (this.IsInModal()) {\r\n showTypeSelector(false);\r\n return;\r\n }\r\n\r\n const profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector(false);\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector(false);\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, searchTerm?: string,\r\n dataMode: DataModes = DataModes.Default, subjectLifestatusId: number = null, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n BlockUI.Block();\r\n\r\n ScreenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n DataMode: dataMode,\r\n SubjectLifestatusId: subjectLifestatusId,\r\n ParentRecordId: this.GetRecordId(),\r\n AliasSuffix: aliasSuffix\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n if (searchTerm) {\r\n this.NameControlSetValue(editScreen, searchTerm);\r\n }\r\n\r\n screen\r\n .On('COPY', this, (eventArgs) => {\r\n if (this.IsInModal()) {\r\n this.Close();\r\n }\r\n\r\n const copyTableTypeId = eventArgs.data.copyToType || this._model.TableTypeId;\r\n this.NewRecord(copyTableTypeId, null, eventArgs.data.recordId, null, eventArgs.data.dataMode, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n screen.ShowInModal();\r\n })\r\n .fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n private NameControlSetValue(screen: EditScreen, value: string) {\r\n const control = screen.GetControlByFieldName('NAME', CONTROL_TYPES.Text);\r\n\r\n if (control) {\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.FieldId = control.FieldModel.Id;\r\n controlData.Value = value;\r\n controlData.DisplayValue = value;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: 0,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n };\r\n\r\n control.SetDefaultValue(controlValue);\r\n }\r\n }\r\n\r\n GetTextSearchTermControl(): IControl {\r\n return _.first(_.filter(this.GetAllControls(), (control: IControl) => control.GetType() === CONTROL_TYPES.Search));\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/Dashboard/Dashboard';\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId())\\\" id=\\\"wrapper\\\"> <div class=\\\"dashboard-screen\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"dashboard-screen-content\\\"> <div class=\\\"row form-wrapper\\\" data-bind=\\\"css: {'notBottomBar': BottomBar && !IsBottomBarControls}\\\"> <div class=\\\"mainSubForm col-md-12 form-wrapper__main-sub-form\\\"> <div class=\\\"dashboard-container grid-stack\\\" style=\\\"min-height:300px\\\"></div> </div> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\n\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\n// Templates\r\nimport Template from 'Core/Screens/Templates/AdditionalConsultScreen/ProcessCardScreen/ProcessCardScreen.html';\r\nimport { EditScreen } from '../EditScreen/EditScreen';\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/ProcessCardScreen/ProcessCardScreen'] = Template;\r\n\r\nexport class ProcessCardPage extends EditScreen {\r\n \r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/ProcessCardScreen/ProcessCardScreen';\r\n }\r\n \r\n AfterRender(el) {\r\n if (el){\r\n this._el = el[0];\r\n }\r\n let isModalMode: boolean = !this.TargetId || false;\r\n let isParentControlExist: boolean = true;\r\n\r\n this.SetScreenStyle(isModalMode, isParentControlExist);\r\n\r\n if (this._dataModel) {\r\n this.SetFocusOnFirstControl();\r\n }\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId()), attr: {'data-screen-name': $data.GetTypeName()}\\\" id=\\\"wrapper\\\"> <div class=\\\"screen process-card-screen screenForm\\\"> <b class=\\\"spacerBackground\\\"></b> <div class=\\\"portlet light\\\"> <div class=\\\"container relative-block\\\"> <div class=\\\"left-site\\\"> <div class=\\\"row form-wrapper\\\"> <!-- ko with: FirstSubForm --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> </div> <div class=\\\"right-site\\\"> <div class=\\\"row form-wrapper\\\"> <!-- ko foreach: ThreeSubFormsWithoutFirst --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> <!-- ko if: BottomBar --> <!-- ko if: IsBottomBarControls --> <!-- ko with: BottomBar --> <div class=\\\"full-width-block\\\" data-bind=\\\"css: {'expanded': _isExpanded, 'noLinkList': $parent.NoLinkList}\\\"> <div class=\\\"box-shadow-wrapper\\\"> <form role=\\\"form\\\" class=\\\"full-size\\\"> <div class=\\\"form-body\\\"> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> </form> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import { IScreen } from 'Core/Screens/IScreen'\r\nimport { ConsultScreen } from 'Core/Screens/ConsultScreen/ConsultScreen'\r\nimport { ListScreen } from 'Core/Screens/ListScreen/ListScreen'\r\nimport { SpecialScreen } from 'Core/Screens/SpecialScreen/SpecialScreen'\r\nimport { DesignScreen } from 'Core/Screens/DesignScreen/DesignScreen'\r\nimport { EditScreen } from 'Core/Screens/EditScreen/EditScreen'\r\nimport { LinkEditor } from 'Core/Screens/Common/LinkEditor/LinkEditor'\r\nimport { ScreenModel, DesignScreenModel } from 'Core/Models/Screens/ScreenModel'\r\nimport { Portlet } from \"Core/Portlets/Models/Runtime/Portlet\";\r\nimport { QueryScreen } from 'Core/Screens/QueryScreen/QueryScreen'\r\nimport { CardScreen } from 'Core/Screens/CardScreen/CardScreen'\r\nimport { StepsScreen } from 'Core/Screens/StepsScreen/StepsScreen';\r\nimport {EmptyScreen} from \"Core/Screens/EmptyScreen/EmptyScreen\";\r\nimport {Dashboard} from './Dashboard/Dashboard';\r\nimport { ConcreteEntityModel } from 'QueryBuilder/Models/ConcreteEntityModel'\r\nimport { ProcessCardPage } from 'Core/Screens/ProcessCardPage/ProcessCardPage'\r\n\r\nexport class ScreenFactory {\r\n\tstatic GetScreenInstance(model: ScreenModel, isLinkEditor?:boolean): IScreen {\r\n\t\tvar screen = null;\r\n\t\tif (model) {\r\n\t\t\tswitch (model.ScreenTypeName) {\r\n\t\t\t\tcase \"ConsultScreen\":\r\n\t\t\t\t\tif (model.Data !== null && !model.Data.RecordExists && !isLinkEditor){\r\n\t\t\t\t\t\tconst emptyScreenModel = EmptyScreen.EmptyScreenModel(model);\r\n\t\t\t\t\t\tscreen = new EmptyScreen(emptyScreenModel);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tscreen = new ConsultScreen(model);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"ListScreen\":\r\n\t\t\t\t\tscreen = new ListScreen(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"Portlet\":\r\n\t\t\t\t\tscreen = new Portlet(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"SpecialScreen\":\r\n\t\t\t\t\tscreen = new SpecialScreen(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"Dashboard\":\r\n\t\t\t\t\tscreen = new Dashboard(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"EditScreen\":\r\n\t\t\t\t\tscreen = new EditScreen(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"LinkEditor\":\r\n\t\t\t\t\tscreen = new LinkEditor(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"QueryScreen\":\r\n\t\t\t\t\tscreen = new QueryScreen(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"CardScreen\":\r\n\t\t\t\t\tscreen = new CardScreen(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"ProcessCardPage\":\r\n\t\t\t\t\tscreen = new ProcessCardPage(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"StepsScreen\":\r\n\t\t\t\t\tscreen = new StepsScreen(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!screen) {\r\n\t\t\tconsole.log(`Not implemented screen: ${model.ScreenTypeName}`);\r\n\t\t\tconsole.log(model);\r\n\t\t}\r\n\t\treturn screen;\r\n\t}\r\n\r\n\tstatic GetDesignScreenInstance(model: DesignScreenModel, subjectEntity: ConcreteEntityModel): DesignScreen {\r\n\t\tvar screen = null;\r\n\t\tif (model) {\r\n\t\t\tscreen = new DesignScreen(model, subjectEntity);\r\n\t\t}\r\n\t\treturn screen;\r\n\t}\r\n\r\n}","export enum SearchTypes {\r\n\tNone,\r\n\tFastSearch,\r\n\tPhoneticSearch,\r\n\tFieldSearch,\r\n\tTotalSearch\r\n}\r\n\r\nexport enum RecordTypes {\r\n\tDash,\r\n\tRoot,\r\n\tAll\r\n}\r\n\r\nexport enum SearchByMainRelationTypes\r\n{\r\n\tOff,\r\n ByRelations,\r\n\tByMainRelations,\r\n\tByConditions,\r\n\tByLinkedDocuments\r\n}","export var EVENTS = {\r\n\tRECORD_SELECTED: 'RECORD_SELECTED',\r\n\tNEW_RECORD: 'NEW_RECORD',\r\n\tSELECT_RECORD: 'SELECT_RECORD',\r\n\tSORT: 'SORT',\r\n\tDUPLICATES_RECORD_SELECTED: 'DUPLICATES_RECORD_SELECTED'\r\n}","import {deserializeAs} from 'libs/cerialize';\r\nimport {UserVarsRecordModel} from 'Core/Screens/SearchScreen/Models/UserVarsRecordModel';\r\n\r\n\r\nexport class GroupNameToRecordsModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.recent = [];\r\n\t\tthis.favorites = [];\r\n\t}\r\n\r\n\t@deserializeAs(UserVarsRecordModel)\r\n\trecent: Array<UserVarsRecordModel>;\r\n\r\n\t@deserializeAs(UserVarsRecordModel)\r\n\tfavorites: Array<UserVarsRecordModel>;\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class SearchFieldModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tDefaultName: string;\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {SearchFieldModel} from \"Core/Screens/SearchScreen/Models/SearchFieldModel\";\r\nimport { SearchTypes } from \"Core/Screens/SearchScreen/Enums/Enums\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport Exception from '../../../Results/Exceptions/Base/Exception';\r\n\r\n\r\nexport class SearchGroupItemModel {\r\n\tconstructor(public Id: number, public Name: string, public DefaultName: string, private _searchType: SearchTypes, public Disabled: boolean = false) {\r\n\r\n\t}\r\n\r\n\tget SearchType() {\r\n\t\treturn this._searchType;\r\n\t}\r\n}\r\n\r\nexport abstract class SearchGroupModel {\r\n\tprotected Items: KnockoutObservableArray<SearchGroupItemModel>;\r\n\r\n\tconstructor(public Name: string) {\r\n\t\tthis.Items = ko.observableArray();\r\n\t}\r\n\r\n\tabstract AddItem(id: number, name: string, defaultName: string);\r\n\r\n\tGetItem(name: string) {\r\n\t\tlet item = _.find(this.Items(), (item: SearchGroupItemModel) => item.Name === name);\r\n\r\n\t\treturn item || null;\r\n\t}\r\n\r\n\tHasItem(name: string): boolean {\r\n\t\treturn this.GetItem(name) !== null;\r\n\t}\r\n}\r\n\r\nclass SearchModeGroupModel extends SearchGroupModel {\r\n\tconstructor() {\r\n\t\tsuper(LABELS.SEARCH_MODES);\r\n\r\n\t\tthis.Items([\r\n\t\t\tnew SearchGroupItemModel(0, LABELS.FAST_SEARCH, null, SearchTypes.FastSearch),\r\n\t\t\tnew SearchGroupItemModel(0, LABELS.TOTAL_SEARCH, null, SearchTypes.TotalSearch),\r\n\t\t\tnew SearchGroupItemModel(0, LABELS.PHONETIC_SEARCH,null, SearchTypes.PhoneticSearch)\r\n\t\t]);\r\n\t}\r\n\r\n\tAddItem(id: number, name: string, defaultName: string) {\r\n\t\t//this.Items.push(new SearchGroupItemModel(id, name, SearchTypes.None));\r\n\t}\r\n}\r\n\r\nclass FieldSearchGroupModel extends SearchGroupModel {\r\n\tconstructor() {\r\n\t\tsuper(LABELS.SEARCH_FIELDS);\r\n\t}\r\n\r\n\tAddItem(id: number, name: string, defaultName: string) {\r\n\t\tthis.Items.push(new SearchGroupItemModel(id, name, defaultName, SearchTypes.FieldSearch));\r\n\t}\r\n}\r\n\r\nexport class SearchModeModel {\r\n\tprivate _groups: Array<SearchGroupModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis._groups = [new SearchModeGroupModel(), new FieldSearchGroupModel()];\r\n\t}\r\n\r\n\tAddSearchFields(...searchFields: Array<SearchFieldModel>) {\r\n\t\tlet searchFieldGroup = this._groups[1]//this.GetGroup(LABELS.SEARCH_FIELDS);\r\n\t\tsearchFields.forEach(searchField => searchFieldGroup.AddItem(searchField.Id, searchField.Name, searchField.DefaultName));\r\n\t}\r\n\r\n\tGetSearchItem(name: string) {\r\n\t\tlet groupWithItem = _.find(this._groups, group => group.HasItem(name));\r\n\r\n\t\tif (groupWithItem) {\r\n\t\t\treturn groupWithItem.GetItem(name);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tGetDefaultMode(): SearchGroupItemModel {\r\n\t\treturn new SearchGroupItemModel(0, LABELS.FAST_SEARCH, null, SearchTypes.FastSearch);\r\n\t}\r\n\r\n\tprivate GetGroup(name: string): SearchGroupModel {\r\n\t\treturn _.find(this._groups, (group: SearchGroupModel) => group.Name === name);\r\n\t}\r\n\r\n}","import * as ko from 'knockout';\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class AlternativeSearchModel {\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n RecordsCount: number;\r\n}\r\n\r\nexport class RowValueModel {\r\n @deserialize\r\n Key: string;\r\n\r\n @deserialize\r\n Value: string;\r\n}\r\n\r\nexport class SearchFieldModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n DefaultName: string;\r\n\r\n SortDirection: number;\r\n SortOrder: KnockoutObservable<number>;\r\n SortOrderClassName: KnockoutComputed<string>;\r\n Sort: Function;\r\n\r\n @deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n FormatName: string;\r\n\r\n @deserialize\r\n Size: number;\r\n\r\n @deserialize\r\n ValFieldTypeName: string;\r\n\r\n @deserialize\r\n ValFieldFormatName: string;\r\n\r\n @deserialize\r\n ValFieldSize: number;\r\n}\r\n\r\nexport class SearchResultRowModel {\r\n\r\n constructor(){\r\n this.RowValues = [];\r\n this.NestedData = ko.observable(null);\r\n }\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n TypeId: number;\r\n\r\n @deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n HasChildren: boolean;\r\n\r\n @deserializeAs(RowValueModel)\r\n RowValues: Array<RowValueModel>;\r\n\r\n NestedData: KnockoutObservable<SearchResultModel>;\r\n}\r\n\r\nexport class SearchResultModel {\r\n\r\n constructor(){\r\n this.Rows = [];\r\n this.SearchFields = [];\r\n this.AlternativeSearchList = [];\r\n }\r\n\r\n @deserialize\r\n RecordsCount: number;\r\n\r\n @deserializeAs(SearchFieldModel)\r\n SearchFields: Array<SearchFieldModel>;\r\n\r\n @deserializeAs(SearchResultRowModel)\r\n Rows: Array<SearchResultRowModel>;\r\n\r\n @deserializeAs(AlternativeSearchModel)\r\n AlternativeSearchList: Array<AlternativeSearchModel>\r\n\r\n @deserialize\r\n ErrorMessage: string;\r\n\r\n @deserialize\r\n NameField: string;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport { SearchFieldModel } from 'Core/Screens/SearchScreen/Models/SearchFieldModel';\r\nimport { GroupNameToRecordsModel } from 'Core/Screens/SearchScreen/Models/GroupNameToRecordsModel';\r\nimport { IconModel } from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport { EntityModel } from \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Models/EntityModel\";\r\n\r\nimport { SearchGroups } from \"Core/Enums/SearchGroups\";\r\nimport { SearchTypeModel } from 'Core/Screens/SearchScreen/Models/SearchTypeModel';\r\n\r\nexport class SearchScreenModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.SearchGroups = [];\r\n\t\tthis.SearchFields = [];\r\n\t\tthis.GroupNameToRecords = new GroupNameToRecordsModel();\r\n\t}\r\n\r\n\tpublic get Name() {\r\n\t\treturn this.EntityTranslatedName === null ? this.EntityName : this.EntityTranslatedName;\r\n\t}\r\n\r\n\t@deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n TableSecurityRights: number;\r\n\r\n @deserialize\r\n AllowDeduplicationMode: boolean;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tEntityTypeName: string;\r\n\r\n\t@deserialize\r\n\tEntityTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tSearchTerm: string;\r\n\r\n\t@deserialize\r\n\tSharing: boolean;\r\n\r\n\t@deserialize\r\n\tAddingRecordAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tAlternativeEntities: Array<EntityModel>\r\n\r\n\t@deserializeAs(SearchGroups)\r\n\tSearchGroups: Array<SearchGroups>;\r\n\r\n\t@deserializeAs(GroupNameToRecordsModel)\r\n\tGroupNameToRecords: GroupNameToRecordsModel;\r\n\r\n\t@deserializeAs(SearchFieldModel)\r\n SearchFields: Array<SearchFieldModel>;\r\n\r\n @deserializeAs(SearchTypeModel)\r\n Types: Array<SearchTypeModel>;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tIconModel: IconModel;\r\n\r\n\t@deserialize\r\n\tHasBarcodeFields: boolean;\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class SearchTypeModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\n\r\nexport class UserVarsRecordModel {\r\n\r\n\tconstructor() {\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n}","export class SearchResultCell {\r\n private _value;\r\n private _Id;\r\n constructor(value: string, id: number){\r\n this._value = value;\r\n this._Id = id;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {\r\n SearchFieldModel,\r\n SearchResultModel\r\n} from \"../Models/SearchResultModel\";\r\nimport {SearchResultRow} from \"./SearchResultRow\";\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS as SEARCH_SCREEN_EVENTS} from 'Core/Screens/SearchScreen/Events';\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {ISearchRequestModel, SearchStore} from \"Core/Screens/SearchScreen/Stores/SearchStore\";\r\nimport {RecordTypes, SearchByMainRelationTypes} from \"Core/Screens/SearchScreen/Enums/Enums\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {SortOrder} from \"Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport { ISelectedRecord } from 'Core/Screens/SearchScreen/SearchScreen';\r\n\r\n// Templates\r\nimport SearchResultGridTemplate from 'Core/Screens/SearchScreen/SearchResultGrid/Templates/SearchResultGrid.html';\r\nko.templates['Core/Screens/SearchScreen/SearchResultGrid/Templates/SearchResultGrid'] = SearchResultGridTemplate;\r\n\r\nexport class SearchResultGrid extends Event{\r\n\r\n private _hasData: KnockoutObservable<boolean>;\r\n private _searchResultMessage: KnockoutObservable<string>;\r\n private _searchResult: SearchResultModel;\r\n private _columns: KnockoutObservableArray<SearchFieldModel>;\r\n private _rows: KnockoutObservableArray<SearchResultRow>;\r\n private _isSmallTable: KnockoutObservable<boolean>;\r\n private _searchRequest: ISearchRequestModel;\r\n private _container: HTMLElement;\r\n private _orderFields: Array<any>;\r\n\tprivate _showExpandButton: boolean;\r\n\tprivate _labels = LABELS;\r\n private _multiselectMode: boolean;\r\n private _selectedRecords: KnockoutObservableArray<number>;\r\n private _selectedDuplicatesRecords: KnockoutObservableArray<ISelectedRecord>;\r\n private _showDuplicatesMode: boolean;\r\n\r\n constructor(\r\n searchResult: SearchResultModel,\r\n selectedRecords: KnockoutObservableArray<number>,\r\n searchRequest: ISearchRequestModel,\r\n showExpandButton: boolean,\r\n multiselectMode: boolean,\r\n showDuplicatesMode: boolean,\r\n selectedDuplicatesRecords: KnockoutObservableArray<ISelectedRecord>,\r\n ){\r\n super();\r\n this._showExpandButton = showExpandButton;\r\n this._showDuplicatesMode = showDuplicatesMode;\r\n this._hasData = ko.observable(searchResult.Rows.length > 0);\r\n this._searchResultMessage = ko.observable(searchResult.ErrorMessage || this._labels.NO_RECORDS_FOUND);\r\n this._searchResult = searchResult;\r\n this._columns = ko.observableArray(searchResult.SearchFields);\r\n this._rows = ko.observableArray([]);\r\n this._isSmallTable = ko.observable(searchResult.SearchFields.length <= 2);\r\n this._searchRequest = searchRequest;\r\n this._orderFields = [];\r\n this._multiselectMode = multiselectMode;\r\n this._selectedRecords = selectedRecords;\r\n this._selectedDuplicatesRecords = selectedDuplicatesRecords;\r\n\r\n let rows = [];\r\n _.each(searchResult.Rows, (item) => {\r\n item.RowValues.map((row) => {\r\n if(row.Value) {\r\n const fieldMetadata = _.find(searchResult.SearchFields, (item) => {return item.Name == row.Key});\r\n if(fieldMetadata) {\r\n row.Value = this.PrepareFormattedValue({ value: row.Value, fieldMetadata });\r\n }\r\n }\r\n });\r\n\r\n let row = new SearchResultRow(item, searchResult.SearchFields);\r\n row.IsSelected.subscribe((newValue)=>{\r\n this.Trigger(SEARCH_SCREEN_EVENTS.SELECT_RECORD, { Row: row.Model, IsSelected: newValue, RowClick: row.RowClick() });\r\n });\r\n\r\n let isSelected = _.any(this._selectedRecords(), id => id === row.RecordId);\r\n\r\n row.IsSelected(!!isSelected);\r\n\r\n row.IsSelectedDuplicatesRecord.subscribe(newValue => {\r\n this.Trigger(SEARCH_SCREEN_EVENTS.DUPLICATES_RECORD_SELECTED, {Row: row.Model, IsDuplicatesSelected: newValue});\r\n });\r\n let isSelectedDuplicatesRecord = _.any(this._selectedDuplicatesRecords(), (item: ISelectedRecord) => {\r\n return item.RecordId === row.RecordId && item.TableId === this._searchRequest.EntityId;\r\n });\r\n if (this._selectedDuplicatesRecords().length == 2){\r\n row.IsDisableDuplicateRecord(!isSelectedDuplicatesRecord);\r\n }\r\n row.IsSelectedDuplicatesRecord(isSelectedDuplicatesRecord);\r\n\r\n rows.push(row);\r\n });\r\n this._rows(rows);\r\n this._selectedDuplicatesRecords.subscribe((newValue)=>{\r\n _.each(this._rows(), (row) => {\r\n let isSelectedDuplicatesRecord = _.any(this._selectedDuplicatesRecords(), (item: ISelectedRecord) => {\r\n return item.RecordId === row.RecordId && item.TableId === this._searchRequest.EntityId;\r\n });\r\n if (this._selectedDuplicatesRecords().length == 2){\r\n row.IsDisableDuplicateRecord(!isSelectedDuplicatesRecord);\r\n } else {\r\n if (this._selectedDuplicatesRecords().length <= 1){\r\n row.IsDisableDuplicateRecord(false);\r\n row.IsSelectedDuplicatesRecord(isSelectedDuplicatesRecord);\r\n }\r\n }\r\n row.IsSelectedDuplicatesRecord(isSelectedDuplicatesRecord);\r\n });\r\n });\r\n this.AddEvent(SEARCH_SCREEN_EVENTS.SELECT_RECORD);\r\n this.AddEvent(SEARCH_SCREEN_EVENTS.SORT);\r\n this.AddEvent(SEARCH_SCREEN_EVENTS.DUPLICATES_RECORD_SELECTED);\r\n }\r\n\r\n PrepareFormattedValue({ value, fieldMetadata }: { value: string; fieldMetadata: SearchFieldModel }) {\r\n if (_.contains(['Date', 'Time', 'DateTime'], fieldMetadata.TypeName)) {\r\n value = FormatConverter.CorrectTimezone(value);\r\n\r\n const datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(\r\n { Type: fieldMetadata.TypeName, FormatName: fieldMetadata.FormatName },\r\n true\r\n );\r\n\r\n return FormatConverter.ConvertFromDefaultFormat(value, datetimeFormat);\r\n }\r\n\r\n if (_.contains(['Decimal', 'Integer'], fieldMetadata.TypeName)) {\r\n return this.FormatDecimalOrInteger({\r\n value,\r\n formatName: fieldMetadata.FormatName,\r\n size: fieldMetadata.Size\r\n });\r\n }\r\n\r\n if (fieldMetadata.TypeName === 'Lookup') {\r\n if (_.contains(['Decimal', 'Integer'], fieldMetadata.ValFieldTypeName)) {\r\n return this.FormatDecimalOrInteger({\r\n value,\r\n formatName: fieldMetadata.ValFieldFormatName,\r\n size: fieldMetadata.ValFieldSize\r\n });\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n FormatDecimalOrInteger({ value, formatName, size }: { value: string; formatName: string; size: number }) {\r\n return FormatConverter.LocalizeDecimalOrInteger(\r\n value && formatName === 'Percentage'\r\n ? (Number(value.replace(/[.,]/g, '.')) * 100).toFixed(size < 2 ? 0 : size - 2)\r\n : value\r\n );\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/SearchScreen/SearchResultGrid/Templates/SearchResultGrid'\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>){\r\n this._container = elements[0];\r\n }\r\n\r\n SelectRecord(row: SearchResultRow){\r\n if (row.IsSelected()){\r\n row.RowClick(false);\r\n } else {\r\n row.RowClick(true);\r\n row.IsSelected(true);\r\n }\r\n }\r\n\r\n MultiSelectRecord(row: SearchResultRow){\r\n row.IsSelected(!row.IsSelected());\r\n }\r\n\r\n SelectRecords(ids: number[]) {\r\n if (ids && ids.length > 0 && this._multiselectMode) {\r\n _.each(this._rows(), (row) => {\r\n if (_.contains(ids, row.RecordId)) {\r\n this.SelectRecord(row);\r\n }\r\n });\r\n }\r\n }\r\n\r\n ToggleExpand(row: SearchResultRow) {\r\n if(row.HasChildren) {\r\n row.Expanded(!row.Expanded());\r\n\r\n if (row.Expanded()) {\r\n this.GetSubGriData(row);\r\n } else {\r\n row.SubGrid = null;\r\n }\r\n }\r\n }\r\n\r\n GetSubGriData(row: SearchResultRow){\r\n BlockUI.Block({ Target: this._container });\r\n this._searchRequest.SubGridParentRecordId = row.RecordId;\r\n this._searchRequest.SearchPhrase = '';\r\n this._searchRequest.AlternativeEntities = [];\r\n this._searchRequest.RecordType = RecordTypes[RecordTypes.All];\r\n this._searchRequest.SearchByMainRelationType = SearchByMainRelationTypes.Off;\r\n this._searchRequest.EnableFilter = false;\r\n this._searchRequest.ControlId = 0;\r\n this._searchRequest.ParentEntityId = 0;\r\n this._searchRequest.ParentRecordId = 0;\r\n this._searchRequest.PageNumber = null;\r\n this._searchRequest.RecordsPerPage = null;\r\n this._searchRequest.SearchByTypes = [];\r\n this._searchRequest.OrderFields = this._orderFields;\r\n\r\n SearchStore.Search(this._searchRequest)\r\n .always(()=>{\r\n BlockUI.Unblock(this._container);\r\n })\r\n .then(result => {\r\n\r\n _.each(result.SearchFields, (column) =>{\r\n if (this._orderFields[0] && this._orderFields[0].Id === column.Id) {\r\n column.SortDirection = Number(this._orderFields[0] && this._orderFields[0].Order || SortOrder.Asc);\r\n } else {\r\n column.SortDirection = Number(SortOrder.Both);\r\n }\r\n\r\n column.SortOrder = ko.observable(column.SortDirection);\r\n\r\n column.SortOrderClassName = ko.computed({\r\n owner: this,\r\n read: () => {\r\n if (!column.Id) {\r\n return 'sort-null';\r\n }\r\n return `sort-${SortOrder[column.SortOrder()].toLowerCase()}`;\r\n }\r\n });\r\n\r\n column.Sort = () => {\r\n if (!column.Id) {\r\n return;\r\n }\r\n switch (SortOrder[column.SortOrder()]) {\r\n case 'Asc':\r\n column.SortDirection = SortOrder.Desc;\r\n break;\r\n case 'Desc':\r\n column.SortDirection = SortOrder.Both;\r\n break;\r\n case 'Both':\r\n column.SortDirection = SortOrder.Asc;\r\n break;\r\n }\r\n column.SortOrder(column.SortDirection);\r\n\r\n };\r\n\r\n column.SortOrder.subscribe((order) => {\r\n this._orderFields = [{\r\n Id: column.Id,\r\n Order: order\r\n }];\r\n\r\n this.GetSubGriData(row);\r\n });\r\n });\r\n\r\n let subGrid = new SearchResultGrid(\r\n result,\r\n this._selectedRecords,\r\n this._searchRequest,\r\n this._showExpandButton,\r\n this._multiselectMode,\r\n this._showDuplicatesMode,\r\n this._selectedDuplicatesRecords);\r\n row.SubGrid = subGrid;\r\n\r\n subGrid.On(SEARCH_SCREEN_EVENTS.SELECT_RECORD, this, (eventArgs) => {\r\n this.Trigger(SEARCH_SCREEN_EVENTS.SELECT_RECORD, { Row: eventArgs.data.Row, IsSelected: eventArgs.data.IsSelected });\r\n });\r\n\r\n subGrid.On(SEARCH_SCREEN_EVENTS.DUPLICATES_RECORD_SELECTED, this, (eventArgs) => {\r\n this.Trigger(SEARCH_SCREEN_EVENTS.DUPLICATES_RECORD_SELECTED, { Row: eventArgs.data.Row, IsDuplicatesSelected: eventArgs.data.IsDuplicatesSelected });\r\n });\r\n\r\n $(window).trigger('resize');\r\n });\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport {SearchResultRowModel} from 'Core/Screens/SearchScreen/Models/SearchResultModel';\r\nimport {SearchResultGrid} from 'Core/Screens/SearchScreen/SearchResultGrid/SearchResultGrid';\r\nimport {SearchResultCell} from \"Core/Screens/SearchScreen/SearchResultGrid/SearchResultCell\";\r\nimport {SearchFieldModel} from \"Core/Screens/SearchScreen/Models/SearchFieldModel\";\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class SearchResultRow {\r\n private _model: SearchResultRowModel;\r\n private _subGrid: KnockoutObservable<SearchResultGrid>;\r\n private _toggleButtonClassName: KnockoutComputed<string>;\r\n private _cells: Array<SearchResultCell>;\r\n private _columns: Array<SearchFieldModel>;\r\n public IsSelected: KnockoutObservable<boolean>;\r\n public IsSelectedDuplicatesRecord: KnockoutObservable<boolean>;\r\n public IsDisableDuplicateRecord: KnockoutObservable<boolean>;\r\n Expanded: KnockoutObservable<boolean>;\r\n RowClick: KnockoutObservable<boolean>;\r\n\r\n constructor(model: SearchResultRowModel, columns: Array<SearchFieldModel>){\r\n this.IsSelected = ko.observable(false);\r\n this.RowClick = ko.observable(false);\r\n this.IsSelectedDuplicatesRecord = ko.observable(false);\r\n this.IsDisableDuplicateRecord = ko.observable(false);\r\n this._model = model;\r\n this._subGrid = ko.observable(null);\r\n this.Expanded = ko.observable(false);\r\n this._cells = [];\r\n this._columns = columns;\r\n this._toggleButtonClassName = ko.computed(()=>{\r\n return this.Expanded() ? 'fa-minus-circle' : 'fa-plus-circle';\r\n });\r\n this.Init();\r\n }\r\n\r\n private Init(){\r\n _.each(this._columns, (column) =>{\r\n let columnValue = _.find(this._model.RowValues, (item) =>{\r\n return item.Key === column.Name;\r\n });\r\n\r\n if(columnValue){\r\n this._cells.push(new SearchResultCell(columnValue.Value, column.Id));\r\n }\r\n });\r\n }\r\n\r\n @enumerable get HasChildren(): boolean {\r\n return this._model.HasChildren;\r\n }\r\n\r\n @enumerable get RecordId(): number{\r\n return this._model.RecordId;\r\n }\r\n\r\n set SubGrid(subGrid: SearchResultGrid){\r\n this._subGrid(subGrid);\r\n }\r\n\r\n @enumerable get Model(): SearchResultRowModel{\r\n return this._model;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {ISearchScreenParam} from 'Core/Screens/IScreen';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {SearchScreenStore} from 'Core/Screens/SearchScreen/Stores/SearchScreenStore';\r\nimport {SearchScreenModel} from 'Core/Screens/SearchScreen/Models/SearchScreenModel';\r\nimport {\r\n FilterByAlternativeEntitiesModel,\r\n ISearchRequestModel,\r\n SearchStore\r\n} from 'Core/Screens/SearchScreen/Stores/SearchStore';\r\nimport {RecordTypes, SearchByMainRelationTypes} from 'Core/Screens/SearchScreen/Enums/Enums';\r\nimport {Paginator} from 'Core/Components/Paginator/Paginator';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {Metronic} from 'metronic';\r\nimport {UserVarsRecordModel} from 'Core/Screens/SearchScreen/Models/UserVarsRecordModel';\r\nimport {EVENTS as PAGINATOR_EVENTS} from 'Core/Components/Paginator/Constants';\r\n\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {SearchGroupItemModel, SearchModeModel} from 'Core/Screens/SearchScreen/Models/SearchModeModel';\r\nimport {SearchFieldModel} from 'Core/Screens/SearchScreen/Models/SearchFieldModel';\r\nimport {SearchByRelationModel} from 'Core/Screens/SearchScreen/Models/SearchByRelationModel';\r\nimport {Icon} from 'Core/Icon/Icon';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {\r\n LifeStatusGroupIndexes,\r\n MappedSearchGroups,\r\n SearchGroups,\r\n SimpleFilterGroupsSet\r\n} from 'Core/Enums/SearchGroups';\r\nimport {RECORD_SECURITY_WORDS} from 'Core/Constants/RecordSecurityWords';\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {OrderFieldModel} from 'Core/Screens/SearchScreen/Models/OrderFieldModel';\r\nimport {SYSTEM_TABLE_NAMES, TABLE_TYPES} from \"Core/Constant\";\r\nimport {SearchResultGrid} from 'Core/Screens/SearchScreen/SearchResultGrid/SearchResultGrid';\r\nimport {SearchResultRow} from \"Core/Screens/SearchScreen/SearchResultGrid/SearchResultRow\";\r\nimport {EntityModel} from \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Models/EntityModel\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {BarcodeScanner} from 'Core/Components/BarcodeScanner/BarcodeScanner';\r\n\r\nimport {EVENTS as SEARCH_SCREEN_EVENTS} from \"./Events\";\r\nimport {SortOrder} from \"../../Controls/Grid/BaseGrid/GridColumn/BaseColumn\";\r\nimport {P} from \"../../Common/Promise\";\r\nimport {SearchResultRowModel} from './Models/SearchResultModel';\r\nimport {DeduplicationGrid} from \"../../ProfilePage/Deduplication/DeduplicationEditor/DeduplicationGrid\";\r\nimport {Actions, DeduplicationStore} from \"Core/ProfilePage/Deduplication/Stores/DeduplicationStore\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {DeduplicationCell} from \"Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationCell\";\r\nimport {TABLE_SECURITY_WORDS} from \"Core/Constants/TableSecurityWords\";\r\nimport EDIT = TABLE_SECURITY_WORDS.EDIT;\r\nimport DELETE = TABLE_SECURITY_WORDS.DELETE;\r\nimport { IDynamicFieldData } from 'Core/Common/Stores/RecordStore';\r\nimport { IConditionValueDto } from 'Core/Common/Interfaces/IConditionValueDto';\r\n\r\n// Templates\r\nimport SearchScreenTemplate from 'Core/Screens/SearchScreen/Templates/SearchScreen.html';\r\nimport AlternativeIconTemplate from 'Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate.html';\r\nimport SearchIconTemplate from 'Core/Screens/SearchScreen/Templates/IconTemplate.html';\r\nko.templates['Core/Screens/SearchScreen/Templates/SearchScreen'] = SearchScreenTemplate;\r\nko.templates['Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate'] = AlternativeIconTemplate;\r\nko.templates['Core/Screens/SearchScreen/Templates/IconTemplate'] = SearchIconTemplate;\r\n\r\ninterface IRecordType {\r\n Value: RecordTypes;\r\n Title: string;\r\n IsEnabled: boolean;\r\n}\r\n\r\ninterface IDuplicatesType {\r\n Title: string;\r\n IsDisabled: boolean;\r\n}\r\n\r\ninterface IAlternativeSubjectsType {\r\n Title: string;\r\n IsDisabled: boolean;\r\n IsChosen?: boolean;\r\n}\r\n\r\nconst FILTER_BY_RELATION_CLASSES = {\r\n OFF_FILTER_BY_RELATIONS: 'filter-by-relations-btn off-filter-by-relations',\r\n BY_RELATIONS: 'filter-by-relations-btn by-relations',\r\n BY_MAIN_RELATIONS: 'filter-by-relations-btn by-main-relations',\r\n BY_CONDITION: 'filter-by-relations-btn by-condition',\r\n BY_LINKED_DOCUMENTS: 'filter-by-relations-btn by-linked-documents'\r\n}\r\n\r\n\r\nconst TOGGLE_CLASSES = {\r\n ON: 'fa-toggle-on',\r\n OFF: 'fa-toggle-off'\r\n}\r\n\r\ninterface ISearchGroup {\r\n Id: number,\r\n Name: string\r\n}\r\n\r\nexport interface ISelectedRecord {\r\n TypeId: number,\r\n TypeName: string,\r\n RecordId: number,\r\n Name: string,\r\n TableId: number\r\n}\r\n\r\nexport class SearchScreen extends Event {\r\n private _entityId: number;\r\n private _subjectEntityId: number;\r\n private _subjectTypeId: number;\r\n private _entityName: string;\r\n private _searchRegexp: any;\r\n private _sharing: boolean;\r\n\r\n private _fieldId: number;\r\n private _leftEntityId: number;\r\n private _rightEntityId: number;\r\n private _leftRecordId: number;\r\n private _rightRecordId: number;\r\n\r\n private _entityIcon: KnockoutObservable<Icon>;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _modal: Modal;\r\n private _searchTimer: any;\r\n private _model: SearchScreenModel;\r\n private _searchResult: KnockoutObservableArray<any>;\r\n private _searchResultMessage: KnockoutObservable<string>;\r\n private _nameFieldName: string;\r\n private _recent: Array<UserVarsRecordModel>;\r\n private _favorites: Array<UserVarsRecordModel>;\r\n private _recentAndFavoritesTabIsActive: boolean;\r\n private _closeAfterSelectingRecord: boolean;\r\n private _recentRecords: KnockoutObservable<boolean>;\r\n private _searchGroups: KnockoutObservableArray<ISearchGroup>;\r\n private _searchGroup: KnockoutObservable<number>;\r\n private _focusInput: KnockoutObservable<any>;\r\n private _recordTypes: KnockoutObservableArray<IRecordType>;\r\n private _recordType: KnockoutObservable<IRecordType>;\r\n private _paginator: Paginator;\r\n private _isFirstLoad: boolean;\r\n private _isModal: boolean;\r\n private _paginationInfo: KnockoutObservable<string>;\r\n private _el: HTMLElement;\r\n private _addButtonVisible: KnockoutObservable<boolean>;\r\n private _addButtonDisabled: KnockoutObservable<boolean>;\r\n private _isClick: KnockoutObservable<boolean>;\r\n private _isAddQueryButton: boolean;\r\n private _searchMode: KnockoutObservable<SearchModeModel>;\r\n private _selectedSearchMode: KnockoutObservable<SearchGroupItemModel>;\r\n private _searchLoad: boolean;\r\n private _adaptiveRecordsCount: number;\r\n private _orderFields: Array<OrderFieldModel>;\r\n private _labels = LABELS;\r\n private _controlId: number;\r\n private _altEntities: KnockoutObservableArray<any>;\r\n public SelectedAltEntityId: number;\r\n private _isSimpleLifeStatus: KnockoutObservable<boolean>;\r\n private _enableFilter: KnockoutObservable<boolean>;\r\n private _showConditionToggle: KnockoutObservable<boolean>;\r\n private _isBaseEntity: KnockoutObservable<boolean>;\r\n private _screenData?: Array<IDynamicFieldData>;\r\n private _subjectRecordId: number;\r\n private _searchByMainRelationType: KnockoutObservable<SearchByMainRelationTypes>;\r\n private _filterByMainRelationTooltip: KnockoutComputed<string>;\r\n private _filterByMainRelationClass: KnockoutComputed<string>;\r\n private _searchByTypes: Array<number>;\r\n private _searchByRelations: Array<SearchByRelationModel>;\r\n private _isBackLinkEnabled: KnockoutObservable<boolean>\r\n private _entityType: string;\r\n private _searchFieldId: number;\r\n private _typeToggleClass: KnockoutComputed<string>;\r\n private _searchResultGrid: KnockoutObservable<SearchResultGrid>;\r\n private _plannerLevelRecordId: number;\r\n private _plannerLevelEntityId: number;\r\n private _multiSelectMode: boolean;\r\n private _selectedRecords: KnockoutObservableArray<number>;\r\n private _hasSelectedRecords: KnockoutComputed<boolean>;\r\n private _hasBarcodeFields: KnockoutObservable<boolean>;\r\n private _enableBulkScan: boolean;\r\n private _isBulkBarcodeScanning: boolean;\r\n\r\n private _duplicatesToggleClass: KnockoutComputed<string>;\r\n private _duplicatesTypes: KnockoutObservableArray<IDuplicatesType>;\r\n private _duplicatesType: KnockoutObservable<IDuplicatesType>;\r\n private _hasTwoSelectedRecords: KnockoutComputed<boolean>;\r\n private _duplicatesVisible: KnockoutObservable<boolean>;\r\n private _selectedDuplicatesRecords: KnockoutObservableArray<ISelectedRecord>;\r\n private _querySubjectId: number;\r\n private _hasLinkingCondition: boolean;\r\n private _showSearchByLinkedDocuments: boolean;\r\n private _isParentLinking: boolean;\r\n private _relatedTableId: number;\r\n private _relatedTablePk: number;\r\n private _relatedTableFieldId: number;\r\n private _alternativeSubjectsTypes: KnockoutObservableArray<IAlternativeSubjectsType>;\r\n private _alternativeSubjectsToggleClass: KnockoutComputed<string>;\r\n private _alternativeSubjectsType: KnockoutObservable<IAlternativeSubjectsType>;\r\n\r\n private _recentRecordsSubscription: KnockoutSubscription;\r\n private _recordTypeSubscription: KnockoutSubscription;\r\n private _duplicatesTypeSubscription: KnockoutSubscription;\r\n private _selectedSearchModeSubscription: KnockoutSubscription;\r\n private _searchGroupSubscription: KnockoutSubscription;\r\n private _enableFilterSubscription: KnockoutSubscription;\r\n private _searchByMainRelationTypeSubscription: KnockoutSubscription;\r\n private _kSeq: number;\r\n private _isMobile: boolean;\r\n private _showSearchToolbarIcons: KnockoutObservable<boolean>;\r\n private _searchAlternativeEntitiesShow: KnockoutObservable<boolean>;\r\n\r\n private _grid: DeduplicationGrid; \r\n private _dropDownFilterState: boolean;\r\n private _conditionValues: Array<IConditionValueDto>;\r\n\r\n constructor(params: ISearchScreenParam) {\r\n super();\r\n if (!params.EntityId && !params.EntityName) {\r\n throw new Error('EntityId or EntityName should be specified');\r\n }\r\n\r\n this._dropDownFilterState = params.DropDownFilterState; \r\n this._entityId = params.EntityId;\r\n this._entityName = params.EntityName;\r\n this._subjectEntityId = params.SubjectEntityId || null;\r\n this._subjectTypeId = params.SubjectTypeId || null;\r\n this._subjectRecordId = params.SubjectRecordId || null;\r\n this._sharing = params.Sharing || false;\r\n this._controlId = params.ControlId;\r\n this._fieldId = params.FieldId;\r\n this._leftEntityId = params.LeftEntityId;\r\n this._rightEntityId = params.RightEntityId;\r\n this._leftRecordId = params.LeftRecordId;\r\n this._rightRecordId = params.RightRecordId;\r\n this._screenData = params.ScreenData;\r\n this._model = new SearchScreenModel();\r\n this._searchResult = ko.observableArray([]);\r\n this._searchResultMessage = ko.observable('');\r\n this._searchGroups = ko.observableArray([]);\r\n this._entityIcon = ko.observable(null);\r\n this._searchTerm = ko.observable(params.SearchTerm);\r\n this._focusInput = ko.observable(true);\r\n this._searchByTypes = params.SearchByTypes;\r\n this._paginator = new Paginator(1);\r\n this._isModal = false;\r\n this._searchRegexp = /[a-zA-Z0-9-_. ]/;\r\n this._conditionValues = params.ConditionValues;\r\n\r\n this._searchGroup = ko.observable(null);\r\n this._recent = Array<UserVarsRecordModel>(null);\r\n this._favorites = Array<UserVarsRecordModel>(null);\r\n this._recentAndFavoritesTabIsActive = params.RecentAndFavoritesActive;\r\n this._closeAfterSelectingRecord = params.CloseAfterSelectingRecord === undefined ? true : params.CloseAfterSelectingRecord;\r\n this._isFirstLoad = true;\r\n this._paginationInfo = ko.observable('');\r\n this._searchMode = ko.observable(new SearchModeModel());\r\n this._searchLoad = false;\r\n this._selectedSearchMode = ko.observable(null);\r\n this._addButtonVisible = ko.observable(params.ButtonAdd || params.ButtonAdd === undefined);\r\n this._addButtonDisabled = ko.observable(false);\r\n this._isClick = ko.observable(false);\r\n this._isAddQueryButton = params.IsAddQueryButton || false;\r\n this._adaptiveRecordsCount = 0;\r\n this._orderFields = [];\r\n this._isSimpleLifeStatus = ko.observable(false);\r\n this._enableFilter = ko.observable(true);\r\n this._showConditionToggle = ko.observable(params.ConditionToggler);\r\n this._isBaseEntity = ko.observable(true);\r\n this._searchByMainRelationType = params.SearchByMainRelationType\r\n ? ko.observable(params.SearchByMainRelationType)\r\n : ko.observable(SearchByMainRelationTypes.Off);\r\n this._searchByRelations = params.SearchByRelations;\r\n this._isBackLinkEnabled = ko.observable(true);\r\n this._entityType = params.EntityType;\r\n this._searchFieldId = params.SearchFieldId;\r\n this._altEntities = ko.observableArray([]);\r\n this._searchResultGrid = ko.observable(null);\r\n this._plannerLevelEntityId = params.PlannerLevelEntityId;\r\n this._plannerLevelRecordId = params.PlannerLevelRecordId;\r\n this._multiSelectMode = params.MultiSelectMode || false;\r\n this._selectedRecords = ko.observableArray(params.SelectedRecordIds);\r\n this._hasSelectedRecords = ko.computed(() => this._selectedRecords().length > 0);\r\n this._hasBarcodeFields = ko.observable();\r\n this._enableBulkScan = params.EnableBulkScan || false;\r\n this._querySubjectId = params.QuerySubjectId;\r\n this._hasLinkingCondition = params.HasLinkingCondition;\r\n this._showSearchByLinkedDocuments = params.ShowSearchByLinkedDocuments;\r\n this._isParentLinking = params.IsParentLinking || false;\r\n this._kSeq = params.KSeq;\r\n this._isMobile = MobileChecker.IsMobile();\r\n this._showSearchToolbarIcons = ko.observable(false);\r\n this._searchAlternativeEntitiesShow = ko.observable(false);\r\n\r\n this._filterByMainRelationClass = ko.computed(() => {\r\n switch (this._searchByMainRelationType()) {\r\n case SearchByMainRelationTypes.Off:\r\n return FILTER_BY_RELATION_CLASSES.OFF_FILTER_BY_RELATIONS;\r\n case SearchByMainRelationTypes.ByMainRelations:\r\n return FILTER_BY_RELATION_CLASSES.BY_MAIN_RELATIONS;\r\n case SearchByMainRelationTypes.ByRelations:\r\n return FILTER_BY_RELATION_CLASSES.BY_RELATIONS;\r\n case SearchByMainRelationTypes.ByConditions:\r\n return FILTER_BY_RELATION_CLASSES.BY_CONDITION;\r\n case SearchByMainRelationTypes.ByLinkedDocuments:\r\n return FILTER_BY_RELATION_CLASSES.BY_LINKED_DOCUMENTS;\r\n default:\r\n return FILTER_BY_RELATION_CLASSES.OFF_FILTER_BY_RELATIONS\r\n }\r\n });\r\n\r\n this._filterByMainRelationTooltip = ko.computed(() => {\r\n switch (this._searchByMainRelationType()) {\r\n case SearchByMainRelationTypes.Off:\r\n return this._labels.OFF_FILTER_BY_RELATIONS;\r\n case SearchByMainRelationTypes.ByMainRelations:\r\n return this._hasLinkingCondition ? this._labels.FILTER_BY_MAIN_RELATIONS2 : this._labels.FILTER_BY_MAIN_RELATIONS;\r\n case SearchByMainRelationTypes.ByRelations:\r\n return this._labels.FILTER_BY_RELATIONS;\r\n case SearchByMainRelationTypes.ByConditions:\r\n return this._labels.FILTER_BY_LINKING_CONDITIONS;\r\n case SearchByMainRelationTypes.ByLinkedDocuments:\r\n return this._labels.ONLY_LINKED_DOCUMENTS_ARE_SHOWN;\r\n default:\r\n return this._labels.OFF_FILTER_BY_RELATIONS;\r\n }\r\n });\r\n\r\n let isRootForFormDesigner = true;\r\n if (params.IsRootForFormDesigner) {\r\n isRootForFormDesigner = !params.IsRootForFormDesigner;\r\n }\r\n\r\n this._recordTypes = ko.observableArray([\r\n {Title: LABELS.ROOT, Value: RecordTypes.Root, IsEnabled: true},\r\n {Title: LABELS.ALL, Value: RecordTypes.All, IsEnabled: isRootForFormDesigner}]);\r\n\r\n this._recordType = ko.observable(_.last(_.filter(this._recordTypes(), recordType => recordType.IsEnabled)));\r\n\r\n this._typeToggleClass = ko.computed(() => {\r\n return this._recordType() && this._recordType().Value === RecordTypes.Root ? TOGGLE_CLASSES.ON : TOGGLE_CLASSES.OFF;\r\n });\r\n\r\n this._recentRecords = ko.observable(false);\r\n\r\n this._relatedTableId = params.RelatedTableId;\r\n this._relatedTablePk = params.RelatedTablePk;\r\n this._relatedTableFieldId = params.RelatedTableFieldId;\r\n\r\n this.InitDuplicatesMod();\r\n this._grid = new DeduplicationGrid();\r\n this._grid.On(EVENTS.SAVE_CHANGES, this, () => this.SaveChangesDeduplication());\r\n this.InitAlternativeSubjectsMod();\r\n }\r\n\r\n InitDuplicatesMod() {\r\n this._duplicatesVisible = ko.observable(false);\r\n\r\n this._duplicatesTypes = ko.observableArray([\r\n {Title: 'Off', IsDisabled: true},\r\n {Title: 'On', IsDisabled: false}]);\r\n\r\n this._duplicatesType = ko.observable(_.last(_.filter(this._duplicatesTypes(), duplicatesTypes => duplicatesTypes.IsDisabled)));\r\n\r\n this._duplicatesToggleClass = ko.computed(() => {\r\n return this._duplicatesType() && this._duplicatesType().IsDisabled ? TOGGLE_CLASSES.OFF : TOGGLE_CLASSES.ON;\r\n });\r\n\r\n this._selectedDuplicatesRecords = ko.observableArray([]);\r\n this._hasTwoSelectedRecords = ko.computed(() => {\r\n return this._selectedDuplicatesRecords().length == 2;\r\n });\r\n\r\n }\r\n\r\n private AlternativeSubjectsToggle() {\r\n if (this._alternativeSubjectsType().Title != 'On') {\r\n this._alternativeSubjectsType(_.find(this._alternativeSubjectsTypes(), (type) => {\r\n type.IsChosen = true;\r\n return type.Title === 'On'\r\n }));\r\n return;\r\n } else {\r\n this._alternativeSubjectsType(_.find(this._alternativeSubjectsTypes(), (type) => {\r\n type.IsChosen = true;\r\n return type.Title === 'Off'\r\n }));\r\n return;\r\n }\r\n }\r\n\r\n InitAlternativeSubjectsMod() {\r\n\r\n this._alternativeSubjectsTypes = ko.observableArray([\r\n {Title: 'Off', IsDisabled: true, IsChosen: false},\r\n {Title: 'On', IsDisabled: false, IsChosen: false}]);\r\n\r\n this._alternativeSubjectsType = ko.observable(_.last(_.filter(this._alternativeSubjectsTypes(), alternativeSubjectsType => alternativeSubjectsType.IsDisabled)));\r\n\r\n this._alternativeSubjectsToggleClass = ko.computed(() => {\r\n let classToggle = this._alternativeSubjectsType() && this._alternativeSubjectsType().IsDisabled ? TOGGLE_CLASSES.OFF : TOGGLE_CLASSES.ON;\r\n\r\n if (this._alternativeSubjectsType().Title === 'On') {\r\n this.SearchRecords();\r\n } else {\r\n if (this._altEntities().length > 1) {\r\n\r\n if (this._alternativeSubjectsType().IsChosen) {\r\n this.SearchRecords();\r\n }\r\n }\r\n }\r\n\r\n return classToggle;\r\n });\r\n\r\n }\r\n\r\n GetFilterByAlternativeEntities(): FilterByAlternativeEntitiesModel {\r\n const selectedMainEntityId = this._entityId;\r\n\r\n return {\r\n SubjectEntity: this._entityId,\r\n AlternativeEntities: _.filter(this._altEntities().map((altEntity) => {\r\n if (altEntity && altEntity.IsChecked && altEntity.IsChecked() && altEntity.EntityId !== selectedMainEntityId) {\r\n return altEntity.EntityId;\r\n } else {\r\n return null;\r\n }\r\n }), elem => {\r\n return elem !== null;\r\n })\r\n }\r\n }\r\n\r\n private ToggleType() {\r\n if (this._recordType().Value != RecordTypes.Root) {\r\n this._recordType(_.find(this._recordTypes(), (type) => {\r\n return type.Value === RecordTypes.Root\r\n }));\r\n return;\r\n }\r\n\r\n if (this._recordType().Value != RecordTypes.All) {\r\n this._recordType(_.find(this._recordTypes(), (type) => {\r\n return type.Value === RecordTypes.All\r\n }));\r\n return;\r\n }\r\n }\r\n\r\n private DuplicatesToggle() {\r\n if (this._duplicatesType().Title != 'On') {\r\n this._duplicatesType(_.find(this._duplicatesTypes(), (type) => {\r\n return type.Title === 'On'\r\n }));\r\n return;\r\n } else {\r\n this._duplicatesType(_.find(this._duplicatesTypes(), (type) => {\r\n return type.Title === 'Off'\r\n }));\r\n return;\r\n }\r\n }\r\n\r\n get Paginator(): Paginator {\r\n return this._paginator;\r\n }\r\n\r\n private HandleFilters() {\r\n this._recentRecordsSubscription = this._recentRecords.subscribe(() => {\r\n this.SearchRecords();\r\n });\r\n\r\n this._recordTypeSubscription = this._recordType.subscribe(() => {\r\n this._paginator.PageNumber = 1;\r\n this.SearchRecords();\r\n });\r\n\r\n this._duplicatesTypeSubscription = this._duplicatesType.subscribe(() => {\r\n this._selectedDuplicatesRecords([]);\r\n\r\n this.SearchRecords();\r\n });\r\n\r\n this._selectedSearchModeSubscription = this._selectedSearchMode.subscribe(() => {\r\n this.SearchRecords();\r\n });\r\n\r\n this._searchGroupSubscription = this._searchGroup.subscribe(() => {\r\n this.SearchRecords();\r\n });\r\n\r\n this._paginator.On(PAGINATOR_EVENTS.CHANGE, this, () => {\r\n this.SearchRecords();\r\n });\r\n\r\n this._enableFilterSubscription = this._enableFilter.subscribe(() => {\r\n this.SearchRecords();\r\n });\r\n\r\n this._searchByMainRelationTypeSubscription = this._searchByMainRelationType.subscribe((newValue) => {\r\n if (this._searchTimer) {\r\n clearTimeout(this._searchTimer);\r\n }\r\n this._searchTimer = setTimeout(() => {\r\n this.SearchRecords();\r\n }, 500);\r\n });\r\n\r\n }\r\n\r\n private UnHandleFilters() {\r\n this._recentRecordsSubscription.dispose();\r\n this._recordTypeSubscription.dispose();\r\n this._duplicatesTypeSubscription.dispose();\r\n this._selectedSearchModeSubscription.dispose();\r\n this._searchGroupSubscription.dispose();\r\n this._paginator.Off(PAGINATOR_EVENTS.CHANGE, this);\r\n this._enableFilterSubscription.dispose();\r\n this._searchByMainRelationTypeSubscription.dispose();\r\n }\r\n\r\n InputChange() {\r\n this._paginator.PageNumber = 1;\r\n this.SearchRecords();\r\n }\r\n\r\n GetFilterByRelationType(): SearchByMainRelationTypes {\r\n return this._searchByMainRelationType();\r\n }\r\n\r\n SetFilterByRelationType(filterType: SearchByMainRelationTypes) {\r\n this._searchByMainRelationType(filterType);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return `Core/Screens/SearchScreen/Templates/SearchScreen`;\r\n }\r\n\r\n GetAlternativeIconTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate';\r\n }\r\n\r\n GetSearchIconTemplateName(): string {\r\n return 'Core/Screens/SearchScreen/Templates/IconTemplate';\r\n }\r\n\r\n ToggleToolbarIcons(){\r\n this._showSearchToolbarIcons(!this._showSearchToolbarIcons());\r\n }\r\n\r\n ToggleAlternativeEntities(){\r\n this._searchAlternativeEntitiesShow(!this._searchAlternativeEntitiesShow());\r\n }\r\n\r\n Render(options: any = null, isUseGlobal: boolean = true): void {\r\n let self = this;\r\n\r\n let mobileOptions = this._isMobile ? {\r\n minWidth: '100%',\r\n width: '100%',\r\n height: '100%',\r\n } : {};\r\n\r\n let defaultOptions = {\r\n addClass: 'search-modal-container showScrollModal',\r\n blockScroll: true,\r\n ...mobileOptions\r\n };\r\n\r\n this._modal = new Modal(_.extend(defaultOptions, options), this._isMobile ? false : isUseGlobal);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._isModal = true;\r\n this._modal.On('CLOSE', this, (eventArgs: any) => {\r\n $(window).off('keydown');\r\n self.GatherSettings();\r\n });\r\n }\r\n\r\n Close(): void {\r\n if (this._modal) {\r\n $(window).off('keydown');\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n Show(options: any = null, isUseGlobal: boolean = true, alternativeEntities: Array<EntityModel> = []): P.Promise<SearchScreenModel> {\r\n return this.LoadSearchScreenModel({showParams: {options, isUseGlobal, alternativeEntities}});\r\n }\r\n\r\n LoadSearchScreenModel({showParams, altEntityId}: {\r\n showParams?: { options: any; isUseGlobal: boolean; alternativeEntities: Array<EntityModel> };\r\n altEntityId?: number\r\n }) {\r\n BlockUI.Block();\r\n let params = altEntityId ? {EntityId: altEntityId} : {\r\n EntityId: this._entityId,\r\n TableName: this._entityName,\r\n ControlId: this._controlId,\r\n Sharing: this._sharing,\r\n FieldId: this._fieldId,\r\n LeftEntityId: this._leftEntityId,\r\n RightEntityId: this._rightEntityId,\r\n LeftRecordId: this._leftRecordId,\r\n RightRecordId: this._rightRecordId\r\n };\r\n let getSearchScreenPromise = SearchScreenStore.GetScreenModel(params)\r\n\r\n getSearchScreenPromise\r\n .then(model => {\r\n this._entityId = model.EntityId;\r\n this._model = model;\r\n const baseEntity = {\r\n EntityId: model.EntityId,\r\n EntityName: model.EntityName,\r\n EntityTranslatedName: model.EntityTranslatedName,\r\n Icon: model.IconModel,\r\n BaseEntity: true\r\n };\r\n\r\n if (baseEntity.EntityName === 'SYS_HISTORY')\r\n {\r\n this._addButtonVisible(false);\r\n }\r\n\r\n this._duplicatesVisible((EDIT & model.TableSecurityRights) === EDIT &&\r\n (DELETE & model.TableSecurityRights) === DELETE && model.AllowDeduplicationMode);\r\n\r\n if (showParams) {\r\n this._altEntities([baseEntity, ..._.extend(model.AlternativeEntities, {}), ...showParams.alternativeEntities]);\r\n const controlAltEntities = UserVarsManager.Instance.GetRecordAltEntities(this._controlId);\r\n\r\n this._altEntities().map((altEntity) => {\r\n if (!altEntity) return;\r\n if (controlAltEntities && controlAltEntities.altEntities) {\r\n if (controlAltEntities.altEntities.indexOf(altEntity.EntityId) !== -1) {\r\n altEntity.IsChecked = ko.observable(true);\r\n } else {\r\n altEntity.IsChecked = ko.observable(false);\r\n }\r\n } else {\r\n altEntity.IsChecked = ko.observable(true);\r\n }\r\n altEntity.RecordsCount = ko.observable('N/A');\r\n altEntity.IsChecked && altEntity.IsChecked.subscribe((value) => {\r\n if (!value) {\r\n altEntity.RecordsCount('N/A');\r\n }\r\n\r\n const altEntitiesData = [];\r\n\r\n this._altEntities().map((altEntity) => {\r\n altEntity.IsChecked() && altEntitiesData.push(altEntity.EntityId);\r\n });\r\n UserVarsManager.Instance.SetRecordAltEntities(this._controlId, altEntitiesData);\r\n\r\n\r\n });\r\n if (altEntity.BaseEntity) {\r\n altEntity.IsSelected = ko.observable(true);\r\n } else {\r\n altEntity.IsSelected = ko.observable(false);\r\n altEntity.BaseEntity = false;\r\n }\r\n\r\n });\r\n }\r\n this.GenerateActions();\r\n this.AddSearchGroups(model.SearchGroups);\r\n this.AddSearchFields(model.SearchFields);\r\n this._entityIcon(new Icon(model.IconModel));\r\n\r\n const isBackLinkEnabled = this._model.EntityTypeName == TABLE_TYPES.Entity && this._model.EntityName !== SYSTEM_TABLE_NAMES.SYS_USERS;\r\n this._isBackLinkEnabled(isBackLinkEnabled);\r\n if (!isBackLinkEnabled) {\r\n this._searchByMainRelationType(SearchByMainRelationTypes.Off);\r\n }\r\n\r\n this._hasBarcodeFields(model.HasBarcodeFields);\r\n\r\n if ((!this._model.SearchFields || this._model.SearchFields.length === 0) && this._entityType != TABLE_TYPES.Sub) {\r\n new Notifier().Warning(NOTIFICATIONS.NO_SEARCHABLE_FIELDS);\r\n } else {\r\n this.RestoreSearchSettings();\r\n\r\n this.CheckAddQueryButton()\r\n .then((shouldOpenScreen: boolean) => {\r\n if (shouldOpenScreen) {\r\n if (showParams) {\r\n this.Render(showParams.options, showParams.isUseGlobal);\r\n }\r\n this.SearchRecords();\r\n this.HandleFilters();\r\n } else {\r\n new Notifier().Warning(NOTIFICATIONS.NO_QUERIES_FOUND);\r\n }\r\n })\r\n .fail(error => {\r\n if (error.value) {\r\n new Notifier($(this._el)).Warning(error.value);\r\n } else {\r\n new Notifier($(this._el)).Failed(error.message);\r\n }\r\n });\r\n }\r\n }).always(() => BlockUI.Unblock());\r\n\r\n return getSearchScreenPromise;\r\n }\r\n\r\n private AddSearchFields(searchFields: Array<SearchFieldModel>) {\r\n this._searchMode().AddSearchFields(...searchFields);\r\n }\r\n\r\n private SetOptionClass(option, item) {\r\n if (this.IsGroupItem(item)) {\r\n $(option).addClass('group-option');\r\n }\r\n }\r\n\r\n RestoreSearchSettings() {\r\n var searchParams = UserVarsManager.Instance.GetSearchParams(this._entityId);\r\n\r\n if (searchParams) {\r\n const searchGroupValue = searchParams.lifeStatusId || SearchGroups[SearchGroups.Active];\r\n\r\n this._searchGroup(searchGroupValue);\r\n const recentRecords = searchParams.recentRecords;\r\n const recordTypeValue = searchParams.recordTypeValue;\r\n const searchModeValue = searchParams.searchModeValue;\r\n let searchByRelations = searchParams.searchByRelationsValue;\r\n\r\n if (this._hasLinkingCondition) {\r\n searchByRelations = SearchByMainRelationTypes.ByConditions;\r\n }\r\n else if (this._showSearchByLinkedDocuments) {\r\n searchByRelations = SearchByMainRelationTypes.ByLinkedDocuments;\r\n }\r\n else if (searchByRelations === SearchByMainRelationTypes.ByLinkedDocuments) {\r\n searchByRelations = SearchByMainRelationTypes.Off;\r\n }\r\n\r\n if (this._subjectEntityId && searchByRelations && this._isBackLinkEnabled()) {\r\n this._searchByMainRelationType(searchByRelations);\r\n }\r\n\r\n let filterState = this._dropDownFilterState != null ? this._dropDownFilterState : searchParams.enableFiltering;\r\n\r\n this._enableFilter(filterState);\r\n\r\n if (recentRecords === true) {\r\n this._recentRecords(recentRecords);\r\n } else {\r\n this._recentRecords(false);\r\n }\r\n\r\n let currentRecordType = _.find(this._recordTypes(), recordType => {\r\n return recordType.Value === recordTypeValue;\r\n });\r\n\r\n if (currentRecordType && this._recordType() && this._recordType().Value != currentRecordType.Value) {\r\n this._recordType(currentRecordType);\r\n }\r\n\r\n if (searchModeValue) {\r\n this._selectedSearchMode(this._searchMode().GetSearchItem(searchModeValue.Name) || this._searchMode().GetDefaultMode());\r\n } else {\r\n this._selectedSearchMode(this._searchMode().GetDefaultMode());\r\n }\r\n } else {\r\n this._selectedSearchMode(this._searchMode().GetDefaultMode());\r\n }\r\n }\r\n\r\n get Icon(): KnockoutObservable<Icon> {\r\n return this._entityIcon;\r\n }\r\n\r\n get SearchTerm(): KnockoutObservable<string> {\r\n return this._searchTerm;\r\n }\r\n\r\n get Recent(): Array<UserVarsRecordModel> {\r\n this._recent = this._model.GroupNameToRecords.recent;\r\n return this._recent;\r\n }\r\n\r\n get Favorites(): Array<UserVarsRecordModel> {\r\n this._favorites = this._model.GroupNameToRecords.favorites;\r\n return this._favorites;\r\n }\r\n\r\n get RecentRecords(): KnockoutObservable<boolean> {\r\n this._paginator.PageNumber = 1;\r\n return this._recentRecords;\r\n }\r\n\r\n SetRecentRecords(): void {\r\n this._recentRecords(!this._recentRecords());\r\n }\r\n\r\n ToggleEnableFilterValue(): void {\r\n this._enableFilter(!this._enableFilter());\r\n }\r\n\r\n get HasRecent(): boolean {\r\n return this.Recent.length > 0;\r\n }\r\n\r\n get HasFavorites(): boolean {\r\n return this.Favorites.length > 0;\r\n }\r\n\r\n get RecordTypes(): KnockoutObservableArray<IRecordType> {\r\n return this._recordTypes;\r\n }\r\n\r\n get RecordType(): KnockoutObservable<IRecordType> {\r\n return this._recordType;\r\n }\r\n\r\n EnterKey() {\r\n this._paginator.PageNumber = 1;\r\n this.SearchRecords();\r\n this._isClick(true);\r\n }\r\n\r\n SearchClick() {\r\n this._isClick(true);\r\n this._paginator.PageNumber = 1;\r\n this.SearchRecords();\r\n }\r\n\r\n OpenBarcodeScanner() {\r\n const barcodeScanner = new BarcodeScanner();\r\n\r\n barcodeScanner.On('SUBMIT', this, eventArgs => {\r\n this._searchTerm(eventArgs.data.value);\r\n this._selectedRecords([]);\r\n this._isClick(true);\r\n this._paginator.PageNumber = 1;\r\n this.SearchRecords(undefined, true);\r\n });\r\n\r\n barcodeScanner.Show();\r\n }\r\n\r\n OpenBarcodeScannerForBulkScan() {\r\n const barcodeScanner = new BarcodeScanner();\r\n\r\n let value;\r\n\r\n barcodeScanner.On('SUBMIT', this, eventArgs => {\r\n this._searchTerm(eventArgs.data.value);\r\n value = eventArgs.data.value;\r\n this._selectedRecords([]);\r\n this._isClick(true);\r\n this._paginator.PageNumber = 1;\r\n this.SearchRecords(undefined, true);\r\n });\r\n\r\n barcodeScanner.On('CLOSE', this, eventArgs => {\r\n if (!value) {\r\n this.StopBulkBarcodeScan();\r\n }\r\n });\r\n\r\n barcodeScanner.Show();\r\n }\r\n\r\n StartBulkBarcodeScan() {\r\n this._isBulkBarcodeScanning = true;\r\n\r\n this.Trigger('BULK_BARCODE_SCAN_STARTED');\r\n }\r\n\r\n StopBulkBarcodeScan() {\r\n this._isBulkBarcodeScanning = false;\r\n\r\n this.Trigger('BULK_BARCODE_SCAN_STOPPED');\r\n }\r\n\r\n DivideRecordsPerPage() {\r\n const popupHeight_Global = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.POPUP_HEIGHT_IN_PERCENT));\r\n const isSearchPagination: boolean = !!this._paginator.PageNumber;\r\n\r\n const paginationDetail_navigationBtn_height = 81,\r\n multiSelectBtnHeight = this._multiSelectMode ? 35 : 0,\r\n searchPaginationBoxHeight = paginationDetail_navigationBtn_height + multiSelectBtnHeight;\r\n\r\n const searchToolbarHeight: number = this._isMobile ? 40 : 0,\r\n paddingJBox: number = this._isMobile ? 15*2 : 0,\r\n boxShadowWrapperPadding: number = this._isMobile ? 10*2 : 0,\r\n searchResultMargin: number = this._isMobile ? 10*2 : 0,\r\n recalculationMarginPadding: number = paddingJBox + boxShadowWrapperPadding + searchResultMargin;\r\n\r\n const staticSpace = (this._isMobile && isSearchPagination) ? searchPaginationBoxHeight : 160;\r\n const rowHeight = 45;\r\n const calculatedAltSpace: any = $('.alternativeEntitiesContainer').outerHeight(true);\r\n const reservedSpace = !this._isMobile && calculatedAltSpace && calculatedAltSpace + staticSpace || staticSpace;\r\n const windowHeight = window.innerHeight; //get window height\r\n\r\n let popupHeight: number = this._isMobile ? windowHeight : windowHeight * (popupHeight_Global / 100); //get popup height\r\n const heightForRows = popupHeight - parseInt(reservedSpace) - searchToolbarHeight - recalculationMarginPadding; //get height for rows inside the popup\r\n const recordsPerPage = (heightForRows - rowHeight) / rowHeight; //get approximate amount of rows\r\n\r\n if (recordsPerPage < 5) { //can't be less than 5\r\n this._adaptiveRecordsCount = 5;\r\n } else {\r\n this._adaptiveRecordsCount = Math.floor(recordsPerPage);\r\n }\r\n this._paginator.RecordsPerPage = this._adaptiveRecordsCount;\r\n }\r\n\r\n SearchByAltEntity(altEntity) {\r\n this._selectedRecords([]);\r\n if (altEntity.IsSelected() !== true) {\r\n this._altEntities().map(entity => entity.IsSelected(false));\r\n altEntity.IsSelected(true);\r\n if (altEntity.BaseEntity) {\r\n this.SelectedAltEntityId = null;\r\n } else {\r\n this.SelectedAltEntityId = altEntity.EntityId;\r\n }\r\n this.RefreshScreenAfterAltEntityChange(altEntity.EntityId);\r\n\r\n }\r\n this._isBaseEntity(this._entityId === altEntity.EntityId);\r\n }\r\n\r\n RefreshScreenAfterAltEntityChange(altEntityId: number) {\r\n this.UnHandleFilters();\r\n\r\n this._searchMode(new SearchModeModel());\r\n this._recordType(this._recordTypes()[0]);\r\n this._orderFields = [];\r\n this._searchByMainRelationType(SearchByMainRelationTypes.Off);\r\n this._paginator.PageNumber = 1;\r\n\r\n this.LoadSearchScreenModel({altEntityId});\r\n }\r\n\r\n SearchRecords(entityId?: number, isFromBarcode?: boolean) {\r\n var self = this;\r\n let element = document.getElementById('searchScreen');\r\n\r\n BlockUI.Block({\r\n Target: element\r\n });\r\n\r\n const selectedMainEntityId = entityId || (this.SelectedAltEntityId || this._entityId);\r\n var requestModel = this.GetSearchRequestModel(entityId);\r\n\r\n SearchStore.Search(requestModel)\r\n .then(result => {\r\n if (result.RecordsCount == 0) {\r\n this.Trigger('RECORDS_NOT_FOUND');\r\n }\r\n\r\n result.AlternativeSearchList && result.AlternativeSearchList.map((altEntity) => {\r\n const selectedEntity = _.find(this._altEntities(), (item) => {\r\n return item.EntityId === altEntity.EntityId;\r\n })\r\n\r\n selectedEntity && selectedEntity.RecordsCount(altEntity.RecordsCount);\r\n });\r\n\r\n let baseEntity = _.find(this._altEntities(), (item) => {\r\n return item.EntityId === selectedMainEntityId\r\n });\r\n if (baseEntity) {\r\n baseEntity.RecordsCount(result.RecordsCount);\r\n }\r\n\r\n let grid = new SearchResultGrid(\r\n result,\r\n this._selectedRecords,\r\n requestModel,\r\n this._recordType().Value === RecordTypes.Root,\r\n this._multiSelectMode && this._isBaseEntity(),\r\n this._duplicatesType().Title === 'On',\r\n this._selectedDuplicatesRecords);\r\n\r\n grid.On(SEARCH_SCREEN_EVENTS.SELECT_RECORD, this, (eventArgs) => {\r\n this.SelectRecord(eventArgs.data.Row, eventArgs.data.IsSelected, false, eventArgs.data.RowClick)\r\n });\r\n\r\n grid.On(SEARCH_SCREEN_EVENTS.DUPLICATES_RECORD_SELECTED, this, (eventArgs) => {\r\n this.SelectDuplicatesRecord(eventArgs.data.Row, eventArgs.data.IsDuplicatesSelected);\r\n });\r\n\r\n grid.On(SEARCH_SCREEN_EVENTS.SORT, this, (eventArgs) => {\r\n this._orderFields = eventArgs.data.OrderFields;\r\n this.SearchRecords();\r\n });\r\n\r\n\r\n _.each(result.SearchFields, (column) => {\r\n if (this._orderFields[0] && this._orderFields[0].Id === column.Id) {\r\n column.SortDirection = Number(this._orderFields[0] && this._orderFields[0].Order || SortOrder.Asc);\r\n } else {\r\n column.SortDirection = Number(SortOrder.Both);\r\n }\r\n\r\n column.SortOrder = ko.observable(column.SortDirection);\r\n\r\n column.SortOrderClassName = ko.computed({\r\n owner: this,\r\n read: () => {\r\n if (!column.Id) {\r\n return 'sort-null';\r\n }\r\n return `sort-${SortOrder[column.SortOrder()].toLowerCase()}`;\r\n }\r\n });\r\n\r\n column.Sort = () => {\r\n if (!column.Id) {\r\n return;\r\n }\r\n switch (SortOrder[column.SortOrder()]) {\r\n case 'Asc':\r\n column.SortDirection = SortOrder.Desc;\r\n break;\r\n case 'Desc':\r\n column.SortDirection = SortOrder.Both;\r\n break;\r\n case 'Both':\r\n column.SortDirection = SortOrder.Asc;\r\n break;\r\n }\r\n column.SortOrder(column.SortDirection);\r\n\r\n };\r\n\r\n column.SortOrder.subscribe((order) => {\r\n this._orderFields = [{\r\n Id: column.Id,\r\n Order: order\r\n }];\r\n\r\n this.SearchRecords();\r\n });\r\n });\r\n\r\n this._searchResultGrid(grid);\r\n this._searchResultGrid().SelectRecords(this._selectedRecords());\r\n\r\n this._searchResult(result.Rows);\r\n this._nameFieldName = result.NameField;\r\n this._paginator.TotalRecords = result.RecordsCount;\r\n this.UpdatePaginationInfo();\r\n $(window).trigger('resize');\r\n if (self._isClick()) {\r\n $(element).find('.search-table-row:first-child').focus();\r\n self._isClick(false);\r\n }\r\n\r\n if (isFromBarcode) {\r\n if (result.Rows.length === 1) {\r\n this.SelectRecord(result.Rows[0], false, isFromBarcode);\r\n } else if (result.Rows.length === 0) {\r\n this.StopBulkBarcodeScan();\r\n } else {\r\n const clickHandler = (event: MouseEvent) => {\r\n document.removeEventListener('click', clickHandler);\r\n\r\n const resultTables = element.querySelectorAll('table');\r\n\r\n // check on click outside of tables with search results\r\n if (![...resultTables].some(table => event.target instanceof Node && table.contains(event.target))) {\r\n this.StopBulkBarcodeScan();\r\n }\r\n };\r\n\r\n document.addEventListener('click', clickHandler);\r\n }\r\n }\r\n }).fail(error => {\r\n if (error.value) {\r\n new Notifier($(this._el)).Warning(error.value);\r\n } else {\r\n new Notifier($(this._el)).Failed(error.message);\r\n }\r\n })\r\n .always(() => {\r\n this.UnBlockSearchScreen();\r\n });\r\n\r\n this._isFirstLoad = false;\r\n }\r\n\r\n CheckAddQueryButton(): P.Promise<boolean> {\r\n const deferred = P.defer<boolean>();\r\n\r\n if (!this._isAddQueryButton) {\r\n deferred.resolve(true);\r\n return deferred.promise();\r\n }\r\n\r\n var requestModel = this.GetSearchRequestModel();\r\n\r\n SearchStore.Search(requestModel)\r\n .then(result => {\r\n let areQueriesFound = result.Rows.length !== 0;\r\n deferred.resolve(areQueriesFound);\r\n })\r\n .fail(error => deferred.reject(error));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n UpdatePaginationInfo() {\r\n if (this._searchResult() && this._searchResult().length === 0) {\r\n this._paginationInfo('');\r\n } else {\r\n let startRecordNumber = this._paginator.PageNumber * this._adaptiveRecordsCount - (this._adaptiveRecordsCount - 1);\r\n let endRecordNumber = startRecordNumber + (this._searchResult() && this._searchResult().length - 1);\r\n let label = LABELS.SEARCH_SCREEN_PAGINATION\r\n .replace('{StartRecordNumber}', startRecordNumber.toString())\r\n .replace('{EndRecordNumber}', endRecordNumber.toString())\r\n .replace('{TotalRecords}', this._paginator.TotalRecords.toString());\r\n\r\n this._paginationInfo(label);\r\n }\r\n }\r\n\r\n BlockSearchScreen() {\r\n var searchResultGrid = $(this._el).find('#searchScreen');\r\n Metronic.blockUI({target: searchResultGrid});\r\n }\r\n\r\n UnBlockSearchScreen() {\r\n BlockUI.Unblock(document.getElementById('searchScreen'));\r\n if (!(this._searchResult() && this._searchResult().length)) {\r\n this._searchResultMessage(this._labels.NO_RECORDS_FOUND);\r\n }\r\n }\r\n\r\n SelectRecord(selectedRow: SearchResultRowModel, isSelected: boolean, isFromBarcode: boolean, rowClick?: boolean) {\r\n let typeId = selectedRow.TypeId;\r\n let typeName = selectedRow.TypeName;\r\n let recordId = selectedRow.RecordId;\r\n let recordName = this.GetRowValue(selectedRow.RowValues, this._nameFieldName);\r\n\r\n BlockUI.Block();\r\n SearchStore.IsUserAllowedTo({\r\n TableId: this.SelectedAltEntityId || this._entityId,\r\n RecordId: recordId,\r\n SecurityWord: RECORD_SECURITY_WORDS.ReadOnly\r\n })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n })\r\n .then(isUserAllowed => {\r\n\r\n isUserAllowed = isUserAllowed || this._model.EntityName === 'SYS_USERS';\r\n\r\n if (isUserAllowed) {\r\n if (this.SelectedAltEntityId) {\r\n var entityId = this.SelectedAltEntityId;\r\n this.Trigger('ALT_ENTITY_RECORD_SELECTED', {\r\n EntityId: entityId,\r\n TypeId: typeId,\r\n TypeName: typeName,\r\n RecordId: recordId,\r\n Name: recordName,\r\n ShowInModal: false\r\n });\r\n } else {\r\n if (this._multiSelectMode && !isFromBarcode) {\r\n let existsRecord = this._selectedRecords.indexOf(recordId) > -1;\r\n\r\n if (isSelected) {\r\n if (!existsRecord) {\r\n this._selectedRecords.push(recordId);\r\n }\r\n } else {\r\n this._selectedRecords.splice(this._selectedRecords.indexOf(recordId), 1);\r\n }\r\n\r\n if ( rowClick ){\r\n this.OneSelect()\r\n }\r\n } else {\r\n this.Trigger('RECORD_SELECTED', {\r\n TypeId: typeId,\r\n TypeName: typeName,\r\n RecordId: recordId,\r\n Name: recordName,\r\n TableId: this._entityId,\r\n SearchTerm: this._searchTerm()\r\n });\r\n }\r\n }\r\n\r\n\r\n if (this._closeAfterSelectingRecord && !this._isBulkBarcodeScanning && !this._multiSelectMode) {\r\n this.Cancel();\r\n }\r\n } else {\r\n new Notifier().Warning(NOTIFICATIONS.RECORD_IS_SEARCH_ONLY);\r\n }\r\n }).fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n SelectDuplicatesRecord(selectedRow: SearchResultRowModel, isDuplicatesSelected: boolean) {\r\n let typeId = selectedRow.TypeId,\r\n typeName = selectedRow.TypeName,\r\n recordId = selectedRow.RecordId,\r\n recordName = this.GetRowValue(selectedRow.RowValues, this._nameFieldName);\r\n\r\n let existsDuplicatesRecord = _.find(this._selectedDuplicatesRecords(), (item) => {\r\n return item.RecordId === recordId && item.TypeId === typeId;\r\n });\r\n\r\n if (isDuplicatesSelected) {\r\n if (!existsDuplicatesRecord) {\r\n this._selectedDuplicatesRecords.push({\r\n TypeId: typeId,\r\n TypeName: typeName,\r\n RecordId: recordId,\r\n Name: recordName,\r\n TableId: this._entityId\r\n });\r\n }\r\n } else {\r\n if (!!existsDuplicatesRecord) {\r\n this._selectedDuplicatesRecords.splice(this._selectedDuplicatesRecords.indexOf(existsDuplicatesRecord), 1);\r\n }\r\n }\r\n\r\n }\r\n\r\n SelectRecordFromRecent(userVarsRecordModel: UserVarsRecordModel) {\r\n this.Trigger('RECORD_SELECTED', {\r\n TypeId: userVarsRecordModel.TypeId,\r\n RecordId: userVarsRecordModel.Id\r\n });\r\n\r\n if (this._closeAfterSelectingRecord && !this._isBulkBarcodeScanning) {\r\n $(window).off('keydown');\r\n this.Cancel();\r\n }\r\n }\r\n\r\n SelectRecordType(recordType: IRecordType) {\r\n this._recordType(recordType);\r\n }\r\n\r\n InfoSearchValueTooltip(): string {\r\n return this._labels.SPECIAL_CHARACTERS.replace(/\\\\n/g, '<br>');\r\n }\r\n\r\n NewRecord() {\r\n this.Trigger('NEW_RECORD');\r\n }\r\n\r\n Cancel() {\r\n if (this._modal) {\r\n this.GatherSettings();\r\n $(window).off('keydown');\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n GatherSettings() {\r\n const searchModeValue = this._selectedSearchMode();\r\n const searchGroupName = this._searchGroup();\r\n const recordTypeValue = this.RecordType().Value;\r\n const enablingFiltering = this._enableFilter();\r\n UserVarsManager.Instance.SetSearchParams(\r\n this.SelectedAltEntityId || this._entityId,\r\n this._recordType,\r\n searchModeValue,\r\n searchGroupName,\r\n recordTypeValue,\r\n null,\r\n null,\r\n enablingFiltering,\r\n this._searchByMainRelationType()\r\n );\r\n }\r\n\r\n ShowModal() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n this._el = el[0];\r\n\r\n this.ShowModal();\r\n this._focusInput(!this._isMobile);\r\n\r\n if (!this._isFirstLoad) {\r\n this.BlockSearchScreen();\r\n }\r\n }\r\n\r\n private GenerateActions() {\r\n this._addButtonDisabled(!this._model.AddingRecordAllowed);\r\n }\r\n\r\n private AddSearchGroups(searchGroups: Array<SearchGroups>) {\r\n const isSimpleLifeStatus = searchGroups.every((group, index) => {\r\n return group === SimpleFilterGroupsSet[index]\r\n });\r\n\r\n this._isSimpleLifeStatus(isSimpleLifeStatus);\r\n\r\n !this._isSimpleLifeStatus() && this.SortSearchGroups(searchGroups);\r\n\r\n const searchGroupsMapped = searchGroups.map((group) => {\r\n\r\n if (group === SearchGroups.All) {\r\n return {\r\n Name: LABELS.ALL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Active) {\r\n return {\r\n Name: LABELS.ACTIVE_LABEL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Archive) {\r\n return {\r\n Name: LABELS.ARCHIVE_LABEL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Example) {\r\n return {\r\n Name: LABELS.MAKE_EXAMPLE,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Planned) {\r\n return {\r\n Name: LABELS.RLANNED_LABEL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Acquired) {\r\n return {\r\n Name: LABELS.ACQUIRED_LABEL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Maintained) {\r\n return {\r\n Name: LABELS.MAINTAINED_LABEL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Operational) {\r\n return {\r\n Name: LABELS.OPERATIONAL_LABEL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Retired) {\r\n return {\r\n Name: LABELS.RETIRED_LABEL,\r\n Id: group\r\n }\r\n }\r\n });\r\n\r\n this._searchGroups(searchGroupsMapped);\r\n }\r\n\r\n private IsGroupItem(dropdownItem: ISearchGroup): boolean {\r\n return !this._isSimpleLifeStatus() &&\r\n !!LifeStatusGroupIndexes\r\n .filter((mainGroup) => {\r\n return SearchGroups[SearchGroups[mainGroup]] === dropdownItem.Id;\r\n }).length;\r\n }\r\n\r\n private SortSearchGroups(searchGroupsIndexes: number[]) {\r\n searchGroupsIndexes.sort((ind, nextInd) => {\r\n return MappedSearchGroups[SearchGroups[ind]] - MappedSearchGroups[SearchGroups[nextInd]];\r\n });\r\n }\r\n\r\n private SearchByMainRelation() {\r\n if (this._searchByMainRelationType() === SearchByMainRelationTypes.Off) {\r\n this._searchByMainRelationType(SearchByMainRelationTypes.ByRelations);\r\n } else if (this._searchByMainRelationType() === SearchByMainRelationTypes.ByRelations) {\r\n this._searchByMainRelationType(SearchByMainRelationTypes.ByMainRelations);\r\n } else if (this._searchByMainRelationType() === SearchByMainRelationTypes.ByMainRelations && this._hasLinkingCondition) {\r\n this._searchByMainRelationType(SearchByMainRelationTypes.ByConditions);\r\n } else if (this._showSearchByLinkedDocuments &&\r\n (this._searchByMainRelationType() === SearchByMainRelationTypes.ByMainRelations || this._searchByMainRelationType() === SearchByMainRelationTypes.ByConditions)) {\r\n this._searchByMainRelationType(SearchByMainRelationTypes.ByLinkedDocuments);\r\n } else {\r\n this._searchByMainRelationType(SearchByMainRelationTypes.Off);\r\n }\r\n }\r\n\r\n private FindSearchGroupName() {\r\n const id = this._searchGroup();\r\n const searchGroup = _.find(this._searchGroups(), group => group.Id === id);\r\n return searchGroup && searchGroup.Name;\r\n }\r\n\r\n private GetRowValue(rowValues: any, columnName: string) {\r\n const value = _.find(rowValues,\r\n (r: any) => {\r\n return r.Key === columnName\r\n });\r\n return value ? value.Value : null;\r\n }\r\n\r\n private OneSelect() {\r\n if (this._selectedRecords().length === 1) {\r\n this.Trigger('RECORDS_SELECTED', {Ids: this._selectedRecords(), TableId: this._entityId});\r\n this.Cancel();\r\n }\r\n }\r\n\r\n private Select() {\r\n if (this._selectedRecords().length > 0) {\r\n this.Trigger('RECORDS_SELECTED', {Ids: this._selectedRecords(), TableId: this._entityId});\r\n this.Cancel();\r\n }\r\n }\r\n\r\n private Merge() {\r\n if (this._selectedDuplicatesRecords && this._selectedDuplicatesRecords().length == 2) {\r\n this.InitLockWithRequestFromDeduplication(this._selectedDuplicatesRecords());\r\n }\r\n }\r\n\r\n private GetSearchRequestModel(entityId?: number) {\r\n this._searchResultMessage('');\r\n this.DivideRecordsPerPage();\r\n\r\n let searchByRelations;\r\n if (this._searchByMainRelationType() === SearchByMainRelationTypes.ByRelations) {\r\n searchByRelations = this._searchByRelations;\r\n } else if (this._searchByMainRelationType() === SearchByMainRelationTypes.ByMainRelations) {\r\n searchByRelations = _.filter(this._searchByRelations, item => item.IsMain);\r\n }\r\n\r\n const selectedMainEntityId = entityId || (this.SelectedAltEntityId || this._entityId);\r\n\r\n\r\n var requestModel: ISearchRequestModel = {\r\n ScreenData: this._screenData,\r\n EntityId: selectedMainEntityId,\r\n SearchType: this._selectedSearchMode().SearchType,\r\n SearchField: this._selectedSearchMode().DefaultName || this._selectedSearchMode().Name,\r\n SearchGroup: this._searchGroup(),\r\n SearchPhrase: this._searchTerm()?.trim(),\r\n RecentRecords: this._recentRecords(),\r\n RecordType: RecordTypes[this._recordType().Value],\r\n RecordsPerPage: this._paginator.RecordsPerPage,\r\n PageNumber: this._paginator.PageNumber,\r\n ParentEntityId: this._subjectEntityId,\r\n ParentTypeId: this._subjectTypeId,\r\n ParentRecordId: this._subjectRecordId,\r\n IsParentLinking: this._isParentLinking,\r\n OrderFields: this._orderFields,\r\n ControlId: this._controlId,\r\n FieldId: this._fieldId,\r\n LeftEntityId: this._leftEntityId,\r\n RightEntityId: this._rightEntityId,\r\n LeftRecordId: this._leftRecordId,\r\n RightRecordId: this._rightRecordId,\r\n KSeq: this._kSeq,\r\n EnableFilter: this._enableFilter(),\r\n SearchByMainRelationType: this._searchByMainRelationType(),\r\n SearchByRelations: searchByRelations,\r\n Sharing: this._sharing,\r\n SearchFieldId: this._searchFieldId,\r\n PlannerLevelEntityId: this._plannerLevelEntityId,\r\n PlannerLevelRecordId: this._plannerLevelRecordId,\r\n QuerySubjectId: this._querySubjectId,\r\n ConditionValues: this._conditionValues,\r\n AlternativeEntities: _.filter(this._altEntities().map((altEntity) => {\r\n if (altEntity && altEntity.IsChecked && altEntity.IsChecked() && altEntity.EntityId !== selectedMainEntityId) {\r\n return altEntity.EntityId;\r\n } else {\r\n return null;\r\n }\r\n }), elem => {\r\n return elem !== null;\r\n }),\r\n SearchByTypes: this._searchByTypes,\r\n RelatedTableFieldId: this._relatedTableFieldId,\r\n RelatedTableId: this._relatedTableId,\r\n RelatedTablePk: this._relatedTablePk\r\n };\r\n\r\n if (this._alternativeSubjectsType().Title === 'On') {\r\n requestModel.FilterByAlternativeEntities = this.GetFilterByAlternativeEntities();\r\n }\r\n\r\n return requestModel;\r\n }\r\n\r\n SaveChangesDeduplication() {\r\n const selectedRecords = this._selectedDuplicatesRecords();\r\n BlockUI.Block();\r\n\r\n const changesToSave = [];\r\n this._grid.Rows().map((row: any) => {\r\n if (row._disabled()) return;\r\n let fieldId = null;\r\n let actionType = null;\r\n row.Cells().map((cell: DeduplicationCell) => {\r\n if (cell._fieldId) {\r\n fieldId = cell._fieldId;\r\n }\r\n if (cell._selectionType()) {\r\n actionType = cell._selectionType();\r\n }\r\n });\r\n if (fieldId && actionType && actionType !== 'leftSide') {\r\n changesToSave.push({\r\n FieldId: fieldId,\r\n Action: Actions[actionType]\r\n });\r\n }\r\n });\r\n\r\n const params = {\r\n EntityId: this._entityId,\r\n LeftRecordId: selectedRecords[0].RecordId,\r\n RightRecordId: selectedRecords[1].RecordId,\r\n Changes: [...changesToSave]\r\n };\r\n\r\n DeduplicationStore.Deduplicate(params)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n this._selectedDuplicatesRecords.splice(0, 2);\r\n\r\n this.SearchRecords();\r\n this._grid.Cancel();\r\n\r\n }).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n InitLockWithRequestFromDeduplication(selectedDuplicatesRecords: Array<ISelectedRecord>) {\r\n const params = {\r\n EntityId: this._entityId,\r\n LeftRecordId: selectedDuplicatesRecords[0].RecordId,\r\n RightRecordId: selectedDuplicatesRecords[1].RecordId\r\n };\r\n DeduplicationStore.GetDeduplicationRecordModel(params)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n this._grid.RenderModal();\r\n BlockUI.Unblock(this._grid.GetModal().Wrapper);\r\n\r\n this._grid.SetPopUpDataFromSearch(\r\n result.ResultObject,\r\n this._model.EntityName,\r\n null,\r\n this._entityId\r\n );\r\n\r\n }).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n}\r\n","import * as _ from 'underscore'\r\n\r\nimport {URL} from 'Core/Common/Url'\r\nimport {Request, IRequestOptions} from 'Core/Common/Request'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {P} from 'Core/Common/Promise'\r\nimport {Deserialize} from 'libs/cerialize'\r\nimport {SearchScreenModel} from 'Core/Screens/SearchScreen/Models/SearchScreenModel'\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager'\r\n\r\nexport interface IGetSearchScreenRequestModel {\r\n\tEntityId?: number;\r\n\tTableName?: string;\r\n\tСontrolId?: number;\r\n\tSharing?: boolean;\r\n\t//,\r\n\t//GroupNameToRecords: any\r\n}\r\n\r\nexport class SearchScreenStore {\r\n\tstatic GetScreenModel(params: IGetSearchScreenRequestModel): P.Promise<SearchScreenModel> {\r\n\t\tvar deferredResult = P.defer<SearchScreenModel>();\r\n\t\tvar records = UserVarsManager.Instance.GetRecentAndFavourites(params.EntityId);\r\n\r\n\t\tparams[\"GroupNameToRecords\"] = [];\r\n\r\n\t\tparams[\"GroupNameToRecords\"].push({\r\n\t\t\tkey: \"recent\",\r\n\t\t\tvalue: records[\"recent\"]\r\n\t\t});\r\n\t\tparams[\"GroupNameToRecords\"].push({\r\n\t\t\tkey: \"favorites\",\r\n\t\t\tvalue: records[\"favorites\"]\r\n\t\t});\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/SearchApi/GetSearchScreenModel',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(this.Deserialize(data)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): SearchScreenModel {\r\n\t\treturn <SearchScreenModel>Deserialize(jsonObject, SearchScreenModel);\r\n\t}\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request'\r\nimport {P} from 'Core/Common/Promise'\r\nimport {SearchTypes, SearchByMainRelationTypes} from 'Core/Screens/SearchScreen/Enums/Enums'\r\nimport {SearchGroups} from \"Core/Enums/SearchGroups\";\r\nimport { OrderFieldModel } from \"Core/Screens/SearchScreen/Models/OrderFieldModel\";\r\nimport { SearchByRelationModel } from 'Core/Screens/SearchScreen/Models/SearchByRelationModel';\r\nimport {SearchResultModel} from 'Core/Screens/SearchScreen/Models/SearchResultModel';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport { IDynamicFieldData } from 'Core/Common/Stores/RecordStore';\r\nimport { IConditionValueDto } from 'Core/Common/Interfaces/IConditionValueDto';\r\n\r\nexport interface ISearchRequestModel {\r\n\tSearchType: SearchTypes;\r\n\tSearchField: string;\r\n\tEntityId: number;\r\n\tSearchGroup: SearchGroups;\r\n\tSearchPhrase: string;\r\n\tRecentRecords: boolean;\r\n\tRecordType: string;\r\n\tRecordsPerPage: number;\r\n\tPageNumber: number;\r\n\tParentEntityId?: number;\r\n\tParentTypeId?: number;\r\n\tParentRecordId?: number;\r\n\tIsParentLinking?: boolean;\r\n\tOrderFields?: Array<OrderFieldModel>;\r\n\tControlId?: number;\r\n\tFieldId?:number;\r\n\tLeftEntityId?:number;\r\n\tRightEntityId?:number;\r\n\tLeftRecordId?:number;\r\n\tRightRecordId?:number;\r\n\tAlternativeEntities?: Array<number>;\r\n\tEnableFilter?: boolean;\r\n\tScreenData?: Array<IDynamicFieldData>;\r\n SearchByMainRelationType: SearchByMainRelationTypes;\r\n SearchByTypes?: Array<number>;\r\n SearchByRelations?: Array<SearchByRelationModel>;\r\n Sharing?:boolean;\r\n SearchFieldId: number;\r\n\tSubGridParentRecordId?: number;\r\n\tPlannerLevelEntityId?: number;\r\n\tPlannerLevelRecordId?: number;\r\n\tQuerySubjectId?: number;\r\n\tRelatedTableId?: number;\r\n\tRelatedTableFieldId?: number;\r\n\tRelatedTablePk?: number;\r\n\tFilterByAlternativeEntities?: FilterByAlternativeEntitiesModel;\r\n\tKSeq?: number;\r\n\r\n\tConditionValues: Array<IConditionValueDto>;\r\n}\r\n\r\nexport interface FilterByAlternativeEntitiesModel{\r\n\tSubjectEntity: number;\r\n\tAlternativeEntities: Array<number>\r\n}\r\n\r\nexport interface ICheckRightsRequestModel {\r\n\tTableId: number;\r\n\tRecordId: number;\r\n\tSecurityWord: number;\r\n}\r\n\r\nexport class SearchStore {\r\n\tstatic Search(params: ISearchRequestModel): P.Promise<SearchResultModel> {\r\n\t\tvar deferredResult = P.defer<SearchResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/SearchApi/Search',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.fail(err=>{\r\n\t\t\t\tdeferredResult.reject({ message: err.message });\r\n\t\t\t})\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull && data.IsSuccessfull === true) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize(data, SearchResultModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage, value: data.OperationMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic IsUserAllowedTo(params: ICheckRightsRequestModel) {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/RecordSecurityApi/IsUserAllowedTo',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull && data.IsSuccessfull === true) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { DeletionModeModel } from \"Core/Screens/Models/DeletionModeModel\";\r\n\r\nexport interface IGetRecordRequestModel {\r\n\tTableId: number;\r\n\tTableTypeId: number;\r\n\tRecordId: number;\r\n\tReadLookups: boolean;\r\n}\r\n\r\nexport interface IGetDeletionModeRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n}\r\n\r\nexport interface IDeleteRecordRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tDisable?: boolean;\r\n};\r\n\r\nexport class RecordStore {\r\n\tstatic GetRecord(params: IGetRecordRequestModel): P.Promise<any> {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/RecordsApi/Get',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t});\r\n\t}\r\n\r\n\tstatic GetDeletionMode(params: IGetDeletionModeRequestModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<DeletionModeModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ScreenFormApi/GetDeletionMode',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(error);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeleteRecord(params: IDeleteRecordRequestModel): P.Promise<any> {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ScreenFormApi/DeleteRecord',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t});\r\n\t}\r\n}","export var EVENTS = {\r\n\tTYPE_SELECTED: 'TYPE_SELECTED',\r\n\tTYPES_NOT_FOUND: 'TYPES_NOT_FOUND',\r\n\tTYPES_FOUND: 'TYPES_FOUND',\r\n\tCANCELLED: 'CANCELLED'\r\n};","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\n\r\nexport class ExampleRecordModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tF_Type: number;\r\n\r\n\t@deserialize\r\n\tF_Kind: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import { deserialize } from 'libs/cerialize'\r\n\r\nexport class KindModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tIsEnabled: boolean;\r\n\r\n\tget DisplayName() {\r\n\t\treturn this.TranslatedName || this.Name;\r\n\t}\r\n\r\n\tstatic CreateDashKind() {\r\n\t\tconst model = new KindModel();\r\n\t\tmodel.Id = 0;\r\n\t\tmodel.Name = '-';\r\n\t\tmodel.IsEnabled = true;\r\n\t\treturn model;\r\n\t}\r\n}","import { deserialize, deserializeAs } from 'libs/cerialize'\r\nimport {KindModel} from \"./KindModel\";\r\n\r\nexport class TableTypeModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n\t@deserialize\r\n\tLifeStatus: number;\r\n\r\n\t@deserialize\r\n\tIsEnabled: boolean;\r\n\r\n\t@deserializeAs(KindModel)\r\n Kinds: KindModel[];\r\n\r\n GetName(): string {\r\n return this.TranslatedName ? this.TranslatedName : this.Name\r\n }\r\n}","import {deserializeAs} from 'libs/cerialize'\r\nimport {deserialize} from 'libs/cerialize'\r\n\r\nimport {ExampleRecordModel} from 'Core/Screens/TypeScreen/Models/ExampleRecordModel'\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel'\r\n\r\nexport class TableTypesModel {\r\n @deserializeAs(ExampleRecordModel)\r\n ExampleRecords: Array<ExampleRecordModel>;\r\n\r\n @deserializeAs(TableTypeModel)\r\n TableTypes: Array<TableTypeModel>;\r\n\r\n @deserialize\r\n TableHasCustomTypes: boolean;\r\n\r\n @deserialize\r\n WarningMessage: string;\r\n\r\n @deserialize\r\n TableId: number;\r\n\r\n\tget ShowTypeSelector() {\r\n\t\tconst enabledTypes = this.TableTypes.filter(type => type.IsEnabled);\r\n\r\n\t\tconst moreThanOneType = enabledTypes.length > 1;\r\n\t\tconst moreThanOneKind = enabledTypes.filter(type => type.Kinds.length > 0).length > 1;\r\n\r\n return moreThanOneType || moreThanOneKind;\r\n }\r\n}","import {GenericDeserialize} from 'libs/cerialize'\r\n\r\nimport {URL} from 'Core/Common/Url'\r\nimport {Request, IRequestOptions} from 'Core/Common/Request'\r\nimport {P} from 'Core/Common/Promise'\r\nimport {TableTypesModel} from 'Core/Screens/TypeScreen/Models/TableTypesModel'\r\nimport {IsTypeAvailableResponseModel} from \"Core/Screens/TypeScreen/Models/IsTypeAvailableResponseModel\";\r\n\r\nexport interface IGetTypesRequestModel {\r\n\tEntityId: number;\r\n\tParentTypeId: number;\r\n\tWithRoot: boolean;\r\n\tOnlyEnabled: boolean;\r\n\tEntityName?: string;\r\n}\r\n\r\nexport interface IIsTypeAvailableRequestModel {\r\n\tTypeId: number;\r\n\tExampleTypeId: number;\r\n\tEntityId: number;\r\n}\r\n\r\nexport class EntityTypesStore {\r\n\tstatic GetTypes(params: IGetTypesRequestModel): P.Promise<TableTypesModel> {\r\n\t\tlet deferredResult = P.defer<TableTypesModel>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.GET_TYPES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetAllTypes(params: IGetTypesRequestModel): P.Promise<TableTypesModel> {\r\n\t\tlet deferredResult = P.defer<TableTypesModel>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.GET_ALL_TYPES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic IsTypeAvailable(params: IIsTypeAvailableRequestModel): P.Promise<IsTypeAvailableResponseModel> {\r\n\t\tconst deferredResult = P.defer<IsTypeAvailableResponseModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ScreenFormApi/IsTypeAvailable',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(this.GetResponseError(error, 'Error checking if type is available')));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): TableTypesModel {\r\n\t\treturn GenericDeserialize<TableTypesModel>(jsonObject, TableTypesModel);\r\n\t}\r\n\r\n\tstatic GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n\t\tif (err.status === 400) {\r\n\t\t\treturn {message: JSON.parse(err.message).Message};\r\n\t\t}\r\n\r\n\t\treturn {message: generalError};\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\nimport {TableTypesModel} from 'Core/Screens/TypeScreen/Models/TableTypesModel';\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {ExampleRecordModel} from 'Core/Screens/TypeScreen/Models/ExampleRecordModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {EVENTS} from 'Core/Screens/TypeScreen/Events';\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport SearchScreenTemplate from 'Core/Screens/TypeScreen/Templates/TypeScreen.html'\r\nimport {KindModel} from \"./Models/KindModel\";\r\n\r\nko.templates['Core/Screens/TypeScreen/Templates/TypeScreen'] = SearchScreenTemplate;\r\n\r\nexport class TypeScreen extends Event {\r\n private _modal: Modal;\r\n private _model: KnockoutObservable<TableTypesModel>;\r\n private _entityId: number;\r\n private _entityName: string;\r\n private _parentTypeId: number;\r\n private _withRoot: boolean;\r\n private _selectedType: KnockoutObservable<TableTypeModel>;\r\n private _selectedKind: KnockoutObservable<KindModel>;\r\n private _selectedExample: KnockoutObservable<ExampleRecordModel>;\r\n private _kinds: KnockoutObservableArray<KindModel>;\r\n private _examples: KnockoutObservableArray<ExampleRecordModel>;\r\n private _noExample: ExampleRecordModel;\r\n private _allowExamples: KnockoutObservable<boolean>;\r\n private _isSaveDisabled: KnockoutObservable<boolean>;\r\n\tprivate _isOkButtonEnabled: KnockoutComputed<boolean>;\r\n\tprivate _showKindSelector: KnockoutComputed<boolean>;\r\n private _showExampleSelector: KnockoutComputed<boolean>;\r\n private _onlyTypes: Array<string | Partial<TableTypeModel>>;\r\n private _labels = LABELS;\r\n\r\n constructor(entityId: number,\r\n parentTypeId: number = 0,\r\n withRoot: boolean = false,\r\n allowExamples: boolean = true,\r\n entityName: string = null,\r\n onlyTypes?: Array<string | Partial<TableTypeModel>>) {\r\n super();\r\n\r\n this._entityId = entityId;\r\n this._entityName = entityName;\r\n this._parentTypeId = parentTypeId;\r\n this._withRoot = withRoot;\r\n this._model = ko.observable(null);\r\n this._selectedType = ko.observable(null);\r\n this._selectedExample = ko.observable(null);\r\n this._selectedKind = ko.observable(null);\r\n this._kinds = ko.observableArray([]);\r\n this._examples = ko.observableArray([]);\r\n this._noExample = new ExampleRecordModel();\r\n this._noExample.Id = 0;\r\n this._noExample.Name = LABELS.NO_EXAMPLE_LABEL;\r\n this._allowExamples = ko.observable(allowExamples);\r\n this._isSaveDisabled = ko.observable(false);\r\n\t\tthis._isOkButtonEnabled = ko.computed(() => !this._isSaveDisabled());\r\n this._onlyTypes = onlyTypes;\r\n\r\n\t\tthis._showKindSelector = ko.computed(() => this._kinds().length > 1);\r\n\t\tthis._showExampleSelector = ko.computed(() => this._allowExamples() && this._examples().length > 1);\r\n\r\n this._selectedType.subscribe(newValue => {\r\n if (newValue) {\r\n this._kinds(newValue.Kinds);\r\n const selectedKind = _.first(newValue.Kinds);\r\n this._selectedKind(selectedKind);\r\n\r\n if (selectedKind && selectedKind.Id === 0) {\r\n var examplesByType = _.filter(this._model().ExampleRecords, item => {\r\n return item.F_Kind === 0 && item.F_Type === newValue.Id\r\n });\r\n examplesByType.unshift(this._noExample);\r\n this._examples(examplesByType);\r\n this._selectedExample(_.first(examplesByType));\r\n\t\t\t\t}\r\n }\r\n });\r\n\r\n this._selectedKind.subscribe(newValue => {\r\n if (newValue) {\r\n const examplesByKind = _.filter(this._model().ExampleRecords, item => item.F_Kind === newValue.Id\r\n\t\t\t\t\t&& item.F_Type === this._selectedType().Id);\r\n examplesByKind.unshift(this._noExample);\r\n this._examples(examplesByKind);\r\n this._selectedExample(_.first(examplesByKind));\r\n }\r\n });\r\n\r\n this.Init();\r\n }\r\n\r\n private Init() {\r\n this.AddEvent(EVENTS.TYPES_NOT_FOUND);\r\n this.AddEvent(EVENTS.TYPES_FOUND);\r\n this.AddEvent(EVENTS.TYPE_SELECTED);\r\n this.AddEvent(EVENTS.CANCELLED);\r\n\r\n this._modal = new Modal({\r\n addClass: 'typeScreenModal jBox-padding-10px',\r\n width: '350',\r\n minHeight: '300'\r\n }, false);\r\n }\r\n\r\n Show() {\r\n BlockUI.Block();\r\n EntityTypesStore.GetTypes({\r\n EntityId: this._entityId,\r\n ParentTypeId: this._parentTypeId,\r\n WithRoot: this._withRoot,\r\n OnlyEnabled: false,\r\n EntityName: this._entityName\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(tableTypesModel => {\r\n if (!tableTypesModel.TableTypes.length) {\r\n this.Trigger(EVENTS.TYPES_NOT_FOUND, {\r\n Message: tableTypesModel.WarningMessage\r\n });\r\n return;\r\n }\r\n\r\n \r\n if (this._onlyTypes && this._onlyTypes.length > 0) {\r\n tableTypesModel.TableTypes = _.filter(tableTypesModel.TableTypes,\r\n type => this._onlyTypes.some(typeToMatch => {\r\n if (_.isString(typeToMatch)) {\r\n return type.Name === typeToMatch;\r\n }\r\n\r\n return _.isMatch(type, typeToMatch);\r\n }));\r\n }\r\n\r\n tableTypesModel.TableTypes.forEach(type => {\r\n\t\t\t\t\ttype.Kinds.unshift(KindModel.CreateDashKind());\r\n\t\t\t\t\ttype.Kinds = _.filter(type.Kinds, kind => kind.IsEnabled);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._model(tableTypesModel);\r\n\r\n\t\t\t\tlet firstEnabledType = _.first(tableTypesModel.TableTypes);\r\n\r\n if (!firstEnabledType) {\r\n firstEnabledType = new TableTypeModel();\r\n firstEnabledType.Id = 0;\r\n firstEnabledType.Name = '-';\r\n firstEnabledType.Kinds = [KindModel.CreateDashKind()];\r\n }\r\n\r\n this.Trigger(EVENTS.TYPES_FOUND);\r\n this._selectedType(firstEnabledType);\r\n\r\n\t\t\t\tlet enabledKinds = _.flatten(tableTypesModel.TableTypes.map(type => type.Kinds));\r\n\r\n let examplesByType = _.filter(tableTypesModel.ExampleRecords, item => {\r\n\t return item.F_Type === this._selectedType().Id;\r\n });\r\n\r\n\t\t\t\tif (tableTypesModel.TableTypes.length <= 1 && enabledKinds.length <= 1 && (!this._allowExamples() || !_.any(examplesByType))) {\r\n this.Trigger(EVENTS.TYPE_SELECTED, {\r\n TypeId: this._selectedType().Id,\r\n TypeName: this._selectedType().Name,\r\n KindId: this._selectedKind().Id,\r\n KindName: this._selectedKind().Name,\r\n ExampleRecordId: this._noExample.Id,\r\n EntityId: tableTypesModel.TableId\r\n });\r\n return;\r\n }\r\n\r\n this.Render();\r\n });\r\n }\r\n\r\n get Kinds(): KnockoutObservableArray<KindModel> {\r\n return this._kinds;\r\n }\r\n\r\n get Examples(): KnockoutObservableArray<ExampleRecordModel> {\r\n return this._examples;\r\n }\r\n\r\n get SelectedType(): KnockoutObservable<TableTypeModel> {\r\n return this._selectedType;\r\n }\r\n\r\n get TableTypes() {\r\n return this._model().TableTypes;\r\n }\r\n\r\n get ShowTypeSelector() {\r\n return this._model().ShowTypeSelector;\r\n }\r\n\r\n get SelectedKind(): KnockoutObservable<KindModel> {\r\n return this._selectedKind;\r\n }\r\n\r\n get SelectedExample(): KnockoutObservable<ExampleRecordModel> {\r\n return this._selectedExample;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return `Core/Screens/TypeScreen/Templates/TypeScreen`;\r\n }\r\n\r\n Render(): void {\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n SetButtonDisable(enabledTypesExist: boolean) {\r\n this._isSaveDisabled(!enabledTypesExist);\r\n }\r\n\r\n SelectExample(item) {\r\n this._selectedExample(item);\r\n this.Save();\r\n }\r\n\r\n Save() {\r\n if (this._modal) {\r\n if (this._selectedType().IsEnabled) {\r\n this.Trigger(EVENTS.TYPE_SELECTED, {\r\n TypeId: this._selectedType().Id,\r\n TypeName: this._selectedType().Name,\r\n KindId: this._selectedKind().Id,\r\n KindName: this._selectedKind().Name,\r\n ExampleRecordId: this._selectedExample().Id,\r\n EntityId: this._model().TableId\r\n });\r\n this._modal.Close();\r\n } else {\r\n var message = NOTIFICATIONS.TYPE_IS_NOT_AVAILABLE.replace('{TypeName}', this._selectedType().TranslatedName);\r\n new Notifier().Warning(message);\r\n }\r\n }\r\n }\r\n\r\n Cancel() {\r\n if (this._modal) {\r\n this.Trigger(EVENTS.CANCELLED);\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n AfterRender() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"portlet light bordered type-screen\\\"> <div class=\\\"portlet-body\\\"> <!-- ko if: ShowTypeSelector --> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"form-group\\\"> <div class=\\\"row\\\"> <label class=\\\"control-label\\\"><!-- ko text: _labels.TYPE --><!-- /ko --></label> <select data-bind=\\\"options: TableTypes, optionsText: (item) => item.GetName(), value: SelectedType\\\" class=\\\"form-control\\\"> </select> </div> </div> <!--ko if: _showKindSelector --> <div class=\\\"form-group\\\"> <div class=\\\"row\\\"> <label class=\\\"control-label\\\">Kind</label> <select data-bind=\\\"options: Kinds,\\r\\n optionsText: 'DisplayName',\\r\\n value: SelectedKind\\\" class=\\\"form-control\\\"></select> </div> </div> <!--/ko--> <!-- ko if: _showExampleSelector --> <div class=\\\"form-group\\\"> <div class=\\\"row\\\"> <label class=\\\"control-label\\\"><!-- ko text: _labels.MAKE_EXAMPLE --><!-- /ko --></label> <select data-bind=\\\"options: Examples,\\r\\n optionsText: 'Name',\\r\\n value: SelectedExample\\\" class=\\\"form-control\\\"></select> </div> </div> <!--/ko--> </div> </form> <div class=\\\"form-body\\\"> <input data-bind=\\\"click: Save,\\r\\n css: { 'disabled': _isSaveDisabled },\\r\\n enableAttr: _isOkButtonEnabled,\\r\\n attr: { value: _labels.OK}\\\" type=\\\"button\\\" class=\\\"btn green\\\" id=\\\"SaveBtn\\\"> <input data-bind=\\\"click: Cancel,\\r\\n attr: {value: _labels.CANCEL}\\\" type=\\\"button\\\" class=\\\"btn default\\\" id=\\\"CancelBtn\\\"> </div> <!-- /ko --> <!-- ko ifnot: TableTypes.length > 1 --> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <!--ko if: _showKindSelector --> <div class=\\\"form-group\\\"> <div class=\\\"row\\\"> <label class=\\\"control-label\\\">Kind</label> <select data-bind=\\\"options: Kinds,\\r\\n optionsText: 'DisplayName',\\r\\n value: SelectedKind\\\" class=\\\"form-control\\\"></select> </div> </div> <!--/ko--> <!-- ko if: _showExampleSelector --> <div class=\\\"form-group\\\"> <div class=\\\"row\\\"> <table class=\\\"table table-striped table-hover table-example\\\"> <thead> <tr><th class=\\\"text-left\\\"><!-- ko text: _labels.MAKE_EXAMPLE --><!-- /ko --></th></tr> </thead> <tbody> <!-- ko foreach: Examples --> <tr> <td data-bind=\\\"text: Name, click: $parent.SelectExample.bind($parent, $data)\\\" class=\\\"text-left u-cursor-pointer\\\"></td> </tr> <!-- /ko --> </tbody> </table> </div> </div> <!--/ko--> </div> </form> <div class=\\\"form-body\\\"> <input data-bind=\\\"click: Save,\\r\\n css: { 'disabled': _isSaveDisabled },\\r\\n enableAttr: _isOkButtonEnabled,\\r\\n attr: { value: _labels.OK}\\\" type=\\\"button\\\" class=\\\"btn green\\\" id=\\\"SaveBtn\\\"> <input data-bind=\\\"click: Cancel,\\r\\n attr: {value: _labels.CANCEL}\\\" type=\\\"button\\\" class=\\\"btn default\\\" id=\\\"CancelBtn\\\"> </div> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\nimport 'lockr';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {IPathRunnerSettings} from \"Core/UserVarsManager/UserVars/IPathRunnerSettings\";\r\nimport * as moment from \"moment\";\r\nimport {UserVarsStore} from 'Core/UserVarsManager/UserVarsStores/UserVarsStore';\r\nimport {GlobalManager, GLOBALS} from '../GlobalManager/GlobalManager';\r\nimport {CookieManager} from \"Core/Common/CookieManager\";\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {FastFilterSaveModel} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport enumerable from '../Common/Decorators/EnumerableDecorator';\r\nimport {CheckedUserAndGroup, SelectedUserType} from \"Core/Controls/SelectUser/SelectUser\";\r\n\r\nexport const GROUPS = {\r\n RECENT: 'recent',\r\n FAVORITES: 'favorites',\r\n SETTINGS: 'settings',\r\n SEARCH_PARAMS: 'searchParams',\r\n TABS_PARAMS: 'tabsParams',\r\n PLANNER_TABS_PARAMS: 'plannerTabsParams',\r\n GRID_VIEW: 'gridView',\r\n GRID_PRIORITY: 'gridPriority',\r\n PORTLET_SETTINGS: 'portletSettings',\r\n PATH_RUNNER_SETTINGS: 'pathRunnerSettings',\r\n KANBAN_LAST_SELECTED_TYPE: 'kanbanLastSelectedType',\r\n KANBAN_TODO_SELECTED: 'kanbanTodoSelected',\r\n KANBAN_VIEW: 'kanbanView',\r\n FINANCIAL_DASHBOARD_GRID_VIEW: 'financialDashboardGridView',\r\n BASKET: 'basket',\r\n DB_STATUS: 'databaseDesignerDbId',\r\n USER_SELECTION: 'userSelection',\r\n LAST_SYNC_TIME: 'lastSyncTime',\r\n ALT_ENTITIES: 'altEntities',\r\n GRID_COLUMN_FILTERS: 'gridColumnFilters',\r\n LOAD_CHART_STATES: 'loadChartStates',\r\n SCHEDULER_VIEW: 'schedulerView',\r\n SCHEDULER_SUBJECT: 'schedulerSubject',\r\n SCHEDULER_DATE: 'schedulerDate',\r\n LIFE_STATUS_ADVANCED_MODE: 'lifeStatusAdvancedMode',\r\n AGENDA_DATE: 'agendaDate',\r\n PLANNER_PAGE: 'plannerPage',\r\n PLANNER_LEVEL: 'plannerLevel',\r\n KANBAN_BOARD_ACCORDION_GROUPS: 'kanbanBoardAccordionGroups'\r\n}\r\n\r\nexport interface ISelection {\r\n RememberMe: boolean,\r\n ScreenId: number,\r\n UserSelection: Array<IUserSelection>;\r\n}\r\n\r\nexport interface IUserSelection {\r\n Guid: string;\r\n Users: Array<SelectedUserType>,\r\n UserGroups: Array<CheckedUserAndGroup>;\r\n Checked: boolean;\r\n}\r\n\r\nexport interface IPlannerPageParams {\r\n StartDate: string,\r\n ViewType: string;\r\n Period: number,\r\n ProjectManagerId: number,\r\n IsWeekPlannnig: boolean;\r\n}\r\n\r\nexport interface IPlannerLevelParams {\r\n ExpandedBarIds: Array<string>;\r\n}\r\n\r\nexport interface IKanbanBoardAccordionGroups {\r\n controlId: number,\r\n entity: {\r\n id: number,\r\n records: [{\r\n id: number,\r\n expanded: boolean\r\n }]\r\n }\r\n}\r\n\r\nexport class UserVarsManager {\r\n private static instance: UserVarsManager;\r\n private static allowInstantiation: boolean = true;\r\n private _syncInterval: any;\r\n\r\n constructor() {\r\n if (!UserVarsManager.allowInstantiation) {\r\n throw new Error('Use UserVarManager.Instance instead');\r\n }\r\n }\r\n\r\n static get Instance(): UserVarsManager {\r\n if (UserVarsManager.instance == null) {\r\n UserVarsManager.instance = new UserVarsManager();\r\n UserVarsManager.allowInstantiation = false;\r\n }\r\n\r\n return UserVarsManager.instance;\r\n }\r\n\r\n GetAll(): string {\r\n var allGroups = {};\r\n\r\n _.each(_.values(GROUPS), value => {\r\n allGroups[value] = Lockr.get(value);\r\n });\r\n\r\n return JSON.stringify(allGroups);\r\n }\r\n\r\n GetLastRecentRecordByEntityId(entityId: number): any {\r\n var recentRecords = <any>Lockr.get(GROUPS.RECENT);\r\n var entityWithRecords = _.findWhere(recentRecords, {\r\n 'entityId': entityId\r\n });\r\n\r\n if (entityWithRecords && entityWithRecords[\"records\"]) {\r\n return _.last(entityWithRecords[\"records\"]);\r\n }\r\n return null;\r\n }\r\n\r\n GetLastDbChoosen() {\r\n var databaseDesignerDbId = <any>Lockr.get(GROUPS.DB_STATUS);\r\n if (databaseDesignerDbId) {\r\n return _.last(databaseDesignerDbId);\r\n }\r\n return null;\r\n }\r\n\r\n GetTabsParams() {\r\n var tabsParams = Lockr.get(GROUPS.TABS_PARAMS);\r\n\r\n if (!tabsParams) {\r\n return null;\r\n }\r\n\r\n var entityParams = tabsParams['tabs'];\r\n return entityParams ? entityParams : null;\r\n }\r\n\r\n SetTabsParams(activeTabPageCID: any, tabsActivityStorage?: any) {\r\n let tabParams = Lockr.get(GROUPS.TABS_PARAMS) || {};\r\n let existedTabs = tabParams['tabs'] && tabParams['tabs'].activeTabPageCIDs || [];\r\n const entityParams = {\r\n activeTabPageCIDs: [...existedTabs],\r\n tabsActivityStorage: {}\r\n };\r\n if (tabsActivityStorage) {\r\n entityParams.tabsActivityStorage = tabsActivityStorage;\r\n }\r\n\r\n if (activeTabPageCID) {\r\n entityParams.activeTabPageCIDs = entityParams.activeTabPageCIDs.filter((activeTabPageData) => {\r\n return activeTabPageData.screenId !== activeTabPageCID.screenId;\r\n });\r\n\r\n entityParams.activeTabPageCIDs.push(activeTabPageCID);\r\n }\r\n\r\n if (!tabParams) {\r\n tabParams = {};\r\n }\r\n\r\n tabParams['tabs'] = entityParams;\r\n Lockr.set(GROUPS.TABS_PARAMS, tabParams);\r\n }\r\n\r\n GetPlannerTabsParams() {\r\n let plannerTabsParams = Lockr.get(GROUPS.PLANNER_TABS_PARAMS);\r\n\r\n if (!plannerTabsParams) {\r\n return null;\r\n }\r\n\r\n let entityParams = plannerTabsParams['tabs'];\r\n return entityParams ? entityParams : null;\r\n }\r\n\r\n SetPlannerTabsParams(activePlannerTabPageCID: any, plannerTabsActivityStorage?: any) {\r\n let plannerTabsParams = Lockr.get(GROUPS.PLANNER_TABS_PARAMS) || {};\r\n let existedTabs = plannerTabsParams['tabs'] && plannerTabsParams['tabs'].activePlannerTabPageCIDs || [];\r\n const entityParams = {\r\n activePlannerTabPageCIDs: [...existedTabs],\r\n plannerTabsActivityStorage: {}\r\n };\r\n if (plannerTabsActivityStorage) {\r\n entityParams.plannerTabsActivityStorage = plannerTabsActivityStorage;\r\n }\r\n\r\n if (activePlannerTabPageCID) {\r\n entityParams.activePlannerTabPageCIDs = entityParams.activePlannerTabPageCIDs.filter((activeTabPageData) => {\r\n return activeTabPageData.screenId !== activePlannerTabPageCID.screenId;\r\n });\r\n\r\n entityParams.activePlannerTabPageCIDs.push(activePlannerTabPageCID);\r\n }\r\n\r\n if (!plannerTabsParams) {\r\n plannerTabsParams = {};\r\n }\r\n\r\n plannerTabsParams['tabs'] = entityParams;\r\n Lockr.set(GROUPS.PLANNER_TABS_PARAMS, plannerTabsParams);\r\n }\r\n\r\n RemovePreselectTabData(screenId: number) {\r\n var tabsActivityStorage = this.GetTabsParams() ? this.GetTabsParams().tabsActivityStorage : {};\r\n const activeTabPageCID = this.GetTabsParams() && _.where(this.GetTabsParams().activeTabPageCIDs, {screenId: screenId})[0] || null;\r\n\r\n this.SetTabsParams(activeTabPageCID, tabsActivityStorage);\r\n }\r\n\r\n GetByEntityId(entityId: number) {\r\n var allGroups = {};\r\n _.each(_.values(GROUPS), (value) => {\r\n let groupRecords = <any>Lockr.get(value);\r\n\r\n if (groupRecords) {\r\n let entityRecords = _.findWhere(groupRecords, {'entityId': entityId});\r\n\r\n if (entityRecords) {\r\n allGroups[value] = entityRecords[\"records\"];\r\n\r\n if (value === GROUPS.RECENT) {\r\n allGroups[value].reverse();\r\n }\r\n }\r\n }\r\n });\r\n\r\n return allGroups;\r\n }\r\n\r\n GetRecordAltEntities(recordId) {\r\n var altEntities = Lockr.get(GROUPS.ALT_ENTITIES);\r\n\r\n if (!altEntities) {\r\n return null;\r\n }\r\n var recordParams = altEntities[recordId];\r\n return recordParams ? recordParams : null;\r\n }\r\n\r\n SetRecordAltEntities(recordId, altEntitiesData) {\r\n recordId = parseInt(recordId);\r\n\r\n var recordParams = {};\r\n recordParams = {\r\n altEntities: altEntitiesData\r\n };\r\n\r\n var altEntities = Lockr.get(GROUPS.ALT_ENTITIES);\r\n if (!altEntities) {\r\n altEntities = {};\r\n }\r\n\r\n altEntities[recordId] = recordParams;\r\n Lockr.set(GROUPS.ALT_ENTITIES, altEntities);\r\n }\r\n\r\n\r\n GetSearchParams(entityId) {\r\n var searchParams = Lockr.get(GROUPS.SEARCH_PARAMS);\r\n\r\n if (!searchParams) {\r\n return null;\r\n }\r\n var entityParams = searchParams[entityId];\r\n return entityParams ? entityParams : null;\r\n }\r\n\r\n SetLastDbChoosen(databaseDesignerDbId) {\r\n Lockr.set(GROUPS.DB_STATUS, databaseDesignerDbId);\r\n }\r\n\r\n SetLoadChartState(controlId: number, state: boolean) {\r\n const loadChartStates = Lockr.get(GROUPS.LOAD_CHART_STATES) || {};\r\n\r\n if (!loadChartStates[controlId]) {\r\n loadChartStates[controlId] = {};\r\n }\r\n\r\n loadChartStates[controlId] = state;\r\n\r\n Lockr.set(GROUPS.LOAD_CHART_STATES, loadChartStates);\r\n }\r\n\r\n GetLoadChartState(controlId: number): boolean {\r\n const loadChartStates = Lockr.get(GROUPS.LOAD_CHART_STATES) || {};\r\n\r\n if (loadChartStates[controlId] == null) {\r\n return true;\r\n } else {\r\n return loadChartStates[controlId];\r\n }\r\n }\r\n\r\n GetGridColumnFilters(recordId: number) {\r\n const gridColumnFilters = Lockr.get(GROUPS.GRID_COLUMN_FILTERS);\r\n\r\n return gridColumnFilters ? gridColumnFilters[recordId] : null;\r\n }\r\n\r\n HasFastFilter(recordId: number) {\r\n let filteredList = this.GetGridColumnFilters(recordId);\r\n if (filteredList && filteredList.length) {\r\n let filteredItem = _.find(filteredList, (item: any) => item.Values.length);\r\n\r\n return !!filteredItem;\r\n }\r\n\r\n return !!(filteredList && filteredList.length);\r\n }\r\n\r\n ResetGridFilters(recordId: number = -1) {\r\n let gridColumnFilters = Lockr.get(GROUPS.GRID_COLUMN_FILTERS);\r\n\r\n if (gridColumnFilters) {\r\n gridColumnFilters[recordId] = [];\r\n }\r\n\r\n Lockr.set(GROUPS.GRID_COLUMN_FILTERS, gridColumnFilters);\r\n }\r\n\r\n SetGridColumnFilters(recordId: number = -1, filters: FastFilterSaveModel[]) {\r\n let gridColumnFilters = Lockr.get(GROUPS.GRID_COLUMN_FILTERS);\r\n\r\n if (!gridColumnFilters) {\r\n gridColumnFilters = {};\r\n } else {\r\n // check if uservars has a valid model, if not - clear it\r\n try {\r\n const currentFilter: FastFilterSaveModel = gridColumnFilters[recordId];\r\n\r\n let isModelValid = !currentFilter\r\n || (typeof currentFilter[0].FieldId === 'number'\r\n && typeof currentFilter[0].FieldAlias === 'string'\r\n && Array.isArray(currentFilter[0].Values));\r\n\r\n if (!isModelValid) {\r\n throw new Error('invalid uservars model, cleaning...');\r\n }\r\n } catch (error) {\r\n gridColumnFilters[recordId] = [];\r\n }\r\n }\r\n\r\n filters.forEach((filter: FastFilterSaveModel) => {\r\n if (gridColumnFilters[recordId]) {\r\n let isFilterAlreadyExists = false;\r\n\r\n gridColumnFilters[recordId] = gridColumnFilters[recordId].map((existedFilter: FastFilterSaveModel) => {\r\n if (existedFilter.TableViewId === filter.TableViewId && existedFilter.FieldAlias === filter.FieldAlias) {\r\n isFilterAlreadyExists = true;\r\n\r\n return filter;\r\n } else {\r\n return existedFilter;\r\n }\r\n });\r\n\r\n if (!isFilterAlreadyExists) {\r\n gridColumnFilters[recordId].push(filter);\r\n }\r\n } else {\r\n gridColumnFilters[recordId] = [filter];\r\n }\r\n });\r\n\r\n Lockr.set(GROUPS.GRID_COLUMN_FILTERS, gridColumnFilters);\r\n }\r\n\r\n SetSearchParams(entityId, recordTypeName, searchModeValue, lifeStatusId, recordTypeValue, searchMode?, searchField?, enableFiltering?, searchByRelations?) {\r\n entityId = parseInt(entityId);\r\n\r\n var entityParams = {};\r\n entityParams = {\r\n recordTypeName: recordTypeName,\r\n searchMode: searchMode,\r\n searchField: searchField,\r\n searchModeValue: searchModeValue,\r\n lifeStatusId: lifeStatusId,\r\n recordTypeValue: recordTypeValue,\r\n enableFiltering: enableFiltering,\r\n searchByRelationsValue: searchByRelations\r\n };\r\n\r\n var searchParams = Lockr.get(GROUPS.SEARCH_PARAMS);\r\n if (!searchParams) {\r\n searchParams = {};\r\n }\r\n\r\n searchParams[entityId] = entityParams;\r\n Lockr.set(GROUPS.SEARCH_PARAMS, searchParams);\r\n }\r\n\r\n GetRecentAndFavourites(entityId: number): any {\r\n //var allGroups = this.GetByEntityId(entityId);\r\n return this.GetByEntityId(entityId);\r\n\r\n //return {\r\n //\trecent: allGroups[GROUPS.RECENT],\r\n //\tfavorites: allGroups[GROUPS.FAVOURITES]\r\n //};\r\n }\r\n\r\n\r\n GetPortleteSettings(portletId) {\r\n var portletsSettings = Lockr.get(GROUPS.PORTLET_SETTINGS) || {};\r\n return portletsSettings[portletId];\r\n }\r\n\r\n SetPortletSettings(portletId: number, settings: any) {\r\n settings = JSON.parse(settings);\r\n var portletsSettings = Lockr.get(GROUPS.PORTLET_SETTINGS) || {};\r\n\r\n portletsSettings[portletId] = settings;\r\n\r\n Lockr.set(GROUPS.PORTLET_SETTINGS, portletsSettings);\r\n }\r\n\r\n GetSettingsColor() {\r\n return this.GetSettings()['color'];\r\n }\r\n\r\n GetKanbanLastType(controlId: number): number {\r\n const types = Lockr.get(GROUPS.KANBAN_LAST_SELECTED_TYPE) || {};\r\n return types[controlId];\r\n }\r\n\r\n SetKanbanLastType(controlId: number, typeId: number) {\r\n const types = Lockr.get(GROUPS.KANBAN_LAST_SELECTED_TYPE) || {};\r\n types[controlId] = typeId;\r\n\r\n Lockr.set(GROUPS.KANBAN_LAST_SELECTED_TYPE, types);\r\n }\r\n\r\n GetKanbanTodoSelected(controlId: number): boolean {\r\n const kanbanTodoSelectedValues = Lockr.get(GROUPS.KANBAN_TODO_SELECTED) || {};\r\n return kanbanTodoSelectedValues[controlId];\r\n }\r\n\r\n SetKanbanTodoSelected(controlId: number, isKanbanTodoSelected: boolean) {\r\n const kanbanTodoSelectedValues = Lockr.get(GROUPS.KANBAN_TODO_SELECTED) || {};\r\n kanbanTodoSelectedValues[controlId] = isKanbanTodoSelected;\r\n\r\n Lockr.set(GROUPS.KANBAN_TODO_SELECTED, kanbanTodoSelectedValues);\r\n }\r\n\r\n GetFinancialDashboardGridView(controlId: number): number {\r\n const gridViews = Lockr.get(GROUPS.FINANCIAL_DASHBOARD_GRID_VIEW) || {};\r\n return gridViews[controlId];\r\n }\r\n\r\n SetFinancialDashboardGridView(controlId: number, gridViewId: number) {\r\n const gridViews = Lockr.get(GROUPS.FINANCIAL_DASHBOARD_GRID_VIEW) || {};\r\n gridViews[controlId] = gridViewId;\r\n\r\n Lockr.set(GROUPS.FINANCIAL_DASHBOARD_GRID_VIEW, gridViews);\r\n }\r\n\r\n GetKanbanView(controlId: number): number {\r\n const kanbanViews = Lockr.get(GROUPS.KANBAN_VIEW) || {};\r\n return kanbanViews[controlId];\r\n }\r\n\r\n SetKanbanView(controlId: number, kanbanViewId: number) {\r\n const kanbanViews = Lockr.get(GROUPS.KANBAN_VIEW) || {};\r\n kanbanViews[controlId] = kanbanViewId;\r\n\r\n Lockr.set(GROUPS.KANBAN_VIEW, kanbanViews);\r\n }\r\n\r\n GetSettings() {\r\n var settings = Lockr.get(GROUPS.SETTINGS);\r\n return settings != undefined ? settings : {}\r\n }\r\n\r\n SetSettingsColor(color) {\r\n var value = this.GetSettings();\r\n value['color'] = color;\r\n Lockr.set(GROUPS.SETTINGS, value);\r\n }\r\n\r\n\r\n UservarsLastSync() {\r\n const globalValue = Number(GlobalManager.Instance.GetGlobal(GLOBALS.USER_VARS_UPDATE_TIME)) || 30;\r\n const syncItervalTime = globalValue * 60000;\r\n\r\n this.UpdateUserVars();\r\n\r\n this._syncInterval = setInterval(() => this.UpdateUserVars(), syncItervalTime);\r\n }\r\n\r\n SignOut() {\r\n clearInterval(this._syncInterval);\r\n }\r\n\r\n UpdateUserVars() {\r\n if (!CookieManager.GetAuthToken()) return;\r\n\r\n UserVarsStore.UpdateUserVars({'UserVariables': this.GetAll()}).then(result => {\r\n if (result && !result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n Lockr.set(GROUPS.LAST_SYNC_TIME, moment().toISOString());\r\n });\r\n }\r\n\r\n GetSettingsCustomThemeName() {\r\n return this.GetSettings()['customThemeName'];\r\n }\r\n\r\n GetSettingsCustomThemeColor() {\r\n return this.GetSettings()['customThemeColor'];\r\n }\r\n\r\n GetSettingsCustomColor() {\r\n return this.GetSettings()['customColor'];\r\n }\r\n\r\n GetSettingsLayoutMode() {\r\n return this.GetSettings()['style'];\r\n }\r\n\r\n GetSettingsSidebarBorders() {\r\n return this.GetSettings()['sidebarBorders'];\r\n }\r\n\r\n SetSettingsSidebarBorders(sidebarBorders) {\r\n var value = this.GetSettings();\r\n value['sidebarBorders'] = sidebarBorders;\r\n Lockr.set(GROUPS.SETTINGS, value);\r\n }\r\n\r\n SetSettingsLayoutMode(style) {\r\n var value = this.GetSettings();\r\n value['style'] = style;\r\n Lockr.set(GROUPS.SETTINGS, value);\r\n }\r\n\r\n SetSettingsCustomThemeName(customThemeName) {\r\n var value = this.GetSettings();\r\n value['customThemeName'] = customThemeName;\r\n Lockr.set(GROUPS.SETTINGS, value);\r\n }\r\n\r\n SetSettingsCustomThemeColor(customThemeColor) {\r\n var value = this.GetSettings();\r\n value['customThemeColor'] = customThemeColor;\r\n Lockr.set(GROUPS.SETTINGS, value);\r\n }\r\n\r\n SetSettingsCustomColor(customColor) {\r\n var value = this.GetSettings();\r\n value['customColor'] = customColor;\r\n Lockr.set(GROUPS.SETTINGS, value);\r\n }\r\n\r\n RestoreFromJson(jsonString: string) {\r\n var jsonObject = JSON.parse(jsonString);\r\n this.Clear();\r\n\r\n _.each(jsonObject, (objValue, key: string) => {\r\n Lockr.set(key, objValue);\r\n });\r\n }\r\n\r\n AddSelection(screenId: number, userGroups: Array<CheckedUserAndGroup>, users: SelectedUserType[], rememberMe: boolean) {\r\n const userSelectionData = this.GetUserSelections();\r\n let selectionByScreenId = _.find(userSelectionData, (selection: ISelection) => selection.ScreenId === screenId);\r\n\r\n const userSelection: IUserSelection = {\r\n Guid: Guid.NewGuid(),\r\n Users: users,\r\n UserGroups: userGroups,\r\n Checked: true\r\n };\r\n\r\n if (_.isEmpty(userSelectionData)) {\r\n const data: ISelection[] = [{\r\n RememberMe: rememberMe,\r\n ScreenId: screenId,\r\n UserSelection: [userSelection]\r\n }];\r\n\r\n Lockr.set(GROUPS.USER_SELECTION, data);\r\n return;\r\n }\r\n\r\n if (_.isEmpty(selectionByScreenId)) {\r\n selectionByScreenId = {\r\n RememberMe: rememberMe,\r\n ScreenId: screenId,\r\n UserSelection: [userSelection]\r\n };\r\n\r\n userSelectionData.push(selectionByScreenId);\r\n Lockr.set(GROUPS.USER_SELECTION, userSelectionData);\r\n return;\r\n }\r\n\r\n selectionByScreenId.UserSelection.unshift(userSelection);\r\n\r\n if (selectionByScreenId.UserSelection.length > 10) {\r\n selectionByScreenId.UserSelection.pop();\r\n }\r\n\r\n Lockr.set(GROUPS.USER_SELECTION, userSelectionData);\r\n }\r\n\r\n GetUserSelections(): ISelection[] {\r\n return <ISelection[]>Lockr.get(GROUPS.USER_SELECTION);\r\n }\r\n\r\n GetUserSelection(screenId: number): ISelection {\r\n const allSelections = this.GetUserSelections();\r\n let selection = _.find(allSelections, (selection: ISelection) => selection.ScreenId === screenId);\r\n if(selection){\r\n selection.UserSelection = _.filter(selection.UserSelection, (selection) => selection != null);\r\n }\r\n return selection;\r\n }\r\n\r\n SetUserSelection(screeId: number, userSelectionData: ISelection[]) {\r\n Lockr.set(GROUPS.USER_SELECTION, userSelectionData);\r\n }\r\n\r\n SetRememberUserSelection(screenId: number, rememberMe: boolean) {\r\n const userSelectionsData = this.GetUserSelections();\r\n let currentSelection = _.find<ISelection>(userSelectionsData, selection => selection.ScreenId === screenId);\r\n\r\n if (currentSelection) {\r\n currentSelection.RememberMe = rememberMe;\r\n Lockr.set(GROUPS.USER_SELECTION, userSelectionsData);\r\n } else {\r\n const data: ISelection[] = [{\r\n RememberMe: rememberMe,\r\n ScreenId: screenId,\r\n UserSelection: []\r\n }];\r\n Lockr.set(GROUPS.USER_SELECTION, data);\r\n }\r\n }\r\n\r\n AddRecent(entityId: number, recordId: number, typeId: number) {\r\n this.AddToGroup(recordId, entityId, typeId, GROUPS.RECENT);\r\n }\r\n\r\n RemoveFromRecent(recordId: number, entityId: number, tableTypeId: number) {\r\n this.RemoveFromGroup(recordId, entityId, tableTypeId, GROUPS.RECENT);\r\n }\r\n\r\n private AddToGroup(recordId: number, entityId: number, typeId: number, group) {\r\n if (!typeId) {\r\n typeId = 0;\r\n }\r\n\r\n if (!entityId || !recordId || recordId < 1) {\r\n var notifier = new Notifier(null);\r\n notifier.Failed(NOTIFICATIONS.WRONG_ARGS);\r\n return;\r\n }\r\n\r\n var groupValues = <any>Lockr.get(group);\r\n\r\n var data = [{\r\n 'entityId': entityId,\r\n 'records': [{\r\n 'id': recordId,\r\n 'typeId': typeId\r\n }]\r\n }];\r\n\r\n if (!groupValues || groupValues.length === 0) {\r\n Lockr.set(group, data);\r\n } else {\r\n let entityPair = _.findWhere(groupValues, {\r\n 'entityId': entityId\r\n });\r\n\r\n if (entityPair) {\r\n let newGroup = _.filter(groupValues, pair => (pair['entityId'] !== entityId));\r\n\r\n entityPair['records'] = _.filter(entityPair['records'],\r\n recordIdItem => (recordIdItem['id'] !== recordId));\r\n\r\n let recordData = {\r\n 'id': recordId,\r\n 'typeId': typeId\r\n }\r\n\r\n entityPair['records'].push(recordData);\r\n\r\n if (entityPair['records'].length > this.GetMaxLimitConst(group)) {\r\n entityPair['records'].shift();\r\n }\r\n\r\n newGroup.push(entityPair);\r\n\r\n Lockr.set(group, newGroup);\r\n } else {\r\n groupValues = groupValues.concat(data[0]);\r\n Lockr.set(group, groupValues);\r\n }\r\n }\r\n }\r\n\r\n GetMaxLimitConst(group) {\r\n switch (group) {\r\n case GROUPS.RECENT:\r\n case GROUPS.FAVORITES:\r\n return 10;\r\n default:\r\n return Infinity;\r\n }\r\n }\r\n\r\n Clear(): void {\r\n _.each(_.values(GROUPS), value => {\r\n Lockr.rm(value);\r\n });\r\n }\r\n\r\n IsInFavorites(\r\n recordId: number,\r\n entityId: number,\r\n tableTypeId: number): boolean {\r\n return this.IsInGroup(recordId, entityId, tableTypeId, GROUPS.FAVORITES);\r\n }\r\n\r\n RemoveFromFavorites(\r\n recordId: number,\r\n entityId: number,\r\n tableTypeId: number) {\r\n this.RemoveFromGroup(recordId, entityId, tableTypeId, GROUPS.FAVORITES);\r\n }\r\n\r\n AddToFavorites(\r\n recordId: number,\r\n entityId: number,\r\n tableTypeId: number) {\r\n this.AddToGroup(recordId, entityId, tableTypeId, GROUPS.FAVORITES);\r\n }\r\n\r\n private IsInGroup(recordId: number, entityId: number, tableTypeId: number, group: string): boolean {\r\n var groupData = <any>Lockr.get(group);\r\n\r\n var entityData = _.findWhere(groupData, {'entityId': entityId});\r\n\r\n if (entityData) {\r\n let result = _.findWhere(entityData['records'], {'id': recordId});\r\n return !_.isEmpty(result);\r\n }\r\n return false;\r\n }\r\n\r\n private RemoveFromGroup(recordId: number, entityId: number, tableTypeId: number, group: string): void {\r\n var groupData = <any>Lockr.get(group);\r\n\r\n if (!groupData || !entityId || !recordId) {\r\n return;\r\n }\r\n\r\n var entityRecordUpdated = _.findWhere(groupData, {'entityId': entityId});\r\n\r\n if (!entityRecordUpdated) {\r\n return;\r\n }\r\n\r\n groupData = _.filter(groupData,\r\n entityRecord => (entityRecord['entityId'] !== entityId));\r\n\r\n entityRecordUpdated['records'] = _.filter(entityRecordUpdated['records'],\r\n recordData => (recordData['id'] !== recordId));\r\n\r\n if (!_.isEmpty(entityRecordUpdated['records'])) {\r\n groupData.push(entityRecordUpdated);\r\n }\r\n\r\n Lockr.set(group, groupData);\r\n }\r\n\r\n GetPathRunnerSettings(place: string): IPathRunnerSettings {\r\n const groupData = Lockr.get(GROUPS.PATH_RUNNER_SETTINGS) || {};\r\n\r\n return groupData[place];\r\n }\r\n\r\n SetPathRunnerSettings(settings: IPathRunnerSettings) {\r\n const groupData = Lockr.get(GROUPS.PATH_RUNNER_SETTINGS) || {};\r\n\r\n groupData[settings.Place] = settings;\r\n\r\n Lockr.set(GROUPS.PATH_RUNNER_SETTINGS, groupData);\r\n }\r\n\r\n GetBasket(basketEntityId: number, gridEntityId: number) {\r\n const groupData = <any>(Lockr.get(GROUPS.BASKET) || []);\r\n var basket = _.find(groupData, (item: any) => {\r\n return item.basketEntityId === basketEntityId && item.gridEntityId === gridEntityId;\r\n });\r\n if (basket) {\r\n return basket.recordId;\r\n }\r\n return null;\r\n }\r\n\r\n SaveBasket(basketEntityId: number, basketRecordId: number, gridEntityId: number) {\r\n const groupData = <any>(Lockr.get(GROUPS.BASKET) || []);\r\n var basket = _.find(groupData, (item: any) => {\r\n return item.basketEntityId === basketEntityId && item.gridEntityId === gridEntityId;\r\n });\r\n\r\n if (basket) {\r\n basket.recordId = basketRecordId;\r\n } else {\r\n groupData.push({basketEntityId: basketEntityId, gridEntityId: gridEntityId, recordId: basketRecordId});\r\n }\r\n Lockr.set(GROUPS.BASKET, groupData);\r\n }\r\n\r\n SetGridView(controlId: number, tableViewId: number) {\r\n let gridView = Lockr.get(GROUPS.GRID_VIEW);\r\n if (!gridView) {\r\n gridView = {};\r\n }\r\n\r\n if (!gridView[controlId]) {\r\n gridView[controlId] = {};\r\n }\r\n\r\n gridView[controlId] = tableViewId;\r\n Lockr.set(GROUPS.GRID_VIEW, gridView);\r\n }\r\n\r\n GetGridView(controlId: number): number {\r\n let gridView = Lockr.get(GROUPS.GRID_VIEW);\r\n if (gridView) {\r\n return gridView[controlId];\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n\r\n GetLinkEditorGridView(key: string): number {\r\n let gridView = Lockr.get(GROUPS.GRID_VIEW);\r\n if (gridView) {\r\n return gridView[key];\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n SetLinkEditorGridView(key: string, tableViewId: number) {\r\n let gridView = Lockr.get(GROUPS.GRID_VIEW);\r\n if (!gridView) {\r\n gridView = {};\r\n }\r\n\r\n if (!gridView[key]) {\r\n gridView[key] = {};\r\n }\r\n\r\n gridView[key] = tableViewId;\r\n Lockr.set(GROUPS.GRID_VIEW, gridView);\r\n }\r\n\r\n SetKanbanBoardAccordionGroup(controlId: number, entityId: number, recordId: number, ariaExpanded: boolean) {\r\n let accordionGroups: [IKanbanBoardAccordionGroups] = Lockr.get(GROUPS.KANBAN_BOARD_ACCORDION_GROUPS);\r\n\r\n if (!accordionGroups) {\r\n accordionGroups = [{\r\n controlId,\r\n entity: {\r\n id: entityId,\r\n records: [{\r\n id: recordId,\r\n expanded: ariaExpanded\r\n }]\r\n },\r\n }];\r\n }\r\n\r\n let accordionGroup = accordionGroups.find(group => group.controlId === controlId && group.entity.id == entityId);\r\n if (!accordionGroup) {\r\n accordionGroup = {controlId, entity: {id: entityId, records: [{id: recordId, expanded: ariaExpanded}]}}\r\n accordionGroups.push(accordionGroup);\r\n Lockr.set(GROUPS.KANBAN_BOARD_ACCORDION_GROUPS, accordionGroups);\r\n return;\r\n }\r\n\r\n let accordionRecord = accordionGroup.entity.records.find(record => record.id === recordId);\r\n if (!accordionRecord) {\r\n accordionRecord = {id: recordId, expanded: ariaExpanded};\r\n accordionGroup.entity.records.push(accordionRecord);\r\n Lockr.set(GROUPS.KANBAN_BOARD_ACCORDION_GROUPS, accordionGroups);\r\n return;\r\n }\r\n\r\n accordionRecord.expanded = ariaExpanded;\r\n Lockr.set(GROUPS.KANBAN_BOARD_ACCORDION_GROUPS, accordionGroups);\r\n }\r\n\r\n GetKanbanBoardAccordionGroup(controlId: number, entityId: number, recordId: number, defaultValue: boolean): boolean {\r\n let accordionGroups: [IKanbanBoardAccordionGroups] = Lockr.get(GROUPS.KANBAN_BOARD_ACCORDION_GROUPS);\r\n\r\n if (!accordionGroups) {\r\n return defaultValue;\r\n }\r\n\r\n let accordionGroup = accordionGroups.find(group => group.controlId === controlId && group.entity.id == entityId);\r\n if (!accordionGroup) {\r\n return defaultValue;\r\n }\r\n\r\n let accordionRecord = accordionGroup.entity.records.find(record => record.id === recordId);\r\n if (!accordionRecord) {\r\n return defaultValue;\r\n } else {\r\n return accordionRecord.expanded;\r\n }\r\n }\r\n\r\n GetPlannerPageParams(controlId: number): IPlannerPageParams {\r\n let params = Lockr.get(GROUPS.PLANNER_PAGE);\r\n if (params && params[controlId]) {\r\n return params[controlId];\r\n }\r\n\r\n return {\r\n StartDate: null,\r\n ViewType: null,\r\n Period: null,\r\n ProjectManagerId: null,\r\n IsWeekPlannnig: null\r\n };\r\n }\r\n\r\n SetPlannerPageParams(controlId: number, pageParams: IPlannerPageParams) {\r\n let params = Lockr.get(GROUPS.PLANNER_PAGE);\r\n if (!params) {\r\n params = {};\r\n }\r\n\r\n if (!params[controlId]) {\r\n params[controlId] = {};\r\n }\r\n\r\n params[controlId] = pageParams;\r\n Lockr.set(GROUPS.PLANNER_PAGE, params);\r\n }\r\n\r\n GetPlannerLevelParams(controlId: number): IPlannerLevelParams {\r\n let params = Lockr.get(GROUPS.PLANNER_LEVEL);\r\n if (params && params[controlId]) {\r\n return params[controlId];\r\n }\r\n\r\n return {\r\n ExpandedBarIds: []\r\n };\r\n }\r\n\r\n SetPlannerLevelParams(controlId: number, levelParams: IPlannerLevelParams) {\r\n let params = Lockr.get(GROUPS.PLANNER_LEVEL);\r\n if (!params) {\r\n params = {};\r\n }\r\n\r\n if (!params[controlId]) {\r\n params[controlId] = {};\r\n }\r\n\r\n params[controlId] = levelParams;\r\n Lockr.set(GROUPS.PLANNER_LEVEL, params);\r\n }\r\n\r\n SetGridPriority(subjectEntityId: number, gridSubjectEntityId: number, priority: boolean) {\r\n let gridView = Lockr.get(GROUPS.GRID_PRIORITY);\r\n if (!gridView) {\r\n gridView = {};\r\n }\r\n\r\n if (!gridView[subjectEntityId]) {\r\n gridView[subjectEntityId] = {};\r\n }\r\n\r\n gridView[subjectEntityId][gridSubjectEntityId] = priority;\r\n Lockr.set(GROUPS.GRID_PRIORITY, gridView);\r\n }\r\n\r\n GetGridPriority(subjectEntityId: number, gridSubjectEntityId: number, defaultValue: boolean): boolean {\r\n const gridView = Lockr.get(GROUPS.GRID_PRIORITY);\r\n if (gridView) {\r\n if (gridView[subjectEntityId]) {\r\n return !!gridView[subjectEntityId][gridSubjectEntityId];\r\n }\r\n }\r\n\r\n return defaultValue;\r\n }\r\n\r\n SetSchedulerView(controlId: number, view: string) {\r\n let schedulerView = Lockr.get(GROUPS.SCHEDULER_VIEW) || {};\r\n schedulerView[controlId] = view;\r\n Lockr.set(GROUPS.SCHEDULER_VIEW, schedulerView);\r\n }\r\n\r\n GetSchedulerView(controlId: number): string {\r\n let schedulerView = Lockr.get(GROUPS.SCHEDULER_VIEW) || {};\r\n return schedulerView[controlId];\r\n }\r\n\r\n SetSchedulerSubjectToggle(controlId: number, value: boolean) {\r\n let schedulerView = Lockr.get(GROUPS.SCHEDULER_SUBJECT) || {};\r\n schedulerView[controlId] = value;\r\n Lockr.set(GROUPS.SCHEDULER_SUBJECT, schedulerView);\r\n }\r\n\r\n GetSchedulerSubjectToggle(controlId: number): boolean {\r\n let schedulerView = Lockr.get(GROUPS.SCHEDULER_SUBJECT) || {};\r\n return schedulerView[controlId];\r\n }\r\n\r\n SetSchedulerDate(controlId: number, value: string) {\r\n let schedulerDate = Lockr.get(GROUPS.SCHEDULER_DATE) || {};\r\n schedulerDate[controlId] = value;\r\n Lockr.set(GROUPS.SCHEDULER_DATE, schedulerDate);\r\n }\r\n\r\n GetSchedulerDate(controlId: number): string {\r\n let schedulerDate = Lockr.get(GROUPS.SCHEDULER_DATE) || {};\r\n return schedulerDate[controlId];\r\n }\r\n\r\n SetAdvancedLifestatus(value: boolean) {\r\n Lockr.set(GROUPS.LIFE_STATUS_ADVANCED_MODE, value);\r\n }\r\n\r\n GetAdvancedLifestatus(): boolean {\r\n return Lockr.get(GROUPS.LIFE_STATUS_ADVANCED_MODE) || false;\r\n }\r\n\r\n SetAgendaDate(controlId: number, value: string) {\r\n let agendaDate = Lockr.get(GROUPS.AGENDA_DATE) || {};\r\n agendaDate[controlId] = value;\r\n Lockr.set(GROUPS.AGENDA_DATE, agendaDate);\r\n }\r\n\r\n GetAgendaDate(controlId: number): string {\r\n let agendaDate = Lockr.get(GROUPS.AGENDA_DATE) || {};\r\n return agendaDate[controlId];\r\n }\r\n}","import { P } from \"Core/Common/Promise\";\r\nimport { URL } from \"Core/Common/Url\";\r\nimport { IRequestOptions, Request } from \"Core/Common/Request\";\r\n\r\nexport class UserVarsStore {\r\n\tstatic UpdateUserVars(model): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/UserVariablesApi/UpdateUserVars\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: model\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n} \r\n\r\n","import { deserialize } from \"libs/cerialize\";\r\n\r\nexport class MessageDto {\r\n @deserialize\r\n Role: string;\r\n\r\n @deserialize\r\n Content: string;\r\n}\r\n","import { MessageDto } from './MessageDto';\r\nimport { deserialize, deserializeAs } from \"libs/cerialize\";\r\n\r\nexport class PromptDto {\r\n constructor(){\r\n this.Messages = []; \r\n }\r\n @deserializeAs(MessageDto)\r\n Messages: Array<MessageDto>;\r\n}\r\n","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport { List } from 'underscore';\r\nimport { Deserialize, GenericDeserialize } from 'libs/cerialize';\r\nimport { PromptDto } from './Models/PromptDto';\r\nimport { MessageDto } from './Models/MessageDto';\r\n\r\nexport interface IAssistantMessageDto {\r\n\tDatabase?: any;\r\n\tChatHistory: Array<MessageDto>;\r\n}\r\n\r\nexport interface IAssistantMessage2Dto {\r\n\tMessage?: string;\r\n\tthreadId: string;\r\n}\r\n\r\nexport interface IGenerateAIDto {\r\n\tDBStructure: string;\r\n}\r\n\r\nexport class AssistantApi {\r\n\r\n\r\n\tstatic CreateThread(): P.Promise<string> {\r\n\t\tvar deferredResult = P.defer<string>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/AssistantApi/CreateThread',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\t\t\t\t\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t}).fail(err=>{\t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(err.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic AssistantMessage2(params: IAssistantMessage2Dto): P.Promise<PromptDto> {\r\n\t\tvar deferredResult = P.defer<PromptDto>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/AssistantApi/SendMessage',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\t\t\t\t\r\n\t\t\t\tdeferredResult.resolve(GenericDeserialize(data, PromptDto));\r\n\t\t\t}).fail(err=>{\t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(err.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic AssistantMessage(params: IAssistantMessageDto): P.Promise<PromptDto> {\r\n\t\tvar deferredResult = P.defer<PromptDto>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DataBaseDesignerApi/AssistantMessage',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\t\t\t\t\r\n\t\t\t\tdeferredResult.resolve(GenericDeserialize(data, PromptDto));\r\n\t\t\t}).fail(err=>{\t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(err.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GenerateStructure(params: IAssistantMessageDto): P.Promise<PromptDto> {\r\n\t\tvar deferredResult = P.defer<PromptDto>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DataBaseDesignerApi/GenerateStructure',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\t\t\t\t\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t}).fail(err=>{\t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(err.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div data-bind=\\\"html: $data._chatHistory\\\"></div> <div style=\\\"margin-top:350px\\\"> <textarea data-bind=\\\"value: $data._userInput\\\" rows=\\\"6\\\" cols=\\\"75\\\"></textarea> </div> <div class=\\\"text-center bottom\\\"> <a data-bind=\\\"click: $data.SendMessage.bind($data), text: _labels.SEND\\\" href=\\\"#\\\" class=\\\"btn btn-success\\\"></a> <!-- ko if: $data._isShowApplyButton --> <a data-bind=\\\"click: $data.CreateTables.bind($data), text: _labels.APPLY\\\" href=\\\"#\\\" class=\\\"btn btn-primary\\\"></a> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import { Modal } from \"../../../Core/Common/Modal\";\r\nimport Template from \"DatabaseDesigner/Components/Assistant/GeneratedTablesTemplate.html\";\r\nimport { DatabaseModel } from \"../../../Core/CyberConfigManager/Models/DatabaseModel\";\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nko.templates[\"DatabaseDesigner/Components/Assistant/GeneratedTablesTemplate\"] = Template;\r\n\r\nexport class GeneratedTables extends Event {\r\n private _modal: Modal;\r\n private _database: DatabaseModel;\r\n constructor(database: DatabaseModel){\r\n super();\r\n this._database = database;\r\n }\r\n \r\n Show(){\r\n\r\n this._modal = new Modal({\r\n width: 450,\r\n minHeight: 800,\r\n minWidth: 300,\r\n maxHeight: 300\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper); \r\n this._modal.Show();\r\n }\r\n\r\n GetTemplateName(){\r\n return 'DatabaseDesigner/Components/Assistant/GeneratedTablesTemplate';\r\n }\r\n\r\n OkBtnClick(){\r\n this._modal.Close();\r\n this.Trigger('SAVE')\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <!-- ko foreach: $data._database.Tables.Items --> <form> <h4> <b data-bind=\\\"html: $data.Name\\\" class=\\\"new-lookup-name-text\\\"></b> </h4> <div class=\\\"table table-bordered\\\"> <div class=\\\"new-table-header\\\"> <div class=\\\"new-table-row\\\"> <div class=\\\"new-table-column\\\">Name</div> <div class=\\\"new-table-column\\\">Type</div> <div class=\\\"new-table-column\\\"></div> </div> </div> <div class=\\\"new-table-body\\\"> <!-- ko foreach: $data.Fields.Items --> <div class=\\\"new-table-row\\\"> <div data-bind=\\\"html: $data.Name\\\" class=\\\"new-table-column new-table-name-column\\\"></div> <div data-bind=\\\"html: $data.TypeName\\\" class=\\\"new-table-column\\\"></div> <div class=\\\"new-table-column\\\"></div> </div> <!-- /ko --> </div> </div> </form> <!-- /ko --> <!-- ko foreach: $data._database.LinkTables.Items --> <form> <h4> <b data-bind=\\\"html: $data.Name\\\" class=\\\"new-lookup-name-text\\\"></b> </h4> <div class=\\\"table table-bordered\\\"> <div class=\\\"new-table-header\\\"> <div class=\\\"new-table-row\\\"> <div class=\\\"new-table-column\\\">Name</div> <div class=\\\"new-table-column\\\">Type</div> <div class=\\\"new-table-column\\\"></div> </div> </div> <div class=\\\"new-table-body\\\"> <!-- ko foreach: $data.Fields.Items --> <div class=\\\"new-table-row\\\"> <div data-bind=\\\"html: $data.Name\\\" class=\\\"new-table-column new-table-name-column\\\"></div> <div data-bind=\\\"html: $data.TypeName\\\" class=\\\"new-table-column\\\"></div> <div class=\\\"new-table-column\\\"></div> </div> <!-- /ko --> </div> </div> </form> <!-- /ko --> <input data-bind=\\\"click: $data.OkBtnClick.bind($data)\\\" type=\\\"button\\\" class=\\\"btn green\\\" value=\\\"Ok\\\"> </div>\";\n// Exports\nexport default code;","import { AITableDefinition } from \"./AITableDefinition\";\r\n\r\nexport class AIDBStructure{\r\n constructor(){\r\n this.Tables = [];\r\n }\r\n Tables: Array<AITableDefinition>;\r\n}","import { AIFieldDefinition } from \"./AIFieldDefinition\";\r\n\r\nexport class AITableDefinition{\r\n constructor(){\r\n this.Fields = [];\r\n }\r\n Name: string;\r\n Type: string;\r\n\r\n Fields: Array<AIFieldDefinition>;\r\n}","export class AIFieldDefinition{\r\n Name: string;\r\n Type: string;\r\n}","import { ColorPicker } from './../../../Core/GeneralProperties/Managers/ColorPicker/ColorPicker';\r\nimport { messages, Notifier } from './../../../Core/Common/Notifier';\r\nimport { BlockUI } from \"../../../Core/Common/BlockUi\";\r\nimport { Modal } from \"../../../Core/Common/Modal\";\r\nimport { AssistantApi } from \"./AssistantApi\";\r\n\r\nimport Template from \"DatabaseDesigner/Components/Assistant/AssistantTemplate.html\";\r\nimport { MessageDto } from \"./Models/MessageDto\";\r\nimport { DatabaseModel } from '../../Models/DatabaseDesignerModel';\r\nimport { GeneratedTables } from './GeneratedTables';\r\nimport {Event} from 'Core/Common/Event';\r\nimport { AIDBStructure } from './Models/AIDBStructure';\r\nimport { AITableDefinition } from './Models/AITableDefinition';\r\nimport { AIFieldDefinition } from './Models/AIFieldDefinition';\r\nimport { SortGroups, TABLE_TYPES } from 'Core/Constant';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\n\r\n\r\nko.templates[\"DatabaseDesigner/Components/Assistant/AssistantTemplate\"] = Template;\r\n\r\nexport enum AssistantModes{\r\n Database,\r\n Help\r\n}\r\n\r\nexport class Assistant extends Event {\r\n private _modal: Modal;\r\n private _messages: KnockoutObservableArray<MessageDto>;\r\n private _userInput: KnockoutObservable<string>;\r\n private _chatHistory: KnockoutComputed<string>;\r\n private _database: any;\r\n\r\n private _labels = LABELS;\r\n private _mode: AssistantModes;\r\n private _threadId: string;\r\n private _isShowApplyButton: boolean;\r\n private _welcomeText = `Hello, and welcome to Spheeres Assistant – your dedicated helper for all things Spheeres! I’m here to provide quick answers, guidance, and support to help you make the most of your experience with Spheeres.\r\n If you have questions or need assistance, just reach out – I'm here to help!\r\n Let’s make Spheeres work for you!`\r\n\r\n constructor({database, mode}: { database?: any, mode: AssistantModes }){\r\n super();\r\n this._mode = mode;\r\n this._database = database;\r\n this._isShowApplyButton = this._mode === AssistantModes.Database;\r\n this._userInput = ko.observable('');\r\n this._messages = ko.observableArray([]);\r\n \r\n this._chatHistory = ko.computed(()=>{\r\n let result = '';\r\n this._messages().forEach((message)=>{\r\n let msg = message.Content.replace(/\\n/g, '<br>') + '<br>';\r\n if(message.Role.toLowerCase() == 'user'){\r\n msg = '<b>'+ '-' + msg+'</b>';\r\n }\r\n result += msg;\r\n });\r\n return result;\r\n }); \r\n }\r\n\r\n async LoadData(){\r\n BlockUI.Block();\r\n \r\n if(this._mode === AssistantModes.Database){\r\n this.SerializeDbStructure();\r\n let prompt = await AssistantApi\r\n .AssistantMessage({ ChatHistory: [], Database: this.SerializeDbStructure() })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n }).fail((err)=>Notifier.Failed(err.message)); \r\n this._messages(prompt.Messages); \r\n }\r\n\r\n if(this._mode === AssistantModes.Help){\r\n let welcomeMessage = new MessageDto();\r\n welcomeMessage.Content = this._welcomeText;\r\n welcomeMessage.Role = 'assistant'; \r\n this._messages([welcomeMessage]);\r\n this._threadId = await AssistantApi\r\n .CreateThread()\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n }).fail((err)=>Notifier.Failed(err.message)); \r\n }\r\n\r\n }\r\n\r\n SerializeDbStructure(): AIDBStructure{\r\n let dbStructure = new AIDBStructure();\r\n let tables = [...this._database.Tables, ...this._database.LinkTables];\r\n\r\n _.each(tables, (table: any)=>{\r\n if(table.Name.startsWith('SYS_')){\r\n return;\r\n }\r\n \r\n let aiTable = this.BuildTable(table);\r\n aiTable.Type = this._database.Tables.indexOf(table) >= 0 ? TABLE_TYPES.Entity : TABLE_TYPES.Link;\r\n\r\n dbStructure.Tables.push(aiTable);\r\n })\r\n\r\n return dbStructure;\r\n }\r\n\r\n BuildTable(table){\r\n let aiTable = new AITableDefinition();\r\n aiTable.Name = table.Name;\r\n\r\n _.each(table.Fields, (field: any)=>{ \r\n if(!SortGroups.InCustom(field.Sort)){\r\n return;\r\n }\r\n let aiField = new AIFieldDefinition();\r\n aiField.Name = field.Name;\r\n aiField.Type = field.TypeName;\r\n aiTable.Fields.push(aiField);\r\n });\r\n return aiTable;\r\n }\r\n\r\n Show(){\r\n\r\n this._modal = new Modal({\r\n width: 450,\r\n minHeight: 600,\r\n minWidth: 600,\r\n maxHeight: 300\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper); \r\n this._modal.Show();\r\n this.LoadData();\r\n }\r\n\r\n GetTemplateName(){\r\n return 'DatabaseDesigner/Components/Assistant/AssistantTemplate';\r\n }\r\n\r\n async SendMessage(){\r\n BlockUI.Block();\r\n let newMessage = new MessageDto();\r\n newMessage.Content = this._userInput();\r\n newMessage.Role = 'user';\r\n let messages = [...this._messages(), newMessage]\r\n if(this._mode === AssistantModes.Database){\r\n let prompt = await AssistantApi.AssistantMessage({ ChatHistory: messages, Database: this.SerializeDbStructure() })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n }).fail((err)=>Notifier.Failed(err.message));\r\n \r\n this._messages(prompt.Messages);\r\n this._userInput('');\r\n }\r\n\r\n if(this._mode === AssistantModes.Help){\r\n let prompt = await AssistantApi.AssistantMessage2({ Message: this._userInput(), threadId: this._threadId })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n }).fail((err)=>Notifier.Failed(err.message));\r\n \r\n this._messages(prompt.Messages);\r\n this._userInput('');\r\n }\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n CreateTables(){\r\n BlockUI.Block();\r\n AssistantApi.GenerateStructure({ ChatHistory: this._messages(), Database: this.SerializeDbStructure() })\r\n .always(()=>BlockUI.Unblock())\r\n .fail((err)=>Notifier.Failed(err.message))\r\n .then((data)=>{\r\n this.ShowTablesModal(data);\r\n });\r\n }\r\n\r\n ShowTablesModal(json){\r\n let database = new DatabaseModel();\r\n database.FromJSON(json);\r\n\r\n let generatedTables = new GeneratedTables(database);\r\n generatedTables.On('SAVE', this, ()=>{\r\n this.Trigger('SAVE', database);\r\n this._modal.Close();\r\n });\r\n generatedTables.Show();\r\n }\r\n\r\n FormatMessage(message: MessageDto){\r\n return message.Content.replace(/\\n/g, '<br>');\r\n }\r\n}","import { Guid } from \"Core/Common/Guid\";\r\n\r\nexport class BaseModelClass {\r\n\tprotected _guid: string;\r\n\tprotected _isModified: boolean\r\n\tprotected _lifeStatusName;\r\n\r\n\tconstructor() {\r\n\t\tthis._guid = Guid.NewGuid();\r\n\t\tthis._isModified = false;\r\n\t}\r\n\r\n\tpublic get Guid() : string {\r\n\t\treturn this._guid;\r\n\t}\r\n\tpublic set Guid(v : string) {\r\n\t\tthis._guid = v;\r\n\t}\r\n\tpublic get IsModified() : boolean {\r\n\t\treturn this._isModified;\r\n\t}\r\n\tpublic set IsModified(v : boolean) {\r\n\t\tthis._isModified = v;\r\n\t}\r\n\r\n\tpublic get LifeStatusName() : string {\r\n\t\treturn this._lifeStatusName;\r\n\t}\r\n\tpublic set LifeStatusName(v : string) {\r\n\t\tthis._lifeStatusName = v;\r\n\t}\r\n}\r\n\r\nexport function BaseModel() {\r\n\tthis._guid = Guid.NewGuid();\r\n\tthis._isModified = false;\r\n\tthis._lifeStatusName = 4;\r\n};\r\n\r\nBaseModel.prototype.RegenerateGuid = function () {\r\n\tthis._guid = Guid.NewGuid();\r\n};\r\n\r\nObject.defineProperty(BaseModel.prototype, 'Guid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._guid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._guid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(BaseModel.prototype, 'IsModified', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._isModified;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._isModified = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(BaseModel.prototype, 'LifeStatusName', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._lifeStatusName;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._lifeStatusName = val;\r\n\t}\r\n});\r\n","import { Guid } from \"Core/Common/Guid\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function ClusterSettingsModel() {\r\n this._id = null;\r\n this._guid = Guid.NewGuid();\r\n\r\n this._leftTypeId = null;\r\n this._leftTypeGuid = null;\r\n\r\n this._rightTypeId = null;\r\n this._rightTypeGuid = null;\r\n\r\n this._leftStatusId = null;\r\n this._leftStatusGuid = null;\r\n\r\n this._rightStatusId = null;\r\n this._rightStatusGuid = null;\r\n\r\n this._relationTypeId = null;\r\n this._relationTypeGuid = null;\r\n\r\n this._clusterMode = null;\r\n};\r\n\r\nClusterSettingsModel.prototype.FromJSON = function (data) {\r\n this._id = data.Id;\r\n this._guid = data.Guid || this._guid;\r\n\r\n this._leftTypeId = data.LeftTypeId;\r\n this._leftTypeGuid = data.LeftTypeGuid;\r\n\r\n this._rightTypeId = data.RightTypeId;\r\n this._rightTypeGuid = data.RightTypeGuid;\r\n\r\n this._leftStatusId = data.LeftStatusId;\r\n this._leftStatusGuid = data.LeftStatusGuid;\r\n\r\n this._rightStatusId = data.RightStatusId;\r\n this._rightStatusGuid = data.RightStatusGuid;\r\n\r\n this._relationTypeId = data.RelationTypeId;\r\n this._relationTypeGuid = data.RelationTypeGuid;\r\n\r\n this._relationTypeValueId = data.RelationTypeValueId;\r\n this._relationTypeValueGuid = data.RelationTypeValueGuid;\r\n\r\n this._clusterMode = data.ClusterMode;\r\n};\r\n\r\nClusterSettingsModel.prototype.FromJSONArray = function (data) {\r\n var clusterSettingsList = new CollectionModel({ model: ClusterSettingsModel });\r\n\r\n for (var index = 0; index < data.length; index++) {\r\n var clusterSettings = new ClusterSettingsModel();\r\n\r\n clusterSettings.FromJSON(data[index]);\r\n clusterSettingsList.Add(clusterSettings);\r\n }\r\n\r\n return clusterSettingsList;\r\n};\r\n\r\nClusterSettingsModel.prototype.toJSON = function () {\r\n return {\r\n Id: this.Id,\r\n Guid: this.Guid,\r\n LeftTypeId: this.LeftTypeId,\r\n LeftTypeGuid: this.LeftTypeGuid,\r\n LeftStatusId: this.LeftStatusId,\r\n LeftStatusGuid: this.LeftStatusGuid,\r\n RightTypeId: this.RightTypeId,\r\n RightTypeGuid: this.RightTypeGuid,\r\n RightStatusId: this.RightStatusId,\r\n RightStatusGuid: this.RightStatusGuid,\r\n RelationTypeId: this.RelationTypeId,\r\n RelationTypeGuid: this.RelationTypeGuid,\r\n RelationTypeValueId: this.RelationTypeValueId,\r\n RelationTypeValueGuid: this.RelationTypeValueGuid,\r\n ClusterMode: this.ClusterMode,\r\n };\r\n};\r\n\r\nClusterSettingsModel.prototype.Reverse = function () {\r\n var newLeftTypeId = this._rightTypeId;\r\n var newRightTypeId = this._leftTypeId;\r\n var newLeftTypeGuid = this._rightTypeGuid;\r\n var newRightTypeGuid = this._leftTypeGuid;\r\n var newLeftStatusId = this._rightStatusId;\r\n var newRightStatusId = this._leftStatusId;\r\n var newLeftStatusGuid = this._rightStatusGuid;\r\n var newRightStatusGuid = this._leftStatusGuid;\r\n\r\n this._leftTypeId = newLeftTypeId;\r\n this._rightTypeId = newRightTypeId;\r\n this._leftTypeGuid = newLeftTypeGuid;\r\n this._rightTypeGuid = newRightTypeGuid;\r\n this._leftStatusId = newLeftStatusId;\r\n this._rightStatusId = newRightStatusId;\r\n this._leftStatusGuid = newLeftStatusGuid;\r\n this._rightStatusGuid = newRightStatusGuid;\r\n};\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'Guid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._guid;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'LeftTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeId;\r\n },\r\n set: function (value) {\r\n this._leftTypeId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'LeftTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeGuid;\r\n },\r\n set: function (value) {\r\n this._leftTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RightTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeId;\r\n },\r\n set: function (value) {\r\n this._rightTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RightTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeGuid;\r\n },\r\n set: function (value) {\r\n this._rightTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'LeftStatusId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftStatusId;\r\n },\r\n set: function (value) {\r\n this._leftStatusId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'LeftStatusGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftStatusGuid;\r\n },\r\n set: function (value) {\r\n this._leftStatusGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RightStatusId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightStatusId;\r\n },\r\n set: function (value) {\r\n this._rightStatusId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RightStatusGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightStatusGuid;\r\n },\r\n set: function (value) {\r\n this._rightStatusGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RelationTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._relationTypeId;\r\n },\r\n set: function (value) {\r\n this._relationTypeId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RelationTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._relationTypeGuid;\r\n },\r\n set: function (value) {\r\n this._relationTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RelationTypeValueId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._relationTypeValueId;\r\n },\r\n set: function (value) {\r\n this._relationTypeValueId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RelationTypeValueGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._relationTypeValueGuid;\r\n },\r\n set: function (value) {\r\n this._relationTypeValueGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'ClusterMode', {\r\n enumerable: true,\r\n get: function () {\r\n return this._clusterMode;\r\n },\r\n set: function (value) {\r\n this._clusterMode = value;\r\n }\r\n});","import * as _ from \"underscore\";\r\n\r\nexport class CollectionModel {\r\n private _items: Array<any>;\r\n private _type: any;\r\n\r\n constructor(options: any) {\r\n this._items = [];\r\n this._type = options.model;\r\n }\r\n\r\n Clone() {\r\n var result = new CollectionModel({ model: this._type });\r\n _.each(this._items, (item: any) => {\r\n result.Add(item.Clone());\r\n });\r\n return result;\r\n }\r\n\r\n toJSON(onlyModified: boolean) {\r\n var result = [];\r\n _.each(this._items, (item: any) => {\r\n var jsonData = item.toJSON(onlyModified);\r\n if (jsonData) {\r\n result.push(jsonData);\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n GetItemBy(property, val) {\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n if (item[property] === val) {\r\n return item;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n SetItemBy(property, val, object) {\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n if (item[property] === val) {\r\n this.Items[index] = object;\r\n }\r\n }\r\n }\r\n\r\n SetItemsToDeleteBy(property, val) {\r\n var items = [];\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n if (item[property] === val) {\r\n if (item._id !== 0) {\r\n item._isModified = true;\r\n item._lifeStatusName = 'Delete';\r\n items.push(item);\r\n }\r\n }\r\n else {\r\n items.push(item);\r\n }\r\n }\r\n this.Items = items;\r\n }\r\n\r\n SetItemsToDelete() {\r\n this.DeleteItemsBy('Id', 0);\r\n for (var index = 0; index < this.Items.length; index++) {\r\n this.Items[index]._isModified = true;\r\n this.Items[index]._lifeStatusName = 'Delete';\r\n }\r\n }\r\n\r\n DeleteItemBy(property, val) {\r\n var items = this.Items;\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n if (item[property] === val) {\r\n items.splice(index, 1);\r\n }\r\n }\r\n this.Items = items;\r\n }\r\n\r\n DeleteItemsBy(property, val) {\r\n var item = this.GetItemBy(property, val);\r\n while (item) {\r\n this.DeleteItemBy(property, val);\r\n item = this.GetItemBy(property, val);\r\n }\r\n }\r\n\r\n GetItemsBy(property, val) {\r\n var result = [];\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n if (item[property] === val) {\r\n result.push(item);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n GetItemsWhereIn(property, values) {\r\n var result = [];\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n if (_.contains(values, item[property])) {\r\n result.push(item);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n GetItemByProperties(propertyValuePairs) {\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n\r\n var allPropertiesMatched = true;\r\n for (\r\n var pairIndex = 0;\r\n pairIndex < propertyValuePairs.length;\r\n pairIndex++\r\n ) {\r\n var propertyValuePair = propertyValuePairs[pairIndex];\r\n\r\n if (item[propertyValuePair.Property] !== propertyValuePair.Value) {\r\n allPropertiesMatched = false;\r\n break;\r\n }\r\n }\r\n\r\n if (allPropertiesMatched) {\r\n return item;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n GetItemsByProperties(propertyValuePairs) {\r\n var result = [];\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n\r\n var allPropertiesMatched = true;\r\n for (\r\n var pairIndex = 0;\r\n pairIndex < propertyValuePairs.length;\r\n pairIndex++\r\n ) {\r\n var propertyValuePair = propertyValuePairs[pairIndex];\r\n\r\n if (item[propertyValuePair.Property] !== propertyValuePair.Value) {\r\n allPropertiesMatched = false;\r\n break;\r\n }\r\n }\r\n\r\n if (allPropertiesMatched) {\r\n result.push(item);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n OrderBy(property) {\r\n this._items = _.sortBy(this._items, function (item) {\r\n return item[property];\r\n });\r\n }\r\n\r\n Add(item) {\r\n if (item instanceof this._type) {\r\n item._index = this._items.length;\r\n this._items.push(item);\r\n } else {\r\n throw new Error(\"Invalid item type \");\r\n }\r\n }\r\n\r\n Count() {\r\n return this._items.reduce(function (prev, curr) {\r\n if (\r\n !_.find(prev, (el: any) => {\r\n return el._id === curr._id;\r\n })\r\n ) {\r\n prev.push(curr);\r\n }\r\n return prev;\r\n }, []).length;\r\n }\r\n\r\n ForEach(callback) {\r\n this._items.forEach(callback);\r\n }\r\n\r\n Reset() {\r\n this._items = [];\r\n }\r\n\r\n get Items(): Array<any> {\r\n return this._items;\r\n }\r\n\r\n set Items(val: Array<any>) {\r\n this._items = val;\r\n }\r\n}\r\n","import { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { FieldModel } from \"DatabaseDesigner/Models/FieldModel\";\r\nimport { LanguageModel } from \"DatabaseDesigner/Models/LanguageModel\";\r\nimport { LinkTableModel } from \"DatabaseDesigner/Models/LinkTableModel\";\r\nimport { TableModel } from \"DatabaseDesigner/Models/TableModel\";\r\nimport { TableBaseModel } from \"DatabaseDesigner/Models/TableBaseModel\";\r\nimport * as _ from 'underscore';\r\nimport { LifeStatusEnum } from \"common/life-status-enum\";\r\n\r\nexport function DatabaseModel() {\r\n this._DataBaseId = 0;\r\n this._tables = new CollectionModel({ model: TableModel });\r\n this._sortPosition = [];\r\n this._maxSort = 0;\r\n this._linkTables = new CollectionModel({ model: LinkTableModel });\r\n this._deletedLinkTables = new CollectionModel({ model: LinkTableModel });\r\n this._deletedSubTables = new CollectionModel({model: TableBaseModel});\r\n this._languages = new CollectionModel({ model: LanguageModel });\r\n this._isUpdateDatabaseRequired = false;\r\n BaseModel.apply(this);\r\n }\r\n ;\r\n DatabaseModel.prototype = Object.create(BaseModel.prototype);\r\n DatabaseModel.prototype.constructor = DatabaseModel;\r\n DatabaseModel.prototype.GetAllFields = function () {\r\n var fieldsCollection = new CollectionModel({ model: FieldModel });\r\n var fields = [];\r\n _.each(this.Tables.Items, function (table: any) {\r\n _.each(table.Fields.Items, function (field) {\r\n fields.push(field);\r\n });\r\n });\r\n fieldsCollection.Items = fields;\r\n return fieldsCollection;\r\n };\r\n DatabaseModel.prototype.GetTable = function (id, guid) {\r\n for (let entityTable of this.Tables.Items) {\r\n if (entityTable.Id === id || entityTable.Guid === guid) {\r\n return entityTable;\r\n }\r\n for (let subTable of entityTable.SubTables.Items) {\r\n if (subTable.Id === id || subTable.Guid === guid) {\r\n return subTable;\r\n }\r\n }\r\n }\r\n for (let linkTable of this.LinkTables.Items) {\r\n if (linkTable.Id === id || linkTable.Guid === guid) {\r\n return linkTable;\r\n }\r\n }\r\n for (let lookupTable of window['DatabaseDesigner'].Shared.lookupTables.Items) {\r\n if (lookupTable.Id === id || lookupTable.Guid === guid) {\r\n return lookupTable;\r\n }\r\n }\r\n return null;\r\n };\r\n DatabaseModel.prototype.toJSON = function (onlyModified) {\r\n var data: any = {};\r\n data.DatabaseId = this._DataBaseId;\r\n data.Tables = this._tables.toJSON(onlyModified);\r\n data.LinkTables = this._linkTables.toJSON(onlyModified);\r\n data.Languages = this._languages.toJSON(onlyModified);\r\n data.LookupTables = window['DatabaseDesigner'].Shared.lookupTables.toJSON(onlyModified);\r\n data.Roles = this.Roles;\r\n data.ExampleStatuses = window['DatabaseDesigner'].Shared.ExampleStatuses;\r\n return data;\r\n };\r\n DatabaseModel.prototype.FromJSON = function (data) {\r\n var self = this;\r\n this._DataBaseId = data.DatabaseId;\r\n \r\n _.each(data.Tables, (table) => {\r\n var model = new TableModel();\r\n model.FromJSON(table);\r\n self._tables.Add(model);\r\n });\r\n \r\n self._isUpdateDatabaseRequired = data.IsUpdateDatabaseRequired;\r\n self._tables.Items = _.sortBy(self._tables.Items, function (item: any) {\r\n return item.Sort;\r\n });\r\n self._tables.Items = _.groupBy(self._tables.Items, function (item: any) {\r\n return item.SubTypeId;\r\n });\r\n self._tables.Items = _.map(self._tables.Items, function (val, key) {\r\n return val;\r\n });\r\n self._tables.Items = _.flatten(self._tables.Items);\r\n _.each(self._tables.Items, function (item: any, index) {\r\n item._position = index;\r\n });\r\n this._maxSort = _.max(this._tables.Items, function (item) {\r\n return item.Sort;\r\n });\r\n this._maxSort = this._maxSort.Sort;\r\n _.each(data.LinkTables, function (table) {\r\n var model = new LinkTableModel();\r\n model.FromJSON(table);\r\n self.LinkTables.Add(model);\r\n });\r\n _.each(this.LinkTables.Items, function (table: any) {\r\n var leftTable = self.Tables.GetItemBy('Id', table.K1TableId);\r\n var rightTable = self.Tables.GetItemBy('Id', table.K2TableId);\r\n if (leftTable && rightTable) {\r\n table.K1TableGuid = leftTable.Guid;\r\n table.K2TableGuid = rightTable.Guid;\r\n }\r\n ;\r\n });\r\n this.DeletedLinkTables = LinkTableModel.prototype.FromJSONArray(data.DeletedLinkTables);\r\n this.DeletedSubTables = TableBaseModel.prototype.FromJSONArray(data.DeletedSubTables);\r\n //Fill matching guids\r\n var allFields = this.GetAllFields();\r\n _.each(this.Tables.Items, function (table: any) {\r\n var matchingFields = table.Fields.Items.filter(function (field) {\r\n return field.Matching;\r\n });\r\n _.each(matchingFields, function (field: any) {\r\n var currentEntityMatching = field.Matching.CurrentEntity;\r\n if (currentEntityMatching) {\r\n currentEntityMatching.MatchSubjectGuid = table.Guid;\r\n currentEntityMatching.MatchFieldsGuid = [field.Guid];\r\n }\r\n var linkedEntityMatching = field.Matching.LinkedEntity;\r\n if (linkedEntityMatching) {\r\n linkedEntityMatching.MatchSubjectGuid = self.Tables.GetItemBy('Id', linkedEntityMatching.MatchSubjectId).Guid;\r\n linkedEntityMatching.MatchFieldsGuid = allFields.GetItemsWhereIn('Id', linkedEntityMatching.MatchFieldsId).map(function (matchingField) {\r\n return matchingField.Guid;\r\n });\r\n }\r\n });\r\n });\r\n _.each(data.Languages, function (table) {\r\n var model = new LanguageModel();\r\n model.FromJSON(table);\r\n self._languages.Add(model);\r\n });\r\n this._matchingModes = data.MatchingModes;\r\n };\r\n DatabaseModel.prototype.GetLinkTableByTableGuids = function (k1Guid, k2Guid) {\r\n return _.find(this.LinkTables.Items, function (item: any) {\r\n if (((item.K1TableGuid === k1Guid && item.K2TableGuid === k2Guid) || (item.K2TableGuid === k1Guid && item.K1TableGuid === k2Guid)) && item.LifeStatusName !== LifeStatusEnum.Delete) {\r\n return item;\r\n }\r\n });\r\n };\r\n DatabaseModel.prototype.GetSubTable = function (id, guid) {\r\n var subTables = _.flatten(this._tables.Items.map(function (table) {\r\n return table.SubTables.Items;\r\n }));\r\n return _.find(subTables, function (subTable) {\r\n return subTable.Id === id || subTable.Guid === guid;\r\n });\r\n };\r\n Object.defineProperty(DatabaseModel.prototype, 'Tables', {\r\n enumerable: true,\r\n get: function () {\r\n return this._tables;\r\n },\r\n set: function (val) {\r\n this._tables = val;\r\n }\r\n });\r\n Object.defineProperty(DatabaseModel.prototype, 'IsUpdateDatabaseRequired', {\r\n get: function () {\r\n return this._isUpdateDatabaseRequired;\r\n }\r\n });\r\n Object.defineProperty(DatabaseModel.prototype, 'LinkTables', {\r\n enumerable: true,\r\n get: function () {\r\n return this._linkTables;\r\n },\r\n set: function (val) {\r\n this._linkTables = val;\r\n }\r\n });\r\n Object.defineProperty(DatabaseModel.prototype, 'DeletedLinkTables', {\r\n enumerable: true,\r\n get: function () {\r\n return this._deletedLinkTables;\r\n },\r\n set: function (val) {\r\n this._deletedLinkTables = val;\r\n }\r\n });\r\n Object.defineProperty(TableModel.prototype, 'DeletedSubTables', {\r\n enumerable: true,\r\n get: function () {\r\n return this._deletedSubTables;\r\n },\r\n set: function (val) {\r\n this._deletedSubTables = val;\r\n }\r\n });\r\n Object.defineProperty(DatabaseModel.prototype, 'Languages', {\r\n enumerable: true,\r\n get: function () {\r\n return this._languages;\r\n },\r\n set: function (val) {\r\n this._languages = val;\r\n }\r\n });","import clone from 'clone';\r\n\r\nimport { ClusterSettingsModel } from \"DatabaseDesigner/Models/ClusterSettingsModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models//CollectionModel\";\r\nimport { LinkEditorVisibilityModel } from \"DatabaseDesigner/Models/LinkEditorVisibilityModel\";\r\nimport { TranslationModel } from \"DatabaseDesigner/Models/TranslationModel\";\r\nimport * as moment from 'moment';\r\nimport { LifeStatusEnum } from \"common/life-status-enum\";\r\nimport { DATE_FORMATS } from \"Core/Constants/DateTimeFormats\"\r\nimport { FormatConverter } from \"FormatEditor/FormatConverter\";\r\nimport { BaseModel } from \"DatabaseDesigner/Models//BaseModel\";\r\nimport { TableFieldModel } from \"DatabaseDesigner/Models/TableFielModel\";\r\nimport { Guid } from \"../../Core/Common/Guid\";\r\n\r\nexport function FieldModel() {\r\n this._id = 0;\r\n this._name = '';\r\n this._typeId = 0;\r\n this._typeName = null;\r\n this._isPrimaryKey = false;\r\n this._isSystem = false;\r\n this._isRequired = false;\r\n this._isReadOnly = false;\r\n this._isIndexed = false;\r\n this._isVirtual = false;\r\n this._isGlobal = false;\r\n this._isTranslate = false;\r\n this._isModified = false;\r\n this._isHidden = false;\r\n this._isOptional = false;\r\n this._isClustered = false;\r\n this._isUnique = false;\r\n this._flags = 0;\r\n this._calculatedExpression = null;\r\n this._memo = '';\r\n this._size = 0;\r\n this._formatId = 0;\r\n this._guid = Guid.NewGuid();\r\n this._tableFiels = new CollectionModel({ model: TableFieldModel });\r\n this._linkEditorVisibilitySettings = new CollectionModel({ model: LinkEditorVisibilityModel });\r\n this._defaultValue = '';\r\n this._hasDefaultValue = true;\r\n this._sort = 0;\r\n this._icon = '';\r\n this._iconType = '';\r\n this._iconId = null;\r\n this._iconImage = null;\r\n this._lifeStatusName = null;\r\n this._translations = new CollectionModel({ model: TranslationModel });\r\n this._translationsMemo = new CollectionModel({ model: TranslationModel });\r\n this._oldName = '';\r\n this._oldLifeStatusName = '';\r\n this._propertyFieldId = null;\r\n this._propertyFieldGuid = null;\r\n this._propertyModeId = null;\r\n this._matching = null;\r\n this._clusterSettings = new CollectionModel({ model: ClusterSettingsModel });\r\n this._allowCustomValue = false;\r\n this._allowCreatingRecords = false;\r\n this._filterSubTable = false;\r\n this._filterSubTableFieldId = null;\r\n this._filterSubTableFieldGuid = null;\r\n this._filterSubTableKseq = false;\r\n this._reference = null;\r\n this._referenceGuid = null;\r\n this._isEditEnabled = false;\r\n this._hyperlinkEntity = 0;\r\n this._hyperlinkEntityGuid = '';\r\n this._hyperlinkPkey = 0;\r\n this._hyperlinkPkeyGuid = '';\r\n this._filterByField= 0;\r\n this._filterByFieldGuid = '';\r\n this.SortDescription = false;\r\n this.SequenceValue = null;\r\n\r\n BaseModel.apply(this);\r\n};\r\n\r\nFieldModel.prototype = Object.create(BaseModel.prototype);\r\nFieldModel.prototype.constructor = FieldModel;\r\n\r\nFieldModel.prototype.toJSON = function (onlyModified) {\r\n var isFieldRestored = this._oldLifeStatusName === LifeStatusEnum.Delete && this.LifeStatusName === LifeStatusEnum.Enabled;\r\n var name = this.Id == 0 || isFieldRestored ? this.Name : this._oldName;\r\n\r\n if (onlyModified && !this._isModified) {\r\n return null;\r\n }\r\n\r\n var isFullDateTime = moment(this.DefaultValue, DATE_FORMATS.FULL_DATETIME.Format).format(DATE_FORMATS.FULL_DATETIME.Format) === this.DefaultValue;\r\n var isLongTime = moment(this.DefaultValue, DATE_FORMATS.LONG_TIME.Format).format(DATE_FORMATS.LONG_TIME.Format) === this.DefaultValue;\r\n\r\n if (onlyModified && this.TypeName === 'DateTime' && isFullDateTime) {\r\n this.DefaultValue = moment(this.DefaultValue, DATE_FORMATS.FULL_DATETIME.Format).utc().format(DATE_FORMATS.FULL_DATETIME.Format);\r\n } else if (onlyModified && this.TypeName === 'Time' && isLongTime) {\r\n this.DefaultValue = moment(this.DefaultValue, DATE_FORMATS.LONG_TIME.Format).utc().format(DATE_FORMATS.LONG_TIME.Format);\r\n }\r\n\r\n return {\r\n Id: this.Id,\r\n Name: name,\r\n TypeId: this.TypeId,\r\n TypeName: this.TypeName,\r\n IsPrimaryKey: this.IsPrimaryKey,\r\n IsSystem: this.IsSystem,\r\n IsRequired: this.IsRequired,\r\n IsReadOnly: this.IsReadOnly,\r\n IsIndexed: this.IsIndexed,\r\n IsVirtual: this.IsVirtual,\r\n IsTranslate: this.IsTranslate,\r\n IsGlobal: this.IsGlobal,\r\n IsModified: this.IsModified,\r\n IsHidden: this.IsHidden,\r\n IsOptional: this.IsOptioanl,\r\n IsClustered: this.IsClustered,\r\n IsUnique: this.IsUnique,\r\n Flags: this.Flags,\r\n Memo: this.Memo,\r\n Size: this.Size,\r\n CalculatedExpression: this.CalculatedExpression,\r\n FormatId: this.FormatId,\r\n Sort: this.Sort,\r\n Icon: this.Icon,\r\n IconId: this.IconId,\r\n IconImage: this.IconImage,\r\n LifeStatusName: this.LifeStatusName,\r\n PropertyFieldId: this.PropertyFieldId,\r\n PropertyFieldGuid: this.PropertyFieldGuid,\r\n PropertyModeId: this.PropertyModeId,\r\n LinkEditorVisibilitySettings: this.LinkEditorVisibilitySettings.toJSON(),\r\n ClusterSettings: this.ClusterSettings.toJSON(),\r\n TableFiels: this.TableFiels.toJSON(onlyModified),\r\n Translations: this.Translations.toJSON(),\r\n MemoTranslations: this.MemoTranslations.toJSON(),\r\n DefaultValue: this.DefaultValue,\r\n HasDefaultValue: this.HasDefaultValue,\r\n Guid: this._guid,\r\n Matching: this._matching,\r\n AllowCustomValue: this._allowCustomValue,\r\n AllowCreatingRecords: this._allowCreatingRecords,\r\n FilterSubTable: this._filterSubTable,\r\n FilterSubTableFieldId: this._filterSubTableFieldId,\r\n FilterSubTableFieldGuid: this._filterSubTableFieldGuid,\r\n FilterSubTableKseq: this._filterSubTableKseq,\r\n Reference: this._reference,\r\n ReferenceGuid: this._referenceGuid,\r\n HyperlinkEntity: this._hyperlinkEntity,\r\n HyperlinkEntityGuid: this._hyperlinkEntityGuid,\r\n HyperlinkPkey: this._hyperlinkPkey,\r\n HyperlinkPkeyGuid: this._hyperlinkPkeyGuid,\r\n FilterByField: this._filterByField,\r\n FilterByFieldGuid: this._filterByFieldGuid,\r\n SortDescription: this._sortDescription,\r\n SequenceValue: this.SequenceValue\r\n };\r\n};\r\n\r\nFieldModel.prototype.FromJSON = function (data) {\r\n this.Id = data.Id;\r\n this.Name = data.Name;\r\n this.TypeId = data.TypeId;\r\n this.TypeName = data.TypeName;\r\n this.IsPrimaryKey = data.IsPrimaryKey;\r\n this.IsSystem = data.IsSystem;\r\n this.IsRequired = data.IsRequired;\r\n this.IsReadOnly = data.IsReadOnly;\r\n this.IsIndexed = data.IsIndexed;\r\n this.IsVirtual = data.IsVirtual;\r\n this.IsTranslate = data.IsTranslate;\r\n this.IsGlobal = data.IsGlobal;\r\n this.IsHidden = data.IsHidden;\r\n this.IsOptional = data.IsOptional;\r\n this.IsClustered = data.IsClustered;\r\n this.IsUnique = data.IsUnique;\r\n this.Flags = data.Flags;\r\n this.Memo = data.Memo;\r\n this.Size = data.Size;\r\n this.FormatId = data.FormatId;\r\n this.CalculatedExpression = data.CalculatedExpression;\r\n this.Sort = data.Sort;\r\n this.Icon = data.Icon;\r\n this.IconType = data.IconType;\r\n this.IconId = data.IconId;\r\n this.IconImage = data.IconImage;\r\n this.LifeStatusName = data.LifeStatusName;\r\n this.PropertyFieldId = data.PropertyFieldId;\r\n this.PropertyModeId = data.PropertyModeId;\r\n this._tableFiels = TableFieldModel.prototype.FromJSONArray(data.TableFiels);\r\n this._translations = TranslationModel.prototype.FromJSONArray(data.Translations);\r\n this._translationsMemo = TranslationModel.prototype.FromJSONArray(data.MemoTranslations);\r\n this.Reference = data.Reference;\r\n this.ReferenceGuid = data.ReferenceGuid;\r\n this.HyperlinkEntity = data.HyperlinkEntity;\r\n this.HyperlinkEntityGuid = data.HyperlinkEntityGuid;\r\n this.HyperlinkPkey = data.HyperlinkPkey;\r\n this.HyperlinkPkeyGuid = data.HyperlinkPkeyGuid;\r\n this.FilterByField = data.FilterByField;\r\n this.FitlerByFieldGuid = data.FitlerByFieldGuid;\r\n this.SortDescription = data.SortDescription;\r\n this.SequenceValue = data.SequenceValue;\r\n\r\n var isFullDateTime = moment(data.DefaultValue, DATE_FORMATS.FULL_DATETIME.Format).format(DATE_FORMATS.FULL_DATETIME.Format) === data.DefaultValue;\r\n var isLongTime = moment(data.DefaultValue, DATE_FORMATS.LONG_TIME.Format).format(DATE_FORMATS.LONG_TIME.Format) === data.DefaultValue;\r\n\r\n if (data.TypeName === 'DateTime' && isFullDateTime) {\r\n this.DefaultValue = moment(FormatConverter.CorrectTimezone(data.DefaultValue)).format(DATE_FORMATS.FULL_DATETIME.Format);\r\n } else if (data.TypeName === 'Time' && isLongTime) {\r\n this.DefaultValue = moment.utc(data.DefaultValue, DATE_FORMATS.LONG_TIME.Format).local().format(DATE_FORMATS.LONG_TIME.Format);\r\n } else {\r\n this.DefaultValue = data.DefaultValue;\r\n }\r\n\r\n this.HasDefaultValue = data.HasDefaultValue;\r\n this._oldName = this.Name;\r\n this._oldLifeStatusName = this.LifeStatusName;\r\n this.Matching = data.Matching;\r\n this.ClusterSettings = ClusterSettingsModel.prototype.FromJSONArray(data.ClusterSettings);\r\n this.AllowCustomValue = data.AllowCustomValue;\r\n this.AllowCreatingRecords = data.AllowCreatingRecords;\r\n this.FilterSubTable = data.FilterSubTable;\r\n this.FilterSubTableFieldId = data.FilterSubTableFieldId;\r\n this.FilterSubTableFieldGuid = data.FilterSubTableFieldGuid;\r\n this.FilterSubTableKseq = data.FilterSubTableKseq;\r\n this._linkEditorVisibilitySettings = LinkEditorVisibilityModel.prototype.FromJSONArray(data.LinkEditorVisibilitySettings);\r\n};\r\n\r\nFieldModel.prototype.Clone = function () {\r\n return clone(this);\r\n};\r\n\r\nFieldModel.prototype.FromJSONArray = function (data) {\r\n var fieldList = new CollectionModel({ model: FieldModel });\r\n\r\n for (var index = 0; index < data.length; index++) {\r\n var fieldModel = new FieldModel();\r\n\r\n fieldModel.FromJSON(data[index]);\r\n fieldList.Add(fieldModel);\r\n }\r\n\r\n return fieldList;\r\n};\r\n\r\nFieldModel.prototype.CreateNewField = function (fieldConfig) {\r\n var newField = this.Clone();\r\n\r\n Object.keys(fieldConfig).forEach(function (key) {\r\n if (fieldConfig.hasOwnProperty(key)) {\r\n newField[key] = fieldConfig[key];\r\n }\r\n });\r\n\r\n newField.Id = 0;\r\n newField.RegenerateGuid();\r\n\r\n newField.TableFiels.Items = this.TableFiels.GetItemsBy('TableTypeGuid', '-');\r\n newField.TableFiels.Items.forEach(function (item) {\r\n item.RegenerateGuid();\r\n });\r\n\r\n newField.IsModified = true;\r\n return newField;\r\n};\r\n\r\nFieldModel.prototype.CreateDefaultTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n\r\n self._translations = new CollectionModel({ model: TranslationModel });\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n\r\n translation.Language = language;\r\n self._translations.Add(translation);\r\n });\r\n }\r\n};\r\n\r\nFieldModel.prototype.CreateDefaultMemoTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n\r\n self._translationsMemo = new CollectionModel({ model: TranslationModel });\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n\r\n translation.Language = language;\r\n self._translationsMemo.Add(translation);\r\n });\r\n }\r\n};\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n },\r\n set: function (val) {\r\n this._id = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Name', {\r\n enumerable: true,\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (val) {\r\n this._name = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Memo', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memo;\r\n },\r\n set: function (val) {\r\n this._memo = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'TypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._typeId;\r\n },\r\n set: function (val) {\r\n this._typeId = parseInt(val);\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'TypeName', {\r\n enumerable: true,\r\n get: function () {\r\n return this._typeName;\r\n },\r\n set: function (val) {\r\n this._typeName = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsPrimaryKey', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isPrimaryKey;\r\n },\r\n set: function (val) {\r\n this._isPrimaryKey = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsOptional', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isOptional;\r\n },\r\n set: function (val) {\r\n this._isOptional = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsSystem', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isSystem;\r\n },\r\n set: function (val) {\r\n this._isSystem = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsRequired', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isRequired;\r\n },\r\n set: function (val) {\r\n this._isRequired = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsReadOnly', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isReadOnly;\r\n },\r\n set: function (val) {\r\n this._isReadOnly = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsIndexed', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isIndexed;\r\n },\r\n set: function (val) {\r\n this._isIndexed = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsVirtual', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isVirtual;\r\n },\r\n set: function (val) {\r\n this._isVirtual = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsGlobal', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isGlobal;\r\n },\r\n set: function (val) {\r\n this._isGlobal = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsTranslate', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isTranslate;\r\n },\r\n set: function (val) {\r\n this._isTranslate = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsHidden', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isHidden;\r\n },\r\n set: function (val) {\r\n this._isHidden = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsClustered', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isClustered;\r\n },\r\n set: function (val) {\r\n this._isClustered = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsUnique', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isUnique;\r\n },\r\n set: function (val) {\r\n this._isUnique = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Flags', {\r\n enumerable: true,\r\n get: function () {\r\n return this._flags;\r\n },\r\n set: function (val) {\r\n this._flags = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsNew', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id === 0;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Size', {\r\n enumerable: true,\r\n get: function () {\r\n return this._size;\r\n },\r\n set: function (val) {\r\n this._size = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'CalculatedExpression', {\r\n enumerable: true,\r\n get: function () {\r\n return this._calculatedExpression;\r\n },\r\n set: function (val) {\r\n this._calculatedExpression = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'TableFiels', {\r\n enumerable: true,\r\n get: function () {\r\n return this._tableFiels;\r\n },\r\n set: function (val) {\r\n this._tableFiels = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'LinkEditorVisibilitySettings', {\r\n enumerable: true,\r\n get: function () {\r\n return this._linkEditorVisibilitySettings;\r\n },\r\n set: function (value) {\r\n this._linkEditorVisibilitySettings = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Guid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._guid;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'DefaultValue', {\r\n enumerable: true,\r\n get: function () {\r\n return this._defaultValue;\r\n },\r\n set: function (val) {\r\n this._defaultValue = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'HasDefaultValue', {\r\n enumerable: true,\r\n get: function () {\r\n return this._hasDefaultValue;\r\n },\r\n set: function (val) {\r\n this._hasDefaultValue = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Sort', {\r\n enumerable: true,\r\n get: function () {\r\n return this._sort;\r\n },\r\n set: function (val) {\r\n this._sort = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'SortGroup', {\r\n enumerable: true,\r\n get: function () {\r\n if (_.includes(_.range(1000, 1999), this._sort)) {\r\n return 'Header';\r\n }\r\n if (_.includes(_.range(2000, 2999), this._sort)) {\r\n return 'OptionalHeader';\r\n }\r\n if (_.includes(_.range(3000, 7999), this._sort)) {\r\n return 'Custom';\r\n }\r\n if (_.includes(_.range(8000, 8999), this._sort)) {\r\n return 'OptionalFooter';\r\n }\r\n if (_.includes(_.range(9000, 9999), this._sort)) {\r\n return 'Footer';\r\n }\r\n if (_.includes([0], this._sort)) {\r\n return 'Undefined';\r\n }\r\n\r\n return null;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Icon', {\r\n enumerable: true,\r\n get: function () {\r\n return this._icon;\r\n },\r\n set: function (val) {\r\n this._icon = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IconType', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconType;\r\n },\r\n set: function (val) {\r\n this._iconType = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IconId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconId;\r\n },\r\n set: function (val) {\r\n this._iconId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IconImage', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconImage;\r\n },\r\n set: function (val) {\r\n this._iconImage = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Translations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translations;\r\n },\r\n set: function (val) {\r\n this._translations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'MemoTranslations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translationsMemo;\r\n },\r\n set: function (val) {\r\n this._translationsMemo = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'LifeStatusName', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lifeStatusName;\r\n },\r\n set: function (val) {\r\n this._lifeStatusName = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'PropertyFieldId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._propertyFieldId;\r\n },\r\n set: function (val) {\r\n this._propertyFieldId = val\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'PropertyFieldGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._propertyFieldGuid;\r\n },\r\n set: function (val) {\r\n this._propertyFieldGuid = val\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'PropertyModeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._propertyModeId;\r\n },\r\n set: function (val) {\r\n this._propertyModeId = val\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Matching', {\r\n enumerable: true,\r\n get: function () {\r\n return this._matching;\r\n },\r\n set: function (val) {\r\n this._matching = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'ClusterSettings', {\r\n enumerable: true,\r\n get: function () {\r\n return this._clusterSettings;\r\n },\r\n set: function (val) {\r\n this._clusterSettings = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'AllowCustomValue', {\r\n enumerable: true,\r\n get: function () {\r\n return this._allowCustomValue;\r\n },\r\n set: function (val) {\r\n this._allowCustomValue = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'AllowCreatingRecords', {\r\n enumerable: true,\r\n get: function () {\r\n return this._allowCreatingRecords;\r\n },\r\n set: function (val) {\r\n this._allowCreatingRecords = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'FilterSubTable', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filterSubTable;\r\n },\r\n set: function (val) {\r\n this._filterSubTable = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'FilterSubTableFieldId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filterSubTableFieldId;\r\n },\r\n set: function (val) {\r\n this._filterSubTableFieldId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'FilterSubTableFieldGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filterSubTableFieldGuid;\r\n },\r\n set: function (val) {\r\n this._filterSubTableFieldGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'FilterSubTableKseq', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filterSubTableKseq;\r\n },\r\n set: function (val) {\r\n this._filterSubTableKseq = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Reference', {\r\n enumerable: true,\r\n get: function () {\r\n return this._reference;\r\n },\r\n set: function (val) {\r\n this._reference = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'ReferenceGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._referenceGuid;\r\n },\r\n set: function (val) {\r\n this._referenceGuid = val;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(FieldModel.prototype, 'HyperlinkEntity', {\r\n enumerable: true,\r\n get: function () {\r\n return this._hyperlinkEntity;\r\n },\r\n set: function (val) {\r\n this._hyperlinkEntity = val;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(FieldModel.prototype, 'HyperlinkPkey', {\r\n enumerable: true,\r\n get: function () {\r\n return this._hyperlinkPkey;\r\n },\r\n set: function (val) {\r\n this._hyperlinkPkey = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'HyperlinkEntityGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._hyperlinkEntityGuid;\r\n },\r\n set: function (val) {\r\n this._hyperlinkEntityGuid = val;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(FieldModel.prototype, 'HyperlinkPkeyGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._hyperlinkPkeyGuid;\r\n },\r\n set: function (val) {\r\n this._hyperlinkPkeyGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'FilterByField', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filterByField;\r\n },\r\n set: function (val) {\r\n this._filterByField = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'FilterByFieldGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filterByFieldGuid;\r\n },\r\n set: function (val) {\r\n this._filterByFieldGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'SortDescription', {\r\n enumerable: true,\r\n get: function () {\r\n return this._sortDescription;\r\n },\r\n set: function (val) {\r\n this._sortDescription = val;\r\n }\r\n});","import { Guid } from \"Core/Common/Guid\";\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function KindModel() {\r\n this._id = null;\r\n this._guid = Guid.NewGuid();\r\n this._name = null;\r\n this._enabled = null;\r\n this._typeId = null;\r\n this._typeGuid = null;\r\n this._fields = [];\r\n\r\n BaseModel.call(this);\r\n}\r\n\r\nKindModel.prototype = Object.create(BaseModel.prototype);\r\nKindModel.prototype.constructor = KindModel;\r\n\r\nKindModel.prototype.FromJSONArray = function (kinds) {\r\n var kindsList = new CollectionModel({ model: KindModel });\r\n\r\n _.each(kinds, function (kind) {\r\n var model = new KindModel();\r\n model.FromJSON(kind);\r\n kindsList.Add(model);\r\n });\r\n\r\n return kindsList;\r\n};\r\n\r\nKindModel.prototype.FromJSON = function (data) {\r\n this._id = data.Id;\r\n this._name = data.Name;\r\n this._enabled = data.Enabled;\r\n this._fields = [];\r\n\r\n for (var fieldIndex = 0; fieldIndex < data.Fields.length; fieldIndex++) {\r\n var field = data.Fields[fieldIndex];\r\n\r\n this._fields.push({\r\n FieldId: field.FieldId,\r\n ShowModeId: field.ShowModeId\r\n });\r\n }\r\n};\r\n\r\nKindModel.prototype.toJSON = function () {\r\n return {\r\n Id: this._id,\r\n Guid: this._guid,\r\n Name: this._name,\r\n Enabled: this._enabled,\r\n Fields: this._fields\r\n };\r\n};\r\n\r\nObject.defineProperty(KindModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n },\r\n set: function (val) {\r\n this._id = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(KindModel.prototype, 'Name', {\r\n enumerable: true,\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (val) {\r\n this._name = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(KindModel.prototype, 'Enabled', {\r\n enumerable: true,\r\n get: function () {\r\n return this._enabled;\r\n },\r\n set: function (val) {\r\n this._enabled = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(KindModel.prototype, 'Fields', {\r\n enumerable: true,\r\n get: function () {\r\n return this._fields;\r\n },\r\n set: function (val) {\r\n this._fields = val;\r\n }\r\n});","import { ModelState } from \"Core/Common/Enums/ModelState\";\r\nimport { TranslationManager } from \"Core/Components/Translation/TranslationManager\";\r\n\r\nexport function LanguageModel() {\r\n\tthis._k_Language = 0;\r\n\tthis._name = \"\";\r\n\tthis._shortName = \"\";\r\n\tthis._flagBase64 = \"\";\r\n\tthis._state = ModelState.New;\r\n\tthis._enabled = 0;\r\n\tthis._fileName = \"\";\r\n\tthis._fileType = \"\";\r\n};\r\n\r\nLanguageModel.prototype.FromJSON = function (data) {\r\n\tthis._name = data.Name;\r\n\tthis._shortName = data.ShortName;\r\n\tthis._flagBase64 = data.FlagBase64;\r\n\tthis._k_Language = data.K_Language;\r\n\tthis._state = data.State;\r\n\tthis._enabled = data.Enabled;\r\n\tthis._fileName = data.FileName;\r\n\tthis._fileType = data.FileType;\r\n}\r\n\r\nLanguageModel.prototype.toJSON = function () {\r\n\tconst kLanguage = this._state === ModelState.New ? 0 : this._k_Language;\r\n\treturn {\r\n\t\tK_Language: kLanguage,\r\n\t\tShortName: this._shortName,\r\n\t\tName: this._name,\r\n\t\tEnabled: this._enabled,\r\n\t\tState: this._state,\r\n\t\tFlagBase64: this.FlagBase64,\r\n\t\tFileName: this._fileName,\r\n\t\tFileType: this._fileType\r\n\t};\r\n}\r\n\r\nLanguageModel.prototype.Clone = function () {\r\n\tvar language = new LanguageModel();\r\n\tlanguage.K_Language = this._k_Language;\r\n\tlanguage.ShortName = this._shortName;\r\n\tlanguage.Name = this._name;\r\n\tlanguage.Enabled = this._enabled;\r\n\tlanguage.State = this._state;\r\n\tlanguage.Attachment = this._attachment;\r\n\tlanguage.FlagBase64 = this._flagBase64;\r\n\tlanguage.FileName = this._fileName;\r\n\tlanguage.FileType = this._fileType;\r\n\r\n\treturn language;\r\n}\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'K_Language', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._k_Language;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._k_Language = val;\r\n\t}\r\n});\r\n\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'Name', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\tlet lang = TranslationManager.Instance.GetLanguageById(this.K_Language);\r\n\t\tif(lang){\r\n\t\t\treturn lang.Name;\r\n\t\t}\r\n\t\treturn this._name;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._name = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'ShortName', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\tlet lang = TranslationManager.Instance.GetLanguageById(this.K_Language);\r\n\t\tif(lang){\r\n\t\t\treturn lang.ShortName;\r\n\t\t}\r\n\t\treturn this._shortName;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._shortName = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'State', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._state;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._state = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'Enabled', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._enabled;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._enabled = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'FlagBase64', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\r\n\t\tif(this._flagBase64){\r\n\t\t\treturn this._flagBase64;\r\n\t\t}\r\n\r\n\t\tlet lang = TranslationManager.Instance.GetLanguageById(this.K_Language);\r\n\t\tif(lang){\r\n\t\t\treturn lang.Flag;\r\n\t\t}\r\n\t\t\r\n\t\treturn null;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._flagBase64 = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'FileName', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._fileName;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._fileName = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'FileType', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._fileType;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._fileType = val;\r\n\t}\r\n});","import { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { TranslationModel } from \"DatabaseDesigner/Models/TranslationModel\";\r\nimport * as _ from 'underscore';\r\nimport { Guid } from \"Core/Common/Guid\";\r\n\r\nexport function LifeStatusModel() {\r\n this._guid = Guid.NewGuid();\r\n\r\n this._id = null;\r\n this._name = null;\r\n this._exampleId = null;\r\n this._translations = new CollectionModel({ model: TranslationModel });\r\n\r\n BaseModel.apply(this);\r\n};\r\n\r\nLifeStatusModel.prototype = Object.create(BaseModel.prototype);\r\nLifeStatusModel.prototype.constructor = LifeStatusModel;\r\n\r\nLifeStatusModel.prototype.FromJSON = function (data) {\r\n this._id = data.Id;\r\n this._name = data.Name;\r\n this._translations = TranslationModel.prototype.FromJSONArray(data.Translations);\r\n};\r\n\r\nLifeStatusModel.prototype.toJSON = function () {\r\n return {\r\n Guid: this.Guid,\r\n Id: this.Id,\r\n Name: this.Name,\r\n ExampleId: this.ExampleId,\r\n DisplaySort: this.DisplaySort,\r\n Translations: JSON.stringify(this.Translations && this.Translations),\r\n };\r\n};\r\n\r\nLifeStatusModel.prototype.CreateDefaultTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._translations = new CollectionModel({ model: TranslationModel });\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n translation.Language = language;\r\n self._translations.Add(translation);\r\n });\r\n }\r\n};\r\n\r\nLifeStatusModel.prototype.FromJSONArray = function (data) {\r\n var lifeStatusesList = new CollectionModel({ model: LifeStatusModel });\r\n\r\n for (var index = 0; index < data.length; index++) {\r\n var lifeStatusModel = new LifeStatusModel();\r\n\r\n lifeStatusModel.FromJSON(data[index]);\r\n lifeStatusesList.Add(lifeStatusModel);\r\n }\r\n\r\n return lifeStatusesList;\r\n};\r\n\r\nObject.defineProperty(LifeStatusModel.prototype, 'Guid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._guid;\r\n },\r\n set: function (value) {\r\n this._guid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LifeStatusModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n },\r\n set: function (value) {\r\n this._id = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LifeStatusModel.prototype, 'Name', {\r\n enumerable: true,\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (value) {\r\n this._name = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LifeStatusModel.prototype, 'Translations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translations;\r\n },\r\n set: function (value) {\r\n this._translations = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LifeStatusModel.prototype, 'ExampleId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._exampleId;\r\n },\r\n set: function (value) {\r\n this._exampleId = value;\r\n }\r\n});\r\n","import { Guid } from \"Core/Common/Guid\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function LinkEditorTabSettingsModel() {\r\n this._guid = Guid.NewGuid();\r\n\r\n this._leftTypeId = null;\r\n this._leftTypeGuid = null;\r\n\r\n this._rightTypeId = null;\r\n this._rightTypeGuid = null;\r\n\r\n this._leftStatusId = null;\r\n this._leftStatusGuid = null;\r\n\r\n this._rightStatusId = null;\r\n this._rightStatusGuid = null;\r\n\r\n this._tableId = null;\r\n this._tableGuid = null;\r\n\r\n this._targetTableId = null;\r\n this._targetTableGuid = null;\r\n\r\n this._lookupFieldId = null;\r\n this._lookupFieldGuid = null;\r\n}\r\n\r\nLinkEditorTabSettingsModel.prototype.FromJSON = function (data) {\r\n this._leftTypeId = data.LeftTypeId;\r\n this._leftTypeGuid = data.LeftTypeGuid;\r\n\r\n this._rightTypeId = data.RightTypeId;\r\n this._rightTypeGuid = data.RightTypeGuid;\r\n\r\n this._leftStatusId = data.LeftStatusId;\r\n this._leftStatusGuid = data.LeftStatusGuid;\r\n\r\n this._rightStatusId = data.RightStatusId;\r\n this._rightStatusGuid = data.RightStatusGuid;\r\n\r\n this._tableId = data.TableId;\r\n this._tableGuid = data.TableGuid;\r\n\r\n this._targetTableId = data.TargetTableId;\r\n this._targetTableGuid = data.TargetTableGuid;\r\n\r\n this._lookupFieldId = data.LookupFieldId;\r\n this._lookupFieldGuid = data.LookupFieldGuid;\r\n};\r\n\r\nLinkEditorTabSettingsModel.prototype.toJSON = function () {\r\n return {\r\n Guid: this.Guid,\r\n LeftTypeId: this.LeftTypeId,\r\n LeftTypeGuid: this.LeftTypeGuid,\r\n LeftStatusId: this.LeftStatusId,\r\n LeftStatusGuid: this.LeftStatusGuid,\r\n RightTypeId: this.RightTypeId,\r\n RightTypeGuid: this.RightTypeGuid,\r\n RightStatusId: this.RightStatusId,\r\n RightStatusGuid: this.RightStatusGuid,\r\n TableId: this.TableId,\r\n TableGuid: this.TableGuid,\r\n TargetTableId: this.TargetTableId,\r\n TargetTableGuid: this.TargetTableGuid,\r\n LookupFieldId: this.LookupFieldId,\r\n LookupFieldGuid: this.LookupFieldGuid\r\n };\r\n}\r\n\r\nLinkEditorTabSettingsModel.prototype.Reverse = function () {\r\n const newLeftTypeId = this._rightTypeId;\r\n const newRightTypeId = this._leftTypeId;\r\n const newLeftTypeGuid = this._rightTypeGuid;\r\n const newRightTypeGuid = this._leftTypeGuid;\r\n const newLeftStatusId = this._rightStatusId;\r\n const newRightStatusId = this._leftStatusId;\r\n const newLeftStatusGuid = this._rightStatusGuid;\r\n const newRightStatusGuid = this._leftStatusGuid;\r\n\r\n this._leftTypeId = newLeftTypeId;\r\n this._rightTypeId = newRightTypeId;\r\n this._leftTypeGuid = newLeftTypeGuid;\r\n this._rightTypeGuid = newRightTypeGuid;\r\n this._leftStatusId = newLeftStatusId;\r\n this._rightStatusId = newRightStatusId;\r\n this._leftStatusGuid = newLeftStatusGuid;\r\n this._rightStatusGuid = newRightStatusGuid;\r\n};\r\n\r\nLinkEditorTabSettingsModel.prototype.FromJSONArray = function (data) {\r\n const linkEditorTabSettingsList = new CollectionModel({ model: LinkEditorTabSettingsModel });\r\n\r\n for (let index = 0; index < data.length; index++) {\r\n const linkEditorVisibilityModel = new LinkEditorTabSettingsModel();\r\n\r\n linkEditorVisibilityModel.FromJSON(data[index]);\r\n linkEditorTabSettingsList.Add(linkEditorVisibilityModel);\r\n }\r\n\r\n return linkEditorTabSettingsList;\r\n};\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'Guid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._guid;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'LeftTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeId;\r\n },\r\n set: function (value) {\r\n this._leftTypeId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'LeftTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeGuid;\r\n },\r\n set: function (value) {\r\n this._leftTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'RightTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeId;\r\n },\r\n set: function (value) {\r\n this._rightTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'RightTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeGuid;\r\n },\r\n set: function (value) {\r\n this._rightTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'LeftStatusId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftStatusId;\r\n },\r\n set: function (value) {\r\n this._leftStatusId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'LeftStatusGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftStatusGuid;\r\n },\r\n set: function (value) {\r\n this._leftStatusGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'RightStatusId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightStatusId;\r\n },\r\n set: function (value) {\r\n this._rightStatusId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'RightStatusGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightStatusGuid;\r\n },\r\n set: function (value) {\r\n this._rightStatusGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'TableId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._tableId;\r\n },\r\n set: function (value) {\r\n this._tableId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'TableGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._tableGuid;\r\n },\r\n set: function (value) {\r\n this._tableGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'TargetTableId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._targetTableId;\r\n },\r\n set: function (value) {\r\n this._targetTableId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'TargetTableGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._targetTableGuid;\r\n },\r\n set: function (value) {\r\n this._targetTableGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'LookupFieldId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lookupFieldId;\r\n },\r\n set: function (value) {\r\n this._lookupFieldId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'LookupFieldGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lookupFieldGuid;\r\n },\r\n set: function (value) {\r\n this._lookupFieldGuid = value;\r\n }\r\n});\r\n","import { Guid } from \"Core/Common/Guid\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function LinkEditorVisibilityModel() {\r\n this._guid = Guid.NewGuid();\r\n\r\n this._leftTypeId = null;\r\n this._leftTypeGuid = null;\r\n\r\n this._rightTypeId = null;\r\n this._rightTypeGuid = null;\r\n\r\n this._leftKindId = null;\r\n this._leftKindGuid = null;\r\n\r\n this._rightKindId = null;\r\n this._rightKindGuid = null;\r\n\r\n this._leftStatusId = null;\r\n this._leftStatusGuid = null;\r\n\r\n this._rightStatusId = null;\r\n this._rightStatusGuid = null;\r\n\r\n this._fullWidth = false;\r\n this._fontStylesId = [];\r\n this._fontColor = null;\r\n}\r\n\r\nLinkEditorVisibilityModel.prototype.FromJSON = function (data) {\r\n this._leftTypeId = data.LeftTypeId;\r\n this._leftTypeGuid = data.LeftTypeGuid;\r\n\r\n this._rightTypeId = data.RightTypeId;\r\n this._rightTypeGuid = data.RightTypeGuid;\r\n\r\n this._leftKindId = data.LeftKindId;\r\n this._leftKindGuid = data.LeftKindGuid;\r\n\r\n this._rightKindId = data.RightKindId;\r\n this._rightKindGuid = data.RightKindGuid;\r\n\r\n this._leftStatusId = data.LeftStatusId;\r\n this._leftStatusGuid = data.LeftStatusGuid;\r\n\r\n this._rightStatusId = data.RightStatusId;\r\n this._rightStatusGuid = data.RightStatusGuid;\r\n\r\n this._fullWidth = data.FullWidth;\r\n this._fontStylesId = data.FontStylesId;\r\n this._fontColor = data.FontColor;\r\n};\r\n\r\nLinkEditorVisibilityModel.prototype.toJSON = function () {\r\n return {\r\n Guid: this.Guid,\r\n LeftTypeId: this.LeftTypeId,\r\n LeftTypeGuid: this.LeftTypeGuid,\r\n LeftKindId: this.LeftKindId,\r\n LeftKindGuid: this.LeftKindGuid,\r\n LeftStatusId: this.LeftStatusId,\r\n LeftStatusGuid: this.LeftStatusGuid,\r\n RightTypeId: this.RightTypeId,\r\n RightTypeGuid: this.RightTypeGuid,\r\n RightKindId: this.RightKindId,\r\n RightKindGuid: this.RightKindGuid,\r\n RightStatusId: this.RightStatusId,\r\n RightStatusGuid: this.RightStatusGuid,\r\n FullWidth: this.FullWidth,\r\n FontStylesId: this.FontStylesId,\r\n FontColor: this.FontColor\r\n };\r\n};\r\n\r\nLinkEditorVisibilityModel.prototype.Reverse = function () {\r\n var newLeftTypeId = this._rightTypeId;\r\n var newRightTypeId = this._leftTypeId;\r\n var newLeftTypeGuid = this._rightTypeGuid;\r\n var newRightTypeGuid = this._leftTypeGuid;\r\n var newLeftKindId = this._rightKindId;\r\n var newRightKindId = this._leftKindId;\r\n var newLeftKindGuid = this._rightKindGuid;\r\n var newRightKindGuid = this._leftKindGuid;\r\n var newLeftStatusId = this._rightStatusId;\r\n var newRightStatusId = this._leftStatusId;\r\n var newLeftStatusGuid = this._rightStatusGuid;\r\n var newRightStatusGuid = this._leftStatusGuid;\r\n\r\n this._leftTypeId = newLeftTypeId;\r\n this._rightTypeId = newRightTypeId;\r\n this._leftTypeGuid = newLeftTypeGuid;\r\n this._rightTypeGuid = newRightTypeGuid;\r\n this._leftKindId = newLeftKindId;\r\n this._rightKindId = newRightKindId;\r\n this._leftKindGuid = newLeftKindGuid;\r\n this._rightKindGuid = newRightKindGuid;\r\n this._leftStatusId = newLeftStatusId;\r\n this._rightStatusId = newRightStatusId;\r\n this._leftStatusGuid = newLeftStatusGuid;\r\n this._rightStatusGuid = newRightStatusGuid;\r\n};\r\n\r\nLinkEditorVisibilityModel.prototype.FromJSONArray = function (data) {\r\n var linkEditorVisibilityList = new CollectionModel({ model: LinkEditorVisibilityModel });\r\n\r\n for (var index = 0; index < data.length; index++) {\r\n var linkEditorVisibilityModel = new LinkEditorVisibilityModel();\r\n\r\n linkEditorVisibilityModel.FromJSON(data[index]);\r\n linkEditorVisibilityList.Add(linkEditorVisibilityModel);\r\n }\r\n\r\n return linkEditorVisibilityList;\r\n};\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'Guid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._guid;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'LeftTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeId;\r\n },\r\n set: function (value) {\r\n this._leftTypeId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'LeftTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeGuid;\r\n },\r\n set: function (value) {\r\n this._leftTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'RightTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeId;\r\n },\r\n set: function (value) {\r\n this._rightTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'RightTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeGuid;\r\n },\r\n set: function (value) {\r\n this._rightTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'LeftKindId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftKindId;\r\n },\r\n set: function (value) {\r\n this._leftKindId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'LeftKindGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftKindGuid;\r\n },\r\n set: function (value) {\r\n this._leftKindGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'RightKindId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightKindId;\r\n },\r\n set: function (value) {\r\n this._rightKindId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'RightKindGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightKindGuid;\r\n },\r\n set: function (value) {\r\n this._rightKindGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'LeftStatusId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftStatusId;\r\n },\r\n set: function (value) {\r\n this._leftStatusId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'LeftStatusGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftStatusGuid;\r\n },\r\n set: function (value) {\r\n this._leftStatusGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'RightStatusId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightStatusId;\r\n },\r\n set: function (value) {\r\n this._rightStatusId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'RightStatusGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightStatusGuid;\r\n },\r\n set: function (value) {\r\n this._rightStatusGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'FullWidth', {\r\n enumerable: true,\r\n get: function () {\r\n return this._fullWidth;\r\n },\r\n set: function (value) {\r\n this._fullWidth = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'FontStylesId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._fontStylesId;\r\n },\r\n set: function (value) {\r\n this._fontStylesId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'FontColor', {\r\n enumerable: true,\r\n get: function () {\r\n return this._fontColor;\r\n },\r\n set: function (value) {\r\n this._fontColor = value;\r\n }\r\n});","import clone from 'clone';\r\n\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { LinkEditorTabSettingsModel } from \"DatabaseDesigner/Models/LinkEditorTabSettingsModel\";\r\nimport { TableBaseModel } from \"DatabaseDesigner/Models/TableBaseModel\";\r\nimport { TableTypeModel } from \"DatabaseDesigner/Models/TableTypeModel\";\r\nimport { TranslationModel } from \"DatabaseDesigner/Models/TranslationModel\";\r\nimport {util} from \"../../libs/rappid/build/rappid\";\r\nimport string = util.format.string;\r\nimport {LanguageModel} from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\nimport {TranslationModel as MemoTranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\n\r\nexport function LinkTableModel() {\r\n this._k1TableId = 0;\r\n this._k2TableId = 0;\r\n this._k1TableGuid = 0;\r\n this._k1TableGuid = 0;\r\n this._linkListRelations = null;\r\n this._reversePassSecurity = false;\r\n this._oneParent = false;\r\n this._types = new CollectionModel({ model: TableTypeModel });\r\n this._linkEditorTabSettings = new CollectionModel({ model: LinkEditorTabSettingsModel });\r\n this._translations = new CollectionModel({ model: TranslationModel });\r\n this._memo = \"\";\r\n this._memoTranslations = new CollectionModel({ model: TranslationModel });\r\n\r\n TableBaseModel.apply(this);\r\n}\r\n\r\nLinkTableModel.prototype = Object.create(TableBaseModel.prototype);\r\nLinkTableModel.prototype.constructor = LinkTableModel;\r\nLinkTableModel.prototype.__super__ = TableBaseModel;\r\n\r\nLinkTableModel.prototype.Clone = function () {\r\n return clone(this);\r\n};\r\n\r\nLinkTableModel.prototype.FromJSONArray = function (tables) {\r\n var tableList = new CollectionModel({ model: LinkTableModel });\r\n _.each(tables, function (table) {\r\n var tableModel = new LinkTableModel();\r\n tableModel.FromJSON(table);\r\n tableList.Add(tableModel);\r\n });\r\n return tableList;\r\n}\r\n\r\nLinkTableModel.prototype.toJSON = function (onlyModified) {\r\n var result = this.__super__.prototype.toJSON.call(this, onlyModified);\r\n if (!result) {\r\n result = {};\r\n }\r\n result.K1TableId = this.K1TableId;\r\n result.K2TableId = this.K2TableId;\r\n result.K1TableGuid = this.K1TableGuid;\r\n result.K2TableGuid = this.K2TableGuid;\r\n result.ReversePassSecurity = this.ReversePassSecurity;\r\n result.OneParent = this.OneParent;\r\n result.LinkListRelations = this.LinkListRelations;\r\n result.Types = this.Types.toJSON(onlyModified);\r\n result.LinkEditorTabSettings = this.LinkEditorTabSettings.toJSON();\r\n result.Translations = this.Translations.toJSON();\r\n result.MemoTranslations = this.MemoTranslations;\r\n result.Memo = this.Memo;\r\n\r\n\r\n if (onlyModified && onlyModified === true) {\r\n if (this._isModified !== true) {\r\n result = null;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nLinkTableModel.prototype.FromJSON = function (table) {\r\n var self = this;\r\n\r\n self.__super__.prototype.FromJSON.call(this, table);\r\n self._k1TableId = table.K1TableId;\r\n self._k2TableId = table.K2TableId;\r\n self._reversePassSecurity = table.ReversePassSecurity;\r\n self._oneParent = table.OneParent;\r\n\r\n self._types = TableTypeModel.prototype.FromJSONArray(table.Types);\r\n self._linkEditorTabSettings = LinkEditorTabSettingsModel.prototype.FromJSONArray(table.LinkEditorTabSettings);\r\n self._translations = TranslationModel.prototype.FromJSONArray(table.Translations);\r\n self._memo = table.Memo;\r\n self._memoTranslations = table.MemoTranslations;\r\n\r\n\r\n _.each(self.Fields.Items, function (field: any) {\r\n _.each(field.TableFiels.Items, function (tableFiel: any) {\r\n var tableType = _.find(self.Types.Items, function (type: any) {\r\n return type.Id === tableFiel.TableTypeId\r\n });\r\n if (tableType) {\r\n tableFiel.TableTypeGuid = tableType.Guid;\r\n }\r\n });\r\n });\r\n};\r\n\r\nLinkTableModel.prototype.CreateDefaultTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._translations = new CollectionModel({ model: TranslationModel });\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n translation.Language = language;\r\n self._translations.Add(translation);\r\n });\r\n }\r\n}\r\n\r\nLinkTableModel.prototype.CreateMemoTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._memoTranslations = [];\r\n\r\n _.forEach(languages, function (language: LanguageModel) {\r\n var translation = new MemoTranslationModel();\r\n translation.Language = new LanguageModel(language.K_Language, language.Name, language.ShortName, language.Enabled, language.FlagBase64);\r\n translation.Translation = \"\";\r\n self._memoTranslations.push(translation);\r\n });\r\n }\r\n};\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'LinkListRelations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._linkListRelations;\r\n },\r\n set: function (val) {\r\n this._linkListRelations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'K1TableId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._k1TableId;\r\n },\r\n set: function (val) {\r\n this._k1TableId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'K2TableId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._k2TableId;\r\n },\r\n set: function (val) {\r\n this._k2TableId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'K1TableGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._k1TableGuid;\r\n },\r\n set: function (val) {\r\n this._k1TableGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'K2TableGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._k2TableGuid;\r\n },\r\n set: function (val) {\r\n this._k2TableGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'Types', {\r\n enumerable: true,\r\n get: function () {\r\n return this._types;\r\n },\r\n set: function (val) {\r\n this._types = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'LinkEditorTabSettings', {\r\n enumerable: true,\r\n get: function () {\r\n return this._linkEditorTabSettings;\r\n },\r\n set: function (value) {\r\n this._linkEditorTabSettings = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'Translations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translations;\r\n },\r\n set: function (val) {\r\n this._translations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'MemoTranslations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memoTranslations;\r\n },\r\n set: function (val) {\r\n this._memoTranslations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'ReversePassSecurity', {\r\n enumerable: true,\r\n get: function () {\r\n return this._reversePassSecurity;\r\n },\r\n set: function (val) {\r\n this._reversePassSecurity = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'OneParent', {\r\n enumerable: true,\r\n get: function () {\r\n return this._oneParent;\r\n },\r\n set: function (val) {\r\n this._oneParent = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'IsSelfRelation', {\r\n enumerable: true,\r\n get: function () {\r\n return this._k1TableGuid === this._k2TableGuid;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'IsUserRelation', {\r\n enumerable: true,\r\n get: function () {\r\n return this.Name.startsWith('SYS_USER_') || this.Name.endsWith('_USER');\r\n }\r\n});","import { ModelState } from \"Core/Common/Enums/ModelState\";\r\nimport { Guid } from \"Core/Common/Guid\";\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function RelationTypeFiltersModel() {\r\n this._typeId = null;\r\n this._kseq = null;\r\n this._leftTypeId = null;\r\n this._rightTypeId = null;\r\n this._leftTypeGuid = Guid.NewGuid();\r\n this._rightTypeGuid = Guid.NewGuid();\r\n this._state = 0;\r\n\r\n BaseModel.call(this);\r\n}\r\n\r\nRelationTypeFiltersModel.prototype = Object.create(BaseModel.prototype);\r\nRelationTypeFiltersModel.prototype.constructor = RelationTypeFiltersModel;\r\n\r\nRelationTypeFiltersModel.prototype.FromJSONArray = function (filters) {\r\n var filtersCollection = new CollectionModel({ model: RelationTypeFiltersModel });\r\n\r\n _.each(filters, function (filters) {\r\n var model = new RelationTypeFiltersModel();\r\n model.FromJSON(filters);\r\n filtersCollection.Add(model);\r\n });\r\n\r\n return filtersCollection;\r\n};\r\n\r\nRelationTypeFiltersModel.prototype.FromJSON = function (data) {\r\n this._typeId = data.TypeId;\r\n this._kseq = data.KSeq;\r\n this._leftTypeId = data.LeftTypeId;\r\n this._rightTypeId = data.RightTypeId;\r\n};\r\n\r\nRelationTypeFiltersModel.prototype.toJSON = function () {\r\n return {\r\n TypeId: this._typeId,\r\n KSeq: this._kseq,\r\n LeftTypeId: this._leftTypeId,\r\n RightTypeId: this._rightTypeId,\r\n LeftTypeGuid: this._leftTypeGuid,\r\n RightTypeGuid: this._rightTypeGuid,\r\n State: this._state\r\n };\r\n};\r\n\r\nRelationTypeFiltersModel.prototype.Reverse = function () {\r\n var newLeftTypeId = this._rightTypeId;\r\n var newRightTypeId = this._leftTypeId;\r\n var newLeftTypeGuid = this._rightTypeGuid;\r\n var newRightTypeGuid = this._leftTypeGuid;\r\n\r\n this._leftTypeId = newLeftTypeId;\r\n this._rightTypeId = newRightTypeId;\r\n this._leftTypeGuid = newLeftTypeGuid;\r\n this._rightTypeGuid = newRightTypeGuid;\r\n\r\n if (this._state !== ModelState.New || this._state !== ModelState.Deleted) {\r\n this._state = ModelState.Changed;\r\n }\r\n};\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'TypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._typeId;\r\n },\r\n set: function (val) {\r\n this._typeId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'KSeq', {\r\n enumerable: true,\r\n get: function () {\r\n return this._kseq;\r\n },\r\n set: function (val) {\r\n this._kseq = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'LeftTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeId;\r\n },\r\n set: function (val) {\r\n this._leftTypeId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'RightTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeId;\r\n },\r\n set: function (val) {\r\n this._rightTypeId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'LeftTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeGuid;\r\n },\r\n set: function (val) {\r\n this._leftTypeGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'RightTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeGuid;\r\n },\r\n set: function (val) {\r\n this._rightTypeGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'State', {\r\n enumerable: true,\r\n get: function () {\r\n return this._state;\r\n },\r\n set: function (val) {\r\n this._state = val;\r\n }\r\n});","import { Guid } from \"Core/Common/Guid\";\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function RelationTypeValueModel() {\r\n this._id = null;\r\n this._guid = Guid.NewGuid();\r\n this._name = null;\r\n this._nameTranslations = [];\r\n this._reverse = null;\r\n this._reverseTranslations = [];\r\n this._enabled = null;\r\n this._typeId = null;\r\n this._typeGuid = null;\r\n this._sort = null;\r\n this._isNewSort = false;\r\n\r\n BaseModel.call(this);\r\n}\r\n\r\nRelationTypeValueModel.prototype = Object.create(BaseModel.prototype);\r\nRelationTypeValueModel.prototype.constructor = RelationTypeValueModel;\r\n\r\nRelationTypeValueModel.prototype.FromJSONArray = function (values) {\r\n var valuesCollection = new CollectionModel({ model: RelationTypeValueModel });\r\n\r\n _.each(values, function (value) {\r\n var model = new RelationTypeValueModel();\r\n model.FromJSON(value);\r\n valuesCollection.Add(model);\r\n });\r\n\r\n return valuesCollection;\r\n};\r\n\r\nRelationTypeValueModel.prototype.FromJSON = function (data) {\r\n this._id = data.Id;\r\n this._name = data.Name;\r\n this._nameTranslations = data.NameTranslations;\r\n this._reverse = data.Reverse;\r\n this._reverseTranslations = data.ReverseTranslations;\r\n this._enabled = data.Enabled;\r\n this._sort = data.Sort;\r\n this._isNewSort = data.IsNewSort;\r\n};\r\n\r\nRelationTypeValueModel.prototype.toJSON = function () {\r\n return {\r\n Id: this._id,\r\n Guid: this._guid,\r\n Name: this._name,\r\n NameTranslations: this.NameTranslations.map((translation) =>{\r\n return {\r\n Translation: translation.Translation,\r\n Language: {\r\n K_Language: translation.Language.K_Language,\r\n Name: translation.Language.Name,\r\n ShortName: translation.Language.ShortName\r\n }\r\n }}),\r\n Reverse: this._reverse,\r\n ReverseTranslations: this.ReverseTranslations.map((translation) =>{\r\n return {\r\n Translation: translation.Translation,\r\n Language: {\r\n K_Language: translation.Language.K_Language,\r\n Name: translation.Language.Name,\r\n ShortName: translation.Language.ShortName\r\n }\r\n }}),\r\n Enabled: this._enabled,\r\n Sort: this._sort,\r\n IsNewSort: this._isNewSort\r\n };\r\n};\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n },\r\n set: function (val) {\r\n this._id = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'Name', {\r\n enumerable: true,\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (val) {\r\n this._name = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'NameTranslations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._nameTranslations;\r\n },\r\n set: function (val) {\r\n this._nameTranslations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'Reverse', {\r\n enumerable: true,\r\n get: function () {\r\n return this._reverse;\r\n },\r\n set: function (val) {\r\n this._reverse = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'ReverseTranslations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._reverseTranslations;\r\n },\r\n set: function (val) {\r\n this._reverseTranslations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'Enabled', {\r\n enumerable: true,\r\n get: function () {\r\n return this._enabled;\r\n },\r\n set: function (val) {\r\n this._enabled = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'Sort', {\r\n enumerable: true,\r\n get: function () {\r\n return this._sort;\r\n },\r\n set: function (val) {\r\n this._sort = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'IsNewSort', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isNewSort;\r\n },\r\n set: function (val) {\r\n this._isNewSort = val;\r\n }\r\n});","import clone from 'clone';\r\n\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { FieldModel } from \"DatabaseDesigner/Models/FieldModel\";\r\nimport { TableTypeModel } from \"DatabaseDesigner/Models/TableTypeModel\";\r\nimport { TranslationModel } from \"DatabaseDesigner/Models/TranslationModel\";\r\nimport {LanguageModel} from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\nimport {TranslationModel as MemoTranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport {FormProperties} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\nimport {Serialize} from \"../../libs/cerialize\";\r\n\r\nexport function TableBaseModel() {\r\n this._id = 0;\r\n this._name = '';\r\n this._shortName = '';\r\n this._typeId = 0;\r\n this._typeName = '';\r\n this._sort = 0;\r\n this._fields = new CollectionModel({ model: FieldModel });\r\n this._types = new CollectionModel({ model: TableTypeModel });\r\n this._icon = null;\r\n this._iconType = null;\r\n this._iconId = null;\r\n this._iconImage = null;\r\n this._entityColor = null;\r\n this._lifeStatusName = null;\r\n this._lastLifestatusName = this._lifeStatusName;\r\n this._translations = new CollectionModel({ model: TranslationModel });\r\n this._memo = \"\";\r\n this._memoTranslations = new CollectionModel({ model: TranslationModel });\r\n this._attachedControlTypes = new Array<string>();\r\n this._isView = false;\r\n this._query = '';\r\n this._dependsOnFieldName = null;\r\n this._dependsOnFieldId = 0;\r\n this._dependsOnFieldGuid = null;\r\n this._dynamicFields = '';\r\n this._connectionString = null;\r\n this._trigger = null;\r\n this._sequenceType = 0;\r\n this._isMergeView = false;\r\n this._properties = new FormProperties();\r\n\r\n BaseModel.apply(this);\r\n};\r\n\r\nTableBaseModel.prototype = Object.create(BaseModel.prototype);\r\nTableBaseModel.prototype.constructor = TableBaseModel;\r\n\r\nTableBaseModel.prototype.FromJSONArray = function (tables) {\r\n var tableList = new CollectionModel({ model: TableBaseModel });\r\n _.each(tables, function (table) {\r\n var model = new TableBaseModel();\r\n model.FromJSON(table);\r\n tableList.Add(model);\r\n });\r\n return tableList;\r\n}\r\n\r\nTableBaseModel.prototype.toJSON = function (onlyModified) {\r\n var result = {\r\n Id: this.Id,\r\n Guid: this.Guid,\r\n Name: this.Name,\r\n ShortName: this.ShortName,\r\n TypeId: this.TypeId,\r\n IsModified: this.IsModified,\r\n IsRestored: this.IsRestored,\r\n Fields: this.Fields.toJSON(onlyModified),\r\n Icon: this.Icon,\r\n IconId: this.IconId,\r\n IconImage: this.IconImage,\r\n EntityColor: this.EntityColor,\r\n SubjectAreaId: this.SubjectAreaId,\r\n OnDelete: this.OnDelete,\r\n LifeStatusName: this.LifeStatusName,\r\n IsLifeStatusModified: this.LifeStatusName !== this._lastLifestatusName,\r\n Translations: this.Translations.toJSON(),\r\n Memo: this.Memo,\r\n MemoTranslations: this.MemoTranslations,\r\n IsView: this.IsView,\r\n Query: this.Query,\r\n DynamicFields: this._dynamicFields,\r\n ConnectionString: this._connectionString,\r\n Trigger: this._trigger,\r\n SequenceType: this._sequenceType,\r\n IsMergeView: this._isMergeView,\r\n Properties: JSON.stringify(Serialize(this._properties))\r\n };\r\n\r\n if (onlyModified && onlyModified === true) {\r\n if (this._isModified !== true) {\r\n result = null;\r\n }\r\n }\r\n return result;\r\n\r\n}\r\n\r\nTableBaseModel.prototype.Clone = function () {\r\n return clone(this);\r\n}\r\n\r\nTableBaseModel.prototype.FromJSON = function (data) {\r\n this._id = data.Id;\r\n this._databaseId = data.DatabaseId;\r\n this._name = data.Name;\r\n this._subjectAreaId = data.SubjectAreaId;\r\n this._onDelete = data.OnDelete;\r\n this._shortName = data.ShortName;\r\n this._typeId = data.TypeId;\r\n this._fields = FieldModel.prototype.FromJSONArray(data.Fields);\r\n this._sort = data.Sort;\r\n this._typeName = data.TypeName;\r\n this._icon = data.Icon;\r\n this._iconType = data.IconType;\r\n this._iconId = data.IconId;\r\n this._iconImage = data.IconImage;\r\n this._entityColor = data.EntityColor;\r\n this._lifeStatusName = data.LifeStatusName;\r\n this._lastLifestatusName = this._lifeStatusName;\r\n this._translations = TranslationModel.prototype.FromJSONArray(data.Translations);\r\n this._memo = data.Memo;\r\n this._memoTranslations = data.MemoTranslations;\r\n this._attachedControlTypes = data.AttachedControlTypes;\r\n this._isView = data.IsView;\r\n this._query = data.Query;\r\n this._dynamicFields = data.DynamicFields;\r\n this._connectionString = data.ConnectionString;\r\n this._trigger = data.Trigger;\r\n this._sequenceType = data.SequenceType;\r\n this._isMergeView = data.IsMergeView;\r\n this._properties = data.Properties ? JSON.parse(data.Properties) : new FormProperties();\r\n}\r\n\r\nTableBaseModel.prototype.GetMaxSortGroup = function (groupName) {\r\n var sortGroup = window[\"DatabaseDesigner\"].Shared.FieldSortGroupOptions[groupName];\r\n var fields = _.filter(this._fields.Items, function (item: any) {\r\n return (item.Sort >= sortGroup.Item1 && item.Sort <= sortGroup.Item2);\r\n });\r\n\r\n\r\n if (fields.length > 0) {\r\n var maxField = _.max(fields, function (item) {\r\n return item.Sort;\r\n });\r\n return maxField.Sort;\r\n }\r\n return sortGroup.Item1;\r\n}\r\n\r\nTableBaseModel.prototype.CreateDefaultTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._translations = new CollectionModel({ model: TranslationModel });\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n translation.Language = language;\r\n self._translations.Add(translation);\r\n });\r\n }\r\n};\r\n\r\nTableBaseModel.prototype.CreateMemoTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._memoTranslations = [];\r\n\r\n _.forEach(languages, function (language: LanguageModel) {\r\n var translation = new MemoTranslationModel();\r\n translation.Language = new LanguageModel(language.K_Language, language.Name, language.ShortName, language.Enabled, language.FlagBase64);\r\n translation.Translation = \"\";\r\n self._memoTranslations.push(translation);\r\n });\r\n }\r\n};\r\n\r\nTableBaseModel.prototype.GetCustomFields = function () {\r\n return this.GetFieldsBySort(3000, 3999);\r\n};\r\n\r\nTableBaseModel.prototype.GetFieldsBySort = function (minSort, maxSort) {\r\n return this.Fields.Items.filter(function (field) {\r\n return field.Sort >= minSort && field.Sort <= maxSort;\r\n })\r\n};\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'DependsOnFieldName', {\r\n enumerable: true,\r\n get: function () {\r\n return this._dependsOnFieldName;\r\n },\r\n set: function (val) {\r\n this._dependsOnFieldName = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'DependsOnFieldId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._dependsOnFieldId;\r\n },\r\n set: function (val) {\r\n this._dependsOnFieldId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'DependsOnFieldGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._dependsOnFieldGuid;\r\n },\r\n set: function (val) {\r\n this._dependsOnFieldGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'MemoTranslations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memoTranslations;\r\n },\r\n set: function (val) {\r\n this._memoTranslations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Memo', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memo;\r\n },\r\n set: function (val) {\r\n this._memo = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n },\r\n set: function (val) {\r\n this._id = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Name', {\r\n enumerable: true,\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (val) {\r\n this._name = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'TypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._typeId;\r\n },\r\n set: function (val) {\r\n this._typeId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Fields', {\r\n enumerable: true,\r\n get: function () {\r\n return this._fields;\r\n },\r\n set: function (val) {\r\n this._fields = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'AttachedControlTypes', {\r\n enumerable: true,\r\n get: function () {\r\n return this._attachedControlTypes;\r\n },\r\n set: function (val) {\r\n this._attachedControlTypes = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'ShortName', {\r\n enumerable: true,\r\n get: function () {\r\n return this._shortName;\r\n },\r\n set: function (val) {\r\n this._shortName = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Types', {\r\n enumerable: true,\r\n get: function () {\r\n return this._types;\r\n },\r\n set: function (val) {\r\n this._types = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Icon', {\r\n enumerable: true,\r\n get: function () {\r\n return this._icon;\r\n },\r\n set: function (val) {\r\n this._icon = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IconType', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconType;\r\n },\r\n set: function (val) {\r\n this._iconType = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IconId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconId;\r\n },\r\n set: function (val) {\r\n this._iconId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IconImage', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconImage;\r\n },\r\n set: function (val) {\r\n this._iconImage = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'EntityColor', {\r\n enumerable: true,\r\n get: function () {\r\n return this._entityColor;\r\n },\r\n set: function (val) {\r\n this._entityColor = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'SubjectAreaId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._subjectAreaId;\r\n },\r\n set: function (val) {\r\n this._subjectAreaId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'OnDelete', {\r\n enumerable: true,\r\n get: function () {\r\n return this._onDelete;\r\n },\r\n set: function (val) {\r\n this._onDelete = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'TypeName', {\r\n get: function () {\r\n return this._typeName;\r\n },\r\n set: function (val) {\r\n this._typeName = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'LifeStatusName', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lifeStatusName;\r\n },\r\n set: function (val) {\r\n this._lifeStatusName = val;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Translations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translations;\r\n },\r\n set: function (val) {\r\n this._translations = val;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IsView', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isView;\r\n },\r\n set: function (val) {\r\n this._isView = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Query', {\r\n enumerable: true,\r\n get: function () {\r\n return this._query;\r\n },\r\n set: function (val) {\r\n this._query = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'ConnectionString', {\r\n enumerable: true,\r\n get: function () {\r\n return this._connectionString;\r\n },\r\n set: function (val) {\r\n this._connectionString = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IsExternalTable', {\r\n enumerable: true,\r\n get: function () {\r\n return !!this._connectionString;\r\n },\r\n set: function (val) {}\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Trigger', {\r\n enumerable: true,\r\n get: function () {\r\n return this._trigger;\r\n },\r\n set: function (val) {\r\n this._trigger = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'SequenceType', {\r\n enumerable: true,\r\n get: function () {\r\n return this._sequenceType;\r\n },\r\n set: function (val) {\r\n this._sequenceType = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IsDynamicView', {\r\n enumerable: false,\r\n get: function () {\r\n if (this._dynamicFields) {\r\n var dynamicFields = this._dynamicFields.split(',');\r\n return dynamicFields.length > 0;\r\n }\r\n return false;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'DynamicFields', {\r\n enumerable: true,\r\n get: function () {\r\n return this._dynamicFields;\r\n },\r\n set: function (val) {\r\n this._dynamicFields = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IsMergeView', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isMergeView;\r\n },\r\n set: function (val) {\r\n this._isMergeView = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'DatabaseId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._databaseId;\r\n },\r\n set: function (val) {\r\n this._databaseId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Properties', {\r\n enumerable: true,\r\n get: function () {\r\n return this._properties;\r\n },\r\n set: function (val) {\r\n this._properties = val;\r\n }\r\n});","import clone from 'clone';\r\n\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function TableFieldModel() {\r\n\tthis._valTableId = 0;\r\n\tthis._valTableGuid = '';\r\n\tthis._valFieldId = 0;\r\n\tthis._valFieldGuid = '';\r\n\tthis._search60 = false;\r\n\tthis._allowEdit = false;\r\n\tthis._dependsOnId = 0;\r\n\tthis._dependsOnGuid = '';\r\n\tthis._filledById = 0;\r\n\tthis._filledByGuid = '';\r\n\tthis._dependsOnFieldId = 0;\r\n\tthis._dependsOnFieldGuid = '';\r\n\tthis._tableTypeId = 0;\r\n\tthis._tableTypeGuid = null;\r\n\tthis._aliasDefinition = '';\r\n\tBaseModel.apply(this);\r\n};\r\n\r\nTableFieldModel.prototype = Object.create(BaseModel.prototype);\r\nTableFieldModel.prototype.constructor = TableFieldModel;\r\n\r\nTableFieldModel.prototype.FromJSONArray = function (tableFields) {\r\n\tvar tableFieldList = new CollectionModel({ model: TableFieldModel });\r\n\t_.each(tableFields, function (tableField) {\r\n\t\tvar tableFieldModel = new TableFieldModel();\r\n\t\ttableFieldModel.FromJSON(tableField);\r\n\t\ttableFieldList.Add(tableFieldModel);\r\n\t});\r\n\treturn tableFieldList;\r\n};\r\n\r\nTableFieldModel.prototype.toJSON = function () {\r\n\treturn {\r\n\t\tValTableId: this._valTableId,\r\n\t\tValTableGuid: this.ValTableGuid,\r\n\t\tValFieldId: this._valFieldId,\r\n\t\tValFieldGuid: this._valFieldGuid,\r\n\t\tSearch60: this._search60,\r\n\t\tAllowEdit: this._allowEdit,\r\n\t\tDependsOn: this._dependsOnId,\r\n\t\tFilledById: this._filledById,\r\n\t\tFilledByGuid: this._filledByGuid,\r\n\t\tDependsOnFieldId: this._dependsOnFieldId,\r\n\t\tDependsOnFieldGuid: this._dependsOnFieldGuid,\r\n\t\tTableTypeId: this._tableTypeId,\r\n\t\tTableTypeGuid: this._tableTypeGuid,\r\n\t\tAliasDefinition: this._aliasDefinition && JSON.parse(this._aliasDefinition).length ? this._aliasDefinition : null\r\n\t}\r\n};\r\n\r\nTableFieldModel.prototype.FromJSON = function (data) {\r\n\tthis._valTableId = data.ValTableId;\r\n\tthis._valFieldId = data.ValFieldId;\r\n\tthis._tableTypeId = data.TableTypeId;\r\n\tthis._search60 = data.Search60;\r\n\tthis._allowEdit = data.AllowEdit;\r\n\tthis._dependsOnId = data.DependsOn;\r\n\tthis._filledById = data.FilledById;\r\n\tthis._aliasDefinition = data.AliasDefinition;\r\n\tthis._dependsOnFieldId = data.DependsOnFieldId;\r\n\r\n\tif (data.TableTypeId === 0) {\r\n\t\tthis._tableTypeGuid = '-';\r\n\t}\r\n};\r\n\r\nTableFieldModel.prototype.Clone = function () {\r\n\treturn clone(this);\r\n};\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'ValTableId', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._valTableId;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._valTableId = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'ValTableGuid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._valTableGuid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._valTableGuid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'ValFieldId', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._valFieldId;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._valFieldId = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'ValFieldGuid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._valFieldGuid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._valFieldGuid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'Search60', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._search60;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._search60 = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'AllowEdit', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._allowEdit;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._allowEdit = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'DependsOnId', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._dependsOnId;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._dependsOnId = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'DependsOnGuid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._dependsOnGuid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._dependsOnGuid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'DependsOnFieldId', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._dependsOnFieldId;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._dependsOnFieldId = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'DependsOnFieldGuid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._dependsOnFieldGuid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._dependsOnFieldGuid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'FilledById', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._filledById;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._filledById = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'FilledByGuid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._filledByGuid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._filledByGuid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'TableTypeId', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._tableTypeId;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._tableTypeId = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'TableTypeGuid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._tableTypeGuid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._tableTypeGuid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'AliasDefiniton', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._aliasDefinition;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._aliasDefinition = val;\r\n\t}\r\n});","import clone from 'clone';\r\n\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function ScreenModel() {\r\n\tthis._id = 0;\r\n\tthis._typeName = '';\r\n\tthis._count = 0;\r\n\tBaseModel.apply(this);\r\n};\r\n\r\nScreenModel.prototype = Object.create(BaseModel.prototype);\r\nScreenModel.prototype.constructor = ScreenModel;\r\n\r\nScreenModel.prototype.FromJSONArray = function (screensJson) {\r\n\tvar screens = new CollectionModel({ model: ScreenModel });\r\n\t_.each(screensJson, function (screen) {\r\n\t\tvar model = new ScreenModel();\r\n\t\tmodel.FromJSON(screen);\r\n\t\tscreens.Add(model);\r\n\t});\r\n\treturn screens;\r\n}\r\n\r\nScreenModel.prototype.Clone = function () {\r\n\treturn clone(this);\r\n}\r\n\r\nScreenModel.prototype.FromJSON = function (data) {\r\n\tthis._id = data.Id;\r\n\tthis._typeName = data.TypeName;\r\n\tthis._count = data.Count;\r\n}\r\n\r\nObject.defineProperty(ScreenModel.prototype, 'Id', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._id;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._id = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(ScreenModel.prototype, 'TypeName', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._typeName;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._typeName = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(ScreenModel.prototype, 'Count', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._count;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._count = val;\r\n\t}\r\n});\r\n","import clone from 'clone';\r\n\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { ScreenModel } from \"DatabaseDesigner/Models/ScreenModel\";\r\nimport { TableBaseModel } from \"DatabaseDesigner/Models/TableBaseModel\";\r\nimport { TableTypeModel } from \"DatabaseDesigner/Models/TableTypeModel\";\r\nimport { TranslationModel } from \"DatabaseDesigner/Models/TranslationModel\";\r\nimport { TranslationModel as MemoTranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport { LanguageModel } from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\n\r\nexport function TableModel() {\r\n this._enableDefaultSecurity = false;\r\n this._subjectAreaId = 0;\r\n this._subTypeId = 0;\r\n this._sort = 0;\r\n this._types = new CollectionModel({model: TableTypeModel});\r\n this._screens = new CollectionModel({model: ScreenModel});\r\n this._subTables = new CollectionModel({model: TableBaseModel});\r\n this._translations = new CollectionModel({model: TranslationModel});\r\n this._memo = \"\";\r\n this._memoTranslations = new CollectionModel({model: TranslationModel});\r\n\r\n TableBaseModel.apply(this);\r\n };\r\n\r\n TableModel.prototype = Object.create(TableBaseModel.prototype);\r\n TableModel.prototype.constructor = TableModel;\r\n TableModel.prototype.__super__ = TableBaseModel;\r\n\r\n TableModel.prototype.FromJSONArray = function (tables) {\r\n var tableList = new CollectionModel({model: TableModel});\r\n _.each(tables, function (table) {\r\n var tableModel = new TableModel();\r\n tableModel.FromJSON(table);\r\n tableList.Add(tableModel);\r\n });\r\n return tableList;\r\n }\r\n\r\n TableModel.prototype.Clone = function () {\r\n return clone(this);\r\n }\r\n\r\n TableModel.prototype.FromJSON = function (data) {\r\n var self = this;\r\n this._subTypeId = data.SubTypeId;\r\n this._sort = data.Sort;\r\n this.__super__.prototype.FromJSON.call(this, data);\r\n this._types = TableTypeModel.prototype.FromJSONArray(data.Types);\r\n this._subTables = TableBaseModel.prototype.FromJSONArray(data.SubTables);\r\n this._screens = ScreenModel.prototype.FromJSONArray(data.Screens);\r\n this._translations = TranslationModel.prototype.FromJSONArray(data.Translations);\r\n this._memo = data.Memo;\r\n this._memoTranslations = data.MemoTranslations;\r\n\r\n _.each(this.Types.Items, function (type: any) {\r\n if (type._parentId !== 0) {\r\n var model = _.find(self.Types.Items, parentType => parentType.Id === type._parentId && parentType !== type) as any;\r\n if (model) {\r\n type.ParentGuid = model.Guid;\r\n type.UniqueParentGuid = model.UniqueGuid;\r\n }\r\n }\r\n });\r\n\r\n _.each(this.Fields.Items, function (field: any) {\r\n _.each(field.TableFiels.Items, function (tableFiel: any) {\r\n var tableType = _.find(self.Types.Items, function (type: any) {\r\n return type.Id === tableFiel.TableTypeId\r\n });\r\n if (tableType) {\r\n tableFiel.TableTypeGuid = tableType.Guid;\r\n }\r\n });\r\n });\r\n };\r\n\r\n TableModel.prototype.toJSON = function (onlyModified) {\r\n var result = this.__super__.prototype.toJSON.call(this, onlyModified);\r\n if (!result) {\r\n result = {};\r\n }\r\n result.ShortName = this.ShortName;\r\n result.Sort = this.Sort;\r\n result.TypeId = this.TypeId;\r\n result.SubTypeId = this._subTypeId;\r\n result.IsModified = this._isModified;\r\n result.EnableDefaultSecurity = this._enableDefaultSecurity;\r\n result.Types = this.Types.toJSON(onlyModified),\r\n result.Translations = this.Translations.toJSON(),\r\n result.SubTables = this.SubTables.toJSON(onlyModified);\r\n result.MemoTranslations = this.MemoTranslations;\r\n result.Memo = this.Memo;\r\n window['DatabaseDesigner'].IsModified(this._isModified);\r\n if (this.SubjectAreaId !== 0)\r\n result.SubjectAreaId = this.SubjectAreaId;\r\n\r\n if (onlyModified && onlyModified === true) {\r\n if (this._isModified !== true) {\r\n result = null;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n\r\n TableModel.prototype.CreateDefaultTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._translations = new CollectionModel({model: TranslationModel});\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n translation.Language = language;\r\n self._translations.Add(translation);\r\n });\r\n }\r\n }\r\n\r\n\r\n TableModel.prototype.CreateMemoTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._memoTranslations = [];\r\n\r\n _.forEach(languages, function (language: LanguageModel) {\r\n var translation = new MemoTranslationModel();\r\n translation.Language = new LanguageModel(language.K_Language, language.Name, language.ShortName, language.Enabled, language.FlagBase64);\r\n translation.Translation = \"\";\r\n self._memoTranslations.push(translation);\r\n });\r\n }\r\n };\r\n\r\n Object.defineProperty(TableModel.prototype, 'EnableDefaultSecurity', {\r\n enumerable: true,\r\n get: function () {\r\n return this._enableDefaultSecurity;\r\n },\r\n set: function (val) {\r\n this._enableDefaultSecurity = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'SubTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._subTypeId;\r\n },\r\n set: function (val) {\r\n this._subTypeId = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'SubTables', {\r\n enumerable: true,\r\n get: function () {\r\n return this._subTables;\r\n },\r\n set: function (val) {\r\n this._subTables = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'Types', {\r\n enumerable: true,\r\n get: function () {\r\n return this._types;\r\n },\r\n set: function (val) {\r\n this._types = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'Sort', {\r\n enumerable: true,\r\n get: function () {\r\n return this._sort;\r\n },\r\n set: function (val) {\r\n this._sort = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'SubjectAreaId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._subjectAreaId;\r\n },\r\n set: function (val) {\r\n this._subjectAreaId = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'Screens', {\r\n enumerable: true,\r\n get: function () {\r\n return this._screens;\r\n },\r\n set: function (val) {\r\n this._screens = val;\r\n }\r\n });\r\n\r\n\r\n Object.defineProperty(TableModel.prototype, 'Translations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translations;\r\n },\r\n set: function (val) {\r\n this._translations = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'Memo', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memo;\r\n },\r\n set: function (val) {\r\n this._memo = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'MemoTranslations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memoTranslations;\r\n },\r\n set: function (val) {\r\n this._memoTranslations = val;\r\n }\r\n });","import { TranslationModel } from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport { deserialize, deserializeAs } from \"libs/cerialize\";\r\n\r\nexport class LIfecycleLinkDto {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n ApprovalId: number;\r\n\r\n @deserialize\r\n Guid: string;\r\n\r\n @deserialize\r\n GuidStepFrom: string;\r\n\r\n @deserialize\r\n GuidStepTo: string;\r\n\r\n @deserialize\r\n IdStepFrom: number;\r\n\r\n @deserialize\r\n IdStepTo: number;\r\n\r\n @deserialize\r\n IsNew: boolean;\r\n\r\n @deserialize\r\n Json: string;\r\n\r\n @deserialize\r\n Label: string;\r\n\r\n @deserialize\r\n NextAllowed: boolean;\r\n\r\n @deserialize\r\n TestCondition: number;\r\n\r\n @deserializeAs(TranslationModel)\r\n Translations: Array<TranslationModel>\r\n\r\n @deserialize\r\n UserId: number;\r\n\r\n @deserialize\r\n StepsScreenId: number;\r\n}","import { deserialize, deserializeAs } from \"libs/cerialize\";\r\nimport { LIfecycleLinkDto } from \"./LifecycleLinkDto\";\r\nimport { LifecycleStepDto } from \"./LifecycleStepDto\";\r\n\r\nexport class LifecycleDto {\r\n @deserializeAs(LifecycleStepDto)\r\n Steps: Array<LifecycleStepDto>;\r\n\r\n @deserializeAs(LIfecycleLinkDto)\r\n Links: Array<LIfecycleLinkDto>;\r\n\r\n @deserialize\r\n IsModified: boolean;\r\n}","import clone from 'clone';\r\n\r\nimport { ModelState } from \"Core/Common/Enums/ModelState\";\r\nimport { Guid } from \"Core/Common/Guid\";\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { KindModel } from \"DatabaseDesigner/Models/KindModel\";\r\nimport { LifeStatusModel } from \"DatabaseDesigner/Models/LifestatusModel\";\r\nimport { RelationTypeFiltersModel } from \"DatabaseDesigner/Models/RelationTypeFiltersModel\";\r\nimport { RelationTypeValueModel } from \"DatabaseDesigner/Models/RelationTypeValueModel\";\r\nimport { TranslationModel } from \"DatabaseDesigner/Models/TranslationModel\";\r\nimport { TypeRestrictionModel } from \"DatabaseDesigner/Models/TypeRestrictionModel\";\r\nimport { LifecycleDto } from 'Core/LifecycleDesigner/Models/DTO/LifecycleDto';\r\nimport { GenericDeserialize } from '../../libs/cerialize';\r\nimport { LifecycleStepDto } from 'Core/LifecycleDesigner/Models/DTO/LifecycleStepDto';\r\nimport { LIfecycleLinkDto } from 'Core/LifecycleDesigner/Models/DTO/LifecycleLinkDto';\r\n\r\nexport function TableTypeModel() {\r\n this._id = null;\r\n this._parentId = 0;\r\n this._parentGuid = '';\r\n this._flowFolder = false;\r\n this._treeLevel = 0;\r\n this._memo = '';\r\n this._instancingMaximum = 1;\r\n this._name = 'New Type';\r\n this._uniqueGuid = Guid.NewGuid();\r\n this._uniqueParentGuid = '';\r\n this._icon = null;\r\n this._iconId = null;\r\n this._iconImage = null;\r\n this._iconType = null;\r\n this._lifeStatus = -1;\r\n this._lifestatusDesignObject = null;\r\n this._lifeStatuses = new CollectionModel({ model: LifeStatusModel });\r\n this._kinds = new CollectionModel({ model: KindModel });\r\n this._values = new CollectionModel({ model: RelationTypeValueModel });\r\n this._filters = new CollectionModel({ model: RelationTypeFiltersModel });\r\n this._restrictions = new CollectionModel({ model: TypeRestrictionModel });\r\n this._currentKindId = 0;\r\n this._isRoot = false;\r\n this._savedLifestatus = this._lifeStatus;\r\n this._translations = new CollectionModel({ model: TranslationModel });\r\n BaseModel.apply(this);\r\n};\r\n\r\nTableTypeModel.prototype = Object.create(BaseModel.prototype);\r\nTableTypeModel.prototype.constructor = TableTypeModel;\r\n\r\nTableTypeModel.prototype.FromJSONArray = function (types) {\r\n var typeList = new CollectionModel({ model: TableTypeModel });\r\n _.each(types, function (type: any) {\r\n var existsModel = _.find(typeList.Items, function (item: any) {\r\n return item.Id === type.Id;\r\n });\r\n var model = new TableTypeModel();\r\n if (existsModel) {\r\n model.Guid = existsModel.Guid;\r\n }\r\n model.FromJSON(type);\r\n typeList.Add(model);\r\n });\r\n return typeList;\r\n};\r\n\r\nTableTypeModel.prototype.toJSON = function (onlyModified) {\r\n var result = {\r\n Id: this.Id,\r\n Name: this.Name,\r\n ParentId: this.ParentId,\r\n ParentGuid: this.ParentGuid,\r\n Guid: this.Guid,\r\n IsModified: this.IsModified,\r\n FlowFolder: this.FlowFolder,\r\n LifeStatus: this.LifeStatus,\r\n LifeStatuses: this.LifeStatuses.toJSON(),\r\n Icon: this.Icon,\r\n IconId: this.IconId,\r\n IconImage: this.IconImage,\r\n IconType: this.IconType,\r\n LifestatusDesignObject: this.LifestatusDesignObject,\r\n RoleLifes: this.RoleLifes,\r\n Memo: this.Memo,\r\n Kinds: this.Kinds.toJSON(),\r\n Values: this.Values.toJSON(),\r\n Restrictions: this.Restrictions.toJSON(),\r\n Filters: this.Filters.GetItemsWhereIn('State', [ModelState.New, ModelState.Changed, ModelState.Deleted]).map(function (filter) {\r\n return filter.toJSON()\r\n }),\r\n CurrentKindId: this.CurrentKindId,\r\n IsRoot: this.IsRoot,\r\n IsLifestatusModified: this._savedLifestatus !== this._lifeStatus,\r\n Translations: this.Translations.toJSON(),\r\n InstancingMaximum: this.InstancingMaximum\r\n };\r\n\r\n if (onlyModified && onlyModified === true) {\r\n if (this._isModified !== true) {\r\n result = null;\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nTableTypeModel.prototype.Clone = function () {\r\n return clone(this);\r\n}\r\n\r\nTableTypeModel.prototype.FromJSON = function (data) {\r\n this._id = data.Id;\r\n this._name = data.Name;\r\n this._parentId = data.ParentId;\r\n this._flowFolder = data.FlowFolder;\r\n this._lifeStatus = data.LifeStatus;\r\n this._savedLifestatus = data.LifeStatus;\r\n this._icon = data.Icon;\r\n this._iconId = data.IconId;\r\n this._iconImage = data.IconImage;\r\n this._iconType = data.IconType;\r\n this._memo = data.Memo;\r\n this._instancingMaximum = data.InstancingMaximum;\r\n this._kinds = KindModel.prototype.FromJSONArray(data.Kinds);\r\n this._restrictions = TypeRestrictionModel.FromJSONArray(data.Restrictions);\r\n this._values = RelationTypeValueModel.prototype.FromJSONArray(data.Values);\r\n this._filters = RelationTypeFiltersModel.prototype.FromJSONArray(data.Filters);\r\n this._lifeStatuses = LifeStatusModel.prototype.FromJSONArray(data.LifeStatuses);\r\n this._currentKindId = data.CurrentKindId;\r\n this._translations = TranslationModel.prototype.FromJSONArray(data.Translations);\r\n this._lifestatusDesignObject = GenericDeserialize<LifecycleDto>(data.LifestatusDesignObject, LifecycleDto);\r\n\r\n if (this._lifestatusDesignObject && this._lifestatusDesignObject.Steps) {\r\n _.each(this._lifestatusDesignObject.Steps, (step: LifecycleStepDto)=>{\r\n\r\n const lifeStatusItem = _.find(this._lifeStatuses.Items, (status: any) => status.Id === step.Id);\r\n if(lifeStatusItem){\r\n step.LifeStatusGuid = lifeStatusItem.Guid;\r\n }\r\n\r\n _.each(this._lifestatusDesignObject.Links, (link: LIfecycleLinkDto)=>{\r\n if(link.IdStepFrom === step.Id){\r\n link.GuidStepFrom = step.Guid;\r\n }\r\n if(link.IdStepTo === step.Id){\r\n link.GuidStepTo = step.Guid;\r\n }\r\n });\r\n });\r\n }\r\n\r\n this._isRoot = data.IsRoot;\r\n}\r\n\r\nTableTypeModel.prototype.CreateDefaultTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._translations = new CollectionModel({ model: TranslationModel });\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n translation.Language = language;\r\n self._translations.Add(translation);\r\n });\r\n }\r\n}\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n },\r\n set: function (val) {\r\n this._id = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Kinds', {\r\n enumerable: true,\r\n get: function () {\r\n return this._kinds;\r\n },\r\n set: function (val) {\r\n this._kinds = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Values', {\r\n enumerable: true,\r\n get: function () {\r\n return this._values;\r\n },\r\n set: function (val) {\r\n this._values = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Filters', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filters;\r\n },\r\n set: function (val) {\r\n this._filters = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Restrictions', {\r\n enumerable: true,\r\n get: function () {\r\n return this._restrictions;\r\n },\r\n set: function (val) {\r\n this._restrictions = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'LifeStatuses', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lifeStatuses;\r\n },\r\n set: function (val) {\r\n this._lifeStatuses = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'CurrentKindId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._currentKindId;\r\n },\r\n set: function (val) {\r\n this._currentKindId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Name', {\r\n enumerable: true,\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (val) {\r\n this._name = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'LifeStatus', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lifeStatus;\r\n },\r\n set: function (val) {\r\n this._lifeStatus = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Memo', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memo;\r\n },\r\n set: function (val) {\r\n this._memo = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'InstancingMaximum', {\r\n enumerable: true,\r\n get: function () {\r\n return this._instancingMaximum;\r\n },\r\n set: function (val) {\r\n this._instancingMaximum = val;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'FlowFolder', {\r\n enumerable: true,\r\n get: function () {\r\n return this._flowFolder;\r\n },\r\n set: function (val) {\r\n this._flowFolder = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'ParentId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._parentId;\r\n },\r\n set: function (val) {\r\n this._parentId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'ParentGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._parentGuid;\r\n },\r\n set: function (val) {\r\n this._parentGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'TreeLevel', {\r\n enumerable: true,\r\n get: function () {\r\n return this._treeLevel;\r\n },\r\n set: function (val) {\r\n this._treeLevel = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'UniqueGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._uniqueGuid;\r\n },\r\n set: function (val) {\r\n this._uniqueGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'UniqueParentGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._uniqueParentGuid;\r\n },\r\n set: function (val) {\r\n this._uniqueParentGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Icon', {\r\n enumerable: true,\r\n get: function () {\r\n return this._icon;\r\n },\r\n set: function (val) {\r\n this._icon = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'IconId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconId;\r\n },\r\n set: function (val) {\r\n this._iconId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'LifestatusDesignObject', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lifestatusDesignObject;\r\n },\r\n set: function (val) {\r\n this._lifestatusDesignObject = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'IconImage', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconImage;\r\n },\r\n set: function (val) {\r\n this._iconImage = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'IconType', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconType;\r\n },\r\n set: function (val) {\r\n this._iconType = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'IsRoot', {\r\n get: function () {\r\n return this._isRoot;\r\n },\r\n set: function (val) {\r\n this._isRoot = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Translations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translations;\r\n },\r\n set: function (val) {\r\n this._translations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'TypeNameMaxSize', {\r\n enumerable: true,\r\n get: function () {\r\n return this._typeNameMaxSize;\r\n },\r\n set: function (val) {\r\n this._typeNameMaxSize = val;\r\n }\r\n});\r\n","import { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { LanguageModel } from \"DatabaseDesigner/Models/LanguageModel\";\r\n\r\nexport function TranslationModel() {\r\n\tthis._translation = \"\";\r\n\tthis._selected = \"\";\r\n\tthis._language = null;\r\n};\r\n\r\nTranslationModel.prototype.FromJSONArray = function (data) {\r\n\tvar translations = new CollectionModel({ model: TranslationModel });\r\n\t_.each(data, function (translation) {\r\n\t\tvar model = new TranslationModel();\r\n\t\tmodel.FromJSON(translation);\r\n\t\ttranslations.Add(model);\r\n\t});\r\n\treturn translations;\r\n};\r\n\r\nTranslationModel.prototype.FromJSON = function (data) {\r\n\tthis._translation = data.Translation;\r\n\tthis._selected = data.Selected;\r\n\tthis._language = new LanguageModel();\r\n\tthis._language.FromJSON(data.Language);\r\n};\r\n\r\nTranslationModel.prototype.toJSON = function () {\r\n\treturn {\r\n\t\tTranslation: this._translation,\r\n\t\tLanguage: this._language.toJSON()\r\n\t};\r\n};\r\n\r\nObject.defineProperty(TranslationModel.prototype, 'Translation', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._translation;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._translation = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TranslationModel.prototype, 'Selected', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._selected;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._selected = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TranslationModel.prototype, 'Language', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._language;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._language = val;\r\n\t}\r\n});","import { BaseModelClass } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport class TypeRestrictionModel extends BaseModelClass {\r\n\r\n _id: any;\r\n _typeId: any;\r\n _typeGuid: any;\r\n _roleId: any;\r\n _roleGuid: any;\r\n _value: any;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._id = null;\r\n this._typeId = null;\r\n this._typeGuid = null;\r\n this._roleId = null;\r\n this._roleGuid = null;\r\n this._value = null;\r\n }\r\n\r\n get Id() {\r\n return this._id;\r\n }\r\n\r\n set Id(id) {\r\n this._id = id;\r\n }\r\n\r\n get TypeId() {\r\n return this._typeId;\r\n }\r\n\r\n set TypeId(id) {\r\n this._typeId = id;\r\n }\r\n\r\n get TypeGuid() {\r\n return this._typeGuid;\r\n }\r\n\r\n set TypeGuid(guid) {\r\n this._typeGuid = guid;\r\n }\r\n\r\n get RoleId() {\r\n return this._roleId;\r\n }\r\n\r\n set RoleId(id) {\r\n this._roleId = id;\r\n }\r\n\r\n get RoleGuid() {\r\n return this._roleGuid;\r\n }\r\n\r\n set RoleGuid(guid) {\r\n this._roleGuid = guid;\r\n }\r\n\r\n get Value() {\r\n return this._value;\r\n }\r\n\r\n set Value(value) {\r\n this._value = value;\r\n }\r\n\r\n FromJSON(data) {\r\n this._id = data.Id;\r\n this._typeId = data.TypeId;\r\n this._roleId = data.RoleId;\r\n this._value = data.Value;\r\n }\r\n\r\n toJSON() {\r\n return {\r\n Id: this._id,\r\n Guid: this._guid,\r\n TypeId: this._typeId,\r\n TypeGuid: this._typeGuid,\r\n RoleId: this._roleId,\r\n RoleGuid: this._roleGuid,\r\n Value: this._value\r\n };\r\n }\r\n\r\n static FromJSONArray(restrictions) {\r\n const restrictionsCollection = new CollectionModel({ model: TypeRestrictionModel });\r\n\r\n _.each(restrictions, restriction => {\r\n const model = new TypeRestrictionModel();\r\n model.FromJSON(restriction);\r\n restrictionsCollection.Add(model);\r\n });\r\n\r\n return restrictionsCollection;\r\n }\r\n}","import * as moment from 'moment';\r\nimport 'inputmask';\r\n\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\nimport {Format} from '../DatabaseDesigner/FieldConfig';\r\n\r\nexport class FormatConverter {\r\n static SetLocale(): void {\r\n moment.locale(GlobalManager.Instance.GetCulture());\r\n }\r\n\r\n static GetLocale(): string {\r\n return GlobalManager.Instance.GetCulture();\r\n }\r\n\r\n static ConvertFromDefaultFormat(initialDate: string, toFormat: string): string {\r\n if (!initialDate) return null;\r\n\r\n const _format = toFormat || DATE_FORMATS.SHORT_DATE.Format;\r\n\r\n let outputDate = moment(initialDate).isValid() ? moment(initialDate).format(_format) : initialDate;\r\n\r\n if (!moment(outputDate).isValid() && !moment('2018-08-28T' + outputDate).isValid()) {\r\n outputDate = moment(initialDate, DATE_FORMATS.SAVE_FORMAT.Format).format(_format);\r\n }\r\n\r\n return outputDate;\r\n }\r\n\r\n static ConvertToDefaultFormat(initialDate: string, initialFormat: string) {\r\n if (!initialDate) return null;\r\n\r\n return moment(initialDate, initialFormat).format(DATE_FORMATS.SAVE_FORMAT.Format);\r\n }\r\n\r\n static ConvertToUTC(initialDate: string, initialFormat: string) {\r\n if (!initialDate) return null;\r\n\r\n return moment(initialDate, initialFormat).format();\r\n }\r\n\r\n static ConvertDecimal(value: string): string {\r\n if (!value) return null;\r\n\r\n const n = 1.1;\r\n const separator: string =\r\n n.toLocaleString(FormatConverter.GetLocale()).substring(1, 2);\r\n\r\n return value.replace(/[.,]/g, separator);\r\n }\r\n\r\n static LocalizeDecimalOrInteger(value: string) {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return Inputmask.format(value.replace(/[.,]/g, '.'), {\r\n alias: 'decimal',\r\n radixPoint: FormatConverter.GetSeparator(),\r\n autoGroup: true,\r\n groupSeparator: FormatConverter.GetGroupSeparator()\r\n });\r\n }\r\n\r\n static GetSeparator() {\r\n const culture = FormatConverter.GetLocale();\r\n const n = 1.1;\r\n return n.toLocaleString(culture).substring(1, 2);\r\n }\r\n\r\n static GetGroupSeparator() {\r\n const culture = FormatConverter.GetLocale();\r\n const n = 11111.1;\r\n const formatted = n.toLocaleString(culture);\r\n const [groupSeparator] = /\\D/.exec(formatted);\r\n\r\n return groupSeparator;\r\n }\r\n\r\n static GetDateLocalizedSeparator() {\r\n const formatter = new Intl.DateTimeFormat(FormatConverter.GetLocale(), {month: '2-digit', day: '2-digit'});\r\n return formatter.format(new Date(\"11/11/1111\")).replace(/1/g, \"\") || \"-\";\r\n }\r\n\r\n private static GetISODateFormat(formatName: string, formatType: string): string {\r\n let format;\r\n switch (formatName) {\r\n case FieldFormat.MMM_YYYY:\r\n case FieldFormat.DD_MM:\r\n case FieldFormat.DD_MMM:\r\n case FieldFormat.MM_YY:\r\n case FieldFormat.DD_MMM_YYYY:\r\n case FieldFormat.YYYY_WW: {\r\n\r\n const formatEnum = FieldFormat.GetFormat(formatName);\r\n format = DATE_FORMATS[formatEnum][formatType].replace(/-/g, FormatConverter.GetDateLocalizedSeparator());\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n return format;\r\n }\r\n\r\n static GetDateFormatFromFieldModel(model, returnFormatWithLocale: boolean = true, extendedModel?): string {\r\n if (!model) {\r\n return;\r\n }\r\n\r\n const formatType = returnFormatWithLocale ? 'MomentFormat' : 'Format';\r\n\r\n const fieldType = model.Type || model.FieldTypeName;\r\n\r\n if (!fieldType) {\r\n return DATE_FORMATS.SHORT_DATE.MomentFormat;\r\n }\r\n\r\n const formatName = model.FormatName || model.FieldTypeFormat;\r\n\r\n let format;\r\n\r\n switch (fieldType) {\r\n case FieldFormat.DATE: {\r\n format = FormatConverter.GetISODateFormat(formatName, formatType);\r\n if (format) break;\r\n\r\n if (FieldFormat.IsLongDate(formatName)) {\r\n format = DATE_FORMATS.LONG_DATE[formatType];\r\n } else {\r\n format = DATE_FORMATS.SHORT_DATE[formatType];\r\n }\r\n break;\r\n }\r\n case FieldFormat.DATETIME:\r\n format = FormatConverter.GetISODateFormat(formatName, formatType);\r\n if (format) break;\r\n\r\n if (FieldFormat.IsLongDate(formatName)) {\r\n format = DATE_FORMATS.FULL_DATETIME[formatType];\r\n } else {\r\n format = DATE_FORMATS.DATE_TIME[formatType];\r\n }\r\n\r\n break;\r\n case FieldFormat.TIME:\r\n if (FieldFormat.IsLongTime(formatName)) {\r\n format = DATE_FORMATS.LONG_TIME[formatType];\r\n } else {\r\n format = DATE_FORMATS.TIME[formatType];\r\n }\r\n\r\n break;\r\n case FieldFormat.TIMESPAN:\r\n if (FieldFormat.IsLongTime(formatName)) {\r\n format = DATE_FORMATS.TIME_SPAN_LONG[formatType];\r\n } else {\r\n format = DATE_FORMATS.TIME_SPAN[formatType];\r\n }\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return format;\r\n }\r\n\r\n static CorrectTimezone(date: string, reverseShift?: boolean): string {\r\n\r\n if ((moment(date) as any)._tzm) {\r\n return date;\r\n } else {\r\n return this.ShiftTimeZone(date, reverseShift);\r\n }\r\n }\r\n\r\n static ShiftTimeZone(date: string, reverseShift?: boolean): string {\r\n let timeZoneShift = moment(date).utcOffset() / 60;\r\n\r\n if (!moment(date).isValid() || !isNaN(+date)) {\r\n return date;\r\n }\r\n\r\n if (reverseShift) {\r\n timeZoneShift *= -1;\r\n }\r\n\r\n return moment(date).add(timeZoneShift, 'hours').format();\r\n }\r\n\r\n static FormatToDay(date: string, format?: string): any {\r\n let correctDate = moment(this.CorrectTimezone(date)).hours(0).minutes(0).seconds(0);\r\n if (format) {\r\n return correctDate.format(format);\r\n }\r\n return correctDate;\r\n }\r\n}","import { P } from \"Core/Common/Promise\";\r\nimport { URL } from \"Core/Common/Url\";\r\nimport { IRequestOptions, Request } from \"Core/Common/Request\";\r\n\r\nexport class HelpBookStore {\r\n\tstatic GetScreens(model): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/HelpPagesApi/GetScreens\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: model\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n\r\n\tstatic GetEntities(): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/HelpPagesApi/GetEntities\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n\r\n\tstatic GetEntityInfo(model): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/HelpPagesApi/GetEntityInfo\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: { id: model.id }\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n\tstatic GetTypeInfo(model): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/HelpPagesApi/GetTypeInfo\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: { id: model.id }\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n\tstatic GetScreenInfo(model): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/HelpPagesApi/GetScreenInfo\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: { id: model.id }\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n\r\n\tstatic GetControlInfo(model): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/HelpPagesApi/GetControlInfo\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: { id: model.id }\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n} \r\n\r\n","import * as ko from 'knockout';\r\nimport { Guid } from \"Core/Common/Guid\";\r\n\r\nimport HelpDescriptionTemplate from 'HelpBook/HelpDescription/Templates/HelpDescription.html';\r\nko.templates['HelpBook/HelpDescription/Templates/HelpDescription'] = HelpDescriptionTemplate;\r\n\r\nexport class HelpDescription {\r\n\r\n\tprivate noDescription: KnockoutObservable<boolean>;\r\n\tprivate _guid: string;\r\n\tprivate _editor: any;\r\n\tprivate description: KnockoutObservable<string>;\r\n\tprivate previewText: KnockoutObservable<string>;\r\n\tprivate showFullDescription: KnockoutObservable<boolean>;\r\n\r\n\tprivate isActive: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(description) {\r\n\t\tthis.noDescription = ko.observable(false);\r\n\t\tthis._guid = Guid.NewGuid();\r\n\t\tthis.isActive = ko.observable(false);\r\n\t\tthis.description = ko.observable(description);\r\n\t\tthis.showFullDescription = ko.observable(false);\r\n\t\tthis.previewText = ko.observable('');\r\n\t\tif (!this.description() || !this.description().trim()) {\r\n\t\t\tthis.noDescription(true);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tToggleDescription() {\r\n\t\tthis.showFullDescription(!this.showFullDescription());\r\n\t}\r\n\r\n\tAfterTinyInit(editor) {\r\n\r\n\t\tthis._editor = editor;\r\n\t\teditor.setMode('readonly');\r\n\t\teditor.setContent(this.description());\r\n\t\tthis.previewText(this.description().replace(/<[^>]*>/g, \"\").substr(0, 45) + '...');\r\n\t}\r\n\r\n\tGetEditor() {\r\n\t\treturn this._editor;\r\n\t}\r\n\r\n\tActivateDescription() {\r\n\t\tthis.isActive(!this.isActive());\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'HelpBook/HelpDescription/Templates/HelpDescription';\r\n\t}\r\n\r\n}","// Module\nvar code = \"<!-- ko if:!noDescription()--> <!--<div class=\\\"preview-text-container\\\" data-bind=\\\"css: {hidden: showFullDescription}\\\">\\r\\n\\t<span data-bind=\\\"html: previewText\\\"></span>\\r\\n\\t<a class=\\\"show-more\\\" data-bind=\\\"click: $data.ToggleDescription.bind($data)\\\">show full description</a>\\r\\n\\r\\n</div>\\r\\n\\r\\n<button type=\\\"button\\\" class=\\\"show-less btn btn-link\\\" data-bind=\\\"click: $data.ToggleDescription.bind($data), css: {hidden: !showFullDescription()}\\\">Show less</button>--> <!--<div data-bind=\\\"css: {hidden: !showFullDescription()}\\\"> --> <!-- ko if: isActive--> <textarea data-bind=\\\" attr: {id: _guid},\\r\\n\\t\\t\\ttinymce : {\\r\\n\\t\\t\\t\\t\\tguid: _guid,\\r\\n\\t\\t\\t\\t\\treadOnly: true,\\r\\n\\t\\t\\t\\t\\tautofocus: false,\\r\\n\\t\\t\\t\\t\\tmin_height: '500',\\r\\n\\t\\t\\t\\t\\tafterInit: $data.AfterTinyInit.bind($data) \\r\\n\\t\\t\\t }\\\" class=\\\"mail-body-editor\\\">\\r\\n\\t</textarea> <!-- /ko --> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport HelpStatusFlowTemplate from 'HelpBook/HelpStatusFlow/Templates/HelpStatusFlow.html';\r\nimport {HelpBook} from 'HelpBook/HelpBook';\r\n\r\nko.templates['HelpBook/HelpStatusFlow/Templates/HelpStatusFlow'] = HelpStatusFlowTemplate;\r\n\r\nexport class HelpStatusFlow {\r\n\tprivate isStatusFlowActive: KnockoutObservable<boolean>;\r\n\tprivate _typeId: number;\r\n\r\n\tconstructor(typeId: number) {\r\n\t\tthis.isStatusFlowActive = ko.observable(true);\r\n\t\tthis._typeId = typeId;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tHelpBook.Instance.BuildLifecicleDesignerFlow(this._typeId);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'HelpBook/HelpStatusFlow/Templates/HelpStatusFlow';\r\n\t}\r\n}","// Module\nvar code = \"<div data-toggle=\\\"collapse\\\" data-bind=\\\"click: $root.ClickStatusFlow.bind($root)\\\" href=\\\"#lifestatus-diagram\\\" class=\\\"list-group-item\\\" aria-expanded=\\\"true\\\"> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : $data.isStatusFlowActive, 'glyphicon-chevron-right' : !$data.isStatusFlowActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <a class=\\\"title\\\" data-bind=\\\"text: $root._labels.STATUS_FLOW\\\"></a> </div> <div class=\\\"collapse in list-group list-group-root border-left lifeStatusDiagramContainer\\\" id=\\\"lifestatus-diagram\\\"> <div class=\\\"list-group list-group-item\\\"> <div class=\\\"lifecycle-designer-help-root\\\"> <div id=\\\"flow-designer\\\" class=\\\"flow-designer\\\"></div> <div class=\\\"paper-wrapper\\\"> <div id=\\\"paper-scroller\\\" class=\\\"paper-scroller\\\"></div> </div> </div> </div> <!-- ko foreach: $root.lifestatuses --> <div class=\\\"list-group-item list-group-item-action\\\"> <a class=\\\"\\\" data-toggle=\\\"collapse\\\" data-bind=\\\"click: $data.Click.bind($parents[1]), attr: {href: '#' + Id}\\\"> <!-- ko if: isAnythingAttached --> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : $data.isActive, 'glyphicon-chevron-right' : !$data.isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-right\\\"></i> <!-- /ko --> <span data-bind=\\\"text: Name\\\"></span> </a> <!-- ko if: isAnythingAttached --> <div class=\\\"collapse\\\" data-bind=\\\"attr: {id: Id}\\\"> <div class=\\\"list-group list-group-item\\\"> <!-- ko if: isSettigsDisplays --> <span data-bind=\\\"text: $root._labels.SETTINGS\\\" class=\\\"flow-title\\\"></span> <div class=\\\"items-wrapper\\\"> <!-- ko if: isTriggersSet --> <div class=\\\"item\\\"> <i class=\\\"fa fa-bolt\\\"></i> <!-- ko text: $root._labels.SETTING_THE_STATUS_RUNS --><!-- /ko --> <span data-bind=\\\"text: ` (${dwPackagesNames})`\\\"></span> </div> <!-- /ko --> <!-- ko if: NoActionNode --> <div class=\\\"item\\\"> <i class=\\\"fa fa-arrow-up\\\"></i> <!-- ko text: $root._labels.FOLLOW_UP_DOES_NOT_CREATE_AN_ACTION --><!-- /ko --> </div> <!-- /ko --> <!-- ko if: DateElapsed --> <div class=\\\"item\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!-- ko text: $root._labels.DURATION_IS_SET --><!-- /ko --> <span data-bind=\\\"text: dateElapsed\\\"></span> </div> <!-- /ko --> <!-- ko if: DeadlineElapsed --> <div class=\\\"item\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!-- ko text: $root._labels.DEADLINE_IS_SET --><!-- /ko --> Deadline of the related action is automatically set to <span data-bind=\\\"text: deadlineElapsed\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko if: businessRoles && businessRoles.length --> <span data-bind=\\\"text: `${$root._labels.BUSINESS_ROLES}:`\\\" class=\\\"flow-title\\\"></span> <div class=\\\"items-wrapper\\\"> <!-- ko foreach: businessRoles --> <div class=\\\"item\\\"> <i class=\\\"fa fa-briefcase\\\"></i> <span data-bind=\\\"text: ` ${Name}`\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko if: dwPackages && dwPackages.length --> <!-- ko foreach: dwPackages --> <span data-bind=\\\"text: `${$root._labels.FUNCTIONS +' - '+ Name}`\\\" class=\\\"flow-title\\\"></span> <div class=\\\"items-wrapper functions\\\"> <!-- ko foreach: Functions --> <div class=\\\"item\\\"> <i class=\\\"fa fa-code\\\"></i> <span data-bind=\\\"text: ` ${Name} `\\\"></span> <!-- ko text: $data.TypeName --><!-- /ko --> <span data-bind=\\\"text:` (${APIPackageName} `\\\"></span> <!-- ko text: $root._canvasTypes.API_PACKAGE + ') - ' --><!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"if: $data.selectedEntityHasData\\\"> <h3 class=\\\"help-entity-title\\\"> <!-- ko template: {name: $root.GetIconTemplateName.bind($data)} --> <!-- /ko --> <span class=\\\"align-middle\\\" data-bind=\\\"text: $data.selectedEntityTranslatedName || $data.selectedEntityName\\\"></span> </h3> <!-- ko if: $data.selectedEntityDescription --> <div class=\\\"help-entity-description\\\" data-bind=\\\"text: $data.selectedEntityTranslatedName || $data.selectedEntityDescription\\\"></div> <!-- /ko --> <!-- ko if: $data.selectedEntityTypesList().length --> <div class=\\\"types-list\\\"> <span data-bind=\\\"text: `${_labels.TYPES}:`\\\"></span> <!-- ko foreach: $data.selectedEntityTypesList --> <div class=\\\"type-item\\\"> <!-- ko template: {name: $root.GetIconTemplateName.bind($data)} --> <!-- /ko --> <span data-bind=\\\"text: TranslatedName\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko foreach: $data.selectedEntityTypes --> <div class=\\\"list-group-item list-group-item-action\\\"> <a class=\\\"\\\" data-bind=\\\"\\r\\n\\t\\t click: $data.Click.bind($parents[1])\\\" href=\\\"javascript:void(0)\\\"> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : $data.isActive, 'glyphicon-chevron-right' : !$data.isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <span data-bind=\\\"text: TranslatedName || Name\\\"></span> <!-- ko if: Name === '-' --> <span data-bind=\\\"text: ` (${$parent._labels.DASH})`\\\"></span> <!-- /ko --> <!-- ko template: {name: $root.GetIconTemplateName.bind($data)} --> <!-- /ko --> </a> </div> <div data-bind=\\\"if: $data.isActive\\\"> <div class=\\\"list-group border-left\\\"> <!-- ko if: (Id !== 0 && StepsCount > 0) --> <!-- ko with: $data.HelpStatusFlow --> <!-- ko template: {name: $root.GetStatusFlowTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- ko with: $root.ActiveHelpScreen --> <!-- ko template: {name: $root.GetScreenTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> <div data-bind=\\\"if: selectedEntityHasNoData\\\"> <h3>There is no available help information.</h3> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {HelpBookStore} from \"HelpBook/Store/HelpBookStore\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {HelpDescription} from \"HelpBook/HelpDescription/HelpDescription\";\r\nimport {HelpStatusFlow} from \"HelpBook/HelpStatusFlow/HelpStatusFlow\";\r\n\r\nimport {HelpBook} from 'HelpBook/HelpBook';\r\n\r\nimport HelpEntityTemplate from 'HelpBook/HelpEntity/Templates/HelpEntity.html';\r\nimport {LABELS} from \"../../Core/Components/Translation/Locales\";\r\n\r\nko.templates['HelpBook/HelpEntity/Templates/HelpEntity'] = HelpEntityTemplate;\r\n\r\nexport class HelpEntity {\r\n private selectedEntityName: KnockoutObservable<string>;\r\n private selectedEntityTranslatedName: KnockoutObservable<string>;\r\n private selectedEntityDescription: KnockoutObservable<string>;\r\n private selectedEntityHasData: KnockoutObservable<boolean>;\r\n private selectedEntityHasNoData: KnockoutObservable<boolean>;\r\n public selectedEntityTypes: KnockoutObservableArray<any>;\r\n public selectedEntityTypesList: KnockoutObservableArray<any>;\r\n public selectedEntityId: KnockoutObservable<number>;\r\n private HelpDescription: KnockoutObservable<HelpDescription>;\r\n\r\n private Icon: string;\r\n private IconId: number;\r\n private IconImage: string;\r\n private IconType: string;\r\n\r\n private _labels = LABELS;\r\n\r\n constructor() {\r\n this.selectedEntityTypes = ko.observableArray([]);\r\n this.selectedEntityTypesList = ko.observableArray([]);\r\n this.selectedEntityName = ko.observable(null);\r\n this.selectedEntityTranslatedName = ko.observable(null);\r\n this.selectedEntityDescription = ko.observable(null);\r\n\r\n this.selectedEntityHasData = ko.observable(false);\r\n this.selectedEntityHasNoData = ko.observable(false);\r\n this.HelpDescription = ko.observable(null);\r\n }\r\n\r\n FetchData(entity) {\r\n return new Promise((res, rej) => {\r\n BlockUI.Block();\r\n this.Icon = entity.Icon;\r\n this.IconId = entity.IconId;\r\n this.IconImage = entity.IconImage;\r\n this.IconType = entity.IconType;\r\n\r\n HelpBookStore.GetEntityInfo({id: entity.Id}).always(() => {\r\n BlockUI.Unblock();\r\n }).then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n rej();\r\n return;\r\n }\r\n this.selectedEntityHasData(result.HasData);\r\n this.selectedEntityHasNoData(!result.HasData);\r\n if (result.HasData) {\r\n this.selectedEntityName(result.ResultObject.Name);\r\n this.selectedEntityTranslatedName(result.ResultObject.TranslatedName);\r\n this.selectedEntityDescription(result.ResultObject.Description);\r\n this.HelpDescription(new HelpDescription(this.selectedEntityDescription()));\r\n this.HelpDescription().ActivateDescription();\r\n\r\n this.selectedEntityTypes(result.ResultObject.Types.map((type) => {\r\n type.noDescription = ko.observable('');\r\n type.previewText = ko.observable('');\r\n type.showFullDescription = ko.observable(false);\r\n return _.extend({}, type, {\r\n isActive: ko.observable(false),\r\n\t\t\t\t\t\t\tselectedEntityId: result.ResultObject.Id,\r\n Click: (type) => {\r\n HelpBook.Instance.GetScreens(type);\r\n type.HelpDescription.ActivateDescription();\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tHelpDescription: new HelpDescription(type.Description),\r\n HelpStatusFlow: new HelpStatusFlow(type.Id)\r\n });\r\n }));\r\n }\r\n res(null);\r\n });\r\n });\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'HelpBook/HelpEntity/Templates/HelpEntity';\r\n }\r\n\r\n _selectedEntityId() {\r\n return this.selectedEntityId();\r\n }\r\n\r\n\r\n}","import * as ko from 'knockout';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nimport { HelpBookStore } from 'HelpBook/Store/HelpBookStore';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { HelpDescription } from 'HelpBook/HelpDescription/HelpDescription';\r\nimport { HelpForm } from 'HelpBook/HelpForm/HelpForm';\r\n\r\n\r\nimport { HelpBook } from 'HelpBook/HelpBook';\r\n\r\nimport {\r\n\tEntityScreen\r\n} from 'HelpBook/Store/Models/HelpBookModel';\r\n\r\nimport HelpScreenTemplate from 'HelpBook/HelpScreen/Templates/HelpScreen.html';\r\nko.templates['HelpBook/HelpScreen/Templates/HelpScreen'] = HelpScreenTemplate;\r\n\r\nexport class HelpScreen {\r\n\tprivate selectedTypeHasData: KnockoutObservable<boolean>;\r\n\tprivate selectedScreenHasData: KnockoutObservable<boolean>;\r\n\tprivate showSelectedScreenData: boolean;\r\n\tprivate skipBlockUi: boolean;\r\n\tpublic id: boolean;\r\n\tpublic selectedEntityScreens: KnockoutObservableArray<EntityScreen>;\r\n\tprivate HelpForm: KnockoutObservable<HelpForm>;\r\n\r\n\tconstructor(type, skipBlock: boolean = false) {\r\n\t\tthis.selectedTypeHasData = ko.observable(false);\r\n\t\tthis.selectedScreenHasData = ko.observable(false);\r\n\t\tthis.selectedEntityScreens = ko.observableArray([]);\r\n\t\tthis.showSelectedScreenData = false;\r\n\t\tthis.skipBlockUi = skipBlock;\r\n\t\tthis.id = null;\r\n\t\tthis.HelpForm = ko.observable(null);\r\n\t\tthis.FetchData(type);\r\n\t}\r\n\r\n\tFetchData(type) {\r\n\t\tif (!this.skipBlockUi) {\r\n\t\t\tBlockUI.Block();\r\n\t\t}\r\n\r\n\t\tHelpBookStore.GetScreens({ entityId: type.selectedEntityId, tableTypeId: type.Id }).then(result => {\r\n\t\t\tif (!this.skipBlockUi) {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}\r\n\r\n\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.selectedTypeHasData(result.HasData);\r\n\t\t\tthis.selectedScreenHasData(false);\r\n\r\n\t\t\tif (result.HasData) {\r\n\t\t\t\tthis.selectedEntityScreens(result.ResultObject.map((screen) => {\r\n\t\t\t\t\treturn _.extend({}, screen, {\r\n\t\t\t\t\t\tisActive: ko.observable(false),\r\n\t\t\t\t\t\tHelpDescription: new HelpDescription(screen.Description)\r\n\t\t\t\t\t});\r\n\t\t\t\t}));\r\n\t\t\t\tif (this.selectedEntityScreens().length) {\r\n\t\t\t\t\tHelpBook.Instance.GetScreenInfo(_.where(this.selectedEntityScreens(), { Main: true })[0] || this.selectedEntityScreens()[0], true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.showSelectedScreenData = type.directScreen;\r\n\t\t\t}\r\n\t\t}).fail(() => {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t});\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"if: selectedTypeHasData\\\"> <div class=\\\"list-group border-left\\\"> <!-- ko foreach: $data.selectedEntityScreens --> <a href=\\\"javascript:;\\\" data-bind=\\\"click: $root.GetScreenInfo.bind($root, $data, false),\\r\\n\\t\\t\\t\\t\\t\\tcss: { 'Select' : isActive, 'noSelect' : !isActive()}\\\" class=\\\"list-group-item list-group-item-action\\\"> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : isActive, 'glyphicon-chevron-right' : !isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <span data-bind=\\\"text: `${Name} (${TypeTranslatedName || TypeName})`\\\"></span> <!-- ko if: Description --> <p data-bind=\\\"text: Description\\\" class=\\\"description\\\"></p> <!-- /ko --> </a> <div data-bind=\\\"if: isActive\\\"> <!-- ko with: $root.HelpForm --> <!-- ko template: {name: $root.GetFormTemplateName} --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"\\t<div data-bind=\\\"if: selectedScreenHasData\\\"> <!-- ko if: directTargetedScreen--> <h3 data-bind=\\\"text: selectedScreenName\\\"><span data-bind=\\\"text: selectedScreenTypeName\\\"></span></h3> <!-- /ko --> <div class=\\\"list-group list-group-root border-left\\\"> <!-- ko foreach: selectedScreenSubForms --> <div data-toggle=\\\"collapse\\\" data-bind=\\\"click: $data.Click.bind($data), attr: {href: '#' + Id}\\\" class=\\\"list-group-item\\\" aria-expanded=\\\"true\\\"> <!-- ko if: Controls.length --> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : isActive, 'glyphicon-chevron-right' : !isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <!-- /ko --> <span data-bind=\\\"text: Name\\\" class=\\\"title\\\"></span> <!-- ko if: Description--> <p data-bind=\\\"text: Description\\\" class=\\\"descriptionScreen\\\"></p> <!-- /ko --> </div> <!-- ko if: Controls.length --> <div class=\\\"collapse in\\\" data-bind=\\\"attr: {id: Id}\\\" aria-expanded=\\\"true\\\"> <div class=\\\"list-group\\\"> <!-- ko if: ControlComponents.length --> <div data-bind=\\\"css: {'isWrapped': !isBar(), 'col-md-4': !isBar()}\\\" class=\\\"control-components-wrapper\\\"> <!-- ko foreach: ControlComponents --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <div style=\\\"display:inline-block\\\" data-bind=\\\"template: { name: 'controlTemplate', foreach: Controls, as: 'control' }\\\"></div> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> <!-- Controls Template --> <script type=\\\"text/html\\\" id=\\\"controlTemplate\\\"> <a data-bind=\\\"click: $data.Click.bind($data), attr: {href: '#' + Id}\\\"\\r\\n\\t class=\\\"list-group-item\\\">\\r\\n\\t\\t<!-- ko if: AttachedFields.length-->\\r\\n\\t\\t<b data-bind=\\\"text: GetTranslation\\\"></b><span data-bind=\\\"text: ` (${TypeName} ${$data.labels.CONTROL}: ${AttachedFields[0].TableName}.`\\\"></span><b data-bind=\\\"text: AttachedFields[0].Name\\\"></b><span data-bind=\\\"text: ` )`\\\"></span>\\r\\n\\t\\t<!-- ko if: Description-->\\r\\n\\t\\t<span data-bind=\\\"text: ` - ${Description}`\\\"></span>\\r\\n\\t\\t<!-- /ko -->\\r\\n\\t\\t<!-- /ko -->\\r\\n\\t\\t<!-- ko ifnot: AttachedFields.length -->\\r\\n\\t\\t<b data-bind=\\\"text: GetTranslation\\\"></b><span data-bind=\\\"text: ` (${TypeName} ${$data.labels.CONTROL})`\\\"></span>\\r\\n\\t\\t<!-- ko if: Description-->\\r\\n\\t\\t<span data-bind=\\\"text: ` - ${Description}`\\\"></span>\\r\\n\\t\\t<!-- /ko -->\\r\\n\\t\\t<!-- /ko -->\\r\\n\\t</a>\\r\\n\\r\\n\\t<div data-bind=\\\"attr: {id: Id}\\\">\\r\\n\\t\\t<div class=\\\"list-group\\\"\\r\\n\\t\\t\\t data-bind=\\\"template: { name: 'controlTemplate', foreach: Controls, as: 'control' }\\\"></div>\\r\\n\\t</div> </script>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {HelpBookStore} from \"HelpBook/Store/HelpBookStore\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {HelpDescription} from \"HelpBook/HelpDescription/HelpDescription\";\r\n\r\nimport {\r\n Control,\r\n SubFormControl\r\n} from 'HelpBook/Store/Models/HelpBookModel';\r\n\r\nimport HelpFormTemplate from 'HelpBook/HelpForm/Templates/HelpForm.html';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {AttachedFieldModel} from \"../../Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {ControlModel} from \"../../Core/Controls/BaseControl/Models/ControlModel\";\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {LanguageModel} from 'Core/Controls/BaseControl/Models/LanguageModel';\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {RenderModes} from \"../../Core/Constant\";\r\nimport {IControlParam} from \"../../Core/Screens/IScreen\";\r\nimport {IStaticControlsPosition, StaticControlsProvider} from '../../Core/Controls/StaticControlsProvider';\r\n\r\nko.templates['HelpBook/HelpForm/Templates/HelpForm'] = HelpFormTemplate;\r\n\r\nexport class HelpForm {\r\n private controls: KnockoutObservableArray<any>;\r\n private selectedScreenSubForms: KnockoutObservableArray<SubFormControl>;\r\n private selectedScreenHasData: KnockoutObservable<boolean>;\r\n private directTargetedScreen: KnockoutObservable<boolean>;\r\n private selectedScreenName: KnockoutObservable<string>;\r\n private selectedScreenDescription: KnockoutObservable<string>;\r\n private HelpDescription: KnockoutObservable<HelpDescription>;\r\n\r\n public selectedEntityId: number;\r\n private isActive: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n this.controls = ko.observableArray([]);\r\n this.selectedScreenSubForms = ko.observableArray([]);\r\n this.selectedScreenHasData = ko.observable(false);\r\n this.directTargetedScreen = ko.observable(false);\r\n this.selectedScreenName = ko.observable('');\r\n this.selectedScreenDescription = ko.observable('');\r\n this.HelpDescription = ko.observable(null);\r\n this.isActive = ko.observable(false);\r\n }\r\n\r\n\r\n\tFetchData(screen, skipBlock: boolean = false) {\r\n\t\treturn new Promise((res, rej) => {\r\n\t\t\tif (!skipBlock) {\r\n\t\t\t\tBlockUI.Block();\r\n\t\t\t}\r\n\r\n\t\t\tthis.directTargetedScreen(screen.directScreen);\r\n\r\n\t\t\tHelpBookStore.GetScreenInfo({id: screen.Id}).then(async result => {\r\n\t\t\t\tif (!skipBlock) {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\t\trej();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.selectedScreenHasData(result.HasData);\r\n\t\t\t\tif (result.HasData) {\r\n\t\t\t\t\tconst subForms = result.ResultObject.SubForms.map((form) => {\r\n\t\t\t\t\t\tif (form.Name === '') {\r\n\t\t\t\t\t\t\tform.Name = 'SubForm';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn _.extend({}, form, {\r\n\t\t\t\t\t\t\t\tisActive: ko.observable(true),\r\n\t\t\t\t\t\t\t\tisBar: ko.observable(form.Name.includes('ActionBar') || form.Name.includes('Bottom')),\r\n\t\t\t\t\t\t\t\tHelpDescription: new HelpDescription(form.Description),\r\n\t\t\t\t\t\t\t\tClick: (control) => {\r\n\t\t\t\t\t\t\t\t\tcontrol.HelpDescription.ActivateDescription();\r\n\t\t\t\t\t\t\t\t\tcontrol.isActive(!control.isActive());\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tGetTranslation: this.GetControlTranslation(form),\r\n\t\t\t\t\t\t\t\tControlComponents: []\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tconst staticControlsPosition = StaticControlsProvider.ForScreen(result.ResultObject.ScreenTypeName, false, false);\r\n\t\t\t\t\tawait this.RegisterStaticControls(subForms, staticControlsPosition);\r\n\r\n\t\t\t\t\tfor(const form of subForms){\r\n\t\t\t\t\t\tawait this.IterateOverNestedControls(form);\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis.selectedScreenSubForms(subForms);\r\n\t\t\t\t\tscreen.Description = ko.observable(result.ResultObject.Description);\r\n\r\n\t\t\t\t\tthis.selectedScreenName(result.ResultObject.Name);\r\n\t\t\t\t\tthis.selectedEntityId = result.ResultObject.EntityId;\r\n\t\t\t\t\tthis.selectedScreenDescription(result.ResultObject.Description);\r\n\t\t\t\t\tthis.HelpDescription(new HelpDescription(result.ResultObject.Description));\r\n\t\t\t\t}\r\n\t\t\t\tthis.HelpDescription().ActivateDescription();\r\n\t\t\t\tthis.isActive(true);\r\n\t\t\t\t(screen as any).dataFetched = true;\r\n\t\t\t\tres(null);\r\n\t\t\t}).fail(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n SelectControl(control) {\r\n control.isActive(!control.isActive());\r\n }\r\n\r\n MapToControlModel(control: Control) {\r\n\t\tconst attachedFields = control.AttachedFields.map(field => {\r\n\t\t\tlet attachedFieldModel = new AttachedFieldModel({ Id: control.Id, Name: field.Name });\r\n attachedFieldModel.FieldNameTranslation = field.TranslatedName;\r\n attachedFieldModel.EntityIcon = field.EntityIcon;\r\n attachedFieldModel.FieldIcon = field.FieldIcon;\r\n\t\t\treturn attachedFieldModel;\r\n\t\t});\r\n\r\n\t\tconst currentLanguage = TranslationManager.Instance.GetCurrentLanguage();\r\n\t\tconst currentLanguageModel = new LanguageModel(currentLanguage.Id);\r\n\r\n\t\tconst translationModel = new TranslationModel();\r\n\t\ttranslationModel.Language = currentLanguageModel;\r\n\t\ttranslationModel.Selected = true;\r\n\t\ttranslationModel.Translation = control.TranslatedName;\r\n\r\n let model = new ControlModel();\r\n model.Fields = attachedFields;\r\n model.Name = control.Name;\r\n model.TypeName = control.TypeName;\r\n\t\tmodel.TranslatedName = control.TranslatedName;\r\n\t\tmodel.NameTranslations = [translationModel];\r\n\t\tmodel.UseFieldName = control.UseFieldName;\r\n\t\tmodel.IsFieldAttached = control.IsFieldAttached;\r\n\t\tmodel.IsLookupFieldAttached = control.IsLookupFieldAttached;\r\n model.IsMultiSelectFieldAttached = control.IsMultiSelectFieldAttached;\r\n model.LabelPosition = control.LabelPosition;\r\n model.Icon = control.Icon;\r\n\r\n if (control.Properties) {\r\n try {\r\n model.Properties = JSON.parse(control.Properties);\r\n } catch {\r\n }\r\n }\r\n\r\n model.SubControls = control.Controls.filter(control => this.CanBeRendered(control)).map(control => this.MapToControlModel(control));\r\n return model;\r\n }\r\n\r\n CanBeRendered(control: Control) {\r\n return control.TypeName.startsWith(\"Button\")\r\n || control.TypeName === 'Search'\r\n || control.TypeName === 'DateTime'\r\n || control.TypeName === 'Text'\r\n || control.TypeName === 'Checkbox'\r\n || control.TypeName === 'Dropdown'\r\n || control.TypeName === 'Memo'\r\n || control.TypeName === 'Image'\r\n || control.TypeName === 'Drop'\r\n || control.TypeName === 'MultiSelect'\r\n || control.TypeName === 'GenericButton'\r\n || control.TypeName === 'Document'\r\n || control.TypeName === 'SelectUser'\r\n || control.TypeName === 'ColorSelector'\r\n || control.TypeName === 'Password'\r\n || control.TypeName === 'RadioButton'\r\n || control.TypeName === 'Tag'\r\n || control.TypeName === 'Alias'\r\n || control.TypeName === 'Label'\r\n || control.TypeName === 'Group'\r\n || control.TypeName === 'Currency'\r\n || control.TypeName === 'Grid'\r\n || control.TypeName === 'Tab'\r\n || control.TypeName === 'TabPage'\r\n || control.TypeName === 'ProductConfigurator'\r\n || control.TypeName === 'SPIMCopy'\r\n || control.TypeName === 'History'\r\n\t\t\t|| control.TypeName === 'Book'\r\n\t\t\t|| control.TypeName === 'BulkEmail'\r\n || control.TypeName === 'QueryResult'\r\n || control.TypeName === 'Invoicing'\r\n || control.TypeName === 'Timer'\r\n || control.TypeName === 'Signature'\r\n || control.TypeName === 'Spreadsheet'\r\n }\r\n\r\n\r\n async IterateOverNestedControls(item: SubFormControl) {\r\n let controls = [];\r\n for(const control of item.Controls){\r\n await this.IterateOverNestedControls(control);\r\n if (this.CanBeRendered(control)) {\r\n const controlComponent = await this.CreateControlComponent(this.MapToControlModel(control));\r\n\r\n if (item.ControlComponents && controlComponent) {\r\n item.ControlComponents.push(controlComponent);\r\n }\r\n }\r\n\r\n controls.push(_.extend({}, control, {\r\n\t\t\t\tisActive: ko.observable(false),\r\n\t\t\t\tHelpDescription: new HelpDescription(control.Description),\r\n\t\t\t\tlabels: LABELS,\r\n\t\t\t\tClick: (control) => {\r\n\t\t\t\t\tcontrol.HelpDescription.ActivateDescription();\r\n\t\t\t\t\tcontrol.isActive(!control.isActive());\r\n\t\t\t\t},\r\n\t\t\t\tGetTranslation: this.GetControlTranslation(control)\r\n }));\r\n\r\n };\r\n\r\n item.Controls = controls;\r\n }\r\n\r\n\tGetControlTranslation(control: Control): string {\r\n\t\tconst controlName = control.Name;\r\n\t\tlet controlTranslation = null;\r\n\r\n\t\tif (control.UseFieldName &&\r\n\t\t\t(control.IsFieldAttached || control.IsLookupFieldAttached || control.IsMultiSelectFieldAttached)) {\r\n\t\t\tconst fieldAttached = _.first(control.AttachedFields);\r\n\t\t\tif (fieldAttached) {\r\n\t\t\t\tcontrolTranslation = fieldAttached.TranslatedName;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcontrolTranslation = control.TranslatedName;\r\n\t\t}\r\n\r\n\t\treturn controlTranslation || controlName;\r\n\t}\r\n\r\n GetTemplateName(): string {\r\n return 'HelpBook/HelpForm/Templates/HelpForm';\r\n }\r\n\r\n private async RegisterStaticControls(subForms, staticControlsPosition: IStaticControlsPosition) {\r\n const subFormsNumber = subForms.length;\r\n\r\n const actionBar = subForms[0];\r\n const mainBlocks = subForms.slice(1, subFormsNumber - 2);\r\n const bottomBar = subForms[subFormsNumber - 1];\r\n\r\n for(const controlModel of staticControlsPosition.ActionBar){\r\n const controlComponent = await this.CreateControlComponent(controlModel);\r\n actionBar.ControlComponents.push(controlComponent);\r\n };\r\n\r\n for(const subForm of staticControlsPosition.SubForms){\r\n for (const controlModel of subForm){\r\n const controlComponent = await this.CreateControlComponent(controlModel);\r\n mainBlocks[staticControlsPosition.SubForms.indexOf(subForm)].ControlComponents.push(controlComponent);\r\n };\r\n };\r\n\r\n for (const controlModel of staticControlsPosition.BottomBar) {\r\n const controlComponent = await this.CreateControlComponent(controlModel);\r\n bottomBar.ControlComponents.push(controlComponent);\r\n };\r\n }\r\n\r\n private async CreateControlComponent(controlModel: ControlModel) {\r\n const renderMode = RenderModes.HelpView;\r\n\r\n var controlParam: IControlParam = {\r\n Model: controlModel,\r\n RenderMode: renderMode,\r\n Form: null\r\n };\r\n\r\n let controlFactory = (await import(\"Core/Controls/ControlFactory\")).ControlFactory;\r\n\r\n return controlFactory.CreateControl(controlParam);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Guid} from \"Core/Common/Guid\";\r\nimport {HelpDescription} from \"HelpBook/HelpDescription/HelpDescription\";\r\n\r\nimport {HelpBookStore} from \"HelpBook/Store/HelpBookStore\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {\r\n AttachedField,\r\n SubFormControl,\r\n Control\r\n} from 'HelpBook/Store/Models/HelpBookModel';\r\n\r\nimport HelpControlTemplate from 'HelpBook/HelpControl/Templates/HelpControl.html';\r\nimport {LABELS} from \"../../Core/Components/Translation/Locales\";\r\nimport {RenderModes} from \"../../Core/Constant\";\r\nimport {IControlParam} from \"../../Core/Screens/IScreen\";\r\nimport {AttachedFieldModel} from \"../../Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {ControlModel} from \"../../Core/Controls/BaseControl/Models/ControlModel\";\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {LanguageModel} from 'Core/Controls/BaseControl/Models/LanguageModel';\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\n\r\nko.templates['HelpBook/HelpControl/Templates/HelpControl'] = HelpControlTemplate;\r\n\r\nexport class HelpControl {\r\n private selectedControlSubControls: KnockoutObservableArray<SubFormControl>;\r\n private subControlsPresent: KnockoutObservable<boolean>;\r\n private selectedControlHasData: KnockoutObservable<boolean>;\r\n private selectedControlName: KnockoutObservable<string>;\r\n private selectedControlTypeName: KnockoutObservable<string>;\r\n private selectedControlDescription: KnockoutObservable<string>;\r\n private attachedFields: KnockoutObservableArray<AttachedField>;\r\n private controlComponents;\r\n private noDescription: KnockoutObservable<boolean>;\r\n private isActive: KnockoutObservable<boolean>;\r\n private HelpDescription: KnockoutObservable<HelpDescription>;\r\n\r\n private selectedEntityId: number;\r\n\r\n private _labels = LABELS;\r\n\r\n constructor(screen) {\r\n this.selectedControlSubControls = ko.observableArray([]);\r\n this.selectedControlHasData = ko.observable(false);\r\n this.selectedControlName = ko.observable('');\r\n this.selectedControlTypeName = ko.observable('');\r\n this.selectedControlDescription = ko.observable('');\r\n this.attachedFields = ko.observableArray([]);\r\n this.controlComponents = [];\r\n this.isActive = ko.observable(true);\r\n this.subControlsPresent = ko.observable(false);\r\n this.HelpDescription = ko.observable(null);\r\n\r\n this.FetchData(screen);\r\n }\r\n\r\n FetchData(control) {\r\n BlockUI.Block();\r\n\r\n HelpBookStore.GetControlInfo({id: control.Id}).always(() => {\r\n BlockUI.Unblock();\r\n }).then(async result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n if (result.HasData) {\r\n const subControls = result.ResultObject.Controls.filter((control) => {\r\n return control.Name !== null;\r\n }).map((control) => {\r\n return _.extend({}, control, {\r\n isActive: ko.observable(false),\r\n Click: (control) => {\r\n control.isActive(!control.isActive());\r\n },\r\n HelpDescription: new HelpDescription(result.ResultObject.Description)\r\n });\r\n });\r\n\r\n this.selectedControlSubControls(subControls);\r\n this.subControlsPresent(Boolean(subControls.length));\r\n\r\n\t\t\t}\r\n\r\n const controlTranslatedName = this.GetControlTranslation(result.ResultObject);\r\n\t\t\tthis.selectedControlName(controlTranslatedName);\r\n\r\n this.selectedControlTypeName(result.ResultObject.TypeName);\r\n this.selectedControlDescription(result.ResultObject.Description);\r\n const controlComponents = [];\r\n controlComponents.push(await this.IterateOverNestedControls(result.ResultObject));\r\n this.attachedFields(result.ResultObject.AttachedFields);\r\n this.controlComponents = controlComponents;\r\n this.selectedControlHasData(result.HasData);\r\n this.HelpDescription(new HelpDescription(result.ResultObject.Description));\r\n this.HelpDescription().ActivateDescription();\r\n\r\n });\r\n }\r\n\r\n Click() {\r\n this.isActive(!this.isActive());\r\n };\r\n\r\n CanBeRendered(control: Control) {\r\n return control.TypeName.startsWith(\"Button\")\r\n || control.TypeName === 'Search'\r\n || control.TypeName === 'DateTime'\r\n || control.TypeName === 'Text'\r\n || control.TypeName === 'Checkbox'\r\n || control.TypeName === 'Dropdown'\r\n || control.TypeName === 'Memo'\r\n || control.TypeName === 'Image'\r\n || control.TypeName === 'Drop'\r\n || control.TypeName === 'MultiSelect'\r\n || control.TypeName === 'GenericButton'\r\n || control.TypeName === 'Document'\r\n || control.TypeName === 'SelectUser'\r\n || control.TypeName === 'ColorSelector'\r\n || control.TypeName === 'Password'\r\n || control.TypeName === 'RadioButton'\r\n || control.TypeName === 'Tag'\r\n || control.TypeName === 'Alias'\r\n || control.TypeName === 'Label'\r\n || control.TypeName === 'Group'\r\n || control.TypeName === 'Currency'\r\n || control.TypeName === 'Grid'\r\n || control.TypeName === 'Tab'\r\n || control.TypeName === 'TabPage'\r\n || control.TypeName === 'ProductConfigurator'\r\n || control.TypeName === 'SPIMCopy'\r\n || control.TypeName === 'History'\r\n\t\t\t|| control.TypeName === 'Book'\r\n || control.TypeName === 'BulkEmail'\r\n || control.TypeName === 'QueryResult'\r\n || control.TypeName === 'Invoicing'\r\n || control.TypeName === 'Timer'\r\n || control.TypeName === 'Signature'\r\n\t\t\t|| control.TypeName === 'Spreadsheet'\r\n\t\t\t|| control.TypeName === 'Chart'\r\n };\r\n\r\n MapToControlModel(control: Control) {\r\n\t\tconst attachedFields = control.AttachedFields.map(field => {\r\n let attachedFieldModel = new AttachedFieldModel({ Id: control.Id, Name: field.Name });\r\n attachedFieldModel.FieldNameTranslation = field.TranslatedName;\r\n attachedFieldModel.EntityIcon = field.EntityIcon;\r\n attachedFieldModel.FieldIcon = field.FieldIcon;\r\n\r\n\t\t\treturn attachedFieldModel;\r\n });\r\n\r\n\t\tconst currentLanguage = TranslationManager.Instance.GetCurrentLanguage();\r\n\t\tconst currentLanguageModel = new LanguageModel(currentLanguage.Id);\r\n\r\n\t\tconst translationModel = new TranslationModel();\r\n\t\ttranslationModel.Language = currentLanguageModel;\r\n\t\ttranslationModel.Selected = true;\r\n\t\ttranslationModel.Translation = control.TranslatedName;\r\n\r\n\t\tlet model = new ControlModel();\r\n model.Fields = attachedFields;\r\n model.Name = control.Name;\r\n model.TypeName = control.TypeName;\r\n\t\tmodel.TranslatedName = control.TranslatedName;\r\n\t\tmodel.NameTranslations = [translationModel];\r\n model.UseFieldName = control.UseFieldName;\r\n model.LabelPosition = control.LabelPosition;\r\n\t\tmodel.IsFieldAttached = control.IsFieldAttached;\r\n\t\tmodel.IsLookupFieldAttached = control.IsLookupFieldAttached;\r\n\t\tmodel.IsMultiSelectFieldAttached = control.IsMultiSelectFieldAttached;\r\n\t\tmodel.Icon = control.Icon;\r\n\r\n if (control.Properties) {\r\n try {\r\n model.Properties = JSON.parse(control.Properties);\r\n } catch {\r\n }\r\n }\r\n model.SubControls = control.Controls.filter(control => this.CanBeRendered(control)).map(control => this.MapToControlModel(control));\r\n return model;\r\n }\r\n\r\n async IterateOverNestedControls(item) {\r\n if (this.CanBeRendered(item)) {\r\n\r\n const renderMode = RenderModes.HelpView;\r\n\r\n var controlParam: IControlParam = {\r\n Model: this.MapToControlModel(item),\r\n RenderMode: renderMode,\r\n Form: null\r\n };\r\n\r\n let controlFactory = (await import( \"../../Core/Controls/ControlFactory\")).ControlFactory;\r\n\r\n return controlFactory.CreateControl(controlParam);\r\n }\r\n }\r\n\r\n\tprivate GetControlTranslation(control: Control): string {\r\n\t\tconst controlName = control.Name;\r\n\t\tlet controlTranslation = null;\r\n\r\n\t\tif (control.UseFieldName) {\r\n\t\t\tlet fieldAttached = _.first(control.AttachedFields);\r\n\t\t\tif (fieldAttached) {\r\n\t\t\t\tcontrolTranslation = fieldAttached.TranslatedName;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcontrolTranslation = control.TranslatedName;\r\n\t\t}\r\n\r\n\t\treturn controlTranslation || controlName;\r\n\t}\r\n\r\n GetTemplateName(): string {\r\n return 'HelpBook/HelpControl/Templates/HelpControl';\r\n }\r\n\r\n}","// Module\nvar code = \"<div class=\\\"control-wrapper\\\" data-bind=\\\"if: $data.selectedControlHasData\\\"> <!-- ko if: $data.controlComponents.length --> <div class=\\\"control-components-wrapper\\\"> <!-- ko foreach: $data.controlComponents --> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <div data-toggle=\\\"collapse\\\" data-bind=\\\"click: $data.Click.bind($data), attr: {href: '#selectedControl'}\\\" class=\\\"list-group-item\\\" aria-expanded=\\\"true\\\"> <!-- ko if: subControlsPresent--> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : isActive, 'glyphicon-chevron-right' : !isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <!-- /ko --> <!-- ko if: $data.attachedFields().length--> <b data-bind=\\\"text: $data.selectedControlName()\\\"></b><span data-bind=\\\"text: ` (${$data.selectedControlTypeName()} ${_labels.CONTROL}: ${$data.attachedFields()[0].TableName}.`\\\"></span><b data-bind=\\\"text: $data.attachedFields()[0].Name\\\"></b><span data-bind=\\\"text: ` )`\\\"></span> <!-- ko if: $data.selectedControlDescription()--> <span data-bind=\\\" text: ` - ${$data.selectedControlDescription()}`\\\"></span> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $data.attachedFields().length --> <b data-bind=\\\"text: $data.selectedControlName()\\\"></b><span data-bind=\\\"text: ` (${$data.selectedControlTypeName()} ${_labels.CONTROL})`\\\"></span> <!-- ko if: $data.selectedControlDescription()--> <span data-bind=\\\"text: ` - ${$data.selectedControlDescription()}`\\\"></span> <!-- /ko --> <!-- /ko --> </div> <!-- ko if: subControlsPresent--> <div class=\\\"collapse in\\\" data-bind=\\\"attr: {id: 'selectedControl'}\\\"> <div class=\\\"list-group\\\"> <!-- ko foreach: selectedControlSubControls --> <div data-toggle=\\\"collapse\\\" data-bind=\\\"click: $data.Click.bind($data), attr: {href: '#' + Id}\\\" class=\\\"list-group-item\\\" aria-expanded=\\\"false\\\"> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : isActive, 'glyphicon-chevron-right' : !isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <b data-bind=\\\"text: Name\\\"></b><span data-bind=\\\"text: ` (${TypeName} ${$parent._labels.CONTROL})`\\\"></span> <!-- ko if: Description--> <span data-bind=\\\"text: ` - ${Description}`\\\"></span> <!-- /ko --> </div> <div class=\\\"collapse\\\" style=\\\"padding-left:10px\\\" data-bind=\\\"attr: {id: Id}\\\"> <div class=\\\"list-group border-left\\\" data-bind=\\\"template: { name: 'controlTemplate', foreach: Controls, as: 'control' }\\\"> </div> </div> <!-- /ko --> </div> </div> <!-- /ko --> </div> <!-- Controls Template --> <script type=\\\"text/html\\\" id=\\\"controlTemplate\\\"> <a data-bind=\\\"attr: {href: '#' + Id}\\\"\\r\\n\\t class=\\\"list-group-item\\\" data-toggle=\\\"collapse\\\">\\r\\n\\t\\t<b data-bind=\\\"text: Name\\\"></b><span data-bind=\\\"text: ` (${TypeName} ${$root._labels.CONTROL})`\\\"></span>\\r\\n\\t\\t<!-- ko if: Description-->\\r\\n\\t\\t<span data-bind=\\\"text: ` - ${Description}`\\\"></span>\\r\\n\\t\\t<!-- /ko -->\\r\\n\\t</a>\\r\\n\\r\\n\\t<div class=\\\"collapse\\\" data-bind=\\\"attr: {id: Id}\\\">\\r\\n\\t\\t<div class=\\\"list-group\\\"\\r\\n\\t\\t\\t data-bind=\\\"template: { name: 'controlTemplate', foreach: Controls, as: 'control' }\\\"></div>\\r\\n\\t</div> </script>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {HelpBookStore} from \"HelpBook/Store/HelpBookStore\";\r\nimport {HelpDescription} from \"HelpBook/HelpDescription/HelpDescription\";\r\nimport {HelpStatusFlow} from \"HelpBook/HelpStatusFlow/HelpStatusFlow\";\r\nimport {HelpScreen} from \"HelpBook/HelpScreen/HelpScreen\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport HelpTypeTemplate from 'HelpBook/HelpType/Templates/HelpType.html';\r\n\r\nko.templates['HelpBook/HelpType/Templates/HelpType'] = HelpTypeTemplate;\r\n\r\nexport class HelpType {\r\n\tpublic selectedType: KnockoutObservable<any>;\r\n\r\n\tconstructor(typeModel) {\r\n\t\tthis.selectedType = ko.observable(null);\r\n\t\tthis.FetchData(typeModel);\r\n\t}\r\n\r\n\tFetchData(typeModel) {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tHelpBookStore.GetTypeInfo({ id: typeModel.Id }).always(() => {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t}).then(result => {\r\n\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (result.HasData) {\r\n\t\t\t\tconst type = result.ResultObject;\r\n\r\n\t\t\t\ttype.noDescription = ko.observable('');\r\n\t\t\t\ttype.previewText = ko.observable('');\r\n\t\t\t\ttype.showFullDescription = ko.observable(false);\r\n\t\t\t\ttype.isActive = ko.observable(true);\r\n\t\t\t\ttype.selectedEntityId = typeModel.EntityId;\r\n\t\t\t\ttype.Click = (data) => {\r\n\t\t\t\t\tdata.isActive(!data.isActive());\r\n\t\t\t\t};\r\n\t\t\t\ttype.HelpDescription = new HelpDescription(type.Description);\r\n\t\t\t\ttype.HelpStatusFlow = new HelpStatusFlow(type.Id);\r\n\t\t\t\ttype.ActiveHelpScreen = new HelpScreen(type, true);\r\n\r\n\t\t\t\tthis.selectedType(type);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'HelpBook/HelpType/Templates/HelpType';\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: $data.selectedType --> <div class=\\\"list-group-item list-group-item-action\\\"> <a class=\\\"\\\" data-bind=\\\"\\r\\n\\t\\t click: $data.Click.bind($data)\\\" href=\\\"javascript:void(0)\\\"> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : $data.isActive, 'glyphicon-chevron-right' : !$data.isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <span data-bind=\\\"text: TranslatedName\\\"></span> <!-- ko if: Name === '-' --> <span data-bind=\\\"text: ` (${$root._labels.DASH})`\\\"></span> <!-- /ko --> <!-- ko template: {name: $root.GetIconTemplateName.bind($data)} --> <!-- /ko --> </a> </div> <div data-bind=\\\"if: $data.isActive\\\"> <div class=\\\"list-group border-left\\\"> <!-- ko if: (Id !== 0 && StepsCount > 0) --> <!-- ko with: $data.HelpStatusFlow --> <!-- ko template: {name: $root.GetStatusFlowTemplateName.bind($data), afterRender: AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- ko with: $data.ActiveHelpScreen --> <!-- ko template: {name: $root.GetScreenTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\nimport * as ko from \"knockout\";\r\n\r\nimport { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport { IconModel } from 'Core/Controls/BaseControl/Models/IconModel';\r\n\r\n\r\nexport class EntityModel {\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tSubjectAreaId: number;\r\n\r\n\t@deserialize\r\n\tSubjectAreaName: string;\r\n\r\n\t@deserialize\r\n\tIcon: string;\r\n\r\n\t@deserialize\r\n\tIconType: string;\r\n\r\n\t@deserialize\r\n\tIconImage: string;\r\n\r\n\t@deserialize\r\n\tSubjectAreaIcon: string;\r\n\r\n\t@deserialize\r\n\tSubjectAreaIconType: string;\r\n\r\n\t@deserialize\r\n\tSubjectAreaIconId: number;\r\n\r\n\t@deserialize\r\n\tSubjectAreaIconImage: string;\r\n\r\n\tisActive: KnockoutObservable<boolean>;\r\n\tisOpen: KnockoutObservable<boolean>;\r\n\r\n\tdirectScreen?: boolean;\r\n}\r\n\r\n\r\nexport class EntityType {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tDescription: string;\r\n}\r\n\r\nexport class EntityScreen {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n}\r\n\r\nexport class SelectedEntityModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypes: Array<EntityType>;\r\n\r\n\t@deserialize\r\n\tDescription: string;\r\n}\r\n\r\nexport class SubFormControl {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tControls: Array<Control>;\r\n\r\n\t@deserialize\r\n\tControlComponents: Array<IControl>;\r\n\r\n\t@deserialize\r\n\tDescription: string;\r\n}\r\n\r\nexport class Control {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tControls: Array<Control>;\r\n\r\n\t@deserialize\r\n\tControlComponents: Array<IControl>;\r\n\r\n\t@deserialize\r\n\tDescription: string;\r\n\r\n\t@deserialize\r\n\tProperties: any;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tLabelPosition: string;\r\n\r\n\t@deserialize\r\n\tUseFieldName: boolean;\r\n\r\n\t@deserialize\r\n\tIsFieldAttached: boolean;\r\n\r\n\t@deserialize\r\n\tIsLookupFieldAttached: boolean;\r\n\r\n\t@deserialize\r\n\tIsMultiSelectFieldAttached: boolean;\r\n\r\n\t@deserialize\r\n\tIsComplexControl: boolean;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tIcon: IconModel;\r\n\r\n\tAttachedFields: Array<AttachedField>;\r\n}\r\n\r\nexport class AttachedField {\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tTableName: string;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tEntityIcon: IconModel;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tFieldIcon: IconModel;\r\n}\r\n\r\nexport class SelectedScreenModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tSubForms: Array<SubFormControl>;\r\n\r\n\t@deserialize\r\n\tDescription: string;\r\n}","// Module\nvar code = \"<div class=\\\"helpBook-wrapper\\\" data-bind=\\\"css: {'help-page-sidebar-closed': isClosed}\\\"> <div class=\\\"help-book-header page-header navbar navbar-fixed-top\\\"> <div class=\\\"page-header-inner\\\"> <div class=\\\"page-logo\\\"> <div class=\\\"menu-toggler\\\" data-bind=\\\"click: ToggleMenu\\\"></div> <div class=\\\"logo-image\\\"> <!-- ko if: $data.IsAuthenticated --> <!-- ko with: _user --> <!-- ko if: $parent.LogoImage--> <img class=\\\"company-logo\\\" data-bind=\\\"attr:{src: $parent.LogoImage}\\\"> <!--/ko--> <!--ko ifnot: $parent.LogoImage--> <span class=\\\"username text-white large-text\\\" data-bind=\\\"text: LicenseName\\\"></span> <!--/ko--> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $data.IsAuthenticated --> <img data-bind=\\\"attr: { src: $data.LogoUrl }\\\" class=\\\"globe-logo\\\" height=\\\"35\\\" src=\\\"\\\"> <!-- /ko --> </div> </div> <!--ko if: canReturn--> <a class=\\\"back-button\\\" data-bind=\\\"click: Back\\\"> <!--ko text: _labels.BACK --><!--/ko--> </a> <!-- /ko --> </div> </div> <div class=\\\"page-sidebar-wrapper help-book-sidebar-wrapper page-sidebar-closed\\\" data-bind=\\\"css: {'help-page-sidebar-closed': isClosed}\\\"> <div class=\\\"page-sidebar navbar-collapse collapse helpBok\\\" id=\\\"helpBarMenu\\\"> <ul class=\\\"page-sidebar-menu page-header-fixed\\\" data-bind=\\\"css: {'help-page-sidebar-closed': isClosed}\\\" data-keep-expanded=\\\"false\\\" data-auto-scroll=\\\"true\\\" data-slide-speed=\\\"200\\\"> <!-- ko foreach: entityList --> <!-- ko if: subjectAreaName === 'Root' --> <!-- ko foreach: entities --> <li class=\\\"nav-item\\\" data-bind=\\\"css: { active: isActive }\\\"> <a class=\\\"nav-link custom-color-option\\\" href=\\\"javascript:;\\\" data-bind=\\\"attr: {'href': $data.Link ? $data.Link : 'javascript:;'},\\r\\n\\t\\t\\t\\t\\tclick: $parents[1].GetEntityInfo.bind($parents[1])\\\"> <!-- ko template: {name: $root.GetIconTemplateName.bind($data)} --> <!-- /ko --> <span class=\\\"title custom-color-option\\\" data-bind=\\\"text: Name\\\"></span> <span class=\\\"selected\\\"></span> </a> </li> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: subjectAreaName === 'Root' --> <li data-bind=\\\"css: { active: isActive, open: isOpen }\\\" class=\\\"nav-item\\\"> <a data-bind=\\\"click: $parent.EntityGroupClick.bind($parent)\\\" class=\\\"nav-link nav-toggle custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\"> <!-- ko if: subjectAreaIcon --> <i data-bind=\\\"css: subjectAreaIcon\\\" class=\\\"fa custom-color-option\\\"></i> <!-- /ko --> <span class=\\\"title custom-color-option\\\" data-bind=\\\"text: subjectAreaName\\\"> </span> <span class=\\\"arrow\\\"></span> </a> <ul class=\\\"sub-menu\\\"> <!-- ko foreach: entities --> <li class=\\\"nav-item\\\" data-bind=\\\"css: { active: isActive }\\\"> <a class=\\\"nav-link custom-color-option\\\" href=\\\"javascript:;\\\" data-bind=\\\"attr: {'href': $data.Link ? $data.Link : 'javascript:;'},\\r\\n\\t\\t\\t\\t\\t\\t click: $parents[1].GetEntityInfo.bind($parents[1])\\\"> <!-- ko template: {name: $root.GetIconTemplateName.bind($data)} --> <!-- /ko --> <span class=\\\"title custom-color-option\\\" data-bind=\\\"text: Name\\\"></span> <span class=\\\"selected\\\"></span> </a> </li> <!-- /ko --> </ul> </li> <!-- /ko --> <!-- /ko --> <!-- ko with: Designers --> <li data-bind=\\\"css: { active: isActive, open: isOpen }\\\" id=\\\"designersNav\\\" class=\\\"nav-item\\\"> <a data-bind=\\\"click: $parent.EntityGroupClick.bind($parent)\\\" class=\\\"nav-link nav-toggle custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\"> <i class=\\\"fa custom-color-option icon-home\\\"></i> <span class=\\\"title custom-color-option\\\" data-bind=\\\"text: SubjectAreaName\\\"></span> <span class=\\\"arrow\\\"></span> </a> <ul class=\\\"sub-menu\\\"> <!-- ko foreach: entities --> <li class=\\\"nav-item\\\" data-bind=\\\"css: { active: isActive }\\\"> <a class=\\\"nav-link custom-color-option\\\" data-bind=\\\"attr: {'href': $data.Link ? $data.Link : 'javascript:;'}\\\" target=\\\"_blank\\\"> <span class=\\\"fa fa-1x fa-stack panel-icon fa-file-text\\\"></span> <span class=\\\"title custom-color-option\\\" data-bind=\\\"text: Name\\\"></span> </a> </li> <!-- /ko --> </ul> </li> <!-- /ko --> </ul> </div> </div> <div class=\\\"page-content-wrapper\\\"> <div class=\\\"help-background-image-container\\\"> <img class=\\\"help-background-image\\\" src=\\\"../../img/Custom/App/HelpPages/help-page-background.jpg\\\"> </div> <!-- ko if: dataIsRendered--> <div class=\\\"help-book-content-Container box-shadow-wrapper display-flex\\\"> <div class=\\\"help-book-content page-contentBox\\\" data-bind=\\\"if: dataIsRendered\\\"> <div class=\\\"rowClass\\\"> <div class=\\\"col-sm col-lg-12\\\"> <!-- ko with: HelpEntity --> <!-- ko template: {name: GetTemplateName} --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"col-sm col-lg-12\\\"> <!-- ko with: HelpType --> <!-- ko template: {name: GetTemplateName} --> <!-- /ko --> <!-- /ko --> </div> <!-- ko ifnot: (HelpEntity() || HelpType()) --> <div class=\\\"col-sm col-lg-12\\\" data-bind=\\\"if: screenIsActive\\\"> <!-- ko with: HelpForm --> <!-- ko template: {name: GetTemplateName} --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"col-sm col-lg-12\\\"> <!-- ko with: HelpControl --> <!-- ko template: {name: GetTemplateName} --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> <!-- ko ifnot: dataIsRendered--> <div class=\\\"box-shadow-wrapper display-flex\\\"> <div class=\\\"help-book-content info page-contentBox\\\"> <h1><i class=\\\"fa fa-question-circle\\\"></i>Spheeres Help</h1> <p>Select an element from the main menu to see information about it.</p> </div> </div> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { LifecycleDto } from './Models/DTO/LifecycleDto';\r\n\r\nexport class LifecycleDesignerStore {\r\n \r\n static GetLifeCycleHelpData(typeId) {\r\n const deferredResult = P.defer<any>();\r\n\r\n const dataRequest = {'typeId': typeId};\r\n\r\n BlockUI.Block();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/HelpPagesApi/GetLifecycle',\r\n type: 'Get',\r\n dataType: 'json',\r\n },\r\n params: dataRequest\r\n })\r\n .then(function (data) {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(data.ResultObject || []);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n })\r\n .fail(function (error) {\r\n deferredResult.reject(error);\r\n })\r\n .always(function () {\r\n BlockUI.Unblock();\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import * as joint from \"../../libs/rappid/build/rappid\";\r\nimport {\r\n CELL_CUSTOM_ATTRS, CELL_OPTIONS, CELL_OPTIONS_START, COLORS,\r\n LABEL_MARKUP,\r\n LIFECYCLE_EVENTS,\r\n LINK_CUSTOM_ATTRS, TEST_CONDITION_CUSTOM_ATTRS,\r\n TOOL_MARKUP\r\n} from \"./Constants/Constants\";\r\nimport {Notifier} from \"../Common/Notifier\";\r\nimport {TranslationModel} from \"../Controls/BaseControl/Models/TranslationModel\";\r\nimport {UserVarsManager} from \"../UserVarsManager/UserVarsManager\";\r\nimport {LifecycleDesignerStore} from \"./LifecycleDesignerStore\";\r\nimport * as _ from \"underscore\";\r\nimport {LIFE_STATUS_GROUPS} from \"../Constant\";\r\nimport {GlobalManager} from \"../GlobalManager/GlobalManager\";\r\n\r\nexport class LifecycleDesignerFlow {\r\n private _graph: joint.dia.Graph;\r\n private _paper: joint.dia.Paper;\r\n private _tableType: any;\r\n private _deletedSteps: Array<string>;\r\n private _deletedLinks: Array<string>;\r\n private _flowDesignerEl: JQuery;\r\n private _container: JQuery;\r\n private _notifier: Notifier;\r\n private _halo: joint.ui.Halo;\r\n private _paperScroller: joint.ui.PaperScroller;\r\n private _inspector: joint.ui.Inspector;\r\n private _freeTransform: joint.ui.FreeTransform;\r\n private _commandManager: joint.dia.CommandManager;\r\n private _toolbar: joint.ui.Toolbar;\r\n private _isAdvancedMode: boolean;\r\n private _steps: Array<any> = [];\r\n\r\n constructor(params: {\r\n Container: string,\r\n TableTypes\r\n }) {\r\n let container = $(params.Container);\r\n if (container.length > 1){\r\n this._container = $(container[container.length - 1])\r\n } else {\r\n this._container = container;\r\n }\r\n this._notifier = new Notifier(this._container);\r\n this._graph = null;\r\n this._paper = null;\r\n this._deletedSteps = [];\r\n this._deletedLinks = [];\r\n this._halo = null;\r\n this._inspector = null;\r\n this._freeTransform = null;\r\n this._toolbar = null;\r\n this._isAdvancedMode = UserVarsManager.Instance.GetAdvancedLifestatus();\r\n this.Init();\r\n }\r\n\r\n Init() {\r\n joint.setTheme('modern');\r\n this._flowDesignerEl = $(this._container).find('.flow-designer');\r\n this._notifier = new Notifier();\r\n }\r\n\r\n InitJsPoint(data) {\r\n\t this._deletedSteps = [];\r\n this._deletedLinks = [];\r\n\r\n if (this._graph == null) {\r\n this._graph = new joint.dia.Graph();\r\n this._paper = new joint.dia.Paper({\r\n el: this._flowDesignerEl,\r\n width: this._container.width(),\r\n gridSize: 2,\r\n model: this._graph,\r\n linkPinning: false,\r\n multiLinks: false,\r\n snapLinks: true,\r\n defaultLink: new joint.dia.Link({\r\n labels: [{position: .5, attrs: {text: {text: '', 'font-weight': 'bold'}}}],\r\n vertices: []\r\n }),\r\n defaultConnector: {\r\n name: 'smooth'\r\n },\r\n interactive: (cellView) => {\r\n if (cellView.model instanceof joint.dia.Link) {\r\n return {\r\n labelMove: false,\r\n linkMove: false\r\n };\r\n }\r\n if (cellView.model instanceof joint.shapes.basic.Circle || cellView.model instanceof joint.shapes.lifecycle.RectWithImage) {\r\n return {elementMove: false};\r\n }\r\n return true;\r\n },\r\n linkView: joint.dia.LinkView.extend({\r\n pointerdown: function (evt, x, y) {\r\n\r\n joint.dia.CellView.prototype.pointerdown.apply(this, arguments);\r\n this.notify('link:pointerdown', evt, x, y);\r\n\r\n this._dx = x;\r\n this._dy = y;\r\n\r\n if (evt.target.getAttribute('magnet') != null) return;\r\n\r\n var className = joint.util.removeClassNamePrefix(evt.target.getAttribute('class'));\r\n var parentClassName = joint.util.removeClassNamePrefix(evt.target.parentNode.getAttribute('class'));\r\n var labelNode;\r\n if (parentClassName === 'label') {\r\n className = parentClassName;\r\n labelNode = evt.target.parentNode;\r\n } else {\r\n labelNode = evt.target;\r\n }\r\n\r\n switch (className) {\r\n\r\n case 'marker-vertex':\r\n if (this.can('vertexMove')) {\r\n this._action = 'vertex-move';\r\n this._vertexIdx = evt.target.getAttribute('idx');\r\n }\r\n break;\r\n\r\n case 'marker-vertex-remove':\r\n case 'marker-vertex-remove-area':\r\n if (this.can('vertexRemove')) {\r\n this.removeVertex(evt.target.getAttribute('idx'));\r\n }\r\n break;\r\n\r\n case 'marker-arrowhead':\r\n if (this.can('arrowheadMove')) {\r\n this.startArrowheadMove(evt.target.getAttribute('end'));\r\n }\r\n break;\r\n\r\n case 'label':\r\n if (this.can('labelMove')) {\r\n this._action = 'label-move';\r\n this._labelIdx = parseInt(joint.V(labelNode).attr('label-idx'), 10);\r\n this._samples = this._V.connection.sample(1);\r\n this._linkLength = this._V.connection.node.getTotalLength();\r\n }\r\n break;\r\n\r\n default:\r\n if (this.can('vertexAdd') && evt.button === 2) {\r\n this._vertexIdx = this.addVertex({x: x, y: y});\r\n this._action = 'vertex-move';\r\n }\r\n }\r\n }\r\n }),\r\n });\r\n\r\n this._paper.setTheme('default');\r\n\r\n this._commandManager = new joint.dia.CommandManager({\r\n graph: this._graph\r\n });\r\n\r\n this.InitPaperScroller();\r\n $(window).trigger(LIFECYCLE_EVENTS.WINDOW_RESIZE);\r\n }\r\n\r\n this._graph.clear();\r\n\r\n this.MovePaperScrollerToStartNode();\r\n\r\n if (data.Steps && data.Steps.length > 0) {\r\n this.LoadData(data);\r\n this._commandManager.reset();\r\n return;\r\n }\r\n this.AddStartCell();\r\n this._commandManager.reset();\r\n }\r\n\r\n MovePaperScrollerToStartNode() {\r\n if (this._paperScroller) {\r\n const paperOrigin = this._paper.options.origin;\r\n const visibleArea = this._paperScroller.getVisibleArea();\r\n this._paperScroller.center(paperOrigin.x + visibleArea.width / 2, paperOrigin.y + visibleArea.height / 2);\r\n }\r\n }\r\n\r\n AddStartCell() {\r\n let options: any = CELL_OPTIONS_START;\r\n let cell;\r\n cell = new joint.shapes.basic.Circle(options);\r\n this._graph.addCell(cell);\r\n return cell;\r\n }\r\n\r\n InitPaperScroller() {\r\n this._paperScroller = new joint.ui.PaperScroller({\r\n paper: this._paper,\r\n cursor: 'grab',\r\n autoResizePaper: true,\r\n contentOptions: {\r\n allowNewOrigin: 'any'\r\n },\r\n padding: 0\r\n });\r\n let percent = +GlobalManager.Instance.GetGlobal('PopupHeightInPercent');\r\n let paperHeight = $(window).height() / 100 * percent - 500;\r\n this._paperScroller.setCursor('grab').$el.css({\r\n width: this._flowDesignerEl.width(),\r\n height: paperHeight,\r\n }).appendTo(this._container.find(\"#paper-scroller\"));\r\n this._paperScroller.render();\r\n\r\n const paperWrapper = this._paperScroller.$el.find('.paper-scroller-background');\r\n this.ScrollFixer(paperWrapper);\r\n paperWrapper.on(LIFECYCLE_EVENTS.MOUSEWHEEL, (event: any) => {\r\n this.PaperZoomOnScroll(event, event.deltaY);\r\n });\r\n }\r\n\r\n PaperZoomOnScroll(event, delta: number) {\r\n if (event.ctrlKey) {\r\n event.preventDefault();\r\n const step = 0.2;\r\n const oldScale = joint.V(this._paper.viewport).scale().sx;\r\n if ((delta > 0 && oldScale < 5) || ((delta < 0) && (oldScale > 0.2))) {\r\n this._paperScroller.zoom(step * delta);\r\n }\r\n }\r\n }\r\n\r\n private ScrollFixer(element: JQuery) {\r\n $(element).bind('mousewheel DOMMouseScroll', function (e) {\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n LoadData(data) {\r\n this._steps = data.Steps;\r\n _.each(data.Steps, (step: any) => {\r\n if (!step.Json) {\r\n return;\r\n }\r\n this.InitStepData(step);\r\n });\r\n\r\n _.each(data.Links, (link: any) => {\r\n this.InitLinkData(link);\r\n });\r\n }\r\n\r\n InitStepData(step) {\r\n const stepJson = JSON.parse(step.Json.replace('\\\"', '\"'));\r\n const selectedTranslation = _.find(step.Translations, (translation: TranslationModel) => translation.Selected === true);\r\n\r\n stepJson.attrs.id = step.Id;\r\n stepJson.attrs.sort = step.Sort !== undefined ? step.Sort.toString() : step.sort.toString();\r\n stepJson.disabled = !step.Enabled;\r\n stepJson.attrs.OnLifestatusSetTrigger = step.Trigger;\r\n stepJson.attrs.ActionItems = step.ActionItems;\r\n stepJson.attrs.NoActionNode = step.NoActionNode;\r\n stepJson.attrs.MultipleActions = step.MultipleActions;\r\n stepJson.attrs.Packages = step.Trigger?.DwPackages;\r\n stepJson.attrs.NoActionNodeDisable = step.NoActionNodeDisable; //NoActionNode .prop(\"disabled\")\r\n stepJson.attrs.DateElapsed = step.DateElapsed;\r\n stepJson.attrs.DeadlineElapsed = step.DeadlineElapsed;\r\n stepJson.attrs.translations = step.Translations;\r\n stepJson.attrs.name = step.Label;\r\n\r\n if (stepJson.type !== 'basic.Circle' && selectedTranslation && selectedTranslation.Selected && selectedTranslation.Translation !== null) {\r\n stepJson.attrs.text.text = selectedTranslation.Translation;\r\n stepJson.attrs.translatableName = selectedTranslation.Translation;\r\n } else {\r\n stepJson.attrs.text.text = step.Label;\r\n }\r\n\r\n if (stepJson.attrs.OnLifestatusSetTrigger) {\r\n stepJson.attrs.NoActionNodeDisable = false;\r\n } else {\r\n stepJson.attrs.NoActionNodeDisable = true;\r\n }\r\n\r\n if (stepJson.attrs[CELL_CUSTOM_ATTRS.TRIGGER]) {\r\n stepJson.attrs[CELL_CUSTOM_ATTRS.TRIGGER].visibility = stepJson.attrs.OnLifestatusSetTrigger ? 'visible' : 'hidden';\r\n }\r\n if (stepJson.attrs[CELL_CUSTOM_ATTRS.RETIRED]) {\r\n stepJson.attrs[CELL_CUSTOM_ATTRS.RETIRED].visibility = (stepJson.attrs.sort === LIFE_STATUS_GROUPS.RETIRED.toString()) ? 'visible' : 'hidden';\r\n }\r\n if (stepJson.attrs[CELL_CUSTOM_ATTRS.NO_ACTION]) {\r\n stepJson.attrs[CELL_CUSTOM_ATTRS.NO_ACTION].visibility = stepJson.attrs.NoActionNode ? 'visible' : 'hidden';\r\n }\r\n if (stepJson.attrs[CELL_CUSTOM_ATTRS.MULTIPLE_ACTIONS]) {\r\n stepJson.attrs[CELL_CUSTOM_ATTRS.MULTIPLE_ACTIONS].visibility = stepJson.attrs.MultipleActions ? 'visible' : 'hidden';\r\n }\r\n stepJson.ports = {items: []};\r\n this._graph.addCell(stepJson);\r\n\r\n if (stepJson.disabled) {\r\n this._paper.findViewByModel(stepJson).model.attr('./opacity', 0.5);\r\n }\r\n }\r\n\r\n InitLinkData(link) {\r\n const selectedTranslation = _.find(link.Translations, (translation: TranslationModel) => translation.Selected === true);\r\n const linkJson = JSON.parse(link.Json.replace('\\\"', '\"'));\r\n linkJson.attrs.id = link.Id;\r\n linkJson.attrs.nextAllowed = link.NextAllowed;\r\n linkJson.attrs.approvalId = link.ApprovalId.toString() + '000';\r\n linkJson.attrs.stepsScreenId = link.StepsScreenId ? link.StepsScreenId.toString() : '0';\r\n linkJson.attrs.testCondition = link.TestCondition.toString() + '0000';\r\n\r\n if (!linkJson.toolMarkup) {\r\n linkJson.toolMarkup = TOOL_MARKUP;\r\n }\r\n\r\n linkJson.labelMarkup = LABEL_MARKUP;\r\n\r\n linkJson.labels[0].attrs = {\r\n 'text': linkJson.labels[0].attrs.text,\r\n [LINK_CUSTOM_ATTRS.PASSWORD]: {\r\n visibility: link.ApprovalId.toString() === '2' ? 'visible' : 'hidden'\r\n },\r\n [LINK_CUSTOM_ATTRS.YESNO]: {\r\n visibility: link.ApprovalId.toString() === '3' ? 'visible' : 'hidden'\r\n },\r\n [LINK_CUSTOM_ATTRS.STEPSSCREENICON]: {\r\n visibility: link.StepsScreenId.toString() !== '0' ? 'visible' : 'hidden'\r\n },\r\n [TEST_CONDITION_CUSTOM_ATTRS.VALID]: {\r\n visibility: link.TestCondition.toString() === '1' ? 'visible' : 'hidden'\r\n },\r\n [TEST_CONDITION_CUSTOM_ATTRS.NOT_VALID]: {\r\n visibility: link.TestCondition.toString() === '2' ? 'visible' : 'hidden'\r\n },\r\n [TEST_CONDITION_CUSTOM_ATTRS.ERROR]: {\r\n visibility: link.TestCondition.toString() === '3' ? 'visible' : 'hidden'\r\n }\r\n };\r\n\r\n if (selectedTranslation && selectedTranslation.Selected && selectedTranslation.Translation !== null && linkJson.labels[0].attrs.text) {\r\n linkJson.labels[0].attrs.text.text = selectedTranslation.Translation;\r\n }\r\n\r\n this._graph.addCell(linkJson);\r\n\r\n if (link.NextAllowed) {\r\n this.InitAsNextAllowed(this._paper.findViewByModel(linkJson));\r\n }\r\n }\r\n\r\n private InitAsNextAllowed(cellView) {\r\n const color = COLORS.GREEN;\r\n cellView.model.attributes.attrs['.connection'].stroke = color;\r\n this.SetArrowColor(color, cellView);\r\n }\r\n\r\n private SetArrowColor(color: string, cellView) {\r\n cellView.model.attributes.attrs['.marker-target'] = {\r\n d: \"M 0 -5 L -10 0 L 0 5 Z\",\r\n fill: color,\r\n stroke: color\r\n };\r\n }\r\n\r\n LoadDataType(typeId) {\r\n return LifecycleDesignerStore.GetLifeCycleHelpData(typeId);\r\n };\r\n}","import * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nimport { Modal } from \"Core/Common/Modal\";\r\nimport { HelpBookStore } from \"HelpBook/Store/HelpBookStore\";\r\nimport { Notifier } from 'Core/Common/Notifier';\r\n\r\nimport { HelpEntity } from 'HelpBook/HelpEntity/HelpEntity';\r\nimport { HelpScreen } from 'HelpBook/HelpScreen/HelpScreen';\r\nimport { HelpForm } from 'HelpBook/HelpForm/HelpForm';\r\nimport { HelpControl } from 'HelpBook/HelpControl/HelpControl';\r\nimport { HelpType } from 'HelpBook/HelpType/HelpType';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport { CANVAS_TYPES } from \"Core/Controls/CanvasDesigner/Constants/CanvasTypes\";\r\n\r\nimport {\r\n\tEntityModel\r\n} from 'HelpBook/Store/Models/HelpBookModel';\r\n\r\nimport HelpBookTemplate from 'HelpBook/Templates/HelpBook.html';\r\nko.templates['HelpBook/Templates/HelpBook'] = HelpBookTemplate;\r\n\r\nimport HelpIconTemplate from 'HelpBook/Templates/HelpIconTemplate.html';\r\nimport { BaseControl } from \"Core/Controls/BaseControl/BaseControl\";\r\nimport { LifecycleDesignerFlow } from \"../Core/LifecycleDesigner/LifecycleDesignerFlow\";\r\nimport * as _ from \"underscore\";\r\nimport { TranslationModel } from \"../Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport { UserModel } from \"../User/Store/Models/UserModel\";\r\nimport { UserManager } from \"../User/UserManager\";\r\nimport {MobileChecker} from \"../Core/Common/MobileChecker\";\r\nimport {Events} from \"../Auth/Enums/Events\";\r\nimport { Brand } from '../Core/Common/Brand';\r\nko.templates['HelpBook/Templates/HelpIconTemplate'] = HelpIconTemplate;\r\n\r\n\r\nexport class HelpBook {\r\n\tprivate _modal: Modal;\r\n\tprivate _user: KnockoutObservable<UserModel>;\r\n\tprivate IsAuthenticated: KnockoutObservable<boolean>;\r\n\tprivate static _instance: HelpBook;\r\n\tprivate static _allowInstantiation: boolean;\r\n\tprivate entityList: Array<EntityModel>;\r\n\r\n\tprivate _labels = LABELS;\r\n\tprivate _canvasTypes = CANVAS_TYPES;\r\n\r\n\tprivate helpButtonPressed: boolean;\r\n\tprivate helpButtonPressedTime: Date;\r\n\tprivate dataIsRendered: KnockoutObservable<boolean>;\r\n\tprivate isClosed: KnockoutObservable<boolean>;\r\n\r\n\tpublic HelpEntity: KnockoutObservable<HelpEntity>;\r\n\tprivate ActiveHelpScreen: KnockoutObservable<HelpScreen>;\r\n\tprivate HelpScreens: KnockoutObservableArray<HelpScreen>;\r\n\tprivate HelpForm: KnockoutObservable<HelpForm>;\r\n\tprivate HelpControl: KnockoutObservable<HelpControl>;\r\n\tprivate HelpType: KnockoutObservable<HelpType>;\r\n\tprivate NoDataPlaceholder: string;\r\n\tprivate lifestatuses: KnockoutObservableArray<any>;\r\n\tprivate screenIsActive: KnockoutObservable<boolean>;\r\n\tprivate _timeSpan: any;\r\n\r\n\tprivate activeEntity: EntityModel;\r\n\tprivate activeEntityGroup: any;\r\n\r\n\tprivate history: KnockoutObservableArray<EntityModel>;\r\n\r\n\tprivate isActive: KnockoutObservable<boolean>;\r\n\tprivate canReturn: KnockoutComputed<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tif (!HelpBook._allowInstantiation) {\r\n\t\t\tthrow new Error('Use HelpBook.Instance instead');\r\n\t\t}\r\n\r\n\t\tthis._user = ko.observable(null);\r\n\t\tthis.IsAuthenticated = ko.observable(false);\r\n\r\n\t\tthis.helpButtonPressed = false;\r\n\t\tthis.helpButtonPressedTime = null;\r\n\t\tthis.screenIsActive = ko.observable(false);\r\n\t\tthis.isClosed = ko.observable(MobileChecker.IsMobile());\r\n\r\n\t\tthis.HelpEntity = ko.observable(null);\r\n\t\tthis.ActiveHelpScreen = ko.observable(null);\r\n\t\tthis.lifestatuses = ko.observableArray([]);\r\n\t\tthis.HelpScreens = ko.observableArray([]);\r\n\t\tthis.HelpForm = ko.observable(null);\r\n\t\tthis.HelpControl = ko.observable(null);\r\n\t\tthis.HelpType = ko.observable(null);\r\n\t\tthis.dataIsRendered = ko.observable(true);\r\n\t\tthis.NoDataPlaceholder = this._labels.THERE_IS_NO_DESCRIPTION_AVAILABLE;\r\n\r\n\t\tthis.activeEntity = null;\r\n\t\tthis.activeEntityGroup = null;\r\n\r\n\t\tthis.history = ko.observableArray([]);\r\n\r\n\t\tthis.canReturn = ko.computed(() => {\r\n\t\t\treturn this.history().length > 0;\r\n\t\t})\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tget Designers() {\r\n\t\tvar designers = new EntityModel();\r\n\t\t(designers as any).entities = [\r\n\t\t\t{\r\n\t\t\t\tName: this._labels.DOCUMENTATION,\r\n\t\t\t\tisActive: ko.observable(false),\r\n\t\t\t\tLink: 'http://confluence-cyberthing.gisua.com/display/CYB/Spheeres.com'\r\n\t\t\t}\r\n\t\t];\r\n\t\tdesigners.SubjectAreaName = this._labels.DESIGNERS;\r\n\t\tdesigners.isActive = ko.observable(false);\r\n\t\tdesigners.isOpen = ko.observable(false);\r\n\t\treturn designers;\r\n\t}\r\n\r\n\tCleanHelpBook() {\r\n\t\tthis.HelpEntity(null);\r\n\t\tthis.ActiveHelpScreen(null);\r\n\t\tthis.HelpScreens([]);\r\n\t\tthis.HelpForm(null);\r\n\t\tthis.HelpControl(null);\r\n\t\tthis.HelpType(null);\r\n\t}\r\n\r\n\tDeactivate(entity) {\r\n\t\tif (entity != null) {\r\n\t\t\tentity.isActive(false);\r\n\t\t}\r\n\t}\r\n\r\n\tShow(entityId?) {\r\n\t\tthis.ExitHelpCursorMode(true);\r\n\r\n\t\tthis.CleanHelpBook();\r\n\t\tthis.activeEntity = null;\r\n\t\tthis.activeEntityGroup = null;\r\n\r\n\t\tHelpBookStore.GetEntities().always(() => {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t}).then(result => {\r\n\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\tthis.dataIsRendered(false);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.entityList = result.ResultObject.reduce((acc, entity: EntityModel) => {\r\n\t\t\t\tconst entitiesGroup: any = _.where(acc, { subjectAreaId: entity.SubjectAreaId })[0];\r\n\t\t\t\tentity.isActive = ko.observable(entityId === entity.Id);\r\n\r\n\t\t\t\tif (!entitiesGroup) {\r\n\t\t\t\t\tconst entityList = [\r\n\t\t\t\t\t\t...acc, {\r\n\t\t\t\t\t\t\tsubjectAreaIconType: entity.SubjectAreaIconType,\r\n\t\t\t\t\t\t\tsubjectAreaIconId: entity.SubjectAreaIconId,\r\n\t\t\t\t\t\t\tsubjectAreaIconImage: entity.SubjectAreaIconImage,\r\n\t\t\t\t\t\t\tsubjectAreaIcon: entity.SubjectAreaIcon,\r\n\t\t\t\t\t\t\tsubjectAreaId: entity.SubjectAreaId,\r\n\t\t\t\t\t\t\tsubjectAreaName: entity.SubjectAreaName,\r\n\t\t\t\t\t\t\tentities: [entity],\r\n\t\t\t\t\t\t\tisActive: ko.observable(entityId === entity.Id),\r\n\t\t\t\t\t\t\tisOpen: ko.observable(false)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t];\r\n\t\t\t\t\tif (entity.isActive()) {\r\n\t\t\t\t\t\tthis.activeEntity = entity;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn entityList;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tentitiesGroup.entities.push(entity);\r\n\t\t\t\t\tif (entity.isActive()) {\r\n\t\t\t\t\t\tentitiesGroup.isActive(true);\r\n\t\t\t\t\t\tentitiesGroup.isOpen(true);\r\n\t\t\t\t\t\tthis.activeEntityGroup = entitiesGroup;\r\n\t\t\t\t\t\tthis.activeEntity = entity;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn acc;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\t[]).filter((entity) => {\r\n\t\t\t\t\treturn entity.subjectAreaName;\r\n\t\t\t\t});\r\n\t\t\tthis.Render();\r\n\t\t});\r\n\t}\r\n\r\n\tShowWithUserMenu(entityId?: number) {\r\n\t\tthis.helpButtonPressed = false;\r\n\t\tthis.GetScreenInfo({ Id: entityId, directScreen: true } as EntityModel);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tEntityGroupClick(entityGroup) {\r\n\t\tentityGroup.isOpen(!entityGroup.isOpen());\r\n\t}\r\n\r\n\tInit() {\r\n\t\tvar f1KeyCode = 112;\r\n\t\tvar dblf1Key = 0;\r\n\t\twindow.addEventListener('keydown',\r\n\t\t\tasync (evt) => {\r\n\t\t if (evt.keyCode === f1KeyCode) {\r\n dblf1Key++\r\n if (dblf1Key >= 2) {\r\n evt.preventDefault();\r\n const isSelectedScreen = (await import('MenuManager/MenuManager')).MenuManager.Instance.GetCurrentScreen();\r\n if (isSelectedScreen){\r\n this.ShowWithUserMenu(isSelectedScreen.GetId());\r\n } else {\r\n this.Show();\r\n }\r\n } else {\r\n evt.preventDefault();\r\n\r\n if (!this.dataIsRendered()) return;\r\n\r\n if (this.helpButtonPressed) {\r\n this.ExitHelpCursorMode(true);\r\n this.dataIsRendered(true);\r\n } else {\r\n this.helpButtonPressed = true;\r\n this.helpButtonPressedTime = new Date();\r\n this.EnterHelpCursorMode();\r\n }\r\n }\r\n setTimeout(() => dblf1Key = 0, 500);\r\n }\r\n\t\t }\r\n\t\t);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'HelpBook/Templates/HelpBook';\r\n\t}\r\n\r\n\tGetIconTemplateName(): string {\r\n\t\treturn 'HelpBook/Templates/HelpIconTemplate';\r\n\t}\r\n\r\n\tGetScreenTemplateName(): string {\r\n\t\treturn 'HelpBook/HelpScreen/Templates/HelpScreen';\r\n\t}\r\n\r\n\tGetFormTemplateName(): string {\r\n\t\treturn 'HelpBook/HelpForm/Templates/HelpForm';\r\n\t}\r\n\r\n\tGetDescriptionTemplateName() {\r\n\t\treturn 'HelpBook/Templates/HelpDescriptionTemplate';\r\n\t}\r\n\r\n\tGetStatusFlowTemplateName(): string {\r\n\t\treturn 'HelpBook/HelpStatusFlow/Templates/HelpStatusFlow';\r\n\t}\r\n\r\n\tRender() {\r\n\t\tthis._user((UserManager.Instance.CurrentUser));\r\n\t\tthis.IsAuthenticated(UserManager.Instance.IsAuthenticated);\r\n\t\tlet resizePopupOptions = {\r\n\t\t\twidthInPercent: 95,\r\n\t\t\theightInPercent: 90\r\n\t\t};\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: 'help-book-modal',\r\n\t\t\tcloseOnEsc: true,\r\n\t\t\tonClose: () => {\r\n\t\t\t\tthis.history([]);\r\n\t\t\t\tthis.dataIsRendered(true);\r\n\t\t\t\tthis.activeEntity = null;\r\n\t\t\t\tthis.activeEntityGroup = null;\r\n },\r\n\t\t\tonCloseComplete: () => {\r\n\t\t\t\tthis.Destroy();\r\n\t\t\t}\r\n\t\t}, false, false, resizePopupOptions);\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis.ShowModal();\r\n\r\n\t}\r\n\r\n\tDestroy() {\r\n\t\tif(this._modal){\r\n\t\t\tthis._modal.Destroy();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tBack() {\r\n\t\tthis.Deactivate(this.activeEntity);\r\n\t\tthis.activeEntity = null;\r\n\t\tthis.GetEntityInfo(this.history.pop());\r\n\t}\r\n\r\n\tAppendHistory() {\r\n\t\tif (this.history()[this.history().length - 1] != this.activeEntity) {\r\n\t\t\tthis.history.push(this.activeEntity);\r\n\t\t}\r\n\t}\r\n\r\n\tGetEntityInfo(entity: EntityModel) {\r\n\t\tBlockUI.Block();\r\n\t\tthis.CleanHelpBook();\r\n\r\n\r\n\t\tif (this.activeEntity != null && this.activeEntity != entity) {\r\n\t\t\tthis.AppendHistory();\r\n\t\t}\r\n\r\n\t\t\r\n\t\tthis.Deactivate(this.activeEntity);\r\n\t\tthis.activeEntity = entity;\r\n\r\n\t\tif (this.activeEntityGroup != null && this.activeEntityGroup.subjectAreaId != entity.SubjectAreaId) {\r\n\t\t\tthis.Deactivate(this.activeEntityGroup);\r\n\t\t\tthis.activeEntityGroup = null;\r\n\t\t\tconst entityGroup = this.entityList.find((e: any) => e.subjectAreaId == entity.SubjectAreaId);\r\n\t\t\tthis.activeEntityGroup = entityGroup;\r\n\t\t\tthis.activeEntityGroup.isActive(true);\r\n\t\t}\r\n\r\n\t\tconst helpEntity = new HelpEntity();\r\n\t\thelpEntity.FetchData(entity).then(() => {\r\n\t\t\tif (entity.directScreen) {\r\n\t\t\t\tthis.Show(entity.Id);\r\n\t\t\t}\r\n\t\t}).then(() => {\r\n\t\t\tthis.HelpEntity(helpEntity);\r\n\t\t\tthis.dataIsRendered(true);\r\n\t\t\tentity.isActive(true);\r\n\t\t}).then(() => {\r\n\t\t\tthis.GetEntityTypes();\r\n\t\t});\r\n\t}\r\n\r\n\tGetEntityTypes() {\r\n\t\tthis.HelpEntity().selectedEntityTypesList(this.HelpEntity().selectedEntityTypes().slice(1));\r\n\t\tthis.GetScreens(this.HelpEntity().selectedEntityTypes()[0], true);\r\n\r\n\t\tif (this.HelpEntity().selectedEntityTypes()[0].Id === 0) {\r\n\t\t\tthis.HelpEntity().selectedEntityTypes()[0].isActive(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.HelpEntity().selectedEntityTypes()[0].HelpDescription.ActivateDescription();\r\n\t}\r\n\r\n\tGetScreens(type, skipBlock: boolean = false) {\r\n\t\tif (type.isActive && type.isActive()) {\r\n\t\t\ttype.isActive(!type.isActive());\r\n\t\t\treturn\r\n\t\t}\r\n\t\ttype.isActive && this.HelpEntity().selectedEntityTypes().map((type: any) => {\r\n\t\t\ttype.isActive(false);\r\n\t\t});\r\n\t\ttype.isActive && type.isActive(!type.isActive());\r\n\r\n\t\tif (type.Id !== 0 && type.StepsCount > 0) {\r\n\t\t\tthis.BuildLifecicleDesignerFlow(type.Id);\r\n\t\t}\r\n\r\n\t\tconst screenIsLoaded = this.HelpScreens().find((el) => {\r\n\t\t\tif (el.id == type.Id) return true;\r\n\t\t});\r\n\r\n\t\tif (!screenIsLoaded) {\r\n\t\t\tconst screen = new HelpScreen(type, skipBlock);\r\n\t\t\tscreen.id = type.Id;\r\n\t\t\tthis.HelpScreens().push(screen);\r\n\t\t}\r\n\r\n\t\tthis.ActiveHelpScreen(this.HelpScreens().find(el => el.id == type.Id));\r\n\t}\r\n\r\n\tToggleMenu() {\r\n\t\tthis.isClosed(!this.isClosed());\r\n\t}\r\n\r\n\tGetScreenInfo(screen, skipBlock: boolean = false) {\r\n\t\tconst selectedScreenId = screen.Id;\r\n\t\tif (screen.isActive && screen.isActive()) {\r\n\t\t\tscreen.isActive(!screen.isActive());\r\n\t\t\tscreen.isActive && this.screenIsActive(screen.isActive());\r\n\t\t\tthis.dataIsRendered(true);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tscreen.isActive && this.ActiveHelpScreen() && this.ActiveHelpScreen().selectedEntityScreens().map((screen: any) => {\r\n\t\t\tscreen.isActive(false);\r\n\t\t\tif (selectedScreenId !== screen.Id) screen.dataFetched = false;\r\n\t\t});\r\n\t\tscreen.isActive && screen.isActive(!screen.isActive());\r\n\t\tscreen.isActive && this.screenIsActive(screen.isActive());\r\n\t\tif (screen.dataFetched) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst form = new HelpForm();\r\n\t\tform.FetchData(screen, skipBlock).then(() => {\r\n\t\t\tthis.screenIsActive(true);\r\n\t\t\tif (screen.directScreen) {\r\n\t\t\t\tthis.Show(form.selectedEntityId);\r\n\t\t\t}\r\n\t\t}).then(() => {\r\n\t\t\tthis.HelpForm(form);\r\n\t\t\tthis.dataIsRendered(true);\r\n\t\t});\r\n\t};\r\n\r\n\tGetControlInfo(control) {\r\n\t\tthis.HelpControl(new HelpControl(control));\r\n\t}\r\n\r\n\tGetTypeInfo(type) {\r\n\t\tthis.HelpType(new HelpType(type));\r\n\t}\r\n\r\n\tAfterRender() {\r\n\r\n\t}\r\n\r\n\tShowModal() {\r\n\t\tif (this._modal) {\r\n\t\t\tthis._modal.Show();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic get Instance(): HelpBook {\r\n\r\n\t\tif (HelpBook._instance == null) {\r\n\t\t\tHelpBook._allowInstantiation = true;\r\n\t\t\tHelpBook._instance = new HelpBook();\r\n\t\t\tHelpBook._allowInstantiation = false;\r\n\t\t}\r\n\r\n\t\treturn HelpBook._instance;\r\n\t}\r\n\r\n\tShowControlHelp(control: BaseControl) {\r\n\t\tif (this.IsHelpButtonPressed()) {\r\n\t\t\tthis.helpButtonPressed = false;\r\n\t\t\tthis.Show(control.GetForm().GetScreen().GetEntityId());\r\n\t\t\tthis.GetControlInfo(({ Id: control.GetControlId() }));\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\r\n\tShowScreenHelp(screenId: number) {\r\n\t\tif (this.IsHelpButtonPressed()) {\r\n\t\t\tthis.helpButtonPressed = false;\r\n\t\t\tthis.GetScreenInfo({ Id: screenId, directScreen: true } as any);\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tShowEntityHelp(entityId: number) {\r\n\t\tif (this.IsHelpButtonPressed()) {\r\n\t\t\tthis.helpButtonPressed = false;\r\n\t\t\tthis.GetEntityInfo({ Id: entityId, directScreen: true, isActive: ko.observable(false), isOpen: ko.observable(false) } as EntityModel);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tShowTypeHelp(typeModel) {\r\n\t\tif (this.IsHelpButtonPressed()) {\r\n\t\t\tthis.helpButtonPressed = false;\r\n\t\t\tthis.Show(typeModel._entityId);\r\n\t\t\tthis.GetTypeInfo({ Id: typeModel._typeId, EntityId: typeModel._entityId});\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tIsHelpButtonPressed(): boolean {\r\n\t\tif (this.helpButtonPressed) {\r\n\t\t\tvar timeSpan = (new Date().getTime() - this.helpButtonPressedTime.getTime()) / 6000;\r\n\t\t\treturn timeSpan < 1;\r\n\t\t}\r\n\t\tthis.ExitHelpCursorMode();\r\n\t\treturn false;\r\n\t}\r\n\r\n\tEnterHelpCursorMode() {\r\n\t\t$('*').css('cursor', 'help');\r\n\t\tthis._timeSpan = setTimeout(() => { this.ExitHelpCursorMode() }, 6000);\r\n\r\n\t}\r\n\r\n\tExitHelpCursorMode(forceExit?: boolean) {\r\n\t\tif (this.helpButtonPressed || forceExit) {\r\n\t\t\tthis.helpButtonPressed = false;\r\n\t\t\tclearTimeout(this._timeSpan);\r\n\t\t\t$('*').css('cursor', '');\r\n\t\t}\r\n\t}\r\n\r\n\tClickStatusFlow(data) {\r\n\t\tdata.isStatusFlowActive(!data.isStatusFlowActive());\r\n\t}\r\n\r\n\tBuildLifecicleDesignerFlow(typeId) {\r\n\t\tconst flow = new LifecycleDesignerFlow({\r\n\t\t\tContainer: '.lifeStatusDiagramContainer',\r\n\t\t\tTableTypes: []\r\n\t\t});\r\n\t\tflow.LoadDataType(typeId).then(data => {\r\n\t\t\tflow.InitJsPoint(data.LifecycleObject);\r\n\t\t\tthis.lifestatuses(data.LifecycleObject.Steps.slice(1).map(status => {\r\n\t\t\t\tconst selectedTranslation = _.find(status.Translations, (translation: TranslationModel) => translation.Selected === true);\r\n\t\t\t\tconst name = (selectedTranslation && selectedTranslation.Selected && selectedTranslation.Translation !== null) ? selectedTranslation.Translation : status.Label;\r\n\t\t\t\tconst isTriggersSet = status.Triggers.length && status.Triggers[0].DwPackages.length;\r\n\t\t\t\tlet deadlineElapsed = '';\r\n\t\t\t\tif (status.DeadlineElapsed) {\r\n\t\t\t\t\tlet day = moment(status.DeadlineElapsed).subtract(1, 'd').day(),\r\n\t\t\t\t\t\thours = moment(status.DeadlineElapsed).hours(),\r\n\t\t\t\t\t\tminutes = moment(status.DeadlineElapsed).minutes();\r\n\t\t\t\t\tif (day === 0) {\r\n\t\t\t\t\t\tdeadlineElapsed = `${hours}h ${minutes}m`;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdeadlineElapsed = `${day}d ${hours}h ${minutes}m`;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet dateElapsed = '';\r\n\t\t\t\tif (status.DateElapsed) {\r\n\t\t\t\t\tlet day = moment(status.DateElapsed).subtract(1, 'd').day(),\r\n\t\t\t\t\t\thours = moment(status.DateElapsed).hours(),\r\n\t\t\t\t\t\tminutes = moment(status.DateElapsed).minutes();\r\n\t\t\t\t\tif (day === 0) {\r\n\t\t\t\t\t\tdateElapsed = `${hours}h ${minutes}m`;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdateElapsed = `${day}d ${hours}h ${minutes}m`;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tlet dwPackages = [];\r\n\t\t\t\tlet dwPackagesNames = [];\r\n\t\t\t\tif (isTriggersSet) {\r\n\t\t\t\t\tdwPackages = status.Triggers[0].DwPackages;\r\n\t\t\t\t\tdwPackagesNames = status.Triggers[0].DwPackages.map(dwPackage => dwPackage.Name).join(', ');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet businessRoles = data.BusinessRoles.find(el => el.LifestatusId === status.Id) && data.BusinessRoles.find(el => el.LifestatusId === status.Id).Roles;\r\n\t\t\t\tconst isSettigsDisplays = isTriggersSet || status.DeadlineElapsed || status.DateElapsed || status.NoActionNode;\r\n\t\t\t\tconst isAnythingAttached = isSettigsDisplays || businessRoles;\r\n\t\t\t\treturn _.extend({}, status, {\r\n\t\t\t\t\tName: ko.observable(name),\r\n\t\t\t\t\tisActive: ko.observable(false),\r\n\t\t\t\t\tClick: (status) => {\r\n\t\t\t\t\t\tif (isAnythingAttached) {\r\n\t\t\t\t\t\t\tstatus.isActive(!status.isActive());\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tstatus.isActive(false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tisTriggersSet: isTriggersSet,\r\n\t\t\t\t\tdwPackages: dwPackages,\r\n\t\t\t\t\tdwPackagesNames: dwPackagesNames,\r\n\t\t\t\t\tdeadlineElapsed: deadlineElapsed,\r\n\t\t\t\t\tdateElapsed: dateElapsed,\r\n\t\t\t\t\tisSettigsDisplays: ko.observable(isSettigsDisplays),\r\n\t\t\t\t\tisAnythingAttached: ko.observable(isAnythingAttached),\r\n\t\t\t\t\tbusinessRoles: businessRoles\r\n\t\t\t\t});\r\n\t\t\t}));\r\n\t\t});\r\n\t}\r\n\r\n\tget LogoUrl(){\r\n\t\t\treturn `../../../../img/Custom/App/${Brand.Name}/official-main-logo-header.jpg`;\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko if: !IconImage --> <!-- ko if: IconType === 'fontawesome-webfont' --> <i data-bind=\\\"css: Icon\\\" class=\\\"fa fa-1x fa-stack panel-icon align-middle\\\"></i> <!-- /ko --> <!-- ko if: IconType === 'Social-Icons' --> <i data-bind=\\\"css: Icon\\\" class=\\\"socicon-btn panel-icon align-middle\\\"></i> <!-- /ko --> <!-- ko if: IconType === 'Simple-Line-Icons' --> <i data-bind=\\\"css: Icon\\\" class=\\\"panel-icon align-middle\\\"></i> <!-- /ko --> <!-- /ko --> <!-- ko if: IconImage --> <img data-bind=\\\"attr: {src: IconImage}\\\" class=\\\"img-responsive image-centered height-20x20 image-icon align-middle\\\"> <!-- /ko -->\";\n// Exports\nexport default code;","import {P} from \"Core/Common/Promise\";\r\nimport {IRequestOptions, Request} from \"Core/Common/Request\";\r\nimport {URL} from 'Core/Common/Url';\r\n\r\nexport class LockScreenStore {\r\n\tstatic Unlock(password: string): P.Promise<any>{\r\n\t\tlet deferredResult = P.defer<boolean>();\r\n\t\tlet data = {\r\n\t\t\tPassword: password\r\n\t\t};\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.AUTH.UNLOCK_SESSION,\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: data\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Lock(): P.Promise<any>{\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.AUTH.LOCK_SESSION,\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tlet deferredResult = P.defer<any>();\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport {PASSWORD} from 'Core/Constant';\r\n\r\nexport class LockScreenModel {\r\n\tPassword: KnockoutObservable<string>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Password = ko.observable('').extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: 'Please, enter a password'\r\n\t\t\t},\r\n\t\t\tminLength: PASSWORD.MinimumLength\r\n\t\t});\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as $ from \"jquery\";\r\nimport {LockScreenStore} from \"LockScreen/Stores/LockScreenStore\";\r\nimport {UserManager} from 'User/UserManager';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {UserModel} from \"User/Store/Models/UserModel\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {Brand} from 'Core/Common/Brand';\r\nimport LockScreenTemplate from \"LockScreen/Templates/LockScreen.html\";\r\nko.templates[\"LockScreen/Templates/LockScreen\"] = LockScreenTemplate;\r\nimport 'pubsub';\r\nimport {LockScreenModel} from \"LockScreen/Models/LockScreenModel\";\r\nimport {BlockUI as BlockUi} from \"Core/Common/BlockUi\";\r\nimport {AuthManager} from \"Auth/AuthManager\";\r\nimport { LOCAL_STORAGE } from \"Core/Common/Enums/LocalStorageItems\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport { TranslationManager } from \"Core/Components/Translation/TranslationManager\";\r\nimport { MenuManager } from \"MenuManager/MenuManager\";\r\nconst SLIDES = [\r\n\t'/img/Metronic/bg/1.jpg',\r\n\t'/img/Metronic/bg/2.jpg',\r\n\t'/img/Metronic/bg/3.jpg',\r\n\t'/img/Metronic/bg/4.jpg'\r\n];\r\n\r\nexport class LockScreen extends Event {\r\n\tprivate _labels = LABELS;\r\n\tprivate _modal: Modal;\r\n\tprivate _userManager: UserManager;\r\n\tprivate _currentUser: KnockoutObservable<UserModel>;\r\n\tprivate _errorMessage: KnockoutObservable<string>;\r\n\tprivate _isOpenedFlag: boolean;\r\n\tprivate _model: KnockoutValidatedObservable<LockScreenModel>;\r\n\tprivate _history: Historyjs = <any>History;\r\n\tprivate _broadcastChannel: BroadcastChannel;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis._userManager = UserManager.Instance;\r\n\t\tthis._currentUser = ko.observable(this._userManager.CurrentUser);\r\n\t\tthis._errorMessage = ko.observable('');\r\n\t\tthis._broadcastChannel = new BroadcastChannel('lock_channel');\r\n\r\n\t\tthis._broadcastChannel.onmessage = (event) => {\r\n\t\t\tif(event.data == 'unlock'){\r\n\t\t\t\twindow.location.reload();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tget UserName() {\r\n\t\treturn this._currentUser().NameTranslation || this._currentUser().Name;\r\n\t}\r\n\r\n\tget LogoUrl() {\r\n\t\treturn `/img/Custom/App/${Brand.Name}/official-main-logo.jpg`;\r\n\t}\r\n\r\n\tLock() {\r\n\t\tLockScreenStore.Lock().then(() => {\r\n\t\t\tthis._broadcastChannel.postMessage(\"lock\");\r\n\t\t\tthis.ShowInModal();\t\t\t\r\n\t\t}).fail(err => new Notifier().Failed(err.message));\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn \"LockScreen/Templates/LockScreen\";\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\tUnlock() {\r\n\t\tif (this.IsValid()) {\r\n\t\t\tLockScreenStore.Unlock(this._model().Password())\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis._broadcastChannel.postMessage(\"unlock\");\t\t\t\t\r\n\t\t\t\tLockr.set(LOCAL_STORAGE.LOCK_DATE, new Date().getTime());\r\n\t\t\t\twindow.location.reload();\r\n\t\t\t})\r\n\t\t\t.fail(err => this._errorMessage(err.message)\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tRelogin() {\r\n\t\tlet authManager = new AuthManager();\r\n\t\tauthManager.SignOut()\r\n\t\t\t.then(() => {\r\n\t\t\t\tPubSub.publish('UNAUTHORIZE', null);\r\n\t\t\t\tthis.Close();\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUi.Unblock());\r\n\t}\r\n\r\n\tIsValid() {\r\n\t\tif (!this._model.isValid()) {\r\n\t\t\tthis._model.errors.showAllMessages();\r\n\t\t}\r\n\t\treturn this._model.isValid();\r\n\t}\r\n\r\n\tInitValidation() {\r\n\t\tko.validation.init({ insertMessages: false }, true);\r\n\t}\r\n\r\n\tShowInModal() {\r\n\t\tif (this._isOpenedFlag) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._model = ko.validatedObservable(new LockScreenModel());\r\n\r\n\t\tthis._isOpenedFlag = true;\r\n\t\tthis._modal = new Modal({\r\n\t\t\t\taddClass: 'login',\r\n\t\t\t\twidth: '400',\r\n\t\t\t\tminHeight: '300',\r\n\t\t\t\tfade: 0,\r\n\t\t\t\tanimation: null,\r\n\t\t\t\tcloseButton: false,\r\n\t\t\t\tcreateOnInit: true,\r\n\t\t\t\tcloseOnEsc: false,\r\n\t\t\t\tblockScroll: true\r\n\t\t\t},\r\n\t\t\tfalse);\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t\tthis._modal.Show();\r\n\t\t$(this._modal.Overlay()).css({ 'background': '#666' });\r\n\t\t$(this._modal.Container()).css({ 'background': 'none' });\r\n\t\t$(this._modal.Overlay()).backstretch(SLIDES,\r\n\t\t\t{\r\n\t\t\t\tfade: 1000,\r\n\t\t\t\tduration: 8000\r\n\t\t\t});\r\n\r\n\t\tthis.RemoveOverlay();\r\n\t}\r\n\r\n\tRemoveOverlay() {\r\n\t\tlet $preloader = $('.preloader');\r\n\t\tif ($preloader) {\r\n\t\t\t$preloader.detach();\r\n\t\t}\r\n\t}\r\n\r\n\tClose() {\r\n\t\tconst state = this._history.getState();\r\n\t\tif (state) {\r\n\t\t\tdocument.title = state.title;\r\n\t\t}\r\n\t\tthis._isOpenedFlag = false;\r\n\t\t$(this._modal.Overlay()).backstretch('destroy');\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tRemoveErrorSummary() {\r\n\t\tthis._errorMessage(null);\r\n\t}\r\n}\r\n","// Module\nvar code = \"<div class=\\\"content\\\"> <form data-bind=\\\"enterKey: $data.Unlock.bind($data)\\\"> <div id=\\\"LockWrapper\\\"> <div class=\\\"page-lock\\\"> <div class=\\\"page-logo\\\"> <a class=\\\"brand\\\" href=\\\"#\\\"> <img data-bind=\\\"attr: { src: $data.LogoUrl }\\\" class=\\\"app-logo\\\" src=\\\"\\\"> </a> </div> <div class=\\\"page-body\\\" id=\\\"lock-screen\\\"> <div class=\\\"page-lock-info\\\"> <h1 data-bind=\\\"text: $data.UserName\\\"></h1> <span class=\\\"locked\\\"> <!-- ko text: $data._labels.LOCKED --><!-- /ko --> </span> <br> <!-- ko with: _errorMessage --> <div class=\\\"alert alert-danger sign-in-error-summary-block\\\"> <button class=\\\"close\\\" data-bind=\\\"click: $parent.RemoveErrorSummary.bind($parent)\\\"></button> <span data-bind=\\\"html: $data\\\" class=\\\"sign-in-error-summary\\\"> </span> </div> <!-- /ko --> <!-- ko with: _model --> <div data-bind=\\\"css: { 'has-error': !Password.isValid }\\\" class=\\\"form-group\\\"> <label class=\\\"control-label visible-ie8 visible-ie9\\\">Password</label> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: Password\\\" class=\\\"form-control password\\\" type=\\\"text\\\" autocomplete=\\\"off\\\" placeholder=\\\"Password\\\"/> <span class=\\\"input-group-btn\\\"> <button data-bind=\\\"click: $parent.Unlock.bind($parent)\\\" type=\\\"button\\\" class=\\\"btn blue\\\" id=\\\"UnlockBtn\\\"> <i class=\\\"m-icon-swapright m-icon-white\\\"></i> </button> </span> </div> <span data-bind=\\\"validationMessage: Password\\\" class=\\\"help-block bold\\\"></span> </div> <!-- /ko --> <div class=\\\"relogin\\\"> <a data-bind=\\\"click: $data.Relogin.bind($data)\\\" class=\\\"relogin-btn\\\"> <!-- ko text: $data._labels.NOT --><!-- /ko --> <span data-bind=\\\"text: $data.UserName\\\"></span>? </a> </div> </div> </div> <div class=\\\"page-footer-custom\\\"> </div> </div> </div> </form> </div> \";\n// Exports\nexport default code;","export enum ColumnTypes {\r\n\tDecimal,\r\n\tDate,\r\n\tDateTime,\r\n\tBinary,\r\n\tTime,\r\n\tTimeSpan,\r\n\tGuid,\r\n\tRadio,\r\n\tCurrency,\r\n\tDocument,\r\n\tFlagCheck,\r\n\tImage,\r\n\tInteger,\r\n\tPKey,\r\n\tMultiSelect,\r\n\tColor,\r\n\tLookup,\r\n\tIcon,\r\n\tSort,\r\n\tText,\r\n\tType,\r\n\tYesNo,\r\n\tMemo,\r\n\tPassword\r\n}\r\n","export class NewRecordModel {\r\n\tTableId: number;\r\n\tFields: Array<FieldModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Fields = [];\r\n\t}\r\n}\r\n\r\nexport class FieldModel {\r\n\tId: number;\r\n\tName: string;\r\n\tValue: any;\r\n\tTranslations: TranslationValueModel[];\r\n\r\n\tconstructor() {\r\n\t\tthis.Translations = [];\r\n\t}\r\n}\r\n\r\nexport class TranslationValueModel {\r\n\tconstructor(\r\n\t\tpublic LanguageShortName: string,\r\n\t\tpublic Value: string\r\n\t) {}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\n\r\nimport { BaseScreen } from \"Core/Screens/BaseScreen\";\r\nimport { ScreenModel } from \"Core/Models/Screens/ScreenModel\";\r\nimport { SubFormModel } from 'Core/Models/Screens/SubFormModel'\r\n\r\nimport { ControlModel } from 'Core/Controls/BaseControl/Models/ControlModel';\r\n\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nimport { RenderModes, FIELD_TYPE_TO_CONTROL } from \"Core/Constant\";\r\nimport { ScreenTypes } from 'Core/Common/Enums/ScreenTypes';\r\n\r\nimport {ScreenDataModel} from \"Core/ScreenManager/Models/ScreenDataModel\";\r\nimport {ControlDataModel} from \"Core/ScreenManager/Models/ControlDataModel\";\r\nimport {TranslationModel} from \"Core/ScreenManager/Models/TranslationModel\";\r\n\r\nimport { NewRecordModel, FieldModel, TranslationValueModel } from \"LookupEditor/NewRecord/Models/NewRecordModel\";\r\nimport { LookupModel, LookupFieldModel } from \"LookupEditor/Store/Models/LookupModel\";\r\n\r\nimport { DataModel, FieldDataModel } from 'Core/Screens/Common/LinkEditor/Models/DataModel';\r\n\r\nimport Template from \"LookupEditor/NewRecord/Templates/NewRecord.html\";\r\nimport { FlagResolver } from \"Core/Common/FlagResolver\";\r\nimport { FieldFlags } from \"Core/Common/Enums/FieldFlags\";\r\n\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { TranslationManager } from \"Core/Components/Translation/TranslationManager\";\r\nimport { LookupEditorStore } from \"../Store/LookupEditorStore\";\r\nimport { DefaultValueModel } from \"../Store/Models/DefaultValueModel\";\r\nimport { ColumnTypes } from \"../Enums/ColumnTypes\";\r\nimport { CONTROL_TYPES } from 'Core/Constant';\r\nimport { IconModel } from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nko.templates[\"LookupEditor/NewRecord/Templates/NewRecord\"] = Template;\r\n\r\nlet SIMPLE_CONTROLS = [CONTROL_TYPES.Text,\r\n\tCONTROL_TYPES.DateTime,\r\n\tCONTROL_TYPES.Dropdown,\r\n\tCONTROL_TYPES.Memo,\r\n\tCONTROL_TYPES.Checkbox,\r\n\tCONTROL_TYPES.ColorSelector,\r\n\tCONTROL_TYPES.Password,\r\n\tCONTROL_TYPES.MultiSelect,\r\n\tCONTROL_TYPES.RadioButton];\r\n\r\nexport class NewRecordScreen extends BaseScreen {\r\n\r\n\tconstructor(screen: ScreenModel) {\r\n\t\tsuper(screen, RenderModes.Edit);\r\n\t\tthis.BindEvents();\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"LookupEditor/NewRecord/Templates/NewRecord\";\r\n\t}\r\n\r\n\tAfterRender(el): void {\r\n\t\tsuper.AfterRender(el);\r\n\r\n\t}\r\n\r\n\tValidateData() {\r\n\t\tlet result = true;\r\n\t\t_.each(this._controls, control => {\r\n\t\t\tconst isControlValid = control.IsValid();\r\n\t\t\tif (!isControlValid) {\r\n\t\t\t\tresult = false;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn result;\r\n\t}\r\n\r\n\tSave() {\r\n\t\tif (this.ValidateData()) {\r\n\t\t\tlet newRecordModel = this.GetData();\r\n\t\t\tthis.Trigger(\"SAVE_DATA\", newRecordModel);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic GenerateScreen(model: LookupModel): P.Promise<NewRecordScreen> {\r\n\t\tconst deferred = P.defer<NewRecordScreen>();\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tLookupEditorStore.GetDefaultData(model.Id)\r\n\t\t\t.then(defaultData => deferred.resolve(NewRecordScreen.InitScreen(model, defaultData)))\r\n\t\t\t.fail(() => deferred.resolve(NewRecordScreen.InitScreen(model, [])))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tprivate static InitScreen(model: LookupModel, defaultData: DefaultValueModel[]) {\r\n\t\tlet screenModel = new ScreenModel();\r\n\t\tscreenModel.Data = new ScreenDataModel();\r\n\t\tscreenModel.Data.RecordId = 0;\r\n\t\tscreenModel.EntityIcon = new IconModel();\r\n\t\tscreenModel.ScreenTypeName = ScreenTypes[ScreenTypes.LookupEditorNewRecord];\r\n\t\tscreenModel.EntityId = model.Id;\r\n\t\tscreenModel.EntityName = model.Name;\r\n\t\tscreenModel.EntityNameTranslation = model.TranslatedName;\r\n\r\n\t\tscreenModel.ActionBar = new SubFormModel();\r\n\r\n\t\tlet subFormModel = new SubFormModel();\r\n\t\tscreenModel.SubForms = [subFormModel];\r\n\r\n\t\tmodel.Fields.forEach(field => {\r\n\t\t\tif (!field.IsPrimaryKey && !FlagResolver.ContainsFlag(FieldFlags.System, field.Flags) && field.Type !== ColumnTypes[ColumnTypes.Binary]) {\r\n\t\t\t\tlet controlModel = this.GetControlModel(field, model.Name, model.Id);\r\n\t\t\t\tsubFormModel.Controls.push(controlModel);\r\n\r\n\t\t\t\tconst defaultValueModel = defaultData.find(dv => dv.Id === field.Id);\r\n\t\t\t\tthis.SetControlData(screenModel, controlModel, field, defaultValueModel && defaultValueModel.DefaultValue);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tscreenModel.SubForms[0].Controls[0].Properties = _.extend({},\r\n\t\t\tscreenModel.SubForms[0].Controls[0].Properties, {\r\n\t\t\t\thasFocus: true\r\n\t\t\t});\r\n\r\n\t\tconst screen = new NewRecordScreen(screenModel);\r\n\t\tscreen.SetData(screenModel.Data);\r\n\r\n\t\treturn screen;\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\t\tthis.On('SAVE', this, () => this.Save());\r\n\t}\r\n\r\n\tprivate static GetControlModel(fieldModel: LookupFieldModel, tableName: string, tableId: number): ControlModel {\r\n\t\tconst attachedField = new AttachedFieldModel();\r\n\t\tattachedField.Id = fieldModel.Id;\r\n\t\tattachedField.Name = fieldModel.Name;\r\n\t\tattachedField.EntityName = tableName;\r\n\t\tattachedField.EntityId = tableId;\r\n\t\tattachedField.ValFieldId = fieldModel.ValFieldId;\r\n\t\tattachedField.ValFieldTypeName = fieldModel.ValFieldTypeName;\r\n\t\tattachedField.ValFieldFormatName = fieldModel.ValFieldFormatName;\r\n\t\tattachedField.ValFieldSize = fieldModel.ValFieldSize;\r\n\t\tattachedField.ValTableId = fieldModel.ValTableId;\r\n\t\tattachedField.IsRequired = FlagResolver.ContainsFlag(FieldFlags.Required, fieldModel.Flags);\r\n\t\tattachedField.FormatName = fieldModel.FormatName;\r\n\t\tattachedField.FieldTypeName = fieldModel.Type;\r\n\t\tattachedField.Size = fieldModel.Size;\r\n\r\n\t\tconst controlModel = new ControlModel();\r\n\t\tcontrolModel.Fields.push(attachedField);\r\n\t\tcontrolModel.Id = fieldModel.Id;\r\n\t\tcontrolModel.Name = fieldModel.Name;\r\n\t\tcontrolModel.Label = fieldModel.Name;\r\n\t\tcontrolModel.LabelPosition = \"Left\";\r\n\t\tcontrolModel.TypeName = FIELD_TYPE_TO_CONTROL[fieldModel.Type];\r\n\t\tcontrolModel.FieldFlag = fieldModel.Flags;\r\n\t\tcontrolModel.IsRequired = FlagResolver.ContainsFlag(FieldFlags.Required, fieldModel.Flags);\r\n\t\tcontrolModel.UseFieldName = true;\r\n\t\tcontrolModel.IsReadOnly = fieldModel.IsVirtual;\r\n\r\n\t\treturn controlModel;\r\n\t}\r\n\r\n\tprivate GetData(): NewRecordModel {\r\n\t\tlet screenDataModel = this.GetScreenDataModel();\r\n\r\n\t\tlet newRecordModel = new NewRecordModel();\r\n newRecordModel.TableId = screenDataModel.EntityId;\r\n\t\tnewRecordModel.Fields = screenDataModel.FieldValues.map(fieldValuePair => {\r\n\t\t\tlet field = new FieldModel();\r\n\r\n\t\t\tfield.Id = fieldValuePair.FieldId;\r\n\r\n\t\t\tconst [fieldName, value, ...translations] = fieldValuePair.FieldValue;\r\n\r\n\t\t\tfield.Name = fieldName;\r\n\r\n\t\t\tfield.Value = value;\r\n\r\n\t\t\tif (translations) {\r\n\t\t\t\tfield.Translations = translations.filter(translation => !!translation).map(translation => {\r\n\t\t\t\t\tconst translationSplit = translation.split('_');\r\n\t\t\t\t\tconst [languageShortName, value] = translationSplit;\r\n\t\t\t\t\treturn new TranslationValueModel(languageShortName, value);\r\n\t\t\t\t});\r\n }\r\n\r\n\t\t\treturn field;\r\n\t\t});\r\n\r\n\t\treturn newRecordModel;\r\n\t}\r\n\r\n\tprivate GetScreenDataModel(): DataModel {\r\n\t\tvar dataModel = new DataModel();\r\n\t\tdataModel.EntityId = this.GetEntityId();\r\n\t\tthis._controls.forEach(control => {\r\n\t\t\tlet controlType = control.GetType();\r\n \r\n\t\t\tif (SIMPLE_CONTROLS.indexOf(controlType) >= 0) {\r\n const data = control.Deserialize();\r\n if (data) {\r\n\t\t\t\t\tvar fieldDataModel = new FieldDataModel();\r\n\t\t\t\t\tfieldDataModel.FieldId = control.GetControlId();\r\n\t\t\t\t\tfieldDataModel.FieldValue = data;\r\n\t\t\t\t\tdataModel.FieldValues.push(fieldDataModel);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (controlType === CONTROL_TYPES.Image) {\r\n\t\t\t\tconst controlAttachments = control.Deserialize();\r\n\t\t\t\tif (controlAttachments) {\r\n\t\t\t\t\tvar fieldDataModel = new FieldDataModel();\r\n\t\t\t\t\tconst value = controlAttachments['attachments'];\r\n\t\t\t\t\tfieldDataModel.FieldId = control.GetControlId();\r\n\t\t\t\t\tif (value && value.length > 0) {\r\n\t\t\t\t\t\tfieldDataModel.FieldValue = [controlAttachments['FieldName'], value[0].Data.Base64Data + '|' + value[0].Data.FileName];\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdataModel.FieldValues.push(fieldDataModel);\r\n\t\t\t\t}\r\n }\r\n\t\t});\r\n\r\n\t\treturn dataModel;\r\n\t}\r\n\r\n\tprivate static SetControlData(screenModel: ScreenModel, controlModel: ControlModel, field: LookupFieldModel, defaultValue: string) {\r\n\t\tconst data = new ControlDataModel();\r\n\t\tdata.ControlId = controlModel.Id;\r\n\t\tdata.FieldName = field.Name;\r\n\t\tdata.FieldId = field.Id;\r\n\t\tdata.Value = defaultValue;\r\n\t\tdata.DisplayValue = defaultValue;\r\n\r\n\t\tconst fieldIsTranslatable = FlagResolver.ContainsFlag(FieldFlags.Translate, field.Flags);\r\n\r\n\t\tif (fieldIsTranslatable) {\r\n\t\t\tconst languages = TranslationManager.Instance.Languages;\r\n\r\n\t\t\tdata.Translations = languages\r\n\t\t\t\t.filter(language => !language.IsDefault)\r\n\t\t\t\t.map(language => {\r\n\t\t\t\t\tconst translation = new TranslationModel();\r\n\t\t\t\t\ttranslation.LanguageId = language.Id;\r\n\t\t\t\t\treturn translation;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst controlIndex = screenModel.SubForms[0].Controls.indexOf(controlModel);\r\n\t\tscreenModel.Data.ControlsData[controlIndex] = data;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"form form-horizontal\\\"> <b class=\\\"spacerBackground\\\"></b> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"action-bar-wrapper lookup-editor--actionBar\\\"> <div class=\\\"bar-left\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"bar-right\\\"> <div class=\\\"entityName\\\"> <span class=\\\"newRecordText\\\"><!-- ko text: _labels.NEW_RECORD --><!-- /ko --></span><span data-bind=\\\"text: GetEntityNameTranslation()\\\"></span> </div> </div> </div> </form> </div> <div class=\\\"box-shadow-wrapper subFormsWrapper\\\"> <!-- ko foreach: SubForms --> <div class=\\\"clearfix\\\"> <!-- ko template: {name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData)} --> <!-- /ko --> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import { IGetEntityRequestModel } from \"Core/Common/Interfaces/IGetEntityRequestModel\";\r\nimport { IRetrieveRecordsModel } from \"LookupEditor/Store/Interfaces/IRetrieveRecordsModel\";\r\nimport { IDeleteRecordsRequestModel } from \"LookupEditor/Store/Interfaces/IDeleteRecordsRequestModel\";\r\nimport { ISaveLookupRequestModel } from \"LookupEditor/Store/Interfaces/ISaveLookupRequestModel\";\r\nimport { RetrievedRecordsModel } from \"LookupEditor/Store/Models/RetrievedRecordsModel\";\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { URL } from \"Core/Common/Url\";\r\nimport { IRequestOptions, Request } from \"Core/Common/Request\";\r\nimport { NewRecordModel } from \"LookupEditor/NewRecord/Models/NewRecordModel\";\r\n\r\nexport class LookupEditorStore {\r\n\tstatic GetMetadata(): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.LOOKUP_EDITOR.GET_LOOKUP_SCREEN_METADATA,\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetLookupData(retrieveArgs: IRetrieveRecordsModel) {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.LOOKUP_EDITOR.GET_LOOKUP_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: retrieveArgs\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(getDataResult => {\r\n\t\t\t\tif (getDataResult.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(getDataResult.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: getDataResult.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail(() => deferredResult.reject({ message: \"Error reading data for table\" }));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeleteRecords(deleteArgs: IDeleteRecordsRequestModel) {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.LOOKUP_EDITOR.DELETE_RECORDS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: deleteArgs\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(deleteResult => deferredResult.resolve(deleteResult));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic SaveChanges(saveArgs: ISaveLookupRequestModel) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.LOOKUP_EDITOR.SAVE_CHANGES,\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: saveArgs\r\n\t\t});\r\n\t}\r\n\r\n\tstatic AddRecord(model: NewRecordModel): P.Promise<any> {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/LookupEditorApi/AddRecord',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t}, params: model\r\n\t\t})\r\n\t}\r\n\r\n\tstatic GetLookupRecordsCount(lookupFieldId: number): P.Promise<number> {\r\n\t\tlet deferredResult = P.defer<number>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/LookupEditorApi/GetLookupRecordsCount',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { id: lookupFieldId }\r\n\t\t}\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail(() => deferredResult.reject({ message: \"Error getting records count\" }));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetRecord(tableId: number, recordId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DataApi/GetDataForRecord',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: { tableId: tableId, recordId: recordId }\r\n\t\t}\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail(() => deferredResult.reject({ message: \"Error reading record\" }));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetRecords(tableId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DataApi/GetDataForRecords',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: { tableId: tableId, usePagination: false }\r\n\t\t}\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(result.ResultList);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail(() => deferredResult.reject({ message: \"Error reading record\" }));\r\n\r\n\t\treturn deferredResult.promise();\r\n }\r\n\r\n static GetRecordsByIds(tableId: number, recordsIds: number[]): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/DataApi/GetDataForRecordsByIds',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: { tableId: tableId, recordsIds: recordsIds }\r\n }\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferredResult.resolve(result.ResultList);\r\n } else {\r\n deferredResult.reject({ message: result.ErrorMessage });\r\n }\r\n }).fail(() => deferredResult.reject({ message: \"Error reading records\" }));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\tstatic GetDefaultData(tableId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/LookupEditorApi/GetDefaultData',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: { tableId: tableId }\r\n\t\t});\r\n\t}\r\n} ","import {deserializeAs} from 'libs/cerialize';\r\nimport {deserialize} from 'libs/cerialize';\r\n\r\nimport {FieldFlags} from \"Core/Common/Enums/FieldFlags\";\r\n\r\nexport class LookupFieldModel {\r\n\r\n @deserialize \r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n NameTranslated: string;\r\n\r\n @deserialize\r\n Type: string;\r\n\r\n @deserialize\r\n FormatName: string;\r\n\r\n @deserialize\r\n IsPrimaryKey: boolean;\r\n\r\n @deserialize\r\n IsVirtual: boolean;\r\n\r\n @deserialize\r\n ValTableId: number;\r\n\r\n @deserialize\r\n ValFieldId: number;\r\n\r\n @deserialize\r\n ValFieldTypeName: string;\r\n\r\n @deserialize\r\n ValFieldFormatName: string;\r\n\r\n @deserialize\r\n ValFieldSize: number;\r\n\r\n @deserialize\r\n Flags: number;\r\n\r\n @deserialize\r\n Size: number;\r\n\r\n get IsHidden() {\r\n\t\t return (FieldFlags.Hidden & this.Flags) === FieldFlags.Hidden;\r\n }\r\n}\r\n\r\nexport class LookupModel {\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n @deserialize\r\n Type: string;\r\n\r\n @deserializeAs(LookupFieldModel)\r\n Fields: Array<LookupFieldModel>;\r\n}","import {TableModel} from \"LookupEditor/Store/Models/TableModel\";\r\nimport {LookupModel} from \"LookupEditor/Store/Models/LookupModel\";\r\nimport {IRequestOptions, Request} from \"Core/Common/Request\";\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {URL} from \"Core/Common/Url\";\r\n\r\nexport class TablesStore {\r\n static GetEntity(entityId: number): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.LOOKUP_EDITOR.GET_ENTITY,\r\n type: 'GET',\r\n dataType: 'json'\r\n }, params: { id: entityId }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => deferredResult.resolve(data));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetRelatedTables(tableId: number, tableType: string, isRoot: boolean): P.Promise<Array<TableModel>> {\r\n\t\tlet deferredResult = P.defer<Array<TableModel>>();\r\n\r\n\t\tconst url = tableType === 'Entity' || tableType === 'Sub' || tableType === 'Link' || isRoot\r\n\t\t ? URL.LOOKUP_EDITOR.GET_LOOKUPS\r\n\t\t\t: URL.LOOKUP_EDITOR.GET_ENTITIES;\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n\t\t\t\turl: url,\r\n type: 'GET',\r\n dataType: 'json'\r\n\t\t\t}, params: { id: tableId }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => deferredResult.resolve(data));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetLookup(lookupId: number): P.Promise<any> {\r\n var deferredResult = P.defer<LookupModel>();\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.LOOKUP_EDITOR.GET_LOOKUP,\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: { id: lookupId }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => deferredResult.resolve(result));\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {MenuManager} from 'MenuManager/MenuManager';\r\n\r\nimport {IScreen} from 'Core/Screens/IScreen';\r\nimport {CONTROL_TYPES} from 'Core/Constant';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport BreadcrumbsTemplate from 'MenuManager/Breadcrumbs/Templates/Breadcrumbs.html';\r\nimport {FieldDataModel} from \"../../Core/Screens/Models/RecordDataModel\";\r\nimport * as _ from \"underscore\";\r\nimport {ITranslationValue} from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\n\r\nko.templates['MenuManager/Breadcrumbs/Templates/Breadcrumbs'] = BreadcrumbsTemplate;\r\n\r\nexport const BREADCRUMBS_HYPERLINK_TOPIC = 'BREADCRUMBS_HYPERLINK';\r\nexport const BREADCRUMBS_NEW_VALUE_TOPIC = 'BREADCRUMBS_NEW_VALUE';\r\nexport const BREADCRUMBS_FIELD_RECORD = 'BREADCRUMBS_FIELD_RECORD';\r\nexport const BREADCRUMBS_UPDATE_RECORD_NAME = 'BREADCRUMBS_UPDATE_RECORD_NAME';\r\n\r\ninterface NewValueData {\r\n Screen?: IScreen;\r\n LookForPreviousScreen?: boolean;\r\n CleanRecords?: boolean;\r\n BreadcrumbIndex?: number;\r\n DailyStuff?: boolean;\r\n}\r\n\r\ninterface Record {\r\n Screen?: IScreen;\r\n Name: KnockoutObservable<string>;\r\n}\r\n\r\nfunction getScreenName({ records, data }: { records: Record[]; data: NewValueData }) {\r\n if (data.BreadcrumbIndex !== undefined) {\r\n const record = records[data.BreadcrumbIndex];\r\n\r\n if (record) {\r\n return record.Name();\r\n }\r\n }\r\n\r\n const nameField = data.Screen.GetControlByFieldNameOnScreenEntity('NAME', CONTROL_TYPES.Text);\r\n let nameValue: string;\r\n try {\r\n nameValue = nameField && nameField.GetValue();\r\n } catch (error) {}\r\n\r\n return nameValue || data.Screen.GetEntityNameTranslation();\r\n}\r\n\r\nfunction getRecordsBaseArray({ records, data }: { records: Record[]; data: NewValueData }) {\r\n if (data.CleanRecords) {\r\n return [];\r\n }\r\n\r\n if (data.LookForPreviousScreen) {\r\n const previousRecord = records[records.length - 2];\r\n const isPreviousRecordCorrect =\r\n previousRecord &&\r\n previousRecord.Screen &&\r\n previousRecord.Screen.GetId() === data.Screen.GetId() &&\r\n previousRecord.Screen.GetRecordId() === data.Screen.GetRecordId();\r\n\r\n return isPreviousRecordCorrect ? records.slice(0, records.length - 2) : [];\r\n }\r\n\r\n if (data.BreadcrumbIndex !== undefined) {\r\n return records.slice(0, data.BreadcrumbIndex);\r\n }\r\n\r\n return records;\r\n}\r\n\r\nexport class Breadcrumbs {\r\n private _recordsMap = ko.observable<{ [historyState: string]: Record[] }>({});\r\n private _currentHistoryState = ko.observable<string>();\r\n\r\n IsAuthenticated = ko.observable(true);\r\n\r\n private _el: HTMLElement;\r\n private _isEnabledInSettings = GlobalManager.Instance.GetGlobal(GLOBALS.SHOW_BREADCRUMBS) === '1';\r\n\r\n _isEnabled = ko.pureComputed(() => this.IsAuthenticated() && this._isEnabledInSettings);\r\n\r\n _records = ko.pureComputed(() => {\r\n const recordsMap = this._recordsMap();\r\n const currentHistoryState = this._currentHistoryState();\r\n\r\n return recordsMap[currentHistoryState] || [];\r\n });\r\n\r\n private _isScrolledToRight = true;\r\n private _field = ko.observable<FieldDataModel>(null);\r\n\r\n Render(target: string) {\r\n const container = document.getElementById(target);\r\n if (container) {\r\n ko.cleanNode(container);\r\n ko.applyBindings(this, container);\r\n }\r\n }\r\n\r\n OnItemClick(index: number, record: Record) {\r\n MenuManager.Instance.OpenBreadcrumb({ record, index });\r\n }\r\n\r\n OnScroll(context, event: Event) {\r\n if (event.currentTarget instanceof HTMLElement) {\r\n this._isScrolledToRight =\r\n event.currentTarget.scrollWidth <= event.currentTarget.scrollLeft + event.currentTarget.offsetWidth;\r\n }\r\n }\r\n\r\n GetTemplateName() {\r\n return 'MenuManager/Breadcrumbs/Templates/Breadcrumbs';\r\n }\r\n\r\n AfterRender(el: HTMLElement[]) {\r\n if (this._isEnabled()) {\r\n this._el = el[2];\r\n\r\n PubSub.subscribe(BREADCRUMBS_HYPERLINK_TOPIC, (message, data: { Screen: IScreen; Name: string }) => {\r\n const records = this._records();\r\n const selectedRecord = records[records.length - 1];\r\n\r\n if (\r\n selectedRecord &&\r\n selectedRecord.Screen &&\r\n selectedRecord.Screen.GetId() === data.Screen.GetId() &&\r\n selectedRecord.Screen.GetRecordId() === data.Screen.GetRecordId()\r\n ) {\r\n selectedRecord.Name(data.Name);\r\n\r\n this.CheckScroll();\r\n }\r\n });\r\n\r\n PubSub.subscribe(BREADCRUMBS_NEW_VALUE_TOPIC, (message, data: NewValueData) => {\r\n const recordsMap = this._recordsMap();\r\n\r\n const historyState = (History as any).getState().id;\r\n\r\n if (!recordsMap.hasOwnProperty(historyState)) {\r\n const records = this._records();\r\n\r\n const recordsBaseArray = getRecordsBaseArray({ records, data });\r\n\r\n const newRecord = data.Screen\r\n ? {\r\n Screen: data.Screen,\r\n Name: ko.observable(getScreenName({ records, data }))\r\n }\r\n : data.DailyStuff\r\n ? { Name: ko.observable(LABELS.MY_DAILY_STUFF) }\r\n : undefined;\r\n\r\n recordsMap[historyState] = newRecord ? [...recordsBaseArray, newRecord] : recordsBaseArray;\r\n this._recordsMap(recordsMap);\r\n }\r\n\r\n this._currentHistoryState(historyState);\r\n\r\n this.CheckScroll();\r\n });\r\n\r\n PubSub.subscribe(BREADCRUMBS_UPDATE_RECORD_NAME, (message, data: { Screen: IScreen; Name: string }) => {\r\n const records = this._records();\r\n const selectedRecord = records[records.length - 1];\r\n\r\n if (\r\n selectedRecord && data &&\r\n selectedRecord.Screen && data.Screen &&\r\n selectedRecord.Screen.GetEntityId() === data.Screen.GetEntityId() &&\r\n selectedRecord.Screen.GetRecordId() === data.Screen.GetRecordId()\r\n ) {\r\n selectedRecord.Name(data.Name);\r\n } \r\n });\r\n } else {\r\n this.Field = null;\r\n PubSub.subscribe(BREADCRUMBS_FIELD_RECORD, (message, data) => {\r\n const field : FieldDataModel = data.Field;\r\n this.Field = field ? data.Field : null;\r\n });\r\n }\r\n }\r\n\r\n CheckScroll() {\r\n if (this._isScrolledToRight) {\r\n this._el.scrollLeft = Number.MAX_SAFE_INTEGER; // Scroll to the right\r\n }\r\n }\r\n\r\n get FieldValue(): string {\r\n const itemTranslation: ITranslationValue = _.find(this._field().FieldValueTranslations, (item: any) => item.Selected);\r\n return itemTranslation?.Value ? itemTranslation.Value : this._field().FieldValue;\r\n }\r\n\r\n set Field(field: FieldDataModel){\r\n this._field(field);\r\n }\r\n}","// Module\nvar code = \"<!-- ko if: _isEnabled --> <div class=\\\"breadcrumbs\\\"> <!-- ko foreach: _records --> <!-- ko if: $index() !== 0 --> <i class=\\\"fa fa-chevron-right\\\"></i> <!-- /ko --> <button class=\\\"breadcrumbs__item\\\" data-bind=\\\"\\r\\n click: $parent.OnItemClick.bind($parent, $index()),\\r\\n disable: $index() === $parent._records().length - 1\\r\\n \\\"> <!-- ko with: $data.Screen --> <!-- ko with: GetScreenIcon() --> <!-- ko template: { name: GetTemplateName.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <span class=\\\"breadcrumbs__item_name\\\" data-bind=\\\"text: Name\\\"></span> </button> <!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: _isEnabled --> <!-- ko if: _field() --> <div class=\\\"breadcrumbs breadcrumbs-one-name\\\"> <span data-bind=\\\"text: FieldValue\\\"></span> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import {TableModel} from \"LookupEditor/Store/Models/TableModel\";\r\nimport * as ko from \"knockout\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Constant\";\r\nimport {Guid} from \"Core/Common/Guid\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class TreeNodeModel extends Event {\r\n Id: number;\r\n Guid: string;\r\n Name: string;\r\n Type: string;\r\n NestedNodes: KnockoutObservableArray<TreeNodeModel>;\r\n HasLookups: boolean;\r\n IsReady: KnockoutObservable<boolean>;\r\n\tIcon: IconModel;\r\n\tEntityColor: string;\r\n\tCanExpand: boolean;\r\n\r\n constructor() {\r\n super();\r\n this.Guid = Guid.NewGuid();\r\n this.NestedNodes = ko.observableArray([]);\r\n this.IsReady = ko.observable(false);\r\n }\r\n\r\n get IconClass(): string {\r\n\t\tif (this.Type === 'Entity') {\r\n\t\t\treturn this.GetEntityIcon();\r\n\t\t}\r\n\r\n\t\treturn this.GetLookupIcon();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'LookupEditor/Templates/TreeNode';\r\n }\r\n\r\n AfterRender(el) {\r\n this.IsReady();\r\n }\r\n\r\n ToJson() {\r\n var nested = this.NestedNodes().map(node => node.ToJson());\r\n return {\r\n id: this.Guid,\r\n text: this.Name,\r\n icon: this.IconClass,\r\n\t\t\tli_attr: {\r\n\t\t\t\t\"style\": `color: ${this.EntityColor || \"black\"}`\r\n\t\t\t},\r\n children: !this.CanExpand ? [] : nested.length > 0 ? nested : true\r\n }\r\n }\r\n\r\n GetNode(guid: Guid, callback: (node: TreeNodeModel) => void) {\r\n if (this.Guid === guid) {\r\n callback(this);\r\n }\r\n\r\n this.NestedNodes().forEach(node => node.GetNode(guid, callback));\r\n }\r\n\r\n\tprivate GetEntityIcon() {\r\n\t\tif (this.Icon && this.Icon.Image === null) {\r\n\t\t\treturn 'fa ' + this.Icon.Name + ' icon-lg';\r\n\t\t}\r\n\r\n\t\treturn 'fa fa-folder icon-lg icon-state-warning';\r\n\t}\r\n\r\n\tprivate GetLookupIcon() {\r\n\t\treturn 'fa fa-table icon-lg icon-state-info';\r\n\t}\r\n} ","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\nimport {TreeNodeModel} from \"LookupEditor/Models/TreeNodeModel\";\r\nimport {TableModel} from \"LookupEditor/Store/Models/TableModel\";\r\nimport {Guid} from \"Core/Common/Guid\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {TablesStore} from 'LookupEditor/Store/TablesStore';\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Constant\";\r\nimport \"jquery\";\r\nimport \"tree\";\r\n\r\nexport class TreeModel extends Event {\r\n private _$container: JQuery;\r\n Nodes: KnockoutObservableArray<TreeNodeModel>;\r\n\r\n constructor(nodes?: Array<TreeNodeModel>) {\r\n super();\r\n\r\n this.Nodes = ko.observableArray(nodes || []);\r\n\r\n\t\tthis.BindEvents();\r\n }\r\n\r\n get NodesJson() {\r\n return this.Nodes().map(node => node.ToJson());\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'LookupEditor/Templates/Tree';\r\n }\r\n\r\n AfterRender(el) {\r\n this._$container = $('#tree');\r\n this._$container\r\n .jstree({\r\n core: {\r\n animation: false,\r\n data: (expandedNode, callback) => this.UpdateTree(expandedNode, callback)\r\n }\r\n })\r\n .on('select_node.jstree ', (event, el) => {\r\n this.GetNode(el.node.id, (node: TreeNodeModel) => {\r\n this.Trigger(EVENTS.ON_TREE_NODE_SELECTED,\r\n {\r\n Node: el.node,\r\n NodeModel: node\r\n });\r\n });\r\n });\r\n }\r\n\r\n GetNode(guid: Guid, callback: (node: TreeNodeModel) => void) {\r\n this.Nodes().forEach(node => node.GetNode(guid, callback));\r\n }\r\n\r\n GetRootNode(id: number) {\r\n var rootNodes = this.Nodes().filter(node => node.Id === id);\r\n return rootNodes.length > 0 ? rootNodes[0] : null;\r\n }\r\n\r\n private BindEvents() {\r\n\t\tthis.On(EVENTS.ON_TREE_NODE_SELECTED, this, args => {\r\n var nodeModel = args.data.NodeModel;\r\n\t\t\tif (nodeModel.Type === 'Entity' || nodeModel.Type === 'Sub' || nodeModel.Type === 'Link') {\r\n this._$container.jstree(true).close_all();\r\n var rootNodeModel = this.GetRootNode(nodeModel.Id);\r\n if (rootNodeModel == null) {\r\n this.AddRootNode(nodeModel);\r\n } else {\r\n this._$container.jstree(true).open_node(rootNodeModel.Guid);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private UpdateTree(parentNode, callback) {\r\n if (parentNode.id === '#') {\r\n callback.call(parentNode, this.NodesJson);\r\n }\r\n else {\r\n this.LoadChildrenFor(parentNode, callback);\r\n }\r\n }\r\n\r\n private LoadChildrenFor(parentNode, callback) {\r\n this.GetNode(parentNode.id, (parentModel: TreeNodeModel) => {\r\n\t\t\tBlockUI.Block();\r\n\t\t\tconst isRoot = parentNode.parent === '#';\r\n\r\n TablesStore.GetRelatedTables(parentModel.Id, parentModel.Type, isRoot)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.then(nodes => this.AddNewNodes(parentNode, parentModel, nodes, callback));\r\n });\r\n }\r\n\r\n\tprivate AddNewNodes(parentNode: any, parentModel: TreeNodeModel, nodes: Array<TableModel>, callback) {\r\n var models = nodes.map(node => {\r\n var model = new TreeNodeModel();\r\n model.Id = node.Id;\r\n model.Name = node.TranslatedName || node.Name;\r\n model.Type = node.Type;\r\n\t\t\tmodel.Icon = node.Icon;\r\n\t\t\tmodel.EntityColor = node.EntityColor;\r\n\t model.CanExpand = parentNode.parents.length < 2;\r\n\t\t\tmodel.HasLookups = node.HasLookups;\r\n return model;\r\n });\r\n\r\n models.forEach(node => parentModel.NestedNodes.push(node));\r\n callback.call(parentNode, models.map(node => node.ToJson()));\r\n }\r\n\r\n private AddRootNode(node: TreeNodeModel) {\r\n var newNode = new TreeNodeModel();\r\n\r\n newNode.Id = node.Id;\r\n newNode.Name = node.Name;\r\n newNode.Type = node.Type;\r\n\t\tnewNode.Icon = node.Icon;\r\n\t\tnewNode.EntityColor = node.EntityColor;\r\n\t\tnewNode.HasLookups = node.HasLookups;\r\n\t\tnewNode.CanExpand = node.HasLookups;\r\n\r\n this.Nodes.push(newNode);\r\n\r\n var treeRoot = this._$container.jstree(true).get_node('#');\r\n this._$container.jstree('create_node', treeRoot, newNode.ToJson(), \"first\", false, false);\r\n this._$container.jstree(true).refresh();\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport \"jquery\";\r\nimport \"xEditable\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport {IValueUpdater} from \"LookupEditor/Interfaces/IValueUpdater\";\r\nimport {IColumnValue} from \"LookupEditor/Interfaces/IColumnValue\";\r\nimport { EditableColumnModel } from \"LookupEditor/Models/EditableColumnModel\";\r\n\r\nimport CommonTemplate from \"LookupEditor/Templates/Columns/Common.html\";\r\nko.templates[\"LookupEditor/Templates/Columns/Common\"] = CommonTemplate;\r\n\r\n\r\nexport abstract class ColumnEditor extends Event {\r\n\tprotected template: string;\r\n protected emptyLookupValue: string = '-';\r\n\r\n constructor(protected column: EditableColumnModel) {\r\n\t\tsuper();\r\n\t\tthis.template = '';\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'LookupEditor/Templates/Columns/Common';\r\n\t}\r\n\r\n\tAfterRender(el, owner: IValueUpdater, columnName, format): void {\r\n\t\t($.fn.editable as any).defaults.mode = 'inline';\r\n\t\t$(el).editable({\r\n\t\t\ttype: 'text',\r\n\t\t\tsuccess: (response, newValue) => {\r\n\t\t\t\tconst value: IColumnValue = {\r\n\t\t\t\t\tName: columnName,\r\n\t\t\t\t\tValue: newValue\r\n\t\t\t\t};\r\n\r\n\t\t\t\towner.UpdateValue(value);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tabstract ToString();\r\n}\r\n","// Module\nvar code = \"<a data-bind=\\\"text: $parent.GetValue(Name)\\\" href=\\\"#\\\" data-type=\\\"text\\\"></a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"#\\\"></a>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as moment from \"moment\";\r\nimport \"BootstrapDateTimeExtension\";\r\n\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\nimport {IValueUpdater} from \"LookupEditor/Interfaces/IValueUpdater\";\r\nimport {IColumnValue} from \"LookupEditor/Interfaces/IColumnValue\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\nimport ColumnTemplate from \"LookupEditor/Templates/Columns/DateTime.html\";\r\nko.templates[\"LookupEditor/Templates/Columns/DateTime\"] = ColumnTemplate;\r\n\r\nexport class DateColumnEditor extends ColumnEditor {\r\n Show(): void { }\r\n\r\n GetTemplateName(): string {\r\n return 'LookupEditor/Templates/Columns/DateTime';\r\n }\r\n\r\n AfterRender(el, owner: IValueUpdater, columnName): void {\r\n const format = FormatConverter.GetDateFormatFromFieldModel(owner.GetColumnData(columnName));\r\n\r\n const value = owner.GetValue(columnName);\r\n\r\n ($.fn.editable as any).defaults.mode = 'inline';\r\n $(el).editable({\r\n type: 'dateTimePickerBootstrap',\r\n value: {\r\n current: value\r\n },\r\n dateTimePickerBootstrap: {\r\n locale: moment.locale(),\r\n format,\r\n widgetPositioning: {\r\n horizontal: 'right',\r\n vertical: 'bottom',\r\n forceParse: false\r\n }\r\n },\r\n success: (response, newValue) => {\r\n const value: IColumnValue = {\r\n Name: columnName,\r\n Value: newValue.current\r\n };\r\n owner.UpdateValue(value);\r\n }\r\n });\r\n\r\n if (value) {\r\n el[0].textContent = moment(value).format(format);\r\n }\r\n }\r\n\r\n ToString() {\r\n return \"Date\";\r\n }\r\n} ","import * as ko from \"knockout\";\r\nimport * as moment from \"moment\";\r\nimport \"BootstrapDateTimeExtension\";\r\n\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\nimport {IValueUpdater} from \"LookupEditor/Interfaces/IValueUpdater\";\r\nimport {IColumnValue} from \"LookupEditor/Interfaces/IColumnValue\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\nimport ColumnTemplate from \"LookupEditor/Templates/Columns/DateTime.html\";\r\nko.templates[\"LookupEditor/Templates/Columns/DateTime\"] = ColumnTemplate;\r\n\r\nexport class DateTimeColumnEditor extends ColumnEditor {\r\n Show(): void {}\r\n\r\n GetTemplateName(): string {\r\n return 'LookupEditor/Templates/Columns/DateTime';\r\n }\r\n\r\n AfterRender(el, owner: IValueUpdater, columnName): void {\r\n const format = FormatConverter.GetDateFormatFromFieldModel(owner.GetColumnData(columnName));\r\n\r\n const value = owner.GetValue(columnName);\r\n\r\n ($.fn.editable as any).defaults.mode = 'inline';\r\n $(el).editable({\r\n type: 'dateTimePickerBootstrap',\r\n value: {\r\n current: value\r\n },\r\n dateTimePickerBootstrap: {\r\n locale: moment.locale(),\r\n format,\r\n widgetPositioning: {\r\n horizontal: 'right',\r\n vertical: 'bottom',\r\n forceParse: false\r\n }\r\n },\r\n success: (response, newValue) => {\r\n const value: IColumnValue = {\r\n Name: columnName,\r\n Value: newValue.current\r\n };\r\n owner.UpdateValue(value);\r\n }\r\n });\r\n\r\n if (value) {\r\n el[0].textContent = moment(value).format(format);\r\n }\r\n }\r\n\r\n\tToString() {\r\n\t\treturn \"DateTime\";\r\n\t}\r\n} ","import {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nexport class BinaryColumnEditor extends ColumnEditor {\r\n\tShow(): void {}\r\n\r\n\tToString() {\r\n\t\treturn \"Binary\";\r\n\t}\r\n}","// Module\nvar code = \"<a data-bind=\\\"text: $parent.GetValue(Name)\\\" href=\\\"#\\\"></a>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as moment from \"moment\";\r\nimport \"BootstrapTimeExtension\";\r\n\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\nimport {IValueUpdater} from \"LookupEditor/Interfaces/IValueUpdater\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {IColumnValue} from \"LookupEditor/Interfaces/IColumnValue\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\nimport ColumnTemplate from \"LookupEditor/Templates/Columns/Time.html\";\r\nko.templates[\"LookupEditor/Templates/Columns/Time\"] = ColumnTemplate;\r\n\r\nexport class TimeColumnEditor extends ColumnEditor {\r\n format:string = DATE_FORMATS.TIME.Format;\r\n\r\n Show(): void { }\r\n\r\n GetTemplateName(): string {\r\n return 'LookupEditor/Templates/Columns/Time';\r\n }\r\n\r\n AfterRender(el, owner: IValueUpdater, columnName): void {\r\n ($.fn.editable as any).defaults.mode = 'inline';\r\n $(el).editable({\r\n type: 'timePickerBootstrap',\r\n value: {\r\n \tdefault: '',\r\n current: owner.GetValue(columnName) ? moment(FormatConverter.CorrectTimezone(owner.GetValue(columnName))).format(this.format) : ''\r\n },\r\n timePickerBootstrap: {\r\n locale: moment.locale(),\r\n format: this.format,\r\n widgetPositioning: {\r\n horizontal: 'right',\r\n vertical: 'bottom',\r\n forceParse: false\r\n }\r\n },\r\n success: (response, newValue) => {\r\n const value: IColumnValue = {\r\n Name: columnName,\r\n Value: FormatConverter.ConvertToUTC(newValue.current, this.format)\r\n };\r\n owner.UpdateValue(value);\r\n }\r\n });\r\n }\r\n\r\n ToString() {\r\n return \"Time\";\r\n }\r\n} ","import * as ko from \"knockout\";\r\nimport * as moment from \"moment\";\r\nimport \"BootstrapTimeExtension\";\r\n\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\nimport {IValueUpdater} from \"LookupEditor/Interfaces/IValueUpdater\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {IColumnValue} from \"LookupEditor/Interfaces/IColumnValue\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\nimport ColumnTemplate from \"LookupEditor/Templates/Columns/Time.html\";\r\nko.templates[\"LookupEditor/Templates/Columns/Time\"] = ColumnTemplate;\r\n\r\nexport class TimeSpanColumnEditor extends ColumnEditor {\r\n format:string = DATE_FORMATS.TIME_SPAN.Format;\r\n\r\n Show(): void { }\r\n\r\n GetTemplateName(): string {\r\n return 'LookupEditor/Templates/Columns/Time';\r\n }\r\n\r\n AfterRender(el, owner: IValueUpdater, columnName): void {\r\n ($.fn.editable as any).defaults.mode = 'inline';\r\n $(el).editable({\r\n type: 'timePickerBootstrap',\r\n value: {\r\n \tdefault: '',\r\n current: owner.GetValue(columnName) ? owner.GetValue(columnName) : ''\r\n },\r\n timePickerBootstrap: {\r\n locale: moment.locale(),\r\n format: this.format,\r\n widgetPositioning: {\r\n horizontal: 'right',\r\n vertical: 'bottom',\r\n forceParse: false\r\n }\r\n },\r\n success: (response, newValue) => {\r\n const value: IColumnValue = {\r\n Name: columnName,\r\n Value: newValue.current\r\n };\r\n owner.UpdateValue(value);\r\n }\r\n });\r\n }\r\n\r\n ToString() {\r\n return \"TimeSpan\";\r\n }\r\n} ","import {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nexport class GuidColumnEditor extends ColumnEditor {\r\n\tShow(): void {}\r\n\r\n\tToString() {\r\n\t\treturn \"Guid\";\r\n\t}\r\n} ","import {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nexport class CurrencyColumnEditor extends ColumnEditor{\r\n\tShow(): void {}\r\n\r\n\tToString() {\r\n\t\treturn \"Currency\";\r\n\t}\r\n} ","import {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nexport class DocumentColumnEditor extends ColumnEditor {\r\n\tShow(): void {}\r\n\r\n\tToString() {\r\n\t\treturn \"LookupEditor/Templates/Columns/Document\";\r\n\t}\r\n} ","import {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nexport class FlagCheckColumnEditor extends ColumnEditor {\r\n\tShow(): void {}\r\n\r\n\tToString() {\r\n\t\treturn \"FlagCheck\";\r\n\t}\r\n} ","import * as ko from 'knockout';\r\n\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nimport ImageTemplate from \"LookupEditor/Templates/Columns/Image.html\";\r\nimport {IValueUpdater} from \"../../Interfaces/IValueUpdater\";\r\n\r\nko.templates[\"LookupEditor/Templates/Columns/Image\"] = ImageTemplate;\r\n\r\n\r\nexport class ImageColumnEditor extends ColumnEditor {\r\n\tShow(): void {\r\n\t}\r\n\r\n\tAfterRender(el, owner: IValueUpdater, columnName): void {\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"LookupEditor/Templates/Columns/Image\";\r\n\t}\r\n\r\n\tToString() {\r\n\t\treturn \"Image\";\r\n\t}\r\n} ","// Module\nvar code = \"<img data-bind=\\\"attr: { src: $parent.GetValue(Name) }\\\" class=\\\"image-centered main-img img-cyber-grid\\\" alt=\\\"\\\">\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport \"jquery\";\r\nimport \"xEditable\";\r\nimport \"TouchSpinExtension\";\r\n\r\nimport {IValueUpdater} from \"LookupEditor/Interfaces/IValueUpdater\";\r\nimport {IColumnValue} from \"LookupEditor/Interfaces/IColumnValue\";\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nimport ColumnTemplate from \"LookupEditor/Templates/Columns/Integer.html\";\r\nimport debug = log4javascript.logLog.debug;\r\nko.templates[\"LookupEditor/Templates/Columns/Integer\"] = ColumnTemplate;\r\n\r\nexport class IntegerColumnEditor extends ColumnEditor {\r\n\tGetTemplateName(): string {\r\n\t\treturn 'LookupEditor/Templates/Columns/Integer';\r\n\t}\r\n\r\n\tAfterRender(el, owner: IValueUpdater, columnName): void {\r\n\t\t($.fn.editable as any).defaults.mode = 'inline';\r\n\t\t$(el).editable({\r\n\t\t\ttype: 'touchSpin',\r\n\t\t\tvalue: {\r\n\t\t\t\tdefault: 0,\r\n\t\t\t\tcurrent: $(el).text()\r\n\t\t\t},\r\n\t\t\tsuccess: (response, newValue) => {\r\n\t\t\t\tvar value: IColumnValue = {\r\n\t\t\t\t\tName: columnName,\r\n\t\t\t\t\tValue: newValue.current\r\n\t\t\t\t};\r\n\t\t\t\towner.UpdateValue(value);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tToString() {\r\n\t\treturn \"Integer\";\r\n\t}\r\n}","// Module\nvar code = \"<a data-bind=\\\"text: $parent.GetValue(Name)\\\" href=\\\"#\\\"></a>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nimport PKeyTemplate from \"LookupEditor/Templates/Columns/PKey.html\";\r\nko.templates[\"LookupEditor/Templates/Columns/PKey\"] = PKeyTemplate;\r\n\r\nexport class PKeyColumnEditor extends ColumnEditor {\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'LookupEditor/Templates/Columns/PKey';\r\n\t}\r\n\r\n\tAfterRender(el): void { }\r\n\r\n\tToString() {\r\n\t\treturn \"Primary key\";\r\n\t}\r\n} ","// Module\nvar code = \"<label data-bind=\\\"text: $parent.GetValue(Name)\\\"></label>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport { Notifier } from \"Core/Common/Notifier\";\r\nimport { NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport { GlobalManager, GLOBALS } from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport { SearchScreen, ISelectedRecord } from \"Core/Screens/SearchScreen/SearchScreen\";\r\n\r\nimport { ColumnEditor } from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\nimport { IValueUpdater } from \"LookupEditor/Interfaces/IValueUpdater\";\r\n\r\nimport { LookupEditorStore } from \"LookupEditor/Store/LookupEditorStore\";\r\n\r\nimport Template from \"LookupEditor/Templates/Columns/MultiSelect.html\";\r\nimport { EditableColumnModel } from \"LookupEditor/Models/EditableColumnModel\";\r\nimport { UserVarsManager } from \"Core/UserVarsManager/UserVarsManager\";\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\nimport { ItemModel } from \"Core/Controls/MultiSelect/Models/MultiSelectListModel\";\r\n\r\nimport { RecordDataModel, FieldDataModel } from \"Core/Screens/Models/RecordDataModel\";\r\n\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { FIELD_TYPES } from \"Core/Constant\";\r\nimport { FormatConverter } from \"FormatEditor/FormatConverter\";\r\nimport { FieldFormat } from \"Core/Common/FieldFormat\";\r\n\r\nko.templates[\"LookupEditor/Templates/Columns/MultiSelect\"] = Template;\r\n\r\ninterface IDropdownOption {\r\n\tDisplayValue: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class MultiSelectColumnEditor extends ColumnEditor {\r\n\tprivate _columnName: string;\r\n\tprivate _owner: IValueUpdater;\r\n\tprivate _optionsLoaded: KnockoutObservable<boolean>;\r\n\tprivate _editModeEnabled: KnockoutObservable<boolean>;\r\n\tprivate _availableOptions: KnockoutObservableArray<IDropdownOption>;\r\n\tprivate CurrentItems: KnockoutObservableArray<ItemModel>;\r\n\tprivate _currentOwner: KnockoutObservable<IValueUpdater>;\r\n\tprivate _changesMade: KnockoutComputed<boolean>;\r\n\tprivate _showSearchScreen: KnockoutObservable<boolean>;\r\n\tprivate DisplayedItems: KnockoutComputed<Array<ItemModel>>;\r\n\tprivate SelectedOption: KnockoutObservable<IDropdownOption>;\r\n\r\n\tconstructor(column: EditableColumnModel) {\r\n\t\tsuper(column);\r\n\t\tthis._columnName = column.Name;\r\n\t\tthis._currentOwner = ko.observable(null);\r\n\t\tthis._optionsLoaded = ko.observable(false);\r\n\t\tthis._editModeEnabled = ko.computed(() => this._optionsLoaded() && this._currentOwner() !== null, this);\r\n\t\tthis._availableOptions = ko.observableArray([]);\r\n\t\tthis.CurrentItems = ko.observableArray([]);\r\n\r\n\t\tthis.DisplayedItems = ko.computed(() => this.CurrentOptions().filter(item => item.Label != LABELS.EMPTY), this);\r\n\t\tthis._changesMade = ko.computed(() => this.CurrentOwner()!= null && _.difference(this.CurrentItems(), this.SelectedOptions(this.CurrentOwner().GetValue(this._columnName))).length > 0, this);\r\n\t\tthis._showSearchScreen = ko.observable(false);\r\n\r\n\t\tthis.On(\"REQUEST_FAILED\", this, eventArgs => new Notifier().Failed(eventArgs.data.message));\r\n\t}\r\n\r\n\tShow(): void {\r\n\t}\r\n\r\n\tClick(owner: IValueUpdater, el: HTMLElement) {\r\n\t\tthis.DisableEditMode();\r\n\t\tthis._currentOwner(owner);\r\n\t\tLookupEditorStore.GetLookupRecordsCount(this.column.Id)\r\n\t\t\t.then(recordsCount => this.ShowOptions(recordsCount, owner, el))\r\n\t\t\t.fail(error => this.Trigger(\"REQUEST_FAILED\", error));\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"LookupEditor/Templates/Columns/MultiSelect\";\r\n\t}\r\n\r\n\tAfterRender(el, owner: IValueUpdater, columnName): void {\r\n\t\tthis._currentOwner(owner);\r\n\t\tthis._columnName = columnName;\r\n\t\tthis._owner = owner;\r\n\t}\r\n\r\n\tToString() {\r\n\t\treturn \"MultiSelect\";\r\n\t}\r\n\r\n\tget EditModeEnabled() {\r\n\t\treturn this._editModeEnabled;\r\n\t}\r\n\r\n\tprivate SelectedOptions(columnData: any) {\r\n\t\tlet selected = new Array<ItemModel>();\r\n\r\n\t\tif (columnData === LABELS.EMPTY) {\r\n\t\t\tconst item = new ItemModel();\r\n\t\t\titem.Label = LABELS.EMPTY;\r\n\t\t\tselected.push(item);\r\n\t\t} else {\r\n\t\t\tconst values = columnData.FieldValue.split(\";\").filter(x => x);\r\n\t\t\tconst labels = columnData.DisplayValue\r\n\t\t\t\t? columnData.DisplayValue.split(\";\").filter(x => x)\r\n\t\t\t\t: columnData.FieldValue.split(\";\").filter(x => x);\r\n\t\t\tfor (let i = 0; i < values.length; i++) {\r\n\t\t\t\tconst item = new ItemModel();\r\n\t\t\t\titem.RecordId = parseInt(values[i]);\r\n\t\t\t\titem.Label = this.FormatLabel(labels[i]);\r\n\t\t\t\tselected.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn selected;\r\n\t}\r\n\r\n\tget DisplayedOptions() {\r\n\t\treturn this.DisplayedItems;\r\n\t}\r\n\tget CurrentOptions() {\r\n\t\treturn this.CurrentItems;\r\n\t}\r\n\r\n\tget AvailableOptions() {\r\n\t\treturn this._availableOptions;\r\n\t}\r\n\r\n\tget CurrentOwner() {\r\n\t\treturn this._currentOwner;\r\n\t}\r\n\r\n\tFormatLabel(value: string) {\r\n\t\tif (!value) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tconst columnData = this._owner && this._owner.GetColumnData(this._columnName);\r\n\r\n\t\tif (columnData && _.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], columnData.ValFieldTypeName)) {\r\n\t\t\treturn FormatConverter.LocalizeDecimalOrInteger(\r\n\t\t\t\tcolumnData.ValFieldFormatName === FieldFormat.PERCENTAGE\r\n\t\t\t\t\t? (Number(value.replace(/[.,]/g, '.')) * 100).toFixed(\r\n\t\t\t\t\t\t\tcolumnData.ValFieldSize < 2 ? 0 : columnData.ValFieldSize - 2\r\n\t\t\t\t\t )\r\n\t\t\t\t\t: value\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tprivate ShowOptions(recordsCount: number, owner: IValueUpdater, el: HTMLElement) {\r\n\t\tlet searchScreenIfNumber = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n\r\n\t\tthis.CurrentItems([...this.SelectedOptions(owner.GetValue(this._columnName))]);\r\n\r\n\t\tthis.EnableEditMode();\r\n\r\n\t\tif (recordsCount >= searchScreenIfNumber) {\r\n\t\t\tthis._showSearchScreen(true);\r\n\t\t} else {\r\n\t\t\tthis._showSearchScreen(false);\r\n\t\t\tthis.ShowDropdown(owner, el);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ShowSearchScreen(owner: IValueUpdater, el: HTMLElement) {\r\n let searchScreen = new SearchScreen({\r\n EntityId: this.column.ValTableId,\r\n SearchTerm: '',\r\n MultiSelectMode: true,\r\n SelectedRecordIds: _.map(this.CurrentItems(), (item: ItemModel) => item.RecordId)\r\n });\r\n\r\n\t\tsearchScreen.On(\"RECORD_SELECTED\", this, eventArgs => this.UpdateValue(eventArgs.data, owner, el));\r\n searchScreen.On(\"RECORDS_SELECTED\", this, eventArgs => this.UpdateValues(eventArgs.data.Ids));\r\n\r\n searchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n\t\t\tconst data = eventArgs.data;\r\n\t\t\tUserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\t\t\tdata.IsOpenInModal = false;\r\n\t\t\tPubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n\t\t});\r\n\r\n\t\tsearchScreen.Show();\r\n\t}\r\n\r\n\tprivate ShowDropdown(owner: IValueUpdater, el: HTMLElement) {\r\n\t\tthis.GetRecords()\r\n\t\t\t.then(records => {\r\n\t\t\t\tthis._availableOptions([{Value: \"0\", DisplayValue: `${LABELS.SELECT_LABEL}...`}].concat(this.GetOptions(records)));\r\n\t\t\t}).fail(error => new Notifier().Failed(error.message));\r\n\t}\r\n\r\n\tprivate UpdateValue(record: any, owner: IValueUpdater, el: HTMLElement) {\r\n\t\tthis.GetRecord(record.RecordId)\r\n\t\t\t.then(recordData => {\r\n\t\t\t\tconst displayField = _.find(recordData.Fields, (field: any) => field.FieldId === this.column.ValFieldId);\r\n\t\t\t\tconst displayValue = displayField.FieldValue;\r\n\r\n\t\t\t\tthis.UpdateSelectedItems(parseInt(record.RecordId), displayValue);\r\n\r\n\t\t\t}).fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n\tprivate UpdateValues(recordIds: number[]) {\r\n\t\tif (!_.any(recordIds)) {\r\n\t\t\tthis.CurrentItems([]);\r\n\t\t}\r\n\r\n this.GetRecordsByIds(recordIds)\r\n\t\t\t.then(recordsData => {\r\n\t\t\t\tlet selectedItems = _.map(recordsData, (recordData: any) => {\r\n\t\t\t\t\tconst item = new ItemModel();\r\n\t\t\t\t\titem.IsSelected(true);\r\n\r\n\t\t\t\t\tconst displayField = _.find(recordData.Fields,\r\n\t\t\t\t\t\t(field: any) => field.FieldId === this.column.ValFieldId);\r\n\t\t\t\t\titem.Label = displayField.FieldValue;\r\n\r\n\t\t\t\t\tconst pkField = _.find(recordData.Fields,\r\n\t\t\t\t\t\t(field: any) => field.FieldId === recordData.TableStruct.PkId);\r\n\t\t\t\t\titem.RecordId = parseInt(pkField.FieldValue);\r\n\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tselectedItems = _.filter(selectedItems, item => item.RecordId && item.RecordId !== 0);\r\n\t\t\t\tif (_.any(selectedItems)) {\r\n\t\t\t\t\tthis.CurrentItems(selectedItems);\r\n\t\t\t\t}\r\n\t\t\t}).fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n\tprivate UpdateSelectedItems(value: number, displayValue: string) {\r\n\t\tif (value != 0 && this.CurrentOptions().find(item => item.RecordId == value) == null) {\r\n\t\t\tconst item = new ItemModel();\r\n\t\t\titem.RecordId = value;\r\n\t\t\titem.Label = displayValue;\r\n\t\t\tthis.CurrentItems.push(item);\r\n\t\t}\r\n }\r\n\r\n\tprivate GetRecord(recordId: number) {\r\n\t\treturn LookupEditorStore.GetRecord(this.column.ValTableId, recordId);\r\n\t}\r\n\r\n\tprivate GetRecords() {\r\n\t\treturn LookupEditorStore.GetRecords(this.column.ValTableId);\r\n }\r\n\r\n private GetRecordsByIds(recordsIds: number[]) {\r\n return LookupEditorStore.GetRecordsByIds(this.column.ValTableId, recordsIds);\r\n }\r\n\r\n\tprivate GetOptions(records: Array<RecordDataModel>): Array<IDropdownOption> {\r\n\t\tif (!records || records.length === 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\treturn records.map(record => {\r\n\t\t\tconst valueField = _.find(record.Fields, (field: any) => field.IsPrimaryKey);\r\n\t\t\tconst displayField = _.find(record.Fields, (field: any) => field.FieldId === this.column.ValFieldId);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tValue: valueField ? valueField.FieldValue : null,\r\n\t\t\t\tDisplayValue: displayField.FieldValue\r\n\t\t\t\t\t? this.FormatLabel(displayField.FieldValue)\r\n\t\t\t\t\t: this.emptyLookupValue\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tprivate UpdateOwnerValue(owner: IValueUpdater) {\r\n\r\n\t\tlet selected = this.CurrentOptions().filter(item => item.Label != LABELS.EMPTY);\r\n\r\n\t\tconst groupSeparatorRegExp = new RegExp(`[${FormatConverter.GetGroupSeparator()}]`, 'g');\r\n\t\tconst decimalSeparatorRegExp = new RegExp(`[${FormatConverter.GetSeparator()}]`, 'g');\r\n\r\n\t\tconst value = selected.map(a => a.RecordId).join(';');\r\n\t\tconst displayValue = selected\r\n\t\t\t.map(a => a.Label.replace(groupSeparatorRegExp, '').replace(decimalSeparatorRegExp, '.'))\r\n\t\t\t.join(';');\r\n\r\n\t\towner.UpdateValue({\r\n\t\t\tName: this._columnName,\r\n\t\t\tValue: value,\r\n\t\t\tDisplayValue: displayValue\r\n\t\t});\r\n\r\n\t\tthis.DisableEditMode();\r\n\t}\r\n\r\n\tprivate AddItem(owner: IValueUpdater) {\r\n\t\tthis.UpdateSelectedItems(parseInt(this.SelectedOption.Value), this.SelectedOption.DisplayValue);\r\n }\r\n\r\n\tprivate EnableEditMode() {\r\n\t\tthis._optionsLoaded(true);\r\n\t}\r\n\r\n\tAccept(owner: IValueUpdater) {\r\n\t\tif (this._changesMade) {\r\n\t\t\tthis.UpdateOwnerValue(owner);\r\n\t\t} else {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.SELECT_ANY_OPTION);\r\n\t\t}\r\n\t}\r\n\r\n\tRemoveItem(item: ItemModel) {\r\n\t\tthis.CurrentItems(this.CurrentOptions().filter(record => record.RecordId != item.RecordId));\r\n\t}\r\n\r\n\tprivate DisableEditMode() {\r\n\t\tthis._optionsLoaded(false);\r\n\t\tthis._currentOwner(null);\r\n\t}\r\n}\r\n","// Module\nvar code = \"<!-- ko if: (!_columnEditor.EditModeEnabled() || _columnEditor.CurrentOwner() !== $parent) --> <div data-bind=\\\"click: _columnEditor.Click.bind(_columnEditor, $parent, $element)\\\"> <div class=\\\"multi-options-list textarea-control\\\"> <!--ko foreach: _columnEditor.SelectedOptions($parent.GetValue(Name)) --> <span data-bind=\\\"text: Label\\\" class=\\\"multi-option-item\\\"></span> <!--/ko--> </div> </div> <!-- /ko --> <!-- ko if: (_columnEditor.EditModeEnabled() && _columnEditor.CurrentOwner() === $parent)--> <div class=\\\"lookup-column-editor multiSelect-actionsBox\\\"> <div class=\\\"editable-buttons inline-block\\\"> <div class=\\\"left\\\"> <!-- ko ifnot: _columnEditor._showSearchScreen --> <div class=\\\"inline-block options-select-box\\\"> <select data-bind=\\\"options: _columnEditor.AvailableOptions, value: _columnEditor.SelectedOption, optionsText: 'DisplayValue', event: {change: _columnEditor.AddItem.bind(_columnEditor, $parent)}\\\" class=\\\"input-sm form-control options-select\\\"> </select> </div> <!-- /ko --> <!-- ko if: _columnEditor._showSearchScreen --> <span class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\" data-bind=\\\"click: _columnEditor.ShowSearchScreen.bind(_columnEditor, $parent)\\\"></span> <!-- /ko --> </div> <div class=\\\"right\\\"> <button data-bind=\\\"click: _columnEditor.Accept.bind(_columnEditor, $parent, $element)\\\" class=\\\"btn btn-primary btn-sm\\\" type=\\\"button\\\"> <i class=\\\"glyphicon glyphicon-ok\\\"></i> </button> <button data-bind=\\\"click: _columnEditor.DisableEditMode.bind(_columnEditor)\\\" type=\\\"button\\\" class=\\\"btn btn-default btn-sm\\\"> <i class=\\\"glyphicon glyphicon-remove\\\"></i> </button> </div> </div> </div> <div class=\\\"lookup-column-editor multiSelect-optionsContainer\\\"> <div class=\\\"multi-options-list textarea-control\\\"> <!-- ko foreach: _columnEditor.DisplayedOptions --> <span class=\\\"multi-option-item\\\"> <a data-bind=\\\"click: $parent._columnEditor.RemoveItem.bind($parent._columnEditor, $data), preventBubble: ['click']\\\" href=\\\"javascript:;\\\">x</a> <span class=\\\"labelText\\\"><!--ko text: Label --><!-- /ko --></span> </span> <!-- /ko --> </div> </div> <!-- /ko --> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { ColumnEditor } from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\nimport { EditableColumnModel } from \"LookupEditor/Models/EditableColumnModel\";\r\nimport { ColorSelector as Component } from 'Core/Components/ColorSelector/ColorSelector';\r\n\r\nimport ColorTemplate from \"LookupEditor/Templates/Columns/Color.html\";\r\nimport {IValueUpdater} from \"../../Interfaces/IValueUpdater\";\r\nimport { IColumnValue } from \"../../Interfaces/IColumnValue\";\r\nimport { ColorDescription } from \"../../../Core/Components/ColorSelector/ColorDescription\";\r\n\r\nko.templates[\"LookupEditor/Templates/Columns/Color\"] = ColorTemplate;\r\n\r\nexport class ColorColumnEditor extends ColumnEditor {\r\n\tprivate _columnName: string;\r\n\tprivate _editModeEnabled: KnockoutObservable<boolean>;\r\n\tprivate _currentOwner: KnockoutObservable<IValueUpdater>;\r\n\tprivate _component: Component;\r\n\tprivate _value: KnockoutObservable<string>;\r\n\r\n\tconstructor(column: EditableColumnModel) {\r\n\t\tsuper(column);\r\n\t\tthis._columnName = column.Name;\r\n\t\tthis._currentOwner = ko.observable(null);\r\n\t\tthis._editModeEnabled = ko.computed(() => this._currentOwner() !== null, this);\r\n\t\tthis._value = ko.observable(null);\r\n\t}\r\n\r\n\tShow(): void {\r\n\t}\r\n\r\n\tClick(owner: IValueUpdater, el: HTMLElement) {\r\n\t\tconst value = owner.GetValue(this._columnName);\r\n\t\tthis._value(value);\r\n\t\tthis._component = new Component({\r\n\t\t\tLabel: \"\",\r\n\t\t\tInitialColor: value\r\n\t\t});\r\n\t\tthis._currentOwner(owner);\r\n\t}\r\n\r\n\tAfterRender(el, owner: IValueUpdater, columnName, format): void {\r\n\t\tthis._columnName = columnName;\r\n\t\tconst value = owner.GetValue(this._columnName);\r\n\t\tthis._component = new Component({\r\n\t\t\tLabel: \"\",\r\n\t\t\tInitialColor: value\r\n\t\t});\r\n\t}\r\n\r\n\tget CurrentOwner() {\r\n\t\treturn this._currentOwner;\r\n\t}\r\n\r\n\tget EditModeEnabled() {\r\n\t\treturn this._editModeEnabled;\r\n\t}\r\n\r\n\tget Value() {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\tget Component() {\r\n\t\treturn this._component;\r\n\t}\r\n\r\n\tSaveChanges() {\r\n\t\tthis._currentOwner().UpdateValue({\r\n\t\t\tName: this.column.Name,\r\n\t\t\tValue: this._component.SelectedColorName\r\n\t\t});\r\n\r\n\t\tthis._currentOwner(null);\r\n\t}\r\n\r\n\tCancelChanges() {\r\n\t\tthis._currentOwner(null);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"LookupEditor/Templates/Columns/Color\";\r\n\t}\r\n\r\n\tToString() {\r\n\t\treturn \"Color\";\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko if: (!_columnEditor.EditModeEnabled() || _columnEditor.CurrentOwner() !== $parent) --> <div class=\\\"lookupColorBox\\\" data-bind=\\\"style: {backgroundColor: $parent.GetHexValue(Name)}, click: _columnEditor.Click.bind(_columnEditor, $parent, $element)\\\"> <a data-bind=\\\"text: $parent.GetValue(Name) ? $parent.GetValue(Name) : 'Null'\\\" href=\\\"#\\\" data-type=\\\"text\\\"></a> </div> <!-- /ko --> <!-- ko if: (_columnEditor.EditModeEnabled() && _columnEditor.CurrentOwner() === $parent)--> <div class=\\\"column-editor\\\"> <div data-control-type=\\\"colorselector-control\\\" class=\\\"inline-block text-block\\\" data-bind=\\\"textInput: _columnEditor.Value\\\"> <!-- ko with: _columnEditor.Component --> <!-- ko template: {html: $data.GetColumnTemplate.bind($data)} --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"editable-buttons inline-block\\\"> <button class=\\\"save-btn btn btn-primary btn-sm\\\" type=\\\"button\\\" data-bind=\\\"click: _columnEditor.SaveChanges.bind(_columnEditor)\\\"> <i class=\\\"glyphicon glyphicon-ok\\\"></i> </button> <button class=\\\"cancel-btn btn btn-default btn-sm\\\" data-bind=\\\"click: _columnEditor.CancelChanges.bind(_columnEditor)\\\"> <i class=\\\"glyphicon glyphicon-remove\\\"></i> </button> </div> </div> <!-- /ko --> \";\n// Exports\nexport default code;","export class Convert {\r\n\tstatic ToBase64Image(binaryData: string): string {\r\n\t\tif (binaryData != null) {\r\n\t\t\tconst base64 = this.ToBase64(binaryData);\r\n\t\t\treturn `data:image/jpeg;base64,${base64}`;\r\n\t\t}\r\n\r\n\t\treturn ``;\r\n\t}\r\n\r\n\tstatic ToBase64(binaryData: string): string {\r\n\t\tconst data = binaryData.replace(\"0x\", \"\");\r\n\r\n\t\treturn btoa(\r\n\t\t\tString.fromCharCode.apply(null,\r\n\t\t\t\tdata\r\n\t\t\t\t\t.replace(/[\\r\\n]/g, \"\")\r\n\t\t\t\t\t.replace(/([\\da-fA-F]{2}) ?/g, \"0x$1 \")\r\n\t\t\t\t\t.replace(/ +$/, \"\")\r\n\t\t\t\t\t.split(\" \"))\r\n\t\t);\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {Convert} from \"Core/Common/ValueConverter\";\r\n\r\nimport {IValueUpdater} from \"LookupEditor/Interfaces/IValueUpdater\";\r\nimport {IColumnValue} from \"LookupEditor/Interfaces/IColumnValue\";\r\nimport {RecordDataModel, FieldDataModel} from \"Core/Screens/Models/RecordDataModel\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {FieldFlags} from \"../../Core/Common/Enums/FieldFlags\";\r\nimport {ColorConverter} from \"../../Core/Components/ColorSelector/ColorConverter\";\r\nimport {extractLookupValFieldMetadata} from \"Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel\";\r\nimport { FIELD_TYPES } from \"Core/Constant\";\r\n\r\nexport class EditableRowModel implements IValueUpdater {\r\n IsRecordSelected: KnockoutObservable<boolean>;\r\n IsRecordChanged: KnockoutObservable<boolean>;\r\n\r\n private _dataObject: RecordDataModel;\r\n private emptyLookupValue: string = '-';\r\n\r\n constructor(dataObject?: RecordDataModel) {\r\n this.IsRecordSelected = ko.observable(false);\r\n this._dataObject = dataObject || null;\r\n this.IsRecordChanged = ko.observable(false);\r\n }\r\n\r\n get Data(): any {\r\n return this._dataObject;\r\n }\r\n\r\n GetDbValue(columnName: string): any {\r\n const column = this.GetColumn(columnName);\r\n const columnData = this.GetColumnData(columnName);\r\n\r\n let value = columnData.FieldValue;\r\n\r\n if (columnName.toLowerCase() === \"memo\" && value != null) {\r\n value = _.unescape(value);\r\n }\r\n\r\n if (column.Type === FIELD_TYPES.YesNo) {\r\n return value ? value !== \"False\" : false;\r\n }\r\n\r\n return value === undefined || value === null ? \"\" : value;\r\n }\r\n\r\n GetFieldFormat(columnName: string): string {\r\n const columnData = this.GetColumnData(columnName);\r\n\r\n if (columnData.FieldTypeFormat === 'Percentage' && (!columnData.FieldValue || columnData.FieldValue == this.emptyLookupValue)) {\r\n return null;\r\n }\r\n return columnData.FieldTypeFormat;\r\n }\r\n\r\n GetLookupClassName(columnName: string): string {\r\n const columnData = this.GetColumnData(columnName);\r\n\r\n if (!columnData.FieldValue || !columnData.DisplayValue) {\r\n return undefined;\r\n }\r\n\r\n const column = this.GetColumn(columnName);\r\n const validationFieldMetadata = extractLookupValFieldMetadata(column);\r\n return validationFieldMetadata && validationFieldMetadata.FormatName;\r\n }\r\n\r\n GetSize(columnName: string): number {\r\n const column = this.GetColumn(columnName);\r\n return column.Size;\r\n }\r\n\r\n GetValue(columnName: string): any {\r\n const column = this.GetColumn(columnName);\r\n const columnData = this.GetColumnData(columnName);\r\n\r\n let value = columnData && (columnData.DisplayValue || columnData.FieldValue);\r\n\r\n if (column.Type === \"Text\") {\r\n const translation = this.GetTranslation(columnData);\r\n value = translation.TranslatedValue || translation.Value;\r\n }\r\n\r\n if (columnName.toLowerCase() === \"memo\" && value != null) {\r\n value = _.unescape(value);\r\n }\r\n\r\n if (column.Type === \"Decimal\" || column.Type === \"Integer\") {\r\n if (columnData.FieldValue && columnData.FieldTypeFormat === 'Percentage') {\r\n return FormatConverter.LocalizeDecimalOrInteger(String((parseFloat(columnData.FieldValue.replace(',', '.')) * 100).toFixed(columnData.FieldSize < 2 ? 0 : columnData.FieldSize - 2)));\r\n }\r\n return FormatConverter.LocalizeDecimalOrInteger(columnData.FieldValue);\r\n }\r\n\r\n if (column.Type === FIELD_TYPES.YesNo) {\r\n return value ? value !== \"False\" : false;\r\n }\r\n\r\n if (column.Type === \"Lookup\") {\r\n if (!columnData.FieldValue) {\r\n return LABELS.EMPTY;\r\n }\r\n\r\n if (!columnData.DisplayValue) {\r\n return this.emptyLookupValue;\r\n }\r\n\r\n const validationFieldMetadata = extractLookupValFieldMetadata(column);\r\n\r\n if (validationFieldMetadata && _.contains([\"Decimal\", \"Integer\"], validationFieldMetadata.Type)) {\r\n if (validationFieldMetadata.FormatName === 'Percentage') {\r\n return FormatConverter.LocalizeDecimalOrInteger(String((parseFloat(value) * 100).toFixed(columnData.FieldSize < 2 ? 0 : columnData.FieldSize - 2)));\r\n }\r\n return FormatConverter.LocalizeDecimalOrInteger(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n if (column.Type === \"Radio\") {\r\n return columnData.FieldValue ? value : LABELS.EMPTY;\r\n }\r\n\r\n if (column.Type === \"MultiSelect\") {\r\n return columnData.FieldValue ? columnData : LABELS.EMPTY;\r\n }\r\n\r\n if (column.Type === \"Image\") {\r\n const imageColumnName = column.Name + \"_THUMBNAIL\";\r\n const data = this.GetColumnData(imageColumnName).FieldValue;\r\n value = Convert.ToBase64Image(data);\r\n }\r\n\r\n if (column.Type === \"Password\") {\r\n return columnData.FieldValue;\r\n }\r\n\r\n if (column.Type === \"Color\"){\r\n return columnData.FieldValue ? columnData.FieldValue : LABELS.EMPTY;\r\n }\r\n\r\n return value === undefined || value === null ? \"\" : value;\r\n }\r\n\r\n GetHexValue(columnName: string): any {\r\n const columnData = this.GetColumnData(columnName);\r\n return columnData.FieldValue ? ColorConverter.ToHex(columnData.FieldValue) : LABELS.EMPTY;\r\n }\r\n\r\n SetValue(columnName: string, value: any) {\r\n const field = this.GetColumnData(columnName);\r\n field.FieldValue = value;\r\n }\r\n\r\n UpdateValue(value: IColumnValue) {\r\n const field = this.GetColumnData(value.Name);\r\n const translatable = (FieldFlags.Translate & this.GetColumn(value.Name).Flags) === FieldFlags.Translate;\r\n\r\n if (translatable || field.FieldValue !== value.Value) {\r\n field.FieldValue = value.Value;\r\n field.DisplayValue = value.DisplayValue;\r\n field.FieldValueTranslations = value.Translations;\r\n\r\n field.Changed = true;\r\n this.IsRecordChanged(true);\r\n }\r\n }\r\n\r\n GetColumn(name: string) {\r\n return _.find(this._dataObject.TableStruct.Fields, (f: any) => f.Name === name);\r\n }\r\n\r\n GetColumnData(name: string): FieldDataModel {\r\n return _.find(this._dataObject.Fields, f => f.FieldName === name);\r\n }\r\n\r\n GetTranslation(columnData: FieldDataModel) {\r\n return TranslationManager.Instance.GetTranslation(columnData.FieldValue, columnData.FieldValueTranslations);\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport { Notifier } from \"Core/Common/Notifier\";\r\nimport { LABELS, NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport { GlobalManager, GLOBALS } from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport { FIELD_TYPES } from \"Core/Constant\";\r\nimport { extractLookupValFieldMetadata } from \"Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel\";\r\n\r\nimport { SearchScreen } from \"Core/Screens/SearchScreen/SearchScreen\";\r\n\r\nimport { ColumnEditor } from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\nimport { IValueUpdater } from \"LookupEditor/Interfaces/IValueUpdater\";\r\n\r\nimport { LookupEditorStore } from \"LookupEditor/Store/LookupEditorStore\";\r\n\r\nimport Template from \"LookupEditor/Templates/Columns/Lookup.html\";\r\nimport { EditableColumnModel } from \"LookupEditor/Models/EditableColumnModel\";\r\nimport { EditableRowModel } from \"LookupEditor/Models/EditableRowModel\";\r\nimport { UserVarsManager } from \"Core/UserVarsManager/UserVarsManager\";\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\nimport { FormatConverter } from \"FormatEditor/FormatConverter\";\r\n\r\nko.templates[\"LookupEditor/Templates/Columns/Lookup\"] = Template;\r\n\r\ninterface IDropdownOption {\r\n\tConvertedDisplayValue: string;\r\n\tDisplayValue: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class LookupColumnEditor extends ColumnEditor {\r\n\tprivate _columnName: string;\r\n\tprivate _isRequired: boolean;\r\n\tprivate _optionsLoaded: KnockoutObservable<boolean>;\r\n\tprivate _editModeEnabled: KnockoutComputed<boolean>;\r\n\tprivate _availableOptions: KnockoutObservableArray<IDropdownOption>;\r\n\tprivate _selectedOption: KnockoutObservable<IDropdownOption>;\r\n\tprivate _selectedOptionId: KnockoutObservable<string>;\r\n\tprivate _currentOwner: KnockoutObservable<IValueUpdater>;\r\n\r\n\tprivate _dropdownPlugins: string[];\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(column: EditableColumnModel) {\r\n\t\tsuper(column);\r\n\t\tthis._isRequired = column.IsRequired;\r\n\t\tthis._optionsLoaded = ko.observable(false);\r\n\t\tthis._editModeEnabled = ko.computed(() => this._optionsLoaded() && this._currentOwner() !== null, this);\r\n\t\tthis._availableOptions = ko.observableArray([]);\r\n\t\tthis._selectedOption = ko.observable(null);\r\n\t\tthis._selectedOptionId = ko.observable(null);\r\n\t\tthis._currentOwner = ko.observable(null);\r\n\r\n\t\tthis._dropdownPlugins = ['hidden_textfield', 'dropdown_direction'];\r\n\t\tthis.On(\"REQUEST_FAILED\", this, eventArgs => new Notifier().Failed(eventArgs.data.message));\r\n\t}\r\n\r\n\tShow(): void {\r\n\t}\r\n\r\n\tClick(owner: IValueUpdater, el: HTMLElement) {\r\n\t\tthis.DisableEditMode();\r\n\t\tthis._currentOwner(owner);\r\n\t\tLookupEditorStore.GetLookupRecordsCount(this.column.Id)\r\n\t\t\t.then(recordsCount => this.ShowOptions(recordsCount, owner, el))\r\n\t\t\t.fail(error => this.Trigger(\"REQUEST_FAILED\", error));\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"LookupEditor/Templates/Columns/Lookup\";\r\n\t}\r\n\r\n\tAfterRender(el, owner: IValueUpdater, columnName): void {\r\n\t\tthis._currentOwner(owner);\r\n\t\tthis._columnName = columnName;\r\n\t}\r\n\r\n\tToString() {\r\n\t\treturn \"Lookup\";\r\n\t}\r\n\r\n\tget EditModeEnabled() {\r\n\t\treturn this._editModeEnabled;\r\n\t}\r\n\r\n\tget AvailableOptions() {\r\n\t\treturn this._availableOptions;\r\n\t}\r\n\r\n\tget SelectedOption() {\r\n\t\treturn this._selectedOption;\r\n\t}\r\n\r\n\tget SelectedOptionId() {\r\n\t\treturn this._selectedOptionId;\r\n\t}\r\n\r\n\tget CurrentOwner() {\r\n\t\treturn this._currentOwner;\r\n\t}\r\n\r\n\tprivate ShowOptions(recordsCount: number, owner: IValueUpdater, el: HTMLElement) {\r\n\t\tlet searchScreenIfNumber = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n\r\n\t\tif (recordsCount >= searchScreenIfNumber) {\r\n\t\t\tthis.ShowSearchScreen(owner, el);\r\n\t\t} else {\r\n\t\t\tthis.ShowDropdown(owner, el);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ShowSearchScreen(owner: IValueUpdater, el: HTMLElement) {\r\n\t\tlet searchScreen = new SearchScreen({ EntityId: this.column.ValTableId, SearchTerm: '' });\r\n\t\tsearchScreen.On(\"RECORD_SELECTED\", this, eventArgs => this.UpdateValue(eventArgs.data, owner, el));\r\n\r\n\t\tsearchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n\t\t\tconst data = eventArgs.data;\r\n\t\t\tUserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\r\n\t\t\tdata.IsOpenInModal = false;\r\n\t\t\tPubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n\t\t});\r\n\r\n\t\tsearchScreen.Show();\r\n\t}\r\n\r\n\tprivate ShowDropdown(owner: IValueUpdater, el: HTMLElement) {\r\n\t\tthis.GetRecords()\r\n\t\t\t.then(records => {\r\n\t\t\t\tthis._availableOptions(this.GetOptions(records));\r\n\r\n\t\t\t\tconst currentOption = this.GetCurrentOption(this._availableOptions(), owner.GetDbValue(this.column.Name));\r\n\t\t\t\tthis.SetSelectedOption(currentOption);\r\n\r\n\t\t\t\tthis.EnableEditMode();\r\n\t\t\t}).fail(error => new Notifier().Failed(error.message));\r\n\t}\r\n\r\n\tprivate UpdateValue(record: any, owner: IValueUpdater, el: HTMLElement) {\r\n\t\tthis.GetRecord(record.RecordId)\r\n\t\t\t.then(recordData => {\r\n\t\t\t\tlet displayField = _.find(recordData.Fields, (field: any) => field.FieldId === this.column.ValFieldId);\r\n\t\t\t\tlet displayValue = displayField.FieldValue;\r\n\r\n\t\t\t\towner.UpdateValue({\r\n\t\t\t\t\tName: this._columnName,\r\n\t\t\t\t\tValue: record.RecordId,\r\n\t\t\t\t\tDisplayValue: displayValue\r\n\t\t\t\t});\r\n\t\t\t\t$(el).text(displayValue);\r\n\t\t\t}).fail(error => new Notifier().Failed(error.message));\r\n\t}\r\n\r\n\tprivate GetRecord(recordId: number) {\r\n\t\treturn LookupEditorStore.GetRecord(this.column.ValTableId, recordId);\r\n\t}\r\n\r\n\tprivate GetRecords() {\r\n\t\treturn LookupEditorStore.GetRecords(this.column.ValTableId);\r\n\t}\r\n\r\n\tprivate GetOptions(records: Array<any>): Array<IDropdownOption> {\r\n\t\tif (!records || records.length === 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\treturn records.map(record => {\r\n\t\t\tlet valueField = _.find(record.Fields, (field: any) => field.IsPrimaryKey) || {};\r\n\t\t\tlet displayField = _.find(record.Fields, (field: any) => field.FieldId === this.column.ValFieldId) || {};\r\n\t\t\tlet convertedDisplayValue = this.GetConvertedDisplayValue(displayField.FieldValue);\r\n\r\n\t\t\treturn {\r\n\t\t\t\tValue: valueField.FieldValue,\r\n\t\t\t\tDisplayValue: displayField.FieldValue,\r\n\t\t\t\tConvertedDisplayValue: convertedDisplayValue\r\n\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate GetConvertedDisplayValue(displayValue: string) {\r\n\t\tif (!displayValue) {\r\n return this.emptyLookupValue;\r\n\t\t}\r\n\r\n\t\tconst owner = this._currentOwner();\r\n\r\n\t\tif (owner instanceof EditableRowModel) {\r\n\t\t\tconst column = owner.GetColumn(this._columnName);\r\n\r\n\t\t\tconst validationFieldMetadata = extractLookupValFieldMetadata(column);\r\n\r\n\t\t\tif (\r\n\t\t\t\tvalidationFieldMetadata &&\r\n\t\t\t\t_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], validationFieldMetadata.Type)\r\n\t\t\t) {\r\n\t\t\t\tif (validationFieldMetadata.FormatName === \"Percentage\") {\r\n\t\t\t\t\treturn FormatConverter.LocalizeDecimalOrInteger(String(parseFloat(displayValue) * 100));\r\n\t\t\t\t}\r\n\t\t\t\treturn FormatConverter.LocalizeDecimalOrInteger(displayValue);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn displayValue;\r\n\t}\r\n\r\n\tprivate GetCurrentOption(options: Array<IDropdownOption>, currentDisplayValue: string) {\r\n\t\treturn _.find(options, option => option.Value === currentDisplayValue);\r\n\t}\r\n\r\n\tprivate OptionSelected(owner: IValueUpdater) {\r\n const selectedOption = this._availableOptions().find(opt => opt.Value === this._selectedOptionId())\r\n\t\tconst value = selectedOption ? selectedOption.Value : null;\r\n\t\tconst displayedValue = selectedOption ? selectedOption.DisplayValue : null;\r\n\t\t\r\n\t\towner.UpdateValue({\r\n\t\t\tName: this._columnName,\r\n\t\t\tValue: value,\r\n\t\t\tDisplayValue: displayedValue\r\n\t\t});\r\n\r\n\t\tthis.DisableEditMode();\r\n\t}\r\n\r\n\tprivate EnableEditMode() {\r\n\t\tthis._optionsLoaded(true);\r\n\t}\r\n\r\n\tprivate AcceptOption() {\r\n\t\tif (this._isRequired && !this._selectedOption()) {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.SELECT_ANY_OPTION);\r\n\t\t} else {\r\n\t\t\tthis.OptionSelected(this._currentOwner());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ClearOption(owner: IValueUpdater) {\r\n\t\tthis._optionsLoaded(false);\r\n\t\tthis.SetSelectedOption(null);\r\n\t\tthis._optionsLoaded(true);\r\n\t}\r\n\r\n\tprivate SetSelectedOption(option: IDropdownOption) {\r\n\t\tthis._selectedOption(option);\r\n\t\tthis._selectedOptionId(option ? option.Value : null);\r\n\t}\r\n\r\n\tprivate DisableEditMode() {\r\n\t\tthis._optionsLoaded(false);\r\n\t\tthis._currentOwner(null);\r\n\t}\r\n}\r\n","// Module\nvar code = \"<!-- ko if: (!_columnEditor.EditModeEnabled() || _columnEditor.CurrentOwner() !== $parent) --> <a data-bind=\\\"\\r\\n\\t\\tcss: $parent.GetLookupClassName(Name),\\r\\n\\t\\ttext: $parent.GetValue(Name),\\r\\n\\t\\tclick: _columnEditor.Click.bind(_columnEditor, $parent, $element)\\r\\n\\t\\\" href=\\\"#\\\"></a> <!-- /ko --> <!-- ko if: (_columnEditor.EditModeEnabled() && _columnEditor.CurrentOwner() === $parent) --> <div class=\\\"lookup-column-editor\\\"> <!-- ko with: _columnEditor --> <div class=\\\"inline-block\\\"> <select class=\\\"input-sm form-control fullWidthDropDown\\\" data-bind=\\\"\\r\\n options: AvailableOptions,\\r\\n optionsText: function(item) {\\r\\n return item.ConvertedDisplayValue\\r\\n },\\r\\n optionsValue: 'Value',\\r\\n value: SelectedOptionId,\\r\\n optionsCaption: _labels.SELECT_LABEL + '...'\\\"></select> </div> <div class=\\\"editable-buttons inline-block\\\"> <button data-bind=\\\"click: $data.AcceptOption.bind($data)\\\" class=\\\"save-btn btn btn-primary btn-sm\\\" type=\\\"button\\\"> <i class=\\\"glyphicon glyphicon-ok\\\"></i> </button> <!-- ko if: !_isRequired --> <button data-bind=\\\"click: $data.ClearOption.bind($data, $parents[1])\\\" type=\\\"button\\\" class=\\\"cancel-btn btn btn-default btn-sm\\\"> <i class=\\\"glyphicon glyphicon-remove\\\"></i> </button> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> \";\n// Exports\nexport default code;","import {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nexport class IconColumnEditor extends ColumnEditor{\r\n\tShow(): void {}\r\n\r\n\tToString() {\r\n\t\treturn \"Icon\";\r\n\t}\r\n} ","import * as ko from \"knockout\";\r\n\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nimport YesNoTemplate from \"LookupEditor/Templates/Columns/Sort.html\";\r\nko.templates[\"LookupEditor/Templates/Columns/Sort\"] = YesNoTemplate;\r\n\r\nexport class SortColumnEditor extends ColumnEditor{\r\n\tShow(): void {}\r\n\r\n\tToString() {\r\n\t\treturn \"Sort\";\r\n\t}\r\n\r\n\tAfterRender(el) {}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'LookupEditor/Templates/Columns/Sort';\r\n\t}\r\n} ","// Module\nvar code = \"<div class=\\\"u-ws-nowrap\\\"> <a data-bind=\\\"click: $parents[1].MoveRowDown.bind($parents[1], $parent)\\\" href=\\\"#\\\" class=\\\"btn btn-icon-only default sort\\\"> <i class=\\\"fa fa-arrow-down sort\\\" data-action=\\\"moveDown\\\"></i> </a> <a data-bind=\\\"click: $parents[1].MoveRowUp.bind($parents[1], $parent)\\\" href=\\\"#\\\" class=\\\"btn btn-icon-only default sort\\\"> <i class=\\\"fa fa-arrow-up sort\\\"></i> </a> </div>\";\n// Exports\nexport default code;","export enum SystemFields {\r\n\tENABLED,\r\n SORT,\r\n CREATEDATE,\r\n CREATEDBY,\r\n CHANGEDATE,\r\n CHANGEDBY,\r\n F_DICTIONARY,\r\n REPLICATIONID\r\n}","import * as ko from 'knockout';\r\n\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {TranslationFieldEditor} from \"Core/Components/TranslationFieldEditor/TranslationFieldEditor\";\r\nimport {ITranslationValue} from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\n\r\nimport {IValueUpdater} from \"LookupEditor/Interfaces/IValueUpdater\";\r\nimport {EditableColumnModel} from \"LookupEditor/Models/EditableColumnModel\";\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nimport Template from \"LookupEditor/Templates/Columns/Text.html\";\r\n\r\nko.templates[\"LookupEditor/Templates/Columns/Text\"] = Template;\r\n\r\nexport class TextColumnEditor extends ColumnEditor {\r\n\tprivate _currentOwner: KnockoutObservable<IValueUpdater>;\r\n\tprivate _editModeEnabled: KnockoutComputed<boolean>;\r\n\tprivate _value: KnockoutObservable<string>;\r\n\tprivate _translationFieldEditor: TranslationFieldEditor;\r\n\r\n\tget EditModeEnabled() {\r\n\t\treturn this._editModeEnabled;\r\n\t}\r\n\r\n\tget CurrentOwner() {\r\n\t\treturn this._currentOwner;\r\n\t}\r\n\r\n\tget Value() {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\tconstructor(column: EditableColumnModel) {\r\n\t\tsuper(column);\r\n\r\n\t\tthis._currentOwner = ko.observable(null);\r\n\t\tthis._editModeEnabled = ko.computed(() => this._currentOwner() !== null, this);\r\n\t\tthis._value = ko.observable(null);\r\n\r\n\t\tthis._value.subscribe(newValue => this._translationFieldEditor.SetValue(newValue));\r\n\t}\r\n\r\n\tToString() {\r\n\t\treturn \"Text\";\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn \"LookupEditor/Templates/Columns/Text\";\r\n\t}\r\n\r\n\tAfterRender(el, owner: IValueUpdater, columnName): void {\r\n\t}\r\n\r\n\tClick(owner: IValueUpdater) {\r\n\t\tconst columnData = owner.GetColumnData(this.column.Name);\r\n\t\tconst value = owner.GetDbValue(this.column.Name);\r\n\t\tconst translation = TranslationManager.Instance.GetTranslation(value, columnData.FieldValueTranslations);\r\n\r\n\t\tthis._translationFieldEditor = new TranslationFieldEditor();\r\n\t\tthis._translationFieldEditor.LoadTranslationItems();\r\n\t\tthis._translationFieldEditor.On('TranslationSelected', this, eventArgs => this.ChangeTranslation(eventArgs.data));\r\n\r\n\t\tthis._translationFieldEditor.SetTranslations(columnData.FieldValueTranslations, value);\r\n\t\tthis._translationFieldEditor.SetActiveTranslation(translation.Language.Id);\r\n\r\n\t\tthis._currentOwner(owner);\r\n\t\tthis._value(translation.TranslatedValue || translation.Value);\r\n\t}\r\n\r\n\tToggleTranslations() {\r\n\t\tthis._translationFieldEditor.Toggle();\r\n\t}\r\n\r\n\tSaveChanges() {\r\n\t\tthis._currentOwner().UpdateValue({\r\n\t\t\tName: this.column.Name,\r\n\t\t\tValue: this._translationFieldEditor.GetDefaultTranslation().Value,\r\n\t\t\tTranslations: this._translationFieldEditor.GetTranslations(false)\r\n\t\t});\r\n\r\n\t\tthis._currentOwner(null);\r\n\t}\r\n\r\n\tCancelChanges() {\r\n\t\tthis._currentOwner(null);\r\n\t}\r\n\r\n\tShow(): void {\r\n\t}\r\n\r\n\tprivate ChangeTranslation(translation: ITranslationValue) {\r\n\t\tthis._value(translation.Value);\r\n\t}\r\n}\r\n","// Module\nvar code = \"<!-- ko if: (!_columnEditor.EditModeEnabled() || _columnEditor.CurrentOwner() !== $parent) --> <a data-bind=\\\"click: _columnEditor.Click.bind(_columnEditor, $parent), css: {'editable-empty': !$parent.GetValue(Name)}\\\" href=\\\"#\\\" class=\\\"editable editable-click\\\"> <!--ko if: $parent.GetValue(Name)--> <span data-bind=\\\"text: $parent.GetValue(Name)\\\"></span> <!--/ko--> <!--ko ifnot: $parent.GetValue(Name)--> <span data-bind=\\\"text: 'Empty'\\\"></span> <!--/ko--> </a> <!-- /ko --> <!-- ko if: (_columnEditor.EditModeEnabled() && _columnEditor.CurrentOwner() === $parent)--> <div class=\\\"column-editor\\\"> <div class=\\\"inline-block text-block\\\"> <input type=\\\"text\\\" class=\\\"text-editor form-control\\\" data-bind=\\\"textInput: _columnEditor.Value, css: {'translation-editor': HasTranslations}\\\"/> <!--ko if: HasTranslations--> <div class=\\\"translation-container\\\"> <a class=\\\"btn btn-secondary translation-list\\\" data-bind=\\\"click: _columnEditor.ToggleTranslations.bind(_columnEditor)\\\"> <!--ko with: _columnEditor._translationFieldEditor._activeTranslationItem--> <!--ko if: Language.Flag--> <img class=\\\"language-selection-img translation-flag\\\" data-bind=\\\"attr: {src: Language.Flag}\\\" height=\\\"20\\\"> <!--/ko--> <!--ko ifnot: Language.Flag--> <span class=\\\"language-shortname\\\" data-bind=\\\"text: Language.ShortName\\\"></span> <!--/ko--> <!--/ko--> </a> <!-- ko with: _columnEditor._translationFieldEditor --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"editable-buttons inline-block\\\"> <button class=\\\"save-btn btn btn-primary btn-sm\\\" type=\\\"button\\\" data-bind=\\\"click: _columnEditor.SaveChanges.bind(_columnEditor)\\\"> <i class=\\\"glyphicon glyphicon-ok\\\"></i> </button> <button class=\\\"cancel-btn btn btn-default btn-sm\\\" data-bind=\\\"click: _columnEditor.CancelChanges.bind(_columnEditor)\\\"> <i class=\\\"glyphicon glyphicon-remove\\\"></i> </button> </div> </div> <!-- /ko --> \";\n// Exports\nexport default code;","import {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nexport class TypeColumnEditor extends ColumnEditor{\r\n\tShow(): void {}\r\n\r\n\tToString() {\r\n\t\treturn \"Type\";\r\n\t}\r\n} ","import * as ko from \"knockout\";\r\n\r\nimport 'bootstrapSwitch';\r\n\r\nimport {IValueUpdater} from \"LookupEditor/Interfaces/IValueUpdater\";\r\nimport {IColumnValue} from \"LookupEditor/Interfaces/IColumnValue\";\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nimport YesNoTemplate from \"LookupEditor/Templates/Columns/YesNo.html\";\r\nko.templates[\"LookupEditor/Templates/Columns/YesNo\"] = YesNoTemplate;\r\n\r\nexport class YesNoColumnEditor extends ColumnEditor {\r\n Show(): void { }\r\n\r\n GetTemplateName(): string {\r\n return 'LookupEditor/Templates/Columns/YesNo';\r\n }\r\n\r\n\tAfterRender(el, owner: IValueUpdater, columnName): void {\r\n\r\n\t\t// Due to dynamic nature of grid cell rendering and no possibility to detect\r\n\t\t// it end or any definitive stage at this point, setTimeout is used to put\r\n\t\t// bootstrapSwitch in the end of queue.\r\n\t\tsetTimeout(() => {\r\n\t\t\t$(el).bootstrapSwitch({\r\n\t\t\t\tonSwitchChange: (event, state) => {\r\n\t\t\t\t\tvar value: IColumnValue = {\r\n\t\t\t\t\t\tName: columnName,\r\n\t\t\t\t\t\tValue: state\r\n\t\t\t\t\t};\r\n\t\t\t\t\towner.UpdateValue(value);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}, 100);\r\n\r\n }\r\n\r\n ToString() {\r\n return \"YesNo\";\r\n }\r\n} ","// Module\nvar code = \"<input data-bind=\\\"checked: $parent.GetValue(Name), attr: { 'data-on-text': _labels.ON, 'data-off-text': _labels.OFF }\\\" type=\\\"checkbox\\\" class=\\\"make-switch\\\">\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport \"jquery\";\r\nimport \"xEditable\";\r\nimport \"TinyMceExtension\";\r\n\r\nimport {IValueUpdater} from \"LookupEditor/Interfaces/IValueUpdater\";\r\nimport {IColumnValue} from \"LookupEditor/Interfaces/IColumnValue\";\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\n\r\nimport PKeyTemplate from \"LookupEditor/Templates/Columns/Memo.html\";\r\nko.templates[\"LookupEditor/Templates/Columns/Memo\"] = PKeyTemplate;\r\n\r\nexport class MemoColumnEditor extends ColumnEditor {\r\n\tShow(): void { }\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'LookupEditor/Templates/Columns/Memo';\r\n\t}\r\n\r\n\tAfterRender(el, owner: IValueUpdater, columnName): void {\r\n\r\n\t\tconst field = owner.GetColumnData(columnName);\r\n\r\n\t\t($.fn.editable as any).defaults.mode = 'popup';\r\n\t\t$(el).editable({\r\n\t\t\ttype: 'memo',\r\n\t\t\tplacement: 'bottom',\r\n\t\t\tshowbuttons: 'bottom',\r\n\t\t\ttranslations: field.FieldValueTranslations,\r\n\t\t\tvalue: {\r\n\t\t\t\tdefault: '',\r\n\t\t\t\tcurrent: $(el).data('text')\r\n\t\t\t},\r\n\t\t\tsuccess: (response, newValue) => {\r\n\t\t\t\tvar value: IColumnValue = {\r\n\t\t\t\t\tName: columnName,\r\n\t\t\t\t\tValue: newValue.current,\r\n\t\t\t\t\tTranslations: newValue.translates\r\n\t\t\t\t};\r\n\r\n\t\t\t\towner.UpdateValue(value);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tToString() {\r\n\t\treturn \"Memo\";\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"#\\\" data-bind=\\\"attr: {'data-text': $parent.GetValue(Name)}\\\"><!-- ko text: _labels.EDIT --><!-- /ko --></a>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nimport NonEditableTemplate from \"LookupEditor/Templates/Columns/NonEditable.html\";\r\nko.templates[\"LookupEditor/Templates/Columns/NonEditable\"] = NonEditableTemplate;\r\n\r\n\r\nexport class NonEditableColumnEditor extends ColumnEditor {\r\n\r\n GetTemplateName(): string {\r\n return 'LookupEditor/Templates/Columns/NonEditable';\r\n }\r\n\r\n AfterRender(el): void {\r\n\r\n }\r\n\r\n ToString() {\r\n return \"NonEditable\";\r\n }\r\n}","// Module\nvar code = \"<label data-bind=\\\"text: $parent.GetValue(Name)\\\" data-type=\\\"text\\\"></label>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nimport ImageTemplate from \"LookupEditor/Templates/Columns/NonEditableImage.html\";\r\nimport {IValueUpdater} from \"../../Interfaces/IValueUpdater\";\r\n\r\nko.templates[\"LookupEditor/Templates/Columns/NonEditableImage\"] = ImageTemplate;\r\n\r\n\r\nexport class NonEditableImageColumnEditor extends ColumnEditor {\r\n\r\n\tAfterRender(el, owner: IValueUpdater, columnName): void {\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"LookupEditor/Templates/Columns/NonEditableImage\";\r\n\t}\r\n\r\n\tToString() {\r\n\t\treturn \"NonEditableImage\";\r\n\t}\r\n} ","// Module\nvar code = \"<img data-bind=\\\"attr: { src: $parent.GetValue(Name) }\\\" class=\\\"image-centered main-img img-cyber-grid\\\" alt=\\\"\\\">\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport \"jquery\";\r\nimport \"xEditable\";\r\nimport \"TouchSpinDecimalExtension\";\r\nimport \"PercentageExtantion\";\r\n\r\nimport { IValueUpdater } from \"LookupEditor/Interfaces/IValueUpdater\";\r\nimport { ColumnEditor } from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\n\r\nimport ColumnTemplate from \"LookupEditor/Templates/Columns/Decimal.html\";\r\nimport {TranslationFieldEditor} from \"../../../Core/Components/TranslationFieldEditor/TranslationFieldEditor\";\r\nimport {EditableColumnModel} from \"../../Models/EditableColumnModel\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {TranslationManager} from \"../../../Core/Components/Translation/TranslationManager\";\r\nimport {ITranslationValue} from \"../../../Core/Components/TranslationFieldEditor/ITranslationValue\";\r\n\r\nko.templates[\"LookupEditor/Templates/Columns/Decimal\"] = ColumnTemplate;\r\n\r\nexport class DecimalColumnEditor extends ColumnEditor {\r\n\tprivate _currentOwner: KnockoutObservable<IValueUpdater>;\r\n\tprivate _editModeEnabled: KnockoutComputed<boolean>;\r\n\tprivate _value: KnockoutObservable<string>;\r\n\tprivate _translationFieldEditor: TranslationFieldEditor;\r\n\r\n\tget EditModeEnabled() {\r\n\t\treturn this._editModeEnabled;\r\n\t}\r\n\r\n\tget CurrentOwner() {\r\n\t\treturn this._currentOwner;\r\n\t}\r\n\r\n\tget Value() {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\tconstructor(column: EditableColumnModel) {\r\n\t\tsuper(column);\r\n\r\n\t\tthis._currentOwner = ko.observable(null);\r\n\t\tthis._editModeEnabled = ko.computed(() => this._currentOwner() !== null, this);\r\n\t\tthis._value = ko.observable(null);\r\n\r\n\t\tthis._value.subscribe(newValue => this._translationFieldEditor.SetValue(newValue));\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"LookupEditor/Templates/Columns/Decimal\";\r\n\t}\r\n\r\n\tAfterRender(el, owner: IValueUpdater, columnName): void {\r\n\t}\r\n\r\n\tClick(owner: IValueUpdater) {\r\n\t\tconst columnData = owner.GetColumnData(this.column.Name);\r\n\t\tconst value = owner.GetDbValue(this.column.Name);\r\n\r\n\t\tconst translation = TranslationManager.Instance.GetTranslation(value, columnData.FieldValueTranslations);\r\n\r\n\t\tthis._translationFieldEditor = new TranslationFieldEditor();\r\n\t\tthis._translationFieldEditor.LoadTranslationItems();\r\n\t\tthis._translationFieldEditor.On('TranslationSelected', this, eventArgs => this.ChangeTranslation(eventArgs.data));\r\n\r\n\t\tthis._translationFieldEditor.SetTranslations(columnData.FieldValueTranslations, value);\r\n\t\tthis._translationFieldEditor.SetActiveTranslation(translation.Language.Id);\r\n\r\n\t\tif (columnData.FieldTypeFormat === 'Percentage') {\r\n\t\t\tthis._value(FormatConverter.LocalizeDecimalOrInteger(String((parseFloat(value.replace(',', '.')) * 100).toFixed(columnData.FieldSize < 2 ? 0 : columnData.FieldSize - 2))));\r\n\t\t}else {\r\n\t\t\tthis._value(translation.TranslatedValue || translation.Value);\r\n\t\t}\r\n\r\n\t\tthis._currentOwner(owner);\r\n\r\n\t}\r\n\r\n\tSaveChanges() {\r\n\t\tlet value = null;\r\n\t\tlet columnInfo = this._currentOwner().GetColumnData(this.column.Name);\r\n\t\tif (columnInfo.FieldTypeFormat === 'Percentage') {\r\n\t\t\tvalue = FormatConverter.LocalizeDecimalOrInteger(String((parseFloat(this._translationFieldEditor.GetDefaultTranslation().Value.replace(',', '.'))/100).toFixed(columnInfo.FieldSize < 2 ? 0 : columnInfo.FieldSize)));\r\n\t\t}else {\r\n\t\t\tvalue = this._translationFieldEditor.GetDefaultTranslation().Value;\r\n\t\t}\r\n\t\tthis._currentOwner().UpdateValue({\r\n\t\t\tName: this.column.Name,\r\n\t\t\tValue: value\r\n\t\t});\r\n\r\n\t\tthis._currentOwner(null);\r\n\t}\r\n\r\n\tCancelChanges() {\r\n\t\tthis._currentOwner(null);\r\n\t}\r\n\r\n\tShow(): void {\r\n\t}\r\n\r\n\tprivate ChangeTranslation(translation: ITranslationValue) {\r\n\t\tthis._value(translation.Value);\r\n\t}\r\n\r\n\tToString() {\r\n\t\treturn \"Decimal\";\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko if: (!_columnEditor.EditModeEnabled() || _columnEditor.CurrentOwner() !== $parent) --> <a data-bind=\\\"click: _columnEditor.Click.bind(_columnEditor, $parent), css: {'editable-empty': !$parent.GetValue(Name)}\\\" href=\\\"#\\\" class=\\\"editable editable-click\\\"> <!--ko if: $parent.GetValue(Name)--> <!--ko if: $parent.GetFieldFormat(Name) === 'Percentage' --> <span data-bind=\\\"text: $parent.GetValue(Name) + '%'\\\"></span> <!--/ko--> <!--ko if: $parent.GetFieldFormat(Name) === 'Currency' --> <span data-bind=\\\"css: $parent.GetFieldFormat(Name), text: $parent.GetValue(Name), attr: {'data-value': $parent.GetValue(Name)}\\\"></span> <!--/ko--> <!--ko if: $parent.GetFieldFormat(Name) === 'None' --> <span data-bind=\\\"text: $parent.GetValue(Name)\\\"></span> <!--/ko--> <!--/ko--> <!--ko ifnot: $parent.GetValue(Name)--> <span data-bind=\\\"text: 'Empty'\\\"></span> <!--/ko--> </a> <!-- /ko --> <!-- ko if: (_columnEditor.EditModeEnabled() && _columnEditor.CurrentOwner() === $parent)--> <div class=\\\"column-editor\\\"> <div class=\\\"inline-block text-block\\\"> <input type=\\\"text\\\" class=\\\"text-editor form-control\\\" data-bind=\\\"textInput: _columnEditor.Value, css: {'translation-editor': HasTranslations}\\\"/> <!--ko if: HasTranslations--> <a class=\\\"btn btn-secondary translation-list\\\" data-bind=\\\"click: _columnEditor.ToggleTranslations.bind(_columnEditor)\\\"> <!--ko with: _columnEditor._translationFieldEditor._activeTranslationItem--> <!--ko if: Language.Flag--> <img class=\\\"language-selection-img translation-flag\\\" data-bind=\\\"attr: {src: Language.Flag}\\\" height=\\\"20\\\"> <!--/ko--> <!--ko ifnot: Language.Flag--> <span class=\\\"language-shortname\\\" data-bind=\\\"text: Language.ShortName\\\"></span> <!--/ko--> <!--/ko--> <!-- ko with: _columnEditor._translationFieldEditor --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </a> <!-- /ko --> </div> <div class=\\\"editable-buttons inline-block\\\"> <button class=\\\"save-btn btn btn-primary btn-sm\\\" type=\\\"button\\\" data-bind=\\\"click: _columnEditor.SaveChanges.bind(_columnEditor)\\\"> <i class=\\\"glyphicon glyphicon-ok\\\"></i> </button> <button class=\\\"cancel-btn btn btn-default btn-sm\\\" data-bind=\\\"click: _columnEditor.CancelChanges.bind(_columnEditor)\\\"> <i class=\\\"glyphicon glyphicon-remove\\\"></i> </button> </div> </div> <!-- /ko --> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport Template from \"LookupEditor/Templates/Columns/Password.html\";\r\n\r\nko.templates[\"LookupEditor/Templates/Columns/Password\"] = Template;\r\n\r\nimport { Notifier } from \"Core/Common/Notifier\";\r\nimport { NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\nimport { PASSWORD } from 'Core/Constant'\r\n\r\nimport {ColumnEditor} from \"../Base/ColumnEditor\";\r\nimport {EditableColumnModel} from \"../../Models/EditableColumnModel\";\r\n\r\nimport {IValueUpdater} from \"../../Interfaces/IValueUpdater\";\r\n\r\nexport class PasswordColumnEditor extends ColumnEditor {\r\n private _currentOwner: KnockoutObservable<IValueUpdater>;\r\n private _editModeEnabled: KnockoutComputed<boolean>;\r\n private _value: KnockoutObservable<string>;\r\n\r\n constructor(column: EditableColumnModel) {\r\n super(column);\r\n\r\n this._currentOwner = ko.observable(null);\r\n this._editModeEnabled = ko.computed(() => this._currentOwner() !== null, this);\r\n this._value = ko.observable(null);\r\n }\r\n\r\n get EditModeEnabled() {\r\n return this._editModeEnabled;\r\n }\r\n\r\n get CurrentOwner() {\r\n return this._currentOwner;\r\n }\r\n\r\n get Value() {\r\n return this._value;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"LookupEditor/Templates/Columns/Password\";\r\n }\r\n\r\n Click(owner: IValueUpdater) {\r\n this._currentOwner(owner);\r\n\r\n const value = owner.GetValue(this.column.Name);\r\n this._value(value);\r\n }\r\n\r\n SaveChanges() {\r\n if (this._value().length >= PASSWORD.MinimumLength) {\r\n this._currentOwner().UpdateValue({\r\n Name: this.column.Name,\r\n Value: this._value()\r\n });\r\n\r\n this._currentOwner(null);\r\n } else {\r\n new Notifier().Warning(NOTIFICATIONS.INCORECT_PASSWORD_LENGTH.replace('{MinimumLength}', PASSWORD.MinimumLength.toString()));\r\n }\r\n }\r\n\r\n CancelChanges() {\r\n this._currentOwner(null);\r\n }\r\n\r\n ToString() {\r\n return 'Password';\r\n }\r\n}","// Module\nvar code = \"<!-- ko if: (!_columnEditor.EditModeEnabled() || _columnEditor.CurrentOwner() !== $parent) --> <a data-bind=\\\"click: _columnEditor.Click.bind(_columnEditor, $parent), css: {'editable-empty': !$parent.GetValue(Name)}\\\" href=\\\"#\\\" class=\\\"editable editable-click password\\\"> <span data-bind=\\\"text: 'password'\\\"></span> </a> <!-- /ko --> <!-- ko if: (_columnEditor.EditModeEnabled() && _columnEditor.CurrentOwner() === $parent)--> <div class=\\\"column-editor\\\"> <div class=\\\"inline-block text-block\\\"> <input type=\\\"text\\\" class=\\\"text-editor form-control password\\\" data-bind=\\\"textInput: _columnEditor.Value, css: {'translation-editor': HasTranslations}\\\"/> </div> <div class=\\\"editable-buttons inline-block\\\"> <button class=\\\"save-btn btn btn-primary btn-sm\\\" type=\\\"button\\\" data-bind=\\\"click: _columnEditor.SaveChanges.bind(_columnEditor)\\\"> <i class=\\\"glyphicon glyphicon-ok\\\"></i> </button> <button class=\\\"cancel-btn btn btn-default btn-sm\\\" data-bind=\\\"click: _columnEditor.CancelChanges.bind(_columnEditor)\\\"> <i class=\\\"glyphicon glyphicon-remove\\\"></i> </button> </div> </div> <!-- /ko --> \";\n// Exports\nexport default code;","import {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\nimport {DateColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/DateColumnEditor\";\r\nimport {DateTimeColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/DateTimeColumnEditor\";\r\nimport {BinaryColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/BinaryColumnEditor\";\r\nimport { TimeColumnEditor } from \"LookupEditor/ColumnEditors/Concrete/TimeColumnEditor\";\r\nimport { TimeSpanColumnEditor } from \"LookupEditor/ColumnEditors/Concrete/TimeSpanColumnEditor\";\r\nimport {GuidColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/GuidColumnEditor\";\r\nimport {CurrencyColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/CurrencyColumnEditor\";\r\nimport {DocumentColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/DocumentColumnEditor\";\r\nimport {FlagCheckColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/FlagCheckColumnEditor\";\r\nimport {ImageColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/ImageColumnEditor\";\r\nimport {IntegerColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/IntegerColumnEditor\";\r\nimport {PKeyColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/PKeyColumnEditor\";\r\nimport {MultiSelectColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/MultiSelectColumnEditor\";\r\nimport {ColorColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/ColorColumnEditor\";\r\nimport {LookupColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/LookupColumnEditor\";\r\nimport {IconColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/IconColumnEditor\";\r\nimport {SortColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/SortColumnEditor\";\r\nimport {TextColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/TextColumnEditor\";\r\nimport {TypeColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/TypeColumnEditor\";\r\nimport {YesNoColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/YesNoColumnEditor\";\r\nimport {MemoColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/MemoColumnEditor\";\r\nimport { NonEditableColumnEditor } from \"LookupEditor/ColumnEditors/Concrete/NonEditableColumnEditor\";\r\nimport { NonEditableImageColumnEditor } from \"LookupEditor/ColumnEditors/Concrete/NonEditableImageColumnEditor\";\r\nimport {DecimalColumnEditor} from \"LookupEditor/ColumnEditors/Concrete/DecimalColumnEditor\";\r\n\r\nimport {EditableColumnModel} from \"LookupEditor/Models/EditableColumnModel\";\r\nimport {SystemFields} from \"LookupEditor/Enums/SystemFields\";\r\nimport {ColumnTypes} from \"LookupEditor/Enums/ColumnTypes\";\r\nimport {PasswordColumnEditor} from \"../ColumnEditors/Concrete/PasswordColumnEditor\";\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class ColumnEditorFactory {\r\n private static allowInstantiation: boolean = false;\r\n private static instance: ColumnEditorFactory = null;\r\n private _systemFieldToEditor: { [fieldName: string]: (column: EditableColumnModel) => ColumnEditor };\r\n private _columnTypeToEditor: { [fieldTypeName: string]: (column: EditableColumnModel) => ColumnEditor };\r\n\r\n constructor() {\r\n if (ColumnEditorFactory.allowInstantiation) {\r\n this._systemFieldToEditor = {};\r\n this._systemFieldToEditor[SystemFields[SystemFields.ENABLED]] = (column: EditableColumnModel) => new YesNoColumnEditor(column);\r\n this._systemFieldToEditor[SystemFields[SystemFields.SORT]] = (column: EditableColumnModel) => new SortColumnEditor(column);\r\n\r\n this._systemFieldToEditor[SystemFields[SystemFields.CREATEDATE]] = (column: EditableColumnModel) => new NonEditableColumnEditor(column);\r\n this._systemFieldToEditor[SystemFields[SystemFields.CREATEDBY]] = (column: EditableColumnModel) => new NonEditableColumnEditor(column);\r\n this._systemFieldToEditor[SystemFields[SystemFields.CHANGEDATE]] = (column: EditableColumnModel) => new NonEditableColumnEditor(column);\r\n this._systemFieldToEditor[SystemFields[SystemFields.CHANGEDBY]] = (column: EditableColumnModel) => new NonEditableColumnEditor(column);\r\n\r\n this._systemFieldToEditor[SystemFields[SystemFields.F_DICTIONARY]] = (column: EditableColumnModel) => new NonEditableColumnEditor(column);\r\n this._systemFieldToEditor[SystemFields[SystemFields.REPLICATIONID]] = (column: EditableColumnModel) => new NonEditableColumnEditor(column);\r\n\r\n this._columnTypeToEditor = {};\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Decimal]] = (column: EditableColumnModel) => new DecimalColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Date]] = (column: EditableColumnModel) => new DateColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.DateTime]] = (column: EditableColumnModel) => new DateTimeColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Binary]] = (column: EditableColumnModel) => new BinaryColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Time]] = (column: EditableColumnModel) => new TimeColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.TimeSpan]] = (column: EditableColumnModel) => new TimeSpanColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Guid]] = (column: EditableColumnModel) => new GuidColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Radio]] = (column: EditableColumnModel) => new LookupColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Currency]] = (column: EditableColumnModel) => new CurrencyColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Document]] = (column: EditableColumnModel) => new DocumentColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.FlagCheck]] = (column: EditableColumnModel) => new FlagCheckColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Image]] = (column: EditableColumnModel) => new ImageColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Integer]] = (column: EditableColumnModel) => new IntegerColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.PKey]] = (column: EditableColumnModel) => new PKeyColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.MultiSelect]] = (column: EditableColumnModel) => new MultiSelectColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Color]] = (column: EditableColumnModel) => new ColorColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Lookup]] = (column: EditableColumnModel) => new LookupColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Icon]] = (column: EditableColumnModel) => new IconColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Sort]] = (column: EditableColumnModel) => new SortColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Text]] = (column: EditableColumnModel) => new TextColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Type]] = (column: EditableColumnModel) => new TypeColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.YesNo]] = (column: EditableColumnModel) => new YesNoColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Memo]] = (column: EditableColumnModel) => new MemoColumnEditor(column);\r\n this._columnTypeToEditor[ColumnTypes[ColumnTypes.Password]] = (column: EditableColumnModel) => new PasswordColumnEditor(column);\r\n\r\n ColumnEditorFactory.instance = this;\r\n } else {\r\n throw new Error(\"Instance already initialized\");\r\n }\r\n }\r\n\r\n static get Instance(): ColumnEditorFactory {\r\n if (ColumnEditorFactory.instance === null) {\r\n ColumnEditorFactory.allowInstantiation = true;\r\n ColumnEditorFactory.instance = new ColumnEditorFactory();\r\n ColumnEditorFactory.allowInstantiation = false;\r\n }\r\n\r\n return ColumnEditorFactory.instance;\r\n }\r\n\r\n GetEditor(column: EditableColumnModel): ColumnEditor {\r\n let columnEditorFunction = this._systemFieldToEditor[column.Name.toUpperCase()];\r\n\r\n if (columnEditorFunction) {\r\n return columnEditorFunction(column);\r\n }\r\n\r\n if (column.IsSystem || column.IsReadOnly) {\r\n if (column.TypeName == ColumnTypes[ColumnTypes.Image]) {\r\n return new NonEditableImageColumnEditor(column);\r\n }\r\n return new NonEditableColumnEditor(column);\r\n }\r\n\r\n return this._columnTypeToEditor[column.TypeName](column);\r\n }\r\n}","import {FlagResolver} from \"Core/Common/FlagResolver\";\r\nimport {FieldFlags} from \"Core/Common/Enums/FieldFlags\";\r\n\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {TranslationFieldEditor} from \"Core/Components/TranslationFieldEditor/TranslationFieldEditor\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {ColumnEditorFactory} from \"LookupEditor/Utils/ColumnEditorFactory\";\r\nimport {ColumnEditor} from \"LookupEditor/ColumnEditors/Base/ColumnEditor\";\r\nimport {IValueUpdater} from \"LookupEditor/Interfaces/IValueUpdater\";\r\nimport { LookupFieldModel } from \"LookupEditor/Store/Models/LookupModel\";\r\nimport {ZIndexManager} from \"../../Core/Common/ZIndexManager\";\r\n\r\nexport class EditableColumnModel {\r\n\tprivate _id: number;\r\n\tprivate _name: string;\r\n\tprivate _nameTranslation: string;\r\n\tprivate _valFieldId: number;\r\n\tprivate _valTableId: number;\r\n\tprivate _isPrimaryKey: boolean;\r\n\tprivate _isRequired: boolean;\r\n\tprivate _type: string;\r\n\tprivate _flags: number;\r\n\tprivate _columnEditor: ColumnEditor;\r\n\tprivate _owner: any;\r\n\tprivate _fieldTableId: number;\r\n\tprivate _format: string;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(fieldTableId: number, field: LookupFieldModel) {\r\n\t\tthis._id = field.Id;\r\n\t\tthis._name = field.Name;\r\n\t\tthis._nameTranslation = field.NameTranslated;\r\n\t\tthis._valFieldId = field.ValFieldId;\r\n\t\tthis._valTableId = field.ValTableId;\r\n\t\tthis._isPrimaryKey = field.IsPrimaryKey;\r\n\t\tthis._isRequired = FlagResolver.ContainsFlag(FieldFlags.Required, field.Flags);;\r\n\t\tthis._type = field.Type;\r\n\t\tthis._flags = field.Flags;\r\n\t\tthis._format = field.FormatName;\r\n\t\tthis._fieldTableId = fieldTableId;\r\n\r\n\r\n\t\tthis._columnEditor = ColumnEditorFactory.Instance.GetEditor(this);\r\n\t}\r\n\r\n\tget Id() {\r\n\t\treturn this._id;\r\n\t}\r\n\r\n\tget Name() {\r\n\t\treturn this._name;\r\n\t}\r\n\r\n\tget ValFieldId() {\r\n\t\treturn this._valFieldId;\r\n\t}\r\n\r\n\tget ValTableId() {\r\n\t\treturn this._valTableId;\r\n\t}\r\n\r\n\tget IsPrimaryKey() {\r\n\t\treturn this._isPrimaryKey;\r\n\t}\r\n\r\n\tget IsRequired() {\r\n\t\treturn this._isRequired;\r\n\t}\r\n\r\n\tget TypeName() {\r\n\t\treturn this._type;\r\n\t}\r\n\r\n\tget Flags() {\r\n\t\treturn this._flags;\r\n\t}\r\n\r\n\tget ColumnEditor() {\r\n\t\treturn this._columnEditor;\r\n\t}\r\n\r\n\tget TableId() {\r\n\t\treturn this._fieldTableId;\r\n\t}\r\n\r\n\tget HasTranslations() {\r\n\t\treturn FlagResolver.ContainsFlag(FieldFlags.Translate, this._flags);\r\n\t}\r\n\r\n\tget IsReadOnly() {\r\n\t\treturn (FieldFlags.ReadOnly & this.Flags) === FieldFlags.ReadOnly;\r\n\t}\r\n\r\n\tget IsSystem() {\r\n\t\treturn (FieldFlags.System & this.Flags) === FieldFlags.System;\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn this._columnEditor.GetTemplateName();\r\n\t}\r\n\r\n\tAfterRender(owner: IValueUpdater, el) {\r\n\t\tthis.ColumnEditor.AfterRender(el, owner, this.Name, this._format);\r\n\t}\r\n}\r\n","import * as koAMD from \"knockout-amd-helpers\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {LookupModel} from \"LookupEditor/Store/Models/LookupModel\"\r\nimport {RecordDataModel} from \"Core/Screens/Models/RecordDataModel\";\r\nimport {EditableColumnModel} from \"LookupEditor/Models/EditableColumnModel\";\r\nimport {EditableRowModel} from \"LookupEditor/Models/EditableRowModel\";\r\nimport {SystemFields} from \"LookupEditor/Enums/SystemFields\";\r\nimport {ColumnTypes} from \"LookupEditor/Enums/ColumnTypes\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Constant\";\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ILookupGridModelOptions} from \"../Interfaces/ILookupGridModelOptions\";\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class LookupGridModel extends Event {\r\n private _tableId: KnockoutObservable<number>;\r\n private _columns: KnockoutObservableArray<EditableColumnModel>;\r\n private _rows: KnockoutObservableArray<EditableRowModel>;\r\n\r\n AllRecordsCount: KnockoutObservable<number>;\r\n\r\n AvailableRecordsPerPage: KnockoutObservableArray<any>;\r\n SelectedRecordsPerPage: KnockoutObservable<number>;\r\n IsPrevPageAvailable: KnockoutComputed<boolean>;\r\n IsNextPageAvailable: KnockoutComputed<boolean>;\r\n\r\n CurrentPage: KnockoutObservable<number>;\r\n PagesCount: KnockoutComputed<number>;\r\n\r\n IsAnyRecordChanged: KnockoutComputed<boolean>;\r\n IsAnyRecordSelected: KnockoutComputed<boolean>;\r\n\r\n constructor(options?: ILookupGridModelOptions) {\r\n super();\r\n\r\n const config = this.BuildConfig(options);\r\n\r\n this._tableId = ko.observable(0);\r\n this._columns = ko.observableArray([]);\r\n this._rows = ko.observableArray([]);\r\n\r\n const lookupTable = config.Model;\r\n const prevCurrentValue = config.CurrentPage;\r\n\r\n if (lookupTable) {\r\n this._tableId = ko.observable(lookupTable.Id);\r\n lookupTable.Fields.forEach((field) => {\r\n if (field.Type !== ColumnTypes[ColumnTypes.Binary] && !field.IsHidden) {\r\n this._columns.push(\r\n new EditableColumnModel(field.ValTableId || lookupTable.Id, field)\r\n );\r\n }\r\n });\r\n }\r\n\r\n this.AllRecordsCount = ko.observable(0);\r\n\r\n this.AvailableRecordsPerPage = ko.observableArray([\r\n {Display: '15', Value: 15},\r\n {Display: '25', Value: 25},\r\n {Display: '50', Value: 50},\r\n {Display: LABELS.ALL, Value: -1}\r\n ]);\r\n\r\n this.SelectedRecordsPerPage = ko.observable(config.RecordsPerPage);\r\n this.SelectedRecordsPerPage.subscribe(newSelectedValue => {\r\n this.Trigger(EVENTS.ON_SELECT_CHANGED, newSelectedValue);\r\n });\r\n\r\n this.CurrentPage = ko.observable(config.CurrentPage);\r\n this.CurrentPage.subscribe(newValue => {\r\n var selectedPage = this.CurrentPage();\r\n if (!isNaN(newValue) && Math.abs(newValue) <= this.PagesCount()) {\r\n selectedPage = newValue === 0 ? 1 : Math.floor(Math.abs(newValue));\r\n this.CurrentPage(selectedPage);\r\n this.Trigger(EVENTS.ON_PAGE_CHANGED, selectedPage);\r\n } else {\r\n this.CurrentPage(prevCurrentValue);\r\n }\r\n });\r\n\r\n this.PagesCount = ko.computed(() => {\r\n return this.SelectedRecordsPerPage() === -1 ? 1 : Math.ceil(this.AllRecordsCount() / this.SelectedRecordsPerPage());\r\n });\r\n\r\n this.IsPrevPageAvailable = ko.computed(() => {\r\n return this.CurrentPage() !== 1;\r\n });\r\n\r\n this.IsNextPageAvailable = ko.computed(() => {\r\n return this.CurrentPage() !== this.PagesCount();\r\n });\r\n\r\n this.IsAnyRecordChanged = ko.computed(() => {\r\n return _.any(this._rows(), (row: EditableRowModel) => row.IsRecordChanged());\r\n });\r\n\r\n\r\n this.IsAnyRecordSelected = ko.computed(() => {\r\n return _.any(this._rows(), (row: EditableRowModel) => row.IsRecordSelected());\r\n });\r\n }\r\n\r\n get TableId(): number {\r\n return this._tableId();\r\n }\r\n\r\n get Columns(): EditableColumnModel[] {\r\n return this._columns();\r\n }\r\n\r\n set Columns(items) {\r\n this._columns(items);\r\n }\r\n\r\n set AllRecordsSelected(selectAllRecords: boolean) {\r\n this._rows().forEach((row) => {\r\n row.IsRecordSelected(selectAllRecords);\r\n });\r\n }\r\n\r\n set Data(dataTable: Array<RecordDataModel>) {\r\n this._rows([]);\r\n\r\n dataTable.forEach((dataObject) => {\r\n this.AddRow(new EditableRowModel(dataObject));\r\n });\r\n }\r\n\r\n get SelectedRecordsId(): Array<number> {\r\n var primaryKeyField = _.findWhere(this._columns(), {IsPrimaryKey: true});\r\n\r\n if (primaryKeyField === undefined) {\r\n var notifier = new Notifier(null);\r\n notifier.Warning(NOTIFICATIONS.NO_PRIMARY_KEY);\r\n return null;\r\n }\r\n\r\n var selectedRecords: EditableRowModel[] = _.filter(this._rows(), (row) => {\r\n return row.IsRecordSelected()\r\n });\r\n\r\n var selectedRecordsId = selectedRecords.map((record) => {\r\n return parseInt(record.GetValue(primaryKeyField.Name));\r\n });\r\n\r\n return selectedRecordsId;\r\n }\r\n\r\n get ChangedRecords(): EditableRowModel[] {\r\n return _.filter(this._rows(), (row) => {\r\n return row.IsRecordChanged()\r\n });\r\n }\r\n\r\n AddColumn(column: EditableColumnModel) {\r\n this._columns.push(column);\r\n }\r\n\r\n AddRow(row: EditableRowModel) {\r\n this._rows.push(row);\r\n }\r\n\r\n MoveRowUp(row: EditableRowModel) {\r\n var selectedRowIndex = this._rows.indexOf(row);\r\n var selectedRowSortValue = row.GetValue(SystemFields[SystemFields.SORT]);\r\n\r\n var upperRowIndex = selectedRowIndex - 1;\r\n if (upperRowIndex < 0) {\r\n return;\r\n }\r\n var upperRow = this._rows()[upperRowIndex];\r\n var upperRowSortValue = upperRow.GetValue(SystemFields[SystemFields.SORT]);\r\n\r\n row.SetValue(SystemFields[SystemFields.SORT], upperRowSortValue);\r\n upperRow.SetValue(SystemFields[SystemFields.SORT], selectedRowSortValue);\r\n\r\n this._rows()[selectedRowIndex] = upperRow;\r\n this._rows()[upperRowIndex] = row;\r\n\r\n row.IsRecordChanged(true);\r\n upperRow.IsRecordChanged(true);\r\n\r\n upperRow.GetColumnData(SystemFields[SystemFields.SORT]).Changed = true;\r\n row.GetColumnData(SystemFields[SystemFields.SORT]).Changed = true;\r\n\r\n this._rows(this._rows());\r\n }\r\n\r\n MoveRowDown(row: EditableRowModel) {\r\n var selectedRowIndex = this._rows.indexOf(row);\r\n var selectedRowSortValue = row.GetValue(SystemFields[SystemFields.SORT]);\r\n\r\n var lowerRowIndex = selectedRowIndex + 1;\r\n if (lowerRowIndex === this._rows().length) {\r\n return;\r\n }\r\n var lowerRow = this._rows()[lowerRowIndex];\r\n var upperRowSortValue = lowerRow.GetValue(SystemFields[SystemFields.SORT]);\r\n\r\n row.SetValue(SystemFields[SystemFields.SORT], upperRowSortValue);\r\n lowerRow.SetValue(SystemFields[SystemFields.SORT], selectedRowSortValue);\r\n\r\n this._rows()[selectedRowIndex] = lowerRow;\r\n this._rows()[lowerRowIndex] = row;\r\n\r\n lowerRow.GetColumnData(SystemFields[SystemFields.SORT]).Changed = true;\r\n row.GetColumnData(SystemFields[SystemFields.SORT]).Changed = true;\r\n\r\n row.IsRecordChanged(true);\r\n lowerRow.IsRecordChanged(true);\r\n\r\n this._rows(this._rows());\r\n }\r\n\r\n ShowFirstPage() {\r\n this.CurrentPage(1);\r\n }\r\n\r\n ShowPrevPage() {\r\n if (+this.CurrentPage() > 1) {\r\n this.CurrentPage(+this.CurrentPage() - 1);\r\n }\r\n }\r\n\r\n ShowNextPage() {\r\n if (+this.CurrentPage() < this.PagesCount()) {\r\n this.CurrentPage(+this.CurrentPage() + 1);\r\n }\r\n }\r\n\r\n ShowLastPage() {\r\n if (this.PagesCount() > 1) {\r\n this.CurrentPage(this.PagesCount());\r\n }\r\n }\r\n\r\n Reset() {\r\n this._columns([]);\r\n this._rows([]);\r\n }\r\n\r\n private BuildConfig(options?: ILookupGridModelOptions): ILookupGridModelOptions {\r\n return {\r\n Model: options && options.Model || null,\r\n CurrentPage: options && options.CurrentPage || 1,\r\n RecordsPerPage: options && options.RecordsPerPage || 15\r\n };\r\n }\r\n}","///<reference path=\"../libs/typings/knockout.d.ts\" />\r\n///<reference path=\"../libs/typings/x-editable.d.ts\" />\r\n///<reference path=\"../libs/typings/bootstrap-switch.d.ts\" />\r\n\r\nimport * as ko from \"knockout\";\r\nimport * as moment from 'moment';\r\nimport { RecordDataModel } from \"Core/Screens/Models/RecordDataModel\";\r\n\r\nimport {GenericDeserialize} from 'libs/cerialize'\r\n\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport {TreeModel} from \"LookupEditor/Models/TreeModel\";\r\nimport {TreeNodeModel} from \"LookupEditor/Models/TreeNodeModel\";\r\nimport {TableModel} from \"LookupEditor/Store/Models/TableModel\";\r\nimport {LookupGridModel} from \"LookupEditor/Models/LookupGridModel\";\r\nimport {LookupModel} from \"LookupEditor/Store/Models/LookupModel\";\r\nimport {LookupEditorStore} from \"LookupEditor/Store/LookupEditorStore\";\r\nimport {TablesStore} from \"LookupEditor/Store/TablesStore\";\r\nimport {IRetrieveRecordsModel} from \"LookupEditor/Store/Interfaces/IRetrieveRecordsModel\";\r\nimport {RetrievedRecordsModel} from \"LookupEditor/Store/Models/RetrievedRecordsModel\";\r\nimport {IDeleteRecordsRequestModel} from \"LookupEditor/Store/Interfaces/IDeleteRecordsRequestModel\";\r\nimport {ISaveLookupRequestModel} from \"LookupEditor/Store/Interfaces/ISaveLookupRequestModel\";\r\nimport {EditableColumnModel} from \"LookupEditor/Models/EditableColumnModel\";\r\nimport {EditableRowModel} from \"LookupEditor/Models/EditableRowModel\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS, TABLE_TYPES} from \"Core/Constant\";\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen'\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {NOTIFICATIONS, LABELS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {NewRecordScreen} from \"LookupEditor/NewRecord/NewRecordScreen\";\r\nimport {NewRecordModel} from \"LookupEditor/NewRecord/Models/NewRecordModel\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport { FieldDataModel } from \"Core/Screens/Models/RecordDataModel\";\r\n\r\nimport EditorTemplate from 'LookupEditor/Templates/Editor.html';\r\nimport TreeTemplate from 'LookupEditor/Templates/Tree.html';\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {util} from \"../libs/rappid/build/rappid\";\r\nimport number = util.interpolate.number;\r\nimport {ZIndexManager} from \"../Core/Common/ZIndexManager\";\r\n\r\nko.templates[\"LookupEditor/Templates/Editor\"] = EditorTemplate;\r\nko.templates[\"LookupEditor/Templates/Tree\"] = TreeTemplate;\r\n\r\nexport class LookupEditor extends Event {\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _container: HTMLElement;\r\n private _cdTablesId: number;\r\n private _isAllRecordsSelected: KnockoutObservable<boolean>;\r\n private _treeModel: KnockoutObservable<TreeModel>;\r\n private _lookupTableModel: LookupModel;\r\n private _gridModel: KnockoutObservable<LookupGridModel>;\r\n private _isTreeVisible: KnockoutObservable<boolean>;\r\n private _isGridVisible: KnockoutObservable<boolean>;\r\n private _isAnyRecordSelected: KnockoutComputed<boolean>;\r\n private _searchScreen: SearchScreen;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _searchValue: KnockoutObservable<string>;\r\n private _newRecordScreen: NewRecordScreen;\r\n private _labels = LABELS;\r\n\r\n IsAnyRecordChanged: KnockoutComputed<boolean>;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._isReady = ko.observable(false);\r\n this._isAllRecordsSelected = ko.observable(false);\r\n this._treeModel = ko.observable(null);\r\n this._gridModel = ko.observable(new LookupGridModel());\r\n this._isTreeVisible = ko.observable(false);\r\n this._isGridVisible = ko.observable(false);\r\n this._isAnyRecordSelected = ko.computed(() => {\r\n return this._gridModel().IsAnyRecordSelected();\r\n }, this);\r\n\r\n this.IsAnyRecordChanged = ko.computed(() => {\r\n return this._gridModel().IsAnyRecordChanged();\r\n });\r\n\r\n this._searchScreen = null;\r\n this._newRecordScreen = null;\r\n }\r\n\r\n Render(container: string) {\r\n BlockUI.Block();\r\n LookupEditorStore.GetMetadata()\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n var notifier = new Notifier(null);\r\n notifier.Warning(result.ErrorMessage);\r\n } else {\r\n this._cdTablesId = result.ResultObject.CdTablesEntityId;\r\n\r\n var rootNodes = result.ResultObject.Entities.map(entity => {\r\n var treeModel = new TreeNodeModel();\r\n treeModel.Id = entity.Id;\r\n treeModel.Name = entity.TranslatedName || entity.Name;\r\n treeModel.Type = entity.Type;\r\n treeModel.Icon = entity.Icon;\r\n treeModel.EntityColor = entity.EntityColor;\r\n treeModel.HasLookups = entity.HasLookups;\r\n treeModel.CanExpand = entity.HasLookups;\r\n return treeModel;\r\n });\r\n\r\n var treeModel = new TreeModel(rootNodes);\r\n this.RenderTree(treeModel);\r\n\r\n this.OnReady(container);\r\n }\r\n });\r\n }\r\n\r\n ShowSearchForm(): void {\r\n if (!this._cdTablesId) {\r\n var notifier = new Notifier();\r\n notifier.Failed(NOTIFICATIONS.CD_TABLE_NOT_FOUND);\r\n } else {\r\n this._searchScreen = new SearchScreen({\r\n EntityId: this._cdTablesId,\r\n SearchTerm: this._searchTerm(),\r\n ButtonAdd: false,\r\n CloseAfterSelectingRecord: false\r\n });\r\n this._searchScreen.On(\"RECORD_SELECTED\", this, (eventArgs) => {\r\n var recordTypeName = eventArgs.data.TypeName;\r\n\r\n var recordId = eventArgs.data.RecordId;\r\n\r\n this._searchScreen.Cancel();\r\n if (recordTypeName.toUpperCase() === TABLE_TYPES.Lookup.toUpperCase()) {\r\n this.LoadRelatedTables(recordId, TABLE_TYPES.Lookup);\r\n this.GetLookup(recordId);\r\n } else {\r\n this.LoadEntity(recordId);\r\n }\r\n });\r\n this._searchScreen.Show();\r\n }\r\n }\r\n\r\n SelectOrDiselectRecords() {\r\n this._gridModel().AllRecordsSelected = this._isAllRecordsSelected();\r\n return true;\r\n }\r\n\r\n NewRecord() {\r\n NewRecordScreen.GenerateScreen(this._lookupTableModel)\r\n .then(newRecordScreen => {\r\n\r\n newRecordScreen.ShowInModal('newLookupRecord');\r\n\r\n newRecordScreen.On('SAVE_DATA', this, eventArgs => this.AddRecord(eventArgs.data));\r\n\r\n this._newRecordScreen = newRecordScreen;\r\n });\r\n }\r\n\r\n SaveChanges() {\r\n var tableId = this._gridModel().TableId;\r\n var columns = this._gridModel().Columns;\r\n var changedRecords: EditableRowModel[] = this._gridModel().ChangedRecords;\r\n var changedRecordsData = this.GetRecordsData(columns, changedRecords);\r\n\r\n var requestData: ISaveLookupRequestModel = {\r\n TableId: tableId,\r\n ChangedRecords: changedRecordsData\r\n };\r\n BlockUI.Block();\r\n LookupEditorStore.SaveChanges(requestData)\r\n .always(() => BlockUI.Unblock())\r\n .then(result => {\r\n this.ShowWarning(result.Warning);\r\n this.ShowSaveResult()\r\n })\r\n .fail(error => this.ShowError(error));\r\n }\r\n\r\n CancelChanges() {\r\n this.ShowGridForcibly(this._lookupTableModel);\r\n }\r\n\r\n DeleteRecords() {\r\n var selectedRecordsId = this._gridModel().SelectedRecordsId;\r\n if (selectedRecordsId === null) {\r\n return;\r\n }\r\n if (selectedRecordsId.length === 0) {\r\n var notifier = new Notifier(null);\r\n notifier.Warning(NOTIFICATIONS.NO_SELECTED_RECORDS);\r\n return;\r\n }\r\n\r\n let dialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ARE_YOUR_SURE_TO_DELETE_RECORDS,\r\n Type: ConfirmationTypes.Question,\r\n Width: 500,\r\n MinHeight: 160\r\n });\r\n\r\n dialog.On(CONFIRMATION_EVENTS.CONFIRM_SELECTED, this, () => {\r\n var lookupTableId = this._lookupTableModel.Id;\r\n\r\n this.DeleteRecordsFromDb(lookupTableId, selectedRecordsId);\r\n });\r\n\r\n dialog.Show();\r\n }\r\n\r\n private RenderTree(tree: TreeModel) {\r\n this._treeModel(tree);\r\n this._treeModel().On(EVENTS.ON_TREE_NODE_SELECTED, self, args => {\r\n var nodeModel = args.data.NodeModel;\r\n if (nodeModel.Type === 'Lookup') {\r\n this.GetLookup(nodeModel.Id);\r\n }\r\n });\r\n }\r\n\r\n private LoadEntity(entityId: number) {\r\n BlockUI.Block();\r\n TablesStore.GetEntity(entityId)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n var notifier = new Notifier(null);\r\n notifier.Failed(result.ErrorMessage);\r\n } else {\r\n this._searchScreen.Close();\r\n this.UpdateTree(result.ResultList);\r\n }\r\n }).fail(() => new Notifier().Failed(NOTIFICATIONS.SOMETHING_WENT_WRONG))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private LoadRelatedTables(tableId: number, tableType: string) {\r\n BlockUI.Block();\r\n TablesStore.GetRelatedTables(tableId, tableType, false)\r\n .then(nodes => {\r\n this.UpdateTree(nodes);\r\n }).fail(() => new Notifier().Failed(NOTIFICATIONS.SOMETHING_WENT_WRONG))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private UpdateTree(tables: Array<TableModel>) {\r\n var rootNodes = tables.map(entity => {\r\n var treeNodeModel = new TreeNodeModel();\r\n treeNodeModel.Id = entity.Id;\r\n treeNodeModel.Name = entity.Name;\r\n treeNodeModel.Type = entity.Type;\r\n treeNodeModel.HasLookups = entity.HasLookups;\r\n treeNodeModel.CanExpand = entity.HasLookups;\r\n return treeNodeModel;\r\n });\r\n\r\n var treeModel = new TreeModel(rootNodes);\r\n this.RenderTree(treeModel);\r\n }\r\n\r\n private GetLookup(lookupId: number) {\r\n BlockUI.Block();\r\n TablesStore.GetLookup(lookupId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n var notifier = new Notifier(null);\r\n notifier.Warning(result.ErrorMessage);\r\n } else {\r\n this.ShowGrid(GenericDeserialize(result.ResultObject, LookupModel));\r\n }\r\n });\r\n }\r\n\r\n private ShowGrid(lookup: LookupModel) {\r\n if (this._gridModel().IsAnyRecordChanged()) {\r\n var notifier = new Notifier(null);\r\n notifier.Warning(NOTIFICATIONS.SAVE_OR_DISCARD_CHANGES);\r\n return;\r\n }\r\n\r\n this.ShowGridForcibly(lookup);\r\n }\r\n\r\n private ShowGridForcibly(lookup: LookupModel) {\r\n this.UpdateGrid(lookup, this._gridModel().CurrentPage(), this._gridModel().SelectedRecordsPerPage());\r\n this.GetDataForLookup();\r\n }\r\n\r\n private GetRecordsData(columns: EditableColumnModel[], changedRecords: EditableRowModel[]): Array<any> {\r\n var primaryKeyField = _.findWhere(columns, {IsPrimaryKey: true});\r\n\r\n if (!primaryKeyField) {\r\n return null;\r\n }\r\n\r\n var primaryKeyFieldName = primaryKeyField.Name;\r\n\r\n var records = [];\r\n changedRecords.forEach(record => {\r\n var recordData = {\r\n RecordId: 0,\r\n Data: []\r\n };\r\n recordData.RecordId = parseInt(record.GetColumnData(primaryKeyFieldName).FieldValue);\r\n columns\r\n .filter(field => field.TypeName !== \"Image\")\r\n .filter(field => field.Name === primaryKeyFieldName || record.GetColumnData(field.Name) && record.GetColumnData(field.Name).Changed)\r\n .forEach(field => {\r\n const columnData = record.GetColumnData(field.Name);\r\n\r\n let value = columnData.FieldValue;\r\n if (columnData.FieldTypeName === 'Decimal' && columnData.FieldTypeFormat === 'Percentage') {\r\n value = String(parseFloat(columnData.FieldValue.replace(',', '.')).toFixed(columnData.FieldSize < 2 ? 0 : columnData.FieldSize));\r\n if (Number.isNaN(Number(value))) {\r\n value = null;\r\n }\r\n }\r\n\r\n const fieldData = {\r\n FieldName: field.Name,\r\n FieldValue: value,\r\n Translations: []\r\n };\r\n\r\n if (columnData.FieldValueTranslations && columnData.FieldValueTranslations.length > 0) {\r\n columnData.FieldValueTranslations = columnData.FieldValueTranslations.filter(translation => translation.LanguageId != 0);\r\n fieldData.Translations = columnData.FieldValueTranslations.map(translation => {\r\n return {\r\n LanguageShortName: TranslationManager.Instance.GetLanguageById(translation.LanguageId).ShortName,\r\n Value: translation.Value\r\n };\r\n })\r\n }\r\n\r\n recordData.Data.push(fieldData);\r\n });\r\n records.push(recordData);\r\n });\r\n\r\n return records;\r\n }\r\n\r\n private GetDataForLookup() {\r\n var pageNumber = this._gridModel().CurrentPage(),\r\n recordsPerPage = this._gridModel().SelectedRecordsPerPage();\r\n\r\n const requestData: IRetrieveRecordsModel = {\r\n TableId: this._lookupTableModel.Id,\r\n PageNumber: pageNumber,\r\n RecordsPerPage: recordsPerPage,\r\n SearchValue: this._searchValue()\r\n };\r\n\r\n BlockUI.Block();\r\n LookupEditorStore.GetLookupData(requestData)\r\n .then(retrievedRecordsModel => {\r\n if (retrievedRecordsModel.Records.length > 0 || pageNumber == 1) {\r\n this.ShowGetDataForLookupResult(retrievedRecordsModel)\r\n } else {\r\n this._gridModel().CurrentPage(pageNumber - 1);\r\n }\r\n })\r\n .fail(err => {\r\n let notifier = new Notifier();\r\n notifier.Failed(err.message);\r\n })\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private ShowGetDataForLookupResult(model: RetrievedRecordsModel) {\r\n if (this._searchValue()) {\r\n let columns = this._gridModel().Columns;\r\n this._gridModel().Columns = _.without(columns, _.findWhere(columns, {_name: 'SORT'}));\r\n } else {\r\n if (this._gridModel().CurrentPage() == 0) {\r\n return false;\r\n } else {\r\n this.UpdateGrid(this._lookupTableModel, this._gridModel().CurrentPage(), this._gridModel().SelectedRecordsPerPage());\r\n }\r\n }\r\n const activeLanguesId = model.Languages.map(l => l.Id);\r\n TranslationManager.Instance.UpdateLanguages(activeLanguesId)\r\n .then(() => this.RenderGrid(model));\r\n }\r\n\r\n private RenderGrid(retrievedRecordsModel: RetrievedRecordsModel): void {\r\n _.each(retrievedRecordsModel.Records, (record) => {\r\n _.each(record.Fields, (field) => {\r\n if (field.FieldTypeName == FIELD_TYPES.Memo && field.FieldValueTranslations.length > 0) {\r\n\r\n const defaultLanguageToAdd = {\r\n LanguageId: retrievedRecordsModel.Languages[0].Id,\r\n LanguageShortName: retrievedRecordsModel.Languages[0].ShortName,\r\n Value: field.FieldValue\r\n\r\n };\r\n field.FieldValueTranslations.unshift(defaultLanguageToAdd);\r\n }\r\n field.FieldValue = this.GetConvertedValue(field);\r\n });\r\n });\r\n this._gridModel().AllRecordsCount(retrievedRecordsModel.AllRecordsCount);\r\n this._gridModel().Data = retrievedRecordsModel.Records;\r\n this._isGridVisible(true);\r\n }\r\n\r\n private GetConvertedValue(field: FieldDataModel): string {\r\n const value = field.FieldValue;\r\n const fieldType = field.FieldTypeName;\r\n if (!value) {\r\n return value;\r\n } else if (fieldType === FIELD_TYPES.DateTime) {\r\n return moment(FormatConverter.CorrectTimezone(value)).format();\r\n } else if (fieldType === FIELD_TYPES.Date) {\r\n return moment(value).format();\r\n } else if (fieldType === FIELD_TYPES.Time) {\r\n return moment(FormatConverter.CorrectTimezone(value)).format(DATE_FORMATS.TIME.Format);\r\n } else if (fieldType === FIELD_TYPES.TimeSpan) {\r\n return moment(value).format(DATE_FORMATS.TIME_SPAN.Format);\r\n }\r\n return value;\r\n }\r\n\r\n private DeleteRecordsFromDb(lookupId: number, selectedRecordsId: Array<number>): void {\r\n var requestData: IDeleteRecordsRequestModel = {\r\n TableId: lookupId,\r\n RecordsId: selectedRecordsId\r\n };\r\n BlockUI.Block();\r\n LookupEditorStore.DeleteRecords(requestData)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(deleteResult => this.ShowDeleteResult(deleteResult));\r\n }\r\n\r\n private ShowDeleteResult(deleteResult: any) {\r\n if (!deleteResult.IsSuccessfull) {\r\n var notifier = new Notifier(null);\r\n notifier.Warning(deleteResult.ErrorMessage);\r\n }\r\n this.GetDataForLookup();\r\n }\r\n\r\n private UpdateGrid(model: LookupModel, currentPage?: number, recordsPerPage?: number): LookupEditor {\r\n if (this._lookupTableModel && model && this._lookupTableModel.Id !== model.Id)\r\n {\r\n this._searchValue(\"\");\r\n currentPage = 1;\r\n }\r\n\r\n this._lookupTableModel = model;\r\n this._isAllRecordsSelected(false);\r\n this._gridModel(new LookupGridModel({\r\n Model: model,\r\n CurrentPage: currentPage,\r\n RecordsPerPage: recordsPerPage\r\n }));\r\n this._gridModel().SelectedRecordsPerPage(recordsPerPage);\r\n\r\n this._gridModel().One(EVENTS.ON_SELECT_CHANGED, this, (eventArgs: any) => {\r\n this.GetDataForLookup();\r\n }).One(EVENTS.ON_PAGE_CHANGED, this, (eventArgs: any) => {\r\n this.GetDataForLookup();\r\n });\r\n return this;\r\n }\r\n\r\n private AddRecord(newRecordModel: NewRecordModel) {\r\n BlockUI.Block();\r\n LookupEditorStore.AddRecord(newRecordModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n this._newRecordScreen.Close();\r\n this._newRecordScreen = null;\r\n new Notifier().Success(NOTIFICATIONS.RECORD_SAVED);\r\n this.ShowGridForcibly(this._lookupTableModel);\r\n }).fail(error => this.ShowError(error));\r\n }\r\n\r\n private ShowSaveResult() {\r\n const notifier = new Notifier(null);\r\n notifier.Success(NOTIFICATIONS.ALL_RECORDS_SAVED);\r\n this.ShowGridForcibly(this._lookupTableModel);\r\n }\r\n\r\n private ShowError(error) {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n }\r\n\r\n private ShowWarning(warning) {\r\n if(warning) {\r\n new Notifier().Warning(warning);\r\n }\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'LookupEditor/Templates/Editor';\r\n }\r\n\r\n OnReady(target: string) {\r\n this._container = document.getElementById(target);\r\n this._searchTerm = ko.observable(\"\");\r\n this._searchValue = ko.observable(\"\");\r\n\r\n ko.cleanNode(this._container);\r\n ko.applyBindings(this, this._container);\r\n }\r\n\r\n AfterRender() {\r\n this._isReady(true);\r\n }\r\n}","// Module\nvar code = \"<div id=\\\"wrapper\\\" class=\\\"full-height\\\"> <div class=\\\"lookup-editor-screen\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"lookup-editor-screen-content\\\"> <div class=\\\"actionBarSubForm\\\"> <div role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"action-bar-wrapper lookup-editor--actionBar\\\"> <div class=\\\"bar-left\\\"> <input data-bind=\\\"value: _searchTerm, enterKey: ShowSearchForm, valueUpdate: 'afterkeydown', hasFocus: true, attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl\\\" utocomplete=\\\"off\\\"> <a data-bind=\\\"click: ShowSearchForm\\\" class=\\\"subFormControl\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> <div data-bind=\\\"visible: _isGridVisible\\\"> <a data-bind=\\\"click: NewRecord\\\" class=\\\"btn btn-primary subFormControl lookup-editor__new-record\\\"> <i class=\\\"fa fa-plus\\\"></i> <!-- ko text: _labels.NEW --><!-- /ko --> </a> <a data-bind=\\\"click: DeleteRecords, css: {disabled: !_isAnyRecordSelected()}\\\" class=\\\"btn red delete-button subFormControl lookup-editor__delete-records\\\"> <i class=\\\"fa fa-trash\\\"></i> <!-- ko text: _labels.DELETE --><!-- /ko --> </a> <a data-bind=\\\"click: SaveChanges, css: {disabled: !IsAnyRecordChanged()}\\\" class=\\\"btn green subFormControl lookup-editor__save-changes\\\"> <i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE_CHANGES --><!-- /ko --> </a> <a data-bind=\\\"click: CancelChanges, css: {disabled: !IsAnyRecordChanged()}\\\" class=\\\"btn red ui-icon-cancel subFormControl lookup-editor__cancel-changes\\\"> <i class=\\\"fa fa-close\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a> </div> </div> <div class=\\\"bar-right entity-heading\\\"> <div class=\\\"entity-icon-container\\\"> <span class=\\\"fa fa-table\\\" aria-hidden=\\\"true\\\"></span> </div> <div class=\\\"entityName\\\"> <!-- ko text: _labels.LOOKUP_EDITOR --><!-- /ko --> </div> </div> </div> </div> </div> </div> <div class=\\\"full-width-block content-block transition\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body clearfix\\\"> <div data-bind=\\\"screenHeight: {$element, _isGridVisible}\\\" class=\\\"fourth-column lookup-editor box-shadow-wrapper\\\"> <!-- ko with: _treeModel --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> </div> <div data-bind=\\\"css: {'not-selected': !_isGridVisible()}\\\" class=\\\"rightColumn pull-right wide-column box-shadow-wrapper\\\"> <!-- ko if: _isGridVisible --> <div data-bind=\\\"with:_gridModel\\\"> <div class=\\\"row row-simetric\\\"> <div class=\\\"pull-left\\\"> <div class=\\\"dataTables_length\\\"> <label> <span><!-- ko text: $parent._labels.SHOW --><!-- /ko --></span> <select data-bind=\\\"options: AvailableRecordsPerPage, optionsText: 'Display', optionsValue: 'Value', value: SelectedRecordsPerPage\\\" class=\\\"form-control input-sm input-xsmall input-inline\\\"></select> </label> </div> </div> <div class=\\\"pull-right\\\"> <div class=\\\"dataTables_filter\\\"> <label> <!-- ko text: $parent._labels.SEARCH_BY_NAME --><!-- /ko -->: <input data-bind=\\\"value: $parent._searchValue, enterKey: $parent.GetDataForLookup.bind($parent), valueUpdate: 'afterkeydown', hasFocus: true, attr: { placeholder: $parent._labels.SEARCH_WITH_DOTS }\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl\\\" utocomplete=\\\"off\\\"> <a data-bind=\\\"click: $parent.GetDataForLookup.bind($parent)\\\" class=\\\"subFormControl\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> </label> </div> </div> </div> <div class=\\\"grid flip-scroll table-responsive\\\"> <table class=\\\"table table-striped table-bordered table-advance table-hover flip-content vertical-align-m lookupTableContainer\\\"> <thead> <tr class=\\\"flip-content\\\"> <th> <input data-bind=\\\"checked: $root._isAllRecordsSelected, click: $root.SelectOrDiselectRecords.bind($root)\\\" type=\\\"checkbox\\\"> </th> <!--ko foreach:_columns--> <th data-bind=\\\"text: _nameTranslation || _name\\\"></th> <!--/ko--> </tr> </thead> <tbody data-bind=\\\"foreach:_rows\\\" class=\\\"tableContentContainer\\\"> <tr> <td> <input data-bind=\\\"checked: IsRecordSelected\\\" type=\\\"checkbox\\\"> </td> <!-- ko foreach: $parent._columns --> <td data-bind=\\\"css: $data._format, template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data, $parent)}\\\"></td> <!-- /ko --> </tr> </tbody> </table> </div> <!--ko if : PagesCount() > 1--> <div class=\\\"row row-simetric pagesCount\\\"> <div class=\\\"pull-right\\\"> <div class=\\\"dataTables_paginate paging_bootstrap_extended\\\"> <div class=\\\"pagination-panel\\\"> <!-- ko text: $parent._labels.PAGE --><!-- /ko --> <a data-bind=\\\"click: ShowFirstPage\\\" href=\\\"#\\\" class=\\\"btn btn-sm default prev\\\"> <i class=\\\"fa fa-angle-left\\\"></i> <i class=\\\"fa fa-angle-left\\\"></i> </a> <a data-bind=\\\"click: ShowPrevPage\\\" href=\\\"#\\\" class=\\\"btn btn-sm default prev\\\"> <i class=\\\"fa fa-angle-left\\\"></i> </a> <input data-bind=\\\"value: CurrentPage\\\" type=\\\"text\\\" class=\\\"pagination-panel-input form-control input-sm input-inline input-mini\\\" maxlenght=\\\"5\\\"> <!-- ko text: $parent._labels.OF --><!-- /ko --> <span data-bind=\\\"text: PagesCount\\\" class=\\\"pagination-panel-total\\\"></span> <a data-bind=\\\"click: ShowNextPage\\\" href=\\\"#\\\" class=\\\"btn btn-sm default next\\\"> <i class=\\\"fa fa-angle-right\\\"></i> </a> <a data-bind=\\\"click: ShowLastPage\\\" href=\\\"#\\\" class=\\\"btn btn-sm default prev\\\"> <i class=\\\"fa fa-angle-right\\\"></i> <i class=\\\"fa fa-angle-right\\\"></i> </a> </div> </div> </div> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: _isGridVisible --> <div class=\\\"no-item-selected\\\"> <span> <!-- ko text: _labels.NO_RECORD_SELECTED --><!-- /ko --> </span> </div> <!-- /ko --> </div> </div> </form> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div id=\\\"tree\\\"> </div>\";\n// Exports\nexport default code;","import {P} from \"Core/Common/Promise\";\r\nimport {URL} from \"Core/Common/Url\";\r\nimport {IRequestOptions, Request} from \"Core/Common/Request\";\r\n\r\nimport {IDatarole} from 'FieldCollection/Models/IDataRole';\r\nimport {IEntity} from 'FieldCollection/Models/IEntity';\r\nimport {IFields} from 'FieldCollection/Models/IFields';\r\nimport {ICollectionSave} from 'FieldCollection/Models/ICollectionSave';\r\n\r\nexport class FieldCollectionStore {\r\n\r\n\tGetDataRole(): P.Promise<IDatarole[]> {\r\n\t\tconst deferredResult = P.defer<IDatarole[]>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.FIELD_COLLECTION_DESIGNER.GET_DATA_ROLE,\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((data) => deferredResult.resolve(data.FieldCollections))\r\n\t\t\t.fail((err) => deferredResult.reject(err));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetEntities(): P.Promise<IEntity[]> {\r\n\t\tconst deferredResult = P.defer<IEntity[]>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.FIELD_COLLECTION_DESIGNER.GET_ENTITIES,\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((data) => deferredResult.resolve(data))\r\n\t\t\t.fail((err) => deferredResult.reject(err));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetFieldCollection(entityId: number, selectedCollectionId: number): P.Promise<IFields> {\r\n\t\tconst deferredResult = P.defer<IFields>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.FIELD_COLLECTION_DESIGNER.GET_FIELD_COLLECTION,\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: {\r\n\t\t\t\tEntityId: entityId,\r\n\t\t\t\tSelectedCollectionId: selectedCollectionId\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((data: IFields) => deferredResult.resolve(data))\r\n\t\t\t.fail((err) => deferredResult.reject(err));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tSaveFieldCollection(fieldCollection: ICollectionSave): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.FIELD_COLLECTION_DESIGNER.SAVE_FIELD_COLLECTION,\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: fieldCollection\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((data) => deferredResult.resolve(data))\r\n\t\t\t.fail((err) => deferredResult.reject(err));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tUpdateViews() {\r\n\t\tconst deferred = P.defer<any>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.FIELD_COLLECTION_DESIGNER.UPDATE_VIEWS,\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t}).then(() => deferred.resolve(null))\r\n\t\t\t.fail(error => deferred.reject(error));\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n}","export const SECURITY_LEVELS = {\r\n\tPublic: 1,\r\n\tDisclosed: 1,\r\n\tSafe: 2,\r\n\tVault: 3,\r\n\tGDPR: 4\r\n};\r\n\r\nexport const DATA_ROLE_NAMES = {\r\n\tPublic: 'PO',\r\n\tDisclosed: 'DO',\r\n\tSafe: 'SO',\r\n\tVault: 'VO',\r\n\tGDPR: 'DPO'\r\n};","import {SECURITY_LEVELS} from 'FieldCollection/PriorityManager/PriorityManagerConstants';\r\nimport {IType} from \"FieldCollection/Models/IFields\";\r\nimport {IViewModelType, IViewModelField} from 'FieldCollection/Models/IViewModel';\r\nimport {NOTIFICATIONS, LABELS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as CONFIRMATION_EVENTS,\r\n\tTypes as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nexport class PriorityManager extends Event {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t};\r\n\r\n\tRestrictDowngrade(row: IViewModelField, initialCalculation: boolean, field?: IViewModelType,) {\r\n\t\tconst highestField = row.types.filter((type) => type.isActiveType && !type.PertableType).pop();\r\n\r\n\t\tconst targetField = field || highestField;\r\n\r\n\t\tif (!targetField) {\r\n\t\t\tthis.Trigger('DowngradeDone', {Data: 'Success'});\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!initialCalculation) {\r\n\t\t\ttargetField.isActiveType = !targetField.isActiveType;\r\n\t\t}\r\n\r\n\t\tconst roleType = targetField.TypeOfType;\r\n\t\tconst deletedOtherFields = [];\r\n\r\n\t\tconst types = row.types.filter((type: IViewModelType) => type.TypeOfType);\r\n\r\n\t\ttypes.forEach((type: IViewModelType) => {\r\n\t\t\tif (targetField.isActiveType && SECURITY_LEVELS[type.TypeOfType] < SECURITY_LEVELS[roleType]) {\r\n\t\t\t\tif (type.isActiveType) {\r\n\t\t\t\t\tdeletedOtherFields.push(type);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tfunction applyAvailability(types: IViewModelType[]) {\r\n\t\t\ttypes.forEach((type) => {\r\n\t\t\t\tif (targetField.isActiveType && SECURITY_LEVELS[type.TypeOfType] < SECURITY_LEVELS[roleType]) {\r\n\t\t\t\t\ttype.isUnavailableField = true;\r\n\t\t\t\t} else if (!targetField.isActiveType && SECURITY_LEVELS[type.TypeOfType] < SECURITY_LEVELS[roleType]) {\r\n\t\t\t\t\ttype.isUnavailableField = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (deletedOtherFields.length) {\r\n\t\t\ttargetField.isActiveType = false;\r\n\r\n\t\t\tconst deletedFieldsString = deletedOtherFields.map((el) => el.Name).join(', ');\r\n\r\n\t\t\tconst dialog = new ConfirmationDialog({\r\n\t\t\t\tText: CONFIRMATIONS.FIELD_WILL_BE_REMOVED_FROM_NEXT_FIELD_COLLECTION.replace('{DeletedFields}', deletedFieldsString),\r\n\t\t\t\tType: ConfirmationTypes.Warning,\r\n\t\t\t\tWidth: 500,\r\n\t\t\t\tMinHeight: 160\r\n\t\t\t});\r\n\r\n\t\t\tdialog.On(CONFIRMATION_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\t\ttargetField.isActiveType = true;\r\n\r\n\t\t\t\tapplyAvailability(types);\r\n\r\n\t\t\t\tthis.Trigger('DowngradeDone', {Data: 'Success'});\r\n\t\t\t});\r\n\r\n\t\t\tdialog.On(CONFIRMATION_EVENTS.DISCARD_SELECTED, this, () => {\r\n\t\t\t\tthis.Trigger('DowngradeDone', {Data: 'Success'});\r\n\t\t\t});\r\n\r\n\t\t\tdialog.Show();\r\n\t\t} else {\r\n\t\t\tapplyAvailability(types);\r\n\t\t}\r\n\r\n\t\tthis.Trigger('DowngradeDone', {Data: 'Success'});\r\n\t}\r\n\r\n\tSortTypes(types: IType[]) {\r\n\t\tif (!types) return null;\r\n\r\n\t\ttypes.sort((prev: IType, next: IType) => {\r\n\t\t\t\tlet result = SECURITY_LEVELS[prev.TypeOfType] - SECURITY_LEVELS[next.TypeOfType];\r\n\r\n\t\t\t\tif (!result) {\r\n\t\t\t\t\tresult = prev.Name.toUpperCase() > next.Name.toUpperCase() ? 1 : -1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn types;\r\n\t}\r\n}","import {Event} from 'Core/Common/Event';\r\nimport {PriorityManager} from 'FieldCollection/PriorityManager/PriorityManager';\r\n\r\nimport FieldTableRowTemplate from 'FieldCollection/FieldTableRow/FieldTableRow.html';\r\n\r\nimport {IViewModelField} from 'FieldCollection/Models/IViewModel';\r\n\r\nexport class FieldTableRow extends Event {\r\n\tpublic _fieldRow: IViewModelField;\r\n\tprivate _priorityManager: PriorityManager;\r\n\r\n\tconstructor(fieldRow: IViewModelField) {\r\n\t\tsuper();\r\n\r\n\t\tthis._fieldRow = fieldRow;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn FieldTableRowTemplate;\r\n\t}\r\n\r\n\tToggleActive(field): void {\r\n\t\tif (this._fieldRow.isRequired) return;\r\n\r\n\t\tthis._priorityManager = new PriorityManager();\r\n\r\n\t\tthis._priorityManager.On('DowngradeDone', this, () => {\r\n\t\t\tthis.Trigger('FieldToggled', {Data: 'Success'});\r\n\t\t});\r\n\r\n\t\tthis._priorityManager.RestrictDowngrade(this._fieldRow, false, field);\r\n\t}\r\n}","// Module\nvar code = \"<tr> <td data-bind=\\\"text: _fieldRow.Name, css: {'required-field-name': _fieldRow.isRequired}\\\" class=\\\"field-name header-column\\\"> </td> <!-- ko foreach: _fieldRow.types --> <td data-bind=\\\"css: {'unavailable-type': !Available,\\r\\n\\t\\t\\t\\t 'selected-column': isCurrentType,\\r\\n\\t\\t\\t\\t 'unavailable-field': isUnavailableField,\\r\\n\\t\\t\\t\\t 'othertype-field': !PertableType,\\r\\n\\t\\t\\t\\t 'pertable-field': PertableType,\\r\\n\\t\\t\\t\\t 'required-field': $parent._fieldRow.isRequired},\\r\\n\\t\\t\\t\\t click: isCurrentType && $parent.ToggleActive.bind($parent, $data)\\\"> <!--ko if: isActiveType && !isUnavailableField || $parent._fieldRow.isRequired--> <i class=\\\"fa fa-check\\\"></i> <!--/ko--> </td> <!-- /ko --> </tr> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport FieldTableTemplate from 'FieldCollection/FieldTable/FieldTable.html';\r\n\r\nimport {FieldTableRow} from 'FieldCollection/FieldTableRow/FieldTableRow';\r\nimport {PriorityManager} from 'FieldCollection/PriorityManager/PriorityManager';\r\nimport {IViewModel, IViewModelType, IViewModelField} from 'FieldCollection/Models/IViewModel';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nexport class FieldTable extends Event {\r\n\tprivate _fieldsInitial: IViewModelField[];\r\n\tprivate _pertableTypes: KnockoutObservableArray<IViewModelType>;\r\n\tprivate _otherTypes: KnockoutObservableArray<IViewModelType>;\r\n\tprivate _fieldTableRows: KnockoutObservable<FieldTableRow>[];\r\n\tprivate _priorityManager: PriorityManager;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(fieldsInitial: IViewModel) {\r\n\t\tsuper();\r\n\r\n\t\tthis._fieldsInitial = JSON.parse(JSON.stringify(fieldsInitial.Fields));\r\n\t\tthis._pertableTypes = ko.observableArray(fieldsInitial.Types.PerTable);\r\n\t\tthis._otherTypes = ko.observableArray(fieldsInitial.Types.Other);\r\n\t\tthis._priorityManager = new PriorityManager();\r\n\t\tthis._fieldTableRows = this.BuildRowComponents(this._fieldsInitial);\r\n\t}\r\n\r\n\tBuildRowComponents(rowsModel: IViewModelField[]) {\r\n\t\treturn rowsModel.map((row: IViewModelField) => {\r\n\t\t\tthis._priorityManager.RestrictDowngrade(row, true);\r\n\r\n\t\t\tconst rowComponent = new FieldTableRow(row);\r\n\t\t\tconst observableRowComponent = ko.observable(rowComponent);\r\n\r\n\t\t\trowComponent.On('FieldToggled', this, (eventArgs) => this.RowChanged(observableRowComponent, eventArgs.data.Data));\r\n\r\n\t\t\treturn observableRowComponent;\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn FieldTableTemplate;\r\n\t}\r\n\r\n\tprivate RowChanged(row: KnockoutObservable<FieldTableRow>, data: any): void {\r\n\t\tthis.Trigger('FieldToggled', {Data: row()._fieldRow});\r\n\r\n\t\trow.valueHasMutated();\r\n\t}\r\n}","// Module\nvar code = \"<table class=\\\"table table-hover table-bordered table-striped\\\"> <thead class=\\\"search-table-header\\\"> <!--<tr class=\\\"scope-row\\\">--> <!--<th>Scope</th>--> <!--<!– ko foreach: _pertableTypes –>--> <!--<th data-bind=\\\"css: {'unavailable-type': !$data.Available}\\\">--> <!--<div class=\\\"clearfix checker\\\">--> <!--<span data-bind=\\\"css: {checked: $data.Available}\\\">--> <!--<input tabindex=\\\"1\\\"--> <!--data-bind=\\\"hasFocus: true, checked: $data.Available\\\"--> <!--type=\\\"checkbox\\\"--> <!--class=\\\"control record-field\\\">--> <!--</span>--> <!--</div>--> <!--</th>--> <!--<!– /ko –>--> <!--<!– ko foreach: _otherTypes –>--> <!--<th data-bind=\\\"css: {'selected-column': Id === $parent._selectedDataRoleId}\\\"></th>--> <!--<!– /ko –>--> <!--</tr>--> <tr> <th class=\\\"thead header-column\\\"><!-- ko text: _labels.TYPE_NAME -->\\t<!-- /ko --></th> <!-- ko foreach: _pertableTypes --> <th class=\\\"thead pertable-field\\\"> <div data-bind=\\\"text: Name, attr: {title: Name}\\\"></div> </th> <!-- /ko --> <!-- ko foreach: _otherTypes --> <th class=\\\"thead othertype-field\\\" data-bind=\\\"css: {'selected-column': Id === $parent._selectedDataRoleId}, attr: {title: Name}\\\"> <div data-bind=\\\"text: Name\\\"></div> </th> <!-- /ko --> </tr> <tr> <th class=\\\"thead header-column\\\"><!-- ko text: _labels.TYPE_OF_TYPE -->\\t<!-- /ko --></th> <!-- ko foreach: _pertableTypes --> <th class=\\\"thead pertable-field\\\">pertable</th> <!-- /ko --> <!-- ko foreach: _otherTypes --> <th class=\\\"thead othertype-field\\\" data-bind=\\\"css: {'selected-column': Id === $parent._selectedDataRoleId}\\\"> <div data-bind=\\\"text: TypeOfType\\\"></div> </th> <!-- /ko --> </tr> </thead> <tbody> <!--ko foreach: _fieldTableRows--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </tbody> </table>\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\n\r\nexport class FCRequiredFields {\r\n\tstatic CREATE_DATE = \"CREATEDATE\";\r\n\tstatic CREATED_BY = \"CREATEDBY\";\r\n\tstatic CHANGE_DATE = \"CHANGEDATE\";\r\n\tstatic CHANGED_BY = \"CHANGEDBY\";\r\n\tstatic F_TYPE = \"F_TYPE\";\r\n\tstatic F_LIFESTATUS = \"F_LIFESTATUS\";\r\n\tstatic LAST_STATUS_DATE = \"LASTSTATUSDATE\";\r\n\tstatic F_OWNER = \"F_OWNER\";\r\n\r\n\tstatic GetAll() {\r\n\t\treturn [\r\n\t\t\tthis.CREATE_DATE,\r\n\t\t\tthis.CREATED_BY,\r\n\t\t\tthis.CHANGE_DATE,\r\n\t\t\tthis.CHANGED_BY,\r\n\t\t\tthis.F_TYPE,\r\n\t\t\tthis.F_LIFESTATUS,\r\n\t\t\tthis.LAST_STATUS_DATE,\r\n\t\t\tthis.F_OWNER\r\n\t\t];\r\n\t}\r\n\r\n\tstatic IsRequired(fieldName: string){\r\n\t\treturn _.contains(this.GetAll(), fieldName);\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport { P } from 'Core/Common/Promise';\r\n\r\nimport FieldCollectionTemplate from 'FieldCollection/Templates/FieldCollection.html';\r\n\r\nimport { FieldCollectionStore } from 'FieldCollection/Stores/FieldCollectionStore';\r\nimport { IDatarole } from 'FieldCollection/Models/IDataRole';\r\nimport { IEntity } from 'FieldCollection/Models/IEntity';\r\nimport { IFields, IType } from 'FieldCollection/Models/IFields';\r\nimport { ICollectionSave } from 'FieldCollection/Models/ICollectionSave';\r\nimport { IViewModel, ICollectionObject, IViewModelField } from 'FieldCollection/Models/IViewModel';\r\nimport { FieldTable } from 'FieldCollection/FieldTable/FieldTable';\r\nimport { DATA_ROLE_NAMES } from 'FieldCollection/PriorityManager/PriorityManagerConstants';\r\nimport { PriorityManager } from 'FieldCollection/PriorityManager/PriorityManager';\r\nimport { NOTIFICATIONS, LABELS, CONFIRMATIONS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as CONFIRMATION_EVENTS,\r\n\tTypes as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport { FCRequiredFields } from \"./Enums/FCRequiredFields\";\r\n\r\nko.templates['FieldCollection/Templates/FieldCollection'] = FieldCollectionTemplate;\r\n\r\nexport class FieldCollection {\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\tprivate _isChecked: KnockoutObservable<boolean>;\r\n\tprivate _dataRoles: KnockoutObservableArray<IDatarole>;\r\n\tprivate _selectedDataRole: KnockoutObservable<IDatarole>;\r\n\tprivate _previosSelectedDataRole: IDatarole;\r\n\tprivate _entities: KnockoutObservableArray<IEntity>;\r\n\tprivate _selectedEntity: KnockoutObservable<IEntity>;\r\n\tprivate _pertableTypes: KnockoutObservableArray<IType>;\r\n\tprivate _otherTypes: KnockoutObservableArray<IType>;\r\n\tprivate _fieldTable: KnockoutObservable<FieldTable>;\r\n\tprivate _fieldCollectionStore: FieldCollectionStore;\r\n\tprivate _currentCollection: ICollectionObject;\r\n\tprivate _currentCollectionInitial: ICollectionObject;\r\n\tprivate _currentEntityInitial: IViewModel;\r\n\tprivate _priorityManager: PriorityManager;\r\n\tprivate _mutatedEntitiesId: number[];\r\n\tprivate _hasUnsavedChanges: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor() {\r\n\t\tthis._isReady = ko.observable(false);\r\n\t\tthis._isChecked = ko.observable(true);\r\n\t\tthis._dataRoles = ko.observableArray([]);\r\n\t\tthis._selectedDataRole = ko.observable(null);\r\n\t\tthis._previosSelectedDataRole = null;\r\n\t\tthis._entities = ko.observableArray([]);\r\n\t\tthis._selectedEntity = ko.observable(null);\r\n\t\tthis._pertableTypes = ko.observableArray([]);\r\n\t\tthis._otherTypes = ko.observableArray([]);\r\n\t\tthis._fieldTable = ko.observable(null);\r\n\t\tthis._currentCollection = {};\r\n\t\tthis._currentCollectionInitial = {};\r\n\t\tthis._currentEntityInitial = { Id: null, Fields: [], Types: { PerTable: [], Other: [] } };\r\n\t\tthis._mutatedEntitiesId = [];\r\n\t\tthis._hasUnsavedChanges = ko.observable(false);\r\n\r\n\t\tthis._priorityManager = new PriorityManager();\r\n\t\tthis._fieldCollectionStore = new FieldCollectionStore();\r\n\t}\r\n\r\n\tget SelectedCollectionName(): string {\r\n\t\treturn this._selectedDataRole() && this._selectedDataRole().Name || 'Not selected';\r\n\t}\r\n\r\n\tget SelectedTypeName(): string {\r\n\t\treturn this._selectedDataRole() && this._selectedDataRole().Type || 'Not selected';\r\n\t}\r\n\r\n\tRender(elId: string): void {\r\n\t\tconst container = document.getElementById(elId);\r\n\r\n\t\tconst getDataRolePromise: P.Promise<IEntity[]> = this._fieldCollectionStore.GetDataRole();\r\n\t\tconst getEntitiesPromise: P.Promise<IEntity[]> = this._fieldCollectionStore.GetEntities();\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tP.when(getDataRolePromise, getEntitiesPromise)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\tko.cleanNode(container);\r\n\t\t\t\tko.applyBindings(this, container);\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis._dataRoles(result[0]);\r\n\t\t\t\tthis._entities(result[1]);\r\n\t\t\t\tthis._selectedEntity(this._entities()[0]);\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message)\r\n\t\t\t});\r\n\t}\r\n\r\n\r\n\tGetDataRoleText(dataRole: IDatarole): string {\r\n\t\treturn `${dataRole.Name}-${DATA_ROLE_NAMES[dataRole.Type]}`;\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'FieldCollection/Templates/FieldCollection';\r\n\t}\r\n\r\n\tChangeTab(entity: IEntity): void {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tthis._selectedEntity(entity);\r\n\t\tthis._previosSelectedDataRole = this._selectedDataRole();\r\n\t\tconst entityId = this._selectedEntity().Id;\r\n\r\n\t\tif (this._currentCollection[entityId]) {\r\n\t\t\tthis._currentEntityInitial = this._currentCollection[entityId];\r\n\t\t\tconst fieldTable = new FieldTable(this._currentCollection[entityId]);\r\n\r\n\t\t\tfieldTable.On('FieldToggled', this, (eventArgs) => this.RowChanged(eventArgs.data.Data));\r\n\r\n\t\t\tthis._fieldTable(fieldTable);\r\n\r\n\t\t\tBlockUI.Unblock();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._fieldCollectionStore.GetFieldCollection(entityId, this._selectedDataRole().Id)\r\n\t\t\t.then((result: IFields) => {\r\n\t\t\t\tthis._currentCollection[entityId] = this.MapToViewModel(result);\r\n\t\t\t\tthis._currentCollectionInitial[entityId] = JSON.parse(JSON.stringify(this._currentCollection[entityId]));\r\n\t\t\t\tthis._currentEntityInitial = JSON.parse(JSON.stringify(this._currentCollection[entityId]));\r\n\r\n\t\t\t\tconst fieldTable = new FieldTable(this._currentCollection[entityId]);\r\n\r\n\t\t\t\tfieldTable.On('FieldToggled', this, (eventArgs) => this.RowChanged(eventArgs.data.Data));\r\n\r\n\t\t\t\tthis._fieldTable(fieldTable);\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t});\r\n\t}\r\n\r\n\tRowChanged(row: IViewModelField): void {\r\n\t\tconst currentEntity = this._currentCollection[this._selectedEntity().Id];\r\n\r\n\t\tcurrentEntity.Fields.forEach((field, fieldIndex) => {\r\n\t\t\tif (field.Id === row.Id) {\r\n\t\t\t\tfield.types = row.types.map((cell, typeIndex) => {\r\n\t\t\t\t\tif (cell.isActiveType) {\r\n\t\t\t\t\t\tfield.ActiveTypes.push(cell.Id);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tfield.ActiveTypes.splice(field.ActiveTypes.indexOf(cell.Id), 1);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst initialState = this._currentEntityInitial.Fields[fieldIndex]\r\n\t\t\t\t\t\t? !!this._currentEntityInitial.Fields[fieldIndex].types[typeIndex].isActiveType\r\n\t\t\t\t\t\t: false;\r\n\r\n\t\t\t\t\tcell.mutated = initialState !== cell.isActiveType && !cell.isUnavailableField;\r\n\r\n\t\t\t\t\tif (row.isRequired) {\r\n\t\t\t\t\t\tcell.mutated = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn _.clone(cell);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (!this._mutatedEntitiesId.some((el) => el === this._selectedEntity().Id)) {\r\n\t\t\tthis._mutatedEntitiesId.push(this._selectedEntity().Id);\r\n\t\t}\r\n\r\n\t\tthis.CheckCollectionChanges();\r\n\t}\r\n\r\n\tChangeDataRole(): void {\r\n\t\tconst confirmCallback = () => {\r\n\t\t\tthis._currentCollection = {};\r\n\t\t\tthis._previosSelectedDataRole = this._selectedDataRole();\r\n\t\t\tthis._hasUnsavedChanges(false);\r\n\r\n\t\t\tif (!this._selectedDataRole()) return;\r\n\r\n\t\t\tthis.ChangeTab(this._entities()[0]);\r\n\t\t};\r\n\r\n\t\tconst discardCallback = () => {\r\n\t\t\tthis._selectedDataRole(this._previosSelectedDataRole);\r\n\t\t};\r\n\r\n\t\tif (!this._previosSelectedDataRole) {\r\n\t\t\tconfirmCallback();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this._hasUnsavedChanges()) {\r\n\t\t\tconst message = CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST;\r\n\t\t\tthis.ConfirmationDialog(message, confirmCallback, discardCallback);\r\n\t\t} else {\r\n\t\t\tconfirmCallback();\r\n\t\t}\r\n\t}\r\n\r\n\tConfirmationDialog(message: string, confirmCallback, discardCallback): void {\r\n\t\tconst dialog = new ConfirmationDialog({\r\n\t\t\tText: message,\r\n\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\tWidth: 500,\r\n\t\t\tMinHeight: 160\r\n\t\t});\r\n\r\n\t\tdialog.On(CONFIRMATION_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\tconfirmCallback();\r\n\t\t});\r\n\r\n\t\tdialog.On(CONFIRMATION_EVENTS.DISCARD_SELECTED, this, () => {\r\n\t\t\tdiscardCallback();\r\n\t\t});\r\n\r\n\t\tdialog.Show();\r\n\t}\r\n\r\n\tMapToViewModel(model: IFields): IViewModel {\r\n\t\tconst initialFields = model.Fields;\r\n\t\tconst initialTypes = model.Types;\r\n\r\n\t\tconst dataRole = this._selectedDataRole();\r\n\r\n\t\tconst pertableTypes = initialTypes.filter((type) => type.TypeOfType === 'PerTable');\r\n\t\tconst otherTypes = initialTypes.filter((type) => type.TypeOfType !== 'PerTable');\r\n\r\n\t\tconst currentType = otherTypes.filter((type) => type.Id === dataRole.Id)[0];\r\n\r\n\t\tif (currentType) {\r\n\t\t\tcurrentType.isCurrentType = true;\r\n\t\t} else {\r\n\t\t\totherTypes.push({\r\n\t\t\t\tId: dataRole.Id,\r\n\t\t\t\tName: dataRole.Name,\r\n\t\t\t\tTypeOfType: dataRole.Type,\r\n\t\t\t\tisCurrentType: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._priorityManager.SortTypes(otherTypes);\r\n\r\n\t\tlet allTypes = pertableTypes.concat(otherTypes);\r\n\r\n\t\tlet fieldsMapped = initialFields.map((_field) => {\r\n\t\t\tlet field: IViewModelField = {\r\n\t\t\t\tId: _field.Id,\r\n\t\t\t\tName: _field.Name,\r\n\t\t\t\tisRequired: FCRequiredFields.IsRequired(_field.Name) || _field.Type === 'PKey',\r\n\t\t\t\tActiveTypes: [..._field.ActiveTypes],\r\n\t\t\t\ttypes: []\r\n\t\t\t};\r\n\r\n\t\t\tfield.types = allTypes.map((type) => {\r\n\t\t\t\tconst _type = {\r\n\t\t\t\t\tId: type.Id,\r\n\t\t\t\t\tName: type.Name,\r\n\t\t\t\t\tTypeOfType: type.TypeOfType,\r\n\t\t\t\t\tmutated: false,\r\n\t\t\t\t\tAvailable: true,\r\n\t\t\t\t\tisUnavailableField: false,\r\n\t\t\t\t\tisActiveType: false,\r\n\t\t\t\t\tisCurrentType: !!type.isCurrentType,\r\n\t\t\t\t\tPertableType: type.TypeOfType === 'PerTable'\r\n\t\t\t\t};\r\n\r\n\t\t\t\t_field.ActiveTypes.forEach((activeType) => {\r\n\t\t\t\t\tif (type.Id === activeType) {\r\n\t\t\t\t\t\t_type.isActiveType = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn _type;\r\n\t\t\t});\r\n\r\n\t\t\treturn field;\r\n\t\t});\r\n\r\n\t\tconst modelMapped = {\r\n\t\t\tFields: fieldsMapped,\r\n\t\t\tTypes: {\r\n\t\t\t\tPerTable: pertableTypes,\r\n\t\t\t\tOther: otherTypes\r\n\t\t\t},\r\n\t\t\tId: this._selectedEntity().Id\r\n\t\t};\r\n\r\n\t\treturn modelMapped;\r\n\t}\r\n\r\n\tSave(): void {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst saveModel: ICollectionSave = this.MapToSaveModel();\r\n\r\n\t\tthis.CheckCollectionChanges();\r\n\r\n\t\tif (!this._hasUnsavedChanges) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst onFail = (error) => {\r\n\t\t\tconsole.log(error);\r\n\r\n\t\t\tnew Notifier().Failed(error.message || error);\r\n\r\n\t\t\tthis.RevertChanges(true);\r\n\r\n\t\t\tBlockUI.Unblock();\r\n\t\t};\r\n\r\n\t\tthis._fieldCollectionStore.SaveFieldCollection(saveModel)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tonFail(result.ErrorMessage || result.Messsage);\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnew Notifier().Success(NOTIFICATIONS.SAVED);\r\n\r\n\t\t\t\tthis._mutatedEntitiesId = [];\r\n\t\t\t\tthis._currentCollection = {};\r\n\r\n\t\t\t\tthis.ChangeTab(this._selectedEntity());\r\n\r\n\t\t\t\tthis._hasUnsavedChanges(false);\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tonFail(error.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t});\r\n\t}\r\n\r\n\tCheckCollectionChanges(): any {\r\n\t\tconst mutatedIds = _.uniq(this._mutatedEntitiesId);\r\n\r\n\t\tconst mutatedEntities = mutatedIds.map((id) => this._currentCollection[id]);\r\n\r\n\t\tif (!mutatedEntities.length) {\r\n\t\t\tthis._hasUnsavedChanges(false);\r\n\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet entities = mutatedEntities.map((entity) => {\r\n\t\t\tconst mutatedEntity = {\r\n\t\t\t\tId: entity.Id,\r\n\t\t\t\tMutatedFields: []\r\n\t\t\t};\r\n\r\n\t\t\tconst fields = entity.Fields.map((field) => {\r\n\t\t\t\tconst mutatedField = field.types.filter((type) => {\r\n\t\t\t\t\treturn type.Id === this._selectedDataRole().Id && type.mutated;\r\n\t\t\t\t})[0];\r\n\r\n\t\t\t\tif (!mutatedField) return;\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tId: field.Id,\r\n\t\t\t\t\tActive: mutatedField.isActiveType\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tmutatedEntity.MutatedFields = fields.filter((field) => field !== undefined);\r\n\r\n\t\t\treturn mutatedEntity;\r\n\t\t});\r\n\r\n\t\tentities = entities.filter((entity) => entity.MutatedFields.length);\r\n\r\n\t\tthis._hasUnsavedChanges(!!entities.length);\r\n\r\n\t\treturn entities;\r\n\t}\r\n\r\n\tMapToSaveModel(): ICollectionSave {\r\n\t\tconst entities = this.CheckCollectionChanges();\r\n\r\n\t\tconst mutatedCollection = {\r\n\t\t\tId: this._selectedDataRole().Id,\r\n\t\t\tEntities: entities\r\n\t\t};\r\n\r\n\t\treturn mutatedCollection;\r\n\t}\r\n\r\n\tRevertChanges(noConfirm?: boolean): void {\r\n\t\tconst confirmCallback = () => {\r\n\t\t\tthis._mutatedEntitiesId = [];\r\n\t\t\tthis._currentCollection = JSON.parse(JSON.stringify(this._currentCollectionInitial));\r\n\r\n\t\t\tthis.ChangeTab(this._selectedEntity());\r\n\r\n\t\t\tthis._hasUnsavedChanges(false);\r\n\t\t};\r\n\r\n\t\tconst discardCallback = () => {\r\n\t\t\treturn;\r\n\t\t};\r\n\r\n\t\tif (noConfirm) {\r\n\t\t\tconfirmCallback();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst message = CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST;\r\n\r\n\t\tthis.ConfirmationDialog(message, confirmCallback, discardCallback);\r\n\t}\r\n\r\n\tUpdateViews() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tthis._fieldCollectionStore.UpdateViews()\r\n\t\t\t.then(() => new Notifier().Success(NOTIFICATIONS.VIEWS_UPDATED))\r\n\t\t\t.fail(error => new Notifier().Failed(error.message))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tAfterRender(el): void {\r\n\t\tthis._isReady(true);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"field-collection\\\"> <div class=\\\"box-shadow-wrapper header\\\"> <fieldset> <legend class=\\\"title entity-wrapper\\\"> <span class=\\\"entity-name\\\"><!-- ko text: _labels.FIELD_COLLECTION --><!-- /ko --></span> <div class=\\\"entity-icon\\\"> <span class=\\\"fa fa-check-square-o\\\" aria-hidden=\\\"true\\\"></span> </div> </legend> </fieldset> <div class=\\\"\\\"> <div class=\\\"buttons-block\\\" id=\\\"ActionBarBlock\\\"> <a class=\\\"btn green subFormControl save-button\\\" data-bind=\\\"click: Save,\\r\\n\\t\\t\\t \\t\\t\\t css: {disabled: !_hasUnsavedChanges()}\\\"> <i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --> </a> <a class=\\\"btn red subFormControl revert-button\\\" data-bind=\\\"click: RevertChanges.bind($data, false),\\r\\n\\t\\t\\t\\t\\t\\t\\tcss: {disabled: !_hasUnsavedChanges()}\\\"> <i class=\\\"fa fa-trash\\\"></i> <!-- ko text: _labels.REVERT --><!-- /ko --> </a> <a class=\\\"btn btn-warning pull-right\\\" data-bind=\\\"click: UpdateViews.bind($data)\\\"> <i class=\\\"fa fa-desktop\\\"></i> <!-- ko text: _labels.UPDATE_VIEWS --><!-- /ko --> </a> </div> <div class=\\\"input-container\\\"> <div class=\\\"input-wrapper\\\"> <label for=\\\"datarole\\\"><!-- ko text: _labels.DATA_ROLE --><!-- /ko --></label> <select class=\\\"form-control display-i-b width-215px\\\" id=\\\"datarole\\\" tabindex=\\\"1\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\toptions: _dataRoles,\\r\\n\\t\\t\\t\\t\\t\\toptionsText: GetDataRoleText,\\r\\n\\t\\t\\t\\t\\t\\tvalue: _selectedDataRole,\\r\\n\\t\\t\\t\\t\\t\\toptionsCaption: _labels.SELECT_LABEL + '...',\\r\\n\\t\\t\\t\\t\\t\\tevent: { change: ChangeDataRole.bind($data)}\\\"> </select> </div> <div class=\\\"input-wrapper\\\"> <label for=\\\"field-collection\\\"><!-- ko text: _labels.FIELD_COLLECTION --><!-- /ko --></label> <input class=\\\"form-control width-215px\\\" data-bind=\\\"attr: {placeholder: SelectedCollectionName}\\\" type=\\\"text\\\" id=\\\"field-collection\\\" disabled=\\\"disabled\\\"> </div> <div class=\\\"input-wrapper\\\"> <label for=\\\"type\\\"><!-- ko text: _labels.TYPE --><!-- /ko --></label> <input class=\\\"form-control width-215px\\\" data-bind=\\\"attr: {placeholder: SelectedTypeName}\\\" type=\\\"text\\\" id=\\\"type\\\" disabled=\\\"disabled\\\"> </div> </div> </div> </div> <!-- ko if: _selectedDataRole() !== undefined --> <div class=\\\"body box-shadow-wrapper\\\"> <div class=\\\"tab-wrapper\\\"> <ul class=\\\"nav nav-tabs table-tabs\\\"> <!-- ko foreach: _entities --> <li class=\\\"tab tab\\\" data-bind=\\\"css: {'active': $parent._selectedEntity() === $data}\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"text: Name,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t click: $parent.ChangeTab.bind($parent)\\\"> </a> </li> <!-- /ko --> </ul> <div class=\\\"tab-content tab-page-result clearfix\\\"> <!-- ko with: _fieldTable --> <div class=\\\"table-wrapper search-results small-search-table\\\"> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as _ from \"underscore\";\r\n\r\nimport {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {ColorConverter} from \"../../../Core/Components/ColorSelector/ColorConverter\";\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class TableModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n @deserialize\r\n Color: string;\r\n\r\n @deserialize\r\n Icon: string;\r\n\r\n @deserialize\r\n IconType: string;\r\n\r\n @deserialize\r\n Image: string;\r\n\r\n @deserialize\r\n TypeId: string;\r\n\r\n @deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n HasQueries: boolean;\r\n\r\n @enumerable get HexColor() {\r\n return ColorConverter.ToHex(this.Color);\r\n }\r\n}","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {TableModel} from 'MenuManager/MenuAreas/Models/TableModel';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class DesignedScreenModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TypeId: number;\r\n\r\n @deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n TableTypeId: number;\r\n\r\n @deserializeAs(TableModel)\r\n Table: TableModel;\r\n\r\n IsSelected: KnockoutObservable<boolean>;\r\n\r\n @enumerable\r\n public get TranslatedName() {\r\n return this.Table.TranslatedName || this.Table.Name;\r\n }\r\n\r\n constructor() {\r\n this.IsSelected = ko.observable(false);\r\n }\r\n}","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {DesignedScreenModel} from 'MenuManager/MenuAreas/Models/DesignedScreenModel';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class MenuAreaModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n @deserialize\r\n Icon: string;\r\n\r\n @deserialize\r\n IconType: string;\r\n\r\n @deserialize\r\n Image: string;\r\n\r\n @deserializeAs(DesignedScreenModel)\r\n Screens: Array<DesignedScreenModel>;\r\n\r\n IsSelected: KnockoutObservable<boolean>;\r\n IsActive: KnockoutObservable<boolean>;\r\n\r\n @enumerable public get AreaDisplayName() {\r\n\t return this.TranslatedName || this.Name;\r\n }\r\n\r\n constructor() {\r\n this.Screens = [];\r\n this.IsSelected = ko.observable(false);\r\n this.IsActive = ko.observable(false);\r\n }\r\n}","\r\n\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {MenuAreaModel} from \"MenuManager/MenuAreas/Models/MenuAreaModel\";\r\n\r\nexport class MenuAreasStore {\r\n static Get(): P.Promise<Array<MenuAreaModel>> {\r\n\r\n var deferredResult = P.defer<Array<MenuAreaModel>>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/MenuApi/GetMenuAreas\",\r\n dataType: 'json',\r\n type: 'GET'\r\n }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(this.Deserialize(data));\r\n } else {\r\n deferredResult.reject({ message: data.ErrorMessage });\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static Deserialize(jsonObject: any): Array<MenuAreaModel> {\r\n var res = [];\r\n\r\n _.each(jsonObject.ResultList, (item) => {\r\n res.push(<MenuAreaModel>Deserialize(item, MenuAreaModel));\r\n });\r\n\r\n return res;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\nimport * as $ from \"jquery\";\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport {SearchScreenStore} from 'Core/Screens/SearchScreen/Stores/SearchScreenStore';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {JBoxDropDown} from \"../JBoxDropdown/DropDown\";\r\nimport {MobileChecker} from \"../../Common/MobileChecker\";\r\n\r\nimport RecentAndFavoritesTemplate from 'Core/Components/RecentAndFavorites/RecentAndFavorites.html';\r\n\r\nexport class RecentAndFavorites extends Event {\r\n\tprivate _entityId: number;\r\n\tprivate _entityName: string;\r\n\tprivate _recentList: KnockoutObservableArray<any>;\r\n\tprivate _favoritesList: KnockoutObservableArray<any>;\r\n\tprivate LABELS: any;\r\n\tprivate dataLoaded: KnockoutObservable<boolean>;\r\n\tprivate _flowFolder: boolean;\r\n\tprivate _dropDown: any;\r\n\tprivate _targetElem: HTMLElement;\r\n\tprivate _isMobile: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(entity, target, flowFolder: boolean) {\r\n\t\tsuper();\r\n\r\n\t\tthis._entityId = entity.Table.Id;\r\n\t\tthis._entityName = entity.Table.Name;\r\n\t\tthis._recentList = ko.observableArray([]);\r\n\t\tthis._favoritesList = ko.observableArray([]);\r\n\t\tthis._flowFolder = flowFolder;\r\n\t\tthis._targetElem = target;\r\n\t\tthis._isMobile = ko.observable(MobileChecker.IsMobile());\r\n\r\n\t\tthis.LABELS = LABELS;\r\n\t\tthis.dataLoaded = ko.observable(false);\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tInit() {\r\n\r\n\t\tif (!this._isMobile()) {\r\n\t\t\tthis.InitRecentAndFavoritesDropdown(this._targetElem);\r\n\t\t}\r\n\t\tlet elem = $(\".recent-and-favorites-dropdown .jBox-container\");\r\n\t\tBlockUI.Block({Target: elem.get(0)});\r\n\r\n\t\tSearchScreenStore.GetScreenModel({EntityId: this._entityId, TableName: this._entityName})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis._recentList(data.GroupNameToRecords.recent);\r\n\t\t\t\tthis._favoritesList(data.GroupNameToRecords.favorites);\r\n\t\t\t\tthis.dataLoaded(true);\r\n\t\t\t\tif (!this._isMobile()) {\r\n\r\n\t\t\t\t\tif (this._dropDown) {\r\n\t\t\t\t\t\tthis._dropDown.SetContent({ content: this.GetTemplate() as any});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(this._flowFolder) {\r\n\t\t\t\t\t\tconst recentListContainer = $('.recent-block-list');\r\n\t\t\t\t\t\tlet recentListItems = recentListContainer.children();\r\n\r\n\t\t\t\t\t\t_.each(recentListItems, el => {\r\n\t\t\t\t\t\t\tconst $el: any = $(el);\r\n\t\t\t\t\t\t\tsetTimeout(() => {\r\n\r\n\t\t\t\t\t\t\t\tconst resizeObserver = new ResizeObserver(() => {\r\n\t\t\t\t\t\t\t\t\t$el.popover('destroy');\r\n\r\n\t\t\t\t\t\t\t\t\t$el.popover({\r\n\t\t\t\t\t\t\t\t\t\tcontent: '<i class=\"fa fa-ellipsis-v\" /><i class=\"fa fa-ellipsis-v\" />',\r\n\t\t\t\t\t\t\t\t\t\ttemplate: `\r\n\t\t\t\t\t\t\t\t\t<div class=\"popover recent-block-list-container__flow-folder-popover\">\r\n\t\t\t\t\t\t\t\t\t\t<div class=\"popover-content\" />\r\n\t\t\t\t\t\t\t\t\t</div>\r\n \t`,\r\n\t\t\t\t\t\t\t\t\t\thtml: true,\r\n\t\t\t\t\t\t\t\t\t\tplacement: 'right',\r\n\t\t\t\t\t\t\t\t\t\ttrigger: 'manual',\r\n\t\t\t\t\t\t\t\t\t\tanimation: false,\r\n\t\t\t\t\t\t\t\t\t\tcontainer: recentListContainer,\r\n\t\t\t\t\t\t\t\t\t\tviewport: recentListContainer\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t$el.on('inserted.bs.popover', () => {\r\n\t\t\t\t\t\t\t\t\t\tconst $grip = $(`#${$el.attr('aria-describedby')}`);\r\n\r\n\t\t\t\t\t\t\t\t\t\t$grip.data('EntityId', this._entityId);\r\n\t\t\t\t\t\t\t\t\t\t$grip.data('RecordId', this._recentList()[recentListItems.index(el)].Id);\r\n\r\n\t\t\t\t\t\t\t\t\t\t$grip.draggable({\r\n\t\t\t\t\t\t\t\t\t\t\thelper: () =>\r\n\t\t\t\t\t\t\t\t\t\t\t\t$('<div />')\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t.append($grip.clone().removeAttr('id')),\r\n\t\t\t\t\t\t\t\t\t\t\tclasses: { 'ui-draggable-dragging': 'flow-folder-dragging-helper' },\r\n\t\t\t\t\t\t\t\t\t\t\tappendTo: 'body',\r\n\t\t\t\t\t\t\t\t\t\t\tscrollSensitivity: 75,\r\n\t\t\t\t\t\t\t\t\t\t\tzIndex: 100000\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$el.popover('show');\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\tresizeObserver.observe(el);\r\n\r\n\t\t\t\t\t\t\t\tko.utils.domNodeDisposal.addDisposeCallback($el[0], () => {\r\n\t\t\t\t\t\t\t\t\t$el.popover('destroy');\r\n\r\n\t\t\t\t\t\t\t\t\tresizeObserver.unobserve(el);\r\n\t\t\t\t\t\t\t\t});\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}\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUI.Unblock(elem.get(0)));\r\n\t}\r\n\r\n\tprivate InitRecentAndFavoritesDropdown(el: HTMLElement) {\r\n\t\tlet listNavItem = el.closest('.recent-and-favorites-attach-to');\r\n\r\n\t\tthis._dropDown = new JBoxDropDown({\r\n\t\t\ttarget: el,\r\n\t\t\tbindTarget: el,\r\n\t\t\tbindComponent: this,\r\n\t\t\totherOptions: {\r\n\t\t\t\taddClass: \"recent-and-favorites-dropdown\",\r\n\t\t\t\tcloseOnClick: 'body',\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\ttarget: $(listNavItem),\r\n\t\t\t\tadjustPosition: true,\r\n\t\t\t\tadjustTracker: true,\r\n\t\t\t\tisolateScroll: true,\r\n\t\t\t\tpointer: \"top\",\r\n\t\t\t\tmaxWidth: 200,\r\n\t\t\t\tminWidth: 200,\r\n\t\t\t\tminHeight: 100,\r\n\t\t\t\tonCloseComplete: () => {\r\n\t\t\t\t\tif (this._dropDown){\r\n\t\t\t\t\t\tthis._dropDown.Destroy();\r\n\t\t\t\t\t\tthis._dropDown = null;\r\n\r\n\t\t\t\t\t\tif ($('.page-sidebar-menu').hasClass(\"page-sidebar-menu-closed\")) {\r\n\t\t\t\t\t\t\tconst newTarget = $(listNavItem).closest(\".subject-area\").length ? $(listNavItem).closest(\".subject-area\") : listNavItem;\r\n\t\t\t\t\t\t\t$(newTarget).removeClass(\"recent-and-favorites-active\");\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\tzIndex: 1000,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx: \"left\",\r\n\t\t\t\t\ty: \"center\"\r\n\t\t\t\t},\r\n\t\t\t\toutside: 'x'\r\n\t\t\t},\r\n\r\n\t\t\tonOpen: () => {}\r\n\t\t});\r\n\r\n\t\tthis._dropDown.Open();\r\n\t}\r\n\r\n\tDestroyRecentAndFavoritesDropdown() {\r\n\t\tthis._dropDown.Destroy();\r\n\t}\r\n\r\n\tSelectUser(user) {\r\n\t\tUserVarsManager.Instance.AddRecent(this._entityId, user.Id, user.TypeId);\r\n\r\n\t\tPubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordId: user.Id,\r\n\t\t\tRecordTypeId: user.TypeId\r\n\t\t});\r\n\r\n\t\tthis.Trigger('RECORD_SELECTED');\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn RecentAndFavoritesTemplate;\r\n\t}\r\n\r\n\tAfterRender(el): void {\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko if: dataLoaded() --> <div id=\\\"recent-and-favorites-panel\\\" class=\\\"recent-and-favorites-panel popup-menu\\\"> <div class=\\\"recent-block\\\"> <div class=\\\"recent-block-header menu-item-font-color\\\" data-bind=\\\"text: LABELS.RECENT\\\"> </div> <!--<hr class=\\\"divider-tiny\\\">--> <!-- ko if: _recentList().length --> <ul class=\\\"recent-block-list\\\"> <!-- ko foreach: _recentList --> <li class=\\\"recent-block-list-item nav-item\\\" data-bind=\\\"click: $parent.SelectUser.bind($parent, $data)\\\"> <!-- ko if: Name --> <!-- ko if: Name.length >= 25 --> <div class=\\\"recent-block-list-item-link menu-item-font-color\\\" data-bind=\\\"text: Name, tooltip: {content: Name}\\\"> </div> <!-- /ko --> <!-- ko if: Name.length < 25 --> <div class=\\\"recent-block-list-item-link menu-item-font-color\\\" data-bind=\\\"text: Name\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: Name --> <!-- ko if: $parent.LABELS.NO_NAME_RECORD.length >= 25 --> <div class=\\\"recent-block-list-item-link menu-item-font-color\\\" data-bind=\\\"text: $parent.LABELS.NO_NAME_RECORD, tooltip: {content: $parent.LABELS.NO_NAME_RECORD}\\\"> </div> <!-- /ko --> <!-- ko if: $parent.LABELS.NO_NAME_RECORD.length < 25 --> <div class=\\\"recent-block-list-item-link menu-item-font-color\\\" data-bind=\\\"text: $parent.LABELS.NO_NAME_RECORD\\\"> </div> <!-- /ko --> <!-- /ko --> </li> <!-- /ko --> </ul> <!-- /ko --> <!-- ko ifnot: _recentList().length --> <div class=\\\"label-no-records menu-item-font-color\\\"> <span class=\\\"label-no-records-text\\\" data-bind=\\\"text: LABELS.NO_RECORDS_MESSAGE\\\"></span> </div> <!-- /ko --> </div> <hr class=\\\"divider-tiny\\\"> <!--<div class=\\\"divider-vertical-tiny\\\"></div>--> <div class=\\\"favorites-block\\\"> <div class=\\\"favorites-block-header menu-item-font-color\\\" data-bind=\\\"text: LABELS.FAVORITES\\\"></div> <!--<hr class=\\\"divider-tiny\\\">--> <!-- ko if: _favoritesList().length --> <ul class=\\\"favorites-block-list\\\"> <!-- ko foreach: _favoritesList --> <li class=\\\"favorites-block-list-item nav-item\\\" data-bind=\\\"click: $parent.SelectUser.bind($parent, $data)\\\"> <!-- ko if: Name --> <!-- ko if: Name.length >= 25 --> <div class=\\\"favorites-block-list-item-link menu-item-font-color\\\" data-bind=\\\"text: Name, tooltip: {content: Name}\\\"> </div> <!-- /ko --> <!-- ko if: Name.length < 25 --> <div class=\\\"favorites-block-list-item-link menu-item-font-color\\\" data-bind=\\\"text: Name\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: Name --> <!-- ko if: $parent.LABELS.NO_NAME_RECORD.length >= 25 --> <div class=\\\"favorites-block-list-item-link menu-item-font-color\\\" data-bind=\\\"text: $parent.LABELS.NO_NAME_RECORD, tooltip: {content: $parent.LABELS.NO_NAME_RECORD}\\\"> </div> <!-- /ko --> <!-- ko if: $parent.LABELS.NO_NAME_RECORD.length < 25 --> <div class=\\\"favorites-block-list-item-link menu-item-font-color\\\" data-bind=\\\"text: $parent.LABELS.NO_NAME_RECORD\\\"> </div> <!-- /ko --> <!-- /ko --> </li> <!-- /ko --> </ul> <!-- /ko --> <!-- ko ifnot: _favoritesList().length --> <div class=\\\"label-no-records menu-item-font-color\\\"> <span class=\\\"label-no-records-text\\\" data-bind=\\\"text: LABELS.NO_RECORDS_MESSAGE\\\"></span> </div> <!-- /ko --> </div> </div> <!-- /ko --> \";\n// Exports\nexport default code;","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\nimport {MenuQueryMetadata} from '../Models/MenuQueryMetadata';\r\n\r\n\r\nexport class MenuQueriesStore {\r\n constructor(private _entityId: number) {\r\n\r\n }\r\n\r\n GetMenuQueriesMetadata() {\r\n const deferred = P.defer<MenuQueryMetadata[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n type: 'GET',\r\n url: '/api/MenuApi/GetMenuQueriesMetadata',\r\n dataType: 'json'\r\n },\r\n params: {tableId: this._entityId}\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultList);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n }).fail(() => {\r\n deferred.reject({message: 'Error getting menu queries'})\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n}","import * as ko from 'knockout';\r\nimport $ from \"jquery\";\r\n\r\nimport {GenericDeserialize, Serialize} from 'libs/cerialize';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {QueryParamsPage} from 'QueryBuilder/QueryParamsPage/QueryParamsPage';\r\nimport {EVENTS as QUERY_PARAMS_PAGE_EVENTS} from 'QueryBuilder/QueryParamsPage/Events';\r\n\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {QueryResultPage} from 'Core/Controls/Grid/BaseGrid/QueryResultPage/QueryResultPage';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {JBoxDropDown} from \"../JBoxDropdown/DropDown\";\r\nimport {MobileChecker} from \"../../Common/MobileChecker\";\r\n\r\nimport {MenuQueryMetadata} from './Models/MenuQueryMetadata';\r\nimport {MenuQueriesStore} from './Stores/MenuQueriesStore';\r\n\r\nimport Template from './Templates/MenuQueries.html';\r\n\r\nexport class MenuQueries extends Event {\r\n private LABELS: any;\r\n private _renderQueryTargetId: string;\r\n private _store: MenuQueriesStore;\r\n\r\n private _dataLoaded: KnockoutObservable<boolean>;\r\n private _menuQueries: KnockoutObservableArray<MenuQueryMetadata>;\r\n private _dropDown: any;\r\n private _targetElem: HTMLElement;\r\n private _isMobile: KnockoutObservable<boolean>;\r\n\r\n constructor(private _entityId: number, target) {\r\n super();\r\n\r\n this.LABELS = LABELS;\r\n this._renderQueryTargetId = 'viewBody';\r\n this._store = new MenuQueriesStore(this._entityId);\r\n\r\n this._dataLoaded = ko.observable(false);\r\n this._menuQueries = ko.observableArray([]);\r\n this._targetElem = target;\r\n this._isMobile = ko.observable(MobileChecker.IsMobile());\r\n\r\n this.Init();\r\n }\r\n\r\n get EntityId() {\r\n return this._entityId;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AfterRender(el: HTMLElement){\r\n\r\n }\r\n\r\n InitMenuQueriesDropdown(el) {\r\n let listNavItem = el.closest('.recent-and-favorites-attach-to');\r\n\r\n this._dropDown = new JBoxDropDown({\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n otherOptions: {\r\n addClass: \"queries-dropdown\",\r\n closeOnClick: 'body',\r\n attach: undefined,\r\n target: $(listNavItem),\r\n adjustPosition: true,\r\n adjustTracker: true,\r\n isolateScroll: true,\r\n pointer: \"top\",\r\n maxWidth: 200,\r\n minHeight: 50,\r\n onCloseComplete: () => {\r\n if (this._dropDown){\r\n this._dropDown.Destroy();\r\n this._dropDown = null;\r\n\r\n if ($('.page-sidebar-menu').hasClass(\"page-sidebar-menu-closed\")) {\r\n const newTarget = $(listNavItem).closest(\".subject-area\").length ? $(listNavItem).closest(\".subject-area\") : listNavItem;\r\n $(newTarget).removeClass(\"recent-and-favorites-active\");\r\n }\r\n }\r\n },\r\n zIndex: 1000,\r\n position: {\r\n x: \"left\",\r\n y: \"center\"\r\n },\r\n outside: 'x'\r\n },\r\n\r\n onOpen: () => {}\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n\r\n Init() {\r\n\r\n if (!this._isMobile()) {\r\n this.InitMenuQueriesDropdown(this._targetElem);\r\n }\r\n let elem = $(\".queries-dropdown .jBox-container\");\r\n BlockUI.Block({Target: elem.get(0)});\r\n\r\n this._store.GetMenuQueriesMetadata()\r\n .then(menuQueriesMetadata => {\r\n this._menuQueries(menuQueriesMetadata);\r\n if (!this._isMobile()) {\r\n if (this._dropDown) {\r\n this._dropDown.SetContent({ content: this.GetTemplate() as any});\r\n }\r\n }\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => {\r\n this._dataLoaded(true);\r\n BlockUI.Unblock(elem.get(0));\r\n });\r\n }\r\n\r\n DestroyMenuQueriesDropdown() {\r\n this._dropDown.Destroy();\r\n }\r\n\r\n Select(queryMetadata: MenuQueryMetadata) {\r\n const queryModel = GenericDeserialize<QueryExpressionModel>(JSON.parse(queryMetadata.Query), QueryExpressionModel);\r\n const paramsPage = new QueryParamsPage(queryModel, ViewModes[ViewModes.Query]);\r\n\r\n if (paramsPage.HasShowParameters()) {\r\n paramsPage.On(QUERY_PARAMS_PAGE_EVENTS.SAVE, this, () => {\r\n this.Show(queryModel, queryModel.QueryScreenId);\r\n });\r\n\r\n paramsPage.Show();\r\n } else {\r\n this.Show(queryModel, queryModel.QueryScreenId);\r\n }\r\n\r\n this.Trigger('QUERY_SELECTED');\r\n }\r\n\r\n private Show(query: QueryExpressionModel, queryScreen?: number) {\r\n if (queryScreen > 0) {\r\n this.ShowQueryScreen(query, queryScreen);\r\n } else {\r\n this.ShowStaticQueryScreen(query);\r\n }\r\n }\r\n\r\n private async ShowQueryScreen(query: QueryExpressionModel, queryScreenId: number) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n BlockUI.Block();\r\n screenManager.GetScreenById({ScreenId: queryScreenId, RaiseNotImplemented: false})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: any) => {\r\n screen.SetQuery(query);\r\n screen.ShowInModal();\r\n })\r\n .fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n private ShowStaticQueryScreen(query: QueryExpressionModel) {\r\n const queryResultPage = new QueryResultPage(true, ScreenTypes.ListScreen, true, false);\r\n queryResultPage.ShowQueryResult(query);\r\n }\r\n}","// Module\nvar code = \"<div id=\\\"menu-queries-panel\\\" class=\\\"recent-and-favorites-panel popup-menu\\\"> <div class=\\\"recent-block\\\"> <div class=\\\"recent-block-header menu-item-font-color\\\"> <!--ko text: LABELS.MENU_QUERIES--><!--/ko--> </div> <!--ko if: _menuQueries().length--> <ul class=\\\"recent-block-list\\\"> <!-- ko foreach: _menuQueries --> <li class=\\\"recent-block-list-item nav-item\\\" data-bind=\\\"click: $parent.Select.bind($parent, $data)\\\"> <!-- ko if: Name --> <!-- ko if: Name.length > 80 --> <div class=\\\"recent-block-list-item-link menu-item-font-color\\\" data-bind=\\\"text: Name, tooltip: {content: Name}\\\"> </div> <!-- /ko --> <!-- ko if: Name.length <= 80 --> <div class=\\\"recent-block-list-item-link menu-item-font-color\\\" data-bind=\\\"text: Name\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: Name --> <!-- ko if: $parent.LABELS.NO_NAME_RECORD.length >= 25 --> <div class=\\\"recent-block-list-item-link menu-item-font-color\\\" data-bind=\\\"text: $parent.LABELS.NO_NAME_RECORD, tooltip: {content: $parent.LABELS.NO_NAME_RECORD}\\\"> </div> <!-- /ko --> <!-- ko if: $parent.LABELS.NO_NAME_RECORD.length < 25 --> <div class=\\\"recent-block-list-item-link menu-item-font-color\\\" data-bind=\\\"text: $parent.LABELS.NO_NAME_RECORD\\\"> </div> <!-- /ko --> <!-- /ko --> </li> <!-- /ko --> </ul> <!--/ko--> <!-- ko ifnot: _menuQueries().length --> <div class=\\\"label-no-records menu-item-font-color\\\"> <span class=\\\"label-no-records-text\\\" data-bind=\\\"text: LABELS.NO_RECORDS_MESSAGE\\\"></span> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as $ from \"jquery\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {UserManager, UserTypes} from \"User/UserManager\";\r\n\r\nimport {MenuAreasStore} from \"MenuManager/MenuAreas/Stores/MenuAreasStore\";\r\nimport {MenuAreaModel} from \"MenuManager/MenuAreas/Models/MenuAreaModel\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport {RecentAndFavorites} from 'Core/Components/RecentAndFavorites/RecentAndFavorites';\r\nimport {MenuQueries} from 'Core/Components/MenuQueries/MenuQueries';\r\n\r\nimport {DesignedScreenModel} from \"./Models/DesignedScreenModel\";\r\nimport {TableModel} from './Models/TableModel';\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\n\r\nimport MenuAreaTemplate from \"MenuManager/MenuAreas/Templates/MenuAreas.html\";\r\nimport IconTemplate from \"MenuManager/MenuAreas/Templates/IconTemplate.html\";\r\nimport { Notifier } from \"../../Core/Common/Notifier\";\r\n\r\nko.templates[\"MenuManager/MenuAreas/Templates/MenuAreas\"] = MenuAreaTemplate;\r\nko.templates[\"MenuManager/MenuAreas/Templates/IconTemplate\"] = IconTemplate;\r\n\r\nexport class MenuAreas extends Event {\r\n private _showSearchButtons: KnockoutObservable<boolean>;\r\n private _areas: KnockoutObservableArray<MenuAreaModel>;\r\n private _selectedArea: MenuAreaModel;\r\n private _menuQueries: KnockoutObservable<MenuQueries>;\r\n private _menuQueriesTableId: KnockoutObservable<number>;\r\n private _recentAndFavorites: KnockoutObservable<RecentAndFavorites>;\r\n private _recentAndFavoritesTableId: KnockoutObservable<number>;\r\n private _rootScreen: KnockoutObservable<MenuAreaModel>;\r\n private _openedTableTypeFlowFolder: boolean;\r\n private _labels: LABELS;\r\n private _isMobile: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._showSearchButtons = ko.observable(false);\r\n this._areas = ko.observableArray([]);\r\n this._menuQueries = ko.observable(null);\r\n this._menuQueriesTableId = ko.observable(null);\r\n this._recentAndFavorites = ko.observable(null);\r\n this._recentAndFavoritesTableId = ko.observable(null);\r\n this._labels = LABELS;\r\n this._rootScreen = ko.observable(null);\r\n this._isMobile = ko.observable(MobileChecker.IsMobile());\r\n }\r\n\r\n DeleteAreas() {\r\n this._areas([]);\r\n }\r\n\r\n Init() {\r\n this.AddEvent(\"UPDATED\");\r\n }\r\n\r\n Refresh(reloadScreen: boolean = true) {\r\n BlockUI.Block({ Target: $('#mainMenu')[0] });\r\n MenuAreasStore.Get()\r\n .always(()=> {\r\n BlockUI.Unblock($('#mainMenu')[0]);\r\n })\r\n .fail((err)=>{\r\n Notifier.Failed(err.message);\r\n this.Trigger(\"UPDATED\", { ReloadScreen: reloadScreen });\r\n })\r\n .then(areasList => {\r\n this._areas([]);\r\n _.forEach(areasList, (area) => {\r\n if (area.Name !== 'Root') {\r\n this._areas.push(area);\r\n } else {\r\n this._rootScreen(area);\r\n }\r\n });\r\n\r\n this.Trigger(\"UPDATED\", { ReloadScreen: reloadScreen });\r\n });\r\n }\r\n\r\n CollapseAll() {\r\n this._areas().forEach(area => {\r\n area.IsActive(false);\r\n area.Screens.forEach(screen => screen.IsSelected(false));\r\n });\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"MenuManager/MenuAreas/Templates/MenuAreas\";\r\n }\r\n\r\n DestroyRecentAndFavoritesDropdown() {\r\n if (!this._isMobile()) {\r\n this._recentAndFavorites().DestroyRecentAndFavoritesDropdown();\r\n }\r\n }\r\n\r\n DestroyMenuQueriesDropdown() {\r\n if (!this._isMobile()) {\r\n this._menuQueries().DestroyMenuQueriesDropdown();\r\n }\r\n }\r\n\r\n AfterRender() {\r\n }\r\n\r\n GetAreaByEntityId(entityId: number) {\r\n var value = null;\r\n _.each(this._areas(), area => {\r\n _.each(area.Screens, screen => {\r\n if (screen.Table.Id === entityId) {\r\n value = area;\r\n }\r\n });\r\n });\r\n\r\n if (!value && this._rootScreen()) {\r\n _.each(this._rootScreen().Screens, screen => {\r\n if (screen.Table.Id === entityId) {\r\n value = this._rootScreen();\r\n }\r\n });\r\n }\r\n\r\n return value;\r\n }\r\n\r\n GetScreenByEntityId(entityId: number): DesignedScreenModel {\r\n let value: DesignedScreenModel = null;\r\n _.each(this._areas(), area => {\r\n _.each(area.Screens, screen => {\r\n if (screen.Table.Id === entityId) {\r\n value = screen;\r\n }\r\n })\r\n });\r\n\r\n if (!value && this._rootScreen()) {\r\n _.each(this._rootScreen().Screens, screen => {\r\n if (screen.Table.Id === entityId) {\r\n value = screen;\r\n }\r\n });\r\n }\r\n return value;\r\n }\r\n\r\n get OpenedTypeFlowFolder() {\r\n return this._openedTableTypeFlowFolder;\r\n }\r\n\r\n set OpenedTypeFlowFolder(value: boolean) {\r\n this._openedTableTypeFlowFolder = value;\r\n }\r\n\r\n OpenSubMenu(menuAreaModel: MenuAreaModel) {\r\n if (!this._selectedArea) {\r\n this._selectedArea = menuAreaModel;\r\n this._selectedArea.IsSelected(true);\r\n } else if (this._selectedArea !== menuAreaModel) {\r\n this._selectedArea.IsSelected(false);\r\n this._selectedArea = menuAreaModel;\r\n this._selectedArea.IsSelected(true);\r\n }\r\n if (this._menuQueries()) {\r\n this.DestroyMenuQueriesDropdown();\r\n this._menuQueries(null);\r\n }\r\n if (this._recentAndFavorites()) {\r\n this.DestroyRecentAndFavoritesDropdown();\r\n this._recentAndFavorites(null);\r\n }\r\n }\r\n\r\n SelectUser(entity, user) {\r\n UserVarsManager.Instance.AddRecent(entity.Id, user.Id, user.TypeId);\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: entity.Id,\r\n RecordId: user.Id,\r\n RecordTypeId: user.TypeId\r\n });\r\n\r\n this.Trigger('RECORD_SELECTED');\r\n }\r\n\r\n ShowQueriesDropdown(entity : TableModel, screenModel: DesignedScreenModel, event) {\r\n\r\n let target: HTMLElement,\r\n isRecentAndFavoritesDropdownBox = $(event.target).parents('.recent-and-favorites-attach-to').length > 0;\r\n\r\n target = isRecentAndFavoritesDropdownBox ? $(event.target).parents('.recent-and-favorites-attach-to')[0] : event.currentTarget;\r\n\r\n const newTarget = $(target).closest(\".subject-area\").length ? $(target).closest(\".subject-area\") : target;\r\n const sidebar = $('.page-sidebar-menu');\r\n const sidebarClosed = sidebar.hasClass(\"page-sidebar-menu-closed\");\r\n\r\n if (sidebarClosed) {\r\n $(\".recent-and-favorites-active\").removeClass(\"recent-and-favorites-active\");\r\n }\r\n\r\n if(this._recentAndFavorites()) {\r\n this.DestroyRecentAndFavoritesDropdown();\r\n this._recentAndFavorites(null);\r\n }\r\n\r\n if (this._menuQueries() && this._menuQueriesTableId() === entity.Id) {\r\n this.DestroyMenuQueriesDropdown();\r\n this._menuQueries(null);\r\n\r\n return;\r\n }\r\n\r\n if (this._menuQueries() && this._menuQueriesTableId() !== entity.Id) {\r\n this.DestroyMenuQueriesDropdown();\r\n this._menuQueries(null);\r\n }\r\n\r\n const menuQueries = new MenuQueries(entity.Id, target);\r\n\r\n menuQueries.On('QUERY_SELECTED', this, eventArgs => {\r\n this.DestroyMenuQueriesDropdown();\r\n this._menuQueries(null);\r\n\r\n if (sidebarClosed) {\r\n $(newTarget).removeClass(\"recent-and-favorites-active\");\r\n }\r\n });\r\n\r\n this._menuQueries(menuQueries);\r\n this._menuQueriesTableId(entity.Id);\r\n\r\n $(window).resize(() => {\r\n if (this._menuQueries()) {\r\n this.DestroyMenuQueriesDropdown();\r\n this._menuQueries(null);\r\n }\r\n });\r\n\r\n $(document).click((event) => {\r\n if (!$(event.target).closest('#menu-queries-panel').length) {\r\n if (this._menuQueries()) {\r\n this.DestroyMenuQueriesDropdown();\r\n this._menuQueries(null);\r\n\r\n if (sidebarClosed) {\r\n $(target).removeClass(\"recent-and-favorites-active\");\r\n }\r\n }\r\n }\r\n });\r\n\r\n $('.page-sidebar-menu').scroll((event) => {\r\n if (this._menuQueries()) {\r\n this.DestroyMenuQueriesDropdown();\r\n this._menuQueries(null);\r\n }\r\n });\r\n\r\n if (sidebarClosed) {\r\n $(newTarget).addClass(\"recent-and-favorites-active\");\r\n\r\n $('.queries-dropdown').on('mouseleave.jBoxMenuQueries', (event) => {\r\n if (this._menuQueries()) {\r\n this.DestroyMenuQueriesDropdown();\r\n this._menuQueries(null);\r\n $(newTarget).removeClass(\"recent-and-favorites-active\");\r\n $('.queries-dropdown').off('mouseleave.jBoxMenuQueries');\r\n }\r\n });\r\n }\r\n }\r\n\r\n ShowRecentAndFavoritesDropdown(entity, data, event) {\r\n this._openedTableTypeFlowFolder = this.OpenedTypeFlowFolder;\r\n\r\n let target: HTMLElement,\r\n isRecentAndFavoritesDropdownBox = $(event.target).parents('.recent-and-favorites-attach-to').length > 0;\r\n\r\n target = isRecentAndFavoritesDropdownBox ? $(event.target).parents('.recent-and-favorites-attach-to')[0] : event.currentTarget;\r\n\r\n const newTarget = $(target).closest(\".subject-area\").length ? $(target).closest(\".subject-area\") : target;\r\n const sidebar = $('.page-sidebar-menu');\r\n const sidebarClosed = sidebar.hasClass(\"page-sidebar-menu-closed\");\r\n\r\n if (sidebarClosed) {\r\n $(\".recent-and-favorites-active\").removeClass(\"recent-and-favorites-active\");\r\n }\r\n\r\n if (this._menuQueries()) {\r\n this.DestroyMenuQueriesDropdown();\r\n this._menuQueries(null);\r\n }\r\n\r\n if (this._recentAndFavorites() && this._recentAndFavoritesTableId() === entity.Id) {\r\n this.DestroyRecentAndFavoritesDropdown();\r\n this._recentAndFavorites(null);\r\n\r\n return;\r\n }\r\n\r\n if (this._recentAndFavorites() && this._recentAndFavoritesTableId() !== entity.Id) {\r\n this.DestroyRecentAndFavoritesDropdown();\r\n this._recentAndFavorites(null);\r\n }\r\n\r\n const recentAndFavorites = new RecentAndFavorites(entity, target, this._openedTableTypeFlowFolder);\r\n\r\n recentAndFavorites.On('RECORD_SELECTED', this, () => {\r\n this.DestroyRecentAndFavoritesDropdown();\r\n this._recentAndFavorites(null);\r\n if (sidebarClosed) {\r\n $(newTarget).removeClass(\"recent-and-favorites-active\");\r\n }\r\n });\r\n\r\n this._recentAndFavorites(recentAndFavorites);\r\n this._recentAndFavoritesTableId(entity.Id);\r\n\r\n $(window).resize(() => {\r\n if (this._recentAndFavorites()) {\r\n this.DestroyRecentAndFavoritesDropdown();\r\n this._recentAndFavorites(null);\r\n // $(document).off('click');\r\n }\r\n });\r\n\r\n $(document).click((event) => {\r\n if (!$(event.target).closest('#recent-and-favorites-panel').length) {\r\n if (this._recentAndFavorites()) {\r\n this.DestroyRecentAndFavoritesDropdown();\r\n this._recentAndFavorites(null);\r\n // $(document).off('click');\r\n if (sidebarClosed) {\r\n $(newTarget).removeClass(\"recent-and-favorites-active\");\r\n }\r\n }\r\n }\r\n });\r\n\r\n $('.page-sidebar-menu').scroll((event) => {\r\n if (this._recentAndFavorites()) {\r\n this.DestroyRecentAndFavoritesDropdown();\r\n this._recentAndFavorites(null);\r\n }\r\n });\r\n\r\n if (sidebarClosed) {\r\n $(newTarget).addClass(\"recent-and-favorites-active\");\r\n\r\n $('.recent-and-favorites-dropdown').on('mouseleave.jBoxRecentAndFavorites', (event) => {\r\n if (this._recentAndFavorites()) {\r\n this.DestroyRecentAndFavoritesDropdown();\r\n this._recentAndFavorites(null);\r\n $(newTarget).removeClass(\"recent-and-favorites-active\");\r\n $('.recent-and-favorites-dropdown').off('mouseleave.jBoxRecentAndFavorites');\r\n }\r\n });\r\n }\r\n }\r\n\r\n ShowHideSearchButtons() {\r\n const userManager = UserManager.Instance;\r\n const addButtons = userManager.IsAuthenticated && userManager.CurrentUser.UserType !== UserTypes.Gdpr;\r\n this._showSearchButtons(addButtons);\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: _rootScreen --> <!-- ko foreach: Screens --> <li data-bind=\\\"css: { active: IsSelected }\\\" class=\\\"designed-screen nav-item recent-and-favorites-attach-to\\\"> <a tabindex=\\\"-1\\\" data-bind=\\\"click: $root.ShowScreen.bind($root, $data, $parent), style: { color: Table.HexColor }\\\" class=\\\"nav-link custom-color-option rootItem\\\" href=\\\"#\\\"> <!-- ko template: {name: $root.GetIconTemplateName.bind($data)} --> <!-- /ko --> <span data-bind=\\\"text: TranslatedName, css: { 'withoutQueriesIcon': !Table.HasQueries }\\\" class=\\\"title custom-color-option\\\"></span> <!--ko if: Table.HasQueries--> <i data-bind=\\\"click: $parents[1].ShowQueriesDropdown.bind($parents[1], $data.Table),\\r\\n preventBubble: ['click']\\\" class=\\\"fa fa-code queries pull-right magnifier\\\"></i> <!--/ko--> <!--ko if: $parents[1]._showSearchButtons--> <i data-bind=\\\"click: $parents[1].ShowRecentAndFavoritesDropdown.bind($parents[1], $data),\\r\\n preventBubble: ['click']\\\" class=\\\"fa fa-history pull-right magnifier\\\"> </i> <!--/ko--> </a> <!-- ko if: $parents[1]._isMobile --> <!-- ko if: $data.Id === $parents[1]._recentAndFavoritesTableId() --> <!-- ko with: $parents[1]._recentAndFavorites --> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko if: $data.Table.Id === $parents[1]._menuQueriesTableId() --> <!-- ko with: $parents[1]._menuQueries --> <!--ko if: _dataLoaded--> <!-- ko template: {html: GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!--/ko--> <!-- /ko --> <!-- /ko --> <!--/ko--> </li> <!-- /ko --> <!-- /ko --> <!-- ko foreach: _areas --> <li data-bind=\\\"css: { active: IsActive, open: IsActive }\\\" class=\\\"nav-item subject-area\\\"> <a tabindex=\\\"-1\\\" data-bind=\\\"click: $parent.OpenSubMenu.bind($parent, $data), event: { mouseover: $parent.OpenSubMenu.bind($parent, $data) }\\\" class=\\\"nav-link nav-toggle custom-color-option\\\"> <!-- ko if: Icon --> <i data-bind=\\\"css: Icon\\\" class=\\\"fa custom-color-option\\\"></i> <!-- /ko --> <span data-bind=\\\"text: AreaDisplayName, css: { 'without-icon': !Icon }\\\" class=\\\"title\\\"></span> <span class=\\\"arrow\\\"></span> </a> <ul class=\\\"sub-menu\\\"> <!-- ko foreach: Screens --> <li data-bind=\\\"css: { active: IsSelected }\\\" class=\\\"designed-screen nav-item recent-and-favorites-attach-to\\\"> <a tabindex=\\\"-1\\\" data-bind=\\\"click: $root.ShowScreen.bind($root, $data, $parent), style: { color: Table.HexColor }\\\" class=\\\"nav-link sub-menu__nav-link custom-color-option\\\" href=\\\"#\\\"> <div class=\\\"nav-link-name-wrapper\\\"> <div class=\\\"nav-link__icon-wrapper\\\"> <!-- ko template: {name: $root.GetIconTemplateName.bind($data)} --> <!-- /ko --> </div> <span data-bind=\\\"text: TranslatedName\\\" class=\\\"title custom-color-option\\\"></span> </div> <div class=\\\"nav-link-icons-wrapper\\\"> <!--ko if: Table.HasQueries--> <i data-bind=\\\"click: $parents[1].ShowQueriesDropdown.bind($parents[1], $data.Table),\\r\\n preventBubble: ['click']\\\" class=\\\"fa fa-code queries magnifier pull-right\\\"></i> <!--/ko--> <!--ko if: $parents[1]._showSearchButtons--> <i data-bind=\\\"click: $parents[1].ShowRecentAndFavoritesDropdown.bind($parents[1], $data),\\r\\n preventBubble: ['click']\\\" class=\\\"fa fa-history magnifier pull-right\\\"> </i> <!--/ko--> </div> </a> <!-- ko if: $parents[1]._isMobile --> <!-- ko if: $data.Id === $parents[1]._recentAndFavoritesTableId() --> <!-- ko with: $parents[1]._recentAndFavorites --> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko if: $data.Table.Id === $parents[1]._menuQueriesTableId() --> <!-- ko with: $parents[1]._menuQueries --> <!--ko if: _dataLoaded--> <!-- ko template: {html: GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!--/ko--> <!-- /ko --> <!-- /ko --> <!--/ko--> </li> <!-- /ko --> </ul> </li> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !Table.Image --> <!-- ko if: Table.IconType === 'fontawesome-webfont' --> <i data-bind=\\\"css: Table.Icon, style: { color: Table.HexColor }\\\" class=\\\"fa fa-1x fa-stack panel-icon\\\"></i> <!-- /ko --> <!-- ko if: Table.IconType === 'Social-Icons' --> <i data-bind=\\\"css: Table.Icon, style: { color: Table.HexColor }\\\" class=\\\"socicon-btn panel-icon\\\"></i> <!-- /ko --> <!-- ko if: Table.IconType === 'Simple-Line-Icons' --> <i data-bind=\\\"css: Table.Icon, style: { color: Table.HexColor }\\\" class=\\\"panel-icon\\\"></i> <!-- /ko --> <!-- ko if: !Table.Icon --> <i class=\\\"panel-icon noImageNoIconBox\\\"> <svg class=\\\"icon\\\"> <use xlink:href=\\\"#no-image-icon\\\" data-bind=\\\"style: { fill: Table.HexColor }\\\"></use> </svg> </i> <!-- /ko --> <!-- /ko --> <!-- ko if: Table.Image --> <img data-bind=\\\"attr: {src: Table.Image}\\\" class=\\\"img-responsive image-centered height-20x20 image-icon\\\"> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {IControlParam, ISearchScreenParam} from \"Core/Screens/IScreen\";\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel';\r\nimport {RenderModes, CONTROL_TYPES} from \"Core/Constant\";\r\n\r\nimport {CanvasDesigner as CanvasDesignerControl} from \"Core/Controls/CanvasDesigner/CanvasDesigner\";\r\nimport CanvasDesignerTemplate from \"Pages/Templates/CanvasDesigner.html\";\r\nko.templates[\"Pages/Templates/CanvasDesigner\"] = CanvasDesignerTemplate;\r\n\r\nexport class CanvasDesignerPage {\r\n\tprivate _CanvasDesignerControl: CanvasDesignerControl;\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis._isReady = ko.observable(false);\r\n\t\tvar controlModel = new ControlModel();\r\n\t\tcontrolModel.TypeName = CONTROL_TYPES.CanvasDesigner;\r\n\t\tvar controlsParam: IControlParam = {\r\n\t\t\tModel: controlModel,\r\n\t\t\tForm: null,\r\n\t\t\tRenderMode: RenderModes.View\r\n\t\t}\r\n\t\tthis._CanvasDesignerControl = new CanvasDesignerControl(controlsParam);\r\n\t\tthis._CanvasDesignerControl.SetValue(null);\r\n\t}\r\n\r\n\tRender(target): void {\r\n\t\tko.cleanNode(document.getElementById(target));\r\n\t\tko.applyBindings(this, document.getElementById(target));\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Pages/Templates/CanvasDesigner\";\r\n\t}\r\n\r\n\tget CanvasDesignerControl(): CanvasDesignerControl {\r\n\t\treturn this._CanvasDesignerControl;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis._isReady(true);\r\n\t}\r\n\r\n\tRemoveControl() {\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: CanvasDesignerControl--> <div data-bind=\\\"template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) }\\\"></div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {IControlParam, ISearchScreenParam} from \"Core/Screens/IScreen\";\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel';\r\nimport {RenderModes, CONTROL_TYPES} from \"Core/Constant\";\r\n\r\nimport {FunctionDesigner as FunctionDesignerControl} from \"Core/Controls/FunctionDesigner/FunctionDesigner\";\r\nimport FunctionDesignerTemplate from \"Pages/Templates/FunctionDesigner.html\";\r\nko.templates[\"Pages/Templates/FunctionDesigner\"] = FunctionDesignerTemplate;\r\n\r\nexport class FunctionDesignerPage {\r\n\tprivate _FunctionDesignerControl: FunctionDesignerControl;\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis._isReady = ko.observable(false);\r\n\t\tvar controlModel = new ControlModel();\r\n\t\tcontrolModel.TypeName = CONTROL_TYPES.FunctionDesigner;\r\n\t\tvar controlsParam: IControlParam = {\r\n\t\t\tModel: controlModel,\r\n\t\t\tForm: null,\r\n\t\t\tRenderMode: RenderModes.View\r\n\t\t}\r\n\t\tthis._FunctionDesignerControl = new FunctionDesignerControl(controlsParam);\r\n\t\tthis._FunctionDesignerControl.SetValue(1);\r\n\t}\r\n\r\n\tRender(target): void {\r\n\t\tko.cleanNode(document.getElementById(target));\r\n\t\tko.applyBindings(this, document.getElementById(target));\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Pages/Templates/FunctionDesigner\";\r\n\t}\r\n\r\n\tget FunctionDesignerControl(): FunctionDesignerControl {\r\n\t\treturn this._FunctionDesignerControl;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis._isReady(true);\r\n\t}\r\n\r\n\tRemoveControl() {\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: FunctionDesignerControl--> <div> <div data-bind=\\\"template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) }\\\"></div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import {Deserialize, deserialize} from 'libs/cerialize';\r\n\r\nexport class DatabaseModel {\r\n\r\n\tState: number;\r\n\r\n\tOriginalName: string;\r\n\r\n\t@deserialize\r\n\tId: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tConnectionString: string;\r\n}","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\nimport {Guid} from 'Core/Common/Guid';\r\n\r\nimport {DatabaseModel} from 'Core/CyberConfigManager/Models/DatabaseModel';\r\n\r\nexport class CyberConfigManagerViewModel {\r\n\tDatabases: KnockoutObservableArray<DatabaseViewModel>;\r\n\r\n\tCurrentDb: KnockoutObservable<DatabaseViewModel>;\r\n\r\n\tconstructor(databases: Array<DatabaseModel>) {\r\n\t\tthis.Databases = ko.observableArray(databases.map(database => new DatabaseViewModel(database)));\r\n\t\tthis.CurrentDb = ko.observable(_.first(this.Databases()));\r\n\t}\r\n}\r\n\r\nexport class DatabaseViewModel {\r\n\tName: KnockoutObservable<string>;\r\n\tConnectionString: KnockoutObservable<string>;\r\n\tGuid: string;\r\n\tId: string;\r\n\r\n\tconstructor(model: DatabaseModel) {\r\n\t\tthis.Name = ko.observable(model.Name);\r\n\t\tthis.ConnectionString = ko.observable(model.ConnectionString);\r\n\t\tthis.Guid = Guid.NewGuid();\r\n\t\tthis.Id = model.Id;\r\n\t}\r\n\r\n\tCopy(): DatabaseViewModel {\r\n\t\tlet databaseModel = new DatabaseModel();\r\n\t\tdatabaseModel.Name = this.Name();\r\n\t\tdatabaseModel.ConnectionString = this.ConnectionString();\r\n\r\n\t\tlet model = new DatabaseViewModel(databaseModel);\r\n\r\n\t\tmodel.Guid = this.Guid;\r\n\r\n\t\treturn model;\r\n\t}\r\n\r\n\tGetModel(): DatabaseModel {\r\n\r\n\t\tlet databaseModel = new DatabaseModel();\r\n\t\tdatabaseModel.Name = this.Name();\r\n\t\tdatabaseModel.ConnectionString = this.ConnectionString();\r\n\r\n\t\treturn databaseModel;\r\n\t}\r\n}\r\n\r\nexport const States = {\r\n\tUpdate: 0,\r\n\tCreate: 1\r\n};\r\n","import * as $ from 'jquery';\r\nimport \"jqueryValidate\";\r\n\r\nexport class CyberConfigValidateForm {\r\n\r\n\tprivate _$errorSummaryBlock: JQuery;\r\n\tprivate _$errorSummary: JQuery;\r\n\tprivate _$inputFields: JQuery;\r\n\r\n\tconstructor(private _$form: JQuery) {\r\n\t\tthis._$errorSummaryBlock = this._$form.find('.error-summary-block');\r\n\t\tthis._$errorSummary = this._$errorSummaryBlock.find('.error-summary');\r\n\t\tthis._$inputFields = this._$form.find('input');\r\n\r\n\t\tthis.BindEvents();\r\n\t}\r\n\t\r\n\tpublic InitValidation() {\r\n\t\tthis._$form.validate({\r\n\t\t\terrorElement: 'span',\r\n\t\t\terrorClass: 'help-block',\r\n\t\t\tfocusInvalid: false,\r\n\t\t\trules: {\r\n\t\t\t\tDatabaseName: {\r\n\t\t\t\t\trequired: true\r\n\t\t\t\t},\r\n\t\t\t\tDBServerName: {\r\n\t\t\t\t\trequired: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tmessages: {\r\n\t\t\t\tDatabaseName: {\r\n\t\t\t\t\trequired: \"Database name is required.\"\r\n\t\t\t\t},\r\n\t\t\t\tDBServerName: {\r\n\t\t\t\t\trequired: \"Connection string is required.\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\thighlight(element) { // hightlight error inputs\r\n\t\t\t\t$(element)\r\n\t\t\t\t\t.closest('div').addClass('has-error'); // set error class to the control group\r\n\t\t\t},\r\n\t\t\tsuccess(label) {\r\n\t\t\t\tlabel.closest('div').removeClass('has-error');\r\n\t\t\t\tlabel.remove();\r\n\t\t\t},\r\n\t\t\terrorPlacement(error, element) {\r\n\t\t\t\terror.insertAfter(element.closest('div'));\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\t\tthis.InitValidation();\r\n\t}\r\n\r\n\tpublic IsValid() {\r\n\t\treturn this._$form.valid();\r\n\t}\r\n}","import {URL} from \"Core/Common/Url\";\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {IRequestOptions, Request} from \"Core/Common/Request\";\r\nimport {DatabaseModel} from 'Core/CyberConfigManager/Models/DatabaseModel';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\n\r\nexport class CyberConfigStore {\r\n static GetConfig(): P.Promise<Array<DatabaseModel>> {\r\n let deferredResult = P.defer<Array<DatabaseModel>>();\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.CYBERCONFIG_MANAGER.READ_CONFIG,\r\n type: 'GET',\r\n dataType: 'json'\r\n }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => deferredResult.resolve(this.Deserialize(data)))\r\n .fail(() => deferredResult.reject({message: 'Error reading config'}));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreateConfig(model: DatabaseModel) {\r\n const deferredResult = P.defer<any>();\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.CYBERCONFIG_MANAGER.CREATE_CONFIG,\r\n type: 'POST'\r\n },\r\n params: model\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(() => deferredResult.resolve(null))\r\n .fail(() => deferredResult.reject({message: 'Error creating config'}))\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateConfig(model: DatabaseModel) {\r\n const deferredResult = P.defer<any>();\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.CYBERCONFIG_MANAGER.UPDATE_CONFIG,\r\n type: 'POST'\r\n },\r\n params: model\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(() => deferredResult.resolve(null))\r\n .fail(() => deferredResult.reject({message: 'Error updating config'}));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static DeleteConfig(id: string): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.CYBERCONFIG_MANAGER.DELETE_CONFIG,\r\n type: 'POST',\r\n },\r\n params: { Id: id }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => deferredResult.resolve(null))\r\n\t\t\t.fail(() => deferredResult.reject({message: 'Error deleting config'}));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static Deserialize(jsonObject: any): any {\r\n var model = GenericDeserialize(jsonObject, DatabaseModel);\r\n return model;\r\n }\r\n\r\n}","// Module\nvar code = \"<div> <div class=\\\"logo\\\"> <span class=\\\"large-text\\\">CyberConfig Manager</span> </div> <div class=\\\"portlet\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"actions btn-set\\\"> <button data-bind=\\\"click: ResetClick.bind($data)\\\" class=\\\"btn default\\\"><i class=\\\"fa fa-reply\\\"></i> <!-- ko text: _labels.RESET --><!-- /ko --></button> <button class=\\\"btn green\\\" id=\\\"save_config\\\" data-bind=\\\"click: Save.bind($data)\\\"><i class=\\\"fa fa-check\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --></button> <button class=\\\"btn blue\\\" data-bind=\\\"click: CreateClick, disable: $data._isCreateMode\\\"><i class=\\\"fa icon-plus\\\"></i> <!-- ko text: _labels.CREATE --><!-- /ko --></button> <button class=\\\"btn red\\\" data-bind=\\\"click: DeleteClick, disable: $data._isCreateMode\\\"><i class=\\\"fa icon-trash\\\"></i> <!-- ko text: _labels.DELETE --><!-- /ko --></button> </div> </div> <div class=\\\"portlet-body\\\"> <div> <form class=\\\"cyberconfig-manager clearfix\\\"> <!-- ko with: _model --> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"><!-- ko text: $parent._labels.DATABASE_LIST --><!-- /ko --></label> <select data-bind=\\\"options: Databases, optionsText: 'Name', value: CurrentDb, event: {change: $parent.DatabaseChanged.bind($parent)}, disable: $parent._dbWatcher.IsDirty\\\" class=\\\"form-control input-medium\\\"></select> </div> <!-- /ko --> <br/> <div data-bind=\\\"visible: $data._hasValidationErrors\\\" class=\\\"alert alert-danger\\\"> <ul data-bind=\\\"foreach: _validationErrors\\\"> <li data-bind=\\\"text: $data\\\"></li> </ul> </div> <!-- ko with: _backupDb --> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"><!-- ko text: $parent._labels.DATABASE_NAME --><!-- /ko --></label> <div> <input data-bind=\\\"textInput: Name\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"DatabaseName\\\"/> </div> </div> <fieldset> <legend><!-- ko text: $parent._labels.SERFER_INFO --><!-- /ko --></legend> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"><!-- ko text: $parent._labels.DB_SERVER_NAME --><!-- /ko --></label> <div> <input data-bind=\\\"textInput: ConnectionString\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\" name=\\\"DBServerName\\\"/> </div> </div> </fieldset> <!-- /ko --> </form> </div> </div> </div> </div>\";\n// Exports\nexport default code;","export abstract class AdminPage {\r\n\tabstract GetTemplate();\r\n\r\n\tAfterRender(el) {\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {IKnockoutDirty} from 'Core/KnockoutExtentions/DirtyFlagExtention.d';\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {\r\n ConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport {CyberConfigManagerViewModel, DatabaseViewModel, States} from \"../ViewModels/CyberConfigManagerViewModel\";\r\nimport {DatabaseModel} from \"../Models/DatabaseModel\";\r\nimport {CyberConfigValidateForm} from \"../UI/CyberConfigValidateForm\";\r\nimport {CyberConfigStore} from \"../Store/CyberConfigStore\";\r\n\r\nimport View from \"Core/CyberConfigManager/Templates/CyberConfig.html\";\r\nimport ErrorPage from \"Core/CyberConfigManager/Templates/ErrorPage.html\";\r\nimport CyberConfigForm from \"Core/CyberConfigManager/Templates/CyberConfigForm.html\";\r\n\r\nimport {AdminPage} from \"../../../AdminDashboard/Pages/AdminPage\";\r\nimport TemplateTest from \"Core/CyberConfigManager/Templates/CyberConfig.html\";\r\n\r\nko.templates[\"Core/CyberConfigManager/Templates/CyberConfig\"] = View;\r\nko.templates[\"Core/CyberConfigManager/Templates/ErrorPage\"] = ErrorPage;\r\nko.templates[\"Core/CyberConfigManager/Templates/CyberConfigForm\"] = CyberConfigForm;\r\n\r\nko.templates[\"Core/CyberConfigManager/Templates/CyberConfig\"] = TemplateTest;\r\n\r\nexport class CyberConfig extends AdminPage {\r\n private _model: KnockoutObservable<CyberConfigManagerViewModel>;\r\n private _backupDb: KnockoutObservable<DatabaseViewModel>;\r\n private _isOk: KnockoutObservable<boolean>;\r\n private _errorMessage: KnockoutObservable<string>;\r\n private _validationErrors: KnockoutObservableArray<string>;\r\n private _hasValidationErrors: KnockoutComputed<boolean>;\r\n private _state: KnockoutObservable<number>;\r\n private _dbWatcher: IKnockoutDirty;\r\n private _isCreateMode: KnockoutComputed<boolean>;\r\n private _databaseModel: DatabaseModel;\r\n private _validateForm: CyberConfigValidateForm;\r\n\r\n private _cyberConfigValidateForm: CyberConfigValidateForm;\r\n private _labels = LABELS;\r\n\r\n constructor() {\r\n super();\r\n this._model = ko.observable(null);\r\n this._backupDb = ko.observable(null);\r\n this._dbWatcher = (ko as any).dirtyFlag(this._backupDb);\r\n this._isOk = ko.observable(false);\r\n this._errorMessage = ko.observable(\"\");\r\n this._validationErrors = ko.observableArray([]);\r\n this._hasValidationErrors = ko.computed(() => {\r\n return this._validationErrors() && this._validationErrors().length > 0;\r\n });\r\n this._state = ko.observable(States.Update);\r\n this._isCreateMode = ko.computed(() => {\r\n return this._state() === States.Create;\r\n });\r\n\r\n this.Init();\r\n }\r\n\r\n GetTemplate() {\r\n return TemplateTest;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/CyberConfigManager/Templates/CyberConfig';\r\n }\r\n\r\n AfterRender(el) {\r\n var validateForm = $(el).find('.cyberconfig-manager');\r\n this._validateForm = new CyberConfigValidateForm(validateForm);\r\n }\r\n\r\n public ValidateForm() {\r\n\r\n }\r\n\r\n private DatabaseChanged() {\r\n this._backupDb(this._model().CurrentDb().Copy());\r\n this._dbWatcher.Commit();\r\n }\r\n\r\n Save() {\r\n if (this._validateForm.IsValid()) {\r\n let model = this._backupDb().GetModel();\r\n model.OriginalName = this._model().CurrentDb().Name();\r\n model.State = this._state();\r\n BlockUI.Block();\r\n\r\n const promise = model.State === States.Create\r\n ? CyberConfigStore.CreateConfig(model)\r\n : CyberConfigStore.UpdateConfig(model);\r\n\r\n promise\r\n .always(() => BlockUI.Unblock())\r\n .then(() => {\r\n new Notifier().Success(NOTIFICATIONS.CONFIGURATION_SAVED);\r\n\r\n if (this._state() === States.Create) {\r\n this._model().Databases.push(this._backupDb());\r\n\r\n this._model().CurrentDb(this._backupDb());\r\n this._backupDb(this._model().CurrentDb().Copy());\r\n this._validationErrors([]);\r\n } else {\r\n this.ChangeCurrentDatabase(model);\r\n }\r\n this._state(States.Update);\r\n this._dbWatcher.Commit();\r\n })\r\n .fail(err => {\r\n let errorValue = err.value;\r\n if (errorValue) {\r\n this._validationErrors(errorValue);\r\n }\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n }\r\n\r\n Delete() {\r\n if (this._state() === States.Create) {\r\n return;\r\n }\r\n\r\n let model = this._backupDb().GetModel();\r\n model.OriginalName = this._model().CurrentDb().Name();\r\n model.Id = this._model().CurrentDb().Id;\r\n BlockUI.Block();\r\n CyberConfigStore.DeleteConfig(model.Id)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n new Notifier().Success(NOTIFICATIONS.DATABASE_DELETED);\r\n\r\n this.Init();\r\n }).fail(err => new Notifier().Failed(err.message));\r\n this._validationErrors([]);\r\n }\r\n\r\n DeleteClick() {\r\n let dialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.DELETE_DATABASE_CONFIGURATION,\r\n Type: ConfirmationTypes.Question\r\n });\r\n dialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => this.Delete());\r\n dialog.Show();\r\n }\r\n\r\n ResetClick() {\r\n if (this._dbWatcher.IsDirty()) {\r\n let dialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: ConfirmationTypes.Question\r\n });\r\n dialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => this.Reset());\r\n dialog.Show();\r\n } else {\r\n this.Reset();\r\n }\r\n }\r\n\r\n private Reset() {\r\n this._backupDb(this._model().CurrentDb().Copy());\r\n this._state(States.Update);\r\n this._dbWatcher.Commit();\r\n this._validationErrors([]);\r\n }\r\n\r\n CreateClick() {\r\n if (this._dbWatcher.IsDirty()) {\r\n let dialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: ConfirmationTypes.Question\r\n });\r\n dialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => this.Create());\r\n dialog.Show();\r\n } else {\r\n this.Create();\r\n }\r\n }\r\n\r\n private Create() {\r\n this._backupDb(new DatabaseViewModel(new DatabaseModel()));\r\n this._state(States.Create);\r\n this._dbWatcher.Commit();\r\n this._validationErrors([]);\r\n }\r\n\r\n GetErrorPage(): string {\r\n return 'Core/CyberConfigManager/Templates/ErrorPage';\r\n }\r\n\r\n GetCyberConfigForm(): string {\r\n return 'Core/CyberConfigManager/Templates/CyberConfigForm';\r\n }\r\n\r\n Init() {\r\n BlockUI.Block();\r\n return CyberConfigStore.GetConfig()\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(databases => {\r\n if (!databases) {\r\n this._errorMessage(NOTIFICATIONS.DATABASE_NOT_FOUND);\r\n }\r\n this._model(new CyberConfigManagerViewModel(databases));\r\n this._backupDb(this._model().CurrentDb().Copy());\r\n this._dbWatcher.Commit();\r\n this._isOk(true);\r\n })\r\n .fail(err => this._errorMessage(err.message))\r\n }\r\n\r\n private ChangeCurrentDatabase(model: DatabaseModel) {\r\n this._model().CurrentDb().Name(model.Name);\r\n this._model().CurrentDb().ConnectionString(model.ConnectionString);\r\n }\r\n}","// Module\nvar code = \"<h1 data-bind=\\\"text: _errorMessage\\\"></h1>\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"cyberConfig-manager\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix cyberConfig-manager-container\\\"> <div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"cyberConfig-content\\\"> <div class=\\\"tab-wrapper\\\"> <ul class=\\\"nav nav-tabs\\\"> <li class=\\\"tab active\\\"> <a href=\\\"#guest-page\\\" class=\\\"tab-link\\\" data-toggle=\\\"tab\\\"><!--ko text: _labels.GUEST_PAGE --><!--/ko--></a> </li> <li class=\\\"tab\\\"> <a href=\\\"#environments-page\\\" class=\\\"tab-link\\\" data-toggle=\\\"tab\\\"><!--ko text: _labels.ENVIRONMENTS --><!--/ko--></a> </li> </ul> <div class=\\\"tab-content\\\"> <div class=\\\"tab-pane fade active in\\\" id=\\\"guest-page\\\"> <!--ko with: _guestPage--> <!--ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)}--><!--/ko--> <!--/ko--> </div> <div class=\\\"tab-pane fade\\\" id=\\\"environments-page\\\"> <!--ko with: _environmentsPage--> <!--ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)}--><!--/ko--> <!--/ko--> </div> </div> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {AttachmentModel} from 'Core/Controls/Image/Models/AttachmentModel';\r\n\r\nexport class GuestPageStore {\r\n\tUploadImage(attachmentModel: AttachmentModel) {\r\n return Request.Send({\r\n proxy: {\r\n url: '/Guest/UploadImage',\r\n type: 'POST'\r\n }, params: attachmentModel\r\n });\r\n }\r\n\r\n RemoveImage() {\r\n return Request.Send({\r\n proxy: {\r\n url: '/Guest/RemoveImage',\r\n type: 'POST'\r\n }\r\n });\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {AttachmentModel} from \"Core/Controls/Image/Models/AttachmentModel\";\r\n\r\nimport {GuestPageStore} from \"../Store/GuestPageStore\";\r\n\r\nimport Template from \"Core/CyberConfigManager/Templates/GuestPage.html\";\r\n\r\nko.templates['Core/CyberConfigManager/Templates/GuestPage'] = Template;\r\n\r\nexport class GuestPage {\r\n private _store: GuestPageStore;\r\n private _image: KnockoutObservable<string>;\r\n private _showRemove: KnockoutObservable<boolean>;\r\n\r\n\tprivate _defaultImage: string;\r\n\tprivate _imageUrl: string;\r\n\tprivate _maxImageSize: number;\r\n\r\n constructor() {\r\n this._store = new GuestPageStore();\r\n this._image = ko.observable(null);\r\n this._showRemove = ko.observable(false);\r\n\r\n\t\tthis._defaultImage = '../../../../../img/Custom/logo_upload.png';\r\n\t\tthis._imageUrl = this.GetImageUrl();\r\n\t\tthis._maxImageSize = 10;\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/CyberConfigManager/Templates/GuestPage';\r\n\t}\r\n\r\n GetImageUrl() {\r\n\t\tconst subDomain = window.location.hostname.split('.')[0];\r\n\t\tvar timestamp = +new Date;\r\n\t return `/Static/Images/${subDomain}/Guest.jpg?${timestamp}`;\r\n }\r\n\r\n AfterRender() {\r\n this.LoadImage();\r\n }\r\n\r\n AfterUpload(file) {\r\n BlockUI.Block();\r\n\r\n const attachmentModel = new AttachmentModel();\r\n attachmentModel.FileName = file.name;\r\n\r\n const reader = new FileReader();\r\n\t\treader.onloadend = () => {\r\n\t\t\tif (file.status === 'error') {\r\n const message = NOTIFICATIONS.FILE_SIZE_IS_TOO_BIG.replace('{MaxFileSize}', this._maxImageSize.toString());\r\n new Notifier().Warning(message);\r\n BlockUI.Unblock();\r\n return;\r\n\t\t\t}\r\n\r\n\t\t\tif (file.status === 'removed') {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n attachmentModel.Base64Data = (reader.result as string).split(',')[1];\r\n\r\n this._store.UploadImage(attachmentModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n new Notifier().Success('Image Updated');\r\n\t\t\t\t\tthis._image(this.GetImageUrl());\r\n this._showRemove(true);\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n ImageDelete() {\r\n this._store.RemoveImage()\r\n .always(() => BlockUI.Unblock())\r\n .then(() => {\r\n this._image(this._defaultImage);\r\n this._showRemove(false);\r\n });\r\n }\r\n\r\n\tprivate LoadImage() {\r\n\t\tvar img = new Image();\r\n\t\timg.onload = () => {\r\n\t\t\tthis._image(this._imageUrl);\r\n\t\t\tthis._showRemove(true);\r\n\t\t};\r\n\t\timg.onerror = () => this._image(this._defaultImage);\r\n\t\timg.src = this._imageUrl;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"image-upload\\\"> <a data-bind=\\\"click: ImageDelete, css: {'hidden': !_showRemove()}\\\" class=\\\"remove-mark\\\"></a> <img src=\\\"\\\" data-bind=\\\"\\r\\n attr:{'src': _image},\\r\\n dropzone: {\\r\\n url: 'ScreenForm/SaveUploadedFile',\\r\\n autoProcessQueue: false,\\r\\n maxFilesize: $data._maxImageSize,\\r\\n\\t\\t\\t\\tacceptedFiles: '.png,.gif,.jpg,.jpeg,.jpe,.jif,.jfif,.jfi'\\r\\n\\t\\t }\\\" class=\\\"dropzone image\\\"> </div>\";\n// Exports\nexport default code;","import {URL} from \"Core/Common/Url\";\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {IRequestOptions, Request} from \"Core/Common/Request\";\r\nimport {CreateEnvironmentModel} from 'Core/CyberConfigManager/Models/CreateEnvironmentModel';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {DatabaseModel} from \"../Models/DatabaseModel\";\r\n\r\nexport class EnvironmentsPageStore {\r\n CreateEnvironment(model : CreateEnvironmentModel){\r\n let deferredResult = P.defer<any>();\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.CYBERCONFIG_MANAGER.CREATE_ENVIRONMENT,\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: model\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(() => deferredResult.resolve(null))\r\n .fail((data) => {\r\n let jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import {Deserialize, deserialize} from 'libs/cerialize';\r\n\r\nexport class CreateEnvironmentModel {\r\n\tName: string;\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {EnvironmentsPageStore} from \"../Store/EnvironmentsPageStore\";\r\nimport {CreateEnvironmentModel} from 'Core/CyberConfigManager/Models/CreateEnvironmentModel';\r\n\r\nimport Template from \"Core/CyberConfigManager/Templates/EnvironmentsPage.html\";\r\nimport {\r\n ConfirmationDialog, EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"../../Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nko.templates['Core/CyberConfigManager/Templates/EnvironmentsPage'] = Template;\r\n\r\nexport class EnvironmentsPage {\r\n private _store: EnvironmentsPageStore;\r\n private _environmentName: KnockoutObservable<string>;\r\n private _labels = LABELS;\r\n private _notifications = NOTIFICATIONS;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _validationMsg: KnockoutObservable<string>;\r\n\r\n constructor() {\r\n this._store = new EnvironmentsPageStore();\r\n this._environmentName = ko.observable(null);\r\n this._isValid = ko.observable(true);\r\n this._validationMsg = ko.observable(this._labels.THIS_FIELD_IS_REQUIRED);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/CyberConfigManager/Templates/EnvironmentsPage';\r\n\t}\r\n\r\n\tSave() {\r\n BlockUI.Block();\r\n let model = new CreateEnvironmentModel();\r\n model.Name = this._environmentName();\r\n\r\n this._store.CreateEnvironment(model)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n new Notifier().Success(NOTIFICATIONS.ENVIROMENT_WAS_CREATED.replace('{Environment}', this._environmentName()));\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n Copy() {\r\n if(!this.IsValid()){\r\n return;\r\n }\r\n this.ShowConfirmationDialog();\r\n }\r\n\r\n IsValid(): boolean {\r\n if(!this._environmentName()) {\r\n this._isValid(false);\r\n this._validationMsg(this._labels.THIS_FIELD_IS_REQUIRED);\r\n }else {\r\n const specialChars = new RegExp('^[a-zA-Z_\\\\-0-9]+$');\r\n if(!specialChars.test(this._environmentName())) {\r\n this._isValid(false);\r\n this._validationMsg(this._labels.SPECIAL_CHARACTERS_NOT_ALLOWED);\r\n }else {\r\n this._isValid(true);\r\n this._validationMsg(this._labels.THIS_FIELD_IS_REQUIRED);\r\n }\r\n }\r\n\r\n return this._isValid();\r\n }\r\n\r\n OnKeyUpValidation(that, event): boolean {\r\n if(!this._environmentName()){\r\n this._isValid(false);\r\n this._validationMsg(this._labels.THIS_FIELD_IS_REQUIRED);\r\n }else {\r\n const specialChars = new RegExp('^[a-zA-Z_\\\\-0-9]+$');\r\n if(!specialChars.test(this._environmentName())) {\r\n this._isValid(false);\r\n this._validationMsg(this._labels.SPECIAL_CHARACTERS_NOT_ALLOWED);\r\n }else {\r\n this._isValid(true);\r\n this._validationMsg(this._labels.THIS_FIELD_IS_REQUIRED);\r\n }\r\n }\r\n\r\n return this._isValid();\r\n }\r\n\r\n private ShowConfirmationDialog() {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: NOTIFICATIONS.CONFIRMATION_FOR_COPY_ENVIROMENT,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.Save();\r\n });\r\n confirmationDialog.Show();\r\n }\r\n\r\n AfterRender() {\r\n this.LoadImage();\r\n }\r\n\r\n\tprivate LoadImage() {\r\n\t}\r\n}","// Module\nvar code = \"<div> <div class=\\\"environment-input-container\\\"> <label class=\\\"environment-input-name\\\" data-bind=\\\"text: _labels.NAME + ':'\\\"></label> <input data-bind=\\\" textInput: _environmentName,\\r\\n attr: {placeholder: _labels.NEW_ENVIRONMENT_WILL_BE_COPIED},\\r\\n css: {'has-error': !_isValid()},\\r\\n event: {'keyup': OnKeyUpValidation, 'blur': OnKeyUpValidation}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control environment-input\\\" name=\\\"DBServerName\\\" required=\\\"true\\\"/> <div class=\\\"environment-input-error-container\\\" data-bind=\\\"css: {'hidden': _isValid}\\\"> <i class=\\\"fa fa-warning control-tooltip\\\"></i> <label data-bind=\\\"text: _validationMsg()\\\"></label> </div> </div> <button class=\\\"btn green\\\" id=\\\"save_enviroment\\\" data-bind=\\\"click: Copy.bind($data)\\\"><i class=\\\"fa fa-check\\\"></i> <!-- ko text: _labels.COPY --><!-- /ko --> </button> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {CyberConfig} from \"./Components/CyberConfig\";\r\n\r\nimport Template from \"Core/CyberConfigManager/Templates/CyberConfigManager.html\";\r\nimport {GuestPage} from \"./Components/GuestPage\";\r\nimport {EnvironmentsPage} from \"./Components/EnvironmentsPage\";\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nko.templates[\"Core/CyberConfigManager/Templates/CyberConfigManager\"] = Template;\r\n\r\nexport class CyberConfigManager {\r\n private _isReady: KnockoutObservable<boolean>;\r\n\r\n private _config: CyberConfig;\r\n private _guestPage: any;\r\n private _environmentsPage: EnvironmentsPage;\r\n\tprivate _labels = LABELS;\r\n\r\n constructor() {\r\n this._isReady = ko.observable(false);\r\n\r\n this._config = new CyberConfig();\r\n this._guestPage = new GuestPage();\r\n this._environmentsPage = new EnvironmentsPage();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/CyberConfigManager/Templates/CyberConfigManager';\r\n }\r\n\r\n AfterRender() {\r\n this._config.Init().always(() => this._isReady(true));\r\n }\r\n\r\n Render(elId: string) {\r\n let container = document.getElementById(elId);\r\n ko.cleanNode(container);\r\n ko.applyBindings(this, container);\r\n }\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class TranslationValueModel {\r\n\t@deserialize\r\n\tKey: string;\r\n\r\n\t@deserialize\r\n\tValue: string;\r\n}\r\n\r\nexport class TranslationModel {\r\n\tconstructor() {\r\n\t\tthis.Translations = [];\r\n\t}\r\n\r\n\tIsFocused: boolean;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tCode: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserializeAs(TranslationValueModel)\r\n\tTranslations: Array<TranslationValueModel>;\r\n}","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { Deserialize } from 'libs/cerialize';\r\nimport { TranslationModel } from 'Pages/TransaltionEditorPage/Models/TranslationModel';\r\nimport { TranslationTypeModel } from \"Pages/TransaltionEditorPage/Models/TranslationTypeModel\";\r\nimport { UpdateTranslationModel } from 'Pages/TransaltionEditorPage/Models/UpdateTranslationModel';\r\n\r\nexport interface IGetTranslationRequestModel {\r\n\tSearchValue?: string;\r\n\tPageNumber: number;\r\n\tRecordsPerPage: number;\r\n\tTranslationType?: number;\r\n}\r\n\r\nexport interface IGetTranslationResponseModel {\r\n\tTranslations: Array<TranslationModel>;\r\n\tTranslationColumns: Array<string>,\r\n\tTotalRecords: number;\r\n}\r\n\r\nexport class TranslationEditorStore {\r\n\tstatic GetTranslations(params: IGetTranslationRequestModel): P.Promise<IGetTranslationResponseModel> {\r\n\t\tvar deferredResult = P.defer<IGetTranslationResponseModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TranslationsrApi/GetTranslations',\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve({\r\n\t\t\t\t\t\tTranslations: this.Deserialize(data.ResultObject.Translations),\r\n\t\t\t\t\t\tTranslationColumns: data.ResultObject.TranslationColumns,\r\n\t\t\t\t\t\tTotalRecords: parseInt(data.ResultObject.TotalRecords)\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetTranslationTypes(): P.Promise<TranslationTypeModel> {\r\n\t\tconst deferredResult = P.defer<TranslationTypeModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TranslationsrApi/GetTranslationTypes',\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t}).fail(data => {\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Update(params: UpdateTranslationModel): P.Promise<Array<any>> {\r\n\t\tvar deferredResult = P.defer<Array<any>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TranslationsrApi/UpdateTranslation',\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): Array<TranslationModel> {\r\n\t\tvar model = Deserialize(jsonObject, TranslationModel);\r\n\t\treturn model;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { Text } from 'Core/Controls/Text/Text'\r\nimport { ICell } from 'Pages/TransaltionEditorPage/TranslationEditor/ICell';\r\nimport { RenderModes, CONTROL_TYPES } from 'Core/Constant';\r\nimport { IControlParam } from 'Core/Screens/IScreen';\r\nimport { ControlModel } from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport { ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport { RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport { IControlValue } from 'Core/Controls/BaseControl/BaseControl';\r\n\r\nimport Template from 'Pages/TransaltionEditorPage/TranslationEditor/Templates/TranslationCell.html';\r\nimport {AttachedFieldModel} from \"../../../Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\n\r\nexport class TranslationCell implements ICell {\r\n\tprivate _fieldName: string;\r\n\tprivate _value: KnockoutObservable<string>;\r\n\tprivate _isEditMode: KnockoutObservable<boolean>;\r\n\tprivate _editor: KnockoutObservable<Text>;\r\n\r\n\tconstructor(fieldName: string, value: string) {\r\n\t\tthis._fieldName = fieldName;\r\n\t\tthis._value = ko.observable(value);\r\n\t\tthis._editor = ko.observable(null);\r\n\t\tthis._isEditMode = ko.observable(false);\r\n\t\tthis._isEditMode.subscribe((newValue) => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\tlet fieldModel = new AttachedFieldModel();\r\n\t\t\t\tlet model = new ControlModel();\r\n\t\t\t\tmodel.Fields = [fieldModel];\r\n\t\t\t\tmodel.TypeName = CONTROL_TYPES.Text;\r\n\r\n\t\t\t\tvar controlParam: IControlParam = {\r\n\t\t\t\t\tModel: model,\r\n\t\t\t\t\tRenderMode: RenderModes.Edit,\r\n\t\t\t\t\tForm: null\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._editor(new Text(controlParam));\r\n\t\t\t\tvar controlData = new ControlDataModel();\r\n\t\t\t\tcontrolData.Value = this._value();\r\n\t\t\t\tvar controlValue: IControlValue = {\r\n\t\t\t\t\tSubjectRecordId: 0,\r\n\t\t\t\t\tSubjectEntityId: 0,\r\n\t\t\t\t\tData: controlData,\r\n\t\t\t\t\tRecordSpecsModel: new RecordSpecsModel()\r\n\t\t\t\t}\r\n\t\t\t\tthis._editor().SetValue(controlValue);\r\n\t\t\t} else {\r\n\t\t\t\tif (this._editor()) {\r\n\t\t\t\t\tthis._value(this._editor().GetValue());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() {}\r\n\r\n\tget Value(): KnockoutObservable<string> {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\tset IsEditMode(value: boolean) {\r\n\t\tthis._isEditMode(value);\r\n\t}\r\n\r\n\tGetEditValue(): string {\r\n\t\treturn this._editor().GetValue();\r\n\t}\r\n\r\n\tget FieldName(): string {\r\n\t\treturn this._fieldName;\r\n\t}\r\n\r\n\tCancelEdit() {\r\n\t\tthis._editor(null);\r\n\t\tthis._isEditMode(false);\r\n\t}\r\n}","// Module\nvar code = \"<td> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko if: !_isEditMode() --> <!-- ko text: Value --> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","export const EVENTS = {\r\n\tSAVE: 'SAVE',\r\n\tEDIT: 'EDIT',\r\n\tCANCEL: 'CANCEL'\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { ICell } from 'Pages/TransaltionEditorPage/TranslationEditor/ICell';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { EVENTS } from 'Pages/TransaltionEditorPage/TranslationEditor/Events';\r\n\r\nimport Template from 'Pages/TransaltionEditorPage/TranslationEditor/Templates/TranslationActionCell.html';\r\n\r\nexport class TranslationActionCell extends Event implements ICell {\r\n\tprivate _isEditMode: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis._isEditMode = ko.observable(false);\r\n\t\tthis.AddEvent(EVENTS.EDIT);\r\n\t\tthis.AddEvent(EVENTS.SAVE);\r\n\t\tthis.AddEvent(EVENTS.CANCEL);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() {}\r\n\r\n\tEdit() {\r\n\t\tthis._isEditMode(true);\r\n\t\tthis.Trigger(EVENTS.EDIT);\r\n\t}\r\n\r\n\tSave() {\r\n\t\tthis._isEditMode(false);\r\n\t\tthis.Trigger(EVENTS.SAVE);\r\n\t}\r\n\r\n\tCancel() {\r\n\t\tthis._isEditMode(false);\r\n\t\tthis.Trigger(EVENTS.CANCEL);\r\n\t}\r\n\r\n\tget IsEditMode(): KnockoutObservable<boolean> {\r\n\t\treturn this._isEditMode;\r\n\t}\r\n}","// Module\nvar code = \"<td> <a data-bind=\\\"click: Edit, visible: !IsEditMode()\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-edit\\\"></i> </a> <a data-bind=\\\"click: Save, visible: IsEditMode\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa fa-save transition\\\"></i> </a> <a data-bind=\\\"click: $data.Cancel, visible: IsEditMode\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa fa-close transition\\\"></i> </a> </td>\";\n// Exports\nexport default code;","import { IKeyValuePair } from \"../../../Core/Portlets/Utils/GuidToPortletInfoMap\";\r\n\r\nexport class UpdateTranslationModel {\r\n\tconstructor() {\r\n\t\tthis.Translations = [];\r\n\t}\r\n\r\n\tId: number;\r\n\tTranslations: Array<IKeyValuePair<string, string>>;\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { TranslationCell } from \"Pages/TransaltionEditorPage/TranslationEditor/TranslationCell\";\r\nimport { TranslationModel } from \"Pages/TransaltionEditorPage/Models/TranslationModel\";\r\nimport { TranslationActionCell } from 'Pages/TransaltionEditorPage/TranslationEditor/TranslationActionCell';\r\nimport { ICell } from 'Pages/TransaltionEditorPage/TranslationEditor/ICell';\r\nimport { EVENTS } from 'Pages/TransaltionEditorPage/TranslationEditor/Events';\r\nimport { UpdateTranslationModel } from 'Pages/TransaltionEditorPage/Models/UpdateTranslationModel';\r\nimport { IDictionary } from 'Core/Screens/BaseScreen';\r\nimport { TranslationEditorStore } from 'Pages/TransaltionEditorPage/Stores/TranslationEditorStore';\r\nimport { IKeyValuePair } from 'Core/Portlets/Utils/GuidToPortletInfoMap';\r\nimport { NOTIFICATIONS, LABELS, CONFIRMATIONS } from \"Core/Components/Translation/Locales\";\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nimport Template from 'Pages/TransaltionEditorPage/TranslationEditor/Templates/TranslationRow.html';\r\n\r\nexport class TranslationRow {\r\n\tprivate _cells: KnockoutObservableArray<ICell>;\r\n\tprivate _model: TranslationModel;\r\n\r\n\tconstructor(model: TranslationModel) {\r\n\t\tthis._model = model;\r\n\t\tthis._cells = ko.observableArray([]);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tInit() {\r\n\t\tvar editCells = [];\r\n\t\tvar actionCell = new TranslationActionCell();\r\n\r\n\t\tactionCell.On(EVENTS.EDIT, this, (eventArgs) => {\r\n\t\t\t_.each(editCells, (cell: TranslationCell) => {\r\n\t\t\t\tcell.IsEditMode = true;\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tactionCell.On(EVENTS.CANCEL, this, (eventArgs) => {\r\n\t\t\t_.each(editCells, (cell: TranslationCell) => {\r\n\t\t\t\tcell.CancelEdit();\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tactionCell.On(EVENTS.SAVE, this, (eventArgs) => {\r\n\t\t\tvar updateModel = new UpdateTranslationModel();\r\n\t\t\tupdateModel.Id = this._model.Id;\r\n\t\t\t\r\n\t\t\t_.each(editCells, (cell: TranslationCell) => {\r\n\t\t\t\tvar translations: IKeyValuePair<string, string> = {\r\n\t\t\t\t\tKey: cell.FieldName,\r\n\t\t\t\t\tValue: cell.GetEditValue()\r\n\t\t\t\t};\r\n\t\t\t\tcell.IsEditMode = false;\r\n\t\t\t\tupdateModel.Translations.push(translations);\r\n\t\t\t});\r\n\r\n\t\t\tBlockUI.Block();\r\n\t\t\tTranslationEditorStore.Update(updateModel)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tnew Notifier().Success(NOTIFICATIONS.RECORD_SAVED);\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tnew Notifier().Failed(err.message);\r\n\t\t\t\t})\r\n\t\t});\r\n\r\n\t\tvar codeCell = new TranslationCell('CODE', this._model.Code.toString());\r\n\t\tvar nameCell = new TranslationCell('NAME', this._model.Name);\r\n\r\n\t\tthis._cells.push(actionCell);\r\n\t\tthis._cells.push(codeCell);\r\n\t\tthis._cells.push(nameCell);\r\n\r\n\t\t_.each(this._model.Translations, (translation) => {\r\n\t\t\tvar cell = new TranslationCell(translation.Key, translation.Value);\r\n\t\t\tthis._cells.push(cell);\r\n\t\t\teditCells.push(cell);\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\r\n\t}\r\n\r\n\tget Cells(): KnockoutObservableArray<ICell> {\r\n\t\treturn this._cells;\r\n\t}\r\n}","// Module\nvar code = \"<tr> <!-- ko foreach: Cells --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </tr>\";\n// Exports\nexport default code;","export class TranslationHeader {\r\n\tprivate _columnName: string;\r\n\r\n\tconstructor(columnName: string) {\r\n\t\tthis._columnName = columnName;\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\treturn this._columnName;\r\n\t}\r\n}","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport { TranslationRow } from 'Pages/TransaltionEditorPage/TranslationEditor/TranslationRow';\r\nimport { TranslationModel } from 'Pages/TransaltionEditorPage/Models/TranslationModel';\r\nimport { TranslationHeader } from 'Pages/TransaltionEditorPage/TranslationEditor/TranslationHeader';\r\n\r\nimport Template from 'Pages/TransaltionEditorPage/TranslationEditor/Templates/TranslationGrid.html';\r\n\r\nexport class TranslationGrid {\r\n\tprivate _rows: KnockoutObservableArray<TranslationRow>;\r\n\tprivate _headers: KnockoutObservableArray<TranslationHeader>;\r\n\r\n\tconstructor() {\r\n\t\tthis._rows = ko.observableArray([]);\r\n\t\tthis._headers = ko.observableArray([]);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\t\r\n\t}\r\n\r\n\tSetData(translationColumns: Array<string>, translations: Array<TranslationModel>) {\r\n\t\tthis._rows([]);\r\n\t\tthis._headers([]);\r\n\t\tvar actionHeader = new TranslationHeader('');\r\n\t\tvar codeHeader = new TranslationHeader('CODE');\r\n\t\tvar nameHeader = new TranslationHeader('NAME');\r\n\t\tthis._headers.push(actionHeader);\r\n\t\tthis._headers.push(codeHeader);\r\n\t\tthis._headers.push(nameHeader);\r\n\t\t\r\n\t\t_.each(translationColumns, (translation) => {\r\n\t\t\tthis._headers.push(new TranslationHeader(translation));\r\n\t\t});\r\n\r\n\t\t_.each(translations, (translation) => {\r\n\t\t\tvar row = new TranslationRow(translation);\r\n\t\t\tthis._rows.push(row);\r\n\t\t});\r\n\t}\r\n\r\n\tget Rows(): KnockoutObservableArray<TranslationRow> {\r\n\t\treturn this._rows;\r\n\t}\r\n\r\n\tget Headers(): KnockoutObservableArray<TranslationHeader> {\r\n\t\treturn this._headers;\r\n\t}\r\n}","// Module\nvar code = \"<table class=\\\"table table-striped table-bordered table-advance table-hover flip-content vertical-align-m\\\"> <thead> <tr class=\\\"flip-content\\\"> <!-- ko foreach: Headers --> <th data-bind=\\\"text: Title\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: Rows --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </tbody> </table> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _isReady --> <div class=\\\"dropdown-wraper typeahead input-medium subFormControl translation_type_filter_box\\\"> <select class=\\\"form-control minimal\\\" data-bind=\\\"\\r\\n selectize: _translationTypes,\\r\\n value: _selectedTranslationTypeId,\\r\\n optionsText: 'TypeName',\\r\\n optionsValue: 'TypeId',\\r\\n optionsCaption: _labels.FILTER_BY_TYPE,\\r\\n object: _selectedTranslationType,\\r\\n options: {\\r\\n dropdownParent: 'body',\\r\\n dropdownDirection: 'auto',\\r\\n onChange: OnSelectTranslationType.bind($data)\\r\\n }\\\"> </select> <!-- ko if: _selectedTranslationType() --> <div class=\\\"dropdown-controls\\\"> <a data-bind=\\\"click: $data.ClearTranslationType.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-reset red\\\"> <i class=\\\"fa fa-times\\\"></i> </a> </div> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { TranslationEditorStore } from 'Pages/TransaltionEditorPage/Stores/TranslationEditorStore';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { TranslationGrid } from 'Pages/TransaltionEditorPage/TranslationEditor/TranslationGrid';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { GlobalManager, GLOBALS } from 'Core/GlobalManager/GlobalManager';\r\nimport { Paginator } from 'Core/Components/Paginator/Paginator';\r\nimport { EVENTS as PAGINATOR_EVENTS } from 'Core/Components/Paginator/Constants';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport { TranslationTypeModel } from \"Pages/TransaltionEditorPage/Models/TranslationTypeModel\";\r\n\r\nimport Template from 'Pages/TransaltionEditorPage/Templates/TranslationEditor.html';\r\nimport DropdownTemplate from 'Pages/TransaltionEditorPage/Templates/Dropdown.html';\r\n\r\nko.templates['Pages/TransaltionEditorPage/Templates/TranslationEditor'] = Template;\r\nko.templates['Pages/TransaltionEditorPage/Templates/Dropdown'] = DropdownTemplate;\r\n\r\nexport class TranslationEditorPage {\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _grid: TranslationGrid;\r\n\tprivate _paginator: Paginator;\r\n\tprivate _searchValue = ko.observable('');\r\n\r\n\tprivate _translationTypes: KnockoutObservableArray<TranslationTypeModel>;\r\n\tprivate _selectedTranslationType: KnockoutObservable<TranslationTypeModel>;\r\n\tprivate _selectedTranslationTypeId: KnockoutObservable<number>;\r\n\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor() {\r\n\t\tthis._isReady = ko.observable(false);\r\n\t\tthis._grid = new TranslationGrid();\r\n\t\tvar otherGridPageLines = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n\t\tvar recordsPerpage = parseInt(otherGridPageLines);\r\n\t\tthis._paginator = new Paginator();\r\n\t\tthis._paginator.RecordsPerPage = isNaN(recordsPerpage) ? 10 : recordsPerpage;\r\n\r\n\t\tthis._translationTypes = ko.observableArray([]);\r\n\t\tthis._selectedTranslationType = ko.observable(null);\r\n\t\tthis._selectedTranslationTypeId = ko.observable(0);\r\n\r\n\t\tthis._paginator.On(PAGINATOR_EVENTS.CHANGE, this, (eventArgs) => {\r\n\t\t\tthis.LoadTranslations(this._searchValue());\r\n\t\t});\r\n\t}\r\n\r\n\tRender(target): void {\r\n\t\tko.cleanNode(document.getElementById(target));\r\n\t\tko.applyBindings(this, document.getElementById(target));\r\n\t}\r\n\r\n\tEnterKey() {\r\n\t\tthis._paginator.PageNumber = 1;\r\n\t\tthis.LoadTranslations(this._searchValue());\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Pages/TransaltionEditorPage/Templates/TranslationEditor';\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tif (el) {\r\n\t\t\tthis._el = el[0];\r\n\t\t}\r\n\t\tthis._isReady(true);\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tGetDropdownTemplate() {\r\n\t\treturn DropdownTemplate;\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tBlockUI.Block();\r\n\t\tconst loadTranslationsParams = { RecordsPerPage: this._paginator.RecordsPerPage, PageNumber: this._paginator.PageNumber };\r\n\r\n\t\tconst loadTranslationsPromise = TranslationEditorStore.GetTranslations(loadTranslationsParams);\r\n\t\tconst loadTranslationTypesPromise = TranslationEditorStore.GetTranslationTypes();\r\n\r\n\t\tloadTranslationsPromise.fail(error => this.ShowError(error.message));\r\n\t\tloadTranslationTypesPromise.fail(error => this.ShowError(error.message));\r\n\r\n\t\tP.when(loadTranslationsPromise, loadTranslationTypesPromise)\r\n\t\t\t.then(result => {\r\n\t\t\t\tconst translations = result[0];\r\n\t\t\t\tthis._translationTypes(result[1]);\r\n\r\n\t\t\t\tthis._grid.SetData(translations.TranslationColumns, translations.Translations);\r\n\t\t\t\tthis._paginator.TotalRecords = translations.TotalRecords;\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tLoadTranslations(searchValue: string) {\r\n\t\tBlockUI.Block();\r\n\t\tconst loadTranslationsParams = { RecordsPerPage: this._paginator.RecordsPerPage, PageNumber: this._paginator.PageNumber, SearchValue: searchValue, TranslationType: this._selectedTranslationTypeId() };\r\n\r\n\t\tTranslationEditorStore.GetTranslations(loadTranslationsParams)\r\n\t\t\t.fail((error) => this.ShowError(error.message))\r\n\t\t\t.then((translations) => {\r\n\t\t\t\tthis._grid.SetData(translations.TranslationColumns, translations.Translations);\r\n\t\t\t\tthis._paginator.TotalRecords = translations.TotalRecords;\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tOnSelectTranslationType(typeId) {\r\n\t\tthis._paginator.PageNumber = 1;\r\n\t\tconst convertedTypeId = Number(typeId);\r\n\t\tconst selectedType = _.find(this._translationTypes(), item => item.TypeId === convertedTypeId);\r\n\r\n\t\tthis.SetSelectedTranslationType(selectedType);\r\n\t\tthis.LoadTranslations(this._searchValue());\r\n\r\n\t}\r\n\r\n\tClearTranslationType() {\r\n\t\tthis._paginator.PageNumber = 1;\r\n\t\tthis._isReady(false);\r\n\t\tthis.SetSelectedTranslationType(null);\r\n\t\tthis._isReady(true);\r\n\t\tthis.LoadTranslations(this._searchValue());\r\n\t}\r\n\r\n\tprivate SetSelectedTranslationType(selectedType: TranslationTypeModel) {\r\n\t\tthis._selectedTranslationType(selectedType);\r\n\t\tthis._selectedTranslationTypeId(!!selectedType ? selectedType.TypeId : null);\r\n\t}\r\n\r\n\tprivate ShowError(message: string) {\r\n\t\tNotifier.Failed(message);\r\n\t}\r\n\r\n\tget Grid(): TranslationGrid{\r\n\t\treturn this._grid;\r\n\t}\r\n\r\n\tget Paginator(): Paginator {\r\n\t\treturn this._paginator;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"actionBarSubForm translation-editor__wrapper\\\"> <div role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"action-bar-wrapper translation-editor--actionBar\\\"> <div class=\\\"bar-left\\\"> <input data-bind=\\\"hasFocus: true, enterKey: EnterKey, textInput: _searchValue, attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" tabindex=\\\"1\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl\\\"> <!--ko template: {html: GetDropdownTemplate}--><!--/ko--> </div> <div class=\\\"bar-right entity-heading\\\"> <div class=\\\"entity-icon-container\\\"> <span class=\\\"fa fa-language\\\" aria-hidden=\\\"true\\\"></span> </div> <div class=\\\"entityName\\\"> <!-- ko text: 'Translation Editor' --><!-- /ko --> </div> </div> </div> </div> </div> </div> <!-- ko with: Grid --> <div class=\\\"box-shadow-wrapper translation-editor-result\\\"> <div class=\\\"pull-left pagination-container-grid\\\"> <!-- ko with: $parent.Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> <!-- ko template: {html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {PortletSpaceManager} from \"Core/Portlets/Managers/Runtime/PortletSpaceManager\";\r\n\r\nimport Template from 'Core/Portlets/Templates/PortletsPage.html';\r\n\r\nko.templates['Core/Portlets/Templates/PortletsPage'] = Template;\r\n\r\n\r\nexport class PortletsPage {\r\n\tprivate _labels: LABELS;\r\n\tprivate _portletSpace: PortletSpaceManager;\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis._labels = LABELS;\r\n\t\tthis._portletSpace = new PortletSpaceManager({Subject: null});\r\n\t\tthis._isReady = ko.observable(false);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Portlets/Templates/PortletsPage';\r\n\t}\r\n\r\n\tRender(containerId: string) {\r\n\t\tconst container = document.getElementById(containerId);\r\n\r\n\t\tko.cleanNode(container);\r\n\t\tko.applyBindings(this, container);\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis._portletSpace.Load().always(() => this._isReady(true));\r\n\t}\r\n}","// Module\nvar code = \"<h3 class=\\\"page-title portlet-page-title\\\"> <!-- ko text: _labels.MY_DAILY_STUFF --><!-- /ko --> </h3> <!--ko with: _portletSpace--> <!--ko template: {name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data)}--><!--/ko--> <!--/ko --> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport Template from './Template.html';\r\nimport iFrame from './iFrame.html';\r\nimport { Brand } from 'Core/Common/Brand';\r\n\r\nko.templates['Core/GuestHomePage/Template'] = Template;\r\n\r\nexport class GuestHomePage {\r\n private _container: HTMLElement;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _imageData: KnockoutObservable<string>;\r\n private _imageUrl: string;\r\n\r\n constructor() {\r\n this._isReady = ko.observable(false);\r\n this._imageData = ko.observable(null);\r\n\t\tthis._imageUrl = this.GetImageUrl();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/GuestHomePage/Template';\r\n }\r\n\r\n GetIFrame() {\r\n return iFrame;\r\n\t}\r\n\r\n GetImageUrl() {\r\n\t const subDomain = window.location.hostname.split('.')[0];\r\n\t\tvar timestamp = +new Date;\r\n\t\treturn `/Static/Images/${subDomain}/Guest.jpg?${timestamp}`;\r\n }\r\n\r\n AfterRender() {\r\n this.LoadImage().always(() => this._isReady(true));\r\n }\r\n\r\n RenderByTargetId(targetId: string) {\r\n this._container = document.getElementById(targetId);\r\n\r\n ko.cleanNode(this._container);\r\n ko.applyBindings(this, this._container);\r\n }\r\n\r\n Detach() {\r\n ko.cleanNode(this._container);\r\n this._container.innerHTML = '';\r\n }\r\n\r\n private LoadImage() {\r\n const deferred = P.defer();\r\n\r\n const img = new Image();\r\n\r\n img.onload = () => {\r\n this._imageData(this._imageUrl);\r\n deferred.resolve(null);\r\n };\r\n img.onerror = () => {\r\n this._imageData(null);\r\n deferred.reject(null);\r\n };\r\n\r\n img.src = this._imageUrl;\r\n\r\n return deferred.promise();\r\n }\r\n\r\n FormatUrl(){\r\n if(Brand.Name === 'spheeres'){\r\n return \"https://spheeres.com\";\r\n }\r\n\r\n if(Brand.Name === 'corsearch'){\r\n return \"https://corsearch.com/lp/brand-protection-case-management\";\r\n }\r\n return null;\r\n }\r\n}","// Module\nvar code = \"<!--ko if: _isReady--> <div class=\\\"guest-page\\\"> <!--ko if: _imageData--> <img class=\\\"guest-page__img\\\" data-bind=\\\"attr: {src: _imageData}\\\"> <!--/ko--> <!--ko ifnot: _imageData--> <!--ko template: {html: GetIFrame}--><!--/ko--> <!--/ko--> </div> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"scrollFixer: {}\\\" class=\\\"iframe-container\\\"> <iframe data-bind=\\\"attr: { src: $data.FormatUrl() }\\\" class=\\\"iframe-element\\\" height=\\\"100%\\\"></iframe> </div>\";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {RECORD_SECURITY_WORDS} from 'Core/Constants/RecordSecurityWords';\r\n\r\nexport class RecordSecurityStore {\r\n static IsUserAllowedToEdit(tableId: number, recordId: number): P.Promise<any> {\r\n return this.IsUserAllowedTo(tableId, recordId, RECORD_SECURITY_WORDS.Edit);\r\n }\r\n\r\n static IsUserAllowedTo(tableId: number, recordId: number, securityWord: number): P.Promise<any> {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/RecordSecurityApi/IsUserAllowedTo',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: {\r\n TableId: tableId,\r\n RecordId: recordId,\r\n SecurityWord: securityWord\r\n }\r\n });\r\n }\r\n}","export const NetworkDesignerEvents = {\r\n HeaderClicked: 'NetworkDesignerEvents_HeaderClicked',\r\n\r\n RemovingAccessRequested: 'NetworkDesignerEvents_RemovingAccessRequested',\r\n AccessRemoving: 'NetworkDesignerEvents_AccessRemoving',\r\n\r\n SavingAccessChangesRequested: 'NetworkDesignerEvents_SavingAccessChangesRequested',\r\n AccessСhangesSaving: 'NetworkDesignerEvents_AccessСhangesSaving',\r\n\r\n SavingAccessRequested: 'NetworkDesignerEvents_SavingAccessRequested',\r\n AccessSaving: 'NetworkDesignerEvents_AccessSaving',\r\n\r\n CreatingAccessCancelled: 'NetworkDesignerEvents_CreatingAccessCancelled',\r\n EditingAccessCancelled: 'NetworkDesignerEvents_EditingAccessCancelled'\r\n}\r\n\r\nexport class RemoteDatabaseAccessChanges {\r\n constructor(public Id: number, public UserId: number, public RemoteUserName: string) {\r\n }\r\n}\r\n\r\nexport class NewRemoteDatabaseAccess {\r\n constructor(public UniqueId: string, public UserId: number, public RemoteUserName: string) {\r\n }\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {RemoteDatabaseDto} from './Models/RemoteDatabaseDto';\r\nimport {RemoteDatabaseAccessDto} from './Models/RemoteDatabaseAccessDto';\r\nimport {UpdateRemoteDatabaseAccessDto} from './Models/UpdateRemoteDatabaseAccessDto';\r\nimport {CreateRemoteDatabaseAccessDto} from './Models/CreateRemoteDatabaseAccessDto';\r\n\r\nexport class NetworkDesignerStore {\r\n GetRemoteDatabases(): P.Promise<RemoteDatabaseDto[]> {\r\n const deferred = P.defer<RemoteDatabaseDto[]>()\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/NetworkDesignerApi/GetRemoteDatabases',\r\n type: 'GET'\r\n }\r\n }).then(dbs => {\r\n deferred.resolve(dbs)\r\n }).fail(err => {\r\n const error = this.GetResponseError(err, 'Error getting remote databases');\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetRemoteDatabaseAccess(dbId: number): P.Promise<RemoteDatabaseAccessDto[]> {\r\n const deferred = P.defer<RemoteDatabaseAccessDto[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/NetworkDesignerApi/GetRemoteDatabaseAccess',\r\n type: 'GET'\r\n },\r\n params: {dbId}\r\n }).then(access => {\r\n deferred.resolve(access);\r\n }).fail(err => {\r\n const error = this.GetResponseError(err, 'Error getting remote database access');\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n CreateRemoteDatabaseAccess(params: CreateRemoteDatabaseAccessDto) : P.Promise<number> {\r\n const deferred = P.defer<number>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/NetworkDesignerApi/CreateRemoteDatabaseAccess',\r\n type: 'POST'\r\n },\r\n params\r\n }).then(accessId => {\r\n deferred.resolve(accessId);\r\n }).fail(err => {\r\n const error = this.GetResponseError(err, 'Error creating access');\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n UpdateRemoteDatabaseAccess(params: UpdateRemoteDatabaseAccessDto): P.Promise<void> {\r\n const deferred = P.defer<void>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/NetworkDesignerApi/UpdateRemoteDatabaseAccess',\r\n type: 'POST'\r\n },\r\n params\r\n }).then(() => {\r\n deferred.resolve(null);\r\n }).fail(err => {\r\n const error = this.GetResponseError(err, 'Error updating access');\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n\r\n RemoveRemoteDatabaseAccess(accessId: number): P.Promise<void> {\r\n const deferred = P.defer<void>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/NetworkDesignerApi/RemoveRemoteDatabaseAccess',\r\n type: 'POST'\r\n },\r\n params: {accessId}\r\n }).then(() => {\r\n deferred.resolve(null);\r\n }).fail(err => {\r\n const error = this.GetResponseError(err, 'Error removing access');\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","export class UpdateRemoteDatabaseAccessDto {\r\n constructor(public Id: number, public UserId: number, public RemoteUserName: string) {\r\n }\r\n}","export class CreateRemoteDatabaseAccessDto {\r\n constructor(public DatabaseId: number, public UserId: number, public RemoteUserName: string) {\r\n }\r\n}","export class RemoteAccessUser {\r\n constructor(public Id: number, public Name: string) {\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {Guid} from 'Core/Common/Guid';\r\n\r\nimport {EventBus} from 'Core/Common/EventBus/EventBus';\r\nimport {EventBusConsumer} from 'Core/Common/EventBus/EventBusConsumer';\r\n\r\nimport {NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\n\r\nimport {RemoteAccessUser} from '../Models/RemoteAccessUser';\r\nimport {RemoteDatabaseAccessData} from '../Models/RemoteDatabaseAccessData';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {\r\n NetworkDesignerEvents,\r\n NewRemoteDatabaseAccess,\r\n RemoteDatabaseAccessChanges\r\n} from '../Events/NetworkDesignerEvents';\r\n\r\nimport Template from '../Templates/AccessTemplate.html';\r\n\r\nko.templates['Core/NetworkDesigner/Templates/AccessTemplate'] = Template;\r\n\r\nexport class RemoteDatabaseAccess extends EventBusConsumer {\r\n private _el: HTMLElement;\r\n private _uniqueId: string;\r\n\r\n private _error: KnockoutObservable<string>;\r\n private _editing: KnockoutObservable<boolean>;\r\n private _selectedUser: KnockoutObservable<RemoteAccessUser>;\r\n private _remoteUserName: KnockoutObservable<string>;\r\n private _saveClicked: KnockoutObservable<boolean>;\r\n\r\n _labels = LABELS;\r\n\r\n constructor(public Id: number, public UserId: number, public UserName: string, public RemoteUserName: string) {\r\n super();\r\n\r\n this._uniqueId = Guid.NewGuid();\r\n\r\n this._error = ko.observable(null);\r\n this._editing = ko.observable(false);\r\n this._selectedUser = ko.observable(null);\r\n this._remoteUserName = ko.observable(null);\r\n this._saveClicked = ko.observable(false);\r\n }\r\n\r\n static Create(eventBus: EventBus) {\r\n const access = new RemoteDatabaseAccess(null, null, null, null);\r\n\r\n access.AssignEventBus(eventBus);\r\n access.EnableEditMode();\r\n\r\n return access;\r\n }\r\n\r\n get UniqueId() {\r\n return this._uniqueId;\r\n }\r\n\r\n get HasError() {\r\n return !!this._error();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/NetworkDesigner/Templates/AccessTemplate';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n this._el = el[0];\r\n }\r\n\r\n Block() {\r\n BlockUI.Block({\r\n Target: this._el\r\n });\r\n }\r\n\r\n UnBlock() {\r\n BlockUI.Unblock(this._el);\r\n }\r\n\r\n ContainsData(data: RemoteDatabaseAccessData) {\r\n if (!this.Id) {\r\n return false;\r\n }\r\n\r\n if (this._editing()) {\r\n const sameUser = this._selectedUser() && this._selectedUser().Id === data.UserId;\r\n const sameRemoteUser = this._remoteUserName() === data.RemoteUserName;\r\n\r\n return sameUser && sameRemoteUser;\r\n }\r\n\r\n return this.UserId == data.UserId && this.RemoteUserName === data.RemoteUserName;\r\n }\r\n\r\n SetError(error: string) {\r\n this._error(error);\r\n }\r\n\r\n ClearError() {\r\n this._error(null);\r\n }\r\n\r\n EditClicked() {\r\n this.EnableEditMode();\r\n }\r\n\r\n CancelClicked() {\r\n this.ClearError();\r\n this.DisableEditMode();\r\n\r\n if (!this.Id) {\r\n this.DispatchEvent(NetworkDesignerEvents.CreatingAccessCancelled);\r\n return;\r\n }\r\n\r\n this.DispatchEvent(NetworkDesignerEvents.EditingAccessCancelled);\r\n }\r\n\r\n SaveClicked() {\r\n this._saveClicked(true);\r\n\r\n const userSelected = !!this._selectedUser();\r\n const remoteUserSpecified = !!this._remoteUserName();\r\n\r\n if (!userSelected || !remoteUserSpecified) {\r\n return;\r\n }\r\n\r\n if (!this.Id) {\r\n const eventArgs = new NewRemoteDatabaseAccess(this._uniqueId, this._selectedUser().Id, this._remoteUserName());\r\n this.DispatchEvent(NetworkDesignerEvents.SavingAccessRequested, eventArgs);\r\n\r\n return;\r\n }\r\n\r\n const eventArgs = new RemoteDatabaseAccessChanges(this.Id, this._selectedUser().Id, this._remoteUserName());\r\n this.DispatchEvent(NetworkDesignerEvents.SavingAccessChangesRequested, eventArgs);\r\n }\r\n\r\n DeleteClicked() {\r\n this.DispatchEvent(NetworkDesignerEvents.RemovingAccessRequested);\r\n }\r\n\r\n CommitChanges() {\r\n this.UserId = this._selectedUser().Id;\r\n this.UserName = this._selectedUser().Name;\r\n this.RemoteUserName = this._remoteUserName();\r\n\r\n this.DisableEditMode();\r\n }\r\n\r\n private ShowSearchUserScreen() {\r\n const screen = new SearchScreen({\r\n SearchTerm: '',\r\n EntityName: 'SYS_USERS',\r\n ButtonAdd: false,\r\n CloseAfterSelectingRecord: false\r\n });\r\n\r\n screen.On('RECORD_SELECTED', this, eventArgs => {\r\n const validTypes = ['USER'];\r\n\r\n if (validTypes.indexOf(eventArgs.data.TypeName.toUpperCase()) < 0) {\r\n new Notifier().Warning(NOTIFICATIONS.TYPE_IS_NOT_SUPPORTED);\r\n return;\r\n }\r\n\r\n this._selectedUser(new RemoteAccessUser(eventArgs.data.RecordId, eventArgs.data.Name));\r\n\r\n screen.Close();\r\n });\r\n\r\n screen.Show();\r\n }\r\n\r\n private EnableEditMode() {\r\n if (this.UserId) {\r\n this._selectedUser(new RemoteAccessUser(this.UserId, this.UserName));\r\n this._remoteUserName(this.RemoteUserName);\r\n }\r\n\r\n this._editing(true);\r\n }\r\n\r\n private DisableEditMode() {\r\n this._editing(false);\r\n this._selectedUser(null);\r\n this._remoteUserName(null);\r\n this._saveClicked(false);\r\n }\r\n}","// Module\nvar code = \"<tr class=\\\"remote-database-access\\\"> <!--ko ifnot: _editing--> <td data-bind=\\\"text: UserName\\\"></td> <td data-bind=\\\"text: RemoteUserName\\\"></td> <td> <button class=\\\"btn btn-info\\\" data-bind=\\\"click: EditClicked\\\"> <i class=\\\"fa fa-edit\\\"></i> </button> <button class=\\\"btn btn-danger\\\" data-bind=\\\"click: DeleteClicked\\\"> <i class=\\\"fa fa-trash\\\"></i> </button> </td> <!--/ko--> <!--ko if: _editing--> <td> <div class=\\\"access-control dropdown-wraper\\\"> <div class=\\\"textarea-control form-control dropdown-search-wrapper\\\"> <!--ko if: _selectedUser--> <span data-bind=\\\"text: _selectedUser().Name\\\"></span> <!--/ko--> </div> <div class=\\\"dropdown-controls\\\"> <span class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\" data-bind=\\\"click: ShowSearchUserScreen\\\"></span> </div> </div> <!--ko if: _saveClicked() && !_selectedUser()--> <div class=\\\"help-block validation-message\\\"><!-- ko text: _labels.PLEASE_SELECT_USER --><!-- /ko --></div> <!--/ko--> </td> <td> <input type=\\\"text\\\" class=\\\"access-control form-control\\\" data-bind=\\\"value: _remoteUserName\\\"> <!--ko if: _saveClicked() && !_remoteUserName()--> <span class=\\\"help-block validation-message\\\"><!-- ko text: _labels.PLEASE_SPECIFY_REMOTE_USER --><!-- /ko --></span> <!--/ko--> </td> <td> <button class=\\\"btn btn-success\\\" data-bind=\\\"click: SaveClicked\\\"> <i class=\\\"fa fa-save\\\"></i> </button> <button class=\\\"btn btn-danger\\\" data-bind=\\\"click: CancelClicked\\\"> <i class=\\\"fa fa-times\\\"></i> </button> <!--ko if: _error--> <span data-bind=\\\"tooltip: {content: _error}\\\"> <i class=\\\"fa fa-exclamation-circle\\\"></i> </span> <!--/ko--> </td> <!--/ko--> </tr>\";\n// Exports\nexport default code;","export class RemoteDatabaseAccessData {\r\n constructor(public Id: number, public UserId: number, public RemoteUserName: string) {\r\n }\r\n}","import * as _ from 'underscore';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {EventBusConsumer} from 'Core/Common/EventBus/EventBusConsumer';\r\nimport {EventBus} from 'Core/Common/EventBus/EventBus';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {\r\n NetworkDesignerEvents,\r\n NewRemoteDatabaseAccess,\r\n RemoteDatabaseAccessChanges\r\n} from '../Events/NetworkDesignerEvents';\r\n\r\nimport {RemoteDatabaseAccess} from './RemoteDatabaseAccess';\r\n\r\nimport {RemoteDatabaseAccessData} from '../Models/RemoteDatabaseAccessData';\r\n\r\nexport class RemoteDatabase extends EventBusConsumer {\r\n private _labels = LABELS\r\n private _accessDataLoaded: boolean;\r\n\r\n private _expanded: KnockoutObservable<boolean>;\r\n private _error: KnockoutObservable<string>;\r\n private _access: KnockoutObservableArray<RemoteDatabaseAccess>;\r\n\r\n constructor(public Id: number, public Name: string, public NetworkKey: string) {\r\n super();\r\n\r\n this._accessDataLoaded = false;\r\n\r\n this._expanded = ko.observable(false);\r\n this._error = ko.observable(null);\r\n this._access = ko.observableArray([]);\r\n }\r\n\r\n AssignEventBus(bus: EventBus) {\r\n super.AssignEventBus(bus);\r\n\r\n this.HandleEvent<any, RemoteDatabaseAccess>(NetworkDesignerEvents.RemovingAccessRequested)\r\n .When(eventArgs => this.ContainsAccess(eventArgs.Source))\r\n .Using(eventArgs => this.RemoveAccess(eventArgs.Source))\r\n .Always();\r\n\r\n this.HandleEvent<RemoteDatabaseAccessChanges, RemoteDatabaseAccess>(NetworkDesignerEvents.SavingAccessChangesRequested)\r\n .When(eventArgs => this.ContainsAccess(eventArgs.Source))\r\n .Using(eventArgs => this.SaveAccessChanges(eventArgs.Source, eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent<any, RemoteDatabaseAccess>(NetworkDesignerEvents.CreatingAccessCancelled)\r\n .When(eventArgs => this.ContainsAccess(eventArgs.Source))\r\n .Using(eventArgs => this.RemoveNewAccess(eventArgs.Source))\r\n .Using(() => this.UpdateErrors())\r\n .Always();\r\n\r\n this.HandleEvent<any, RemoteDatabaseAccess>(NetworkDesignerEvents.EditingAccessCancelled)\r\n .When(eventArgs => this.ContainsAccess(eventArgs.Source))\r\n .Using(() => this.UpdateErrors())\r\n .Always();\r\n\r\n this.HandleEvent<NewRemoteDatabaseAccess, RemoteDatabaseAccess>(NetworkDesignerEvents.SavingAccessRequested)\r\n .When(eventArgs => this.ContainsAccess(eventArgs.Source))\r\n .Using(eventArgs => this.SaveAccess(eventArgs.Source, eventArgs.Data))\r\n .Always();\r\n }\r\n\r\n get DisplayName() {\r\n return `${this.Name} (${this.NetworkKey})`;\r\n }\r\n\r\n get DataLoaded() {\r\n return this._accessDataLoaded;\r\n }\r\n\r\n Dispose() {\r\n this._access().forEach(a => a.Dispose());\r\n super.Dispose();\r\n }\r\n\r\n HeaderClicked() {\r\n const expanded = this._expanded();\r\n this._expanded(!expanded);\r\n\r\n this.DispatchEvent(NetworkDesignerEvents.HeaderClicked);\r\n }\r\n\r\n AddButtonClicked() {\r\n const access = RemoteDatabaseAccess.Create(this.EventBus);\r\n this._access.push(access);\r\n }\r\n\r\n GetAccess(id: number) {\r\n return _.find(this._access(), a => a.Id === id);\r\n }\r\n\r\n GetAccessByUniqueId(uniqueId: string) {\r\n return _.find(this._access(), a => a.UniqueId === uniqueId);\r\n }\r\n\r\n ContainsAccess(access: RemoteDatabaseAccess) {\r\n return this._access().indexOf(access) > -1;\r\n }\r\n\r\n FillAccess(access: RemoteDatabaseAccess[]) {\r\n access.forEach(a => a.AssignEventBus(this.EventBus));\r\n\r\n this._access(access);\r\n this._accessDataLoaded = true;\r\n }\r\n\r\n RemoveAccess(access: RemoteDatabaseAccess) {\r\n access.Block();\r\n this.DispatchEvent(NetworkDesignerEvents.AccessRemoving, access);\r\n }\r\n\r\n RemoveNewAccess(access: RemoteDatabaseAccess) {\r\n this._access.remove(access);\r\n }\r\n\r\n SaveAccess(access: RemoteDatabaseAccess, newAccessData: NewRemoteDatabaseAccess) {\r\n const accessData = new RemoteDatabaseAccessData(null, newAccessData.UserId, newAccessData.RemoteUserName);\r\n if (this.HasDuplicate(accessData)) {\r\n access.UnBlock();\r\n this.SetAccessError(access, this._labels.ACCESS_RECORD_EXISTS);\r\n return;\r\n }\r\n\r\n access.Block();\r\n this.DispatchEvent(NetworkDesignerEvents.AccessSaving, newAccessData)\r\n }\r\n\r\n SaveAccessChanges(access: RemoteDatabaseAccess, changes: RemoteDatabaseAccessChanges) {\r\n const accessData = new RemoteDatabaseAccessData(changes.Id, changes.UserId, changes.RemoteUserName);\r\n\r\n if (this.HasDuplicate(accessData)) {\r\n access.UnBlock();\r\n this.SetAccessError(access, this._labels.ACCESS_RECORD_EXISTS);\r\n return;\r\n }\r\n\r\n access.Block();\r\n this.DispatchEvent(NetworkDesignerEvents.AccessСhangesSaving, changes);\r\n }\r\n\r\n CommitCreateAccess(access: RemoteDatabaseAccess, accessId: number) {\r\n access.ClearError();\r\n this.ClearError();\r\n\r\n access.Id = accessId;\r\n\r\n access.CommitChanges();\r\n access.UnBlock();\r\n }\r\n\r\n CommitChanges(access: RemoteDatabaseAccess) {\r\n access.ClearError();\r\n this.ClearError();\r\n\r\n access.CommitChanges();\r\n access.UnBlock();\r\n }\r\n\r\n CancelRemoveAccess(access: RemoteDatabaseAccess) {\r\n access.UnBlock();\r\n }\r\n\r\n CommitRemoveAccess(access: RemoteDatabaseAccess) {\r\n access.UnBlock();\r\n this._access.remove(access);\r\n }\r\n\r\n SetError(error: string) {\r\n this._error(error);\r\n new Notifier().Failed(error);\r\n }\r\n\r\n SetAccessError(access: RemoteDatabaseAccess, error: string) {\r\n this.SetError(error);\r\n access.SetError(error);\r\n }\r\n\r\n UpdateErrors() {\r\n const hasInvalidAccess = _.any(this._access(), a => a.HasError);\r\n\r\n if (!hasInvalidAccess) {\r\n this.ClearError();\r\n }\r\n }\r\n\r\n ClearError() {\r\n this._error(null);\r\n }\r\n\r\n private HasDuplicate(data: RemoteDatabaseAccessData) {\r\n const access = this._access().filter(a => a.Id && a.Id !== data.Id);\r\n return _.any(access, a => a.ContainsData(data));\r\n }\r\n}","import {RemoteDatabaseDto} from '../Stores/Models/RemoteDatabaseDto';\r\nimport {RemoteDatabaseAccessDto} from '../Stores/Models/RemoteDatabaseAccessDto';\r\n\r\nimport {RemoteDatabase} from '../Components/RemoteDatabase';\r\nimport {RemoteDatabaseAccess} from '../Components/RemoteDatabaseAccess';\r\n\r\ntype AfterMapRemoteDatabase = (database: RemoteDatabase) => void;\r\n\r\nexport class NetworkDesignerMappings {\r\n MapToRemoteDatabases(databasesDto: RemoteDatabaseDto[], afterMap: AfterMapRemoteDatabase) {\r\n return databasesDto.map(dbDto => {\r\n const remoteDatabase = this.MapToRemoteDatabase(dbDto);\r\n\r\n afterMap(remoteDatabase);\r\n\r\n return remoteDatabase;\r\n });\r\n }\r\n\r\n MapToRemoteDatabase(databaseDto: RemoteDatabaseDto) {\r\n return new RemoteDatabase(databaseDto.Id, databaseDto.Name, databaseDto.NetworkKey);\r\n }\r\n\r\n MapToRemoteDatabaseAccess(accessDto: RemoteDatabaseAccessDto[]) {\r\n return accessDto.map(dto => new RemoteDatabaseAccess(dto.Id, dto.UserId, dto.UserName, dto.RemoteUserName));\r\n }\r\n}\r\n","import * as ko from 'knockout';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {EventBus} from 'Core/Common/EventBus/EventBus';\r\nimport {EventBusConsumer} from 'Core/Common/EventBus/EventBusConsumer';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {ConfirmationDialog, EVENTS, Types} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\n\r\nimport {\r\n NetworkDesignerEvents,\r\n NewRemoteDatabaseAccess,\r\n RemoteDatabaseAccessChanges\r\n} from './Events/NetworkDesignerEvents';\r\n\r\nimport {NetworkDesignerStore} from './Stores/NetworkDesignerStore';\r\nimport {UpdateRemoteDatabaseAccessDto} from './Stores/Models/UpdateRemoteDatabaseAccessDto';\r\nimport {CreateRemoteDatabaseAccessDto} from './Stores/Models/CreateRemoteDatabaseAccessDto';\r\n\r\nimport {NetworkDesignerMappings} from './Mappings/NetworkDesignerMappings';\r\nimport {RemoteDatabase} from './Components/RemoteDatabase';\r\nimport {RemoteDatabaseAccess} from './Components/RemoteDatabaseAccess';\r\n\r\nimport Template from './Templates/Template.html';\r\n\r\nko.templates['Core/NetworkDesigner/Templates/Template'] = Template;\r\n\r\nexport class NetworkDesigner extends EventBusConsumer {\r\n private _labels = LABELS\r\n private _store: NetworkDesignerStore;\r\n private _mappings: NetworkDesignerMappings;\r\n\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _databases: KnockoutObservableArray<RemoteDatabase>;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._store = new NetworkDesignerStore();\r\n this._mappings = new NetworkDesignerMappings();\r\n\r\n this._isReady = ko.observable(false);\r\n this._databases = ko.observableArray([]);\r\n\r\n this.AssignEventBus(new EventBus())\r\n }\r\n\r\n AssignEventBus(bus: EventBus) {\r\n super.AssignEventBus(bus);\r\n\r\n this.HandleEvent<any, RemoteDatabase>(NetworkDesignerEvents.HeaderClicked)\r\n .When(eventArgs => !eventArgs.Source.DataLoaded)\r\n .Using(eventArgs => this.GetDatabaseAccess(eventArgs.Source))\r\n .Always();\r\n\r\n this.HandleEvent<RemoteDatabaseAccess, RemoteDatabase>(NetworkDesignerEvents.AccessRemoving)\r\n .Using(eventArgs => this.RemoveDatabaseAccess(eventArgs.Source, eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent<RemoteDatabaseAccessChanges>(NetworkDesignerEvents.AccessСhangesSaving)\r\n .Using(eventArgs => this.SaveDatabaseAccessChanges(eventArgs.Source, eventArgs.Data))\r\n .Always();\r\n\r\n this.HandleEvent<NewRemoteDatabaseAccess>(NetworkDesignerEvents.AccessSaving)\r\n .Using(eventArgs => this.CreateDatabaseAccess(eventArgs.Source, eventArgs.Data))\r\n .Always();\r\n }\r\n\r\n Render(elId: string) {\r\n const container = document.getElementById(elId);\r\n ko.cleanNode(container);\r\n ko.applyBindings(this, container);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/NetworkDesigner/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n this._isReady(true);\r\n this.GetDatabases();\r\n }\r\n\r\n Dispose() {\r\n this._databases().forEach(database => database.Dispose());\r\n super.Dispose();\r\n }\r\n\r\n private GetDatabases() {\r\n this._store.GetRemoteDatabases()\r\n .then(databasesDto => {\r\n const databases = this._mappings.MapToRemoteDatabases(databasesDto, database => {\r\n database.AssignEventBus(this.EventBus)\r\n });\r\n\r\n this._databases(databases);\r\n });\r\n }\r\n\r\n private GetDatabaseAccess(database: RemoteDatabase) {\r\n this._store.GetRemoteDatabaseAccess(database.Id)\r\n .then(accessDto => {\r\n const access = this._mappings.MapToRemoteDatabaseAccess(accessDto);\r\n database.FillAccess(access);\r\n })\r\n .fail(err => new Notifier().Failed(err.message));\r\n }\r\n\r\n private SaveDatabaseAccessChanges(database: RemoteDatabase, accessChanges: RemoteDatabaseAccessChanges) {\r\n const access = database.GetAccess(accessChanges.Id);\r\n\r\n const params = new UpdateRemoteDatabaseAccessDto(access.Id, accessChanges.UserId, accessChanges.RemoteUserName);\r\n this._store.UpdateRemoteDatabaseAccess(params)\r\n .then(() => database.CommitChanges(access))\r\n .fail(err => {\r\n access.UnBlock();\r\n database.SetAccessError(access, err.message)\r\n });\r\n }\r\n\r\n private CreateDatabaseAccess(database: RemoteDatabase, accessData: NewRemoteDatabaseAccess) {\r\n const access = database.GetAccessByUniqueId(accessData.UniqueId);\r\n\r\n const params = new CreateRemoteDatabaseAccessDto(database.Id, accessData.UserId, accessData.RemoteUserName);\r\n this._store.CreateRemoteDatabaseAccess(params)\r\n .then(accessId => database.CommitCreateAccess(access, accessId))\r\n .fail(err => {\r\n access.UnBlock();\r\n database.SetAccessError(access, err.message)\r\n });\r\n }\r\n\r\n private RemoveDatabaseAccess(database: RemoteDatabase, access: RemoteDatabaseAccess) {\r\n const dialog = new ConfirmationDialog({\r\n Type: Types.Question,\r\n Text: 'Are you sure you want to delete this record?'\r\n });\r\n\r\n dialog.On(EVENTS.CONFIRM_SELECTED, this, () => {\r\n this._store.RemoveRemoteDatabaseAccess(access.Id)\r\n .then(() => database.CommitRemoveAccess(access))\r\n .fail(err => {\r\n access.UnBlock();\r\n database.SetAccessError(access, err.message)\r\n });\r\n });\r\n\r\n dialog.On(EVENTS.DISCARD_SELECTED, this, () => {\r\n database.CancelRemoveAccess(access);\r\n });\r\n\r\n dialog.Show();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"network-designer box-shadow-wrapper\\\"> <fieldset> <legend class=\\\"title entity-wrapper\\\"> <span class=\\\"entity-name\\\" data-bind=\\\"text: _labels.NETWORK_DESIGNER\\\"></span> <span class=\\\"entity-icon\\\"> <span class=\\\"fa fa-wifi\\\" aria-hidden=\\\"true\\\"></span> </span> </legend> </fieldset> <!--ko ifnot: _databases().length == 0--> <div class=\\\"box-shadow-wrapper network-designer__body\\\"> <!--ko foreach: _databases--> <div class=\\\"remote-database panel panel-default\\\"> <div class=\\\"remote-database__name panel-heading\\\" data-bind=\\\"click: HeaderClicked\\\"> <i class=\\\"fa fa-chevron-right\\\" data-bind=\\\"css: {\\r\\n 'fa-chevron-down': _expanded(),\\r\\n 'fa-chevron-right': !_expanded()\\r\\n }\\\"></i> <span data-bind=\\\"text: DisplayName\\\"></span> <!--ko if: _error--> <span data-bind=\\\"tooltip: {content: _error}\\\"> <i class=\\\"fa fa-exclamation-circle\\\"></i> </span> <!--/ko--> </div> <div class=\\\"panel-body collapse\\\" data-bind=\\\"css: {in: _expanded}\\\"> <table class=\\\"table table-striped\\\"> <thead> <tr> <th>User</th> <th>Remote User</th> <th></th> </tr> </thead> <tbody> <!--ko foreach: _access--> <!--ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)}--> <!--/ko--> <!--/ko--> </tbody> </table> <button class=\\\"btn btn-primary\\\" data-bind=\\\"click: AddButtonClicked\\\"> <i class=\\\"fa fa-plus\\\"></i> </button> </div> </div> <!--/ko--> </div> <!--/ko--> </div> \";\n// Exports\nexport default code;","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\n\r\nexport class BoldBISettings{\r\n \r\n @deserialize\r\n RootUrl: string;\r\n\r\n @deserialize\r\n SiteIdentifier: string;\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\n\r\nexport class Dashboard{\r\n \r\n @deserialize\r\n Id: string;\r\n\r\n @deserialize\r\n Name: string;\r\n \r\n}","import { P } from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport { BoldBISettings } from 'Pages/BI/Models/BISettings';\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request} from 'Core/Common/Request';\r\nimport { List } from 'underscore';\r\nimport { Dashboard } from '../Models/Dashboard';\r\n\r\nexport class BIStore {\r\n\r\n static GetItems(): P.Promise<Array<Dashboard>> {\r\n\t\tlet deferredResult = P.defer<Array<Dashboard>>();\r\n\r\n\t\tRequest\r\n\t\t.For(URL.BI.GET_ITEMS)\r\n\t\t.Get()\r\n .fail(error=>deferredResult.reject({ message: error.message}))\r\n\t\t.then(data => deferredResult.resolve(Deserialize(data, Dashboard)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetSettings(): P.Promise<BoldBISettings> {\r\n\t\tlet deferredResult = P.defer<BoldBISettings>();\r\n\r\n\t\tRequest\r\n\t\t.For(URL.BI.GET_SETTINGS)\r\n\t\t.Get()\r\n .fail(error=>deferredResult.reject({ message: error.message}))\r\n\t\t.then(data => deferredResult.resolve(GenericDeserialize<BoldBISettings>(data, BoldBISettings)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\tstatic GetToken(): P.Promise<string> {\r\n\t\tlet deferredResult = P.defer<string>();\r\n\r\n\t\tRequest\r\n\t\t.For(URL.BI.GET_TOKEN)\r\n\t\t.Get()\r\n .fail(error=>deferredResult.reject({ message: error.message}))\r\n\t\t.then(data => console.log(data));\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import { Modal } from \"Core/Common/Modal\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport BoldBIDesigner from \"Pages/Templates/BoldBIDesigner.html\";\r\nimport EmbedDesigner from \"Pages/Templates/EmbedDesigner.html\";\r\nimport { BoldBISettings } from \"./Models/BISettings\";\r\nimport { Dashboard } from \"./Models/Dashboard\";\r\nimport { BIStore } from \"./Stores/BIStore\";\r\nimport { CookieManager } from \"../../Core/Common/CookieManager\";\r\nko.templates[\"Pages/Templates/BoldBIDesigner\"] = BoldBIDesigner;\r\n\r\nexport class BoldBiDesignerPage\r\n{\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _dashboards: KnockoutObservableArray<Dashboard>;\r\n private _selectedDashboard: KnockoutObservable<Dashboard>;\r\n private _selectedDashboardSubscription: KnockoutSubscription;\r\n private _dashboardContainer: any;\r\n private _showEmbedLink: KnockoutObservable<boolean>;\r\n private _showFullScreenButton: KnockoutObservable<boolean>;\r\n private _isLoading: KnockoutObservable<boolean>;\r\n\r\n constructor(){\r\n this._isReady = ko.observable(true);\r\n this._dashboards = ko.observableArray([]);\r\n this._selectedDashboard = ko.observable(null); \r\n this._showEmbedLink = ko.observable(false);\r\n this._showFullScreenButton = ko.observable(false);\r\n this._isLoading = ko.observable(false);\r\n }\r\n\r\n GetTemplateName(){\r\n return \"Pages/Templates/BoldBIDesigner\";\r\n }\r\n\r\n GetIFrame(elements: Array<HTMLElement>): HTMLElement{\r\n let result: HTMLElement = null;\r\n _.each(elements, el=>{\r\n let iFrames = $( el ).find( \"iframe\" );\r\n if(iFrames.length > 0){\r\n result = iFrames[0];\r\n }\r\n });\r\n \r\n return result;\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>){ \r\n this._dashboardContainer = this.GetIFrame(elements); \r\n this.LoadDashboardList();\r\n \r\n const listener = this.MessageListener.bind(this);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(elements[0], function() { \r\n window.removeEventListener(\"message\", listener);\r\n });\r\n\r\n window.addEventListener(\"message\", listener);\r\n }\r\n\r\n SubscribeSelectedDashboard(){\r\n this._selectedDashboardSubscription = this._selectedDashboard.subscribe((newValue)=>{\r\n this._showEmbedLink(!!newValue?.Id);\r\n this.RenderDesigner();\r\n });\r\n }\r\n\r\n UnSubscribeSelectedDashboard(){\r\n this._selectedDashboardSubscription?.dispose();\r\n }\r\n\r\n MessageListener(evt){\r\n if(evt.data.action === 'saving'){ \r\n this.LoadDashboardList(false);\r\n } \r\n }\r\n\r\n LoadDashboardList(isRenderDesigner: boolean = true){\r\n this.UnSubscribeSelectedDashboard();\r\n this._showFullScreenButton(true);\r\n this._isLoading(true);\r\n BIStore.GetItems()\r\n .always(()=>this._isLoading(false))\r\n .then(items=>{\r\n let selectedDashboardId = this._selectedDashboard()?.Id;\r\n this._dashboards(items);\r\n \r\n this._selectedDashboard(_.find(items, dashboard=>\r\n dashboard.Id === selectedDashboardId\r\n ));\r\n this.SubscribeSelectedDashboard();\r\n if(isRenderDesigner){\r\n this.RenderDesigner();\r\n } \r\n });\r\n }\r\n\r\n RenderDesigner(){\r\n BIStore.GetSettings().then(settings=>{\r\n let parent = this._dashboardContainer.parentNode;\r\n this._dashboardContainer.parentNode.removeChild(this._dashboardContainer);\r\n let $iframe = $(this._dashboardContainer.cloneNode());\r\n $iframe.appendTo(parent);\r\n this._dashboardContainer = $iframe[0];\r\n\r\n\r\n let frameDoc = this._dashboardContainer.document;\r\n\r\n if(this._dashboardContainer.contentWindow)\r\n frameDoc = this._dashboardContainer.contentWindow.document;\r\n \r\n let template = EmbedDesigner\r\n .replace('{access_token}', CookieManager.GetAuthToken())\r\n .replace('{RootUrl}', settings.RootUrl)\r\n .replace('{SiteIdentifier}', settings.SiteIdentifier)\r\n .replace('{DashboardId}', this._selectedDashboard() && this._selectedDashboard().Id ? this._selectedDashboard().Id : '' );\r\n \r\n frameDoc.open();\r\n frameDoc.writeln(template);\r\n frameDoc.close();\r\n });\r\n }\r\n\r\n Render(targetId: string){\r\n let element = document.getElementById(targetId);\r\n ko.cleanNode(element);\r\n ko.applyBindings(this, element);\r\n }\r\n\r\n ShowEmbedLink(){\r\n let modal = new Modal({ minHeight: '50px', minWidth: '400px',}, false);\r\n let link = `/api/BIApi/GetDashboard?dashboardId=${this._selectedDashboard().Id}`;\r\n modal.SetContent(`${link}`);\r\n modal.Show();\r\n }\r\n\r\n FullScreen(){\r\n if(this._dashboardContainer.requestFullscreen) {\r\n this._dashboardContainer.requestFullscreen();\r\n } else if(this._dashboardContainer.webkitrequestFullscreen) {\r\n this._dashboardContainer.webkitRequestFullscreen();\r\n } else if(this._dashboardContainer.mozRequestFullscreen) {\r\n this._dashboardContainer.mozRequestFullScreen();\r\n }\r\n }\r\n}\r\n","// Module\nvar code = \"<form class=\\\"form-horizontal\\\"></form> <div class=\\\"row\\\"> <div class=\\\"col-md-12\\\"> <div class=\\\"control-group form-inline\\\"> <div data-bind=\\\"blockElement: $data._isLoading\\\" class=\\\"controls\\\"> <label>Dashboards <select data-bind=\\\"options: _dashboards,\\r\\n optionsText: 'Name',\\r\\n value: _selectedDashboard,\\r\\n optionsCaption: 'Select...'\\\" class=\\\"form-control input-sm\\\"></select> </label> <!-- ko if: $data._showEmbedLink --> <a> <i data-bind=\\\"click: $data.ShowEmbedLink.bind($data)\\\" class=\\\"fa fa-link\\\"></i> </a> <!-- /ko --> <!-- ko if: $data._showFullScreenButton --> <a> <i data-bind=\\\"click: $data.FullScreen.bind($data)\\\" class=\\\"fa fa-expand\\\"></i> </a> <!-- /ko --> </div> </div> </div> </div> <div class=\\\"row\\\"> <div class=\\\"col-md-12\\\"> <iframe style=\\\"display:block;border:none;height:90vh;width:80vw\\\"></iframe> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<html> <head> <meta charset=\\\"utf-8\\\"> <link rel=\\\"stylesheet\\\" href=\\\"https://fonts.googleapis.com/css?family=Roboto:400,700\\\"> <script src=\\\"https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js\\\"></script> <script src=\\\"https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js\\\"></script> <script src=\\\"https://cdnjs.cloudflare.com/ajax/libs/jsrender/1.0.0-beta/jsrender.min.js\\\"></script> <script src=\\\"https://cdn.boldbi.com/embedded-sdk/v8.2.22/boldbi-embed.js\\\"></script> </head> <body onload=\\\"EmbedDesigner()\\\"> <div id=\\\"dashboard-container\\\"></div> <script>var dropdown,categoryName=[],categoryId=[],length=0,dashboardId=\\\"\\\",dashboardName=\\\"\\\",description=\\\"\\\",siteIdentifier=\\\"{SiteIdentifier}\\\",environment=\\\"onpremise\\\",rootUrl=\\\"{RootUrl}\\\",access_token=(dashboardId=\\\"{DashboardId}\\\",\\\"{access_token}\\\"),token=null,errorLabel=null;function EmbedDesigner(){BoldBI.create({actionComplete:function(e){\\\"layoutRendered\\\"==e.eventType&&SetFocus(),\\\"Save\\\"!=e.eventType&&\\\"SaveAs\\\"!=e.eventType||window.parent.postMessage({action:\\\"saving\\\",token:token})},actionBegin:\\\"actionBegin\\\",serverUrl:rootUrl+\\\"/\\\"+siteIdentifier,embedContainerId:\\\"dashboard-container\\\",embedType:BoldBI.EmbedType.Component,environment:environment,mode:BoldBI.Mode.Design,height:\\\"100%\\\",width:\\\"100%\\\",authorizationServer:{url:\\\"api/BIApi/GetDetails?access_token=\\\"+access_token,authorizionComplete:function(e){token=e.access_token}},expirationTime:\\\"100000\\\"}).loadDesigner(dashboardId)}function actionBegin(e){if(\\\"publishAsAction\\\"==e.eventType){SetFocus(),e.cancel=!0,itemId=e.model.itemId;var o=e.model.dashboardName,a=e.model.dashboardDescription;BoldBI.getInstance(\\\"dashboard-container\\\").getDashboardCategories(async e=>{if(e.Status){$(\\\"body\\\").find(\\\"#popup_target\\\").remove();var t=$('\\\\n <div id=\\\"popup_target\\\">\\\\n <div id=\\\"publish_dialog\\\"></div>\\\\n </div>');$(\\\"body\\\").append(t);var r=new window.ejdashboard.popups.Dialog({header:\\\"Publish As Dashboard\\\",width:\\\"900px\\\",showCloseIcon:!0,isModal:!0,target:document.getElementById(\\\"popup_target\\\"),height:\\\"400px\\\",content:'<div id=\\\"urlLinkDbrd\\\"></div> <textarea id=\\\"DashboardName\\\" style=\\\"padding-left:2px;border-color : rgba(0, 0, 0, 0.22);border-width:1px;margin-top:5px;resize: none;\\\" ></textarea><textarea id=\\\"description\\\" style=\\\"padding-left:2px;height:90px;border-color : rgba(0, 0, 0, 0.22);border-width:1px;resize: none;\\\"></textarea>'});let e=await fetch(\\\"api/BIApi/GetCategories?boldToken=\\\"+token,{headers:{Authorization:\\\"Bearer \\\"+access_token}}),p=await e.text();p=\\\"\\\"!=p?JSON.parse(p).Data:[],r.appendTo(\\\"#publish_dialog\\\"),length=p.length;for(var d=0;d<length;d++)categoryName[d]=p[d].Name,categoryId[d]=p[d].Id;(dropdown=new window.ejdashboard.dropdowns.DropDownList({width:\\\"670px\\\",dataSource:categoryName,showDropDownIcon:!0,placeholder:\\\"Select Category\\\",index:0,fields:{text:\\\"Value\\\",value:\\\"Key\\\"},floatLabelType:\\\"Auto\\\"})).appendTo(\\\"#urlLinkDbrd\\\"),new window.ejdashboard.inputs.TextBox({placeholder:\\\"Dashboard name\\\",floatLabelType:\\\"Auto\\\",value:o}).appendTo(\\\"#DashboardName\\\"),new window.ejdashboard.inputs.TextBox({placeholder:\\\"Description\\\",floatLabelType:\\\"Auto\\\",height:\\\"90px\\\",value:a}).appendTo(\\\"#description\\\");var i=$('<div id=\\\"buttons\\\" style=\\\"background-color : rgba(0, 0, 0,0.05)\\\"></div>'),n=$('<button id=\\\"cancel\\\" style=\\\"float:right;width=75px;margin:10px 15px 20px 10px;background:#f9f9f9;\\\"onclick=\\\"CancelPublishDialog()\\\">Cancel</button><button id=\\\"publish\\\" style=\\\"float:right;width=75px;margin-bottom:20px;margin-right:10px;margin-top: 10px;background:#0565ff;color: #fff;\\\"onclick=\\\"PublishDashboard()\\\">Publish</button>');$(\\\"#publish_dialog\\\").append(i),n.appendTo(\\\"#buttons\\\");var l=$('<div id=\\\"newCategory\\\" style=\\\"/* width: 30px; */\\\"><button id=\\\"addNewCategory\\\" style=\\\"/*width: 70px;height: 34px;*/\\\"onclick=\\\"NewCategory()\\\">+</button></div>');$(\\\"#publish_dialog_dialog-content div\\\").first().append(l),$(\\\"#publish_dialog_dialog-content div\\\").css(\\\"border-color\\\",\\\"rgba(0,0,0,.22)\\\"),$(\\\"#publish\\\").css({background:\\\"#0565ff\\\",color:\\\"#fff\\\",outline:\\\"#fafafa 0 solid\\\",\\\"border-radius\\\":\\\"4px\\\",border:\\\"1px solid\\\",\\\"min-width\\\":\\\"90px\\\",height:\\\"28px\\\"}),$(\\\"#cancel\\\").css({color:\\\"#333;\\\",outline:\\\"#fafafa 0 solid\\\",\\\"border-radius\\\":\\\"4px\\\",border:\\\"1px solid\\\",\\\"min-width\\\":\\\"90px\\\",height:\\\"28px\\\",\\\"border-color\\\":\\\"#b3b3b3\\\"}),$(\\\"#popup_target\\\").find(\\\".e-float-input\\\").css(\\\"margin-bottom\\\",\\\"15px\\\",\\\"padding-left\\\",\\\"10px\\\"),$(\\\"#popup_target\\\").find(\\\".e-float-line\\\").remove(),$(\\\"#publish_dialog_dialog-content div\\\").first().css({\\\"border-width\\\":\\\"1px\\\",\\\"border-color\\\":\\\"rgba(0, 0, 0, 0.22)\\\",\\\"padding-left\\\":\\\"10px\\\"}),$(\\\"#addNewCategory\\\").css({color:\\\"rgb(120, 120, 120)\\\",outline:\\\"#fafafa 0 solid\\\",border:\\\"1px solid\\\",\\\"min-width\\\":\\\"40px\\\",height:\\\"33px\\\",\\\"border-color\\\":\\\"#b3b3b3\\\",\\\"font-size\\\":\\\"25px\\\"}),$(\\\".e-dlg-header-content\\\").css({\\\"background-color\\\":\\\"rgba(0, 0, 0, 0.05)\\\",height:\\\"60px\\\",\\\"margin-bottom\\\":\\\"10px\\\"}),$(\\\"#publish_dialog_dialog-content\\\").css(\\\"overflow\\\",\\\"hidden\\\"),$(\\\"#popup_target\\\").find(\\\"textarea\\\").css({\\\"padding-left\\\":\\\"10px\\\"}),$(\\\".e-float-text.e-label-top\\\").css({\\\"font-weight\\\":\\\"bold\\\"}),$(\\\"#publish_dialog_dialog-content div\\\").first().find(\\\".e-float-text.e-label-top\\\").css(\\\"transform\\\",\\\" translate3d(0,-11px,0) scale(.92)\\\"),$(\\\"#publish_dialog_dialog-content div\\\").last().find(\\\".e-float-text.e-label-top\\\").css(\\\"transform\\\",\\\" translate3d(0,0,0) scale(.92)\\\")}})}}function PublishDashboard(){var e=$(\\\"#urlLinkDbrd_hidden\\\")[0].innerText;description=$(\\\"#description\\\").val(),dashboardName=$(\\\"#DashboardName\\\").val();for(var o=0;o<length;o++)if(categoryName[o]==e)var a=categoryId[o];var t={category:e,categoryId:a,description:description,isPublic:!1,name:dashboardName,eventType:BoldBIDashboard.DashboardDesignerEvent.SaveAs};BoldBI.getInstance(\\\"dashboard-container\\\").saveDashboard(t),CancelPublishDialog()}function NewCategory(){$(\\\"body\\\").find(\\\"#newCategory_popup_target\\\").remove();var e=$('\\\\n <div id=\\\"newCategory_popup_target\\\">\\\\n <div id=\\\"newCategory_dialog\\\"></div>\\\\n </div>');$(\\\"body\\\").append(e),new window.ejdashboard.popups.Dialog({header:\\\"New Category\\\",width:\\\"600px\\\",showCloseIcon:!0,isModal:!0,target:document.getElementById(\\\"newCategory_popup_target\\\"),height:\\\"300px\\\",content:' <textarea id=\\\"newCategoryName\\\" style=\\\"padding-left:2px;border-color : rgba(0, 0, 0, 0.22);border-width:1px;margin-top:5px;resize: none;\\\" ></textarea><textarea id=\\\"newCategoryNameDescription\\\" style=\\\"padding-left:2px;height:90px;border-color : rgba(0, 0, 0, 0.22);border-width:1px;resize: none;\\\"></textarea>'}).appendTo(\\\"#newCategory_dialog\\\"),new window.ejdashboard.inputs.TextBox({placeholder:\\\"Category Name\\\",floatLabelType:\\\"Auto\\\"}).appendTo(\\\"#newCategoryName\\\"),new window.ejdashboard.inputs.TextBox({placeholder:\\\"Description\\\",floatLabelType:\\\"Auto\\\",height:\\\"90px\\\"}).appendTo(\\\"#newCategoryNameDescription\\\"),errorLabel=$('<label id=\\\"\\\" style=\\\"display: none; padding-left: 5px; float: left; color: rgb(169, 68, 66); line-height: 2; display: block;\\\"></label>');var o=$('<div id=\\\"Newbuttons\\\" style=\\\"background-color:rgba(0, 0, 0, 0.05)\\\"></div>');o.append(errorLabel);var a=$('<button id=\\\"NewCancel\\\" style=\\\"float:right;width=75px;margin:15px 15px 20px 10px;\\\"onclick=\\\"CancelCategoryDialog()\\\">Cancel</button><button id=\\\"Save\\\" style=\\\"float:right;width=75px;margin-bottom:20px;margin-right:10px;margin-top:15px;background:#0565ff;\\\"onclick=\\\"CreateCategory()\\\">Save</button>');$(\\\"#newCategory_dialog\\\").append(o),a.appendTo(\\\"#Newbuttons\\\"),$(\\\"#Save\\\").css({background:\\\"#0565ff\\\",color:\\\"#fff\\\",outline:\\\"#fafafa 0 solid\\\",\\\"border-radius\\\":\\\"4px\\\",border:\\\"1px solid\\\",\\\"min-width\\\":\\\"90px\\\",height:\\\"25px\\\"}),$(\\\"#NewCancel\\\").css({color:\\\"#333;\\\",outline:\\\"#fafafa 0 solid\\\",\\\"border-radius\\\":\\\"4px\\\",border:\\\"1px solid\\\",\\\"min-width\\\":\\\"90px\\\",height:\\\"25px\\\",\\\"border-color\\\":\\\"#b3b3b3\\\",background:\\\"#f9f9f9\\\"}),$(\\\"#newCategory_popup_target\\\").find(\\\".e-float-line\\\").remove(),$(\\\"#newCategory_dialog_dialog-header\\\").css({\\\"background-color\\\":\\\" rgba(0, 0, 0, 0.05)\\\",height:\\\"55px\\\"}),$(\\\".e-float-text.e-label-bottom\\\").css({\\\"font-weight\\\":\\\"bold\\\",\\\"margin-top\\\":\\\"3px\\\",\\\"padding-left\\\":\\\"7px\\\"}),$(\\\"#newCategory_dialog_dialog-content\\\").css(\\\"overflow\\\",\\\"hidden\\\"),$(\\\"#newCategory_popup_target\\\").find(\\\"textarea\\\").css({\\\"padding-left\\\":\\\"7px\\\",\\\"margin-top\\\":\\\"5px\\\"})}function CreateCategory(){var e=BoldBI.getInstance(\\\"dashboard-container\\\"),o=$(\\\"#newCategoryName\\\").val(),a=$(\\\"#newCategoryNameDescription\\\").val();e.createDashboardCategory(o,a,(function(e){e.Status&&e.CategoryId?(categoryName[length]=o,dropdown.value=o,dropdown.refresh(),categoryId[length]=e.CategoryId,length+=1,CancelCategoryDialog()):errorLabel.html(e.StatusMessage).show()}))}function CancelPublishDialog(){$(\\\"#popup_target\\\").html(\\\"\\\")}function CancelCategoryDialog(){$(\\\"#newCategory_popup_target\\\").html(\\\"\\\")}function SetFocus(){$(\\\"#dashboard-container_embeddedbi_toolbar_title\\\").focus()}</script> </body> </html>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"administration-page\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"cyberConfig-content\\\"> <div class=\\\"tab-wrapper\\\"> <ul class=\\\"nav nav-tabs\\\"> <li class=\\\"tab active\\\"> <a data-bind=\\\"click: ShowSpaceStatus\\\" href=\\\"#space-status-page\\\" class=\\\"tab-link\\\" data-toggle=\\\"tab\\\"> Space </a> </li> <li class=\\\"tab\\\"> <a data-bind=\\\"click: ShowServiceStatus\\\" href=\\\"#service-status-page\\\" class=\\\"tab-link\\\" data-toggle=\\\"tab\\\"> Services </a> </li> <li class=\\\"tab\\\"> <a data-bind=\\\"click: ShowSystemsStatus\\\" href=\\\"#systems-page\\\" class=\\\"tab-link\\\" data-toggle=\\\"tab\\\"> Systems </a> </li> </ul> <div class=\\\"tab-content\\\"> <div class=\\\"tab-pane fade active in\\\" id=\\\"space-status-page\\\"> <!--ko with: _spaceStatusTab--> <!--ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)}--><!--/ko--> <!--/ko--> </div> <div class=\\\"tab-pane fade\\\" id=\\\"service-status-page\\\"> <!--ko with: _serviceStatusTab--> <!--ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)}--><!--/ko--> <!--/ko--> </div> <div class=\\\"tab-pane fade\\\" id=\\\"systems-page\\\"> <!--ko with: _systemsTab--> <!--ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)}--><!--/ko--> <!--/ko--> </div> </div> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as _ from \"underscore\";\r\n\r\nimport {deserialize} from 'libs/cerialize';\r\n\r\nexport class SpaceStatusDto {\r\n @deserialize\r\n Environment: string;\r\n\r\n @deserialize\r\n DeviceStatus: Array<string>;\r\n}","import * as _ from \"underscore\";\r\n\r\nimport {Deserialize, deserialize} from 'libs/cerialize';\r\n\r\nexport class StatusDto {\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n Description: string;\r\n}\r\n\r\nexport class ServiceStatusDto {\r\n @deserialize\r\n Environment: string;\r\n\r\n Statuses: Array<StatusDto>;\r\n\r\n public static OnDeserialized(instance : ServiceStatusDto, json : any) : void {\r\n instance.Statuses = Deserialize(JSON.parse(json.ServiceStatus), StatusDto);\r\n }\r\n}","import * as _ from \"underscore\";\r\n\r\nimport {Deserialize, deserialize} from 'libs/cerialize';\r\n\r\nexport class EnvironmentDto {\r\n @deserialize\r\n Url: string;\r\n\r\n @deserialize\r\n Type: string;\r\n\r\n @deserialize\r\n DatabaseName: string;\r\n\r\n @deserialize\r\n Size: string;\r\n \r\n @deserialize\r\n LastLoginDate: string;\r\n\r\n @deserialize\r\n ActiveSessionCount: number;\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n IsMarkedForDeletion: boolean;\r\n}","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { Deserialize, GenericDeserialize } from 'libs/cerialize';\r\nimport { SpaceStatusDto } from './Tabs/SpaceStatusDto';\r\nimport { ServiceStatusDto } from './Tabs/ServiceStatusDto';\r\nimport { EnvironmentDto } from './Tabs/EnvironmentDto';\r\n\r\nexport class AdministrationStore {\r\n\tstatic GetSpaceStatus(): P.Promise<Array<SpaceStatusDto>> {\r\n\t\tvar deferredResult = P.defer<Array<SpaceStatusDto>>();\r\n\r\n\t\tRequest\r\n\t\t.For('/api/NetworkAdministrationApi/GetSpaceStatus')\r\n\t\t.Get()\r\n\t\t\t.then(data => deferredResult.resolve(Deserialize(data, SpaceStatusDto)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetServiceStatus(): P.Promise<Array<ServiceStatusDto>> {\r\n\t\tvar deferredResult = P.defer<Array<ServiceStatusDto>>();\r\n\r\n\t\tRequest\r\n\t\t.For('/api/NetworkAdministrationApi/GetServiceStatus')\r\n\t\t.Get()\r\n\t\t\t.then(data => deferredResult.resolve(Deserialize(data, ServiceStatusDto)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\tstatic GetEnvironments(): P.Promise<Array<EnvironmentDto>> {\r\n\t\tvar deferredResult = P.defer<Array<EnvironmentDto>>();\r\n\r\n\t\tRequest\r\n\t\t.For('/api/NetworkAdministrationApi/GetEnvironments')\r\n\t\t.Get()\r\n\t\t\t.then(data => deferredResult.resolve(Deserialize(data, EnvironmentDto)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic MarkForDeletion(databaseId: number): P.Promise<null> {\r\n\t\tvar deferredResult = P.defer<null>();\r\n\r\n\t\tRequest\r\n\t\t.For('/api/NetworkAdministrationApi/MarkForDeletion')\r\n\t\t.Post({DatabaseId: databaseId})\r\n\t\t.then(() => {\r\n\t\t\tdeferredResult.resolve(null);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Delete(databaseId: number): P.Promise<null> {\r\n\t\tvar deferredResult = P.defer<null>();\r\n\r\n\t\tRequest\r\n\t\t.For('/api/NetworkAdministrationApi/Delete')\r\n\t\t.Post({DatabaseId: databaseId})\r\n\t\t.then(() => {\r\n\t\t\tdeferredResult.resolve(null);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UnmarkForDeletion(databaseId: number): P.Promise<null> {\r\n\t\tvar deferredResult = P.defer<null>();\r\n\r\n\t\tRequest\r\n\t\t.For('/api/NetworkAdministrationApi/UnMarkForDeletion')\r\n\t\t.Post({DatabaseId: databaseId})\r\n\t\t.then(() => {\r\n\t\t\tdeferredResult.resolve(null);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n}","import Template from \"Pages/AdministrationPage/Tabs/SpeceStatus.html\";\r\nimport { AdministrationStore } from \"../AdministrationStore\";\r\nimport { BlockUI } from \"../../../Core/Common/BlockUi\";\r\nimport { SpaceStatusDto } from \"./SpaceStatusDto\";\r\nko.templates[\"Pages/AdministrationPage/Tabs/SpaceStatus\"] = Template;\r\n\r\nexport class SpaceStatus {\r\n\r\n private _statuses: KnockoutObservableArray<SpaceStatusDto>;\r\n\r\n constructor(){\r\n this._statuses = ko.observableArray([]);\r\n this.LoadData();\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Pages/AdministrationPage/Tabs/SpaceStatus';\r\n }\r\n\r\n LoadData(){\r\n BlockUI.Block();\r\n AdministrationStore.GetSpaceStatus().always(()=>{\r\n BlockUI.Unblock();\r\n }).then(data=> this._statuses(data));\r\n }\r\n\r\n AfterRender(){\r\n\r\n }\r\n}","// Module\nvar code = \"<!-- ko foreach: _statuses --> <h1 data-bind=\\\"text: Environment\\\"></h1> <!-- ko foreach: DeviceStatus --> <div data-bind=\\\"text: $data\\\"></div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import { AdministrationStore } from \"../AdministrationStore\";\r\nimport { BlockUI } from \"../../../Core/Common/BlockUi\";\r\nimport { SpaceStatusDto } from \"./SpaceStatusDto\";\r\n\r\nimport Template from \"Pages/AdministrationPage/Tabs/ServiceStatus.html\";\r\nimport { ServiceStatusDto } from \"./ServiceStatusDto\";\r\nko.templates[\"Pages/AdministrationPage/Tabs/ServiceStatus\"] = Template;\r\n\r\nexport class ServiceStatus {\r\n private _statuses: KnockoutObservableArray<ServiceStatusDto>;\r\n\r\n constructor(){\r\n this._statuses = ko.observableArray([]);\r\n this.LoadData();\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Pages/AdministrationPage/Tabs/ServiceStatus';\r\n }\r\n\r\n LoadData(){\r\n BlockUI.Block();\r\n AdministrationStore.GetServiceStatus().always(()=>{\r\n BlockUI.Unblock();\r\n }).then((data)=>{\r\n this._statuses(data);\r\n });\r\n }\r\n\r\n AfterRender(){\r\n\r\n }\r\n}","// Module\nvar code = \"<!-- ko foreach: _statuses --> <h1 data-bind=\\\"text: Environment\\\"></h1> <!-- ko foreach: Statuses --> <div> <!-- ko text: $data.Name --><!-- /ko -->: <!-- ko text: $data.Description || 'OK' --><!-- /ko --> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import moment from \"moment\";\r\nimport {AdministrationStore} from \"../AdministrationStore\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {EnvironmentDto} from \"./EnvironmentDto\";\r\n\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {ConfirmationDialog, EVENTS, Types} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport Template from \"Pages/AdministrationPage/Tabs/Environment.html\";\r\nimport * as ko from \"knockout\";\r\nimport * as exports from \"webpack\";\r\nimport mergeRuntimeOwned = exports.util.runtime.mergeRuntimeOwned;\r\n\r\nko.templates[\"Pages/AdministrationPage/Tabs/Environment\"] = Template;\r\n\r\nexport class Environment {\r\n private _environments: KnockoutObservableArray<EnvironmentDto>;\r\n private _environmentsWithoutChanges: KnockoutObservableArray<EnvironmentDto>;\r\n private _searchText: KnockoutObservable<string>;\r\n\r\n private _labels = LABELS;\r\n\r\n constructor(){\r\n this._environments = ko.observableArray([]);\r\n this._environmentsWithoutChanges = ko.observableArray([]);\r\n this._searchText = ko.observable('');\r\n\r\n this.LoadData();\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Pages/AdministrationPage/Tabs/Environment';\r\n }\r\n\r\n LoadData(){\r\n BlockUI.Block();\r\n AdministrationStore.GetEnvironments().always(()=>{\r\n BlockUI.Unblock();\r\n }).then((data)=>{\r\n this._environments(data);\r\n this._environmentsWithoutChanges(data.slice());\r\n });\r\n }\r\n\r\n AfterRender(){\r\n\r\n }\r\n\r\n FormatDate(value: string){\r\n if(!value){\r\n return value;\r\n }\r\n return moment(FormatConverter.CorrectTimezone(value)).format(DATE_FORMATS.SAVE_FORMAT_FULL.MomentFormat);\r\n }\r\n\r\n ParseDate(dateString: string): Date | null {\r\n if (dateString === null) {\r\n return null;\r\n }\r\n\r\n const date = new Date(dateString);\r\n\r\n if (isNaN(date.getTime())) {\r\n return null;\r\n }\r\n\r\n return date;\r\n }\r\n\r\n MarkForDeletion(environmentDto: EnvironmentDto){\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: 'Are you sure? The system will be deleted in 3 days',\r\n Type: Types.Question\r\n });\r\n\r\n confirmationDialog.On(EVENTS.CONFIRM_SELECTED, this, () => {\r\n BlockUI.Block();\r\n AdministrationStore.MarkForDeletion(environmentDto.Id)\r\n .always(()=>BlockUI.Unblock())\r\n .then(()=>this.LoadData());\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n Delete(environmentDto: EnvironmentDto){\r\n BlockUI.Block();\r\n AdministrationStore.Delete(environmentDto.Id)\r\n .always(()=>BlockUI.Unblock())\r\n .then(()=>this._environments.remove(environmentDto));\r\n }\r\n\r\n UnmarkForDeletion(environmentDto: EnvironmentDto){\r\n BlockUI.Block();\r\n AdministrationStore.UnmarkForDeletion(environmentDto.Id)\r\n .always(()=>BlockUI.Unblock())\r\n .then(()=>this.LoadData());\r\n }\r\n\r\n Search() {\r\n let result = [];\r\n const searchValue = this._searchText().toLowerCase().trim();\r\n\r\n _.each(this._environmentsWithoutChanges(), row => {\r\n if (row.Url.toLowerCase().includes(searchValue) || row.DatabaseName.toLowerCase().includes(searchValue)) {\r\n result.push(row);\r\n }\r\n });\r\n\r\n this._environments(result);\r\n }\r\n\r\n Sort(column, data, event) {\r\n const target = $(event.target).closest('th');\r\n\r\n if (target.hasClass(\"sort-asc\")) {\r\n target.removeClass(\"sort-asc\").addClass(\"sort-desc\");\r\n this._environments.sort((a, b) => {\r\n let aValue = a[column];\r\n let bValue = b[column];\r\n\r\n if (column === \"Size\") {\r\n aValue = aValue ? parseFloat(aValue) : null;\r\n bValue = bValue ? parseFloat(bValue) : null;\r\n\r\n if (aValue && bValue) {\r\n return bValue - aValue;\r\n } else if (aValue === null && bValue !== null) {\r\n return 1;\r\n } else if (aValue !== null && bValue === null) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n if (column === \"LastLoginDate\") {\r\n const aDate = this.ParseDate(aValue);\r\n const bDate = this.ParseDate(bValue);\r\n\r\n if (aDate && bDate) {\r\n return bDate.getTime() - aDate.getTime();\r\n } else if (aDate === null && bDate !== null) {\r\n return 1;\r\n } else if (aDate !== null && bDate === null) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n if (aValue && bValue) {\r\n return bValue.localeCompare(aValue);\r\n } else if (aValue === null && bValue !== null) {\r\n return 1;\r\n } else if (aValue !== null && bValue === null) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n } else if (target.hasClass(\"sort-desc\")) {\r\n target.removeClass(\"sort-desc\").addClass(\"sort-both\");\r\n this._environments(this._environmentsWithoutChanges().slice());\r\n } else {\r\n target.removeClass(\"sort-both\").addClass(\"sort-asc\");\r\n this._environments.sort((a, b) => {\r\n let aValue = a[column];\r\n let bValue = b[column];\r\n\r\n if (column === \"Size\") {\r\n aValue = aValue ? parseFloat(aValue) : null;\r\n bValue = bValue ? parseFloat(bValue) : null;\r\n\r\n if (aValue && bValue) {\r\n return aValue - bValue;\r\n } else if (aValue === null && bValue !== null) {\r\n return 1;\r\n } else if (aValue !== null && bValue === null) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n if (column === \"LastLoginDate\") {\r\n const aDate = this.ParseDate(aValue);\r\n const bDate = this.ParseDate(bValue);\r\n\r\n if (aDate && bDate) {\r\n return aDate.getTime() - bDate.getTime();\r\n } else if (aDate === null && bDate !== null) {\r\n return 1;\r\n } else if (aDate !== null && bDate === null) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n if (aValue && bValue) {\r\n return aValue.localeCompare(bValue);\r\n } else if (aValue === null && bValue !== null) {\r\n return 1;\r\n } else if (aValue !== null && bValue === null) {\r\n return -1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n }\r\n\r\n $(\"th\").not(target).removeClass(\"sort-asc sort-desc\").addClass(\"sort-both\");\r\n\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"administration-systems-tab-wrapper\\\"> <input data-bind=\\\"value: _searchText, valueUpdate: 'input', event: { input: Search }, attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" tabindex=\\\"1\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl system-tab-search-input\\\"> <table class=\\\"table table-striped table-bordered table-advance table-hover flip-content vertical-align-m administration-systems-tab\\\"> <thead> <tr class=\\\"flip-content\\\"> <th class=\\\"sort-both\\\"> <div class=\\\"environment-flex-container\\\"> <span data-bind=\\\"text: 'Url'\\\"></span> <div class=\\\"sort-icon\\\" data-bind=\\\"click: function(data, event) { Sort('Url', data, event) }\\\"></div> </div> </th> <th class=\\\"sort-both\\\"> <div class=\\\"environment-flex-container\\\"> <span data-bind=\\\"text: _labels.NAME\\\"></span> <div class=\\\"sort-icon\\\" data-bind=\\\"click: function(data, event) { Sort('DatabaseName', data, event) }\\\"></div> </div> </th> <th class=\\\"sort-both\\\"> <div class=\\\"environment-flex-container\\\"> <span data-bind=\\\"text: 'Environment'\\\"></span> <div class=\\\"sort-icon\\\" data-bind=\\\"click: function(data, event) { Sort('Type', data, event) }\\\"></div> </div> </th> <th class=\\\"sort-both\\\"> <div class=\\\"environment-flex-container\\\"> <span data-bind=\\\"text: _labels.SIZE + ' GB'\\\"></span> <div class=\\\"sort-icon\\\" data-bind=\\\"click: function(data, event) { Sort('Size', data, event) }\\\"></div> </div> </th> <th class=\\\"sort-both\\\"> <div class=\\\"environment-flex-container\\\"> <span data-bind=\\\"text: 'Last login'\\\"></span> <div class=\\\"sort-icon\\\" data-bind=\\\"click: function(data, event) { Sort('LastLoginDate', data, event) }\\\"></div> </div> </th> <th> <div class=\\\"environment-flex-container\\\"> <span data-bind=\\\"text: 'Active sessions'\\\"></span> </div> </th> <th> <div class=\\\"environment-flex-container\\\"> <span data-bind=\\\"text: 'Mark for deletion'\\\"></span> </div> </th> </tr> </thead> <tbody> <!-- ko foreach: _environments --> <tr> <td data-bind=\\\"text: Url\\\"></td> <td data-bind=\\\"text: DatabaseName\\\"></td> <td data-bind=\\\"text: Type\\\"></td> <td data-bind=\\\"text: Size\\\"></td> <td data-bind=\\\"text: $parent.FormatDate($data.LastLoginDate)\\\"></td> <td data-bind=\\\"text: ActiveSessionCount\\\"></td> <td> <!-- ko if: $data.Size --> <!-- ko if: !$data.IsMarkedForDeletion --> <a data-bind=\\\"click: $parent.MarkForDeletion.bind($parent, $data)\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-trash\\\"></i> </a> <!-- /ko --> <!-- ko if: $data.IsMarkedForDeletion --> <a data-bind=\\\"click: $parent.UnmarkForDeletion.bind($parent, $data)\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-undo\\\"></i> </a> <!-- /ko --> <!-- /ko --> <!-- ko if: !$data.Size --> <a data-bind=\\\"click: $parent.Delete.bind($parent, $data)\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-remove\\\"></i> </a> <!-- /ko --> </td> </tr> <!-- /ko --> </tbody> </table> </div> \";\n// Exports\nexport default code;","import Template from \"Pages/AdministrationPage/AdministrationPageTemplate.html\";\r\nimport { SpaceStatus } from \"./Tabs/SpaceStatus\";\r\nimport { ServiceStatus } from \"./Tabs/ServiceStatus\";\r\nimport { Environment } from \"./Tabs/Environment\";\r\nko.templates[\"Pages/AdministrationPage/AdministrationPageTemplate\"] = Template;\r\n\r\n\r\nexport class AdministrationPage {\r\n\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\tprivate _spaceStatusTab: KnockoutObservable<SpaceStatus>;\r\n\tprivate _serviceStatusTab: KnockoutObservable<ServiceStatus>;\r\n\tprivate _systemsTab: KnockoutObservable<Environment>;\r\n\r\n constructor(){\r\n this._isReady = ko.observable(true);\r\n\t\tthis._spaceStatusTab = ko.observable(new SpaceStatus());\r\n\t\tthis._serviceStatusTab = ko.observable();\r\n\t\tthis._systemsTab = ko.observable();\r\n }\r\n\r\n Render(target): void {\r\n\t\tko.cleanNode(document.getElementById(target));\r\n\t\tko.applyBindings(this, document.getElementById(target));\r\n\t}\r\n\r\n GetTemplateName(): string {\r\n\t\treturn 'Pages/AdministrationPage/AdministrationPageTemplate';\r\n\t}\r\n\r\n\tShowSpaceStatus(){\r\n\t\tthis.ResetTabs();\r\n\t\tthis._spaceStatusTab(new SpaceStatus());\r\n\t}\r\n\r\n\tShowServiceStatus(){\r\n\t\tthis.ResetTabs();\r\n\t\tthis._serviceStatusTab(new ServiceStatus());\r\n\t}\r\n\r\n\tShowSystemsStatus(){\r\n\t\tthis.ResetTabs();\r\n\t\tthis._systemsTab(new Environment());\r\n\t}\r\n\r\n\tResetTabs(){\r\n\t\tthis._spaceStatusTab(null);\r\n\t\tthis._serviceStatusTab(null);\r\n\t\tthis._systemsTab(null);\r\n\t}\r\n\r\n\tAfterRender(){}\r\n}","///<reference path=\"../libs/typings/knockout.d.ts\" />\r\n///<reference path=\"../typings/metronic.d.ts\" />\r\n///<reference path=\"../typings/metronicLayout.d.ts\" />\r\n/////<reference path=\"../libs/typings/backbone.d.ts\" />\r\n/////<reference path=\"../libs/typings/jointjs/joint.d.ts\" />\r\n/////<reference path=\"../libs/typings/jointjs/joint.head.d.ts\" />\r\n/////<reference path=\"../libs/typings/jointjs/geometry.d.ts\" />\r\n/////<reference path=\"../libs/typings/jointjs/vectorizer.d.ts\" />\r\n\r\nimport * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\nimport * as stringTemplateEngine from 'stringTemplateEngine'\r\nimport * as $ from 'jquery'\r\nimport 'jqueryBlockui'\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen'\r\nimport {Search} from 'Core/Controls/Search/Search'\r\nimport {LookupEditor} from 'LookupEditor/LookupEditor'\r\nimport {FieldCollection} from \"FieldCollection/FieldCollection\";\r\nimport {MenuAreas} from 'MenuManager/MenuAreas/MenuAreas'\r\nimport {KnockoutExtenions} from 'Core/KnockoutExtentions/Extentions'\r\nimport {DesignedScreenModel} from 'MenuManager/MenuAreas/Models/DesignedScreenModel'\r\nimport {MenuAreaModel} from 'MenuManager/MenuAreas/Models/MenuAreaModel'\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager'\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen'\r\nimport {MobileChecker} from 'Core/Common/MobileChecker'\r\nimport {Notifier} from 'Core/Common/Notifier'\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen'\r\nimport {IScreen, IScreenState} from 'Core/Screens/IScreen'\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes'\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager'\r\nimport {FormDesignerPage} from 'Pages/FormDesignerPage'\r\nimport {CanvasDesignerPage} from 'Pages/CanvasDesignerPage'\r\nimport {FunctionDesignerPage} from 'Pages/FunctionDesignerPage'\r\n\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen'\r\nimport {Guid} from 'Core/Common/Guid'\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\nimport {CookieManager} from \"Core/Common/CookieManager\";\r\nimport {CyberConfigManager} from 'Core/CyberConfigManager/CyberConfigManager';\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {UserDataRoles, UserManager, UserRoles, UserTypes} from 'User/UserManager';\r\nimport {PathRunner} from \"Core/Components/PathRunner/PathRunner\";\r\nimport {CONTROL_TYPES, LIFE_STATUS_GROUPS, NotTypedScreenTypes} from \"Core/Constant\";\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {\r\n BREADCRUMBS_HYPERLINK_TOPIC,\r\n BREADCRUMBS_NEW_VALUE_TOPIC,\r\n BREADCRUMBS_FIELD_RECORD\r\n} from 'MenuManager/Breadcrumbs/Breadcrumbs';\r\nimport {LockScreen} from \"LockScreen/LockScreen\";\r\nimport {HelpBook} from 'HelpBook/HelpBook';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {UserMenu} from \"MenuManager/UserMenu/UserMenu\";\r\nimport {GridRow} from 'Core/Controls/Grid/BaseGrid/GridRow/GridRow';\r\nimport {EVENTS as EDIT_SCREEN_EVENTS} from 'Core/Screens/EditScreen/Events';\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nimport 'pubsub';\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {TranslationEditorPage} from '../Pages/TransaltionEditorPage/TranslationEditorPage';\r\nimport {PortletsPage} from \"../Core/Portlets/PortletsPage\";\r\nimport {Tab} from \"../Core/Controls/Tab/Tab\";\r\nimport {TabPage} from \"../Core/Controls/TabPage/TabPage\";\r\nimport {Agenda} from \"../Core/Controls/Agenda/Agenda\";\r\nimport {RecordStore} from \"../Core/Common/Stores/RecordStore\";\r\nimport {ConsultScreen} from \"Core/Screens/ConsultScreen/ConsultScreen\";\r\nimport {GuestHomePage} from \"../GuestHomePage/GuestHomePage\";\r\nimport {GlobalManager, GLOBALS} from \"../Core/GlobalManager/GlobalManager\";\r\nimport {TableStore} from \"../Core/Common/Stores/TableStore\";\r\nimport {RecordSecurityStore} from '../Core/Common/Stores/RecordSecurityStore';\r\nimport {FollowupModes} from 'Core/Constants/FollowupModes';\r\nimport {RECORD_SECURITY_WORDS} from 'Core/Constants/RecordSecurityWords';\r\nimport {NetworkDesigner} from '../Core/NetworkDesigner/NetworkDesigner';\r\nimport { BoldBiDesignerPage } from 'Pages/BI/BIDesignerPage';\r\n\r\nimport { AdministrationPage } from '../Pages/AdministrationPage/AdministrationPage';\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {Timer} from \"Core/Controls/Timer/Timer\";\r\nimport { DictionaryComparisonPage } from 'Pages/DictionaryComparison/DictionaryComparisonPage';\r\nimport { productFruits } from 'product-fruits';\r\n\r\n//Templates\r\nimport MenuManagerTemplate from 'MenuManager/Templates/MenuManager.html';\r\nimport {FieldDataModel} from \"../Core/Screens/Models/RecordDataModel\";\r\n\r\nko.templates['MenuManager/Templates/MenuManager'] = MenuManagerTemplate;\r\n\r\nenum NavigationTypes {\r\n DesignScreen,\r\n Portlets,\r\n LookupEditor,\r\n DatabaseDesigner,\r\n FormDesigner,\r\n CdToolkit,\r\n CanvasDesigner,\r\n\tFunctionDesigner,\r\n\tFieldCollectionDesigner,\r\n TranslationEditor,\r\n CyberConfig,\r\n NetworkDesigner,\r\n BIDesigner,\r\n Administration\r\n}\r\n\r\ninterface IHistoryState {\r\n Guid: string;\r\n UserId: number;\r\n SecurityRolesKey: number;\r\n DbId: number;\r\n ScreenId: number;\r\n EntityId: number;\r\n RecordId: number;\r\n NavigationType: NavigationTypes;\r\n}\r\n\r\nclass CustomStyleProperties {\r\n [key: string]: string | null;\r\n}\r\n\r\nexport class MenuManager {\r\n private static instance;\r\n private static allowInstantiation: boolean;\r\n private _pageBodyContainerId = 'viewBody';\r\n private _guestHomePage: GuestHomePage;\r\n private _menuAreas: MenuAreas;\r\n private _selectedScreen: DesignedScreenModel;\r\n private _selectedArea: MenuAreaModel;\r\n private _history: Historyjs = <any>History;\r\n private _popState: boolean;\r\n private _screenStates: Array<IScreenState>;\r\n private _currentScreen: IScreen;\r\n private _currentSate: IHistoryState;\r\n private _openedScreens: BaseScreen[];\r\n private _isDesignersAreaActive: KnockoutObservable<boolean>;\r\n private _activeDesignerMenuItem: KnockoutObservable<string>;\r\n IsAuthenticated: KnockoutObservable<boolean>;\r\n\r\n\r\n private _enableSystemMenu: KnockoutComputed<boolean>;\r\n private _enableDesignerMenu: KnockoutObservable<boolean>;\r\n private _enableLookupEditorMenu: KnockoutObservable<boolean>;\r\n private _enableCdToolkitMenu: KnockoutObservable<boolean>;\r\n private _enableDatabaseDesignerMenu: KnockoutObservable<boolean>;\r\n private _enableFieldCollectionDesignerMenu: KnockoutObservable<boolean>;\r\n private _enableFormDesignerMenu: KnockoutObservable<boolean>;\r\n private _enableCanvasDesignerMenu: KnockoutObservable<boolean>;\r\n private _enableBIDesignerMenu: KnockoutObservable<boolean>;\r\n private _enableNetworkDesignerMenu: KnockoutObservable<boolean>;\r\n private _enableFunctionDesignerMenu: KnockoutObservable<boolean>;\r\n private _enableCyberConfigMenu: KnockoutObservable<boolean>;\r\n private _enableDictionaryComparisonMenu: KnockoutObservable<boolean>;\r\n private _enableTranslationEditorMenu: KnockoutObservable<boolean>;\r\n private _enableAdministrationMenu: KnockoutObservable<boolean>;\r\n private _labels = LABELS;\r\n protected _help: HelpBook;\r\n private _pathRunnerRefreshed: KnockoutObservable<boolean>;\r\n private _isRecordRetired: boolean;\r\n private _isProductfruitsInitalized: boolean;\r\n\r\n CashedScreen: IScreen;\r\n\r\n constructor(isAuthenticated: boolean = false) {\r\n\r\n if (!MenuManager.allowInstantiation) {\r\n throw new Error('Use MenuManager.Instance instead');\r\n }\r\n this.InitKnockout();\r\n\r\n this._menuAreas = new MenuAreas();\r\n this._openedScreens = [];\r\n this.CashedScreen = null;\r\n this._isDesignersAreaActive = ko.observable(false);\r\n this._activeDesignerMenuItem = ko.observable(null);\r\n this._screenStates = [];\r\n this.Init();\r\n this.IsAuthenticated = ko.observable(isAuthenticated);\r\n this.IsAuthenticated.subscribe(authenticated => this._menuAreas.ShowHideSearchButtons());\r\n\r\n this._enableDesignerMenu = ko.observable(false);\r\n this._enableLookupEditorMenu = ko.observable(false);\r\n this._enableCdToolkitMenu = ko.observable(false);\r\n this._enableDatabaseDesignerMenu = ko.observable(false);\r\n this._enableFieldCollectionDesignerMenu = ko.observable(false);\r\n this._enableFormDesignerMenu = ko.observable(false);\r\n this._enableCanvasDesignerMenu = ko.observable(false);\r\n this._enableNetworkDesignerMenu = ko.observable(false);\r\n this._enableFunctionDesignerMenu = ko.observable(false);\r\n this._enableCyberConfigMenu = ko.observable(false);\r\n this._enableTranslationEditorMenu = ko.observable(false);\r\n this._enableBIDesignerMenu = ko.observable(false);\r\n this._enableAdministrationMenu = ko.observable(false);\r\n this._pathRunnerRefreshed = ko.observable(false);\r\n this._enableDictionaryComparisonMenu = ko.observable(false);\r\n this._isRecordRetired = false;\r\n this._isProductfruitsInitalized = false;\r\n\r\n this._enableSystemMenu = ko.computed(() => this._enableCyberConfigMenu());\r\n\r\n this._help = HelpBook.Instance;\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.REFRESH_MAIN_MENU, () => {\r\n this.RefreshMenuAreas();\r\n });\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.GO_TO_SCREEN_BY_TYPE, (message, data) => {\r\n this.GoToScreenByType(data.EntityId, data.ScreenType, data.IsOpenInModal);\r\n });\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.GO_TO_CONSULT_SCREEN, (message, data) => {\r\n this.GoToConsultScreen(data.EntityId, data.RecordId, data.TypeId || data.RecordTypeId, data.IsOpenInModal)\r\n .then((screen: BaseScreen) => {\r\n if (screen.GetType() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n PathRunner.Instance.GetUnit(data.EntityId, screen.IsSpecialScreenExist).LoadNewData(data.RecordId);\r\n }\r\n });\r\n });\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.GO_TO_EDIT_SCREEN, (message, data) => {\r\n const deferred = P.defer<IScreen>();\r\n\r\n this.GoToEditScreen(data.EntityId, data.RecordId, data.TypeId || data.RecordTypeId, data.IsOpenInModal, data.Owner)\r\n .then(screen => deferred.resolve(screen));\r\n });\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, (message, data) => {\r\n this.GoToRecordScreen(\r\n data.EntityId,\r\n data.RecordId,\r\n data.TypeId || data.RecordTypeId,\r\n data.IsOpenInModal,\r\n data.Owner,\r\n data.CurrentRow,\r\n data.RowList,\r\n false, // data.IsOpenAgenda,\r\n data.IsHyperlink\r\n )\r\n .then((screen: BaseScreen) => {\r\n if (data.IsHyperlink && data.ViewValue && !data.IsOpenInModal) {\r\n PubSub.publish(BREADCRUMBS_HYPERLINK_TOPIC, {\r\n Screen: screen,\r\n Name: data.ViewValue\r\n });\r\n }\r\n\r\n if (screen.GetType() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n PathRunner.Instance.GetUnit(data.EntityId, screen.IsSpecialScreenExist).LoadNewData(data.RecordId);\r\n }\r\n });\r\n });\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.RELOAD_SCREEN, () => {\r\n if (this.CashedScreen) {\r\n this.CashedScreen.Refresh();\r\n }\r\n });\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.SCREEN_OPENED, (message, screen: BaseScreen) => {\r\n const applicableTypes = [ScreenTypes.ConsultScreen, ScreenTypes.EditScreen];\r\n const typeIsApplicable = _.any(applicableTypes, type => ScreenTypes[type] === screen.GetType());\r\n\r\n if (!screen.IsInModal()) {\r\n this._openedScreens = [];\r\n }\r\n\r\n if (!typeIsApplicable) {\r\n return;\r\n }\r\n\r\n if (this._pathRunnerRefreshed()) {\r\n PathRunner.Instance.GetUnit(screen.GetEntityId(), screen.IsSpecialScreenExist).LoadNewData(screen.GetRecordId());\r\n this._pathRunnerRefreshed(false);\r\n }\r\n\r\n if (this._isRecordRetired) {\r\n PathRunner.Instance.GetUnit(screen.GetEntityId(), screen.IsSpecialScreenExist).LoadNewData(screen.GetRecordId());\r\n this._isRecordRetired = false;\r\n }\r\n\r\n this._openedScreens.push(screen);\r\n });\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.SCREEN_CLOSED, (message, screen: BaseScreen) => {\r\n this.HandleScreenClosedEvent(screen);\r\n });\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.CHANGE_SCREEN, (message, screen: BaseScreen) => {\r\n this._currentScreen = screen;\r\n this.ChangeTableTypeFlowFolder();\r\n });\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.CLOSE_POPUPS, () => {\r\n this.ClosePopupScreens();\r\n });\r\n\r\n PubSub.subscribe('SESSION_LOCKED', (message, data) => {\r\n new LockScreen().ShowInModal();\r\n });\r\n\r\n PubSub.subscribe('PATH_RUNNER_NAVIGATE', (message, data) => {\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.RecordTypeId);\r\n let lastOpenedScreen = this._openedScreens[this._openedScreens.length - 1];\r\n this._currentScreen = lastOpenedScreen;\r\n var inModal = this._currentScreen ? this._currentScreen.IsInModal() : false;\r\n this.GoToConsultScreen(data.EntityId, data.RecordId, data.RecordTypeId, inModal).then((screen) => {\r\n if (this._currentScreen) {\r\n this.ProhibitionAutoStopTimerForCurrentScreen(this._currentScreen, screen);\r\n this._currentScreen.Close(true);\r\n this.HandleScreenClosedEvent(lastOpenedScreen);\r\n }\r\n this._currentScreen = screen;\r\n\r\n if (data.LifeStatusName === \"Retired\") {\r\n this._isRecordRetired = true;\r\n }\r\n\r\n this.ChangeTableTypeFlowFolder();\r\n });\r\n });\r\n\r\n PubSub.subscribe('RELOAD_MENU_AREAS', (message, data) => {\r\n this._menuAreas.Refresh(false);\r\n });\r\n\r\n\r\n PubSub.subscribe('GO_TO_FORM_DESIGNER', () => {\r\n LockManager.Instance.ReleaseAllLocks();\r\n this.ShowFormDesigner();\r\n });\r\n\r\n PubSub.subscribe('GO_TO_CANVAS_DESIGNER', () => {\r\n LockManager.Instance.ReleaseAllLocks();\r\n this.ShowCanvasDesigner();\r\n });\r\n\r\n this._isDesignersAreaActive.subscribe(newValue => {\r\n if (!newValue) {\r\n this._activeDesignerMenuItem(null);\r\n }\r\n });\r\n\r\n PubSub.subscribe('SCREEN_NOT_IMPLEMENTED', () => {\r\n this.PushState(null, NavigationTypes.Portlets);\r\n this.ShowPortlets();\r\n });\r\n }\r\n\r\n ChangeTableTypeFlowFolder() {\r\n const baseScreen = this._currentScreen as BaseScreen;\r\n if (baseScreen){\r\n this._menuAreas.OpenedTypeFlowFolder = baseScreen.GetTableTypeFlowFolder();\r\n }\r\n }\r\n\r\n GetCurrentScreen() {\r\n return this._currentScreen;\r\n }\r\n\r\n GetTopScreen() {\r\n return _.last(this._openedScreens) || null;\r\n }\r\n\r\n ClosePopupScreens() {\r\n const modalScreens = this._openedScreens.filter(screen => screen.IsInModal());\r\n modalScreens.forEach(screen => screen.Close());\r\n }\r\n\r\n static SetNewTitle(title: string) { //dynamic breadcrumb Title\r\n let licenseName = UserManager.Instance.CurrentUser.LicenseName;\r\n document.title = title + ' - ' + licenseName;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'MenuManager/Templates/MenuManager';\r\n }\r\n\r\n AfterRender() {\r\n }\r\n\r\n DeleteAreas() {\r\n this._menuAreas.DeleteAreas();\r\n $(`#${this._pageBodyContainerId}`).html('');\r\n }\r\n\r\n Init() {\r\n this._menuAreas.On('UPDATED', this, (eventArgs: any) => {\r\n this.RemoveOverlay();\r\n if (eventArgs.data.ReloadScreen) {\r\n this.RestoreMenuState();\r\n }\r\n this.MobileVersion();\r\n this.InitProductFruits();\r\n });\r\n\r\n var self = this;\r\n this._history.Adapter.bind(window, 'statechange', () => {\r\n if (!self._popState) {\r\n self.RestoreMenuState();\r\n }\r\n self._popState = false;\r\n });\r\n }\r\n\r\n IsHomeScreenType(homeScreen: string) {\r\n let splitHomeScreen = homeScreen.split('.');\r\n let screenType = splitHomeScreen[1];\r\n return screenType === ScreenTypes[ScreenTypes.ConsultScreen] ||\r\n screenType === ScreenTypes[ScreenTypes.ListScreen] ||\r\n screenType === ScreenTypes[ScreenTypes.SpecialScreen];\r\n }\r\n\r\n GetHomeScreenType(homeScreen: string) {\r\n let splitHomeScreen = homeScreen.split('.');\r\n let screenType = splitHomeScreen[1];\r\n switch (screenType) {\r\n case ScreenTypes[ScreenTypes.ConsultScreen]:\r\n return ScreenTypes.ConsultScreen;\r\n\r\n case ScreenTypes[ScreenTypes.ListScreen]:\r\n return ScreenTypes.ListScreen;\r\n\r\n case ScreenTypes[ScreenTypes.SpecialScreen]:\r\n return ScreenTypes.SpecialScreen;\r\n\r\n default:\r\n return null;\r\n\r\n }\r\n }\r\n\r\n GoToHomeScreen(homeScreen: string) {\r\n let splitHomeScreen = homeScreen.split('.'),\r\n homeScreenName = splitHomeScreen[0];\r\n BlockUI.Block();\r\n TableStore.Get({TableName: homeScreenName})\r\n .then((table: any) => {\r\n ScreenManager.GetScreenByScreenType(table.Id, this.GetHomeScreenType(homeScreen), 0)\r\n .then(screen => {\r\n screen.SetIsReady(true);\r\n MenuManager.Instance.GoToScreen(screen);\r\n MenuManager.SetNewTitle(table.TranslatedName ? table.TranslatedName : table.Name);\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(NOTIFICATIONS.HOME_SCREEN_SUBJECT_ENTITY.replace('{subjectEntity}', err.message));\r\n this.ShowStaticScreen(NavigationTypes.Portlets);\r\n })\r\n })\r\n .fail((err: any) => {\r\n new Notifier().Failed(NOTIFICATIONS.CANNOT_OPEN_THE_HOME_SCREEN_SUBJECTENTITY_ENTTY_SCREEN.replace('{subjectEntity}', homeScreenName));\r\n this.ShowStaticScreen(NavigationTypes.Portlets);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n HandleUrl(){\r\n let url = new URL(window.location.href);\r\n let isValid = true;\r\n\r\n if(url.pathname.toLocaleLowerCase() === '/view'){\r\n let recordId = url.searchParams.get(\"recordId\");\r\n let entityId = url.searchParams.get(\"entityId\");\r\n let userId = url.searchParams.get(\"userId\");\r\n let dbName = url.searchParams.get(\"db\");\r\n\r\n if(userId && UserManager.Instance.CurrentUser.Id !== +userId){\r\n new Notifier().Failed('Cannot open the record: Invalid user');\r\n isValid = false;\r\n };\r\n\r\n if(UserManager.Instance.CurrentUser.DbName !== dbName){\r\n new Notifier().Failed('Cannot open the record: Invalid database');\r\n isValid = false;\r\n };\r\n\r\n if(isValid){\r\n RecordSecurityStore.IsUserAllowedTo(+entityId, +recordId, RECORD_SECURITY_WORDS.ReadOnly)\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n }).then(result=>{\r\n\r\n if (!result.ResultObject) {\r\n new Notifier().Failed('Cannot open the record: Access denied');\r\n return;\r\n }\r\n\r\n this.GoToRecordScreen(+entityId, +recordId, 0).then((screen: BaseScreen)=>{\r\n if (screen.IsConsultScreen) {\r\n PathRunner.Instance.GetUnit(+entityId, screen.IsSpecialScreenExist).LoadNewData(+recordId);\r\n }\r\n });\r\n\r\n });\r\n }\r\n }else{\r\n isValid = false;\r\n }\r\n \r\n this.UpdateUrl();\r\n return isValid;\r\n }\r\n\r\n private UpdateUrl(){\r\n let newUrl = window.location.origin + '?db=' + UserManager.Instance.CurrentUser.DbName;\r\n if(window.location.href != newUrl){\r\n window.history.pushState({path: newUrl}, '', newUrl);\r\n }\r\n }\r\n\r\n RestoreMenuState() {\r\n\r\n if(this.HandleUrl()){\r\n return;\r\n }\r\n\r\n const homeScreen = GlobalManager.Instance.GetGlobal(GLOBALS.HOME_SCREEN);\r\n if (UserManager.Instance.CurrentUser.UserType === UserTypes.Gdpr) {\r\n this.GetMyContact();\r\n return;\r\n }\r\n\r\n var state = this._history.getState();\r\n if (state) {\r\n document.title = state.title; // added Screen Title History\r\n LockManager.Instance.ReleaseAllLocks();\r\n var stateData = state.data as IHistoryState;\r\n this._currentSate = stateData;\r\n\r\n if (!this.StateIsValid(stateData)) {\r\n if (!!homeScreen && this.IsHomeScreenType(homeScreen)) {\r\n this.GoToHomeScreen(homeScreen);\r\n return;\r\n } else {\r\n if (!!homeScreen) {\r\n let splitHomeScreen = homeScreen.split('.'),\r\n screenType = splitHomeScreen[1];\r\n if (screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n new Notifier().Failed(NOTIFICATIONS.EDITSCREEN_CANNOT_BE_USED_AS_A_HOME_SCREEN);\r\n } else {\r\n new Notifier().Failed(NOTIFICATIONS.CANNOT_OPEN_THE_HOME_SCREEN_SUBJECTENTITY_ENTTY_SCREEN.replace('{subjectEntity}', homeScreen));\r\n }\r\n }\r\n this.ShowStaticScreen(NavigationTypes.Portlets);\r\n return;\r\n }\r\n }\r\n\r\n if (stateData.NavigationType === NavigationTypes.DesignScreen) {\r\n if (stateData.ScreenId) {\r\n this.BackToScreen(state.data);\r\n } else {\r\n this.ShowStaticScreen(NavigationTypes.Portlets);\r\n }\r\n } else {\r\n this.ShowStaticScreen(stateData.NavigationType);\r\n }\r\n } else {\r\n this.ShowStaticScreen(NavigationTypes.Portlets);\r\n this.PushState(null, NavigationTypes.Portlets);\r\n }\r\n }\r\n\r\n\tRestoreMenuAreaState() {\r\n\t\tconst historyState = this._history.getState();\r\n\t\tconst stateData = historyState && historyState.data as IHistoryState;\r\n\r\n\t\tif (!stateData || !stateData.EntityId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar areaScreen = this._menuAreas.GetScreenByEntityId(stateData.EntityId);\r\n\t\tvar area = this._menuAreas.GetAreaByEntityId(stateData.EntityId);\r\n\r\n\t\tif (areaScreen && area && (areaScreen !== this._selectedScreen || area !== this._selectedArea)) {\r\n\t\t\tthis.SwitchMenu(areaScreen, area);\r\n\t\t}\r\n\t}\r\n\r\n MobileVersion() {\r\n var isMobile = MobileChecker.IsMobile();\r\n var screenWidth = $(window).width();\r\n var menuBlock = $('.page-sidebar-menu');\r\n if (isMobile || screenWidth < 1400) {\r\n $(menuBlock).addClass('page-sidebar-menu-closed');\r\n $('body').addClass('page-sidebar-closed device');\r\n }\r\n if (isMobile || screenWidth <= 992) {\r\n $('body').addClass('device');\r\n $('body').removeClass('page-sidebar-closed');\r\n $(menuBlock).removeClass('page-sidebar-menu-closed');\r\n }\r\n }\r\n\r\n static get Instance(): MenuManager {\r\n if (MenuManager.instance == null) {\r\n MenuManager.allowInstantiation = true;\r\n MenuManager.instance = new MenuManager();\r\n MenuManager.allowInstantiation = false;\r\n }\r\n\r\n return MenuManager.instance;\r\n }\r\n\r\n BackToScreen(state: IHistoryState) {\r\n this._isDesignersAreaActive(false);\r\n var areaScreen = this._menuAreas.GetScreenByEntityId(state.EntityId);\r\n var area = this._menuAreas.GetAreaByEntityId(state.EntityId);\r\n\r\n if (areaScreen) {\r\n MenuManager.SetNewTitle(areaScreen.Table.TranslatedName ? areaScreen.Table.TranslatedName : areaScreen.Table.Name);\r\n }\r\n\r\n if (areaScreen && area) {\r\n if (this._selectedScreen) {\r\n this._selectedScreen.IsSelected(false);\r\n }\r\n this._selectedScreen = areaScreen;\r\n this._selectedScreen.IsSelected(true);\r\n\r\n if (this._selectedArea) {\r\n this._selectedArea.IsActive(false);\r\n }\r\n this._selectedArea = area;\r\n this._selectedArea.IsActive(true);\r\n\r\n if (this._activeDesignerMenuItem() === \"CyberConfig\") {\r\n this._activeDesignerMenuItem('');\r\n }\r\n }\r\n\r\n BlockUI.Block();\r\n var getScreenPromise = ScreenManager.GetScreenById({ScreenId: state.ScreenId, RecordId: state.RecordId});\r\n getScreenPromise\r\n .then(screen => {\r\n this._currentScreen = screen;\r\n this.ChangeTableTypeFlowFolder();\r\n if (ScreenTypes[screen.GetType()] === ScreenTypes.EditScreen) {\r\n this.ShowEditScreen(screen);\r\n } else {\r\n PubSub.publish(BREADCRUMBS_NEW_VALUE_TOPIC, {\r\n Screen: screen,\r\n CleanRecords: true\r\n });\r\n this.GetFieldRecord(screen.GetRecordId(), screen.GetEntityId());\r\n\r\n var screenState = _.find(this._screenStates, item => {\r\n return item.Guid === screen.GetGuid()\r\n });\r\n if (screenState) {\r\n screen.RestoreState(screenState);\r\n }\r\n\r\n if (ScreenTypes[screen.GetType()] === ScreenTypes.ConsultScreen) {\r\n PathRunner.Instance.GetUnit(state.EntityId, screen.IsSpecialScreenExist).LoadNewData(state.RecordId);\r\n }\r\n this.CashedScreen = screen;\r\n screen.RenderByTargetId(this._pageBodyContainerId);\r\n screen.SetIsReady(true);\r\n }\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n GetFieldRecord(recordId: number, tableId?: number, tableName?: string): void{\r\n if (recordId) {\r\n RecordStore.GetRecord({\r\n TableName: tableName,\r\n TableId: tableId,\r\n RecordId: recordId\r\n })\r\n .then((data)=> {\r\n let field: FieldDataModel = _.find(data.Fields, (field: FieldDataModel)=> field.FieldName === 'NAME');\r\n\r\n if (field) {\r\n PubSub.publish(BREADCRUMBS_FIELD_RECORD, {\r\n Field: field\r\n });\r\n }\r\n })\r\n .fail((err)=>{\r\n console.log(err)\r\n })\r\n } else {\r\n PubSub.publish(BREADCRUMBS_FIELD_RECORD, {\r\n Field: null\r\n });\r\n }\r\n }\r\n\r\n InitKnockout() {\r\n ko.setTemplateEngine(stringTemplateEngine.StringTemplateEngine);\r\n KnockoutExtenions.Init();\r\n }\r\n\r\n SelectedScreen(screen, isOpenInModal?: boolean) {\r\n\r\n this._currentScreen = screen;\r\n this.ChangeTableTypeFlowFolder();\r\n var areaScreen = this._menuAreas.GetScreenByEntityId(screen.GetEntityId());\r\n var area = this._menuAreas.GetAreaByEntityId(screen.GetEntityId());\r\n\r\n if (areaScreen && area) {\r\n if (!isOpenInModal) {\r\n MenuManager.SetNewTitle(areaScreen.Table.TranslatedName ? areaScreen.Table.TranslatedName : areaScreen.Table.Name);\r\n if (this._selectedScreen) {\r\n this._selectedScreen.IsSelected(false);\r\n }\r\n this._selectedScreen = areaScreen;\r\n this._selectedScreen.IsSelected(true);\r\n\r\n if (this._selectedArea) {\r\n this._selectedArea.IsActive(false);\r\n }\r\n this._selectedArea = area;\r\n this._selectedArea.IsActive(true);\r\n }\r\n }\r\n }\r\n\r\n GoToScreenByType(entityId: number, screenType: ScreenTypes, isOpenInModal: boolean = false) {\r\n var recordId = 0;\r\n var recordTypeId = 0;\r\n var lastRecentRecord = UserVarsManager.Instance.GetLastRecentRecordByEntityId(entityId);\r\n\r\n if (lastRecentRecord && (NotTypedScreenTypes.indexOf(screenType) < 0 || screenType === ScreenTypes.StepsScreen)) {\r\n recordId = lastRecentRecord.id;\r\n recordTypeId = lastRecentRecord.typeId;\r\n }\r\n\r\n BlockUI.Block();\r\n var getScreenPromise = ScreenManager.GetScreenByScreenType(entityId, screenType, recordId);\r\n getScreenPromise.then(screen => {\r\n this.ResetScreenStyle(isOpenInModal);\r\n if (!isOpenInModal) {\r\n LockManager.Instance.ReleaseAllLocks();\r\n this.CashedScreen = this._currentScreen;\r\n this.PushState(screen, NavigationTypes.DesignScreen);\r\n screen.RenderByTargetId(this._pageBodyContainerId);\r\n\r\n this.SelectedScreen(screen, isOpenInModal);\r\n\r\n } else {\r\n screen.ShowInModal();\r\n }\r\n screen.SetIsReady(true);\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n ScrollToAgendaControl(screen: IScreen, recordId: number, valTableId: number) {\r\n const tabControl = screen.GetControlByType('Tab') as Tab;\r\n if (tabControl) {\r\n let tabWithScheduler: TabPage,\r\n tabWithSchedulerIndex,\r\n agendaControlInTab: Agenda,\r\n isFound;\r\n\r\n _.forEach(tabControl.GetAllSubControls(), (control, index) => {\r\n if (!isFound && (control.GetType() === CONTROL_TYPES.TabPage)) {\r\n agendaControlInTab = _.find(control.GetAllSubControls(), (subControl) => {\r\n return subControl.GetType() === CONTROL_TYPES.Agenda;\r\n }) as Agenda;\r\n if (agendaControlInTab) {\r\n isFound = true;\r\n tabWithScheduler = control as TabPage;\r\n tabWithSchedulerIndex = index;\r\n }\r\n }\r\n });\r\n\r\n if (agendaControlInTab) {\r\n BlockUI.Block();\r\n\r\n RecordStore.GetRecord({TableId: valTableId, RecordId: recordId})\r\n .always(() => BlockUI.Unblock())\r\n .then((record: any) => {\r\n const starting = record.Fields.find(f => f.FieldName === 'STARTING');\r\n if (starting) {\r\n tabControl.SetActiveTab(tabWithSchedulerIndex, {\r\n controlId: agendaControlInTab.GetModel().Id,\r\n params: {starting: starting.FieldValue},\r\n action: 'HyperlinkAgenda'\r\n });\r\n }\r\n\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n } else {\r\n const agendaControl = screen.GetControlByType('Agenda') as Agenda;\r\n if (agendaControl) {\r\n BlockUI.Block();\r\n\r\n RecordStore.GetRecord({TableId: valTableId, RecordId: recordId})\r\n .always(() => BlockUI.Unblock())\r\n .then((record: any) => {\r\n const starting = record.Fields.find(f => f.FieldName === 'STARTING');\r\n if (starting) {\r\n agendaControl.SetStarting(starting.FieldValue);\r\n }\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n }\r\n }\r\n\r\n GoToScreen(\r\n screen: IScreen,\r\n isOpenInModal: boolean = false,\r\n currentRow?: GridRow,\r\n rowList?: Array<GridRow>,\r\n typeId?: number,\r\n isOpenAgenda?: false,\r\n recordId?: number,\r\n entityId?: number,\r\n isHyperLink?: boolean\r\n ) {\r\n if (screen) {\r\n if (!isOpenInModal) {\r\n this.PushState(screen, NavigationTypes.DesignScreen);\r\n if (ScreenTypes[screen.GetType()] === ScreenTypes.EditScreen) {\r\n this.ShowEditScreen(screen);\r\n } else {\r\n screen.RenderByTargetId(this._pageBodyContainerId);\r\n }\r\n } else {\r\n screen.SetCurrentGridRowData(currentRow);\r\n screen.SetGridRowListData(rowList);\r\n screen.ShowInModal(isHyperLink ? 'hyperLinkModal' : '');\r\n }\r\n\r\n if (isOpenAgenda) {\r\n this.ScrollToAgendaControl(screen, recordId, entityId);\r\n }\r\n\r\n if (this.CashedScreen && ScreenTypes[screen.GetType()] === ScreenTypes.EditScreen && ScreenTypes[this.CashedScreen.GetType()] === ScreenTypes.ListScreen) {\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (evtArgs) => {\r\n this.CashedScreen.Refresh();\r\n })\r\n } else if (!isOpenInModal) {\r\n this.CashedScreen = screen;\r\n }\r\n }\r\n }\r\n\r\n BackToPreviousScreen(isOpenInModal: boolean = false) {\r\n if (this.CashedScreen) {\r\n BlockUI.Block();\r\n ScreenManager.GetScreenById({\r\n ScreenId: this.CashedScreen.GetId(),\r\n RecordId: this.CashedScreen.GetRecordId()\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen) => {\r\n if (!isOpenInModal) {\r\n this.PushState(screen, NavigationTypes.DesignScreen, { previousScreen: true });\r\n screen.RenderByTargetId(this._pageBodyContainerId);\r\n screen.SetIsReady(true);\r\n } else {\r\n screen.ShowInModal();\r\n }\r\n this.CashedScreen = screen;\r\n });\r\n }\r\n }\r\n\r\n OpenBreadcrumb({ record, index }: { record: { Screen?: IScreen }; index: number }) {\r\n if (record.Screen) {\r\n BlockUI.Block();\r\n ScreenManager.GetScreenById({\r\n ScreenId: record.Screen.GetId(),\r\n RecordId: record.Screen.GetRecordId()\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen) => {\r\n this.PushState(screen, NavigationTypes.DesignScreen, { breadcrumbIndex: index });\r\n\r\n if (ScreenTypes[screen.GetType()] === ScreenTypes.ConsultScreen) {\r\n PathRunner.Instance.GetUnit(record.Screen.GetEntityId(), screen.IsSpecialScreenExist).LoadNewData(record.Screen.GetRecordId());\r\n }\r\n this.CashedScreen = screen;\r\n screen.RenderByTargetId(this._pageBodyContainerId);\r\n screen.SetIsReady(true);\r\n });\r\n } else {\r\n this.PushState(null, NavigationTypes.Portlets, { breadcrumbIndex: index });\r\n this.ShowPortlets();\r\n }\r\n }\r\n\r\n ResetZIndexValueAndReleaseAllLocks() {\r\n LockManager.Instance.ReleaseAllLocks();\r\n ZIndexManager.Instance.ResetValue;\r\n }\r\n\r\n ProhibitionAutoStopTimerForCurrentScreen(currentScreen: IScreen, newScreen: IScreen): void {\r\n if (currentScreen && (newScreen.GetRecordId() === currentScreen.GetRecordId()) ) {\r\n let timerControl: IControl = currentScreen.GetControl('Timer');\r\n if (timerControl instanceof Timer) {\r\n if (timerControl.TimerAutostart && timerControl.HasTimerStarted()) {\r\n currentScreen.AllowTimerAutoStop = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n ShowScreen(screenModel: DesignedScreenModel, menuAreaModel: MenuAreaModel): void {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowEntityHelp(screenModel.Table.Id);\r\n return;\r\n }\r\n\r\n this.SwitchMenu(screenModel, menuAreaModel);\r\n BlockUI.Block();\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n UserVarsManager.Instance.RemovePreselectTabData(screenModel.Id);\r\n var lastRecentRecord = UserVarsManager.Instance.GetLastRecentRecordByEntityId(screenModel.Table.Id);\r\n\r\n var getScreenPromise: P.Promise<IScreen>;\r\n\r\n if (lastRecentRecord && NotTypedScreenTypes.indexOf(ScreenTypes[screenModel.TypeName]) < 0) {\r\n\t\t\tif (ScreenTypes[screenModel.TypeName] === ScreenTypes.EditScreen) {\r\n\t\t\t\tgetScreenPromise = this.GetEditScreenWithTypeTransformation(screenModel.Table.Id, lastRecentRecord.id, lastRecentRecord.typeId);\r\n\t\t\t} else {\r\n\t\t\t\tgetScreenPromise = ScreenManager.GetScreenByScreenType(screenModel.Table.Id, ScreenTypes[screenModel.TypeName], lastRecentRecord.id);\r\n\t\t\t}\r\n } else {\r\n getScreenPromise = ScreenManager.GetScreenById({ScreenId: screenModel.Id, RecordId: 0});\r\n }\r\n getScreenPromise\r\n .always(() => {\r\n if (ScreenTypes[screenModel.TypeName] !== ScreenTypes.EditScreen) {\r\n BlockUI.Unblock();\r\n }\r\n })\r\n .fail(() => {\r\n ScreenManager.GetScreenById({ScreenId: screenModel.Id, RecordId: 0}).then((screen) => {\r\n const isSpecialScreenExist = screen && screen.IsSpecialScreenExist;\r\n if (ScreenTypes[screenModel.TypeName] === ScreenTypes.ConsultScreen) {\r\n PathRunner.Instance.GetUnit(screenModel.Table.Id, isSpecialScreenExist).Clear();\r\n }\r\n\r\n screen.RenderByTargetId(this._pageBodyContainerId);\r\n this.CashedScreen = screen;\r\n this.PushState(screen, NavigationTypes.DesignScreen, { triggeredFromMenu: true });\r\n screen.SetIsReady(true);\r\n });\r\n })\r\n .then(screen => {\r\n if (screen.ScreenDoesNotExistError) {\r\n Notifier.Failed(screen.ScreenDoesNotExistErrorMessage);\r\n this.GoToConsultScreen(screenModel.Table.Id, 0, 0);\r\n return;\r\n }\r\n\r\n const isSpecialScreenExist = screen && screen.IsSpecialScreenExist;\r\n const screenRecordId = screen && screen.GetRecordId();\r\n\r\n this.ProhibitionAutoStopTimerForCurrentScreen(this._currentScreen, screen);\r\n\r\n if (ScreenTypes[screenModel.TypeName] === ScreenTypes.ConsultScreen) {\r\n if(screenRecordId) {\r\n PathRunner.Instance.GetUnit(screenModel.Table.Id, isSpecialScreenExist).LoadNewData(screenRecordId);\r\n }\r\n else {\r\n PathRunner.Instance.GetUnit(screenModel.Table.Id, isSpecialScreenExist).Clear();\r\n }\r\n }\r\n\r\n if (ScreenTypes[screenModel.TypeName] === ScreenTypes.EditScreen) {\r\n this.ShowEditScreen(screen);\r\n } else {\r\n screen.RenderByTargetId(this._pageBodyContainerId);\r\n this.CashedScreen = screen;\r\n this.PushState(screen, NavigationTypes.DesignScreen, { triggeredFromMenu: true });\r\n screen.SetIsReady(true);\r\n LockManager.Instance.ReleaseAllLocks();\r\n }\r\n $(\"html, body\").animate({scrollTop: 0}, 600);\r\n\r\n this._currentScreen = screen;\r\n });\r\n }\r\n\r\n ShowEditScreen(screen: IScreen) {\r\n let editScreen = screen as EditScreen;\r\n LockManager.Instance.TryLock(editScreen.GetEntityId(), editScreen.GetRecordId())\r\n .then(() => {\r\n\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === editScreen.GetEntityId() && eventArgs.data.RecordId === editScreen.GetRecordId()) {\r\n if (editScreen.IsInModal()) {\r\n editScreen.Close();\r\n }\r\n }\r\n });\r\n\r\n editScreen.On(\"RECORD_SAVED\", this, (eventArgs) => {\r\n var notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n LockManager.Instance.ReleaseLock(editScreen.GetEntityId(), editScreen.GetRecordId());\r\n });\r\n\r\n editScreen.On(\"RECORD_REMOVED\", this, (eventArgs) => {\r\n const notifier = new Notifier();\r\n notifier.Success(editScreen.DeleteRecordSuccessNotification);\r\n LockManager.Instance.ReleaseLock(editScreen.GetEntityId(), editScreen.GetRecordId());\r\n });\r\n\r\n editScreen.On(\"RECORD_SELECTED\", this, (eventArgs) => {\r\n\t var getScreenPromise = this.GetEditScreenWithTypeTransformation(editScreen.GetEntityId(),\r\n\t eventArgs.data.RecordId,\r\n\t\t\t\t\t\teventArgs.data.TableTypeId);\r\n\r\n BlockUI.Block();\r\n getScreenPromise\r\n .then(screen => {\r\n LockManager.Instance.ReleaseLock(editScreen.GetEntityId(), editScreen.GetRecordId());\r\n this._currentScreen = screen;\r\n this.ChangeTableTypeFlowFolder();\r\n this.ShowEditScreen(screen);\r\n screen.RenderByTargetId(this._pageBodyContainerId);\r\n screen.SetIsReady(true);\r\n\r\n var baseScreen = screen as BaseScreen;\r\n var textSearchTerm = baseScreen.GetControl<Search>('Search');\r\n if (textSearchTerm) {\r\n textSearchTerm.SetSearchTerm(eventArgs.data.SearchTerm);\r\n }\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n });\r\n });\r\n\r\n editScreen.RenderByTargetId(this._pageBodyContainerId);\r\n this.CashedScreen = editScreen;\r\n this.PushState(editScreen, NavigationTypes.DesignScreen);\r\n editScreen.SetIsReady(true);\r\n })\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n\r\n SwitchMenu(screen: DesignedScreenModel, menuAreaModel: MenuAreaModel) {\r\n this._isDesignersAreaActive(false);\r\n if (this._selectedScreen) {\r\n this._selectedScreen.IsSelected(false);\r\n }\r\n this._selectedScreen = screen;\r\n this._selectedScreen.IsSelected(true);\r\n\r\n if (this._selectedArea) {\r\n this._selectedArea.IsActive(false);\r\n }\r\n this._selectedArea = menuAreaModel;\r\n this._selectedArea.IsActive(true);\r\n\r\n this.ResetScreenStyle();\r\n MenuManager.SetNewTitle(screen.Table.TranslatedName ? screen.Table.TranslatedName : screen.Table.Name);\r\n }\r\n\r\n ResetScreenStyle(isOpenInModal: boolean = false): void {\r\n let elements = [\r\n $(document.body).find(\".page-container\"),\r\n $(document.body).find(\".page-header.navbar\")\r\n ];\r\n if (isOpenInModal) {\r\n elements = []\r\n }\r\n let resetProperties: CustomStyleProperties = {\r\n 'background-color': '',\r\n '--page-header-hover-color': '',\r\n '--root-background-color': ''\r\n };\r\n elements.forEach(element => {\r\n this.ResetStyleProperty(element, resetProperties);\r\n });\r\n }\r\n\r\n ResetStyleProperty(element: JQuery<HTMLElement> | null, properties: CustomStyleProperties | null): void {\r\n if ($(element).length) {\r\n _.each(properties, (value: string | null, property: string):void => {\r\n $(element).get(0).style.setProperty(property, value);\r\n })\r\n }\r\n }\r\n\r\n ShowSearchScreen(screen: DesignedScreenModel, menuAreaModel: MenuAreaModel) {\r\n\r\n LockManager.Instance.ReleaseAllLocks();\r\n\r\n var searchScreen = new SearchScreen({\r\n EntityId: screen.Table.Id,\r\n SearchTerm: '',\r\n RecentAndFavoritesActive: true\r\n });\r\n\r\n searchScreen.On(\"RECORD_SELECTED\", this, (eventArgs) => {\r\n this.SwitchMenu(screen, menuAreaModel);\r\n var recordId = eventArgs.data.RecordId;\r\n var typeId = eventArgs.data.TypeId;\r\n\r\n UserVarsManager.Instance.AddRecent(screen.Table.Id, recordId, typeId);\r\n\r\n if (ScreenTypes[screen.TypeName] === ScreenTypes.ListScreen) {\r\n this.GoToRecordScreen(screen.Table.Id, recordId, typeId, true);\r\n } else {\r\n BlockUI.Block();\r\n ScreenManager\r\n .GetScreenByScreenType(screen.Table.Id, ScreenTypes[screen.TypeName], recordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n screen.SetIsReady(true);\r\n this.GoToScreen(screen);\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n });\r\n\r\n searchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.On(\"NEW_RECORD\", this, (eventArgs) => {\r\n let entityId = screen.Table.Id;\r\n let typeId = screen.TableTypeId;\r\n\r\n const typeScreen = new TypeScreen(entityId, typeId, true);\r\n\r\n typeScreen.On(\"TYPES_NOT_FOUND\", this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n\r\n typeScreen.On(\"TYPES_FOUND\", this, (eventArgs) => {\r\n searchScreen.Cancel();\r\n });\r\n\r\n typeScreen.On(\"TYPE_SELECTED\", this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, entityId);\r\n });\r\n\r\n typeScreen.Show();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, entityId: number) {\r\n ScreenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0\r\n }).then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.UseLinking = true;\r\n\r\n screen.On(\"RECORD_SAVED\", this, (eventArgs) => {\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadScreenFor(tableTypeId, eventArgs.data.RecordId, entityId);\r\n UserVarsManager.Instance.AddRecent(entityId, eventArgs.data.RecordId, tableTypeId);\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier().Warning(error.message);\r\n });\r\n }\r\n\r\n LoadScreenFor(tableTypeId: number, recordId: number, entityId: number) {\r\n BlockUI.Block();\r\n ScreenManager.GetScreenByScreenType(entityId, ScreenTypes.ConsultScreen, recordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n screen.SetIsReady(true);\r\n MenuManager.Instance.GoToScreen(screen);\r\n }).fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n\r\n Bind(target: string): void {\r\n var targetElement = document.getElementById(target);\r\n if (targetElement != null) {\r\n ko.applyBindings(this, targetElement);\r\n }\r\n }\r\n\r\n NavigateToHomePage() {\r\n if (!this.IsAuthenticated()) {\r\n return;\r\n }\r\n this._isDesignersAreaActive(false);\r\n if (this._selectedScreen) {\r\n this._selectedScreen.IsSelected(false);\r\n }\r\n\r\n if (UserManager.Instance.CurrentUser.UserType === UserTypes.Gdpr) {\r\n this.GetMyContact();\r\n return;\r\n }\r\n\r\n MenuManager.SetNewTitle(LABELS.MY_DAILY_STUFF);\r\n\r\n LockManager.Instance.ReleaseAllLocks();\r\n this.PushState(null, NavigationTypes.Portlets);\r\n this.ShowPortlets();\r\n }\r\n\r\n ShowPortlets() {\r\n\r\n this._isDesignersAreaActive(false);\r\n this._isDesignersAreaActive.valueHasMutated();\r\n this._activeDesignerMenuItem('');\r\n\r\n const portletsPage = new PortletsPage();\r\n portletsPage.Render(this._pageBodyContainerId);\r\n\r\n this._menuAreas.CollapseAll();\r\n\r\n this.CashedScreen = null;\r\n this.ResetScreenStyle();\r\n\r\n MenuManager.SetNewTitle(LABELS.MY_DAILY_STUFF);\r\n }\r\n\r\n ShowStaticScreen(navigationType: NavigationTypes) {\r\n let arePortletsShown = false;\r\n\r\n switch (navigationType) {\r\n case NavigationTypes.Portlets:\r\n this.ShowPortlets();\r\n arePortletsShown = true;\r\n break;\r\n case NavigationTypes.LookupEditor:\r\n this.ShowLookupEditor(false);\r\n this._isDesignersAreaActive(true);\r\n break;\r\n case NavigationTypes.DatabaseDesigner:\r\n this.ShowDatabaseDesigner(false);\r\n this._isDesignersAreaActive(true);\r\n break;\r\n case NavigationTypes.FormDesigner:\r\n this.ShowFormDesigner(false);\r\n this._isDesignersAreaActive(true);\r\n break;\r\n\r\n case NavigationTypes.NetworkDesigner:\r\n this.ShowNetworkDesigner(false);\r\n this._isDesignersAreaActive(true);\r\n break;\r\n case NavigationTypes.CanvasDesigner:\r\n this.ShowCanvasDesigner(false);\r\n this._isDesignersAreaActive(true);\r\n break;\r\n case NavigationTypes.FunctionDesigner:\r\n this.ShowFunctionDesigner(false);\r\n this._isDesignersAreaActive(true);\r\n\t\t\t\tbreak;\r\n case NavigationTypes.FieldCollectionDesigner:\r\n\t\t\t\tthis.ShowFieldCollection(false);\r\n\t this._isDesignersAreaActive(true);\r\n\t break;\r\n case NavigationTypes.CdToolkit:\r\n this.ShowCdToolkit(false);\r\n this._isDesignersAreaActive(true);\r\n break;\r\n case NavigationTypes.TranslationEditor:\r\n this.ShowTranslationEditor(false);\r\n this._isDesignersAreaActive(true);\r\n break;\r\n case NavigationTypes.CyberConfig:\r\n this.ShowCyberConfigManager(false);\r\n break;\r\n case NavigationTypes.BIDesigner:\r\n this.ShowBIDesigner(false);\r\n this._isDesignersAreaActive(true);\r\n break;\r\n case NavigationTypes.Administration:\r\n if(this._enableAdministrationMenu()){\r\n this.ShowAdministration(false);\r\n this._isDesignersAreaActive(false);\r\n break;\r\n }\r\n \r\n default:\r\n this.ShowPortlets();\r\n this._isDesignersAreaActive(false);\r\n arePortletsShown = true;\r\n }\r\n\r\n PubSub.publish(BREADCRUMBS_NEW_VALUE_TOPIC, {\r\n CleanRecords: true,\r\n DailyStuff: arePortletsShown\r\n });\r\n this.GetFieldRecord(null);\r\n\r\n if (this._selectedScreen) {\r\n this._selectedScreen.IsSelected(false);\r\n }\r\n\r\n if (this._selectedArea) {\r\n this._selectedArea.IsActive(false);\r\n }\r\n }\r\n\r\n GetMyContact() {\r\n new UserMenu().GetMyContact();\r\n }\r\n\r\n ShowLookupEditor(saveState: boolean = true): void {\r\n\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n this._activeDesignerMenuItem('LookupEditor');\r\n var lookupEditor = new LookupEditor();\r\n lookupEditor.Render(this._pageBodyContainerId);\r\n if (saveState) {\r\n this.PushState(null, NavigationTypes.LookupEditor);\r\n }\r\n\r\n this.CashedScreen = null;\r\n this.ResetScreenStyle();\r\n\r\n MenuManager.SetNewTitle(LABELS.LOOKUP_EDITOR);\r\n }\r\n\r\n ShowBIDesigner(saveState: boolean = true): void {\r\n\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n this._activeDesignerMenuItem('BIDesigner');\r\n var designer = new BoldBiDesignerPage();\r\n designer.Render(this._pageBodyContainerId);\r\n if (saveState) {\r\n this.PushState(null, NavigationTypes.BIDesigner);\r\n }\r\n\r\n this.CashedScreen = null;\r\n this.ResetScreenStyle();\r\n\r\n MenuManager.SetNewTitle('SBI designer');\r\n }\r\n\r\n\r\n ShowFormDesigner(saveState: boolean = true): void {\r\n\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n this._activeDesignerMenuItem('FormDesigner');\r\n var formDesignerPage = new FormDesignerPage();\r\n formDesignerPage.Render(this._pageBodyContainerId);\r\n if (saveState) {\r\n this.PushState(null, NavigationTypes.FormDesigner);\r\n }\r\n\r\n this.CashedScreen = null;\r\n this.ResetScreenStyle();\r\n\r\n MenuManager.SetNewTitle(LABELS.FORM_DESIGNER);\r\n }\r\n\r\n ShowTranslationEditor(saveState: boolean = true): void {\r\n\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n this._activeDesignerMenuItem('TranslationEditor');\r\n var translationEditor = new TranslationEditorPage();\r\n translationEditor.Render(this._pageBodyContainerId);\r\n if (saveState) {\r\n this.PushState(null, NavigationTypes.TranslationEditor);\r\n }\r\n\r\n this.CashedScreen = null;\r\n this.ResetScreenStyle();\r\n\r\n MenuManager.SetNewTitle(LABELS.TRANSLATION_EDITOR);\r\n }\r\n\r\n ShowCanvasDesigner(saveState: boolean = true): void {\r\n\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n this._activeDesignerMenuItem('CanvasDesigner');\r\n var canvasDesignerPage = new CanvasDesignerPage();\r\n canvasDesignerPage.Render(this._pageBodyContainerId);\r\n if (saveState) {\r\n this.PushState(null, NavigationTypes.CanvasDesigner);\r\n }\r\n\r\n this.CashedScreen = null;\r\n this.ResetScreenStyle();\r\n\r\n MenuManager.SetNewTitle(LABELS.CANVAS_DESIGNER);\r\n }\r\n\r\n ShowFunctionDesigner(saveState: boolean = true): void {\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n this._activeDesignerMenuItem('FunctionDesigner');\r\n var functionDesignerPage = new FunctionDesignerPage();\r\n functionDesignerPage.Render(this._pageBodyContainerId);\r\n if (saveState) {\r\n this.PushState(null, NavigationTypes.FunctionDesigner);\r\n }\r\n\r\n this.CashedScreen = null;\r\n this.ResetScreenStyle();\r\n\r\n MenuManager.SetNewTitle(LABELS.FUNCTION_DESIGNER);\r\n }\r\n\r\n ShowAdministration(saveState: boolean = true): void {\r\n let pageBodyContainerId = `#${this._pageBodyContainerId}`;\r\n ko.cleanNode($(pageBodyContainerId)[0]);\r\n\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n $(pageBodyContainerId).contextmenu('destroy');\r\n\r\n let administrationPage = new AdministrationPage();\r\n administrationPage.Render(this._pageBodyContainerId);\r\n\r\n if (saveState) {\r\n this.PushState(null, NavigationTypes.Administration);\r\n }\r\n\r\n this._activeDesignerMenuItem('Administration');\r\n MenuManager.SetNewTitle('Administration');\r\n }\r\n\r\n ShowDatabaseDesigner(saveState: boolean = true): void {\r\n let pageBodyContainerId = `#${this._pageBodyContainerId}`;\r\n ko.cleanNode($(pageBodyContainerId)[0]);\r\n\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n $(pageBodyContainerId).contextmenu('destroy');\r\n\r\n import('Pages/DatabaseDesignerPage').then(({DatabaseDesignerPage}) => {\r\n this._activeDesignerMenuItem('DatabaseDesginer');\r\n\r\n var databaseDesignerPage = new DatabaseDesignerPage();\r\n databaseDesignerPage.Render($(pageBodyContainerId));\r\n\r\n if (saveState) {\r\n this.PushState(null, NavigationTypes.DatabaseDesigner);\r\n }\r\n\r\n this.CashedScreen = null;\r\n this.ResetScreenStyle();\r\n\r\n MenuManager.SetNewTitle(LABELS.DATABASE_DESIGNER);\r\n });\r\n }\r\n\r\n ShowDictionaryComparison(){\r\n this._activeDesignerMenuItem('DictionaryComparison');\r\n let page = new DictionaryComparisonPage();\r\n this.ResetScreenStyle();\r\n page.Render(this._pageBodyContainerId);\r\n }\r\n\r\n ShowNetworkDesigner(saveState: boolean = true) : void {\r\n\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n\r\n this._activeDesignerMenuItem('NetworkDesigner');\r\n\r\n const networkDesigner = new NetworkDesigner();\r\n networkDesigner.Render(this._pageBodyContainerId);\r\n\r\n if (saveState) {\r\n this.PushState(null, NavigationTypes.NetworkDesigner);\r\n }\r\n\r\n this.CashedScreen = null;\r\n this.ResetScreenStyle();\r\n\r\n MenuManager.SetNewTitle(LABELS.NETWORK_DESIGNER);\r\n }\r\n\r\n\tShowFieldCollection(saveState: boolean = true): void {\r\n\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n\r\n this._activeDesignerMenuItem('FieldCollection');\r\n\r\n const fieldCollection = new FieldCollection();\r\n\r\n\t\tfieldCollection.Render(this._pageBodyContainerId);\r\n\r\n\t\tif (saveState) {\r\n\t\t\tthis.PushState(null, NavigationTypes.FieldCollectionDesigner);\r\n\t\t}\r\n\r\n\t\tthis.CashedScreen = null;\r\n this.ResetScreenStyle();\r\n\r\n\t\tMenuManager.SetNewTitle(LABELS.FIELD_COLLECTION_DESIGNER);\r\n }\r\n\r\n ShowCdToolkit(saveState: boolean = true) {\r\n\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n $(`#${this._pageBodyContainerId}`).html(\"\");\r\n this._activeDesignerMenuItem('CdToolkit');\r\n if (saveState) {\r\n this.PushState(null, NavigationTypes.CdToolkit);\r\n }\r\n\r\n this.CashedScreen = null;\r\n this.ResetScreenStyle();\r\n }\r\n\r\n ShowCyberConfigManager(saveState: boolean = true): void {\r\n\r\n this.ResetZIndexValueAndReleaseAllLocks();\r\n this._activeDesignerMenuItem('CyberConfig');\r\n let manager = new CyberConfigManager();\r\n manager.Render(this._pageBodyContainerId);\r\n\r\n if (saveState) {\r\n this.PushState(null, NavigationTypes.CyberConfig);\r\n }\r\n\r\n this.CashedScreen = null;\r\n this._isDesignersAreaActive(false);\r\n this.ResetScreenStyle();\r\n\r\n MenuManager.SetNewTitle(LABELS.ENVIRONMENT_MANAGER);\r\n }\r\n\r\n GoToConsultScreen(entityId: number, recordId: number, typeId: number, isOpenInModal: boolean = false): P.Promise<IScreen> {\r\n BlockUI.Block();\r\n var deferredResult = P.defer<IScreen>();\r\n ScreenManager.GetScreenByScreenType(entityId, ScreenTypes.ConsultScreen, recordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n deferredResult.resolve(screen);\r\n screen.SetIsReady(true);\r\n this.GoToScreen(screen, isOpenInModal);\r\n\r\n this.SelectedScreen(screen, isOpenInModal);\r\n\r\n }).fail(err => new Notifier().Warning(err.message));\r\n return deferredResult.promise();\r\n }\r\n\r\n\r\n GoToRecordScreen(\r\n entityId: number,\r\n recordId: number,\r\n typeId: number,\r\n isOpenInModal: boolean = false,\r\n owner: IScreen = null,\r\n currentRow?,\r\n rowsList?,\r\n isOpenAgenda?: false,\r\n isHyperLink?: boolean\r\n ) {\r\n const deferred = P.defer<IScreen>();\r\n\r\n BlockUI.Block();\r\n const screenType = isOpenAgenda ? ScreenTypes.SpecialScreen : ScreenTypes.ConsultScreen;\r\n ScreenManager.GetScreenByScreenType(entityId, screenType, recordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n if (screen.ScreenDoesNotExistError) {\r\n this.HandleGoToRecordScreenError(entityId, recordId, typeId, null, deferred, screen.ScreenDoesNotExistError, isOpenInModal, owner, currentRow, rowsList);\r\n return;\r\n }\r\n\r\n screen.SetSource(owner);\r\n screen.SetIsReady(true);\r\n\r\n if (owner) {\r\n screen.On(\"RECORD_SAVED\", this, (eventArgs) => {\r\n owner.Refresh();\r\n });\r\n\r\n screen.On('FOLLOWUP_RECORD', this, (eventArgs) => {\r\n if (owner.GetType() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n (owner as ConsultScreen).OnFollowUpRecordFromEditScreen(eventArgs);\r\n }\r\n });\r\n }\r\n this.GoToScreen(screen, isOpenInModal, currentRow, rowsList, typeId, isOpenAgenda, recordId, entityId, isHyperLink);\r\n\r\n this.SelectedScreen(screen, isOpenInModal);\r\n\r\n deferred.resolve(screen);\r\n }).fail(err => {\r\n this.HandleGoToRecordScreenError(entityId, recordId, typeId, err.message, deferred, false, isOpenInModal, owner, currentRow, rowsList);\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GoToEditScreen(entityId: number, recordId: number, typeId: number, isOpenInModal: boolean = false, owner: IScreen = null, currentRow?: GridRow, rowsList?: Array<GridRow>) {\r\n const deferred = P.defer<IScreen>();\r\n\r\n BlockUI.Block();\r\n LockManager.Instance.TryLock(entityId, recordId).then(() => {\r\n\t\t\tScreenManager.GetEditScreen({\r\n\t\t\t\tEntityId: entityId,\r\n\t\t\t\tTableTypeId: typeId,\r\n\t\t\t\tRecordId: recordId\r\n\t\t\t})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n if (owner) {\r\n screen.On(\"RECORD_SAVED\", this, (eventArgs) => {\r\n owner.Refresh();\r\n });\r\n }\r\n\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs: any) => {\r\n if (eventArgs.data.TableId === entityId && eventArgs.data.RecordId === recordId) {\r\n screen.Close();\r\n }\r\n });\r\n\r\n this.GoToScreen(screen, true, currentRow, rowsList, typeId);\r\n\r\n screen.On('MODAL_CLOSE',\r\n this,\r\n () => {\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n });\r\n\r\n screen.On(\"COPY\",\r\n this,\r\n (eventArgs) => {\r\n let editScreen = screen as EditScreen;\r\n if (editScreen.IsInModal()) {\r\n const copyTableType = eventArgs.data.copyToType || typeId;\r\n editScreen.NewRecord(copyTableType, null, eventArgs.data.recordId, null, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n }\r\n });\r\n\r\n screen.On(\"FOLLOWUP_RECORD\",\r\n this,\r\n (eventArgs) => {\r\n let editScreen = screen as EditScreen;\r\n editScreen.Close();\r\n\r\n let followUpRecord = eventArgs.data.followUpRecordModel;\r\n if (screen.IsInModal()) {\r\n if (!followUpRecord ||\r\n (followUpRecord.LifeStatusSort !== null\r\n && followUpRecord.LifeStatusSort !== LIFE_STATUS_GROUPS.RETIRED\r\n && !followUpRecord.LifeStatusNoActionNode\r\n && (followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT_AND_NEW\r\n || followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW))) {\r\n BlockUI.Block();\r\n ScreenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: typeId,\r\n RecordId: recordId,\r\n LoadAsExample: true,\r\n DataMode: DataModes.FollowUp,\r\n ParentRecordId: recordId,\r\n SubjectLifestatusId: followUpRecord ? followUpRecord.LifeStatusId : null,\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(followUpScreen => {\r\n let editfollowUpScreen = followUpScreen as EditScreen;\r\n editfollowUpScreen.IsDataFromExample = true;\r\n editfollowUpScreen.UseLinking = true;\r\n editfollowUpScreen.ParentRecordId = recordId;\r\n editfollowUpScreen.ParentRecordTypeId = typeId;\r\n\r\n this.GoToScreen(editfollowUpScreen, true, currentRow, rowsList, typeId);\r\n\r\n editfollowUpScreen.On('MODAL_CLOSE',\r\n this,\r\n () => {\r\n if (owner) {\r\n owner.Refresh();\r\n }\r\n });\r\n });\r\n }\r\n }\r\n });\r\n\r\n deferred.resolve(screen);\r\n }).fail((err) => {\r\n new Notifier().Warning(err.message);\r\n deferred.reject(err);\r\n });\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n\tprivate GetEditScreenWithTypeTransformation(entityId: number, recordId: number, typeId: number) {\r\n\t\tconst deferred = P.defer<IScreen>();\r\n\r\n\t\tLockManager.Instance.TryLock(entityId, recordId).then(() => {\r\n\t\t\tScreenManager.IsTypeTransformationRequired(entityId, recordId)\r\n\t\t\t\t.then((result: any) => {\r\n\t\t\t\t\tif (result) {\r\n\t\t\t\t\t\tconst typeScreen = new TypeScreen(entityId, 0, true, false);\r\n\t\t\t\t\t\ttypeScreen.On(\"TYPE_SELECTED\",\r\n\t\t\t\t\t\t\tthis,\r\n\t\t\t\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\t\t\t\tconst newTypeId = eventArgs.data.TypeId;\r\n\t\t\t\t\t\t\t\tScreenManager.GetEditScreen({\r\n\t\t\t\t\t\t\t\t\tEntityId: entityId,\r\n\t\t\t\t\t\t\t\t\tTableTypeId: newTypeId,\r\n\t\t\t\t\t\t\t\t\tRecordId: recordId\r\n\t\t\t\t\t\t\t\t}).then(screen => deferred.resolve(screen)).fail(err => {\r\n\t\t\t\t\t\t\t\t new Notifier().Warning(err.message);\r\n LockManager.Instance.ReleaseLock(typeId, recordId);\r\n this.RestoreMenuAreaState();\r\n BlockUI.Unblock();\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\ttypeScreen.On(\"CANCELLED\", this, () => {\r\n\t\t\t\t\t\t\tthis.RestoreMenuAreaState();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\ttypeScreen.Show();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tScreenManager.GetEditScreen({\r\n\t\t\t\t\t\t\tEntityId: entityId,\r\n\t\t\t\t\t\t\tTableTypeId: typeId,\r\n\t\t\t\t\t\t\tRecordId: recordId\r\n\t\t\t\t\t\t}).then(screen => deferred.resolve(screen)).fail(err => {\r\n new Notifier().Warning(err.message);\r\n LockManager.Instance.ReleaseLock(typeId, recordId);\r\n this.RestoreMenuAreaState();\r\n BlockUI.Unblock();\r\n });\r\n\t\t\t\t\t}\r\n\t\t\t\t}).fail(err => new Notifier().Warning(err.message));\r\n\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tprivate HandleGoToRecordScreenError(\r\n entityId: number,\r\n recordId: number,\r\n typeId: number,\r\n errorMessage: string,\r\n deferred,\r\n screenDoesNotExistError: boolean = false,\r\n isOpenInModal: boolean = false,\r\n owner: IScreen = null,\r\n currentRow?,\r\n rowsList?\r\n ){\r\n if (typeId !== 0) {\r\n if (currentRow || screenDoesNotExistError) {\r\n RecordSecurityStore.IsUserAllowedToEdit(entityId, recordId)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n return Notifier.Failed(result.ErrorMessage);\r\n }\r\n\r\n if (!result.ResultObject) {\r\n return Notifier.Warning(NOTIFICATIONS.YOU_ARE_NOT_ALLOWED_TO_PERFORM_THIS_ACTION);\r\n }\r\n\r\n this.GoToEditScreen(entityId, recordId, typeId, isOpenInModal, owner)\r\n .then(screen => deferred.resolve(screen));\r\n })\r\n .fail(() => Notifier.Failed('Error checking edit rights'));\r\n\r\n } else {\r\n Notifier.Failed(errorMessage);\r\n }\r\n } else {\r\n ScreenManager.IsTypeTransformationRequired(entityId, recordId)\r\n .then((result: any) => {\r\n if (result) {\r\n const typeScreen = new TypeScreen(entityId, 0, true, false);\r\n typeScreen.On(\"TYPE_SELECTED\", this, (eventArgs) => {\r\n typeId = eventArgs.data.TypeId;\r\n this.GoToEditScreen(entityId, recordId, typeId, isOpenInModal, owner)\r\n .then(screen => deferred.resolve(screen));\r\n });\r\n typeScreen.Show();\r\n\r\n } else if (screenDoesNotExistError) {\r\n this.GoToEditScreen(entityId, recordId, typeId, isOpenInModal, owner)\r\n .then(screen => deferred.resolve(screen));\r\n } else {\r\n Notifier.Failed(errorMessage);\r\n }\r\n\r\n }).fail(err => Notifier.Warning(err.message));\r\n }\r\n }\r\n\r\n private HandleScreenClosedEvent(screen: BaseScreen) {\r\n const openedScreenIndex = this._openedScreens.indexOf(screen);\r\n\r\n if (openedScreenIndex > -1) {\r\n this._openedScreens.splice(openedScreenIndex, 1);\r\n this._currentScreen = null;\r\n\r\n if (screen.IsInModal() && screen.IsPathRunnerRefreshed) {\r\n this._pathRunnerRefreshed(true);\r\n screen.IsPathRunnerRefreshed = false;\r\n }\r\n }\r\n }\r\n\r\n RefreshMenuAreas(reloadScreen: boolean = true) {\r\n this._menuAreas.Refresh(reloadScreen);\r\n }\r\n\r\n RefreshStaticMenu() {\r\n const userManager = UserManager.Instance;\r\n const roles = userManager.GetDataRoles();\r\n \r\n this._enableDatabaseDesignerMenu(userManager.IsUserInRole(UserRoles.DesignerLevel1) || userManager.IsUserInRole(UserRoles.DesignerLevel2)\r\n || userManager.IsUserInRole(UserRoles.DesignerLevel3) || userManager.IsUserInRole(UserRoles.US));\r\n this._enableFormDesignerMenu(userManager.IsUserInRole(UserRoles.DesignerLevel1) || userManager.IsUserInRole(UserRoles.DesignerLevel2)\r\n || userManager.IsUserInRole(UserRoles.DesignerLevel3) || userManager.IsUserInRole(UserRoles.US));\r\n this._enableNetworkDesignerMenu(userManager.IsUserInRole(UserRoles.NetworkManager) || userManager.IsUserInRole(UserRoles.US));\r\n\r\n const hasRoles = _.without(roles, UserDataRoles.Dep).length > 0;\r\n this._enableFieldCollectionDesignerMenu((hasRoles && userManager.IsUserInRole(UserRoles.DataRole)) || userManager.IsUserInRole(UserRoles.US));\r\n\r\n this._enableCanvasDesignerMenu(userManager.IsUserInRole(UserRoles.DesignerLevel2)\r\n || userManager.IsUserInRole(UserRoles.DesignerLevel3) || userManager.IsUserInRole(UserRoles.US));\r\n this._enableFunctionDesignerMenu(userManager.IsUserInRole(UserRoles.DesignerLevel3) || userManager.IsUserInRole(UserRoles.US));\r\n\r\n const SBIDesignerString = CookieManager.GetSBIDesigner();\r\n const SBIDesigner = SBIDesignerString ? SBIDesignerString === 'true' || SBIDesignerString === 'True' : false;\r\n this._enableBIDesignerMenu((SBIDesigner && (userManager.IsUserInRole(UserRoles.DesignerLevel2)\r\n || userManager.IsUserInRole(UserRoles.DesignerLevel3))) || userManager.IsUserInRole(UserRoles.DataRole) || userManager.IsUserInRole(UserRoles.US));\r\n\r\n this._enableLookupEditorMenu(userManager.IsUserInRole(UserRoles.SuperUser) || userManager.IsUserInRole(UserRoles.DesignerLevel1) ||\r\n userManager.IsUserInRole(UserRoles.DesignerLevel2) || userManager.IsUserInRole(UserRoles.DesignerLevel3) || userManager.IsUserInRole(UserRoles.US));\r\n this._enableCdToolkitMenu(userManager.IsUserInRole(UserRoles.DesignerLevel1));\r\n\r\n this._enableTranslationEditorMenu(userManager.IsUserInRole(UserRoles.SuperUser) || userManager.IsUserInRole(UserRoles.DesignerLevel1) ||\r\n userManager.IsUserInRole(UserRoles.DesignerLevel2) || userManager.IsUserInRole(UserRoles.DesignerLevel3) || userManager.IsUserInRole(UserRoles.US));\r\n this._enableAdministrationMenu(userManager.IsUserInRole(UserRoles.NetworkManager) && UserManager.Instance.CurrentUser.IsLicenseServer);\r\n\r\n this._enableDesignerMenu(\r\n this._enableDatabaseDesignerMenu() ||\r\n this._enableFormDesignerMenu() ||\r\n this._enableNetworkDesignerMenu() ||\r\n this._enableFieldCollectionDesignerMenu() ||\r\n this._enableCanvasDesignerMenu() ||\r\n this._enableFunctionDesignerMenu() ||\r\n this._enableBIDesignerMenu() ||\r\n this._enableLookupEditorMenu() ||\r\n this._enableTranslationEditorMenu()\r\n );\r\n\r\n this._enableCyberConfigMenu(userManager.IsUserInRole(UserRoles.US));\r\n this._enableDictionaryComparisonMenu(userManager.IsUserInRole(UserRoles.US));\r\n }\r\n\r\n InitMobileLayout(): void {\r\n }\r\n\r\n HidejsPlumbConnections() {\r\n if (jsPlumb) {\r\n _.each(jsPlumb.getConnections(), (connection) => {\r\n jsPlumb.deleteConnection(connection);\r\n });\r\n }\r\n }\r\n\r\n RemoveOverlay() {\r\n var $preloader = $('.preloader');\r\n $preloader.detach();\r\n this.InitProductFruits();\r\n }\r\n\r\n InitProductFruits(){\r\n return;\r\n if(this._isProductfruitsInitalized || !UserManager.Instance.CurrentUser){\r\n return;\r\n }\r\n \r\n productFruits.init('5eZDNfBEDbQCRnbd', 'en', { username: UserManager.Instance.CurrentUser.UserName });\r\n this._isProductfruitsInitalized = true;\r\n }\r\n\r\n HideGuestHomePage() {\r\n $('.page-content').removeClass('guest');\r\n $('.page-footer').removeClass('guest');\r\n\r\n document.getElementById(this._pageBodyContainerId).classList.remove('guest');\r\n this._guestHomePage.Detach();\r\n }\r\n\r\n ShowGuestHomePage() {\r\n $('.page-content').addClass('guest');\r\n $('.page-footer').addClass('guest');\r\n document.getElementById(this._pageBodyContainerId).classList.add('guest');\r\n\r\n this._guestHomePage = new GuestHomePage();\r\n this._guestHomePage.RenderByTargetId(this._pageBodyContainerId);\r\n }\r\n\r\n GetIconTemplateName(): string {\r\n return 'MenuManager/MenuAreas/Templates/IconTemplate';\r\n }\r\n\r\n PushState(\r\n screen: IScreen,\r\n navigationType: NavigationTypes,\r\n additionalOptions: { previousScreen?: boolean; triggeredFromMenu?: boolean; breadcrumbIndex?: number } = {}\r\n ) {\r\n var guid = Guid.NewGuid();\r\n var user = UserManager.Instance.CurrentUser;\r\n var newState: IHistoryState = {\r\n Guid: guid,\r\n UserId: user.Id,\r\n SecurityRolesKey: user.SecurityRolesKey,\r\n DbId: user.DbId,\r\n ScreenId: screen ? screen.GetId() : null,\r\n EntityId: screen ? screen.GetEntityId() : null,\r\n RecordId: screen ? screen.GetRecordId() : null,\r\n NavigationType: navigationType\r\n }\r\n\r\n if (navigationType === NavigationTypes.DesignScreen) {\r\n if (this._currentSate) {\r\n if (this._currentSate.RecordId === newState.RecordId && this._currentSate.ScreenId === newState.ScreenId) {\r\n return;\r\n }\r\n }\r\n } else {\r\n if (this._currentSate) {\r\n if (this._currentSate.NavigationType === newState.NavigationType) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (screen) {\r\n PubSub.publish(BREADCRUMBS_NEW_VALUE_TOPIC, {\r\n Screen: screen,\r\n LookForPreviousScreen: additionalOptions.previousScreen,\r\n CleanRecords: additionalOptions.triggeredFromMenu,\r\n BreadcrumbIndex: additionalOptions.breadcrumbIndex\r\n });\r\n this.GetFieldRecord(screen.GetRecordId(), screen.GetEntityId());\r\n } else if (navigationType) {\r\n PubSub.publish(BREADCRUMBS_NEW_VALUE_TOPIC, {\r\n CleanRecords: true,\r\n BreadcrumbIndex: additionalOptions.breadcrumbIndex,\r\n DailyStuff: navigationType === NavigationTypes.Portlets\r\n });\r\n this.GetFieldRecord(null);\r\n }\r\n\r\n var screenState = screen ? screen.GetState() : {Guid: null, ActiveControlId: null};\r\n screenState.Guid = guid;\r\n\r\n if (this._currentSate && this._currentScreen) {\r\n var screenState = this._currentScreen.GetState();\r\n if (screenState.ActiveControlId) {\r\n var state = _.find(this._screenStates, item => {\r\n return item.Guid === this._currentSate.Guid\r\n });\r\n var stateIndex = this._screenStates.indexOf(state);\r\n if (state) {\r\n state = this._currentScreen.GetState();\r\n state.Guid = this._currentSate.Guid;\r\n this._screenStates.splice(stateIndex, 1, state);\r\n } else {\r\n var state = this._currentScreen.GetState();\r\n state.Guid = this._currentSate.Guid;\r\n this._screenStates.push(state);\r\n }\r\n }\r\n }\r\n\r\n this._popState = true;\r\n this._history.pushState(newState, $(document).find(\"title\").text(), null);\r\n this._currentScreen = screen;\r\n this.ChangeTableTypeFlowFolder();\r\n this._currentSate = newState;\r\n }\r\n\r\n StateIsValid(state: IHistoryState) {\r\n const user = UserManager.Instance.CurrentUser;\r\n return user.Id === state.UserId && state.SecurityRolesKey === user.SecurityRolesKey && state.DbId === user.DbId;\r\n }\r\n}","import { P } from 'Core/Common/Promise';\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nexport class DictionaryComparisonStore {\r\n\r\n static GetEnvironments(): P.Promise<Array<string>> {\r\n\t\tlet deferredResult = P.defer<Array<string>>();\r\n\r\n\t\tRequest\r\n\t\t.For('api/DictionaryApi/GetEnvironments')\r\n\t\t.Get()\r\n .fail(error=>deferredResult.reject({ message: error.message}))\r\n\t\t.then(data => deferredResult.resolve(data));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDatabases(environment: string): P.Promise<Array<string>> {\r\n\t\tlet deferredResult = P.defer<Array<string>>();\r\n\r\n\t\tRequest\r\n\t\t.For('api/DictionaryApi/GetDatabases')\r\n\t\t.Get({ environment: environment })\r\n .fail(error=>deferredResult.reject({ message: error.message}))\r\n\t\t.then(data => deferredResult.resolve(data));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\tstatic Compare(environment: string, database: string): P.Promise<string> {\r\n\t\tlet deferredResult = P.defer<string>();\r\n\r\n\t\tRequest\r\n\t\t.For('api/DictionaryApi/Compare')\r\n\t\t.Post({ environment: environment, database: database }, 'text')\r\n .fail(error=>deferredResult.reject({ message: error.message}))\r\n\t\t.then(data => {\r\n\t\t\tdeferredResult.resolve(data)\r\n\t\t});\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import * as _ from 'underscore';\r\n\r\nimport { DictionaryComparisonStore } from \"Pages/DictionaryComparison/DictionaryComparisonStore\";\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nimport Template from \"Pages/DictionaryComparison/DictionaryComparisonTemplate.html\";\r\nko.templates[\"Pages/DictionaryComparison/DictionaryComparisonTemplate\"] = Template;\r\n\r\nexport class DictionaryComparisonPage {\r\n\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _environments: KnockoutObservableArray<string>;\r\n private _databases: KnockoutObservableArray<string>;\r\n private _selectedEnvironment: KnockoutObservable<string>;\r\n private _selectedDatabase: KnockoutObservable<string>;\r\n private _isEnableToCompare: KnockoutComputed<boolean>;\r\n private _comparisonSuccessMessage: KnockoutObservable<string>;\r\n\r\n constructor(){\r\n this._isReady = ko.observable(true);\r\n this._environments = ko.observableArray([]);\r\n this._databases = ko.observableArray([]);\r\n this._selectedEnvironment = ko.observable(null);\r\n this._selectedDatabase = ko.observable(null);\r\n this._comparisonSuccessMessage = ko.observable(null);\r\n\r\n this._selectedEnvironment.subscribe((newValue)=>{\r\n if(newValue){\r\n BlockUI.Block();\r\n DictionaryComparisonStore.GetDatabases(newValue)\r\n .always(()=>BlockUI.Unblock())\r\n .then(databases=>{ \r\n this._databases(databases); \r\n });\r\n }\r\n });\r\n\r\n this._isEnableToCompare = ko.computed(()=>{\r\n return !!this._selectedDatabase() && !!this._selectedEnvironment()\r\n })\r\n\r\n this.Init();\r\n }\r\n\r\n CompareDatabases(){\r\n this._comparisonSuccessMessage(null);\r\n BlockUI.Block();\r\n DictionaryComparisonStore.Compare(this._selectedEnvironment(), this._selectedDatabase())\r\n .then((comparisonName)=>{\r\n this._comparisonSuccessMessage(comparisonName)\r\n }).always(()=>BlockUI.Unblock());\r\n }\r\n\r\n Init(){\r\n BlockUI.Block();\r\n DictionaryComparisonStore.GetEnvironments()\r\n .always(()=>BlockUI.Unblock())\r\n .then(environments=> {\r\n this._selectedEnvironment(_.find(environments, (environment)=>environment == window.location.host));\r\n this._environments(environments)\r\n });\r\n }\r\n\r\n\r\n Render(target): void {\r\n\t\tko.cleanNode(document.getElementById(target));\r\n\t\tko.applyBindings(this, document.getElementById(target));\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Pages/DictionaryComparison/DictionaryComparisonTemplate\";\r\n\t}\r\n\r\n AfterRender(){}\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <fieldset> <legend class=\\\"title entity-wrapper\\\"> <span class=\\\"entity-name\\\">Dictionary Comparison</span> <span class=\\\"entity-icon\\\"> <span class=\\\"fa fa-sitemap\\\" aria-hidden=\\\"true\\\"></span> </span> </legend> </fieldset> <div class=\\\"dictionary-comparison-container\\\"> <!-- ko if: $data._comparisonSuccessMessage --> <h3>Comparison <b><!-- ko text: $data._comparisonSuccessMessage --><!-- /ko --></b> completed</h3> <!-- /ko --> <div class=\\\"control-group form-inline environment-dropdown\\\"> <label>Environment:</label> <select data-bind=\\\"options: $data._environments, value: $data._selectedEnvironment\\\" class=\\\"form-control\\\"><option value=\\\"\\\">Select...</option></select> </div> <div class=\\\"control-group form-inline database-dropdown\\\"> <label>Database:</label> <select data-bind=\\\"options: $data._databases, value: $data._selectedDatabase\\\" class=\\\"form-control\\\"><option value=\\\"\\\">Select...</option></select> </div> <button data-bind=\\\"click: $data.CompareDatabases, enable: $data._isEnableToCompare\\\" class=\\\"btn green compare-btn\\\">Compare</button> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: IsAuthenticated --> <!-- ko with: _menuAreas --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko if: _enableDesignerMenu --> <li data-bind=\\\"css: { active: _isDesignersAreaActive, open: _isDesignersAreaActive }\\\" class=\\\"nav-item\\\"> <a class=\\\"nav-link nav-toggle custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\"> <i class=\\\"icon-home custom-color-option\\\"></i> <span class=\\\"title custom-color-option\\\"> <!-- ko text: _labels.DESIGNERS --><!-- /ko --> </span> <span class=\\\"arrow\\\"></span> </a> <ul class=\\\"sub-menu\\\"> <!-- ko if: _enableDatabaseDesignerMenu --> <li data-bind=\\\"click: ShowDatabaseDesigner, css: { active: _activeDesignerMenuItem() === 'DatabaseDesginer' }\\\" class=\\\"nav-item\\\"> <a class=\\\"nav-link custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa fa-database custom-color-option\\\"></i> <span class=\\\"title custom-color-option\\\"><!-- ko text: _labels.DATABASE_DESIGNER --><!-- /ko --></span> </a> </li> <!-- /ko --> <!-- ko if: _enableFormDesignerMenu --> <li data-bind=\\\"click: ShowFormDesigner, css: { active: _activeDesignerMenuItem() === 'FormDesigner' }\\\" class=\\\"nav-item\\\"> <a class=\\\"nav-link custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa fa-address-card custom-color-option\\\"></i> <span class=\\\"title custom-color-option\\\"><!-- ko text: _labels.FORM_DESIGNER --><!-- /ko --></span> </a> </li> <!-- /ko --> <!-- ko if: _enableNetworkDesignerMenu --> <li data-bind=\\\"click: ShowNetworkDesigner, css: { active: _activeDesignerMenuItem() === 'NetworkDesigner' }\\\" class=\\\"nav-item\\\"> <a class=\\\"nav-link custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa fa-wifi custom-color-option\\\"></i> <span class=\\\"title custom-color-option\\\"><!-- ko text: _labels.NETWORK_DESIGNER --><!-- /ko --></span> </a> </li> <!-- /ko --> <!-- ko if: _enableFieldCollectionDesignerMenu --> <li data-bind=\\\"click: ShowFieldCollection.bind($data), css: { active: _activeDesignerMenuItem() === 'FieldCollection' }\\\" class=\\\"nav-item\\\"> <a class=\\\"nav-link custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa fa-check-square-o custom-color-option\\\"></i> <span class=\\\"title custom-color-option\\\"><!-- ko text: _labels.FIELD_COLLECTION_DESIGNER --><!-- /ko --></span> </a> </li> <!-- /ko --> <!-- ko if: _enableCanvasDesignerMenu --> <li data-bind=\\\"click: ShowCanvasDesigner, css: { active: _activeDesignerMenuItem() === 'CanvasDesigner' }\\\" class=\\\"nav-item\\\"> <a class=\\\"nav-link custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa fa-exchange custom-color-option\\\"></i> <span class=\\\"title custom-color-option\\\"><!-- ko text: _labels.CANVAS_DESIGNER --><!-- /ko --></span> </a> </li> <!-- /ko --> <!-- ko if: _enableFunctionDesignerMenu --> <li data-bind=\\\"click: ShowFunctionDesigner, css: { active: _activeDesignerMenuItem() === 'FunctionDesigner' }\\\" class=\\\"nav-item\\\"> <a class=\\\"nav-link custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa fa-window-restore custom-color-option\\\"></i> <span class=\\\"title custom-color-option\\\"><!-- ko text: _labels.FUNCTION_DESIGNER --><!-- /ko --></span> </a> </li> <!-- /ko --> <!-- ko if: _enableBIDesignerMenu --> <li data-bind=\\\"click: ShowBIDesigner.bind($data), css: { active: _activeDesignerMenuItem() === 'BIDesigner' }\\\" class=\\\"nav-item\\\"> <a class=\\\"nav-link custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa fa-bar-chart custom-color-option\\\"></i> <span class=\\\"title custom-color-option\\\">SBI Designer</span> </a> </li> <!-- /ko --> <!-- ko if: _enableLookupEditorMenu --> <li data-bind=\\\"click: ShowLookupEditor, css: { active: _activeDesignerMenuItem() === 'LookupEditor' }\\\" class=\\\"nav-item\\\"> <a class=\\\"nav-link custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa fa-table custom-color-option\\\"></i> <span class=\\\"title custom-color-option\\\"><!-- ko text: _labels.LOOKUP_EDITOR --><!-- /ko --></span> <span class=\\\"selected\\\"></span> </a> </li> <!-- /ko --> <!-- ko if: _enableTranslationEditorMenu --> <li data-bind=\\\"click: ShowTranslationEditor.bind($data), css: { active: _activeDesignerMenuItem() === 'TranslationEditor' }\\\" class=\\\"nav-item\\\"> <a class=\\\"nav-link custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa fa-language custom-color-option\\\"></i> <span class=\\\"title custom-color-option\\\"><!-- ko text: _labels.TRANSLATION_EDITOR --><!-- /ko --></span> </a> </li> <!-- /ko --> </ul> </li> <!-- /ko --> <!-- ko if: _enableSystemMenu --> <li class=\\\"heading one-lvl\\\"> <h3 class=\\\"uppercase custom-color-option\\\"><!-- ko text: _labels.SYSTEM --><!-- /ko --></h3> </li> <!--ko if: _enableCyberConfigMenu--> <li data-bind=\\\"click: ShowCyberConfigManager.bind($data), css: { active: _activeDesignerMenuItem() === 'CyberConfig' }\\\" class=\\\"menuItem nav-item one-lvl\\\" data-controller=\\\"CyberConfig\\\" data-action=\\\"CyberConfigManager\\\"> <a class=\\\"nav-link custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"icon-bag custom-color-option\\\"></i> <span data-bind=\\\"text: _labels.ENVIRONMENT_MANAGER\\\" class=\\\"title custom-color-option\\\"></span> <span class=\\\"hidden-arrow\\\"></span> </a> </li> <!--/ko--> <!--ko if: _enableDictionaryComparisonMenu--> <li data-bind=\\\"click: ShowDictionaryComparison.bind($data), css: { active: _activeDesignerMenuItem() === 'DictionaryComparison' }\\\" class=\\\"menuItem nav-item one-lvl\\\"> <a class=\\\"nav-link custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa fa-sitemap custom-color-option\\\"></i> <span data-bind=\\\"text: 'Dictionary Comparison'\\\" class=\\\"title custom-color-option\\\"></span> <span class=\\\"hidden-arrow\\\"></span> </a> </li> <!--/ko--> <!--ko if: _enableAdministrationMenu--> <li data-bind=\\\"click: ShowAdministration.bind($data), css: { active: _activeDesignerMenuItem() === 'Administration' }\\\" class=\\\"menuItem nav-item one-lvl\\\" data-controller=\\\"CyberConfig\\\" data-action=\\\"CyberConfigManager\\\"> <a class=\\\"nav-link custom-color-option\\\" tabindex=\\\"-1\\\" href=\\\"#\\\"> <i class=\\\"fa fa-cog custom-color-option\\\"></i> <span data-bind=\\\"text: 'Administration'\\\" class=\\\"title custom-color-option\\\"></span> <span class=\\\"hidden-arrow\\\"></span> </a> </li> <!--/ko--> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","export var PUB_SUB_EVENTS = {\r\n\tGO_TO_RECORD_SCREEN: 'GO_TO_RECORD_SCREEN',\r\n\tGO_TO_EDIT_SCREEN: 'GO_TO_EDIT_SCREEN',\r\n\tGO_TO_CONSULT_SCREEN: 'GO_TO_CONSULT_SCREEN',\r\n\tRELOAD_SCREEN: 'RELOAD_SCREEN',\r\n\tSCREEN_OPENED: 'SCREEN_OPENED',\r\n\tSCREEN_CLOSED: 'SCREEN_CLOSED',\r\n\tCHANGE_SCREEN: 'CHANGE_SCREEN',\r\n\tREFRESH_MAIN_MENU: 'REFRESH_MAIN_MENU',\r\n\tGO_TO_SCREEN_BY_TYPE: 'GO_TO_SCREEN_BY_TYPE',\r\n\tREFRESH_SECURITY_PROFILE: 'REFRESH_SECURITY_PROFILE',\r\n\tCLOSE_POPUPS: 'CLOSE_POPUPS',\r\n\tEXECUTE_SCRIPT: 'EXECUTE_SCRIPT'\r\n};","export const EVENTS = {\r\n\tSIGN_IN: 'SIGN_IN',\r\n\tSIGN_OUT: 'SIGN_OUT'\r\n}","export const EVENTS = {\r\n\tPROFILE_CARD_IMAGE_CLICKED: 'PROFILE_CARD_IMAGE_CLICKED'\r\n}","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nexport class ThemeBuilderStore {\r\n static SetUISettings(uiSettingsRequestModel: any) {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ThemeApi/SetUISettings',\r\n type: 'POST'\r\n },\r\n params: uiSettingsRequestModel\r\n })\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error saving theme changes')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\n\r\nimport {GenericDeserialize} from 'libs/cerialize'\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {EVENTS, UISettings} from 'Core/Common/Themes/UISettings';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\n\r\nimport {Demo} from \"metronicDemo\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {UserManager, UserRoles} from 'User/UserManager';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\n\r\nimport {HexColorModel} from \"Core/Components/ColorSelector/ColorModels/Hex/HexColorModel\";\r\nimport {ColorModel} from \"Core/Components/ColorSelector/ColorModels/ColorModel\";\r\n\r\nimport {ThemeBuilderStore} from './Stores/ThemeBuilderStore';\r\n\r\nimport ThemeBuilderPage from 'Core/ProfilePage/ThemeBuilder/Templates/ThemeBuilder.html';\r\nimport {CustomThemeDescriptor} from \"../../Common/Themes/CustomThemeDescriptor\";\r\nimport {CustomThemeSetting} from \"../../Common/Themes/CustomThemeSetting\";\r\n\r\nko.templates['Core/ProfilePage/ThemeBuilder/Templates/ThemeBuilder'] = ThemeBuilderPage;\r\n\r\nexport interface IColorSelectorInfo {\r\n Id: string;\r\n Selector: any;\r\n Rule: any;\r\n Value: string;\r\n Transparent: string;\r\n ColorSelector: KnockoutObservable<ColorModel>;\r\n}\r\n\r\nconst COLOR_SELECTOR_ID = {\r\n RootBackground: 'root_background',\r\n BodyHeaderBackground: 'body_header_background',\r\n}\r\n\r\nexport class ThemeBuilder {\r\n private _uiSettings: UISettings;\r\n private _modal: any;\r\n private value: KnockoutObservable<string>;\r\n private _$themes: any;\r\n private _isInitialized: boolean;\r\n private _isActive: KnockoutObservable<boolean>;\r\n\r\n private _$themesContainer: any;\r\n private _$saveProfileBtn: any;\r\n private _isColorSelectorsInit: boolean;\r\n private _themeContent: any;\r\n private _colorSelectors: any;\r\n private _defaultThemeName: string;\r\n private _defaultThemeColor: string;\r\n private _defaultThemes: any;\r\n private _previewTemplate: any;\r\n private _colorThemes: any;\r\n private _layoutModeDropDown: any;\r\n private _sidebarBorders: any;\r\n private _sidebarPos: any;\r\n private _sidebarStyle: any;\r\n private _sidebarOption: any;\r\n private _selectedCustomThemeSettings: any;\r\n private _haveChanges: KnockoutObservable<boolean>;\r\n private _labels = LABELS;\r\n\r\n private _colorPickersObject: { [Id: string]: IColorSelectorInfo };\r\n private _userIsAllowedToChange: boolean;\r\n private _toggleThemeSwitcher: KnockoutObservable<boolean>\r\n\r\n _el: HTMLElement;\r\n\r\n constructor() {\r\n this._$themes = null;\r\n this._modal = new Modal();\r\n this._$themesContainer = null;\r\n this._$saveProfileBtn = null;\r\n this._themeContent = null;\r\n this._isColorSelectorsInit = false;\r\n this._colorPickersObject = {};\r\n this._isInitialized = false;\r\n this._colorSelectors = null;\r\n this._previewTemplate = null;\r\n this._colorThemes = null;\r\n this._layoutModeDropDown = null;\r\n this._sidebarBorders = null;\r\n this._defaultThemes = [];\r\n this._defaultThemeName = '';\r\n this._defaultThemeColor = '';\r\n this._selectedCustomThemeSettings = [];\r\n this._el = null;\r\n this._isActive = ko.observable(false);\r\n this._haveChanges = ko.observable(false);\r\n this._userIsAllowedToChange = !GlobalManager.Instance.GetGlobalDescriptor(GLOBALS.THEME).LockToDefault || UserManager.Instance.IsUserInRole(UserRoles.SuperUser);\r\n\r\n this._uiSettings = Demo.GetUISettings();\r\n\r\n this._toggleThemeSwitcher = ko.observable(null);\r\n\r\n this.Init();\r\n\r\n }\r\n\r\n Init() {\r\n\r\n this.value = ko.observable('');\r\n this.InitColorSelectors();\r\n\r\n if (this._userIsAllowedToChange) {\r\n this._isActive.subscribe(isActive => {\r\n this._toggleThemeSwitcher(isActive);\r\n const changeSelectorsEnabling = (selector: IColorSelectorInfo) => selector.ColorSelector().Enable(isActive);\r\n\r\n Object.keys(this._colorPickersObject).forEach(colorSelector => {\r\n changeSelectorsEnabling(this._colorPickersObject[colorSelector]);\r\n });\r\n });\r\n }\r\n }\r\n\r\n CacheElements() {\r\n this._colorThemes = $(this._themeContent).find('#color-themes');\r\n this._layoutModeDropDown = $(this._themeContent).find('.layout-style-option');\r\n this._sidebarBorders = $(this._themeContent).find('.borders-option');\r\n this._sidebarPos = $(this._themeContent).find('.sidebar-pos-option');\r\n this._sidebarStyle = $(this._themeContent).find('.sidebar-style-option');\r\n this._sidebarOption = $(this._themeContent).find('.sidebar-option');\r\n\r\n this._colorSelectors = $(this._themeContent).find('.minicolors-input');\r\n this._$themes = $(this._themeContent).find('#custom-color-themes li');\r\n this._$themesContainer = $(this._themeContent).find('#custom-color-themes');\r\n this._$saveProfileBtn = $(this._themeContent).find(\"#profileSaveBtn\");\r\n this._previewTemplate = $(this._themeContent).find(\".theme-builder\");\r\n }\r\n\r\n BindEvents() {\r\n this._uiSettings.Off(EVENTS.SETTINGS_CHANGED);\r\n this._uiSettings.On(EVENTS.SETTINGS_CHANGED, this, () => {\r\n this._haveChanges(true);\r\n });\r\n }\r\n\r\n SetThemeSquares() {\r\n this._defaultThemes = [\r\n {Custom1: '#ffffff'},\r\n {Custom2: '#ffffff'},\r\n {Custom3: '#ffffff'},\r\n {Custom4: '#ffffff'},\r\n {Custom5: '#ffffff'}\r\n ];\r\n }\r\n\r\n ApplyCurrentTheme() {\r\n this.SetThemeSquares();\r\n\r\n const customThemeName = this._uiSettings.Settings.CustomThemeName;\r\n if (customThemeName) {\r\n let settingsList: Array<CustomThemeSetting> = [];\r\n const customThemeSettings: CustomThemeDescriptor = this._uiSettings.GetCustomTheme(customThemeName);\r\n\r\n if (customThemeSettings) {\r\n settingsList = customThemeSettings.Settings;\r\n this._selectedCustomThemeSettings = settingsList;\r\n _.each(settingsList,\r\n (setting: CustomThemeSetting) => {\r\n let colorValue = setting.Val;\r\n if (setting.Transparent) {\r\n colorValue = this.RgbToHex(setting.Val);\r\n }\r\n\r\n if (colorValue) {\r\n this._colorPickersObject[setting.Id].Value = colorValue;\r\n this._colorPickersObject[setting.Id].ColorSelector().SetColor(colorValue);\r\n }\r\n }\r\n );\r\n } else {\r\n _.each(this._colorPickersObject, picker => {\r\n picker.ColorSelector().SetColor('');\r\n });\r\n }\r\n\r\n if (customThemeName != 'Custom0') {\r\n this._isActive(true);\r\n }\r\n }\r\n }\r\n\r\n RgbToHex(rgb) {\r\n if (!rgb) {\r\n return null;\r\n }\r\n rgb = rgb.match(/^rgba?[\\s+]?\\([\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?,[\\s+]?(\\d+)[\\s+]?/i);\r\n return (rgb && rgb.length === 4) ? \"#\" +\r\n (\"0\" + parseInt(rgb[1], 10).toString(16)).slice(-2) +\r\n (\"0\" + parseInt(rgb[2], 10).toString(16)).slice(-2) +\r\n (\"0\" + parseInt(rgb[3], 10).toString(16)).slice(-2) : '';\r\n }\r\n\r\n Discard() {\r\n Demo.SetUISettings(this.GetUISettings());\r\n this._uiSettings = Demo.GetUISettings();\r\n\r\n this.InitDropdowns();\r\n this.BindEvents();\r\n\r\n this._haveChanges(false);\r\n }\r\n\r\n InitColorSelectors() {\r\n let self = this;\r\n\r\n let pickerApplying = function (data, eventargs, id, isHex?) {\r\n let colorValue = '';\r\n let hexValue = '';\r\n let settingsList = [];\r\n\r\n if (!self._haveChanges()) {\r\n\r\n settingsList = self._selectedCustomThemeSettings;\r\n _.each(settingsList,\r\n setting => {\r\n let test = setting.Selector;\r\n if (setting && setting.Selector && setting.Rule) {\r\n if (typeof (setting.Selector) === 'string') {\r\n $(setting.Selector).css(setting.Rule, setting.Val);\r\n } else if (setting.Selector instanceof Array) {\r\n const zipped = _.zip(setting.Selector, setting.Rule, setting.Val);\r\n _.each(zipped, pair => {\r\n if (pair[0] && pair[1]) {\r\n $(pair[0]).css(pair[1], pair[2]);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n );\r\n }\r\n\r\n colorValue = eventargs.data.Color || '';\r\n data.Value = eventargs.data.Color || '';\r\n\r\n var zippedStyles = _.zip(data.Selector, data.Rule);\r\n\r\n _.each(zippedStyles, (pair: any) => {\r\n if (pair[0] && pair[1]) {\r\n $(pair[0]).css(pair[1], (hexValue ? hexValue : colorValue) || '');\r\n }\r\n });\r\n\r\n\r\n let name = '';\r\n _.each(self._$themes, theme => {\r\n if ($(theme).hasClass('active')) {\r\n name = $(theme).attr('title')\r\n }\r\n })\r\n var arr = self.BuildCustomThemeArray();\r\n\r\n self._uiSettings.SetCustomTheme(name, arr)\r\n self._haveChanges(true);\r\n }\r\n\r\n\r\n let bodyHeader = {\r\n Id: COLOR_SELECTOR_ID.BodyHeaderBackground,\r\n Rule: ['background-color'],\r\n Value: '',\r\n Transparent: '',\r\n Selector: ['.page-header.navbar'],\r\n ColorSelector: ko.observable(new HexColorModel({\r\n Label: LABELS.HEADER_BACKGROUND_COLOR,\r\n Disabled: !this._isActive()\r\n }))\r\n };\r\n this._colorPickersObject[bodyHeader.Id] = bodyHeader;\r\n bodyHeader.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n pickerApplying(bodyHeader, eventArgs, bodyHeader.Id);\r\n });\r\n bodyHeader.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n pickerApplying(bodyHeader, eventArgs, bodyHeader.Id);\r\n });\r\n\r\n let themeSquare = {\r\n Id: COLOR_SELECTOR_ID.RootBackground,\r\n Rule: ['--root-background-color'],\r\n Value: '',\r\n Transparent: '',\r\n Selector: ['body'],\r\n ColorSelector: ko.observable(new HexColorModel({\r\n Label: 'Background Color',\r\n Disabled: !this._isActive()\r\n }))\r\n };\r\n // let themeSquare = {\r\n // Id: 'theme_sqare',\r\n // Rule: ['background-color', '--root-background-color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['#custom-color-themes .active','body'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.BACKGROUND_COLOR_FOR_THEME_SQUARE,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n this._colorPickersObject[themeSquare.Id] = themeSquare;\r\n themeSquare.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n\r\n let defaultThemeName = $('#custom-color-themes li.active').attr('title');\r\n let defaultThemeColor = eventArgs.data.ColorValue;\r\n this._defaultThemes[defaultThemeName] = eventArgs.data.ColorValue;\r\n\r\n pickerApplying(themeSquare, eventArgs, themeSquare.Id);\r\n });\r\n themeSquare.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n\r\n let defaultThemeName = $('#custom-color-themes li.active').attr('title');\r\n let defaultThemeColor = eventArgs.data.ColorValue;\r\n this._defaultThemes[defaultThemeName] = eventArgs.data.ColorValue;\r\n\r\n pickerApplying(themeSquare, eventArgs, themeSquare.Id);\r\n });\r\n\r\n\r\n // let sidebarBackground: IColorSelectorInfo = {\r\n // Id: 'sidebar_background',\r\n // Rule: ['background-color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['body, .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover, .page-sidebar, .page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li .sub-menu > li.active > a, .page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li .sub-menu, .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu.page-sidebar-menu-light > li.active > a, .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu.page-sidebar-menu-light > li.active.open > a, .page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li.active > a, .page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li.active.open > a'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.BACKGROUND_COLOR_FOR_SIDEBAR,\r\n // InitialColor: null,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // // this._colorPickersObject[sidebarBackground.Id] = sidebarBackground;\r\n // this._colorPickersObject[sidebarBackground.Id] = sidebarBackground;\r\n // sidebarBackground.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(sidebarBackground, eventArgs, sidebarBackground.Id);\r\n // });\r\n // sidebarBackground.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(sidebarBackground, eventArgs, sidebarBackground.Id);\r\n // });\r\n\r\n // let sidebarLinkBackgroundHovered = {\r\n // Id: 'sidebar_link_hovered',\r\n // Rule: ['background-color', 'border-left-color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li:hover > a, .page-sidebar .page-sidebar-menu:not(.page-sidebar-menu-light) > li:hover > a, .page-sidebar .page-sidebar-menu:not(.page-sidebar-menu-light) > li.active > a:hover, .page-sidebar .page-sidebar-menu:not(.page-sidebar-menu-light) > li.active.open > a:hover', '.page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li.active > a:hover'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.BACKGROUND_COLOR_FOR_HOVERED_MENU_ITEM,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[sidebarLinkBackgroundHovered.Id] = sidebarLinkBackgroundHovered;\r\n // sidebarLinkBackgroundHovered.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(sidebarLinkBackgroundHovered, eventArgs, sidebarLinkBackgroundHovered.Id);\r\n // });\r\n // sidebarLinkBackgroundHovered.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(sidebarLinkBackgroundHovered, eventArgs, sidebarLinkBackgroundHovered.Id);\r\n // });\r\n\r\n // let sidebarSecondLinkBackgroundHovered = {\r\n // Id: 'sidebar_secondlink_hovered',\r\n // Rule: ['background-color', 'color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.page-sidebar .page-sidebar-menu:not(.page-sidebar-menu-light) > li .sub-menu > li:hover > a', '.page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li .sub-menu > li:hover > a'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.BACKGROUND_COLOR_FOR_HOVERED_MENU_ITEM_SECOND_LEVEL_ITEM,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[sidebarSecondLinkBackgroundHovered.Id] = sidebarSecondLinkBackgroundHovered;\r\n // sidebarSecondLinkBackgroundHovered.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(sidebarSecondLinkBackgroundHovered, eventArgs, sidebarSecondLinkBackgroundHovered.Id);\r\n // });\r\n // sidebarSecondLinkBackgroundHovered.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(sidebarSecondLinkBackgroundHovered, eventArgs, sidebarSecondLinkBackgroundHovered.Id);\r\n // });\r\n\r\n // let sidebarTextcolor = {\r\n // Id: 'sidebar_textcolor',\r\n // Rule: ['color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu > li > a, .page-sidebar .page-sidebar-menu > li > a, .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu > li > a > i[class^=\"icon-\"], .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu > li > a > i[class*=\"icon-\"], .page-sidebar .page-sidebar-menu > li > a > i[class^=\"icon-\"], .page-sidebar .page-sidebar-menu > li > a > i[class*=\"icon-\"], .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu > li > a > i, .page-sidebar .page-sidebar-menu > li > a > i'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.TEXT_COLOR_FOR_SIDEBAR_MENU,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[sidebarTextcolor.Id] = sidebarTextcolor;\r\n // sidebarTextcolor.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(sidebarTextcolor, eventArgs, sidebarTextcolor.Id);\r\n // });\r\n // sidebarTextcolor.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(sidebarTextcolor, eventArgs, sidebarTextcolor.Id);\r\n // });\r\n\r\n // let sidebarBorders = {\r\n // Id: 'sidebar_borders',\r\n // Rule: ['border-top-color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu > li > a, .page-sidebar .page-sidebar-menu > li > a, .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu > li.active.open + li > a, .page-sidebar .page-sidebar-menu > li.active.open + li > a'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.COLOR_FOR_BORDERS_BETWEEN_MENU_LINKS,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[sidebarBorders.Id] = sidebarBorders;\r\n // sidebarBorders.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(sidebarBorders, eventArgs, sidebarBorders.Id);\r\n // });\r\n // sidebarBorders.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(sidebarBorders, eventArgs, sidebarBorders.Id);\r\n // });\r\n\r\n // let sidebarActiveLink = {\r\n // Id: 'sidebar_activelink',\r\n // Rule: ['background-color', 'border-left-color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu:not(.page-sidebar-menu-light) > li.active > a, .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu:not(.page-sidebar-menu-light) > li.active.open > a, .page-sidebar .page-sidebar-menu:not(.page-sidebar-menu-light) > li.active > a, .page-sidebar .page-sidebar-menu:not(.page-sidebar-menu-light) > li.active.open > a, .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu:not(.page-sidebar-menu-light) > li:hover > a, .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu:not(.page-sidebar-menu-light) > li.open > a, .page-sidebar .page-sidebar-menu:not(.page-sidebar-menu-light) > li:hover > a, .page-sidebar .page-sidebar-menu:not(.page-sidebar-menu-light) > li.open > a', '.page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu.page-sidebar-menu-light > li.active > a, .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu.page-sidebar-menu-light > li.active.open > a, .page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li.active > a, .page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li.active.open > a, .page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li.active > a, .page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li.active.open > a, page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li.active > a:hover, .page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li.active.open > a:hover'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.ACTIVE_LINK_COLOR,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[sidebarActiveLink.Id] = sidebarActiveLink;\r\n // sidebarActiveLink.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(sidebarActiveLink, eventArgs, sidebarActiveLink.Id);\r\n // });\r\n // sidebarActiveLink.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(sidebarActiveLink, eventArgs, sidebarActiveLink.Id);\r\n // });\r\n\r\n // let sidebarSecondLinkBg = {\r\n // Id: 'sidebar_secondlink',\r\n // Rule: ['background-color', 'border-left-color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu .sub-menu > li:hover > a, .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu .sub-menu > li.open > a, .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu .sub-menu > li.active > a, .page-sidebar .page-sidebar-menu .sub-menu > li:hover > a, .page-sidebar .page-sidebar-menu .sub-menu > li.open > a, .page-sidebar .page-sidebar-menu .sub-menu > li.active > a', '.page-sidebar .page-sidebar-menu.page-sidebar-menu-light > li .sub-menu > li.active > a, .page-sidebar-closed.page-sidebar-fixed .page-sidebar:hover .page-sidebar-menu.page-sidebar-menu-light .sub-menu > li > a'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.MENU_2_LEVEL_ACTIVE_LINK_COLOR,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[sidebarSecondLinkBg.Id] = sidebarSecondLinkBg;\r\n // sidebarSecondLinkBg.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(sidebarSecondLinkBg, eventArgs, sidebarSecondLinkBg.Id);\r\n // });\r\n // sidebarSecondLinkBg.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(sidebarSecondLinkBg, eventArgs, sidebarSecondLinkBg.Id);\r\n // });\r\n\r\n // let controlsBg = {\r\n // Id: 'controls_bg',\r\n // Rule: ['background-color'],\r\n // Value: '',\r\n // Transparent: '0.2',\r\n // Selector: [`.consult-screen .mainSubForm .form-control,\r\n\t\t// \t\t\t\t.consult-screen .group-elements input,\r\n\t\t// \t\t\t\t.form-standart-control input,\r\n\t\t// \t\t\t\t.form-standart-control select,\r\n\t\t// \t\t\t\t.form-standart-control .textarea-control,\r\n\t\t// \t\t\t\t.form-standart-control textarea,\r\n\t\t// \t\t\t\t.form-standart-control .dropdown-wraper .form-control .items,\r\n\t\t// \t\t\t\t.form-standart-control .dropdown-wraper .form-control .items .item::before,\r\n\t\t// \t\t\t\t.FormDesignerView.form-standart-control .image-background,\r\n\t\t// \t\t\t\t.form-designer .form-standard-control .form-control[readonly]`],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.CONTROLS_BACKGROUND_COLOR,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[controlsBg.Id] = controlsBg;\r\n // controlsBg.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // var isHex = true;\r\n // pickerApplying(controlsBg, eventArgs, controlsBg.Id, isHex);\r\n // });\r\n // controlsBg.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // var isHex = true;\r\n // pickerApplying(controlsBg, eventArgs, controlsBg.Id, isHex);\r\n // });\r\n\r\n // let controlsBorder = {\r\n // Id: 'controls_border',\r\n // Rule: ['border-color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.form-standart-control, .jBox-container .edit-screen .group-control.consult-subform-control, .image-control-result img, .ConsultScreenView.EditScreenView .group-control, .form-designer .form-standard-control fieldset, .EditScreenView.linklist-control'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.CONTROLS_BACKGROUND_BORDER_COLOR,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[controlsBorder.Id] = controlsBorder;\r\n // controlsBorder.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(controlsBorder, eventArgs, controlsBorder.Id);\r\n // });\r\n // controlsBorder.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(controlsBorder, eventArgs, controlsBorder.Id);\r\n // });\r\n\r\n // let controlsColor = {\r\n // Id: 'controls_color',\r\n // Rule: ['color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.label-input label, .label-input input, .edit-screen-block label, .select-wrapper, .select-wrapper select, .form-control, .form-standart-control .textarea-control, .textarea-control:empty:not(:focus):before, .form-designer .form-standard-control .form-control, .form-standart-control textarea, .form-standart-control select, .form-standart-control .additional-icon'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.CONTROLS_TEXT_COLOR,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[controlsColor.Id] = controlsColor;\r\n // controlsColor.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(controlsColor, eventArgs, controlsColor.Id);\r\n // });\r\n // controlsColor.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(controlsColor, eventArgs, controlsColor.Id);\r\n // });\r\n\r\n // let tabBgActive = {\r\n // Id: 'tab_bgactive',\r\n // Rule: ['background-color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.nav.nav-tabs .tab.active a, .nav.nav-tabs .tab.active a:hover'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.ACTIVE_TAB_LEVEL_BACKGROUND_COLOR,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[tabBgActive.Id] = tabBgActive;\r\n // tabBgActive.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(tabBgActive, eventArgs, tabBgActive.Id);\r\n // });\r\n // tabBgActive.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(tabBgActive, eventArgs, tabBgActive.Id);\r\n // });\r\n\r\n // let tabColorActive = {\r\n // Id: 'tab_coloractive',\r\n // Rule: ['background-color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.nav.nav-tabs .tab.active a, .nav.nav-tabs .tab.active a:hover'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.ACTIVE_TAB_LEVEL_TEXT_COLOR,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[tabColorActive.Id] = tabColorActive;\r\n // tabColorActive.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(tabColorActive, eventArgs, tabColorActive.Id);\r\n // });\r\n // tabColorActive.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(tabColorActive, eventArgs, tabColorActive.Id);\r\n // });\r\n\r\n // let tabBorderColor = {\r\n // Id: 'tab_bordercolor',\r\n // Rule: ['border-color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.tab-page-result, .portlet-body.tab-page-result'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.TAB_BORDER_COLOR,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[tabBorderColor.Id] = tabBorderColor;\r\n // tabBorderColor.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(tabBorderColor, eventArgs, tabBorderColor.Id);\r\n // });\r\n // tabBorderColor.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(tabBorderColor, eventArgs, tabBorderColor.Id);\r\n // });\r\n\r\n // let tableHeaderBg = {\r\n // Id: 'table_headerbg',\r\n // Rule: ['background-color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.table-striped thead tr th'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.TABLE_HEADER_BACKGROUND_COLOR,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[tableHeaderBg.Id] = tableHeaderBg;\r\n // tableHeaderBg.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(tableHeaderBg, eventArgs, tableHeaderBg.Id);\r\n // });\r\n // tableHeaderBg.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(tableHeaderBg, eventArgs, tableHeaderBg.Id);\r\n // });\r\n\r\n // let tableHeaderColor = {\r\n // Id: 'table_headercolor',\r\n // Rule: ['color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.table-striped thead tr th'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.TABLE_HEADER_TEXT_COLOR,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[tableHeaderColor.Id] = tableHeaderColor;\r\n // tableHeaderColor.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(tableHeaderColor, eventArgs, tableHeaderColor.Id);\r\n // });\r\n // tableHeaderColor.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(tableHeaderColor, eventArgs, tableHeaderColor.Id);\r\n // });\r\n\r\n // let headerText = {\r\n // Id: 'header_text',\r\n // Rule: ['color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.page-header.navbar .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > .username'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.COLOR_FOR_HEADER_TEXT,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[headerText.Id] = headerText;\r\n // headerText.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(headerText, eventArgs, headerText.Id);\r\n // });\r\n // headerText.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(headerText, eventArgs, headerText.Id);\r\n // });\r\n\r\n // let headerBgText = {\r\n // Id: 'header_bgtext',\r\n // Rule: ['background-color'],\r\n // Value: '',\r\n // Transparent: '',\r\n // Selector: ['.page-header.navbar .top-menu .navbar-nav > li.dropdown .dropdown-toggle:hover'],\r\n // ColorSelector: ko.observable(new HexColorModel({\r\n // Label: LABELS.BACKGROUND_COLOR_FOR_HEADER_TEXT,\r\n // Disabled: !this._isActive()\r\n // }))\r\n // };\r\n // this._colorPickersObject[headerBgText.Id] = headerBgText;\r\n // headerBgText.ColorSelector().On(\"COLOR_SET\", this, eventArgs => {\r\n // pickerApplying(headerBgText, eventArgs, headerBgText.Id);\r\n // });\r\n // headerBgText.ColorSelector().On(\"COLOR_RESET\", this, eventArgs => {\r\n // pickerApplying(headerBgText, eventArgs, headerBgText.Id);\r\n // });\r\n\r\n }\r\n\r\n InitMetronic() {\r\n Demo.init();\r\n Demo.handleTheme();\r\n\r\n this.InitDropdowns();\r\n }\r\n\r\n InitDropdowns() {\r\n // let colorSetting = UserVarsManager.Instance.GetSettingsColor();\r\n // let layoutSetting = UserVarsManager.Instance.GetSettingsLayoutMode();\r\n // let layoutBorders = UserVarsManager.Instance.GetSettingsSidebarBorders();\r\n\r\n let colorSetting = this._uiSettings && this._uiSettings.Settings.Color;\r\n let layoutSetting = this._uiSettings && this._uiSettings.Settings.Style;\r\n let layoutBorders = this._uiSettings && this._uiSettings.Settings.SidebarBorders;\r\n\r\n let sidebarPos = this._uiSettings && this._uiSettings.Settings.SidebarPosOption;\r\n let sidebarStyle = this._uiSettings && this._uiSettings.Settings.SidebarStyleOption;\r\n let sidebarOption = this._uiSettings && this._uiSettings.Settings.SidebarOption;\r\n\r\n this._colorThemes.find('li').removeClass('current');\r\n\r\n if (colorSetting) {\r\n this._colorThemes.find('li[data-style=\"' + colorSetting + '\"]').addClass('current');\r\n } else {\r\n this._colorThemes.find('li[data-style=\"darkblue\"]').addClass('current');\r\n }\r\n\r\n if (layoutSetting) {\r\n this._layoutModeDropDown.val(layoutSetting);\r\n }\r\n\r\n if (layoutBorders) {\r\n this._sidebarBorders.val(layoutBorders);\r\n }\r\n\r\n if (sidebarPos) {\r\n this._sidebarPos.val(sidebarPos);\r\n }\r\n\r\n if (sidebarStyle) {\r\n this._sidebarStyle.val(sidebarStyle);\r\n }\r\n\r\n if (sidebarOption) {\r\n this._sidebarOption.val(sidebarOption);\r\n }\r\n }\r\n\r\n //add styles to preview elements\r\n AddStyles(val, el) {\r\n let self = this;\r\n let rule = \"\";\r\n let propertyName = \"\";\r\n\r\n rule = el.data(\"classes-info\");\r\n propertyName = el.data(\"property-info\");\r\n let propertyValue = val;\r\n if (el.data(\"transparent\") && propertyValue.length <= 7) {\r\n let transparentValue = 0;\r\n let propertyValueHex = '';\r\n transparentValue = el.data(\"transparent\");\r\n let propertyValueToHex: any; //??\r\n propertyValueToHex = self.HexToRgb(propertyValue);\r\n propertyValueHex = \"rgba(\" + propertyValueToHex.r + ',' + propertyValueToHex.g + ',' + propertyValueToHex.b + ',' + transparentValue + \")\";\r\n\r\n $(rule).css(propertyName, propertyValueHex);\r\n } else {\r\n $(rule).css(propertyName, propertyValue);\r\n }\r\n }\r\n\r\n HexToRgb(hex) {\r\n if (!hex) {\r\n return null;\r\n }\r\n\r\n let shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\r\n hex = hex.replace(shorthandRegex, function (m, r, g, b) {\r\n return r + r + g + g + b + b;\r\n });\r\n let result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : null;\r\n }\r\n\r\n ThemeSwitcher(el, themeName) {\r\n $(el).siblings().removeClass('active');\r\n $(el).toggleClass('active');\r\n\r\n this._haveChanges(true);\r\n\r\n let self = this;\r\n\r\n if ($(el).hasClass('active')) {\r\n this._isActive(true);\r\n\r\n const customTheme: CustomThemeDescriptor = this._uiSettings.GetCustomTheme(themeName);\r\n if (customTheme) {\r\n _.each(self._colorPickersObject, colorSelector => {\r\n colorSelector.ColorSelector().SetColor('');\r\n });\r\n\r\n let settingsList: CustomThemeSetting[] = customTheme.Settings;\r\n\r\n this._selectedCustomThemeSettings = settingsList;\r\n _.each(settingsList,\r\n (setting: CustomThemeSetting) => {\r\n\r\n let colorValue = setting.Val;\r\n if (setting.Transparent) {\r\n colorValue = self.RgbToHex(setting.Val);\r\n }\r\n self._colorPickersObject[setting.Id].Value = colorValue;\r\n self._colorPickersObject[setting.Id].ColorSelector().SetColor(colorValue);\r\n });\r\n\r\n this._uiSettings.SetCustomTheme(customTheme.Name, customTheme.Settings);\r\n this.SetThemeSquares();\r\n // this.ApplyCurrentTheme();\r\n } else {\r\n _.each(this._colorPickersObject, picker => {\r\n picker.ColorSelector().SetColor('');\r\n });\r\n this._uiSettings.SetCustomTheme(themeName, []);\r\n }\r\n } else {\r\n this._isActive(false);\r\n this.UncheckTheme();\r\n }\r\n }\r\n\r\n ThemeStatus(el, themeName) {\r\n // this.ThemeSwitcher(el, themeName);\r\n }\r\n\r\n UncheckTheme() {\r\n this._uiSettings.SetCustomTheme('Custom0', []);\r\n\r\n _.each(this._colorPickersObject, picker => {\r\n picker.ColorSelector().SetColor('');\r\n });\r\n Demo.SetUISettings(this._uiSettings);\r\n }\r\n\r\n Save() {\r\n GlobalManager.Instance.GetGlobalDescriptor(GLOBALS.THEME).Value = this._uiSettings.ToJSON();\r\n Demo.SetUISettings(this._uiSettings);\r\n\r\n BlockUI.Block();\r\n ThemeBuilderStore.SetUISettings(this._uiSettings.Serialize())\r\n .then(() => new Notifier().Success(NOTIFICATIONS.CHANGES_APPLIED))\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n ShowPreview() {\r\n this._modal = new Modal({}, true);\r\n let template = this._previewTemplate.clone();\r\n this._modal.SetContent(template);\r\n let modalPreview = $(this._modal.Wrapper).find(template);\r\n $(modalPreview).show();\r\n\r\n this._modal.Show();\r\n }\r\n\r\n RenderByTargetId(target: string): void {\r\n ko.cleanNode(document.getElementById(target));\r\n ko.applyBindings(this, document.getElementById(target));\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/ProfilePage/ThemeBuilder/Templates/ThemeBuilder';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n this._el = el[0];\r\n this._themeContent = el[0];\r\n\r\n this.CacheElements();\r\n this.InitMetronic();\r\n\r\n // if (this._uiSettings) {\r\n // const customThemeName = this._uiSettings.Settings.CustomThemeName;\r\n //\r\n // if (customThemeName) {\r\n // $(this._themeContent).find('.' + customThemeName).addClass('active');\r\n // }\r\n // }\r\n // this.ApplyCurrentTheme()\r\n\r\n this.BindEvents();\r\n\r\n if (!this._uiSettings.Equals(this.GetUISettings())) {\r\n this._haveChanges(true);\r\n }\r\n\r\n if (!this._userIsAllowedToChange) {\r\n BlockUI.TransparentBlock(this._el, {\r\n ZIndex: 200,\r\n PaddingRootElement: 5,\r\n TextMessage: this._labels.LOCKED_BY_SUPER_USER,\r\n OpacityMessage: true,\r\n BackgroundColor: 'rgb(0 0 0 / 15%)',\r\n Cursor: 'not-allowed'\r\n });\r\n }\r\n }\r\n\r\n private GetUISettings() {\r\n const uiSettingsJson = GlobalManager.Instance.GetGlobal(GLOBALS.THEME);\r\n return uiSettingsJson ? GenericDeserialize(JSON.parse(uiSettingsJson), UISettings) : new UISettings();\r\n }\r\n\r\n private BuildCustomThemeArray() {\r\n let arr = [];\r\n\r\n _.each(this._colorPickersObject, (selector: IColorSelectorInfo) => {\r\n\r\n let className = '';\r\n let rule = '';\r\n let val = '';\r\n let id = '';\r\n let transparent = '';\r\n\r\n var hexModel = selector.ColorSelector() as HexColorModel;\r\n\r\n id = selector.Id;\r\n className = selector.Selector;\r\n rule = selector.Rule;\r\n val = hexModel.ColorValue;\r\n transparent = selector.Transparent;\r\n\r\n arr.push({\r\n Id: id,\r\n Selector: className,\r\n Rule: rule,\r\n Val: val,\r\n Transparent: transparent\r\n });\r\n });\r\n\r\n return arr;\r\n }\r\n\r\n}","// Module\nvar code = \"<div data-bind=\\\"afterRender: $data.AfterRender.bind($data)\\\" class=\\\"theme-builder-container clearfix\\\"> <div class=\\\"profile-content\\\"> <div class=\\\"actions clearfix\\\"> <div class=\\\"theme-panel clearfix\\\"> <div class=\\\"h4 basic-title clearfix\\\"><!-- ko text: _labels.BASIC_THEME_OPTIONS --><!-- /ko --></div> <div class=\\\"theme-options clearfix\\\"> <div class=\\\"clearfix pull-left theme-options-dropdowns\\\"> <div class=\\\"theme-option\\\"> <span> <!-- ko text: _labels.THEME_STYLE --><!-- /ko --> </span> <select class=\\\"layout-style-option form-control input-sm\\\"> <option selected=\\\"selected\\\" value=\\\"square\\\"><!-- ko text: _labels.SQUARE_CORNERS --> <!-- /ko --></option> <option value=\\\"rounded\\\"><!-- ko text: _labels.ROUNDER_CORNERS --><!-- /ko --></option> </select> </div> </div> <div class=\\\"clearfix pull-left theme-options-dropdowns\\\"> <div class=\\\"theme-option\\\"> <span> <!-- ko text: _labels.SIDEBAR_POSITION --><!-- /ko --> </span> <select class=\\\"sidebar-pos-option form-control input-sm\\\"> <option selected=\\\"selected\\\" value=\\\"left\\\"><!-- ko text: _labels.LEFT --> <!-- /ko --></option> <option value=\\\"right\\\"><!-- ko text: _labels.RIGHT --><!-- /ko --></option> </select> </div> <div class=\\\"theme-option\\\"> <span> <!-- ko text: _labels.SIDEBAR_STYLE --><!-- /ko --> </span> <select class=\\\"sidebar-style-option form-control input-sm\\\"> <option selected=\\\"selected\\\" value=\\\"default\\\"><!-- ko text: _labels.DEFAULT --> <!-- /ko --></option> <option value=\\\"light\\\"><!-- ko text: _labels.LIGHT --><!-- /ko --></option> </select> </div> <div class=\\\"theme-option\\\"> <span> <!-- ko text: _labels.SIDEBAR_MODE --><!-- /ko --> </span> <select class=\\\"sidebar-option form-control input-sm\\\"> <option value=\\\"fixed\\\"><!-- ko text: _labels.FIXED --><!-- /ko --></option> <option selected=\\\"selected\\\" value=\\\"default\\\"><!-- ko text: _labels.DEFAULT --> <!-- /ko --></option> </select> </div> </div> </div> <div class=\\\"custom-panel theme-options clearfix\\\"> <div class=\\\"clearfix basic-theme-separate\\\"> <div class=\\\"theme-option theme-colors clearfix\\\"> <span> <!-- ko text: _labels.BASIS_THEME_COLOR --><!-- /ko --> </span> <ul id=\\\"color-themes\\\"> <li class=\\\"color-default tooltips\\\" data-style=\\\"default\\\" data-container=\\\"body\\\" data-original-title=\\\"Default\\\" title=\\\"Default\\\"> </li> <li class=\\\"color-darkblue tooltips\\\" data-style=\\\"darkblue\\\" data-container=\\\"body\\\" data-original-title=\\\"Dark Blue\\\" title=\\\"Dark Blue\\\"> </li> <li class=\\\"color-blue tooltips\\\" data-style=\\\"blue\\\" data-container=\\\"body\\\" data-original-title=\\\"Blue\\\" title=\\\"Blue\\\"> </li> <li class=\\\"color-grey tooltips\\\" data-style=\\\"grey\\\" data-container=\\\"body\\\" data-original-title=\\\"Grey\\\" title=\\\"Grey\\\"> </li> <li class=\\\"color-light tooltips\\\" data-style=\\\"light\\\" data-container=\\\"body\\\" data-original-title=\\\"Light\\\" title=\\\"Light\\\"> </li> <li class=\\\"color-light2 tooltips\\\" data-style=\\\"light2\\\" data-container=\\\"body\\\" data-html=\\\"true\\\" data-original-title=\\\"Light 2\\\" title=\\\"Light 2\\\"> </li> <li class=\\\"color-RoseBudCherry tooltips\\\" data-style=\\\"roseBudCherry\\\" data-container=\\\"body\\\" data-html=\\\"true\\\" data-original-title=\\\"Rose Bud Cherry\\\" title=\\\"Rose Bud Cherry\\\"> </li> </ul> </div> <div class=\\\"custom-theme-separate clearfix\\\" style=\\\"display:none\\\"> <div class=\\\"clearfix\\\"> <span class=\\\"title\\\"> <!-- ko text: _labels.CUSTOM_THEMES --><!-- /ko --> </span> <ul id=\\\"custom-color-themes\\\" class=\\\"clearfix custom-themes-colors\\\"> <li data-bind=\\\"click: $data.ThemeStatus.bind($data, $element, 'Custom1')\\\" class=\\\"color-custom1 tooltips Custom1\\\" data-style=\\\"Custom1\\\" data-original-title=\\\"Custom1\\\" title=\\\"Custom1\\\"> <span>1</span> </li> <li data-bind=\\\"click: $data.ThemeStatus.bind($data, $element, 'Custom2')\\\" class=\\\"color-custom2 tooltips Custom2\\\" data-style=\\\"Custom2\\\" data-original-title=\\\"Custom2\\\" title=\\\"Custom2\\\"> <span>2</span> </li> <li data-bind=\\\"click: $data.ThemeStatus.bind($data, $element, 'Custom3')\\\" class=\\\"color-custom3 tooltips Custom3\\\" data-style=\\\"Custom3\\\" data-original-title=\\\"Custom3\\\" title=\\\"Custom3\\\"> <span>3</span> </li> <li data-bind=\\\"click: $data.ThemeStatus.bind($data, $element, 'Custom4')\\\" class=\\\"color-custom4 tooltips Custom4\\\" data-style=\\\"Custom4\\\" data-original-title=\\\"Custom4\\\" title=\\\"Custom4\\\"> <span>4</span> </li> <li data-bind=\\\"click: $data.ThemeStatus.bind($data, $element, 'Custom5')\\\" class=\\\"color-custom5 tooltips Custom5\\\" data-style=\\\"Custom5\\\" data-original-title=\\\"Custom5\\\" title=\\\"Custom5\\\"> <span>5</span> </li> </ul> </div> </div> <!-- <div class=\\\"row clearfix options-blocks\\\" data-bind=\\\"visible: _toggleThemeSwitcher()\\\">--> <div class=\\\"row clearfix options-blocks\\\" style=\\\"display:none\\\"> <div class=\\\"col-md-12 clearfix\\\"> <div class=\\\"create-theme clearfix\\\"> <div class=\\\"form-body clearfix\\\"> <div class=\\\"col-md-4 custom-picker-block\\\"> <div class=\\\"form-group color-item clearfix\\\"> <!-- ko with: _colorPickersObject.root_background.ColorSelector --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"form-group color-item clearfix\\\"> <!-- ko with: _colorPickersObject.body_header_background.ColorSelector --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div> </div> <div class=\\\"form-actions right clearfix theme-actions-buttons\\\"> <a data-bind=\\\"click: Save, css: {'disabled': !_haveChanges()}\\\" href=\\\"#\\\" id=\\\"profileSaveBtn\\\" class=\\\"btn green\\\"><!-- ko text: _labels.SAVE --><!-- /ko --></a> <a data-bind=\\\"click: Discard, css: {'disabled': !_haveChanges()}\\\" href=\\\"#\\\" id=\\\"profileDiscardBtn\\\" class=\\\"btn default\\\"><!-- ko text: _labels.DISCARD --> <!-- /ko --></a> <a data-bind=\\\"click: ShowPreview\\\" href=\\\"#\\\" id=\\\"preview\\\" class=\\\"btn green-meadow\\\"> <!-- ko text: _labels.SHOW_PREVIEW --><!-- /ko --></a> </div> </div> </div> </div> </div> <div class=\\\"alert alert-block alert-info h3\\\"> <!--<div data-bind=\\\"css: {'hidden': !_haveChanges()}\\\" class=\\\"alert alert-block alert-info h3\\\">--> <!-- ko text: _labels.REFRESH_PAGE_ALERT --><!-- /ko --> <br/> <span class=\\\"h5\\\">( <!-- ko text: _labels.PREFF_F5_BUTTON_ALERT --><!-- /ko -->)</span> </div> </div> <div class=\\\"hidden\\\"> <div class=\\\"screen consult-screen screenForm theme-builder\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"row form-wrapper custom-theme-block clearfix\\\"> <div id=\\\"subFormId\\\" class=\\\"mainSubForm col-md-4 form-wrapper__main-sub-form\\\"> <form role=\\\"form\\\" class=\\\"full-size\\\"> <div class=\\\"form-body\\\"> <div id=\\\"PHONE\\\" class=\\\"text-control\\\"> <div class=\\\"ConsultScreenView FormDesignerView label-input form-standart-control clearfix\\\" data-control-position=\\\"Left\\\" title=\\\"PHONE\\\" style=\\\"display:block\\\"> <label title=\\\"PHONE\\\"> PHONE </label> <div format-name=\\\"Phone number\\\" field-format-pattern=\\\"Test mask 123\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"> +38 012 345 67 89 </div> </div> </div> <div id=\\\"MAIL1\\\" class=\\\"text-control\\\"> <div class=\\\"ConsultScreenView FormDesignerView label-input form-standart-control clearfix\\\" data-control-position=\\\"Left\\\" title=\\\"MAIL1\\\" style=\\\"display:block\\\"> <label title=\\\"MAIL1\\\"> MAIL1 </label> <div format-name=\\\"Mail\\\" field-format-pattern=\\\"Test mask 123\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"> mail1@cybermail.com </div> </div> </div> <div id=\\\"MAIL2\\\" class=\\\"text-control\\\"> <div class=\\\"ConsultScreenView FormDesignerView label-input form-standart-control clearfix\\\" data-control-position=\\\"Left\\\" title=\\\"MAIL2\\\" style=\\\"display:block\\\"> <label title=\\\"MAIL2\\\"> MAIL2 </label> <div format-name=\\\"Mail\\\" field-format-pattern=\\\"Test mask 123\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"> mail2@cybermail.com </div> </div> </div> <div id=\\\"SKYPE\\\" class=\\\"text-control\\\"> <div class=\\\"ConsultScreenView FormDesignerView label-input form-standart-control clearfix\\\" data-control-position=\\\"Left\\\" title=\\\"SKYPE\\\" style=\\\"display:block\\\"> <label title=\\\"SKYPE\\\"> SKYPE </label> <div format-name=\\\"None\\\" field-format-pattern=\\\"Test mask 123\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"> cyberSkype </div> </div> </div> <div id=\\\"LINKEDIN\\\" class=\\\"text-control\\\"> <div class=\\\"ConsultScreenView FormDesignerView label-input form-standart-control clearfix\\\" data-control-position=\\\"Left\\\" title=\\\"LINKEDIN\\\" style=\\\"display:block\\\"> <label title=\\\"LINKEDIN\\\"> LINKEDIN </label> <div format-name=\\\"None\\\" field-format-pattern=\\\"Test mask 123\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"> cyberLinkedIn </div> </div> </div> </div> </form> </div> </div> <div id=\\\"subFormId 542\\\" class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <form role=\\\"form\\\" class=\\\"full-size\\\"> <div class=\\\"form-body\\\"> <div class=\\\"ConsultScreenView EditScreenView\\\" style=\\\"display:block\\\"> <div class=\\\"tab-wrapper\\\" id=\\\"Select table \\\"> <ul class=\\\"nav nav-tabs\\\"> <li class=\\\"tab ConsultScreenView active\\\" title=\\\"TabPage\\\"> <a class=\\\"tab-link\\\">Preview tab 1</a> </li> <li class=\\\"tab ConsultScreenView\\\" title=\\\"TabPage\\\"> <a class=\\\"tab-link\\\">Preview tab 2</a> </li> <li class=\\\"tab ConsultScreenView\\\" title=\\\"TabPage\\\"> <a class=\\\"tab-link\\\">Preview tab 3</a> </li> <li class=\\\"tab ConsultScreenView\\\" title=\\\"TabPage\\\"> <a class=\\\"tab-link\\\">Preview tab 4</a> </li> <li class=\\\"tab ConsultScreenView\\\" title=\\\"TabPage\\\"> <a class=\\\"tab-link\\\">Preview tab 5</a> </li> <li class=\\\"tab ConsultScreenView\\\" title=\\\"TabPage\\\"> <a class=\\\"tab-link\\\">Preview tab 6</a> </li> <li class=\\\"tab ConsultScreenView\\\" title=\\\"TabPage\\\"> <a class=\\\"tab-link\\\">Preview tab 7</a> </li> <li class=\\\"tab ConsultScreenView\\\" title=\\\"TabPage\\\"> <a class=\\\"tab-link\\\">Preview tab 8</a> </li> </ul> <div class=\\\"tab-content tab-page-result\\\"> <div class=\\\"ConsultScreenView EditScreenView grid-control\\\" style=\\\"display:block\\\"> <div class=\\\"table-scrollable\\\"> <table class=\\\"table table-striped table-bordered table-hover dt-responsive no-footer dtr-inline collapsed cyber-grid-control theme-builder-table\\\" role=\\\"grid\\\" cellspacing=\\\"0\\\"> <thead> <tr role=\\\"row\\\"> <th></th> <th style=\\\"text-align:center\\\" title=\\\"Favorite\\\"><i class=\\\"fa fa-star\\\"></i></th> <th>PREVIEW_TITLE</th> <th>PREVIEW_TITLE</th> <th>PREVIEW_TITLE</th> <th>PREVIEW_TITLE</th> <th>PREVIEW_TITLE</th> <th>PREVIEW_TITLE</th> <th>PREVIEW_TITLE</th> </tr> </thead> <tbody> <tr role=\\\"row\\\" class=\\\"parent-row parent have-related\\\"> <td style=\\\"vertical-align:middle\\\" rowspan=\\\"1\\\"> <a href=\\\"#\\\"><i class=\\\"fa fa-edit\\\"></i></a> </td> <td></td> <td> <span>1</span> </td> <td> <span>Preview data</span> </td> <td> <span>Preview data</span> </td> <td> <span></span> </td> <td> <span>Preview data</span> </td> <td> <span>Preview data</span> </td> <td> <span></span> </td> </tr> <tr role=\\\"row\\\" class=\\\"parent-row parent have-related\\\"> <td style=\\\"vertical-align:middle\\\" rowspan=\\\"1\\\"> <a href=\\\"#\\\"><i class=\\\"fa fa-edit\\\"></i></a> </td> <td></td> <td> <span>5</span> </td> <td> <span>Preview data</span> </td> <td> <span>Preview data</span> </td> <td> <span></span> </td> <td> <span>Preview data</span> </td> <td> <span>Preview data</span> </td> <td> <span></span> </td> </tr> <tr role=\\\"row\\\" class=\\\"parent-row parent have-related\\\"> <td style=\\\"vertical-align:middle\\\" rowspan=\\\"1\\\"> <a href=\\\"#\\\"><i class=\\\"fa fa-edit\\\"></i></a> </td> <td></td> <td> <span>9</span> </td> <td> <span>Preview data</span> </td> <td> <span>Preview data</span> </td> <td> <span></span> </td> <td> <span>Preview data</span> </td> <td> <span class=\\\"hyperlink\\\"></span> </td> <td> <span></span> </td> </tr> <tr role=\\\"row\\\" class=\\\"parent-row parent have-related\\\"> <td style=\\\"vertical-align:middle\\\" rowspan=\\\"1\\\"> <a href=\\\"#\\\"><i class=\\\"fa fa-edit\\\"></i></a> </td> <td></td> <td> <span>12</span> </td> <td> <span>Preview data</span> </td> <td> <span>Preview data</span> </td> <td> <span></span> </td> <td> <span>Preview data</span> </td> <td> <span>Preview data</span> </td> <td> <span></span> </td> </tr> <tr role=\\\"row\\\" class=\\\"parent-row parent have-related\\\"> <td style=\\\"vertical-align:middle\\\" rowspan=\\\"1\\\"> <a href=\\\"#\\\"><i class=\\\"fa fa-edit\\\"></i></a> </td> <td></td> <td> <span>13</span> </td> <td> <span>Preview data</span> </td> <td> <span>Preview data</span> </td> <td> <span></span> </td> <td> <span>Preview data</span> </td> <td> <span>Preview data</span> </td> <td> <span></span> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> </form> </div> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\nimport { Event } from 'Core/Common/Event';\r\nimport { PersonalSettingsModel } from 'Core/ProfilePage/PersonalSettings/Models/PersonalSettingsModel';\r\n\r\nimport Template from 'Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/Text/Templates/Text.html'\r\nko.templates['Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/Text/Templates/Text'] = Template;\r\n\r\n\r\nenum typeConfiguration { Integer = \"number\", Text = \"text\" };\r\n\r\nexport class Text {\r\n\tValue: KnockoutObservable<string | number | boolean>;\r\n\tHasChanges: KnockoutObservable<boolean>;\r\n\tDisabled: boolean;\r\n\tName: string;\r\n\tId: number;\r\n\tType: string;\r\n\tDescription: string;\r\n\r\n\r\n\tconstructor(model: PersonalSettingsModel, changeHandler, PersonalSettingsInstance) {\r\n\t\tthis.Value = ko.observable(model.Value);\r\n this.Name = model.TranslatedName ? model.TranslatedName : model.Name;\r\n\t\tthis.Disabled = model.LockToDefault;\r\n\t\tthis.Id = model.Id;\r\n\t\tthis.Description = model.DescriptionTranslation ? model.DescriptionTranslation : model.Description;\r\n\t\tthis.HasChanges = ko.observable(false);\r\n\t\tthis.Type = typeConfiguration[model.TypeName];\r\n\r\n\t\tthis.Value.subscribe((newValue) => {\r\n\t\t\tthis.HasChanges(true);\r\n\t\t\tchangeHandler.call(PersonalSettingsInstance);\r\n\t\t});\r\n\t}\r\n\t\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/Text/Templates/Text';\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as $ from 'jquery';\r\nimport * as moment from 'moment';\r\n\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport { LicenseHolderStore } from 'Core/ProfilePage/LicenseHolder/Stores/LicenseHolderStore';\r\nimport { LicenseHolderModel } from 'Core/ProfilePage/LicenseHolder/Models/LicenseHolderModel';\r\n\r\nimport LicenseHolderTemplate from 'Core/ProfilePage/LicenseHolder/Templates/LicenseHolder.html';\r\nimport {FileModel} from \"Core/Controls/Image/Models/ImageDataModel\";\r\nimport { AttachmentModel } from \"Core/Controls/Image/Models/AttachmentModel\";\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\nko.templates['Core/ProfilePage/LicenseHolder/Templates/LicenseHolder'] = LicenseHolderTemplate;\r\n\r\nexport class LicenseHolder {\r\n\t\r\n\tprivate _el: HTMLElement;\r\n\tprivate _model: LicenseHolderModel;\r\n\tprivate _name: KnockoutObservable<string>;\r\n\tprivate _expirationDate: KnockoutObservable<string>;\r\n\tprivate _activeUsersNumber: KnockoutObservable<number>;\r\n\tprivate _licenseUsersNumber: KnockoutObservable<number>;\r\n\tprivate _activePortalUsersNumber: KnockoutObservable<number>;\r\n\tprivate _licensePortalUsersNumber: KnockoutObservable<number>;\r\n\tprivate _activeGDPRUsersNumber: KnockoutObservable<number>;\r\n\tprivate _licenseGDPRUsersNumber: KnockoutObservable<number>;\r\n\tprivate _activeConnectUsersNumber: KnockoutObservable<number>;\r\n\tprivate _licenseConnectUsersNumber: KnockoutObservable<number>;\r\n\tprivate _activeRemoteUsersNumber: KnockoutObservable<number>;\r\n\tprivate _licenseRemoteUsersNumber: KnockoutObservable<number>;\r\n\tprivate _activeLimited1UsersNumber: KnockoutObservable<number>;\r\n\tprivate _licenseLimited1UsersNumber: KnockoutObservable<number>;\r\n\tprivate _activeLimited2UsersNumber: KnockoutObservable<number>;\r\n\tprivate _licenseLimited2UsersNumber: KnockoutObservable<number>;\r\n\tprivate _activeLimited3UsersNumber: KnockoutObservable<number>;\r\n\tprivate _licenseLimited3UsersNumber: KnockoutObservable<number>;\r\n\tprivate _maxRole: KnockoutObservable<string>;\r\n\tprivate _logo: KnockoutObservable<string>;\r\n\tprivate _defaultLogo: string;\r\n\tprivate _isCloseVisible: KnockoutObservable<boolean>;\r\n\tprivate _maxLicenseImageSize: number;\r\n\tprivate _labels = LABELS;\r\n\t//private _model: KnockoutObservable<LicenseHolderModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis._el = null;\r\n\t\tthis._model = null;\r\n\t\tthis._name = ko.observable('');\r\n\t\tthis._logo = ko.observable('');\r\n\t\tthis._expirationDate = ko.observable(null);\r\n\t\tthis._activeUsersNumber = ko.observable(0);\r\n\t\tthis._licenseUsersNumber = ko.observable(0);\r\n\t\tthis._activePortalUsersNumber = ko.observable(0);\r\n\t\tthis._licensePortalUsersNumber = ko.observable(0);\r\n\t\tthis._activeGDPRUsersNumber = ko.observable(0);\r\n\t\tthis._licenseGDPRUsersNumber = ko.observable(0);\r\n\t\tthis._activeConnectUsersNumber = ko.observable(0);\r\n\t\tthis._licenseConnectUsersNumber = ko.observable(0);\r\n\t\tthis._activeRemoteUsersNumber = ko.observable(0);\r\n\t\tthis._licenseRemoteUsersNumber = ko.observable(0);\r\n\t\tthis._activeLimited1UsersNumber = ko.observable(0);\r\n\t\tthis._licenseLimited1UsersNumber = ko.observable(0);\r\n\t\tthis._activeLimited2UsersNumber = ko.observable(0);\r\n\t\tthis._licenseLimited2UsersNumber = ko.observable(0);\r\n\t\tthis._activeLimited3UsersNumber = ko.observable(0);\r\n\t\tthis._licenseLimited3UsersNumber = ko.observable(0);\r\n\t\tthis._maxRole = ko.observable('');\r\n\t\tthis._isCloseVisible = ko.observable(false);\r\n\t\tthis._defaultLogo = '../../../../../img/Custom/logo_upload.png';\r\n\t\tthis._maxLicenseImageSize = 1;\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tInit() {\r\n\t\tBlockUI.Block();\r\n\t\tLicenseHolderStore.GetLicenseHolderModel()\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(model => {\r\n\t\t\t\tthis._model = model;\r\n\t\t\t\tthis.MapData();\r\n\t\t\t}).fail(error => new Notifier().Failed(error));\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/ProfilePage/LicenseHolder/Templates/LicenseHolder';\r\n\t}\r\n\r\n\tMapData() {\r\n\t\tthis._name(this._model.Name);\r\n\t\tthis._expirationDate(moment(this._model.ExpirationDate).format('DD MMMM YYYY'));\r\n\t\tthis._activeUsersNumber(this._model.ActiveUsersNumber);\r\n\t\tthis._licenseUsersNumber(this._model.LicenseUsersNumber);\r\n\t\tthis._activeConnectUsersNumber(this._model.ActiveConnectUsersNumber);\r\n\t\tthis._licenseConnectUsersNumber(this._model.LicenseConnectUsersNumber);\r\n\t\tthis._activeRemoteUsersNumber(this._model.ActiveRemoteUsersNumber);\r\n\t\tthis._licenseRemoteUsersNumber(this._model.LicenseRemoteUsersNumber);\r\n\t\tthis._activeLimited1UsersNumber(this._model.ActiveLimited1UsersNumber);\r\n\t\tthis._licenseLimited1UsersNumber(this._model.LicenseLimited1UsersNumber);\r\n\t\tthis._activeLimited2UsersNumber(this._model.ActiveLimited2UsersNumber);\r\n\t\tthis._licenseLimited2UsersNumber(this._model.LicenseLimited2UsersNumber);\r\n\t\tthis._activeLimited3UsersNumber(this._model.ActiveLimited3UsersNumber);\r\n\t\tthis._licenseLimited3UsersNumber(this._model.LicenseLimited3UsersNumber);\r\n\t\tthis._activePortalUsersNumber(this._model.ActivePortalUsersNumber);\r\n\t\tthis._licensePortalUsersNumber(this._model.LicensePortalUsersNumber);\r\n\t\tthis._activeGDPRUsersNumber(this._model.ActiveGDPRUsersNumber);\r\n\t\tthis._licenseGDPRUsersNumber(this._model.LicenseGDPRUsersNumber);\r\n\t\tthis._maxRole(this._model.UserMaxRole);\r\n\t\tthis._logo(this._model.Image || this._defaultLogo);\r\n\r\n\t\tthis._isCloseVisible(this._model.Image ? true : false);\r\n\t}\r\n\r\n\tAfterUpload(file, data) {\r\n\t\tvar attachmentModel = new AttachmentModel();\r\n\t\tattachmentModel.FileName = file.name;\r\n\t\tvar reader = new FileReader();\r\n\t\r\n\t\treader.onloadend = () => {\r\n\t\t\tif (file.status === 'error') {\r\n\t\t\t\tvar message = NOTIFICATIONS.FILE_SIZE_IS_TOO_BIG.replace('{MaxFileSize}', this._maxLicenseImageSize.toString());\r\n\t\t\t\tnew Notifier().Failed(message);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (file.status === 'removed') {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar base64ImageData = (reader.result as string).split(',')[1];\r\n\t\t\tattachmentModel.Base64Data = base64ImageData;\r\n\t\t\t\r\n\t\t\tLicenseHolderStore.UploadLicenseLogo(attachmentModel)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.then(message => {\r\n\t\t\t\t\tnew Notifier().Success(NOTIFICATIONS.LOGO_UPDATED);\r\n\t\t\t\t\tthis._model.Image = reader.result as string;\r\n\t\t\t\t\tthis._logo(this._model.Image);\r\n\t\t\t\t\tthis._isCloseVisible(true);\r\n\t\t\t\t})\r\n\t\t\t\t.fail(error => new Notifier().Failed(error.message));\r\n\t\t};\r\n\r\n\t\treader.readAsDataURL(file);\r\n\t}\r\n\r\n\tImageDelete() {\r\n\t\t\r\n\t\tvar attachmentModel = new AttachmentModel();\r\n\t\tattachmentModel.FileName = '';\r\n\t\tLicenseHolderStore.UploadLicenseLogo(attachmentModel)\r\n\t\t\t.then(message => {\r\n\t\t\t\tthis._model.Image = null;\r\n\t\t\t\tthis._logo(this._defaultLogo);\r\n\t\t\t\tthis._isCloseVisible(false);\r\n\t\t\t})\r\n\r\n\t\t\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tthis._el = el[0];\r\n\t}\r\n\r\n\t@enumerable get MaxLicenseImageSize(): number {\r\n\t\treturn this._maxLicenseImageSize;\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"afterRender: $data.AfterRender.bind($data)\\\" class=\\\"theme-builder-container clearfix\\\"> <div class=\\\"profile-content\\\"> <div class=\\\"c-content-contact-1 c-opt-1\\\"> <div class=\\\"row\\\"> <div class=\\\"col-lg-4 col-md-6\\\"> <div class=\\\"c-body license-holder-container clearfix\\\"> <div class=\\\"c-section\\\"> <h3 data-bind=\\\"text: _name\\\">CyberThing</h3> </div> <div class=\\\"c-section\\\"> <div class=\\\"c-content-label uppercase bg-blue-hoki\\\"><!-- ko text: _labels.LICENSE_INFO --><!-- /ko --></div> <p> <strong><!-- ko text: _labels.NAME --><!-- /ko --></strong>: <span data-bind=\\\"text: _name\\\" class=\\\"name\\\"></span><br/> <strong><!-- ko text: _labels.LICENSE_EXPIRATION_DATE --><!-- /ko --></strong>: <span data-bind=\\\"text: _expirationDate\\\" class=\\\"expiration-date\\\">01/01/2020</span> <br/> <strong><!-- ko text: _labels.MAXIMUM_USERS_ALLOWED --><!-- /ko --></strong>: <span data-bind=\\\"text: _activeUsersNumber\\\" class=\\\"existing-users\\\">100</span>/<span data-bind=\\\"text: _licenseUsersNumber\\\" class=\\\"maximum-users\\\">1000</span> <br/> <strong><!-- ko text: _labels.MAXIMUM_PORTAL_USERS_ALLOWED --><!-- /ko --></strong>: <span data-bind=\\\"text: _activePortalUsersNumber\\\" class=\\\"existing-users\\\">100</span>/<span data-bind=\\\"text: _licensePortalUsersNumber\\\" class=\\\"maximum-users\\\">1000</span> <br/> <strong><!-- ko text: _labels.MAXIMUM_GDPR_USERS_ALLOWED --><!-- /ko --></strong>: <span data-bind=\\\"text: _activeGDPRUsersNumber\\\" class=\\\"existing-users\\\">100</span>/<span data-bind=\\\"text: _licenseGDPRUsersNumber\\\" class=\\\"maximum-users\\\">1000</span> <br/> <strong><!-- ko text: _labels.MAXIMUM_CONNECT_USERS_ALLOWED --><!-- /ko --></strong>: <span data-bind=\\\"text: _activeConnectUsersNumber\\\" class=\\\"existing-users\\\">100</span>/<span data-bind=\\\"text: _licenseConnectUsersNumber\\\" class=\\\"maximum-users\\\">1000</span> <br/> <strong><!-- ko text: _labels.MAXIMUM_REMOTE_USERS_ALLOWED --><!-- /ko --></strong>: <span data-bind=\\\"text: _activeRemoteUsersNumber\\\" class=\\\"existing-users\\\">100</span>/<span data-bind=\\\"text: _licenseRemoteUsersNumber\\\" class=\\\"maximum-users\\\">1000</span> <br/> <strong><!-- ko text: _labels.MAXIMUM_LIMITED1_USERS_ALLOWED --><!-- /ko --></strong>: <span data-bind=\\\"text: _activeLimited1UsersNumber\\\" class=\\\"existing-users\\\">100</span>/<span data-bind=\\\"text: _licenseLimited1UsersNumber\\\" class=\\\"maximum-users\\\">1000</span> <br/> <strong><!-- ko text: _labels.MAXIMUM_LIMITED2_USERS_ALLOWED --><!-- /ko --></strong>: <span data-bind=\\\"text: _activeLimited2UsersNumber\\\" class=\\\"existing-users\\\">100</span>/<span data-bind=\\\"text: _licenseLimited2UsersNumber\\\" class=\\\"maximum-users\\\">1000</span> <br/> <strong><!-- ko text: _labels.MAXIMUM_LIMITED3_USERS_ALLOWED --><!-- /ko --></strong>: <span data-bind=\\\"text: _activeLimited3UsersNumber\\\" class=\\\"existing-users\\\">100</span>/<span data-bind=\\\"text: _licenseLimited3UsersNumber\\\" class=\\\"maximum-users\\\">1000</span> <br/> <strong><!-- ko text: _labels.MAXIMUM_ROLE --><!-- /ko --></strong>: <span data-bind=\\\"text: _maxRole\\\" class=\\\"maximum-role\\\">10</span> <br/><br/> </p> </div> <!-- \\r\\n\\t\\t\\t\\t\\t\\t<div class=\\\"c-section\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"c-content-label uppercase bg-blue-hoki\\\">Address</div>\\r\\n\\t\\t\\t\\t\\t\\t\\t<p>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t25, Lorem Lis Street,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<br>Orange C, California,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<br>United States of America\\r\\n\\t\\t\\t\\t\\t\\t\\t</p>\\r\\n\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\t\\t--> <div class=\\\"clearfix license-logo-block\\\"> <div class=\\\"logo-wrapper clearfix\\\"> <a data-bind=\\\"click: ImageDelete, css: {'hidden': !_isCloseVisible()}\\\" class=\\\"remove-mark\\\"></a> <!--thumbnail: $data.AfterUpload.bind($data)--> <img src=\\\"\\\" data-bind=\\\"attr:{'src': _logo},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdropzone: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\turl: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tautoProcessQueue: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmaxFilesize: $data.MaxLicenseImageSize,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tacceptedFiles: '.png,.gif,.jpg,.jpeg,.jpe,.jif,.jfif,.jfi'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\" class=\\\"dropzone license-logo\\\"> </div> </div> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\nimport { PersonalSettingsModel } from 'Core/ProfilePage/PersonalSettings/Models/PersonalSettingsModel';\r\n\r\n\r\nimport Template from 'Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/YesNo/Templates/YesNo.html'\r\nko.templates['Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/YesNo/Templates/YesNo.html'] = Template;\r\n\r\nexport class YesNo {\r\n\tValue: KnockoutObservable<boolean>;\r\n\tHasChanges: KnockoutObservable<boolean>;\r\n\tDisabled: boolean;\r\n\tName: string;\r\n\tId: number;\r\n\tDescription: string;\r\n\r\n\r\n\tconstructor(model: PersonalSettingsModel, changeHandler, PersonalSettingsInstance) {\r\n\t\tthis.Value = ko.observable(Boolean(+model.Value));\r\n\t\tthis.HasChanges = ko.observable(false);\r\n this.Name = model.TranslatedName ? model.TranslatedName : model.Name;\r\n\t\tthis.Disabled = model.LockToDefault;\r\n\t\tthis.Id = model.Id;\r\n\t\tthis.Description = model.DescriptionTranslation ? model.DescriptionTranslation : model.Description;\r\n\r\n\t\tthis.Value.subscribe((newValue) => {\r\n\t\t\tthis.HasChanges(true);\r\n\t\t\tchangeHandler.call(PersonalSettingsInstance);\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/YesNo/Templates/YesNo.html';\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t}\r\n} ","// Module\nvar code = \"<div class=\\\"checker\\\"> <label data-toggle=\\\"tooltip\\\" data-placement=\\\"bottom\\\" data-bind=\\\"text: Name, tooltip: { content: Description ? Description : Name }\\\"></label> <span class=\\\"checkedBox\\\" data-bind=\\\"css: {checked: Value}\\\"> <input data-bind=\\\"checked: Value, attr: { disabled: Disabled }\\\" type=\\\"checkbox\\\"> </span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<label data-toggle=\\\"tooltip\\\" data-placement=\\\"bottom\\\" data-bind=\\\"text: Name, tooltip: { content: Description ? Description : Name }\\\"></label> <input data-bind=\\\"textInput: Value, attr: { title: Value, disabled: Disabled, type: Type }\\\" class=\\\"form-control input-sm\\\" style=\\\"width:32%;max-width:215px;height:34px\\\"> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as moment from \"moment\";\r\n\r\nimport { PersonalSettingsModel } from 'Core/ProfilePage/PersonalSettings/Models/PersonalSettingsModel';\r\n\r\nimport Template from 'Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/Time/Templates/Time.html'\r\nko.templates['Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/Time/Templates/Time'] = Template;\r\n\r\n\r\nexport class Time {\r\n Value: KnockoutObservable<string | number | boolean>;\r\n HasChanges: KnockoutObservable<boolean>;\r\n Disabled: boolean;\r\n Name: string;\r\n Id: number;\r\n Description: string;\r\n ChangeHandler: any;\r\n PersonalSettingsInstance: any;\r\n\r\n constructor(model: PersonalSettingsModel, changeHandler, PersonalSettingsInstance) {\r\n this.Value = ko.observable(model.Value);\r\n this.Name = model.TranslatedName ? model.TranslatedName : model.Name;\r\n this.Disabled = model.LockToDefault;\r\n this.Id = model.Id;\r\n this.Description = model.DescriptionTranslation ? model.DescriptionTranslation : model.Description;\r\n this.HasChanges = ko.observable(false);\r\n this.ChangeHandler = changeHandler;\r\n this.PersonalSettingsInstance = PersonalSettingsInstance;\r\n }\r\n\r\n DateChanged(event): void {\r\n const newDate = event ? moment(event).format('HH:mm') : null;\r\n this.Value(newDate);\r\n\r\n if (this.HasChanges()) {\r\n this.ChangeHandler.call(this.PersonalSettingsInstance);\r\n } else {\r\n this.HasChanges(true);\r\n }\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/Time/Templates/Time';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"datetime-control-container\\\"> <label data-toggle=\\\"tooltip\\\" data-placement=\\\"bottom\\\" data-bind=\\\"text: Name, attr: {title: Description}\\\"></label> <div data-bind=\\\"datetimepicker: {\\r\\n value: Value,\\r\\n onUpdate: $data.DateChanged.bind($data),\\r\\n\\t\\t\\t\\t\\t\\tonClear: $data.DateChanged.bind($data, null),\\r\\n notFormatted: true,\\r\\n options: {\\r\\n format: 'HH:mm',\\r\\n widgetPositioning: {\\r\\n horizontal: 'right',\\r\\n vertical: 'bottom',\\r\\n forceParse: false\\r\\n }\\r\\n }\\r\\n }\\\" class=\\\"input-group date form_datetime date-time-control control record-field with-label\\\"> <input autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"control form-control record-field datepickerinput\\\" data-bind=\\\"attr: {'disabled': Disabled}, value: Value\\\"> <div class=\\\"datetime-controls\\\"> <button class=\\\"btn default glyphicon glyphicon-trash date-remove\\\" data-bind=\\\"attr: {'disabled': Disabled}\\\"></button> <button class=\\\"input-group-addon custom\\\"> <span class=\\\"btn default date-set glyphicon glyphicon-time\\\"></span> </button> </div> </div> </div>\";\n// Exports\nexport default code;","import {deserialize, deserializeAs, serialize} from 'libs/cerialize';\r\n\r\nexport class PersonalSettingsModel {\r\n\t@deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tValue: string | boolean | number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tDescription: string;\r\n\r\n\t@deserialize\r\n\tDescriptionTranslation: string;\r\n\r\n\t@deserialize\r\n\tKeepInSession: boolean;\r\n\r\n\t@deserialize\r\n\tLockToDefault: boolean;\r\n\r\n}\r\n\r\nexport class PersonalSettingsUpdateModel {\r\n\r\n\t@serialize\r\n\tId: number;\r\n\r\n\t@serialize\r\n\tValue: string | boolean | number;\r\n\r\n}","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport { PersonalSettingsModel, PersonalSettingsUpdateModel } from 'Core/ProfilePage/PersonalSettings/Models/PersonalSettingsModel';\r\n\r\nexport class PersonalSettingsStore {\r\n\tstatic GetPersonalSettingsModel(): P.Promise<PersonalSettingsModel> {\r\n\t\tconst deferredResult = P.defer<PersonalSettingsModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GlobalsApi/GetUserGlobals',\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(globals => deferredResult.resolve(this.Deserialize(globals)))\r\n\t\t\t.fail(err => this.GetResponseError(err, 'Error getting personal settings'));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateGlobals(params: PersonalSettingsUpdateModel[]): P.Promise<void> {\r\n\t\tconst deferredResult = P.defer<void>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GlobalsApi/UpdateGlobals',\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: {UserGlobals: params}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(() => deferredResult.resolve(null))\r\n\t\t\t.fail(err => this.GetResponseError(err, 'Error updating personal settings'));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): PersonalSettingsModel {\r\n\t\tconst model = GenericDeserialize<PersonalSettingsModel>(jsonObject, PersonalSettingsModel);\r\n\t\treturn model;\r\n\t}\r\n\r\n\tprivate static GetResponseError(err: P.Rejection, generalError: string) {\r\n\t\tif (err.status === 400) {\r\n\t\t\treturn JSON.parse(err.message).Message;\r\n\t\t}\r\n\r\n\t\treturn generalError;\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"afterRender: $data.AfterRender.bind($data)\\\" class=\\\"theme-builder-container clearfix\\\"> <div class=\\\"profile-content\\\"> <div class=\\\"c-content-contact-1 c-opt-1\\\"> <div class=\\\"row\\\"> <div class=\\\"col-lg-12 col-md-12\\\"> <div class=\\\"c-body license-holder-container clearfix\\\"> <div class=\\\"c-section\\\"> <h3><!-- ko text: _labels.GLOBAL_SETTINGS_LABEL --><!-- /ko --></h3> </div> <div class=\\\"c-section globals-controls-holder\\\"> <!-- ko foreach: Controls --> <div class=\\\"globals-controls-container\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"c-section global-buttons-container\\\"> <button data-bind=\\\"enable: _hasChanges, text: _saveButtonLabel, click: Update\\\" class=\\\"btn green savePersonalGlobalsSettings\\\"><i class=\\\"fa fa-save\\\"></i></button> </div> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {YesNo} from 'Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/YesNo/YesNo';\r\nimport {Text} from 'Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/Text/Text';\r\nimport {Time} from \"Core/ProfilePage/PersonalSettings/PersonalSettingsEditors/Time/Time\";\r\nimport {UserManager} from \"User/UserManager\";\r\nimport {GlobalManager} from 'Core/GlobalManager/GlobalManager';\r\nimport {GlobalModel} from 'Core/GlobalManager/Models/GlobalModel';\r\nimport {GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {NOTIFICATIONS, LABELS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\n\r\nimport {PersonalSettingsStore} from 'Core/ProfilePage/PersonalSettings/Stores/PersonalSettingsStore';\r\nimport {PersonalSettingsModel} from 'Core/ProfilePage/PersonalSettings/Models/PersonalSettingsModel';\r\n\r\nimport PersonalSettingsTemplate from 'Core/ProfilePage/PersonalSettings/Templates/PersonalSettings.html';\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\n\r\nko.templates['Core/ProfilePage/PersonalSettings/Templates/PersonalSettings'] = PersonalSettingsTemplate;\r\n\r\nexport class PersonalSettings {\r\n private _el: HTMLElement;\r\n private _models: KnockoutObservableArray<PersonalSettingsModel>;\r\n private _controls: KnockoutObservableArray<any>;\r\n private _hasChanges: KnockoutObservable<boolean>;\r\n private _databaseName: string;\r\n private _saveButtonLabel: string;\r\n private _labels = LABELS;\r\n\r\n\r\n constructor() {\r\n this._el = null;\r\n this._models = ko.observableArray([]);\r\n this._controls = ko.observableArray([]);\r\n\t\tthis._hasChanges = ko.observable(false);\r\n\t\tthis._databaseName = UserManager.Instance.CurrentUser.DbName;\r\n this._saveButtonLabel = LABELS.SAVE;\r\n this.Init();\r\n }\r\n\r\n Init() {\r\n BlockUI.Block();\r\n PersonalSettingsStore.GetPersonalSettingsModel()\r\n .always(() => BlockUI.Unblock())\r\n .then((model: any) => {\r\n this._models(model);\r\n this._models().map((model) => {\r\n switch (model.TypeName) {\r\n case 'Text':\r\n this._controls.push(new Text(model, this.changesHadler, this));\r\n break;\r\n case 'Integer':\r\n this._controls.push(new Text(model, this.changesHadler, this));\r\n break;\r\n case 'YesNo':\r\n this._controls.push(new YesNo(model, this.changesHadler, this));\r\n break;\r\n case 'Time':\r\n this._controls.push(new Time(model, this.changesHadler, this));\r\n break;\r\n default:\r\n this._controls.push(new Text(model, this.changesHadler, this));\r\n }\r\n\r\n });\r\n }).fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/ProfilePage/PersonalSettings/Templates/PersonalSettings';\r\n }\r\n\r\n\r\n changesHadler() {\r\n this._hasChanges(true);\r\n }\r\n\r\n @enumerable get Controls(): KnockoutObservableArray<any> {\r\n return this._controls;\r\n }\r\n\r\n Update() {\r\n this._hasChanges(false);\r\n BlockUI.Block();\r\n const dataToUpdate = this.Controls()\r\n .filter((control) => {\r\n return control.HasChanges();\r\n }).map(control => (\r\n {\r\n Id: control.Id,\r\n Value: typeof control.Value() === 'boolean' ? Number(control.Value()) : control.Value()\r\n }\r\n ));\r\n\r\n PersonalSettingsStore.UpdateGlobals(dataToUpdate)\r\n .always(() => BlockUI.Unblock())\r\n .then(() => {\r\n dataToUpdate.map((global) => {\r\n const globalName = _.where(this._models(), {Id: global.Id})[0].Name;\r\n GlobalManager.Instance.AddGlobal({Name: globalName, Value: global.Value} as GlobalModel);\r\n });\r\n });\r\n\r\n this.SaveLanguage();\r\n new Notifier().Success(NOTIFICATIONS.GLOBALS_UPDATED);\r\n }\r\n\r\n\tSaveLanguage() {\r\n\t\tconst languageControl = _.find(this.Controls(), control => control.Name === GLOBALS.DESKTOP_LANGUAGE);\r\n\r\n\t\tif (!languageControl || !languageControl.HasChanges()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar language = Lockr.get<any>(LOCAL_STORAGE.LANGUAGE);\r\n\t\tif (language) {\r\n\t\t\ttry {\r\n\t\t\t\tlanguage = JSON.parse(language);\r\n\t\t\t} catch (err) {\r\n\t\t\t\tlanguage = {};\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tlanguage = {};\r\n\t\t}\r\n\r\n\t\tlanguage[this._databaseName] = languageControl.Value();\r\n\t\tLockr.set(LOCAL_STORAGE.LANGUAGE, JSON.stringify(language));\r\n\t}\r\n\r\n AfterUpload(file, data) {\r\n\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n this._el = el[0];\r\n }\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {NotificationDesignerModel} from 'Core/ProfilePage/NotificationDesigner/Models/NotificationDesignerModel';\r\n\r\nexport class NotificationDesignerStore {\r\n\tstatic GetSettings() {\r\n\t\tconst deferredResult = P.defer<NotificationDesignerModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/UserApi/GetNotificationSettings',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((response) => {\r\n\t\t\t\tdeferredResult.resolve(response);\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tdeferredResult.reject(error);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic SaveSettings(params: NotificationDesignerModel) {\r\n\t\tconst deferredResult = P.defer<NotificationDesignerModel>();\r\n\r\n\t\tRequest\r\n\t\t\t.For('/api/UserApi/SetNotificationSettings')\r\n\t\t\t.Post(params)\r\n\t\t\t.then(response => {\r\n\t\t\t\tdeferredResult.resolve(response);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(error);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","export class NOTIFICATION_ACTIONS {\r\n\tstatic GET(labels) {\r\n\t return [\r\n\t\t {Name: labels.RECORD_VIEWED_LABEL, Weight: 1},\r\n\t\t {Name: labels.RECORD_EDITED_LABEL, Weight: 2},\r\n\t\t {Name: labels.RECORD_DELETED_LABEL, Weight: 4},\r\n\t\t {Name: labels.LINK_CREATED_LABEL, Weight: 8},\r\n\t\t {Name: labels.LINK_EDITED_LABEL, Weight: 16},\r\n\t\t {Name: labels.LINK_DELETED_LABEL, Weight: 32}\r\n\t ]\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {\r\n\tNotificationDesignerModel,\r\n\tEntityModel\r\n} from 'Core/ProfilePage/NotificationDesigner/Models/NotificationDesignerModel';\r\nimport {\r\n\tEntityViewModel,\r\n\tEntityActionModel\r\n} from 'Core/ProfilePage/NotificationDesigner/Models/NotificationDesignerViewModel';\r\nimport {NotificationDesignerStore} from 'Core/ProfilePage/NotificationDesigner/Stores/NotificationDesignerStore';\r\nimport {NOTIFICATION_ACTIONS} from 'Core/ProfilePage/NotificationDesigner/Constants/Constants';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as CONFIRMATION_EVENTS,\r\n\tTypes as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\n\r\nimport NotificationDesignerTemplate from 'Core/ProfilePage/NotificationDesigner/Templates/NotificationDesigner.html';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nko.templates['Core/ProfilePage/NotificationDesigner/Templates/NotificationDesigner'] = NotificationDesignerTemplate;\r\n\r\nexport class NotificationDesigner {\r\n\tprivate _initialEntities: EntityModel[];\r\n\tprivate _entities: KnockoutObservableArray<EntityViewModel>;\r\n\tprivate _notificationActions: any[];\r\n\tprivate _saveModel: NotificationDesignerModel;\r\n\tprivate _hasUnsavedChanges: KnockoutObservable<boolean>;\r\n\tprivate _isListNotEmpty: KnockoutComputed<boolean>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor() {\r\n\t\tthis._entities = ko.observableArray([]);\r\n\t\tthis._notificationActions = NOTIFICATION_ACTIONS.GET(this._labels);\r\n\t\tthis._hasUnsavedChanges = ko.observable(false);\r\n\t\tthis._isListNotEmpty = ko.computed(() => !!this._entities().length);\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tInit() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tNotificationDesignerStore.GetSettings()\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis._initialEntities = data.Settings.map((el) => el);\r\n\t\t\t\tthis._entities(this.MapToViewModel(data.Settings));\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t});\r\n\t}\r\n\r\n\tMapToViewModel(model: EntityModel[]): EntityViewModel[] {\r\n\t\tfunction convertDecToViewValue(decimal: number, maxBinLength?: number): string[] {\r\n\t\t\tconst binValue = decimal.toString(2).split('').reverse();\r\n\r\n\t\t\twhile (binValue.length < maxBinLength) {\r\n\t\t\t\tbinValue.push('0');\r\n\t\t\t}\r\n\r\n\t\t\treturn binValue;\r\n\t\t}\r\n\r\n\t\tconst highestWeight = this._notificationActions[this._notificationActions.length - 1].Weight;\r\n\t\tconst binValueLength = convertDecToViewValue(highestWeight).length;\r\n\r\n\t\treturn model.map((entity) => {\r\n\t\t\tconst binViewValue: string[] = convertDecToViewValue(entity.Value, binValueLength);\r\n\r\n\t\t\tconst actionsMapped: EntityActionModel[] = binViewValue.map((value, index) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tWeight: this._notificationActions[index].Weight,\r\n\t\t\t\t\tIsChecked: ko.observable(value === '1')\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn {\r\n\t\t\t\tId: entity.EntityId,\r\n\t\t\t\tName: entity.EntityName,\r\n\t\t\t\tActions: actionsMapped\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tChangeSettingsValue(entity, action, newState): boolean {\r\n\t\taction.IsChecked(newState);\r\n\r\n\t\tthis.CheckChangesExistance();\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tMapToSaveModel(viewModel: EntityViewModel[]): NotificationDesignerModel {\r\n\t\tconst settings = viewModel.map((entity) => {\r\n\t\t\tconst binaryValue =\r\n\t\t\t\tentity.Actions\r\n\t\t\t\t\t.map((action) => action.IsChecked() ? '1' : '0')\r\n\t\t\t\t\t.reverse()\r\n\t\t\t\t\t.join('');\r\n\r\n\t\t\tconst decValue = Number.parseInt(binaryValue, 2);\r\n\r\n\t\t\tconst saveEntity: EntityModel = {\r\n\t\t\t\tEntityId: entity.Id,\r\n\t\t\t\tEntityName: entity.Name,\r\n\t\t\t\tValue: decValue\r\n\t\t\t};\r\n\r\n\t\t\treturn saveEntity;\r\n\t\t});\r\n\r\n\t\treturn {\r\n\t\t\tSettings: settings\r\n\t\t};\r\n\t}\r\n\r\n\tSave(): void {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tNotificationDesignerStore.SaveSettings(this._saveModel)\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis._hasUnsavedChanges(false);\r\n\t\t\t\tthis._initialEntities = this._saveModel.Settings;\r\n\r\n\t\t\t\tnew Notifier().Success('Settings saved');\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tthis.RevertChanges();\r\n\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t});\r\n\t}\r\n\r\n\tCheckChangesExistance(): void {\r\n\t\tthis._saveModel = this.MapToSaveModel(this._entities());\r\n\r\n\t\tconst changedElementsCount = this._saveModel.Settings.filter((el, index) => {\r\n\t\t\treturn el.Value !== this._initialEntities[index].Value;\r\n\t\t}).length;\r\n\r\n\t\tthis._hasUnsavedChanges(!!changedElementsCount);\r\n\t}\r\n\r\n\tRevertChanges(): void {\r\n\t\tconst confirmCallback = () => {\r\n\t\t\tthis._entities(this.MapToViewModel(this._initialEntities));\r\n\t\t\tthis._hasUnsavedChanges(false);\r\n\t\t};\r\n\r\n\t\tconst discardCallback = () => {\r\n\t\t\treturn;\r\n\t\t};\r\n\r\n\t\tconst message = 'Are you sure to revert all unsaved changes?';\r\n\r\n\t\tthis.ConfirmationDialog(message, confirmCallback, discardCallback);\r\n\t}\r\n\r\n\tConfirmationDialog(message: string, confirmCallback, discardCallback): void {\r\n\t\tconst dialog = new ConfirmationDialog({\r\n\t\t\tText: message,\r\n\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\tWidth: 500,\r\n\t\t\tMinHeight: 160\r\n\t\t});\r\n\r\n\t\tdialog.On(CONFIRMATION_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\tconfirmCallback();\r\n\t\t});\r\n\r\n\t\tdialog.On(CONFIRMATION_EVENTS.DISCARD_SELECTED, this, () => {\r\n\t\t\tdiscardCallback();\r\n\t\t});\r\n\r\n\t\tdialog.Show();\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/ProfilePage/NotificationDesigner/Templates/NotificationDesigner';\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"notification-designer\\\"> <!-- ko if: _isListNotEmpty --> <div class=\\\"buttons-block ActionBarBlock\\\"> <a class=\\\"btn green subFormControl save-button\\\" data-bind=\\\"click: Save,\\r\\n\\t\\t\\t \\t\\t css: {disabled: !_hasUnsavedChanges()}\\\"> <i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --> </a> <!--TODO: fix revert button--> <!-- ko if: false --> <a class=\\\"btn red subFormControl revert-button\\\" data-bind=\\\"click: RevertChanges.bind($data),\\r\\n\\t\\t\\t\\t\\t css: {disabled: !_hasUnsavedChanges()}\\\"> <i class=\\\"fa fa-trash\\\"></i> <!-- ko text: _labels.REVERT --><!-- /ko --> </a> <!-- /ko --> </div> <div class=\\\"table-wrapper\\\"> <table class=\\\"settings-table table table-striped table-hover\\\"> <thead> <tr> <th class=\\\"thead-data\\\"></th> <!-- ko foreach: _notificationActions --> <!-- ko if: Weight !== 1 --> <th class=\\\"thead-data\\\" data-bind=\\\"text: Name\\\"></th> <!-- /ko --> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: _entities --> <tr> <td class=\\\"tdata\\\" data-bind=\\\"text: Name\\\"></td> <!-- ko foreach: Actions --> <!-- ko if: Weight !== 1 --> <td class=\\\"tdata\\\"> <input data-bind=\\\"click: $parents[1].ChangeSettingsValue.bind($parents[1], $parent, $data, !IsChecked()),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t checked: IsChecked()\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko --> <!-- ko ifnot: _isListNotEmpty --> <h2>You don't have any entities</h2> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class ProfilePasswordModel {\r\n\t@deserialize\r\n\tNewPassword: string;\r\n\r\n\t@deserialize\r\n\tCurrentPassword: string;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport * as ko from 'knockout';\r\n\r\nexport class ProfileCardViewModel {\r\n\tProfileData: ProfileData;\r\n\tPasswordData: PasswordData;\r\n}\r\n\r\nexport class ProfileData {\r\n\tUserId: number;\r\n\tName: string;\r\n\tFirstName: string;\r\n\tMiddleName: string;\r\n\tAvatarData: string;\r\n\r\n\tget NameTitle() {\r\n\t\treturn `${this.FirstName} ${this.Name}`;\r\n\t}\r\n}\r\n\r\nexport class PasswordData {\r\n\tUserId: number;\r\n\tNewPassword: KnockoutObservable<string>;\r\n\tCurrentPassword: KnockoutObservable<string>;\r\n\tRetypeNewPassword: KnockoutObservable<string>;\r\n\r\n\tconstructor() {\r\n\t\tthis.NewPassword = ko.observable(null);\r\n\t\tthis.CurrentPassword = ko.observable(null);\r\n\t\tthis.RetypeNewPassword = ko.observable(null);\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class ProfileCardModel {\r\n\t\r\n\t@deserialize\r\n\tFirstName: string;\r\n\r\n\t@deserialize\r\n\tMiddleName: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tUserId: number;\r\n\r\n\t@deserialize\r\n\tAvatarData: string;\r\n\r\n\tget NameTitle(){\r\n\t\treturn `${this.FirstName} ${this.Name}`;\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {ProfileCardModel} from 'Core/ProfilePage/ProfileCard/Models/ProfileCardModel';\r\nimport {ProfilePasswordModel} from 'Core/ProfilePage/ProfileCard/Models/ProfilePasswordModel';\r\n\r\n\r\n\r\nexport class ProfileCardStore {\r\n\tstatic Get(): P.Promise<ProfileCardModel> {\r\n\t\tvar deferredResult = P.defer<ProfileCardModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/UserApi/GetUserProfile\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data.Data));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic ChangePassword(params: ProfilePasswordModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<ProfileCardModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/UserApi/ChangePassword\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): ProfileCardModel {\r\n\t\tvar model = GenericDeserialize<ProfileCardModel>(jsonObject, ProfileCardModel);\r\n\t\treturn model;\r\n\t}\r\n\t\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as $ from 'jquery';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { EVENTS } from 'Core/ProfilePage/ProfileCard/Events/Events';\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { UserVarsManager } from 'Core/UserVarsManager/UserVarsManager';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { ProfileCardModel } from 'Core/ProfilePage/ProfileCard/Models/ProfileCardModel';\r\nimport { ProfilePasswordModel } from 'Core/ProfilePage/ProfileCard/Models/ProfilePasswordModel';\r\nimport {\r\n\tProfileCardViewModel,\r\n\tProfileData,\r\n\tPasswordData\r\n} from 'Core/ProfilePage/ProfileCard/Models/ProfileCardViewModel';\r\nimport { ProfileCardStore } from 'Core/ProfilePage/ProfileCard/Stores/ProfileCardStore';\r\nimport {PASSWORD} from 'Core/Constant';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport ProfileCardTemplate from 'Core/ProfilePage/ProfileCard/Templates/ProfileCard.html';\r\nko.templates['Core/ProfilePage/ProfileCard/Templates/ProfileCard'] = ProfileCardTemplate;\r\n\r\nexport class ProfileCard extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _model: KnockoutObservable<ProfileCardViewModel>;\r\n\tprivate _labels = LABELS;\r\n\t_el: HTMLElement;\r\n\tprivate _toggleCurrentPassword: KnockoutObservable<boolean>;\r\n\tprivate _toggleNewPassword: KnockoutObservable<boolean>;\r\n\tprivate _toggleRetypeNewPassword: KnockoutObservable<boolean>;\r\n\tprivate _userImage: KnockoutObservable<string>\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis._model = ko.observable(null);\r\n\t\tthis._el = null;\r\n\t\tthis.AddEvent(\"IMAGE_CLICKED\");\r\n\t\tthis._toggleCurrentPassword = ko.observable(false);\r\n\t\tthis._toggleNewPassword = ko.observable(false);\r\n\t\tthis._toggleRetypeNewPassword = ko.observable(false);\r\n\t\tthis._userImage = ko.observable(this.GetDefaultUserImage());\r\n\t}\r\n\r\n\tInit() {\r\n\r\n\t\tBlockUI.Block({ Target: this._el });\r\n\t\tvar self = this;\r\n\t\tProfileCardStore.Get()\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock(this._el);\r\n\t\t\t})\r\n\t\t\t.then(profileCardModel => self.Setup(profileCardModel));\r\n\t}\r\n\r\n\tRenderByTargetId(target: string): void {\r\n\t\tko.cleanNode(document.getElementById(target));\r\n\t\tko.applyBindings(this, document.getElementById(target));\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/ProfilePage/ProfileCard/Templates/ProfileCard';\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tthis._el = el[0];\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tSetup(model: ProfileCardModel) {\r\n\t\tlet viewModel = new ProfileCardViewModel();\r\n\t\tviewModel.ProfileData = model ? this.MapProfileData(model) : null;\r\n\t\tviewModel.PasswordData = new PasswordData();\r\n\r\n\t\tthis._model(viewModel);\r\n\t}\r\n\r\n\r\n\tValidate(model: ProfilePasswordModel, retypeNewPassword: string) {\r\n\t\tvar self = this;\r\n\r\n\t\tif (!model.CurrentPassword || model.CurrentPassword === '') {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.CURRENT_PASSWORD_IS_REQUIRED);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!model.NewPassword || model.NewPassword === '') {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.NEW_PASSWORD_IS_REQUIRED);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (model.NewPassword && model.NewPassword.length < PASSWORD.MinimumLength) {\r\n\t\t\tlet passwordValidationMessage = NOTIFICATIONS.INCORECT_PASSWORD_LENGTH.replace('{MinimumLength}', PASSWORD.MinimumLength.toString());\r\n\t\t\tnew Notifier().Warning(passwordValidationMessage);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (model.NewPassword !== retypeNewPassword) {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.RE_TYPE_PASSWORD_NOT_MATCH);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\tTogglePassword(toggle){\r\n\t\ttoggle(!toggle());\r\n\t}\r\n\r\n\tSaveButtonClicked() {\r\n\t\tlet passwordModel = new ProfilePasswordModel();\r\n\t\tvar self = this;\r\n\r\n\t\tconst passwordData = this._model().PasswordData;\r\n\t\tpasswordModel.NewPassword = passwordData.NewPassword();\r\n\t\tpasswordModel.CurrentPassword = passwordData.CurrentPassword();\r\n\r\n\t\tif (this.Validate(passwordModel, passwordData.RetypeNewPassword()) === false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tProfileCardStore.ChangePassword(passwordModel).then(result => {\r\n\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\tnew Notifier().Success(NOTIFICATIONS.PASSWORD_CHANGED);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tProfileImageClicked() {\r\n\t\tthis.Trigger(EVENTS.IMAGE_CLICKED);\r\n\t}\r\n\r\n\tprivate MapProfileData(model: ProfileCardModel): ProfileData {\r\n\t\tconst profileData = new ProfileData();\r\n\r\n\t\tprofileData.FirstName = model.FirstName;\r\n\t\tprofileData.MiddleName = model.MiddleName;\r\n\t\tprofileData.Name = model.Name;\r\n\t\tprofileData.UserId = model.UserId;\r\n\t\tprofileData.AvatarData = model.AvatarData;\r\n\r\n\t\treturn profileData;\r\n\t}\r\n\r\n\tGetDefaultUserImage(): string {\r\n\t\treturn \"data:image/jpeg;base64,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\";\r\n\t}\r\n\r\n\t//UserProfile.prototype.SavePersonalSettings = (function () {\r\n\r\n\t//\tvar self = this;\r\n\r\n\t//\tvar requestModel = {\r\n\t//\t\tFirstName: this.$firstNameInput.val(),\r\n\t//\t\tMiddleName: this.$middleNameInput.val()\r\n\t//\t}\r\n\r\n\t//\t$.ajax({\r\n\t//\t\turl: ApiUrl.UpdateProfile,\r\n\t//\t\ttype: 'POST',\r\n\t//\t\tdata: requestModel\r\n\t//\t}).success(function (result) {\r\n\t//\t\tif (result.IsSuccessfull) {\r\n\t//\t\t\tself._notifier.Success('Profile updated');\r\n\t//\t\t\t$(\".profile-usertitle-name\").html(requestModel.FirstName + ' ' + requestModel.MiddleName);\r\n\t//\t\t}\r\n\t//\t});\r\n\r\n\t//\tvar userVarsManager = new UserVarsManager();\r\n\t//\tvar data = { userVars: JSON.stringify(userVarsManager.GetAll()) }\r\n\t//\t$.ajax({\r\n\t//\t\turl: ApiUrl.UpdateUserVariables,\r\n\t//\t\ttype: 'POST',\r\n\t//\t\tdata: data\r\n\t//\t}).success(function (result) {\r\n\t//\t\tif (result.IsSuccessfull) {\r\n\t//\t\t\tself._notifier.Success('User variables updated');\r\n\t//\t\t}\r\n\t//\t});\r\n\t//});\r\n} ","// Module\nvar code = \"<div data-bind=\\\"afterRender: $data.AfterRender.bind($data)\\\" class=\\\"profile-card-container clearfix\\\"> <!-- ko with: _model --> <div class=\\\"profile-sidebar\\\"> <div class=\\\"portlet light profile-sidebar-portlet\\\"> <!-- ko if: ProfileData --> <!-- ko with: ProfileData --> <div class=\\\"profile-userpic\\\"> <img data-bind=\\\"attr: { src: AvatarData ? AvatarData : $parents[1]._userImage }, click: $parents[1].ProfileImageClicked.bind($parents[1])\\\" class=\\\"img-responsive\\\" alt=\\\"\\\"> </div> <div class=\\\"profile-usertitle\\\"> <div class=\\\"profile-usertitle-name\\\" data-bind=\\\"text: NameTitle, click: $parents[1].ProfileImageClicked.bind($parents[1])\\\"></div> <div class=\\\"profile-usertitle-job\\\"></div> </div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: ProfileData --> <div class=\\\"alert alert-warning\\\"> <h1> Your contact was not found </h1> </div> <!-- /ko --> </div> </div> <form class=\\\"change-password\\\" action=\\\"#\\\"> <!-- ko with: PasswordData --> <div class=\\\"form-group\\\"> <label for=\\\"CurrentPassword\\\" class=\\\"control-label\\\"><!-- ko text: $parents[1]._labels.CURRENT_PASSWORD --><!-- /ko --></label> <div class=\\\"input-group profileInput\\\"> <input id=\\\"CurrentPassword\\\" class=\\\"form-control\\\" data-bind=\\\"value: CurrentPassword, attr: { type: $parents[1]._toggleCurrentPassword() ? 'text' : 'password'}\\\"> <button data-bind=\\\"click: $parents[1].TogglePassword.bind($parents[1], $parents[1]._toggleCurrentPassword)\\\" type=\\\"button\\\" class=\\\"btn grey\\\"> <i data-bind=\\\"css: {'fa-eye-slash': $parents[1]._toggleCurrentPassword, 'fa-eye': !$parents[1]._toggleCurrentPassword()}\\\" class=\\\"fa\\\" aria-hidden=\\\"true\\\"> </i> </button> </div> </div> <div class=\\\"form-group\\\"> <label for=\\\"NewPassword\\\" class=\\\"control-label\\\"><!-- ko text: $parents[1]._labels.NEW_PASSWORD --><!-- /ko --></label> <div class=\\\"input-group profileInput\\\"> <input id=\\\"NewPassword\\\" class=\\\"form-control\\\" data-bind=\\\"value: NewPassword, attr: { type: $parents[1]._toggleNewPassword() ? 'text' : 'password'}\\\"> <button data-bind=\\\"click: $parents[1].TogglePassword.bind($parents[1], $parents[1]._toggleNewPassword)\\\" type=\\\"button\\\" class=\\\"btn grey\\\"> <i data-bind=\\\"css: {'fa-eye-slash': $parents[1]._toggleNewPassword, 'fa-eye': !$parents[1]._toggleNewPassword()}\\\" class=\\\"fa\\\" aria-hidden=\\\"true\\\"> </i> </button> </div> </div> <div class=\\\"form-group\\\"> <label for=\\\"RetypeNewPassword\\\" class=\\\"control-label\\\"><!-- ko text: $parents[1]._labels.RETYPE_NEW_PASSWORD --><!-- /ko --></label> <div class=\\\"input-group profileInput\\\"> <input id=\\\"RetypeNewPassword\\\" type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"value: RetypeNewPassword, attr: { type: $parents[1]._toggleRetypeNewPassword() ? 'text' : 'password'}\\\"> <button data-bind=\\\"click: $parents[1].TogglePassword.bind($parents[1], $parents[1]._toggleRetypeNewPassword)\\\" type=\\\"button\\\" class=\\\"btn grey\\\"> <i data-bind=\\\"css: {'fa-eye-slash': $parents[1]._toggleRetypeNewPassword, 'fa-eye': !$parents[1]._toggleRetypeNewPassword()}\\\" class=\\\"fa\\\" aria-hidden=\\\"true\\\"> </i> </button> </div> </div> <!-- /ko --> <div class=\\\"margin-top-10\\\"> <a href=\\\"javascript:;\\\" class=\\\"btn green-haze\\\" id=\\\"ChangePasswordBtn\\\" data-bind=\\\"click: $parent.SaveButtonClicked.bind($parent)\\\"> <!-- ko text: $parent._labels.SAVE --><!-- /ko --> </a> </div> </form> <!-- /ko --> </div>\";\n// Exports\nexport default code;","export const EVENTS = {\r\n\tIMAGE_CLICKED: 'IMAGE_CLICKED'\r\n}","import * as ko from 'knockout';\r\n\r\nexport class RemoteDatabaseConnection {\r\n private _connected: KnockoutObservable<boolean>;\r\n\r\n constructor(public Id: number, public Name: string, public Url: string, public RemoteUserName: string, connected: boolean) {\r\n this._connected = ko.observable(connected);\r\n }\r\n\r\n get Connected() {\r\n return this._connected();\r\n }\r\n\r\n set Connected(value: boolean) {\r\n this._connected(value);\r\n }\r\n}","import {RemoteDatabaseConnectionDto} from '../Stores/Models/RemoteDatabaseConnectionDto';\r\nimport {RemoteDatabaseConnection} from '../Models/RemoteDatabaseConnection';\r\n\r\nexport class RemoteDatabaseConnectionMappings {\r\n MapToRemoteDatabaseConnections(dtos: RemoteDatabaseConnectionDto[]): RemoteDatabaseConnection[] {\r\n return dtos.map(dto => this.MapToRemoteDatabaseConnection(dto));\r\n }\r\n\r\n MapToRemoteDatabaseConnection(dto: RemoteDatabaseConnectionDto): RemoteDatabaseConnection {\r\n return new RemoteDatabaseConnection(dto.Id, dto.Name, dto.Url, dto.RemoteUserName, dto.Connected);\r\n }\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {RemoteDatabaseConnectionDto} from './Models/RemoteDatabaseConnectionDto';\r\nimport {GetRemoteDatabaseConnectionUrlDto} from './Models/GetRemoteDatabaseConnectionUrlDto';\r\nimport {SetConnectedDto} from './Models/SetConnectedDto';\r\nimport {DisconnectDto} from './Models/DisconnectDto';\r\nimport { BlockUI } from '../../../Common/BlockUi';\r\n\r\nexport class RemoteDatabasesStore {\r\n GetConnections(): P.Promise<RemoteDatabaseConnectionDto[]> {\r\n const deferred = P.defer<RemoteDatabaseConnectionDto[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/RemoteDatabaseConnectionsApi/GetConnections',\r\n type: 'GET'\r\n }\r\n }).then(connections => {\r\n deferred.resolve(connections)\r\n }).fail(err => {\r\n const error = this.GetResponseError(err, 'Error getting remote connections');\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetConnectionUrl(params: GetRemoteDatabaseConnectionUrlDto) {\r\n const deferred = P.defer<string>();\r\n\r\n BlockUI.Block();\r\n Request.Send({\r\n proxy: {\r\n url: '/api/RemoteDatabaseConnectionsApi/GetConnectionUrl',\r\n type: 'POST'\r\n },\r\n params\r\n }).then(connectionUrl => {\r\n deferred.resolve(connectionUrl);\r\n }).fail(err => {\r\n const error = this.GetResponseError(err, 'Error getting connection URL');\r\n deferred.reject(error);\r\n }).always(()=>BlockUI.Unblock());\r\n\r\n return deferred.promise();\r\n }\r\n\r\n SetConnected(params: SetConnectedDto) {\r\n Request.Send({\r\n proxy: {\r\n url: '/api/RemoteDatabaseConnectionsApi/SetConnected',\r\n type: 'POST'\r\n },\r\n params\r\n });\r\n }\r\n\r\n Disconnect(params: DisconnectDto) {\r\n BlockUI.Block();\r\n Request.Send({\r\n proxy: {\r\n url: '/api/RemoteDatabaseConnectionsApi/Disconnect',\r\n type: 'POST'\r\n },\r\n params\r\n }).always(()=>BlockUI.Unblock());\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","export class GetRemoteDatabaseConnectionUrlDto {\r\n constructor(public ConnectionId: number, public ClientId: string, public ClientSecret: string) {\r\n }\r\n}","export class SetConnectedDto {\r\n constructor(public ConnectionId: number, public Connected: boolean) {\r\n }\r\n}","export class DisconnectDto {\r\n constructor(public ConnectionId: number, public ClientId: string, public ClientSecret: string) {\r\n }\r\n}","import * as ko from 'knockout';\r\nimport _ from 'underscore';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {CookieManager} from 'Core/Common/CookieManager';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {SignalRNotificationManager} from 'Core/Components/SignalR/SignalRNotificationManager';\r\n\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\n\r\nimport {RemoteDatabaseConnection} from './Models/RemoteDatabaseConnection';\r\n\r\nimport {RemoteDatabaseConnectionMappings} from './Mappings/RemoteDatabaseConnectionMappings';\r\n\r\nimport {RemoteDatabasesStore} from './Stores/RemoteDatabasesStore';\r\nimport {AuthStore} from 'Auth/Stores/AuthStore';\r\n\r\nimport {GetRemoteDatabaseConnectionUrlDto} from './Stores/Models/GetRemoteDatabaseConnectionUrlDto';\r\nimport {SetConnectedDto} from './Stores/Models/SetConnectedDto';\r\n\r\nimport Template from './Templates/Template.html';\r\nimport {DisconnectDto} from './Stores/Models/DisconnectDto';\r\n\r\nko.templates['Core/ProfilePage/NetworkDatabases/Templates/Template'] = Template;\r\n\r\nexport class RemoteDatabases {\r\n private _el: HTMLElement;\r\n private _store: RemoteDatabasesStore;\r\n private _mappings: RemoteDatabaseConnectionMappings;\r\n\r\n private _connections: KnockoutObservableArray<RemoteDatabaseConnection>;\r\n private _anyConnection: KnockoutComputed<boolean>;\r\n private _anyConnected: KnockoutComputed<boolean>;\r\n\r\n constructor() {\r\n this._store = new RemoteDatabasesStore();\r\n this._mappings = new RemoteDatabaseConnectionMappings();\r\n\r\n this._connections = ko.observableArray([]);\r\n this._anyConnection = ko.pureComputed(() => this._connections().length > 0);\r\n this._anyConnected = ko.pureComputed(() => _.any(this._connections(), c => c.Connected));\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/ProfilePage/NetworkDatabases/Templates/Template';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n this._el = el;\r\n\r\n this.GetConnections();\r\n }\r\n\r\n Connect(connection: RemoteDatabaseConnection) {\r\n //If the database is on the same env\r\n if (document.URL.indexOf(connection.Url) > -1) {\r\n this.ConnectToAnotherDb(connection);\r\n return;\r\n }\r\n\r\n this.ConnectToSeparateEnv(connection);\r\n }\r\n\r\n Disconnect(connection: RemoteDatabaseConnection) {\r\n connection.Connected = false;\r\n\r\n const params = new DisconnectDto(connection.Id, 'WebApplicationId', 'WebApplicationSecret');\r\n this._store.Disconnect(params);\r\n }\r\n\r\n private GetConnections() {\r\n this._store.GetConnections()\r\n .then(connectionsDto => {\r\n const connections = this._mappings.MapToRemoteDatabaseConnections(connectionsDto);\r\n this._connections(connections);\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n private ConnectToAnotherDb(connection: RemoteDatabaseConnection) {\r\n BlockUI.Block();\r\n this.GetConnectionUrlPromise(connection)\r\n .then(connectionUrl => {\r\n const userVarsManager = UserVarsManager.Instance;\r\n const userVars = userVarsManager.GetAll();\r\n\r\n AuthStore.SignOut({UserVariables: userVars})\r\n .then(() => {\r\n LockManager.Instance.ReleaseAllLocks();\r\n SignalRNotificationManager.Instance.Stop();\r\n CookieManager.RemoveTokens();\r\n\r\n BlockUI.Unblock();\r\n window.open(connectionUrl, '_self');\r\n });\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(err.message)\r\n });\r\n }\r\n\r\n private ConnectToSeparateEnv(connection: RemoteDatabaseConnection) {\r\n this.GetConnectionUrlPromise(connection)\r\n .then(connectionUrl => {\r\n connection.Connected = true;\r\n\r\n const params = new SetConnectedDto(connection.Id, true);\r\n this._store.SetConnected(params);\r\n\r\n window.open(connectionUrl, '_blank');\r\n })\r\n .fail(err => new Notifier().Failed(err.message));\r\n }\r\n\r\n private GetConnectionUrlPromise(connection: RemoteDatabaseConnection) {\r\n const params = new GetRemoteDatabaseConnectionUrlDto(connection.Id, 'WebApplicationId', 'WebApplicationSecret');\r\n return this._store.GetConnectionUrl(params);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"remote-database-connections\\\"> <!--ko if: _anyConnection--> <table class=\\\"table table-striped\\\"> <thead> <tr> <th></th> <th>Database</th> <th>Url</th> <th>Remote User</th> </tr> </thead> <tbody> <!--ko foreach: _connections--> <tr> <td data-bind=\\\"click: $parent.Connect.bind($parent, $data)\\\"> <i class=\\\"fa fa-plug\\\"></i> </td> <td data-bind=\\\"text: Name\\\"></td> <td data-bind=\\\"text: Url\\\"></td> <td data-bind=\\\"text: RemoteUserName\\\"></td> </tr> <!--/ko--> </tbody> </table> <!--/ko--> <!--ko ifnot: _anyConnection--> <div class=\\\"alert alert-warning\\\"> <!-- ko text: $parent._labels.THERE_ARE_NO_REMOTE_DATABASE_CONNECTIONS --><!-- /ko --> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS} from 'Core/ProfilePage/Events/Events';\r\nimport {ThemeBuilder} from 'Core/ProfilePage/ThemeBuilder/ThemeBuilder';\r\nimport {LicenseHolder} from 'Core/ProfilePage/LicenseHolder/LicenseHolder';\r\nimport {PersonalSettings} from 'Core/ProfilePage/PersonalSettings/PersonalSettings';\r\n\r\nimport {NotificationDesigner} from 'Core/ProfilePage/NotificationDesigner/NotificationDesigner';\r\nimport {ProfileCard} from 'Core/ProfilePage/ProfileCard/ProfileCard';\r\nimport {RemoteDatabases} from 'Core/ProfilePage/NetworkDatabases/RemoteDatabases';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport ProfilePageTemplate from 'Core/ProfilePage/Templates/ProfilePage.html';\r\nimport {UserManager, UserRoles} from '../../User/UserManager';\r\n\r\nko.templates['Core/ProfilePage/Templates/ProfilePage'] = ProfilePageTemplate;\r\n\r\nexport class ProfilePage extends Event {\r\n private _themeBuilder: ThemeBuilder;\r\n private _licenseHolder: LicenseHolder;\r\n private _personalSettings: PersonalSettings;\r\n private _profileCard: ProfileCard;\r\n private _notificationDesigner: NotificationDesigner;\r\n private _remoteDatabases: RemoteDatabases;\r\n private _enabledLicenseHolder: KnockoutObservable<boolean>;\r\n private _enabledNetwork: KnockoutObservable<boolean>;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _labels = LABELS;\r\n\r\n\r\n constructor() {\r\n super()\r\n this.AddEvent(EVENTS.PROFILE_CARD_IMAGE_CLICKED);\r\n\r\n this._isReady = ko.observable(true);\r\n this._enabledLicenseHolder = ko.observable(false);\r\n this._enabledNetwork = ko.observable(false);\r\n\r\n this.Init();\r\n }\r\n\r\n\r\n Init() {\r\n this._themeBuilder = new ThemeBuilder();\r\n\r\n const isLicenseHolderVisible = UserManager.Instance.IsUserInRole(UserRoles.SuperUser) || UserManager.Instance.IsUserInRole(UserRoles.US);\r\n\r\n if (isLicenseHolderVisible) {\r\n this._enabledLicenseHolder(true);\r\n this._licenseHolder = new LicenseHolder();\r\n }\r\n\r\n this._personalSettings = new PersonalSettings();\r\n this._notificationDesigner = new NotificationDesigner();\r\n\r\n this._profileCard = new ProfileCard();\r\n this._profileCard.On('IMAGE_CLICKED', this, (eventArgs) => {\r\n this.Trigger(EVENTS.PROFILE_CARD_IMAGE_CLICKED);\r\n });\r\n\r\n const isRemoteSession = UserManager.Instance.CurrentUser.IsRemote;\r\n if (!isRemoteSession) {\r\n this._enabledNetwork(true);\r\n this._remoteDatabases = new RemoteDatabases();\r\n }\r\n }\r\n\r\n RenderByTargetId(target: string): void {\r\n ko.cleanNode(document.getElementById(target));\r\n ko.applyBindings(this, document.getElementById(target));\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/ProfilePage/Templates/ProfilePage';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n\r\n }\r\n\r\n get LicenseHolder(): LicenseHolder {\r\n return this._licenseHolder;\r\n }\r\n\r\n get PersonalSettings(): PersonalSettings {\r\n return this._personalSettings;\r\n }\r\n\r\n get ThemeBuilder(): ThemeBuilder {\r\n return this._themeBuilder;\r\n }\r\n\r\n get ProfileCard(): ProfileCard {\r\n return this._profileCard;\r\n }\r\n\r\n get RemoteDatabases(): RemoteDatabases {\r\n return this._remoteDatabases;\r\n }\r\n\r\n get NotificationDesigner(): NotificationDesigner {\r\n return this._notificationDesigner;\r\n }\r\n} ","// Module\nvar code = \"<div class=\\\"profile-content clearfix\\\" id=\\\"ProfileScreeen\\\"> <div class=\\\"tab-wrapper\\\"> <ul class=\\\"nav nav-tabs\\\"> <li class=\\\"tab active\\\"> <a href=\\\"#tab_1_1\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"true\\\"> <!-- ko text: _labels.PROFILE --><!-- /ko --> </a> </li> <li class=\\\"tab\\\"> <a href=\\\"#tab_1_2\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <!-- ko text: _labels.THEMES --><!-- /ko --> </a> </li> <li class=\\\"tab\\\"> <a href=\\\"#tab_1_3\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <!-- ko text: _labels.PERSONAL_SETTINGS --><!-- /ko --> </a> </li> <li class=\\\"tab\\\"> <a href=\\\"#tab_1_4\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <!-- ko text: _labels.NOTIFICATIONS_LABEL --><!-- /ko --> </a> </li> <!--ko if: _enabledNetwork--> <li class=\\\"tab\\\"> <a href=\\\"#tab_1_5\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <!-- ko text: _labels.NETWORK --><!-- /ko --> </a> </li> <!-- /ko --> <!--ko if: _enabledLicenseHolder--> <li class=\\\"tab\\\"> <a href=\\\"#tab_1_6\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <!-- ko text: _labels.LICENSE_HOLDER --><!-- /ko --> </a> </li> <!-- /ko --> </ul> <div class=\\\"tab-content clearfix\\\"> <!-- ko with: $data.ProfileCard--> <div class=\\\"tab-pane fade active in\\\" id=\\\"tab_1_1\\\" data-bind=\\\"template: { name: GetTemplateName, afterRender: $data.AfterRender.bind($data) }\\\"> </div> <!-- /ko --> <!-- ko with: $data.ThemeBuilder --> <div class=\\\"tab-pane fade\\\" id=\\\"tab_1_2\\\" data-bind=\\\"template: { name: GetTemplateName, afterRender: $data.AfterRender.bind($data) }\\\"> </div> <!-- /ko --> <!-- ko with: $data.PersonalSettings --> <div class=\\\"tab-pane fade\\\" id=\\\"tab_1_3\\\" data-bind=\\\"template: { name: GetTemplateName, afterRender: $data.AfterRender.bind($data) }\\\"> </div> <!-- /ko --> <!-- ko with: $data.NotificationDesigner --> <div class=\\\"tab-pane fade\\\" id=\\\"tab_1_4\\\" data-bind=\\\"template: { name: GetTemplateName, afterRender: $data.AfterRender.bind($data) }\\\"> </div> <!-- /ko --> <!--ko with: $data.RemoteDatabases--> <div class=\\\"tab-pane fade\\\" id=\\\"tab_1_5\\\" data-bind=\\\"template: { name: GetTemplateName, afterRender: $data.AfterRender.bind($data) }\\\"> </div> <!-- /ko --> <!--ko if: _enabledLicenseHolder--> <!-- ko with: $data.LicenseHolder --> <div class=\\\"tab-pane fade\\\" id=\\\"tab_1_6\\\" data-bind=\\\"template: { name: GetTemplateName, afterRender: $data.AfterRender.bind($data) }\\\"> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport {Brand} from 'Core/Common/Brand';\r\n\r\nimport AboutPageTemplate from 'Core/ProfilePage/AboutPage/Templates/AboutPage.html';\r\nko.templates['Core/ProfilePage/AboutPage/Templates/AboutPage'] = AboutPageTemplate;\r\n\r\nexport class AboutPage {\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis._isReady = ko.observable(true);\r\n\t}\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/ProfilePage/AboutPage/Templates/AboutPage';\r\n\t}\r\n\r\n\tRenderByTargetId(target: string): void {\r\n\t\tko.cleanNode(document.getElementById(target));\r\n\t\tko.applyBindings(this, document.getElementById(target));\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\r\n\t}\r\n\r\n\tget LogoTitle() {\r\n\t\tif (!Brand.Name) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst [firstLetter, ...rest] = Brand.Name;\r\n\t\treturn `${firstLetter.toUpperCase()}${rest.join('')}`;\r\n\t}\r\n\r\n\tget CompanyInfo() {\r\n\t\tif (Brand.Name === 'spheeres') {\r\n\t\t\treturn '© CyberThing Holding BV, The Netherlands';\r\n\t\t}\r\n\r\n\t\tif (Brand.Name === 'corsearch') {\r\n\t\t\treturn '© Corsearch, Inc';\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tFormatUrl(url: string) {\r\n\t\treturn url.replace('{Brand}', Brand.Name);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"about-page\\\"> <div class=\\\"logo-block\\\"> <img data-bind=\\\"attr: { src: $data.FormatUrl('/img/Custom/App/{Brand}/official-main-logo.jpg'), title: $data.LogoTitle }\\\" height=\\\"115\\\" src=\\\"\\\"> </div> <div class=\\\"dev-block\\\"> <div data-bind=\\\"text: $data.CompanyInfo\\\" class=\\\"company-info\\\"></div> <div class=\\\"app-info\\\"><a data-bind=\\\"attr: { href: $data.FormatUrl('http://{Brand}.com') }, text: $data.FormatUrl('{Brand}.com')\\\" target=\\\"_blank\\\" href=\\\"\\\"></a></div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport 'libs/ion.rangeSlider';\r\n\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { DeduplicationStore } from 'Core/ProfilePage/Deduplication/Stores/DeduplicationStore';\r\nimport { DeduplicationGrid } from 'Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationGrid';\r\nimport { Paginator } from 'Core/Components/Paginator/Paginator';\r\nimport { GlobalManager, GLOBALS } from 'Core/GlobalManager/GlobalManager';\r\nimport { EVENTS as PAGINATOR_EVENTS } from 'Core/Components/Paginator/Constants';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\n\r\nimport { DeduplicationSubjectsModel } from 'Core/ProfilePage/Deduplication/Models/DeduplicationSubjectsModel';\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as ConfirmationDialogEvents,\r\n\tTypes as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport { NOTIFICATIONS, LABELS, CONFIRMATIONS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport DeduplicationTemplate from 'Core/ProfilePage/Deduplication/Templates/Deduplication.html';\r\nimport {SortModel} from \"Core/Controls/Grid/Models/SortModel\";\r\n\r\nko.templates['Core/ProfilePage/Deduplication/Templates/Deduplication'] = DeduplicationTemplate;\r\n\r\n\r\n\r\nexport class Deduplication extends Event{\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\tprivate _grid: DeduplicationGrid;\r\n\tprivate _paginator: Paginator;\r\n\tprivate _appliedFastFilters: KnockoutObservableArray<any>;\r\n\tprivate _minimalMatchRate: number;\r\n\tprivate _selectedEntity: KnockoutObservable<DeduplicationSubjectsModel>;\r\n\tprivate _recordsPerpage: number;\r\n\tprivate _deduplicationSubjects: KnockoutObservableArray<DeduplicationSubjectsModel>;\r\n\tprivate _matchRecordFieldId: number;\r\n\tprivate _selectedRangeFilterValue: KnockoutObservable<number>;\r\n\tprivate _defaultRangeFromValue: number;\r\n\tprivate _isDeduplicationEnabled: KnockoutObservable<boolean>;\r\n private _isMatchAllEnabled: KnockoutComputed<boolean>;\r\n private _sorting: Array<SortModel>;\r\n private _isRestoreScrollPosition: boolean;\r\n private _false: boolean = false;\r\n\tprivate _labels = LABELS;\r\n\tprivate _checkStatusTimer: number;\r\n\r\n\tprivate _matchStatus: KnockoutObservable<number>;\r\n\tprivate _isLoading: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n\r\n super();\r\n\r\n this._isReady = ko.observable(true);\r\n\t\tthis._selectedEntity = ko.observable(null);\r\n\t\tthis._deduplicationSubjects = ko.observableArray([]);\r\n\t\tthis._appliedFastFilters = ko.observableArray([]);\r\n\t\tthis._minimalMatchRate = 0;\r\n\t\tthis._matchRecordFieldId = null;\r\n\t\tthis._defaultRangeFromValue = 1;\r\n\t\tthis._selectedRangeFilterValue = ko.observable(this._defaultRangeFromValue);\r\n\t\tthis._grid = new DeduplicationGrid();\r\n\t\tconst otherGridPageLines = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n\t\tthis._recordsPerpage = parseInt(otherGridPageLines);\r\n\t\tthis._paginator = new Paginator();\r\n\t\tthis._isDeduplicationEnabled = ko.observable(false);\r\n\t\tthis._isMatchAllEnabled = ko.computed(() => !!this._selectedEntity());\r\n\t\tthis._paginator.RecordsPerPage = isNaN(this._recordsPerpage) ? 10 : this._recordsPerpage;\r\n\t\tthis._paginator.On(PAGINATOR_EVENTS.CHANGE, this, (eventArgs) => {\r\n\t\t\tthis.GetRecordsList();\r\n\t\t});\r\n\r\n this.Init();\r\n\t\tthis._matchStatus = ko.observable(0);\r\n\t\tthis._isLoading = ko.observable(false);\r\n\r\n this._grid.On('SORT', this, (eventArgs: any) => this.SortData(eventArgs.data.SortColumns));\r\n\t}\r\n\r\n\tInit() {\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tDeduplicationStore.GetDeduplicationSubjects().always(() => {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t}).then((result: any) => {\r\n\t\t\t//Array < DeduplicationSubjectsModel >\r\n\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (result.ResultList[0]) {\r\n\t\t\t\tthis._selectedEntity(result.ResultList[0]);\r\n\t\t\t\tthis._deduplicationSubjects(result.ResultList);\r\n\t\t\t\tthis.GetRecordsList();\r\n\t\t\t\tthis.StartCheckStatusTimer();\r\n\t\t\t\tthis._selectedEntity.subscribe((entity) => {\r\n\t\t\t\t\tthis.StartCheckStatusTimer();\r\n\t\t\t\t\tthis.GetRecordsList();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n SortData(sorting: Array<SortModel>) {\r\n this._sorting = sorting;\r\n this.LoadData(true);\r\n }\r\n\r\n LoadData(restoreSortState: boolean = false) {\r\n if (this._paginator && this._paginator.RecordsPerPage != null && this._selectedEntity()) {\r\n if (this._paginator.RecordsPerPage === 0) {\r\n this._paginator.RecordsPerPage = 5;\r\n }\r\n\r\n if (this._minimalMatchRate !== 0) {\r\n this._paginator.PageNumber = 1\r\n }\r\n\r\n const params = {\r\n EntityId: this._selectedEntity().Id,\r\n PageNumber: this._paginator.PageNumber,\r\n RecordsPerPage: this._paginator.RecordsPerPage,\r\n MinimalMatchRate: this._minimalMatchRate,\r\n Sort: this._sorting\r\n };\r\n\r\n DeduplicationStore.GetMatchedRecords(params).always(() => {\r\n BlockUI.Unblock();\r\n }).then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n this._grid.SetData(result.ResultObject, this._selectedEntity().Name, this, restoreSortState);\r\n let totalRecords = result.ResultObject.TotalRecords;\r\n this._paginator.TotalRecords = totalRecords;\r\n this._isDeduplicationEnabled(totalRecords !== 0);\r\n this._matchRecordFieldId = result.ResultObject.Columns[0].FieldMetadata.Id;\r\n\r\n }).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/ProfilePage/Deduplication/Templates/Deduplication';\r\n\t}\r\n\r\n\tGetRecordsList() {\r\n\t\tif (!this._selectedEntity()) return;\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst params = {\r\n\t\t\tEntityId: this._selectedEntity().Id,\r\n\t\t\tPageNumber: this._paginator.PageNumber,\r\n\t\t\tRecordsPerPage: this._paginator.RecordsPerPage,\r\n\t\t\t//FastFilters: this._appliedFastFilters(),\r\n\t\t\tMinimalMatchRate: this._minimalMatchRate,\r\n Sort: this._sorting\r\n\t\t};\r\n\r\n\t\tDeduplicationStore.GetMatchedRecords(params).always(() => {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t}).then(result => {\r\n\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._grid.SetData(result.ResultObject, this._selectedEntity().Name, this, true);\r\n\t\t\tlet totalRecords = result.ResultObject.TotalRecords;\r\n\t\t\tthis._paginator.TotalRecords = totalRecords;\r\n\t\t\tthis._isDeduplicationEnabled(totalRecords !== 0);\r\n\t\t\tthis._matchRecordFieldId = result.ResultObject.Columns[0].FieldMetadata.Id;\r\n\t\t}).fail((err) => {\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tget Grid() {\r\n\t\treturn this._grid;\r\n\t}\r\n\r\n\tget Paginator() {\r\n\t\treturn this._paginator;\r\n\t}\r\n\r\n\tRenderByTargetId(target: string): void {\r\n\t\tko.cleanNode(document.getElementById(target));\r\n\t\tko.applyBindings(this, document.getElementById(target));\r\n\t}\r\n\r\n\tDeduplicateAll() {\r\n\r\n\t\tconst deduplicateConfirmText = CONFIRMATIONS.DEDUPLICATION_RECORDS_DELETION.replace('{matchQuantity}', this._paginator.TotalRecords.toString());\r\n\r\n\t\tlet confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: deduplicateConfirmText,\r\n\t\t\tType: ConfirmationTypes.Warning,\r\n\t\t\tTextConfirm: LABELS.OK,\r\n\t\t\tTextDecline: LABELS.CANCEL\r\n\t\t});\r\n\t\tconfirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED,\r\n\t\t\tself,\r\n\t\t\t() => {\r\n\t\t\t\tBlockUI.Block();\r\n\r\n\t\t\t\tconst params = {\r\n\t\t\t\t\tEntityId: this._selectedEntity().Id,\r\n\t\t\t\t\tMinimumRate: this._selectedRangeFilterValue()\r\n\t\t\t\t}\r\n\r\n\t\t\t\tDeduplicationStore.DeduplicateAll(params).always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t}).then(result => {\r\n\t\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tresult.Warnings.forEach(warningMessage => {\r\n\t\t\t\t\t\tnew Notifier().Warning(warningMessage);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.GetRecordsList();\r\n\t\t\t\t}).fail((err) => {\r\n\t\t\t\t\tnew Notifier().Failed(err.message);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t);\r\n\t\tconfirmationDialog.Show();\r\n\r\n\r\n\r\n\t}\r\n\r\n\tMatchAll() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst params = {\r\n\t\t\tEntityId: this._selectedEntity().Id\r\n\t\t};\r\n\r\n\t\tDeduplicationStore.MatchAll(params).always(() => {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t}).then(() => {\r\n\t\t\tthis.RefreshMatchStatus();\r\n\t\t\tthis.GetRecordsList();\r\n\t\t}).fail((error) => {\r\n\t\t\tnew Notifier().Failed(error);\r\n\t\t});\r\n\t}\r\n\r\n\tDeleteAll() {\r\n\t\tlet confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: CONFIRMATIONS.ARE_YOU_SURE_YOU_WANT_TO_DELETE_ALL_MATCH_RECORDS,\r\n\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\tTextConfirm: LABELS.YES,\r\n\t\t\tTextDecline: LABELS.NO\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n\t\t\tBlockUI.Block();\r\n\r\n\t\t\tconst params = {\r\n\t\t\t\tEntityId: this._selectedEntity().Id\r\n\t\t\t};\r\n\r\n\t\t\tDeduplicationStore.DeleteAll(params).always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then(() => {\r\n\t\t\t\tthis._grid.ResetRows();\r\n\t\t\t\tthis._paginator.TotalRecords = 0;\r\n\t\t\t\tthis._isDeduplicationEnabled(false);\r\n\t\t\t}).fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n\r\n\tStartCheckStatusTimer(){\r\n\t\tthis._matchStatus(0);\r\n\t\tthis.RefreshMatchStatus();\r\n\t\tclearInterval(this._checkStatusTimer);\r\n\t\tthis._checkStatusTimer = setInterval(()=>{\r\n\t\t\tthis.RefreshMatchStatus();\r\n\t\t}, 1000 * 60);\r\n\t}\r\n\r\n\tRefreshMatchStatus(){\r\n\t\tthis._isLoading(true);\r\n\t\tDeduplicationStore.GetMatchingStatus(this._selectedEntity().Id)\r\n\t\t.always(()=>this._isLoading(false))\r\n\t\t.then((data)=>{\r\n\t\t\tthis._matchStatus(data);\r\n\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\r\n\t\tko.utils.domNodeDisposal.addDisposeCallback(el[0], function() { \r\n\t\t\tclearInterval(this._checkStatusTimer);\r\n });\r\n\r\n\t\t$(\"#matchRateRange\").ionRangeSlider({\r\n\t\t\ttype: 'single',\r\n\t\t\tmin: 1,\r\n\t\t\tmax: 100,\r\n\t\t\tfrom: this._defaultRangeFromValue,\r\n\t\t\tonFinish: (data) => {\r\n\t\t\t\tthis._selectedRangeFilterValue(data.from);\r\n\t\t\t\tthis._minimalMatchRate = data.from;\r\n\t\t\t\tthis.LoadData();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper display-flex\\\"> <!-- ko if: _false --> <div class=\\\"pull-left grid-search-translation-container\\\"> <input data-bind=\\\"hasFocus: true, enterKey: EnterKey, textInput: _searchValue, attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" tabindex=\\\"1\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl\\\"> </div> <!-- /ko --> <div class=\\\"pull-left\\\"> <div class=\\\"dataTables_length\\\"> <label> <span class=\\\"label-name\\\"><!--ko text: _labels.SUBJECT--><!--/ko-->:</span> <select data-bind=\\\"\\r\\n options: _deduplicationSubjects,\\r\\n optionsText: 'Name', value: _selectedEntity\\\" tabindex=\\\"-1\\\" class=\\\"form-control input-inline grid-select-view\\\" style=\\\"margin-left:10px\\\"></select> </label> </div> </div> <div class=\\\"pull-left\\\" style=\\\"margin-top:7px\\\"> <label class=\\\"deduplication-range-filter\\\"> <span class=\\\"label-name\\\"><!--ko text: _labels.MINIMAL_MATCH_RATE--><!--/ko-->:</span> <input type=\\\"text\\\" id=\\\"matchRateRange\\\" name=\\\"matchRateRange\\\" value=\\\"\\\"/> </label> <!--<input type=\\\"range\\\" id=\\\"start\\\" name=\\\"volume\\\"\\r\\n style=\\\"display: inline;\\r\\n width: 120px;\\r\\n vertical-align: top;\\r\\n margin-left: 10px;\\\"\\r\\n min=\\\"0\\\" max=\\\"100\\\" />--> </div> <div class=\\\"pull-left\\\" style=\\\"margin-top:7px;margin-left:10px\\\"> <button class=\\\"btn btn-light\\\" type=\\\"button\\\" data-bind=\\\"click: DeduplicateAll, enableAttr: _isDeduplicationEnabled(), css: { disabled: !_isDeduplicationEnabled() }\\\"> <!--ko text: _labels.DEDUPLICATE_ALL--><!--/ko--> </button> </div> <div class=\\\"pull-left\\\" style=\\\"margin-top:7px;margin-left:10px\\\"> <button class=\\\"btn btn-light\\\" type=\\\"button\\\" data-bind=\\\"click: MatchAll, enableAttr: _isMatchAllEnabled(), css: { disabled: !_isMatchAllEnabled() }\\\"> <!--ko text: _labels.MATCH_ALL--><!--/ko--> </button> </div> <div class=\\\"pull-left\\\" style=\\\"margin-top:7px;margin-left:10px\\\"> <button class=\\\"btn btn-light\\\" type=\\\"button\\\" data-bind=\\\"click: DeleteAll, enableAttr: _isMatchAllEnabled(), css: { disabled: !_isMatchAllEnabled() }, tooltip: { content: _labels.CLICK_TO_DELETE_ALL_MATCH_LINKS }\\\"> <!--ko text: _labels.DELETE_ALL--><!--/ko--> </button> </div> <div data-bind=\\\"blockElement: _isLoading\\\" class=\\\"pull-left\\\" style=\\\"margin-top:7px;margin-left:10px\\\"> <label>Matching progress: <!--ko text: _matchStatus--><!--/ko--></label> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px deduplication-grid-container\\\"> <!-- ko with: Grid --> <!-- ko template: {html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <div class=\\\"pull-left pagination-container-grid deduplication-pagination-box\\\" style=\\\"width:100%;text-align:center\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport 'libs/ion.rangeSlider';\r\n\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from \"Core/Common/Modal\";\r\n\r\nimport DownloadsTemplate from 'Core/ProfilePage/Downloads/Templates/Downloads.html';\r\nimport { Brand } from '../../Common/Brand';\r\nko.templates['Core/ProfilePage/Downloads/Templates/Downloads'] = DownloadsTemplate;\r\n\r\nexport class Downloads extends Event{\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _labels = LABELS;\r\n private _modal: Modal;\r\n\r\n constructor() {\r\n super();\r\n this._isReady = ko.observable(true);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/ProfilePage/Downloads/Templates/Downloads';\r\n }\r\n\r\n RenderByTargetId(target: string): void {\r\n ko.cleanNode(document.getElementById(target));\r\n ko.applyBindings(this, document.getElementById(target));\r\n }\r\n\r\n ShowModal() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n }\r\n\r\n Render() {\r\n this._modal = new Modal({\r\n addClass: 'downloads-modal',\r\n }, false);\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this.ShowModal();\r\n }\r\n\r\n AfterRender() {}\r\n\r\n FormatUrl(url: string){\r\n return url.replace('{Brand}',Brand.Name);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"container-fluid\\\"> <div class=\\\"row downloads-modal\\\"> <legend class=\\\"page-title\\\"> <!-- ko text: _labels.DOWNLOADS --><!-- /ko --> </legend> <ul class=\\\"list-unstyled\\\"> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"attr: { href: $data.FormatUrl('/Soft/{Brand}/DesktopClient.msi') }\\\" href=\\\"\\\"> <!-- ko text: _labels.DOWNLOAD_CLIENT --><!-- /ko --> </a> </li> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"attr: { title: _labels.DOWNLOAD_MAIL_PLUGIN_32, href: $data.FormatUrl('/Soft/{Brand}/Outlook Add-In(32-bit).msi') }\\\" href=\\\"\\\"> <!-- ko text: _labels.DOWNLOAD_MAIL_PLUGIN_32 --><!-- /ko --> </a> </li> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"attr: { title: _labels.DOWNLOAD_MAIL_PLUGIN_64, href: $data.FormatUrl('/Soft/{Brand}/Outlook Add-In(64-bit).msi') }\\\" href=\\\"\\\"> <!-- ko text: _labels.DOWNLOAD_MAIL_PLUGIN_64 --><!-- /ko --> </a> </li> <li class=\\\"usermenu-item\\\"> <a href=\\\"/Soft/Solidworks Add-In(64-bit).msi\\\"> Solidworks Add-In(64-bit) </a> </li> </ul> <a href=\\\"https://dotnet.microsoft.com/download/dotnet-framework-runtime/net452\\\" target=\\\"_blank\\\" class=\\\"small\\\"> <!-- ko text: _labels.REQUIRED_NET_FRAMEWORK --><!-- /ko --></a> </div> </div>\";\n// Exports\nexport default code;","import {Request, IRequestOptions} from \"Core/Common/Request\";\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {IGetCanvasRequestModel} from 'Core/Controls/CanvasDesigner/Stores/CanvasDesignerStore';\r\n\r\nexport class UserMenuStore {\r\n\tstatic GetMetadata(): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MenuApi/GetUserMenuMetadata',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetCanvas(params: IGetCanvasRequestModel): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/CanvasApi/GetCanvas',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic SaveCanvas(canvas:any): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/CanvasApi/Save',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: canvas\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import Template from 'MenuManager/Wiki/Wiki.html';\r\nimport { Modal } from '../../Core/Common/Modal';\r\nimport {CookieManager} from \"Core/Common/CookieManager\";\r\nimport { BlockUI } from '../../Core/Common/BlockUi';\r\nimport * as _ from 'underscore';\r\n\r\nko.templates['MenuManager/Wiki/Wiki'] = Template;\r\n\r\nexport class WikiJS {\r\n private _modal: Modal;\r\n private _src: KnockoutObservable<string>;\r\n constructor(){\r\n this._src = ko.observable(`/api/WikiApi/GetWiki?access_token=${ CookieManager.GetAuthToken()}`);\r\n }\r\n\r\n Show(){\r\n this._modal = new Modal({ widthInPercent: 99, heightInPercent: 99}, false);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n BlockUI.Block({ Target: this._modal.Wrapper });\r\n }\r\n\r\n GetTemplateName(){\r\n return 'MenuManager/Wiki/Wiki';\r\n }\r\n\r\n LoadFinished(__, event: any){\r\n\r\n _.each($(event.target.contentWindow.document.body).find('a'), (el)=>{\r\n let href = el.getAttribute(\"href\") as string;\r\n\r\n if(href.startsWith(\"/en\")){\r\n el.href = '/api/WikiApi/GetWiki' + href;\r\n }\r\n\r\n el.href += `?access_token=${ CookieManager.GetAuthToken()}`;\r\n });\r\n\r\n $(event.target.contentWindow.document.body).find('[aria-label=\"Account\"]').hide();\r\n\r\n const targetNode = $(event.target.contentWindow.document).find(\".__view\")[0];\r\n if(targetNode){\r\n const config = { attributes: true, childList: true, subtree: true };\r\n \r\n const callback = (mutationList, observer) => {\r\n for (const mutation of mutationList) {\r\n if (mutation.type === \"childList\") {\r\n\r\n if(mutation.target.nodeName === 'A'){\r\n let href = mutation.target.getAttribute(\"href\") as string;\r\n\r\n if(href.startsWith(\"/en\")){\r\n mutation.target.href = '/api/WikiApi/GetWiki' + href + `?access_token=${ CookieManager.GetAuthToken()}`;\r\n }\r\n }\r\n\r\n _.each($(mutation.target).find('a'), (el)=>{\r\n let href = el.getAttribute(\"href\") as string;\r\n if(href.startsWith(\"/en\")){\r\n el.href = '/api/WikiApi/GetWiki' + href + `?access_token=${ CookieManager.GetAuthToken()}`;\r\n }\r\n });\r\n }\r\n }\r\n };\r\n \r\n const observer = new MutationObserver(callback);\r\n observer.observe(targetNode, config);\r\n }\r\n\r\n event.target.contentWindow.onbeforeunload = (()=>{\r\n BlockUI.Block({ Target: this._modal.Wrapper });\r\n });\r\n\r\n BlockUI.Unblock(this._modal.Wrapper);\r\n }\r\n\r\n AfterRender(){}\r\n}","// Module\nvar code = \"<iframe data-bind=\\\"attr: { src: _src }, event: { load: LoadFinished.bind($data) }\\\" style=\\\"display:block;border:none;height:95vh;width:97vw\\\"></iframe>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport 'lockr';\r\nimport 'pubsub';\r\n\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\n\r\nimport {ProfilePage} from 'Core/ProfilePage/ProfilePage';\r\nimport {AboutPage} from 'Core/ProfilePage/AboutPage/AboutPage';\r\nimport {Deduplication} from 'Core/ProfilePage/Deduplication/Deduplication';\r\nimport {Downloads} from \"Core/ProfilePage/Downloads/Downloads\";\r\n\r\nimport {UserManager, UserRoles, UserTypes} from 'User/UserManager';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {UserMenuStore} from 'MenuManager/Stores/UserMenuStore';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {AuthManager} from 'Auth/AuthManager';\r\nimport {LockScreen} from 'LockScreen/LockScreen';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS} from 'MenuManager/UserMenu/Events';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {HelpBook} from 'HelpBook/HelpBook';\r\nimport {ReportIssueModal} from 'Core/Components/ReportIssueModal/ReportIssueModal';\r\nimport {LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {NOTIFICATIONS, LABELS} from \"../../Core/Components/Translation/Locales\";\r\nimport {IScreen} from \"Core/Screens/IScreen\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {Timer} from \"Core/Controls/Timer/Timer\";\r\nimport {IActiveTimer} from \"Core/Controls/Timer/Models/TimerModel\";\r\nimport {\r\n ConfirmationDialog, EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport UserMenuTemplate from 'MenuManager/UserMenu/Templates/UserMenu.html';\r\nimport { Modal } from \"../../Core/Common/Modal\";\r\nimport { WikiJS } from \"../Wiki/Wiki\";\r\nimport { User } from \"../../Core/Components/SecurityEditor/Models/SecurityEditorModel\";\r\n\r\nko.templates['MenuManager/UserMenu/Templates/UserMenu'] = UserMenuTemplate;\r\n\r\nconst GUEST_USER_NAME = 'Login';\r\n\r\nexport class UserMenu extends Event {\r\n IsAuthenticated: KnockoutObservable<boolean>;\r\n IsAvailable: KnockoutObservable<boolean>;\r\n IsDeduplicationAllowed: KnockoutObservable<boolean>;\r\n private _userName: KnockoutObservable<string>;\r\n private _userImage: KnockoutObservable<string>;\r\n private _authManager: AuthManager;\r\n private _showLoginPopup: boolean;\r\n private _labels = LABELS;\r\n private _showMySettings: KnockoutObservable<boolean>;\r\n private _showWiki: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n super();\r\n this.IsAuthenticated = ko.observable(false);\r\n this.IsAvailable = ko.observable(false);\r\n this.IsDeduplicationAllowed = ko.observable(false);\r\n this._showMySettings = ko.observable(false);\r\n this._authManager = new AuthManager();\r\n this._showLoginPopup = true;\r\n this._userName = ko.observable(GUEST_USER_NAME);\r\n this._userImage = ko.observable(this.GetDefaultUserImage());\r\n this._showWiki = ko.observable(false);\r\n\r\n this.AddEvent(EVENTS.SIGN_IN);\r\n this.AddEvent(EVENTS.SIGN_OUT);\r\n\r\n this.IsAuthenticated.subscribe(newValue => {\r\n if (newValue) {\r\n this.RefreshUser();\r\n this._showMySettings(Boolean(parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.MY_SETTINGS))));\r\n } else {\r\n this._userName(GUEST_USER_NAME);\r\n this.IsAvailable(false);\r\n }\r\n });\r\n\r\n this._authManager.On(EVENTS.SIGN_IN, this, (eventArgs: any) => {\r\n if (eventArgs.data && eventArgs.data.AuthToken) {\r\n this.Trigger(EVENTS.SIGN_IN, {AuthToken: eventArgs.data.AuthToken});\r\n this._showMySettings(Boolean(parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.MY_SETTINGS))));\r\n }\r\n });\r\n }\r\n\r\n static SetNewTitle(title?: string, licenseName?: string) {\r\n if (title && licenseName) {\r\n return document.title = title + ' - ' + licenseName;\r\n } else if (title) {\r\n return document.title = title;\r\n } else {\r\n return document.title = UserManager.Instance.CurrentUser.LicenseName; //default Title Name\r\n }\r\n }\r\n\r\n CheckDeduplicationAllowance() {\r\n let userManager = UserManager.Instance;\r\n let isInRoleUs = userManager.IsUserInRole(UserRoles.US);\r\n\r\n this.IsDeduplicationAllowed(isInRoleUs);\r\n }\r\n\r\n RefreshUser() {\r\n const userManager = UserManager.Instance;\r\n this._showWiki = ko.observable(userManager.IsUserInRole(UserRoles.DesignerLevel2) || userManager.IsUserInRole(UserRoles.DesignerLevel3));\r\n this._userName(userManager.CurrentUser.Name);\r\n this.CheckDeduplicationAllowance();\r\n\r\n const isAvailable = !userManager.CurrentUser.HasAnyType([UserTypes.Portal, UserTypes.Guest, UserTypes.Gdpr]);\r\n\r\n if (isAvailable) {\r\n let userImage = UserManager.Instance.CurrentUser.UserImage;\r\n if (userImage && userImage !== 'data:image/jpeg;base64,') {\r\n this._userImage(userImage);\r\n } else {\r\n this._userImage(this.GetDefaultUserImage());\r\n }\r\n }\r\n\r\n this.IsAvailable(isAvailable);\r\n }\r\n\r\n AutoStopActiveTimer(screen: IScreen, timerControl: Timer): void {\r\n if (screen.AllowTimerAutoStop && timerControl.IsRunTime && timerControl.IsConsultScreen ) {\r\n if (timerControl.TimerAutostart && timerControl.HasTimerStarted()) {\r\n const stopTimer: IActiveTimer = _.find(timerControl.ActiveTimers(), timer=> timer.RecordId === timerControl.TimerRecordId && timer.EntityId === timerControl.TimerEntityId);\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: LABELS.STOP_THE_TIMER_FOR_BEFORE_LOGOUT.replace('{recordName}', `<b>${stopTimer.SubjectName}</b>`),\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n timerControl.StopTimer(timerControl.TimerEntityId, timerControl.TimerRecordId);\r\n this.SignOut();\r\n });\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n this.SignOut();\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n }\r\n }\r\n\r\n IsStoppedExitApp(selectedScreen: IScreen): boolean {\r\n let isStoppedExitApp: boolean = null;\r\n\r\n if (selectedScreen && selectedScreen.GetRecordId() ) {\r\n let timerControl: IControl = selectedScreen.GetControl('Timer');\r\n if (timerControl instanceof Timer) {\r\n if (timerControl.TimerAutostart && timerControl.HasTimerStarted()) {\r\n isStoppedExitApp = true;\r\n this.AutoStopActiveTimer(selectedScreen, timerControl);\r\n }\r\n }\r\n }\r\n return isStoppedExitApp;\r\n }\r\n\r\n SignOut() {\r\n LockManager.Instance.ReleaseAllLocks();\r\n BlockUI.Block();\r\n this._authManager.SignOut()\r\n .then(() => this.Trigger(EVENTS.SIGN_OUT, {FileDir: Lockr.get(LOCAL_STORAGE.FILE_DIR)}))\r\n .always(() => {\r\n BlockUI.Unblock();\r\n }\r\n );\r\n }\r\n\r\n Logout() {\r\n let menuManager = require('MenuManager/MenuManager'),\r\n isSelectedScreen = menuManager.MenuManager.Instance.GetCurrentScreen(),\r\n isStoppedExitApp: boolean = this.IsStoppedExitApp(isSelectedScreen);\r\n\r\n if (!isStoppedExitApp) {\r\n this.SignOut();\r\n }\r\n }\r\n\r\n GetTemplateName() {\r\n return 'MenuManager/UserMenu/Templates/UserMenu';\r\n }\r\n\r\n GetShowLoginPopup() {\r\n return this._showLoginPopup;\r\n }\r\n\r\n SetShowLoginPopup(value: boolean) {\r\n this._showLoginPopup = value;\r\n }\r\n\r\n Login() {\r\n const menuManager = require('MenuManager/MenuManager');\r\n\r\n menuManager.MenuManager.Instance.HideGuestHomePage();\r\n menuManager.MenuManager.Instance.DeleteAreas();\r\n\r\n this._authManager.ShowAuthForm();\r\n }\r\n\r\n ResetPassword() {\r\n const promise = this._authManager.ShowAuthForm();\r\n if (promise) {\r\n promise.then(() => this._authManager.ShowResetPasswordForm());\r\n }\r\n }\r\n\r\n MySettings() {\r\n LockManager.Instance.ReleaseAllLocks();\r\n var profilePage = new ProfilePage();\r\n profilePage.On('PROFILE_CARD_IMAGE_CLICKED', this, (eventArgs) => {\r\n this.GetMyContact();\r\n });\r\n profilePage.RenderByTargetId('viewBody');\r\n\r\n const menuManager = require('MenuManager/MenuManager');\r\n menuManager.MenuManager.Instance.ResetScreenStyle();\r\n\r\n UserMenu.SetNewTitle();\r\n }\r\n\r\n AboutPage() {\r\n LockManager.Instance.ReleaseAllLocks();\r\n var aboutPage = new AboutPage();\r\n aboutPage.RenderByTargetId('viewBody');\r\n\r\n const menuManager = require('MenuManager/MenuManager');\r\n menuManager.MenuManager.Instance.ResetScreenStyle();\r\n\r\n UserMenu.SetNewTitle();\r\n }\r\n\r\n Deduplication() {\r\n LockManager.Instance.ReleaseAllLocks();\r\n var deduplication = new Deduplication();\r\n deduplication.RenderByTargetId('viewBody');\r\n\r\n const menuManager = require('MenuManager/MenuManager');\r\n menuManager.MenuManager.Instance.ResetScreenStyle();\r\n\r\n UserMenu.SetNewTitle();\r\n }\r\n\r\n Downloads() {\r\n var downloads = new Downloads();\r\n downloads.Render();\r\n }\r\n\r\n HelpPage() {\r\n LockManager.Instance.ReleaseAllLocks();\r\n let menuManager = require('MenuManager/MenuManager');\r\n var helpBook = HelpBook.Instance;\r\n let isSelectedScreen = menuManager.MenuManager.Instance.GetCurrentScreen();\r\n if (isSelectedScreen) {\r\n helpBook.ShowWithUserMenu(isSelectedScreen.GetId());\r\n } else {\r\n helpBook.Show();\r\n }\r\n }\r\n\r\n ShowReportIssueModal() {\r\n const menuManager = require('MenuManager/MenuManager');\r\n menuManager.MenuManager.Instance.ResetScreenStyle();\r\n\r\n ReportIssueModal.Open();\r\n }\r\n\r\n NavigateToHomePage() {\r\n const menuManager = require('MenuManager/MenuManager');\r\n menuManager.MenuManager.Instance.NavigateToHomePage();\r\n }\r\n\r\n GetMyContact() {\r\n LockManager.Instance.ReleaseAllLocks();\r\n let contactId = UserManager.Instance.CurrentUser.ContactId;\r\n BlockUI.Block();\r\n UserMenuStore.GetMetadata()\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n let contactScreenMetadata = result.ResultObject.ContactScreenMetadata;\r\n\r\n UserMenu.SetNewTitle(contactScreenMetadata.TranslatedEntityName ? contactScreenMetadata.TranslatedEntityName : contactScreenMetadata.Name, UserManager.Instance.CurrentUser.LicenseName);\r\n\r\n if (!contactScreenMetadata) {\r\n new Notifier().Warning(NOTIFICATIONS.CONTACT_SCREEN_NOT_FOUND);\r\n return;\r\n }\r\n\r\n UserVarsManager.Instance.AddRecent(contactScreenMetadata.EntityId, contactId, 0);\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: contactScreenMetadata.EntityId,\r\n RecordId: contactId,\r\n RecordTypeId: 0\r\n });\r\n });\r\n }\r\n\r\n LockSession() {\r\n LockManager.Instance.ReleaseAllLocks();\r\n var lockScreen = new LockScreen();\r\n lockScreen.Lock();\r\n UserMenu.SetNewTitle('Spheeres.com');\r\n }\r\n\r\n Render(target: string): void {\r\n var targetElement = document.getElementById(target);\r\n if (targetElement != null) {\r\n ko.cleanNode(targetElement);\r\n ko.applyBindings(this, targetElement);\r\n }\r\n }\r\n\r\n GetDefaultUserImage(): string {\r\n return \"data:image/jpeg;base64,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\";\r\n }\r\n\r\n Wiki(){\r\n const wiki = new WikiJS();\r\n wiki.Show();\r\n }\r\n}","// Module\nvar code = \"<ul class=\\\"nav navbar-nav pull-right\\\"> <!-- ko if: IsAuthenticated--> <!-- ko if: IsAvailable --> <li class=\\\"dropdown dropdown-user\\\"> <a tabindex=\\\"-1\\\" href=\\\"javascript:;\\\" class=\\\"dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" data-hover=\\\"dropdown\\\" data-close-others=\\\"true\\\"> <img class=\\\"company-logo\\\" data-bind=\\\"attr:{src: _userImage}\\\"> <span class=\\\"username\\\"> <span data-bind=\\\"text: _userName\\\"></span> </span> <i class=\\\"fa fa-angle-down\\\"></i> </a> <ul class=\\\"dropdown-menu dropdown-menu-default\\\" id=\\\"user-menu\\\"> <!-- ko if: _showMySettings() --> <li class=\\\"profileItem usermenu-item\\\"> <a data-bind=\\\"click: MySettings\\\" class=\\\"settings\\\"> <i class=\\\"icon-user\\\"></i> <!-- ko text: _labels.MY_SETTINGS --><!-- /ko --> </a> </li> <!-- /ko --> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"click: GetMyContact\\\" class=\\\"contact-page\\\"> <i class=\\\"icon-user\\\"></i> <!-- ko text: _labels.MY_CONTACT_PAGE --><!-- /ko --> </a> </li> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"click: NavigateToHomePage\\\"> <i class=\\\"icon-user\\\"></i> <!-- ko text: _labels.MY_DAILY_STUFF --><!-- /ko --> </a> </li> <!-- ko if: IsDeduplicationAllowed --> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"click: Deduplication\\\" href=\\\"javascript:;\\\"> <i class=\\\"icon-user\\\"></i> <!-- ko text: _labels.DEDUPLICATION --><!-- /ko --> </a> </li> <!-- /ko --> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"click: Downloads\\\" href=\\\"javascript:;\\\"> <i class=\\\"icon-disc\\\"></i> <!-- ko text: _labels.DOWNLOADS --><!-- /ko --> </a> </li> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"click: LockSession\\\" class=\\\"lock-screen\\\"> <i class=\\\"icon-user\\\"></i> <!-- ko text: _labels.LOCK_SCREEN --><!-- /ko --> </a> </li> <li data-bind=\\\"click: HelpPage\\\" class=\\\"usermenu-item\\\" id=\\\"User|About\\\"> <a class=\\\"about\\\"> <i class=\\\"icon-question\\\"></i> <!-- ko text: _labels.HELP --><!-- /ko --> </a> </li> <!-- ko if: _showWiki --> <li data-bind=\\\"click: Wiki\\\" class=\\\"usermenu-item\\\" id=\\\"User|About\\\"> <a class=\\\"about\\\"> <i class=\\\"fa fa-wikipedia-w\\\"></i> Wiki </a> </li> <!-- /ko --> <li data-bind=\\\"click: ShowReportIssueModal\\\" class=\\\"usermenu-item\\\"> <a> <i class=\\\"fa fa-bug\\\"></i> <!-- ko text: _labels.REPORT_ISSUE --><!-- /ko --> </a> </li> <li data-bind=\\\"click: AboutPage\\\" class=\\\"usermenu-item\\\" id=\\\"User|About\\\"> <a class=\\\"about\\\"> <i class=\\\"icon-user\\\"></i> <!-- ko text: _labels.ABOUT --><!-- /ko --> </a> </li> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"click: Logout\\\" class=\\\"logout\\\"> <i class=\\\"icon-key\\\"></i> <!-- ko text: _labels.LOG_OUT --><!-- /ko --> </a> </li> </ul> </li> <!-- /ko --> <li id=\\\"header-logout\\\" class=\\\"dropdown dropdown-quick-sidebar-toggler\\\"> <a data-bind=\\\"click: Logout\\\" class=\\\"dropdown-toggle logout\\\"> <i class=\\\"icon-logout\\\"></i> </a> </li> <!-- /ko --> </ul> <!-- ko ifnot: IsAuthenticated --> <ul class=\\\"nav navbar-nav pull-right\\\"> <li class=\\\"dropdown dropdown-user\\\" data-bind=\\\"click: $data.Login.bind($data)\\\"> <a href=\\\"#\\\" class=\\\"dropdown-toggle login\\\"> <i class=\\\"icon-key\\\"></i> <span class=\\\"username\\\">Login</span> </a> </li> </ul> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {IControlParam, ISearchScreenParam} from \"Core/Screens/IScreen\";\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel';\r\nimport { RenderModes, CONTROL_TYPES } from \"Core/Constant\";\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport {FormDesigner as FormDesignerControl} from \"Core/Controls/FormDesigner/FormDesigner\";\r\nimport {\r\n ConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from \"../Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {CONFIRMATIONS} from \"../Core/Components/Translation/Locales\";\r\n\r\nimport FormDesignerTemplate from \"Pages/Templates/FormDesigner.html\";\r\nko.templates[\"Pages/Templates/FormDesigner\"] = FormDesignerTemplate;\r\n\r\nexport class FormDesignerPage {\r\n\tprivate _formDesignerControl: FormDesignerControl;\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\tprotected _el: HTMLElement;\r\n\tprivate _modal: Modal;\r\n\r\n\tconstructor() {\r\n\t\tthis._isReady = ko.observable(false);\r\n\t\tvar controlModel = new ControlModel();\r\n\t\tcontrolModel.TypeName = CONTROL_TYPES.FormDesigner;\r\n\t\tvar controlsParam: IControlParam = {\r\n\t\t\tModel: controlModel,\r\n\t\t\tForm: null,\r\n\t\t\tRenderMode: RenderModes.View\r\n\t\t}\r\n\t\tthis._formDesignerControl = new FormDesignerControl(controlsParam);\r\n\t}\r\n\r\n\tRender(target): void {\r\n\t\tko.cleanNode(document.getElementById(target));\r\n\t\tko.applyBindings(this, document.getElementById(target));\r\n\t}\r\n\r\n\tasync SetScreenId(screenId: number) {\r\n\t\tBlockUI.Block({ Target: $(this._el).closest('.jBox-content')[0], JBoxBlockButton: true});\r\n\t\tawait this._formDesignerControl.SetValue(screenId);\r\n\t\tBlockUI.Unblock($(this._el).closest('.jBox-content')[0], true);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Pages/Templates/FormDesigner';\r\n\t}\r\n\r\n\tget FormDesignerControl(): FormDesignerControl {\r\n\t\treturn this._formDesignerControl;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tif (el) {\r\n\t\t\tthis._el = el[0];\r\n\t\t}\r\n\t\tthis._isReady(true);\r\n\t}\r\n\r\n\tRemoveControl() {\r\n\t}\r\n\r\n\tShowInModal() {\r\n\t\tthis._modal = new Modal({\r\n\t\t\tonClose: () => {\r\n\t\t\t\tif (this._formDesignerControl.Screen.HasChanges) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.SAVE_CHANGES,\r\n Type: ConfirmationTypes.Question\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n this._formDesignerControl.Save();\r\n });\r\n confirmationDialog.Show();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\taddClass: 'screen-in-modal formDesignerModal',\r\n\t\t\tblockScroll: true\r\n\t\t}, true);\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t\tthis._modal.Show();\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: FormDesignerControl--> <div data-bind=\\\"template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) }, class: ScreenType()\\\"></div> <!-- /ko -->\";\n// Exports\nexport default code;","export const QUERY_BUILDER = {\r\n\tCELL_SIZE: 20\r\n}\r\n\r\nexport const QUERY_TYPES = {\r\n\tTABLE_VIEW: 'TableView',\r\n\tQUERY: 'Query',\r\n\tTEMPLATE: 'Template'\r\n}\r\n\r\nexport const ENTITY_COLORS = {\r\n\tMAIN_ENTITY: 'color-view bg-yellow-gold bg-font-yellow-gold',\r\n\tRELATED_ENTITY: 'color-view bg-blue bg-font-blue',\r\n\tSUB_ENTITY: 'color-view bg-blue bg-font-blue'\r\n}\r\n\r\nexport const AGGREGATE_FUNCTIONS = {\r\n\tCOUNT: 'COUNT',\r\n\tSUM: 'SUM',\r\n\tMIN: 'MIN',\r\n\tMAX: 'MAX',\r\n\tAVG: 'AVG'\r\n}\r\n\r\nexport const COMPARISON_OPERATOR_LABELS = {\r\n\tEquals: '=',\r\n\tNotEquals: '!=',\r\n\tIsNull: 'IsNull',\r\n\tIsNotNull: 'IsNotNull',\r\n\tLike: 'Like',\r\n\tGreaterThen: '>',\r\n\tLessThen: '<',\r\n\tGreaterOrEqual: '>=',\r\n\tLessOrEqual: '<=',\r\n\tIn: 'In',\r\n\tNotIn: 'NotIn',\r\n\tStartsWith: 'Starts with',\r\n\tNotStartWith: 'Not start with',\r\n\tEndsWith: 'Ends with',\r\n\tNotEndWith: 'Not end with',\r\n\tNotLike: 'Not like'\r\n}","export enum JoinTypes {\r\n\tInnerJoin,\r\n\tLeftJoin,\r\n\tRightJoin,\r\n\tOuterJoin\r\n}\r\n\r\nexport enum UseMainCondition {\r\n\tMainTrue,\r\n\tMainFalse,\r\n\tNotUseMain\r\n}\r\n\r\nexport enum LinkDirectionCondition {\r\n\tLeftToRight,\r\n\tRightToLeft,\r\n\tBoth\r\n}\r\n\r\nexport enum ConditionOperators {\r\n\tAnd,\r\n\tOr\r\n}\r\n\r\nexport enum ComparisonOperators {\r\n\tEquals,\r\n\tNotEquals,\r\n\tIsNull,\r\n\tIsNotNull,\r\n\tLike,\r\n\tGreaterThen,\r\n\tLessThen,\r\n\tGreaterOrEqual,\r\n\tLessOrEqual,\r\n\tIn,\r\n\tStartsWith,\r\n\tEndsWith,\r\n\tNotIn,\r\n\tNotStartWith,\r\n\tNotEndWith,\r\n\tNotLike\r\n}\r\n\r\nexport enum SortOrder {\r\n\tAscending,\r\n\tDescending\r\n}\r\n\r\nexport enum ConditionValueTypes {\r\n\tGeneral,\r\n\tScreenVariable,\r\n\tFunction,\r\n\tQueryBuilder,\r\n\tColumn\r\n}\r\n","export const EVENTS = {\r\n\tNO_ACCESS: 'NO_ACCESS',\r\n\tCLOSE: 'CLOSE',\r\n\tSAVE_AND_CLOSE: 'SAVE_AND_CLOSE',\r\n\tDATA_SAVED: 'DATA_SAVED',\r\n\tDELETED: 'DELETED',\r\n\tAFTER_RENDER: 'AFTER_RENDER',\r\n\tENTITY_SELECTED: 'ENTITY_SELECTED',\r\n\tSELECTED: 'SELECTED',\r\n\tENTITY_UNSELECTED: 'ENTITY_UNSELECTED',\r\n\tLOOKUP_ENTITY_SELECTED: 'LOOKUP_ENTITY_SELECTED',\r\n\tLOOKUP_ENTITY_UNSELECTED: 'LOOKUP_ENTITY_UNSELECTED',\r\n\tREFERENCE_LOOKUP_ENTITY_SELECTED: 'REFERENCE_LOOKUP_ENTITY_SELECTED',\r\n\tREFERENCE_LOOKUP_ENTITY_UNSELECTED: 'REFERENCE_LOOKUP_ENTITY_UNSELECTED',\r\n\tREFERENCE_ENTITY_SELECTED: 'REFERENCE_ENTITY_SELECTED',\r\n\tREFERENCE_ENTITY_UNSELECTED: 'REFERENCE_ENTITY_UNSELECTED',\r\n\tIS_ITERATOR_CHANGED: 'IS_ITERATOR_CHANGED',\r\n\tCREATE_SUB_QUERY: 'CREATE_SUB_QUERY',\r\n\tREMOVE_SUB_QUERY: 'REMOVE_SUB_QUERY',\r\n\tDRAG: 'DRAG',\r\n\tDRAG_STOP: 'DRAG_STOP',\r\n\tMOUSE_OVER: 'MOUSE_OVER',\r\n\tCLICK: 'CLICK',\r\n\tJOIN_TYPE_CHANGED: 'JOIN_TYPE_CHANGED',\r\n\tCOLUMN_SELECTED: 'COLUMN_SELECTED',\r\n\tUPDATE_SORT: 'UPDATE_SORT'\r\n};","import * as _ from \"underscore\";\r\n\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {EntityModel} from 'QueryBuilder/Models/EntityModel'\r\nimport {RelatedEntitiesModel} from 'QueryBuilder/Models/RelatedEntitiesModel'\r\nimport {RelatedSubEntitiesModel} from 'QueryBuilder/Models/RelatedSubEntitiesModel'\r\n\r\nexport class ConcreteEntityModel {\r\n\r\n\t@deserializeAs(EntityModel)\r\n\tMainEntity: EntityModel;\r\n\r\n\t@deserializeAs(RelatedEntitiesModel)\r\n\tRelatedEntities: RelatedEntitiesModel;\r\n\r\n\t@deserializeAs(RelatedSubEntitiesModel)\r\n\tRelatedSubEntitiesModel: Array<RelatedSubEntitiesModel>;\r\n\r\n\tGuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.RelatedSubEntitiesModel = [];\r\n\t}\r\n\r\n\tGetLinkTable(relatedEntityId: number): EntityModel {\r\n\t\tconst relatedEntity = _.find(this.RelatedEntities.Entities, (model: EntityModel) => {\r\n\t\t\treturn model.EntityId === relatedEntityId;\r\n\t\t});\r\n\t\tif (!relatedEntity) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn relatedEntity.LinkEntity;\r\n\t}\r\n}","import {deserializeAs, deserialize} from 'libs/cerialize';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {EntityRelationshipsMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\nimport { TranslationModel } from 'Core/ScreenManager/Models/TranslationModel';\r\n\r\nexport class EditQueryModel {\r\n\tconstructor() {\r\n\t\tthis.EntitiesRelationships = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserializeAs(EntityRelationshipsMetadataModel)\r\n\tEntitiesRelationships: Array<EntityRelationshipsMetadataModel>;\r\n\r\n\t@deserializeAs(QueryExpressionModel)\r\n\tQuery: QueryExpressionModel;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tNameTranslations: Array<TranslationModel>;\r\n}","import * as ko from \"knockout\";\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {FieldModel} from 'QueryBuilder/Models/FieldModel';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\nimport {Icon} from 'Core/Icon/Icon';\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\n\r\nenum RelationTypes\r\n{\r\n\tOneToOneSubject,\r\n\tOneToOne,\r\n\tOneToMain,\r\n\tOneToMany\r\n}\r\n\r\nexport class RelationTypeModel{\r\n\tTitle: string;\r\n\tRelationType: RelationTypes;\r\n}\r\n\r\nexport class EntityModel {\r\n\r\n\t@deserialize\r\n\tDbId: number;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tShortName: string;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tEntityNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tEntityFullName: string;\r\n\r\n\t@deserialize\r\n\tEntityFullNameTranslation: string;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tTranslations: Array<TranslationModel>;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserializeAs(FieldModel)\r\n\tFields: Array<FieldModel>;\r\n\r\n\t@deserializeAs(EntityModel)\r\n\tRelatedSubEntities: Array<EntityModel>;\r\n\r\n\t@deserializeAs(EntityModel)\r\n\tLinkEntity: EntityModel;\r\n\r\n\t@deserialize\r\n\tFontName: string;\r\n\r\n\t@deserialize\r\n\tIconName: string;\r\n\r\n\t@deserialize\r\n\tGraphicalIcon: string;\r\n\r\n\t@deserialize\r\n\tRelationTypes: Array<number>;\r\n\r\n\t@deserialize\r\n\tIsView: boolean;\r\n\r\n\tIsSelected: KnockoutObservable<boolean>;\r\n\r\n\tIsMain: KnockoutObservable<boolean>;\r\n\t\r\n\tRelationTypeTitle(relationType: number){\r\n\t\treturn RelationTypes[relationType];\r\n\t}\r\n\r\n\tget EntityIcon(): Icon {\r\n\t\tif (!this._entityIcon) {\r\n\t\t\tthis._entityIcon = this.GetEntityIcon();\r\n\t\t\treturn this._entityIcon;\r\n\t\t}\r\n\t\treturn this._entityIcon;\r\n\t}\r\n\r\n\tGetEntityIcon(): Icon {\r\n\t\tvar isImage = !!this.GraphicalIcon;\r\n\t\tvar iconModel = new IconModel();\r\n\t\ticonModel.IsIcon = !isImage;\r\n\t\ticonModel.IsImage = isImage;\r\n\t\ticonModel.Name = this.IconName;\r\n\t\ticonModel.Image = this.GraphicalIcon;\r\n\t\ticonModel.FontName = this.FontName;\r\n\t\treturn new Icon(iconModel);\r\n\t}\r\n\r\n\tget GetRelationTypes(){\r\n\t\tvar relations = [];\r\n\t\t_.each(this.RelationTypes, (item)=>{\r\n\t\t\tvar type = new RelationTypeModel();\r\n\t\t\ttype.Title = RelationTypes[item];\r\n\t\t\ttype.RelationType = item;\r\n\t\t});\r\n\t\treturn relations;\r\n\t}\r\n\r\n\t_entityIcon: Icon;\r\n\r\n\tconstructor() {\r\n\r\n\t\tthis.Fields = [];\r\n\t\tthis.RelationTypes = [];\r\n\t\tthis.IsSelected = ko.observable(false);\r\n\t\tthis.IsMain = ko.observable(false);\r\n\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {Icon} from 'Core/Icon/Icon'\r\nimport { IconModel } from 'Core/Controls/BaseControl/Models/IconModel'\r\nimport { TranslationModel } from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\n\r\nexport class FieldModel {\r\n\tprotected _fieldIcon: Icon;\r\n\r\n\t@deserialize\r\n\tFieldId: number;\r\n\r\n\t@deserialize\r\n\tFieldName: string;\r\n\r\n\t@deserialize\r\n\tFieldNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tFieldTypeName: string;\r\n\r\n\t@deserialize\r\n\tIsPrimaryKey: boolean;\r\n\r\n\t@deserialize\r\n IsIndexed: boolean;\r\n\r\n @deserialize\r\n IsVirtual: boolean;\r\n\r\n\t@deserialize\r\n IsSystem: boolean;\r\n\r\n\t@deserialize\r\n\tIcon: string;\r\n\r\n\t@deserialize\r\n\tIconImage: string;\r\n\r\n\t@deserialize\r\n\tIconType: string;\r\n\r\n\t@deserialize\r\n\tFieldTypeIcon: string;\r\n\r\n\t@deserialize\r\n\tFieldTypeIconImage: string;\r\n\r\n\t@deserialize\r\n\tFieldTypeIconType: string;\r\n\r\n\t@deserialize\r\n\tFieldFormatIcon: string;\r\n\r\n\t@deserialize\r\n\tFieldFormatIconImage: string;\r\n\r\n\t@deserialize\r\n\tFieldFormatIconType: string;\r\n\r\n\t@deserialize\r\n\tSort: number;\r\n\t\r\n\t@deserialize\r\n\tValTableId: number;\r\n\r\n\t@deserialize\r\n\tValFieldId: number;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tTranslations: Array<TranslationModel>;\r\n\r\n\tIsSelected: KnockoutObservable<boolean>;\r\n\tDisplayOrder: KnockoutObservable<number>;\r\n Total: KnockoutObservable<boolean>;\r\n Average: KnockoutObservable<boolean>;\r\n IsWrapped: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n this.IsSelected = ko.observable(false);\r\n this.Total = ko.observable(false);\r\n this.DisplayOrder = ko.observable(0);\r\n this.IsWrapped = ko.observable(false);\r\n this.Average = ko.observable(false);\r\n\t}\r\n\r\n\tget FieldIcon(): Icon {\r\n\t\tif (!this._fieldIcon) {\r\n\t\t\tif (this.Icon || this.IconImage) {\r\n\t\t\t\tthis._fieldIcon = new Icon(this.GetIconModel(this.Icon, this.IconType, this.IconImage));\r\n\t\t\t} else if (this.FieldTypeIcon || this.FieldTypeIconImage) {\r\n\t\t\t\tthis._fieldIcon = new Icon(this.GetIconModel(this.FieldTypeIcon, this.FieldTypeIconType, this.FieldTypeIconImage));\r\n\t\t\t} else if (this.FieldFormatIcon || this.FieldFormatIconImage) {\r\n\t\t\t\tthis._fieldIcon = new Icon(this.GetIconModel(this.FieldFormatIcon, this.FieldFormatIconType, this.FieldFormatIconImage));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._fieldIcon;\r\n\t}\r\n\r\n\tGetIconModel(name, fontName, image): IconModel {\t\t\r\n\t\tvar isImage = !!image;\r\n\t\tvar iconModel = new IconModel();\r\n\t\ticonModel.IsIcon = !isImage;\r\n\t\ticonModel.IsImage = isImage;\r\n\t\ticonModel.Name = name;\r\n\t\ticonModel.Image = image;\r\n\t\ticonModel.FontName = fontName;\r\n\t\treturn iconModel;\r\n\t}\r\n}","import {EntityModel} from 'QueryBuilder/Models/EntityModel'\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\n\r\nexport class RelatedEntitiesModel {\r\n\r\n\t@deserializeAs(EntityModel)\r\n\tEntities: Array<EntityModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Entities = [];\r\n\t}\r\n} ","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {EntityModel} from 'QueryBuilder/Models/EntityModel'\r\n\r\nexport class RelatedSubEntitiesModel {\r\n\t@deserializeAs(EntityModel)\r\n\tEntities: Array<EntityModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Entities = [];\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport {inheritSerialization, autoserialize, autoserializeAs} from 'libs/cerialize';\r\n\r\nexport class TableSecurityUnitModel {\r\n\r\n\t@autoserialize\r\n\tId: number;\r\n\r\n\t@autoserialize\r\n\tName: string;\r\n\r\n\t@autoserialize\r\n\tNameTranslation: string;\r\n}","import {deserializeAs, deserialize} from 'libs/cerialize';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { TranslationModel } from 'Core/ScreenManager/Models/TranslationModel';\r\nimport {TableSecurityUnitModel} from 'QueryBuilder/Models/TableSecurityUnitModel';\r\n\r\nexport class NewQueryDto {\r\n\tconstructor() {\r\n\t\tthis.Entities = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserializeAs(TableSecurityUnitModel)\r\n\tEntities: Array<TableSecurityUnitModel>;\r\n\r\n\t@deserializeAs(QueryExpressionModel)\r\n\tQuery: QueryExpressionModel;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tNameTranslations: Array<TranslationModel>;\r\n}","\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {OperationResultModel} from 'Core/Models/OperationResultModel';\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {NewQueryDto} from 'QueryBuilder/Models/NewQueryDto';\r\n\r\nexport interface ICreateNewQueryRequestModel {\r\n\tTypeName: ViewModes;\r\n\tSubjectEntityId: number;\r\n\tGridSubjectEntityId: number;\r\n\tName: string;\r\n\tQueryText: String;\r\n};\r\n\r\nexport class NewQueryStore {\r\n\tstatic New(name: string): P.Promise<NewQueryDto> {\r\n\r\n\t\tvar deferredResult = P.defer<NewQueryDto>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.NEW_QUERY,\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: { name : name }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<NewQueryDto>Deserialize(data, NewQueryDto));\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });;\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Create(params: ICreateNewQueryRequestModel): P.Promise<OperationResultModel> {\r\n\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.CREATE_QUERY,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(this.Deserialize(data)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): OperationResultModel {\r\n\t\tconst model = <OperationResultModel>Deserialize(jsonObject, OperationResultModel);\r\n\t\treturn model;\r\n\t}\r\n} ","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport { OperationResultModel } from 'Core/Models/OperationResultModel';\r\nimport { ITranslationValue } from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\n\r\nexport interface IUpdateQueryRequestModel {\r\n\tId: number;\r\n\tQueryText: String;\r\n\tName: string;\r\n\tNameTranslations: Array<ITranslationValue>\r\n};\r\n\r\nexport class UpdateQueryStore {\r\n\tstatic Update(params: IUpdateQueryRequestModel): P.Promise<OperationResultModel> {\r\n\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.UPDATE_QUERY,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(this.Deserialize(data)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): OperationResultModel {\r\n\t\tconst model = <OperationResultModel>Deserialize(jsonObject, OperationResultModel);\r\n\t\treturn model;\r\n\t}\r\n} ","export const PRIORITY_LIST = [\r\n\t// { Value: 0, Label: 'None' }, cells with 0 priority replaced to 4\r\n\t{ Value: 1, Label: '1' },\r\n\t{ Value: 2, Label: '2' },\r\n\t{ Value: 3, Label: '3' },\r\n\t{ Value: 4, Label: '4' },\r\n\t{ Value: -1, Label: 'Show' }, // show allways \r\n];","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { PRIORITY_LIST } from 'QueryBuilder/TableViewConfig/PriorityList';\r\n\r\nconst minPriority = Math.max.apply(null, PRIORITY_LIST.map(i => i.Value));\r\n\r\nexport class FieldInfo {\r\n\tIsWrapped: KnockoutObservable<boolean>;\r\n\tIsGroup: KnockoutObservable<boolean>;\r\n\tDisplayPriority: KnockoutObservable<any>;\r\n\tIsTotal: KnockoutObservable<boolean>;\r\n\tIsCount: KnockoutObservable<boolean>;\r\n\tIsSubTotal: KnockoutObservable<boolean>;\r\n\tIsAverage: KnockoutObservable<boolean>;\r\n\tIsEnableSort = true;\r\n\r\n\tconstructor(\r\n\t\tpublic Column?: QueryColumnModel,\r\n\t\tpublic Entity?: QueryEntityModel,\r\n\t\tprivate _title = LABELS.FORMAT\r\n\t) {\r\n\t\tif (Column && Entity) {\r\n\t\t\tthis.IsWrapped = ko.observable(Column.IsWrapped);\r\n\t\t\tthis.IsWrapped.subscribe((newValue) => { Column.IsWrapped = newValue; });\r\n\r\n\t\t\tif (Column.DisplayPriority === 0) { // replace 0 priority with max\r\n\t\t\t\tColumn.DisplayPriority = minPriority;\r\n\t\t\t}\r\n\t\t\tconst priority = PRIORITY_LIST.find(item => item.Value === Column.DisplayPriority)\r\n\r\n\t\t\tthis.DisplayPriority = ko.observable(priority);\r\n\t\t\tthis.IsTotal = ko.observable(Column.IsTotal);\r\n\t\t\tthis.IsCount = ko.observable(Column.IsCount);\r\n\t\t\tthis.IsSubTotal = ko.observable(Column.IsSubTotal);\r\n\t\t\tthis.IsAverage = ko.observable(Column.IsAverage);\r\n\t\t\tthis.IsGroup = ko.observable(Column.IsGroup);\r\n\r\n\t\t\tthis.IsAverage.subscribe((newValue) => { Column.IsAverage = newValue; });\r\n\t\t\tthis.IsTotal.subscribe((newValue) => { Column.IsTotal = newValue; });\r\n\t\t\tthis.IsCount.subscribe((newValue) => { Column.IsCount = newValue; });\r\n\t\t\tthis.IsSubTotal.subscribe((newValue) => { Column.IsSubTotal = newValue; });\r\n\t\t\tthis.IsGroup.subscribe((newValue) => { Column.IsGroup = newValue; });\r\n\t\t\tthis.DisplayPriority.subscribe((newValue) => { Column.DisplayPriority = newValue.Value; });\r\n\t\t} else {\r\n\t\t\tthis.IsEnableSort = false;\r\n\t\t}\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\tif (this.Entity && this.Column) {\r\n\t\t\tvar entityName = this.Entity.Metadata.NameTranslation || this.Entity.Metadata.Name;\r\n\t\t\tif (this.Entity.Index > 1) {\r\n\t\t\t\tentityName = `${entityName}${this.Entity.Index}`;\r\n\t\t\t}\r\n\r\n\t\t\treturn `${entityName}.${this.Column.Metadata.NameTranslation || this.Column.Metadata.Name}`;\r\n\t\t} else {\r\n\t\t\treturn this._title;\r\n\t\t}\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { Guid } from 'Core/Common/Guid';\r\nimport { NOTIFICATIONS, LABELS } from 'Core/Components/Translation/Locales';\r\nimport { PRIORITY_LIST } from 'QueryBuilder/TableViewConfig/PriorityList';\r\nimport { FieldInfo } from 'QueryBuilder/TableViewConfig/FieldInfo';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { GlobalManager, GLOBALS } from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport TableViewFieldConfigTemplate from 'QueryBuilder/TableViewConfig/Templates/TableViewFieldConfig.html';\r\n\r\nexport class EntityGroup {\r\n\tprivate _fields: KnockoutObservableArray<FieldInfo>;\r\n\tprivate _displayPriorityList: KnockoutObservableArray<any>;\r\n\tprivate _labels = LABELS;\r\n\tprivate _guid = Guid.NewGuid();\r\n\tEntities: Array<QueryEntityModel>;\r\n\tprivate _basicMode: boolean;\r\n\r\n\tconstructor() {\r\n\t\tthis._fields = ko.observableArray([]);\r\n\t\tthis._displayPriorityList = ko.observableArray(PRIORITY_LIST);\r\n\t\tthis.Entities = [];\r\n\t\tthis.EntitiesGroups = [];\r\n\t\tthis._basicMode = GlobalManager.Instance.GetGlobal(GLOBALS.BASIC_MODE) === '1';\r\n\t}\r\n\r\n\tAddEntity(entity: QueryEntityModel) {\r\n\t\tthis.Entities.push(entity);\r\n\t}\r\n\r\n\tEntitiesGroups: Array<EntityGroup>;\r\n\r\n\tGetTemplate() {\r\n\t\treturn TableViewFieldConfigTemplate;\r\n\t}\r\n\r\n\tUpdateSortPositionValues() {\r\n\t\tvar indx = 0;\r\n\t\t_.each(this._fields(), (field: FieldInfo) => {\r\n\t\t\tif (field.Column) {\r\n\t\t\t\tfield.Column.DisplayOrder = indx;\r\n\t\t\t\tindx++;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tStartOrder(evt, ui) {\r\n\t\tui.placeholder.html(ui.item.html());\r\n\t}\r\n\r\n\tStopOrder() {\r\n\t\tthis.UpdateSortPositionValues();\r\n\t}\r\n\r\n\tCheckTotal(model: FieldInfo) {\r\n\t\tmodel.IsTotal(!model.Column.IsTotal);\r\n\t}\r\n\r\n\tCheckCount(model: FieldInfo) {\r\n\t\tmodel.IsCount(!model.Column.IsCount);\r\n\t}\r\n\r\n\tCheckSubTotal(model: FieldInfo) {\r\n\t\tmodel.IsSubTotal(!model.Column.IsSubTotal);\r\n\t}\r\n\r\n\tCheckAverage(model: FieldInfo) {\r\n\t\tmodel.IsAverage(!model.Column.IsAverage);\r\n\t}\r\n\r\n\tCheckWrapped(model: FieldInfo) {\r\n\t\tmodel.IsWrapped(!model.IsWrapped());\r\n\t}\r\n\r\n\tCheckGroup(model: FieldInfo) {\r\n\t\tmodel.IsGroup(!model.IsGroup());\r\n\t}\r\n\r\n\tUpdateFieldList() {\r\n\t\tvar fields = [];\r\n\t\t_.each(this.Entities,\r\n\t\t\tentity => {\r\n\t\t\t\t_.each(entity.Columns,\r\n\t\t\t\t\tcolumn => {\r\n\t\t\t\t\t\tif(column.Metadata.Type) {\r\n\t\t\t\t\t\t\tlet field = new FieldInfo(column, entity);\r\n\t\t\t\t\t\t\tfields.push(field);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\tfields = _.sortBy(fields, (fieldModel: FieldInfo) => { return fieldModel.Column.DisplayOrder; });\r\n\r\n\t\tfor (var indx = 0; indx < fields.length; indx++) {\r\n\t\t\tfields[indx].Column.DisplayOrder = indx;\r\n\t\t}\r\n\r\n\t\tvar formatField = new FieldInfo();\r\n\t\tfields.unshift(formatField);\r\n\r\n\t\tthis._fields(fields);\r\n\t}\r\n}","// Module\nvar code = \"<table class=\\\"table table-striped table-bordered table-advance flip-content doubleScroll_Wrapper_2_width\\\"> <thead class=\\\"flip-content\\\"> <tr data-bind=\\\"css: _guid, sortable: { data: _fields,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdelay: 100,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tconnectClass: _guid,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\titems: 'th:not(.unsortable)',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tplaceholder: 'sort-column-placeholder',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstart: $data.StartOrder.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstop: $data.StopOrder.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taxis: 'x'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}}\\\"> <th data-bind=\\\"text: Title, css: { 'unsortable': !IsEnableSort}\\\" style=\\\"cursor:pointer\\\"></th> </tr> </thead> <tbody> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.DISPLAY_PRIORITY --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <select data-bind=\\\"options: $parent._displayPriorityList, optionsText: 'Label', value: DisplayPriority\\\"></select> </td> <!-- /ko --> <!-- /ko --> </tr> <!-- ko ifnot: _basicMode --> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.SUBTOTAL --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"uniform: $data.IsSubTotal, click: $parent.CheckSubTotal.bind($parent, $data)\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <!-- /ko --> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.TOTAL --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"uniform: $data.IsTotal, click: $parent.CheckTotal.bind($parent, $data)\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.COUNT --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"uniform: $data.IsCount, click: $parent.CheckCount.bind($parent, $data)\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.AVERAGE --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"uniform: $data.IsAverage, click: $parent.CheckAverage.bind($parent, $data)\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <!-- ko ifnot: _basicMode --> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.WRAP_FROM_HERE --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"uniform: $data.IsWrapped, click: $parent.CheckWrapped.bind($parent, $data)\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.GROUP --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"uniform: $data.IsGroup, click: $parent.CheckGroup.bind($parent, $data)\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <!-- /ko --> <!-- ko if: EntitiesGroups.length > 0 --> <tr class=\\\"a-testing-helper-table-view entitiesGroups\\\"> <td data-bind=\\\"attr: { colspan: _fields().length + 1 }\\\" style=\\\"padding-left:10px\\\"> <!-- ko foreach: EntitiesGroups --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </td> </tr> <!-- /ko --> </tbody> </table> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as $ from \"jquery\";\r\n\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { EntityGroup } from 'QueryBuilder/TableViewConfig/EntityGroup';\r\n\r\nimport TableViewConfigTemplate from 'QueryBuilder/TableViewConfig/Templates/TableViewConfig.html';\r\n\r\nexport class TableViewConfig {\r\n\tprivate _expressionModel: QueryExpressionModel;\r\n\tprivate _groups: KnockoutObservable<EntityGroup>;\r\n\tprivate _el: HTMLElement;\r\n\tconstructor() {\r\n\t\tthis._groups = ko.observable(null);\r\n\t\tthis._el = null;\r\n\t}\r\n\r\n\tset ExpressionModel(expressionModel: QueryExpressionModel) {\r\n\t\tthis._expressionModel = expressionModel;\r\n\t}\r\n\r\n\tDoubleScroll(){\r\n\t\tconst wrapper1 = $(this._el).find('.doubleScroll_Wrapper_1');\r\n\t\tconst wrapper2 = $(this._el).find('.doubleScroll_Wrapper_2');\r\n\t\tconst divScroll = $(wrapper1).find('.doubleScroll_Wrapper_1_DivScroll');\r\n\r\n\t\tsetTimeout(()=>{\r\n\t\t\tdivScroll.width($(wrapper2).find('.doubleScroll_Wrapper_2_width:first').width());\r\n\t\t},1000);\r\n\r\n\t\t$(wrapper1).scroll(()=> {\r\n\t\t\t$(wrapper2)\r\n\t\t\t\t.scrollLeft($(wrapper1).scrollLeft());\r\n\t\t});\r\n\t\t$(wrapper2).scroll(()=> {\r\n\t\t\t$(wrapper1)\r\n\t\t\t\t.scrollLeft($(wrapper2).scrollLeft());\r\n\t\t});\r\n\t}\r\n\r\n\tUpdate() {\r\n\t\tthis._groups(this.GetAllQueryEntities(this._expressionModel));\r\n\t\tthis.UpdateFields([this._groups()]);\r\n\t\tthis.DoubleScroll();\r\n\t}\r\n\r\n\tUpdateFields(groups: Array<EntityGroup>){\r\n\t\t_.each(groups, (group) => {\r\n\t\t\tgroup.UpdateFieldList();\r\n\t\t\tthis.UpdateFields(group.EntitiesGroups);\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn TableViewConfigTemplate;\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement){\r\n\t\tthis._el = el;\r\n\t}\r\n\r\n\r\n\tprivate GetAllQueryEntities(expression: QueryExpressionModel): EntityGroup {\r\n\t\tlet result: EntityGroup = new EntityGroup();\r\n\r\n\t\tlet joins = [];\r\n\t\tjoins = joins.concat(expression.EntityJoins)\r\n\t\t.concat(expression.ReferenceEntityJoins)\r\n\t\t.concat(expression.LookupEntityJoins)\r\n\t\t.concat(expression.SubEntityJoins)\r\n\t\t.concat(expression.ReferenceLookupEntityJoins);\r\n\r\n\t\tresult.AddEntity(expression.Entity);\r\n\t\t_.each(joins,(join: QueryEntityJoinModel) => {\r\n\t\t\t\tif (!join.IsSubQuery) {\r\n\t\t\t\t\tif(join.LinkEntity){\r\n\t\t\t\t\t\tresult.AddEntity(join.LinkEntity);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresult.AddEntity(join.Entity);\r\n\t\t\t\t\tthis.GetAllQueryEntitiesFromJoin(join, result);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet groupModel = new EntityGroup();\r\n\t\t\t\t\tif(join.LinkEntity){\r\n\t\t\t\t\t\tgroupModel.AddEntity(join.LinkEntity);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgroupModel.AddEntity(join.Entity);\r\n\t\t\t\t\tthis.GetAllQueryEntitiesFromJoin(join, groupModel);\r\n\t\t\t\t\tresult.EntitiesGroups.push(groupModel);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate GetAllQueryEntitiesFromJoin(join: QueryEntityJoinModel, group: EntityGroup) {\r\n\t\tlet joins = [];\r\n\t\tjoins = joins\r\n\t\t.concat(join.Joins)\r\n\t\t.concat(join.LookupEntityJoins)\r\n\t\t.concat(join.ReferenceEntityJoins)\r\n\t\t.concat(join.SubEntityJoins)\r\n\t\t.concat(join.ReferenceLookupEntityJoins);\r\n\t\t\r\n\t\t_.each(joins,(item: QueryEntityJoinModel) => {\r\n\t\t\t\tif (!item.IsSubQuery) {\r\n\t\t\t\t\tif(item.LinkEntity){\r\n\t\t\t\t\t\tgroup.AddEntity(item.LinkEntity);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgroup.AddEntity(item.Entity);\r\n\t\t\t\t\tthis.GetAllQueryEntitiesFromJoin(item, group);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet groupModel = new EntityGroup();\r\n\t\t\t\t\tif(item.LinkEntity){\r\n\t\t\t\t\t\tgroupModel.AddEntity(item.LinkEntity);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgroupModel.AddEntity(item.Entity);\r\n\t\t\t\t\tthis.GetAllQueryEntitiesFromJoin(item, groupModel);\r\n\t\t\t\t\tgroup.EntitiesGroups.push(groupModel);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}\r\n\r\n","// Module\nvar code = \"<div class=\\\"doubleScroll_wrapper\\\"> <div class=\\\"doubleScroll_Wrapper_1\\\"> <div class=\\\"doubleScroll_Wrapper_1_DivScroll\\\"> </div> </div> <div class=\\\"table-view-config clearfix doubleScroll_Wrapper_2\\\"> <!-- ko with: _groups --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { FieldListItem } from 'QueryBuilder/FieldListMenu/FieldListItem';\r\n\r\nimport FieldListMenuTemplate from 'QueryBuilder/FieldListMenu/Templates/FieldListMenu.html';\r\nimport { ZIndexManager } from 'Core/Common/ZIndexManager';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {EVENTS} from 'QueryBuilder/Events';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nconst DELETE_LIFESTATUS = 'Delete';\r\nconst DISABLE_LIFESTATUS = 'Disabled';\r\n\r\nexport class FieldListMenu extends Event {\r\n\tprivate _items: KnockoutObservableArray<FieldListItem>;\r\n\tprivate _isOpen: KnockoutObservable<boolean>;\r\n\tprivate _enableLeave: boolean;\r\n\tSelectedColumnsCount: KnockoutComputed<number>;\r\n\tIsAllSelected: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\tprivate _draggAppendTarget;\r\n\r\n\tconstructor(\r\n\t\tprivate _queryEntityModel: QueryEntityModel,\r\n\t\tprivate _isEnableSubQuery = true,\r\n\t\tprivate _isInSubQuery = false\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis.AddEvent(EVENTS.CREATE_SUB_QUERY);\r\n\t\tthis.AddEvent(EVENTS.REMOVE_SUB_QUERY);\r\n\t\tthis.AddEvent(EVENTS.COLUMN_SELECTED);\r\n\t\tthis.IsAllSelected = ko.observable(false);\r\n\t\tthis._items = ko.observableArray([]);\r\n\t\tthis._isOpen = ko.observable(false);\r\n\t\tthis.SelectedColumnsCount = ko.computed(() => {\r\n\t\t\tvar selectedColumns = _.filter(this._items(), item => { return item.IsSelected() });\r\n\t\t\treturn selectedColumns.length;\r\n\t\t});\r\n\t\tthis._enableLeave = true;\r\n\t}\r\n\r\n\tprivate IsRetired(statusName: string){\r\n\t\treturn statusName == DELETE_LIFESTATUS || statusName == DISABLE_LIFESTATUS;\r\n\t}\r\n\r\n AddItem(item: FieldListItem) {\r\n if (!this.IsRetired(item.Model.LifestatusName) || item.IsSelected()) {\r\n this._items.push(item);\r\n }\r\n \r\n\t\tthis.IsAllSelected(this._items().length === this._queryEntityModel.Columns.length);\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn FieldListMenuTemplate;\r\n\t}\r\n\r\n\t@enumerable get Items(): KnockoutObservableArray<FieldListItem> {\r\n\t\treturn this._items;\r\n\t}\r\n\r\n\tSelect(item: FieldListItem) {\r\n\t\titem.IsSelected(!item.IsSelected());\r\n\t\tif (item.IsSelected()) {\r\n\t\t\tthis.AddColumn(item.Model.Id);\r\n\t\t\tthis.Trigger(EVENTS.COLUMN_SELECTED, { Id: item.Model.Id });\r\n\t\t} else {\r\n this.RemoveColumn(item.Model.Id);\r\n if (item.Model.LifestatusName === DELETE_LIFESTATUS) {\r\n this.Items().splice(this.Items().indexOf(item), 1);\r\n }\r\n }\r\n\t\tthis.IsAllSelected(this._items().length === this._queryEntityModel.Columns.length);\r\n\t}\r\n\r\n\tAddColumn(fieldId: number) {\r\n\t\tvar fieldMetadata = _.find(this._queryEntityModel.Metadata.Fields, field => field.Id === fieldId);\r\n\t\tif (fieldMetadata) {\r\n\t\t\tvar queryColumnModel = new QueryColumnModel();\r\n\t\t\tqueryColumnModel.Metadata = fieldMetadata;\r\n\t\t\tthis._queryEntityModel.Columns.push(queryColumnModel);\r\n\t\t}\r\n\t}\r\n\r\n\tRemoveColumn(fieldId: number) {\r\n\t\tvar queryColumn = _.find(this._queryEntityModel.Columns, item => item.Metadata.Id === fieldId);\r\n\t\tif (queryColumn) {\r\n\t\t\tthis._queryEntityModel.Columns.splice(this._queryEntityModel.Columns.indexOf(queryColumn), 1);\r\n\t\t}\r\n\t}\r\n\r\n\tDraggableHelper(item: FieldListItem, evt, ui) {\r\n\t\treturn $(`<div class=\"box-shadow--6dp\" style=\"margin-left: 10px; height: 40px; cursor: move; z-index: ${ZIndexManager.Instance.NextValue}; position: relative;\">\r\n\t\t\t\t\t\t<div class=\"panel color-view bg-blue bg-font-blue\" style=\"height: 40px;\">\r\n\t\t\t\t\t\t\t<div style=\"cursor: move; padding: 0; display: inline-block; padding-left: 5px; padding-right: 5px;\" class=\"panel-heading text-center\">\r\n\t\t\t\t\t\t\t\t<h5 class=\"bold\">\r\n\t\t\t\t\t\t\t\t\t${this._queryEntityModel.Metadata.Name}.${item.Name}\r\n\t\t\t\t\t\t\t\t</h5>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>`);\r\n\t}\r\n\r\n\tStartDrag(item: FieldListItem, evt, ui) {\r\n\r\n\t\tko.utils.domData.set(evt.target, 'ko_dragItem', { FieldMetadataModel: item.Model, QueryEntityModel: this._queryEntityModel });\r\n\t\t$('.queryBuilderDropdown').parent().removeClass('open');\r\n\t\tthis._draggAppendTarget.css('overflow', 'auto');\r\n\r\n\t}\r\n\r\n\r\n\tDrag(item: FieldListItem, evt, ui) {\r\n\t\tthis._draggAppendTarget.scrollTop((evt.pageY - 400));\r\n\t\t$(\"#QuerySorting\").sortable(\"refresh\");\r\n\t}\r\n\r\n\t@enumerable get AppendTo() {\r\n\t\treturn this._draggAppendTarget|| '.jBox-Modal .jBox-content';\r\n\t}\r\n\r\n\tAfterRender(args) {\r\n\t\tif (args && args[1]) {\r\n\t\t\tconst $parentNode = $(args[1].parentNode);\r\n\t\t\tconst $jboxContent = $parentNode.parent('.jBox-content');\r\n\t\t\tthis._draggAppendTarget= $jboxContent;\r\n\r\n\t\t\t$parentNode.on('show.bs.dropdown', function () {\r\n const styling: any = {\r\n position: 'absolute',\r\n left: 0\r\n };\r\n styling.top = 43;\r\n\t\t\t\tstyling['box-shadow'] = '5px -5px rgba(102, 102, 102, 0.5)';\r\n\t\t\t\t$(args[0]).css(styling).addClass('queryBuilderDropdown');\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tSelectAll() {\r\n\t\tthis.IsAllSelected(!this.IsAllSelected());\r\n\t\tif (this.IsAllSelected()) {\r\n\t\t\t_.each(this._items(),\r\n\t\t\t\t(item) => {\r\n\t\t\t\t\tif (!item.IsSelected()) {\r\n\t\t\t\t\t\titem.IsSelected(true);\r\n\t\t\t\t\t\tthis.AddColumn(item.Model.Id);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\t_.each(this._items(),\r\n\t\t\t\t(item) => {\r\n\t\t\t\t\titem.IsSelected(false);\r\n\t\t\t\t\tthis.RemoveColumn(item.Model.Id);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tCreateSubQuery() {\r\n\t\tthis._isInSubQuery = true;\r\n\t\tthis.Trigger(EVENTS.CREATE_SUB_QUERY);\r\n\t}\r\n\r\n\tRemoveSubQuery() {\r\n\t\tthis._isInSubQuery = false;\r\n\t\tthis.Trigger(EVENTS.REMOVE_SUB_QUERY);\r\n\t}\r\n\r\n\tset IsInSubQuery(value: boolean){\r\n\t\tthis._isInSubQuery = value;\r\n\t}\r\n\r\n\t@enumerable get IsEnableSubQuery(): boolean {\r\n\t\treturn this._isEnableSubQuery;\r\n\t}\r\n\r\n\t@enumerable get IsInSubQuery(): boolean {\r\n\t\treturn this._isInSubQuery;\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"preventBubble: ['mousedown']\\\" class=\\\"fieldListMenuDropdown dropdown-menu hold-on-click dropdown-checkboxes\\\" role=\\\"menu\\\" style=\\\"position:absolute\\\"> <div data-bind=\\\"preventBubble: ['mousewheel', 'DOMMouseScroll']\\\" style=\\\"max-height:300px;overflow-y:scroll\\\"> <label data-bind=\\\"preventBubble: ['mousedown'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tclick: $data.SelectAll.bind($data)\\\" class=\\\"select-all-checkbox\\\" style=\\\"cursor:pointer;white-space:nowrap\\\"> <input data-bind=\\\"uniform: IsAllSelected\\\" type=\\\"checkbox\\\"> <!-- ko text: _labels.SELECT_ALL --><!-- /ko --> </label> <!-- ko foreach: Items --> <label data-bind=\\\"preventBubble: ['mousedown'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tclick: $parent.Select.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tdraggable: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tconnectToSortable: '#QuerySorting',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdelay: 300,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstart: $parent.StartDrag.bind($parent, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdrag: $parent.Drag.bind($parent, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tappendTo: $parent.AppendTo,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcontainment: $parent.AppendTo,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thelper: $parent.DraggableHelper.bind($parent, $data)\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, attr: { title: Name }\\\" style=\\\"cursor:pointer;white-space:nowrap\\\"> <input data-bind=\\\"uniform: IsSelected\\\" type=\\\"checkbox\\\"> <!-- ko text: Name --><!-- /ko --> </label> <!-- /ko --> </div> <!-- ko if: IsEnableSubQuery --> <div class=\\\"divider\\\"></div> <!-- ko ifnot: IsInSubQuery--> <a data-bind=\\\"click: $data.CreateSubQuery.bind($data)\\\" javascript=\\\";\\\" class=\\\"btn blue\\\">New group</a> <!-- /ko --> <!-- ko if: IsInSubQuery--> <a data-bind=\\\"click: $data.RemoveSubQuery.bind($data)\\\" javascript=\\\";\\\" class=\\\"btn blue\\\">Remove from group</a> <!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {FieldMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class FieldListItem {\r\n\tprivate _isSelected: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(private _model: FieldMetadataModel, isSelected: boolean = false) {\r\n\t\tthis._isSelected = ko.observable(isSelected);\r\n\t}\r\n\r\n\t@enumerable get Name(): string{\r\n\t\treturn this._model.NameTranslation || this._model.Name;\r\n\t}\r\n\r\n\t@enumerable get Model(): FieldMetadataModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\t@enumerable get IsSelected(): KnockoutObservable<boolean> {\r\n\t\treturn this._isSelected;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {EntityListItem} from 'QueryBuilder/EntityListMenu/EntityListItem';\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from 'QueryBuilder/Events';\r\nimport { FieldMetadataModel } from \"Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel\";\r\n\r\nimport EntityListMenuTemplate from 'QueryBuilder/EntityListMenu/Templates/EntityListMenu.html';\r\n\r\nconst DELETE_LIFESTATUS = 'Delete';\r\n\r\nexport class EntityListMenu extends Event {\r\n\tprivate _items: KnockoutObservableArray<EntityListItem>;\r\n\tprivate _enableLeave: boolean;\r\n\tprivate _referenceField: FieldMetadataModel;\r\n\tSelectedEntitiesCount: KnockoutComputed<number>;\r\n\r\n\tIsIterator: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tisIterator: boolean,\r\n\t\treferenceField: FieldMetadataModel\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis._referenceField = referenceField;\r\n\t\tthis.IsIterator = ko.observable(isIterator);\r\n\t\tthis._items = ko.observableArray([]);\r\n\t\tthis.AddEvent(EVENTS.ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.IS_ITERATOR_CHANGED);\r\n\t\tthis._enableLeave = true;\r\n\r\n\t\tthis.SelectedEntitiesCount = ko.computed(() => {\r\n\t\t\treturn _.filter(this._items(), item => { return item.IsSelected() }).length;\r\n\t\t});\r\n\r\n\t\tthis.IsIterator.subscribe((newValue) => {\r\n\t\t\tthis.Trigger(EVENTS.IS_ITERATOR_CHANGED, { IsIterator: newValue });\r\n\t\t});\r\n\t}\r\n\r\n\tget Items(): KnockoutObservableArray<EntityListItem> {\r\n\t\treturn this._items;\r\n\t}\r\n\r\n\tSetIterator() {\r\n\t\tthis.IsIterator(!this.IsIterator());\r\n\t}\r\n\r\n\tAddItems(items: Array<EntityListItem>) {\r\n\t\t_.each(items, (item)=>this.InitEvents(item));\r\n\t\tthis._items([...this._items(),...items]);\r\n\t}\r\n\r\n\tget ReferenceTitle(): string {\r\n\t\tif(this._referenceField){\r\n\t\t\treturn this._referenceField.NameTranslation || this._referenceField.Name;\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tget ReferenceFieldId(): number {\r\n\t\treturn this._referenceField.Id\r\n\t}\r\n\r\n\tget ReferenceField(): FieldMetadataModel {\r\n\t\treturn this._referenceField\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn EntityListMenuTemplate;\r\n\t}\r\n\r\n\tSelectEntityItemById(entityId: number) {\r\n\t\tlet itemToSelect = _.find(this._items(), item => {\r\n\t\t\treturn (item.Model.Id === entityId);\r\n\t\t});\r\n\r\n\t\tif (itemToSelect) {\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.SELECTED);\r\n\t\t\titemToSelect.IsSelected(true);\r\n\t\t\tthis.InitEvents(itemToSelect);\r\n\t\t}\r\n\t}\r\n\r\n\tSelectReferenceItemById(entityId: number, referenceFieldId: number) {\r\n\t\tlet itemToSelect = _.find(this._items(), item => {\r\n\t\t\treturn (item.Model.Id === entityId && item.ReferenceFieldId == referenceFieldId)\r\n\t\t});\r\n\r\n\t\tif (itemToSelect) {\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.SELECTED);\r\n\t\t\titemToSelect.IsSelected(true);\r\n\t\t\tthis.InitEvents(itemToSelect);\r\n\t\t}\r\n\t}\r\n\r\n\tSelectLookupItemById(entityId: number, lookupFieldId: number) {\r\n\t\tlet itemToSelect = _.find(this._items(), item => {\r\n\t\t\treturn (item.Model.Id === entityId && item.LookupFieldId == lookupFieldId);\r\n\t\t});\r\n\r\n\t\tif (itemToSelect) {\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.SELECTED);\r\n\t\t\titemToSelect.IsSelected(true);\r\n\t\t\tthis.InitEvents(itemToSelect);\r\n\t\t}\r\n\t}\r\n\r\n\tSelectReferenceLookupItemById(entityId: number, referenceLookupFieldId: number) {\r\n\t\tlet itemToSelect = _.find(this._items(), item => {\r\n\t\t\treturn (item.Model.Id === entityId && item.ReferenceLookupFieldId == referenceLookupFieldId);\r\n\t\t});\r\n\r\n\t\tif (itemToSelect) {\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.SELECTED);\r\n\t\t\titemToSelect.IsSelected(true);\r\n\t\t\tthis.InitEvents(itemToSelect);\r\n\t\t}\r\n\t}\r\n\r\n\tget SelectedItemsCount(): number{\r\n\t\treturn _.filter(this._items(), (item) =>{ return item.IsSelected()}).length;\r\n\t}\r\n\r\n\tInitEvents(item: EntityListItem) {\r\n\t\titem.On(EVENTS.ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._enableLeave = false;\r\n\t\t\tthis.Trigger(EVENTS.ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\titem.On(EVENTS.ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif (item.IsEnableUncheck()) {\r\n\t\t\t\tthis.Trigger(EVENTS.ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t\t\tif(item.Model.Lifestatus === DELETE_LIFESTATUS){\r\n\t\t\t\t\tthis._items.splice(this._items().indexOf(item), 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\titem.On(EVENTS.LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._enableLeave = false;\r\n\t\t\tthis.Trigger(EVENTS.LOOKUP_ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\titem.On(EVENTS.LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif (item.IsEnableUncheck()) {\r\n\t\t\t\tthis.Trigger(EVENTS.LOOKUP_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t\t\tif(item.Model.Lifestatus === DELETE_LIFESTATUS) {\r\n\t\t\t\t\tthis._items.splice(this._items().indexOf(item), 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\titem.On(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._enableLeave = false;\r\n\t\t\tthis.Trigger(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\t\r\n\t\titem.On(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif (item.IsEnableUncheck()) {\r\n\t\t\t\tthis.Trigger(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t\t\tif(item.Model.Lifestatus === DELETE_LIFESTATUS) {\r\n\t\t\t\t\tthis._items.splice(this._items().indexOf(item), 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\titem.On(EVENTS.REFERENCE_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._enableLeave = false;\t\t\r\n\t\t\tthis.Trigger(EVENTS.REFERENCE_ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\titem.On(EVENTS.REFERENCE_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif (item.IsEnableUncheck()) {\r\n\t\t\t\tthis.Trigger(EVENTS.REFERENCE_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t\t\tif(item.Model.Lifestatus === DELETE_LIFESTATUS) {\r\n\t\t\t\t\tthis._items.splice(this._items().indexOf(item), 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\titem.On(EVENTS.SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.Select(item);\r\n\t\t});\r\n\t}\r\n\r\n\tSelect(item: EntityListItem) {\r\n\t\tif (item.IsEnableUncheck()) {\r\n\t\t\titem.IsSelected(!item.IsSelected());\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(args) {\r\n\t\targs && args[1] && $(args[1].parentNode).on('show.bs.dropdown', function () {\r\n const styling: any = {\r\n position: 'absolute',\r\n left: 0\r\n };\r\n styling.top = 43;\r\n styling['box-shadow'] = '5px -5px rgba(102, 102, 102, 0.5)';\r\n\t\t\t$(args[0]).css(styling).addClass('queryBuilderDropdown');\r\n\t\t});\r\n\t}\r\n\r\n\tMouseLeave(element: HTMLElement) {\r\n\t\tif (this._enableLeave) {\r\n\t\t\t$(element).parent().removeClass('open');\r\n\t\t}\r\n\t\tthis._enableLeave = true;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fieldListMenuDropdown dropdown-menu hold-on-click dropdown-checkboxes\\\" role=\\\"menu\\\"> <div data-bind=\\\"preventBubble: ['mousewheel', 'DOMMouseScroll']\\\" style=\\\"max-height:300px;overflow-y:scroll\\\"> <label data-bind=\\\"click: $data.SetIterator.bind($data)\\\" class=\\\"select-all-checkbox\\\" style=\\\"cursor:pointer;white-space:nowrap\\\"> <input data-bind=\\\"uniform: IsIterator\\\" type=\\\"checkbox\\\"> Iterator </label> <!-- ko fastForEach: Items --> <label data-bind=\\\"click: $data.Select.bind($data), attr: { title: $data.Name }\\\" style=\\\"cursor:pointer;white-space:nowrap\\\"> <input data-bind=\\\"uniform: $data.IsSelected, enableAttr: $data.IsEnableUncheck\\\" type=\\\"checkbox\\\"> <!-- ko text: $data.NameTranslation --><!-- /ko --> </label> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS} from 'QueryBuilder/Events';\r\nimport {EntityMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport { FieldMetadataModel } from \"Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel\";\r\n\r\nexport class EntityListItem extends Event {\r\n\tprivate _isSelected: KnockoutObservable<boolean>;\r\n\tprivate _isEnableUncheck: KnockoutObservable<boolean>;\r\n\tprivate _lookupField: FieldMetadataModel;\r\n\tprivate _referenceField: FieldMetadataModel;\r\n\tprivate _referenceLookupField: FieldMetadataModel;\r\n\r\n\tconstructor(\r\n\t\tprivate _model: EntityMetadataModel,\r\n\t\tisSelected: boolean = false,\r\n\t\tisEnableUncheck: boolean = true,\r\n\t\tlookupField: FieldMetadataModel = null,\r\n\t\treferenceField: FieldMetadataModel = null,\r\n\t\treferenceLookupField: FieldMetadataModel = null\r\n\t) {\r\n\t\tsuper();\r\n\r\n\t\tthis.AddEvent(EVENTS.SELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\r\n\t\tthis._lookupField = lookupField;\r\n\t\tthis._referenceField = referenceField;\r\n\t\tthis._referenceLookupField = referenceLookupField;\r\n\t\tthis._isSelected = ko.observable(isSelected);\r\n\t\tthis._isEnableUncheck = ko.observable(isEnableUncheck);\r\n\r\n\t\tthis._isSelected.subscribe(newValue => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\tthis.Trigger(this.ItemSelectedTriggerName, {\r\n\t\t\t\t\tEntityId: this._model.Id,\r\n\t\t\t\t\tReferenceLookupFieldId: this._referenceLookupField ? this._referenceLookupField.Id : null,\r\n\t\t\t\t\tLookupFieldId: this._lookupField ? this._lookupField.Id : null,\r\n\t\t\t\t\tReferenceFieldId: this._referenceField ? this._referenceField.Id : null,\r\n\t\t\t\t\tReferenceFieldName: this._referenceField ? this._referenceField.Name : null,\r\n\t\t\t\t\tLifestatus: this._model.Lifestatus\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tif (this.IsEnableUncheck) {\r\n\t\t\t\t\tthis.Trigger(this.ItemUnSelectedTriggerName, {\r\n\t\t\t\t\t\tEntityId: this._model.Id,\r\n\t\t\t\t\t\tType: this._model.Type,\r\n\t\t\t\t\t\tReferenceLookupFieldId: this._referenceLookupField ? this._referenceLookupField.Id : null,\r\n\t\t\t\t\t\tLookupFieldId: this._lookupField ? this._lookupField.Id : null,\r\n\t\t\t\t\t\tReferenceFieldId: this._referenceField ? this._referenceField.Id : null,\r\n\t\t\t\t\t\tReferenceFieldName: this._referenceField ? this._referenceField.Name : null,\r\n\t\t\t\t\t\tLifestatus: this._model.Lifestatus\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@enumerable get ItemUnSelectedTriggerName(): string {\r\n\t\tif(this.IsLookup){\r\n\t\t\treturn EVENTS.LOOKUP_ENTITY_UNSELECTED;\r\n\t\t}\r\n\r\n\t\tif(this.IsReferenceLookup){\r\n\t\t\treturn EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED;\r\n\t\t}\r\n\r\n\t\tif(this.IsReference){\r\n\t\t\treturn EVENTS.REFERENCE_ENTITY_UNSELECTED;\r\n\t\t}\r\n\r\n\t\treturn EVENTS.ENTITY_UNSELECTED;\r\n\t}\r\n\r\n\t@enumerable get ItemSelectedTriggerName(): string {\r\n\t\tif(this.IsLookup){\r\n\t\t\treturn EVENTS.LOOKUP_ENTITY_SELECTED;\r\n\t\t}\r\n\r\n\t\tif(this.IsReferenceLookup){\r\n\t\t\treturn EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED;\r\n\t\t}\r\n\r\n\t\tif(this.IsReference){\r\n\t\t\treturn EVENTS.REFERENCE_ENTITY_SELECTED;\r\n\t\t}\r\n\r\n\t\treturn EVENTS.ENTITY_SELECTED;\r\n\t}\r\n\r\n\t@enumerable get Name(): string {\r\n\t\treturn this._model.Name;\r\n\t}\r\n\r\n\t@enumerable get LookupFieldId(): number{\r\n\t\treturn this._lookupField ? this._lookupField.Id : null;\r\n\t}\r\n\r\n\t@enumerable get ReferenceLookupFieldId(): number{\r\n\t\treturn this._referenceLookupField ? this._referenceLookupField.Id : null;\r\n\t}\r\n\r\n\t@enumerable get ReferenceFieldId(): number{\r\n\t\treturn this._referenceField ? this._referenceField.Id : null;\r\n\t}\r\n\r\n\t@enumerable get IsReferenceLookup(): boolean {\r\n\t\treturn !!this._referenceLookupField;\r\n\t}\r\n\r\n\t@enumerable get IsLookup(): boolean {\r\n\t\treturn !!this._lookupField;\r\n\t}\r\n\r\n\t@enumerable get IsReference(): boolean {\r\n\t\treturn !!this._referenceField;\r\n\t}\r\n\r\n\t//TODO add translation for lookup table\r\n\t@enumerable get NameTranslation(): string {\r\n\r\n\t\tif(this._referenceLookupField){\r\n\t\t\treturn `${this._referenceLookupField.Name} < ${this._model.Name}`;\r\n\t\t}\r\n\r\n\t\tif(this._lookupField){\r\n\t\t\treturn `${this._model.Name} > ${this._lookupField.Name}`;\r\n\t\t}\r\n\t\treturn this._model.NameTranslation || this._model.Name;\r\n\t}\r\n\r\n\t@enumerable get Model(): EntityMetadataModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\t@enumerable get IsSelected(): KnockoutObservable<boolean> {\r\n\t\treturn this._isSelected;\r\n\t}\r\n\r\n\t@enumerable get IsEnableUncheck(): KnockoutObservable<boolean> {\r\n\t\treturn this._isEnableUncheck;\r\n\t}\r\n\r\n\tSelect(){\r\n\t\tthis.Trigger(EVENTS.SELECTED);\r\n\t}\r\n}","import enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class ElementZIndexManager {\r\n\tprivate static instance: ElementZIndexManager;\r\n\tprivate _zIndex: number;\r\n\tprivate _element: HTMLElement;\r\n\r\n\tconstructor() {\r\n\t\tthis._zIndex = 1;\r\n\t}\r\n\r\n\tstatic get Instance() {\r\n\t\tif (this.instance === null || this.instance === undefined) {\r\n\t\t\tthis.instance = new ElementZIndexManager();\r\n\t\t}\r\n\t\treturn this.instance;\r\n\t}\r\n\r\n\tget NextValue(): number {\r\n\t\treturn this._zIndex++;\r\n\t}\r\n\r\n\tToTop(element: HTMLElement) {\r\n\t\t$(element).css({ 'z-index': this.NextValue });\r\n\t}\r\n}","import { JoinTypes } from 'QueryBuilder/Enums';\r\n\r\nexport var JoinTypeImages = {};\r\nJoinTypeImages[JoinTypes.LeftJoin] = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAADqUlEQVRoQ+2ZjZEMURDHeyNABIgAESACRIAInAgQASLgIkAEiAARIAJEQP2m+j/V825mp9+b2XK3Na9qS9ntr39/vX59OzuSszsSHLYBOW+R3CKyReRAHthS60CObRbbEpF7ZnbfzK6Z2WUzu+naf5vZV/98MrMPE1bBf8f54EUGB17J2Mc/KjYLBGUvHYAUz3kPo96b2QsnfNbA/8rMXjvAvfoyQDDgJHhuDkD5+1PnRQ7npwPE64D94b/jID5Em4hdDZF+7oAmde8DgtCPIXVqAWAwRpEyHCLKd3g5cwADgNtOTHQfT0VnCgi5+87rIKO0pPnmXsXj1NKb8P+7AVxGNs54a2aXnA9+5A7OGBAi8WUBCLyOI1DGv0Q11hXf3/KUygCBBmcQkRtTYMaAAEKdKKso0mEk6TQGQnT8Dl3NwRnUFWAA9SAyl0DISRVljRLR0qGQgQdxyL4OJ9oaPcjFCaQZ9ULKdScCQen3Bd2JlEIRJxvV65UphmyaAOlKisLf1UsEArqHNe4paOWhR17cGVGnZgZ97SHF6GZ9VCOQXwui8cejgXeIqiIzZ+DAq3PE4Xfqj6hzBxGVPiK0ONpt65FnpaBGDkVL8dYeQHBpds1FEVmaVtzeXHQtzYIRhMmh9qDvid/4JwKinKsVJnouKWS0yPnsBVyrW0Xf8QtItstMKZOc1jrLzHyl7lEgf2vdUdDLkFY5LUAwQfp2Sw0QnqVyVgPCbcnV33pkCO2UW7f2tABRh+wu4qMrdrWyWk+K/n+0X1o2b5zuDlNELuKFqE7bXagxN1vzm6jEUUM3bia6cbTJ0IuGEYhRiHMF/Rd1aNQk0g+d5RiPN1u6Dp7pBzh/M2S6YMsYH+e5nv+QDys9gKZSpuVhFRcigyfAWP9eeqfEpy6z11iEWU60PKeZ0GlMcS/QOWpq+QAY7ZVqilApBhgtH0owFDggSMXsIRJsYgABP3OW1kyTQPgBRbwRWsGgRGsbOgzFyYtu1IgZNPATCWyCnxflmffL3IJOW4us5yIdEYk7LC4wACIzc7Sm1VO4XPgNZGRmHB5LGNHazeCnJkgNjCM6gOG7QXq41+l2pBAfHRbiADqzmBNBBgi0GMAYg/AsINKAFNB6KK4/MxGBhkcTfLNRzAKJirVk1p8EdF9gePyzwtg7nHwnuvBqp1uCwnh4+aQbQguQrDezdHQgDE4bPSb4PADJAt5LtwFZxY0rCtkisqIzVxG1RWQVN64o5Ggi8g+qfNwzr2SI6AAAAABJRU5ErkJggg==';\r\nJoinTypeImages[JoinTypes.RightJoin] = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAADRUlEQVRoQ+2Z8bVMMRDGZytABagAFaACVIAKPBWgAnRABe+pABWgAlSACji/Pfn2ZLNJ7iS5e9a75845+9fNJPPNNzOZzG5sIbJZCA5bgfxvTK6MrIwcyQNraB3Jsd3b9jDywMwemtkNM7tqZrfD6b/N7Gv4fTKzDwWr0L8X9NBlDwRd7VHTz27rBcJhrwMAHTzlPYx6Y2Zvw8JnZnYWGe7RvzCz5wFgdb0HyIvEgG9mxgF4TR7kELGDl5+Y2a2IKX2fMj73XQ55VVOuAcGwj1HoECp49IfTGsLv3LnWs4zQu19ipwQEr2IEefAzeBgGvII+TsAZMIiIIe8euXU48VHIp73vOSAc/iWAwAgSE3q9koJAH3lnZiT6qADmTmpTDgggMAYQqkgth8f6qRPIrTnAEGaA2UkK5KWZkdyEEyBamGDTKX3YJkTnCDOSn/O2EgPhkO8hrkmqlpxgL/IJfaSmj4NgbVRw8k05OwZCDD8OFxkVp1Wk/z4Uh5q+1raeka7fnRUD+RXYAKW3xGrjmE2PfszeCBhYuRaHlmp+b4L36JOwc+QK5fhCjIjqvQRqcJX0aSdoSzzC5UrbMyq0QGcCQmLfnUjS2oE9+pRmLs1R+cxdJyCq/dRmKG+Vv0GBePWWbPKKvByV7Z0iIDLE00TmDu7Vl94omM3igKiCXMbQ2lbaxSU7JZMX3KUvv7rQDrpKZxb26KtSOo8oLtu7EFlF2bwSGrGeFgUdr/5cLcofzQByTSNvBlC2yimaxu2tjqFpGy+vjrbxteo3140OGzC7vYBLD6vsc9JBkR5WpUFB/Ix2bFddUnxYSUt3Sm/iSz8N0XQqMwLkoEsvDR8w5nrou4ojmIIlvABpIkl8wDwN6+LR0giI7DO8Ng7CCMAQZhjT8vSNwagJ7RlkpIABQak/aGynBnTxoEDjS29pnntAVx1NebpdEpgSR6ggeEMjUyqHvEMO8OLTyFQMsAaRfmtYoU/nsZuY5DbwAEEPI9kML3sNkgF6MeKM2CFTgNDnbgLA5BvHCyQ+FDD6W0As8F3swBAhCWs5ifVhTY4hdOK/FUr62U17gEx58iTfVyAncXvl0JWRlZEjeWANrSM5tnvbxTDyD3ba1zP3AORqAAAAAElFTkSuQmCC';\r\nJoinTypeImages[JoinTypes.InnerJoin] = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAADa0lEQVRoQ+2ZgZFMQRCGeyNwIuAiQASIABFwESACRIAIEAEiOCJwFwEiQATU92r+q953b+Z1T1lrX72p2tqq2/ln+v+7p6enb2MLGZuF8LCVyP/mydUjq0d2pMAaWjsStnvZHo/cM7P7ZnbdzI7M7GbZ/aeZnZXPJzP7WLEK/J2CA8saDLBao4WfXDZKhM1eFgLaeE49jHplZq/LxMdm9sQZHsF/MLOnhWBzfoTIs5EB52bGBqgmBdlE3kHlR2Z2w3lKv/MN/q3zHmsw5B28hcc9HkFetJi0iGDYqQsdQgVFv81JWX7HmPejuQ+KCJElCF0IEIoKvbs179SIoA5GsNj3ojAeiA7wiDAOQ9THGM5DdOAhPHitiIgYl/BTRNj8SyFBGLCQ3B/ZvEZC2B4y2ISQhBsRcWts0xQRSGAMJJSRIgQ0R/gWBkUxJjvAQeYSfkzkuZlxuAknSGQ8gVHCRwzk8DI/M/AMJAizLbwnwqSvJa6J48yZwBjOE/jMOE4kD61LqHP+EBn8ILYnwoF6WC4yMk52CJ/BvSuJJINhLumfbHaB90R+FG/0qOS9mTFqS9UEUN4Hf9V7RDm/94BP3RlRuzJ3i19TB3/AyyMKi54DyOI9YSWjKGG4aLNDiWXAiwgH+3a5rLKHHAOEzxrD/M/lrspidegHvIgo95PbM7euNv+dtWI0P1LzjbfgesDu4U7RAjKkZ0E22AcRv+9mcUSUAQ4xtIZMu7jDTt3PC+7g068utN6qdB8XojLt1oVIBuC6v1IKsegrUCmREgUM+Mz4VYrNbJWtEgX88HibKhopyGCZHT23e2/RyOuVKLioCsZlvFQ9hDJ+y5u1h9XkczLgon/xsNIzvPqwkp3V52SACFOEb03vrbKrz/Ba80HPSb6rLZiKpdRAFJG1g09IUPBlajrfmpp8hrfaQRx6tWBOkk/fGpkeEpB+41pTHPJQO8inVLVg+Jval9HU/DcadGrTsn+zNRWpdjnAPHwUKqihlikKSx3cT6tGLVO1kpjD8Hi1TDHOt0yZo5apx1N5NDsuESIYgZEshsrRSw8CYPgwEMMLMpc7wEMYArMXZpSI3xQy+reAvMDv8g4eIiTx2tTweFSXMPLOHH5y0R4ic0ru5feVyF5kb2y6emT1yI4UWENrR8J2L7sYj/wBWhPoM2CcXEwAAAAASUVORK5CYII=';\r\nJoinTypeImages[JoinTypes.OuterJoin] = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QwHFBcYRCugUwAAAsFJREFUaN7tmU9LVUEYxn8KRiJcCvJfhFHQogQXEeTCEOWuIj/AFdzpV2gRLlz4FUQJXIVfQKJFhCAursgtwoUgSVckNxmail5ui26bx5iOVz0z78FA5oFhDjPv87zznjlzzsx7ICIiIiIiIoIGT/sbwAsgDzwCuoBr6vsJfAM+AUvAO6CS4DcDz4FnwGPgjjQBfgFbwBrwAXgrzUzRAbzWwGopywEwBTxVmVJbWn5FPjuyCKAJeAUcegzALVXgvUo1UONQY2gKDaIVWAx0XgPKQI8e3wZdlw16ixqTF7qNTktAu7RWVFBbyXhzun3Ww5bB2RegTVr9Tnu/2tpkE6q/lWbdNAPLBicV4KG08sCx03esNmRTMfhZ1ljPxKRBvAa8lM6DM95QB+pDthZfk2cFcRs4Mgh/1Zul8YJ1UJJNkzih/o405lOYMd6hUemMpLAdke2o0edMMoiccTYOgRa9ZtdT2K/LtsXwjTqZlZwbyLDxzsxJp8+D0yfOnNH3MHpWAQaNO4Al1UMenKEENxSDbiA9RrGPqns9OL0Jbij+GfuOcXo7pbPtwdkWp9Poe8cNpGoUuy6diufHE3Etvqvuo9VgnN7af+L+HftJIPtGsZuqdz04uwluKPbdQMpGsS7VGx6cjQQ3FGU3kFWj2BPVRQ9OMcENxaobyIJR7GSLPu/BmU9wQ7GQ5RblSNsNlDy4yH5Nti0Z+M0lI5s2vgbHpFNIYVuQ7ZjR53S9KWr3zHKct40vnmNXzGgbf+Acp09hPKOD1T1gr07/nvqyOFiNX5T+sWRO3KPuQJ2j7kBGR93FNOmhVmAzo+RD3mnPZ5R82PRJC2WZDvqscunpoCuVoHPXzIThea4Cb1SqhnU3YUmZurgLzAYmsQsqIUnsWfm+lN8Kt4DfwHd9F3x+K9zX4m8EflzGb4WIiIiIiIgrjT/HEHQkSuUmXAAAAABJRU5ErkJggg==';","export const EVENTS = {\r\n\tJOIN_TYPE_CHANGED: 'JOIN_TYPE_CHANGED',\r\n\tUSE_MAIN_CHANGED: 'USE_MAIN_CHANGED',\r\n\tLINK_DIRECTION_CHANGED: 'LINK_DIRECTION_CHANGED'\r\n}","import * as ko from 'knockout';\r\nimport { JoinTypes, UseMainCondition, LinkDirectionCondition } from 'QueryBuilder/Enums';\r\nimport { Event } from 'Core/Common/Event'\r\nimport { EVENTS } from 'QueryBuilder/QueryEntityJoin/JoinOptionsMenu/Events';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport Template from 'QueryBuilder/QueryEntityJoin/JoinOptionsMenu/Templates/JoinOptionsMenu.html';\r\n\r\nexport interface IJointTypeOption {\r\n\tName: string;\r\n\tValue: JoinTypes;\r\n}\r\n\r\nexport interface IUseMainOption {\r\n\tName: string;\r\n\tValue: UseMainCondition;\r\n}\r\n\r\nexport interface ILinkDirectionOption {\r\n\tName: string;\r\n\tValue: LinkDirectionCondition;\r\n}\r\n\r\nexport class JoinOptionsMenu extends Event {\r\n\tprivate _jointTypeOptions: Array<IJointTypeOption>;\r\n\tprivate _useMainOptions: Array<IUseMainOption>;\r\n\tprivate _linkDirectionOptions: Array<ILinkDirectionOption>;\r\n\tprivate _joinTypeValue: KnockoutObservable<JoinTypes>;\r\n\tprivate _useMainValue: KnockoutObservable<UseMainCondition>;\r\n\tprivate _enableUseMain: KnockoutObservable<boolean>;\r\n\tprivate _linkDirectionValue: KnockoutObservable<LinkDirectionCondition>;\r\n\tprivate _enableLinkDirection: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(joinType: JoinTypes, useMain: UseMainCondition = null, enableUseMain = false, linkDirection: LinkDirectionCondition = null, enableLinkDirection = false) {\r\n\t\tsuper();\r\n\t\tthis.AddEvent(EVENTS.JOIN_TYPE_CHANGED);\r\n\t\tthis.AddEvent(EVENTS.USE_MAIN_CHANGED);\r\n\t\tthis.AddEvent(EVENTS.LINK_DIRECTION_CHANGED);\r\n\t\tthis._enableUseMain = ko.observable(enableUseMain);\r\n\t\tthis._enableLinkDirection = ko.observable(enableLinkDirection);\r\n\r\n\t\tthis._jointTypeOptions = [\r\n\t\t\t{ Name: LABELS.NORMAL, Value: JoinTypes.InnerJoin },\r\n\t\t\t{ Name: LABELS.EXCLUSIVE, Value: JoinTypes.LeftJoin },\r\n\t\t\t{ Name: LABELS.INCLUSIVE, Value: JoinTypes.OuterJoin }\r\n\t\t];\r\n\r\n\t\tthis._useMainOptions = [\r\n\t\t\t{ Name: LABELS.MAIN_ONLY, Value: UseMainCondition.MainTrue },\r\n\t\t\t{ Name: LABELS.EXCLUDE_MAIN, Value: UseMainCondition.MainFalse },\r\n\t\t\t{ Name: LABELS.ALL, Value: UseMainCondition.NotUseMain }\r\n\t\t];\r\n\r\n\t\tthis._linkDirectionOptions = [\r\n\t\t\t{ Name: LABELS.LEFT_TO_RIGHT, Value: LinkDirectionCondition.LeftToRight },\r\n\t\t\t{ Name: LABELS.RIGHT_TO_LEFT, Value: LinkDirectionCondition.RightToLeft },\r\n\t\t\t{ Name: LABELS.BOTH, Value: LinkDirectionCondition.Both }\r\n\t\t];\r\n\r\n\t\tthis._joinTypeValue = ko.observable(joinType);\r\n\t\tthis._useMainValue = ko.observable(useMain);\r\n\t\tthis._linkDirectionValue = ko.observable(linkDirection);\r\n\t}\r\n\r\n\tget JoinTypeValue(): KnockoutObservable<JoinTypes> {\r\n\t\treturn this._joinTypeValue;\r\n\t}\r\n\r\n\tget UseMainValue(): KnockoutObservable<UseMainCondition> {\r\n\t\treturn this._useMainValue;\r\n\t}\r\n\r\n\tget LinkDirectionValue(): KnockoutObservable<LinkDirectionCondition> {\r\n\t\treturn this._linkDirectionValue;\r\n\t}\r\n\r\n\tget EnableUseMain(): KnockoutObservable<boolean> {\r\n\t\treturn this._enableUseMain;\r\n\t}\r\n\r\n\tget EnableLinkDirection(): KnockoutObservable<boolean> {\r\n\t\treturn this._enableLinkDirection;\r\n\t}\r\n\r\n\tChangeJoinType(joinValue: IJointTypeOption) {\r\n\t\tthis.Trigger(EVENTS.JOIN_TYPE_CHANGED, { JoinType: joinValue.Value });\r\n\t}\r\n\r\n\tChangeUseMain(useMain: IUseMainOption) {\r\n\t\tthis.Trigger(EVENTS.USE_MAIN_CHANGED, { UseMain: useMain.Value });\r\n\t}\r\n\r\n\tChangeLinkDirection(linkDirection: ILinkDirectionOption) {\r\n\t\tthis.Trigger(EVENTS.LINK_DIRECTION_CHANGED, { LinkDirection: linkDirection.Value });\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tMouseLeave(element: HTMLElement) {\r\n\t\t$(element).parent().removeClass('open');\r\n\t}\r\n}","// Module\nvar code = \"<ul data-bind=\\\"event: { mouseleave: $data.MouseLeave.bind($data, $element) }\\\" class=\\\"dropdown-menu link-entity-options\\\"> <li style=\\\"padding:5px\\\"> <span class=\\\"caption-subject font-dark bold\\\"><!--ko text: _labels.JOIN_TYPE --><!-- /ko --></span> <div class=\\\"btn-group\\\" data-toggle=\\\"buttons\\\"> <!--ko foreach: _jointTypeOptions --> <label data-bind=\\\"click: $parent.ChangeJoinType.bind($parent), css: { active: $parent.JoinTypeValue() === Value }, preventBubble: ['mousedown']\\\" class=\\\"btn btn-primary\\\"> <input type=\\\"radio\\\"><span data-bind=\\\"text: Name\\\"></span> </label> <!-- /ko --> </div> </li> <!--ko if: EnableUseMain --> <li style=\\\"padding:5px\\\"> <span class=\\\"caption-subject font-dark bold\\\"><!--ko text: _labels.MAIN_OPTIONS --><!-- /ko --></span> <div class=\\\"btn-group\\\" data-toggle=\\\"buttons\\\"> <!--ko foreach: _useMainOptions --> <label data-bind=\\\"click: $parent.ChangeUseMain.bind($parent), css: { active: $parent.UseMainValue() === Value }, preventBubble: ['mousedown']\\\" class=\\\"btn btn-primary\\\"> <input type=\\\"radio\\\"><span data-bind=\\\"text: Name\\\"></span> </label> <!-- /ko --> </div> </li> <!-- /ko --> <!--ko if: EnableLinkDirection --> <li style=\\\"padding:5px\\\"> <span class=\\\"caption-subject font-dark bold\\\"><!--ko text: _labels.LINK_DIRECTION --><!-- /ko --></span> <div class=\\\"btn-group\\\" data-toggle=\\\"buttons\\\"> <!--ko foreach: _linkDirectionOptions --> <label data-bind=\\\"click: $parent.ChangeLinkDirection.bind($parent), css: { active: $parent.LinkDirectionValue() === Value }, preventBubble: ['mousedown']\\\" class=\\\"btn btn-primary\\\"> <input type=\\\"radio\\\"><span data-bind=\\\"text: Name\\\"></span> </label> <!-- /ko --> </div> </li> <!-- /ko --> </ul>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: $data.Click.bind($data, $element),\\r\\n\\t\\t\\t\\tevent: {\\r\\n\\t\\t\\t\\t\\tmouseover: $data.MouseOver.bind($data, $element)\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tpreventBubble: ['mouseover'],\\r\\n\\t\\t\\t\\tcss: {\\r\\n\\t\\t\\t\\t\\t'query-entity-join': LinkEntity(),\\r\\n\\t\\t\\t\\t\\t'query-entity': !LinkEntity()\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tstyle: {\\r\\n\\t\\t\\t\\t\\ttop: $data.GetTopPosition(),\\r\\n\\t\\t\\t\\t\\tleft: $data.GetLeftPosition()\\r\\n\\t\\t\\t\\t}\\\" class=\\\"btn-group box-shadow--6dp query-entity-test\\\"> <!-- ko with: JoinOptionsMenu --> <div class=\\\"btn-group\\\" style=\\\"margin-right:7px\\\"> <button data-bind=\\\"css: $parent.BackgroundColor, attr: { title: $parent._labels.OPTIONS }\\\" type=\\\"button\\\" style=\\\"height:40px!important;text-align:center;padding:3px 10px\\\" class=\\\"btn btn-use-main-options\\\" data-toggle=\\\"dropdown\\\"> <img data-bind=\\\"attr: { src: $parent._joinTypeImage }\\\" src=\\\"\\\" width=\\\"35\\\" height=\\\"35\\\"> </button> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: LinkEntity --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <span type=\\\"button\\\" data-bind=\\\"css: BackgroundColor, attr: {title : TranslatedName}\\\" class=\\\"bold btn query-entity-table-name\\\" style=\\\"cursor:move;height:40px!important;width:142px!important;word-wrap:break-word\\\"> <!-- ko text: TranslatedName --><!-- /ko --> <!-- ko if: $data._isEnableSubQuery && !$data._isInSubQuery --> <a data-bind=\\\"click: $data.CreateSubQuery.bind($data), preventBubble: ['click']\\\" title=\\\"Create subquery\\\" class=\\\"create-sub-query-btn\\\"><i class=\\\"fa fa-object-group\\\"></i></a> <!-- /ko --> </span> <div class=\\\"btn-group entity-list-menu\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.ENTITIES }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-table\\\"></i> <!--ko text: SelectedEntitiesCount --><!-- /ko --> </button> <!-- ko with: EntityListMenu --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- ko foreach: ReferenceEntityListMenus --> <div data-bind=\\\"class: _referenceField ? _referenceField.Id : '' \\\" class=\\\"btn-group\\\"> <button data-bind=\\\"css: $parent.BackgroundColor, attr: { title: $data.ReferenceTitle }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-table\\\"></i> <!--ko text: SelectedEntitiesCount --><!-- /ko --> <i class=\\\"fa fa-link maker-entity-list-btn\\\"></i> </button> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"btn-group\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.FIELDS }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-list\\\"></i> <!--ko text: FieldListMenu.SelectedColumnsCount --><!-- /ko --> </button> <!-- ko with: FieldListMenu --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { ENTITY_COLORS } from 'QueryBuilder/Constants';\r\nimport { EVENTS } from 'QueryBuilder/Events';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { FieldListMenu } from 'QueryBuilder/FieldListMenu/FieldListMenu';\r\nimport { FieldListItem } from 'QueryBuilder/FieldListMenu/FieldListItem';\r\nimport { EntityListMenu } from 'QueryBuilder/EntityListMenu/EntityListMenu';\r\nimport { EntityRelationshipsMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\nimport { EntityTypes } from 'Core/Controls/Grid/BaseGrid/Enums/EntityTypes';\r\nimport { EntityListItem } from 'QueryBuilder/EntityListMenu/EntityListItem';\r\nimport { ElementZIndexManager } from 'QueryBuilder/ElementZIndexManager';\r\nimport { QueryLinkEntity } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/QueryLinkEntity';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { IQueryEntityParams } from 'QueryBuilder/QueryEntity/IQueryEntityParams';\r\nimport { JoinTypeImages } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/JoinTypesImages';\r\nimport { JoinOptionsMenu } from 'QueryBuilder/QueryEntityJoin/JoinOptionsMenu/JoinOptionsMenu';\r\nimport { JoinTypes } from 'QueryBuilder/Enums';\r\nimport { EVENTS as OPTION_MENU_EVENTS } from 'QueryBuilder/QueryEntityJoin/JoinOptionsMenu/Events';\r\nimport { IObjectIndex } from 'QueryBuilder/IObjectIndex';\r\n\r\nimport QueryEntityTemplate from 'QueryBuilder/QueryEntity/Templates/QueryEntity.html';\r\nimport QuerySubEntityTemplate from 'QueryBuilder/QueryEntity/Templates/QuerySubEntity.html';\r\nimport { EntityMetadataModel } from \"Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel\";\r\nimport { FIELD_TYPES } from \"Core/Constant\";\r\n\r\nconst DELETE_LIFESTATUS = 'Delete';\r\n\r\nexport interface ISelectedEntity {\r\n\tId: number;\r\n\tLookupFieldId?: number;\r\n\tReferenceFieldId?: number;\r\n\tReferenceFieldName?: number;\r\n\tReferenceLookupField?: number;\r\n}\r\n\r\nexport class QueryEntity extends Event {\r\n\tprivate _isEnableDrag: KnockoutObservable<boolean>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _selectedEntitiesCount: KnockoutObservable<number>;\r\n\tprivate _fieldListMenu: FieldListMenu;\r\n\tprivate _entityListMenu: EntityListMenu;\r\n\tprivate _referenceEntityListMenus: KnockoutObservable<Array<EntityListMenu>>;\r\n\r\n\tprivate _linkEntity: KnockoutObservable<QueryLinkEntity>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tprivate _model: QueryEntityModel;\r\n\tprivate _jsPlumb: KnockoutObservable<jsPlumbInstance>;\r\n\tprivate _entitiesRelationships: Array<EntityRelationshipsMetadataModel>;\r\n\tprivate _isSubject: boolean;\r\n\tprivate _gridSubjectEntityId: number;\r\n\tprivate _isEnableSubQuery: boolean;\r\n\tprivate _isInSubQuery: boolean;\r\n\tprivate _isEnableSelectSubEntity: boolean;\r\n\tprivate _joinTypeImage: KnockoutObservable<string>;\r\n\tprivate _joinType: JoinTypes;\r\n\tprivate _joinOptionsMenu: JoinOptionsMenu;\r\n\tprivate _objectIndexes: Array<IObjectIndex>;\r\n\r\n\tconstructor(params: IQueryEntityParams)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis._model = params.Model;\r\n\t\tthis._jsPlumb = params.JsPlumb;\r\n\t\tthis._joinType = params.JoinType;\r\n\r\n\t\tif (this._joinType === null || this._joinType === undefined) {\r\n\t\t\tthis._joinType = JoinTypes.LeftJoin;\r\n\t\t}\r\n\r\n\t\tthis._entitiesRelationships = params.EntitiesRelationships;\r\n\t\tthis._isSubject = params.IsSubject;\r\n\t\tthis._gridSubjectEntityId = params.GridSubjectEntityId;\r\n\t\tthis._isEnableSubQuery = params.IsEnableSubQuery;\r\n\t\tthis._isInSubQuery = params.IsInSubQuery;\r\n\t\tthis._isEnableSelectSubEntity = params.IsEnableSelectSubEntity || false;\r\n\r\n\t\tthis._linkEntity = ko.observable(null);\r\n\t\tthis._selectedEntitiesCount = ko.observable(0);\r\n\t\tthis._isEnableDrag = ko.observable(!this._isSubject);\r\n\t\tthis._objectIndexes = params.ObjectIndexes;\r\n\t\tthis._referenceEntityListMenus = ko.observableArray();\r\n\r\n\t\tthis.AddEvent(EVENTS.JOIN_TYPE_CHANGED);\r\n\t\tthis.AddEvent(EVENTS.AFTER_RENDER);\r\n\t\tthis.AddEvent(EVENTS.ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.ENTITY_UNSELECTED);\r\n\t\tthis.AddEvent(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\t\tthis.AddEvent(EVENTS.CREATE_SUB_QUERY);\r\n\t\tthis.AddEvent(EVENTS.REMOVE_SUB_QUERY);\r\n\t\tthis.AddEvent(EVENTS.DRAG);\r\n\t\tthis.AddEvent(EVENTS.DRAG_STOP);\r\n\t\tthis.AddEvent(EVENTS.MOUSE_OVER);\r\n\t\tthis.AddEvent(EVENTS.CLICK);\r\n\r\n\t\tthis.Init();\r\n\t\tthis.InitFieldListMenu(params.EnabledColumnTypes);\r\n\r\n\t\tif (this._model.Metadata.Type === EntityTypes[EntityTypes.Sub] || params.IsLookupJoin || params.IsReferenceJoin) {\r\n\t\t\tthis._joinTypeImage = ko.observable(JoinTypeImages[this._joinType]);\r\n\t\t\tthis._joinOptionsMenu = new JoinOptionsMenu(this._joinType);\r\n\t\t\tthis._joinOptionsMenu.On(OPTION_MENU_EVENTS.JOIN_TYPE_CHANGED, this, (eventArgs: any) => {\r\n\t\t\t\tthis._joinTypeImage(JoinTypeImages[eventArgs.data.JoinType]);\r\n\t\t\t\tthis.Trigger(EVENTS.JOIN_TYPE_CHANGED, { JoinType: eventArgs.data.JoinType });\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis.InitReferenceMenu();\r\n\t\tthis.InitEntityListMenu();\r\n\t}\r\n\r\n\tprivate Init() {\r\n\r\n\t\tvar objIndex = _.find(this._objectIndexes, (indx) => { return indx.Id === this._model.Metadata.Id });\r\n\r\n\t\tif (objIndex) {\r\n\t\t\tif (this._model.Index === 0 || this._model.Index === null) {\r\n\t\t\t\tobjIndex.Index = objIndex.Index + 1;\r\n\t\t\t\tthis._model.Index = objIndex.Index;\r\n\t\t\t} else {\r\n\t\t\t\tobjIndex.Index = this._model.Index;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet currentIndex = (this._model.Index === 0 || this._model.Index === null) ? 1 : this._model.Index;\r\n\t\t\tvar objIndex: IObjectIndex = {\r\n\t\t\t\tId: this._model.Metadata.Id,\r\n\t\t\t\tIndex: currentIndex\r\n\t\t\t};\r\n\t\t\tthis._objectIndexes.push(objIndex);\r\n\t\t\tthis._model.Index = objIndex.Index;\r\n\t\t}\r\n\r\n\t\tvar metadata = _.find(this._entitiesRelationships, item => item.EntityMetadata.Id === this._model.Metadata.Id);\r\n\t\tif (metadata) {\r\n\t\t\tthis._model.Metadata = metadata.EntityMetadata;\r\n\t\t}else{\r\n\t\t\t_.each(this._entitiesRelationships, (item)=>{\r\n\t\t\t\tvar metadata = _.find(item.TablesRelatedToLookup, referenceLookup => referenceLookup.Id === this._model.Metadata.Id);\r\n\t\t\t\tif (metadata) {\r\n\t\t\t\t\tthis._model.Metadata = metadata;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_.each(this._model.Metadata.Fields, (fieldMetadata) => {\r\n\t\t\tvar selectedQueryColumnModel = _.find(this._model.Columns, queryColumn => { return queryColumn.Metadata.Id === fieldMetadata.Id });\r\n\t\t\tif (selectedQueryColumnModel) {\r\n\t\t\t\tselectedQueryColumnModel.Metadata = fieldMetadata;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate CreateSubQuery(){\r\n\t\tthis._isInSubQuery = true;\r\n\t\tthis._fieldListMenu.IsInSubQuery = this._isInSubQuery;\r\n\t\tthis._isEnableDrag(false);\r\n\t\tthis.Trigger(EVENTS.CREATE_SUB_QUERY)\r\n\t}\r\n\r\n\tpublic RemoveSubQuery(){\r\n\t\tthis._isInSubQuery = false;\r\n\t\tthis._fieldListMenu.IsInSubQuery = this._isInSubQuery;\r\n\t}\r\n\r\n\tprivate InitReferenceMenu() {\r\n\t\tlet relationship = _.find(this._entitiesRelationships, item => item.EntityMetadata.Id === this._model.Metadata.Id);\r\n\t\tlet makerFields = _.filter(this._model.Metadata.Fields, (item) => {\r\n\t\t\treturn item.Type === FIELD_TYPES.Reference});\r\n\t\t_.each((makerFields), (referenceField)=>{\r\n\t\t\tlet referenceMenu = new EntityListMenu(false, referenceField);\r\n\t\t\tlet items = [];\r\n\r\n\t\t\treferenceMenu.On(EVENTS.REFERENCE_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.Trigger(EVENTS.REFERENCE_ENTITY_SELECTED, eventArgs.data);\r\n\t\t\t});\r\n\r\n\t\t\treferenceMenu.On(EVENTS.REFERENCE_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.Trigger(EVENTS.REFERENCE_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t\t\tthis.RemovedDeletedReferenceMenu(referenceMenu);\r\n\t\t\t});\r\n\r\n\t\t\t_.each(relationship.ReferenceEntities, (item)=>{\r\n\t\t\t\tlet entityListItem = new EntityListItem(item, false, true, null, referenceField);\r\n\t\t\t\titems.push(entityListItem);\r\n\t\t\t});\r\n\t\t\treferenceMenu.AddItems(items);\r\n\t\t\tthis._referenceEntityListMenus.push(referenceMenu);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate RemovedDeletedReferenceMenu(referenceMenu: EntityListMenu) {\r\n\t\tif(!!referenceMenu && referenceMenu.ReferenceField.LifestatusName === 'Delete' && referenceMenu.SelectedItemsCount === 0){\r\n\t\t\tthis._referenceEntityListMenus.splice(this._referenceEntityListMenus().indexOf(referenceMenu), 1);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate RemovedDeletedReferencesMenus() {\r\n\t\tlet makerFields = _.filter(this._model.Metadata.Fields, (item) => {\r\n\t\t\treturn item.Type === FIELD_TYPES.Reference});\r\n\t\t_.each((makerFields), (referenceField)=>{\r\n\t\t\tlet referenceMenu = _.find(this._referenceEntityListMenus(), item => item.ReferenceFieldId === referenceField.Id);\r\n\r\n\t\t\tif(!!referenceMenu && referenceField.LifestatusName === 'Delete' && referenceMenu.SelectedItemsCount === 0){\r\n\t\t\t\tthis._referenceEntityListMenus.splice(this._referenceEntityListMenus().indexOf(referenceMenu), 1);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InitFieldListMenu(enabledColumnTypes: Array<string>) {\r\n\t\tthis._fieldListMenu = new FieldListMenu(this._model, this._isEnableSubQuery, this._isInSubQuery);\r\n\t\t_.each(this._model.Metadata.Fields, field => {\r\n\t\t\tvar column = _.find(this._model.Columns, queryColumn => { return queryColumn.Metadata.Id === field.Id });\r\n\t\t\tif (enabledColumnTypes && enabledColumnTypes.length > 0) {\r\n\t\t\t\tif (enabledColumnTypes.indexOf(field.Type) >= 0) {\r\n\t\t\t\t\tthis._fieldListMenu.AddItem(new FieldListItem(field, column != null));\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis._fieldListMenu.AddItem(new FieldListItem(field, column != null));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._fieldListMenu.On(EVENTS.CREATE_SUB_QUERY, this, () => {\r\n\t\t\tthis._isEnableDrag(false);\r\n\t\t\tthis.Trigger(EVENTS.CREATE_SUB_QUERY);\r\n\t\t});\r\n\r\n\t\tthis._fieldListMenu.On(EVENTS.REMOVE_SUB_QUERY, this, () => {\r\n\t\t\tthis._isEnableDrag(true);\r\n\t\t\tthis.Trigger(EVENTS.REMOVE_SUB_QUERY);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InitEntityListMenu() {\r\n\t\tvar relationship = _.find(this._entitiesRelationships, item => item.EntityMetadata.Id === this._model.Metadata.Id);\r\n\t\tthis._entityListMenu = new EntityListMenu(this._model.IsIterator, null);\r\n\r\n\t\tthis._entityListMenu.On(EVENTS.ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() + 1);\r\n\t\t\tthis.Trigger(EVENTS.ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\tthis._entityListMenu.On(EVENTS.ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif(eventArgs.data.Lifestatus != DELETE_LIFESTATUS){\r\n\t\t\t\t this._selectedEntitiesCount(this._selectedEntitiesCount() -1);\r\n\t\t\t}\r\n\t\t\tthis.Trigger(EVENTS.ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t});\r\n\r\n\t\tthis._entityListMenu.On(EVENTS.LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() + 1);\r\n\t\t\tthis.Trigger(EVENTS.LOOKUP_ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\tthis._entityListMenu.On(EVENTS.LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif(eventArgs.data.Lifestatus != DELETE_LIFESTATUS){\r\n\t\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() -1);\r\n\t\t\t}\t\t\t\r\n\t\t\tthis.Trigger(EVENTS.LOOKUP_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t});\r\n\r\n\r\n\t\tthis._entityListMenu.On(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() + 1);\r\n\t\t\tthis.Trigger(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\r\n\t\tthis._entityListMenu.On(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif(eventArgs.data.Lifestatus != DELETE_LIFESTATUS){\r\n\t\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() -1);\r\n\t\t\t}\r\n\t\t\tthis.Trigger(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t});\r\n\r\n\t\tthis._entityListMenu.On(EVENTS.IS_ITERATOR_CHANGED, this, (eventArgs: any) => {\r\n\t\t\tif (eventArgs.data) {\r\n\t\t\t\tthis._model.IsIterator = eventArgs.data.IsIterator;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet items = [];\r\n\t\tif (relationship) {\r\n\t\t\t_.each(relationship.RelatedEntitiesMetadata, item => {\r\n\t\t\t\tvar entityListItem = new EntityListItem(item.EntityMetadata, false, item.EntityMetadata.Id !== this._gridSubjectEntityId, null);\r\n\t\t\t\titems.push(entityListItem);\r\n\t\t\t});\r\n\r\n\t\t\t_.each(relationship.RelatedSubEntitiesMetadata,\r\n\t\t\t\titem => {\r\n\t\t\t\t\tvar entityListItem = new EntityListItem(item.EntityMetadata, false, true, null);\r\n\t\t\t\t\titems.push(entityListItem);\r\n\t\t\t});\r\n\r\n\t\t\t_.each(relationship.TablesRelatedToLookup,\r\n\t\t\t\ttableRelatedToLookup => {\r\n\t\t\t\t\t_.each(tableRelatedToLookup.Fields, (field) => {\r\n\t\t\t\t\t\tif(field.LookupTable && field.LookupTable.Id === this._model.Metadata.Id){\r\n\t\t\t\t\t\t\tvar entityListItem = new EntityListItem(tableRelatedToLookup, false, true, null, null, field);\r\n\t\t\t\t\t\t\titems.push(entityListItem);\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\tvar lookupFields = _.filter(this._model.Metadata.Fields, (item)=> { return item.Type === FIELD_TYPES.Lookup});\r\n\r\n\t\t_.each(lookupFields, (lookupField) => {\r\n\t\t\tif(lookupField.LookupTable){\r\n\t\t\t\tvar entityListItem = new EntityListItem(lookupField.LookupTable, false, true, lookupField);\r\n\t\t\t\titems.push(entityListItem);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._entityListMenu.AddItems(items);\r\n\t}\r\n\r\n\tAddDeleteEntityToMenu(metadata: EntityMetadataModel){\r\n\t\tvar entityListItem = new EntityListItem(metadata, false, true, null);\r\n\t\tthis._entityListMenu.AddItems([entityListItem]);\r\n\t\tthis._entityListMenu.SelectEntityItemById(metadata.Id);\r\n\t}\r\n\r\n\tSetSelectedEntities(selectedEntities: Array<ISelectedEntity>) {\r\n\t\tlet entities = _.filter(selectedEntities, (item) => !item.LookupFieldId && !item.ReferenceFieldId && !item.ReferenceLookupField);\r\n\t\t_.each(entities, selectedEntity => {\r\n\t\t\tthis._entityListMenu.SelectEntityItemById(selectedEntity.Id);\r\n\t\t});\r\n\r\n\t\tlet lookupEntities = _.filter(selectedEntities, (item) => !!item.LookupFieldId && !item.ReferenceFieldId && !item.ReferenceLookupField);\r\n\t\t_.each(lookupEntities, selectedEntity => {\r\n\t\t\tthis._entityListMenu.SelectLookupItemById(selectedEntity.Id, selectedEntity.LookupFieldId);\r\n\t\t});\r\n\r\n\t\tlet referenceEntities = _.filter(selectedEntities, (item) => !item.LookupFieldId && !item.ReferenceLookupField && !!item.ReferenceFieldId);\r\n\t\t_.each(this._referenceEntityListMenus(), (referenceMenu) => {\r\n\t\t\t_.each(referenceEntities, selectedEntity => {\r\n\t\t\t\treferenceMenu.SelectReferenceItemById(selectedEntity.Id, selectedEntity.ReferenceFieldId);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tlet referenceLookupEntities = _.filter(selectedEntities, (item) => !item.LookupFieldId && !item.ReferenceFieldId && !!item.ReferenceLookupField);\r\n\t\t_.each(referenceLookupEntities, selectedEntity => {\r\n\t\t\tthis._entityListMenu.SelectReferenceLookupItemById(selectedEntity.Id, selectedEntity.ReferenceLookupField);\r\n\t\t});\r\n\r\n\t\tthis.RemovedDeletedReferencesMenus();\r\n\r\n\t\tthis._selectedEntitiesCount(this._entityListMenu.SelectedItemsCount);\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\tif (this._model.Metadata.Type === EntityTypes[EntityTypes.Sub]) {\r\n\t\t\treturn QuerySubEntityTemplate;\r\n\t\t}\r\n\t\treturn QueryEntityTemplate;\r\n\t}\r\n\r\n\tget SelectedEntitiesCount(): KnockoutObservable<number>{\r\n\t\treturn this._selectedEntitiesCount;\r\n\t}\r\n\r\n\tget Name() :string {\r\n\t\treturn this._model.Metadata.Name;\r\n\t}\r\n\r\n\tget TranslatedName(): string {\r\n\t\tvar name = this._model.Metadata.NameTranslation == null || this._model.Metadata.NameTranslation == '' ? this.Name : this._model.Metadata.NameTranslation;\r\n\t\tif (this._model.Index > 1) {\r\n\t\t\tname = `${name}${this._model.Index}`;\r\n\t\t}\r\n\t\treturn name;\r\n\t}\r\n\r\n\tget IsEnableDrag(): KnockoutObservable<boolean> {\r\n\t\treturn this._isEnableDrag;\r\n\t}\r\n\r\n\tget FieldListMenu(): FieldListMenu{\r\n\t\treturn this._fieldListMenu;\r\n\t}\r\n\r\n\tget EntityListMenu(): EntityListMenu{\r\n\t\treturn this._entityListMenu;\r\n\t}\r\n\r\n\tget ReferenceEntityListMenus(): KnockoutObservable<Array<EntityListMenu>>{\r\n\t\treturn this._referenceEntityListMenus;\r\n\t}\r\n\r\n\tAfterRender(el) {\r\n\t\tthis._el = el[0];\r\n\t\tvar parent = $(this._el).parent();\r\n\t\tvar isRoot = $(parent).hasClass('querybuilder-root-canvas');\r\n\t\t$(this._el).draggable({\r\n\t\t\tcontainment: isRoot ? false : 'parent',\r\n\t\t\tgrid: [20, 20],\r\n\t\t\tdrag: () => {\r\n\t\t\t\tthis._jsPlumb().repaintEverything();\r\n\t\t\t},\r\n\t\t\tstop: (evt, ui) => {\r\n\t\t\t\tthis._jsPlumb().repaintEverything();\r\n\t\t\t\tthis._model.CanvasPosition.Top = ui.position.top;\r\n\t\t\t\tthis._model.CanvasPosition.Left = ui.position.left;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.Trigger(EVENTS.AFTER_RENDER);\r\n\t}\r\n\r\n\tget Wrapper(){\r\n\t\treturn this._el;\r\n\t}\r\n\r\n\tDrag() {\r\n\t\tthis.Trigger(EVENTS.DRAG);\r\n\t}\r\n\r\n\tDrop() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\r\n\tDragStop(params) {\r\n\t\tthis.Trigger(EVENTS.DRAG_STOP);\r\n\t}\r\n\r\n\tGetLeftPosition(): string {\r\n\t\treturn `${this._model.CanvasPosition.Left}px`;\r\n\t}\r\n\r\n\tGetTopPosition(): string {\r\n\t\treturn `${this._model.CanvasPosition.Top}px`;\r\n\t}\r\n\r\n\tget Model(): QueryEntityModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tget BackgroundColor(): string {\r\n\t\treturn this._isSubject ? ENTITY_COLORS.MAIN_ENTITY : ENTITY_COLORS.RELATED_ENTITY;\r\n\t}\r\n\r\n\tClick(element: HTMLElement) {\r\n\t\tElementZIndexManager.Instance.ToTop(this._el);\r\n\t\tthis.Trigger(EVENTS.CLICK);\r\n\t}\r\n\r\n\tMouseOver(element: HTMLElement) {\r\n\t\tElementZIndexManager.Instance.ToTop(this._el);\r\n\t\tthis.Trigger(EVENTS.MOUSE_OVER);\r\n\t}\r\n\r\n\tToTop() {\r\n\t\tElementZIndexManager.Instance.ToTop(this._el);\r\n\t}\r\n\r\n\tget LinkEntity(): KnockoutObservable<QueryLinkEntity> {\r\n\t\treturn this._linkEntity;\r\n\t}\r\n\r\n\tget JoinOptionsMenu(): JoinOptionsMenu {\r\n\t\treturn this._joinOptionsMenu;\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: $data.Click.bind($data, $element), preventBubble: ['mouseover'], event: { mouseover: $data.MouseOver.bind($data, $element) }, style: { top: $data.GetTopPosition(), left: $data.GetLeftPosition() }\\\" class=\\\"btn-group box-shadow--6dp query-entity-test\\\" style=\\\"min-width:262px!important;height:40px!important;position:absolute\\\"> <div class=\\\"btn-group\\\" style=\\\"margin-right:7px\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.OPTIONS }\\\" type=\\\"button\\\" style=\\\"height:40px!important;text-align:center;padding:3px 10px\\\" class=\\\"btn btn-use-main-options\\\" data-toggle=\\\"dropdown\\\"> <img data-bind=\\\"attr: { src: $data._joinTypeImage }\\\" src=\\\"\\\" width=\\\"35\\\" height=\\\"35\\\"> </button> <!-- ko with: JoinOptionsMenu --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <span type=\\\"button\\\" data-bind=\\\"text: TranslatedName, css: BackgroundColor, attr: {title: TranslatedName}\\\" class=\\\"query-entity-table-name bold btn\\\" style=\\\"cursor:move;height:40px!important;width:142px!important;word-wrap:break-word\\\"></span> <div class=\\\"btn-group entity-list-menu\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.ENTITIES }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-table\\\"></i> <!--ko text: SelectedEntitiesCount --><!-- /ko --> </button> <!-- ko with: EntityListMenu --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- ko foreach: ReferenceEntityListMenus --> <div data-bind=\\\"class: _referenceField ? _referenceField.Id : '' \\\" class=\\\"btn-group\\\"> <button data-bind=\\\"css: $parent.BackgroundColor, attr: { title: $data.ReferenceTitle }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-table\\\"></i> <!--ko text: SelectedEntitiesCount --><!-- /ko --> <i class=\\\"fa fa-link maker-entity-list-btn\\\"></i> </button> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"btn-group\\\"> <button data-bind=\\\"css: BackgroundColor\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-list\\\"></i> <!--ko text: FieldListMenu.SelectedColumnsCount --><!-- /ko --> </button> <!-- ko with: FieldListMenu --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","export const EVENTS = {\r\n\tJOIN_TYPE_CHANGED: 'JOIN_TYPE_CHANGED',\r\n\tUSE_MAIN_CHANGED: 'USE_MAIN_CHANGED',\r\n\tLINK_DIRECTION_CHANGED: 'LINK_DIRECTION_CHANGED',\r\n\tCLICK: 'CLICK',\r\n\tMOUSE_OVER: 'MOUSE_OVER'\r\n};","import { UseMainCondition } from 'QueryBuilder/Enums';\r\n\r\nexport var UseMainImages = {};\r\n\r\nUseMainImages[UseMainCondition.MainTrue] = 'data:image/png;base64,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';\r\nUseMainImages[UseMainCondition.MainFalse] = 'data:image/png;base64,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';","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { FieldListMenu } from 'QueryBuilder/FieldListMenu/FieldListMenu';\r\nimport { FieldListItem } from 'QueryBuilder/FieldListMenu/FieldListItem';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { JoinTypeImages } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/JoinTypesImages';\r\nimport { UseMainImages } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/UseMainImages';\r\nimport { JoinTypes, UseMainCondition, LinkDirectionCondition } from 'QueryBuilder/Enums';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { JoinOptionsMenu } from 'QueryBuilder/QueryEntityJoin/JoinOptionsMenu/JoinOptionsMenu';\r\nimport { EVENTS as OPTION_MENU_EVENTS } from 'QueryBuilder/QueryEntityJoin/JoinOptionsMenu/Events';\r\nimport { EVENTS } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/Events';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { EntityRelationshipsMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\nimport { IQueryLinkEntityParams } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/IQueryLinkEntityParams';\r\nimport { IObjectIndex } from 'QueryBuilder/IObjectIndex';\r\nimport {EVENTS as QUERY_BUILDER_EVENTS} from 'QueryBuilder/Events';\r\n\r\nimport QueryLinkEntityTemplate from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/Templates/QueryLinkEntity.html';\r\nimport { EntityListMenu } from \"../../EntityListMenu/EntityListMenu\";\r\nimport { EntityListItem } from \"../../EntityListMenu/EntityListItem\";\r\nimport { FIELD_TYPES } from \"../../../Core/Constant\";\r\nimport { ISelectedEntity, QueryEntity } from \"../../QueryEntity/QueryEntity\";\r\n\r\nexport class QueryLinkEntity extends Event {\r\n\tprivate _fieldListMenu: FieldListMenu;\r\n\tprivate _entityListMenu: EntityListMenu;\r\n\tprivate _joinTypeImage: KnockoutObservable<string>;\r\n\tprivate _useMainImage: KnockoutObservable<string>;\r\n\tprivate _joinOptionsMenu: JoinOptionsMenu;\r\n\tprivate _labels = LABELS;\r\n\tprivate _model: QueryEntityModel;\r\n\tprivate _backBackgroundColor: string;\r\n\tprivate _joinType: JoinTypes;\r\n\tprivate _useMain: UseMainCondition;\r\n\tprivate _linkDirection: LinkDirectionCondition;\r\n\tprivate _entitiesRelationships: Array<EntityRelationshipsMetadataModel>;\r\n\tprivate _enabledColumnTypes: Array<string>;\r\n\tprivate _objectIndexes: Array<IObjectIndex>;\r\n\tprivate _selectedEntitiesCount: KnockoutObservable<number>;\r\n\tprivate _referenceEntityListMenus: KnockoutObservable<Array<EntityListMenu>>;\r\n\tprivate _parent: QueryEntityModel;\r\n\r\n\tconstructor (params: IQueryLinkEntityParams) {\r\n\t\tsuper();\r\n\t\tthis._selectedEntitiesCount = ko.observable(0);\r\n\t\tthis._model = params.Model;\r\n\t\tthis._parent = params.Parent;\r\n\t\tthis._backBackgroundColor = params.BackBackgroundColor;\r\n\t\tthis._joinType = params.JoinType;\r\n\t\tthis._useMain = params.UseMain;\r\n\t\tthis._linkDirection = params.LinkDirection;\r\n\t\tthis._entitiesRelationships = params.EntitiesRelationships;\r\n\t\tthis._enabledColumnTypes = params.EnabledColumnTypes;\r\n\t\tthis._objectIndexes = params.ObjectIndexes;\r\n\t\tthis._referenceEntityListMenus = ko.observableArray();\r\n\r\n\t\tthis.AddEvent(EVENTS.JOIN_TYPE_CHANGED);\r\n\t\tthis.AddEvent(EVENTS.USE_MAIN_CHANGED);\r\n\t\tthis.AddEvent(EVENTS.LINK_DIRECTION_CHANGED);\r\n\t\tthis.AddEvent(EVENTS.CLICK);\r\n\t\tthis.AddEvent(EVENTS.MOUSE_OVER);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.COLUMN_SELECTED);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\r\n\t\tthis._joinTypeImage = ko.observable(JoinTypeImages[this._joinType]);\r\n\t\tthis._useMainImage = ko.observable(UseMainImages[this._useMain]);\r\n\t\tthis.Init();\r\n\r\n\t\tthis._joinOptionsMenu = new JoinOptionsMenu(this._joinType, this._useMain, this.EnableUseMain, this._linkDirection, this.EnableLinkDirection);\r\n\r\n\t\tthis._joinOptionsMenu.On(OPTION_MENU_EVENTS.JOIN_TYPE_CHANGED, this, (eventArgs: any) => {\r\n\t\t\tthis._joinTypeImage(JoinTypeImages[eventArgs.data.JoinType]);\r\n\t\t\tthis.Trigger(EVENTS.JOIN_TYPE_CHANGED, { JoinType: eventArgs.data.JoinType });\r\n\t\t});\r\n\r\n\t\tthis._joinOptionsMenu.On(OPTION_MENU_EVENTS.USE_MAIN_CHANGED, this, (eventArgs: any) => {\r\n\t\t\tthis._useMainImage(UseMainImages[eventArgs.data.UseMain]);\r\n\t\t\tthis.Trigger(EVENTS.USE_MAIN_CHANGED, { UseMain: eventArgs.data.UseMain });\r\n\t\t});\r\n\r\n\t\tthis._joinOptionsMenu.On(OPTION_MENU_EVENTS.LINK_DIRECTION_CHANGED, this, (eventArgs: any) => {\r\n\t\t\tthis.Trigger(EVENTS.LINK_DIRECTION_CHANGED, { LinkDirection: eventArgs.data.LinkDirection });\r\n\t\t});\r\n\r\n\t\tthis.InitFieldListMenu(this._enabledColumnTypes);\r\n\t\tthis.InitEntityListMenu();\r\n\t\tthis.InitReferenceMenu();\r\n\t}\r\n\r\n\tSetSelectedEntities(selectedEntities: Array<ISelectedEntity>) {\r\n let entities = _.filter(selectedEntities, (item) => !item.LookupFieldId && !item.ReferenceFieldId);\r\n _.each(entities, selectedEntity => {\r\n this._entityListMenu.SelectEntityItemById(selectedEntity.Id);\r\n });\r\n\r\n let lookupEntities = _.filter(selectedEntities, (item) => !!item.LookupFieldId && !item.ReferenceFieldId);\r\n _.each(lookupEntities, selectedEntity => {\r\n this._entityListMenu.SelectLookupItemById(selectedEntity.Id, selectedEntity.LookupFieldId);\r\n });\r\n\r\n let referenceEntities = _.filter(selectedEntities, (item) => !item.LookupFieldId && !!item.ReferenceFieldId);\r\n _.each(this._referenceEntityListMenus(), (referenceMenu) => {\r\n _.each(referenceEntities, selectedEntity => {\r\n referenceMenu.SelectReferenceItemById(selectedEntity.Id, selectedEntity.ReferenceFieldId);\r\n });\r\n });\r\n\t\t\r\n\t\tthis.RemovedDeletedReferencesMenus();\r\n this._selectedEntitiesCount(this._entityListMenu.SelectedItemsCount);\r\n\t}\r\n\r\n\tprivate RemovedDeletedReferenceMenu(referenceMenu: EntityListMenu) {\r\n\t\tif(!!referenceMenu && referenceMenu.ReferenceField.LifestatusName === 'Delete' && referenceMenu.SelectedItemsCount === 0){\r\n\t\t\tthis._referenceEntityListMenus.splice(this._referenceEntityListMenus().indexOf(referenceMenu), 1);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate RemovedDeletedReferencesMenus() {\r\n\t\tlet makerFields = _.filter(this._model.Metadata.Fields, (item) => {\r\n\t\t\treturn item.Type === FIELD_TYPES.Reference});\r\n\t\t_.each((makerFields), (referenceField)=>{\r\n\t\t\tlet referenceMenu = _.find(this._referenceEntityListMenus(), item => item.ReferenceFieldId === referenceField.Id);\r\n\r\n\t\t\tif(!!referenceMenu && referenceField.LifestatusName === 'Delete' && referenceMenu.SelectedItemsCount === 0){\r\n\t\t\t\tthis._referenceEntityListMenus.splice(this._referenceEntityListMenus().indexOf(referenceMenu), 1);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InitEntityListMenu() {\t\t\r\n\t\tthis._entityListMenu = new EntityListMenu(false, null);\r\n\t\tvar lookupFields = _.filter(this._model.Metadata.Fields, (item)=> { return item.Type === FIELD_TYPES.Lookup});\r\n\t\tlet items = [];\r\n\t\t_.each(lookupFields, (lookupField) => {\r\n\r\n\t\t\tif(lookupField.LookupTable){\r\n\t\t\t\tvar entityListItem = new EntityListItem(lookupField.LookupTable, false, true, lookupField);\r\n\t\t\t\titems.push(entityListItem);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._entityListMenu.AddItems(items);\r\n\r\n\t\tthis._entityListMenu.On(QUERY_BUILDER_EVENTS.LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() + 1);\r\n\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.LOOKUP_ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\tthis._entityListMenu.On(QUERY_BUILDER_EVENTS.LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() -1);\r\n\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.LOOKUP_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InitReferenceMenu() {\r\n\t\tlet relationship = _.first(this._entitiesRelationships);\r\n\t\tlet makerFields = _.filter(this._model.Metadata.Fields, (item) => {\r\n\t\t\treturn item.Type === FIELD_TYPES.Reference});\r\n\t\t_.each((makerFields), (referenceField)=>{\r\n\t\t\tlet items = [];\r\n\t\t\t\r\n\t\t\tlet referenceMenu = new EntityListMenu(false, referenceField);\r\n\r\n\t\t\treferenceMenu.On(QUERY_BUILDER_EVENTS.REFERENCE_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.REFERENCE_ENTITY_SELECTED, eventArgs.data);\r\n\t\t\t});\r\n\r\n\t\t\treferenceMenu.On(QUERY_BUILDER_EVENTS.REFERENCE_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.REFERENCE_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t\t\tthis.RemovedDeletedReferenceMenu(referenceMenu);\r\n\t\t\t});\r\n\r\n\t\t\t_.each(relationship.ReferenceEntities, (item)=>{\r\n\t\t\t\tlet entityListItem = new EntityListItem(item, false, true, null, referenceField);\r\n\t\t\t\titems.push(entityListItem);\r\n\t\t\t});\r\n\r\n\t\t\treferenceMenu.AddItems(items);\r\n\r\n\t\t\tthis._referenceEntityListMenus.push(referenceMenu);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Init() {\r\n\r\n\t\tvar objIndex = _.find(this._objectIndexes, (indx) => { return indx.Id === this._model.Metadata.Id });\r\n\r\n\t\tif (objIndex) {\r\n\t\t\tif (this._model.Index === 0 || this._model.Index === null) {\r\n\t\t\t\tobjIndex.Index = objIndex.Index + 1;\r\n\t\t\t\tthis._model.Index = objIndex.Index;\r\n\t\t\t} else {\r\n\t\t\t\tobjIndex.Index = this._model.Index;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar objIndex: IObjectIndex = {\r\n\t\t\t\tId: this._model.Metadata.Id,\r\n\t\t\t\tIndex: 1\r\n\t\t\t};\r\n\t\t\tthis._objectIndexes.push(objIndex);\r\n\t\t\tthis._model.Index = objIndex.Index;\r\n\t\t}\r\n\r\n\t\tvar metadata = _.find(this._entitiesRelationships, item => item.EntityMetadata.Id === this._model.Metadata.Id);\r\n\r\n\t\tif (metadata) {\r\n\t\t\tthis._model.Metadata = metadata.EntityMetadata;\r\n\t\t}\r\n\r\n\t\t_.each(this._model.Metadata.Fields, (fieldMetadata) => {\r\n\t\t\tvar selectedQueryColumnModel = _.find(this._model.Columns, queryColumn => { return queryColumn.Metadata.Id === fieldMetadata.Id });\r\n\t\t\tif (selectedQueryColumnModel) {\r\n\t\t\t\tselectedQueryColumnModel.Metadata = fieldMetadata;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn QueryLinkEntityTemplate;\r\n\t}\r\n\r\n\tget EnableUseMain(): boolean {\r\n\t\tvar mainField = _.find(this._model.Metadata.Fields, (field) => { return field.Name === 'MAIN' });\r\n\t\treturn mainField != null && this._model.Metadata.Name.startsWith(`${this._parent.Metadata.ShortName}_`);\r\n\t}\r\n\r\n\tget EnableLinkDirection(): boolean {\r\n\t\tlet entities = this._model.Metadata.Name.replace('SYS_', '').split('_');\r\n\t\treturn entities[0] === entities[1];\r\n\t}\r\n\r\n\tRender(target: Element) {\r\n\t\tko.cleanNode(target);\r\n\t\tko.applyBindings(this, target);\r\n\t}\r\n\r\n\tAfterRender() {}\r\n\r\n\tget SelectedEntitiesCount(): KnockoutObservable<number>{\r\n\t\treturn this._selectedEntitiesCount;\r\n\t}\r\n\r\n\tprivate InitFieldListMenu(enabledColumnTypes: Array<string>) {\r\n\t\tthis._fieldListMenu = new FieldListMenu(this._model, false);\r\n\t\t_.each(this._model.Metadata.Fields, field => {\r\n\t\t\tvar column = _.find(this._model.Columns, queryColumn => { return queryColumn.Metadata.Id === field.Id });\r\n\t\t\tif (enabledColumnTypes && enabledColumnTypes.length > 0) {\r\n\t\t\t\tif (enabledColumnTypes.indexOf(field.Type) >= 0) {\r\n\t\t\t\t\tthis._fieldListMenu.AddItem(new FieldListItem(field, column != null));\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis._fieldListMenu.AddItem(new FieldListItem(field, column != null));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._fieldListMenu.On(QUERY_BUILDER_EVENTS.COLUMN_SELECTED, this, (eventArgs) =>{\r\n\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.COLUMN_SELECTED, {Id: eventArgs.data.Id});\r\n\t\t});\r\n\t}\r\n\r\n\tget BackgroundColor() {\r\n\t\treturn this._backBackgroundColor;\r\n\t}\r\n\r\n\tget FieldListMenu(): FieldListMenu {\r\n\t\treturn this._fieldListMenu;\r\n\t}\r\n\r\n\tget JoinOptionsMenu(): JoinOptionsMenu {\r\n\t\treturn this._joinOptionsMenu;\r\n\t}\r\n\r\n\tClick() {\r\n\t\tthis.Trigger(EVENTS.CLICK);\r\n\t}\r\n\r\n\tMouseOver() {\r\n\t\tthis.Trigger(EVENTS.MOUSE_OVER);\r\n\t}\r\n\r\n\tget EntityListMenu(): EntityListMenu{\r\n\t\treturn this._entityListMenu;\r\n\t}\r\n\r\n\tget ReferenceEntityListMenus(): KnockoutObservable<Array<EntityListMenu>>{\r\n\t\treturn this._referenceEntityListMenus;\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: $data.Click.bind($data, $element),\\r\\n\\t\\t\\t\\tevent: { mouseover: $data.MouseOver.bind($data, $element)},\\r\\n\\t\\t\\t\\tpreventBubble: ['mouseover']\\\" class=\\\"btn-group\\\" style=\\\"height:40px!important;margin-right:7px\\\"> <div class=\\\"btn-group\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.OPTIONS }\\\" type=\\\"button\\\" style=\\\"height:40px!important;text-align:center;padding:3px 10px\\\" class=\\\"btn btn-use-main-options\\\" data-toggle=\\\"dropdown\\\"> <img data-bind=\\\"attr: { src: $data._joinTypeImage }\\\" src=\\\"\\\" width=\\\"35\\\" height=\\\"35\\\"> <!-- ko if: $data._useMainImage --> <img data-bind=\\\"attr: { src: $data._useMainImage }\\\" width=\\\"35\\\" height=\\\"35\\\"> <!-- /ko --> </button> <!-- ko with: JoinOptionsMenu --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"btn-group entity-link-list-menu\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.ENTITIES }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-table\\\"></i> <!--ko text: SelectedEntitiesCount --><!-- /ko --> </button> <!-- ko with: EntityListMenu --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- ko foreach: ReferenceEntityListMenus --> <div data-bind=\\\"class: _referenceField ? _referenceField.Id : '' \\\" class=\\\"btn-group\\\"> <button data-bind=\\\"css: $parent.BackgroundColor, attr: { title: $data.ReferenceTitle }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-table\\\"></i> <!--ko text: SelectedEntitiesCount --><!-- /ko --> <i class=\\\"fa fa-link maker-entity-list-btn\\\"></i> </button> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"btn-group\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.FIELDS }\\\" type=\\\"button\\\" style=\\\"height:40px!important;width:60px!important\\\" class=\\\"btn white-stripe btn-field-list\\\" data-toggle=\\\"dropdown\\\"> <i class=\\\"fa fa-list\\\"></i> <!--ko text: FieldListMenu.SelectedColumnsCount --><!-- /ko --> </button> <!-- ko with: FieldListMenu --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: Entity --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: Joins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: LookupEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: ReferenceEntityJoins --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- ko foreach: ReferenceLookupEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: SubEntityJoins --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: {\\r\\n\\t\\t\\t\\t\\ttop: $data.GetTopPosition(),\\r\\n\\t\\t\\t\\t\\tleft: $data.GetLeftPosition(),\\r\\n\\t\\t\\t\\t\\theight: $data.CanvasHeight,\\r\\n\\t\\t\\t\\t\\twidth: $data.CanvasWidth\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tresizable: {\\r\\n\\t\\t\\t\\t\\tminHeight: $data.MinHeight,\\r\\n\\t\\t\\t\\t\\tminWidth: $data.MinWidth,\\r\\n\\t\\t\\t\\t\\tgrid: [ 20, 20 ],\\r\\n\\t\\t\\t\\t\\tstop: $data.StopResize.bind($data),\\r\\n\\t\\t\\t\\t\\tstart: $data.StartResize.bind($data),\\r\\n\\t\\t\\t\\t}\\\" class=\\\"panel panel-primary querybuilder-canvas box-shadow--6dp\\\" style=\\\"cursor:move;position:absolute;box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.2)!important\\\"> <div class=\\\"panel-heading\\\" style=\\\"cursor:move\\\"> <a data-bind=\\\"click: $data.RemoveSubQuery.bind($data)\\\" title=\\\"Remove subquery\\\" class=\\\"remove-sub-query-btn\\\"><i class=\\\"fa fa-close\\\"></i></a> </div> <!-- ko with: Entity --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: Joins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: SubEntityJoins --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- ko foreach: ReferenceEntityJoins --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- ko foreach: ReferenceLookupEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: LookupEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { ISelectedEntity, QueryEntity } from 'QueryBuilder/QueryEntity/QueryEntity';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { QUERY_BUILDER } from 'QueryBuilder/Constants';\r\nimport { EVENTS } from 'QueryBuilder/Events';\r\nimport { EntityRelationshipsMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\nimport { EntityMetadataStore } from 'QueryBuilder/Stores/EntityMetadataStore';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { CanvasPositionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasPositionModel';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { EVENTS as QUERY_LINK_ENTITY_EVENTS } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/Events';\r\nimport { ZIndexManager } from 'Core/Common/ZIndexManager';\r\nimport { ElementZIndexManager } from 'QueryBuilder/ElementZIndexManager';\r\nimport { QueryLinkEntity } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/QueryLinkEntity';\r\nimport { EntityTypes } from 'Core/Controls/Grid/BaseGrid/Enums/EntityTypes';\r\nimport { IQueryEntityParams } from 'QueryBuilder/QueryEntity/IQueryEntityParams';\r\nimport { IQueryLinkEntityParams } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/IQueryLinkEntityParams';\r\nimport { IQueryEntityJoinParams } from 'QueryBuilder/QueryEntityJoin/IQueryEntityJoinParams';\r\nimport { CanvasSizeModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasSizeModel';\r\nimport { IObjectIndex } from 'QueryBuilder/IObjectIndex';\r\nimport { Event } from 'Core/Common/Event';\r\n\r\nimport QueryEntityJoinTemplate from 'QueryBuilder/QueryEntityJoin/Templates/QueryEntityJoin.html';\r\nimport SubQueryEntityJoinTemplate from 'QueryBuilder/QueryEntityJoin/Templates/SubQueryEntityJoin.html';\r\n\r\nconst DELETE_LIFESTATUS = 'Delete';\r\n\r\nexport class QueryEntityJoin extends Event {\r\n\tprivate _joins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _subEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _lookupEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _referenceLookupEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _referenceEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _entity: KnockoutObservable<QueryEntity>;\r\n\tprivate _jsPlumbConnection: any;\r\n\tprivate _minWidth: KnockoutObservable<string>;\r\n\tprivate _minHeight: KnockoutObservable<string>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _overlayId: string;\r\n\tprivate _canvasWidth: KnockoutObservable<string>;\r\n\tprivate _canvasHeight: KnockoutObservable<string>;\r\n\tprivate _model: QueryEntityJoinModel;\r\n\tprivate _parentEntity: QueryEntity;\r\n\tprivate _jsPlumb: KnockoutObservable<jsPlumbInstance>;\r\n\tprivate _entitiesRelationships: Array<EntityRelationshipsMetadataModel>;\r\n\tprivate _isSubject: boolean;\r\n\tprivate _overlayWrapper: HTMLElement;\r\n\tprivate _overlayBody: HTMLElement;\r\n\tprivate _overlayTitle: HTMLElement;\r\n\tprivate _enabledColumnTypes: Array<string>;\r\n\tprivate _objectIndexes: Array<IObjectIndex>;\r\n\r\n\tprivate _joinSource: string | number;\r\n\r\n\tCanvasHeight: KnockoutComputed<string>;\r\n\tCanvasWidth: KnockoutComputed<string>;\r\n\r\n\tGetTemplateHtml: KnockoutObservable<any>;\r\n\r\n\tconstructor(params: IQueryEntityJoinParams) {\r\n\t\tsuper();\r\n\t\tthis._model = params.Model;\r\n\t\tthis._parentEntity = params.ParentEntity;\r\n\t\tthis._jsPlumb = params.JsPlumb;\r\n\t\tthis._entitiesRelationships = params.EntitiesRelationships;\r\n\t\tthis._isSubject = params.IsSubject || false;\r\n\t\tthis._overlayWrapper = params.OverlayWrapper;\r\n\t\tthis._overlayBody = $(this._overlayWrapper).find('.portlet-body') && $(this._overlayWrapper).find('.portlet-body')[0];\r\n\t\tthis._overlayTitle = $(this._overlayWrapper).find('.portlet-title') && $(this._overlayWrapper).find('.portlet-title')[0];\r\n\t\tthis._enabledColumnTypes = params.EnabledColumnTypes;\r\n\t\tthis._entity = ko.observable(null);\r\n\t\tthis._joins = ko.observableArray([]);\r\n\t\tthis._subEntityJoins = ko.observableArray([]);\r\n\t\tthis._lookupEntityJoins = ko.observableArray([]);\r\n\t\tthis._referenceLookupEntityJoins = ko.observableArray([]);\r\n\t\tthis._referenceEntityJoins = ko.observableArray([]);\r\n\t\tthis._minWidth = ko.observable('0');\r\n\t\tthis._minHeight = ko.observable('0');\r\n\t\tthis._canvasHeight = ko.observable(this._model.CanvasSize ? this._model.CanvasSize.Height : null);\r\n\t\tthis._canvasWidth = ko.observable(this._model.CanvasSize ? this._model.CanvasSize.Width : null);\r\n\t\tthis._objectIndexes = params.ObjectIndexes;\r\n\t\tthis._joinSource = params.JoinSource;\r\n\t\t\r\n\t\tthis.Init();\r\n\t\tvar template = this._model.IsSubQuery ? SubQueryEntityJoinTemplate : QueryEntityJoinTemplate;\r\n\t\tthis.GetTemplateHtml = ko.observable(template);\r\n\r\n\t\tthis.CanvasWidth = ko.computed(() => {\r\n\t\t\treturn `${this._canvasWidth()}px`;\r\n\t\t});\r\n\r\n\t\tthis.CanvasHeight = ko.computed(() => {\r\n\t\t\treturn `${this._canvasHeight()}px`;\r\n\t\t});\r\n\r\n\r\n\t\tthis._joins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._subEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._lookupEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._referenceLookupEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._referenceEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\r\n\t\tthis.AddEvent(EVENTS.COLUMN_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.UPDATE_SORT);\r\n\t}\r\n\r\n\tInit() {\r\n\r\n\t\tlet params: IQueryEntityParams = {\r\n\t\t\tModel: this._model.Entity,\r\n\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\tIsSubject: this._isSubject,\r\n\t\t\tGridSubjectEntityId: null,\r\n\t\t\tIsEnableSubQuery: !this._isSubject,\r\n\t\t\tIsInSubQuery: this._model.IsSubQuery,\r\n\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\tJoinType: this._model.JoinType,\r\n\t\t\tIsLookupJoin: this.IsLookupJoin,\r\n\t\t\tIsReferenceJoin: this.IsReferenceJoin\r\n\t\t};\r\n\r\n\t\tlet queryEntity = new QueryEntity(params);\r\n\r\n\t\tif(queryEntity.Model.Metadata.Lifestatus === DELETE_LIFESTATUS && this._parentEntity){\r\n\t\t\tthis._parentEntity.AddDeleteEntityToMenu(this._model.Entity.Metadata);\r\n\t\t}\r\n\r\n\t\tqueryEntity.On(EVENTS.ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddJoin(eventArgs.data.EntityId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveJoin(eventArgs.data.EntityId, eventArgs.data.Type);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddLookupJoin(eventArgs.data.EntityId, eventArgs.data.LookupFieldId, 'Lookup');\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveLookupJoin(eventArgs.data.EntityId, eventArgs.data.LookupFieldId);\r\n\t\t});\r\n\r\n queryEntity.On(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n this.AddReferenceLookupJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceLookupFieldId, 'Lookup');\r\n });\r\n\r\n queryEntity.On(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n this.RemoveReferenceLookupJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceLookupFieldId);\r\n });\r\n\r\n\t\tqueryEntity.On(EVENTS.REFERENCE_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddReferenceJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceFieldId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.REFERENCE_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveReferenceJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceFieldId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.CREATE_SUB_QUERY, this, (eventArgs: any) => {\r\n\t\t\tthis.DestroyConnections();\r\n\t\t\tthis._model.IsSubQuery = true;\r\n\t\t\tthis._model.CanvasPosition.Left = this._entity().Model.CanvasPosition.Left;\r\n\t\t\tthis._model.CanvasPosition.Top = this._entity().Model.CanvasPosition.Top;\r\n\t\t\tthis._entity().Model.CanvasPosition.Left = QUERY_BUILDER.CELL_SIZE * 8;\r\n\t\t\tthis._entity().Model.CanvasPosition.Top = QUERY_BUILDER.CELL_SIZE * 3;\r\n\t\t\tthis.GetTemplateHtml(SubQueryEntityJoinTemplate);\r\n\t\t\tthis.CalculateMinBoxSize();\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.REMOVE_SUB_QUERY, this, () => {\r\n\t\t\tthis.RemoveSubQuery();\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.DRAG, this, () => {\r\n\t\t\tthis._model.CanvasPosition.ZIndex = ZIndexManager.Instance.NextValue;\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.DRAG_STOP, this, () => {\r\n\t\t\tthis._model.CanvasPosition.ZIndex = ZIndexManager.Instance.NextValue;\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.CLICK, this, () => {\r\n\t\t\tElementZIndexManager.Instance.ToTop(this._jsPlumbConnection.canvas);\r\n\t\t\tvar overlay = this._jsPlumbConnection.getOverlay(this._overlayId);\r\n\t\t\tif (overlay) {\r\n\t\t\t\tElementZIndexManager.Instance.ToTop(overlay.canvas);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.MOUSE_OVER, this, () => {\r\n\t\t\tElementZIndexManager.Instance.ToTop(this._jsPlumbConnection.canvas);\r\n\t\t\tvar overlay = this._jsPlumbConnection.getOverlay(this._overlayId);\r\n\t\t\tif (overlay) {\r\n\t\t\t\tElementZIndexManager.Instance.ToTop(overlay.canvas);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(QUERY_LINK_ENTITY_EVENTS.JOIN_TYPE_CHANGED, this, (eventArgs: any) => {\r\n\t\t\tthis._model.JoinType = eventArgs.data.JoinType;\r\n\t\t});\r\n\r\n\t\tthis._entity(queryEntity);\r\n\r\n\t\tlet ids: Array<ISelectedEntity> = [];\r\n\t\t_.each(this._model.Joins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: null }));\r\n\t\t_.each(this._model.SubEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: null}));\r\n\t\t_.each(this._model.LookupEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: item.LookupFieldId}));\r\n\t\t_.each(this._model.ReferenceEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, ReferenceFieldId: item.ReferenceFieldId}));\r\n\t\t_.each(this._model.ReferenceLookupEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, ReferenceLookupField: item.LookupFieldId }));\r\n\t\t\r\n\t\tqueryEntity.SetSelectedEntities(ids);\r\n\r\n\t\tthis._entity().On(EVENTS.AFTER_RENDER, this, (eventArgs: any) => {\r\n\t\t\tthis._joins([]);\r\n\t\t\tthis._subEntityJoins([]);\r\n\t\t\tthis._lookupEntityJoins([]);\r\n\t\t\tthis._referenceEntityJoins([]);\r\n\t\t\tthis._referenceLookupEntityJoins([]);\r\n\t\t\t\r\n\t\t\tthis.BuildConnection();\r\n\t\t\t_.each(this._model.Joins, joinModel => {\r\n\t\t\t\tvar params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._joins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t\t_.each(this._model.SubEntityJoins, (joinModel, index) => {\r\n\t\t\t\tvar params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._subEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t\t_.each(this._model.LookupEntityJoins, (joinModel) => {\r\n\t\t\t\tvar params: IQueryEntityJoinParams = {\r\n\t\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tparams.JoinSource = this._model.LinkEntity && _.find(this._model.LinkEntity.Metadata.Fields, (field)=> field.Id === joinModel.LookupFieldId) ? 'LinkLookup': 'Lookup';\r\n\r\n\t\t\t\tthis._lookupEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t\t_.each(this._model.ReferenceLookupEntityJoins, (joinModel) => {\r\n let params: IQueryEntityJoinParams = {\r\n Model: joinModel,\r\n ParentEntity: this._entity(),\r\n JsPlumb: this._jsPlumb,\r\n EntitiesRelationships: this._entitiesRelationships,\r\n IsSubject: false,\r\n OverlayWrapper: this._overlayWrapper,\r\n EnabledColumnTypes: this._enabledColumnTypes,\r\n ObjectIndexes: this._objectIndexes,\r\n JoinSource: 'Lookup'\r\n };\r\n\r\n this._referenceLookupEntityJoins.push(new QueryEntityJoin(params));\r\n });\r\n\r\n\t\t\t_.each(this._model.ReferenceEntityJoins, (joinModel) => {\r\n\t\t\t\tlet params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: joinModel.ReferenceFieldId\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._referenceEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tget IsLookupJoin(): boolean {\r\n\t\treturn this._model.LookupFieldId != null && this._model.LookupFieldId != 0;\r\n\t}\r\n\r\n\tget IsReferenceJoin(): boolean{\r\n\t\treturn this._model.ReferenceFieldId != null && this._model.ReferenceFieldId != 0;\r\n\t}\r\n\r\n\tprivate BuildConnection() {\r\n\r\n\t\tlet source = this._parentEntity.Wrapper;\r\n\t\tlet leftAnchor = 'RightMiddle';\r\n\r\n\t\tif(this._joinSource === 'Lookup' || !this._joinSource){\r\n\t\t\tsource = $(this._parentEntity.Wrapper).find('.entity-list-menu')[0];\r\n\t\t}else if(this._joinSource === 'LinkLookup'){\r\n\t\t\tsource = $(this._parentEntity.Wrapper).find('.entity-link-list-menu')[0];\r\n\t\t}else if(this._joinSource){\r\n\t\t\tsource = $(this._parentEntity.Wrapper).find(`.${this._joinSource}`)[0];\r\n\t\t}\r\n\r\n\t\tlet fix = this._jsPlumb().connect({\r\n\t\t\tsource: this._parentEntity.Wrapper,\r\n\t\t\ttarget: this._entity().Wrapper,\r\n\t\t\tconnector: ['Flowchart', { stub: [10, 10], gap: 0, cornerRadius: 5, alwaysRespectStubs: true }],\r\n\t\t\tendpoint: 'Blank',\r\n\t\t\tanchors: [leftAnchor, 'TopCenter'],\r\n\t\t\tpaintStyle: {\r\n\t\t\t\tstroke: 'gray', strokeWidth: 5}\r\n\t\t});\r\n\r\n\t\tthis._jsPlumbConnection = this._jsPlumb().connect({\r\n\t\t\tsource: source,\r\n\t\t\ttarget: this._entity().Wrapper,\r\n\t\t\tconnector: ['Flowchart', { stub: [10, 10], gap: 0, cornerRadius: 5, alwaysRespectStubs: true }],\r\n\t\t\tendpoint: 'Blank',\r\n\t\t\tanchors: ['BottomCenter', 'LeftMiddle'],\r\n\t\t\tpaintStyle: {\r\n\t\t\t\tstroke: 'gray', strokeWidth: 5}\r\n\t\t});\r\n\r\n\t\tthis._jsPlumb().deleteConnection(fix);\r\n\r\n\t\tif(this._model.LinkEntity){\r\n\t\t\tvar params: IQueryLinkEntityParams = {\r\n\t\t\t\tParent: this._parentEntity.Model,\r\n\t\t\t\tModel: this._model.LinkEntity,\r\n\t\t\t\tBackBackgroundColor: this._entity().BackgroundColor,\r\n\t\t\t\tJoinType: this._model.JoinType,\r\n\t\t\t\tUseMain: this._model.UseMain,\r\n\t\t\t\tLinkDirection: this._model.LinkDirection,\r\n\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\tObjectIndexes: this._objectIndexes\r\n\t\t\t};\r\n\r\n\t\t\tvar linkEntity = new QueryLinkEntity(params);\r\n\t\t\tlinkEntity.On(QUERY_LINK_ENTITY_EVENTS.JOIN_TYPE_CHANGED, this, (eventArgs: any) => {\r\n\t\t\t\tthis._model.JoinType = eventArgs.data.JoinType;\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(QUERY_LINK_ENTITY_EVENTS.USE_MAIN_CHANGED, this, (eventArgs: any) => {\r\n\t\t\t\tthis._model.UseMain = eventArgs.data.UseMain;\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(QUERY_LINK_ENTITY_EVENTS.LINK_DIRECTION_CHANGED, this, (eventArgs: any) => {\r\n\t\t\t\tthis._model.LinkDirection = eventArgs.data.LinkDirection;\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(QUERY_LINK_ENTITY_EVENTS.CLICK, this, () => {\r\n\t\t\t\tElementZIndexManager.Instance.ToTop(this._jsPlumbConnection.canvas);\r\n\t\t\t\tif (this._entity()) {\r\n\t\t\t\t\tthis._entity().ToTop();\r\n\t\t\t\t}\r\n\t\t\t\tvar overlay = this._jsPlumbConnection.getOverlay(this._overlayId);\r\n\t\t\t\tif (overlay) {\r\n\t\t\t\t\tElementZIndexManager.Instance.ToTop(overlay.canvas);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(QUERY_LINK_ENTITY_EVENTS.MOUSE_OVER, this, () => {\r\n\t\t\t\tElementZIndexManager.Instance.ToTop(this._jsPlumbConnection.canvas);\r\n\t\t\t\tif (this._entity()) {\r\n\t\t\t\t\tthis._entity().ToTop();\r\n\t\t\t\t}\r\n\t\t\t\tvar overlay = this._jsPlumbConnection.getOverlay(this._overlayId);\r\n\t\t\t\tif (overlay) {\r\n\t\t\t\t\tElementZIndexManager.Instance.ToTop(overlay.canvas);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(EVENTS.LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.AddLookupJoin(eventArgs.data.EntityId, eventArgs.data.LookupFieldId, 'LinkLookup');\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(EVENTS.LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.RemoveLookupJoin(eventArgs.data.EntityId, eventArgs.data.LookupFieldId);\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(EVENTS.REFERENCE_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.AddReferenceJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceFieldId);\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(EVENTS.REFERENCE_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.RemoveReferenceJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceFieldId);\r\n\t\t\t});\r\n\r\n\t\t\tlet ids: Array<ISelectedEntity> = [];\r\n\t\t\t_.each(this._model.LookupEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: item.LookupFieldId}));\r\n\t\t\t_.each(this._model.ReferenceEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, ReferenceFieldId: item.ReferenceFieldId}));\r\n\r\n\t\t\tlinkEntity.SetSelectedEntities(ids);\r\n\r\n\t\t\tlinkEntity.On(EVENTS.COLUMN_SELECTED, this, (eventArgs) =>{ this.Trigger(EVENTS.COLUMN_SELECTED, {Id: eventArgs.data.Id});\t});\r\n\t\t\tthis._entity().LinkEntity(linkEntity);\r\n\t\t}\r\n\r\n\t\tthis._jsPlumb().repaintEverything();\r\n\r\n\t}\r\n\r\n\tDestroyConnections() {\r\n\t\tthis._jsPlumb().deleteConnection(this._jsPlumbConnection);\r\n\t\t_.each(this.Joins(), join => {\r\n\t\t\tjoin.Destroy();\r\n\t\t});\r\n\t}\r\n\r\n\tDestroy() {\r\n\t\tthis._jsPlumb().deleteConnection(this._jsPlumbConnection);\r\n\t\t_.each(this._joins(), join => {\r\n\t\t\tjoin.Destroy();\r\n\t\t});\r\n\t\tthis._jsPlumb().repaintEverything();\r\n\t}\r\n\r\n\tget Entity(): KnockoutObservable<QueryEntity> {\r\n\t\treturn this._entity;\r\n\t}\r\n\r\n\tget Model(): QueryEntityJoinModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tget Joins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._joins;\r\n\t}\r\n\r\n\tget SubEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._subEntityJoins;\r\n\t}\r\n\r\n\tget LookupEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._lookupEntityJoins;\r\n\t}\r\n\r\n\tget ReferenceEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._referenceEntityJoins;\r\n\t}\r\n\r\n\tRemoveSubQuery(){\r\n\t\tthis.DestroyConnections();\r\n\t\tthis._model.IsSubQuery = false;\r\n\t\tthis._entity().Model.CanvasPosition.Left = this._model.CanvasPosition.Left;\r\n\t\tthis._entity().Model.CanvasPosition.Top = this._model.CanvasPosition.Top;\r\n\t\tthis._entity().RemoveSubQuery();\r\n\t\tthis.GetTemplateHtml(QueryEntityJoinTemplate);\r\n\t}\r\n\r\n\tAddJoin(entityId: number) {\r\n\t\tthis.BlockOverlayBodyAndTitle();\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnBlockOverlayBodyAndTitle();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tvar queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\tif (data.EntityMetadata.Type === EntityTypes[EntityTypes.Entity]) {\r\n\t\t\t\t\tvar entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\r\n\t\t\t\t\tvar relationship = _.find(data.RelatedEntitiesMetadata,\r\n\t\t\t\t\t\titem => item.EntityMetadata.Id === this._entity().Model.Metadata.Id);\r\n\t\t\t\t\tif (relationship) {\r\n\t\t\t\t\t\tvar queryLikEntityModel = new QueryEntityModel();\r\n\t\t\t\t\t\tqueryLikEntityModel.Metadata = relationship.LinkEntityMetadata;\r\n\t\t\t\t\t\tentityJoinModel.LinkEntity = queryLikEntityModel;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\t\tthis._model.Joins.push(entityJoinModel);\r\n\r\n\t\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\t\tObjectIndexes: this._objectIndexes\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis._joins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t\t\tthis.CalculateMinBoxSize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (data.EntityMetadata.Type === EntityTypes[EntityTypes.Sub]) {\r\n\t\t\t\t\tvar subEntityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\t\tsubEntityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\t\tsubEntityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\r\n\t\t\t\t\tvar subEntityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\t\tModel: subEntityJoinModel,\r\n\t\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tvar subEntityJoin = new QueryEntityJoin(subEntityJoinParams);\r\n\t\t\t\t\tthis._model.SubEntityJoins.push(subEntityJoinModel);\r\n\t\t\t\t\tthis._subEntityJoins.push(subEntityJoin);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tAddLookupJoin(entityId: number, lookupFieldId: number, source: string) {\r\n\t\tthis.BlockOverlayBodyAndTitle();\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnBlockOverlayBodyAndTitle();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tlet queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\t\tlet entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\t\tentityJoinModel.LookupFieldId = lookupFieldId;\r\n\r\n\t\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\t\tthis._model.LookupEntityJoins.push(entityJoinModel);\r\n\r\n\t\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\t\tJoinSource: source\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis._lookupEntityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t\t\tthis.CalculateMinBoxSize();\r\n\t\t\t});\r\n\t}\r\n\r\n\tAddReferenceJoin(entityId: number, referenceFieldId: number) {\r\n\t\tBlockUI.Block({ Target: this._overlayWrapper, ZIndex: ZIndexManager.Instance.NextValue});\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {BlockUI.Unblock(this._overlayWrapper);})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tlet queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\tlet entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\tentityJoinModel.ReferenceFieldId = referenceFieldId;\r\n\r\n\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\tthis._model.ReferenceEntityJoins.push(entityJoinModel);\r\n\r\n\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: referenceFieldId\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._referenceEntityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t\tthis.CalculateMinBoxSize();\r\n\t\t\t});\r\n\t}\r\n\r\n AddReferenceLookupJoin(entityId: number, lookupFieldId: number, source: string) {\r\n BlockUI.Block({ Target: this._overlayWrapper, ZIndex: ZIndexManager.Instance.NextValue});\r\n EntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n .always(() => {BlockUI.Unblock(this._overlayWrapper);})\r\n .then((data) => {\r\n let queryEntityModel = new QueryEntityModel();\r\n queryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n let entityJoinModel = new QueryEntityJoinModel();\r\n entityJoinModel.Entity = queryEntityModel;\r\n entityJoinModel.LookupFieldId = lookupFieldId;\r\n\r\n entityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n this._model.ReferenceLookupEntityJoins.push(entityJoinModel);\r\n\r\n var entityJoinParams: IQueryEntityJoinParams = {\r\n Model: entityJoinModel,\r\n ParentEntity: this._entity(),\r\n JsPlumb: this._jsPlumb,\r\n EntitiesRelationships: [data],\r\n IsSubject: false,\r\n OverlayWrapper: this._overlayWrapper,\r\n EnabledColumnTypes: this._enabledColumnTypes,\r\n ObjectIndexes: this._objectIndexes,\r\n JoinSource: source\r\n };\r\n\r\n this._referenceLookupEntityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n });\r\n }\r\n\r\n RemoveReferenceLookupJoin(entityId: number, lookupFieldId: number) {\r\n let entityJoin = _.find(this._referenceLookupEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId && join.Model.LookupFieldId == lookupFieldId });\r\n entityJoin.Destroy();\r\n let entityJoinModel = _.find(this._model.ReferenceLookupEntityJoins, join => { return join.Entity.Metadata.Id === entityId && join.LookupFieldId == lookupFieldId });\r\n this._model.ReferenceLookupEntityJoins.splice(this._model.ReferenceLookupEntityJoins.indexOf(entityJoinModel), 1);\r\n this._referenceLookupEntityJoins.splice(this._referenceLookupEntityJoins().indexOf(entityJoin), 1);\r\n\t}\r\n\r\n\tCalculatePosition(): CanvasPositionModel {\r\n\t\tlet canvasPosition = new CanvasPositionModel();\r\n\t\tlet joins = [];\r\n\t\tjoins = joins.concat(this._joins()).concat(this._subEntityJoins()).concat(this._lookupEntityJoins()).concat(this._referenceEntityJoins());\r\n\t\tlet maxTopJoin = _.max(joins, (item: QueryEntityJoin) => item.Model.Entity.CanvasPosition.Top);\r\n\r\n\t\tif (!_.isEmpty(maxTopJoin)) {\r\n\t\t\tcanvasPosition.Left = maxTopJoin.Model.Entity.CanvasPosition.Left;\r\n\t\t\tcanvasPosition.Top = +maxTopJoin.Model.Entity.CanvasPosition.Top + QUERY_BUILDER.CELL_SIZE * 3;\r\n\t\t} else {\r\n\t\t\tcanvasPosition.Left = +this._entity().Model.CanvasPosition.Left + QUERY_BUILDER.CELL_SIZE * 14;\r\n\t\t\tcanvasPosition.Top = +this._entity().Model.CanvasPosition.Top + QUERY_BUILDER.CELL_SIZE * 3;\r\n\t\t}\r\n\r\n\t\treturn canvasPosition;\r\n\t}\r\n\r\n\r\n\tRemoveJoin(entityId: number, type: string) {\r\n\t\tif (type === EntityTypes[EntityTypes.Entity]) {\r\n\t\t\tvar entityJoin = _.find(this._joins(), join => { return join.Model.Entity.Metadata.Id === entityId });\r\n\t\t\tentityJoin.Destroy();\r\n\t\t\tvar entityJoinModel = _.find(this._model.Joins, join => { return join.Entity.Metadata.Id === entityId });\r\n\t\t\tthis._model.Joins.splice(this._model.Joins.indexOf(entityJoinModel), 1);\r\n\t\t\tthis._joins.splice(this._joins.indexOf(entityJoin), 1);\r\n\t\t\tthis.CalculateMinBoxSize();\r\n\t\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t\t}\r\n\r\n\t\tif (type === EntityTypes[EntityTypes.Sub]) {\r\n\t\t\tlet subEntityJoin = _.find(this._subEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId });\r\n\t\t\tif (subEntityJoin) {\r\n\t\t\t\tsubEntityJoin.Destroy();\r\n\t\t\t\tlet subEntityJoinModel = _.find(this._model.SubEntityJoins, join => { return join.Entity.Metadata.Id === entityId });\r\n\t\t\t\tthis._model.SubEntityJoins.splice(this._model.SubEntityJoins.indexOf(subEntityJoinModel), 1);\r\n\t\t\t\tthis._subEntityJoins.splice(this._subEntityJoins.indexOf(subEntityJoin), 1);\r\n\t\t\t\tthis.DecreaseObjectIndex(subEntityJoinModel.Entity.Metadata.Id, subEntityJoinModel.Entity.Index);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tDecreaseObjectIndex(entityId: number, index: number) {\r\n\t\tlet objIndex = _.find(this._objectIndexes, (indx) => {\r\n\t\t\treturn indx.Id === entityId;\r\n\t\t});\r\n\t\tif(objIndex && objIndex.Index === index){\r\n\t\t\tobjIndex.Index = +objIndex.Index - 1;\r\n\t\t}\r\n\t}\r\n\r\n\tRemoveLookupJoin(entityId: number, lookupFieldId: number) {\r\n\t\tlet entityJoin = _.find(this._lookupEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId && join.Model.LookupFieldId == lookupFieldId });\r\n\t\tentityJoin.Destroy();\r\n\t\tlet entityJoinModel = _.find(this._model.LookupEntityJoins, join => { return join.Entity.Metadata.Id === entityId && join.LookupFieldId == lookupFieldId });\r\n\t\tthis._model.LookupEntityJoins.splice(this._model.LookupEntityJoins.indexOf(entityJoinModel), 1);\r\n\t\tthis._lookupEntityJoins.splice(this._lookupEntityJoins().indexOf(entityJoin), 1);\r\n\t\tthis.CalculateMinBoxSize();\r\n\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t}\r\n\r\n\tRemoveReferenceJoin(entityId: number, referenceFieldId: number) {\r\n\t\tlet entityJoin = _.find(this._referenceEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId && join.Model.ReferenceFieldId == referenceFieldId });\r\n\t\tif(entityJoin){\r\n\t\t\tentityJoin.Destroy();\r\n\t\t\tlet entityJoinModel = _.find(this._model.ReferenceEntityJoins, join => { return join.Entity.Metadata.Id === entityId && join.ReferenceFieldId == referenceFieldId });\r\n\t\t\tthis._model.ReferenceEntityJoins.splice(this._model.ReferenceEntityJoins.indexOf(entityJoinModel), 1);\r\n\t\t\tthis._referenceEntityJoins.splice(this._referenceEntityJoins().indexOf(entityJoin), 1);\r\n\t\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t\t\tthis.CalculateMinBoxSize();\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el) {\r\n\t\tif (this._model.IsSubQuery) {\r\n\t\t\tthis._el = el[0];\r\n\t\t\tthis.CalculateMinBoxSize();\r\n\t\t\tvar parent = $(this._el).parent();\r\n\t\t\tvar isRoot = $(parent).hasClass('querybuilder-root-canvas');\r\n\r\n\t\t\t$(this._el).draggable({\r\n\t\t\t\tcontainment: isRoot ? false : 'parent',\r\n\t\t\t\tgrid: [20, 20],\r\n\t\t\t\tdrag: () => {\r\n\t\t\t\t\tthis._jsPlumb().repaintEverything();\r\n\t\t\t\t},\r\n\t\t\t\tstop: (evt, ui) => {\r\n\t\t\t\t\tthis._jsPlumb().repaintEverything();\r\n\t\t\t\t\tthis._model.CanvasPosition.Top = ui.position.top;\r\n\t\t\t\t\tthis._model.CanvasPosition.Left = ui.position.left;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tStartResize() {\r\n\t\tthis.CalculateMinBoxSize();\r\n\t}\r\n\r\n\tStopResize(evt, ui) {\r\n\t\tif (!this._model.CanvasSize) {\r\n\t\t\tthis._model.CanvasSize = new CanvasSizeModel();\r\n\t\t}\r\n\r\n\t\tthis._model.CanvasSize.Height = ui.size.height;\r\n\t\tthis._model.CanvasSize.Width = ui.size.width;\r\n\t}\r\n\r\n\tGetLeftPosition(): string {\r\n\t\treturn `${this._model.CanvasPosition.Left}px`;\r\n\t}\r\n\r\n\tGetTopPosition(): string {\r\n\t\treturn `${this._model.CanvasPosition.Top}px`;\r\n\t}\r\n\r\n\tget MinWidth(): KnockoutObservable<string> {\r\n\t\treturn this._minWidth;\r\n\t}\r\n\r\n\tget MinHeight(): KnockoutObservable<string> {\r\n\t\treturn this._minHeight;\r\n\t}\r\n\r\n\tprivate CalculateMinBoxSize() {\r\n\t\tvar wrappers = this.GetAllWrappers();\r\n\t\tvar maxLeftWrapper = _.max(wrappers, wrapper => { return $(wrapper).position().left });\r\n\t\tvar maxTopWrapper = _.max(wrappers, wrapper => { return $(wrapper).position().top });\r\n\t\tthis._minWidth(String($(maxLeftWrapper).position().left + $(maxLeftWrapper).width() + (QUERY_BUILDER.CELL_SIZE * 5)));\r\n\t\tthis._minHeight(String($(maxTopWrapper).position().top + $(maxTopWrapper).height() + (QUERY_BUILDER.CELL_SIZE)));\r\n\r\n\t\tif (+this._minWidth() > +this._canvasWidth()){\r\n\t\t\tthis._canvasWidth(this._minWidth());\r\n\t\t}\r\n\r\n\t\tif (+this._minHeight() > +this._canvasHeight()) {\r\n\t\t\tthis._canvasHeight(this._minHeight());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate BlockOverlayBodyAndTitle() {\r\n\t\tif(!this._overlayTitle && !this._overlayBody) {\r\n\t\t\tBlockUI.Block({ Target: this._overlayWrapper, ZIndex: ZIndexManager.Instance.NextValue });\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(this._overlayBody) {\r\n\t\t\tBlockUI.Block({ Target: this._overlayBody, ZIndex: ZIndexManager.Instance.NextValue });\r\n\t\t}\r\n\r\n\t\tif(this._overlayTitle) {\r\n\t\t\tBlockUI.Block( { Target: this._overlayTitle, ZIndex: ZIndexManager.Instance.NextValue });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate UnBlockOverlayBodyAndTitle() {\r\n\t\tif(!this._overlayTitle && !this._overlayBody) {\r\n\t\t\tBlockUI.Unblock(this._overlayWrapper);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(this._overlayBody) {\r\n\t\t\tBlockUI.Unblock(this._overlayBody);\r\n\t\t}\r\n\r\n\t\tif(this._overlayTitle) {\r\n\t\t\tBlockUI.Unblock(this._overlayTitle);\r\n\t\t}\r\n\t}\r\n\r\n\tGetAllWrappers() {\r\n\t\tvar wrappers = [];\r\n\t\twrappers.push(this._entity().Wrapper);\r\n\r\n\t\t_.each(this.AllJoins, join_ => {\r\n\t\t\twrappers = wrappers.concat(this.GetAllJoinWrappers(join_));\r\n\t\t});\r\n\t\treturn wrappers;\r\n\t}\r\n\r\n\tGetAllJoinWrappers(join: QueryEntityJoin) {\r\n\t\tvar wrappers = [];\r\n\t\tlet wrapper = join.Model.IsSubQuery ? join._el : join._entity().Wrapper;\r\n\t\twrappers.push(wrapper);\r\n\t\t_.each(join.AllJoins, join_ => {\r\n\t\t\twrappers = wrappers.concat(this.GetAllJoinWrappers(join_));\r\n\t\t});\r\n\t\treturn wrappers;\r\n\t}\r\n\r\n\tget AllJoins(): Array<QueryEntityJoin>{\r\n\t\treturn [...this._joins(), ...this._lookupEntityJoins(), ...this._subEntityJoins(), ...this._referenceLookupEntityJoins(), ...this._referenceEntityJoins()];\r\n\t}\r\n\r\n\tget ReferenceLookupEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._referenceLookupEntityJoins;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { ISelectedEntity, QueryEntity } from 'QueryBuilder/QueryEntity/QueryEntity';\r\nimport { QueryEntityJoin } from 'QueryBuilder/QueryEntityJoin/QueryEntityJoin';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { EntityRelationshipsMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\nimport { QUERY_BUILDER } from 'QueryBuilder/Constants';\r\nimport { EVENTS } from 'QueryBuilder/Events';\r\nimport { EntityMetadataStore } from 'QueryBuilder/Stores/EntityMetadataStore';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { CanvasPositionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasPositionModel';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { EntityTypes } from 'Core/Controls/Grid/BaseGrid/Enums/EntityTypes';\r\nimport { IQueryExpressionParams } from 'QueryBuilder/QueryExpression/IQueryExpressionParams';\r\nimport { IQueryEntityParams } from 'QueryBuilder/QueryEntity/IQueryEntityParams';\r\nimport { IQueryEntityJoinParams } from 'QueryBuilder/QueryEntityJoin/IQueryEntityJoinParams';\r\nimport { IObjectIndex } from 'QueryBuilder/IObjectIndex';\r\nimport { Event } from 'Core/Common/Event';\r\n\r\nimport QueryExpressionTemplate from 'QueryBuilder/QueryExpression/Templates/QueryExpression.html';\r\nimport { ZIndexManager } from \"../../Core/Common/ZIndexManager\";\r\n\r\nexport class QueryExpression extends Event{\r\n\tprivate _entity: KnockoutObservable<QueryEntity>;\r\n\tprivate _entityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _subEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _model: QueryExpressionModel;\r\n\tprivate _jsPlumb: KnockoutObservable<jsPlumbInstance>;\r\n\tprivate _entitiesRelationships: Array<EntityRelationshipsMetadataModel>;\r\n\tprivate _viewMode: ViewModes;\r\n\tprivate _overlayWrapper: HTMLElement;\r\n\tprivate _overlayBody: HTMLElement;\r\n\tprivate _overlayTitle: HTMLElement;\r\n\tprivate _enabledColumnTypes: Array<string>;\r\n\tprivate _objectIndexes: Array<IObjectIndex>;\r\n\tprivate _lookupEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _referenceLookupEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _referenceEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\r\n\tconstructor(params: IQueryExpressionParams) {\r\n\t\tsuper();\r\n\t\tthis._model = params.Model;\r\n\t\tthis._jsPlumb = params.JsPlumb;\r\n\t\tthis._entitiesRelationships = params.EntitiesRelationships;\r\n\t\tthis._viewMode = params.ViewMode;\r\n\t\tthis._overlayWrapper = params.Container;\r\n\t\tthis._overlayBody = $(this._overlayWrapper).find('.portlet-body') && $(this._overlayWrapper).find('.portlet-body')[0];\r\n\t\tthis._overlayTitle = $(this._overlayWrapper).find('.portlet-title') && $(this._overlayWrapper).find('.portlet-title')[0];\r\n\t\tthis._enabledColumnTypes = params.EnabledColumnTypes;\r\n\t\tthis._entity = ko.observable(null);\r\n\t\tthis._entityJoins = ko.observableArray([]);\r\n\t\tthis._subEntityJoins = ko.observableArray([]);\r\n\t\tthis._objectIndexes = params.ObjectIndexes;\r\n\t\tthis._lookupEntityJoins = ko.observableArray([]);\r\n\t\tthis._referenceLookupEntityJoins = ko.observableArray([]);\r\n\t\tthis._referenceEntityJoins = ko.observableArray([]);\r\n\r\n\r\n\t\tthis._entityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._subEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._lookupEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._referenceLookupEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._referenceEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\r\n\t\tthis.AddEvent(EVENTS.COLUMN_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.UPDATE_SORT);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tvar ids: Array<ISelectedEntity> = [];\r\n\t\tvar gridSubjectId = null;\r\n\r\n\t\tif (this._viewMode === ViewModes.TableView) {\r\n\t\t\tvar gridSubjectJoin = _.first(this._model.EntityJoins);\r\n\t\t\tif (gridSubjectJoin) {\r\n\t\t\t\tgridSubjectId = gridSubjectJoin.Entity.Metadata.Id;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar params: IQueryEntityParams = {\r\n\t\t\tModel: this._model.Entity,\r\n\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\tIsSubject: true,\r\n\t\t\tGridSubjectEntityId: gridSubjectId,\r\n\t\t\tIsEnableSubQuery: false,\r\n\t\t\tIsInSubQuery: false,\r\n\t\t\tIsEnableSelectSubEntity: true,\r\n\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\tIsLookupJoin: false,\r\n\t\t\tIsReferenceJoin: false\r\n\t\t};\r\n\r\n\t\tvar queryEntity = new QueryEntity(params);\r\n\r\n\t\tqueryEntity.On(EVENTS.ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddJoin(eventArgs.data.EntityId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveJoin(eventArgs.data.EntityId, eventArgs.data.Type);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddLookupJoin(eventArgs.data.EntityId, eventArgs.data.LookupFieldId, 'Lookup');\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveLookupJoin(eventArgs.data.EntityId, eventArgs.data.LookupFieldId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddReferenceLookupJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceLookupFieldId, 'Lookup');\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveReferenceLookupJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceLookupFieldId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.REFERENCE_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddReferenceJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceFieldId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.REFERENCE_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveReferenceJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceFieldId);\r\n\t\t});\r\n\r\n\t\t_.each(this._model.EntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: null }));\r\n\t\t_.each(this._model.SubEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: null }));\r\n\t\t_.each(this._model.LookupEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: item.LookupFieldId }));\r\n\t\t_.each(this._model.ReferenceEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, ReferenceFieldId: item.ReferenceFieldId }));\r\n\t\t_.each(this._model.ReferenceLookupEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, ReferenceLookupField: item.LookupFieldId }));\r\n\r\n\t\tqueryEntity.SetSelectedEntities(ids);\r\n\r\n\t\tthis.InitGridSubject();\r\n\r\n\t\tqueryEntity.On(EVENTS.AFTER_RENDER, this, (eventArgs: any) => {\r\n\t\t\tthis._entityJoins([]);\r\n\t\t\tthis._subEntityJoins([]);\r\n\t\t\t_.each(this._model.EntityJoins, (joinModel, index) => {\r\n\t\t\t\tlet params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: joinModel.Entity.IsGridSubject,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._entityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t\tif(this._entityJoins().length === 1 && this._viewMode === ViewModes.TableView){\r\n\t\t\t\tlet join = this._entityJoins()[0];\r\n\t\t\t\tjoin.On(EVENTS.COLUMN_SELECTED, this, (eventArgs) => {\r\n\t\t\t\t\tthis.Trigger(EVENTS.COLUMN_SELECTED, { Id: eventArgs.data.Id, Join: join.Model } );\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t_.each(this._model.SubEntityJoins, (joinModel) => {\r\n\r\n\t\t\t\tlet params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: joinModel.Entity.IsGridSubject,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._subEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\r\n\t\t\t_.each(this._model.LookupEntityJoins, (joinModel) => {\r\n\t\t\t\tlet params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._lookupEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t\t_.each(this._model.ReferenceLookupEntityJoins, (joinModel, index) => {\r\n\r\n\t\t\t\tlet params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: joinModel.Entity.IsGridSubject,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._referenceLookupEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t\t_.each(this._model.ReferenceEntityJoins, (joinModel) => {\t\t\t\r\n\t\t\t\tlet params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: joinModel.ReferenceFieldId\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._referenceEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t});\r\n\t\t\r\n\t\tthis._entity(queryEntity);\r\n\t}\r\n\r\n\tprivate BlockOverlayBodyAndTitle() {\r\n\t\tif(!this._overlayTitle && !this._overlayBody) {\r\n\t\t\tBlockUI.Block({ Target: this._overlayWrapper, ZIndex: ZIndexManager.Instance.NextValue });\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(this._overlayBody) {\r\n\t\t\tBlockUI.Block({ Target: this._overlayBody, ZIndex: ZIndexManager.Instance.NextValue });\r\n\t\t}\r\n\r\n\t\tif(this._overlayTitle) {\r\n\t\t\tBlockUI.Block( { Target: this._overlayTitle, ZIndex: ZIndexManager.Instance.NextValue });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate UnBlockOverlayBodyAndTitle() {\r\n\t\tif(!this._overlayTitle && !this._overlayBody) {\r\n\t\t\tBlockUI.Unblock(this._overlayWrapper);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif(this._overlayBody) {\r\n\t\t\tBlockUI.Unblock(this._overlayBody);\r\n\t\t}\r\n\r\n\t\tif(this._overlayTitle) {\r\n\t\t\tBlockUI.Unblock(this._overlayTitle);\r\n\t\t}\r\n\t}\r\n\r\n\tInitGridSubject(){\r\n\t\tif(this._viewMode !== ViewModes.TableView){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet hasGridSubject = \r\n\t\t\t_.any(this._model.EntityJoins\r\n\t\t\t.concat(this._model.SubEntityJoins)\r\n\t\t\t.concat(this._model.LookupEntityJoins)\r\n\t\t\t.concat(this._model.ReferenceEntityJoins)\r\n\t\t\t.concat(this._model.ReferenceLookupEntityJoins), (item)=> item.Entity.IsGridSubject);\r\n\t\t\tif(hasGridSubject) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet firstJoin = _.first(this._model.EntityJoins);\r\n\t\t\tif(firstJoin){\r\n\t\t\t\tfirstJoin.Entity.IsGridSubject = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tfirstJoin = _.first(this._model.ReferenceLookupEntityJoins);\r\n\t\t\tif(firstJoin){\r\n\t\t\t\tfirstJoin.Entity.IsGridSubject = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t}\r\n\r\n\tRemoveLookupJoin(entityId: number, lookupFieldId: number) {\r\n\t\tlet entityJoin = _.find(this._lookupEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId && join.Model.LookupFieldId == lookupFieldId });\r\n\t\tentityJoin.Destroy();\r\n\t\tlet entityJoinModel = _.find(this._model.LookupEntityJoins, join => { return join.Entity.Metadata.Id === entityId && join.LookupFieldId == lookupFieldId });\r\n\t\tthis._model.LookupEntityJoins.splice(this._model.LookupEntityJoins.indexOf(entityJoinModel), 1);\r\n\t\tthis._lookupEntityJoins.splice(this._lookupEntityJoins().indexOf(entityJoin), 1);\r\n\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t}\r\n\r\n\tAddLookupJoin(entityId: number, lookupFieldId: number, source: string) {\r\n\t\tthis.BlockOverlayBodyAndTitle();\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnBlockOverlayBodyAndTitle();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tlet queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\tlet entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\tentityJoinModel.LookupFieldId = lookupFieldId;\r\n\r\n\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\tthis._model.LookupEntityJoins.push(entityJoinModel);\r\n\r\n\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: source\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._lookupEntityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t});\r\n\t}\r\n\r\n\tAddReferenceLookupJoin(entityId: number, lookupFieldId: number, source: string) {\r\n\t\tthis.BlockOverlayBodyAndTitle();\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnBlockOverlayBodyAndTitle();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tlet queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\tlet entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\tentityJoinModel.LookupFieldId = lookupFieldId;\r\n\r\n\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\tthis._model.ReferenceLookupEntityJoins.push(entityJoinModel);\r\n\r\n\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: source\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._referenceLookupEntityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t});\r\n\t}\r\n\r\n\tRemoveReferenceLookupJoin(entityId: number, lookupFieldId: number) {\r\n\t\tlet entityJoin = _.find(this._referenceLookupEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId && join.Model.LookupFieldId == lookupFieldId });\r\n\t\tentityJoin.Destroy();\r\n\t\tlet entityJoinModel = _.find(this._model.ReferenceLookupEntityJoins, join => { return join.Entity.Metadata.Id === entityId && join.LookupFieldId == lookupFieldId });\r\n\t\tthis._model.ReferenceLookupEntityJoins.splice(this._model.ReferenceLookupEntityJoins.indexOf(entityJoinModel), 1);\r\n\t\tthis._referenceLookupEntityJoins.splice(this._referenceLookupEntityJoins().indexOf(entityJoin), 1);\r\n\t}\r\n\r\n\tAddReferenceJoin(entityId: number, referenceFieldId: number) {\r\n\t\tthis.BlockOverlayBodyAndTitle();\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnBlockOverlayBodyAndTitle();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tlet queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\tlet entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\tentityJoinModel.ReferenceFieldId = referenceFieldId;\r\n\r\n\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\tthis._model.ReferenceEntityJoins.push(entityJoinModel);\r\n\r\n\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: referenceFieldId\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._referenceEntityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t});\r\n\t}\r\n\r\n\tRemoveReferenceJoin(entityId: number, referenceFieldId: number) {\r\n\t\tlet entityJoin = _.find(this._referenceEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId && join.Model.ReferenceFieldId == referenceFieldId });\r\n\t\tentityJoin.Destroy();\r\n\t\tlet entityJoinModel = _.find(this._model.ReferenceEntityJoins, join => { return join.Entity.Metadata.Id === entityId && join.ReferenceFieldId == referenceFieldId });\r\n\t\tthis._model.ReferenceEntityJoins.splice(this._model.ReferenceEntityJoins.indexOf(entityJoinModel), 1);\r\n\t\tthis._referenceEntityJoins.splice(this._referenceEntityJoins().indexOf(entityJoin), 1);\r\n\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t}\r\n\r\n\r\n\tget Entity(): KnockoutObservable<QueryEntity> {\r\n\t\treturn this._entity;\r\n\t}\r\n\r\n\tget EntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._entityJoins;\r\n\t}\r\n\r\n\tget SubEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._subEntityJoins;\r\n\t}\r\n\r\n\tget ReferenceEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._referenceEntityJoins;\r\n\t}\r\n\r\n\tget Model() {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tget LookupEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._lookupEntityJoins;\r\n\t}\r\n\r\n\tget ReferenceLookupEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._referenceLookupEntityJoins;\r\n\t}\r\n\r\n\tAddJoin(entityId: number) {\r\n\t\tthis.BlockOverlayBodyAndTitle();\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnBlockOverlayBodyAndTitle();\r\n\t\t\t })\r\n\t\t\t.then((data) => {\r\n\t\t\t\tvar queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\tif (data.EntityMetadata.Type === EntityTypes[EntityTypes.Entity]) {\r\n\t\t\t\t\tvar entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\r\n\t\t\t\t\tvar relationship = _.find(data.RelatedEntitiesMetadata, item => item.EntityMetadata.Id === this._entity().Model.Metadata.Id);\r\n\t\t\t\t\tif (relationship) {\r\n\t\t\t\t\t\tvar queryLikEntityModel = new QueryEntityModel();\r\n\t\t\t\t\t\tqueryLikEntityModel.Metadata = relationship.LinkEntityMetadata;\r\n\t\t\t\t\t\tentityJoinModel.LinkEntity = queryLikEntityModel;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\t\tthis._model.EntityJoins.push(entityJoinModel);\r\n\r\n\t\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\t\tObjectIndexes: this._objectIndexes\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis._entityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (data.EntityMetadata.Type === EntityTypes[EntityTypes.Sub]) {\r\n\t\t\t\t\tvar subEntityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\t\tsubEntityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\t\tsubEntityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\t\tvar subEntityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\t\tModel: subEntityJoinModel,\r\n\t\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tvar subEntityJoin = new QueryEntityJoin(subEntityJoinParams);\r\n\t\t\t\t\tthis._model.SubEntityJoins.push(subEntityJoinModel);\r\n\t\t\t\t\tthis._subEntityJoins.push(subEntityJoin);\r\n\t\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tCalculatePosition(): CanvasPositionModel {\r\n\t\tlet canvasPosition = new CanvasPositionModel();\r\n\t\tlet joins = [];\r\n\t\tjoins = joins.concat(this._entityJoins()).concat(this._subEntityJoins()).concat(this._lookupEntityJoins()).concat(this._referenceEntityJoins());\r\n\t\tlet maxTopJoin = _.max(joins, (item: QueryEntityJoin) => item.Model.Entity.CanvasPosition.Top);\r\n\r\n\t\tif (!_.isEmpty(maxTopJoin)) {\r\n\t\t\tcanvasPosition.Left = maxTopJoin.Model.Entity.CanvasPosition.Left;\r\n\t\t\tcanvasPosition.Top = +maxTopJoin.Model.Entity.CanvasPosition.Top + QUERY_BUILDER.CELL_SIZE * 3;\r\n\t\t} else {\r\n\t\t\tcanvasPosition.Left = +this._entity().Model.CanvasPosition.Left + QUERY_BUILDER.CELL_SIZE * 14;\r\n\t\t\tcanvasPosition.Top = +this._entity().Model.CanvasPosition.Top + QUERY_BUILDER.CELL_SIZE * 3;\r\n\t\t}\r\n\r\n\t\treturn canvasPosition;\r\n\t}\r\n\r\n\tRemoveJoin(entityId: number, type: string) {\r\n\t\tif (type === EntityTypes[EntityTypes.Entity]) {\r\n\t\t\tlet entityJoin = _.find(this._entityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId });\r\n\t\t\tif (entityJoin) {\r\n\t\t\t\tentityJoin.Destroy();\r\n\t\t\t\tlet entityJoinModel = _.find(this._model.EntityJoins, join => { return join.Entity.Metadata.Id === entityId });\r\n\t\t\t\tthis._model.EntityJoins.splice(this._model.EntityJoins.indexOf(entityJoinModel), 1);\r\n\t\t\t\tthis._entityJoins.splice(this._entityJoins.indexOf(entityJoin), 1);\r\n\t\t\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (type === EntityTypes[EntityTypes.Sub]) {\r\n\t\t\tlet entityJoin = _.find(this._subEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId });\r\n\t\t\tif (entityJoin) {\r\n\t\t\t\tentityJoin.Destroy();\r\n\t\t\t\tlet entityJoinModel = _.find(this._model.SubEntityJoins, join => { return join.Entity.Metadata.Id === entityId });\r\n\t\t\t\tthis._model.SubEntityJoins.splice(this._model.SubEntityJoins.indexOf(entityJoinModel), 1);\r\n\t\t\t\tthis._subEntityJoins.splice(this._subEntityJoins.indexOf(entityJoin), 1);\r\n\t\t\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tDecreaseObjectIndex(entityId: number, index: number) {\r\n\t\tlet objIndex = _.find(this._objectIndexes, (indx) => {\r\n\t\t\treturn indx.Id === entityId;\r\n\t\t});\r\n\t\tif(objIndex && objIndex.Index === index){\r\n\t\t\tobjIndex.Index = +objIndex.Index - 1;\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn QueryExpressionTemplate;\r\n\t}\r\n\r\n\tAfterRender() {}\r\n}","// Module\nvar code = \"<!-- ko with: Entity --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- ko foreach: EntityJoins --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- ko foreach: SubEntityJoins --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- ko foreach: LookupEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: ReferenceLookupEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: ReferenceEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"query-sortable-item box-shadow--6dp\\\" style=\\\"height:40px;margin-left:10px;margin-bottom:10px\\\"> <div class=\\\"panel color-view bg-blue bg-font-blue query-bottom-btn\\\" style=\\\"height:100%\\\"> <div data-bind=\\\"style: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcursor: $parent._isMoving() ? 'move' : 'pointer'\\r\\n\\t\\t\\t\\t\\t\\t}\\\" style=\\\"padding:0;padding-left:5px;padding-right:5px\\\" class=\\\"panel-heading text-center\\\"> <h6 data-bind=\\\"text: $data.Title\\\" class=\\\"bold\\\"></h6> </div> <div data-bind=\\\"click: $parent.RemoveSortColumn.bind($parent, $data)\\\" class=\\\"query-close-btn\\\"><i class=\\\"fa fa-times\\\" aria-hidden=\\\"true\\\"></i></div> </div> <div data-bind=\\\"click: $data.ChangeOrderDirection.bind($data)\\\" class=\\\"query-button edit-button bg-blue bg-font-blue\\\"> <span title=\\\"Order direction\\\"> <i data-bind=\\\"css: { 'fa-arrow-up': SortOrder() === 0, 'fa-arrow-down': SortOrder() === 1 }\\\" class=\\\"fa fa-stack\\\"></i> </span> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { SortOrder } from 'QueryBuilder/Enums';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QuerySortModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QuerySortModel';\r\n\r\nimport SortItemTemplate from 'QueryBuilder/QuerySorting/SortItem/Templates/SortItem.html';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nko.templates['QueryBuilder/QuerySorting/SortItem/Templates/SortItem'] = SortItemTemplate;\r\n\r\nexport class SortItem {\r\n\tprivate _sortOrder: KnockoutObservable<SortOrder>;\r\n\tprivate _model: QuerySortModel;\r\n\r\n\tconstructor(model: QuerySortModel, private _queryEntityModel: QueryEntityModel) {\r\n\t\tthis._sortOrder = ko.observable(model.SortOrder);\r\n\t\tthis._model = model;\r\n\t}\r\n\r\n\tstatic GetTemplateName() {\r\n\t\treturn 'QueryBuilder/QuerySorting/SortItem/Templates/SortItem';\r\n\t}\r\n\r\n\t@enumerable get Title(): string {\r\n\t\treturn `${this._queryEntityModel.Metadata.NameTranslation || this._queryEntityModel.Metadata.Name}.${this._model.Column.Metadata.NameTranslation || this._model.Column.Metadata.Name}`;\r\n\t}\r\n\r\n\t@enumerable get SortOrder(): KnockoutObservable<SortOrder> {\r\n\t\treturn this._sortOrder;\r\n\t}\r\n\r\n\t@enumerable get Model(): QuerySortModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tChangeOrderDirection() {\r\n\t\tif (this._sortOrder() === SortOrder.Ascending) {\r\n\t\t\tthis._sortOrder(SortOrder.Descending);\r\n\t\t\tthis._model.SortOrder = SortOrder.Descending;\r\n\t\t} else {\r\n\t\t\tthis._sortOrder(SortOrder.Ascending);\r\n\t\t\tthis._model.SortOrder = SortOrder.Ascending;\r\n\t\t}\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { SortItem } from 'QueryBuilder/QuerySorting/SortItem/SortItem';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QuerySortModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QuerySortModel';\r\nimport { SortOrder } from 'QueryBuilder/Enums';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { Util } from 'QueryBuilder/Util';\r\n\r\nimport QuerySortingTemplate from 'QueryBuilder/QuerySorting/Templates/QuerySorting.html';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class QuerySorting {\r\n\tprivate _expressionModel: QueryExpressionModel;\r\n\tprivate _items: KnockoutObservableArray<SortItem>;\r\n\tprivate _isMoving: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis._items = ko.observableArray([]);\r\n\t\tthis._isMoving = ko.observable(false);\r\n\r\n\t}\r\n\r\n\tset ExpressionModel(expressionModel: QueryExpressionModel) {\r\n\t\tthis._expressionModel = expressionModel;\r\n\r\n\t\tvar entities = Util.GetAllQueryEntities(this._expressionModel);\r\n\r\n\t\t_.each(this._expressionModel.Sorts, (item) => {\r\n\t\t\tvar queryEntity = _.find(entities, (entity) => { return entity.Guid === item.Column.QueryEntityGuid });\r\n\t\t\tif (queryEntity) {\r\n\t\t\t\tvar fieldMetadata = _.find(queryEntity.Metadata.Fields, (field) => { return field.Id === item.Column.Metadata.Id });\r\n\t\t\t\tif (fieldMetadata) {\r\n\t\t\t\t\titem.Column.Metadata = fieldMetadata;\r\n\t\t\t\t\tvar sortItem = new SortItem(item, queryEntity);\r\n\t\t\t\t\tthis._items.push(sortItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tGetSortItemTemplateName() {\r\n\t\treturn SortItem.GetTemplateName();\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn QuerySortingTemplate;\r\n\t}\r\n\r\n\tAddSortColumn(item, evt, ui) {\r\n\t\tlet model = new QuerySortModel();\r\n\t\tmodel.Column = new QueryColumnModel();\r\n\t\tmodel.Column.Metadata = item.FieldMetadataModel;\r\n\t\tmodel.Column.QueryEntityGuid = item.QueryEntityModel.Guid;\r\n\t\tmodel.SortOrder = SortOrder.Ascending;\r\n\t\tif (!this._expressionModel.Sorts) {\r\n\t\t\tthis._expressionModel.Sorts = [];\r\n\t\t}\r\n\t\tthis._expressionModel.Sorts.push(model);\r\n\t\tlet sortItem = new SortItem(model, item.QueryEntityModel);\r\n\t\treturn sortItem;\r\n\t}\r\n\r\n\tUpdate(){\r\n\t\tvar entities = Util.GetAllQueryEntities(this._expressionModel);\r\n\r\n\t\tthis._items().forEach((sortItem)=>{\r\n\t\t\tif(!_.any(entities,(entity)=>entity.Guid === sortItem.Model.Column.QueryEntityGuid)){\r\n\t\t\t\tthis.RemoveSortColumn(sortItem);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tStartSort() {\r\n\t\tthis._isMoving(true);\r\n\t}\r\n\r\n\tStopSort() {\r\n\t\tthis._isMoving(false);\r\n\t\tthis._expressionModel.Sorts = _.map(this._items(), (item) => {\r\n\t\t\treturn item.Model;\r\n\t\t});\r\n\t}\r\n\r\n\t@enumerable get Items(): KnockoutObservableArray<SortItem> {\r\n\t\treturn this._items;\r\n\t}\r\n\r\n\tRemoveSortColumn(sortItem: SortItem) {\r\n\t\tthis._expressionModel.Sorts.splice(this._expressionModel.Sorts.indexOf(sortItem.Model), 1);\r\n\t\tthis._items.remove(sortItem);\r\n\t}\r\n}","// Module\nvar code = \"<style>#QuerySorting>div{float:left}</style> <div data-bind=\\\"sortable: {\\r\\n\\t\\ttemplate: $data.GetSortItemTemplateName.bind($data),\\r\\n\\t\\tdata: Items,\\r\\n\\t\\tdragged: $data.AddSortColumn.bind($data),\\r\\n\\t\\toptions: {\\r\\n\\t\\t\\tstart: $data.StartSort.bind($data),\\r\\n\\t\\t\\tstop: $data.StopSort.bind($data),\\r\\n\\t\\t\\tplaceholder: 'sort-column-placeholder',\\r\\n\\t\\t}\\r\\n\\t}\\\" id=\\\"QuerySorting\\\" style=\\\"z-index:99999;min-height:80px;padding:15px 15px 15px 5px;background-color:#ffffd4;border:1px solid #e1e1e1!important\\\" class=\\\"clearfix\\\"> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseGrid } from 'Core/Controls/Grid/BaseGrid/BaseGrid';\r\nimport { Paginator } from 'Core/Components/Paginator/Paginator';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {GridStore, IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { EVENTS as PAGINATOR_EVENTS } from 'Core/Components/Paginator/Constants';\r\nimport { EVENTS as BASE_GRID_EVENTS } from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport { GridDataModel } from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport { Serialize } from 'libs/cerialize';\r\nimport { SortModel } from 'Core/Controls/Grid/Models/SortModel';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport {Toolbar} from \"Core/Controls/Grid/Toolbar/Toolbar\";\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {EVENTS as TOOLBAR_EVENTS} from \"Core/Controls/Grid/Toolbar/Constants\";\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\n\r\nexport class QueryResultGrid {\r\n\t\r\n\tprivate _baseGrid: KnockoutObservable<BaseGrid>;\r\n\tprivate _paginator: Paginator;\r\n\tprivate _sorting: Array<SortModel>;\r\n\r\n\tprivate _toolbar: Toolbar;\r\n\tprivate _userVarsManager: UserVarsManager;\r\n\tprivate _showTogglePrioritiesButton: boolean;\r\n\tprivate _isPrioritiesDisabled: boolean;\r\n\tprivate _screenTypes: string;\r\n\r\n\tconstructor(\r\n\t\tprivate _model: QueryExpressionModel,\r\n\t\tprivate _recordId: number,\r\n\t\tprivate _recordPerPage: number,\r\n\t\tprivate _viewMode: ViewModes,\r\n\t\tprivate _isDesktop: boolean,\r\n\t\tprivate _filterByOwners: boolean,\r\n\t\tprivate _subjectEntityId: number,\r\n\t\tprivate _gridSubjectEntityId: number\r\n\t) {\r\n\t\tthis._userVarsManager = UserVarsManager.Instance;\r\n\t\tthis._screenTypes = ScreenTypes[ScreenTypes.None];\r\n\t\tthis._showTogglePrioritiesButton = this._screenTypes !== ScreenTypes[ScreenTypes.Portlet];\r\n\t\tthis._isPrioritiesDisabled = !this._showTogglePrioritiesButton;\r\n\r\n\t\tthis._baseGrid = ko.observable(\r\n\t\t\tnew BaseGrid({\r\n\t\t\t\tisEditable: ko.observable(true),\r\n\t\t\t\tisQueryResultGrid: true,\r\n\t\t\t\tscreenType: this._screenTypes,\r\n\t\t\t\tisPrioritiesDisabled: this.GetGridPriorityToggle(),\r\n\t\t\t\tToggleAllShownColumns: this.ToggleAllShownColums.bind(this)\r\n\t\t\t}));\r\n\t\tthis._baseGrid().IsFastFilterEnabled = true;\r\n\t\tthis._baseGrid().IsReady = false;\r\n\r\n\t\tthis._toolbar = new Toolbar(\r\n\t\t\tfalse,\r\n\t\t\tfalse,\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tthis._screenTypes,\r\n\t\t\tthis.GetGridPriorityToggle(),\r\n\t\t\tthis._showTogglePrioritiesButton,\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tfalse,\r\n\t\t\tfalse\r\n\t\t);\r\n\t\tthis._toolbar.On(TOOLBAR_EVENTS.TOGGLE_PRIORITIES, this, (eventArgs: any) => {\r\n\t\t\tthis.TogglePriorities(eventArgs.data.state)\r\n\t\t});\r\n\r\n\t\tthis._paginator = this._toolbar.Paginator();\r\n\t\tthis._paginator.RecordsPerPage = this._recordPerPage;\r\n\r\n\t\tthis._paginator.On(PAGINATOR_EVENTS.CHANGE, this, () => { this.Refresh(); });\r\n\t\tthis._baseGrid().On(BASE_GRID_EVENTS.SORT, this, (eventArgs: any) => {\r\n\t\t\tthis._sorting = eventArgs.data.SortColumns;\r\n\t\t\tthis.Refresh(true);\r\n\t\t});\r\n\r\n\t\tthis._baseGrid().On(BASE_GRID_EVENTS.UPDATE_GRID, this, eventArgs => {\r\n\t\t\tif(eventArgs.data.updateFromFastFilters){\r\n\t\t\t\tif (this._paginator.PageNumber != 1) {\r\n\t\t\t\t\tthis._paginator.Reset();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.Refresh(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t });\r\n\t\t \r\n\t\tthis._baseGrid().On(BASE_GRID_EVENTS.LOAD_SUB_GRID, this, (eventArgs)=>{\r\n\t\t\tthis.Refresh(false, eventArgs.data.SubGrid, eventArgs.data.ParentRowId);\r\n\t\t});\r\n\r\n\t\tthis._baseGrid().On(BASE_GRID_EVENTS.OPEN_HYPERLINK, this, eventArgs => this.OnHyperLink(eventArgs.data));\r\n\t}\r\n\r\n\tTogglePriorities(state) {\r\n\t\t!MobileChecker.IsMobile() && this._userVarsManager.SetGridPriority(this._subjectEntityId, this._gridSubjectEntityId, state);\r\n\t\tthis._isPrioritiesDisabled = state;\r\n\t\tthis.Refresh();\r\n\t}\r\n\r\n\tToggleAllShownColums(canHide: boolean, canShow: boolean) {\r\n\t\tthis._toolbar && this._toolbar.ToggleAllShownColums.call(this._toolbar, canHide, canShow);\r\n\t}\r\n\r\n\tGetGridPriorityToggle(): boolean {\r\n\t\tif (MobileChecker.IsMobile()) {\r\n\t\t\treturn this._isPrioritiesDisabled;\r\n\t\t}\r\n\t\treturn this._userVarsManager && this._userVarsManager.GetGridPriority(this._subjectEntityId, this._gridSubjectEntityId, this._isPrioritiesDisabled);\r\n\t}\r\n\r\n\tset FilterByOwners(value: boolean){\r\n\t\tthis._filterByOwners = value;\r\n\t}\r\n\r\n\tprivate BlockUI() {\r\n\t\tBlockUI.Block();\r\n\t}\r\n\r\n\tprivate UnblockUI() {\r\n\t\tBlockUI.Unblock();\r\n\t}\r\n\r\n\tRefresh(restoreState: boolean = false, subGrid?: BaseGrid, parentRowId?: string) {\r\n\r\n\t\tlet pageNumber = subGrid ? subGrid.Paginator.PageNumber : this._toolbar.Paginator().PageNumber;\r\n\r\n\t\tlet requestModel: IGetGridDataRequestModel = {\r\n\t\t\tRecordsPerPage: this._paginator.RecordsPerPage,\r\n\t\t\tPageNumber: pageNumber,\r\n\t\t\tQuery: this._model,\r\n\t\t\tControlId: 0,\r\n\t\t\tTableViewId: 0,\r\n\t\t\tParentRowId: parentRowId,\r\n\t\t\tShowPlanned: false,\r\n\t\t\tSearchPhrase: null,\r\n\t\t\tSubjectEntityId: 0,\r\n\t\t\tRecordOwners: [],\r\n\t\t\tSort: this._sorting,\r\n\t\t\tViewMode: this._viewMode,\r\n\t\t\tSubjectRecordId: this._recordId,\r\n\t\t\tSubjectTypeId: 0,\r\n\t\t\tSubjectKindId: 0,\r\n\t\t\tSubjectStatusId: 0,\r\n\t\t\tFilterByOwners: this._filterByOwners,\r\n\t\t\tSubQueryGuid: subGrid ? subGrid.Model.SubQueryGuid : null,\r\n\t\t\tFastFilters: this._baseGrid() ? this._baseGrid().FilterSaveModels.filter((filter) => filter.Values.length)\r\n\t\t\t\t.map((filter) => {\r\n\t\t\t\t\t\t\t\tfilter.Values.forEach(value => {\r\n\t\t\t\t\t\t\t\t\tif (value.DisplayValue === LABELS.EMPTY_VALUE) {\r\n\t\t\t\t\t\t\t\t\t\tvalue.DisplayValue = 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\treturn {\r\n\t\t\t\t\t\t\t\t\tFieldAlias: filter.FieldAlias,\r\n\t\t\t\t\t\t\t\t\tValues: filter.Values,\r\n\t\t\t\t\t\t\t\t\tTimeZone: (new Date().getTimezoneOffset()) / 60\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t}) : []\r\n\t\t};\r\n\t\tthis.BlockUI();\r\n\t\tGridStore.GetData(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnblockUI();\r\n\t\t\t})\r\n\t\t\t.then(data => {\r\n\t\t\t\tif(subGrid){\r\n\t\t\t\t\tsubGrid.SetData(data, restoreState);\r\n\t\t\t\t\tsubGrid.SetRecordsPerPage(this._toolbar.Paginator().RecordsPerPage);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis._baseGrid().SetGridDataModel(requestModel);\r\n\t\t\t\t\tthis.SetGridData(data, restoreState);\r\n\t\t\t\t};\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tconst notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate SetGridData(gridData: GridDataModel, restoreState: boolean) {\r\n\t\tif (this._isDesktop) {\r\n\t\t\t_.each(gridData.Columns, (column) => {\r\n\t\t\t\tcolumn.DisplayPriority = 0;\r\n\t\t\t});\r\n\t\t\t_.each(gridData.Rows, (row) => {\r\n\t\t\t\t_.each(row.Data, (dataCell) => {\r\n\t\t\t\t\tdataCell.DisplayPriority = 0;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._paginator.TotalRecords = gridData.TotalRecords;\r\n\t\tthis._baseGrid().SetData(gridData, restoreState, this.GetGridPriorityToggle());\r\n\t\tthis._baseGrid().IsReady = true;\r\n\t}\r\n\r\n\tset RecordId(value: number) {\r\n\t\tthis._recordId = value;\r\n\t}\r\n\r\n\tprivate GoToScreen(linkInfo) {\r\n UserVarsManager.Instance.AddRecent(linkInfo.EntityId, linkInfo.RecordId, linkInfo.RecordTypeId);\r\n Lockr.set(LOCAL_STORAGE.HYPERLINK_SOURCE, linkInfo.EntityId);\r\n\r\n linkInfo.IsOpenInModal = true;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, linkInfo);\r\n }\r\n\r\n private OnHyperLink(linkInfo) {\r\n this.GoToScreen(linkInfo);\r\n }\r\n}","export const EVENTS = {\r\n\tENTITY_SELECTED: 'ENTITY_SELECTED'\r\n}","import * as _ from 'underscore';\r\nimport { TableSecurityUnitModel } from 'QueryBuilder/Models/TableSecurityUnitModel';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { ENTITY_COLORS } from 'QueryBuilder/Constants';\r\nimport Template from 'QueryBuilder/QueryBootstrap/Templates/QueryBootstrap.html';\r\nimport { EVENTS } from 'QueryBuilder/QueryBootstrap/Events';\r\n\r\nexport class QueryBootstrap extends Event {\r\n\tprivate _entities: Array<TableSecurityUnitModel>;\r\n\r\n\r\n\tconstructor(entities: Array<TableSecurityUnitModel>) {\r\n\t\tsuper();\r\n\t\tthis._entities = _.filter(entities, (entity)=>{\r\n\t\t\treturn !entity.Name.startsWith('SYS_');\r\n\t\t});\r\n\r\n\t\tthis.AddEvent(EVENTS.ENTITY_SELECTED);\r\n\t\tthis.InitDropdownEvents();\r\n\t}\r\n\r\n\tget BackgroundColor(): string {\r\n\t\treturn ENTITY_COLORS.MAIN_ENTITY;\r\n\t}\r\n\r\n\tprivate InitDropdownEvents() {\r\n\t\tsetTimeout(() => {\r\n\t\t\t$('#entitiesDropdownQueryBootstrap').on('show.bs.dropdown', function () {\r\n\t\t\t\tconst styling: any = {\r\n\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\tleft: 0\r\n\t\t\t\t};\r\n\t\t\t\tconst $dropdownMenu = $('#entitiesDropdownQueryBootstrap .dropdown-menu');\r\n\t\t\t\tstyling.top = 43;\r\n\t\t\t\tstyling['box-shadow'] = '5px 5px rgba(102, 102, 102, 0.5)';\r\n\t\t\t\t$dropdownMenu.css(styling).addClass('queryBuilderDropdown');\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tSelectEntity(entity: TableSecurityUnitModel) {\r\n\t\tthis.Trigger(EVENTS.ENTITY_SELECTED, { EntityId: entity.Id });\r\n\t\t$('.jBox-content').css('overflow', 'auto');\r\n\r\n\t}\r\n}","// Module\nvar code = \"<div id=\\\"entitiesDropdownQueryBootstrap\\\" style=\\\"width:50px;height:40px!important;position:absolute;top:20px;left:20px;cursor:pointer\\\" class=\\\"box-shadow--6dp\\\"> <div data-bind=\\\"css: BackgroundColor\\\" class=\\\"panel start-query-btn\\\" style=\\\"height:40px!important\\\" data-toggle=\\\"dropdown\\\"> <i class=\\\"fa fa-table start-icon\\\" aria-hidden=\\\"true\\\"></i> </div> <div class=\\\"dropdown-menu dropdown-checkboxes\\\" role=\\\"menu\\\"> <div data-bind=\\\"preventBubble: ['mousewheel', 'DOMMouseScroll']\\\" style=\\\"max-height:300px;overflow-y:scroll\\\"> <!-- ko foreach: _entities --> <label data-bind=\\\"click: $parent.SelectEntity.bind($parent, $data)\\\" style=\\\"cursor:pointer;white-space:nowrap\\\"> <!-- ko text: NameTranslation || Name --><!-- /ko --> </label> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import { FieldMetadataModel } from \"Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel\";\r\n\r\nexport class DisplayField{\r\n private _field: FieldMetadataModel;\r\n\r\n constructor(field: FieldMetadataModel){\r\n this._field = field;\r\n }\r\n\r\n get Title(): string{\r\n return `${this._field.NameTranslation || this._field.Name}`;\r\n }\r\n\r\n get Id(): number{\r\n return this._field.Id;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { AGGREGATE_FUNCTIONS } from 'QueryBuilder/Constants';\r\nimport { DisplayField } from './DisplayField';\r\nimport { FIELD_TYPES } from 'Core/Constant';\r\n\r\nvar FieldTypesToAggregate = {\r\n\tYesNo: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tText: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tCurrency: [AGGREGATE_FUNCTIONS.COUNT, AGGREGATE_FUNCTIONS.SUM, AGGREGATE_FUNCTIONS.MIN, AGGREGATE_FUNCTIONS.MAX, AGGREGATE_FUNCTIONS.AVG],\r\n\tDate: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tDateTime: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tInteger: [AGGREGATE_FUNCTIONS.COUNT, AGGREGATE_FUNCTIONS.SUM, AGGREGATE_FUNCTIONS.MIN, AGGREGATE_FUNCTIONS.MAX, AGGREGATE_FUNCTIONS.AVG],\r\n\tBinary: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tGuid: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tDocument: [],\r\n\tImage: [],\r\n\tRadio: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tMultiSelect: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tIcon: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tType: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tTime: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tPKey: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tFlagCheck: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tLookup: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tSort: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tMemo: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tPassword: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tColor: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tDecimal: [AGGREGATE_FUNCTIONS.COUNT, AGGREGATE_FUNCTIONS.SUM, AGGREGATE_FUNCTIONS.MIN, AGGREGATE_FUNCTIONS.MAX, AGGREGATE_FUNCTIONS.AVG],\r\n\tAlias: [AGGREGATE_FUNCTIONS.COUNT]\r\n}\r\n\r\nconst RELATION_TYPE_VALUE = 'F_RELATIONTYPEVALUE';\r\nconst DELETED_STATUS = 'Delete';\r\n\r\nexport class FieldInfo {\r\n\tprivate _isCrossRow: KnockoutObservable<boolean>;\r\n\tprivate _functions: Array<string>;\r\n\tprivate _function: KnockoutObservable<string>;\r\n\r\n\tprivate _displayFields: KnockoutObservableArray<DisplayField>;\r\n\tprivate _selectedDisplayFieldsId: KnockoutObservableArray<number>;\r\n\r\n\r\n\tconstructor(\r\n\t\tpublic Column?: QueryColumnModel,\r\n\t\tpublic Entity?: QueryEntityModel,\r\n\t) {\r\n\t\tthis._displayFields = ko.observableArray([]);\r\n\t\tthis._selectedDisplayFieldsId = ko.observableArray([]);\r\n\r\n\t\tthis._isCrossRow = ko.observable(Column.IsCrossRow);\r\n\t\tthis._isCrossRow.subscribe((newValue) => {\r\n\t\t\tthis.Column.IsCrossRow = newValue;\r\n\t\t});\r\n\r\n\t\tthis._functions = FieldTypesToAggregate[this.Column.Metadata.Type];\r\n\t\tthis._function = ko.observable(this.Column.AggregateFunction);\r\n\r\n\t\tthis._function.subscribe((newValue) => { this.Column.AggregateFunction = newValue; });\r\n\r\n\t\t_.each(this.Entity?.Metadata.Fields, f=>{\r\n\t\t\tif(f.Id != this.Column.Metadata.Id && f.IsCustom && f.Name != RELATION_TYPE_VALUE && f.LifestatusName !== DELETED_STATUS && f.Type !== FIELD_TYPES.Sort){\r\n\t\t\t\tlet displayField = new DisplayField(f);\r\n\t\t\t\tthis._displayFields.push(displayField);\r\n\r\n\t\t\t\tif(this.Column.DisplayFields.indexOf(f.Id)>=0){\r\n\t\t\t\t\tthis._selectedDisplayFieldsId.push(displayField.Id);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._selectedDisplayFieldsId.subscribe((newValue)=>{\r\n\t\t\tthis.Column.DisplayFields = newValue\r\n\t\t});\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\tvar entityName = `${this.Entity.Metadata.NameTranslation || this.Entity.Metadata.Name}`;\r\n\t\tif (this.Entity.Index > 1) {\r\n\t\t\tentityName = `${entityName}${this.Entity.Index}`;\r\n\t\t}\r\n\r\n\t\treturn `${entityName}.${this.Column.Metadata.NameTranslation || this.Column.Metadata.Name}`;\r\n\t}\r\n\r\n\tget IsCrossRow(): KnockoutObservable<boolean> {\r\n\t\treturn this._isCrossRow;\r\n\t}\r\n\r\n\tget Functions(): Array<string> {\r\n\t\treturn this._functions;\r\n\t}\r\n\r\n\tget Function(): KnockoutObservable<string> {\r\n\t\treturn this._function;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"table-view-config clearfix\\\"> <input data-bind=\\\"bootstrapSwitch: {\\r\\n\\t\\t\\t\\t\\t\\tvalue: IsCrossTable,\\r\\n\\t\\t\\t\\t\\t\\tonText: $data._labels.ON,\\r\\n\\t\\t\\t\\t\\t\\toffText: $data._labels.OFF,\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\tattr: {\\r\\n\\t\\t\\t\\t\\t\\t\\t'data-on-text': $data._labels.ON,\\r\\n\\t\\t\\t\\t\\t\\t\\t'data-off-text': $data._labels.OFF }\\\" data-handle-width=\\\"36px\\\" data-label-width=\\\"36px\\\" type=\\\"checkbox\\\" class=\\\"make-personal-record-switch make-switch\\\"> <table class=\\\"table table-striped table-bordered table-advance flip-content\\\"> <thead class=\\\"flip-content\\\"> <tr> <th style=\\\"cursor:pointer\\\"></th> <!-- ko foreach: Fields --> <th data-bind=\\\"text: Title\\\" style=\\\"cursor:pointer\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <tr> <td style=\\\"text-align:left\\\"><b><!-- ko text: $data._labels.ROW_LABEL --><!-- /ko --></b></td> <!-- ko foreach: Fields --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"checked: $data.IsCrossRow, enable: $parent.IsCrossTable\\\" name=\\\"crossTableRow\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> </tr> <tr> <td style=\\\"text-align:left\\\"><b><!-- ko text: $data._labels.COLUMN --><!-- /ko --></b></td> <!-- ko foreach: Fields --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"checkedValue: $data, checked: $parent.CrossColumn, enable: $parent.IsCrossTable\\\" name=\\\"crossTableColumn\\\" type=\\\"radio\\\"> </td> <!-- /ko --> </tr> <tr> <td style=\\\"text-align:left\\\"><b><!-- ko text: $data._labels.VALUE --><!-- /ko --></b></td> <!-- ko foreach: Fields --> <td class=\\\"crossTableMultipleWrapper\\\" style=\\\"text-align:center\\\"> <input data-bind=\\\"checkedValue: $data, checked: $parent.CrossValue, enable: $parent.IsCrossTable\\\" name=\\\"crossTableValue\\\" type=\\\"radio\\\"> <!-- ko if: $data === $parent.CrossValue() --> <select data-bind=\\\"options: $data.Functions, value: $data.Function, enable: $parent.IsCrossTable\\\"></select> <br> <select multiple=\\\"multiple\\\" data-bind=\\\"options: $data._displayFields,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsText: 'Title',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsValue: 'Id',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tselectedOptions : $data._selectedDisplayFieldsId,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmultiselect: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tbuttonWidth: '175px',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmaxHeight: 120,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tbuttonClass: 'btn btn-default btn-multiselect',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinheritClass: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tnonSelectedText: 'Select an option',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdropRight: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tincludeSelectAllOption: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tselectAllText: 'Select all'}\\\"></select> <!-- /ko --> </td> <!-- /ko --> </tr> <tr> <td style=\\\"text-align:left\\\"><b><!-- ko text: $data._labels.WRAP_FROM_HERE --><!-- /ko --></b></td> <!-- ko foreach: Fields --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"checkedValue: $data, checked: $parent.CrossWrapped, enable: $parent.IsCrossTable\\\" name=\\\"crossWrapped\\\" type=\\\"radio\\\"> </td> <!-- /ko --> </tr> </tbody> </table> <!-- ko with: $data._clusteredConfig --> <!-- ko if: $data._relationTypes().length > 0 --> <table class=\\\"table table-striped table-bordered table-advance flip-content\\\"> <thead class=\\\"flip-content\\\"> <tr> <th></th> <th data-bind=\\\"text: $data._labels.EDIT\\\"></th> <th data-bind=\\\"text: $data._labels.ARROW\\\"></th> </tr> </thead> <tbody> <!-- ko foreach: $data._relationTypes --> <tr> <td style=\\\"text-align:left\\\" data-bind=\\\"text: $data.FullName\\\"></td> <td><input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.ShowEditRelationButton\\\"></td> <td><input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.ShowNexRelationButton\\\"></td> </tr> <!-- /ko --> </tbody> </table> <!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\n\r\nimport { FieldInfo } from 'QueryBuilder/CrossTableConfig/FieldInfo';\r\nimport { RelationTypeValueModel } from 'QueryBuilder/Models/RelationTypeValueModel';\r\nimport { QueryBuilderStore } from 'QueryBuilder/Stores/QueryBuilderStore';\r\nimport { CrossValueSettingsModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport class CrossValueConfig{\r\n private _field: FieldInfo;\r\n private _relationTypes: KnockoutObservableArray<RelationTypeValueModel>;\r\n private _labels = LABELS;\r\n\r\n constructor(field: FieldInfo){\r\n this._field = field;\r\n this._relationTypes = ko.observableArray([]);\r\n\r\n (async () => await this.LoadTypes())();\r\n }\r\n\r\n async LoadTypes(){\r\n if(!this._field) return;\r\n \r\n\t\tlet relationTypes = await QueryBuilderStore.GetRelationTypes({ LinkTableId: this._field.Entity.Metadata.Id });\r\n\r\n _.each(relationTypes, (type)=>{\r\n let config = _.find(this._field.Column.CrossValueSettings, (setting) => setting.RelationTypeValueId === type.RelationTypeValueId);\r\n \r\n if(config){\r\n type.ShowEditRelationButton(config.ShowEditRelationButton);\r\n type.ShowNexRelationButton(config.ShowNexRelationButton);\r\n }else{\r\n type.ShowEditRelationButton(true);\r\n type.ShowNexRelationButton(true);\r\n }\r\n\r\n if(!config){\r\n config = new CrossValueSettingsModel({ RelationTypeValueId: type.RelationTypeValueId, ShowNexRelationButton: true, ShowEditRelationButton: true });\r\n this._field.Column.CrossValueSettings.push(config);\r\n } \r\n\r\n type.ShowEditRelationButton.subscribe((newValue)=>{\r\n config.ShowEditRelationButton = newValue;\r\n });\r\n\r\n type.ShowNexRelationButton.subscribe((newValue)=>{\r\n config.ShowNexRelationButton = newValue;\r\n });\r\n\r\n });\r\n\r\n this._relationTypes(relationTypes);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { FIELD_TYPES } from 'Core/Constant';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { AGGREGATE_FUNCTIONS } from 'QueryBuilder/Constants';\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport { FieldInfo } from 'QueryBuilder/CrossTableConfig/FieldInfo';\r\n\r\nimport Template from 'QueryBuilder/CrossTableConfig/Templates/CrossTableConfig.html';\r\nimport { QueryBuilderStore } from 'QueryBuilder/Stores/QueryBuilderStore';\r\nimport { CrossValueConfig } from './ClusteredConfig';\r\n\r\nexport class CrossTableConfig{\r\n\tprivate _expressionModel: QueryExpressionModel;\r\n\tprivate _fields: KnockoutObservableArray<FieldInfo>;\r\n\tprivate _crossColumn: KnockoutObservable<FieldInfo>;\r\n\tprivate _crossValue: KnockoutObservable<FieldInfo>;\r\n\tprivate _crossWrapped: KnockoutObservable<FieldInfo>;\r\n\r\n\tprivate _isCrossTable: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\tprivate _clusteredConfig: KnockoutObservable<CrossValueConfig>;\r\n\r\n\tconstructor() {\r\n\t\tthis._fields = ko.observableArray([]);\r\n\t\tthis._crossColumn = ko.observable(null);\r\n\t\tthis._crossValue = ko.observable(null);\r\n\t\tthis._crossWrapped = ko.observable(null);\r\n\t\tthis._clusteredConfig = ko.observable(null);\r\n\r\n\t\tthis._isCrossTable = ko.observable(false);\r\n\r\n\t\tthis._isCrossTable.subscribe((newValue) => { this._expressionModel.IsCrossTable = newValue; });\r\n\r\n\t\tthis._crossWrapped.subscribe((newValue) => {\r\n\t\t\t_.each(this._fields(), (item: FieldInfo) => { item.Column.IsCrossWrapped = false; });\r\n\t\t\tif (newValue) {\r\n\t\t\t\tnewValue.Column.IsCrossWrapped = true;\r\n\t\t\t\tif (newValue === this._crossValue()) {\r\n\t\t\t\t\tthis._crossValue(null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newValue === this._crossColumn()) {\r\n\t\t\t\t\tthis._crossColumn(null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnewValue.IsCrossRow(false);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._crossColumn.subscribe((newValue) => {\r\n\t\t\t_.each(this._fields(), (item: FieldInfo) => { item.Column.IsCrossColumn = false; });\r\n\t\t\tif (newValue) {\r\n\t\t\t\tnewValue.Column.IsCrossColumn = true;\r\n\t\t\t\tif (newValue === this._crossValue()) {\r\n\t\t\t\t\tthis._crossValue(null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newValue === this._crossWrapped()) {\r\n\t\t\t\t\tthis._crossWrapped(null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnewValue.IsCrossRow(false);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._crossValue.subscribe(async (newValue) => {\r\n\t\t\t_.each(this._fields(), (item: FieldInfo) => { item.Column.IsCrossValue = false; });\r\n\t\t\tif (newValue) {\r\n\t\t\t\tnewValue.Column.IsCrossValue = true;\r\n\t\t\t\tif (newValue === this._crossColumn()) {\r\n\t\t\t\t\tthis._crossColumn(null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newValue === this._crossWrapped()) {\r\n\t\t\t\t\tthis._crossWrapped(null);\r\n\t\t\t\t}\r\n\t\t\t\tnewValue.IsCrossRow(false);\r\n\t\t\t}\r\n\r\n\t\t\tthis._clusteredConfig(new CrossValueConfig(newValue));\r\n\t\t\t\r\n\t\t});\r\n\t}\r\n\r\n\tset ExpressionModel(expressionModel: QueryExpressionModel) {\r\n\t\tthis._expressionModel = expressionModel;\r\n\t\tthis._isCrossTable(this._expressionModel.IsCrossTable);\r\n\t}\r\n\r\n\tget CrossColumn(): KnockoutObservable<FieldInfo> {\r\n\t\treturn this._crossColumn;\r\n\t}\r\n\r\n\tget CrossValue(): KnockoutObservable<FieldInfo> {\r\n\t\treturn this._crossValue;\r\n\t}\r\n\r\n\tget CrossWrapped(): KnockoutObservable<FieldInfo> {\r\n\t\treturn this._crossWrapped;\r\n\t}\r\n\r\n\tget IsCrossTable(): KnockoutObservable<boolean> {\r\n\t\treturn this._isCrossTable;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tUpdate() {\r\n\t\tlet fields = [];\r\n\t\tlet queryEntities = Util.GetAllQueryEntities(this._expressionModel);\r\n\t\t_.each(queryEntities,\r\n\t\t\tentity => {\r\n\t\t\t\t_.each(entity.Columns,\r\n\t\t\t\t\tcolumn => {\r\n\t\t\t\t\t\tif(column.Metadata.Type) {\r\n\t\t\t\t\t\t\tlet field = new FieldInfo(column, entity);\r\n\t\t\t\t\t\t\t\tfields.push(field);\r\n\t\t\t\t\t\t\t\tfield.IsCrossRow.subscribe((newValue) => {\r\n\t\t\t\t\t\t\t\t\tif (newValue) {\r\n\t\t\t\t\t\t\t\t\t\tif (field === this._crossColumn()) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis._crossColumn(null);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (field === this._crossValue()) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis._crossValue(null);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (field === this._crossWrapped()) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis._crossWrapped(null);\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});\r\n\t\t\t});\r\n\r\n\t\tfields = _.sortBy(fields, (fieldModel: FieldInfo) => { return fieldModel.Column.DisplayOrder; });\r\n\r\n\t\tthis._fields(fields);\r\n\t\tthis._crossColumn(_.find(fields, (item: FieldInfo) => { return item.Column.IsCrossColumn }));\r\n\t\tthis._crossValue(_.find(fields, (item: FieldInfo) => { return item.Column.IsCrossValue }));\r\n\t\tthis._crossWrapped(_.find(fields, (item: FieldInfo) => { return item.Column.IsCrossWrapped }));\r\n\t}\r\n\r\n\tget Fields(): KnockoutObservableArray<FieldInfo> {\r\n\t\treturn this._fields;\r\n\t}\r\n\r\n\tValidate() {\r\n\r\n\t}\r\n}","import { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class PrimaryKeyField {\r\n\tprivate _queryEntity: QueryEntityModel;\r\n\tprivate _fieldMetadata: FieldMetadataModel;\r\n\r\n\tconstructor(queryEntity: QueryEntityModel, fieldMetadata: FieldMetadataModel) {\r\n\t\tthis._queryEntity = queryEntity;\r\n\t\tthis._fieldMetadata = fieldMetadata;\r\n\t}\r\n\r\n\t@enumerable get Title(): string {\r\n\t\tvar entityName = this._queryEntity.Metadata.NameTranslation || this._queryEntity.Metadata.Name;\r\n\r\n\t\tif (this._queryEntity.Index > 1) {\r\n\t\t\tentityName = `${entityName}${this._queryEntity.Index}`;\r\n\t\t}\r\n\r\n\t\treturn `${entityName}.${this._fieldMetadata.NameTranslation || this._fieldMetadata.Name}`;\r\n\t}\r\n\r\n\t@enumerable get FieldMetadata() {\r\n\t\treturn this._fieldMetadata;\r\n\t}\r\n\r\n\t@enumerable get EntityMetadata() {\r\n\t\treturn this._queryEntity.Metadata;\r\n\t}\r\n\r\n\t@enumerable get QueryEntityGuid() {\r\n\t\treturn this._queryEntity.Guid;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"portlet light\\\"> <div class=\\\"portlet-body\\\"> <form class=\\\"form-horizontal\\\"> <div class=\\\"control-group\\\"> <div class=\\\"controls form-inline\\\"> <label data-bind=\\\"text: _labels.CUSTOM_SCREEN + ':'\\\" for=\\\"screenLookup\\\" class=\\\"control-label\\\"></label> <select id=\\\"screenLookup\\\" data-bind=\\\"options: _screens,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t optionsCaption: _labels.SELECT_CUSTOM_SCREEN,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t optionsText: 'Name',\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t optionsAfterRender: $data.OptionAfterRender.bind($data),\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t value: _selectedScreen\\\" class=\\\"form-control control record-field drop-down\\\"></select> <a data-bind=\\\"click: $data.Clear.bind($data)\\\" href=\\\"#\\\" class=\\\"btn red\\\"> <i class=\\\"fa fa-remove\\\"></i> </a> </div> <div class=\\\"controls form-inline\\\"> <label for=\\\"showInMenu\\\" class=\\\"control-label\\\" data-bind=\\\"text: _labels.SHOW_IN_MENU\\\"></label> <input id=\\\"showInMenu\\\" data-bind=\\\"uniform: _showInMenu, checked: _showInMenu\\\" type=\\\"checkbox\\\"> </div> </div> <!-- ko foreach: _genericButtons --> <div class=\\\"control-group\\\"> <div class=\\\"controls form-inline\\\"> <label data-bind=\\\"text: $data.Name + ':'\\\" for=\\\"primaryKeyLookup\\\" class=\\\"control-label\\\"></label> <select id=\\\"primaryKeyLookup\\\" data-bind=\\\"options: $parents[0]._primaryKeyFields,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t \\t\\t optionsCaption: 'Default',\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t \\t\\t optionsText: 'Title',\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t \\t\\t value: $parents[0]._genericButtonToFieldValue[$data.Id]\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\\" class=\\\"form-control control record-field drop-down\\\"></select> </div> </div> <!-- /ko --> </form> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryBuilderStore } from 'QueryBuilder/Stores/QueryBuilderStore';\r\nimport { QueryScreenModel } from 'QueryBuilder/Models/QueryScreenModel';\r\nimport { GenericButtonModel } from 'QueryBuilder/Models/GenericButtonModel';\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport {PrimaryKeyField} from 'QueryBuilder/QueryScreen/PrimaryKeyField';\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\n\r\nimport Template from 'QueryBuilder/QueryScreen/Templates/QueryScreen.html';\r\nimport {GenericButtonConfigModel} from \"../../Core/Controls/Grid/Models/GridDataModel/QueryExpression/GenericButtonConfigModel\";\r\n\r\n\r\nexport class QueryScreen {\r\n\tprivate _expressionModel: QueryExpressionModel;\r\n\tprivate _labels = LABELS;\r\n\tprivate _subjectEntityId: number;\r\n\tprivate _screens: KnockoutObservableArray<QueryScreenModel>;\r\n\tprivate _showInMenu: KnockoutObservable<boolean>;\r\n\tprivate _genericButtons: KnockoutObservableArray<GenericButtonModel>;\r\n\tprivate _selectedScreen: KnockoutObservable<QueryScreenModel>;\r\n\tprivate _primaryKeyFields: KnockoutObservableArray<PrimaryKeyField>;\r\n\tprivate _genericButtonToFieldValue: any;\r\n\r\n\tconstructor() {\r\n\t\tthis._screens = ko.observableArray([]);\r\n\t\tthis._showInMenu = ko.observable(false);\r\n\t\tthis._genericButtons = ko.observableArray([]);\r\n\t\tthis._selectedScreen = ko.observable(null);\r\n\t\tthis._primaryKeyFields = ko.observableArray([]);\r\n\t\tthis._genericButtonToFieldValue = {};\r\n\r\n\t\tthis._selectedScreen.subscribe((newValue) => {\r\n\t\t\tif (this._expressionModel) {\r\n\t\t\t\tif (newValue) {\r\n\t\t\t\t\tthis._expressionModel.QueryScreenId = newValue.Id;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._expressionModel.QueryScreenId = null;\r\n\t\t\t\t}\r\n\t\t\t\tthis.UpdateGenericButtonList();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tset ExpressionModel(value: QueryExpressionModel) {\r\n\t\tthis._expressionModel = value;\r\n\t}\r\n\r\n\tset SubjectEntityId(value: number) {\r\n\t\tthis._subjectEntityId = value;\r\n\t}\r\n\r\n\tget ShowInMenu() {\r\n\t\treturn this._showInMenu();\r\n\t}\r\n\r\n\tset ShowInMenu(value: boolean) {\r\n\t\tthis._showInMenu(value);\r\n\t}\r\n\r\n\tUpdate() {\r\n\t\tBlockUI.Block();\r\n\t\tQueryBuilderStore.GetQueryScreens({ EntityId: this._subjectEntityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((screens) => {\r\n\t\t\t\tthis._screens(screens);\r\n\t\t\t\tlet selectedScreen = _.find(this._screens(), (screen) => {\r\n\t\t\t\t\treturn screen.Id === this._expressionModel.QueryScreenId;\r\n\t\t\t\t});\r\n\t\t\t\tif (selectedScreen) {\r\n\t\t\t\t\tthis._selectedScreen(selectedScreen);\r\n\t\t\t\t}\r\n\t\t\t\tthis.UpdateGenericButtonList();\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate UpdateGenericButtonList(){\r\n\t\tthis._genericButtons([]);\r\n\t\tthis._genericButtonToFieldValue = {};\r\n\t\tif(this._selectedScreen()) {\r\n\t\t\tlet allEntities = Util.GetAllQueryEntities(this._expressionModel);\r\n\t\t\tlet primaryKeyFields = [];\r\n\t\t\t_.each(allEntities, (item) => {\r\n\t\t\t\t_.each(item.Metadata.Fields, (field) => {\r\n\t\t\t\t\tif (field.Type === FIELD_TYPES.PKey) {\r\n\t\t\t\t\t\tprimaryKeyFields.push(new PrimaryKeyField(item, field));\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_.each(this._selectedScreen().GenericButtons, (button)=>{\r\n\t\t\t\tlet fieldValue = ko.observable(null);\r\n\r\n\t\t\t\tlet genericButtonConfig = _.find(this._expressionModel.GenericButtonConfigs, (config) => {\r\n\t\t\t\t\treturn config.GenericButtonId === button.Id;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(genericButtonConfig){\r\n\t\t\t\t\tlet pkField = _.find(primaryKeyFields, (field: PrimaryKeyField) => {\r\n\t\t\t\t\t\treturn field.FieldMetadata.Id === genericButtonConfig.FieldId;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(pkField){\r\n\t\t\t\t\t\tfieldValue(pkField);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfieldValue.subscribe((newValue: PrimaryKeyField) => {\r\n\t\t\t\t\tthis.UpdateGenericButtonConfig(newValue, button);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._genericButtonToFieldValue[button.Id] = fieldValue;\r\n\t\t\t});\r\n\r\n\t\t\tthis._primaryKeyFields(primaryKeyFields);\r\n\t\t\tthis._genericButtons(this._selectedScreen().GenericButtons);\r\n\r\n\t\t}else {\r\n\t\t\tthis._expressionModel.GenericButtonConfigs = [];\r\n\t\t}\r\n\t}\r\n\r\n\tUpdateGenericButtonConfig(field: PrimaryKeyField, genericButton: GenericButtonModel){\r\n\t\tlet value = _.find(this._expressionModel.GenericButtonConfigs, (item)=> {\r\n\t\t\treturn item.GenericButtonId === genericButton.Id;\r\n\t\t});\r\n\r\n\t\tif(field){\r\n\t\t\tif(value){\r\n\t\t\t\tvalue.FieldId = field.FieldMetadata.Id;\r\n\t\t\t\tvalue.QueryEntityGuid = field.QueryEntityGuid;\r\n\t\t\t\tvalue.EntityId = field.EntityMetadata.Id;\r\n\t\t\t}else{\r\n\t\t\t\tlet config = new GenericButtonConfigModel();\r\n\t\t\t\tconfig.GenericButtonId = genericButton.Id;\r\n\t\t\t\tconfig.FieldId = field.FieldMetadata.Id;\r\n\t\t\t\tconfig.QueryEntityGuid = field.QueryEntityGuid;\r\n\t\t\t\tconfig.EntityId = field.EntityMetadata.Id;\r\n\t\t\t\tthis._expressionModel.GenericButtonConfigs.push(config);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(value){\r\n\t\t\t\tthis._expressionModel.GenericButtonConfigs.splice(this._expressionModel.GenericButtonConfigs.indexOf(value), 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tOptionAfterRender(option, item) {\r\n\t\tif (!item) {\r\n\t\t\tko.applyBindingsToNode(option, { disable: true }, item);\r\n\t\t}\r\n\t}\r\n\r\n\tClear() {\r\n\t\tthis._selectedScreen(null);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryBuilderStore } from 'QueryBuilder/Stores/QueryBuilderStore';\r\nimport { CardScreenModel } from 'QueryBuilder/Models/CardScreenModel';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\n\r\nimport Template from 'QueryBuilder/TemplateScreen/Templates/TemplateScreen.html';\r\n\r\nexport class TemplateScreen {\r\n\tprivate _expressionModel: QueryExpressionModel;\r\n\tprivate _labels = LABELS;\r\n\tprivate _subjectEntityId: number;\r\n\tprivate _screens: KnockoutObservableArray<CardScreenModel>;\r\n\tprivate _selectedScreen: KnockoutObservable<CardScreenModel>;\r\n\r\n\tprivate _showInPortlet: KnockoutObservable<boolean>;\r\n\tprivate _queryTypeName: ViewModes;\r\n\r\n\tconstructor(queryType: ViewModes) {\r\n\t\tthis._queryTypeName = queryType;\r\n\t\tthis._screens = ko.observableArray([]);\r\n\t\tthis._selectedScreen = ko.observable(null);\r\n\t\tthis._showInPortlet = ko.observable(false);\r\n\r\n\t\tthis._selectedScreen.subscribe((newValue) => {\r\n\t\t\tif (this._expressionModel) {\r\n\t\t\t\tif (newValue) {\r\n\t\t\t\t\tthis._expressionModel.CardScreenId = newValue.Id;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._expressionModel.CardScreenId = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tget IsEnabledShowInPortletCheckBox(): boolean{\r\n\t\treturn this._queryTypeName === ViewModes.ListView;\r\n\t}\r\n\r\n\tset ExpressionModel(value: QueryExpressionModel) {\r\n\t\tthis._expressionModel = value;\r\n\t}\r\n\r\n\tset SubjectEntityId(value: number) {\r\n\t\tthis._subjectEntityId = value;\r\n\t}\r\n\r\n\tUpdate() {\r\n\t\tBlockUI.Block();\r\n\t\tQueryBuilderStore.GetCardScreens({ EntityId: this._subjectEntityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((screens) => {\r\n\t\t\t\tthis._screens(screens);\r\n\t\t\t\tlet selectedScreen = _.find(this._screens(), (screen) => {\r\n\t\t\t\t\treturn screen.Id === this._expressionModel.CardScreenId;\r\n\t\t\t\t});\r\n\t\t\t\tif (selectedScreen) {\r\n\t\t\t\t\tthis._selectedScreen(selectedScreen);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tOptionAfterRender(option, item) {\r\n\t\tif (!item) {\r\n\t\t\tko.applyBindingsToNode(option, { disable: true }, item);\r\n\t\t}\r\n\t}\r\n\r\n\tClear() {\r\n\t\tthis._selectedScreen(null);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\tget ShowInPotlet() {\r\n\t\treturn this._showInPortlet();\r\n\t}\r\n\r\n\tset ShowInPotlet(value: boolean) {\r\n\t\tthis._showInPortlet(value);\r\n\t}\r\n\r\n}","// Module\nvar code = \"<div class=\\\"portlet light\\\"> <div class=\\\"portlet-body\\\"> <form class=\\\"form-horizontal\\\"> <div class=\\\"control-group\\\"> <div class=\\\"controls form-inline\\\"> <label data-bind=\\\"text: _labels.TEMPLATE_SCREEN\\\" for=\\\"screenLookup\\\" class=\\\"control-label\\\"></label> <select data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: _screens,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsCaption: _labels.SELECT_TEMPLATE_SCREEN,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsText: 'Name',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsAfterRender: $data.OptionAfterRender.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: _selectedScreen\\\" class=\\\"form-control control record-field drop-down\\\"></select> <a data-bind=\\\"click: $data.Clear.bind($data)\\\" href=\\\"#\\\" class=\\\"btn red\\\"> <i class=\\\"fa fa-remove\\\"></i> </a> <!-- ko if: IsEnabledShowInPortletCheckBox --> <div class=\\\"controls form-inline\\\"> <label for=\\\"showInPortlet\\\" class=\\\"control-label\\\" data-bind=\\\"text: _labels.SHOW_IN_PORTLET\\\"></label> <input id=\\\"showInPortlet\\\" data-bind=\\\"uniform: _showInPortlet, checked: _showInPortlet\\\" type=\\\"checkbox\\\"> </div> <!-- /ko --> </div> </div> </form> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._loadInProgres, css: {'bordered': !_isDesktop(), 'light': !_isDesktop(), 'page-content': _isDesktop()}\\\" class=\\\"portlet queryBuilderContainer\\\" style=\\\"padding:12px 20px 15px 20px!important\\\"> <div class=\\\"portlet-title\\\" data-bind=\\\"css: {'actionBarSubForm': _isDesktop()}\\\"> <a data-bind=\\\"css: { disabled: !_hasData() }, click: $data.SaveQuery.bind($data), visible: _isEmbedded\\\" href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --> </a> <a data-bind=\\\" click: $data.Cancel.bind($data), visible: _isEmbedded\\\" href=\\\"javascript:;\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\"> <i class=\\\"fa fa-close\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a> <div class=\\\"caption\\\"></div> <div class=\\\"actions\\\"> <a class=\\\"btn btn-circle btn-icon-only btn-default fullscreen\\\" href=\\\"javascript:;\\\" data-original-title=\\\"\\\" title=\\\"\\\"> </a> </div> </div> <div class=\\\"portlet-body\\\" data-bind=\\\"css: {'box-shadow-wrapper': _isDesktop()}\\\"> <!-- ko if: _isEmbedded() && ShowQueryName --> <form class=\\\"form\\\"> <div class=\\\"form-group\\\"> <label> <b>Name</b> </label> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: _queryName, visible: _isEmbedded\\\" type=\\\"text\\\" class=\\\"subFormControl serch-inline-input input-medium query-name\\\" style=\\\"width:200px!important\\\"> <!-- ko with: _translationFieldEditor --> <div data-bind=\\\"css: { 'is-mobile': $parent._isMobile }\\\" class=\\\"translation-container\\\"> <a class=\\\"btn btn-secondary translation-list\\\" data-bind=\\\"click: $parent.ToggleTranslations.bind($parent)\\\"> <!--ko with: _activeTranslationItem--> <!--ko if: Language.Flag--> <img class=\\\"language-selection-img\\\" data-bind=\\\"attr: { src: Language.Flag }\\\" height=\\\"20\\\"> <!--/ko--> <!--ko ifnot: Language.Flag--> <span class=\\\"language-shortname\\\" data-bind=\\\"text: Language.ShortName\\\"></span> <!--/ko--> <!--/ko--> </a> <!-- ko with: $parent._translationFieldEditor --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </form> <!-- /ko --> <div class=\\\"tab-wrapper\\\"> <div class=\\\"tabs nav-justified\\\"> <ul class=\\\"nav nav-tabs nav-justified\\\"> <li class=\\\"active tab\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: BuilderTab, attr: { href: '#' + $data.Id }\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"true\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.SELECT_TABLE_AND_FIELDS --><!-- /ko --></span> </a> </li> <!-- ko ifnot: _basicMode --> <li class=\\\"tab\\\" data-bind=\\\"css: { disabled: !_hasData() }\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: CrossTablePage, attr: { href: '#' + $data.CrossTableTabId }\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.CROSS_TABLE --><!-- /ko --></span> </a> </li> <li class=\\\"tab\\\" data-bind=\\\"css: { disabled: !_hasData() }\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: FilteringPage, attr: { href: '#' + $data.FilterTabId }\\\" href=\\\"#Filtering\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.FILTERS --><!-- /ko --></span> </a> </li> <!-- /ko --> <li class=\\\"tab\\\" data-bind=\\\"css: { disabled: !_hasData() }\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: ColumnOrderPage, attr: { href: '#' + $data.TableViewConfigTabId }\\\" href=\\\"#CoumnOrder\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.COLUMN_ORDER_AND_SETTINGS --><!-- /ko --></span> </a> </li> <!-- ko ifnot: _basicMode --> <!-- ko with: QueryScreen --> <li class=\\\"tab\\\" data-bind=\\\"css: { disabled: !$parent._hasData() }\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: $parent.QueryScreenPage.bind($parent), attr: { href: '#' + $parent.QueryScreenTabId }\\\" href=\\\"#QueryScreen\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.SCREEN --><!-- /ko --></span> </a> </li> <!-- /ko --> <!-- ko with: TemplateScreenTab --> <li class=\\\"tab\\\" data-bind=\\\"css: { disabled: !$parent._hasData() }\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: $parent.TemplateScreenPage.bind($parent), attr: { href: '#' + $parent.TemplateScreenTabId }\\\" href=\\\"#TemplateScreen\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.TEMPLATE --><!-- /ko --></span> </a> </li> <!-- /ko --> <!-- /ko --> <li class=\\\"tab\\\" data-bind=\\\"css: { disabled: !_hasData() }\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: QueryResultPage, attr: { href: '#' + $data.QueryResultTabId }\\\" href=\\\"#QueryResult\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.QUERY_RESULT --><!-- /ko --></span> </a> </li> </ul> <div class=\\\"tab-content tab-page-result\\\"> <div data-bind=\\\"attr: { id: Id }\\\" class=\\\"tab-pane active noselect\\\"> <div data-bind=\\\"event: { scroll: Scroll }\\\" class=\\\"row querybuilder-canvas querybuilder-root-canvas\\\" style=\\\"height:600px;position:relative;overflow:auto\\\"> <!-- ko with: Expression --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko with: _queryBootstrap --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <span class=\\\"caption-subject bold uppercase\\\">Sorting</span> <!-- ko with: QuerySorting --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <!-- ko ifnot: _basicMode --> <div data-bind=\\\"attr: { id: $data.CrossTableTabId }\\\" class=\\\"tab-pane\\\"> <div class=\\\"row crossTableWrapper\\\"> <!-- ko with: CrossTableConfig --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> <div data-bind=\\\"attr: { id: $data.FilterTabId }\\\" class=\\\"tab-pane filtering\\\"> <div class=\\\"row\\\"> <!-- ko with: ConditionBuilder --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> <div data-bind=\\\"attr: { id: $data.TableViewConfigTabId }\\\" class=\\\"tab-pane\\\"> <!-- ko with: TableViewConfig --> <!-- ko template: { html: GetTemplate, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <!-- ko ifnot: _basicMode --> <!-- ko with: QueryScreen --> <div data-bind=\\\"attr: { id: $parent.QueryScreenTabId }\\\" class=\\\"tab-pane\\\"> <!-- ko template: { html: GetTemplate } --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: TemplateScreenTab --> <div data-bind=\\\"attr: { id: $parent.TemplateScreenTabId }\\\" class=\\\"tab-pane\\\"> <!-- ko template: { html: GetTemplate } --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <div data-bind=\\\"attr: { id: $data.QueryResultTabId }\\\" class=\\\"tab-pane\\\"> <!-- ko with: _queryResultGrid --> <div class=\\\"row-no-margin atesting-grid-container\\\"> <!-- ko with: _toolbar --> <div data-bind=\\\"attr: {id: 'control-' + $parent._id}\\\" class=\\\"query-result-toolbar\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _baseGrid --> <div data-bind=\\\"visible: _isReady\\\" class=\\\"grid-container-wrapper\\\"> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","///<reference path=\"../typings/jsPlumb.d.ts\" />\r\n\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport 'jsPlumb';\r\nimport 'pubsub';\r\n\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { ICreateNewQueryRequestModel, NewQueryStore } from 'QueryBuilder/Stores/NewQueryStore';\r\nimport { GetQueryStore } from 'QueryBuilder/Stores/GetQueryStore';\r\nimport { IUpdateQueryRequestModel, UpdateQueryStore } from 'QueryBuilder/Stores/UpdateQueryStore';\r\nimport { ConditionBuilder } from 'QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder';\r\nimport { Guid } from 'Core/Common/Guid';\r\nimport { TableViewConfig } from 'QueryBuilder/TableViewConfig/TableViewConfig';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { QUERY_BUILDER } from 'QueryBuilder/Constants';\r\nimport { EVENTS, EVENTS as QUERY_BUILDER_EVENTS } from 'QueryBuilder/Events';\r\nimport { QueryExpression } from 'QueryBuilder/QueryExpression/QueryExpression';\r\nimport { QuerySorting } from 'QueryBuilder/QuerySorting/QuerySorting';\r\nimport { EntityMetadataStore } from 'QueryBuilder/Stores/EntityMetadataStore';\r\nimport { EntityRelationshipsMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport { QueryResultGrid } from 'QueryBuilder/QueryResultGrid/QueryResultGrid';\r\nimport { QueryBootstrap } from 'QueryBuilder/QueryBootstrap/QueryBootstrap';\r\nimport { LABELS, NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\nimport { CrossTableConfig } from 'QueryBuilder/CrossTableConfig/CrossTableConfig';\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport { EVENTS as BOOTSTRAP_EVENTS } from 'QueryBuilder/QueryBootstrap/Events';\r\nimport { Serialize } from 'libs/cerialize';\r\nimport { IQueryExpressionParams } from 'QueryBuilder/QueryExpression/IQueryExpressionParams';\r\nimport { IObjectIndex } from 'QueryBuilder/IObjectIndex';\r\nimport { QueryScreen } from './QueryScreen/QueryScreen';\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport { TranslationModel } from 'Core/ScreenManager/Models/TranslationModel';\r\n\r\nimport { QuerySortModel } from \"../Core/Controls/Grid/Models/GridDataModel/QueryExpression/QuerySortModel\";\r\nimport { SortOrder } from \"./Enums\";\r\nimport { QueryEntityJoinModel } from \"../Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel\";\r\nimport { FIELD_TYPES } from \"../Core/Constant\";\r\nimport { SortItem } from \"./QuerySorting/SortItem/SortItem\";\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {TYPES_COMPATIBILITY} from \"QueryBuilder/QueryCondition/ConditionItem/ConditionItemConfig\";\r\nimport { TemplateScreen } from './TemplateScreen/TemplateScreen';\r\nimport {TranslationFieldEditor} from 'Core/Components/TranslationFieldEditor/TranslationFieldEditor';\r\nimport {ITranslationValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport { GlobalManager, GLOBALS } from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport QueryBuilderTemplate from 'QueryBuilder/Templates/QueryBuilder.html';\r\nimport { IControlAttachedField } from 'Core/Screens/BaseScreen';\r\nko.templates['QueryBuilder/Templates/QueryBuilder'] = QueryBuilderTemplate;\r\n\r\nconst DELETE_STATUS = 'Delete';\r\n\r\nexport class QueryBuilder extends Event {\r\n\tprivate _container: HTMLElement;\r\n\tprivate _expression: KnockoutObservable<QueryExpression>;\r\n\tprivate _id: string;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _jsPlumb: KnockoutObservable<jsPlumbInstance>;\r\n\tprivate _queryType: ViewModes;\r\n\tprivate _subjectEntityId: KnockoutObservable<number>;\r\n\tprivate _gridSubjectEntityId: KnockoutObservable<number>;\r\n\tprivate _queryName: KnockoutObservable<string>;\r\n\tprivate _hasData: KnockoutObservable<boolean>;\r\n\tprivate _hasPendingChanges: KnockoutObservable<boolean>;\r\n\tprivate _isEmbedded: KnockoutObservable<boolean>;\r\n\tprivate _queryResultGrid: KnockoutObservable<QueryResultGrid>;\r\n\tprivate _subjectRecordId: number;\r\n\tprivate _expressionModel: QueryExpressionModel;\r\n\tprivate _entitiesRelationships: Array<EntityRelationshipsMetadataModel>;\r\n\tprivate _defaultQueryName = 'New Query';\r\n\tprivate _recordsPerPage = 0;\r\n\tprivate _loadInProgres: KnockoutObservable<boolean>;\r\n\tprivate _queryBootstrap: KnockoutObservable<QueryBootstrap>;\r\n\tprivate _isDesktop: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\tprivate _saveToQueries: boolean;\r\n\tprivate _objectIndexes: Array<IObjectIndex>;\r\n\tprivate _filterByOwners: boolean;\r\n\tprivate _isNew: boolean;\r\n\tprivate _screenFields: Array<IControlAttachedField>;\r\n\tprivate _showInMenu: boolean;\r\n\tprivate _showInPortlet: boolean;\r\n\tprivate _translationFieldEditor: KnockoutObservable<TranslationFieldEditor>;\r\n\tprivate _basicMode: boolean;\r\n\tprivate _isMobile: MobileChecker;\r\n\r\n\tQueryId: number;\r\n\tShowQueryName: boolean;\r\n\tSingleColumn: boolean;\r\n\tSingleColumnType: string;\r\n\r\n\tTableViewConfig: KnockoutObservable<TableViewConfig>;\r\n\tConditionBuilder: KnockoutObservable<ConditionBuilder>;\r\n\tQuerySorting: KnockoutObservable<QuerySorting>;\r\n\tCrossTableConfig: KnockoutObservable<CrossTableConfig>;\r\n\tQueryScreen: KnockoutObservable<QueryScreen>;\r\n\tTemplateScreenTab: KnockoutObservable<TemplateScreen>;\r\n\r\n\tCrossTableTabId: string;\r\n\tFilterTabId: string;\r\n\tTableViewConfigTabId: string;\r\n\tQueryResultTabId: string;\r\n\tQueryScreenTabId: string;\r\n\tTemplateScreenTabId: string;\r\n\r\n\tconstructor(\r\n\t\tisEmbedded: boolean = true,\r\n\t\tisDesktop: boolean = false,\r\n\t\tsaveToQueries: boolean = false,\r\n\t\tcanvasQuery: boolean = false,\r\n\t\tscreenFields: Array<IControlAttachedField> = []\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis._id = Guid.NewGuid();\r\n\t\tthis._expression = ko.observable(null);\r\n\t\tthis._jsPlumb = ko.observable(jsPlumb.getInstance());\r\n\t\tthis._hasData = ko.observable(false);\r\n\t\tthis._hasPendingChanges = ko.observable(false);\r\n\t\tthis._queryName = ko.observable(this._defaultQueryName);\r\n\t\tthis._isEmbedded = ko.observable(isEmbedded);\r\n\t\tthis._queryResultGrid = ko.observable(null);\r\n\t\tthis._isDesktop = ko.observable(isDesktop);\r\n\t\tthis._saveToQueries = saveToQueries;\r\n\t\tthis._subjectRecordId = 0;\r\n\t\tthis._entitiesRelationships = [];\r\n\t\tthis._loadInProgres = ko.observable(false);\r\n\t\tthis._queryBootstrap = ko.observable(null);\r\n\t\tthis._subjectEntityId = ko.observable(null);\r\n\t\tthis.ConditionBuilder = ko.observable(null);\r\n\t\tthis.QuerySorting = ko.observable(new QuerySorting());\r\n\t\tthis.TableViewConfig = ko.observable(new TableViewConfig());\r\n\t\tthis.CrossTableConfig = ko.observable(new CrossTableConfig());\r\n\t\tthis.QueryScreen = ko.observable(null);\r\n\t\tthis.TemplateScreenTab = ko.observable(null);\r\n\t\tthis.CrossTableTabId = Guid.NewGuid();\r\n\t\tthis.FilterTabId = Guid.NewGuid();\r\n\t\tthis.TableViewConfigTabId = Guid.NewGuid();\r\n\t\tthis.QueryResultTabId = Guid.NewGuid();\r\n\t\tthis.QueryScreenTabId = Guid.NewGuid();\r\n\t\tthis.TemplateScreenTabId = Guid.NewGuid();\r\n\t\tthis.ShowQueryName = !canvasQuery;\r\n\t\tthis.SingleColumn = false;\r\n\t\tthis._objectIndexes = [];\r\n\t\tthis._filterByOwners = false;\r\n\t\tthis._isNew = false;\r\n\t\tthis._screenFields = screenFields;\r\n\t\tthis._translationFieldEditor = ko.observable(null);\r\n\t\tthis._basicMode = GlobalManager.Instance.GetGlobal(GLOBALS.BASIC_MODE) === '1';\r\n\t\tthis._recordsPerPage = Number(GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES));\r\n\t\tthis._isMobile = MobileChecker.IsMobile();\r\n\r\n\t\tthis._queryName.subscribe(newValue => {\r\n\t\t\tif(this._translationFieldEditor()){\r\n\t\t\t\tthis._translationFieldEditor().SetValue(newValue);\r\n\t\t\t}\t\t\t\r\n\t\t});\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tChangeTranslation(translation: ITranslationValue) {\r\n this._queryName(translation.Value);\r\n }\r\n\r\n\tprivate Init(){\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.CLOSE);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.DATA_SAVED);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.NO_ACCESS);\r\n\t\tthis.RemoveAllConnections();\r\n\t}\r\n\r\n\tset FilterByOwners(value: boolean) {\r\n\t\tthis._filterByOwners = value;\r\n\t\tif(this._queryResultGrid()){\r\n\t\t\tthis._queryResultGrid().FilterByOwners = this._filterByOwners;\r\n\t\t}\r\n\t}\r\n\r\n\tset SubjectRecordId(recordId: number) {\r\n\t\tthis._subjectRecordId = recordId;\r\n\t\tif(this._queryResultGrid()){\r\n\t\t\tthis._queryResultGrid().RecordId = this._subjectRecordId;\r\n\t\t}\r\n\t}\r\n\r\n\tset SubjectEntityId(entityId: number) {\r\n\t\tthis._subjectEntityId(entityId);\r\n\t}\r\n\r\n\tRender(target: string) {\r\n\t\tthis._container = document.getElementById(target);\r\n\t\tko.cleanNode(document.getElementById(target));\r\n\t\tko.applyBindings(this, document.getElementById(target));\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn QueryBuilderTemplate;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'QueryBuilder/Templates/QueryBuilder';\r\n\t}\r\n\r\n\tEditQuery(queryId: number, recordsPerPage: number) {\r\n\t\tthis._recordsPerPage = recordsPerPage;\r\n\t\tBlockUI.Block({Target: this._el});\r\n\t\tGetQueryStore.Get({Id: queryId})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock(this._el);\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis.InitQueryName(data.Name, data.NameTranslations);\r\n\t\t\t\tthis.QueryId = queryId;\r\n\t\t\t\tthis._entitiesRelationships = data.EntitiesRelationships;\r\n\t\t\t\tthis.InitQuery(data.Query, false);\r\n\t\t\t\tthis._hasData(true);\r\n\t\t\t}).fail(err=>{\r\n\t\t\t\tnew Notifier().Failed(err.message);\r\n\t\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.CLOSE);\r\n\t\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.NO_ACCESS, { Message: err.message });\r\n\t\t\t});;\r\n\t}\r\n\r\n\tToggleTranslations() {\r\n this._translationFieldEditor().Toggle();\r\n }\r\n\r\n\tGetTranslation(name: string, translations: Array<TranslationModel>): ITranslationValue {\r\n return TranslationManager.Instance.GetTranslation(name, translations);\r\n }\r\n\r\n\tprivate SaveQuery() {\r\n\t\tif (this.IsValid()) {\r\n\t\t\tif (this.QueryId > 0) {\r\n\t\t\t\tthis.UpdateQuery(false);\r\n\t\t\t} else {\r\n\t\t\t\tthis.CreateQuery(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate SaveAndCloseQuery() {\r\n\t\tif (this.IsValid()) {\r\n\t\t\tif (this.QueryId > 0) {\r\n\t\t\t\tthis.UpdateQuery(true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.CreateQuery(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tGetModel(): QueryExpressionModel {\r\n\t\tif (this._expression()) {\r\n\t\t\tthis.TableViewConfig().Update();\r\n\t\t\treturn this._expression().Model;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tGetSubjectEntityId(): number {\r\n\t\treturn this._subjectEntityId();\r\n\t}\r\n\r\n\tGetGridSubjectEntityId(): number {\r\n\t\tlet joins = this._expressionModel.EntityJoins\r\n\t\t\t.concat(this._expressionModel.ReferenceLookupEntityJoins)\r\n\t\t\t.concat(this._expressionModel.ReferenceEntityJoins)\r\n\t\t\t.concat(this._expressionModel.SubEntityJoins)\r\n\t\t\t.concat(this._expressionModel.LookupEntityJoins);\r\n\r\n\t\tlet gridSubjectEntity: QueryEntityJoinModel;\r\n\r\n\t\tif (this.QueryTypeName === ViewModes.TableView) {\r\n\t\t\tgridSubjectEntity = _.find(joins, (item)=>item.Entity.IsGridSubject) || _.first(this._expressionModel.EntityJoins);;\r\n\t\t}\r\n\t\t\r\n\t\tif (gridSubjectEntity && this.QueryTypeName === ViewModes.TableView) {\r\n\t\t\treturn gridSubjectEntity.Entity.Metadata.Id;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tGetShowInMenu() {\r\n\t\treturn this.QueryScreen() && this.QueryScreen().ShowInMenu;\r\n\t}\r\n\r\n\tGetShowInPortlet() {\r\n\t\treturn this.TemplateScreenTab() && this.TemplateScreenTab().ShowInPotlet;\r\n\t}\r\n\r\n\tprivate UpdateQuery(close: boolean) {\r\n\t\tlet queryName = this._translationFieldEditor() ? this._translationFieldEditor().GetDefaultTranslation().Value : this._queryName();\r\n\r\n\t\tvar updateQueryRequestModel: IUpdateQueryRequestModel = {\r\n\t\t\tId: this.QueryId,\r\n\t\t\tName: queryName,\r\n\t\t\tQueryText: JSON.stringify(Serialize(this._expression().Model)),\r\n\t\t\tNameTranslations: this._translationFieldEditor() ? this._translationFieldEditor().GetTranslations(false) : []\r\n\t\t};\r\n\r\n\t\tBlockUI.Block();\r\n\t\tUpdateQueryStore.Update(updateQueryRequestModel)\r\n\t\t.always(()=>{\r\n\t\t\tBlockUI.Unblock();\r\n\t\t})\r\n\t\t.then((data) => {\r\n\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.DATA_SAVED, {\r\n\t\t\t\tRecordId: this.QueryId,\r\n\t\t\t\tClose: close,\r\n\t\t\t\tQueryText: updateQueryRequestModel.QueryText\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate CreateQuery(close: boolean) {\r\n\t\tvar gridSubjectEntity;\r\n\t\tif (this.QueryTypeName === ViewModes.TableView) {\r\n\t\t\tgridSubjectEntity = _.first(this._expressionModel.EntityJoins);\r\n\t\t} else {\r\n\t\t\tgridSubjectEntity = this._expressionModel;\r\n\t\t}\r\n\t\tif (gridSubjectEntity) {\r\n\t\t\tvar newQueryRequestModel: ICreateNewQueryRequestModel = {\r\n\t\t\t\tTypeName: this.QueryTypeName,\r\n\t\t\t\tSubjectEntityId: this._expressionModel.Entity.Metadata.Id,\r\n\t\t\t\tGridSubjectEntityId: this.QueryTypeName === ViewModes.TableView ? gridSubjectEntity.Entity.Metadata.Id : 0,\r\n\t\t\t\tName: this._queryName(),\r\n\t\t\t\tQueryText: JSON.stringify(Serialize(this._expression().Model))\r\n\t\t\t};\r\n\r\n\t\t\tif (this._saveToQueries) {\r\n\t\t\t\tNewQueryStore.Create(newQueryRequestModel).then((data) => {\r\n\t\t\t\t\tthis.QueryId = data.Id;\r\n\t\t\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.DATA_SAVED, {\r\n\t\t\t\t\t\tRecordId: data.Id,\r\n\t\t\t\t\t\tClose: close,\r\n\t\t\t\t\t\tQueryText: newQueryRequestModel.QueryText\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.DATA_SAVED, {\r\n\t\t\t\t\tClose: close,\r\n\t\t\t\t\tQueryText: newQueryRequestModel.QueryText\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el) {\r\n\t\tthis._el = el[0];\r\n\t\tvar exp = this._expression();\r\n\t\tthis._expression(null);\r\n\t\tthis._jsPlumb(jsPlumb.getInstance());\r\n\t\tthis._expression(exp);\r\n\t}\r\n\r\n\tset QueryTypeName(value: ViewModes) {\r\n\t\tthis._queryType = value;\r\n\t}\r\n\r\n\tget QueryTypeName(): ViewModes {\r\n\t\treturn this._queryType;\r\n\t}\r\n\r\n\tget Expression(): KnockoutObservable<QueryExpression> {\r\n\t\treturn this._expression;\r\n\t}\r\n\r\n\tInitQuery(expression: QueryExpressionModel, isNew: boolean = true) {\r\n\t\tthis._isNew = isNew;\r\n\t\tthis._queryBootstrap(null);\r\n\t\tthis._expressionModel = expression;\r\n\r\n\t\tthis._queryResultGrid(new QueryResultGrid(\r\n\t\t\tthis._expressionModel,\r\n\t\t\tthis._subjectRecordId,\r\n\t\t\tthis._recordsPerPage,\r\n\t\t\tthis._queryType,\r\n\t\t\tthis._isDesktop(),\r\n\t\t\tthis._filterByOwners,\r\n\t\t\tthis.GetSubjectEntityId(),\r\n\t\t\tthis.GetGridSubjectEntityId()\r\n\t\t));\r\n\r\n\t\tthis._expressionModel.Entity.CanvasPosition.Top = QUERY_BUILDER.CELL_SIZE;\r\n\t\tthis._expressionModel.Entity.CanvasPosition.Left = QUERY_BUILDER.CELL_SIZE;\r\n\r\n\t\tif (isNew) {\r\n\r\n\t\t\t_.each(this._expressionModel.ReferenceLookupEntityJoins,\r\n\t\t\t\t(entityJoin, index) => {\r\n\t\t\t\t\tentityJoin.Entity.CanvasPosition.Left = QUERY_BUILDER.CELL_SIZE * 15;\r\n\t\t\t\t\tentityJoin.Entity.CanvasPosition.Top = QUERY_BUILDER.CELL_SIZE * (index + 1) * 4;\r\n\t\t\t\t});\r\n\r\n\t\t\t_.each(this._expressionModel.EntityJoins,\r\n\t\t\t\t(entityJoin, index) => {\r\n\t\t\t\t\tentityJoin.Entity.CanvasPosition.Left = QUERY_BUILDER.CELL_SIZE * 15;\r\n\t\t\t\t\tentityJoin.Entity.CanvasPosition.Top = QUERY_BUILDER.CELL_SIZE * (index + 1) * 4;\r\n\t\t\t\t});\r\n\r\n\t\t\t_.each(this._expressionModel.SubEntityJoins,\r\n\t\t\t\t(entityJoin, index) => {\r\n\t\t\t\t\tentityJoin.Entity.CanvasPosition.Left = QUERY_BUILDER.CELL_SIZE;\r\n\t\t\t\t\tentityJoin.Entity.CanvasPosition.Top = QUERY_BUILDER.CELL_SIZE * (index + 4) * 2;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet entities = Util.GetAllQueryEntities(this._expressionModel);\r\n\t\tlet ids = [];\r\n\t\t_.each(entities, entity => {\r\n\t\t\tids.push(entity.Metadata.Id)\r\n\t\t});\r\n\t\tids = _.uniq(ids);\r\n\r\n\t\tvar isFullScreen = $(this._el).hasClass('portlet-fullscreen');\r\n\t\tif(isFullScreen) {\r\n\t\t\tBlockUI.Block({Target: $(this._el).find('.portlet-fullscreen')[0]});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._loadInProgres(true);\r\n\t\t}\r\n\t\tEntityMetadataStore.GetEntitiesMetadata({EntityIds: ids})\r\n\t\t\t.always(() => {\r\n\t\t\t\tif(isFullScreen) {\r\n\t\t\t\t\tBlockUI.Unblock($(this._el).find('.portlet-fullscreen')[0]);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._loadInProgres(false);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis._entitiesRelationships = data;\r\n\t\t\t\tthis.InitQueryExpression();\r\n\t\t\t});\r\n\r\n\t\tif(this._queryType === ViewModes.Query){\r\n\t\t\tthis.QueryScreen(new QueryScreen());\r\n\t\t}\r\n\r\n\t\tif(this._queryType == ViewModes.TableView || this._queryType == ViewModes.ListView){\r\n\t\t\tthis.TemplateScreenTab(new TemplateScreen(this.QueryTypeName));\r\n\t\t}\r\n\t}\r\n\r\n\tInitTemplateQuery(recordsPerPage: number, name: string, translations: Array<TranslationModel>) {\t\t\r\n\t\tthis._recordsPerPage = recordsPerPage;\r\n\t\tthis._queryType = ViewModes.Template;\r\n\t\tNewQueryStore.New(name).then((data) => {\r\n\t\t\tif(data.NameTranslations.length == 0){\r\n\t\t\t\ttranslations = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.InitQueryName(name, translations);\r\n\t\t\tthis._queryBootstrap(new QueryBootstrap(data.Entities));\r\n\t\t\tthis._queryBootstrap().On(BOOTSTRAP_EVENTS.ENTITY_SELECTED,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tthis.InitQueryByEntityId(eventArgs.data.EntityId);\r\n\t\t\t\t\tthis._queryBootstrap(null);\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InitQueryName(name: string, translations: Array<TranslationModel>){\r\n\t\tif(translations.length >= 0){\r\n\t\t\tlet translation = this.GetTranslation(name, translations);\r\n\t\t\tlet translationEditor = new TranslationFieldEditor();\r\n\t\t\tthis._translationFieldEditor(translationEditor); \r\n\t\t\ttranslationEditor.On('TranslationSelected', this, eventArgs => this.ChangeTranslation(eventArgs.data));\r\n\t\t\ttranslationEditor.LoadTranslationItems();\r\n\t\t\ttranslationEditor.SetTranslations(translations, name);\r\n\t\t\ttranslationEditor.SetActiveTranslation(translation.Language.Id); \r\n\t\t\tlet currentValue = (translation.TranslatedValue || translation.Value) ? translation.TranslatedValue || translation.Value : this._defaultQueryName;\r\n\t\t\tthis._queryName(currentValue);\r\n\t\t}else{\r\n\t\t\tthis._queryName(name);\r\n\t\t}\r\n\t}\r\n\r\n\tset QueryType(type: ViewModes) {\r\n\t\tthis._queryType = type; \r\n\t}\r\n\r\n\tInitQueryByEntityId(entityId: number) {\r\n\t\tvar isFullScreen = $(this._el).hasClass('portlet-fullscreen');\r\n\t\tif(isFullScreen) {\r\n\t\t\tBlockUI.Block({Target: $(this._el).find('.portlet-fullscreen')[0]});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._loadInProgres(true);\r\n\t\t}\r\n\t\tEntityMetadataStore.GetEntityMetadata({EntityId: entityId})\r\n\t\t\t.always(() => {\r\n\t\t\t\tif(isFullScreen) {\r\n\t\t\t\t\tBlockUI.Unblock($(this._el).find('.portlet-fullscreen')[0]);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._loadInProgres(false);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis._entitiesRelationships = [data];\r\n\t\t\t\tthis._expressionModel = new QueryExpressionModel();\r\n\t\t\t\tthis._expressionModel.Entity = new QueryEntityModel();\r\n\t\t\t\tthis._expressionModel.Entity.Metadata = data.EntityMetadata;\r\n\t\t\t\tthis._expressionModel.Entity.CanvasPosition.Top = QUERY_BUILDER.CELL_SIZE;\r\n\t\t\t\tthis._expressionModel.Entity.CanvasPosition.Left = QUERY_BUILDER.CELL_SIZE;\r\n\t\t\t\tthis.InitQueryExpression();\r\n\t\t\t\tthis._queryResultGrid(new QueryResultGrid(\r\n\t\t\t\t\tthis._expressionModel,\r\n\t\t\t\t\tthis._subjectRecordId,\r\n\t\t\t\t\tthis._recordsPerPage,\r\n\t\t\t\t\tthis._queryType,\r\n\t\t\t\t\tthis._isDesktop(),\r\n\t\t\t\t\tthis._filterByOwners,\r\n\t\t\t\t\tthis.GetSubjectEntityId(),\r\n\t\t\t\t\tthis.GetGridSubjectEntityId()\r\n\t\t\t\t));\r\n\t\t\t});\r\n\r\n\t\tthis._subjectEntityId(entityId);\r\n\t}\r\n\r\n\tNewFreeQuery() {\r\n\r\n\t\tif (!this._queryType && this._queryType != 0) {\r\n\t\t\tthis._queryType = ViewModes.Query;\r\n\t\t}\r\n\r\n\t\tif(this._queryType === ViewModes.Query){\r\n\t\t\tthis.QueryScreen(new QueryScreen());\r\n\t\t}\r\n\r\n\t\tif(this._queryType === ViewModes.TableView || this._queryType === ViewModes.ListView){\r\n\t\t\tthis.TemplateScreenTab(new TemplateScreen(this.QueryTypeName));\r\n\t\t}\r\n\r\n\t\tNewQueryStore.New('').then((data) => {\r\n\t\t\tthis._queryBootstrap(new QueryBootstrap(data.Entities));\r\n\t\t\tthis._queryBootstrap().On(BOOTSTRAP_EVENTS.ENTITY_SELECTED,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tthis.InitQueryByEntityId(eventArgs.data.EntityId);\r\n\t\t\t\t\tthis._queryBootstrap(null);\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tEditFreeQuery(queryModel: QueryExpressionModel, showInMenu: boolean = false, showInPortlet: boolean = false) {\r\n\t\tif (queryModel) {\r\n\t\t\tif (!this._queryType && this._queryType != 0) {\r\n\t\t\t\tthis._queryType = ViewModes.Query;\r\n\t\t\t}\r\n\t\t\tthis._subjectEntityId(queryModel.Entity.Metadata.Id);\r\n\t\t\tthis._showInMenu = showInMenu;\r\n\t\t\tthis._showInPortlet = showInPortlet;\r\n\r\n\t\t\tthis.InitQuery(queryModel, false);\r\n\t\t}\r\n\t}\r\n\r\n\tInitQueryExpression() {\r\n\t\tlet params: IQueryExpressionParams = {\r\n\t\t\tModel: this._expressionModel,\r\n\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\tViewMode: this._queryType,\r\n\t\t\tContainer: this._el,\r\n\t\t\tEnabledColumnTypes: this.SingleColumnType ? TYPES_COMPATIBILITY[this.SingleColumnType].Types : [],\r\n\t\t\tObjectIndexes: this._objectIndexes\r\n\t\t};\r\n\r\n\t\tthis._expression(new QueryExpression(params));\r\n\r\n\t\tif(this._queryType === ViewModes.Template){\r\n\t\t\tif(this._expressionModel.Entity.Metadata.Lifestatus === DELETE_STATUS){\r\n\t\t\t\tthis._expression(null);\r\n\r\n\t\t\t\tif (this._jsPlumb()) {\r\n\t\t\t\t\t_.each(this._jsPlumb().getConnections(), (connection) => {\r\n\t\t\t\t\t\tthis._jsPlumb().deleteConnection(connection);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.NewFreeQuery();\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif(this._queryType === ViewModes.TableView && this._isNew){\r\n\t\t\tif(this._expressionModel.EntityJoins.length === 1){\r\n\t\t\t\tlet sortColumn = _.find(this._expressionModel.EntityJoins[0].LinkEntity.Columns, (item) => { return item.Metadata.Type === FIELD_TYPES.Sort });\r\n\t\t\t\tif(sortColumn != null){\r\n\t\t\t\t\tlet sort = new QuerySortModel();\r\n\t\t\t\t\tsort.Column = sortColumn;\r\n\t\t\t\t\tsort.Column.QueryEntityGuid = this._expressionModel.EntityJoins[0].LinkEntity.Guid;\r\n\t\t\t\t\tsort.SortOrder = SortOrder.Ascending;\r\n\t\t\t\t\tthis._expressionModel.Sorts.push(sort);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._expression().On(QUERY_BUILDER_EVENTS.COLUMN_SELECTED, this, (eventArgs)=>{\r\n\t\t\tlet columnId = eventArgs.data.Id;\r\n\t\t\tlet join = eventArgs.data.Join as QueryEntityJoinModel;\r\n\t\t\tlet column = _.find(join.LinkEntity.Columns, (item)=>{ return item.Metadata.Type === FIELD_TYPES.Sort && item.Metadata.Id === columnId});\r\n\t\t\tif(column){\r\n\t\t\t\tlet columnInSorting = _.find(this.QuerySorting().Items(), (item)=> { return item.Model.Column.Metadata.Id === columnId});\r\n\t\t\t\tif(!columnInSorting){\r\n\t\t\t\t\tlet sort = new QuerySortModel();\r\n\t\t\t\t\tsort.Column = column;\r\n\t\t\t\t\tsort.Column.QueryEntityGuid = join.LinkEntity.Guid;\r\n\t\t\t\t\tsort.SortOrder = SortOrder.Ascending;\r\n\t\t\t\t\tlet sortItem = new SortItem(sort, join.LinkEntity);\r\n\t\t\t\t\tthis.QuerySorting().Items.push(sortItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._expression().On(EVENTS.UPDATE_SORT,this, ()=>this.QuerySorting().Update());\r\n\r\n\t\tthis.TableViewConfig().ExpressionModel = this._expressionModel;\r\n\t\tthis.CrossTableConfig().ExpressionModel = this._expressionModel;\r\n\t\tthis.QuerySorting().ExpressionModel = this._expressionModel;\r\n\t\tthis.ConditionBuilder(new ConditionBuilder(this._queryType, this._screenFields));\r\n\t\tthis.ConditionBuilder().InitByQueryExpression(this._expression().Model);\r\n\t\tif(this.QueryScreen()){\r\n\t\t\tthis.QueryScreen().ExpressionModel = this._expressionModel;\r\n\t\t\tthis.QueryScreen().SubjectEntityId = this.GetGridSubjectEntityId() || this.GetSubjectEntityId(); \r\n\t\t\tthis.QueryScreen().ShowInMenu = this._showInMenu;\t\t\t\r\n\t\t}\r\n\r\n\t\tif(this.TemplateScreenTab()){\r\n\t\t\tthis.TemplateScreenTab().ExpressionModel = this._expressionModel;\r\n\t\t\tthis.TemplateScreenTab().SubjectEntityId = this.GetGridSubjectEntityId() || this.GetSubjectEntityId();\r\n\t\t\tthis.TemplateScreenTab().ShowInPotlet = this._showInPortlet;\r\n\t\t}\r\n\t\tthis._hasData(true);\r\n\t}\r\n\r\n\tBuilderTab() {\r\n\t\tthis.ShowConnections(true);\r\n\t}\r\n\r\n\tFilteringPage(context, evt) {\r\n\t\tif (this._hasData()) {\r\n\t\t\tthis.ShowConnections(false);\r\n\t\t\tthis.ConditionBuilder().RefreshEntityList();\r\n\t\t} else {\r\n\t\t\tevt.stopImmediatePropagation();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tCrossTablePage(context, evt) {\r\n\t\tif (this._hasData()) {\r\n\t\t\tthis.ShowConnections(false);\r\n\t\t\tthis.CrossTableConfig().Update();\r\n\t\t} else {\r\n\t\t\tevt.stopImmediatePropagation();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tColumnOrderPage(context, evt) {\r\n\t\tif (this._hasData()) {\r\n\t\t\tthis.ShowConnections(false);\r\n\t\t\tthis.TableViewConfig().Update();\r\n\t\t} else {\r\n\t\t\tevt.stopImmediatePropagation();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tQueryResultPage(context, evt) {\r\n\t\tif (this._hasData()) {\r\n\t\t\tthis.ShowConnections(false);\r\n\t\t\tthis.RefreshQueryData();\r\n\t\t} else {\r\n\t\t\tevt.stopImmediatePropagation();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tRefreshQueryData() {\r\n\t\tif (this._queryResultGrid()) {\r\n\t\t\tthis._queryResultGrid().Refresh();\r\n\t\t}\r\n\t}\r\n\r\n\tShowConnections(isVisible: boolean) {\r\n\t\t_.each(this._jsPlumb().getConnections(), (connection) => {\r\n\t\t\tconnection.setVisible(isVisible);\r\n\t\t});\r\n\t}\r\n\r\n\tRemoveAllConnections() {\r\n\t\t_.each(this._jsPlumb().getConnections(), (connection) => {\r\n\t\t\tthis._jsPlumb.deleteConnection(connection);\r\n\t\t});\r\n\t}\r\n\r\n\tget Id(): string {\r\n\t\treturn this._id;\r\n\t}\r\n\r\n\tScroll() {\r\n\t\tthis._jsPlumb().repaintEverything();\r\n\t}\r\n\r\n\tCancel() {\r\n\t\tthis._jsPlumb().repaintEverything();\r\n\t\tthis.Trigger(QUERY_BUILDER_EVENTS.CLOSE);\r\n\t}\r\n\r\n\tDispose() {\r\n\t\tthis.RemoveAllConnections();\r\n\t}\r\n\r\n\tIsValid(): boolean {\r\n\t\tvar columns = [];\r\n\r\n\t\tvar entities = Util.GetAllQueryEntities(this._expression().Model);\r\n\r\n\t\t_.each(entities, entity => { columns = columns.concat(entity.Columns); });\r\n\r\n\t\tif (columns.length === 0) {\r\n\t\t\tvar notifier = new Notifier();\r\n\t\t\tnotifier.Failed(NOTIFICATIONS.PLEASE_SELECT_ANY_FIELD);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (columns.length > 1 && this.SingleColumn) {\r\n\t\t\tvar notifier = new Notifier();\r\n\t\t\tnotifier.Failed('Please select only one column');\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tQueryScreenPage(context, evt) {\r\n\t\tif (this._hasData()) {\r\n\t\t\tthis.ShowConnections(false);\r\n\t\t\tthis.QueryScreen().Update();\r\n\t\t} else {\r\n\t\t\tevt.stopImmediatePropagation();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tTemplateScreenPage(context, evt) {\r\n\t\tif (this._hasData()) {\r\n\t\t\tthis.ShowConnections(false);\r\n\t\t\tthis.TemplateScreenTab().Update();\r\n\t\t} else {\r\n\t\t\tevt.stopImmediatePropagation();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport clone from 'clone'\r\n\r\nimport { ConditionGroup } from \"QueryBuilder/QueryCondition/ConditionGroup/ConditionGroup\";\r\nimport { Guid } from \"Core/Common/Guid\";\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { EntityMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport { QueryConditionGroupModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport { IControlAttachedField, IScreenVariable } from 'Core/Screens/BaseScreen';\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport { QueryConditionItemModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport ConditionBuilderTemplate from 'QueryBuilder/QueryCondition/ConditionBuilder/Templates/ConditionBuilder.html';\r\nimport {ConditionValueTypes} from \"../../Enums\";\r\nimport { ConditionItem } from '../ConditionItem/ConditionItem';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport class ConditionBuilder extends Event {\r\n\tConditionGroup: KnockoutObservable<ConditionGroup>;\r\n\tprivate _entities: KnockoutObservableArray<QueryEntityModel>;\r\n\tprivate _id: string;\r\n\tprivate _isForGrid: boolean;\r\n\tprivate _model: QueryExpressionModel;\r\n\tprivate _queryType: ViewModes;\r\n\tprivate _screenFields: Array<IControlAttachedField>;\r\n\tprivate _top: KnockoutObservable<number>;\r\n\tprivate _labels: LABELS = LABELS;\r\n\tprivate _showRecordsLimitInput: boolean;\r\n\r\n\tconstructor(queryType: ViewModes, screenFields: Array<IControlAttachedField>, showRecordsLimitInput: boolean = true) {\r\n\t\tsuper();\r\n\t\tthis._showRecordsLimitInput = showRecordsLimitInput;\r\n\t\tthis._queryType = queryType;\r\n\t\tthis._id = Guid.NewGuid();\r\n\t\tthis._entities = ko.observableArray([]);\r\n\t\tthis._isForGrid = false;\r\n\t\tthis.ConditionGroup = ko.observable(null);\r\n\t\tthis._screenFields = screenFields;\r\n\t\tthis._top = ko.observable(null);\r\n\t\tthis._top.subscribe(()=>{\r\n\t\t\tthis._model.Top = this._top();\r\n\t\t});\r\n\t\tthis.AddEvent('CHANGED');\r\n\t}\r\n\r\n\tInitByQueryExpression(model: QueryExpressionModel) {\r\n\t\tthis._isForGrid = true;\r\n\t\tthis._model = model;\r\n\t\tthis.RefreshEntityList();\r\n\r\n\t\tif (!this._model.Condition) {\r\n\t\t\tthis._model.Condition = new QueryConditionGroupModel();\r\n\t\t}\r\n\r\n\t\tthis._top(model.Top);\r\n\t\tthis.ConditionGroup(new ConditionGroup(true, this._model.Condition, this._queryType, this._entities, this._screenFields));\r\n\t}\r\n\r\n\tInitByEntity(entity: EntityMetadataModel, condition: QueryConditionGroupModel, screenFields: Array<IControlAttachedField>) {\r\n\t\tvar queryEntity = new QueryEntityModel();\r\n\t\tqueryEntity.Metadata = entity;\r\n\t\tthis._entities.push(queryEntity);\r\n\r\n\t\tthis._model = new QueryExpressionModel();\r\n\t\tif (!this._model.Condition) {\r\n\t\t\tthis._model.Condition = condition ? condition : new QueryConditionGroupModel();\r\n\t\t\tthis._model.Condition.EntityId = entity.Id;\r\n\t\t}\r\n\r\n\t\t_.each(this.GetAllConditionItems(this._model.Condition), (item) => { item.Column.QueryEntityGuid = queryEntity.Guid; });\r\n\r\n\t\tvar conditionGroup = new ConditionGroup(true, this._model.Condition, this._queryType, this._entities, screenFields, true);\r\n\t\tconditionGroup.On('CHANGED',\r\n\t\t\tthis,\r\n\t\t\t(eventArgs) => {\r\n\t\t\t\tthis.Trigger('CHANGED');\r\n\t\t\t});\r\n\r\n\t\tthis.ConditionGroup(conditionGroup);\r\n\t}\r\n\r\n\tInitByEntities(entities: Array<EntityMetadataModel>, condition: QueryConditionGroupModel, screenFields: Array<IControlAttachedField>) {\r\n\r\n\t\t_.each(entities, (entity) => {\r\n\t\t\tlet queryEntity = new QueryEntityModel();\r\n\t\t\tqueryEntity.Metadata = entity;\r\n\t\t\tthis._entities.push(queryEntity);\r\n\t\t});\r\n\r\n\t\tthis._model = new QueryExpressionModel();\r\n\t\tif (!this._model.Condition) {\r\n\t\t\tthis._model.Condition = condition ? condition : new QueryConditionGroupModel();\r\n\t\t}\r\n\r\n\t\t_.each(this.GetAllConditionItems(this._model.Condition), (item) => {\r\n\t\t\t_.each(this._entities(), (entity: QueryEntityModel) => {\r\n\t\t\t\t_.each(entity.Metadata.Fields, (field) => {\r\n\t\t\t\t\tif(field.Id === item.Column.Metadata.Id){\r\n\t\t\t\t\t\titem.Column.QueryEntityGuid = entity.Guid;\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\tlet conditionGroup = new ConditionGroup(true, this._model.Condition, this._queryType, this._entities, screenFields, true);\r\n\t\tconditionGroup.On('CHANGED',\r\n\t\t\tthis,\r\n\t\t\t() => {\r\n\t\t\t\tthis.Trigger('CHANGED');\r\n\t\t\t});\r\n\r\n\t\tthis.ConditionGroup(conditionGroup);\r\n\t}\r\n\r\n\tGetAllConditionItems(model: QueryConditionGroupModel): Array<QueryConditionItemModel> {\r\n\t\tvar result = [];\r\n\t\t_.each(model.Items, (item) => {\r\n\t\t\tresult.push(item);\r\n\t\t});\r\n\r\n\t\t_.each(model.ConditionGroups, (group) => {\r\n\t\t\tresult = result.concat(this.GetAllConditionItems(group));\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn ConditionBuilderTemplate;\r\n\t}\r\n\r\n\tRefreshEntityList() {\r\n\t\tthis._entities(Util.GetAllQueryEntities(this._model));\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tget ConditionModel(): QueryConditionGroupModel {\r\n\t\treturn this._model.Condition;\r\n\t}\r\n\r\n\tpublic static GetScreenVariableCondition(screenVariable: IScreenVariable, condition: QueryConditionGroupModel): Array<QueryConditionItemModel> {\r\n\t\tlet screenVariableConditions = [];\r\n\t\tif (condition) {\r\n\t\t\t_.each(condition.Items,\r\n\t\t\t\t(item) => {\r\n\t\t\t\t\tif(item.ValueType === ConditionValueTypes.QueryBuilder){\r\n\t\t\t\t\t\tlet query = this.DeserializeQueryExpressionModel(item.Value);\r\n\t\t\t\t\t\tif(query){\r\n\t\t\t\t\t\t\tscreenVariableConditions = screenVariableConditions.concat(this.GetScreenVariableCondition(screenVariable, query.Condition));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else if (screenVariable.FullName === item.Value) {\r\n\t\t\t\t\t\tscreenVariableConditions.push(item);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t_.each(condition.ConditionGroups, conditionGroup => {\r\n\t\t\t\tscreenVariableConditions = screenVariableConditions.concat(this.GetScreenVariableCondition(screenVariable, conditionGroup));\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn screenVariableConditions;\r\n\t}\r\n\r\n\tprivate static DeserializeQueryExpressionModel(query: string): QueryExpressionModel{\r\n\t\ttry{\r\n\t\t\tlet jsonQuery = JSON.parse(query);\r\n\t\t\treturn Deserialize(jsonQuery, QueryExpressionModel);\r\n\t\t}catch (e) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \" <div class=\\\"portlet light\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"actions\\\"> <a class=\\\"btn btn-circle btn-icon-only btn-default fullscreen portletFullscreen\\\" href=\\\"javascript:;\\\" data-original-title=\\\"\\\" title=\\\"\\\"> </a> </div> </div> <div class=\\\"portlet-body condition-builder\\\" style=\\\"overflow:auto\\\"> <!-- ko if: _showRecordsLimitInput--> <div class=\\\"control-group\\\"> <div class=\\\"controls form-inline\\\"> <span><!-- ko text: _labels.SELECT_FIRST --><!-- /ko --></span> <input data-bind=\\\"textInput: _top\\\" type=\\\"text\\\" class=\\\"form-control\\\"> <span><!-- ko text: _labels.RECORDS --><!-- /ko --></span> </div> </div> <!-- /ko --> <!-- ko if: !_isForGrid--> <!-- ko with: ConditionGroup --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> <!-- ko if: _isForGrid--> <div class=\\\"portlet light\\\"> <!-- ko with: ConditionGroup --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport { ConditionOperators } from \"QueryBuilder/Enums\";\r\nimport { Guid } from \"Core/Common/Guid\";\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QueryConditionGroupModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport { ConditionItem } from 'QueryBuilder/QueryCondition/ConditionItem/ConditionItem';\r\nimport { Event } from 'Core/Common/Event'\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport { QueryConditionItemModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { ComparisonOperators, ConditionValueTypes } from 'QueryBuilder/Enums';\r\n\r\nimport ConditionGroupTemplate from 'QueryBuilder/QueryCondition/ConditionGroup/Templates/ConditionGroup.html';\r\nimport { IControlAttachedField } from \"Core/Screens/BaseScreen\";\r\n\r\nexport interface IConditionOperator {\r\n\tName: string,\r\n\tValue: ConditionOperators;\r\n}\r\n\r\nexport class ConditionGroup extends Event {\r\n\tConditionGroups: KnockoutObservableArray<ConditionGroup>;\r\n\tConditionItems: KnockoutObservableArray<ConditionItem>;\r\n\tConditionOperators: Array<IConditionOperator>;\r\n\tConditionOperator: KnockoutObservable<ConditionOperators>;\r\n\tprivate _model: QueryConditionGroupModel;\r\n\tprivate _entities: KnockoutObservableArray<QueryEntityModel>;\r\n\tprivate _id: string;\r\n\r\n\tprivate _isRoot: boolean;\r\n\tprivate _screenFields: Array<IControlAttachedField>;\r\n\tprivate _isDesigntime: boolean;\r\n\tprivate _labels = LABELS;\r\n\tprivate _queryType: ViewModes;\r\n\r\n\tconstructor(\r\n\t\tisRoot: boolean,\r\n\t\tmodel: QueryConditionGroupModel,\r\n\t\tqueryType: ViewModes,\r\n\t\tentities: KnockoutObservableArray<QueryEntityModel>,\r\n\t\tscreenFields: Array<IControlAttachedField> = [],\r\n\t\tisDesignTime: boolean = false,\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis._isDesigntime = isDesignTime;\r\n\t\tthis._model = model;\r\n\t\tthis._id = Guid.NewGuid();\r\n\t\tthis._isRoot = isRoot;\r\n\t\tthis.ConditionGroups = ko.observableArray([]);\r\n\t\tthis.ConditionItems = ko.observableArray([]);\r\n\t\tthis._entities = entities;\r\n\t\tthis.ConditionOperator = ko.observable(null);\r\n\t\tthis._screenFields = screenFields;\r\n\t\tthis._queryType = queryType;\r\n\t\tthis.ConditionOperators = [\r\n\t\t\t{ Name: LABELS.AND, Value: ConditionOperators.And },\r\n\t\t\t{ Name: LABELS.OR, Value: ConditionOperators.Or }\r\n\t\t];\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tInit() {\r\n\t\tvar conditionOperator = _.find(this.ConditionOperators, (operator) => { return operator.Value === this._model.Operator });\r\n\t\tif (conditionOperator) {\r\n\t\t\tthis.ConditionOperator(conditionOperator.Value);\r\n\t\t} else {\r\n\t\t\tthis.ConditionOperator(ConditionOperators.And);\r\n\t\t}\r\n\r\n\t\t_.each(this._model.Items, (item) => {\r\n\t\t\tlet conditionItem = new ConditionItem(item, this._entities, this._screenFields, this._isDesigntime);\r\n\t\t\tif(conditionItem.HasMetadata) {\r\n\t\t\t\tconditionItem.IsEnableShowParam(this._queryType === ViewModes.Query || this._queryType === ViewModes.Spim);\r\n\t\t\t\tconditionItem.On('CHANGED', this, (eventArgs) => {\r\n\t\t\t\t\tthis.RaiseChangeEvent();\r\n\t\t\t\t});\r\n\t\t\t\tthis.ConditionItems.push(conditionItem);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t_.each(this._model.ConditionGroups, (group) => {\r\n\t\t\tvar conditionGroup = new ConditionGroup(false, group, this._queryType, this._entities, this._screenFields, this._isDesigntime);\r\n\t\t\tconditionGroup.On('CHANGED', this, (eventArgs) => {\r\n\t\t\t\tthis.RaiseChangeEvent();\r\n\t\t\t});\r\n\t\t\tthis.ConditionGroups.push(conditionGroup);\r\n\t\t});\r\n\r\n\t\tthis.AddEvent('CHANGED');\r\n\t}\r\n\r\n\tget IsRoot() {\r\n\t\treturn this._isRoot;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn ConditionGroupTemplate;\r\n\t}\r\n\r\n\tget Model() {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tAddRule() {\r\n\t\tvar model = new QueryConditionItemModel();\r\n\t\tmodel.ValueType = ConditionValueTypes.General;\r\n\t\tthis._model.Items.push(model);\r\n\t\tvar conditionItem = new ConditionItem(model, this._entities, this._screenFields, this._isDesigntime);\r\n\t\tconditionItem.IsEnableShowParam(this._queryType === ViewModes.Query || this._queryType === ViewModes.Spim);\r\n\t\tconditionItem.On('CHANGED', this, (eventArgs) => {\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\t\tthis.ConditionItems.push(conditionItem);\r\n\t\tconditionItem.SelectFirstField();\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tAddConditionGroup() {\r\n\t\tvar queryConditionGroupModel = new QueryConditionGroupModel();\r\n\t\tthis._model.ConditionGroups.push(queryConditionGroupModel);\r\n\t\tvar conditionGroup = new ConditionGroup(false, queryConditionGroupModel, this._queryType, this._entities, this._screenFields, this._isDesigntime);\r\n\t\tconditionGroup.On('CHANGED', this, (eventArgs) => {\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\t\tthis.ConditionGroups.push(conditionGroup);\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tDeleteConditionGroup(group: ConditionGroup) {\r\n\t\tthis._model.ConditionGroups.splice(this._model.ConditionGroups.indexOf(group.Model));\r\n\t\tthis.ConditionGroups.splice(this.ConditionGroups.indexOf(group), 1);\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tDeleteConditionRule(rule: ConditionItem) {\r\n\t\tthis._model.Items.splice(this._model.Items.indexOf(rule.Model), 1);\r\n\t\tthis.ConditionItems.splice(this.ConditionItems.indexOf(rule), 1);\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\t\r\n\tSetConditionOperator(operator: IConditionOperator) {\r\n\t\tthis._model.Operator = operator.Value;\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tRaiseChangeEvent() {\r\n\t\tthis.Trigger('CHANGED');\r\n\t}\r\n\r\n\tAfterRender() {}\r\n}","// Module\nvar code = \"<ul data-bind=\\\"css: {'tree': _isRoot }\\\" class=\\\"group-item\\\"> <li class=\\\"group-item-list\\\"> <div class=\\\"group-item-list-wrapper\\\"> <div class=\\\"btn-group disabled group-item-btn-group\\\" data-toggle=\\\"buttons\\\"> <!--ko foreach: ConditionOperators --> <label data-bind=\\\"css:{ active: $parent.ConditionOperator() === $data.Value }, click: $parent.SetConditionOperator.bind($parent, $data)\\\" class=\\\"btn btn-primary\\\"> <input type=\\\"radio\\\"><span data-bind=\\\"text: Name\\\" class=\\\"uppercase\\\"></span> </label> <!-- /ko --> </div> <div class=\\\"pull-right group-item-btn-group\\\"> <a data-bind=\\\"click: AddRule\\\" href=\\\"javascript:;\\\" class=\\\"btn green\\\"> <i class=\\\"fa fa-plus\\\"></i><!-- ko text: _labels.ADD_RULE --><!-- /ko --> </a> <a data-bind=\\\"click: AddConditionGroup\\\" href=\\\"javascript:;\\\" class=\\\"btn green\\\"> <i class=\\\"fa fa-plus-circle\\\"></i><!-- ko text: _labels.ADD_GROUP --><!-- /ko --> </a> <!--ko if: !IsRoot --> <a data-bind=\\\"click: $parent.DeleteConditionGroup.bind($parent, $data)\\\" href=\\\"javascript:;\\\" class=\\\"btn red\\\"> <i class=\\\"fa fa-remove\\\"></i> </a> <!--/ko--> </div> </div> <!-- ko if: ConditionItems().length > 0 || ConditionGroups().length > 0 --> <ol> <!-- ko foreach: ConditionItems --> <li class=\\\"condition-item\\\"> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> </li> <!-- /ko --> <!-- ko foreach: ConditionGroups --> <li class=\\\"condition-group\\\"> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> </li> <!-- /ko --> </ol> <!-- /ko --> </li> </ul>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\nimport { Event } from 'Core/Common/Event';\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/Text/Templates/Text.html'\r\n\r\nexport class Text {\r\n\tValue: KnockoutObservable<string>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Value = ko.observable(\"\");\r\n\t}\r\n\t\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t}\r\n}","// Module\nvar code = \"<input data-bind=\\\"textInput: Value, attr: { title: Value }\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" style=\\\"min-width:100px;max-width:160px;height:34px\\\">\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\n\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/YesNo/Templates/YesNo.html'\r\n\r\nexport class YesNo {\r\n\tValue: KnockoutObservable<boolean>;\r\n\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor() {\r\n\t\tthis.Value = ko.observable(false);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\r\n\t}\r\n} ","// Module\nvar code = \"<span class=\\\"inverse-condition-wrapper\\\"> <input data-bind=\\\"uniform: Value, checked: Value\\\" type=\\\"checkbox\\\"> </span> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport { DropdownDataStore } from 'Core/Controls/Dropdown/Stores/DropDownDataStore';\r\nimport { DropdownListModel } from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\nimport { GlobalManager, GLOBALS } from 'Core/GlobalManager/GlobalManager';\r\nimport { SearchScreen } from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport { EVENTS as SEARCH_SCREEN_EVENTS } from 'Core/Screens/SearchScreen/Events';\r\n\r\nimport {DropdownItemModel} from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\n\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/Spim/Templates/Spim.html'\r\n\r\nexport class Spim {\r\n\tValue: KnockoutObservable<any>;\r\n\tLowValue: KnockoutObservable<any>;\r\n\tHighValue: KnockoutObservable<any>;\r\n\r\n\tprivate _labels = LABELS;\r\n\tprivate _featureTypes = ['A', 'L', 'N', 'R'];\r\n\tpublic FeatureType: KnockoutObservable<any>;\r\n\r\n\tprivate _items: KnockoutObservableArray<DropdownItemModel>;\r\n\tprivate _selectedItem: KnockoutObservable<DropdownItemModel>;\r\n\tprivate _showSearchScreenButton: KnockoutObservable<boolean>;\r\n\tprivate _searchScreenIfRecordsCount: number;\r\n\r\n\tprivate _fieldId: FieldMetadataModel;\r\n\tprivate _firstLoad: boolean;\r\n\r\n\tconstructor(field: FieldMetadataModel) {\r\n\t\tthis._fieldId = field;\r\n\t\tthis.Value = ko.observable(false);\r\n\t\tthis.FeatureType = ko.observable(this._featureTypes[0]);\r\n\t\tthis.LowValue = ko.observable(null);\r\n\t\tthis.HighValue = ko.observable(null);\r\n\r\n\t\tthis.LowValue.subscribe((newValue)=>{\r\n\t\t\tthis.Value(`${this.LowValue()};${this.HighValue()}`);\r\n\t\t});\r\n\r\n\t\tthis.HighValue.subscribe((newValue)=>{\r\n\t\t\tthis.Value(`${this.LowValue()};${this.HighValue()}`);\r\n\t\t});\r\n\r\n\t\tthis.FeatureType.subscribe((newValue)=>{\r\n\t\t\tif(newValue === 'L'){\r\n\t\t\t\tthis.Value(false);\r\n\t\t\t}\r\n\r\n\t\t\tif(newValue === 'N'){\r\n\t\t\t\tthis.Value(null);\r\n\t\t\t}\r\n\r\n\t\t\tif(newValue === 'A'){\r\n\t\t\t\tthis.Value(null);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tthis.Value = ko.observable(null);\r\n\t\tthis._selectedItem = ko.observable(null);\r\n\t\tthis._showSearchScreenButton = ko.observable(false);\r\n\t\tthis._items = ko.observableArray([]);\r\n\t\tthis._firstLoad = true;\r\n\r\n\t\tvar searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n\t\tthis._searchScreenIfRecordsCount = Number.isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n\r\n\t\tthis.Value.subscribe((newValue) => {\r\n\t\t\tif (this._firstLoad) {\r\n\t\t\t\tthis.LoadData();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._selectedItem.subscribe((newValue: DropdownItemModel) => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\tthis.Value(`${newValue.RecordId}`);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.FeatureType() === 'A'){\r\n\t\t\tthis.LoadData();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tDropdownDataStore.Get({ FieldId: this._fieldId.Id, RecordId: parseInt(this.Value()), SubjectRecordId: 0, SubjectTypeId: 0, SubjectKindId: 0, SubjectStatusId: 0, IsEnableFilter: false })\r\n\t\t\t.then((dropDownData: DropdownListModel) => {\r\n\t\t\t\tthis._showSearchScreenButton(dropDownData.RecordsCount > this._searchScreenIfRecordsCount);\r\n\t\t\t\tthis._firstLoad = false;\r\n\t\t\t\tthis._items(dropDownData.Items);\r\n\t\t\t\tthis._selectedItem(_.find(dropDownData.Items,(item: DropdownItemModel) => {\r\n\t\t\t\t\treturn item.RecordId === parseInt(this.Value());\r\n\t\t\t\t}));\r\n\t\t});\r\n\t}\r\n\r\n\tget FieldId(): number {\r\n\t\treturn this._fieldId.Id;\r\n\t}\r\n\r\n\tShowSearchScreen() {\r\n\t\tconst searchScreen = new SearchScreen({ EntityId: this._fieldId.ValTableId, SearchTerm: '', ButtonAdd: false });\r\n\t\tsearchScreen.On(SEARCH_SCREEN_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.Value(eventArgs.data.RecordId);\r\n\t\t\tthis.LoadData();\r\n\t\t});\r\n\t\tsearchScreen.Show();\r\n\t}\r\n} ","// Module\nvar code = \"<div class=\\\"featureTypesBox\\\"> <select data-bind=\\\"options: _featureTypes, value: FeatureType,\\\" class=\\\"form-control\\\"></select> <!--ko if: FeatureType() === 'R' --> <input data-bind=\\\"textInput: LowValue, attr: { title: LowValue }\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" style=\\\"height:34px\\\"> <input data-bind=\\\"textInput: HighValue, attr: { title: HighValue }\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" style=\\\"height:34px\\\"> <!--/ko--> <!--ko if: FeatureType() === 'N' --> <input data-bind=\\\"textInput: Value, attr: { title: Value }\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" style=\\\"height:34px\\\"> <!--/ko--> <!--ko if: FeatureType() === 'L' --> <input data-bind=\\\"checked: Value, attr: { title: Value }\\\" type=\\\"checkbox\\\" class=\\\"form-control input-sm\\\" style=\\\"height:34px\\\"> <!--/ko--> <!--ko if: FeatureType() === 'A' --> <!-- ko ifnot: _showSearchScreenButton --> <select data-bind=\\\"options: _items, optionsCaption: 'select...', optionsText: 'Label', value: _selectedItem\\\" class=\\\"form-control control record-field drop-down\\\"></select> <!-- /ko --> <!-- ko if: _showSearchScreenButton --> <div data-val-search=\\\"True\\\" class=\\\"textarea-control form-control control record-field filter-search-area\\\"> <!-- ko if: _selectedItem --> <span data-bind=\\\"text: _selectedItem().Label\\\"></span> <!-- /ko --> <!-- ko ifnot: _selectedItem --> <span>Select value...</span> <!-- /ko --> <span data-bind=\\\"click: $data.ShowSearchScreen.bind($data)\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> </div> <!-- /ko --> <!--/ko--> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\n\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/Date/Templates/Date.html';\r\n\r\nimport {QueryConditionItemModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\n\r\nexport class Date {\r\n\tValue: KnockoutObservable<any>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _datetimeFormat: string;\r\n\tprivate _date: string;\r\n\tprivate _initialState: boolean;\r\n\r\n\tconstructor(model: QueryConditionItemModel, datetimeFormat: string, date: string) {\r\n\t\tthis.Value = ko.observable('');\r\n\t\tthis._date = date;\r\n\t\tthis._datetimeFormat = datetimeFormat;\r\n\t\tthis._initialState = true;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tGetDateFormat() {\r\n\t\treturn this._datetimeFormat;\r\n\t}\r\n\r\n\tGetLocale() {\r\n\t\treturn moment.locale();\r\n\t}\r\n\r\n\tUpdate() {\r\n\t\tif (!this._initialState || $(this._el).val()) {\r\n\t\t\tconst newValue = $(this._el).val();\r\n\t\t\tthis.Value(newValue);\r\n\t\t}\r\n\t\tthis._initialState = false;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tthis._el = el[0];\r\n\t\t$(this._el).val(this._date);\r\n\t}\r\n} ","// Module\nvar code = \"<input data-bind=\\\"attr: { title: $data.Value },\\r\\n\\t\\t\\t\\t datetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: $data._date,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tonUpdate: $data.Update.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tlocale: $data.GetLocale(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tformat: $data.GetDateFormat(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\twidgetPositioning: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t horizontal: 'auto',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t vertical: 'bottom'\\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}\\\" type=\\\"text\\\" class=\\\"datepickerinput\\\"> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { DropdownDataStore } from 'Core/Controls/Dropdown/Stores/DropDownDataStore';\r\nimport { DropdownListModel } from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\nimport { GlobalManager, GLOBALS } from 'Core/GlobalManager/GlobalManager';\r\nimport { SearchScreen } from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport { EVENTS as SEARCH_SCREEN_EVENTS } from 'Core/Screens/SearchScreen/Events';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\n\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/Lookup/Templates/Lookup.html'\r\nimport {DropdownItemModel} from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\n\r\nexport class Lookup {\r\n\tprivate _items: KnockoutObservableArray<DropdownItemModel>;\r\n\tprivate _selectedItem: KnockoutObservable<DropdownItemModel>;\r\n\tprivate _showSearchScreenButton: KnockoutObservable<boolean>;\r\n\tprivate _searchScreenIfRecordsCount: number;\r\n\r\n\tprivate _fieldId: FieldMetadataModel;\r\n\tprivate _firstLoad: boolean;\r\n\r\n\tValue: KnockoutObservable<string>;\r\n\r\n\tconstructor(\r\n\t\tfield: FieldMetadataModel\r\n\t) {\r\n\t\tthis._fieldId = field;\r\n\t\tthis.Value = ko.observable(null);\r\n\t\tthis._selectedItem = ko.observable(null);\r\n\t\tthis._showSearchScreenButton = ko.observable(false);\r\n\t\tthis._items = ko.observableArray([]);\r\n\t\tthis._firstLoad = true;\r\n\r\n\t\tvar searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n\t\tthis._searchScreenIfRecordsCount = Number.isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n\r\n\t\tthis.Value.subscribe((newValue) => {\r\n\t\t\tif (this._firstLoad) {\r\n\t\t\t\tthis.LoadData();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._selectedItem.subscribe((newValue: DropdownItemModel) => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\tthis.Value(`${newValue.RecordId}`);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tDropdownDataStore.Get({ FieldId: this._fieldId.Id, RecordId: parseInt(this.Value()), SubjectRecordId: 0, SubjectTypeId: 0, SubjectKindId: 0, SubjectStatusId: 0, IsEnableFilter: false })\r\n\t\t\t.then((dropDownData: DropdownListModel) => {\r\n\t\t\t\tthis._showSearchScreenButton(dropDownData.RecordsCount > this._searchScreenIfRecordsCount);\r\n\t\t\t\tthis._firstLoad = false;\r\n\t\t\t\tthis._items(dropDownData.Items);\r\n\t\t\t\tthis._selectedItem(_.find(dropDownData.Items,(item: DropdownItemModel) => {\r\n\t\t\t\t\treturn item.RecordId === parseInt(this.Value());\r\n\t\t\t\t}));\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t}\r\n\r\n\tget FieldId(): number {\r\n\t\treturn this._fieldId.Id;\r\n\t}\r\n\r\n\tShowSearchScreen() {\r\n\t\tconst searchScreen = new SearchScreen({ EntityId: this._fieldId.ValTableId, SearchTerm: '', ButtonAdd: false });\r\n\t\tsearchScreen.On(SEARCH_SCREEN_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.Value(eventArgs.data.RecordId);\r\n\t\t\tthis.LoadData();\r\n\t\t});\r\n\t\tsearchScreen.Show();\r\n\t}\r\n} ","// Module\nvar code = \"<!-- ko ifnot: _showSearchScreenButton --> <select data-bind=\\\"options: _items, optionsCaption: 'select...', optionsText: 'Label', value: _selectedItem\\\" class=\\\"form-control control record-field drop-down\\\"></select> <!-- /ko --> <!-- ko if: _showSearchScreenButton --> <div data-val-search=\\\"True\\\" class=\\\"textarea-control form-control control record-field filter-search-area\\\"> <!-- ko if: _selectedItem --> <span data-bind=\\\"text: _selectedItem().Label\\\"></span> <!-- /ko --> <!-- ko ifnot: _selectedItem --> <span><!-- ko text: $parent._labels.SELECT_VALUE_LABEL --><!-- /ko --></span> <!-- /ko --> <span data-bind=\\\"click: $data.ShowSearchScreen.bind($data)\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/DocumentStatusLookup/Templates/DocumentStatusLookup.html'\r\nimport {DocumentStatus} from 'Core/Components/Controls/DocumentManager/DocumentManager';\r\n\r\nexport class DocumentStatusLookup {\r\n\tprivate _items: KnockoutObservableArray<string>;\r\n\r\n\tValue: KnockoutObservable<string>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Value = ko.observable(null);\r\n\t\tthis._items = ko.observableArray(\r\n\t\t\t[\r\n\t\t\t\tDocumentStatus[DocumentStatus.NoVersion],\r\n\t\t\t\tDocumentStatus[DocumentStatus.CheckIn],\r\n\t\t\t\tDocumentStatus[DocumentStatus.CheckOut],\r\n\t\t\t\tDocumentStatus[DocumentStatus.Locked],\r\n\t\t\t\tDocumentStatus[DocumentStatus.OwnerLock]\r\n\t\t\t]\r\n\t\t);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t}\r\n} ","// Module\nvar code = \"<select class=\\\"form-control\\\" data-bind=\\\"options: _items, value: Value\\\"></select> \";\n// Exports\nexport default code;","import { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { Guid } from 'Core/Common/Guid';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\n\r\nexport class ConditionItemField {\r\n\tid: string;\r\n\tprivate _queryEntity: QueryEntityModel;\r\n\tprivate _fieldMetadata: FieldMetadataModel;\r\n\r\n\tconstructor(queryEntity: QueryEntityModel, fieldMetadata: FieldMetadataModel) {\r\n\t\tthis.id = Guid.NewGuid();\r\n\t\tthis._queryEntity = queryEntity;\r\n\t\tthis._fieldMetadata = fieldMetadata;\r\n\t}\r\n\r\n\tget title(): string {\r\n\t\tvar entityName = this._queryEntity.Metadata.NameTranslation || this._queryEntity.Metadata.Name;\r\n\r\n\t\tif (this._queryEntity.Index > 1) {\r\n\t\t\tentityName = `${entityName}${this._queryEntity.Index}`;\r\n\t\t}\r\n\r\n\t\treturn `${entityName}.${this._fieldMetadata.NameTranslation || this._fieldMetadata.Name}`;\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\tvar entityName = this._queryEntity.Metadata.NameTranslation || this._queryEntity.Metadata.Name;\r\n\r\n\t\tif (this._queryEntity.Index > 1) {\r\n\t\t\tentityName = `${entityName}${this._queryEntity.Index}`;\r\n\t\t}\r\n\r\n\t\treturn `${entityName}.${this._fieldMetadata.NameTranslation || this._fieldMetadata.Name}`;\r\n\t}\r\n\r\n\tget FieldMetadata() {\r\n\t\treturn this._fieldMetadata;\r\n\t}\r\n\r\n\tget EntityMetadata() {\r\n\t\treturn this._queryEntity.Metadata;\r\n\t}\r\n\r\n\tget QueryEntityGuid() {\r\n\t\treturn this._queryEntity.Guid;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport { ViewModes } from \"Core/Controls/Grid/BaseGrid/Enums/ViewModes\";\r\nimport { EVENTS as QUERY_BUILDER_EVENTS } from 'QueryBuilder/Events';\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/QueryBuilder/Templates/QueryBuilder.html'\r\nimport { IControlAttachedField } from \"Core/Screens/BaseScreen\";\r\n\r\nexport class QueryBuilder {\r\n\tValue: KnockoutObservable<any>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _fieldMetadata: FieldMetadataModel;\r\n\tprivate _screenFields: Array<IControlAttachedField>;\r\n\r\n\r\n\tconstructor(fieldMetadata: FieldMetadataModel, screenFields: Array<IControlAttachedField>) {\r\n\t\tthis.Value = ko.observable('');\r\n\t\tthis._fieldMetadata = fieldMetadata;\r\n\t\tthis._screenFields = screenFields;\r\n\t}\r\n\r\n\tShowQueryBuilder() {\r\n\t\tvar modal = new Modal();\r\n\t\tvar queryBuilder = require('QueryBuilder/QueryBuilder');\r\n\t\tvar queryBuilder = new queryBuilder.QueryBuilder(true, false, false, false, this._screenFields);\r\n\t\tqueryBuilder.ShowQueryName = false;\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.CLOSE, this, (eventArgs: any) => { modal.Close(); });\r\n\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.DATA_SAVED, this, (eventArgs: any) => {\r\n\t\t\tthis.Value(eventArgs.data.QueryText);\r\n\t\t\tmodal.Close();\r\n\t\t});\r\n\r\n\t\tqueryBuilder.QueryTypeName = ViewModes.Query;\r\n\t\tqueryBuilder.SingleColumn = true;\r\n\t\tqueryBuilder.SingleColumnType = this._fieldMetadata.Type;\r\n\t\tmodal.Show();\r\n\r\n\t\tif (this.Value()) {\r\n\t\t\tqueryBuilder.EditFreeQuery(JSON.parse(this.Value()));\r\n\t\t} else {\r\n\t\t\tqueryBuilder.NewFreeQuery();\r\n\t\t}\r\n\r\n\t\tko.cleanNode(modal.Wrapper);\r\n\t\tko.applyBindings(queryBuilder, modal.Wrapper);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() {}\r\n} ","// Module\nvar code = \"<a data-bind=\\\"click: $data.ShowQueryBuilder.bind($data)\\\" href=\\\"#\\\"> <img src=\\\"img/Custom/sql-256.png\\\" class=\\\"query-icon\\\"> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<ul class=\\\"paste-variable-dropdown-list\\\" role=\\\"menu\\\"> <!-- ko if: $data.IsEnableQueryBuilder --> <li class=\\\"paste-variable-dropdown-item\\\" data-bind=\\\"click: $data.PasteQuery.bind($data)\\\"> <a href=\\\"#\\\">QueryBuilder</a> </li> <!-- /ko --> <!-- ko foreach: $data._functions --> <li class=\\\"paste-variable-dropdown-item\\\" data-bind=\\\"click: $parent.PasteFunction.bind($parent, $data)\\\"> <a href=\\\"#\\\"> <!-- ko text: $data --><!-- /ko --> </a> </li> <!-- /ko --> <!-- ko foreach: $data._screenFields --> <li class=\\\"paste-variable-dropdown-item\\\" data-bind=\\\"click: $parent.PasteVariable.bind($parent, $parent.FormatControlField($data))\\\"> <a href=\\\"#\\\"> <!-- ko text: $parent.FormatControlField($data) --><!-- /ko --> </a> </li> <!-- /ko --> </ul> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as $ from \"jquery\";\r\nimport * as _ from 'underscore';\r\nimport 'knockout-selectize';\r\nimport 'hidden_textfield';\r\nimport 'dropdown_direction';\r\nimport 'scroll_parent';\r\n\r\nimport { Text } from 'QueryBuilder/QueryCondition/ConditionEditors/Text/Text';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport { QueryConditionItemModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\nimport { ComparisonOperators, ConditionValueTypes } from 'QueryBuilder/Enums';\r\nimport { CONFIG, FUNCTIONS, TYPES_COMPATIBILITY } from 'QueryBuilder/QueryCondition/ConditionItem/ConditionItemConfig';\r\nimport { YesNo } from 'QueryBuilder/QueryCondition/ConditionEditors/YesNo/YesNo';\r\nimport { Spim } from 'QueryBuilder/QueryCondition/ConditionEditors/Spim/Spim';\r\nimport { Date as DateEditor } from 'QueryBuilder/QueryCondition/ConditionEditors/Date/Date';\r\nimport { Lookup } from 'QueryBuilder/QueryCondition/ConditionEditors/Lookup/Lookup';\r\nimport { CONTROL_TYPES, FIELD_TYPES } from 'Core/Constant';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport { DocumentStatusLookup } from 'QueryBuilder/QueryCondition/ConditionEditors//DocumentStatusLookup/DocumentStatusLookup';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport { COMPARISON_OPERATOR_LABELS } from 'QueryBuilder/Constants';\r\nimport { ConditionItemField } from 'QueryBuilder/QueryCondition/ConditionItem/ConditionItemField';\r\nimport { QueryBuilder } from 'QueryBuilder/QueryCondition/ConditionEditors/QueryBuilder/QueryBuilder';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {LifeStatusEnum} from \"common/life-status-enum\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\n\r\nimport * as moment from 'moment';\r\n\r\nimport ConditionItemTemplate from 'QueryBuilder/QueryCondition/ConditionItem/Templates/ConditionItem.html';\r\nimport ConditionItemSimpleTemplate from 'QueryBuilder/QueryCondition/ConditionItem/Templates/ConditionItemSimple.html';\r\nimport ConditionItemSPIMTemplate from 'QueryBuilder/QueryCondition/ConditionItem/Templates/ConditionItemSPIM.html';\r\nimport PasteVariableDropdownTemplate from 'QueryBuilder/QueryCondition/ConditionItem/Templates/PasteVariableDropdownTemplate.html'\r\nimport {ZIndexManager} from \"../../../Core/Common/ZIndexManager\";\r\nimport { IControlAttachedField } from 'Core/Screens/BaseScreen';\r\nimport { StaticText } from '../ConditionEditors/StaticText/StaticText';\r\n\r\nko.templates[\"QueryBuilder/QueryCondition/ConditionItem/Templates/PasteVariableDropdownTemplate\"] = PasteVariableDropdownTemplate;\r\n\r\n\r\nexport class ConditionItem extends Event {\r\n\tQueryEntities: KnockoutObservableArray<QueryEntityModel>;\r\n\r\n\tFields: KnockoutObservableArray<ConditionItemField>;\r\n\tSelectedField: KnockoutObservable<ConditionItemField>;\r\n\tSelectedFieldId: KnockoutObservable<any>;\r\n\r\n\tValueFields: KnockoutObservableArray<ConditionItemField>;\r\n\tSelectedValueField: KnockoutObservable<ConditionItemField>;\r\n\tSelectedValueFieldId: KnockoutObservable<any>;\r\n\r\n\tIsEnableShowParam: KnockoutObservable<boolean>;\r\n\tShowParam: KnockoutObservable<boolean>;\r\n\tIsEnableAddMultipleValues: KnockoutObservable<boolean>;\r\n\tIsEnableQueryBuilder: KnockoutObservable<boolean>;\r\n\tIsEnableResetButton: KnockoutObservable<boolean>;\r\n\tShowValueEditorButton: KnockoutObservable<boolean>;\r\n\tShowValueFieldListButton: KnockoutObservable<boolean>;\r\n\tHasMetadata: boolean;\r\n\r\n\tprivate _fieldValueEditors: KnockoutObservableArray<any>;\r\n\tprivate _model: QueryConditionItemModel;\r\n\tprivate _comparisonOperators: KnockoutObservableArray<any>;\r\n\tprivate _operator: KnockoutObservable<any>;\r\n\tprivate _screenFields: KnockoutObservableArray<IControlAttachedField>;\r\n\tprivate _originalScreenFields: Array<IControlAttachedField>;\r\n\tprivate _selectedField: ConditionItemField;\r\n\tprivate _functions: KnockoutObservableArray<string>;\r\n\tprivate _isDesigntime: boolean;\r\n\tprivate _labels = LABELS;\r\n\tprivate _dropDown: JBoxDropDown;\r\n\r\n\tconstructor(model: QueryConditionItemModel,\r\n\t\tentities: KnockoutObservableArray<QueryEntityModel>,\r\n\t\tscreenFields: Array<IControlAttachedField>,\r\n\t\tisDesignTime: boolean) {\r\n\t\tsuper();\r\n\r\n\t\tthis._model = model;\r\n\t\tthis._isDesigntime = isDesignTime;\r\n\t\tthis._fieldValueEditors = ko.observableArray(null);\r\n\t\tthis._operator = ko.observable(null);\r\n\t\tthis._comparisonOperators = ko.observableArray();\r\n\t\tthis._screenFields = ko.observableArray(screenFields);\r\n\t\tthis._originalScreenFields = screenFields;\r\n\t\tthis._functions = ko.observableArray([]);\r\n\r\n\t\tthis.QueryEntities = entities;\r\n\t\tthis.Fields = ko.observableArray([]);\r\n\t\tthis.ValueFields = ko.observableArray([]);\r\n\r\n\t\tthis.IsEnableShowParam = ko.observable(false);\r\n\t\tthis.ShowParam = ko.observable(this._model.ShowParam);\r\n\t\tthis.SelectedField = ko.observable(null);\r\n\t\tthis.SelectedFieldId = ko.observable(null);\r\n\r\n\t\tthis.SelectedValueField = ko.observable(null);\r\n\t\tthis.SelectedValueFieldId = ko.observable(null);\r\n\r\n\t\tthis.IsEnableAddMultipleValues = ko.observable(false);\r\n\t\tthis.IsEnableQueryBuilder = ko.observable(false);\r\n\t\tthis.IsEnableResetButton = ko.observable(false);\r\n\r\n\t\tthis.ShowValueEditorButton = ko.observable(this._model.ValueType === ConditionValueTypes.Column);\r\n\t\tthis.ShowValueFieldListButton = ko.observable(this._model.ValueType !== ConditionValueTypes.Column);\r\n\t\tthis.HasMetadata = false;\r\n\r\n\t\tthis.Init();\r\n\t\tthis.QueryEntities.subscribe((newValue) => this.UpdateFieldList());\r\n\t}\r\n\r\n\tUpdateOperators(fieldType: string) {\r\n\t\tconst config = CONFIG[fieldType];\r\n\r\n\t\tif (config) {\r\n\t\t\tlet operators = [];\r\n\r\n\t\t\t_.each(config.Operators, (operator) => {\r\n\t\t\t\toperators.push({ Value: operator, Label: COMPARISON_OPERATOR_LABELS[ComparisonOperators[operator]] });\r\n\t\t\t});\r\n\r\n\t\t\tthis._comparisonOperators(operators);\r\n\t\t\tthis._operator(_.find(this._comparisonOperators(), (operator) => operator.Value === this._model.Operator));\r\n\t\t}\r\n\t}\r\n\r\n\tUpdateFunctions(fieldType: string) {\r\n\t\tconst config = CONFIG[fieldType];\r\n\r\n\t\tif (config) {\r\n\t\t\tconst functions = [];\r\n\r\n\t\t\t_.each(config.Functions, (func) => functions.push(func));\r\n\t\t\tthis._functions(functions);\r\n\t\t}\r\n\t}\r\n\r\n\tSelectFirstField() {\r\n\t\tconst selectedField = _.first(this.Fields());\r\n\r\n\t\tif (selectedField) {\r\n\t\t\tthis.SelectedField(selectedField);\r\n\t\t\tthis.SelectedFieldId(selectedField.id);\r\n\t\t\tthis.Update(selectedField.FieldMetadata.Type);\r\n\t\t}\r\n\t}\r\n\r\n\tUpdate(fieldType: string) {\r\n\t\tthis.UpdateOperators(fieldType);\r\n\t\tthis.UpdateFunctions(fieldType);\r\n\t\tthis.UpdateEditor();\r\n\t\tthis.UpdateScreenFields();\r\n\t}\r\n\r\n\tUpdateScreenFields() {\r\n\r\n\t\tlet compatibleFields = _.filter(this._originalScreenFields, (item) =>{\r\n\t\t\treturn TYPES_COMPATIBILITY[this.SelectedField().FieldMetadata.Type].Types.indexOf(item.Field.FieldTypeName) >= 0;\r\n\t\t});\r\n\r\n\t\tthis._screenFields(compatibleFields);\r\n\t}\r\n\r\n\r\n\tInit() {\r\n\t\tthis.UpdateFieldList();\r\n\r\n\t\tthis.ShowParam.subscribe((newValue) => this._model.ShowParam = newValue);\r\n\r\n\t\tif (this._model.Column) {\r\n\t\t\tconst selectedField = _.find(this.Fields(), (field) => {\r\n\t\t\t\treturn field.QueryEntityGuid === this._model.Column.QueryEntityGuid && field.FieldMetadata.Id === this._model.Column.Metadata.Id;\r\n\t\t\t});\r\n\r\n\t\t\tif (selectedField) {\r\n\t\t\t\tthis._model.Column.Metadata = selectedField.FieldMetadata;\r\n\t\t\t\tthis.SelectedField(selectedField);\r\n\t\t\t\tthis._selectedField = selectedField;\r\n\t\t\t\tthis.SelectedFieldId(selectedField.id);\r\n\t\t\t\tthis.HasMetadata = true;\r\n\r\n\t\t\t\tthis.Update(selectedField.FieldMetadata.Type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.UpdateValueFieldList();\r\n\r\n\t\tthis.SelectedField.subscribe((newValue) => {\r\n\t\t\tif (newValue !== this._selectedField) {\r\n\t\t\t\tthis._model.Value = '';\r\n\t\t\t}\r\n\r\n\t\t\tthis.Update(newValue.FieldMetadata.Type);\r\n\t\t\tthis._model.Column = new QueryColumnModel();\r\n\t\t\tthis._model.Column.Metadata = newValue.FieldMetadata;\r\n\t\t\tthis._model.Column.QueryEntityGuid = newValue.QueryEntityGuid;\r\n\t\t\tthis.UpdateValueFieldList();\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t\tthis.RemoveDeletedField();\r\n\t\t});\r\n\r\n\t\t\r\n\t\tthis.SelectedValueField.subscribe((newValue) => {\r\n\t\t\tthis._model.ValueColumn = new QueryColumnModel();\r\n\t\t\tthis._model.ValueColumn.Metadata = newValue.FieldMetadata;\r\n\t\t\tthis._model.ValueColumn.QueryEntityGuid = newValue.QueryEntityGuid;\r\n\t\t\tthis._model.ValueType = ConditionValueTypes.Column;\r\n\t\t\tthis._model.Value = null;\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\r\n\t\tthis._operator.subscribe((newValue) => {\r\n\r\n\t\t\tif(newValue?.Value === ComparisonOperators.IsNotNull || newValue?.Value === ComparisonOperators.IsNull){\r\n\t\t\t\tthis._model.ValueType = ConditionValueTypes.General;\r\n\t\t\t\tthis._model.Value = null;\r\n\t\t\t}\r\n\r\n\t\t\tif ((this._model.Operator === ComparisonOperators.In && newValue.Value !== ComparisonOperators.In) || (this._model.Operator === ComparisonOperators.NotIn && newValue.Value !== ComparisonOperators.NotIn)) {\r\n\t\t\t\tthis._model.Value = '';\r\n\t\t\t\tthis._model.ValueType = this._model.ValueType !== ConditionValueTypes.Column ? ConditionValueTypes.General : this._model.ValueType;\r\n\t\t\t}\r\n\r\n\t\t\tif (newValue) {\r\n\t\t\t\tthis._model.Operator = newValue.Value;\r\n\r\n\t\t\t\tconst useMultipleValues = newValue.Value === ComparisonOperators.In || newValue.Value === ComparisonOperators.NotIn;\r\n\t\t\t\tthis.IsEnableAddMultipleValues(useMultipleValues);\r\n\t\t\t\tthis.IsEnableQueryBuilder(useMultipleValues);\r\n\t\t\t}\r\n\r\n\t\t\tsetTimeout(this.UpdateEditor.bind(this), 0);\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\t}\r\n\r\n\tRaiseChangeEvent() {\r\n\t\tthis.Trigger('CHANGED');\r\n\t}\r\n\r\n\tprivate InitPasteVariableDropdown(el: HTMLElement) {\r\n\t\tthis._dropDown = new JBoxDropDown({\r\n\t\t\ttarget: el,\r\n\t\t\tbindTarget: el,\r\n\t\t\tbindComponent: this,\r\n\t\t\totherOptions: {\r\n\t\t\t\taddClass: \"pasteVariable-dropdown\",\r\n\t\t\t\tcloseOnClick: true,\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\theight: 'auto',\r\n\t\t\t\tmaxHeight: 300,\r\n\t\t\t\tisolateScroll: true,\r\n\t\t\t\tpointer: \"\",\r\n\t\t\t\tmaxWidth: 400,\r\n\t\t\t\tonCloseComplete: () => {},\r\n\t\t\t\tzIndex: ZIndexManager.Instance.NextValue,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx: \"right\",\r\n\t\t\t\t\ty: \"bottom\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tonCreated: () => {\r\n\t\t\t\tthis._dropDown.SetContent({ content: PasteVariableDropdownTemplate as any });\r\n\t\t\t},\r\n\r\n\t\t\tonOpen: () => {}\r\n\t\t});\r\n\t}\r\n\r\n\tShowPasteVariableDropdown(data, event){\r\n\t\tlet target: HTMLElement,\r\n\t\t\tisPasteVariableDropdownBox = $(event.target).parents('.pasteVariableDropdownBox').length > 0;\r\n\r\n\t\ttarget = isPasteVariableDropdownBox ? $(event.target).parents('.pasteVariableDropdownBox')[0] : event.currentTarget;\r\n\r\n\t\tif (this._screenFields().length && this._functions().length && this.IsEnableQueryBuilder()){\r\n\t\t\tthis.InitPasteVariableDropdown(target);\r\n\t\t\tthis._dropDown.Open();\r\n\t\t} else {\r\n\t\t\tif (this._dropDown) {\r\n\t\t\t\tthis._dropDown.Toggle();\r\n\t\t\t} else {\r\n\t\t\t\tthis.InitPasteVariableDropdown(target);\r\n\t\t\t\tthis._dropDown.Open();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tAddEditor() {\r\n\t\tconst editor = this.GetEditor('');\r\n\r\n\t\tif (editor) {\r\n\t\t\tthis._fieldValueEditors.push(editor);\r\n\t\t}\r\n\t}\r\n\r\n\tRemoveEditor(editor) {\r\n\t\tthis._fieldValueEditors.splice(this._fieldValueEditors().indexOf(editor), 1);\r\n\t\tthis._model.Value = '';\r\n\r\n\t\t_.each(this._fieldValueEditors(), (editor) => {\r\n\t\t\tif (editor && editor.Value()) {\r\n\t\t\t\tthis._model.Value += this._model.Value === '' ? editor.Value() : `;${editor.Value()}`;\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tUpdateEditor() {\r\n\t\tthis._fieldValueEditors([]);\r\n\t\tif ((this._operator() &&\r\n\t\t\t(this._operator().Value === ComparisonOperators.NotIn || this._operator().Value === ComparisonOperators.In)\r\n\t\t\t\t&&\r\n\t\t\tthis._model.Value \r\n\t\t\t\t&&\r\n\t\t\tthis._model.Value.split\r\n\t\t\t\t&&\r\n\t\t\tthis._model.ValueType === ConditionValueTypes.General) || ((this.SelectedField() ? this.SelectedField().FieldMetadata.Type === FIELD_TYPES.MultiSelect : false) && this._operator().Value === ComparisonOperators.Equals)) {\r\n\r\n\t\t\tconst values = this._model.Value ? this._model.Value.split(';') : [];\r\n\r\n\t\t\tif(values.length > 0)\r\n\t\t\t{\r\n\t\t\t\t_.each(values, (value) => {\r\n\t\t\t\t\tconst editor = this.GetEditor(value);\r\n\r\n\t\t\t\t\tif (editor) {\r\n\t\t\t\t\t\tthis._fieldValueEditors.push(editor);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconst editor = this.GetEditor('-1');\r\n\t\t\t\tif (editor) {\r\n\t\t\t\t\tthis._fieldValueEditors.push(editor);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst editor = this.GetEditor(this._model.Value);\r\n\r\n\t\t\tif (editor) {\r\n\t\t\t\tthis._fieldValueEditors.push(editor);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tGetEditor(value: string): any {\r\n\t\tlet editor = null;\r\n\t\tlet dateTimeFormat;\r\n\t\tlet fieldType;\r\n\r\n\t\tif (this.SelectedField() && this._operator() && this._model.Column && this._model.Column.Metadata.Name) {\r\n\t\t\tfieldType = this.SelectedField().FieldMetadata.Type;\r\n\r\n\t\t\tconst operator = this._operator().Value;\r\n\r\n\t\t\tif (this._model.ValueType === ConditionValueTypes.Function) {\r\n\t\t\t\teditor = new Text();\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t\tthis.IsEnableAddMultipleValues(false);\r\n\t\t\t\tthis.IsEnableResetButton(true);\r\n\t\t\t} else if ((this._model.Operator === ComparisonOperators.In || this._model.Operator === ComparisonOperators.NotIn) && this._model.ValueType === ConditionValueTypes.QueryBuilder) {\r\n\t\t\t\teditor = new QueryBuilder(this.SelectedField().FieldMetadata, this._originalScreenFields);\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t\tthis.IsEnableAddMultipleValues(false);\r\n\t\t\t\tthis.IsEnableResetButton(true);\r\n\t\t\t} else if (this._model.ValueType === ConditionValueTypes.ScreenVariable) {\r\n\t\t\t\teditor = new Text();\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t\tthis.IsEnableResetButton(true);\r\n\t\t\t} else if (operator === ComparisonOperators.IsNull || operator === ComparisonOperators.IsNotNull) {\r\n\t\t\t} else if (fieldType === FIELD_TYPES.Text || fieldType === FIELD_TYPES.PKey || fieldType === FIELD_TYPES.Integer || fieldType === FIELD_TYPES.Decimal || fieldType === FIELD_TYPES.Alias) {\r\n\t\t\t\teditor = new Text();\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t} else if (fieldType === FIELD_TYPES.YesNo) {\r\n\t\t\t\teditor = new YesNo();\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t} else if (fieldType === FIELD_TYPES.Date || fieldType === FIELD_TYPES.DateTime || fieldType === FIELD_TYPES.Time || fieldType === FIELD_TYPES.TimeSpan) {\r\n\t\t\t\tdateTimeFormat = FormatConverter.GetDateFormatFromFieldModel(this._model.Column.Metadata, true);\r\n\t\t\t\tconst date = value === '' ? value : moment(value).format(dateTimeFormat);\r\n\r\n\t\t\t\teditor = new DateEditor(this._model, dateTimeFormat, date);\r\n\t\t\t} else if (fieldType === FIELD_TYPES.Lookup) {\r\n\t\t\t\teditor = new Lookup(this.SelectedField().FieldMetadata);\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t} else if (fieldType === FIELD_TYPES.MultiSelect) {\r\n\t\t\t\teditor = new Lookup(this.SelectedField().FieldMetadata);\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t\tthis.IsEnableAddMultipleValues(true);\r\n\t\t\t} else if (fieldType === FIELD_TYPES.Document && (operator === ComparisonOperators.NotEquals || operator === ComparisonOperators.Equals)) {\r\n\t\t\t\teditor = new DocumentStatusLookup();\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t} else if (fieldType === FIELD_TYPES.Spim ) {\r\n\t\t\t\teditor = new Spim(this.SelectedField().FieldMetadata);\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (editor) {\r\n\t\t\teditor.Value.subscribe((newValue) => {\r\n\t\t\t\tif (editor instanceof DateEditor) {\r\n\t\t\t\t\tnewValue = this.ConvertDateTimeValue(newValue, dateTimeFormat, fieldType);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (editor instanceof QueryBuilder) {\r\n\t\t\t\t\tthis._model.Value = newValue;\r\n\t\t\t\t\tthis._model.SubQuery = null;\r\n\t\t\t\t\tthis._model.ValueType = ConditionValueTypes.QueryBuilder;\r\n\t\t\t\t}else if (this._operator().Value === ComparisonOperators.In || this._operator().Value === ComparisonOperators.NotIn || ((this.SelectedField() ? this.SelectedField().FieldMetadata.Type === FIELD_TYPES.MultiSelect : false) && this._operator().Value === ComparisonOperators.Equals )) {\r\n\t\t\t\t\tthis._model.Value = '';\r\n\r\n\t\t\t\t\t_.each(this._fieldValueEditors(), (editor) => {\r\n\t\t\t\t\t\tif (editor && editor.Value()) {\r\n\t\t\t\t\t\t\tthis._model.Value += this._model.Value === '' ? editor.Value() : `;${editor.Value()}`;\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\tthis._model.Value = newValue;\r\n\t\t\t\t\tthis._model.ValueType = ConditionValueTypes.General;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.RaiseChangeEvent();\r\n\t\t\t});\r\n\r\n\t\t\tif(editor instanceof Spim){\r\n\t\t\t\tthis._model.SPIMFeatureType = editor.FeatureType();\r\n\t\t\t\teditor.FeatureType.subscribe((newValue) => {\r\n\t\t\t\t\tthis._model.SPIMFeatureType = newValue;\r\n\t\t\t\t});\t\t\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn editor;\r\n\t}\r\n\r\n\tConvertDateTimeValue(value, dateTimeFormat: string, fieldType: string) {\r\n\t\tlet utcValue = FormatConverter.ConvertToUTC(value, dateTimeFormat);\r\n\t\tif(fieldType === FIELD_TYPES.DateTime || fieldType === FIELD_TYPES.Time){\r\n\t\t\treturn moment.utc(utcValue).format()\r\n\t\t}\r\n\t\t\r\n\t\treturn utcValue;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn ConditionItemTemplate;\r\n\t}\r\n\r\n\tGetSimpleTemplate() {\r\n\t\treturn ConditionItemSimpleTemplate;\r\n\t}\r\n\r\n\tGetSPIMTemplate() {\r\n\t\treturn ConditionItemSPIMTemplate;\r\n\t}\r\n\r\n\tUpdateFieldList() {\r\n\t\t_.each(this.QueryEntities(), (entity: QueryEntityModel) => {\r\n\t\t\t_.each(entity.Metadata.Fields, (fieldMetadata: FieldMetadataModel) => {\r\n\t\t\t\tconst existsField = _.find(this.Fields(), (field) => {\r\n\t\t\t\t\treturn field.QueryEntityGuid === entity.Guid && field.FieldMetadata.Id === fieldMetadata.Id;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!existsField) {\r\n\r\n\t\t\t\t\tif(fieldMetadata.LifestatusName !== LifeStatusEnum.Delete || fieldMetadata.Id === this._model?.Column?.Metadata?.Id){\r\n\t\t\t\t\t\tthis.Fields.push(new ConditionItemField(entity, fieldMetadata));\r\n\t\t\t\t\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\tprivate RemoveDeletedField(){\r\n\t\t_.each(this.Fields(), field=>{\r\n\t\t\tif(field.FieldMetadata.LifestatusName === LifeStatusEnum.Delete && field.FieldMetadata.Id !== this.SelectedField()?.FieldMetadata.Id){\r\n\t\t\t\tthis.Fields.splice(this.Fields.indexOf(field), 1);\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tUpdateValueFieldList() {\r\n\t\tthis.ValueFields([]);\r\n\r\n\t\tif (this.SelectedField()) {\r\n\t\t\t_.each(this.QueryEntities(), (entity: QueryEntityModel) => {\r\n\t\t\t\t_.each(entity.Metadata.Fields, (fieldMetadata: FieldMetadataModel) => {\r\n\t\t\t\t\tconst existsField = _.find(this.ValueFields(), (field) => {\r\n\t\t\t\t\t\treturn field.QueryEntityGuid === entity.Guid && field.FieldMetadata.Id === fieldMetadata.Id;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (!existsField && TYPES_COMPATIBILITY[this.SelectedField().FieldMetadata.Type].Types.indexOf(fieldMetadata.Type) >=0 ) {\r\n\t\t\t\t\t\tthis.ValueFields.push(new ConditionItemField(entity, fieldMetadata));\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._model.ValueColumn && this._model.ValueType === ConditionValueTypes.Column) {\r\n\t\t\t\tconst selectedField = _.find(this.ValueFields(),\r\n\t\t\t\t\t(field) => {\r\n\t\t\t\t\t\treturn field.QueryEntityGuid === this._model.ValueColumn.QueryEntityGuid &&\r\n\t\t\t\t\t\t\tfield.FieldMetadata.Id === this._model.ValueColumn.Metadata.Id;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tif (selectedField) {\r\n\t\t\t\t\tthis._model.ValueColumn.Metadata = selectedField.FieldMetadata;\r\n\t\t\t\t\tthis.SelectedValueField(selectedField);\r\n\t\t\t\t\tthis.SelectedValueFieldId(selectedField.id);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst firstField = _.first(this.ValueFields());\r\n\t\t\t\t\tif (firstField) {\r\n\t\t\t\t\t\tthis.SelectedValueField(firstField);\r\n\t\t\t\t\t\tthis.SelectedValueFieldId(firstField.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\t}\r\n\r\n\tget Model() {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\tPasteVariable(controlField: string) {\r\n\t\tconst editor = new Text();\r\n\r\n\t\teditor.Value(controlField);\r\n\t\tthis._fieldValueEditors([editor]);\r\n\t\tthis._model.ValueType = ConditionValueTypes.ScreenVariable;\r\n\t\tthis._model.Value = controlField;\r\n\t\tthis.IsEnableResetButton(true);\r\n\r\n\t\teditor.Value.subscribe((newValue) => {\r\n\t\t\tthis._model.Value = newValue;\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tFormatControlField(controlField: IControlAttachedField){\r\n\t\tif(controlField.ControlType === CONTROL_TYPES.LinkList){\r\n\t\t\treturn `$[LinkList].[Main].[${controlField.Field.EntityName}].[${controlField.Field.Name}]`;\r\n\t\t}\r\n\r\n\t\treturn `$[${controlField.Field.EntityName}].[${controlField.Field.Name}]`;\r\n\t}\r\n\r\n\tPasteFunction(func: string) {\r\n\t\tconst editor = new Text();\r\n\r\n\t\teditor.Value(func);\r\n\t\tthis._fieldValueEditors([editor]);\r\n\t\tthis._model.ValueType = ConditionValueTypes.Function;\r\n\t\tthis._model.Value = func;\r\n\t\tthis.IsEnableResetButton(true);\r\n\r\n\t\teditor.Value.subscribe((newValue) => {\r\n\t\t\tthis._model.Value = newValue;\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tPasteQuery() {\r\n\t\tconst editor = new QueryBuilder(this.SelectedField().FieldMetadata, this._originalScreenFields);\r\n\r\n\t\tthis._fieldValueEditors([editor]);\r\n\t\teditor.ShowQueryBuilder();\r\n\t\tthis._model.ValueType = ConditionValueTypes.QueryBuilder;\r\n\t\tthis.IsEnableAddMultipleValues(false);\r\n\r\n\t\teditor.Value.subscribe((newValue) => {\r\n\t\t\tthis._model.Value = newValue;\r\n\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\r\n\t\tthis.IsEnableResetButton(true);\r\n\t}\r\n\r\n\tReset() {\r\n\t\tthis._model.ValueType = ConditionValueTypes.General;\r\n\t\tthis._model.Value = '';\r\n\t\tthis.UpdateEditor();\r\n\t\tthis.IsEnableResetButton(false);\r\n\t\tthis.IsEnableAddMultipleValues(this._model.Operator === ComparisonOperators.In || (this.SelectedField() ? this.SelectedField().FieldMetadata.Type === FIELD_TYPES.MultiSelect : false) );\r\n\t}\r\n\r\n\r\n\tShowValueFieldList() {\r\n\t\tthis.ShowValueEditorButton(true);\r\n\t\tthis.ShowValueFieldListButton(false);\r\n\r\n\t\tif (this.SelectedField()) {\r\n\t\t\tthis.UpdateValueFieldList();\r\n\t\t}\r\n\t}\r\n\r\n\tShowValueEditor() {\r\n\t\tthis.ShowValueFieldListButton(true);\r\n\t\tthis.ShowValueEditorButton(false);\r\n\t}\r\n}","// Module\nvar code = \"<form class=\\\"form-horizontal\\\"> <div class=\\\"control-group\\\"> <div class=\\\"controls form-inline\\\"> <select data-bind=\\\"selectize: $data.Fields,\\r\\n\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\tdropdownDirection: 'auto',\\r\\n\\t\\t\\t\\t\\t\\tdropdownParent: 'body',\\r\\n\\t\\t\\t\\t\\t\\tplugins: ['hidden_textfield', 'scroll_parent', 'dropdown_direction'],\\r\\n\\t\\t\\t\\t\\t\\tplaceholder: 'Select value...',\\r\\n\\t\\t\\t\\t\\t\\ttitle: $data.SelectedField() && $data.SelectedField().Title || ''\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\toptionsText: 'title',\\r\\n\\t\\t\\t\\t\\tvalue: $data.SelectedFieldId,\\r\\n\\t\\t\\t\\t\\tobject: $data.SelectedField\\\" class=\\\"form-control input-sm dropdown-selectize-medium\\\"> </select> <select data-bind=\\\"options: $data._comparisonOperators, optionsText: 'Label', value: $data._operator\\\" class=\\\"form-control input-sm dropdown-selectize-small\\\"></select> <!-- ko if: $data.ShowValueFieldListButton() --> <!-- ko foreach: $data._fieldValueEditors --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- ko if: $parent._fieldValueEditors().length > 1 --> <div class=\\\"btn-group multiple-values-btn-group\\\" style=\\\"display:inline-block\\\"> <a data-bind=\\\"click: $parent.RemoveEditor.bind($parent, $data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only red\\\" title=\\\"Remove\\\"> <i class=\\\"fa fa-minus\\\"></i> </a> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: IsEnableAddMultipleValues --> <div class=\\\"btn-group multiple-values-btn-group\\\" style=\\\"display:inline-block\\\"> <a data-bind=\\\"click: $data.AddEditor.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only green\\\" title=\\\"Add\\\"> <i class=\\\"fa fa-plus\\\"></i> </a> </div> <!-- /ko --> <!-- ko if: IsEnableResetButton --> <a data-bind=\\\"click: $data.Reset.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only red reset\\\" title=\\\"Reset\\\"> <i class=\\\"fa fa-refresh\\\"></i> </a> <!-- /ko --> <!-- ko if: IsEnableShowParam --> <span class=\\\"show-params-wrapper\\\"> <span>Show param</span> <input data-bind=\\\"uniform: ShowParam, checked: ShowParam\\\" type=\\\"checkbox\\\"> </span> <!-- /ko --> <!-- /ko --> <!-- ko if: !$data.ShowValueFieldListButton() --> <select data-bind=\\\"selectize: $data.ValueFields,\\r\\n\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\tdropdownDirection: 'auto',\\r\\n\\t\\t\\t\\t\\t\\tdropdownParent: 'body',\\r\\n\\t\\t\\t\\t\\t\\tplugins: ['hidden_textfield', 'scroll_parent'],\\r\\n\\t\\t\\t\\t\\t\\tplaceholder: 'Select value...',\\r\\n\\t\\t\\t\\t\\t\\ttitle: $data.SelectedValueField() && $data.SelectedValueField().Title || ''\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\toptionsText: 'title',\\r\\n\\t\\t\\t\\t\\tvalue: $data.SelectedValueFieldId,\\r\\n\\t\\t\\t\\t\\tobject: $data.SelectedValueField\\\" class=\\\"form-control input-sm dropdown-selectize-medium\\\"> </select> <!-- /ko --> <div class=\\\"btn-group\\\"> <a data-bind=\\\"click: $parent.DeleteConditionRule.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tattr: { title: $data._labels.REMOVE_LABEL}\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only red\\\"> <i class=\\\"fa fa-remove\\\"></i> </a> <div class=\\\"pasteVariableDropdownBox\\\"> <a data-bind=\\\"click: ShowPasteVariableDropdown, attr: {\\r\\n\\t\\t\\t\\t\\t'disabled': !$data.IsEnableQueryBuilder() && $data._screenFields().length === 0 && $data._functions().length === 0,\\r\\n\\t\\t\\t\\t\\t'title': $data._labels.PASTE_VARIABLE_LABEL}\\\" class=\\\"btn btn-icon-only blue dropdown-toggle\\\" href=\\\"#\\\"> <i class=\\\"fa fa-list\\\"></i> </a> </div> <a data-bind=\\\"click: $data.ShowValueFieldList.bind($data), visible: $data.ShowValueFieldListButton\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only blue\\\"> <i class=\\\"fa fa-list-alt\\\"></i> </a> <a data-bind=\\\"click: $data.ShowValueEditor.bind($data), visible: $data.ShowValueEditorButton\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only blue\\\"> <i class=\\\"fa fa-edit\\\"></i> </a> </div> </div> </div> </form>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"condition-items__row\\\"> <div class=\\\"condition-items__cell field-column\\\"> <!-- ko with: $data.SelectedField --> <span data-bind=\\\"text: Title\\\"></span> <!-- /ko --> </div> <div class=\\\"condition-items__cell condition-items__operator\\\"> <!-- ko with: $data._operator --> <span data-bind=\\\"text: Label\\\"></span> <!-- /ko --> </div> <div class=\\\"condition-items__cell condition-items__value-column\\\"> <!-- ko foreach: $data._fieldValueEditors --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"value-column\\\"> <!-- ko foreach: $data._fieldValueEditors --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","import {FIELD_TYPES} from 'Core/Constant';\r\nimport {ComparisonOperators} from 'QueryBuilder/Enums';\r\n\r\nexport const FUNCTIONS = {\r\n\tTODAY: '$Now',\r\n\tTODAY_ADD_DAYS: '$Now.AddDays(1)',\r\n\tUSER: '$UserId',\r\n\tOWNER_PROFILE: '$OwnerProfileId',\r\n\tSUBJECT_RECORD_ID: '$SubjectRecordId',\r\n\tSUBJECT_TYPE_ID: '$SubjectTypeId',\r\n\tSUBJECT_STATUS_ID: '$SubjectStatusId',\r\n\tSUBJECT_KIND_ID: '$SubjectKindId',\r\n IMPORT_METHOD_ID: \"$ImportMethodId\"\r\n}\r\n\r\ninterface IDictionary<T> {\r\n\t[k: string]: T;\r\n}\r\n\r\nexport interface IConditionItemConfig {\r\n\tShowParam: boolean;\r\n\tOperators: Array<ComparisonOperators>;\r\n\tFunctions: Array<string>;\r\n}\r\n\r\nexport interface ITypeCompatibility {\r\n\tTypes: Array<string>;\r\n}\r\n\r\nexport var CONFIG: IDictionary<IConditionItemConfig> = { };\r\n\r\nexport var TYPES_COMPATIBILITY: IDictionary<ITypeCompatibility> = { };\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Spim] = {\r\n\tTypes: []\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Text] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Text,\r\n\t\tFIELD_TYPES.Alias,\r\n\t\tFIELD_TYPES.Color,\r\n\t\tFIELD_TYPES.Icon\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Alias] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Text,\r\n\t\tFIELD_TYPES.Alias,\r\n\t\tFIELD_TYPES.Color,\r\n\t\tFIELD_TYPES.Icon\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Color] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Text,\r\n\t\tFIELD_TYPES.Alias,\r\n\t\tFIELD_TYPES.Color,\r\n\t\tFIELD_TYPES.Icon\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Memo] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Memo\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Integer] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.PKey] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.YesNo] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Sort] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Decimal] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Lookup] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Radio] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Reference] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Reference\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.MultiSelect] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.MultiSelect\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Date] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Date,\r\n\t\tFIELD_TYPES.DateTime,\r\n\t\tFIELD_TYPES.Time,\r\n\t\tFIELD_TYPES.TimeSpan\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.DateTime]= {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Date,\r\n\t\tFIELD_TYPES.DateTime,\r\n\t\tFIELD_TYPES.Time,\r\n\t\tFIELD_TYPES.TimeSpan\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Time]= {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Date,\r\n\t\tFIELD_TYPES.DateTime,\r\n\t\tFIELD_TYPES.Time,\r\n\t\tFIELD_TYPES.TimeSpan\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.TimeSpan] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Date,\r\n\t\tFIELD_TYPES.DateTime,\r\n\t\tFIELD_TYPES.Time,\r\n\t\tFIELD_TYPES.TimeSpan\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Currency] = { Types: [] };\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Document] = { Types: [] };\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Image] = { Types: [] };\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Icon] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Text,\r\n\t\tFIELD_TYPES.Alias,\r\n\t\tFIELD_TYPES.Color\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Password]= { Types: [] };\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Guid] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Guid\r\n\t]\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Alias] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n\t\tComparisonOperators.Like,\r\n\t\tComparisonOperators.StartsWith,\r\n\t\tComparisonOperators.NotStartWith,\r\n\t\tComparisonOperators.EndsWith,\r\n\t\tComparisonOperators.NotEndWith,\r\n\t\tComparisonOperators.NotLike\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Color] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Date] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n ], Functions: [FUNCTIONS.TODAY, FUNCTIONS.TODAY_ADD_DAYS]\r\n};\r\n\r\nCONFIG[FIELD_TYPES.DateTime] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n ], Functions: [FUNCTIONS.TODAY, FUNCTIONS.TODAY_ADD_DAYS]\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Time] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.TimeSpan] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Decimal] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Document] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.FlagCheck] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Guid] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Icon] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Image] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Integer] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual\r\n\t], Functions: [\r\n\t\tFUNCTIONS.USER,\r\n\t\tFUNCTIONS.SUBJECT_RECORD_ID,\r\n\t\tFUNCTIONS.SUBJECT_TYPE_ID,\r\n\t\tFUNCTIONS.SUBJECT_KIND_ID,\r\n\t\tFUNCTIONS.SUBJECT_STATUS_ID,\r\n\t\tFUNCTIONS.OWNER_PROFILE,\r\n\t\tFUNCTIONS.IMPORT_METHOD_ID\r\n\t]\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Lookup] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: [\r\n\t\tFUNCTIONS.USER,\r\n\t\tFUNCTIONS.SUBJECT_RECORD_ID,\r\n\t\tFUNCTIONS.SUBJECT_TYPE_ID,\r\n\t\tFUNCTIONS.SUBJECT_KIND_ID,\r\n\t\tFUNCTIONS.SUBJECT_STATUS_ID,\r\n\t\tFUNCTIONS.OWNER_PROFILE,\r\n\t\tFUNCTIONS.IMPORT_METHOD_ID\r\n\t]\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Memo] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.MultiSelect] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Password] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.PKey] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n\t\tComparisonOperators.Like,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessOrEqual,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.StartsWith,\r\n\t\tComparisonOperators.EndsWith,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.NotStartWith,\r\n\t\tComparisonOperators.NotEndWith,\r\n\t\tComparisonOperators.NotLike\r\n\t], Functions: [\r\n\t\tFUNCTIONS.USER,\r\n\t\tFUNCTIONS.SUBJECT_RECORD_ID,\r\n\t\tFUNCTIONS.SUBJECT_TYPE_ID,\r\n\t\tFUNCTIONS.SUBJECT_KIND_ID,\r\n\t\tFUNCTIONS.SUBJECT_STATUS_ID,\r\n\t\tFUNCTIONS.IMPORT_METHOD_ID\r\n\t]\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Radio] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Text] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Like,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual,\r\n\t\tComparisonOperators.StartsWith,\r\n\t\tComparisonOperators.NotStartWith,\r\n\t\tComparisonOperators.EndsWith,\r\n\t\tComparisonOperators.NotEndWith,\r\n\t\tComparisonOperators.NotLike\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.YesNo] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual\r\n\t], Functions: []\r\n};\r\n\r\n\r\nCONFIG[FIELD_TYPES.Spim] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals\r\n\t], Functions: []\r\n};","export var EVENTS = {\r\n\tSAVE: 'SAVE'\r\n}","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryConditionGroupModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport { QueryConditionItemModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { ConditionItem } from 'QueryBuilder/QueryCondition/ConditionItem/ConditionItem';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { EVENTS } from 'QueryBuilder/QueryParamsPage/Events';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport { EntityMetadataStore } from 'QueryBuilder/Stores/EntityMetadataStore';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport { FIELD_TYPES } from 'Core/Constant';\r\nimport { ConditionValueTypes } from 'QueryBuilder/Enums';\r\n\r\nimport clone from 'clone'\r\n\r\nimport Template from 'QueryBuilder/QueryParamsPage/Templates/QueryParamsPage.html';\r\nimport { ConditionGroup } from '../QueryCondition/ConditionGroup/ConditionGroup';\r\nimport { Utils } from '../../Core/Common/Utils';\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\n\r\nko.templates['QueryBuilder/QueryParamsPage/Templates/QueryParamsPage'] = Template;\r\n\r\nexport class QueryParamsPage extends Event {\r\n\tprivate _model: QueryExpressionModel;\r\n\tprivate _modal: Modal;\r\n\tprivate _showParameters: KnockoutObservableArray<ConditionItem>;\r\n\tprivate _spimParameters: Array<ConditionItem>;\r\n\tprivate _labels = LABELS;\r\n\tprivate _queryType: string;\r\n\tprivate _spimConditions: KnockoutObservableArray<ConditionGroup>;\r\n\tprivate _planningDate: string;\r\n\r\n\tconstructor(model: QueryExpressionModel, queryType: string, planningDate: string = '') {\r\n\t\tsuper();\r\n\t\tthis._planningDate = planningDate;\r\n\t\tthis._model = model;\r\n\t\tthis._queryType = queryType;\r\n\t\tthis._showParameters = ko.observableArray([]);\r\n\t\tthis._spimParameters = [];\r\n\t\tthis._spimConditions = ko.observableArray(null);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tthis.AddEvent(EVENTS.SAVE);\r\n\t}\r\n\r\n\tget SpimCondition(): KnockoutObservableArray<ConditionGroup>{\r\n\t\treturn this._spimConditions;\r\n\t}\r\n\r\n\tget ConditionItems(): KnockoutObservableArray<ConditionItem> {\r\n\t\treturn this._showParameters;\r\n\t}\r\n\r\n\tHasShowParameters() {\r\n\t\tvar showParameters = this.GetShowParams(this._model.Condition);\r\n\t\treturn showParameters.length > 0;\r\n\t}\r\n\r\n\tprivate GetShowParams(condition: QueryConditionGroupModel): Array<QueryConditionItemModel> {\r\n\t\treturn _.filter(Util.GetAllConditions(this._model.Condition), item=>item.ShowParam);\r\n\t}\r\n\r\n\tShow() {\r\n\t\tlet autoStart = !!this._planningDate;\r\n\t\tvar entities = Util.GetAllQueryEntities(this._model);\r\n\t\tvar ids = _.map(entities, (entity) => { return entity.Metadata.Id });\r\n\t\tBlockUI.Block();\r\n\t\tEntityMetadataStore.GetEntitiesMetadata({ EntityIds: ids })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\t_.each(entities, (entity) => {\r\n\t\t\t\t\tvar metadata = _.find(data, (item) => item.EntityMetadata.Id === entity.Metadata.Id);\r\n\t\t\t\t\tif (metadata) {\r\n\t\t\t\t\t\tentity.Metadata = metadata.EntityMetadata;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tlet spimParams = [];\t\r\n\t\t\t_.each(this.GetShowParams(this._model.Condition), (item) => {\r\n\t\t\t\tvar conditionItem = new ConditionItem(item, ko.observableArray(entities), [], false);\r\n\t\t\t\tif(conditionItem.HasMetadata){\r\n\r\n\t\t\t\t\tif(conditionItem.Model.Column.Metadata.Name === 'DECDATE'){\r\n\t\t\t\t\t\tconditionItem.Model.Value = this._planningDate;\r\n\t\t\t\t\t\tconditionItem.UpdateEditor();\r\n\t\t\t\t\t}else if(!!this._planningDate){\r\n\t\t\t\t\t\tautoStart = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif((conditionItem.Model.Column.Metadata.Type === FIELD_TYPES.Spim\r\n\t\t\t\t\t\t|| conditionItem.Model.Column.Metadata.Name === 'F_UNIT'\r\n\t\t\t\t\t\t|| conditionItem.Model.Column.Metadata.Name === 'F_FEATURE')\r\n\t\t\t\t\t\t&& this._queryType === ViewModes[ViewModes.Spim])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\titem.IsEnabled = false;\r\n\t\t\t\t\t\tspimParams.push(conditionItem);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis._showParameters.push(conditionItem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tspimParams = this.SortSpimConditions(spimParams);\r\n\r\n\t\t\tthis._spimParameters = spimParams;\r\n\r\n\t\t\tconst resizePopupOptions = {\r\n widthInPercent: MobileChecker.IsMobile() ? 95 : 85,\r\n heightInPercent: MobileChecker.IsMobile() ? 60 : 50\r\n };\r\n\r\n\t\t\tif(!autoStart){\r\n\t\t\t\tthis._modal = new Modal( {\r\n\t\t\t\t\taddClass: 'query-builder-modal-Spim jBox-padding-15px',\r\n\t\t\t\t}, false, false, resizePopupOptions);\r\n\t\t\t\tthis.Render();\r\n\t\t\t}else{\r\n\t\t\t\tthis.Trigger(EVENTS.SAVE);\r\n\t\t\t}\t\t\t\r\n\t\t});\r\n\t}\r\n\r\n\tSortSpimConditions(conditionItems: Array<ConditionItem>){\r\n\t\treturn _.sortBy(conditionItems, (param) => {\r\n\t\t\tif(param.Model.Column.Metadata.Name === 'F_FEATURE'){\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(param.Model.Column.Metadata.Type === FIELD_TYPES.Spim){\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\tif(param.Model.Column.Metadata.Name === 'F_UNIT'){\r\n\t\t\t\treturn 2;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tAddSpimCondition(){\r\n\t\tvar entities = Util.GetAllQueryEntities(this._model);\r\n\t\tlet newGroupModel = new QueryConditionGroupModel();\r\n\r\n\t\t_.each(this._spimParameters, (param) => {\r\n\t\t\tlet paramModel = clone(param.Model) as QueryConditionItemModel;\r\n\t\t\tparamModel.IsEnabled = true;\r\n\t\t\tnewGroupModel.Items.push(paramModel);\r\n\t\t});\r\n\r\n\t\tlet newGroup = new ConditionGroup(false, newGroupModel, ViewModes.Spim, ko.observableArray(entities), [], false);\r\n\r\n\t\tthis._spimConditions.push(newGroup);\r\n\t\tthis._model.Condition.ConditionGroups.push(newGroupModel);\r\n\r\n\t\tif(!this._model.SpimCondition){\r\n\t\t\tthis._model.SpimCondition = new QueryConditionGroupModel();\r\n\t\t}\r\n\r\n\t\tthis._model.SpimCondition.ConditionGroups.push(newGroupModel);\r\n\t}\r\n\r\n\tRemoveSpimCondition(group: ConditionGroup){\r\n\t\tthis._spimConditions.splice(this._spimConditions().indexOf(group), 1);\r\n\t\tthis._model.Condition.ConditionGroups.splice(this._model.Condition.ConditionGroups.indexOf(group.Model), 1);\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tif (this._modal) {\r\n\t\t\tthis._modal.Show();\r\n\t\t}\r\n\t}\r\n\r\n\tRender(): void {\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'QueryBuilder/QueryParamsPage/Templates/QueryParamsPage';\r\n\t}\r\n\r\n\tSave() {\r\n\t\tthis.Trigger(EVENTS.SAVE);\r\n\t\tthis.Close();\r\n\t}\r\n\r\n\tClose() {\r\n\t\tif (this._modal) {\r\n\t\t\tthis._modal.Close();\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"portlet light\\\"> <div class=\\\"relative-block\\\"> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"pull-left\\\"> <a data-bind=\\\"click: Save\\\" href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-play run-query-icon\\\"></i> <!-- ko text: _labels.RUN --><!-- /ko --> </a> <a data-bind=\\\"click: Close\\\" href=\\\"javascript:;\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\"> <i class=\\\"fa fa-close\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a> </div> </div> </div> </form> </div> <div class=\\\"condition-items\\\"> <div class=\\\"box-shadow-wrapper margin-t-15px\\\"> <div class=\\\"condition-items-wrap\\\"> <!-- ko foreach: ConditionItems --> <!-- ko template: { html: $data.GetSimpleTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div> </div> <!-- ko if: _spimParameters.length > 0 --> <div class=\\\"box-shadow-wrapper margin-t-15px\\\"> <div class=\\\"form-group condition-item-simple\\\"> <div class=\\\"controls form-inline row ConsultScreenView EditScreenView\\\"> <fieldset class=\\\"group-control\\\"> <legend class=\\\"group-control-label\\\" data-bind=\\\"text: 'Spim'\\\"></legend> <div class=\\\"group-elements\\\"> <div class=\\\"group-elements-container\\\"> <!-- ko foreach: _spimParameters --> <div class=\\\"columnTitle\\\" data-bind=\\\"text: Model.Column.Metadata.Name\\\"></div> <!-- /ko --> <div class=\\\"actionsBox\\\"> </div> </div> </div> <!-- ko foreach: _spimConditions --> <div class=\\\"group-elements\\\"> <div class=\\\"group-elements-container\\\"> <!-- ko foreach: ConditionItems --> <!-- ko template: { html: $data.GetSPIMTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <div class=\\\"actionsBox\\\"> <a href=\\\"javascript:;\\\" class=\\\"btn red delete-button subFormControl\\\" data-bind=\\\"click: $parent.RemoveSpimCondition.bind($parent, $data), tooltip:{ content: $parent._labels.REMOVE_LABEL} \\\"> <i class=\\\"fa fa-trash\\\"></i> </a> </div> </div> </div> <!-- /ko --> <a data-bind=\\\"click: AddSpimCondition\\\" href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-plus\\\"></i> </a> </fieldset> </div> </div> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport { OperationResultModel } from 'Core/Models/OperationResultModel';\r\n\r\nexport interface IDeleteQueryRequestModel {\r\n\tId: number;\r\n};\r\n\r\nexport class DeleteQueryStore {\r\n\tstatic Delete(params: IDeleteQueryRequestModel): P.Promise<OperationResultModel> {\r\n\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.DELETE_QUERY,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {EntityRelationshipsMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\n\r\nexport interface IGetEntityMetadataRequestModel {\r\n\tEntityId: number;\r\n};\r\n\r\nexport interface IGetEntitiesMetadataRequestModel {\r\n\tEntityIds: Array<number>;\r\n};\r\n\r\nexport class EntityMetadataStore {\r\n\t\r\n\tstatic GetEntityMetadata(params: IGetEntityMetadataRequestModel): P.Promise<EntityRelationshipsMetadataModel> {\r\n\r\n\t\tvar deferredResult = P.defer<EntityRelationshipsMetadataModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/VisualQueryBuilderApi/GetEntityMetadata',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tvar result = <EntityRelationshipsMetadataModel>Deserialize(data, EntityRelationshipsMetadataModel);\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetEntitiesMetadata(params: IGetEntitiesMetadataRequestModel): P.Promise<Array<EntityRelationshipsMetadataModel>> {\r\n\r\n\t\tvar deferredResult = P.defer<Array<EntityRelationshipsMetadataModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/VisualQueryBuilderApi/GetEntitiesMetadata',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tvar result = Deserialize(data, EntityRelationshipsMetadataModel);\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n}","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {OperationResultModel} from 'Core/Models/OperationResultModel';\r\nimport {EditQueryModel} from 'QueryBuilder/Models/EditQueryModel';\r\n\r\nexport interface IGetQueryRequestModel {\r\n\tId: number;\r\n};\r\n\r\nexport class GetQueryStore {\r\n\tstatic Get(params: IGetQueryRequestModel): P.Promise<EditQueryModel> {\r\n\r\n\t\tvar deferredResult = P.defer<EditQueryModel>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.EDIT_QUERY,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t}).fail(error=>{\r\n\t\t\t\tconst errorObject = JSON.parse(error.message);\r\n\t\t\t\tconst errorMessage = errorObject.Message;\r\n\t\t\t\tdeferredResult.reject({message: errorMessage});\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetToolbarQuery(params: IGetQueryRequestModel): P.Promise<EditQueryModel> {\r\n\t\tvar deferredResult = P.defer<EditQueryModel>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.GET_TOOLBAR_QUERY,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t}).fail(error=>{\r\n\t\t\t\tconst errorObject = JSON.parse(error.message);\r\n\t\t\t\tconst errorMessage = errorObject.Message;\r\n\t\t\t\tdeferredResult.reject({message: errorMessage});\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): EditQueryModel {\r\n\t\tconst model = <EditQueryModel>Deserialize(jsonObject, EditQueryModel);\r\n\t\treturn model;\r\n\t}\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {URL} from 'Core/Common/Url';\r\nimport {IRequestOptions, Request} from 'Core/Common/Request';\r\n\r\nimport {OperationResultModel} from 'Core/Models/OperationResultModel';\r\n\r\nexport interface ILockQueryRequestModel {\r\n Id: number;\r\n}\r\n\r\nexport class LockQueryStore {\r\n static Lock(params: ILockQueryRequestModel) {\r\n const deferredResult = P.defer<OperationResultModel>();\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.QUERY_BUILDER.LOCK_QUERY,\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: params\r\n };\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({ message: data.ErrorMessage });\r\n }\r\n\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static Unlock(params: ILockQueryRequestModel) {\r\n const deferredResult = P.defer<OperationResultModel>();\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.QUERY_BUILDER.UNLOCK_QUERY,\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: params\r\n };\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({ message: data.ErrorMessage });\r\n }\r\n\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class GenericButtonModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {GenericButtonModel} from 'QueryBuilder/Models//GenericButtonModel';\r\n\r\nexport class QueryScreenModel {\r\n\r\n\tconstructor(){\r\n\t\tthis.GenericButtons = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserializeAs(GenericButtonModel)\r\n\tGenericButtons: Array<GenericButtonModel>;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class CardScreenModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport * as ko from 'knockout';\r\n\r\nexport class RelationTypeValueModel {\r\n\r\n\tpublic ShowNexRelationButton: KnockoutObservable<boolean>;\r\n\r\n public ShowEditRelationButton: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(){\r\n\t\tthis.ShowNexRelationButton = ko.observable(false);\r\n\t\tthis.ShowEditRelationButton = ko.observable(false);\r\n\t}\r\n\r\n\t@deserialize\r\n\tRelationTypeValueId: number;\r\n\r\n\t@deserialize\r\n\tRelationTypeValue: string;\r\n\r\n @deserialize\r\n\tType: string;\r\n\r\n\tget FullName(){\r\n\t\treturn `${this.Type}: ${this.RelationTypeValue}`;\r\n\t}\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {QueryScreenModel} from 'QueryBuilder/Models/QueryScreenModel';\r\nimport {CardScreenModel} from 'QueryBuilder/Models/CardScreenModel';\r\nimport { RelationTypeValueModel } from 'QueryBuilder/Models/RelationTypeValueModel';\r\n\r\nexport interface IInitTableViewQueryRequestModel {\r\n\tSubjectEntityId: number;\r\n\tControlId: number;\r\n\tQueryTypeName: string;\r\n};\r\n\r\nexport interface IGetQueryScreenRequestModel {\r\n\tEntityId: number;\r\n}\r\n\r\nexport interface IGetCardScreenRequestModel {\r\n\tEntityId: number;\r\n}\r\n\r\nexport interface IGetRelationTypeDto {\r\n\tLinkTableId: number;\r\n}\r\n\r\nexport class QueryBuilderStore {\r\n\tstatic GetQueryScreens(params: IGetQueryScreenRequestModel): P.Promise<Array<QueryScreenModel>> {\r\n\t\tvar deferredResult = P.defer<Array<QueryScreenModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.GET_QUERY_SCREENS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<Array<QueryScreenModel>>Deserialize(data.ResultObject, QueryScreenModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetCardScreens(params: IGetCardScreenRequestModel): P.Promise<Array<CardScreenModel>> {\r\n\t\tvar deferredResult = P.defer<Array<CardScreenModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.GET_CARD_SCREENS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<Array<CardScreenModel>>Deserialize(data, CardScreenModel));\r\n\t\t\t}).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });;\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic GetRelationTypes(params: IGetRelationTypeDto): P.Promise<Array<RelationTypeValueModel>> {\r\n\t\tlet deferredResult = P.defer<Array<RelationTypeValueModel>>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/VisualQueryBuilderApi/GetRelationTypes',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<Array<RelationTypeValueModel>>Deserialize(data, RelationTypeValueModel));\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });;\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n} ","import { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport {QueryColumnModel} from \"../Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel\";\r\nimport { QueryConditionGroupModel } from '../Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport { ConditionValueTypes } from 'QueryBuilder/Enums';\r\nimport { QueryConditionItemModel } from '../Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\nimport { g } from 'libs/rappid/build/rappid';\r\n\r\nexport class Util {\r\n\r\n\tpublic static GetParentEntity(entity: QueryEntityModel, expression: QueryExpressionModel): QueryEntityModel{\r\n\t\tlet result: QueryEntityModel = null;\r\n\t\tif(expression.Entity === entity) return null;\r\n\r\n\t\tlet joins = expression.EntityJoins\r\n\t\t\t.concat(expression.LookupEntityJoins)\r\n\t\t\t.concat(expression.ReferenceEntityJoins)\r\n\t\t\t.concat(expression.ReferenceLookupEntityJoins)\r\n\t\t\t.concat(expression.SubEntityJoins);\r\n\r\n\t\t_.each(joins,\r\n\t\t\tjoin => {\r\n\t\t\t\tif(join.LinkEntity === entity) {\r\n\t\t\t\t\tresult = expression.Entity;\r\n\t\t\t\t}\r\n\t\t\t\tif(join.Entity === entity){\r\n\t\t\t\t\tresult = expression.Entity;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresult = result ? result : this.GetParentEntityFromJoin(join, entity);\r\n\t\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\tstatic GetParentEntityFromJoin(join: QueryEntityJoinModel, entity: QueryEntityModel): QueryEntityModel {\r\n\t\tlet result: QueryEntityModel = null;\r\n\t\tlet joins = join.Joins.concat(join.LookupEntityJoins).concat(join.ReferenceEntityJoins).concat(join.SubEntityJoins);\r\n\r\n\t\t_.each(joins,\r\n\t\t\titem => {\r\n\t\t\t\tif(item.LinkEntity){\r\n\t\t\t\t\tif(item.LinkEntity === entity){\r\n\t\t\t\t\t\tresult = join.Entity;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(item.Entity === entity){\r\n\t\t\t\t\tresult = join.Entity;\r\n\t\t\t\t};\r\n\t\t\t\tresult = result ? result : this.GetParentEntityFromJoin(item, entity);\r\n\t\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic static GetAllQueryColumns(expression: QueryExpressionModel): Array<QueryColumnModel>{\r\n\t\tlet result = [];\r\n\t\tlet allEntities = this.GetAllQueryEntities(expression);\r\n\t\t_.each(allEntities, (entity) => {\r\n\t\t\tresult = result.concat(entity.Columns);\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic static GetAllQueryEntities(expression: QueryExpressionModel): Array<QueryEntityModel> {\r\n\t\tlet result = [];\r\n\t\tresult.push(expression.Entity);\r\n\r\n\t\tlet allJoins = expression.EntityJoins\r\n\t\t\t.concat(expression.LookupEntityJoins)\r\n\t\t\t.concat(expression.ReferenceLookupEntityJoins)\r\n\t\t\t.concat(expression.ReferenceEntityJoins)\r\n\t\t\t.concat(expression.SubEntityJoins);\r\n\r\n\t\t_.each(allJoins,\r\n\t\t\tjoin => {\r\n\t\t\t\tif(join){\r\n\t\t\t\t\tif(join.LinkEntity){\r\n\t\t\t\t\t\tresult.push(join.LinkEntity);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tresult.push(join.Entity);\r\n\t\t\t\t\tresult = result.concat(this.GetAllQueryEntitiesFromJoin(join));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\r\n\t\tlet conditions = _.filter(this.GetAllConditions(expression.Condition), item=> item.ValueType === ConditionValueTypes.QueryBuilder);\r\n\r\n\t\t_.each(conditions, (condition)=>{\r\n\t\t\tif(condition.SubQuery){\r\n\t\t\t\tresult = result.concat(this.GetAllQueryEntities(condition.SubQuery))\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tstatic GetAllQueryEntitiesFromJoin(join: QueryEntityJoinModel): Array<QueryEntityModel> {\r\n\t\tlet result = [];\r\n\t\tlet joins = join.Joins\r\n\t\t\t.concat(join.LookupEntityJoins)\r\n\t\t\t.concat(join.ReferenceEntityJoins)\r\n\t\t\t.concat(join.SubEntityJoins)\r\n\t\t\t.concat(join.ReferenceLookupEntityJoins ? join.ReferenceLookupEntityJoins : join.ReferenceLookupEntityJoins = []);\r\n\r\n\t\t_.each(joins,\r\n\t\t\titem => {\r\n\t\t\t\tif(item.LinkEntity){\r\n\t\t\t\t\tresult.push(item.LinkEntity);\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(item.Entity);\r\n\t\t\t\tresult = result.concat(this.GetAllQueryEntitiesFromJoin(item));\r\n\t\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tstatic GetAllConditions(condition: QueryConditionGroupModel): Array<QueryConditionItemModel>{\r\n\t\tvar result = [];\r\n\r\n\t\tif(!condition){\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\t_.each(condition.Items, (item) => {\r\n\t\t\tresult.push(item);\r\n\r\n\t\t\tif(item.ValueType === ConditionValueTypes.QueryBuilder && item.SubQuery){\r\n\t\t\t\tresult = result.concat(this.GetAllConditions(item.SubQuery.Condition));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t_.each(condition.ConditionGroups, (group) => {\r\n\t\t\tresult = result.concat(this.GetAllConditions(group));\r\n\t\t});\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic static GetAllJoins(expression: QueryExpressionModel): Array<QueryEntityJoinModel> {\r\n\t\tlet result = [];\r\n\t\r\n\t\tresult = [...expression.EntityJoins, ...expression.SubEntityJoins, ...expression.LookupEntityJoins, ...expression.ReferenceLookupEntityJoins, ...expression.ReferenceEntityJoins];\r\n\r\n\t\t_.each(result, (join)=>{\r\n\t\t\tresult = result.concat(this.GetAllJoinsFromJoin(join))\t\t\t\t\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic static GetAllJoinsFromJoin(queryJoin: QueryEntityJoinModel): Array<QueryEntityJoinModel> {\r\n\t\tlet result = [];\r\n\t\r\n\t\tresult = [...queryJoin.Joins, ...queryJoin.SubEntityJoins, ...queryJoin.LookupEntityJoins, ...queryJoin.ReferenceLookupEntityJoins, ...queryJoin.ReferenceEntityJoins];\r\n\r\n\t\t_.each(result, (join)=>{\r\n\t\t\tresult = result.concat(this.GetAllJoinsFromJoin(join));\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic static GetEntityByGuid(guid: string, query: QueryExpressionModel){\r\n\t\treturn _.find(this.GetAllQueryEntities(query), (e)=>e.Guid === guid);\r\n\t}\r\n}","import { record } from \"rrweb\";\r\nimport { SessionStore } from \"./SessionStore\";\r\nimport { Guid } from \"../Core/Common/Guid\";\r\nimport { UserManager } from '../User/UserManager';\r\nimport { pack } from '@rrweb/packer';\r\n\r\nlet events = [];\r\nlet sessionId = null;\r\nlet interval;\r\nlet stopFn = null;\r\nlet recording = false;\r\n\r\nexport const addCustomEvent = (name: string, payload: any) =>{\r\n if(recording){\r\n try{\r\n record.addCustomEvent(name,payload);\r\n }catch(error){\r\n console.error(error);\r\n } \r\n }\r\n}\r\n\r\nexport const startRecording = () =>{\r\n if(window.location.host != 'paulenpaul.spheeres.com'){\r\n return;\r\n }\r\n\r\n recording = true;\r\n stopRecording()\r\n sessionId = Guid.NewGuid();\r\n window.onbeforeunload = () => {\r\n save()\r\n clearInterval(interval);\r\n };\r\n\r\n stopFn = record({\r\n emit(event) {\r\n events.push(event);\r\n },\r\n plugins: [\r\n require('rrweb-snapshot'),\r\n ],\r\n packFn: pack,\r\n collectFonts: true,\r\n recordCanvas: true\r\n });\r\n\r\n interval = setInterval(save, 10 * 1000);\r\n}\r\n\r\nexport const stopRecording = () =>{\r\n if(stopFn){\r\n stopFn();\r\n };\r\n save()\r\n clearInterval(interval);\r\n}\r\n\r\nfunction save() {\r\n \r\n if(events.length == 0 || !sessionId || (UserManager.Instance && UserManager.Instance.CurrentUser && UserManager.Instance.CurrentUser.IsLocked)){\r\n return;\r\n }\r\n\r\n let eventsString = JSON.stringify(events);\r\n events = [];\r\n SessionStore.Update({ sessionId: sessionId, events: eventsString, timestamp: Date.now() });\r\n}","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport { OperationResultModel } from 'Core/Models/OperationResultModel';\r\nimport { ITranslationValue } from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\n\r\nexport interface ISessionEvent{\r\n events: string;\r\n\tsessionId: string;\r\n\ttimestamp: number;\r\n}\r\n\r\nexport interface IGetEventsDto{\r\n\tsessionId: string;\r\n}\r\n\r\nexport class SessionStore {\r\n\tstatic Update(params: ISessionEvent): P.Promise<any> {\r\n\r\n\t\tvar deferredResult = P.defer<any>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/EventApi/Event',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(null));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetEvents(params: IGetEventsDto): P.Promise<any> {\r\n\r\n\t\tvar deferredResult = P.defer<any>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/EventApi/GetEvents',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetSessions(pageNumber: number): P.Promise<any> {\r\n\r\n\t\tvar deferredResult = P.defer<any>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/EventApi/GetSessions',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: { PageNumber: pageNumber }\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n} ","import * as _ from 'underscore';\r\n\r\nimport { deserialize } from 'libs/cerialize';\r\nimport {UserTypes} from \"User/UserManager\";\r\n\r\n\r\nexport class UserModel {\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tUserName: string;\r\n\r\n\t@deserialize\r\n\tUserType: UserTypes;\r\n\t\r\n\t@deserialize\r\n\tSecurityRolesKey: number;\r\n\r\n\t@deserialize\r\n\tContactId: number;\r\n\r\n\t@deserialize\r\n\tFileDir: string;\r\n\r\n\t@deserialize\r\n\tDbId: number;\r\n\r\n\t@deserialize\r\n\tDbName: string;\r\n\r\n\t@deserialize\r\n\tLicenseName: string;\r\n\r\n\t@deserialize\r\n\tLicenseImage: string;\r\n\r\n\t@deserialize\r\n\tUserImage: string;\r\n\r\n\t@deserialize\r\n\tUserRoles : Array<string>;\r\n\r\n\t@deserialize\r\n\tUserVars: string;\r\n\r\n\t@deserialize\r\n\tIsRemote: boolean;\r\n\r\n\t@deserialize\r\n\tIsLocked: boolean;\r\n\r\n\t@deserialize\r\n\tIsLicenseServer: boolean;\r\n\r\n\t@deserialize\r\n\tIsShowAIAssistant: boolean;\r\n\tHasAnyType(userTypes: UserTypes[]): boolean {\r\n\t\treturn _.any(userTypes, userType => userType === this.UserType);\r\n\t}\r\n}","import { P } from \"Core/Common/Promise\";\r\nimport { URL } from \"Core/Common/Url\";\r\nimport { IRequestOptions, Request } from \"Core/Common/Request\";\r\nimport { IRequestUserOptions } from \"../Options/IRequestUserOptions\";\r\n\r\nexport class UserStore {\r\n\tstatic GetCurrentUser(options: IRequestUserOptions): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.USER.GET_CURRENT_USER,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: options\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data)).fail(()=>\tdeferredResult.reject(null));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetUserAllowance(userId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/UserAllowanceApi/GetUserAllowanceInfo',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: { id: userId }\r\n\t\t});\r\n\t}\r\n} ","import 'lockr';\r\n\r\nimport {LOCAL_STORAGE} from '../Core/Common/Enums/LocalStorageItems';\r\n\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager'\r\nimport {GenericDeserialize} from \"libs/cerialize\";\r\nimport {UserStore} from \"User/Store/UserStore\";\r\nimport {UserModel} from \"User/Store/Models/UserModel\";\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Demo} from 'metronicDemo';\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {CookieManager} from \"Core/Common/CookieManager\";\r\nimport {ISignInOptions} from \"./Options/ISignInOptions\";\r\nimport {IRequestUserOptions} from \"./Options/IRequestUserOptions\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport { stopRecording, startRecording } from '../Session/SessionRecorder';\r\n\r\nexport enum UserRoles {\r\n User = 4,\r\n SuperUser = 8,\r\n DataRole = 256,\r\n DesignerLevel1 = 16,\r\n DesignerLevel2 = 32,\r\n DesignerLevel3 = 64,\r\n NetworkManager = 128,\r\n US = 1024\r\n}\r\n\r\nexport enum UserTypes {\r\n User = \"User\",\r\n Usergroup = \"Usergroup\",\r\n Gdpr = \"GDPR\",\r\n Portal = \"Portal\",\r\n Guest = \"Guest\",\r\n}\r\n\r\nexport enum UserDataRoles {\r\n Dpo = \"DPO\",\r\n Vo = \"VO\",\r\n So = \"SO\",\r\n Do = \"DO\",\r\n Po = \"PO\",\r\n Dep = \"DEP\"\r\n}\r\n\r\nexport class UserManager {\r\n private static _instance;\r\n private static _allowInstantiation: boolean;\r\n private _currentUser: UserModel;\r\n\r\n constructor() {\r\n this._currentUser = null;\r\n if (!UserManager._allowInstantiation) {\r\n throw new Error(\"Use UserModel.Instance instead\");\r\n }\r\n }\r\n\r\n get CurrentUser(): UserModel {\r\n return this._currentUser;\r\n }\r\n\r\n get IsAuthenticated() {\r\n return this._currentUser != null;\r\n }\r\n\r\n InitMetronic() {\r\n Demo.init();\r\n }\r\n\r\n SignIn(options: ISignInOptions) {\r\n CookieManager.SetAuthToken(options.AccessToken);\r\n CookieManager.SetRefreshToken(options.RefreshToken);\r\n CookieManager.SetSBIDesigner(String(options.SBIDesigner));\r\n\r\n const signInPromise = this.RequestUser({\r\n LoadUserVars: options.RefreshUserVars\r\n });\r\n\r\n signInPromise\r\n .then(user => {\r\n startRecording();\r\n this.SaveUserModel(user);\r\n Lockr.set(LOCAL_STORAGE.FILE_DIR, user.FileDir);\r\n\r\n if (options.RefreshUserVars) {\r\n UserVarsManager.Instance.RestoreFromJson(user.UserVars);\r\n }\r\n\r\n }).fail(error => new Notifier().Failed(error.message));\r\n\r\n this.InitMetronic();\r\n\r\n return signInPromise;\r\n }\r\n\r\n SignOut() {\r\n stopRecording();\r\n this._currentUser = null;\r\n\r\n CookieManager.RemoveTokens();\r\n Lockr.rm(LOCAL_STORAGE.FILE_DIR);\r\n }\r\n\r\n private RequestUser(options: IRequestUserOptions) {\r\n const deferredResult = P.defer<UserModel>();\r\n\r\n UserStore.GetCurrentUser(options)\r\n .then(getUserResult => {\r\n if (getUserResult.IsSuccessfull) {\r\n deferredResult.resolve(GenericDeserialize<UserModel>(getUserResult.ResultObject, UserModel));\r\n } else {\r\n deferredResult.reject({message: getUserResult.ErrorMessage});\r\n }\r\n })\r\n .fail(() => {\r\n deferredResult.reject({message: NOTIFICATIONS.ERROR_USER_DATA});\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n private SaveUserModel(user: UserModel) {\r\n window[\"UserManager\"] = this;\r\n window[\"UserRoles\"] = UserRoles;\r\n this._currentUser = user;\r\n }\r\n\r\n static get Instance(): UserManager {\r\n if (UserManager._instance == null) {\r\n UserManager._allowInstantiation = true;\r\n UserManager._instance = new UserManager();\r\n UserManager._allowInstantiation = false;\r\n }\r\n\r\n return UserManager._instance;\r\n }\r\n\r\n IsUserInRole(userRole: UserRoles): boolean {\r\n return (userRole & this._currentUser.SecurityRolesKey) === userRole;\r\n }\r\n\r\n IsCurrentUserMaxRole(userRole: UserRoles) {\r\n return Math.max(...this.GetCurrentUserRoles()) === userRole;\r\n }\r\n\r\n private GetCurrentUserRoles() {\r\n let rolesList = [];\r\n\r\n Object.keys(UserRoles).map(key => UserRoles[key]).filter(k => parseInt(k) >= 0).forEach(role => {\r\n\r\n if ((role & this._currentUser.SecurityRolesKey) == role) {\r\n rolesList.push(role);\r\n }\r\n })\r\n\r\n return rolesList;\r\n }\r\n\r\n GetDataRoles() {\r\n return UserManager.Instance.CurrentUser.UserRoles;\r\n }\r\n\r\n GetUserAllowance(userId: number = this._currentUser.Id) {\r\n const deferred = P.defer();\r\n\r\n UserStore.GetUserAllowance(this._currentUser.Id)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject.UserAllowance);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n }).fail(() => deferred.reject({message: NOTIFICATIONS.ERROR_USER_ALLOWANCE}));\r\n\r\n return deferred.promise();\r\n }\r\n}","export var LifeStatusEnum = {\r\n\tEnabled: 'Enabled',\r\n\tActive: 'Active',\r\n\tExample: \"Example\",\r\n\tReadyToProcess: \"ReadyToProcess\",\r\n\tRetired: \"Retired\",\r\n\tMaintained: \"Maintained\",\r\n\tAcquired: \"Acquired\",\r\n\tPlanned: \"Planned\",\r\n\tDisabled: \"Disabled\",\r\n Delete: 'Delete',\r\n SubExample: \"SubExample\"\r\n};\r\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","$","moment","weekFormatUtils","WeekFormatUtils","getEscapedFormat","format","GetLocalizedWeekFormat","DateTimePickerBootstrap","options","this","init","defaults","initPicker","fn","editableutils","inherit","editabletypes","abstractinput","extend","prototype","dateTimePickerBootstrap","tryParseJson","render","isWeekFormat","$input","$tpl","PatchWeekFormatInput","get","pickerOptions","PatchWeekFormatOptions","datetimepicker","value2html","value","element","textValue","undefined","current","default","html","empty","value2input","val","input2value","activate","focus","tpl","emptytext","locale","widgetPositioning","horizontal","vertical","forceParse","TimePickerBootstrap","timePickerBootstrap","window","jQuery","guid","MemoExtension","editor","self","uniqueId","Guid","NewGuid","attr","tinymce","baseURL","tinymceOptions","selector","plugins","toolbar","content_css","translations","length","newTranslations","forEach","item","index","_","clone","setup","languages","push","type","text","unescape","LanguageShortName","onAction","langObject","editorContainer","find","last","activeLangIndex","Value","getContent","setContent","languageActive","ui","registry","addMenuButton","fetch","callback","tinyMCE","currentUnescaped","setTimeout","defaultUnescaped","content","escape","translates","memo","require","formatConverterModule","FormatConverter","PercentageExtantion","decimals","getConfigData","scope","digits","Math","max","inputmask","radixPoint","GetSeparator","integerDigits","autoGroup","groupSeparator","GetGroupSeparator","autoUnmask","rightAlign","LocalizeDecimalOrInteger","toString","percentage","TouchSpinExtension","TouchSpin","min","Infinity","stepinterval","maxboostedstep","callback_before_calculation","replace","RegExp","touchSpin","TouchSpinDecimalExtension","step","pow","touchSpinDecimal","a","j","d","__esModule","assign","l","k","arguments","m","hasOwnProperty","call","f","n","enumerable","configurable","writable","defineProperty","key","g","h","TypeError","c","$element","bootstrapSwitch","_getElementOptions","prevOptions","$wrapper","class","state","size","disabled","readonly","indeterminate","inverse","_getClass","bind","concat","baseClass","_getClasses","wrapperClass","join","$container","$on","onText","onColor","$off","offText","offColor","$label","labelText","on","onInit","Array","p","onSwitchChange","apply","is","trigger","wrap","parent","before","prop","_init","_elementHandlers","_handleHandlers","_labelHandlers","_formHandler","_externalLabelHandler","radioAllOff","removeClass","addClass","_width","_containerPosition","animate","toggleAnimate","toggleClass","toggleDisabled","toggleReadonly","toggleIndeterminate","toggleInverse","replaceWith","handleWidth","labelWidth","closest","off","removeData","children","not","remove","unwrap","data","add","css","round","width","_handleWidth","outerWidth","_labelWidth","setPrevOptions","setInterval","clearInterval","preventDefault","stopImmediatePropagation","which","stopPropagation","click","_dragStart","pageX","originalEvent","touches","parseInt","_dragEnd","target","toggleState","filter","each","checked","isArray","reduce","q","r","s","Constructor","b","jquery","split","emulateTransitionEnd","one","support","transition","end","document","createElement","WebkitTransition","MozTransition","OTransition","style","event","special","bsTransitionEnd","bindType","delegateType","handle","handleObj","handler","close","VERSION","TRANSITION_DURATION","detach","Event","isDefaultPrevented","hasClass","alert","noConflict","toggle","setState","DEFAULTS","isLoading","loadingText","resetText","proxy","removeAttr","button","first","test","slide","to","interval","pause","cycle","$indicators","paused","sliding","$active","$items","keyboard","keydown","documentElement","tagName","prev","next","getItemIndex","getItemForDirection","eq","i","relatedTarget","direction","offsetWidth","carousel","$trigger","transitioning","$parent","getParent","addAriaAndCollapsedClass","dimension","show","camelCase","hide","offsetHeight","collapse","contains","insertAfter","dropdown","$body","body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","load","BACKDROP_TRANSITION_DURATION","backdrop","checkScrollbar","setScrollbar","resize","appendTo","scrollTop","adjustDialog","enforceFocus","hideModal","has","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","currentTarget","scrollHeight","clientHeight","paddingLeft","bodyIsOverflowing","paddingRight","innerWidth","getBoundingClientRect","right","abs","left","clientWidth","measureScrollbar","className","append","removeChild","modal","enabled","timeout","hoverState","inState","animation","placement","template","title","delay","container","viewport","padding","getOptions","$viewport","isFunction","hover","constructor","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","tip","clearTimeout","isInStateTrue","hasContent","ownerDocument","getUID","top","display","getPosition","bottom","getCalculatedOffset","applyPlacement","$tip","isNaN","offset","setOffset","using","getViewportAdjustedDelta","replaceArrow","arrow","getTitle","height","SVGElement","scroll","random","getElementById","$arrow","enable","disable","toggleEnabled","destroy","tooltip","popover","$scrollElement","offsets","targets","activeTarget","process","refresh","getScrollHeight","isWindow","sort","clear","parents","parentsUntil","scrollspy","tab","$target","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","getPinnedOffset","affix","offsetBottom","offsetTop","metronic","layout","cerialize","globalManager","uiSettings","customThemeDescriptor","customThemeSetting","Metronic","Layout","GenericDeserialize","GlobalManager","GLOBALS","UISettings","DEFAULT_UI_SETTINGS","DEFAULT_VALUES","Demo","_uiSettings","cookie","SetThemeStyle","Preloader","Close","handleTheme","change","SetThemeBorders","layoutCssPath","panel","isRTL","lastSelectedLayout","color","currentLayoutStyle","SetThemeColor","valLayoutOption","valOption","SetSidebarOption","valStyleOption","SetSidebarStyleOption","valPosOption","SetSidebarPosOption","valBorders","SetSidebarBorders","layoutOption","sidebarOption","headerOption","footerOption","sidebarPosOption","sidebarStyleOption","sidebarMenuOption","headerTopDropdownStyle","after","runResizeHandlers","SetSidebarMode","SetSidebarStyle","SetSidebarPosition","fixContentHeight","initFixedSidebar","GetUISettings","SetUISettings","settings","Settings","Theme","Color","Style","SidebarOption","SidebarStyleOption","SidebarPosOption","SidebarBorders","CustomThemeName","customThemeName","customTheme","GetCustomTheme","customThemeSettings","SetCustomTheme","InitUI","uiSettingsJson","Instance","GetGlobal","THEME","JSON","parse","$style","themeCss","Selector","Rule","Val","createTextNode","theme","themeUrl","themeColor","COLOR","themeStyle","STYLE","file","filePath","borders","themeBorders","SIDEBAR_BORDERS","themeSidebarOption","SIDEBAR_OPTION","unbind","themeSidebarStyle","SIDEBAR_STYLE","themeSidebarPosition","SIDEBAR_POSITION","Dropzone","Emitter","ExifRestore","camelize","contentLoaded","detectVerticalSquash","drawImageIOSFix","noop","without","slice","hasProp","addEventListener","_callbacks","emit","args","callbacks","len","removeListener","removeAllListeners","removeEventListener","splice","superClass","resolveOption","element1","elementOptions","fallback","ref","_this","version","defaultOptions","previewTemplate","clickableElements","listeners","files","querySelector","nodeType","dropzone","instances","optionsForElement","forceFallback","isBrowserSupported","url","getAttribute","acceptedFiles","acceptedMimeTypes","renameFilename","renameFile","name","method","toUpperCase","getExistingFallback","parentNode","previewsContainer","getElement","clickable","getElements","child","ctor","__super__","extend1","events","withCredentials","parallelUploads","uploadMultiple","maxFilesize","paramName","createImageThumbnails","maxThumbnailFilesize","thumbnailWidth","thumbnailHeight","thumbnailMethod","resizeWidth","resizeHeight","resizeMimeType","resizeQuality","resizeMethod","filesizeBase","maxFiles","params","headers","ignoreHiddenFiles","autoProcessQueue","autoQueue","addRemoveLinks","hiddenInputContainer","capture","dictDefaultMessage","dictFallbackMessage","dictFallbackText","dictFileTooBig","dictInvalidFileType","dictResponseError","dictCancelUpload","dictCancelUploadConfirmation","dictRemoveFile","dictRemoveFileConfirmation","dictMaxFilesExceeded","dictFileSizeUnits","tb","gb","mb","kb","accept","done","messageElement","span","getElementsByTagName","appendChild","textContent","innerText","getFallbackForm","info","srcRatio","trgRatio","srcX","srcY","srcWidth","srcHeight","trgWidth","trgHeight","transformFile","match","resizeImage","drop","classList","dragstart","dragend","dragenter","dragover","dragleave","paste","reset","addedfile","len1","len2","ref1","ref2","removeFileEvent","removeLink","results","previewElement","trim","querySelectorAll","upload","filename","innerHTML","filesize","_removeLink","status","UPLOADING","confirm","removeFile","removedfile","_updateMaxFilesReachedClass","thumbnail","dataUrl","thumbnailElement","alt","src","error","message","node","errormultiple","processing","processingmultiple","uploadprogress","progress","bytesSent","nodeName","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","canceledmultiple","complete","completemultiple","maxfilesexceeded","maxfilesreached","queuecomplete","addedfiles","object","objects","getAcceptedFiles","accepted","getRejectedFiles","getFilesWithStatus","getQueuedFiles","QUEUED","getUploadingFiles","getAddedFiles","ADDED","getActiveFiles","eventName","noPropagation","setupHiddenFileInput","setAttribute","hiddenFileInput","visibility","position","addFile","URL","webkitURL","updateTotalUploadProgress","returnValue","efct","dataTransfer","effectAllowed","dropEffect","clickableElement","evt","elementInside","removeAllFiles","indexOf","totalBytes","totalBytesSent","totalUploadProgress","total","_getParamName","_renameFile","existingFallback","fields","fieldsString","form","getFallback","elements","el","setupEventListeners","elementListeners","listener","results1","removeEventListeners","cancelUpload","selectedSize","selectedUnit","unit","units","items","webkitGetAsEntry","_addFilesFromItems","handleFiles","clipboardData","entry","isFile","getAsFile","isDirectory","_addFilesFromDirectory","kind","directory","path","dirReader","errorHandler","readEntries","createReader","console","log","entries","substring","fullPath","isValidFile","_enqueueThumbnail","_errorProcessing","enqueueFile","enqueueFiles","processQueue","_thumbnailQueue","_processingThumbnail","isValidImage","_processThumbnailQueue","shift","createThumbnail","cancelIfNecessary","canvas","resizedDataURL","toDataURL","restore","dataURL","dataURItoBlob","fixOrientation","fileReader","FileReader","onload","result","createThumbnailFromUrl","readAsDataURL","crossOrigin","img","loadExif","EXIF","getData","getTag","orientation","ctx","ref3","resizeInfo","getContext","translate","scale","rotate","PI","trgX","trgY","onerror","processingLength","queuedFiles","processFiles","processFile","uploadFiles","_getFilesWithXhr","xhr","groupedFile","groupedFiles","CANCELED","abort","option","uploadFile","doneCounter","doneFunction","formData","handleError","headerName","headerValue","input","inputName","inputType","len3","ref4","ref5","response","updateProgress","XMLHttpRequest","open","allFilesFinished","loaded","error1","readyState","responseText","getResponseHeader","_finished","onprogress","setRequestHeader","FormData","hasAttribute","selected","toLowerCase","fileName","transformedFile","submitRequest","send","SUCCESS","ERROR","forElement","autoDiscover","discover","checkElements","dropzones","blacklistedBrowsers","capableBrowser","File","FileList","Blob","navigator","userAgent","dataURI","ab","byteString","ia","mimeString","atob","ArrayBuffer","Uint8Array","charCodeAt","list","rejectedItem","str","charAt","string","div","childNodes","els","question","rejected","baseMimeType","mimeType","validType","ACCEPTED","PROCESSING","ey","ih","py","ratio","sy","naturalWidth","naturalHeight","drawImage","getImageData","sx","sw","sh","dx","dy","dw","dh","vertSquashRatio","KEY_STR","encode64","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","origFileBase64","resizedFileBase64","image","rawImage","segments","decode64","slice2Segments","exifManipulation","exifArray","newImageArray","getExifArray","insertExif","seg","x","ato","buf","imageData","mae","separatePoint","rawImageArray","endPoint","head","exec","warning","win","doc","poll","pre","rem","root","doScroll","createEventObject","frameElement","_autoDiscoverFunction","backstretch","scrollTo","expr","centeredX","centeredY","duration","fade","overflow","margin","zIndex","border","maxHeight","maxWidth","images","isBody","$root","$wrap","background","pageYOffset","innerHeight","$img","fadeIn","speed","resume","platform","t","operamini","y","blockUI","ignoreIfBlocked","overlayCSS","onOverlayClick","cursor","themedCSS","fadeOut","v","onUnblock","I","w","U","baseZ","forceIframe","iframeSrc","blockMsgClass","C","S","draggable","cancel","O","boxModel","u","allowBodyStretch","E","T","M","B","setExpression","quirksmodeOffsetHack","centerY","marginTop","showOverlay","onBlock","H","z","_fadeIn","focusableElements","focusInput","centerX","W","unblockUI","unblock","cursorReset","stop","bindEvents","keyCode","constrainTabKey","shiftKey","documentMode","growlUI","growlCSS","mouseover","fadeTo","mouseout","block","zoom","textAlign","backgroundColor","opacity","location","href","decodeURIComponent","json","expires","Date","setDate","getDate","stringify","String","raw","encodeURIComponent","toUTCString","domain","secure","removeCookie","slimScroll","distance","start","alwaysVisible","disableFadeOut","railVisible","railColor","railOpacity","railDraggable","railClass","barClass","allowPageScroll","wheelStep","touchScrollStep","borderRadius","railBorderRadius","isOverPanel","isOverBar","isDragg","queueHide","touchDif","barHeight","percentScroll","lastScroll","divS","minBarHeight","releaseScroll","me","bar","siblings","rail","getBarHeight","isPlainObject","scrollBy","scrollContent","wrapper","BorderRadius","MozBorderRadius","WebkitBorderRadius","posCss","$doc","parseFloat","pageY","currTop","hideBar","showBar","outerHeight","_onWheel","passive","attachEvent","delta","wheelDelta","detail","srcTarget","srcElement","isWheel","isJump","maxTop","ceil","floor","msg","slimscroll","eventNamespace","focusClass","blur","activeClass","mouseenter","hoverClass","mouseleave","checkedClass","disabledClass","divClass","divWrap","spanClass","spanHtml","spanWrap","autoHide","useID","idPrefix","cpuClass","product","multiple","MozUserSelect","msUserSelect","webkitUserSelect","userSelect","fileDefaultHtml","old","pop","A","submitDefaultHtml","resetDefaultHtml","buttonClass","dispatchEvent","createEvent","initEvent","update","checkboxClass","fileClass","fileButtonClass","fileButtonHtml","filenameClass","inputClass","inputAddTypeAsClass","radioClass","uniform","selectAutoWidth","selectClass","keyup","selectMultiClass","textareaClass","resetSelector","getComputedStyle","currentStyle","mouseup","inArray","resBreakpointMd","getResponsiveBreakpoint","handleSidebarAndContentHeight","sidebar","available_height","getViewPort","_calculateFixedSidebarViewportHeight","headerHeight","footerHeight","handleSidebarMenuActiveLink","mode","hash","menu","substr","sidebarHeight","handleFixedSidebar","destroySlimScroll","initSlimScroll","handle100HeightContent","portletBody","initHeader","active_link","new_link","submit","dropdownHover","setSidebarMenuActiveLink","initSidebar","itemsArray","thisActiveIndex","thisIndex","screenWidth","hasSubMenu","selectedItem","arr","what","ax","L","removeValue","thisParentItem","thisParent","sidebarMenu","isAngularJsApp","addResizeHandler","initContent","initFooter","getLayoutImgPath","getAssetsPath","getLayoutCssPath","request","zIndexManager","Request","lastPopedPopover","isIE8","isIE9","isIE10","resizeHandlers","assetsPath","globalImgPath","globalPluginsPath","brandColors","_runResizeHandlers","handleUniform","handleiCheck","iCheck","insert","handleBootstrapSwitch","handleBootstrapConfirmation","confirmation","btnOkClass","btnCancelClass","handleAccordions","handleTooltips","handleDropdowns","handlePopovers","handleScrollers","handleFancybox","fancybox","groupAttr","prevEffect","nextEffect","closeBtn","helpers","handleSelect2","select2","placeholder","allowClear","currheight","the","newone","circle","prepend","handleInput","handleMaterialDesign","portlet","ZIndexManager","NextValue","overlayColor","Send","cache","dataType","then","res","fail","ajaxOptions","thrownError","toastr","notific8","life","slideUp","slideDown","tabid","tabdrop","handleTabs","autosize","initAjax","initComponents","setLastPopedPopover","func","offeset","pos","attrList","boxed","iconOnly","textOnly","cenrerY","startPageLoading","getGlobalImgPath","stopPageLoading","place","closeInSeconds","icon","getUniqueID","initUniform","updateUniform","initFancybox","getActualVal","getURLParameter","search","isTouchDevice","prefix","getTime","angular","setAssetsPath","setGlobalImgPath","setGlobalPluginsPath","getGlobalPluginsPath","getGlobalCssPath","getBrandColor","sizes","QuickSidebar","initAlertsSlimScroll","wrapperChat","initChatSlimScroll","chatUsersHeight","chatUsers","chatMessages","chatMessagesHeight","handleChatMessagePost","chatContainer","preparePost","dir","time","avatar","getHours","getMinutes","getLastPostPos","keypress","handleQuickSidebarChat","alertListHeight","alertList","initSettingsSlimScroll","settingsListHeight","settingsList","handleQuickSidebarSettings","_currentSpinnerId","_scopeEventNames","names","_scopedEventName","initval","replacementval","forcestepdivisibility","stepintervaldelay","verticalbuttons","verticalup","verticaldown","verticalupclass","verticaldownclass","postfix","prefix_extraclass","postfix_extraclass","booster","boostat","mousewheel","buttondown_class","buttonup_class","buttondown_txt","buttonup_txt","callback_after_calculation","attributeMap","downSpinTimer","upSpinTimer","downDelayTimeout","upDelayTimeout","parentelement","inputGroupSize","originalinput","originalinput_data","spincount","spinning","_checkValue","parsedval","returnval","toFixed","_forcestepdivisibility","Number","_getBoostedStep","boosted","upOnce","initvalue","boostedstep","stopSpin","downOnce","startDownSpin","startUpSpin","attrName","_parseAttributes","downhtml","uphtml","prefixhtml","postfixhtml","insertBefore","_advanceInputGroup","down","up","ev","deltaY","newsettings","_updateSettings","changeSettings","spinnerid","Prism","PrismExtension","Init","prism","valueAccessor","highlight","sql","stringTemplateEngine","StringTemplateEngine","K","SecurityProfileModel","Id","Name","main","Image","Main","SecurityProfileMenu","isAuthenticated","super","_profiles","_selectedProfile","IsAuthenticated","subscribe","LoadProfiles","PubSub","REFRESH_SECURITY_PROFILE","RefreshUI","GetTemplate","AfterRender","Render","targetId","_target","Block","Target","SecurityProfileStore","profiles","SaveProfiles","MapToProfiles","Notifier","always","Unblock","profilesResponse","profile","selectedProfile","Trigger","ProfileImage","SelectProfile","SelectMainProfile","Failed","Message","publish","CLOSE_POPUPS","REFRESH_MAIN_MENU","LanguageModel","ShortName","Flag","SwitchLanguageResult","Deserialize","obj","deserializeAs","LanguageSwitcherStore","ChangeLanguage","model","deferredResult","P","defer","requestParams","err","reject","GetError","promise","SwitchLanguageModel","LanguageMenu","_languages","TranslationManager","Languages","language","IsDefault","_language","GetCurrentLanguage","_databaseName","UserManager","CurrentUser","DbName","SelectLanguage","SaveLanguage","BuildSwitchLanguageModel","CookieManager","SetAuthToken","AccessToken","SetRefreshToken","RefreshToken","reload","Lockr","LANGUAGE","set","GetAuthToken","DatabaseName","Language","MainMenuButton","MainMenuButtonResponsive","_user","_dbName","LogoImage","BindEvents","GetTemplateName","NavigateToHomePage","ChangeLogoImage","profileImage","LicenseImage","OnSessionChanged","RefreshUser","LogoUrl","Brand","TimersMenu","_el","_activeTimers","GetActiveTimers","IsActiveTimers","timers","idToDelete","indexToDelete","findIndex","ids","Set","timer","OpenTimers","activeTimersModal","ActiveTimersModal","On","stopTimers","Show","TimerStore","EntityId","RecordId","SubjectName","Subject","TranslatedName","parentElement","App","InitTitle","NetworkMonitor","_menuManager","MenuManager","Bind","_mainMenuTargetId","InitHeader","InitScreenShotMaker","ListenForPrintScreenPress","ListenForErrors","ListenForPasteEvent","InitUserMenu","InitSecurityProfileMenu","InitMainMenuButton","InitMainMenuButtonResponsive","HandleUnauthorizeRequest","TrackEvents","HideSidebar","accessToken","refreshToken","GetRefreshToken","sbiDesigner","GetSBIDesigner","GetValue","InitMetronic","RemoveOverlay","_userMenu","ResetPassword","SignIn","RefreshUserVars","SBIDesigner","LoadTranslations","LoadLanguages","LoadGlobals","IsLocked","InitLockScreen","ShowSidebar","IniLanguageMenu","InitAssistant","InitAllTimers","InitBreadcrumbs","SetTitle","LicenseName","UserVarsManager","UservarsLastSync","RefreshMenuAreas","RefreshStaticMenu","SetMomentlocale","GetLocale","SignalRNotificationManager","Start","ShowGuestHomePage","BroadcastChannel","onmessage","unsubscribe","SIGN_OUT","showLoginPopup","_header","_headerTargetId","BindUserMenuEvents","SIGN_IN","eventArgs","AuthToken","_screenShotMaker","SetIsAuthenticated","menuManager","_securityProfileMenu","_mainMenuButton","_mainMenuButtonResponsive","Stop","DeleteAreas","_languageMenu","_timersMenu","_breadcrumbs","SignOut","SetShowLoginPopup","Login","rm","FILE_DIR","UserMenu","_userMenuTargetId","_securityProfileMenuTargetId","_allTimersTargetId","_languageMenuTargetId","IsShowAIAssistant","_assistantTargetId","CLICK_TO_START","Assistant","Help","Breadcrumbs","_breadcrumbsTargetId","_mainMenuButtonTargetId","_mainMenuButtonResponsiveTargetId","ReportIssueModal","R","Open","ErrorHolder","SaveError","stack","Paste","InitMobile","MobileChecker","IsMobile","EventTracker","ListenEvents","lockScreenHours","GetGlobalDescriptor","LOCK_SCREEN_HOURS","lockDate","LOCK_DATE","valueOf","_lockScreen","LockScreen","Lock","culture","from","startsWith","some","AuthManager","_authFormOpened","InitKnockout","_authForm","_passwordResetForm","_passwordExpiredForm","_updatePasswordForm","_unreportedTimeForm","_licenseForm","_licenseExpiredSoonForm","_twoFaConfigurationForm","_totpPasswordForm","_passwordLessConfigurationForm","BindResultHandlers","AddEvent","modalWrapper","IsValid","PreventLogin","_signInModel","BuildSignInModel","signInResult","HandleSuccessSignIn","HandleFailedSignIn","CreateErrorResult","ShowError","FORM_INVALID","RequestResetPassword","IsValidForPasswordReset","confirmationDialog","Text","RESET_LINK_SENT","GetFormData","UserName","Type","Question","TextConfirm","OK","TextDecline","CANCEL","CONFIRM_SELECTED","resetPasswordModel","BuildRequestResetPasswordModel","Success","RESET_PASSWORD_SENT","userVars","GetAll","UserVariables","fileDir","_resultHandlers","InvalidTotpPassword","Form","Handler","ShowForm","TwoFaIsNotConfigured","PasswordLessIsNotConfigured","PasswordReset","PasswordExpired","LicenseNotFound","LicenseExpired","ErrorFindingLicenses","InvalidLicenseParams","InvalidLicenseNames","InvalidLicense","OnlyOneUserGroupIsAllowed","EditLimitIsGreaterThanUserDesignation","PasswordLessSignIn","SignInResult","UpdatePassword","UpdateExpiredPassword","SaveTotpSecred","UpdateTwoFaSecret","SavePasswordLessCredentials","Reset","GetDefaultResultHandler","SetError","GetUnreportedTime","FileDir","LicenseExpiresSoon","expirationDate","LicenseExpiresIn","Load","One","FormClosed","PasswordExpiresSoon","ShowUpdatePasswordForm","Hours","ShowUnreportedTimeForm","CloseAuthFormAndSignIn","AllowLogin","resultHandler","ErrorCode","unReportedTimeModel","ErrorMessage","PasswordExpiresIn","UNREPORTED_TIME","Days","ShowUnReportedTimeForm","UnreportedTimeFormClosed","GoToAgenda","GoToAgendaToReportHours","FillFromFormData","Token","PASSWORD_CHANGED","Remove","updatePasswordModel","MapFrom","updatePasswordResult","HandleUpdatePasswordResult","GO_TO_SCREEN_BY_TYPE","AgendaEntityId","ScreenType","SpecialScreen","IsOpenInModal","updateTotpSecretModel","UpdateTotpSecret","updateTotpResult","HandleSaveTotpSecrerResult","SaveCredential","saveTotpSecretResult","IsSuccessfull","Database","Password","GrantType","TotpPassword","ClientId","_clientId","ClientSecret","_clientSecret","Username","ShowAuthForm","clientId","clientSecret","deferred","db","GetLastLoginDb","LoadTranslationsForDb","GetLastLanguage","ShowInModal","ShowResetPasswordForm","AuthResults","Events","SecurityCodeProvided","FormTitles","PASSWORD_EXPIRED","days","PASSWORD_EXPIRED_IN","RequestResetPasswordModel","ResetPasswordModel","NewPassword","SavePasswordLessCredentialsDto","signInModel","property","authenticatorAttestation","AuthenticatorAttestation","SignInModel","serialize","SignInResultModel","errorMessage","errorCode","deserialize","UpdatePasswordModel","CurrentPassword","OldPassword","UpdateTotpSecretModel","secret","TotpSecret","AuthStore","AUTH","LOGOUT","LOGIN","GetSignInError","RESET_PASSWORD","token","SignInOutlook","Serialize","SignInSolidworks","UPDATE_EXPIRED_PASSWORD","UPDATE_TOTP_SECRET","GetDatabaseList","databases","GetLanguages","databaseName","ResultObject","errorResult","WebAuthnStore","GetAssertionOptions","userName","username","BuildCredentialOptions","MakeAssertion","BOUND_MANAGER","SLIDES","AuthForm","_labels","_databaseList","_loginErrorMessage","_isLoginBlocked","_enableLanguageList","_languageSelector","_isUrlDBExist","InitValidation","insertMessages","errorElementClass","_model","isValid","errors","showAllMessages","group","InitPasskey","makeAssertionOptions","challenge","allowCredentials","listItem","fixedId","credentials","publicKey","mediation","assertedCredential","authData","authenticatorData","clientDataJSON","rawId","sig","signature","userHandle","CoerceToBase64Url","extensions","getClientExtensionResults","ClientResponse","errorText","RemoveErrorSummary","SaveLastLoginDb","SaveLastLogin","_fileDir","_modal","Wrapper","GetUrlParams","vars","RemoveAuthToken","newValue","UpdateUrl","lastLanguage","SetLanguages","ActiveLanguage","ApplyBinding","lastDb","GetLastLogin","lastSelectedDatabase","databaseFromUrl","SelectDatabase","minHeight","closeButton","createOnInit","closeOnEsc","blockScroll","Overlay","Container","newUrl","origin","history","pushState","LAST_DB","LAST_LOGIN","languageName","GetFileDir","ChangeUrl","LanguageSelector","defaultLanguage","RenderLanguageItem","FlagBase64","AuthFormModel","required","ENTER_LOGIN","minLength","ENTER_PASSWORD","MinimumLength","SELECT_DATABASE","LicenseExpiredSoonForm","formTitle","_formTitle","LICENSE_WILL_BE_EXPIRED","OkButtonClicked","LicenseForm","_isVisible","_hasFocus","dbName","login","isMobile","ToggleErrorBlockVisibility","PasswordExpiredModel","FormTitle","ENTER_CURRENT_PASSWORD","ENTER_NEW_PASSWORD","ENTER_AT_LEAST_MORE_CHARACTERS","PasswordConfirmation","CONFIRM_NEW_PASSWORD","areSame","PASSWORDS_ARE_NOT_SAME","PasswordExpiredForm","_confirmations","CancelButtonClicked","PasswordLessConfigurationForm","CoerceToArrayBuffer","user","excludeCredentials","authenticatorSelection","authenticatorAttachment","create","newCredential","attestationObject","_credentials","PasswordResetModel","PasswordResetForm","grouping","deep","_digits","valueObservable","validatable","ChangeFocus","_value","nextDigit","digit","HandleKeydown","_totpPassword","inputIndex","dataset","selectionStart","selectionEnd","select","Clear","TotpPasswordForm","_error","minWidth","OnOk","TwoFaConfigurationForm","_login","GenerateQrCode","GenerateSecret","qrcode","_secret","OnNext","stringInclude","UnreportedModel","UnreportedTimeForm","ReportButtonClicked","SkipButtonClicked","BinaryUtils","thing","bytes","buffer","byteLength","fromCharCode","btoa","BlockUI","TextOnly","TextMessage","OpacityMessage","Boxed","BlockTarget","BlockPage","TransparentBlock","transparentOptions","CenterY","PaddingRootElement","ZIndex","BackgroundColor","OverlayColor","Cursor","jBoxBlockButton","callBack","JBoxToggleCloseButton","jBox","PrevValue","JBoxBlockButton","GetTargetObjectFromTarget","Config","spheeres","Title","corsearch","SetValue","authToken","RemoveRefreshToken","GetAdminToken","adminToken","SetAdminToken","RemoveAdminToken","SetSBIDesigner","RemoveTokens","Counter","_counter","inst","ResetValue","classProto","propertyKey","propertyDescriptor","FeatureTypes","AlphaNumeric","Logic","Numeric","Range","FieldFlags","LifeStatusGroupEnum","LifeStatusGroups","GetLifeStatusGroup","selectedLifeStatusGroup","LifeStatusGroupsArray","End","Group","Planned","Acquired","Operational","Maintained","Retired","Example","LOCAL_STORAGE","BUILD_VERSION","HYPERLINK_SOURCE","ModelState","NotificationTypes","Rights","Translation","RecordSecurityRights","Select","SELECT_RIGHTS","NoAccess","NO_ACCESS_LABEL","SearchOnly","SEARCH_ONLY_LABEL","ReadOnly","READ_ONLY_FLAG","Edit","EDIT","EditDelete","EDITDELETE_LABEL","EditDeleteSecurity","EDIT_DELETE_SECURITY_LABEL","FullAccess","FULL_ACCESS_LABEL","_instance","ScreenTypes","SERVER_REQUEST_ERRORS","GetServerRequestError","NOT_FOUND","INTERNAL","EventHandlerItem","context","repeat","action","EventArgs","source","_events","_allowedEvents","_name","SetName","lastIndexOf","PrefixName","StartsWith","longerString","shorterString","allowed","RangeError","hdlr","Off","newhdlrs","ehi","extraData","handlersToExecute","Extend","handlersToRemove","obj1","obj2","attrname","EventHandler","_bus","_eventName","_context","_handlers","_handlerConditions","EventName","When","condition","Using","Always","ExecuteHandlers","Once","UnSubscribe","EventBus","Dispatch","Handle","EventBusConsumer","_eventHandlerExecutors","_eventBus","AssignEventBus","bus","DispatchEvent","eventData","Data","Source","HandleEvent","eventHandlerExecutor","StopHandlingEvent","FindEventHandlerExecutors","executor","OnInit","Dispose","EVENTS_TO_LISTEN","CLICK","KEYUP","eventKey","domEvent","RegisterEvent","eventType","FORMATS","PHONE_NUMBER","DUTCH_POSTAL_CODE","FieldFormat","Replacer","whiteSpaceReplate","IsCurrency","CURRENCY","IsLongDate","LONGDATE","IsDecimal","DECIMAL","IsStartswithcapital","STARTSWITHCAPITAL","IsLowercase","LOWERCASE","IsIPAddress","IPADDRESS","IsPhonenumber","PHONENUMBER","IsUppercase","UPPERCASE","IsShortDate","SHORTDATE","IsDateTime","DATETIME","IsTime","TIME","IsTimeSpan","TIMESPAN","IsLongTime","LONGTIME","IsURL","IsMail","MAIL","IsPercentage","PERCENTAGE","IsDutchPostalCode","DUTCHPOSTALCODE","IsBarcode","BARCODE","IsInteger","INTEGER","GetFormat","formatKeys","formatKey","DATE","DD_MMM","DD_MM","MMM_YYYY","MM_YY","YYYY_WW","SQL","SKYPE","LINKEDIN","FACEBOOK","YOUTUBE","TWITTER","INSTAGRAM","PINTEREST","MEDIUM","LOCALURL","DD_MMM_YYYY","FlagResolver","ContainsFlag","flagToSearch","flags","ImagePreloader","Preload","scr","FormatImageUrl","browserInfo","vendor","Modal","customOptions","isUseGlobal","isDragOnMouseDown","resizePopup","defaultWidth","recalculateTimerId","$window","repositionOnOpen","repositionOnContent","overlay","adjustPosition","widthInPercent","heightInPercent","closeOnClick","closeCallback","outside","onClose","recalculate","$item","getDefaultWidth","defaultStyle","getHeight","widthPercent","pixels","scripts","percent","jBoxContent","searchResultsScroll","searchScreen","alternativeEntitiesContainerHeight","searchPaginationHeight","searchToolbarFormGroupHeight","alternativeEntitiesContainer","reservedHeight","getMaxHeight","popupHeightInPercent","percentHeight","reposition","onCreated","popupWidthInPercent","percentWidth","resizeFn","onOpen","curDown","curYPos","curXPos","scrolledElement","mousemove","scrollLeft","mousedown","parentOffset","_wrapper","_jbox","AddClass","RemoveClass","SetContent","Reposition","Destroy","OneRepositionModal","ShowOfflineMessage","ShowOnlineMessage","ShowConnectionMessage","Warning","showMessageFunc","_timeoutActive","_timeout","MessageTypes","GetTitle","NOTIFIER_WARNING","NOTIFIER_SUCCESS","Fail","NOTIFIER_FAIL","_container","_messageTypes","notification","DeferredI","unfoldCore","unspool","seed","Status","Resolved","unfold","when","promises","allDone","resolved","Rejected","PromiseI","_resolved","_rejected","_status","Unfulfilled","_promise","_result","promiseOrValue","v2","iterator","IteratorI","generator","advance","isUndefined","eachCore","fin","it","hasValue","gen","RepositionModalObserver","mutationObserverConfig","_time","_observer","_config","MutationObserver","mutations","mutation","observe","Disconnect","disconnect","TakeRecords","RequestCache","Add","store","Get","_params","For","instance","UseCacheRequest","cacheRequest","Post","SendRequest","DownloadFile","contentDisposition","fileNameStr","FileName","FileData","onSuccess","async","contentType","processData","transactionId","xhrFields","CheckVersion","rej","newBuildVersion","buildVersion","ResizeObserver","_idWidth","_listenersWidth","_resizeIntervalWidth","_resizeIntervalCheckDelayWidth","_idHeight","_listenersHeight","_resizeIntervalHeight","_resizeIntervalCheckDelayHeight","OnResizeWidth","oldWidth","newWidth","OnResizeHeight","oldHeight","newHeight","SubscribeWidth","UnsubscribeWidth","SubscribeHeight","UnsubscribeHeight","USER","GET_SECURITY_PROFILES","profileId","SELECT_MAIN_PROFILE","RecordStore","GetRecordSpecs","RejectResponse","GetRecord","CreateRecord","GetLookupData","GetResponseError","GetCount","tableId","RecordExists","GetDependsOnValues","GetDynamicDependsOnValues","requestError","generalError","TableStore","GetStruct","CustomThemeDescriptor","Create","serializeAs","CustomThemeSetting","MainThemeDescriptor","EVENTS","SETTINGS_CHANGED","SIDEBAR_STYLE_OPTION","SIDEBAR_POS_OPTION","CustomThemes","RegisterCustomTheme","ToJSON","Equals","isEqual","Timer","seconds","TimerCounter","_intervalId","OnTimerExpired","TIMER_EVENTS","TIMER_EXPIRED","Tooltip","attach","closeOnMouseleave","adjustDistance","targetElem","Attach","extension","ADMIN","GET_FILE_DIRS","GET_QUARTZ_DASHBOARDS","GET_QUARTZ_DASHBOARD","GET_MIGRATION_PREVIEW","APPLY_MIGRATION","APPLY_EMBEDDED_MIGRATION","UPDATE_VIEWS","UPDATE_TRIGGERS","HAS_CHANGES","LOCK_SESSION","UNLOCK_SESSION","UPDATE_PASSWORD","GET_CACHED_LICENSE","UPLOAD_LICENSE_LOGO","GET_SCREEN_BY_ID","GET_SCREEN_BY_SCREEN_TYPE","GET_MULTISELECT_CONTROL_DATA","GET_EDIT_SCREEN","GET_TABLE_TYPES","GET_TYPES","GET_ALL_TYPES","IS_TYPE_TRANSFORMATION_REQUIRED","DELETE_SCREEN","UPDATE_SCREEN_NAME","ICON","GET_IMAGE_ICON","LOOKUP_EDITOR","GET_LOOKUP_SCREEN_METADATA","GET_ENTITY","GET_LOOKUP_DATA","DELETE_RECORDS","SAVE_CHANGES","GET_LOOKUPS","GET_ENTITIES","GET_LOOKUP","QUERY_BUILDER","RUN_QUERY","CREATE_QUERY","UPDATE_QUERY","DELETE_QUERY","LOCK_QUERY","UNLOCK_QUERY","GET_QUERY","EDIT_QUERY","GET_TOOLBAR_QUERY","NEW_QUERY","GET_QUERY_SCREENS","GET_CARD_SCREENS","COMPONENTS","RECORDLINKER","IS_LINK_WITH_RECORD_EXIST","GET_EXISTING_LINKS_WITH_RECORDS","LINK_WITH_RECORD","LINK_WITH_RECORDS","ADD_AND_LINK_RECORD","COPY_LAST_LINKED_RECORD","CONTROLS","GET_HIDE_IF_CONDITION_VALUE","GET_GRID_DATA","NEW_RECORD","GET_VIEW_GRID_LIST","GET_INVOICING_GRID_VIEW_LIST","GET_LINK_EDITOR_VIEW_GRID_LIST","UPDATE_GRID_ROW_DATA","UPDATE_GRID_ROWS_DATA","DELETE_GRID_ROW_DATA","UNLINK_GRID_ROW","UNLINK_GRID_ROWS","INSERT_GRID_ROW_DATA","UPDATE_GRID_ROW_LIFESTATUS","LINK_WITH_NEXT_RELATION","GET_DEFAULT_TABLE_VIEW","GET_DEFAULT_TABLE_VIEW_METADATA","EXPORT_DATA","GET_FAST_FILTER_DATA","GET_FAST_FILTER_TIME_DATA","GET_FAST_FILTER_DATE_DATA","GET_FAST_FILTER_DATETIME_DATA","UPDATE_SORT","FOLLOWUP","GET_NEXT_LIFESTATUSES","CONFIRM_PASSWORD","CHECK_RETIRED_CHILDREN","KANBANBOARD","GET_STATUSES","GET_VIEW_LIST","UPDATE_STATUS","UPDATE_ACTION_STATUS","UPDATE_PRIORITY","GET_DEFAULT_VIEW_METADATA","LINKLIST","GET_AUTOLINK_RECORD","GET_NEW_OR_EXISTING_RECORD","GET_LINKLIST_RELATIONS","IMAGE","SAVE_UPLOADED_FILE","RSSFEED","GET_RSS_FEED","DROPDOWN","GET_DROPDOWN_DATA","TAG","GET_TAGS","GET_ALL_TAGS","BUTTON_TEMPLATE","GET_TEMPLATES","MERGE_AND_SAVE","GANNT_CHART","GET_GANTT_CHART","UPDATE","SPIM_COPY","GET_CLASS","ASSIGN_CLASS","UPDATE_VERSION","GET_CURRENT_USER","GET_SECURITY_PROFILE","GET_SECURITY_DATA","PORTLETS","GET_PORTLET_SPACES","GET_PORTLET_SPACE","GET_PORTLET_SPACE_BY_ID","GET_AVAILABLE_PORTLETS","UPDATE_PORTLET_SPACE","CREATE_PORTLET_SPACE","COPY_PORTLET_SPACE","UPDATE_PORTLET_SPACE_INFO","BIND_TO_CONTROL","DELETE_PORTLET_SPACE","LINK_EDITOR","GET_DATA","GET_RELATION_TYPES","CYBERCONFIG_MANAGER","GET_DATABASES","READ_CONFIG","CREATE_CONFIG","UPDATE_CONFIG","DELETE_CONFIG","CREATE_ENVIRONMENT","SECURITY_EDITOR","GET_SECURITY_INFO_FOR_RECORD","FIELD_COLLECTION_DESIGNER","GET_DATA_ROLE","GET_FIELD_COLLECTION","SAVE_FIELD_COLLECTION","FORM_DESIGNER","GET_ALTERNATIVE_ENTITIES","DATABASE_DESIGNER","GET_VIEW_TEMPLATE","VALIDATE_VIEW","EXECUTE_QUERY","BULK_EMAIL","GET_CONFIG","START","STOP","CONFIGURE_BULK_EMAILS","CREATE_NEW_GROUP","CANVAS","GET_DW_PACKAGES","BI","GET_SETTINGS","GET_ITEMS","GET_TOKEN","_zIndex","ActionsCheckListsDto","LifeStatuses","CurrentLifeStatusDto","partial","Memo","MemoTranslation","LifeStatusTranslatedName","LifestatusNoActionNode","DisabledReason","IsFollowUpDisabled","ActionCheckListStore","GetActionsCheckLists","entityId","recordId","Child","CheckLists","UpdateActionsCheckList","ActionsCheckListsViewModel","CheckStatuses","NonCheckStatuses","ActionCheckListViewModel","CheckItems","Valid","checkItem","EnableValidation","SerializeData","checkItems","LifeStatusId","BaseCheckItem","NameTranslation","TypeName","Required","IsLoaded","ValidationEnabled","TextCheckItem","IntegerCheckItem","YesNoCheckItem","LookupCheckItemStore","GetLookupCheckListData","ExceptionMessage","LookupCheckItem","_items","_selectedItem","ValField","LoadData","FieldId","Items","CheckItemFactory","CreateCheckItem","ActionCheckListMappingProfile","MapToViewModel","dto","viewModel","LifeStatusName","LifeStatusMemo","LifeStatusMemoTranslation","LifeStatusApprovalName","LifeStatusNoActionNode","LifeStatusSort","checkItemDto","CurrentLifeStatusViewModel","CurrentLifeStatusMappingProfile","NoActionNode","ActionsCheckListsMappingProfile","CurrentLifeStatus","lifeStatus","ActionCheckList","_isFlowFolder","_isFollowUpDisabled","_disabledReason","_flowFolder","_flowFolderMemos","_entityId","_recordId","_kanbanMod","KanbanMod","_retireChildren","_isMobile","AddEvents","PreventWindowConfirmation","FlowMemoTab","FlowFolderStore","GetFlowMemos","flowFolderMemosModel","FlowFolderMemosModel","IsMemoTranslatable","MemoItems","MemoItemModels","FlowFolderMemos","IsModifyItems","_isModifyItems","oldCheckStatuses","_oldCheckStatuses","oldCheckStatus","oldCheckItem","newCheckStatuses","_viewModel","checkStatus","newCheckStatus","_iCheckItemsModify","newCheckItem","oldID","newID","oldValue","InitFlowFolder","isFlowFolder","flowFolderModel","followUpData","FlowFolder","eventWindowConfirmation","HasAnyCheckedStatuses","CloseModal","attributes","childList","characterData","subtree","SaveCheckList","ProvideData","checkLists","newCheckLists","actionsCheckListsDto","ExtendDto","FollowUpMode","TryFollowUpKanbanModCheckStatus","lifeStatusesSerializedData","serializedData","TryFollowUpKanbanModCurrentLifeStatus","TryFollowUp","PickLifeStatus","CheckRetiredChildren","extended","CurrentLifestatus","confirmationText","ARE_SURE_TO_CHANGE_LIFESTATUS","ConfirmationDialog","UpdateLifeStatus","passwordPrompt","PromptDialog","Label","PLEASE_TYPE_YOUR_PASSWORD_TO_CONFIRM","MinHeight","RequiredErrorMessage","PASSWORD","IS_REQUIRED","ShowNotification","CloseOnSave","eventargs","password","FollowUpStore","ConfirmPassword","Hide","ExternalInvalidActionHandling","INCORRECT_PASSWORD","Option","LifeStatus","RetireChildren","updateCheckListPromise","ParentEntityId","ParentRecordId","ChildrenToRetireExist","retiredStatuses","RetiredStatuses","ALL_CHILD_RECORDS_WILL_BE_MOVED_TO_THE_RETIRED_STATUSES","YES","NO","BarcodeScanner","_devices","_selectedDeviceId","_reader","BrowserBarcodeReader","Map","DecodeHintType","TRY_HARDER","_isDisabled","_isContinuous","isContinuous","_videoElement","startDecodingPromise","StartDecoding","streamStarted","devices","listVideoInputDevices","GetCurrentDeviceId","selectedDeviceId","Reenable","videoCover","decodeFromVideoDevice","getText","vibrate","mediaDevices","videoTracks","srcObject","getVideoTracks","getSettings","deviceId","ColorConverter","RalColors","_ralColors","ReadColorPalette","PaletteColors","_paletteColors","ToHex","FromRalToHex","FromPaletteToHex","Hexify","alpha","values","HexToRGB","hex","GetContrast","hexValue","colorItem","ColorDescription","_color","ColorModel","label","Enable","HexColorModel","_selectedColor","InitialColor","_inline","InlineMod","_position","Positions","ColorValue","SetColor","SelectColor","ColorPaletteItem","ColorPalettes","PaletteColorModel","_label","InitPalette","Palette","InitSelectedColor","Colors","_colors","GetColorItem","ShowColorPalette","palette","colorsJson","RAL","NO_COLOR","paletteItem","ColorSelector","_id","_colorModels","_colorModelImpl","_selectedColorName","_selectedColorValue","SelectedColorDescription","SelectedColorName","SelectedColorValue","GetColumnTemplate","SelectInitialModel","SelectModelImpl","_colorModel","modelName","colorModel","Library","ShowSelector","_colorSelectorDropdown","PrepareSelector","otherOptions","onCloseComplete","bindComponent","_requestModel","_htmlData","_svgData","_PDFViewerApplication","_pdfViewerSrc","_pdfData","FileType","Content","_notifier","PDFViewerSetContent","buttons","setTitleUsingUrl","_listener","SavePDF","$data","isClose","targetButtonBox","isSaveButtonBox","targetObj","targetElement","pdfDocument","loadingTask","pDFDocumentProxy","saveDocument","newPDFDocument","oldPDFDocument","allFileName","confirmationQuestion","SAVE_CHANGES_IN_FILE","ARE_YOU_SURE_YOU_WANT_TO_SAVE_THE_CHANGES_TO_FILE_AND_CLOSE","ConvertToBase64","base64String","requestModel","RecordKeys","Recordkeys","DocumentManagerStore","SavePdfDocument","catch","finally","DISCARD_SELECTED","_pfdViewerFrame","WebViewerLoaded","desktopLanguage","DESKTOP_LANGUAGE","contentWindow","PDFViewerApplication","Base64ToUint8Array","base64Pdf","pdfData","array","Promise","chunk","EXTENTION_TO_ICON","HAS_PDF","DocumentStatus","DocumentManager","screenType","screen","entityTypeName","fieldId","fieldName","isEnableMail","isEnableSwitchVersion","_screenType","_screen","UPDATED","_fieldId","_fieldName","_entityTypeName","_approvalName","ApprovalName","DOCUMENT_APPROVAL","_isEnableMailButton","_subjectEntityId","GetEntityId","_subjectRecordId","GetRecordId","_isEnableSwitch","IsTrue","_hasData","_hasPdfData","GetDropDownId","_version","_extention","_ownerId","_changedBy","_changedByName","StatusTitle","_createdBy","_mails","_showMailList","ExtentionClassIcon","userManager","IsEnableCheckIn","CheckOut","SoftCheckIn","EditScreen","Sub","IsEnableCheckOut","CheckIn","IsEnableEdit","IsEnableOwnerLock","IsEnableOwnerUnlock","OwnerLock","IsEnableVersions","NoVersion","IsEnableNoVersions","IsEnablePreview","ConsultScreen","Portlet","Locked","IsEnableChangedByName","IsEnableGeneratePdfButton","IsSolidworks","IsEnablePrintButton","versionFieldName","statusFieldName","fileTypeFieldName","changedByLabel","changedBy","createdBy","_fileName","BlockUi","CHECKIN_IS_NOT_ALLOWED","ConfirmationPassword","CheckAprovalStatus","ARE_SURE_TO_CHECKIN_DOCUMENT","GetParentAssemblies","assemblies","assemblyList","assembly","CONFIRM_ASSEMBLY_CHECKOUT","DoCheckOut","Unlock","EnableVersions","DisableVersions","Preview","IsWebDocument","ShowDocument","OPEN_DOCUMENT_IN_SPHEERES","Download","endsWith","FileDownloader","DownloadFileData","previewDocument","Version","ChangedByName","OpenDropDown","_dropDown","GetMails","mailsCount","MailStore","GetMailTabs","tabs","mail","MailTabModel","MailConnectionId","Client","ShowMailComposer","OpenDesktopClient","OpenInternalClient","GetMainMails","mailComposer","ComposeMail","ResponseMailItem","attachDocumentModel","MailAttachmentModel","DocumentFieldId","AttachDocument","IsEnableAttachment","IsEnableRemoveAttachment","AddScreen","mailsByRecord","firstMail","Mail","AddMailWithRecord","TableId","attachmentModel","FromAddress","ToAddresses","Attachment","CreateEmlMessage","IsEnableMailButton","Print","GeneratePdf","SwitchToVersion","switchPrompt","SWITCH_TO_VERSION","Switch","DestinationMailModel","ParentAssemblyModel","PreviewDocumentModel","SaveDocument","previewDocumentModel","responseType","PrintLabel","jsonResult","ImageTableTypes","ProductImageViewer","_orderEntityId","OrderEntityId","_productsEntityId","ProductsEntityId","_imageFieldId","ImageFieldId","InitImageViewer","_imageContainer","opt","inline","navbar","movable","zoomable","rotatable","scalable","fullscreen","_imageViewer","ShowOriginalImage","imageTableType","imageIndex","GetImageIndex","BuildRequest","view","Product","ProductConfiguratorStore","GetOriginalImage","ProductProperty","ImagePropertyControlStore","GetOriginalImageProperty","OrderProduct","GetOriginalSavedProductImage","Hook","GetOriginalSavedPartImage","ConfiguratorLevels","ProductDto","NameTranslated","ConfigurationId","ConfigurationPageStore","_ordersEntityId","_endProductId","GetProductInfo","productId","orderId","level","ProductEntityId","ProductId","OrderId","Level","productInfo","ERROR_GETTING_PRODUCT_INFO","GetExtraProductsInfo","productsId","EndProductId","ProductsId","groupProducts","ERROR_GETTING_GROUPS_PRODUCTS","GetConfiguredProduct","configuredProduct","ERROR_GETTING_CONFIGURED_PRODUCT","GetConfiguredProductWithLevels","GetConversionDropdowns","ProductGroupId","ProductGroupName","SelectedConversions","conversionDropdowns","GetGroupProducts","PageNumber","RecordsPerPage","Conversions","GetInclusiveProducts","SelectedProductPartsIds","InclusiveProductPartsIds","ExclusiveProductPartsIds","GroupId","GroupName","inclusiveProducts","GetFactualPrice","productPartId","quantity","propertyValues","customFieldValues","Quantity","ProductPartId","PropertyValues","CustomFieldValues","factualPrice","GetActionDependsOnValues","actionDependsOnFieldValues","CreateProductConfiguration","ERROR_CREATING_CONFIGURATION","UpdateProductConfiguration","ERROR_UPDATING_CONFIGURATION","UpdateProductConfigurationByLevels","ConfigurationPageVariable","ConfigurationPageVariablesStore","_variables","Declare","existingVariableIndex","GetList","variable","ConfigurationPageEvents","VariablesChanged","BaseProductGroup","Translations","AddAsExtra","parentProduct","AlternativesCount","Expanded","CanShowMore","ExtendedView","IsMain","IsHidden","Products","_pricesMiscalculated","_priceMiscalculated","IsGroupDisabledByAction","selectedProduct","Selected","IsDisabledByAction","ParentProduct","InitMainGroup","mainProduct","productsLoaded","conversionDropdownLoaded","GetActiveProduct","ToggleView","GetActiveProductIndex","HasAlternatives","ConversionDropdownLoaded","LoadDropdown","IsGroupDisabled","IsGroupHidden","FillProducts","newProducts","restored","GroupProductsLoaded","FindProduct","rootGroupId","rootGroupName","groupId","groupName","kSeq","kSeqGuid","productIndex","ParentGroup","Path","KSeq","KSeqGuid","nestedProduct","FindNestedProduct","FindGroup","parentId","productGroupIndex","Groups","resultGroup","FindProductById","FindNestedProductById","UnSelectActiveProduct","activeProduct","ProductPartUnSelecting","HasProduct","CollapseActiveNestedGroup","Collapse","BreadCrumbsItem","ConversionDropdownView","SelectValue","IsOpenDropdown","Values","IsGridMode","IsDisabledValuesGroup","_message","SetMessage","ResetMessage","TranslationFieldName","FieldNameTranslation","FieldName","SearchByConversionDto","CONVERSION_DROPDOWN_EVENTS","ConversionDropdown","_isInit","_dropdownData","_conversions","_uniqConversions","IsInit","DropDownParams","UniqConversions","ResetSelectedValue","param","IsActive","IsDisabled","ResetConversions","InitDropdown","Toggle","OpenDropdown","newElem","conversion","SelectGridValue","gridData","_gridData","selectedValue","bindTarget","isolateScroll","pointer","MapConversionDropdowns","conversionDropdown","sortedValues","SortConversionDropdownValues","FieldType","isGridMode","selectedValues","dropdownValue","dropdownView","ValueSynchronization","dropdownResponse","RECORD_NOT_FOUND","fieldType","Integer","Decimal","isA","isB","aIsNotNumber","aIsNumber","bIsNotNumber","RootGroup","addAsExtra","BreadCrumbs","HasProducts","_clickedAlternativeBtn","ConversionDropdowns","GetConversionDropdown","GetIsInitConversionDropdown","ClickedAlternativeBtn","IsRoot","IsExtra","IsUndefined","ToggleBody","Expand","RootGroupExapanding","NotInitRootGroupExpanded","RootShowMore","AfterInit","_eventArgs","RootGroupConversionsDropdown","RootGroupConversionsDropdownSynchronization","ProductPartSelecting","NewProduct","ProductPartSelected","RootGroupIs","breadCrumbsItem","AddToBreadCrumbs","ProductPartUnSelected","RemoveFromBreadCrumbs","AddBreadCrumbs","GetBreadCrumb","GetBreadCrumbsDependenciesOf","dependency","productPath","breadCrumbItem","breadCrumbsItemDependency","ShowMore","clickedAlternativeBtn","ProductGroup","translatedName","_groupSelectedImageSize","_groupImageSizeClassName","_groupTileImageSize","ProductListMarginSizeClassName","_selectedImageSize","_tileImageSize","GetImageSizeClassName","imageSize","ToggleActive","Deactivate","Activate","GroupActivating","SelectedGroup","GroupActivated","ReloadingConversionDropdowns","NotInitGroupActivated","GroupConversionsDropdown","GroupConversionsDropdownSynchronization","GetNestedSelectedProducts","nested","union","BaseProduct","nameTranslated","description","price","alternativePriceModel","isActiveLevelLocked","PriceList","AddAlternativePriceModel","AddMainProductPriceGroup","IsActiveLevelLocked","ViewModels","LevelCacheAvailable","ActiveLevel","MainLevel","AttachBackButton","backButton","_backButton","rootGroup","ProductPrice","PriceItem","GroupNameTranslation","RootGroupId","RootGroupName","ComparisonQuantity","PositionPrice","Price","ComparisonPositionPrice","ComparisonPrice","PositionAlternativePrice","AlternativePrice","ComparisonPositionAlternativePrice","ComparisonAlternativePrice","CannotRemovePriceItem","priceList","isNotMainLevel","_inactive","RemovePriceItem","UnselectProduct","LoadConversionDropdownsFromRemovePriceItem","CanNavigateToProduct","any","Levels","CannotNavigateToProduct","NavigateToProduct","onlyOneLevel","ProductNavigatedInPriceList","PcfGroup","NameTranslations","ProductPartDto","PropertyValueDto","valid","ProductPropertyGroupDescription","PropertyMode","Properties","ProductPropertyDescription","FormatName","Size","ValueHolderId","PriceInfluence","IsRequired","ProductCustomFieldDescription","DefaultValue","ValTable","ValTableType","ValFieldId","ValFieldName","AllowCustomValue","CustomFieldValueDto","isCustomValue","IsCustomValue","CachedProduct","ConfigurationPageMappings","_productEntityId","MapToProduct","productInfoDto","Description","MapToRootGroups","pcfPartsGroups","afterMap","rootGroups","MapToRootGroup","pcfPartGroup","MapToProductParts","productPartsDto","productGroup","afterMapProductPart","afterMapProductGroup","readOnly","part","MapToProductPart","isMain","propertyGroups","MapToPropertyGroupsDescription","PropertyGroups","propertyEvaluationExpressions","MapToEvaluationExpressions","PropertyEvaluationExpressions","productCustomFields","MapToProductCustomFields","ProductCustomFields","productPart","ProductPart","InclusiveProducts","ExclusiveProducts","Defaults","QuantityCanBeChanged","SetPropertyValues","SetCustomFieldValues","MakeSelected","productGroups","MapToProductGroups","PcfPartsGroups","MapToCachedProducts","productParts","MapToCachedProduct","productPropertyGroupsDto","productPropertyGroupDto","MapToPropertyGroupDescription","propertiesDescription","MapToPropertiesDescription","productPropertiesDto","MapToPropertyDescription","productPropertyResponse","propertyDescription","Lookup","AvailableOptionsCount","RelatedTableId","RelatedTableFieldId","LookupTableId","propertyEvaluationExpressionsDto","evaluationExpressionDto","MapToEvaluationExpression","propertyEvaluationExpressionDto","PropertyEvaluationExpression","Destination","Expression","productCustomFieldsDto","productCustomFieldDto","MapToProductCustomField","productCustomFieldResponse","MapToProductGroup","productGroupId","productGroupName","productTranslatedGroupName","productGroupNamesTranslations","MapRootGroupProductPartsResponseOnProductPrices","products","MapProductPartInfoResponseOnProductPrice","FactualPrice","MapProductPartOnProductPrice","MapToProductPartsDto","productPrices","productPrice","MapToProductPartDto","MapToPropertyValuesDto","propertyValue","MapToPropertyValueDto","MapToPropertyValues","propertyValuesDto","MapToPropertyValue","propertyValueDto","PropertyValue","MapToCustomFieldValuesDto","customFieldValue","MapToCustomFieldValueDto","MapToCustomFieldValues","customFieldValueDto","MapToCustomFieldValue","CustomFieldValue","SelectedProduct","SelectedProducts","_restored","_new","_removed","_selected","_initialMainPropertyValues","Restored","New","Removed","Altered","newPart","removedPart","selectedPart","InitialMainPropertyValues","IsSelectedProduct","GetSelectedProduct","Restore","InitMainPropertyValues","mainPropertyValues","IsRestoredProduct","RemoveFromDeleted","IsRemovedProduct","GetSelectedDependenciesOf","selectedIndex","RemoveFromNew","GetRestoredProduct","GetRemovedProduct","newProduct","GetNewProduct","newIndex","removedProduct","removedIndex","CachedProducts","_products","Find","criteria","FindById","cp","Exist","AddRange","ViewModel","_rootGroups","_mainGroup","_extraGroup","_undefinedGroup","compareLevels","RootGroups","vm","MainGroup","ExtraGroup","UndefinedGroup","GetRootGroup","GetRootGroupByIdAndName","FindProductGroup","foundGroup","FindSelectedProductsIncopatibleWith","productIds","currentProduct","FindAllSelectedProducts","AddToPriceList","groupNameTranslation","AddToPriceListByLevel","RemoveFromPriceList","productName","UpdatePriceInPriceList","UpdatePriceFor","UpdateMainProductPrice","UpdateAssemblyQuantity","DisableSaveByAction","disableSaveByAction","IsSaveDisabledByAction","variablesStore","activeLevel","EXTRA_PRODUCTS","_store","_mappings","SearchExtraProducts","SearchScreen","SearchTerm","ButtonAdd","MultiSelectMode","AddFoundProductRecords","selection","selectedProductsId","Ids","productsInfoDto","SetInitialPropertyValues","SetInitialCustomFieldValues","TileImageSize","ImageSizes","Tiles","SelectedImageSize","SelectedComponent","AssignVariableStore","InitActionDefaultExpressions","SetActionDependsOnValues","GenerateKSeqGuid","actionDependsOnDto","GetActionDependsOnDto","actionDependsOnValues","InitActionDependsOnExpressions","GetProductsById","CreateConfigurationDto","Order","UpdateConfigurationDto","OrderDto","OrderRecordId","Parts","AlteredProductDto","NewParts","RemovedParts","AlteredParts","InexConfirmationPopup","Inclusives","Exclusives","productImageViewer","MainProduct","_imageSizeClassName","Checked","AlternativePriceModel","InexInclusiveItem","Raw","incompatibleDefaultComponents","defaultInclusives","inclusive","Default","DependsOn","InexParentIds","InexExclusiveItems","ex","Exchange","incompatibles","exclusive","ParentId","incompatible","incompatibleDefaultComponentsids","RecursiveFilterForDefault","HandleDefaultItem","HideNonMainInclusives","HideNonParentInclusives","HandleExclusives","HandlePriceList","InclusivesHiddenOnInit","Hidden","InclusivesCheckedOnInit","ToggleAnimate","check","DelayItem","defaultSiblings","ToggleCheck","itemsToFilter","linkedItems","every","pathItem","ImageSizeInExTextClassName","ImageSize","IsQuestion","IsWarning","IsError","_text","_textConfirm","CONFIRM","_textCancel","_modalClass","InitModal","Width","Height","ModalClass","TriggerConfirmEvent","CANT_RESOLVE_CONFLICTS_FOR_NESTED_DEFAULT_PRODUCTS","OnOkClick","popup","checkedProducts","sameGroupItems","relatedInclusives","inclusiveCheckedProduct","relatedToCheckedOrEndProduct","isChecked","dependencies","IsIncompatible","exclusives","sameGroupItemChecked","relatedCheckedProduct","nonHiddenInclusives","all","SetInclusivesOnInit","isHidden","hiddenInclusiveId","checkedInclusiveId","alreadyHandledExclusive","IncompatibleIds","AddIncompatibleId","Reason","INCOMPATIBLE_WITH","checkedIncompatibles","totalPrice","Total","alternativeTotalPrice","CalculateAlternativePrice","AlternativeTotal","PriceGroup","alternativeGroupPrice","OnCancelClick","InexProduct","_imageSize","_incompatibleIds","PriceLabel","priceValue","ImageSizeInExClassName","ImageTableType","incompatibleId","InexItem","inexExclusiveItems","UpdateConfigurationByLevelsDto","ConfigurationLevelDto","CreateLinks","CachedLevel","UNDEFINED","ConfigurationPage","ProductConfiguratorPage","navigationStack","eventBus","_variableStore","_loadedInclusiveProducts","_exclusiveProducts","_calculatingPriceSequences","_createLinks","_handlingInex","_isActiveLevelLocked","RolesImplemented","alterationModelBackUp","ConfigureFromScratch","_newConfiguration","ActiveConfigurationRole","FillViewModel","Upsert","NEW_CONFIGURATION","NavigationItem","AlterConfiguration","payload","ProductRecordId","configuredProductDto","ALTERATION","RestoreConfiguredProductWithLevels","RestoreConfiguredProduct","Configuration","ProductParts","SelectProductOrFillGroupByDropdown","SelectProductOrFillRootGroupByDropdown","ConversionDropdownSynchronization","LoadRootGroupConversionDropdowns","CloseExpandedRootGroup","LoadGroupConversionDropdowns","CacheGroupProducts","AddToSelected","CalculateFactualPrice","EvaluateCalculatedExpressionsOnUnselect","RemoveFromSelected","ProductPartAddingAsExtra","PriceCalculationRequested","QuantityChanged","AlterSelectedPart","ProductPropertyValueChanged","ProductCustomFieldValueChanged","SaveConfigurationRequested","SaveConfiguration","LoadGroupProducts","LoadRootGroupProducts","ShowingMore","BeforeSelectingProductPartEvent","HandleInex","CheckAvailabilityToToggle","ToggleSelection","CheckSaveDisabilityByAction","CheckSaveDisability","NavigationStackEvents","CheckNavigatability","PropertyContentLoading","BlockSaving","PropertyContentLoaded","UnBlockSaving","ZoomButtonClicked","productPartGroupName","productPartGroup","CheckIfGroupIsHidden","mainGroupProduct","GetPropertyValues","MainProductPart","alreadyDownloadedAlternatives","DefaultPartsIds","AlreadyDownloadedAlternatives","ShowNewConfigurationInitialInexConfirmationPopup","UnblockUi","parts","RemoveKSeqFromNonExtraProducts","undefinedProductParts","GetUndefinedGroupProducts","definedProductParts","isReadOnly","FillProductsGroups","FillBasket","definedParts","undefinedParts","RegisterSelectedProducts","RestoreSelectedProducts","FillBreadCrumbs","activeLevelDto","hasLevel2","Level2","Level1","LockLevel1","FillBasketByLevels","filteredGroups","rg","productDetail","ComparisonTotal","comparisonAlternativePrice","ComparisonAlternativeTotal","Active","allParts","ChangeReadOnlyPrice","FillGroup","extraProductParts","p1","p2","parentProductPath","parentProductId","parentProductFromCache","rootGroupsProducts","extraGroupProducts","nestedProducts","rootGroupProductPrices","rootGroupProductPrice","_compare","MainProductPriceGroup","comparisonPrice","unshift","breadCrumbsItems","rootPart","rootProductPart","CollapseGroup","HasCollapseGroup","ResetConversionDropdownByProduct","ToggleViewOrResetConversionDropdown","rootOrProductGroup","GetGroupProductByConversionDropdown","blockUIContainer","IMPOSSIBLE_TO_SELECT","LoadConversionDropdowns","isProductGroup","paramsDto","conversionDropdownsResponse","isRootGroup","fromConversionDropdown","cachedProducts","productsDto","newProductParts","MapProductParts","pp","HiddenPCFGROUPSIfEmpty","activeGroupProduct","restoredProduct","newProductGroup","UnSelect","GetCustomFieldValues","extraGroup","selectedProductPartsIds","inclusives","FindLoadedExclusiveProducts","ShowInexConfirmationPopup","inexItems","inexMainProduct","InEx","inexProduct","exclusiveProducts","FindExclusiveProductsInResponse","exclusiveProduct","inexItem","ip","checkedItems","inclusiveProduct","GetSortedInclusiveProducts","SelectProduct","exchangeProduct","currentSelectedProducts","inclusiveItem","loadedExclusiveItems","exclusiveItemsFromResponse","currentExclusives","productExclusives","selectedProducts","incopatibleSelected","ii","checkedItem","currentExclusiveProducts","FindInclusiveProducts","loadedProduct","sameGroupItem","GetPropertyValuesForPrice","customFieldValuesDto","GetCustomFieldValuesForPrice","priceListSelectedLevel","undefinedGroupProducts","rootProduct","extraGroupParts","CheckModelValidation","PLEASE_FILL_ALL_DATA","orderDto","GetOrderDto","UpdateConfigurationByLevels","UpdateConfiguration","CreateConfiguration","partsDto","productPartDto","productDto","configurationDto","ConfigurationSaved","alteredProductDto","GetAlteredProductDto","CheckControlsValidation","controlsValidation","CustomFieldsGroup","CustomFieldsControls","customFieldsControl","CheckValidControl","controlValidation","ValidControl","IsValidControl","SkipValidationOnSave","ValidMassage","ValidMessage","propertyGroup","PropertyControls","propertyControl","mainGroup","controls","control","GetActiveConfigurationRole","configurationLevel","mainProductProperties","initialMainProperties","allPropertiesContentLoaded","pg","AllContentLoaded","NavigateConfirmation","ALL_CHANGES_WILL_BE_LOST","allSelectedProducts","disableSaving","totalContinueBtnContainer","getElementsByClassName","GetNewParts","GetRemovedParts","GetAlteredParts","alteredProduct","GetSelectedParts","initialProperty","newParts","removedParts","alteredParts","PropertyEvaluationContext","$this","$main","PriceChanged","PropertyValueChanged","CustomFieldValueChanged","ProductRemovedFromPriceList","ProductPartSelectingEventArgs","OldProduct","GroupActivatingEventArgs","OldGroup","NewGroup","SelectProductPartEventArgs","isRemoveFromPriceItem","ConversionsDropdownArgs","PriceProductNavigatedEventArgs","OnlyOneLevel","GroupProductsLoadedEventArgs","IsEnabled","CalculationRule","IsCalculationRuleValid","basePrice","parentGroup","BasePrice","ConfigurationLevel","_level","levelName","ConfigurationRole","DisplayName","CustomFieldControl","customField","_fieldTypes","_notifications","onValueChangedTimeoutValue","HasContent","validationMessage","GetTranslationMessages","isValidControl","_isHiddenByAction","IsHiddenByAction","OnValueChanged","ClearOnValueChangedTimeout","_onValueChangedTimeout","IsFieldOwner","GetValueForPrice","GetValueForSave","GetDecimalIntegerValidRules","GetIsRequiredValidRule","GetIsNaNValidRule","controlType","isEmptyValue","YesNo","isNaNValue","GetIsSizeValidRule","GetDecimalIntegerValid","GetIsRequiredValidation","GetIsNaNValid","GetSizeValidation","TranslationName","REQUIRED_FLAG","MAXIMUM_LENGTH_OF_THIS_FIELD","CustomLookupOptionModel","CustomLookupControl","_defaultPlaceholder","SELECT_LABEL","_selectedOption","_selectedOptionSubscription","_selectedOptionId","_selectedOptionLabel","_initialOptionLabel","_isCustomValueEntered","_customPlaceholder","_isReady","_isDataLoading","_useSearch","_allowCustomValue","_actionExpressionValue","InitDropdownPlugins","GetDropdownTemplate","GetSearchTemplate","_dropdownPlugins","selectedOptionId","selectedOptionLabel","customLookupValue","optionId","optionText","DownloadOptions","SetSelectedOption","AddCustomOption","SetDefaultValue","TableName","record","defaultOption","Fields","FieldValue","SetActionExpressionValue","CheckAndUpdateActionExpressionValue","ClearValue","IsValueCustom","RemoveCustomOption","AddCustomValue","OnSelectControl","convertedRecordId","OnCustomSearchFocused","initialLabel","OnCustomSearchBlur","OnCustomValueEntered","ShowSearchScreen","EntityName","EntityType","SearchFieldId","_searchScreen","evtArgs","fieldNameValue","FindSelectedOption","ShowOptionCreate","esc","ADD","newCustomOption","oldCustomValueIndex","initialOptionText","initialOptionId","DisplayValue","Count","StartListeningValueChanges","ClearCustomFieldValues","CustomIntegerControl","_displayValue","GetConvertedValue","convertedValue","defaultFieldValue","getSubscriptionsCount","CustomDecimalControl","DecimalMaskSize","IsCurrencyIcon","IsPercentageIcon","formattedValue","percentageValue","ConvertDecimal","CustomDateTimeControl","typeName","datetimeFormat","_typeName","_datetimeFormat","ConvertDateToUTC","valueWithTimezone","CorrectTimezone","GetDateFormatIconClass","date","ConvertToUTC","CustomCheckboxControl","displayValue","CustomTextControl","MaxInputLength","valueToCheck","ProductCustomFieldControlFactory","CreateCustomControl","DateTime","DATE_TIME","Format","SHORT_DATE","GetProduct","GetDependenciesOf","AddProduct","RemoveProduct","decimalValue","ComparisonPriceLabel","AlternativePriceLabel","ComparisonAlternativePriceLabel","ShowAlternativePrice","_isSaveDisabledByAction","TotalLabel","ComparisonTotalLabel","AlternativeTotalLabel","ComparisonAlternativeTotalLabel","LevelsClass","IsAlternativePriceEnabled","AlternativePriceCheckboxLabel","SHOW","ALTERNATIVE_PRICE","AlternativePriceCheckboxTooltip","COULD_NOT_CALCULATE_ALTERNATIVE_PRICE","isSaveDisabled","IsSaveDisabledByUndefinedGroup","IsSaveInactive","productNameTranslated","alternativePrice","groupTranslatedName","existingProduct","FindProductPrice","RemoveGroup","oldPrice","oldAlternativePrice","OnContinueBtnClick","alternativePriceCalculationRule","ReplaceAll","eval","propertyGroupsDescription","groups","productCustomFieldsDescription","quantityCanBeChanged","_guid","_kSeqGuid","_path","BuildPathToRoot","CreatePropertyGroups","CreateCustomFieldsGroup","DefinePropertyAccessors","DefineCustomFieldAccessors","DefineQuantityAccessor","DefinePriceAccessor","_baseQuantity","_isPriceInDestination","IsPriceInDestination","IsSelectingDisabledByAction","ImageSizeSelectedTileClassName","priceValuePerPiece","_variablesStore","InitPropertyValues","InitCustomFieldValues","InitPropertyGroups","DeclareVariables","CheckActionVariableExpressions","expressionDescriptor","newDestination","newExpressionDescriptor","GetPropertyControlByExpression","customFieldControl","GetCustomFieldControlByExpression","pv","flatten","GetPropertyValuesForPreview","groupIndex","UnSelectDependencies","ClearPropertyValues","SetBasePrice","SetBaseQuantity","OnAddAsExtraClicked","InitActionExpressions","_quantityChangeSubscription","dispose","_priceChangeSubscription","propertyGroupDescription","propertyControls","CreatePropertyControl","customFieldControls","productCustomFieldDescription","GetPropertyControls","GetCustomFieldControls","_calculatePriceTimeout","SyncOnVariableValueChange","IsPropertyOwner","SyncOnControlValueChange","GetParent","GetRoot","SyncOnCustomFieldValueChange","SyncOnQuantityChange","SyncOnPriceChange","NavigateToThis","IsExpressionCorrect","EvaluateExpression","actionExpressionsWithVariables","SkipError","EvaluateExpressionForControl","EvaluateExpressionForCustomField","EvaluateActionExpression","fieldValue","actionDependsOnValue","actionExpressionValue","SkipEvaluation","defaultValue","actionDependsOnExpressions","entityName","fieldNames","expression","GetCustomFieldControl","GetPropertyControl","triggeredPropertyControl","evaluationContext","variablesEvaluationExpressions","HasVariableDestination","changedVariables","expressionsToReevaluate","HasEvaluationContext","changedVariable","actionExpressionsToReevaluate","nonActionExpressionsToReevaluate","CalculatePrice","triggeredCustomFieldControl","triggeredIn","CalculatePriceWithDelay","BuildJsExpression","declaredVariables","v1","newExpression","jsExpression","evaluatedValue","HasPropertyControl","GetAvailableImages","imageId","ImageId","LookupPropertyControlStore","GetAvailableOptions","GetAvailableOption","OptionId","LookupModel","LookupPropertyControl","PropertyControl","ordersEntityId","productEntityId","Options","SelectedOption","_selectedOptionValue","searchScreenIfRecordsCount","SEARCH_SCREEN_IF_RECORDS_COUNT","_relatedTableFieldId","_relatedTableId","LoadOptions","UpdateSelectedOptionReference","ValueHolder","optionResponse","lookupOption","_subscriptionReady","RelatedTablePk","optionsResponse","selectedOption","GetValueForPreview","TextPropertyControl","DecimalPropertyControl","CheckboxPropertyControl","ColorPropertyControlStore","GetAvailableColors","colors","ColorPalettePopup","_imagePropertyViewer","ImagePropertyViewer","SelectedColor","Images","SelectedImage","_textDecline","OnClick","ColorPropertyControl","_showAll","ColorObservableArray","LoadColors","UpdateSelectedColorReference","OnColorClick","colorsResponse","colorsMap","GetColorObservableArray","selectedColor","IntegerPropertyControl","ImageModel","Thumbnail","ImagePropertyControl","_selectedImageName","ImageObservableArray","LoadImages","UpdateSelectedImageReference","SelectImage","PROPERTY_VALUE_SHOULD_HAVE_THE_UNIQUE_NAME","OnImageClick","imagesResponse","imagesMap","GetImageObservableArray","selectedImage","ProductPropertyControlFactory","orderEntityId","ProductPropertyGroup","propertyId","HasPropertyValues","GetActionDependsOnValuesDto","FieldNames","BackButton","_navigationStack","navigationItems","_navigationItems","_visible","_currentNavigationItem","_navigateConfirmation","NavigationItems","Visible","Click","CheckPage","SelectNavigationItem","Navigate","NavigateTo","NavigateBack","dialog","BuildNavigateConfirmation","Push","RefreshItems","Pop","Update","onConfirm","ConfigurationRoles","configRolesDropdownActive","SelectConfigurationRole","selectedRole","role","RootProductsPageEvents","ConfigurableProductSelected","RootProductsPageStore","_rootProductsViewId","GetRootProducts","sliceNumber","itemsInSlice","RootViewId","SliceNumber","ItemsInSlice","ERROR_GETTING_ROOT_PRODUCTS","GetNestedProductsOf","ERROR_GETTING_NESTED_PRODUCTS","ImageSizeClassName","RootProductsPageMappings","MapToProductDto","productResponse","MapToProducts","RootProductsPage","_paginator","Paginator","RootProductsViewId","SELECT_PRODUCT","Refresh","pageNumber","LoadNestedProductsOf","LoadRootProducts","NEW_PRODUCT","PAGE","RootProducts","CHANGE","SwitchPage","_product","NestedProducts","rootProducts","ProductSelection","StartPageEvents","ClosePopup","productsSlice","TotalRecords","TotalCount","nestedProductsSlice","Copied","ConfiguredProductSelected","AddNewProduct","TabSelected","SaveConfigurationData","SaveConfigurationDataEventArgs","AddedImageAttachments","RemovedImageIds","UpdatedAnnotations","ConfigurationDescription","ProductResponse","StartPageStore","_descriptionFieldId","GetConfiguredProducts","DescriptionFieldId","ERROR_GETTING_CONFIGURED_PRODUCTS","GetConfigurationData","configurationId","hookData","GetOriginalConfigurationImage","controlId","ControlId","CopyConfiguredProduct","RemoveConfiguredProduct","RemoveConfiguredProductByLevel","SaveAllConfigurationData","SaveConfigurationDataDtos","saveConfigurationDataDto","UpdateAnnotationsDto","Annotations","TempName","TempOriginalName","CLIPBOARD_IMAGES_TOPIC","_isRendered","_dataModel","_addedImageAttachments","_removedImageIds","_clipboardImages","_imageGalleryVisible","_annotations","_markerButton","_annotationsShown","_uploadedFilesObjects","_maxFileSize","_controlId","_startPageStore","_useAnnotations","UseAnnotations","_showAnnotations","ShowAnnotationsModeByDefault","IsImageGallery","MaxFileSize","annotation","HasChanges","UnBlockUi","IsImage","SetGalleryImages","imageGalleryExists","configurationImages","LoadImagesOnInit","_dropzoneInstance","domData","dataModel","ImageDataModel","fileModel","ImageData","Files","InitImageGalleryViewer","InitDropzone","InitPasteEvents","AfterUpload","AttachmentModel","preloaded","AddImageInGalleryMemory","_imageGalleryViewer","OriginalImageData","createObjectURL","CacheFile","valueHasMutated","TruncateFileName","Index","chunks","CutByChunks","UploadFileChunks","_imageGalleryContainer","markerable","_mutationObserver","marker","ShowMarkerArea","viewed","clickOnImage","UniqueId","ViewerJsExtention","CustomTooltip","clipboardImages","Node","RemoveImageFromGalleryMemory","AddFiles","chunkSizeInBytes","streamPosition","streamEndPosition","fileChunks","currentPart","totalPart","uploadModel","UploadChunkModel","DropDataStore","UploadFileChunk","viewer","ImageDelete","fileIndex","viewerImage","galleryAttachment","cachedFileModel","fileWithCache","removedAnnotations","ClearImageAttachments","GetImageFromCamera","camera","ImageFromCamera","now","imageCropperScreen","ImageCropperScreen","CropedImage","Base64Data","ConvertBase64ToFile","base64Data","DisableViewerControls","annotations","_markerArea","MarkerArea","renderAtNaturalSize","renderImageType","renderMarkersOnly","uiStyleSettings","positionUI","addRenderEventListener","imgURL","svgString","svgBase64","svgList","svg","XMLSerializer","serializeToString","rect","originalImage","svgImage","base64","prevEl","fileObject","attachment","originalImageFile","originalImageBase64","newAnnotation","EnableViewerControls","addCloseEventListener","restoreState","flippable","ConfigurationDescriptions","_hookLoaded","_activeConfigurationLevel","_tabSelected","_memo","_initialMemo","_memoVisible","_configurationImageGallery","HookLoaded","MemoHasChanges","MemoVisible","ConfigurationDataHasChanges","HighestLevel","highest","HighestLevelClass","ActiveConfigurationLevel","ShowConfigurationDescription","_showConfigurationDescription","TabDescription","level2DescriptionModel","DescriptionTranslation","NO_NAME","DisplayConfigurationDescription","activeLevelDescriptionModel","configuration","Copy","SelectTab","UnSelectTab","SetMemo","_memoEditor","AfterInitMemo","AfterChangeMemo","GetSaveConfigurationDataArgs","NO_PENDING_CHANGES","StartPageMappings","configuredProductsDto","CanCreateAndCopy","SaveConfigurationDataDto","SaveAllConfigurationDataDto","StartPage","OrderedProduct","Level1Active","ShowConfigurationTabs","Level2Active","ShowSaveAndCloseButton","CloseMessage","CLOSE_LABEL","UserHasLevelRole","GetNewProductTemplate","UpdateNavigationStack","OnAddNewProductClicked","ORDERED_PRODUCTS","newRole","SelectFirstTab","ConfirmProductCopy","ConfirmProductRemove","OnTabSelected","showConfigurationDescription","FillConfigurationData","configurationDataDto","ImageGalleryExists","UnSelectOtherTabs","configurationData","firstProduct","DO_YOU_WANT_TO_COPY","CopyProduct","DO_YOU_WANT_TO_DELETE","OBJECT_HAS_BEEN_COPIED","OBJECT_HAS_BEEN_REMOVED","DATA_SAVED","SaveAndCloseModal","productWithConfigurationDataChanges","saveConfigurationDataDtos","configurationDataArgs","PageName","NewConfigurationPage","ConfiguredProductPage","ProductConfigurator","_pageNameProductConfigurator","_activePage","_userConfiguratorRoles","CanUseConfigurator","_alternativePriceModel","MapToAlternativePriceModel","OrdersEntityId","Level1Value","Level2Value","tabSecurityStore","userId","GetUserBusinessRoles","roles","MapToRoles","ShowStartPage","Flush","CloseActivePage","CheckProductConfiguratorRelationType","SwitchToStartPage","ShowPopup","parsedException","InnerExceptions","inner","YOU_DONT_HAVE_ANY_OF_REQUIRED_BUSINESS_ROLES","ShowRootProductsPage","SwitchToRootProductsPage","ShowNewConfigurationPage","SwitchToNewConfigurationPage","ShowConfiguredProductPage","SwitchToConfiguredProductPage","FlushNavigationStack","page","HidePCFGROUPIfEmpty","navigationItem","Payload","ReloadScreen","DisposeActivePage","ignoreDelay","General","Screen","rolesDto","roleDto","EnableAlternativePriceCalculation","calculationRule","AlternativePriceCalculationRule","calculationRuleWithoutPrice","replaceAll","isCalculationRuleValid","NavigationItemTypes","_type","_payload","_pageNumber","Page","Is","NavigationStack","topItem","oldItem","newItem","OldItem","NewItem","RemoveTop","removedItem","poppedItems","controlFacade","contextControl","setData","controlData","SetData","setBackgroundColor","gridFacade","getTotalRecords","screenFacade","addOnAfterSave","getAllControls","GetAllControls","navigateToScreen","GO_TO_RECORD_SCREEN","showInModal","FunctionBuilder","Execute","BuildFunction","Function","GetTableByName","tableName","GetEditScreen","TryLock","screenManager","ScreenManager","TableTypeId","ReleaseLock","UnblockUI","NavigateToRecordScreen","CONTROL_TYPES","SKIP_SELECTED","Types","Timeout","InitTimer","IsTimerOn","_timer","_textSkip","TextSkip","_declineClass","AddTimer","OnSkipClick","CANCEL_SELECTED","DecisionDialog","TextCancel","OnYesClick","OnNoClick","DELETE_SELECTED","DISABLE_SELECTED","DeletionModeDialog","IsAsk","DeletionMode","ASK","IsPreserve","PRESERVE","IsDelete","DELETE","HasCustomLifeStatus","confirmationMessage","DELETION_NOT_ALLOWED_DUE_TO_EXISTING_RELATED_RECORDS","ALL_RELATED_DATA_WILL_BE_LOST_CONTINUE","OnDeleteClick","OnDisableClick","IsTextPrompt","IsPasswordPrompt","_promptLabel","_invalid","_requiredInvalid","_required","_requiredErrorMessage","_invalidMessage","InvalidMessage","_showNotification","_closeOnSave","triggerEvent","ChangeValue","OnSave","OnCancel","SAVE","SelectDialog","_selectorLabel","_selectorOptions","DownloadBase64","arrayBuffer","Base64ToArrayBuffer","blob","StartDownloadFile","download","revokeObjectURL","binaryString","binaryLen","SQLView","SocialLinkView","SkypeView","LinkedinView","MailView","UrlView","LocalUrlView","urlPattern","socialFormatsEnum","Linkedin","Facebook","YouTube","Twitter","Instagram","Pinterest","Medium","FormatsEnum","TemplatesToFormats","Template","TemplateNamesToFormats","FormatManager","_tableId","_formatName","_labelPosition","LabelPosition","_icon","Icon","_isGrid","IsGrid","_isIconVisible","SHOW_CONTROL_ICONS","GetLabelStyleColor","SetTemplate","ApplyMailProperties","LabelStyle","_labelStyle","IsSocialFormat","formatName","IsSkypeFormat","FormatUrlForSocial","matches","_template","_templateName","templateToFormat","tf","templateNameToFormat","HasTemplate","_hasMails","_showMails","LoadTabs","TryOpenComposer","MailClick","PLEASE_ADD_YOUR_EMAIL","PLEASE_ADD_EMAIL","FormatManagerStore","composerOptions","SubjectEntityId","SubjectRecordId","SubjectTypeId","GetTableTypeId","composeMail","RunQueryFromGrid","GridRow","dataCells","DataCells","nameCell","cell","Model","FieldMetadata","typeCell","queryName","RunQuery","GetScreen","GetTableTypeName","StartLocalURL","StartLocalUrl","query","queryType","enableSelectRecord","planningDate","multiselect","queryModel","QueryExpressionModel","paramsPage","QueryParamsPage","HasShowParameters","QueryScreenId","ShowQueryScreen","ShowStaticQueryScreen","GetScreenById","ScreenId","RaiseNotImplemented","GetTypeName","QueryScreen","SetQuery","RenderByTargetId","queryResultPage","QueryResultPage","ListScreen","RECORDS_SELECTED","SelectedRecords","ShowQueryResult","FormatUrl","includes","localUrl","deferedResult","responseJson","observerConfig","JBoxDropDown","bindOnCreate","_toolTip","adjustTracker","inModal","_ScrollHandler","isPivotTooltip","Position","RepositionOnHorizontalScroll","BindContent","GetContentElement","isBindNeed","_bindComponent","domNodeDisposal","addDisposeCallback","SetNewWidth","LockChain","_locks","FindLock","lock","lockIndex","FindLockIndex","FindLocks","locks","HasLock","AddLock","RemoveLock","RemoveAllLocks","TakeRootLock","TakeAllLocks","HasAnyLock","PulseDateTracker","_isActive","_trackInterval","_pulseDate","PULSE_TRACKER_EVENTS","PULSE_DATE_EXPIRED","SetPulseDate","pulseDate","RegisteredLock","RegisteredLocks","Successful","ContinuedLock","LockStore","RequestLock","registeredLockJson","GetErrorMessage","RequestLocks","registeredLocksJson","ContinueLocks","lastEventDate","LastEvent","continuedLockJson","ReleaseLocks","LockModels","errorJson","NewLock","NewLocks","RecordIds","ContinueLockConfirmation","_dialog","CONTINUE","OnConfirm","OnDiscard","CONTINUE_LOCK_CONFIRMATION_EVENTS","LockManager","_chain","_pulseDateTracker","OnPulseDateExpired","_continueConfirmation","ContinueLock","ReleaseAllLocks","LOCK_EVENTS","StartPulseDateTracking","RELEASED","OnLockRelease","newLock","TryLocks","recordIds","registeredLocks","registeredLock","existingLock","Releasing","lockToRelease","releasedLock","MapToLock","_lastEventTime","StopPulseDateTracking","UserIsActive","SaveLock","SaveLocks","_lockRequestDateTime","newPulseDate","PulseDate","lastEventTime","continuedLock","CONTINUED","tabindex","nextPrevTemplate","_currentPage","_pagesCount","_totalRecords","_selectedPage","_recordsPerPage","_isSearch","_nextPrevTemplate","_skipChangeTrigger","_title","owner","read","pagesCount","OF","_titleWidth","_enableNext","_enablePrevious","DelayedUpdate","_updateTimeout","SkipChangeTrigger","ChangeTrigger","GetIsReady","shouldSkip","NavigationButtonClick","navigationType","recordsPerPage","GetNextPrevTemplateName","EnterKey","selectedPage","PathRunnerStore","GetData","requestOptions","ResolveResponse","ResolveFail","GetLinkedRecords","ResultList","PathRunnerViewModel","_nodes","nodes","GetNodes","AddEllipsisTooltip","givenNodes","original","_children","DestroyEllipsisTooltip","GetNode","GetNodeByRecordId","SetInitialNode","initialNodeId","CurrentNode","ToJson","ItemNameTemplate","PathRunnerNodeViewModel","Children","GetTranslatedName","TypeTranslatedName","IsInitialNode","childRecord","_tooltip","EllipsisTooltipExtention","CreateEllipsisTooltipForPathRunner","IsRetired","LifeStatusGroup","nestedNodes","IsSubject","HasChildren","RECORD_DISABLED","PathRunnerNodeViewModelMapping","MapFromResponse","nodeViewModel","TypeId","PathRunnerViewModelMapping","responseModel","roots","Roots","PathRunnerUnit","isSpecialScreenExist","_pathRunnerId","isExpanded","GetSettingsFromLockStorage","_expanded","_isSpecialScreenExist","_dataLoaded","_pathRunnerNodes","dataLoaded","RenderTree","ExpandCollapse","SetSettingsToLockStorage","OpenSpecialScreen","GetSpecialScreenIconTemplate","_pathRunner","LoadNewData","pathRunnerParentsAmount","PATH_RUNNER_PARENTS_AMOUNT","_treeRendered","DataLoaded","DataLoadFailed","$treeRoot","jstree","core","ExtendTree","themes","icons","OpenCurrentNode","LoadLinkedRecords","linkedRecords","AddLinkedRecords","currentRecord","currentNode","_open_to","open_node","disable_node","_userVars","SetPathRunnerSettings","Place","lockStorageSettings","GetPathRunnerSettings","IsPathRunner","IsSpecialScreenExist","enable_node","RecordTypeId","existingRecord","nestedNode","PathRunner","_initialized","_entityToUnit","GetUnit","FlowMemosOperations","FlowItemModel","FlowOperationModel","FlowFolderModel","FlowItems","FlowOperations","ProgressBarInfoModel","LifeStatusesGeneralModel","CreateFlowRecord","UpdateFlowRecord","DeleteFlowRecord","GetProgressBarInfo","GetFlowMemo","CreateFlowMemo","UpdateFlowMemoRecord","UpdateFlowOperationRecord","DeleteFlowMemo","showElement","showViewLookup","showFunctionLookup","isEnabled","viewList","allowViewListUnset","isAddingRecordAllowed","enableEditView","enableDeleteView","enableLockItem","exportDataAllowed","withExportFeatures","showLockItem","queryLocked","newView","editView","copyView","deleteView","toggleLock","exportToCSV","exportToExcel","_showElement","_showViewLookup","UserType","Gdpr","_showFunctionLookup","_view","_isEnabled","_viewList","_allowViewListUnset","_isAddingRecordAllowed","_enableEditView","_enableDeleteView","_enableLockItem","_withExportFeatures","_showLockItem","_queryLocked","_exportDataAllowed","_newView","_editView","_copyView","_deleteView","_toggleLock","_exportToCSV","_exportToExcel","_isOpen","_viewListSelect","_selectButtonWidth","CustomSelect","queryDropdowns","SelectOption","ShowViewLookup","IsUserInRole","SuperUser","LockItemText","UNLOCK_TABLEVIEW","LOCK_TABLEVIEW","IsAddingRecordAllowed","EnableEditView","EnableDeleteView","koDescendantsComplete","contentAdded","NewView","EditView","CopyView","DeleteView","ToggleLock","ExportToCSV","ExportToExcel","register","RecordLinkerStore","IsLinkWithRecordExist","GetExistingLinksWithRecords","LinkRecord","TransactionId","LinkRecords","AddAndLinkRecord","RecordLinker","IsLinkRecordExist","SupportInfoCategory","SupportInfoUrgency","SupportInfoModel","SupportStore","GetSupportInfo","CreateSupportTicket","supportInfo","_summary","_selectedCategory","_selectedUrgency","_description","_validation","summary","summaryMaxLength","category","urgency","descriptionMinLength","descriptionMaxLength","_placeholder","REPORT_ISSUE_DESCRIPTION_PLACEHOLDER","_image","_supportInfo","getSupportInfoPromise","DataBaseName","GetDatabaseName","SCREENSHOT_CAN_BE_MADE_ONLY_USING_HTTPS","video","getDisplayMedia","PERMISSION_IS_DENIED","play","videoWidth","videoHeight","track","getScreenshot","SendTicket","ticket","ConstructTicket","ValidateTicket","ISSUE_HAS_BEEN_SENT_TO_SUPPORT_TEAM","screenTypeId","openedScreen","GetCurrentScreen","GetTypeId","CategoryId","UrgencyId","ScreenTypeId","Browser","ConsoleOutput","GetErrors","Screenshot","Summary","GetDbFromSession","GetDbFromUrl","GetDbFromLoginForm","searchParams","ImageCache","allowInstantiation","SetScriptDebugEditor","debugEditor","_scriptDebugEditor","session","setMode","setUseWorker","SetDebugEditor","_debugEditor","_signalRHub","withUrl","accessTokenFactory","skipNegotiation","transport","WebSockets","withAutomaticReconnect","build","row","getLength","column","scrollToLine","gotoLine","notificationType","objectId","publishSync","EXECUTE_SCRIPT","Code","Params","ObjectId","EvalFunction","SkipRows","skipValue","indx","SetToken","TranslationFieldEditor","_translationItems","_activeTranslationItem","_opened","_translationMaxSize","TranslationItemsList","ActiveTranslation","GetTranslationMaxSize","LoadTranslationItems","translationItems","TranslationItem","SubscribeOnValueChanges","_subscription","LanguageId","SetTranslations","translation","SetTranslation","GetDefaultLanguage","SetTranslationMaxSize","translationMaxSize","SetActiveTranslation","languageId","translationItem","GetTranslationById","GetTranslations","withDefault","GetDefaultTranslation","SetFocus","focusEmptyElement","IsFocused","SelectTranslation","manager","NOTIFICATIONS","GetLocalizedString","RECORD_SAVED","RECORD_REMOVED","NOT_ALLOWED_ACTION","RECORD_CREATED","RECORD_UPDATED","REFERENCE_TABLE_NOT_SET","INVALID_REFERENCE_TABLE","REFERENCE_WAS_SET","REFERENCE_WAS_UNSET","TABLE_NOT_FOUND","ENTITY_NAME_WAS_NOT_FOUND","DATA_IS_NOT_SAVED","ERROR_DELETING_RECORD","ERROR_GETTING_CONTROL_OPTIONS","SOMETHING_WENT_WRONG","SUB_TYPE_NOT_FOUND","TYPES_NOT_FOUND","INCORECT_PASSWORD_LENGTH","MINIMUM_LENGTH_OF_THIS_FIELD","INCORRECT_URL_PLEASE_TYPE_FULL_URL_LIKE","EDITSCREEN_CANNOT_BE_USED_AS_A_HOME_SCREEN","CANNOT_OPEN_THE_HOME_SCREEN_SUBJECTENTITY_ENTTY_SCREEN","HOME_SCREEN_SUBJECT_ENTITY","ALLOWED_FILE_EXTENSIONS_ARE_EXTENSIONS","CANNOT_UPLOAD_FILES","YOU_ARE_NOT_ALLOWED_TO_PERFORM_THIS_ACTION","ERROR_GETTING_LIFESTATUSES","LINK_HAS_BEEN_COPIED","COULD_NOT_PROCEED_PLEASE_CREATE_THE_LINK_BETWEEN_ENTITIES","INVALID_USER","INVALID_DATABASE","ACCESS_DENIED","ERROR_USER_ALLOWANCE","ERROR_USER_DATA","CONTACT_SCREEN_NOT_FOUND","STATUS_UPDATED","NO_LINKED_RECORDS","NEXT_STATUS_NOT_AVAILABLE","CHANGES_APPLIED","TIME_OVERFLOW","ROW_EDITOR_NOT_FOUND","FREEZE_TIME_NOT_SPECIFIED","FILL_REQUIRED_DATA","DURATION_IS_TOO_LONG","TO_DATE_IS_LESS_THAN_FROM","ONLY_FOLLOWING_TYPES_ARE_ALLOWED","EVENT_UPDATED","EDIT__ONLY_APPOINTMENT_EVENTS","SELECT_ONLY_WITHIN_DAY","BOOKED_TIME_RECORD_WAS_CREATED_SUCCESSFULLY","ATTENDEES_CANNOT_BE_ADDED_DUE_TO_MISSING_LINK_LIST","PASSWORD_REVOKED","PASSWORD_RESET","EMAIL_WAS_SENT","PLEASE_ADD_ACCOUNT","PLEASE_SELECT_ANY_EMAIL","MARKED_AS_READ","MARKED_AS_UNREAD","PLEASE_ADD_RECIPIENT","OUT_TYPE_NOT_FOUND","IN_TYPE_NOT_FOUND","SELECTION_APPLIED","RECORD_ALREADY_EXISTS","RECORD_WAS_AUTOLINKED","USER_SHOULD_BE_LINKED","LINKS_TO_ENTITIES_MUST_BE_CREATED","CREATING_SCREENSHOT","SCREENSHOT_CREATED","MAIL_ADDRESS_FOR_GLOBAL_NOT_FOUND","PROVIDE_SQL_SCRIPT","TYPE_IS_NOT_SUPPORTED","RECORD_ADDED_TO_BASKET","PLEASE_CREATE_OR_SELECT_BASKET_RECORD","PLEASE_SELECT_BASKET_RECORD","RECORD_REMOVED_FROM_BASKET","PLEASE_SELECT_ANY_RECORD","CANVAS_UPDATED","PLEASE_SAVE_CANVAS_BEFORE_EXECUTE","PLEASE_SELECT_SOURCE_AND_DESTINATION","DATAWIZARD_EXECUTED","ROLLBACK_APPLIED","ONLY_ONE_FILE_WAS_SAVED","DOCUMENT_UPLOADED","OVERAL_FILE_SIZE_EXCEEDED","ALLOWED_FILE_SIZE_EXCEEDED","EMPTY_SIZE_FILES_RESTRICTION","ALLOWED_FILES_SIZE_EXCEEDED","ALLOWED_FILES_AMOUNT_EXCEEDED","SCREEN_UPDATED","SCREEN_REFRESHED","PLEASE_PROVIDE_NAME","SAVE_ONLY_ONE_FILE","ERROR_GET_GRID_DATA","QUERY_BUILDER_NOT_FOUND","GRID_SUBJECT_NOT_FOUND","RECORDS_LINKED","NO_SELECTED_RECORDS","NO_EDITABLE_COLUMNS","ERROR_DELETE_GRID_DATA","GRID_CELL_HYPERLINK_TOOLTIP","NOT_APPLICABLE_FOR_LIST_SCREEN","SORT_BY_COLUMN_TO_ENABLE_SORTING","SOME_RECORDS_ARE_LOCKED","NOTHING_TO_COPY","LINK_RECORDS_NOT_FOUND","USE_LINK_ADDLINK_OR_ADDQUERY_BUTTONS_TO_COPY","INVALID_RECORD_ID","PARAM_IS_EMPTY","SELECT_RECORDS_TO_PROCESS","NO_QUERIES_FOUND","PLEASE_SELECT_ANY_FIELD","CD_TABLE_NOT_FOUND","PLEASE_SELECT_ENTITY","SAVE_OR_DISCARD_CHANGES","ALL_RECORDS_SAVED","NO_PRIMARY_KEY","SELECT_ANY_OPTION","DATA_ROLE_IS_NOT_SUPPORTED","PLEASE_UPDATE_VIEW","ERROR_CAMERA_INITIALIZATION","GET_USER_MEDIA_IS_NOT_SUPPORTED","PLEASE_TAKE_PHOTO","CONFIGURATION_SAVED","DATABASE_DELETED","DATABASE_NOT_FOUND","CONFIRMATION_FOR_COPY_ENVIROMENT","ENVIROMENT_WAS_CREATED","PORTLET_SPACE_UPDATED","MORE","PORTLET_SPACE_INFO","PORTLET_SPACE_NAME","USE_AS_MAIN","CREATE_NEW","PLEASE_ENTER_PORTLET_SPACE_NAME","PORTLET_SPACE_WILL_BE_DELETED","FILE_SIZE_IS_TOO_BIG","LOGO_UPDATED","CURRENT_PASSWORD_IS_REQUIRED","NEW_PASSWORD_IS_REQUIRED","RE_TYPE_PASSWORD_NOT_MATCH","THEME_SAVED","SECURITY_RESET_DONE","CLICK_TO_SEE_ALL_RECORDS_IN_THE_LIST","THE_NUMBER_OF_RECORDS_EXCEEDS_THE_CONFIGURED_LIMIT","PLEASE_SET_ALL_PROPERTIES","VIEWS_UPDATED","SAVED","WRONG_ARGS","TYPE_IS_NOT_AVAILABLE","RECORD_IS_SEARCH_ONLY","NO_SEARCHABLE_FIELDS","NO_DATA_FOUND_WITH_APPLIED_FILTER","EDIT_SCREEN_NOT_EXISTS","ENTITY_ALREADY_ADDED","NEW_CONTROL_CREATED","FIELD_ALREADY_ADDED","ONLY_CUSTOM_FIELDS_ALLOWED","FIELD_FROM_ENTITY_NAME_IS_ALREADY_PRESENT","LINK_TABLE_COULD_NOT_BE_REVERSED","NO_CHANGES_TO_UPDATE_IN_DATABASE","REPLACE_EXISTING_VIEW","EMPTY_CHECKLIST_FIELD","SELECT_A_LOOKUP","LIFESTATUS_FLOW_LOADED","ERROR_BUILDING_LIFE_CYCLE","YOUR_FLAG_IMAGE_WAS_UPLOADED_SUCCESSFULLY","PLEASE_CREATE_ALL_THREE_TRANSITIONS_FOR_A_TEST_NODE","THE_NEW_DEFAULT_RETIRED_STATUS","THERE_IS_NOT_DEFAULT_RETIRED_STATUS","SELECT_STATUS_FOR_SUB_FLOW","GLOBALS_UPDATED","INVALID_CULTURE","INVALID_DESKTOP_LANGUAGE","TITLE_CONVERTED_TYPE_OF_RECORD","TABLE_IS_NOT_SELECTED","MAILING_CONFIGURED","BULK_EDIT_RECORD_NUMBER_WILL_BE_EDITED","EDIT_ALL_RECORD_NUMBER_WILL_BE_EDITED","FORM_FOR_EMAIL_NOT_CONFIGURED","CANNOT_LINK_RECORD","QUERY_EXPRESSION_WAS_NOT_CREATED","DOCUMENTS_HAS_BEEN_SENT_TO_FINANCIAL_PROCESSOR","NO_CLEANING_OPTION_SELECTED","INVALID_SCHEDULER_SUBJECT","CLICK_TO_SEE_ALL_COLORS","CLICK_TO_SEE_ALL_IMAGES","UNLINK_QUERY_RECORD","COPY_PLANNER_DATA","SELECT_PERIOD","SELECT_PLANNER_ROWS","ERROR_READING_TIMER_STATE","ERROR_GETTING_ACTIVE_TIMERS","ERROR_STARTING_TIMER","ERROR_STOPPING_TIMER","ERROR_SETTING_OVERTIME","GOOGLE_KEY_IS_NOT_VALID","NO_ANY_VIEW_OPTIONS","ERROR_GETTING_DROPDOWN_DATA","WRONG_FORMAT_IN_MEMO_TIMESTAMP_FORMAT_GLOBAL","LABELS","SEND","NO_IMAGE","ID","NAME","TYPE","MESSAGE","SUCCESSFUL","WARNINGS","ERRORS","RESULTS","PROCESS","SEARCH_TERM","ROOT","SEARCH","SEARCH_BY_NAME","SETTINGS","NEW","SEARCH_WITH_DOTS","SEARCH_GRID","SAVE_AND_CLOSE","ALL","LIST","RETURN","CREATE","ENTITIES","REVERT","ACCEPT","FROM","SUBJECT","DISCARD","DESCRIPTION","DEFAULT","VALUE","GROUP","RUN","TEST","RE_CREATE","NO_RECORD","DONE","EMPTY","EMPTY_VALUE","DELTA","VALUES","REVERSE","COPY","NEXT","NEXT_NEXT","USE","DISTRIBUTE","DAY","MONTH","THIS_FIELD_IS_REQUIRED","FEATURE_TYPE_IS_NOT_SET","UPLOAD","OKAY","UPLOAD_FILES","TOTAL","COUNT","SHOW_MORE","SHOW_IN_MENU","SHOW_IN_PORTLET","LOCKED_BY_SUPER_USER","NO_RECORD_SELECTED","RECORD_LINK","SPHEERES_LINK","ROLLBACK","MEMOS","CLICK_TO_NAVIGATE_TO_SPECIAL_SCREEN","REPLY","CC","BCC","EMAIL_SUBJECT","E_MAIL","FORWARD","REPLY_TO_ALL","TO_","REPORT_HOURS","SKIP","ZOOM_IN","ZOOM_OUT","ACTUAL_SIZE","ROTATE_FLIP","PREVIOUS","ROTATE_LEFT","ROTATE_RIGHT","FLIP_HORIZONTALLY","FLIP_VERTICALLY","ANNOTATIONS","ON","OFF","MY_SETTINGS","MY_CONTACT_PAGE","MY_DAILY_STUFF","DEDUPLICATION","DOWNLOAD_CLIENT","DOWNLOAD_MAIL_PLUGIN_32","DOWNLOAD_MAIL_PLUGIN_64","LOCK_SCREEN","LOG_OUT","HELP","REPORT_ISSUE","ABOUT","LOCKED","NOT","DOWNLOADS","REQUIRED_NET_FRAMEWORK","DEDUPLICATE","DEDUPLICATE_ALL","MATCH_ALL","MINIMAL_MATCH_RATE","DELETE_ALL","CLICK_TO_DELETE_ALL_MATCH_LINKS","DESIGNERS","CANVAS_DESIGNER","NETWORK_DESIGNER","FUNCTION_DESIGNER","SYSTEM","ENVIRONMENT_MANAGER","TRANSLATION_EDITOR","PRIMARY_GROUP","SELECT_GROUP","CLICK_TO_LOCK_GROUP","GROUP_IS_LOCKED","USED_IN_PROFILES","RECENT","FAVORITES","ONLY_LAST_90","ONLY_LAST_90_ARE_SHOWN","ONLY_LAST_90_ARE_INACTIVE","ENABLE_FILTER","LIFESTATUS","MODE","FAST_SEARCH","PHONETIC_SEARCH","SEARCH_MODES","SEARCH_FIELDS","SEARCH_SCREEN_PAGINATION","TOTAL_SEARCH","TYPES","NO_RECORDS_FOUND","REMOVE_DUPLICATES","MERGE","OFF_FILTER_BY_RELATIONS","FILTER_BY_RELATIONS","FILTER_BY_MAIN_RELATIONS","NO_RELATION_TYPE","SELECT_TWO_RECORDS","FILTER_BY_LINKING_CONDITIONS","FILTER_BY_MAIN_RELATIONS2","ONLY_LINKED_DOCUMENTS_ARE_SHOWN","CLICK_TO_START_BARCODE_SCANNING","CLICK_TO_START_BULK_BARCODE_SCANNING","VALUE_CANNOT_BE_CONVERTED_TO_BARCODE","SPECIAL_CHARACTERS","FILTERING_OPTIONS_NOT_FOUND","MIN","MAX","CLEAR_DATE","CHANGE_DATE","FILTER_RANGE_ERROR","DEFAULT_VIEW","TABLEVIEW_NEW","TABLEVIEW_EDIT","TABLEVIEW_COPY","TABLEVIEW_DELETE","ADD_AND_LINK","EXPORT_TO_CSV","EXPORT_TO_EXCEL","LINK","LINK_PARENT","ADD_QUERY","SHOW_ALL_COLUMNS","HIDE_COLUMNS_BY_PRIORITY","SHOW_RETIRED","HIDE_RETIRED","EDIT_ALL","SAVE_ALL","LINKED_RECORD_IS_RETIRED","LINKED_RECORD_REQUIRED","NO_ANY_CUSTOM_FIELDS","SELECT_LINK","COPY_LATEST","SCAN_AND_LINK","EDIT_SORT_DESCRIPTION","SORT_REMOVE_DESCRIPTION","SORT_ADD_NEW_DESCRIPTION","CLICK_TO_PROGRESS","KANBAN_SEARCH","KANBAN_TYPE_HIERARCHY_VIOLATION","PREVIOUS_RECORD","NEXT_RECORD","FOLLOW_LIST","MAKE_PERSONAL","THERE_ARE_NO_PRODUCTS_FOUND","THERE_ARE_NO_PRODUCT_PARTS_FOUND","NO_GROUP_NAME","CLASS_NOT_SELECTED","CLASS_RECORD_SHOULD_BE_SELECTED","INCLUSIVE_PRODUCTS","INCOMPATIBLE_PRODUCTS","DECLINE","NOT_SELECTED","SHOW_ALTERNATIVES","CHOOSE_CONFIGURATION","PRICES","ADD_NEW","OTHER","PRODUCT_DOES_NOT_EXIST","PRODUCTS_DO_NOT_EXIST","ADD_AS_EXTRA_PRODUCT","PRODUCT_LIST_IS_EMPTY","USE_DESCRIPTION","THE_TRANSLATION_ALTERNATIVE_PRICE_WITH_CODE_WILL_BE_USED_ON_PCF","EXECUTE","ENABLE_SOCKET_VALIDATION","IN","OUT","METHODS","DATABASES","GUEST_PAGE","DATABASE_LIST","DATABASE_NAME","SERFER_INFO","DATABASE_TYPE","CYBER_APP_USER","DB_SERVER_NAME","LOGIN_NAME","ENVIRONMENTS","NEW_DATABASE_NAME","SPECIAL_CHARACTERS_NOT_ALLOWED","NEW_ENVIRONMENT_WILL_BE_COPIED","PREVIEW","REFRESH","MENU_START","TEMPLATE","CREATE_NEW_PLANNERTAB","ADD_SUB_LEVEL_PLANNER","DELETE_PLANNER_LEVEL","REMOVE_CONTROL","EDIT_SUB_TABLE","LAYOUT","ADD_SUBFORM","APPLY","LABEL_POSITION","CONTROL_DESCRIPTION","FIELD","ENTITY","MASK","SUB_ENTITY","MEMO_DESCRIPTION","USE_FIELD_NAME","SUBJECT_ENTITY","SUBJECT_FIELD","SCREEN_SUBJECT","TODO_ENTITY","TODO_TYPE","TODO_FIELD","SELECT_TABLE_AND_FIELDS","FILTERS","COLUMN_ORDER_AND_SETTINGS","QUERY_RESULT","FIELDS","OPTIONS","JOIN_TYPE","MAIN_OPTIONS","NORMAL","EXCLUSIVE","INCLUSIVE","MAIN_ONLY","EXCLUDE_MAIN","SELECT_ALL","AND","OR","ADD_RULE","ADD_GROUP","FORMAT","DISPLAY_PRIORITY","SUBTOTAL","AVERAGE","WRAP_FROM_HERE","CROSS_TABLE","SCREEN","SELECT_CUSTOM_SCREEN","CUSTOM_SCREEN","INVERSE","LINK_DIRECTION","LEFT_TO_RIGHT","RIGHT_TO_LEFT","TEMPLATE_SCREEN","SELECT_TEMPLATE_SCREEN","BOTH","ARROW","SELECT_FIRST","RECORDS","OWNER_IS_PLANNER","OWNER_IS_NOT_PLANNER","DROP_DOCUMENT_HERE","DROP_EXCEL_DOCUMENT_HERE","SELECT_A_TYPE_FOR_ALL_RECORDS","HAVE_TO_OPEN_RECORD","ROWS_AFFECTED","MISSING_FIELDS","CANNOT_UPLOAD_MULTIPLE_FILES","MAXIMUM_AMOUNT_OF_LINKED_DOCUMENTS_REACHED","MAXIMUM_LINKED_DOCUMENTS_REACHED_ONLY_FILES_WERE_UPLOADED","UPLOAD_IMAGE","SNAP_PHOTO","DISABLE_ON_DELETE","IGNORE_MISSING_SUB_KEY","DOWNLOAD","CHECKOUT","CHECKIN","LOCK","UNLOCK","ENABLE_VERSION","PRINT_ON_DESKTOP","DISABLE_VERSION","NO_DATA_AVAILABLE","GENERATE_PDF","SAVE_PDF","FIELD_COLLECTION","DATA_PROTECTION_OFFICER","VAULT_OWNER","SAFE_OVNER","DISCLOSURE_OFFICER","PUBLICATION_OFFICER","DEPUTY","COLLECTION_NAME","DATA_ROLE","TYPE_OF_TYPE","DUTCH_POSTAL_CODE_MUST_BE_FULFILLED","NEW_SELECTION","REMEMBER_ME","SELECT_USER","NONE","NO_AVAILABLE_TAGS","SELECT_TAG","BOOK","NO_TAGS_SELECTED","NO_TAGS_AVAILABLE_FOR_ENTITY","OPEN_IN_DESKTOP","QUERY","TEMPLATES","CREATE_TEMPLATE_IN","UPDATE_TEMPLATE_IN","TO","OVW","PAY","HOUR","ADD_LINE","WEEK","BOOKED","SALDO","YEAR","CURRENT_YEAR","NORM_40","FROM_40","SELECT__RESERVATION_SUBJECT","SPECIFY_RESERVATION_DESCRIPTION","DESCRIPTION_MIN_LENGTH","DESCRIPTION_MAX_LENGTH","YEARVIEW","DISSAPROVED","YEAR_OVERVIEW","NORM_40_HOURS","COMMENT","DISAP_REASON","DISAP_OVERVIEW","BOOKED_COUNTER","WEEK_DISAP_RECORDS","BACK","RECOLRD_IS_DISAP","DISAPPROVED","REASON","DURATION","WRITING_TIME_FOR_FUTURE_NOT_ALLOWED","CLICK_TO_ADD_A_NEW_MEMO","MAIN_PORTLET","NOT_AVAILABLE_CURRENT_ENTITY","NOT_AVAILABLE_LINKED_ENTITY","ADD_TODO","REMOVE_AFTER_DROP","TODO","AGENDA_TODAY","AGENDA_MONTH","AGENDA_WORK_WEEK","AGENDA_DAY","AGENDA_WEEK","AGENDA_LIST","AGENDA_USERS","AGENDA_TIMELINE_WEEK","SPECIAL_DAY","REQUEST_LEAVE","REPORT_ILLNESS","RECURRENT","CLICK_TO_RESCHEDULE","STARTING_DATE_IS_OUT_OF_FREEZE_TIME","BOOK_TIME","CANNOT_ACCEPT_APPOINTMENT","RECURRENCE_PATTERN","STARTING_DATE","MONTHS","WEEKS","WEEK_PLANNING","ATTENDEES","AGENDA_NO_EVENTS_TO_DISPLAY","SEND_EMAIL","ACTIONS","MARK_AS_READ","MARK_AS_UNREAD","ADDRESS","TOPIC","ADD_FROM","PROFILE","THEMES","PERSONAL_SETTINGS","NETWORK","LICENSE_HOLDER","CURRENT_PASSWORD","NEW_PASSWORD","RETYPE_NEW_PASSWORD","THERE_ARE_NO_REMOTE_DATABASE_CONNECTIONS","LICENSE_INFO","LICENSE_EXPIRATION_DATE","MAXIMUM_USERS_ALLOWED","MAXIMUM_CONNECT_USERS_ALLOWED","MAXIMUM_REMOTE_USERS_ALLOWED","MAXIMUM_LIMITED1_USERS_ALLOWED","MAXIMUM_LIMITED2_USERS_ALLOWED","MAXIMUM_LIMITED3_USERS_ALLOWED","MAXIMUM_PORTAL_USERS_ALLOWED","MAXIMUM_GDPR_USERS_ALLOWED","MAXIMUM_ROLE","REFRESH_PAGE_ALERT","PREFF_F5_BUTTON_ALERT","BASIC_THEME_OPTIONS","THEME_STYLE","BORDERS_THEME","SIDEBAR_MODE","BASIS_THEME_COLOR","CUSTOM_THEMES","SHOW_PREVIEW","BACKGROUND_COLOR_FOR_SIDEBAR","HEADER_BACKGROUND_COLOR","BACKGROUND_COLOR_FOR_HEADER_TEXT","BACKGROUND_COLOR_FOR_HOVERED_MENU_ITEM","BACKGROUND_COLOR_FOR_HOVERED_MENU_ITEM_SECOND_LEVEL_ITEM","BACKGROUND_COLOR_FOR_THEME_SQUARE","COLOR_FOR_HEADER_TEXT","COLOR_FOR_BORDERS_BETWEEN_MENU_LINKS","TEXT_COLOR_FOR_SIDEBAR_MENU","ACTIVE_LINK_COLOR","MENU_2_LEVEL_ACTIVE_LINK_COLOR","CONTROLS_TEXT_COLOR","CONTROLS_BACKGROUND_COLOR","CONTROLS_BACKGROUND_BORDER_COLOR","TABLE_HEADER_TEXT_COLOR","TABLE_HEADER_BACKGROUND_COLOR","TAB_BORDER_COLOR","ACTIVE_TAB_LEVEL_BACKGROUND_COLOR","ACTIVE_TAB_LEVEL_TEXT_COLOR","SQUARE_CORNERS","ROUNDER_CORNERS","WITH_BORDERS","WITHOUT_BORDERS","LEFT","RIGHT","LIGHT","FIXED","SHOW_DELETED","UPDATE_DATABASE","LANGUAGES","UPDATE_DATABASE_ALERT","ENABLED","KIND_NAME","SHOW_MODE","KINDS","TYPE_SECURITY","ACTIONS_CHECK_LIST","ALLOW_CUSTOM_VALUE","FILTER_SUBTABLE","FILTER_BY_K_SEQ","ONE_PARENT","CLEAN_DATABASE","USER_TABLES","SYS_TABLES","REMOVE_EXAMPLES","DELETED_FIELDS","DELETED_TABLES","SUB","SCREENS","TABLE_NAME","SUBJECT_AREA","DISABLE","FIELD_NAME","FIELD_TYPE","SIZE","LOOKUP","SORT","PROPERTIES","FIELD_FLAGS","FLAGS","VALIDATE","VIRTUAL","ALIAS_DEFINITION","DELETED","FIELD_SIZE","DEFAULT_VALUE","SYSTEM_FLAG","HIDDEN_FLAG","SEARCH_FLAG","TRANSLATE_FLAG","UNIQUE_FLAG","MATCHING","CUSTOM_VALUES_ALLOWED","TABLE","MERGE_VIEW","SERACH_SCREEN_IF_ALERT","USER_CALCULATED_EXPRESSION","DEPENDS_ON","FILL_FROM","NOT_SET","STATUS_DESIGNER","ADD_NODE","GENERAL","KIND","TABLE_DEFAULT","FLOW_FOLDER","NEXT_STATUS","CD_FIELD","USER_DB_FIELD","TABLES","CLICK_TO_EXPAND_COLLAPSE","COLUMNS","PRIMARY_KEY_ON_COLUMNS","INDEX_COLUMN","COLUMN","SEQUENCE_NAME","UNIQIUE_SEQUENCE_NAME","DOWNLOAD_METADATA","CLICK_TO_DOWNLOAD_METADATA","VIEW_EDITOR","VIEW","DYNAMIC_VIEW","RECIPE_VERSION","RECORD_ID","VALIDATION","CANNOT_MAKE_AN_ACTIVE_VERSION_INACTIVE","CLICK_TO_SET_SEQUENCE_VALUE","ADD_RELATION_TYPE_TOOLTIP","SHOW_ALL","HIDE","NEW_TAB","EDIT_PORTLETSPACE","EDIT_BUTTON","CONFIRMATION_FOR_UNSAVED_CHANGES","PORTLET_SPACE_WAS_UPDATED","SELECT_EXISTING_PORTLET_SPACE","EXPAND","COLLAPSE","PORTLET_SETTINGS","MINIMIZE","MAXIMIZE","HISTORY","RESET_SECURITY","SPECIAL","ADD_TO_FAVORITES","COPY_WITH_RELATIONS","CONSULT","DASHBOARD","CTRL_S_SAVE","SELECT_ICON","MAKE_EXAMPLE","NO_RECORDS_MESSAGE","NO_NAME_RECORD","PARENT","CHILD","ITSELF","DOCUMENTATION","THERE_IS_NO_DESCRIPTION_AVAILABLE","CONTROL","DASH","STATUS_FLOW","SETTING_THE_STATUS_RUNS","FOLLOW_UP_DOES_NOT_CREATE_AN_ACTION","DURATION_IS_SET","DEADLINE_IS_SET","BUSINESS_ROLES","FUNCTIONS","RECIPIENTS","ADDRESS_FIELD","MAILING_TEMPLATE","REQUEST_TEMPLATE","CONFIGURE","FOLLOW_UP","EXIST_ACTIVE_ACTIONS","RECORD_IS_DISABLED","ACTIVE_ACTIONS_NOT_FOUND","THERE_ARE_NO_NEXT_STATUSES_WITH_CHECK_LIST","CHECKLIST_UPDATED","SCHEDULER_FREE_CAPACITY","SCHEDULER_COMMON_FREE_TIME","PERIOD","STARTING","AGENDA_IS_NOT_CONNECTED","AGENDA_IS_NOT_AVAILABLE","SCHEDULER_NOT_FOUND","RE_PLANNING","RE_PLAN_APPOINTMENT_TO_PERIOD","NUMBER_WEEKS","SUBJECT_TOOLTIP","NO_POSSIBLE_TO_CREATE_APPOINTMENT_IN_THE_PAST","PLEASE_SELECT_DATA_SOURCE","PLEASE_SELECT_WAITING_FOR_INVOICE_LIFESTATUS","PLEASE_SELECT_INVOICE_ENTITY","PLEASE_SELECT_OUTPUT_RECORD_TYPE","RECORD_FOR_TABLE_CREATED","DATA_SOURCE","WAITING_FOR_INVOICING_LIFESTATUS","INVOICE_ENTITY","INVOICE_TYPE","DISABLE_NODE","LINKS_WILL_BE_DELETED","REMOVE_THIS_LINK","UNDO","REDO","PRINT","AUTO_LAYOUT","TOGGLE_FULL_SCREEN","ROTATE","ONLIFESTATUSTRIGGER","PRESENTATION","FILL","OUTLINE","FONT_SIZE","FONT_THICKNESS","FONT_COLOR","TRANSITION","APPROVAL","CONNECTION_TYPE","CONNECTION_STYLE","LINE_THICKNESS","LINE_STYLE","ENABLE","NEXT_ALLOWED","SOLID","DOTTED","DASHED","BOLD","INVALID_LIFESTATUS_NAME","ADVANCED_MODE","TIME_FRAME","DURATION_ELAPSED","DEADLINE_ELAPSED","NO_ACTION_NODE","SKIP_ACTION_CREATION_ON_FOLLOW_UP","CREATE_A_TRIGGER","MULTIPLE_ACTIONS","SELECTED","ICON_NOT_SELECTED","HIDE_LIFESTATUS_NAME","REFERENCE_FLOW","LEDGER","ACCOUNTS","NO_CONTROLS_OF_TYPE_INVOICING","READY_FOR_INVOICING_DATA","INVOICED","READY_FOR_PROCESSING_DATA","SELECT_FINANCIAL_PROCESSOR","OVERRIDE_SECURITY","CHANGE_RECORD_SECURITY","NATIVE_SQL","PLANNING","MAKE_PERSONAL_LABEL","MAKE_EXAMPLE_LABLE","SUPER_USER","DESIGNER_LEVEL1","DESIGNER_LEVEL2","DESIGNER_LEVEL3","NETWORK_MANAGER","US","FINANCIAL","PLEASE_SPECIFY_THE_URL","DROP_REPORT_HERE","LINK_UNDERLYING_RECORD","ADD_AND_LINK_UNDERLYING_RECORD","PROJECT_MANAGER","OVERWRITE","SKIP_EXISTING","COPY_PERIOD","CONFIRM_SELECTION","ON_DELETE","DISABLING_A_RECORD_WITH_A_CUSTOM_LIFESTATUS_IS_NOT_ALLOWED","NOTIFICATIONS_LABEL","TABLE_VIEW_LABEL","GRID_BULK_EDIT","SEND_BY_EMAIL","EDIT_RECORD_LABEL","ACCESS_DENIED_LABEL","UNLINK_RECORD_LABEL","UNLINK_MANY_RECORDS_LABEL","UNLINK_LABEL","UNLINK_ALL_SELECTED_LABEL","ENABLE_RECORD_LABEL","DISABLE_RECORD_LABEL","ADD_TO_BASKET_LABEL","REMOVE_FROM_BASKET_LABEL","PLANNER_LABEL","SELECT_VALUE_LABEL","OWNER_LABEL","ADD_NEW_LINK_LABEL","REMOVE_LINK_LABEL","EDIT_LINK_LABEL","TABLE_TEXT_NON_HAS_FIELDS","RECORD_VIEWED_LABEL","RECORD_EDITED_LABEL","RECORD_DELETED_LABEL","LINK_CREATED_LABEL","LINK_EDITED_LABEL","LINK_DELETED_LABEL","GLOBAL_SETTINGS_LABEL","NO_EXAMPLE_LABEL","CLUSTERED_FLAG","FIELD_MATCHING_LABEL","LINKED_ENTITY_LABEL","CURRENT_ENTITY_LABEL","SELECT_FORMAT_LABEL","ACCOUNT_NAME_LABEL","ACTIVE_LABEL","ARCHIVE_LABEL","REVOKE_LABEL","RLANNED_LABEL","ACQUIRED_LABEL","MAINTAINED_LABEL","OPERATIONAL_LABEL","RETIRED_LABEL","SECURITY_EDITOR_LABEL","SECURITY_LABEL","PASS_OWNER_LABEL","PASS_INHERITANCE_SETTINGS_LABEL","USER_USER_GROUP_LABEL","RIGHTS_LABEL","OPTIONALS_RIGHTS_LABEL","DO_NOT_PASS_SECURITY_LABEL","PASS_RIGHTS_LABEL","PASS_OPTIONAL_RIGHTS_LABEL","REFUSE_PASSED_SECURITY_LABEL","ROW_LABEL","REMOVE_LABEL","PASTE_VARIABLE_LABEL","DO_YOU_WANT_TO_CREATE_LABEL","EDIT_CODE_LABEL","ADD_DEFAULT_SECURITY","SELECT_SECURITY_PROFILE","PLEASE_SELECT_THE_PROFILE","NO_ALTERNATIVE_ENTITIES_WERE_SELECTED","SWITCH_TO_THE_DASH_TYPE","FILL_LOOKUP","MAKE_A_BACK_LINK","BUTTON_NAME","SUB_TABLE_VIEW","INTENTION","NO_RECORDS_TO_SELECT","CLICK_TO_COPY_URL","CLUSTER_SETTINGS","COPY_CLUSTER_MODE_DESCRIPTION","DEFAULT_CLUSTER_MODE_DESCRIPTION","DELTA_CLUSTER_MODE_DESCRIPTION","INVALID_FIELD_DATA","BOOK_CANNOT_BE_RENDERED_ON_THE_BOOK_PAGE","THERE_ARE_NO_PAGES","SCREEN_NOT_FOUND_FOR_THE_PAGE","ERROR_GETTING_BOOK_PAGE","TIMER","ACTIVE_TIMERS","START_TIMER","CLICK_TO_SHOW_ACTIVE_TIMERS","SET_THE_MAXIMUM_DURATION_TO_HOURS","NO_ACTIVE_TIMERS","STOP_THE_TIMER_FOR","STOP_THE_TIMER_FOR_BEFORE_LOGOUT","THE_TIMER_FOR_STARTED_AUTOMATICALLY","MENU_QUERIES","DECIMAL_DIGITS_VALIDATION_MESSAGE","DRAG_N_DROP_FLOWFOLDER","STATUS_SELECTOR","SERIES","NO_VALID_SUBTABLE_VIEW","ACCESS_RECORD_EXISTS","PLEASE_SELECT_USER","PLEASE_SPECIFY_REMOTE_USER","FILTER_BY_TYPE","RECIPE_NAME","LOCKED_THE_ROOT_NODE_IS_LINKED_TO_THE_LOCK_ENTITY","WILL_BE_APPLICABLE_DURING_UNLINKING_OF_ANY_PART_OF_RECIPE","GENERATE_DOCUMENT_FROM_TEMPLATE","SEND_TICKET","CREATE_TICKET","SUMMARY","SUMMARY_IS_REQUIRED","SUMMARY_SHOULD_HAVE_MAXIMUM_80_CHARACTERS","CATEGORY","CATEGORY_IS_REQUIRED","URGENCY","URGENCY_IS_REQUIRED","DESCRIPTION_IS_REQUIRED","DESCRIPTION_SHOULD_HAVE_AT_LEAST_50_CHARACTERS","DESCRIPTION_SHOULD_HAVE_MAXIMUM_2000_CHARACTERS","CONFIRMATIONS","ARE_YOUR_SURE_TO_DELETE_RECORDS","ARE_YOUR_SURE_TO_DISABLE_RECORDS","FIELD_WILL_BE_REMOVED_FROM_NEXT_FIELD_COLLECTION","DELETE_DATABASE_CONFIGURATION","CLOSE","FUNCTION_PACKAGE_DELETION","SUBFORM_AND_ITS_CONTROLS_WILL_BE_DELETED","DO_YOU_WANT_TO_STOP_RECORD_NAME","UNLINK_RECORD","UNLINK_USER","CURRENT_RECORD_WILL_BE_DISABLED","CANVAS_DATA_HAS_BEEN_CHANGED","RESET_SCREEN","REVERSE_LINK_TABLE","RELATION_WILL_BE_REMOVED_FROM_LINK_LIST","DEDUPLICATION_RECORDS_DELETION","ARE_YOU_SURE_YOU_WANT_TO_DELETE_VERSION","YOU_CAN_LOSE_UNSAVED_DATA_IF_YOU_LEAVE","ARE_SURE_TO_CHANGE_CLASS","ARE_SURE_TO_UPDATE_VERSION","TWO_FA_IS_ENABLED_BUT_NOT_CONFIGURED","SCAN_QR_CODE_WITH_TWO_FA","FOLLOW_TO_CONFIGURE_TWO_FA","ENTER_CODE_FROM_TWO_FA_DEVICE","ENTER_YOUR_PASSWORD_TO_CONTINUE_CLEANING_TABLES","LINK_RECORD_WITH_NEXT_RELATION_TYPE","CAN_CAUSE_DUPLICATION_OF_ALIAS","SELECTED_DAYS_WILL_NO_LONGER_TO_BE_EDITABLE","CREATE_NEW_ONE","SELECT_CELL_SUBJECT","THE_TIMER_IS_ALREADY_STARTED","REMOVE_SORT_DESCRIPTION","DEFAULT_RETIRED_STATUS_NOW","ARE_YOU_SURE_YOU_WANT_TO_DELETE_ALL_MATCH_RECORDS","DELETE_DW_PACKAGE","LanguageInfoModel","TranslationStore","GetTranslationsForDb","Enabled","_translations","UpdateLanguages","activeLanguages","cachedLanguages","GetLanguageByShortName","GetLanguageById","shortname","GetTranslation","currentLanguage","currentTranslation","TranslatedValue","AddLanguage","DeleteLanguage","languageToRemoveIndex","UpdateLanguage","languageToUpdate","SaveLanguages","languagesFromServer","MapToLanguageModel","K_Language","TriggerManager","ExecuteOnClickTrigger","ExecuteOnLinkEditorGridSaveTrigger","LeftEntityId","RightEntityId","RelationTypeId","GridEntityId","TriggerStore","ExecuteLinkEditorGridSaveTrigger","ExecuteOnLinkEditorUnlinkTrigger","ExecuteLinkEditorUnlinkTrigger","OnClusteredPivotFinished","triggerId","MainRecordId","MainEntityId","RelatedRecordId","RelatedEntityId","NewKSeq","OldKSeq","ExecuteClusteredPivotFinishedTrigger","ExecuteClickTrigger","ControlTypes","KeyCodes","RenderModes","PortletRenderModes","LABEL_POSITIONS","NoLabel","FullWidth","FONT_STYLES","UNDERLINE","ITALIC","CARD_SCREEN_PROPERTY_TYPE","SCREEN_WIDTH","SCREEN_BACKGROUND_COLOR","FONT_WEIGHT","FONT_FAMILY","FONT_STYLE","SCREEN_PROPERTY_TYPE","SCREEN_HEADER_BACKGROUND_COLOR","SYSTEM_FIELD_NAMES","F_TYPE","F_KIND","CREATEDATE","CREATEDBY","F_LIFESTATUS","CHANGEDATE","CHANGEDBY","SYSTEM_TABLE_NAMES","SYS_SEQUENCES","SYS_USERS","SYS_LOCKS","SYS_GLOBALS","SYS_RIGHTS","SYS_SECURITY","SYS_SESSIONS","SYS_THESAURI","SYS_OBJECTS","SYS_QUEUES","SYS_THINGS","DISABLED","LIFE_STATUS_GROUPS","PLANNED","ACQUIRED","OPERATIONAL","MAINTAINED","RETIRED","EXAMPLE","TABLE_TYPES","Entity","Link","FIELD_TYPES","Currency","Binary","Document","Radio","MultiSelect","Time","PKey","FlagCheck","Sort","Alias","TimeSpan","Reference","Spim","Property","FIELD_TYPE_TO_CONTROL","SortGroups","Header","OptionalHeader","Custom","OptionalFooter","Footer","Undefined","GetSortGroup","InCustom","ON_RECORD_SELECTED","ON_ROW_CLICK","ON_TAB_CLICK","ON_PLANNER_PAGE_CLICK","ON_SELECT_CHANGED","ON_PAGE_CHANGED","ON_AFTER_RENDER","ON_CLOSE","ON_DATA_SAVED","ON_TREE_NODE_SELECTED","ON_ENTTIY_SELECTED","RUNTIME_SETTINGS_APPLIED","RUNTIME_SETTINGS_UPDATED","PORTLET_BAR","CONTROL_BUTTONS","REMOVE_BUTTON_CLICKED","COLLAPSE_BUTTON_CLICKED","EXPAND_BUTTON_CLICKED","RELOAD_BUTTON_CLICKED","SETTINGS_BUTTON_CLICKED","EXPLORER_LOADED","NEW_PORTLET_ADDED","PORTLET_POSITION_CHANGED","NotTypedScreenTypes","Dashboard","CardScreen","StepsScreen","Dropdown","ButtonEdit","ButtonDelete","ButtonListScreen","ButtonSpecialScreen","ButtonDashboardScreen","ButtonGoogleMaps","ButtonFollowUp","History","Tab","TabPage","Checkbox","Drop","RadioButton","Grid","PortletBar","ButtonReturn","Kanban","SelectUser","ButtonPrint","ButtonLinkedIn","ButtonTree","ButtonSecurityReset","Agenda","Scheduler","LinkList","DatabaseDesigner","FormDesigner","CanvasDesigner","FunctionDesigner","LifestatusDesigner","QueryBuilder","TableSecurity","TypeSecurity","RecordSecurity","UserSecurity","UserAllowance","RecordSharing","ButtonFavorite","Search","ButtonCancel","ButtonSave","TimeWriting","ButtonTemplate","TemplateDesigner","RssFeed","CrystalViewer","Tag","FieldSecurity","ButtonConsultScreen","Basket","QueryResult","PortletSpace","GanttChart","BulkEmail","GenericButton","Invoicing","FinancialDashboard","ButtonCopy","Planner","PlannerPage","PlannerLevel","IFrame","SpimCopy","Book","Signature","Spreadsheet","Chart","RecipeEditor","Maps","IFrameExtension","Step","StepPage","ButtonPlan","SIMPLE_CONTROLS","SECURITY_CONTROLS","DEFAULT_ICONS","FontName","IsIcon","BulkMail","Gantt","FONT_NAME","ICON_NAME","DELETION_MODES","AGENDA_TYPES","Todo","Appointment","Task","SpecialDay","Holiday","Illness","Recurrent","AGENDA_LIFE_STATUSES","Requested","Confirmed","Denied","ClusterModes","ClusterModeTranlsation","clusterMode","Delta","Use","Next","NextNext","DATE_FORMATS","MomentFormat","LONG_DATE","LONG_DATE_SHORT_WEEK","LONG_TIME","FULL_DATETIME","WEEKDAY_FULLNAME","WEEKDAY_SHORTNAME","SAVE_FORMAT","SAVE_FORMAT_FULL","TIME_SPAN","TIME_SPAN_LONG","SHORT_DATE_SHORT_WEEK","MONTH_AND_YEAR","DAY_OF_WEK_ddd","WEEK_OF_YEAR_WW","ONLY_A_YEAR","FollowupModes","EDIT_CURRENT","EDIT_NEW","EDIT_CURRENT_AND_NEW","DIRECT_STATUS_UPDATE","RECORD_SECURITY_WORDS","SECURITY_LEVELS","SHARING_READY","SHARED","PLANNER","OWNER","SECURITY_PASS","NEW_OWNER","TABLE_SECURITY_WORDS","TRIGGER_ACTIONS","ON_CLICK","ON_CLUSTERED_PIVOT_FINISHED","USER_ALLOWANCE","HasValue","userAllowance","PlanningAllowed","AgendaDataStore","UpdateAgenda","CreateAppointmentFromTodo","CreatePlanningAppointment","CreatePlanningAppointments","planningId","PlanningId","UserId","BookPlanning","AcceptAppointment","GetSchedule","GetSpecialDays","GetUserAllowance","CopyRecord","ConfigStructModel","jsonConfig","GeneralProperties","properties","ConfigStruct","_configStruct","InitConfigStruct","InitConfig","_isConfigStructOk","ConfigModel","BaseControlStore","GetHideIfConditionValue","focusableControls","BaseControl","config","_form","_parentControl","ParentControl","CreateControl","InitProperties","ApplyProperties","_conditionScreenData","_isWrapped","_isStatic","IsStatic","Predefined","_isRequired","GetIsRequired","_isReadonly","GetIsReadOnly","_renderMode","RenderMode","_subControls","InitSubControls","_display","_isValid","_getCurrentName","_errorMessage","_help","HelpBook","_webSizeValue","_resetDependsOnValue","ResetDependsOnValue","_isHideIfDataLoading","GetLabel","DescriptionToolTip","InitShowIfCondition","_originalModel","throttle","subControls","SetSort","Design","GetType","field","EntityTypeName","CheckEntityTypeByName","RelatedField","SubTableField","IsComplexControl","EntityIcon","FieldIcon","View","_enabled","_backgroundColor","_borderColor","_border","_style","HideCaption","HideCaptionFromProperty","PostInit","UpdateShowIfValue","HideIfCondition","DATA_CHANGED","screenData","ScreenVariable","screenVariableCondition","ConditionBuilder","GetScreenVariableCondition","SetConditionScreenData","GetControlId","ConditionValues","MapConditionValues","UpdateVariable","controlField","_generalProperties","ControlModify","Control","IsJsonString","SetIsWrapped","isWrapped","SetWebSizeValue","SetIsVisible","isVisible","GetIsVisible","SetHideCaption","GetHideCaption","hasFocus","TrySetFocus","focusable","IsFocusable","GetDefaultName","GetDesignTemplateName","SubControls","controlModel","GetControlTypeName","GetControlTypeTranslatedName","GetFieldId","GetFieldModel","FieldModel","HasOneField","GetDefaultIcon","_defaultIcon","SetDefaultIcon","IsDisabledByCondition","IsMailEnabled","fieldModel","SetFontName","fontName","ExampleAlias","SetProperties","IsEditScreenExist","IsListScreenExist","IsDashboardScreenExist","IsConsultScreenExist","IsStepsScreenExist","GetCombinedReadOnly","ChangeProperty","SetPropertyValue","GetSubControls","GetAllSubControls","subControl","_initWithDefault","SetRenderMode","renderMode","GetRenderMode","SetReadOnly","IsReadOnly","IsSystem","CreateDescriptionToolTip","AddStyle","IsDataControl","IsLazyLoadData","GetForm","SetForm","SetParentControl","AddSubControl","SetGuid","GetGuid","Clone","controlParams","ToDesignedControl","RemoveControl","OnControlRemoved","GetModel","SetModel","GetParentControl","ModelHasMutated","GetWidthSize","widthSizeValue","Unit","GetWrapperClass","classes","IsParentControl","IsFieldAttached","IsParentForFields","IsBlobFieldAttached","IsLookupFieldAttached","IsColorFieldAttached","IsMultiSelectFieldAttached","HasSubControl","GetWrapper","IsModified","GetIsActive","SetIsActive","GetSort","IsNew","IsPropertiesValid","IsPropertiesValidToSave","IsValidToSave","GetPropertiesErrors","IsTranslatable","Translate","FieldFlag","GetIcon","UpdateLabel","UseFieldName","fieldAttached","translationList","DescriptionToolTipContent","onlyOnOverflow","controlDescriptionTranslationModel","DescriptionTranslations","controlDescription","SetIsRequired","isRequired","EnableResetDependOnValue","DynamicFields","FilledById","GetDynamicFieldsData","dynamicFieldValues","IsLinkEditor","RelationTypeField","CalculateDependOnValue","LinkEditor","_mainRecordId","_mainEntityId","_relatedEntityId","_relatedRecordId","_kSeq","ScreenData","dependsOnValue","IsConsultScreen","IsListScreen","IsEditScreen","IsProcessCardPageScreen","IsQueryScreen","IsLIsSpecialScreen","IsSpecialScreen","IsPortlet","IsEditMode","IsViewMode","IsHelpMode","HelpView","IsRunTime","ToolBar","IsDesignTime","HasDynamicField","conditions","Column","conditionString","GetPropertyValue","HIDE_IF_CONDITION","jsonObj","QueryConditionGroup","HasAnyConditions","ForceFocus","SetGridRow","gridRow","_gridRow","AttachedFieldModel","FullName","LinkRequiredObservable","OnDeserialized","LinkRequired","ControlModel","Triggers","_isInitializedControl","SetInitializedControl","InitializedControl","SetBackgroundColor","IconModel","GetClasses","FONT_AWESOME","SOCIAL_ICONS","k_Language","shortName","flagBase64","TranslationModel","IsFocusedItem","TriggerModel","TriggerParamModel","LifestatusModel","LifecycleModel","BasketRecordModel","Records","BasketDataModel","BasketStore","RemoveFromBasket","UpdateStatus","jsonObject","BasketRecord","_typeId","_records","_isSelected","_recordsCount","_nextStatusSelector","FollowUpLifeStatuses","followUpOption","FollowUpOptionModel","LifestatusId","SetIsSelected","IsSelected","RecordsCount","NextStatusSelector","BASKET_SELECTED","_selectedRecord","_enableAddButton","_selectedRecordId","SaveBasket","_gridEntityId","NewRecord","typeScreen","TypeScreen","TYPE_SELECTED","typeId","kindId","KindId","LoadAsExample","subjectEntityId","selectedRecord","GetBasket","basketRecord","SelectRecord","lifestatusId","EditRecord","MODAL_CLOSE","RECORD_DELETED","RemoveRecord","deletedRecord","SelectedRecord","AddRecordToBasket","notifier","MainTableId","LinkedTableId","LinkedRecordId","Sequence","RemoveRecordFromBasket","BasketEntityId","BasketRecordId","EnableAddButton","borderColor","borderWidth","IsHelpButtonPressed","ShowControlHelp","IsRecordSecurityOk","AssignProperty","HIDE_CAPTION","groupedBy","propertyName","propertyHolder","MenuItemModel","ButtonCopyApi","CopyRecords","_iconModel","_linkToSource","_behavior","_aliasSuffix","_isCopyingInGrid","_buttonClassName","copyMenuItem","copyWithRelationMenuItem","_menuItems","MenuItems","menuItem","CopyInGrid","linkToSource","copyRelations","ClickRootCopyBtn","IsInGrid","EnableRecordSelection","Behavior","CopyWithRelations","CopyToType","copyToType","aliasSuffix","selectedRecords","GetSelectRecords","recordsToCopy","EntityIdToCopy","RecordsToCopy","CopyRelations","IsLinkToSource","CopyToTypeId","AliasSuffix","DisableRecordSelection","GetGridSubject","Metadata","RecordSpecsModel","IsNewRecord","IsEditingAllowed","Both","enabledCondition","IsDeletingAllowed","_isFavorite","RemoveFromFavorites","AddToFavorites","isRecordOnScreen","isInFavorites","IsInFavorites","FlowRecordModel","FlowOperationsSelect","FlowOperationsSelectID","FlowFolderInit","flowRecordModel","SelectIcon","FlowOperationId","defaultIconModel","ChangedOperations","flowModel","FlowRecordId","DeleteFlowFolderItem","flowRecord","MemoRecordModel","MemoTranslations","FlowMemosOperationsSelect","FlowMemosOperationsSelectID","screenParams","_isEditMode","_editMemoEntityId","_editMemoIndex","_editMemoKseq","_oldEditMemo","_isMemoTranslatable","_flowFolderMemoArrays","_oldMemoTranslations","_translationFieldEditor","FlowFolderMemosInit","memoItem","memoRecordModel","Kseq","FlowMemosOperationId","CloseMemoModal","ShowInMemoModal","AddMemoMod","memoTranslations","selectedLanguage","translationModel","isSave","newMemo","oldMemo","currentTranslations","translationsHaveChanges","oldMemoTranslations","List","OnChangeLanguage","selectedTranslation","EditMemo","currentValue","_originalValue","GetUnescapeMemo","flowMemoTranslations","GetOptionsMemoTooltip","SaveMemoData","memoData","MemoPlaintext","ChangedMemosOperations","flowMemoModel","DeleteMemoItem","memoRecord","_caption","_selectedParentOption","_clickedChildId","IsCurrentDisabled","_parentOption","childOption","parentOption","_childOption","SelectCurrent","CheckApprovalAndUpdateLifeStatus","CheckRetiredChildrenAndApproval","Caption","ActionSubjectRecord","FollowUpBaseRecordModel","FollowUpParentRecordModel","FollowUpRecordModel","SubjectActionModel","LifeStatusesModel","Boolean","ActionCheckListItemDto","ActionCheckListDto","ActionSubjectRecordModel","LifeStatusSimpleModel","GetStatuses","_businessRoleId","_exampleAppointmentId","SubFlowTypeId","ShowAgendaScreen","agenda","GetScreenByScreenType","ScreenDoesNotExistError","ScreenDoesNotExistErrorMessage","selectUserByBusinessRoleModel","SelectUserStore","GetSelectUsersByBusinessRole","SelectUserByBusinessRoleModel","ExampleAppointmentId","LinkAgenda","SwitchToSubFlowStatus","agendaRecordId","agendaEntityId","GetEntityName","subFlowId","SwitchToNextStatus","NextStatusId","ComplexControl","designTemplate","INTERNAL_MAIL_CLIENT","_buttonId","_currentHtmlTemplate","_dropDownOpened","_dropDownSubmenuOpen","borderStyle","_requiredFields","RequiredFieldModel","InitRequiredFields","InitButtonTemplateDropdown","InitButtonTemplateDropdownSubmenu","_dropDownSubmenu","HideDropdownSubmenu","MergeAndSave","destinationEntityId","destinationTypeId","saveIntoSubject","saveDestinationTypeId","DestinationEntityId","DestinationTypeId","SaveDestinationTypeId","SaveIntoSubject","MailAddress","_button","ButtonTemplateStore","Recipients","AddBody","cc","AddMailCC","bcc","AddMailBCC","AddSubject","SelectTemplate","GetDestinationEntityId","EntityTypeId","ShowTypeScreen","gridSubjectField","EntityTypes","ContextEntityId","ObjectEntityId","selectedTemplate","ShowTemplateHelp","ShowDropdownSubmenu","Mails","MergeAndSaveForGridRow","nameField","TemplateModel","IsServerError","methods","_methods","SelectMethod","define","router","connector","attrs","stroke","fill","transform","strokeDasharray","strokeWidth","toolMarkup","shapes","basic","Rect","devs","ports","markup","fontSize","fontWeight","iconTemplate","V","cyberThing","DecoratedRectView","ElementView","initialize","renderMarkup","vel","TableView","parentRelative","refY2","initIcons","toggleIcon","propertyIcons","IsCollapsed","IsSearchExisting","UseMatching","refX2","TriggerView","JSFunctionView","functionDesignerButtons","isCollapsed","APIMethodView","CSharpFunctionView","TextColour","FontSize","BackgroundColour","BorderColour","CanvasShapeWidth","wrapText","wrapWidth","resultWidth","wrapHeight","breakText","BasicCanvasItemViewModel","defaultSize","toggled","originalSize","hidden","tabsArePresent","replicationId","ReplicationId","originalName","X","Y","angle","Z","State","protocolId","ProtocolId","shapeId","ShapeId","sideId","SideId","shapeName","ShapeName","sideName","SideName","shapeSize","newlyCreated","collapsible","Collapsible","GetDefaultAttrs","protocolName","ProtocolName","apiPackageId","APIPackageId","initialName","hasIcon","fontSettings","SOURCE","DESTINATION","TRIGGER","JS_FUNCTION","CSHARP_FUNCTION","PARAM","Utils","GetRandomArbitrary","SourceViewModel","embeddingInvalid","embedded","embeds","parentedNode","childSocketsIds","jsonProperties","EndPointUrl","CallbackUrl","SecretKey","Division","QueryString","SetEmbedds","link","CanvasItem2Id","CanvasItem2Guid","SetSize","SetPosition","SetParentId","CanvasItem1Id","CanvasItem1Guid","DestinationViewModel","TableViewModel","isNull","Rappid","SkipCondition","IsCheckOwnerProfile","AddDaysToStart","AddDaysToEnd","ODataFilter","ExcludeCancelled","PORT_ATTRIBUTES","SIDES","ParamViewModel","inPorts","outPorts","useSubKey","filledFromField","FilledFromField","filledFromTable","FilledFromTable","SetPorts","port","UseSubKey","IsRecordIdentifier","IsSearchBySubKey","FileLocation","UsePrimaryKey","ImageFileLocation","FilledFrom","JSFunctionViewModel","TriggerViewModel","CSharpFunctionViewModel","IsBulkSet","CanvasModelState","ArrowViewModel","NoChanges","vertices","APIMethodViewModel","GroupViewModel","Table","GridLayout","graphOrCells","graph","Graph","resetCells","dry","columns","marginX","centre","resizeToFit","marginY","columnWidths","columnWidth","cIndex","elementsAtColumn","_elementsAtColumn","_maxDim","isString","columnsX","_accumulate","rowHeights","rowsY","startBatch","rIndex","stopBatch","_elementsAtRow","rowIndex","numberOfColumns","elementsAtRow","columnIndex","baseVal","ShapeFactory","paper","paperScroller","_graph","_paper","_paperScroller","InitRoot","_root","CanvasItems","DW_PACKAGE","Root","BuildShapes","sourceShape","destinationShape","cells","arrows","renderElements","Deleted","GetParentByTypes","API_METHOD","dataSelectors","getCells","DataSelector","removeCells","addCells","BuildLayout","canvasItem1Id","canvasItem1Guid","canvasItem","Changed","renderParams","GetParentByType","paramViewModel","Param","GetViewModel","DeleteItem","getEmbeddedCells","queryBuilder","EditFreeQuery","GetByQuery","QueryText","dataSourceModel","dataSourceToTableLinks","CanvasLinks","paramToParamLinks","dataSourceToTableLink","tableModel","tableToParamLinks","tableToParamLink","links","newQueryParam","newQueryParamProperties","GetProperties","existsQueryParam","QueryColumnGuid","newLinks","queryParam","newLink","RootRecordId","RootRecordGuid","packageId","PackageId","NewFreeQuery","CSharpFunction","JSFunction","APIMethod","getCell","FunctionId","arrowViewModel","arrowShape","Arrow","embed","embeddedCells","linksToDelete","canvasItemGuid","typeNames","parentLinks","parentLink","parentParent","embeddeds","fitEmbeds","canvasType","CanvasDesignerStore","GetNodesByQuery","cellView","itemModel","generalTemplate","constantTemplate","ParamView","defaultValueEditor","findOne","DATA_TYPES","DATABASE","SPREADSHEET","API","EXACT_ONLINE","EWS","OCI_PUNCH_OUT","MS_ACCESS","DESKTOP_FOLDER","DataTypes","SourceView","shapeLabel","DataType","ApiPackage","getBackButtonTemplate","initProperties","Cyberbase","Query","DwPackage","ExactOnline","OCIPunchOut","MsAccess","DesktopFolder","editQueryButton","DestinationView","backButtonTemplate","TriggerGroupViewModel","triggers","IsExpanded","dataTypes","_data_types","NextStep","IsShowFileUpload","IsShowTriggerList","IsShowFunctionPackageList","IsShowDwPackageList","IsShowEntityList","IsShowNewQueryButton","IsShowExactOnlineEntityList","IsShowEWSEntityList","IsShowMsAccessEntityList","MsAccessSchema","SelectedDataType","FunctionPackages","Entities","DataWizardPackages","ExactOnlineEntities","EWSEntities","SetIsEnabled","SelectDataType","ShowEntityList","ShowFileUpload","ShowQueryNewQueryButton","ShowFunctionPackageList","ShowTriggerList","ShowDWPackageList","ShowExactOnlineEntityList","ShowEWSEntityList","GetMSAccessFilePath","GetDesktopFolderPath","GetMsAccessSchema","GetEWSEntities","GetExactOnlineEntities","GetDataWizardPackages","GetTriggers","PrepareTriggerData","triggerGroup","GetFunctionPackages","ShowQueryBuilder","GetEntities","IncludeDeleted","SelectTrigger","SelectEntity","SelectPackage","apiPackage","UploadFile","fileInput","SelectDataWizardPackage","dwPackage","SelectExactOnlineEntity","SelectEWSEntity","SelectMsAccessEntity","table","Back","FormatTriggerTitle","triggerDto","DataSelectorView","$box","removeBox","$el","dataSelector","updateBox","bbox","getBBox","GroupView","renderTools","CanvasViewModel","topPosition","combinedExistingHeight","Cells","Nodes","functionsHeight","Shapes","destination","parentItem","childItem","FunctionParamInspector","Build","shape","inspector","Inspector","inputs","renderFieldContent","fillFromValue","$buttonSet","$searchButton","InspectorFactory","BuildInspector","CanvasManager","GetCellType","_toogleExpanding","GetShapeFactory","_shapeFactory","PackageName","dwPackageItem","DestinationDataType","InitializePaper","PopulateGraph","_dwPackage","AddDataSelector","newParent","collection","Paper","batchSize","gridSize","drawGrid","embeddingMode","perpendicularLinks","clickThreshold","defaultLink","multiLinks","interactive","allowMovement","isLink","elementMove","addLinkFromMagnet","validateEmbedding","childview","parentview","validateConnection","cellViewS","magnetS","cellViewT","magnetT","linkView","validateMagnet","magnet","HideInpector","_inspector","_selectedCellView","unhighlight","scrollX","scrollY","clientY","clientX","sourceView","targetView","sourceParent","targetParent","_arrowTooltip","highlighter","linkModel","rightItemModel","leftItemModel","existsLink","UpdateLinkProperties","cid","targetClass","GetItemByGuid","RenderInspector","JsonProperties","ToggleCollapse","PaperScroller","autoResizePaper","UpdateItemProperties","timingFunction","timing","linear","valueFunction","interpolate","number","ReRender","BuildExactOnlineInspector","getFieldValue","attribute","$testBtn","$createWebhookBtn","$exportBtn","$importBtn","$uploadSettings","fr","readAsText","BuildOCIInspector","BuildEWSInspector","BuildFunctionInspector","BuildTableInspector","BuildEWSTableInspector","BuildExactOnlineTableInspector","BuildSourcePrimaryKeyInspector","BuildDestinationPrimaryKeyInspector","BuildLookupInspector","BuildParamInspector","BuildMemoParamInspector","$imageCheckBox","$fileLocationSelect","BuildBinaryParamInspector","parentModel","UpdateProperty","CheckExactOnlineSettings","SubscribeExactOnlineWebhook","GetProductCatalogUrl","ExportSettings","ImportSettings","jsonData","dwType","GetByOCIPunchOut","GetBySpreadsheet","GetByTrigger","GetFunctionsByPackage","GetDwPackageById","GetByEntity","GetByExactOnlineEntity","GetByEWSEntity","GetByMsAccessEntity","GetByDesktopFolder","addCell","parentType","convertedResult","reader","GetNodesBySpreadsheet","readAsBinaryString","GetTrigger","DwPackageGuid","TriggerId","ParentType","GetFunctionPackage","GetNodesByEntity","GetNodesByExactOnlineEntity","GetNodesByMsAccessEntity","GetNodesByDesktopFolder","GetNodesByEWSEntity","_searchTerm","_canvasRendered","_canvasSelected","validationIsActive","_disableOnDelete","_ignoreMissingSubKeys","_packageName","_debugMode","_hasRollback","_showRollbackButton","_isForLifeStatusDesigner","GetCanvasDesignerMetaData","_metadata","UpdateIgnoreSubKeyProperty","UpdateDebugModeProperty","EditPackage","AddRecent","LoadScreenFor","DebugMode","PreventCloseModal","IgnoreMissingSubKey","InitCanvas","_canvas","decisionDialog","Save","ShowFunctionDesigner","functionId","functionDesigner","GetPackage","SelectMethodById","HideButtonContainer","_functionSelected","HasData","Canvas","SaveCanvas","ShowFunctionList","EntityTypesStore","GetTypes","ParentTypeId","WithRoot","OnlyEnabled","apiPackageType","TableTypes","API_PACKAGE","IsRootForFormDesigner","SearchByTypes","RECORD_SELECTED","ShowMethodList","GetMethods","methodListModal","AddFunction","GetFunctionGroup","methodGroup","AddConstant","GetConstantGroup","Delete","DeleteCanvas","ZoomInCanvas","ZoomOutCanvas","EnableSocketsProtocolValidation","CheckForChanges","TriggerExecution","modalHeight","CheckHasRollback","CanvasRendered","SetRecordId","GetCanvas","exampleRecordId","ExampleRecordId","Cancel","resetCache","ResetCache","tableTypeId","kinId","editScreen","IsDataFromExample","UseLinking","ExecuteRollback","HasRollback","BuildLifeStatusTriggerFlow","lifeStatusName","IsForLifeStatusDesigner","SetDataModel","CANVAS_TYPES","ShapeModel","CanvasIconModel","CanvasItemModel","CanvasLinkModel","CanvasModel","MsAccessColumnDto","MsAccessTableDto","Columns","MsAccessSchemaDto","Tables","DesktopFolderDto","TriggerDto","canvasId","dwPackageId","dwPackageGuid","rootGuid","DWPackageGuid","DWPackageId","methodId","MethodId","GetNodesByPackage","GetNodesByPackage2","ApiPackageId","DwPackageId","exampleTriggerId","ExampleStatusId","CHART_TYPE","CHART_TITLE","X_AXIS","X_AXIS_LABEL","Y_AXIS","Y_AXIS_LABEL","SORT_BY","_isExpanded","IsEntitySelected","requiredField","attachedField","AttachedField","InitIcon","firstField","RequiredFields","IsDesignValid","AutoSelectFieldsFromStruct","tablesStruct","tableStruct","DefaultName","attachedFieldModel","FieldTypeName","AutoSelectFields","entityModels","entityModel","entityField","defaultName","UserGroupViewModel","AllSelected","RightsViewModel","UserGroupId","IsShared","rights","RecordSharingViewModel","UserGroups","userGroup","RightUnitModel","RightsValue","RecordSharingSerializedModel","securityProfileId","recordSharingViewModel","SecurityProfileId","RightUnits","tableRights","Statuses","RecordSharingStore","GetRecordSharingScreen","_data","Ok","_profileId","recordSharingModel","countCheckedValues","tableItem","selectedRight","findWhere","isUserGroupChecked","selectedUserGroup","CheckAll","SelectAll","rightItem","UserSecurityViewModel","roleUnits","roleUnitsOrder","RoleUnits","roleUnit","RoleUnitViewModel","RoleValue","SelectRole","roleName","RoleName","CouldBeChanged","TranslationUserSecurityRoleName","User","DataRole","DesignerLevel1","DesignerLevel2","DesignerLevel3","NetworkManager","UserSecuritySerializedModel","SecurityRolesKey","UserSecurityStore","GetUserSecurityData","_userId","userSecurityModel","userSecurityViewModel","userRolesKey","suma","recordType","FlagViewModel","UserHasFlag","TranslationFlagName","UserAllowanceViewModel","Flags","flag","UserAllowanceSerializedModel","userAllowanceViewModel","rightsValue","UserAllowanceValue","UserAllowanceStore","GetUserAllowanceScreen","_userProfileId","userAllowanceModel","RightModel","TableModel","TableGroupViewModel","RightViewModel","TableGroupId","IsChecked","TableSecurityViewModel","rightsTranslation","GetRightsValue","TableSecuritySerializedModel","userGroupId","tableSecurityViewModel","TableSecurityStore","GetTableSecurityScreen","IsUserAllowedTo","_userGroupId","tableSecurityModel","tableGroup","tableChecking","TypeSecurityStore","GetTypeSecurityData","TypeSecurityViewModel","tables","TablesView","tableView","TypesView","tableType","tableTypeView","TypeViewModel","NotTypes","NotSelectedTypes","SelectedAll","ko","observable","TypeSecuritySerializedModel","SelectedTypes","_typeData","_selectedTypes","_allText","typeSecurityViewModel","typeView","RemoveTypeItem","tablesView","typeItem","SelectTypeItem","ShowTypeSecurityDropDown","activeOption","ProfileReservationId","IsReserved","IsReservationBanned","UsesInGroups","TranslationGroupName","BlockCaption","RightUnitViewModel","optionsReversed","reverse","newRights","rightOptions","rightUnit","UserGroupSelectorItemViewModel","UserGroupSelectorViewModel","currentGroupId","userGroups","tableUserGroups","tableUserGroup","currentGroupItem","CurrentUserGroup","currentGroup","RecordSecurityViewModel","UpdateCurrentGroup","UpdateGeneralRightsSelector","GetUserGroups","UserGroupSelector","activeGeneralOption","rightsValues","checkValue","groupRights","rightsOptions","groupRight","groupHasAnyRights","UserGroupHasAnyRights","groupHasTableRights","RecordSecuritySerializedModel","recordSecurityViewModel","ProfileReservationGroups","ProfileUnReservationGroups","RecordSecurityStore","GetRecordSecurityScreen","recordSecurityModel","tableITem","Reserve","ReserveGroup","UnReserve","GetIsVisibleReservationToggler","GetBanTitle","MailFolder","MailList","mailItems","mailFolder","mailConnectionId","_selectAll","_mailFolder","_mailItems","FormatDateCreated","_detailView","_mailConnectionId","SAVE_TO_CYBER_BOX","LOAD_DATA","IsReadObservable","IsRead","MarkAsReadByGuid","Guids","IsCyberBox","MarkAsRead","GetActionModel","MarkAsUnRead","mailitems","dateNow","DateTimeCreated","formattedDate","_date","yearSeparatorIndex","DeleteMails","deleteItem","guids","selectedItems","mailItem","SaveToCyberBox","itemData","DetailTemplate","Detail","_replyTinyGuid","_detailTinyGuid","_showReplyEditor","_mailComposer","_mailItem","_mailBody","_subject","_dateTimeCreated","CountRecipients","MailComposer","destinationMails","DestinationMails","destMail","Address","recipients","Cc","uniq","_recipientsCount","ccAdresses","toAdresses","isInCc","_toAdresses","_ccAdresses","Reply","IsReply","composer","EMAIL_SENT","ReplyAll","IsReplyAll","Forward","IsForward","CancelAction","EMAIL_WAS_READ","AfterDetailTinyInit","Body","AfterDetailTinyChange","DownloadAttachment","MailTypes","_currentFolder","Inbox","_mailsCount","_itemPerPage","_firstMailIndex","_lastMailIndex","_totalPage","_mailList","_isLoad","_tabNumber","_tabNames","_recordNameField","_recordTypeField","_mailFromField","_mailGuidField","_loadInProgress","CurrentFolder","Compose","SaveEmail","sendMail","DocumentStore","GetDocumentEntityId","documentEntityId","entityTypes","outType","Out","DataModel","guidData","FieldValueList","nameData","bodyData","_mailBodyField","fromMailData","fromMail","recipient","newRelations","Attachements","DocumentId","LinklistChanges","NewRelations","InsertOrUpdateRecordStore","UpdateData","UpdatePagination","expectedLastNumber","PrevPage","NextPage","SwitchItemPerPage","bindedData","IsDefaultNumber","count","SwitchTab","_oldMailContentId","GetMailFolder","PageSize","TotalItems","InitView","GetMailById","IsIncludeAttachmentContent","SaveToEditScreen","ShowEditScreen","mailItemDetail","inType","In","SetDefaultData","LinkMailRelatedData","HasControl","linkList","GetControl","usersRelationModel","UserRelation","MailRelatedData","Users","FindLinkByRecord","newRelation","NewRelationModel","AddRecord","entity","relationModel","relatedEntity","groupsById","addressTypesId","AddressTypeId","UpdateCustomDataByGuid","AddressTypeFieldId","ScreenDataModel","nameControlData","ControlDataModel","ControlsData","mailBodyControlData","mailFromControlData","serverMailIdControlData","dropControlData","Attachments","dropControlValues","Cultures","FullCalendarCultures","UserModel","UserGroupModel","SelectUserModel","SelectUserFormModel","UserFormModel","UserGroupFormModel","ToSelectUserModel","ToUserModel","ToUserGroupModel","UserTypeName","UserTypeNameTranslation","TypeNameTranslation","EventTemplate","EventMonthTemplate","PlanningTemplate","LinksTooltip","EventListTemplate","EventTimeTemplate","FULL_CALENDAR_VIEW","AGENDA_FIVE_DAY","AGENDA_LIST_WEEK","AGENDA_TIME_LINE_WEEK","_d","_i","_calendarEvents","_isVisibleTodoBlock","_allEvents","_todoEvents","_todoEventName","_selectedUsers","_appointmentAttendees","_checkedRemoveToDo","_enableTooltip","_owners","_groupByResource","_isInteractionWithUserSelect","_timeoutId","_disableDropEvtsBtwnDiffRes","_viewRenderMode","_appointmentEvents","_viewModels","_businessHours","_specialDays","_currentDay","_isDataLoaded","_isReturned","_agendaViewContainer","_isSmallAppointments","_natureField","_placeField","_startDateField","_durationField","_eventColorField","_timeBeforeField","_timeAfterField","_descriptionField","_endingField","_completenessField","uniqueGroupIds","SelectedUsersAndGroups","uniqueUserIds","_showPlanned","ShowPlanned","appointmentAttendees","AppointmentAttendees","_selectedStartDate","_selectedEndDate","Clean","IsWeekView","IsWorkWeekView","_isToDoVisible","_isSpecialDayVisible","_isRequestLeaveVisible","_isReportIllnessVisible","_isRecurrentVisible","SetLastDate","lastDate","GetAgendaDate","SetDate","SetAgendaDate","schedulers","GetControlsByType","scheduler","SetSchedulerDate","SetSpecialDays","userSpecialDays","dataspecialDays","SpecialDays","specialDays","day","FreeDay","FormatToDay","rendering","country","Country","allDay","specialDay","SetUsersSchedule","usersSchedule","daysSchedule","DaysSchedule","businessHours","Starting","Ending","weekday","dow","SetAgendaDayData","agendaItemsPerDay","tablesTypes","_agendaItemsPerDay","_tablesTypes","agendaPerDay","Item","SharedWith","currentSpecialDay","currentDay","SpecialDayStart","SpecialDayEnd","daySchedule","schedule","Rendering","SetAgendaWeakOrWorkWeekData","GetShortDateFormat","GetMonthAndYearFormat","groupByResource","RemoveDuplicatesNonBusiness","UsersId","SubjectId","StartDate","EndDate","GetScheduleRequestModel","ShiftTimeZone","GetSpecialDaysRequestModel","GetTableTypesModel","isAgendaDayOrListOrTime","isAgendaWeakOrWorkWeek","_firstFreezeTimeDate","FirstFreezeTimeDate","UserSpecialDays","UserSchedule","UsersSchedule","AgendaItems","AgendaItemsPerDay","ShowToDoBlock","_plannings","PlanningItems","mapOwnersList","PrepareData","CustomScrollToHour","owners","freeDay","Owner","minColumnWidth","SetCellMinWidthOfDays","minColumnW","numberOfDays","elW","todoEvents","appointmentEvents","appoitmentType","todoType","taskType","holidayType","illnessType","calendarEvents","fullCalendarEventModel","GetFullCalendarHolidayAndIllnessEventModel","GetFullCalendarEventModel","GetFullCalendarPlanningEventModel","GetHoliday","eventModel","typeIdValue","GetValueByFieldId","GetLifeStatusName","LifeStatusInfo","GetCalendarEventColor","eventColor","defaultColor","IsLifeStatusDisabled","IsHolidayIcon","Disabled","GetHolidayTranslatedTooltip","tooltipText","nameValue","nameTranslatedValue","GetTranslatedValueByFieldId","typeNameValue","ownerId","sharedWith","startDateValue","eventColorValue","placeColorValue","timeBeforeValue","timeAfterValue","durationValue","descriptionValue","translatedDescriptionValue","endingValue","calendarEventColor","startDate","timeBefore","timeAfter","hoursDuration","hours","minutesDuration","minutes","endDate","isAllDay","ShiftBackDate","ShiftForwardDate","eventRecordId","FormatTime","timeBeforeHeigth","TimeShiftHeight","timeAfterHeigth","Accepted","possibleToAccept","PossibleToAccept","recurrentRecordId","RecurrentRecordId","Links","resourceId","editable","Editable","editableWithDisabledLifeStatus","isIllness","isHoliday","isHolidayIcon","holidayTooltip","originalResourceId","OriginalResourceId","toDateString","isBefore","utc","planningsAppointments","PlanningAppointments","appointmentsButtons","BuildAppointmentsWeekButtons","bookingsButtons","BuildBookTimeWeekButtons","CompetenceName","users","planning","appointmentsWeekButtons","bookingsWeekButtons","getUserTitle","BookedHours","DecHours","plannigns","BuildWeekButtons","isSame","bookTimeWeekButtons","isFuture","diff","isOutOfFreezeTime","weekButtons","dayOfWeek","shiftTime","shiftDate","TranslatedDisplayValue","EventTitle","TodoEvents","TodoEventName","AddNewTodo","startDateControlData","DataModes","AddSpecialDay","specialDayType","AddHoliday","AddIllness","AddRecurrent","recurrentType","EditRecurrent","RemoveTodoItem","todoEvent","GetDeletionMode","deletionMode","OnDelete","ShowDeletionModeDialog","ShowConfirmationDialog","deletionModeModel","deletionModeDialog","UseDeleteDeletionMode","UseDisableDeletionMode","DeleteRecord","Warnings","Disable","AddNewAppointment","durationMinutes","calendarUserId","ConvertDefaultAppointmentToDateTime","appointmentType","durationControlData","exampleAppointmentId","EditEvent","UpdateAppointment","startDateFieldValue","timeBeforeFieldValue","durationFieldValue","CreateAppointmentFromPlanner","DistributeAppointmentsForPlanning","BookFromPlanner","AgendaTableId","appointment","Accepting","isSubjectScreen","IsSubjectScreen","AppointmentId","ScreenSubjectEntityId","ScreenSubjectRecordId","StartDrag","_todoToAppointmentItem","ConvertTodoToAppointment","appointmentDuration","APPOINTMENT_DURATION","appointmentDurationNumber","cloneEventModel","createAppointmentFromTodoModel","TodoItemId","Duration","RemoveTodo","AppointmentAttendeesId","GetSelectedAppointmentAttendees","IsUserAllowedToCreate","SecurityWord","InitDateTimePicker","fullCalendarBox","headerToolbar","centerBlock","headerDateBtn","alignDateTimePicker","minDate","fullCalendar","currentDate","viewMode","daysOfWeekDisabled","GetFullCalendarOptions","defaultDate","views","agendaFiveDay","weekends","columnFormat","agendaWeek","month","eventLimit","listWeek","noEventsMessage","timelineWeek","resourceLabelText","allDaySlot","firstDay","header","center","buttonIcons","prevYear","nextYear","buttonText","today","agendaDay","scrollTime","slotEventOverlap","timeFormat","defaultView","slotMinutes","droppable","forceEventDuration","defaultTimedEventDuration","selectable","weekNumbers","navLinks","longPressDelay","eventLongPressDelay","resources","eventRenderWait","viewRender","viewName","isAgendaDayOrMonth","isAgendaFiveDayOrWeek","todoBlock","agendaCalendar","startOf","subtract","endOf","SelectUserIsInitialized","SelectUserWillProvideEventOnLoad","viewDestroy","dayClick","jsEvent","resource","GetAppointmentDuration","_ambigTime","droppedEvent","eventId","event_","ctrlKey","isMonthView","dateProfile","starting","eventDragStart","eventDrop","revertFunc","agendaDayOrWeek","newResourceId","currentEvent","eventAllow","dropLocation","eventClick","eventResizeStart","eventResize","eventResizeStop","eventRender","IconComponent","GetLinkedIcon","stringParts","resHours","resMinutes","startTime","visibleBookingsWeekButton","startListTime","endListTime","listTime","placeColor","TimeBefore","TimeAfter","TimeBeforeHeight","TimeAfterHeight","AppointmentsWeekButtons","AppointmentsCanBeDistributed","dayNumber","BookingsWeekButtons","Distribute","ActionToggle","ShowAppointmentsWeekMenu","ShowBookingsWeekMenu","VisibleBookingsWeekButton","StartTime","IsIllness","IsHoliday","HolidayTooltip","EnableTooltip","ListModeTime","ViewType","RenderAllCustomEvents","eventAfterRender","ToggleSmallMode","EventTitleFix","AgendaLinksEllipsisTooltip","eventDestroy","GetEventTemplate","isSpecial","tooltipContent","iconModel","linkedIconModel","IsUseDefaultDuration","calendarView","agendaMonth","agendaListWeek","agendaTimeLineWeek","startDateElem","eventContent","descriptionButton","isAgendaListOrTimeWeek","eventMain","agendaLinksElem","elemEventHeight","GetLinkedUsers","LinksEllipsisTooltip","actionMenuBox","customAgendaEvent","dataMode","subjectLifestatusId","defaultValues","shouldLinkAppointmentAttendees","SubjectLifestatusId","DataMode","screenControl","GetControlBy","relatedRecordId","LinkToSource","relatedEntityId","AddInnerRelation","LinkAppointmentAttendees","copyTableType","GetControlByFieldName","startingModel","copyTableTypeId","followUp","followUpRecordModel","FollowupModeName","FollowUp","linkTable","linkIds","userTable","GetLinkedResources","linkedResources","ActionToggleMenu","ToggleAppointmentsWeekMenu","ToggleBookingsWeekMenu","GoToScheduler","EndTime","LinkedRecords","Resources","IsInTab","LinkedSubGroups","tabControl","tabWithScheduler","tabWithSchedulerIndex","schedulerControlInTab","TabIndex","SetActiveTab","ScrollToScheduler","isLoaded","$scheduler","NavigateToLinkedRecord","linkedRecord","appointmentDurationMinutes","selectedUsers","selectedUserGroups","ReturnFromScheduler","SetStarting","$agenda","scrollToHour","IsInModal","scroller","scrollPosition","GetDataModel","selectUser","IsRememberMe","Initialized","LinkAppointmentAttendee","calendarUserModel","userTypeName","userTypeNameTranslation","SchedulerViewModel","WeekNumber","Week","columnNumber","isRePlanMode","headerCol","HeaderColumns","scrollSize","GetGetColumnWidthClass","Periods","GetHeaderWidthClass","GetPeriods","Period","HeaderColumn","periods","Day","PeriodsMapping","OnViewModel","startingTime","periodDuration","numberOfPeriods","periodStart","periodEnd","HeaderColumnMapping","daysAmount","dayPeriods","ConvertPeriodsToWeekDay","period","CellEditor","_count","_isAvailable","isAvailable","_isFreeDay","isFreeDay","_IsGroupCell","isGroupCell","_period","_appointments","schedulerView","_replanningData","rePlanningData","_isReplanningCell","_isAvailableForReplan","_columnIndex","_availableForReplanRanges","InitAppointments","appointments","isSelected","IsReplanAppointment","IsAvailableForReplan","appointDuration","GetClassName","qty","ConvertValue","rounded","DisplayRanges","ranges","Subjects","AgendaSubjects","DisplayAppointments","toElement","ShowAppointment","OnShowDefaultScreen","ShowDefaultScreen","OnReplan","allowClick","CheckIsAfter","isAfter","ColumnEditor","_cellsEditors","ColumnFirstEditor","recordTypeId","recordTypeName","_recordTypeId","_recordTypeName","GroupEditor","order","_sortOrder","_subGroupEditors","_columnsEditors","_isCollapsed","_oldSortOrder","_selectedCount","GetSelectedCount","subGroup","UpdateSelectedCount","OnOpenGroup","_$collapse","OnCloseGroup","OnCollapseReady","$collapse","OpenGroup","SubGroupEditor","_group","_agenda","GetGroup","CloneToNewGroup","newSubGroupEditor","_columnFirst","SubGroupsMapping","OnUserViewModel","userEditor","dayPeriod","workMinutes","workSchedMinutes","freeDaysMinutes","currentTime","timeStructure","scheduleStructure","freeDaysStructure","cellEditorModel","cellEditor","subGroupEditor","GroupsMapping","resourceGroups","ResourceGroups","schGroups","sortOrder","processedUsers","usersGroups","GetLinkedGroups","groupEditor","processedUser","pu","TimeStructure","CreateTimeStructure","ScheduleStructure","CreateScheduleStructure","FreeDaysStructure","CreateFreeDaysStructure","Editor","UsersGroups","usersGroup","isUserSelected","uGroup","subject","iseSelected","UserTypeId","GenerateCellEditors","selectedSubGroups","resourceGroup","linkedEntity","ResourceGroupName","isResourceSelected","ResourceId","ResourceName","ResourceTypeId","ResourceTypeName","resourcesMapModel","replanningData","subGroupIter","columnsEditor","columnIter","cellIter","currentCount","us","linkedUsers","allGroups","intersection","WorkingSchedule","FreeDays","SchedulerMappingProfile","USER_GROUPS","NumberOfPeriods","StartingTime","PeriodDuration","selectedRows","selectedRow","rows","uniqSelectedRows","availableModel","ag","AvailablePeriods","AvailablePeriodsForReplanning","range","AgendaConnection","CreatingData","ReadingData","ScreenSubjectRecordName","Errors","Month","MonthDayYear","CurrentDate","headerColumns","base","colIndex","cellIndex","newBase","Compare","SchedulerStore","GetScheduler","isBlockingNeed","ResolveObjectResponse","errorException","ButtonCellEditor","isDisabled","_linkedSubGroups","GetTooltipMessage","ColumnButtonsEditor","SCHEDULER_EVENTS","SchedulerCultures","SchedulerView","_parentElement","recentLoaded","_groupEditors","_lastCollapsed","_startDate","_endDate","_settings","_freeCapacity","_commonFreeTime","_notValidGlobals","_ready","_starting","STARTING_TIME","InitPeriodDuration","InitNumberOfPeriods","GlobalValid","IsGlobalValid","_loadInProgres","Views","_columnToScroll","_isRePlanMode","_updateTimeoutValue","_globalsToUpdate","_subjectGlobal","_subjectGlobalValue","GetSchedulerSubjectToggle","_subjectIcon","_isUnblocked","_baseDatePicker","_baseDateStartClickingArrow","_subjectTooltip","RePlanningData","SetDefaultValues","Capitalize","GetScreenSubjectRecordName","GetDisplayPeriodDuration","_periodsDuration","_rePlanningData","GetClass","_numberOfPeriods","GetActiveClass","ChangeView","ChangeDateAndSortDates","SetSchedulerView","RenderData","schedulerMappingProfile","SubjectTable","SubjectIsValid","RestoreSelectedItems","UpdateRow","isoWeek","InitGroupEditors","InitSchedulerDateTimePicker","UnBlockUI","elementArray","lastView","GetSchedulerView","OnPrevClick","OnNextClick","GetDateFromTimePicker","pickerDate","dateComparison","newPickerDateShortFormat","toDate","currentDateShortFormat","newDate","newDateWeek","firstDayCurrentMonth","firstDayNewDateMonth","isOK","pickerPaginationBtn","pickerBtn","AddGlobalToUpdate","OnIncreasePeriods","newNumberOfPeriods","CalculatePeriodDuration","NUMBER_OF_PERIODS","OnDecreasePeriods","OnIncreasePeriodDuration","calculate","newPeriodDuration","fixed_10_minutes","fixed_05_minutes","CalculateDecreasePeriods","PERIOD_DURATION","OnDecreasePeriodDuration","DisableBtnDecreasePeriodBtn","OnIncreaseStarting","OnDecreaseStarting","ChangeProvideSubject","SetSchedulerSubjectToggle","RoundHalf","num","maxPeriods","UpdateUserGlobals","schedularResponseModel","globalValue","globalToUpdate","global","GlobalModel","ProvideSubjects","isFreeTime","recountAvailable","newRow","GenerateRow","freeCapacity","columnEditor","columnEditorIter","cellEditorIter","freeCapacityCell","linkedModel","GroupEntityId","freeCapacitySpecs","fc","columnEditorIndex","cellEditorIndex","available","ge","collapsedGroups","col","ChangeSameSubgroups","subgroup","OnGroupClick","OnSubGroupClick","OnCreateEvent","ReturnToAgenda","SwitchToDefaultMode","GetBottomColumnWidthClass","_screenSubjectEntityId","_screenSubjectRecordId","_currentDate","SetupValid","UpdateSchedulerView","GetSchedulerTemplate","GetInvalidSetupTemplate","GetAgendaConnectionTemplate","GetReadingDataTemplate","GetNotDefinedUsersTemplate","GetGlobalNotValidTemplate","isDestroyed","_isRePlanningMode","_isFromAgenda","_isLinkListLoaded","_component","_isRefreshScreen","screenSubjectEntityId","screenSubjectRecordId","SetRePlanMode","ReplanAppointment","OnSetData","agendas","SetStartingValue","AgendaRequestData","TableTypeName","LinkResources","currentUser","screenSubjectRecordName","EnablePlanner","startingControl","SetDurationValue","durationControl","durationModel","SetEditScreenValues","_colorDescription","GetLabelStyle","BindComponentEvents","_initialColor","SaveBtnText","_disableReason","_lifeStatuses","_followUpLifeStatuses","_choosenLifeStatus","_currentLifeStatus","_followUpRecord","SetRecord","ValidateData","actionSubject","GetActionSubjectRecord","ProcessingStatuses","firstStatus","showCheckLists","checkList","IsManyActions","MultipleActions","ShowCheckLists","followUpParentOption","Parent","ShowStandardFollowUp","_checkList","disableReason","parentRecord","ParentActionSubject","FollowUpParentRecord","PROPERTY_GROUPS","TYPE_FIELD_NAME","OnDropDownOpen","$drDown","bubbles","cancelable","OnInitialize","_select","OnDropDownClose","_showSearchScreenButton","_selectedValueId","_selectedValueLabel","_initialValueLabel","_allowInsert","_clearAllowed","_totalRecordsCount","_autoSelectIfOneRecord","_showConditionToggle","HasFilter","_textInputStyle","_searchScreenIfRecordsCount","_conditions","_isEnableFilter","_isDisableDropDown","_isPreselect","_newLookupRecordScreen","IsAllowInsert","ConditionGroups","CheckCreateRecordAllowance","GetDropdownTemplateName","GetSearchTemplateName","labelBackgroundColor","labelColor","inputBackgroundColor","showConditionToggle","ApplyLinkEditorStyles","AutoSelectIfOneRecord","DefaultFontWeight","HasLinkEditorVisibility","labelStyle","fontStyle","textDecoration","FontColor","FontStyles","Field","FilterByField","UpdateDependsOnValue","InitChangeEvent","FormatValue","LabelOriginalValue","ValFieldTypeName","dropDownItemModel","PreselectOption","_subjectRecordSpecsModel","ControlType","ResetSelection","UpdateDependsOnValues","ShowAddButton","AllowCreatingRecords","IsCdTable","ValTableName","AllowInsert","DropDownFilterState","HasLinkingCondition","ConditionToggler","ValTableId","linkEditor","GetRelatedEntityId","LeftRecordId","RightRecordId","GetRelatedRecordId","ReplaceSelectedValue","NewTypeScreen","newCustomItem","GetSelectedItem","valFieldId","itemTranslation","FieldValueTranslations","IsDate","dateTimeFormat","GetDateFormatFromFieldModel","ValFieldFormatName","HasTime","ValFieldSize","allowCreatingRecords","NewLookupRecord","NewEntityRecord","valTableId","TablesStore","GetLookup","NewRecordScreen","GenerateScreen","newLookupRecordScreen","AddLookupRecord","newRecordModel","LookupEditorStore","getDataRequestModel","SubjectKindId","GetKindId","SubjectStatusId","IsEnableFilter","GetKseq","IsLookupEditorNewRecord","isDisableDropdown","fieldEntityId","parentTypeId","dropdownItem","SetOptionDisable","customValue","isTypeField","isNotForNewRecordScreen","typeSelected","GetDisplayValue","DisableFilter","MultiSelectDataStore","GetOptions","requestData","MultiSelectListModel","_separator","SelectedItems","_showSearchScreen","_showMultiSelectText","_anySelectedItems","TextInput","textInputStyle","Condition","QueryCondition","ShowListSearchScreen","SelectedRecordIds","selectedRecordIds","DropDownContent","ParseOptionsValue","selectedItemsDisplayValue","ParseOptionsLabels","selectedOptionsString","UpdateSelectedItems","SelectedOptionsToString","SelectItem","RemoveItem","rightDifference","leftDifference","_checked","_initialDateChange","_skipTimeShifting","SkipTimeShifting","GetDateFormat","PrepareValue","_calculatedDependsOnValue","momentDate","controlValue","ResetDependOnValue","saveValue","DateChanged","ItemModel","RadioButtonOptionsModel","RadioButtonDataStore","RadioButtonOptionViewModel","_isItemsEmpty","_isValueSet","GetRadioButtonTemplate","AfterSearchTemplateRender","CustomEvent","_searchScreeen","PrepareFormattedValue","ItemsAreLoaded","originalValue","_controlContainerWidth","_controlLabelWidth","_elem","Appearance","Wrap","GetWidth","GetWrapped","IsWrapped","_isUnderlined","_selectHeader","_alignment","headerProperty","underlinedButtonProperty","selectAlignmentProperty","_memoHeightPX","_memoHeightAuto","ApplyWrapTextProperty","WrapText","_editor","_isNewRecord","_serverTranslations","serializedValue","defaultTranslation","changedTranslations","languageShortName","AfterChange","activeTranslations","activeTranslation","translationDiffExists","serverTranslation","_documentManager","documentManager","IsEnableMail","PasswordActions","_action","None","_isHidden","_isFirstChange","_isEyeEnable","_isModified","PasswordActionApplied","Action","SelectedAction","passwordAction","notificationText","Revoke","DisplayActions","_actionsIsVisible","PasswordFocused","TryToRefill","PasswordRevoke","IsExample","passwordValidationMessage","ShowOrHidePassword","SelectUserFormViewModel","UserViewModel","AllUsersGroupChecked","UpdateAllUsersGroupChecked","ToSelectUserViewModel","ToUserViewModel","ToUserViewGroupModel","AllUsersChecked","write","allUsersChecked","someUsersChecked","newUserGroup","groupChecked","SelectUserForm","ApplySelection","ready","SelectUserPopUp","SelectUserState","UserSelected","UserIds","UserGroupSelected","_userSelection","_isShowRememberMe","RememberMeGlobalEnabled","_isRememberMe","_isShowPlanner","_isPlanner","_activeSelection","TogglePlanner","_state","SetAppointmentAttendees","AddingUsersToGroups","userModel","GetSelectUserModel","ShowModal","RestoreState","_dropDownTooltip","ShowSelectUserTooltip","IsShowPlanner","targetTooltip","SelectByBusinessRole","GetSelection","GetRememberMeValue","_selectUserForm","byBusinessRole","combinedCheckedUserGroup","combinedArray","checkedUsers","selectedGroup","checkedGroup","userInGroup","selectedUser","usersWithGroups","screenId","GetId","userVarsManager","selectionByBusinessRole","UserSelection","RememberMe","AddSelection","CreateNewSelection","SetRememberMe","userSelection","GetUserSelection","ChooseSelection","filteredUserSelection","checkedSelection","selectionUIIndex","selectionUI","userSelectionData","GetUserSelections","selectionByScreenId","selectionIndex","SetUserSelection","planningAllowed","RemoveSelection","selectionByScreenIdIndex","ClearSelection","triggerChanges","REMEMBER_SELECT_USER","SetRememberUserSelection","selectedAllUserIds","selectedGroups","usersByGroup","sg","SelectedUsers","MapToSelectUserModel","selectedUserIds","groupIsChecked","UrlCommandModel","EditTemplateModel","UrlCommands","TemplateLanguageModel","TemplateDesignerStore","ToolbarQueryColumn","_isLinkColumn","PasteFieldCode","entityIndex","Element","IsLinkColumn","SpheeresLink","OpenRecordLink","ToolbarQueryEntity","isDesktop","_isDesktop","_columns","_spheeresLink","_openRecordLink","toolbarQueryColumn","PasteTable","ToolbarQueryEntityJoin","queryEntityJoin","isRoot","_joins","_isRoot","_toolbarQueryEntity","LinkEntity","_toolbarQueryLinkEntity","allJoins","Joins","SubEntityJoins","LookupEntityJoins","ReferenceEntityJoins","ReferenceLookupEntityJoins","EntityModel","LinkEntityModel","LinkName","EmailSubject","EmailCC","EmailBCC","EmailTo","Script","Variable","QueryToolbar","_subjectEntity","_isLoadInProgress","_iframeBlocks","_queryId","_urlCommands","_email","__urlCommands","IsScriptingExpanded","_scripting","SetCommands","commands","InitDragula","DragulaExtention","FindGroups","DestroyGroup","_dragulaGroup","AddGroupWithOptions","copy","drake","sibling","elementModel","_original","sourceModel","BlockFrames","UnblockFrames","iframe","GetQueryStore","GetToolbarQuery","editQuery","emailSubject","emailCC","emailBCC","emailTo","EntityJoins","QueryEntity","QueryTypeName","ViewModes","recordsPerPageGlobalValue","OTHER_GRID_PAGE_LINES","EditQuery","InitTemplateQuery","QueryId","queryId","ExpandScripting","NextStatusURLCommand","TINYMCE_COMMANDS","_isWebTemplate","_toolBar","_templateLanguages","_enableEditButton","GetFieldTemplate","_tinyEditor","execCommand","GetTableTemplate","GetSpheeresLinkTemplate","GetOpenRecordLinkTemplate","GetEmailSubjectTemplate","GetScriptTemplate","GetVariableTemplate","GetUrlCommandTemplate","SaveTemplate","ToBase64","FromBase64","titles","variables","fieldNameTranslation","script","UpdateTemplate","SelectTemplateLanguage","_templateFileId","_templateFileKSeq","_htmlTemplate","AfterTinyInit","CreateTemplate","templateLanguage","AfterTinyChange","Posts","RssFeedModel","RssFeedStore","GetRssFeed","_url","_rssPosts","SetUrlProperty","Url","linkArray","_isHyperlink","_dataRecordId","ApplyAliasSuffix","ApplyMaxLengthFormatter","maxFieldSize","GetFieldMaxLength","fieldData","maxLength","OpenRecordScreen","AliasValue","CrystalReportViewerStore","RunReport","EXPORT_FORMATS","Extention","CrystalReportViewer","_exportFormats","_exportFormat","_canvasContext","_canvasWidth","_canvasHeight","_pdfDocument","_totalPages","_scale","_enablePreviousPageButton","_enableNextPageButton","LoadReport","ExportReport","RenderPage","crystalReport","ExportFormat","DisplayReport","DownloadReport","extention","byteArray","PDFJS","disableWorker","getDocument","pdf","numPages","getPage","getViewport","renderContext","canvasContext","FirstPage","LastPage","PreviousPage","ZoomOut","ZoomIn","DataRoles","DPO","VO","SO","DO","PO","DEP","GetAllDataRoles","leftKey","rightKey","GetThirdPartyDataRoles","FieldSecurityStore","GetDataRoles","GetUsers","GetUserFieldCollections","AssigneeModel","AssigneeMappings","MapToAssignee","assigneeDto","MapToNewAssignee","assignee","FieldCollectionModel","Assignee","AssigneeName","FieldCollectionMappings","MapToFieldCollection","fieldCollectionDto","DataRoleModel","fieldCollection","FieldCollection","NewDataRoleDTOModel","dataRole","fieldCollectionName","assigneeId","FieldCollectionName","AssigneeId","DataRoleMappings","MapToDataRole","dataRoleDto","MapToNewDataRole","PostDataRolesRequestModel","newRoles","newDeputies","deletedRoles","deletedDeputies","NewRoles","NewDeputies","DeletedRoles","DeletedDeputies","NewDeputyDTOModel","fieldCollectionId","FieldCollectionId","DeletedRoleDTOModel","FieldSecurityMappings","MapToDataRoles","MapToPostModel","changes","deletedRole","FieldSecurityComponent","ManipulationsEnabled","viewModeTemplateMapping","Templates","ViewMode","ChangeManipulations","HeaderComponent","_dataRole","OnDataRoleAdding","FieldCollectionComponent","OnDataRoleRemoving","NewDataRoleComponent","OnRoleAdding","ValidateForm","OnRoleAddingCancel","NewThirdPartyDataRoleModel","SelectedUser","NewThirdPartyDataRoleComponent","LoadUsers","userType","UsersLoaded","usersDto","NewDORoleComponent","Portal","NewPORoleComponent","Guest","NewPersonalDataRoleModel","NewPersonalDataRoleComponent","NewSORoleComponent","NewVORoleComponent","NewDPORoleComponent","NewDEPRoleModel","FieldCollections","SelectedFieldCollection","NewDEPRoleComponent","FieldCollectionsLoaded","fieldCollections","selectedFieldCollection","DataRoleComponent","ShowNewRoleForm","_fieldCollections","_newRoleForm","AddCollections","newCollections","RemoveDataRole","RemoveCollectionComponent","component","HasFieldCollection","HasAssignee","SelectNewRoleComponent","OnUsersLoad","OnNewDataRoleSaving","OnCancelNewDataRole","FieldSecurityChangesModel","StartRoles","_changes","CreateHeaderComponent","_dataRoles","CreateDataRoleComponents","dataRoleComponent","ChangeRolesManipulations","AddNewDataRole","GetOperationalModes","RequestDataRoles","GetInitModes","GetSettings","GetViewMode","renderViewModeMapping","DataRolesLoaded","userDataRoles","userDataRole","newAssigneesIds","deleteAssignees","validationError","ValidateDataRole","deletedDataRole","deletedDataRoleIndex","newDataRole","newDataRoleIndex","ValidateDeputy","ValidateUniqueDataRole","ValidateThirdPartyDataRole","thirdPartyDataRoles","thirdPartyDataRole","queryProperties","queryExpressionProperty","AssignmentModel","ResourceEntity","effort","Effort","EditingEffort","Editing","SaveChanges","CancelChanges","AssignmentsPopupModel","assignments","Assignments","freeAssignments","fa","FreeAssignments","NewAssignment","EditAssignment","assignment","SaveAssignmentChanges","CancelAssignmentChanges","RemoveAssignment","freeAssignment","CreateAssignment","SaveNewAssignment","newAssignment","occupiedAssignment","CancelNewAssignment","GetAssignments","AssignmentsPopup","_task","assigs","roleId","GanttChartStore","GetPlanVersions","rootId","RootId","GetGanttChartInfo","subTableView","resourcesView","SubTableView","ResourcesView","CreateNewVersion","SaveGanttChartInfo","SaveGanttChartInfoDto","Tasks","OnViewModelMappings","AsTasks","dtos","tasks","AsTask","ResolveDependencies","task","parentEntity","childEntity","ChildEntity","parentRecordId","AsMilliseconds","Completeness","AsAssignees","BarColor","startIsMilestone","endIsMilestone","StartIsMilestone","EndIsMilestone","AsAssignee","RoleId","AsResources","AsResource","AsRoles","AsRole","holders","AsResourceHolders","ResourceHolders","AsResourceHolder","utcDateTime","shiftedDateTime","taskDtos","taskDto","Dependencies","dependencyDto","dependencyTask","dependencyRowNumber","dependencyString","StartAfterDays","depends","TaskDto","AssignmentDto","DependencyDto","TaskParentDto","OnDtoModelMappings","AsTasksDto","AsTaskDto","taskParent","AsUtc","AsAssigneesDto","AsAssigneeDto","depSplit","depIndex","startAfterDays","depTaskDto","AsDependencyDto","milliseconds","utcOffset","GanttChartMappings","_onViewModel","_onDtoModel","OnDtoModel","loadDecorator","resTr","assigTr","taskAssig","resEl","master","assig","roleEl","optr","permissions","canWrite","GanttChartComponent","defaultScale","_versions","_wrapperId","_ge","GanttMaster","_defaultScale","_dataOptions","RenderChart","LoadVersions","versionSelect","ShowCriticalPath","gantt","showCriticalPath","redraw","Resize","splitter","ShowAssignmentsPopup","taskId","getTask","getChildren","_project","project","saveProject","tasksDto","SourceTable","ResourcesTable","InitProject","LoadProject","BindRowEvents","EnableScrollOnTimelineDrag","ApplyColors","canDelete","canWriteOnParent","canAdd","canSeePopEdit","canSeeFullEdit","Roles","loadProject","manageSaveRequired","checkpoint","secondBox","startMillis","fx","EditResources","splitBox1","splitBox2","ganttFixHead","initialScrollLeft","initialClientX","setPointerCapture","pointerId","releasePointerCapture","rowElement","mutationObserver","mutationList","ganttBars","addedNodes","resourceEditor","createFromTemplate","resTbl","newRes","newAss","ass","cnt","Resource","_initialValue","_componentRendered","_ganttChartViewName","_resourcesViewName","InitRuntime","InitDesignTime","MapsStore","GetAddress","CheckGoogleMapsKey","_address","_keyIsNotValidMessage","_query","GOOGLE_MAPS_API_KEY","_portletSpaceManager","portletSpaceManagerModule","portletSpaceManager","PortletSpaceManager","IsDashboard","BulkEmailStore","GetConfig","subjectTableId","subjectRecordId","templateTableId","groupTableId","GetTemplates","GroupTableId","ConfigureBulkEmails","sendModel","CreateNewGroup","createModel","ConfigureBulkEmailDto","MailFieldId","TemplateId","RequestTemplateId","TemplateEntityId","CreateNewGroupDto","BulkEmailConfig","BulkEmailEntity","BulkEmailField","BulkEmailTemplate","_headerLabel","_bulkEntities","_selectedBulkEmailEntity","_bulkFields","_selectedBulkEmailField","_templates","_selectedTemplate","_selectedRequestTemplate","_registered","_running","BindDesignEvents","Registered","PrepareExistingConfiguration","PrepareNewConfiguration","BindRuntimeEvents","RefreshHeaderLabel","templates","MapToConfig","MapToTemplates","configDto","ProcessStatusId","Running","entityDto","fieldDto","templatesDto","currentEntity","currentField","currentTemplate","currentRequestTemplate","OnCopyClick","OnConfigureClick","mailFieldId","templateId","requestTemplateId","templateEntityId","OnRunningToggle","showScreenPromise","ShowBulkEmailHelp","JournalsState","AccountsState","InvoicingStore","CreateInvoices","InvoicingControl","_avalableForScreen","currentLifeStatus","validLifeStatus","RecordLifeStatusId","ConvertToInvoice","EntityNameTranslation","availability","SourceTableViewModel","TotalAmount","sum","ToggleExpansion","GetIconTemplate","SourceTableTypeViewModel","Controls","RecordsAmount","InvoicingControlViewModel","FinancialProcessorRunnerViewModel","InvoicingResultsViewModel","Results","InvoicingResultViewModel","RecordName","Result","LedgerViewModel","Accounts","SubAdministrations","AccountsBtnEnabled","AccountDisabledReason","NotExist","NotLinkedToJournals","AccountsViewModel","SubAdministrationViewModel","FinancialProcessorViewModel","FinancialDashboardMappingProfile","MapToSourceTableViewModel","dtoModel","sourceTableType","MapToSourceTableTypeViewModel","invoicingControl","MapToInvoicingControlViewModel","MapToFinancialProcessorRunner","MapToLedgerViewModel","journalsState","accountsState","MapToAccountsViewModel","subAdministration","MapToSubAdministrationViewModel","MapToInvoicingResultsViewModel","invoicingResult","MapToInvoicingResultViewModel","MapToReadyForInvoicingData","MapToReadyForProcessingData","MapToFinancialProcessor","ReadyForInvoicing","SourceTables","sourceTable","OnInvoiceBtnClick","ReadyForProcessing","IsAvailable","NotAvailableReason","FinancialProcessorRunners","runner","OnSendToFPBtnClick","QueryResultId","Ledger","AccountsBtnClicked","SubAdminBtnClicked","FinancialAPI","_financialButtons","FinancialButtons","ButtonsPresent","NoControlsMessage","GetNoControlsTemplate","InvoicingResults","ReadyForProcessingData","_selectProcessorFromSearch","_financialProcessors","_financialProcessor","_searchPhrase","_paginationToolbar","BuildPaginationToolbar","_grid","BaseGrid","isPrioritiesDisabled","isQueryResultGrid","isEnableSelectRecord","enabledFavorite","_sort","SortColumns","LoadGridData","OPEN_HYPERLINK","LoadFinancialProcessors","SearchFinancialProcessor","CloseAfterSelectingRecord","desiredQueueType","selectedFinancialProcessor","OnStartProcessing","ValidateProcessor","ValidateSelectedRecords","SendToFinancialProcessor","FinancialProcessorId","maxDropdownItemsAmount","Store","GetFinancialProcessors","Amount","pagedResult","financialProcessors","financialProcessor","QueryExpression","FilterByOwners","SearchPhrase","getDataPromise","GetReadyForProcessingData","SetGridData","sendToFPDtoModel","ReadyForInvoicingData","_gridViews","_gridView","_isEditingAllowed","_isDeletingAllowed","_isGridPrioritiesDisabled","_canHide","_canShow","GetGridPriorityToggle","ToggleAllShownColumns","_queryDropdown","QueryDropdowns","NewTableView","EditTableView","CopyTableView","DeleteTableView","LoadTableViewList","GridViewId","ShowQueryEditScreen","GridStore","GetDefaultTableView","InvoicingQuery","queryBuilderControl","SetSubjectEntityId","SetQueryTypeName","InitQuery","ViewGridListStore","GetInvoicingGridViewList","ViewGridModel","selectedView","GridViews","queryTable","GetQueryTable","viewId","SetFilterByOwners","DeleteQueryStore","GetGridPriority","TogglePriorities","gridSubjectEntityId","SetGridPriority","canHide","canShow","GetReadyForInvoicingData","ViewId","Invoice","invoicingResults","GetFinancialDashboardGridView","SetFinancialDashboardGridView","FinancialDashboardDtoModel","SourceTableDtoModel","SourceTableTypeDtoModel","InvoicingControlDtoModel","InvoicingResultsDtoModel","InvoicingResultDtoModel","FinancialProcessorRunnerDtoModel","LedgerDtoModel","AccountsDtoModel","SubAdministrationDtoModel","FinancialDashboardMockStore","dashboardModel","projects","GetSourceTable","InvoicingControlsName","orders","contracts","GetFinancialProcessorRunner","GetLedger","createInvoiceParams","GetInvoicingResult","sendToFPParams","types","GetSourceTableType","invoicingControlsName","invoicingControlName","GetInvoicingControl","recordsAmount","fpRunner","ledger","GetAccounts","GetSubAdministration","accounts","FinancialDashboardStore","StoreFactory","GetStore","_readyForInvoicingComponent","_readyForProcessingComponent","_ledgerComponent","_financialAPIComponent","IsDesignMode","InitComponents","ShowBadRequestError","RequestReadyForInvoicingData","RequestReadyForProcessingData","readyForInvoicingEventData","readyForInvoicingDataModal","OnInvoicesCreated","sendToFPEventData","readyForProcessingQuery","ReadyForProcessingQueries","readyForProcessingDataModal","OnFinancialProcessingStarted","ShowInvoicingResults","GetReadyForProcessingQueries","GetFinancialButtons","queryResult","GetReadyForProcessingQuery","queryExpression","CurrencyStore","GetNativeCurrency","GetCurrencies","_rateDate","_selectedCurrency","_availableCurrencies","_errorResolving","GetRateTitle","_originalCurrency","currencyModel","ParseValue","showCurrency","Converted","Origin","ApplyCulture","RateDate","CurrencyId","IsoCode","userCurrencyIso","DEFAULT_CURRENCY","defaultCurrency","currency","FormatDisplayValue","ChangeRate","rateDate","OnSelectCurrency","InitCurrencyDropdown","SetAvailableCurrencies","ShowAvailableCurrencies","_heightPX","GetDesignerHeight","HeightPX","GetConfigurationBooleanPropertyValue","GetHiddenPCFGROUPSIfEmpty","GetImageSize","GetConfigurationRoleValue","GetConfigurationAnnotationsValue","GetConfigurationAlternativePriceValue","ShowConfigurator","InitForDesignTime","InitForRuntime","attachedFields","lastField","hidePCFGROUPIfEmptyParam","hiddenPCFGROUPSIfEmpty","hiddenPCFGROUPSIfEmptyString","groupString","relationTypeValue","booleanParam","annotationParam","alternativePriceParam","SpimStore","GetAlphaNumericValues","SpimValueViewModel","NumericValueViewModel","spimValue","FeatureType","NumericValue","RangeValueViewModel","rangeLow","rangeHigh","RangeLowDisplayValue","RangeHighDisplayValue","lowValue","RangeLow","highValue","RangeHigh","LogicValueViewModel","LogicalValue","AlphaNumericValueViewModel","dropdownValues","_selectedItemId","AlphaNumericValue","AlphaNumericDisplayValue","PageResponse","ScreenModel","BookStore","GetPage","bookId","pageLayout","BookId","PageLayout","_bookId","_dataLoading","LoadPage","InitialLoad","NestedLevel","_notShownReason","DisposeCurrentPage","GetPageLayout","GetBookClass","layoutProperty","blocksClass","ActionBar","BottomBar","MainBlocks","PageLayoutBlockClass","DesignPageLayoutClass","GetPropertyDefaultValue","IsNested","ScreenFactory","GetScreenInstance","IsOpenedViaBookControl","SetIsReady","LINK_BOOK_RECORD","mainScreen","OperationMessage","SetPageNumberWithoutTriggeringChangeEvent","NumberOfPages","_iControlParams","_labelName","GetName","newDataModel","_isModal","InitSignature","ResizeCanvas","devicePixelRatio","_signaturePad","fromDataURL","isEmpty","dataImageString","SignatureImage","SignatureStore","SaveSignatureData","_originalImageDataModel","_attachments","_removeAttachments","_isReadOnly","attachments","removeAttachments","_newAttachments","LoadSignatureImageData","PrepareForSignatureImage","exampleImage","FirstRecordOnly","ImageDataStore","modifiedValue","originalImg","GetOriginal","signatureExampleImage","signatureEditScreen","signatureIsConsultScreen","SaveOnlySignature","ChartStore","GetChartData","ChartTypeEnum","ChartBuilder","_chartType","ChartType","_chartTitle","ChartTitle","_xAxis","XAxis","_xAxisLabel","XAxisLabel","_yAxis","YAxis","_yAxisLabel","YAxisLabel","_sortBy","SortBy","_series","Series","WrapperId","_xAxisExists","XAxisExists","_yAxisExists","YAxisExists","_seriesExists","SeriesExists","ApplyLabelFormatter","labelValue","labelFormat","dateFormat","GetFormattedValue","pointValue","AreaChartBuilder","series","GetSeries","xAxisLabel","XAxisInfoModel","AxisDefaultName","yAxisLabel","YAxisInfoModel","chart","formatter","GetToolTip","xAxis","labels","categories","GetXAxisCategory","Points","yAxis","GetYAxisCategory","points","xCategories","groupBy","point","Line","groupedPoints","line","groupData","findNearestPointBy","yCategories","xLabel","yLabel","xValue","yValue","LineChartBuilder","_defaultChartType","chartType","PieChartBuilder","_mainAxis","GetMainAxis","_secondaryAxis","plotOptions","pie","dataLabels","AxisExist","mainAxisPoint","secondaryAxisPoint","Pie","innerSize","zMin","xAxisModel","yAxisModel","_mainAxisLabel","_secondaryAxisLabel","StackedAreaChartBuilder","_xCategories","Area","pointFormatter","area","stacking","lineColor","lineWidth","xAxisValue","yAxisValues","yAxisValue","Funnel3DBuilder","Funnel3D","options3d","depth","viewDistance","GetDataLabel","allowOverlap","categoryMax","ChartBuilderFactory","CreateChartBuilder","StackedArea","ChartControl","_preventResize","OnResize","_chartOptions","_chartBuilder","chartParams","XAxisField","YAxisField","SeriesField","unbindResize","FrameLoaded","controlTypeNameToControlClass","KanbanBoard","SpreadsheetControl","ControlFactory","ControlClass","ICON_CLASSES","GetDateLocalizedSeparator","calendarWeeks","valueMoment","RecordKeyModel","DocumentDataModel","DropFileModel","DropDataModel","FileError","LoadingProgress","DropFileModels","_checkedFiles","_hasCustomTypes","_allFilesCheck","_uploadingStarted","_uploadingFinished","_allSelectValue","_showOkayButton","_originalFiles","_entityTypes","_affectedRecords","OnClose","_files","_readyFiles","OnOkayWhenError","OnOkayCallBack","SendDocument","dropDataModel","validateSpreadsheet","_destinationTypeId","FType","bufferChunkSizeInBytes","maxFileSizeKb","currentStreamPosition","endPosition","ChangeFile","OnError","_isConsultScreen","ValidateSreadsheet","_nonrequiredXlsxFields","NonrequiredFields","_requiredXlsxFields","InsertDropDocument","OnSelectTableType","_hasMissingFields","_hasDwPackage","HasDwPackage","OnCloseCallBack","_filesTypeSelected","checkedFiles","_disabledElment","ScreenTypeName","DocumentTypeId","DocumentEntityId","tableTypesModel","singleTypeId","OnOkay","SubscribeObservables","changinFromSubscription","newdata","filesCount","filesWithoutErrors","Upload","SendDocuments","checkFile","getLimitAmountOfDocumentsModel","EntityRecordId","CheckLimitAndSendDocuments","AddFile","GetLimitOfUploadedDocuments","IsLimitOfUploadedDocumentsSet","DocumentsQuantityLeftToLink","documents","warningMessage","uploadChunkModel","FileChunk","_uploadCount","CleanData","_maxFiles","_acceptedFiles","_previewFileName","_previewFileImage","_previewFileSize","_noLabel","_isLinkedDocumentsAmountLimitReached","IsLinkedDocumentsAmountLimitReached","_hideModal","_hasRollbackData","CheckRollback","dataImport","screenEntityId","GetDwPackageId","help","DocumentSubEntityId","GetDropZoneLabel","DragOver","DragLeave","OpenModal","modalHide","CreateModal","screenSubjectTypeId","documentTypeId","Extension","fieldIds","FieldIds","fileChunk","MissingFieldsDto","OperationResultModel","DropdownItemModel","DropdownListModel","FastFilterRangeModel","DropdownDataStore","_groups","groupModel","ControlGroup","_currentControlGroup","IsExpaned","ControlGroupClick","controlGroup","_isLoading","_expandedEntity","_scrollValue","IsOpenFromDatabaseDesigner","isOpenFromDatabaseDesigner","MainEntity","ScreenStore","GetSubjectEntity","subjectEntity","SubjectEntity","EditTable","databaseDesigner","dataBaseId","DbId","ShowTableDesigner","SaveData","ExecuteDbDifferenceScript","EntityClick","parentContainer","scrollValue","prevAll","_controlToolBar","_entityToolBar","EnableToolBar","ControlToolBar","EntityToolBar","EntitiesBarClick","ControlsBarClick","CollapseAll","FormDesignerStore","GetFormDesignerMetaData","CreateNewForm","DeserializeDesignScreen","ResetForm","CreateNewFormRequestModel","_fontStyleOptions","_fontColor","_fontFamily","_fontWeight","_fontStyle","_styleText","_screenBGColor","_screenHeaderBGColor","InitSettingControls","InitWidthCardScreen","FindElementByType","InitBackgroundColorScreen","InitFontColor","InitFontWeight","InitFontFamily","InitFontStyle","InitScreenBGColor","InitScreenHeaderBGColor","PropertyManager","ValueRequired","_widthCardScreen","WebSizeProperty","_bgColorCardScreen","ColorPicker","_fontColorCardScreen","_fontWeightCardScreen","SelectProperty","_fontFamilyCardScreen","_fontStyleCardScreen","_screenBackgroundColor","_screenHeaderBackgroundColor","OnSubmit","screenOptions","PropertyDescriptionType","hasChanges","testScreenBodyHeader","testScreenBodyPageContainer","setProperty","ResetFormRequestModel","FormId","FormTypeId","FieldCollectionDropdownTemplate","TypedScreenDropDownTemplate","_enableEntityTypeButtons","_isEditable","_typedScreens","_disableDelete","_isEnablePathRunnerToggler","_previousScreenName","_screenName","_isSaveEnable","_isDashScreen","_screenTypes","_selectedType","_designScreen","_hasCustomColor","_hasCustomWeight","_screenWidth","_screenBgColor","_pathRunnerTogglerColor","_pathRunnerToggler","_activeFieldCollectionName","_activeTypeName","_defaultDropDownOtherOptions","_dafaultDropDownClass","_isOpenFieldCollectionDropdown","_isOpenTypedScreenDropDown","_isOpenFromDatabaseDesigner","HasCustomColor","HasCustomWeight","ScreenWidth","ScreenBgColor","FontFamily","FontWeight","FontStyle","EnableEntityTypeButtons","IsEditable","IsSaveEnable","IsDashScreen","TypedScreens","CurrentFieldCollection","_currentFieldCollection","CurrentType","_currentType","ShouldShowButtonsOrEntityTypeButtons","ShouldShowButtons","SetScreen","LoadScreen","ApplyScreen","GetScreenName","ControlGroups","designScreen","selectedType","DesignModel","oldTypeId","SelectedTypeInit","GetFieldCollectionId","FormProperties","RenderByTarget","CheckIfExist","InitPathRunnerTogglerColor","IsEnablePathRunner","TogglePathRunner","GetDesignScreen","currentMain","PickType","formId","previewModal","factory","ExistingScreenViewModel","SubForms","buttonSave","GetFieldCollectionButtonColor","buttonStyle","ScreenExists","GetTypeButtonColor","entityType","GetTypeNameById","SelectFieldCollection","SwitchScreenType","SelectTypedScreen","isDashType","SwitchTypedScreen","GetTypedScreen","AllDropDownClose","GetActiveFieldCollectionName","activeFieldCollection","ShowFieldCollectionDropdown","_fieldCollectionDropDown","InitFieldCollectionDropdown","FieldCollectionDropdownOpen","FieldCollectionDropdownClose","GetActiveTypeName","activeType","ShowTypedScreenDropDown","_typedScreenDropDown","InitTypedScreenDropDown","TypedScreenDropDownOpen","TypedScreenDropDownClose","GetScreenId","DeleteScreen","UpdateScreenName","resetFormModel","ShowEntitySelector","OpenSettingsModal","isCardScreen","settingsModal","StartLayoutConfiguration","selectEntityDialog","selectedEntityId","screenModel","OnEditClick","EasterEgg","_controls","controlParam","ControlGroupModel","ControlToolBarModel","customObjects","customObjectProperties","customObjectsCompleter","getCompletions","word","caption","customPropertiesCompleter","getCursorPosition","currentLine","getLine","lastWord","EDITOR_MODES","JAVASCRIPT","CSHARP","langTools","addCompleter","CodeEditor","_fontSizes","_themes","_packageId","_method","PrepareParams","_selectedTheme","_selectedFontSize","_selectedFontFamily","_currentTheme","_toolbarButtonBackgroundColor","_toolbarButtonBackgroundHoverColor","_toolbarButtonColor","_toolbarButtonHoverColor","_imageLogs","setFontSize","setOption","InParams","OutParams","Validation","UpdateCode","_originalCode","getValue","GoToErrorLine","GetCode","getTextRange","Test","_logEditor","setValue","pasteScriptDebugLog","functionPackage","Validate","topNonEditableMarkerId","bottomNonEditableMarkerId","setTheme","setShowPrintMargin","setReadOnly","PasteImage","rowCol","getCursor","moveCursorTo","removeMarker","addMarker","command","completers","setOptions","enableBasicAutocompletion","enableSnippets","enableLiveAutocompletion","invert","Hover","UnHover","componentToHex","rgbToHex","rgb","_allRows","_paginatedRows","_hasPrevious","_hasNext","_paginatorInputWidth","Previous","_package","_currentMethod","_rawResult","_showRawResultCheckbox","_showButtonContainer","Package","CurrentMethod","ShowButtonContainer","FunctionDesignerStore","GetFunctionDesignerMetaData","ShowCodeEditor","Methods","GetMethod","existingMethod","DeletePackage","EditMethod","packag","EditParam","SelectParameter","NewParameter","AddAndLink","NewMethod","IsRawResult","FUNCTION_TYPES","FunctionDesignerMethodParamModel","FunctionDesignerMethodModel","FunctionDesignerPackageModel","ParamValueModel","FunctionExecutionModel","SyntaxErrorModel","CompileErrorModel","FunctionValidationModel","SyntaxErrors","CompileErrors","paddingV","paddingH","_iconColor","_nameInTooltip","_synchronousExecution","getGrid","ClickTrigger","GetSource","grid","GetButtonInGridConfig","recordKeys","QueryEntityGuid","recordKey","paramData","GenericButtonConfigs","GenericButtonId","GetTooltipValue","GridCountRow","_showFavoriteCell","_isEnableSelectRecord","_rowColorEnabled","_dataCells","filterTotalColumns","IsSortDescription","TotalCell","_isGroupActive","IsGroupActive","active","HasWrappedColumn","dataCell","ResizeService","_disableEditLinkButton","_isFastFilterEnabled","_columnWidth","_reservedColumnsWidth","_canShowColumns","_canHideColumns","_overflowInParentBeforeHidden","_rowsReady","_headerColumnsReady","_nextNewRow","_hideCont","groupColumns","_tableScrollLeft","_waitingForGrid","_isMultipleUnlinkModeActive","getColumnWidth","styleWidth","RepositionHeaderOnScroll","scrollPositionInContainer","headElement","portletFullScreen","boundingRect","modalTopPosition","fixedHeaderHeight","jBoxModal","isModal","headerElement","StickyActionBarHeight","distanceFromTop","portletToolbarHeight","topHeaderPosition","ResizeTableCellsAfterRender","_baseTemplate","_prevPageNumber","_isAllSelected","_hideLifeStatusToggle","hideLifeStatusToggle","_hideUnlink","hideUnlink","_hideEdit","hideEdit","isEditable","_enableBasket","enableBasket","_enableFavoritesIfPossible","_backLinkingButtons","backLinkingButtons","_isQueryResultGrid","_unBlockCardScreen","_headerColumns","_rows","_screenRows","_isNested","isNested","_maxRowHeight","maxRowHeight","_isPrioritiesDisabled","_isView","_isCardScreen","_isVisibleFavorites","_bulkEditRow","_uiBlocked","_totalRow","_countRow","_averageRow","_hasTotalRow","_totalGroupRows","_averageGroupRows","_lockRows","_enableSelectRowCell","enableSelectRowCell","_isEnableSortByRelationShips","_enableLinkButton","_enableUnlinkMultipleRecordsButton","_enableLinkParentButton","_hasOneParent","_enableAddAndLinkButton","_enableScanAndLinkButton","_isMultiselect","isMultiselect","_unlinkedRows","_hasSubGrid","_columnClassesCollection","_columnClassesTotalCollection","_inlineControls","_sortByRelationshipOrder","_deletedRows","_parentRow","ParentRow","InitEvents","GetBaseTemplateName","_sortByRelationshipOrderClassName","ShowActionCell","HasInlineControls","_toolbar","LINK_RECORD","LINK_PARENT_RECORD","SCAN_AND_LINK_RECORD","UNLINK_MULTIPLE_RECORDS","SubGridUnlinkMultipleRecords","CONFIRM_MULTIPLE_UNLINK","UnlinkMultipleRecords","SubGridConfirmMultipleUnlinking","CANCEL_MULTIPLE_UNLINK","SubGridCancelMultipleUnlinking","GetEditRows","GetNewAndLinkRows","LOAD_SUB_GRID","NO_CHANGES","EDIT_LINK","CHANGE_VISIBLE_GROUP","EDIT_CLUSTERED_LINK","ADD_TO_BASKET","REMOVE_FROM_BASKET","SAVE_LIFESTATUS","RECORD_EDITED","UNDO_EVERY_RECORD","UPDATE_GRID","LINK_NEXT_RELATION","BACK_LINKING_POPUP_REQUESTED","SELECT_RECORD","UPDATE_SET_ENABLE_ADD_BUTTON","IsEnabledSelectRecord","IsAllSelectedChanged","UpdateSelection","selectAll","ClearData","SelectType","HasFTypeColumn","objectEntityId","subjectTable","LinkTableId","AddNewRow","Rows","AddRow","AddRowsFrom","gridDataModel","headerColumn","EntityMetadata","gridCellValueModel","rowData","gridRowModel","griSubjectEntity","GetGridSubjectEntity","typeColumn","cellData","cellValueModel","DisplayPriority","GetInlineControls","IsSubGrid","HasProcessCards","ROW_SELECTION_CHANGED","EDIT_RECORD","CANCEL_EDIT","DELETE_RECORD","SAVE_RECORD","SubGrid","ParentRowId","AddToBasket","Row","NewRows","GetBulkEditRow","GetBulkEditControls","AddLinkedRows","IsLinkEditorEnabled","inlineControls","rowModel","DisplayOrder","CurrentRow","RowList","_queryExpression","IsCrossTable","ShowCrossTableDetail","ConfirmUnlink","LinkAndEdit","ClickOnFilterButton","CrossTableValueColumn","GetAllQueryColumns","IsCrossValue","GetCrossTableDetail","KSeqs","DisplayFields","pivotDetailsDropDown","El","FilterSaveModels","FilterSaveModel","SetRecordsPerPage","restoreSortState","tableViewId","updateRow","ScreenRows","SetScreenRowData","SetDefaultRowData","screenFactory","batchIndex","loadPromise","screenRow","LoadScreenData","IsEnableLink","ENABLE_SUBGRID_LINK","GridSubjectEntityType","IsEnableUnlinkMultiple","ENABLE_UNLINK_MULTIPLE_RECORDS_SUBGRID","IsEnableAddAndLink","ENABLE_SUBGID_ADD_AND_LINK","IsEnabledScanAndLink","ENABLE_SUBGRID_SCAN_AND_LINK","IsEnableLinkParent","ENABLE_SUBGRID_LINK_PARENT","GridSubjectEntityId","GridParentEntityId","PROCESS_CARDS","GridSubjectEntityMetadata","IsView","InitLinkButtons","IsLinkingAllowed","IsAddAndLinkAllowed","IsLinkJoin","IsScanAndLinkAllowed","HasOneParent","InitHeaderColumns","columnModel","queryEntity","GetEntityByColumnGuid","queryColumn","IsGroup","_gridDataModel","existedColumnAliases","IsFastFilterEnabled","oldHeader","SortOrder","ResetSort","sortColumns","IsEnableSort","GetSortModel","FAST_FILTER","updateFromFastFilters","_tableViewId","hasAnySubgrid","NestedData","SetIsEnableSortByRelationships","linkedRows","IsVisibleFavorite","SetGridSubjectEntityMetadata","IsGroupMode","groupedColumn","SortDirection","CrossWrapped","crossWrappedCell","isVisibleButtons","GetAllQueryEntities","HasGroupColumn","GroupedData","GetGroupedData","IsSubEntity","SaveRecord","SaveLifestatus","MOVE_ROW_UP","MoveRowUp","SortCell","MOVE_ROW_DOWN","MoveRowDown","HOVER_SORT","HoverSort","UN_HOVER_SORT","UnHoverSort","SHOW_ORIGINAL_IMAGE","currentGroupRow","_groupedData","isGroupActive","GroupActive","ChangeVisibleGroup","TotalRow","CountRow","AverageRow","TotalGroupRows","AverageGroupRows","CreateColumnWidthParameters","CreateColumnTotalWidthParameters","AllRows","allGridRowGroups","indexesOfFilteredRowGroups","filteredGroup","indexOfCurrentGroupRow","endIndex","FindNextGreaterNumber","GroupRows","GroupVisible","activeTotalRow","gridTotalRow","GroupGuid","CrossTableWrapped","crossRow","nextGreaterNumber","GridUnlinkMultipleRecords","GridConfirmMultipleUnlinking","GridCancelMultipleUnlinking","UnlinkRecord","isEnableSortByRelationShips","GetSortRows","sortRow","sortCell","isSameRecord","sortRows","HighlightSort","UnHighlightSort","upSortCell","upSortRows","upSortCellIndex","rawRows","upRow","downRow","downSortCell","downSortRows","UpdateSort","sortValue","Swap","downSortCellIndex","upRows","downRows","upIndex","downSortValue","upSortValue","upFieldData","downFieldData","UpCell","DownCell","GetTotalGroup","GetAverageGroup","isFastFilterExist","HideGrid","ShowGrid","removeScroll","AfterRowRender","AfterHeaderColumnsReady","AfterBulkEditRowReady","WaitTillGridShown","AlignCells","rowCells","allCells","reservedCells","reservedIndex","iterationTarget","iterationIndex","removeProperty","afterPriority","superHeaderRows","isCrossTable","rowsData","maxRowWidth","isSubTable","second","third","recalculateGrowColumnsToFullWidth","containerWidth","containerScrollWidth","scrollWidth","isQueryResult","boxMoreEqualContent","contentMoreEqualBox","GrowColumnsToFullWidth","HideColumns","HideColumnsByPriority","SetSuperHeader","firstRow","restRows","restWidth","restColumnsWidth","ApplyMaxRowWidth","difference","headersArray","rowsArray","hiddenColumns","hiddenElementsWidth","haveAlwaysVisibleCells","maxCellsLength","maxColumsToHide","prevItem","nextItem","priority","SortColumnsByPriority","elem","dataFor","IsOrdinary","localHaveAlwaysVisibleCells","localMaxColumsToHide","localHiddenColumns","fragment","createDocumentFragment","superHeaderRow","headerCells","reservedWidth","regular","groupEl","overReservedEl","cloneNode","currentGroupEl","groupsWidth","hasGroups","datasetA","datasetB","priorityA","priorityB","GetColumnPriority","GetClassNames","classNames","additionalClassNames","validationFieldMetadata","AddColumns","columnModels","excludeColumn","rowDataModel","SerializeRowData","UpdateResult","RowLifestatus","UpdateRowLifestatus","DeleteRow","selectedRowsRequestModel","IsUnlinkCheckboxChecked","requestRowModel","RelationshipType","elementsToDelete","dataModelRowsToDelete","deletionIndex","LinkEditorData","deletedRelation","DeletedRelations","UnlinkRecordByRelation","relation","isNewParent","GetRowByRelation","RowsCount","TotalRows","IsLinkParent","aliasToBeAdded","CustomValue","HasFTypeField","GetFtypeCell","GetQueryColumn","columnGuid","entities","GetQueryEntity","AfterGridReady","isSameElement","_resizeLimitInterval","stickyActionBarHeight","actionBarBlock","actionBarSubForm","stickyActionBar","paddingModalPX","paddingModal","Colapse","IsReady","GetRecordIds","GetAllRecordKeys","GetGridRowByRecordId","GetGridRowsByRecordIds","GetUnlinkedGridRowByRecordId","GetUnlinkedGridRowsByRecordIds","GetRowByIndex","DuplicateRow","newRowModel","MarkRecodsInBasket","records","SerializeRows","SerializeLinkEditorData","allRows","linkEditorData","SaveEditRows","SaveRow","ReleaseLockRows","HasEditRows","objectEntity","fTypeField","SetGridDataModel","ShowBulkEditor","bulkEditRow","editingRows","AddInLockRows","RemoveFromLockRows","GetIdsForRelease","isDataValid","IsDataValid","SaveControlValue","bulkCell","bulkCellItem","UpdateRows","lockRow","inlineControl","ViewValue","Cell","SortByRelationships","Asc","Desc","sortModel","OrderColumn","EditAll","SaveAll","editableRows","imageCell","contextRow","cellIdex","imageCells","baseNext","loop","LoadOriginalImage","basePrev","navigationAction","GetImageValue","RelationshipTypes","DATA_REMOVED","CLICK_UNLINK_CHECKBOX","CHANGE_LIFESTATUS","DROPDOWN_VALUE_SELECTED","PRINT_LABEL","CREATE_OR_DELETE_SORT_DESCRIPTION","DataCell","_showClusteredArrow","_isHyperLink","IsHyperLink","rateLimit","_valueChanged","_editValue","_size","_height","MaxRowHeight","_formatManager","_valueExists","_referenceIcon","_referenceEntityName","_viewValue","_pivotDetailsDropDown","PivotDetailsDropdown","_showOriginalMemoButton","_recordNotFound","_hasDescription","HasDescription","TooltipContent","TranslateValue","clusteredCell","SetReferenceData","FeatureTypeIsSet","editMode","GetDataEditor","controlDataModel","OriginalDisplayValue","GetMemoValue","Details","InitPhoneCountry","DEFAULT_COUNTRY_CODE","IntlTelInputExtention","IsCountryValid","_globalCountry","reference","_reference","entityRecord","SelectedEntityRecord","referenceTable","ReferenceTable","SelectedEntity","SetInvalidIcon","IsAbleSort","IsNotAbleSortMessage","SetLinkIcon","IsFieldSystem","IsInsertAllowed","IsControlReadOnly","IsDataChanged","_isEnableEdit","notEnabledMail","GetIconName","TranslateData","InitTemplate","RecordNotFound","GetViewValue","fieldModelTypeName","GetPhoneViewValue","phone","EditValue","RelationType","details","HyperlinkRecordId","ShowNextRelationTypeScreen","editLink","allEntities","Util","GetParentEntity","GetDataByClusteredField","QueryColumn","recordkey","IsOpenAgenda","IsHyperlink","HyperlinkEntityId","NavigateByHyperlink","IsRecordValid","IsNoAccessCell","isNoAccess","IsCrossRow","IsClustered","PrepareCurrency","PrepareSpim","PrepareMemo","PrepareColor","PrepareDocument","PrepareTime","PrepareTimeSpan","PrepareMultiSelect","PrepareDecimalOrInteger","fieldMetadata","localize","valueForDisplay","singleValue","ConvertFromDefaultFormat","_currencyValue","IsAlphaNumeric","IsNumeric","IsLogic","IsRange","documentDataModel","IsEnableSwitchVersion","DisplayPriorityClass","linkEditorFieldData","controlsWithComplexValues","controlWithComplexValue","phoneCode","GetPhoneCode","shownCurrency","SaveLinkEditorValue","SelectNextRelationType","OpenMarkedEditScreen","GetIconClasses","GetAttributes","GetStyle","tooltipValue","ShowOriginalMemo","GetGrid","baseGridModule","baseGrid","$parents","IsBarcodeButtonVisible","IsVirtual","PrintBarCode","ShowNextRelationTypeButton","CrossValueSettings","conf","RelationTypeValueId","ShowNexRelationButton","ShowEditRelationTypeButton","ShowEditRelationButton","HasSortDescription","DescriptionTooltipContent","EditDescription","CancelEditDescription","SaveDescription","CreateOrRemoveDescription","_columnModel","DISPLAY_PRIORITY_TO_CSS","BaseColumn","_sortOrderClassName","GroupTitle","HasGroupTitle","ProcessCardsDropdown","_processCardsLifeStatuses","SelectLifeStatus","_recordInBasket","_isDisableEditLinkButton","_isCrossTable","_enableExpaning","_hasSubGridData","_isRetired","_rowEntity","_isSubgrid","_isLinkJoin","processCardsLifeStatuses","_showExpandButton","_showColapsButton","_isLocked","_isLifeStatusEnabled","_hideToggleDisableButton","_isEditScreen","_isListScreen","_isVisibleButtons","_showEditButton","_showDeleteButton","_isUnlinkCheckboxChecked","_showStepsScreenButton","_unlinkButtonTitle","_editLinkButtonTitle","_isUnlinkButtonDisabled","_isEditLinkButtonDisabled","ProcessCardPage","showDeleteButton","IsVisibleButtons","IsMultipleUnlinkModeActive","IsLifeStatusEnabled","HideToggleDisableButton","HideUnlink","HideEdit","GetBasketButtonTemplateName","ExpandColapseNestedGrid","that","EditLink","OnClickUnlinkCheckbox","ChangeLifeStatus","CancelEditRecord","ShowBackLinkPopup","ButtonName","Intention","GetCurrentName","backLinkingButton","currentLang","ShowProcessCardsLifeStatuses","ShowStepsScreen","processCardsDropdown","StepsScreenId","LoadStepControlData","nextStatusId","IsFavorite","GroupDetailsDropdown","groupDetails","SelectRowCell","SelectRow","isNewRecord","isVisibleFavorite","gridProperties","isSubGrid","isGroupMode","_hasProcessCards","States","_crossTableWrapped","_showSortBorder","_nestedGrids","_relationshipType","_gridProperties","_isSubGrid","_isSelectedForUnlinking","_selectRowCell","_hasInlineControls","rowEntity","_isEntity","_actionCell","HasSubGridsData","ProcessCardsLifeStatuses","_favoriteCell","isEditOrListScreen","_isLockConfirmated","HasSubGrids","SortDescriptionColumn","_isGroupMode","SetRowColor","InitWrappedRows","ROW_COLOR","colorFields","_rowColor","IsSelectedChanged","SetVisibleButtons","isVisibleButton","ActionCell","RecordKindId","lockedCells","IsStartGroup","IsEndGroup","GetSortDescriptionRowTemplateName","isEditMode","RecordInBasket","recordInBasket","visible","GetDependsOnDataCells","dependsOn","UpdateDependsOnCells","dependsOnId","cellsToUpdate","LeftTableId","RightTableId","subGridData","enableSubGridBasket","RowId","GoToRecordScreen","GetMainRecord","SubQueryGuid","mainRecordId","mainEntityId","GetEntityByGuid","alias","Barcode","maxWrapped","GridRowModel","wrappedCell","emptyCell","GridCellValueModel","nestedData","GetLinkEditorFieldData","SaveLinkEditorData","cellByFieldId","_linkEditorData","LinkEditorChanges","linkEditorChange","FieldValues","nestedGrid","GetGroupedDataTooltip","OnHyperlinkClick","isOpenAgenda","ShowGroupDetail","ExecuteHyperlinkTrigger","GetGroupDetail","HTMLElement","groupDetailsDropdown","GetColumns","GetWrappedColumns","wrappedCells","wrapGroups","WrapGroup","GridGroupToggle","GetTableTypeFlowFolder","gridContainer","resizeObserver","$grip","helper","scrollSensitivity","unobserve","IsGridRow","__screen","GridAverageRow","filterAverageColumns","GroupColumn","FastFilterSearch","_searchValue","_inputType","_changeTimerId","FormatInputValue","_filterType","AddEventListenerChangeValue","parentEl","onkeyup","actualValue","arg","filterType","_element","FastFilter","getGridDataModel","_getGridDataModel","_isOpenFastFilter","_isFilterApplied","_isItemsLoaded","_preselectedRecords","_availableItems","_viewModelItem","_saveModel","_allFilters","_storedCheckboxes","_initialDataMapped","_existedColumnAliases","_search","SearchChangeCallback","_filterId","_originalViewModelItems","_regex","_isNewItemsLoaded","Preselect","columnFilters","GetGridColumnFilters","FieldAlias","TableViewId","isFilterApplied","existedAlias","ReopenFastFilter","isSearch","isEmptySearchValue","viewModelList","wasItemChecked","RestoreSelectedCheckbox","viewModelItem","preselected","MapToSaveModel","StoreSelectedCheckboxes","listFromStore","storedItem","viewItem","valuesList","IsItemsLoaded","ShowSearchScreenButton","FilterModel","_Clear","Filter","_Filter","LoadFastFilterData","dropDownElement","removeBlockUi","visibleBeginningSpinner","CursorWait","GetFastFilterData","GetRequestParams","DataLoadCallback","CheckPositionScroll","fastFilterList","RangeHighlight","SortItems","FilterColumnGuid","FilterSearchPhrase","TimeZone","getTimezoneOffset","SelectedTags","RecordOwners","FastFilters","itemsList","isNumericSort","Childs","valueA","valueB","existedItemIndex","existedItem","GetPopUpTemplate","OpenFilter","listArr","firstChild","nodeValue","createRange","rng","setStart","setEnd","highlightDiv","boxShadow","surroundContents","recordsCount","isScroll","lastPages","counterPage","targetScroll","addCursor","DecimalFilter","GetIconFromModel","IntegerFilter","TextFilter","DateFilter","_jsTreeModel","_jsTreeSaveModel","MapToJstreeModel","IdentifyChecked","preselectedList","currentItem","viewChild","opened","jstreeOptions","checkbox","keep_selected_style","three_state","dots","check_callback","$jsTreeElement","_jsTree","newtree","get_json","mapNodes","nodesList","mappedNode","GetFastFilterDateData","SortYears","Dates","FilterItems","LookupFilter","YesnoFilter","TimespanFilter","GetFastFilterTimeData","TimeFilter","originalItems","DateTimeFilter","OriginValue","originValue","GetFastFilterDateTimeData","_isClustered","_fastFilter","InitFastFilter","CreateFastFilter","fastFilterParams","IsEnableFastFilter","SortModel","OrderColumnGuid","GridTotalRow","FieldDataModel","GridRowDataModel","UpdateLifestatusModel","_leftRecordName","_rightRecordName","_leftEntityIcon","_rightEntityIcon","_relationType","pivotDetails","LeftRecordName","RightRecordName","LeftEntityIcon","RightEntityIcon","showButtons","selectOnRowClick","OnSortColumns","_sorting","GetQueryData","OnUpdateGrid","subGrid","parentRowId","_updateFromFastFilters","contextGrid","OnPaginationChange","loadData","_showButtons","_selectOnRowClick","Toolbar","ExportData","SEARCH_BY_PHRASE","SearchByPhrase","gridOptions","otherGridPageLines","IsExportDataAllowed","OnHyperLink","ShowAddQueryResult","getGridDataRequestModel","multiSelect","fastFilters","SetGridColumnFilters","preselectedFilters","preselectedFilter","searchPhrase","exportParams","ShowRetired","GoToScreen","linkInfo","DEFAULT_RECORDS_PER_PAGE","READONLY","HIDE_LIFESTATUS_TOGGLE","HIDE_UNLINK","HIDE_EDIT","ENABLE_BASKET","ENABLE_LINK","ENABLE_UNLINK_MULTIPLE","ENABLE_LINK_PARENT","ENABLE_NEW_LINK","ENABLE_ADD_AND_LINK","ENABLE_SCAN_AND_LINK","ENABLE_ADD_QUERY","BACK_LINKING","SECURITY_FILTER","QUERY_CONDITION","MAX_ROW_HEIGHT","SHOW_TABLE_VIEW","BULK_EDIT","LINKING_CONDITION","CARD_SCREEN","POSITION","SECURITY_FILTERS","SHARING_SECURITY","RECORD_SECURITY","LinkRecordsStore","LinkWithRecords","GetLastLinkedRecordEditScreen","GetLastSubRecordSpecs","CopyLastSubRecord","CopySubRecord","GetLookupOptions","SaveSelection","LookupOptionDto","ErrorSummary","LookupField","LookupFieldTable","Mappings","MapToLookupOptions","MapToLookupField","MapToLookupOption","LinkTable","MapToLookupFieldTable","LeftTable","RightTable","FillLookupPopup","RequestOptions","LookupFieldId","GetBackLinkOptions","GetSelectedOptions","selectedOptions","OptionsGroup","MapToOptionsGroup","MapToLinkTable","MapToTable","MaptToOption","MultipleSelection","SelectedOptions","MakeBackLinkPopup","BackLinking","ShowFillLookupPopup","ShowMakeBackLinkPopup","_hasLinkingCondition","_isTableViewUpdating","_designFields","_tableView","_addingRecordAllowed","_linkingRecordAllowed","_scanAndLinkAllowed","_enableLink","_enableUnlinkMultiple","_enableLinkParent","_enableAddAndLink","_enableAddFromQuery","_enableScanAndLink","_showTableViewElement","_showSearchInput","_enableNewRecord","_showBulkEditButton","_disabledShowAllColumnsBtn","_disableBulkEditButton","_showResetFilterButton","_filterByOwners","_applyFilter","_showTogglePrioritiesButton","_showRetiredRecords","_userVarsManager","_disabledCopyButton","_refreshScreenAfterManipulations","_isFastFilter","_viewMode","GetTableView","_enableTableViewLookup","_enableFunctionLookup","GridDataModel","_queryBuilder","_viewGridList","GetToolbarControls","_baseGrid","defaultColumns","GridColumnModel","LinkSubGridRecord","LinkSubGridParentRecord","recordSpecs","OnAddAndSubGridLinkRecord","ScanAndLinkSubGridRecord","SortData","UpdateSubGridLinkRecord","UpdateLinkRecord","LinkWithNextRelationType","newKSeq","updateLinkRecordPromise","MainRecordTypeId","gridCellValue","kSeqMetadata","oldKSeqValue","_basket","basketControl","RelatedRecordTypeId","UpdateLinkRecordGeneral","SetEnabledAddButton","IsVisibleAddButton","SetEnableEditAllButton","IsVisibleEditAllButton","IsEditAll","backLinking","InitShowAllColumns","NEW_TABLE_VIEW","BulkEdit","TOGGLE_RETIRED","EDIT_TABLE_VIEW","COPY_TABLE_VIEW","DELETE_TABLE_VIEW","LOCK_TABLE_VIEW","LockTableView","UNLOCK_TABLE_VIEW","UnlockTableView","LinkParentRecord","COPY_LATEST_RECORD","isEntityGrid","CopyLatestLink","CopyLatestSubRecord","OnAddAndLinkRecord","ScanAndLinkRecord","AddQuery","TOGGLE_PRIORITIES","RESET_FILTER","ResetFilter","REFRESH_GRID","groupIds","userIds","combinedIds","ListView","OnClusteredPivotFinishedTrigger","oldKSeq","ToggleAllShownColums","isNew","isNewCreated","requestedFromEditScreen","updateDataModel","UpdateDataModel","editLinkData","GetNotifier","parentEntityId","familyType","relatedRecordTypeId","sorting","showAllColumnsValue","linkingConditionProperty","linkingCondition","securityFilter","securityFilterPropValue","HasCardScreen","isEnableNewRecord","SetPropertyEnabled","IsAbleBulkEdit","UpdateTableViewList","BlockToolbar","GetGridViewList","tableViewList","lockedTableView","GetGridView","SELECT_TABLE_VIEW","SetTableViewList","SetGridView","UnBlockToolbar","InitRecordPerPage","_subjectEntityName","_selectedTags","GetRecordPerPageGlobalName","recordsPerPageGlobalName","CONSULT_GRID_PAGE_LINES","LIST_GRID_PAGE_LINES","SelectTableView","ResetGridFilters","GetDataMode","CheckingFilters","userVarsFastFilter","thisUserVarsViewFastFilters","fastFilter","defaultTableViewId","windowScrollPosition","_isRestoreScrollPosition","_isLinkEditorEnabled","_isDirectionCorrect","IsDirectionCorrect","InitToolbar","GetGridEntityId","even","LoadBasket","_tableViewUpdatingSubscription","ShowSearchInput","ShowRetiredButton","ShowControls","ShowTogglePrioritiesButton","HasFastFilter","gridSubject","gridSubjectEntityMetadata","CardScreenId","_toolbarBlock","ListenForWrapperResize","GetDefaultTableViewMetaData","SetIsQueryBuilderScreen","SetSubjectRecordId","SetGridId","LockQueryStore","EnableBulkScan","isBulkBarcodeScanning","SelectFromLinkSubGridRecord","linkedEntityId","linkedRecordId","linkedRecordTypeId","onRecordSelect","OpenBarcodeScannerForBulkScan","SelectFromLinkSubGridRecords","linkedRecordIds","sequence","UpdateLinkRecordById","LinkedRecordIds","gridSubjectRow","IsParentLinking","childEntityId","childRecordId","childRecordTypeId","parentRecordTypeId","seq","mainRecordTypeId","mainRecordStatusId","selfRelation","AddAndSubGidLinkRecord","barcodeScanner","SearchByBarcode","LinkForEditScreen","updateLinkRecord","isLinkParent","GridSubjectRecordIds","mainRecordKindId","relatedRecordKindId","loadScreenRelationModel","MainRecordKindId","SelectFromLinkRecord","deletedRows","deletedRow","CopyEntityRowRecord","CopyLinkedRecord","RightRecordTypeId","RightRecordKindId","IsCorrectDirection","CopySubEntityRowRecord","RecreateLatestSubRecord","CopyLatestSubRecordRow","rowToDuplicate","rowRecordId","rowRecordTypeId","rowRecordKindId","showTypeSelector","profileSelectorScreen","ProfileSelectorScreen","ShowIfNeeded","IsAddQueryButton","QuerySubjectId","ShowQueryResultScreen","SetSubjectRecord","SetPageNumber","DesignFields","relatedSubEntityId","SubTableId","SequenceId","SaveImmediately","LinkSubGridCreatedRecord","linkRecordSpecs","subjectAlreadyLinked","linkListControl","AfterSelectRecord","LinkCreatedRecord","actionGlobal","ACTION_TABLE","actionSubjectRecord","isSubjectChild","addAndLinkRecordModel","InsertOrUpdateRecordModel","LinkRecordModel","FilterByTags","selectedTags","FormatControlName","FormatFieldName","gridContainerWrapper","ShouldShowBottomPagination","EntityMetadataModel","extractLookupValFieldMetadata","LookupTable","lookupTableField","FieldMetadataModel","RecordKey","CurrencyModel","CurrencyValueModel","ConvertedCurrencyModel","DocumentValueModel","SpimValueModel","GridTotalCellValueModel","GridTotalRowModel","GridCountCellValueModel","GridCountRowModel","GridAverageCellValueModel","GridAverageRowModel","GetRecordModelIds","RelatedEntityMetadataModel","RelatedSubEntityMetadataModel","EntityRelationshipsMetadataModel","RelatedEntitiesMetadata","RelatedSubEntitiesMetadata","ReferenceEntities","TablesRelatedToLookup","CanvasPositionModel","Top","Left","CanvasSizeModel","GenericButtonConfigModel","CrossValueSettingsModel","QueryColumnModel","QueryConditionGroupModel","Operator","QueryConditionItemModel","OnSerialized","ValueType","SubQuery","queryExpressionType","QueryEntityJoinModel","CanvasPosition","CanvasSize","JoinType","LeftJoin","UseMain","NotUseMain","LinkDirection","LeftToRight","QueryEntityModel","IsIterator","Sorts","QuerySortModel","LockedTableView","PivotDetailModel","GroupDetailModel","defered","ViewGridResponseModel","GetLinkEditorGridViewList","_showTableViewLookup","_showLinkButton","_showUnlinkMultipleRecordsButton","_showLinkParentButton","_showAddAndLinkButton","_showScanAndLinkButton","_showAddQueryButton","_activeScreen","isGridPrioritiesEnabled","showTogglePrioritiesButton","showBulkEditButton","disableBulkEditButton","showResetFilterButton","disabledShowAllColumnsBtn","showRetiredButton","_enableEditTableView","_enableDeleteTableView","_gridSubjectEntityMetadata","_showAddButton","_showEditAllButton","_recordsInBasket","_isPortlet","_isSpecialScreen","_isDashboardScreen","_showRetired","_showRetiredButton","_editAll","_showControls","_isMultipleUnlinkButtonVisible","CreateNewMessage","AddAndLinkMessage","LinkMessage","gridSubjectEntityNameTranslation","gridSubjectEntityName","SetDefaultTableView","selectedTableView","enableAddButton","enableEditAllButton","CopyLatestRecord","ToggleRetired","ToggleEditAll","IsVisibleCopyButton","HistoryLogsStore","GetHistory","HasHistory","HistoryContent","HistoryLogs","_historyLogs","_historyThs","GetHistoryValues","newHistoryArgument","ChangeDate","FormatDateTimezone","NewValue","pick","_hasHistory","CheckHistory","GetHistoryData","GetContentTemplateName","_historyLogsData","isInTab","_imageCropperScreen","_isImageGallery","_imageHeight","_hidden","_cropedImageClass","_maxUploadingFilesSize","_maxCombinedSize","_annotationsEnabled","_disableCropping","IsImageFile","DisableCropping","ApplyAnnotationsProperty","ApplyShowAnnotationProperty","ImageHeight","HideIfEmpty","hideIfEmpty","annotationsEnabled","showAnnotationsEnabled","GetImageClass","LoadGalleryData","PrepareForGallery","LoadSingleImageData","PrepareForSingleImage","InitEditGalleryViewer","MaxCombinedSize","MaxUploadingFilesSize","UploadSingleImageCrop","UploadSingleImageNotCrop","AfterUploadInGallery","AfterUploadSingleImage","_editGalleryContainer","_editGalleryViewer","AttachModalComponent","isPortrait","_aspectRatio","_windowWidth","_cropedImage","AfterCrop","_video","_cansavStatus","_showStream","GetCameraStream","stream","_stream","InitPhotoPreview","constraints","ideal","getUserMedia","TakePhoto","StopStream","BackToStream","getTracks","base64Image","CloseComponentInModal","FileModel","DeserializeAttachment","SaveCropedImage","KanbanParentTypeModel","EntityTypeModel","HasFlowFolder","ParentTypeModels","TagModel","MainLink","PriorityModel","CardThumbnailModel","ParentOrChildRecordModel","ActionModel","HighlightedAction","Tags","IsDisabledCard","NewActiveTimer","NewActiveTimerModel","ReplaceActionMemoText","ActionMemo","TimerModel","RecordModel","AriaExpanded","ToggleAccordion","ReplaceMemoText","ActionItemModel","StepModel","ActionItems","ThumbnailModel","LinkModel","StatusModel","KanbanViewModel","ViewListResponseModel","KanbanStore","GetViewList","GetDefaultKanbanViewMetaData","UpdateActionStatus","UpdatePriority","KanbanTypeViewModel","K_Type","ShowTypeHierarchy","typeNameTranslation","parentTypeModel","KanbanStep","_links","ClearRecords","HasNextStatus","currentStatus","IdStepFrom","GetTestTemplate","MainLinks","enhanceUserWithAvatar","avatarThumbnails","Usergroup","ContactId","thumbnailImage","DebouncedUpdatePriority","tags","priorities","parentOrChildRecords","warnings","withGreyBackground","withDateBadges","colorBar","onPriorityUpdateError","onMailClick","progressBar","retiredTodoActionsNumber","totalTodoActionsNumber","isCalculatedViaCalcPriority","heightImage","alwaysShowDeadline","hideOwner","isDesign","isTodo","showTooltip","showAlias","timerControl","activeTimer","newActiveTimer","actionRecord","_tags","_priority","_avatarThumbnails","_priorities","_thumbnail","_parentOrChildRecords","_warnings","_withGreyBackground","_withDateBadges","_colorBar","_onPriorityUpdateError","_onMailClick","_progressBar","_isDesign","_isTodo","_retiredTodoActionsNumber","_totalTodoActionsNumber","_alwaysShowDeadline","_hideOwner","_readOnly","_isCalculatedViaCalcPriority","_heightImage","_viewerImages","_showTooltip","_showAlias","_activeTimer","_actionRecord","thumbnailFileModel","_areAvatarsWrapped","IsOwner","performers","allUsers","_allUsersTooltip","_owner","_performers","_priorityColor","_priorityName","GetActiveTimer","SetTimerControlData","IsParentOrChildRecords","IsTagContainer","IsPriority","IsTags","AllUsersTooltip","GetUserNameTooltip","GetParentOrChildRecordTemplate","GetParentOrChildRecordName","nameTranslation","GetParentOrChildRecordTypeName","IsChild","IsParent","MouseOver","typeText","recordModel","currentEl","recordName","isTypeName","typeNameTooltipOptions","nameTooltipOptions","MouseOut","OpenRecord","GetNameTemplate","GetAliasTemplate","GetInfoTemplate","GetTimerInCardTemplate","GetHeightImage","elementWidth","trunc","propertyHeight","originalCardWidth","CalculateProgressBar","calculateProgressBar","ProgressBar","OnPriorityClick","currentPriority","priorityIndex","OnAvatarsClick","PriorityId","GetActionDate","ActionDate","GetActionDateFormatted","GetActionDeadline","ActionDeadline","GetActionDeadlineFormatted","IsActionDateShown","actionDate","actionDeadline","UseBadgeTemplate","isActionDateShown","HasTimer","_timerControl","KanbanMode","TimerEntityId","TimerRecordId","ActionRecord","CurrentDuration","SetKanbanActiveTimer","GetTagFullNameTooltipContent","val1","val2","val3","GetKanbanCardTemplateName","createViewModel","componentInfo","CLASSES","RepositionDefaultKanbanHeaderOnScroll","_elObservable","allTitleElement","titleElementHeight","positionKanbanBoardRoot","_selectedTypeObservable","selectedTypeObservable","generalProperties","_searchString","searchString","showPlanned","_showTypeError","showTypeError","_titleFieldId","titleFieldId","_kanbanSubjectId","kanbanSubjectId","_kanbanSubjectName","kanbanSubjectName","_viewId","_isTodoToggleShown","isTodoToggleShown","_originSteps","_steps","_dragulaState","_withMemo","Css","_calculateHeightContainerStyle","SetContainerHeight","kanbanBoardDrake","accepts","moves","Actions","actions","Steps","ActionRecordId","ActionTypeName","ActionTypeId","containers","ListenForStatusesLoad","_selectedTypeSubscription","LoadStatuses","_selectedUsersSubscription","_showPlannedSubscription","_viewIdSubscription","_showTypeErrorSubscription","ShowTypeError","SubjectEntityName","FilterByTypeHierarchy","UseSubjectEntity","UseKanbanSubject","FilterByEntityId","FilterByRecordId","WithTags","WithSubjectImage","WithPriorities","WithCalculatedPriority","IsCalculatedViaCalcPriority","WithMails","WithColor","IsToDo","WithMemo","WithToDoProgressBar","HasTodoType","Thumbnails","Priorities","HeaderHeightResize","steps","isActionTypeAction","IdStepTo","kanbanStep","TopHeight","AfterRenderSteps","SetContainerStyle","isFullscreen","pageHeaderHeight","kanbanBoardRootHeight","toolbarHeight","defaultKanbanHtml","Collapsing","GetActionItemsTemplate","TodoActionItemsTemplate","$_data","ShowCheckListKanban","nextLifeStatus","NextLifeStatuses","CheckListKanban","kanbanRecordModel","TryToApproveLifeStatus","CancelUpdateProcess","AproveLifeStatus","AfterDropCase","sourceIndex","sourceItems","sourceContext","targetIndex","targetItems","targetContext","isActionItems","sourceMultipleActions","oneAction","ActionsEntityId","ActionEntityId","lifeStatusesModel","aprovalRelatedData","stepId","checkItemsValue","NewStatusId","PreviousLifeStatusId","GetConsultScreenType","GetEditScreenType","GetScreenTypeFromProperty","screenTypeName","OpenConsultScreen","OpenScreen","OpenEditScreen","OpenActionRecordScreen","followUpRecord","activeCard","openMailTab","IsTypeTransformationRequired","RemoveFromRecent","OpenMailTab","followUpControl","GetControlByType","currentLifestatus","EditScreenInFollowUpMode","SearchRecordsBySearchTerm","RecordMatchesByCard","RecordMatchesByAction","RecordMatchesByLink","filterDelegate","newSteps","newStep","ActionName","SelectAction","card","newRecordSettings","actionEntityId","tabPage","MailEntityId","SetActiveTabPage","UseFilterByEntityRecord","OnPriorityUpdateError","OnMailClick","GetRootDefaultTemplateName","RepositionToDoKanbanHeaderOnScroll","titleElement","toDoKanbanContainer","paddingTop","_noTypesLoaded","noTypesLoaded","_todoEntityId","todoEntityId","_todoTypeId","todoTypeId","_todoFieldId","todoFieldId","_loadStatuses","loadStatuses","IsTodoEnabled","IsTypeHierarchyCorrect","_isCreationAllowed","_draggingFrom","_recordsWithTodoActions","searchStringValue","isKanbanBoardExpanded","GetKanbanBoardAccordionGroup","SetKanbanBoardAccordionGroup","recordsWithActions","recordWithAction","LifestatusName","filteredActions","groupedActions","ActionLifestatusId","_isTypeHierarchyCorrect","_isNewButtonEnabled","GetBackgroundColor","GetToDoKanbanGroupWidth","_noTypesLoadedSubscription","isTypeSelected","isViewSelected","LoadStatusesForAllRecords","WithTimers","TodoModel","LoadUserAllowanceToCreate","LoadStatusesForRecord","IsViewForAction","newRecord","oldStatus","changedRecordIndex","actionsEntityId","isCreationAllowed","AfterDrop","ApproveLifeStatus","lifestatus","newStatusId","todoKanbanHtml","Accepts","targetData","sourceData","Moves","IsCardInvalid","OnDrag","OnDragEnd","onlyEditScreen","IsDraggingCssClassApplied","isForAllow","draggingFrom","isAllowed","GO_TO_CONSULT_SCREEN","_TodoKanban","ParentOrChildRecord","AfterRenderSubject","GetRootToDoTemplateName","_designCardSecondaryInfoTemplate","_kanbanViews","_isKanbanViewsShown","_isTypesShown","_isFullScreen","_fullScreenTooltip","InitForDesignMode","IsRuntimeMode","InitForRuntimeMode","kanbanSteps","stepName","stepModel","_isTodoSelected","GetKanbanTodoSelected","isTodoSelected","LoadTypes","SetKanbanTodoSelected","_chosenKanbanView","chosenKanbanView","SetKanbanView","notify","uniqueIds","ScreenSubjectTypeId","MapToKanbanTypeViewModels","GetSelectedType","LoadViewList","withBlockUI","QueryRootEntityId","kanbanViews","KanbanViews","kanbanViewId","GetKanbanView","kanbanView","LoadKanbanSubjectInfo","KanbanSubjectId","kanbanTypeViewModel","SetKanbanLastType","TodoEntityId","ClearSearch","ChangeFullScreen","NewKanbanView","KanbanQuery","EditKanbanView","CopyKanbanView","DeleteKanbanView","models","MapToKanbanTypeViewModel","onRender","lastType","GetKanbanLastType","screenEntityType","screenEntityTypeIsOnKanban","AutolinkModel","AutoLinkedRecordModel","entityRecordId","LinkType","InstancingMaximum","RelationRecord","IsRecordOwner","EntityRelations","AutoLinks","AutoLinkedRecords","LinkTypes","LinkListRelationsModel","LinkListRelationsStore","RelationRecordViewModel","Shared","SharingReady","PlannerTooltip","EntityRelationsViewModel","EntityTranslatedName","TableIcon","TableIconType","HasRecords","HasFields","HasSequence","NoFieldsMessage","_isValidEntity","UserEntityRelationsViewModel","singleMode","SingleMode","RecordOwner","SharedUsers","LinkListRelationsViewModel","userRelation","userRelationViewModel","GetUsersNormalModeTemplate","GetUsersSingleModeTemplate","NewRelationStore","GetNewRelation","DeserializeArray","GetNewAutolinkRelation","RELATION_TYPE_VALUE_FIELD","_isAuoProperties","_serverDataModel","_linkTypes","_openNumbers","_licenseName","_actionGlobal","IsAuoProperties","propertyAuto","propertyModel","LinkListAutoProperty","subjectLifeStatusId","GetSubjectLifeStatusId","LoadDataInDefaultMode","SetInitialLinkTypesState","stringified","_linkTypesInstancesLeft","UpdateLinkTypesState","valueToUpdateWith","selectedEntity","selectedLinkType","linkType","GetLinkTypesState","relatedRecord","saveButton","ApplyData","_updateDataModel","checkOneParent","SubjectLifeStatusId","WithoutRelations","CheckOneParent","FireDataChangeEvent","GetPrimaryKeyField","attached","primaryKey","PrimaryKeyName","AddNewRelation","ChangeRelation","AddRecordOwner","licenseName","GetDesignIcon","entityIcon","GetDisplayedName","GetIconByEntityId","fieldByEntity","openLinkEditor","isRecordFirst","ChangeUserLevel","AutoLink","HasCustomFields","linkEditorChanges","FindLink","existingValue","GetRelations","searchByRelations","firstSearchByMainRelations","firstSearchByRelations","Sharing","SearchByRelations","SearchByMainRelationType","ByMainRelations","LinkSelectedRecord","GetFilterByRelationType","SetFilterByRelationType","ByRelations","isLinkingAllowed","differenceIds","RelatedRecordIds","sharedUsers","MakeSharingReady","autoLinks","entityToEntity","currentEntityFromList","NewRelationRequestItem","AddRelatedRecord","ChangeMainCompany","sourceEntityId","destinationEntity","relationRecord","entityRelations","needFindOldId","oldRecord","oldId","companiesModel","mainCompany","isMainCompanySet","isMainCompanyLicense","nonLicenseCompanies","firstNonLicenseCompany","UnLinkRecord","displayDialog","UnLink","UnLinkUser","anyUserExist","leftRelations","anyUserLeft","recordOwner","ToggleSharing","NavigateByLink","OpenUserAssignment","userEntityRelations","CollapsingLinks","IsOpen","linkRequiredFields","linkRequiredEntitiesIds","errorEntities","ValidateExpandSubForm","UpdateRecordOwner","recordOwnerLevel","newRecordOwner","newRecordOwnerRelation","relations","securityLevel","exampleOwner","currentUserRelation","userRelations","userLink","RemoveRelatedRecord","GetRecordData","linkTypes","isUnlinkedRelationNew","subjecRecordId","subjectTypeId","subjectKindId","changedData","RelationEntityName","relationTypeField","LinkEditorStore","FRelationFieldModel","GetLinkTypes","GetRelationTypesData","relationTypes","relationTypeFieldData","selectedRecordValue","requiredRelationType","DeleteRelation","firstRecord","CheckRelationTypeInstancing","existsChanges","editRelationData","targetedEntity","ClickLinkRequired","LinkFieldId","IsNewLink","DeletedRelationModel","relationshipType","ChangeRelationModel","newId","OldId","NewId","ChangeSecurityModel","EditLinkDataModel","relationGuid","ChangedRelations","ChangedSecurity","changedRelation","changedLevelRecord","newMainLink","previousMainLink","previousMainLinkIndex","existingLink","changedSecurity","MailAddressModel","email","AddEmailAddress","EMAIL_SAVED","AddMailAddress","EmailAddress","ScreenshotAttachmentModel","ComposeMailTemplate","_responseMailItem","_isCcVisible","_isBccVisible","_sendScreenShot","SendScreenShot","_screenshots","_subjectTypeId","_newBody","_newSubject","_newReciver","_newCc","_newBcc","_recipients","_ccRecepients","_bccRecepients","_documentsEntityNameTranslation","_isInModal","_datetimeCreated","_showAddFromDocuments","_isEnableAttachment","_isEnableRemoveAttachment","CurrentActionText","_currentAction","AddMailTo","firstName","mailTo","Discard","ComposeBody","FillInitialDataReply","FillInitialDataReplyAll","FillInitialDataForward","_mailInfo","FromName","newBodyWithSignature","fromAddress","DeleteDuplicatedRecipients","ShowHideCc","ShowHideBcc","RemoveAttachment","SendReplyMail","SendReplyAllMail","SendMail","GetSelect2Settings","isRequestInProgress","ajax","SearchPart","term","failure","$request","processResults","pagination","more","total_count","escapeMarkup","minimumInputLength","initialData","GenerateInitialData","initSelection","templateResult","Select2FormatData","templateSelection","Select2FormatDataSelection","validate","validateEmail","validateType","selectOnClose","preselctedRecipients","initialDataId","GetRecipients","RecipientType","ParentContext","RecipientName","Email","AddEmail","recipientName","addEmail","AddScreenShot","newScreenshot","Screenshots","ccList","SerializeCc","bccList","SerializeBcc","SerializeRecepients","attachmentsRequest","sendMailRequestModel","SerializeBody","MessageId","AttachmentsRequest","CcList","BccList","recipientsFilteredData","recipientData","ccRecepient","bccRecepient","SearchAttachments","documentsEntityId","firstSearchByLinkedDocuments","ShowSearchByLinkedDocuments","OnDocumentSelected","OnDocumentsSelected","ByLinkedDocuments","getRecordsPromises","COMPOSER_EVENTS","ADD_EMAIL_EVENTS","MAIL_LIST_EVENTS","MailRelatedUserData","UnknownMail","MailRelatedItem","MailRelatedTableData","UnknownMails","MailItemExtendedModel","MailItemModel","GetMailsResponseModel","LinkFromMailBody","GetDestinationMails","GetMailRelatedData","SaveMailToCyberBox","DownloadAttachments","GetLink","CustomColumnValueModel","TimeCellModel","IsCopyTo","IsCopyFrom","PlannerLevelRowModel","TimeLine","CustomValues","RowHeight","IsBlocked","PlannerLevelStore","GetPlannerLevelData","CreateOrUpdatePlan","UnlinkQueryRecord","CreateOrUpdatePlans","GetHigherResolutionPlan","QueryButtons","barModel","Button1Icon","_query1Icon","Button2Icon","_query2Icon","RunQuery1","RunQuery2","RightBarCell","hideQueryButtons","_barModel","_hideQueryButtons","_query1RecordName","Button1RecordName","_query2RecordName","Button2RecordName","_dropdownShown","_editorWidth","_editorHeight","_cellClasses","TemplateName","TimeValue","CellModel","CellElement","ShowQueryButtons","Button1RecordId","Button2RecordId","SetCopyToValue","button1TableId","button1RecordId","button2TableId","button2RecordId","overwrite","copyQueryButton1","copyQueryButton2","Button1TableId","Button2TableId","IsHightResolutionPlanning","_isHightResolutionPlanning","SelectCell","ShowQueryButtonsModal","CopyCellMode","queryButtonsDropdown","StartEdit","KeyDown","positionInfo","CellColor","TimeAxis","formatManager","Button1Query","LinkRecordFromQuery","Button2Query","BuildButton1ContextMenu","ButtonRecordId","ButtonTableId","BuildButton2ContextMenu","BuildButtonContextMenu","HideQueryButtons","_cells","_barClasses","timeCell","RowModel","_copyCellMode","IsCopyToCellSelected","SelectCopyToCell","SelectCopyFromCell","CopyFromCellIndex","copyFromCell","UnSelectCopyFromCells","UnSelectCopyToCell","UnSelectCopyToCells","BarId","UpdateCells","cellModels","cellModel","cellToUpdate","RowColor","CopyCell","copyFromIndex","hasData","HasAnyData","higherResolutionPlanning","parentPlan","barName","_higherResolutionsPlanning","_parentPlan","_barName","HasAnyPlanning","CalculatePlanning","timeLine","firstDate","FormatTitle","startWeekDate","endWeekDate","year","_dataRows","_parentBarId","_parentRecordId","_parentBarSubjectId","_weekNumber","_subjectEntityIcon","_leftBarIcon","_leftBarTitle","_rightBarIcon","_rightBarTitle","_subjectTitle","_linkUnderlyingTooltip","_addAndLinkUnderlyingTooltip","_parentRecords","_divideRowColSpan","_showDivideRow","_customColumnHeaders","_showControlName","_timeRows","timeRow","SetParentRecords","parentRecords","ShowDivideRow","enableLinkProperty","enableAddAndLinkProperty","HasNexLevel","InitIcons","GetNexLevelSubjectEntityName","GetLeftBarTemplateName","GetRightBarTemplateName","subjectField","leftBarField","rightBarField","IsRootLevel","SetParentBarId","parentBarId","parentBarSubjectId","SetLevel","SetParentRecordId","SetViewType","viewType","_viewType","SetProjectManager","_managerId","currentLangItem","SetWeekNumber","weekNumber","SetStartDate","SetCustomColumnHeaders","expandAll","ParentRecords","ParentBarId","ManagerId","PopulateData","fieldFormat","Button1TableName","buttonTableName","_button1TableName","Button2TableName","_button2TableName","timeRows","dataRow","customValues","rightBarRow","MouseCellOver","MouseCellOut","UnselectParentCells","UpdatePlan","SetCopyCellMode","ShowHigherResolutionPlanning","GetDefaultExpandedState","CancelCopyToSelection","WeekOfMonth","BarName","FormatPlanValue","HigherResolutionPlans","Plan","parentControl","controlDataRows","dataRowToUpdate","existsCustomValue","buttonTableId","buttonRecordId","cellElement","UnlinkButtonRecordId","UnlinkButtonTableId","ResetDefaultExpandedState","GetUserVars","ExpandedBarIds","SetUserVars","SetDefaultExpandedState","expanded","barId","GetPlannerLevelParams","SetPlannerLevelParams","plannerLevelRow","planerLevelControls","planerLevelControl","childPlannerLevel","currentLevelSubject","plannerLevelSubject","profileType","allowedTypes","plannerLevelEntityId","plannerLevelRecordId","PlannerLevelEntityId","PlannerLevelRecordId","CreateLink","nextPlannerLevel","subjectEntityField","MouseRowOver","MouseRowOut","ActivateParentColumn","DeactivateParentColumn","ActivateColumn","DeactivateColumn","exceptCell","UnselectCells","MoveRight","MoveLeft","MoveUp","MoveDown","nextRowElement","nextRow","previousRowElement","previousRow","previousCellElement","previousCell","nextCellElement","nextCell","treeRecords","HasPagination","UnSelectCopyFromCell","CopyColumn","HasAnyQueryButton","copyFromCellIndex","CustomColumnHeaderModel","ProjectManagerModel","TimeLineColumnModel","PlannerPageModel","PlannerLevels","CustomColumns","TimeLineColumns","ProjectManagers","PlannerPageStore","_textEntity1","Entity1","_textEntity2","Entity2","_textEntity1AndEntity2","OnEntity1Click","OnEntity2Click","OnEntity1AndEntity2Click","PLANNER_TYPES","_weekPlanning","GetDefaultIsWeekPlanning","_plannerLevels","GetDefaultStartDate","_weeks","_selectedWeek","GetDefaultPeriod","_initialState","_monthHeaders","_dayHeaders","_weekHeaders","_managers","_manager","_copyColumnMode","_copyFromColumnIndex","_viewTypes","_timeRangeLabel","_selectedView","GetDefaultViewType","_renderViewMode","_weekPlanningToggleClass","SetDefaultViewType","SetDefaultIsWeekPlanning","SetDefaultPerion","parentProperties","_showManagerFilter","ResetSubControlState","SetDefaultStartDate","IsWeekPlannnig","SetDefaultProjectManagerId","projectManagerId","ProjectManagerId","GetDefaultProjectManagerId","viewTypeValue","GetPlannerPageParams","SetPlannerPageParams","ToggleWeekPlanning","NextYear","PreviousYear","MonthHeaders","DayHeaders","WeekHeaders","CustomColumnHeaders","SetHeader","BuildMonthHeader","BuildDayHeader","BuildWeekHeader","byWeek","timeValue","Weeks","byYear","Year","Months","firstDayOfWeek","StartDay","DayName","DayNum","IsWeekend","allDays","activeDay","allMonths","activeMonth","SelectDate","_selectedDate","IsFilterBySubject","CancelCopy","managerId","freezeTable","planerLevels","BuildColumnContextMenu","plannerPage","GetColumnIndex","SelectCopyFromColumn","allItems","SelectColumn","UnSelectCopyFromColumn","GetButton1TableName","button1TableName","GetButton2TableName","ShowSelectCellSubjectConfirmation","button2TableName","copyQueryButtonConfirmationDialog","ShowOverwriteDataConfirmation","IsCopyToCellHasData","CopyData","RightBarTableClick","CalculateIndex","_currentPlannerPage","_currentTabIndex","_blockElements","_selection","_plannerHtmlTable","_cellSelection","inputElement","regex","BlockSelection","UnblockSelection","plannerTabsParams","GetPlannerTabsParams","activityStorage","plannerTabsActivityStorage","SetPlannerTabsParams","activeTab","GetPreselectTab","firstVisible","preSelectedPlannerTab","preselectedPlannerTabData","activePlannerTabPageCIDs","plannerTabToSelect","activePlannerTabPageCID","parentControlId","currentPlannerPage","tabControlId","SetState","ActiveControlId","InitSplitter","wrappers","tabIndex","leftView","rightView","elementStyle","gutterSize","gutterStyle","PortletBarButton","buttonConfig","GetButtonTemplateFolder","GetPropsTemplateName","RemoveButtonViewModel","ButtonViewModel","buttonName","RemoveButton","OnClickEvent","SettingsButtonViewModel","PropsOpened","SettingsButton","SaveSettings","DefaultPortletProps","Props","_props","PortletColor","UsePortletBarColor","DataSpaceColor","Kind","Length","HeaderText","CollapseButton","ExpandButton","ReloadButton","UseBodySpace","_isInitialized","CollapseButtonViewModel","UpdateTooltip","ExpandButtonViewModel","ReloadButtonViewModel","ButtonsFactory","CreateButton","Buttons","RuntimeSettings","ExtendRuntimeSettings","ConfigProperties","GetConfigSettings","portletControlName","GetScreenTranslatedName","ApplyRuntimeSettings","runtimeSettings","PortletIcon","GetScreenIcon","GetButtonsFromConfig","settingsButton","GetButton","BindButtonClickEvent","IsSearchEnabled","GetPortletColor","GetDataSpaceColor","GetKind","IsButtonVisible","GetHeaderText","GetLengthFromConfig","buttonViewModels","buttonViewModel","PortletBarButtons","_subjectField","_queryField","_subjectGridField","_showInMenuField","_lockToGridField","_gridIdField","_showInPortletField","Datas","queryData","showInMenu","showInPortlet","showInMenuField","showInPortletField","NewQuery","queryTypeName","_oldQueryBuilderData","_newQueryBuilderData","GetSubjectEntityId","GetGridSubjectEntityId","GetShowInMenu","GetShowInPortlet","_gridId","newQueryBuilderData","GetQueryId","RecipeEditorStore","CreateRecipeVersion","SaveRecipeData","DeleteRecipeVersion","CopyRecipeVersion","GetRecipeDataByVersion","GetRecipeData","CheckIfRecipeIsCreated","RecipeRecordModel","TypeColor","RecipeResponseModel","RecipeViewModel","RootNode","RecipeNodeViewModel","OutlineColor","LockedTooltip","GetOutlineColor","GetTypeColor","GetNameTranslation","RecipeEditorTreeNodeViewModelMapping","typesProperty","RecipeEditorTreeViewModelMapping","RecipeEditorTreeUnit","_recipeEditorTreeId","_recipeVersionModel","_typesProperty","_selectedRecipeVersion","_recipeEditorTree","recipeVersions","RootEntityId","RecipeRecord","GetNewData","VersionId","recipeSelectedVersion","VersionName","recipeDataModel","RecipeVersions","PathRunnerShowChildren","PathRunnerHideChildren","selectedRecipeVersionModel","parsms","RecipeEditorTree","RecipeVersionDropdownTemplate","RecipeEditorEdit","_isAddingAllowed","IsAddingAllowed","_recipeDataModel","_recipeEditorCreate","_availableRecipeVersions","_newVersionActive","TypesProperty","GetRecipeDataModel","getRecipeDataParams","MapRecord","defaultRecipeVersion","InitToggleActiveVersionMod","RecipeDataModel","LoadRecipeEditorTree","AddVersion","recipeEditorCreateParams","IsRecipeCreated","IsCreateRecipeVersion","ICopyRecipeVersion","RecipeEditorCreate","SetActiveVersionType_On","CopyVersion","NewVersionName","CopiedVersionId","_toggleActiveVersionType","_toggleActiveVersionTypes","IsChosen","DeleteVersion","DeleteRecipeVersionParams","SetAvailableRecipeVersions","ClickSaveBtn","saveRecipeDataParams","ActiveVersionId","ReturnToDefaultType","ToggleActiveVersion","activeVersionType","_activeVersionToggleClass","OnSelectVersion","SelectVersion","GetRecipeDataByVersionParams","InitRecipeVersionDropdown","ShowAvailableRecipeVersions","getNewDataParams","ActiveVersionTooltipText","RecipeVersionActive","IsCopyingAllowed","IsSavingAllowed","_copyRecipeVersion","_isRecipeCreated","_recipeEditorEdit","_isCreateRecipeVersion","isRecipeCreated","CreateClick","copyRecipeParams","createRecipeParams","CancelClick","_isButtonEnabled","ResetSecurity","ProfileId","ShowSearch","ShowSearchHelp","SetSearchTerm","AlternativeEntities","_alternativeEntities","HasConditions","deffered","SpimCopyStore","spimClass","AssignClass","UpdateVersion","SPIMCopyControlModel","IsDefaultState","UpdateAvailable","EtimLabel","CurrentVersionNumber","SPIMCopy","_selectedClassId","LoadClass","EtimCode","CurentVersionNumber","NewVersionNumber","ClassFeaturesTableId","ProductFeaturesTableId","ClassId","SendUpdateVersionRequest","SpreadsheetFieldDescriptorDto","SpreadsheetCellPositionDto","SpreadsheetDimensionDescriptorDto","SpreadsheetDescriptorDto","Dimensions","SpreadsheetCellDataDto","PositionName","SpreadsheetPageDescriptorDto","SpreadsheetPageDataDto","CellsData","SpreadsheetDimensionDirections","SpreadsheetDataDto","Pages","SpreadsheetStore","GetSpreadsheetDescriptor","GetSpreadsheet","SpreadsheetSaveDto","NewPages","RemovedPages","Paged","SpreadsheetPageRemoveDto","PageField","SpreadsheetNewPageDto","ValueField","SpreadsheetRecordDto","SpreadsheetRecordFieldDto","SpreadsheetDescriptor","IsPaged","SpreadsheetFieldDescriptor","IsLookup","SpreadsheetDimensionDescriptor","Direction","StartPosition","SpreadsheetCellPosition","GetColumnNumber","GetNextColumnName","GetColumnNameByNumber","GetRowIndex","IsSameAs","Parse","columnName","mod","SpreadsheetPageDescriptor","PageDisplayName","SpreadsheetPageData","Descriptor","GetCell","GetDefaultPageId","GetDefaultPageName","Empty","spreadsheetDescriptor","pageDescriptor","SpreadsheetCellData","dimensionNumber","SpreadsheetViewMappingProfile","ToSpreadsheetDescriptor","descriptor","valueField","ToFieldDescriptor","pageField","ToCellPosition","dimensions","ToDimensionDescriptors","descriptors","ToDimensionDescriptor","startPosition","ToPagesData","pagesData","pageData","ToPageData","cellsData","ToCellsData","ToPageDescriptor","ToCellData","DimensionNumber","pageFieldDescriptor","defaultPageName","defaultPageDisplayName","SpreadsheetData","SpreadsheetCellRange","RangeName","ContainsCell","RenamePageState","selectedName","nameOptions","useSearch","UseSearch","NameOptions","SelectedName","RenamePagePopup","_pageField","currentName","currentDisplayName","_currentPageName","InitState","lookupData","SearchForPageName","SelectPageName","pageName","pageDisplayName","selectedPageName","GetLegendTemplate","AfterViewRender","AfterEditRender","_setValueWasRequested","_spreadsheetDescriptor","pagesWithoutDbId","_spreadsheet","getSheets","sheet","GetPageName","GetPageDisplayName","_isEditing","newPages","GetOriginPosition","GetEntityRecordId","GetCellsData","removedPages","_removedPages","pageNameDto","paged","_viewMappings","_styles","dimension1","dimension2","dimension3","dimension4","IsLegendReady","InitForView","InitForEdit","InitForDesign","_readonly","RenderSpreadsheet","_colsCount","_rowsCount","_originCellValue","multiSheets","colsCount","rowsCount","BindLookupPageContextMenuEvents","_sheets","pageDbId","newPageId","_dataStore","_pageName2ID","newPage","firstPage","copiedPageData","sheetContextMenu","sheetId","GetFocusedSheetId","RemovePage","ShowRenamePopup","removeSheet","_renamePagePopup","RenamePageTo","_renameSheet","InitFields","ApplyRuntimeProperties","ApplyDesignProperties","Dimension1","Dimension1Translated","Dimension2","Dimension2Translated","Dimension3","Dimension3Translated","Dimension4","Dimension4Translated","PageFieldTranslated","ValueFieldTranslated","dimensionsProperty","DimensionFields","GetDimensionFieldName","LoadSpreadsheetData","LoadEmptySpreadsheet","GetRequestSpreadsheetDescriptor","descriptorDto","emptyPage","spreadsheetData","DisplaySpreadsheet","ForceFocusOnTextControl","isFocusableControl","GetRequestSpreadsheetParams","spreadsheet","pages","pageDataSets","BuildPageDataset","spreadsheetDataset","sheets","styles","setMeta","toolbarId","TranslateLegend","dimensionObservables","observableIndex","GetHorizontalDimensionFields","GetVerticalDimensionFields","HorizontalDimensionFields","VerticalDimensionFields","AddStylesToPage","AddOrigin","Horizontal","AddStylesToHorizontalDimension","AddStylesToVerticalDimension","AddStylesToValueCells","zip","dimensionIndexes","dimensionRanges","GetDimensionRange","dimension1Range","dimension2Range","valuesBlockStart","valuesBlockEnd","valuesBlockRange","cellsRewrite","EachCell","cellPosition","dimensionRewrite","BuildDimensionRewrite","cellRewrite","dimensionRange","valueCellPosition","dimensionCellPosition","GetDimensionDirection","dimensionValue","GetCellValue","Vertical","originCell","searchRange","rowNumber","dimensionStyles","GetStylesForDimension","GetDimensionStart","GetDimensionEnd","GetEndOfSpreadsheetPosition","dimensionStartCell","cellStyles","dimensionEndCell","iterableCell","endCellColumnNumber","valueCell","endCell","dimension1Start","valuePosition","absoluteCell","getStyle","eachCell","_pages","getMeta","_pull","_tabbar","getItem","_focusedSheet","DEFAULT_POSITION","StaticControlsProvider","ForScreen","isDashMain","ForConsultScreen","ForEditScreen","ForListScreen","ForSpecialScreen","controlsPosition","BuildControlModel","ForLinkEditor","controlModels","AddForLookupEditorNewRecord","StepDto","StepApi","GetStepRecord","StepRecordId","_index","_process","_wait","_finish","IsLinked","LoadRecord","_transactionId","PreviousStepEntityId","PreviousStepRecordId","StepScreenId","StepEntityId","IsActiveTabPage","Process","Wait","wait","Finish","finish","TransactionApi","Commit","Continue","Rollback","_currentStepPage","_currentStepIndex","_isEnablePreviousBtn","_isEnableNextBtn","Tabs","RestartPulseTransaction","currentPage","_pulseTimer","stepPage","previousPage","relatedEntityName","mainEntityName","CurrentTabPage","SelectRecord2","_isTabSecurityProperties","_tabSpreadsheetBackground","_hasSpreadsheet","SetSpreadsheetBackground","SetHasSpreadsheet","IsTabSecurityProperties","tabSecurityProperty","TabSecuritySettings","TabSecurityProperties","SpreadsheetStatusColor","_currentTabPage","_dateRange","_isHiddenExist","_isShowHideButton","IsTabs","SpreadsheetSetActiveTabPage","pageHasSpreadsheet","subControlsArr","ChangeTabPageBackground","IsSpreadsheetValid","hidingDays","TAB_HIDING_DAYS","spreadsheetControls","emptySpreadsheets","HasSpreadsheetData","thereAreSeveralSpreadsheet","SetTabPageBackground","currentPageHasSpreadsheet","ChangeTabPageSpreadsheetLogic","validSpreadsheet","spreadsheetActiveTabPage","tabsParams","GetTabsParams","tabsActivityStorage","SetTabsParams","SetTabsHidden","GetSourceTab","ActiveTabSetSpreadsheetBackground","SetTabIsVisible","preSelectedTab","preselectedTabData","where","activeTabPageCIDs","tabToSelect","activeTabPageCID","tabPageControls","gridControls","sourceGrid","tabParams","hiddenTabs","activeDate","oneDay","date1","date2","activeSubControl","firstSubControl","activeSubControlId","storageTabsParams","isShowHideButton","ActiveSubControlId","needToHideButton","defaultParams","controlAgenda","evntArgs","ShowAll","pageControl","TagListScreenModel","TagsScreenDataModel","TagListScreens","TagStore","GetTags","tagScope","TagScopeId","GetAllTags","byScopedRecords","hideDisabled","ByScopedRecords","HideDisabled","TagListChanges","oldValues","_oldValues","AddedTags","DeletedTags","AddTag","tagId","DeleteTag","TagGroupViewModel","tag","TagViewModel","TagId","IsExcluded","IsFirstWord","TagbookList","taglist","tagGroups","_taglist","_taglistFilteredByGroup","_initialTaglist","_tagGroups","_columnCount","_mappedTagsList","_mappedGroupsList","_itemsPerColumn","_mode","_groupId","MapToViewlist","ChangeMode","nextMode","mappedListObservable","mappedListLength","mappedList","arrayIndex","elementIndex","FilterList","firstLetter","isInGroupMode","groupId_","SelectTag","SelectGroup","IdentifyGroupName","displayName","ChangeModel","_addedList","_deletedList","RemoveTag","AddedList","DeletedList","Tagbook","_changeModel","_activeLetter","_firstLetters","_currentGroup","_term","_selectedTagsLength","_tagbookList","SetLettersList","SetTagsList","tagsModel","_selectedTagsInitial","takbookList","SelectLetter","tagModel","tag_","mappedModel","MapToTagModel","ClearCurrentGroup","letters","GenerateFirstLetters","tagslist","firstLetters","currentLetter","nameA","nameB","nextLetter","addedTags","deletedTags","letter","IsActiveLetter","_minTermLength","_tagsByGroup","_isTagsLoaded","_isTagsSelected","_isEnableDropGrid","_blockTagList","_tagListScreens","_preselectedTags","_isReloadGrid","_isNoTags","_inverseGridCondition","_subControlsLoading","_termOperationMessage","_showOptions","_filterByTags","_expandFilter","_stickyFilter","_tagScope","termValid","LoadTagsBySearchTerm","InitTagList","Conditions","InverseGridCondition","tagsJson","tagData","oldTags","IsTermMinimum","IsTagSelected","FormatItemName","SelectItems","LoadAllTags","tagsByGroup","tagsByGroupModels","tagViewModel","noGroupTags","LoadScopedTags","loadAllTagsPromise","FilterData","UpdateFilter","Exclude","tagIds","value_","InverseCondition","PreselectedTags","GoToListScreen","listScreen","isOpenInModal","tagControl","selectedTagIds","ExpandFilter","TagbookOpen","_tagbook","CONTROL_TYPES_LINK","PHONE_NUMBER_LENGTH","iso2","getDecimalSize","getIntegerValidationMessage","getDecimalValidationMessage","isInIntegerBounds","_waitForPhoneCode","FormatEditableValue","ModifyValueByFormat","_textHeight","_formatter","_hasTemplate","_validationMsg","_referenceConsultScreen","SetPhoneCountry","SetPhoneCode","ChangeTranslation","_hasTranslations","ApplyFormatter","IsBarcodeFormat","IsDependsOn","FormatPercentageValue","_phoneCode","GetCodeByIso2","InitHyperLink","getPhoneNumberMinAndMaxLength","currentDefaultValue","IsEqual","textarea","value1","value2","eventArgsData","tableTypeName","createRecordRequest","RequiredValidation","selectedEntityRecord","SelectedEntityRecordModel","SelectedRecordModel","selectedEntityModel","SelectedEntityModel","SetReferenceDataForEditMode","LoadReferenceConsultScreen","SetIcon","SetReferenceDataForViewMode","LineBreak","undoPhoneChange","dashPosition","RemoveNotAllowedSymbols","SetDefaultValueByTranslation","defaultItem","GetFormattedPhoneNumber","intlTelInputUtils","getValidationError","_phoneCountry","TOO_SHORT","TOO_LONG","NOT_A_NUMBER","integerPart","decimalPart","ValidateTranslation","translationValue","fieldMaxLength","OnPastePhoneNumber","pastedText","withoutPlus","withoutCode","OnKeyUpValidation","formattedUrl","GetIconNameForLinkType","IsSocialViewActive","IsLinkTypeControl","IsBarcodeValid","JsBarcodeExtension","GetTooltipContent","preparedValue","lineBreak","ToggleTranslations","OnPhoneListener","countryData","resetValue","dialCode","OpenBarcodeScanner","MakeCall","GetReferenceTable","referenceRecord","GetReferenceRecord","RecordOpenInPopUp","IsReferenceScreen","ReferenceConsultScreen","textareaElement","GetWeekNumber","DestructDate","GetWeekYear","isoWeekYear","GetWeekDescription","GetWeekStart","GetWeekStartByNumber","week","GetWeekEnd","GetPrevWeekStartDate","weekStartDate","AddDays","GetNextWeekStartDate","weekEndDate","AddSeconds","GetDatesBetween","datesRange","GetWeeksCount","isoWeeksInYear","AddMinutes","AreSame","withTime","Max","TimeWritingView","CanBeUpdated","initializers","SelectedWeek","TimeWritingStore","timeTableId","GetDay","WeekReports","Messages","GetDays","CloseDate","GetDisapproved","GetYear","CreateReservation","AcceptReservation","UpdateReservation","DeleteReservation","GetSubject","ValidateTimeWritingSubject","YearDataViewModel","Quaters","DataBySubject","IsCurrentYear","CurrentYear","IsCurrentWeek","CurrentWeek","NavigationAllowed","Quater","weeks","WeekMappings","Booked","Saldo","HasDisapprovedHours","YearMappingProfile","Summaries","bookedCheck","chunkedWeeks","Chunk","weeksOfQuater","elementsInChunk","dictionary","UsersResponseModel","CreateDefault","defaultUser","UserResponseModel","UsersViewModel","UserMappings","userViewModel","UsersMappingProfile","YearView","_currentWeek","_isPastYear","_dataBySubject","usersList","loadDataPromise","loadUsersPromise","OnCurrentYearClick","OnPrevYearClick","OnNextYearClick","OnWeekClick","selectedUserId","DAYS_OF_WEEK","TimeStatus","ViewState","RowEditor","lookupFields","cellEditors","_day","_lookupFields","_cellEditors","IsEditState","IsNewState","GetValueCellEditors","RollbackChanges","CommitChanges","RowEditorTemplate","validationEditors","GetValidationCellEditors","validationResults","ValueCellEditor","ValidationCellEditor","WeekRowEditor","_cell","Read","ViewTemplate","GetState","DynamicCellEditor","_timeStatus","EditTemplate","requiredRule","RequiredRule","minLengthRule","MinLengthRule","maxLengthRule","MaxLenghtRule","_requiredValidation","_minLengthValidation","_maxLengthValidation","_valid","PreventLetters","validations","validation","failedValidation","TextCellEditor","_isTranslate","IsTranslate","translationValues","DropdownCellEditor","_currentValue","FormatSelectValue","dropdownOption","SetReadState","SetNewState","SetEditState","FindOption","requestedValue","RequiresSearch","MultiSelectCellEditor","_showEmptyValue","FormatSingleValue","CheckEmptyMultiSelect","selectedTtem","IntegerCellEditor","DecimalCellEditor","DateTimeCellEditor","DateCellEditor","TimeCellEditor","SubjectCellEditor","DescriptionCellEditor","ActionsCellEditor","DayDataViewModel","WeekId","DaysOfWeek","AllowedEntities","HasDisapprovals","ClosedWeek","ClosedDate","WeekDescription","booked","newSum","isoWeekday","Weekend","IsNormBooked","RequestedDate","Reservations","Reservation","TimeSpent","To","Ovw","Pay","HourKind","OptionalData","StartFormat","ToFormat","TimeSpentFormat","GetOptionalField","GetOptionalValue","SetOptionalValue","setHours","timeSpent","timeDate","ReserveFor","optionalFields","NotSpecified","OptionalFieldData","BindTimeChangesEvents","CalculateTo","CalculateDuration","SubjectLabel","PathToRoot","initialization","_notSpecified","DayOfWeekStatistics","Hovered","DayDescription","ProcessValue","TranslatedField","LookupValue","AllowedEntity","SaveReservationRequestModel","SaveSubjectRequestModel","FieldDataTranslation","LanguageData","SaveOptionalDataRequestModel","DeleteReservationRequestModel","SubjectMappings","OnSaveModel","LookupValueMappings","ReservationMappings","AgendaId","OverWorkIndicator","PaymentIndicator","HourKindIndicator","OnTranslationItem","ovwId","payId","hourKindId","OverWorkIndicatorId","PaymentIndicatorId","HourKindIndicatorId","dateTime","OnDeleteModel","RequestedDateMappings","reservations","reservation","DayMappings","EntityMappings","LookupFieldMappings","lookupField","DayMappingProfile","dayReport","weekReport","DayReservations","StartBySchedule","DaySchedule","DayReports","GlobalSettings","LookupFields","DefaultValues","TranslatedFields","DayView","_initialDateSet","_isPastWeek","_viewState","_isReadState","_isEditState","_isNewState","_rowEditors","_compareCurrentDate","_isFutureDay","_isDisableWeekBtn","visibleFields","dashVisibility","_countOfVisibleColumns","CustomFields","_isFromVisible","_isDashVisible","_isToVisible","_isDurationVisible","_isHourVisible","_isOvwVisible","_isPayVisible","GetTimeCloseDateVisibility","timeCloseDateOption","InitAllowedEntities","TimeCloseDateVisible","TimeCloseDateVisiblePerDay","TimeCloseDateVisiblePerWeek","TimeCloseDateVisiblePerDayAndWeek","dayReportResponse","ShowStatic","RenderStaticData","OnDisapprovedClick","AskSaveConfirmation","SaveReservation","rowEditor","OnPrevWeekClick","prevWeekStartDate","OnYearClick","OnNextWeekClick","nextWeekStartDate","OnCloseDayClicked","OnCloseWeekClicked","dateToClose","UpdateWeekCheckbox","daysOfWeekUntilToday","TimeCloseDate","OnDayClick","OnAddLineClick","defaultTimeSpentValue","durationMoment","durationInMinutes","lastReservationTime","GetLastReservationTime","timeOverflow","GetNewReservationSubject","reservationSubject","AddRowEditor","OnReservationEdit","OnReservationDelete","AskDeleteConfirmation","deleteModel","TimeTableId","SaveAndReload","OnSaveReservationChanges","OnReservationAccept","acceptModel","editRow","OnCancelReservationChanges","CancelNewReservation","CancelReservationChanges","IsFutureDate","HoverOnDayClose","HoverOutDayClose","HoverOnWeekClose","HoverOutWeekClose","OnAllowedEntityClick","SearchSubjectForEntity","SelectSubjectMode","RequestNewReservationSubject","SubjectEntityIcon","rowEditorIndex","getDay","TimeClosedDate","IsFuture","InitRowEditors","FreezeTime","ShowWarning","GetCustomFieldNames","allowedEntities","GenerateRowEditor","GenerateOptionalCellEditor","dropdownField","dropdownFieldValue","ClassName","multiSelectField","customFieldCellEditors","hourKindLookupField","ovwLookupField","payLookupField","SelectableSubjectEdit","SelectedSubjectEdit","OnEntityClick","OnEntityIconClick","OnSubjectClick","SearchSubject","OnEditReservation","OnDeleteReservation","OnAcceptReservation","lastReservation","startingDateTime","defaultStartingValue","SelectSubject","SelectSubjectForEntity","subjectData","oldSubject","newSubject","validationModel","LowestLevelTypes","GetSelectedSubjectData","subjectRecord","AskConfirmation","onDecline","GetActiveRow","updateModel","WeekDataViewModel","DayOfWeekViewModel","WeekMappingProfile","DayOfWeekMappingProfile","DayDate","WeekView","_groupedRows","dayDescriptor","DisapprovedEditor","disapprovedInfo","DisapprovedInfo","disapprovedReason","comment","bookedCounter","DisapprovedReason","Comment","BookedCounter","DisapprovedDataViewModel","DisapprovedRequestedDate","DisapprovedReservation","DisapprovedReservationMappings","DisapprovedRequestedDateMappings","DisapprovedMappingProfile","DisapprovedView","_disapprovedEditors","disapprovedReportResponse","OnDayViewClick","disapprovedEditor","disapprovedEditorIndex","AddDisapprovedEditor","GenerateCellEditor","_recordName","SubjectRecordName","_customFields","_properties","DayViewIsUsed","SwitchToDayView","SwitchToStaticDayView","dayView","RequestWeek","RequestYear","RequestDisapproved","SwitchToWeekView","weekView","OnDayClicked","SwitchToYearView","yearView","OnWeekClicked","SwitchToDisapprovedView","disapprovedView","GetAttachedTableId","InitCustomFields","oldAttachedTableId","requiredFields","customFields","rf","GetComplexControlDesignTemplate","AfterDropField","DesignChanged","targetItem","RemoveField","customFieldIndex","attachedFieldIndex","_activeTimersModal","OnOvertimeClick","newOvertime","Overtime","SetOvertime","StopTimer","activeTimersWrapper","WarningMessages","GetActiveTimerFromActiveTimerModal","activeTimerModal","activeTimerWrapper","overtimeObservable","maxDurationComputed","timersMenu","DurationFormatted","MaxDuration","KnobColor","GetIsTimerStarted","CheckActiveTimers","StartTimer","ActiveTimers","TimeRegex","LiveTimer","currentDuration","_timerIntervalId","_pausedDuration","_initTimer","totalSeconds","GetDurationInSeconds","_formattedDuration","HasValidDuration","FormattedDuration","PauseTimer","UpdateCurrentDuration","TimerIsPaused","currDuration","padStart","HasTimerStarted","_timerEntityId","_timerRecordId","_currentDuration","_timerAutoStart","_liveTimer","_kanbanMode","stopTimer","ResetTimersInActionRecord","StopLiveTimer","startTimer","StartLiveTimer","activeTimers","activeTimerIds","_defaultActiveTimers","TimerAutostart","durationInt","durationFormatted","TooltipValue","ShowConfirmModalForCheckActiveTimers","DefaultHourkind","_defaultHourkind","ActiveTimer","OnTimerClick","OpenActiveTimersModal","AutoStopActiveTimer","AllowTimerAutoStop","AutoStartTimer","isTimerStarted","timerName","Hourkinds","DefaultActiveTimers","AutoStart","TimerAutoStart","IsAutoStartByCondition","_self","liveTimer","SetLiveTimerCurrentDuration","OnTimerClickFromKanbanCard","kanbanCard","GetLiveTimerForKanbanTemplateName","SearchGroups","LifeStatusGroupIndexes","SimpleFilterGroupsSet","MappedSearchGroups","Timestamp","BaseProperty","_propertyDescriptionType","_valueRequired","_warningMessage","SetEnabled","WarningMessage","GetDefaultValue","BaseSelectProperty","IsInitiated","isSearchMode","SetOptions","selectLabel","firstElem","RewriteOptions","CHECKBOX_PROPERTIES","GENERAL_PROPERTIES","_tableName","BusinessRoleRestrictions","BusinessRoleRestriction","AsList","restriction","IconName","PresentIn","TabSecurityStore","GetBusinessRoles","SubFlowDto","SubFlowStore","GetSubFlows","subFlows","SubFlowProperty","_control","_propertyValue","_oldValue","CheckValidInput","GetAllTypes","tableTypes","nonDashTypes","EntitiesStore","lockedEntities","_source","showSearchScreen","LoadDataForSearch","LoadDataForDropdown","selectedItemsIdsString","selectedItemsIds","AddRecordsByIds","LoadNewDataForSearch","existingItemsIds","newItems","itemsIds","GetRecordsByIds","chosenField","GetRecords","isItemSelected","itemIds","CheckValidUrl","FileUploadProperty","_extension","_dropZoneLabel","onloadend","QueryConditionProperty","_allowedEntities","_allowedEntity","_conditionBuilder","InitBookConditions","InitSearchConditions","InitGridConditions","InitDropdownConditions","InitShowIfConditions","InitAllowedEntityCondition","InitConditionBuilder","screenFields","GetScreenFields","InitGridConditionBuilder","ALLOWED_ENTITIES","excludedControlTypes","GetAllAttachedFields","blockTarget","EntityMetadataStore","GetEntityMetadata","entityMetadata","InitByEntity","ConditionModel","screenSubjectEntity","LinkEntityMetadata","InitByEntities","QueryBuilderProperty","InitQueryBuilder","LoadQueryExpression","QueryType","InitDefaultQuery","expressionModel","InitQueryByEntityId","AlternativeEntitiesPropertyStore","GetAlternativeEntities","SelectedEntities","SelectedStatus","DeselectEntity","filteredSelecteEntities","GetIconTemplateName","alternativeEntities","mappedEntity","TypePropertyColorDropdown","_types","ColorTypes","SelectedColorTypes","entityProperty","DeselectType","selectType","filteredSelectedTypes","ChangeTypeColor","ChangeColor","typesColor","mappedType","GetSubTableViews","subTableViews","SubTableViews","MapSubTableViews","MapSettings","PublishChanges","BackLinkSettings","AddSettings","BackLinkingSettings","RemoveSettings","FromJSON","NameTranslationsOpened","InitTranslations","SetDefaultTranslation","DefaultTranslation","ShowNameTranslations","ToggleNameTranslations","HideNameTranslations","SelectNameTranslation","UpdateTranslationList","defLang","defTranslation","_initValue","ApplyChanges","_fields","_selectedField","_orderByDescending","Descending","Ascending","sortingFields","orderByDescending","QueryName","searchTypes","ConsultScreenLayout","Minimized","ToggleActionBar","ToggleMainBlocks","ToggleMinimizeMainBlocks","ToggleBottomBar","BusinessRolesDisplaySettings","Role","_restrictions","Restrictions","TabSecurityDisplayView","MapToSettings","_restrictionsIcons","MapToRestrictionsIcon","RequestEditView","mapToRestrictions","restrictions","BusinessRolesEditSettings","AnyRestrictions","TabSecurityEditView","BusinessRole","TabSecurity","_displayView","LoadRestrictions","InitDisplayView","displayView","_roles","OpenEditView","DWPackagePropertyStore","Dimension","selectedFieldId","SelectedField","oldSelectedField","_oldSelectedField","OldSelectedField","DimensionField","DimensionalTablePropertyValue","DimensionalTablePropertyField","_maxDimensions","_tableFields","ValueFields","PageFields","AnyDimensionSelected","InitDimensionFields","OnValueFieldChange","UpdateValue","UpdateAvailableFields","AddDimension","OnPageFieldChange","OnDimensionalFieldSelect","allowedFieldTypes","IsPhysicalField","_valueFieldChangedSub","_pageFieldChangeSub","CreateDimension","dimensionFields","selectedFields","availableValueFields","otherSelectedFields","availableFields","availablePageFields","CardScreenProperty","_screens","_selectedScreen","QueryBuilderStore","GetCardScreens","screens","selectedScreen","TemplateTypeProperty","DocumentTemplateProperty","GetPropertyManager","ExampleAppointmentResponseModel","ExampleAppointmentStore","GetExampleAppointments","exampleAppointments","PropertyManagersFactory","_propertyNameToProperty","GetCheckBoxProperty","GetInputTextProperty","GetInputNumberProperty","GetColorPicker","GetSelectProperty","GetSelectEntityTypeProperty","GetSelectLockedLinkEntityProperty","GetMultiSelectProperty","GetWebSizeProperty","GetInputUrlProperty","GetFileUploadProperty","GetQueryConditionProperty","GetQueryBuilderProperty","GetAlternativeEntitiesProperty","GetTypesProperty","GetBackLinkingProperty","GetQuerySortProperty","GetQuerySelectorProperty","GetConsultScreenLayoutProperty","GetTabSecurityProperty","GetDimensionalTableProperty","GetCardScreenProperty","GetDWPackageProperty","GetTemplateTypeProperty","GetDocumentTemplateProperty","GetSubFlowProperty","GetExampleAppointmentProperty","configStruct","FilterGroups","groupStruct","GroupModel","GetProperty","ResetProperty","GetPropertyName","HasProperty","SetPropertyOptions","serializedConfig","serializedGroup","serializedProperties","propertiesErrors","parentControlType","Screens","ParentControls","groupProperties","MergePropertyStructWithData","propertyStruct","PropertyModel","_property","_propertyManager","CheckForPropertyManager","PropertyManagerForSave","GlobalStore","GetGlobalByNames","DeserializeGlobals","GetGlobalByName","GlobalName","userGlobals","UserGlobals","CULTURE_CODES","ps_AF","CultureCode","prs_AF","sq_AL","ar_DZ","es_AR","hy_AM","en_AU","de_AT","ar_BH","bn_BD","eu_ES","be_BY","fr_BE","nl_BE","en_BZ","es_VE","quz_BO","es_BO","pt_BR","ms_BN","bg_BG","km_KH","fr_CA","en_CA","en_029","ca_ES","arn_CL","es_CL","es_CO","es_CR","hr_HR","az_Cyrl_AZ","sr_Cyrl_BA","bs_Cyrl_BA","mn_MN","sr_Cyrl_ME","sr_Cyrl_RS","sr_Cyrl_CS","tg_Cyrl_TJ","uz_Cyrl_UZ","cs_CZ","da_DK","es_DO","quz_EC","es_EC","ar_EG","es_SV","et_EE","am_ET","fo_FO","fi_FI","sv_FI","se_FI","sms_FI","smn_FI","mk_MK","fr_FR","br_FR","oc_FR","co_FR","gsw_FR","gl_ES","ka_GE","de_DE","hsb_DE","dsb_DE","el_GR","kl_GL","qut_GT","es_GT","es_HN","hu_HU","is_IS","hi_IN","bn_IN","pa_IN","gu_IN","or_IN","ta_IN","te_IN","kn_IN","ml_IN","as_IN","mr_IN","sa_IN","kok_IN","en_IN","id_ID","fa_IR","ar_IQ","ga_IE","en_IE","ur_PK","he_IL","it_IT","en_JM","ja_JP","ar_JO","kk_KZ","sw_KE","ko_KR","ar_KW","ky_KG","lo_LA","tzm_Latn_DZ","az_Latn_AZ","hr_BA","bs_Latn_BA","sr_Latn_BA","iu_Lat_CA","sr_Latn_ME","ha_Latn_NG","sr_Latn_RS","sr_Latn_CS","uz_Latn_UZ","lv_LV","ar_LB","ar_LY","de_LI","lt_LT","lb_LU","de_LU","fr_LU","ms_MY","en_MY","dv_MV","mt_MT","es_MX","moh_CA","fr_MC","ar_MA","ne_NP","nl_NL","fy_NL","mi_NZ","en_NZ","es_NI","yo_NG","ig_NG","nb_NO","se_NO","nn_NO","smj_NO","sma_NO","ar_OM","es_PA","es_PY","quz_PE","es_PE","fil_PH","pl_PL","pt_PT","bo_CN","ii_CN","ug_CN","es_PR","ar_QA","en_PH","ro_RO","ru_RU","tt_RU","ba_RU","sah_RU","rw_RW","ar_SA","wo_SN","zh_CN","zh_SG","en_SG","sk_SK","sl_SI","tn_ZA","xh_ZA","zu_ZA","af_ZA","nso_ZA","en_ZA","es_ES","si_LK","sv_SE","se_SE","smj_SE","sma_SE","rm_CH","de_CH","it_CH","fr_CH","iu_Cans_CA","syr_SY","ar_SY","th_TH","mn_Mong_CN","zh_HK","zh_MO","zh_TW","en_TT","ar_TN","tr_TR","tk_TM","ar_AE","uk_UA","cy_GB","gd_GB","en_GB","en_US","es_US","es_UY","vi_VN","ar_YE","en_ZW","POPUP_HEIGHT_IN_PERCENT","POPUP_WIDHT_IN_PERCENT","LOCK_TIME","CD_DATABASE_ID","CYBERDESK","SUPERUSER_MAIL","USER_VARS_UPDATE_TIME","CULTURE_SETTINGS","RESOURCES","DELETE_MAIL_AFTER_SAVING","AUTO_MAIL_SAVING","PREVIOUS_WEEKS_NUMBER","ARTICLE_STORAGE_ENTITY","HOME_SCREEN","SHOW_PROFILE_SELECTOR","SHOW_BREADCRUMBS","BASIC_MODE","READONLY_CREDENTIALS","MEMO_TIMESTAMP_FORMAT","ENABLE_DD_AI_ASSISTANT","_getAllGlobalPromises","_globals","AddGlobal","cashedGlobal","globalDescriptor","AddCulture","currentCulture","cultureCode","localCulture","newGlobal","userLanguage","AddDesktopLanguage","currentDesktopLanguage","defaultDesktopLanguage","addDesktopLanguage","GlobalNames","globalName","globals","GetCulture","FONT_NAME_TO_CSS","_imageUrl","LoadImage","GetImageIcon","IconFontName","GetPortletIconTemplate","iconDataName","iconName","EMPTY_ICON","SIMPLE_LINE","NoIconNoImage","IsSocialIcon","IsFontAwesome","SimpleLineIcon","IconStore","iconId","IconId","imageUrl","AddCssForAllExtention","addCssForAll","$current","eventAdd","eventRemove","AlignDropdown","alignDropdown","dropdownType","verticalAlign","directions","horizontalAlign","addEventOnclick","dropdownInsideOverflow","$dropdownContainer","appliedClassNameHorizontal","appliedClassNameVertical","$dropdownList","$targetParent","isRightSidebar","applyToElement","changeAlignment","waitForRender","$button","windowWidth","windowHeight","buttonOffsetX","buttonOffsetY","buttonHeight","buttonWidth","isMultiDropdown","dropdownWidth","dropdownHeight","AllowBindingsExtention","allowBindings","controlsDescendantBindings","AnimateExtention","AutoCompleteExtention","autoComplete","InitAutocomplete","allBindings","bindingContext","valueUnwrapped","OnSelect","onSelect","autocomplete","autoFocus","Updater","isElementBlocked","isBlocked","BlockElementExtention","blockElement","BootstrapCollapseExtention","onReady","BootstrapMultiselect","$multiselect","BootstrapPopoverExtention","RenderHtmlString","DOMParser","parseFromString","triggerMode","htmlMode","sourceUnwrapped","BootstrapSwitchExtention","ContextMenu","contextMenu","contextMenuSelector","CropperExtention","cropper","built","afterCrop","CroppedCanvas","fillColor","CustomScrollbarExtention","customScrollbar","CustomTableExtention","customTable","insideModal","modalScrollClass","formWrapper","sysTableHeader","documentHeight","tableWidth","tableContainer","scrollRepeaterTop","scrollHeader","timeFormats","DatetimepickerExtention","valHook","valHookGet","valHookSet","dataGetInputValue","dataSetInputValue","updateValueCallback","onUpdate","scrollContainer","gridScrollContainer","resizePicker","picker","pickerHeight","pickerWidth","SetInputParse","HTMLInputElement","changeTheCaret","caretPos","setSelectionRange","clearValueCallback","onClear","resetBtn","dateTimeValue","notFormatted","currentFormat","fallbackMomentOfTime","parseInputDate","inputValue","minsRest","hrs","mins","momentOfTime","DebugExtention","debug","DirtyFlagExtention","currentState","isInitiallyDirty","_currentState","_isInitiallyDirty","IsDirty","GetInitialState","FOREACH_OPTIONS_PROPERTIES","LIST_KEY","AFTER_DROP_KEY","AFTER_DELETE_KEY","AFTER_CLONE_KEY","DRAG_KEY","foreachBinding","foreach","dragula","foreachOptions","MakeForeachOptions","afterDrop","afterDelete","onDrag","DRAG_END_KEY","onDragEnd","useFastForEach","fastForEachBinding","CreateOrUpdateDrakeGroup","CreateDrake","templateOptions","AddGroup","RemoveContainer","RegisterEvents","OnDrop","OnRemove","OnCloned","copying","cloneBackup","fastForEach","DropdownExtention","DropzoneExtenion","dropzoneInstance","rawData","$rawData","MaxFilesQty","prevFileSize","currentFileSize","acceptedTypes","invalidFiles","imageToInject","ellipsisTooltip","updateEllipsisTooltip","isLineClampMode","showHideOnlyOnHover","ShowTooltip","HideTooltip","parrentEl","jbox","currentNodeType","currentAnchor","EnableAttrExtention","enableAttr","EnterKeyExtention","enterKey","accessor","bubble","ErrorHandlingBindingProvider","nodeHasBindings","getBindings","getBindingAccessors","objectForEach","EscKeyExtension","escKey","KnockoutExtenions","N","disableSelection","leftPosition","ForEachPropExtention","foreachprop","transformObject","allBindingsAccessor","unwrapObservable","FreezeTableExtention","FullCalendarExtention","ctrlIsPressed","setEventsCopyable","isCopyable","eventAfterAllRender","$event","footprint","eventDef","revert","revertDuration","updateViewSize","newResources","freeDays","GroupedCheckboxExtention","groupedCheckbox","$group","updateGroupState","$nestedCheckbox","$nestedCheckboxes","allCheckboxesChecked","anyCheckboxChecked","updateOtherCheckboxes","checkboxId","checkboxType","checkboxChecked","$otherCheckboxes","otherCheckbox","$nestedCheckboxesChecked","nestedCheckbox","$checkbox","HasScrollBarExtention","hasScrollBar","isReady","$checkElement","checkElement","IframeContentExtention","iframeContent","Inputmask","extendAliases","MaskFormater","fieldNumExceptNegative","fieldSize","decimalSeparator","decimalInputMask","withNumberGroupSeparators","IpAddress","numericInput","mask","greedy","onBeforePaste","pastedValue","definitions","validator","cardinality","casing","inputID","entered_ip","ip_fields_array","formatted_ip","ip_error","error_message","ip_correct","success_message","array_length","ip_field","regex_result","InputMaskExtention","inputMask","numExceptNegative","decimalSize","AdditionalAliases","onBeforeWrite","opts","rslt","maskedValue","processValue","suffix","escapeRegex","isNegative","negationSymbol","front","back","isFinite","absoluteProcessValue","signedProcessValue","radixPosition","rpb","digitsOptional","stringifiedNumber","isZero","postFormat","refreshFromBuffer","caret","DecimalInputMaskExtension","ExtendOptions","CanBeNegative","CanBeZero","toLocaleString","IntegerInputMaskExtension","integerInputMask","intlTelInput","isDropdownContainer","dropdownContainer","iti","getSelectedCountryData","OnScroll","_2","allCountries","intlTelInputGlobals","getCountryData","selectedCountry","jsBarcode","barcode","KnobExtention","knob","minCount","fgColor","release","KnockoutValidationExtensions","rules","otherField","MiniColorsExtention","miniColors","minicolors","colorValue","changed","changeDelay","animationEasing","MultilineEllipsis","truncate","NiceScrollExtention","niceScroll","scrollForMobile","horizontalScrollWithShift","horizontalCursorClass","getNiceScroll","cursorh","OptionExtention","writeValue","PreventBubbleExtention","preventBubble","registerEventHandler","cancelBubble","RenderTemplateXExtention","htmlTemplate","temp","templateName","ResizableExtention","resizable","ScreenHeightExtention","screenHeight","ViewBody","FourthColumn","RightColumn","ResizeContainer","viewBody","fourthColumn","rightColumn","pageElements","fourthColumnHeight","rightColumnHeight","expectedHeight","ScrollFixerExtention","scrollFixer","isChrome","webstore","isEdge","isOpera","ScrollSynchronizingExtention","syncScroll","topScroll","bottomScroll","$topEl","$bottomEl","SearchExtention","searchExtention","typingTimer","regExp","doneTyping","regexp","inp","SlimScrollExtention","SmoothHeightExtention","smoothHeight","SubformResizeExtention","subformResize","subForms","subformFirst","subformSecond","subformThird","subformsParent","adaptiveBlockClassName","subformFirstHeight","subformSecondHeight","subformThirdHeight","smallerBlock","TabNavigationExtention","tabNavigation","closestSearch","firstElement","offsetParent","TextAreAutogrowExtention","autogrow","timerId","shadowId","TinymceExtention","AddProtocol","ChangeTimestampFormat","defaultFormatValue","formatType","isValidMomentFormat","autofocusTarget","autofocus","extended_valid_elements","min_height","max_height","link_assume_external_targets","document_base_url","content_style","contextmenu","quickEdit","isMailControl","autoresize","fontsize_formats","removed_menuitems","paste_data_images","convert_urls","remove_script_host","table_responsive_width","table_default_styles","table_default_attributes","mobile","menubar","statusbar","init_instance_callback","afterInit","getBody","nowrap","auto_focus","afterChange","addButton","userNameAndDate","dom","onChangeLanguage","TippyExtention","tippy","ToggleExtention","TooltipExtention","DestroyTooltip","RenderOnOverflow","elementText","_collection","HasElement","_tooltips","UniformExtention","viewerJs","ImageClasses","imageClasses","AnnotationsEnabled","ShowImage","currentImage","getOriginalImage","getHeightImage","ShowAnnotations","showAnnotations","markerArea","markerButton","editingControlsInactive","pointerEvents","annotationsShown","im","BootstrapTooltip","TOOL_MARKUP","LABEL_MARKUP","CELL_OPTIONS","isStart","CELL_OPTIONS_START","LINK_OPTIONS","COLORS","LIFECYCLE_EVENTS","HALO_HANDLES","LINK_CUSTOM_ATTRS","TEST_CONDITION_CUSTOM_ATTRS","CELL_CUSTOM_ATTRS","INSPECTOR_HTML_ATTRS","NODE_TYPES","NODE_TYPES_ID","DEFAULT_LINK_ATTRS","DwPackageDto","FollowupModeDto","NodeTypeDto","LifecycleStepDto","TypedScreenModel","TableType","FormTypeModel","DesignScreenModel","SubFormModel","Removable","PortletStates","PortletManagerEventHandlersFactory","_handlerOwner","_eventEmitter","BindEvent","BasePortletManager","isChanged","IsInViewMode","IsInDesignMode","SwitchRenderMode","DesignedPortlet","portletToSave","portletStoreModel","ScreenName","RowPosition","RowNumber","ColPosition","ColNumber","DesignedPortletSpace","Portlets","portletSpace","portletSpaceStoreModel","userPortletSpace","PortletBarEventHandlersFactory","_handerOwner","RuntimeSettingsReader","GetRuntimeSettings","readableRuntimeSettings","dataSpaceColor","_portlet","LoadPortlet","portletId","SetPortletSubject","BindPortletEvents","GeneratePortlet","portletType","OldPosition","ReloadPortlet","SetStateForcibly","AddRuntimeSettings","SetPortletSettings","portletBarControl","otherControls","GetPortleteSettings","UpdateRuntimeSettings","userVariables","controlButtonsClickEvents","controlButtonsEventsHandlers","RemovePortlet","controlButtonsHandlersFactory","PortletsExplorer","portletsCollection","_portletsCollection","EntityPortlet","GuidToPortletInfoMap","_keys","_dictionary","portletInfo","ToArray","Key","PortletDesignManager","_portletExplorer","_draggedFromExplorer","_draggablePortlets","DestroyDragAndDrop","sortable","InitDesignMode","$exploredPortlets","$attachedPortlets","_attachedPortlets","connectWith","copyHelper","beforeStop","copied","droppedIntoExplorer","forcePlaceholderSize","tolerance","colNumber","AddNewPortlet","prevPosition","ChangePortletPosition","GetPositions","guidToPosition","toArray","portletScope","$portlet","OnPortletExlorerLoaded","_portletExplorereLoaded","newPosition","droppedObject","PrevPosition","NewPosition","PortletsCollection","PortletSpaceStore","GetPortletSpaces","GetMainPortletSpace","GetPortletSpace","GetPortletsExplorer","portletEntities","UpdatePortletSpace","changedPortletSpace","CreatePortletSpace","CopyPortletSpace","UpdatePortletSpaceInfo","portletSpaceId","BindToControl","PortletSpaceId","DeletePortletSpace","PortletSpaceEditorModel","PortletSpaceName","AllPortletSpaces","CopyFromPortletSpace","ShowCopyFromDropdown","newPortletSpace","allPortletSpaces","SavePortletSpace","CopyFromId","_portletSpaces","_portletSpace","_portletDesignManager","_portletManagers1","_portletManagers2","_portletManagers3","IsChanged","_mainPortletSpaceId","_portletsAreLoaded","GetPortletManagers","columnManagers","LoadPortletSpaces","LoadPortlets","ChangePortletSpace","SwitchPortletSpace","EnableDesignMode","MakeMain","SavePortletSpaceInfo","_newPortlets","_removedPortlets","EnableViewMode","ProcessEachManager","designedPortletSpace","pair","GetPortletManagerByCriteria","BackToView","portletManager","CreatePortletSpaceForce","EditPortletSpace","DeletePortletSpaceForce","portletsColumnNumber","division","columnManager","portletSpaces","ps","SaveNewPortletSpace","portletSpaceIndex","portletSpacesDesign","mainPortletSpace","ApplyPortletSpace","GetPortletManagersOfColumn","InsertInPosition","BindPortletManagerEvents","InsertInObservableList","GetByCriteria","droppedPortletManager","handlers","eventHandlersFactory","ProcessByCriteria","delegate","ProcessManagersByCriteria","insertPosition","positionToShift","BaseScreen","ScreenTranslatedName","_portletBarControl","portletBar","BindPortletBarEvents","appliedSettings","ApplyControlSettings","DeduplicationCell","SelectionType","actionType","deduplicationInstance","_popUpTriggerAction","_popUpAction","endValue","_tooltipValue","_entityName","_selectedAlignedTd","_selectionType","_deduplicationInstance","changesToSave","Deduplication","_disabled","Changes","DeduplicateMatched","GetRecordsList","GetDeduplicationRecord","InitLockWithRequest","GetDeduplicationMatchedRecordModel","RenderModal","GetModal","SetPopUpData","selectionToActivate","indexOfActionCell","DeduplicationGrid","excludecolumn","deduplications","deduplicationHeader","deduplication","GetSelectionType","leftRecordRowCell","DefaultFieldName","LeftRecord","selectionType","rowToInject","RightRecord","IsMergeEnabled","DeduplicationInstance","SetPopUpDataFromSearch","Headers","ResetRows","DeduplicationHeader","_columnName","DeduplicationRow","mainGrid","deduplicationIntance","_mainGrid","_mergedEnabled","editCells","rowCell","DeduplicationStore","GetDeduplicationSubjects","GetMatchedRecords","DeduplicateAll","MatchAll","DeleteAll","GetDeduplicationRecordModel","Deduplicate","GetMatchingStatus","LicenseHolderModel","LicenseHolderStore","GetLicenseHolderModel","UploadLicenseLogo","Exception","OperationResult","IsSuccessful","DisplayRecordTypeName","RecordTypeTranslatedName","RecordTypeName","DisplayRecordName","RecordTranslatedName","lastStatusDate","LastStatusDate","RecordExampleModel","PossibleToExample","RecordPersonalizationModel","IsPersonalized","PossibleToPersonalize","RecordPersonalization","RecordExampleInfo","GetDefaultParams","ReferenceModel","ReferenceTableModel","RightsModel","QueryBuilderData","getScreenByIdDefaultParams","RecordSpecs","getSubjectEntityPromise","getDesignScreenPromise","GetDesignScreenInstance","isLinkEditor","StaticControlsInitializer","AddStaticControls","_controlsDictionaryDelegate","AddForConsultScreen","AddForSpecialScreen","AddForDashboard","AddForListScreen","AddForEditScreen","AddForPortlet","AddForFormDesigner","AddForLinkEditor","LookupEditorNewRecord","AddForQueryScreen","AddForCardScreen","AddForProcessCardPage","AddForStepsScreen","EmptyScreen","AddForEmptyScreenScreen","staticControlsPosition","ShowFollowUp","RegisterStaticControls","IsDashMain","BuildControl","subForm","AddStaticControl","subFormIndex","ScreenSwitcher","currentGridRow","gridRowData","_gridRowData","_currentRow","indexOfCurrentRow","_previousScreen","_nextScreen","GetMenuItem","GetEnabled","GridRowData","NextScreen","GetPreviousScreen","GetNextScreen","_screenFormProperties","_screenFormEntityProperties","_isDashMain","_isEditScreenExist","_isListScreenExist","_isDashboardScreenExist","_isConsultScreenExist","_isStepsScreenExist","_showFollowUp","_subForms","_dataMode","_subjectLifeStatusId","TargetId","_actionSubjectRecord","InitUIColors","InitActionBar","InitBottomBar","InitSubForms","SetDefaultUserSelection","_gridRowList","_inModal","_nestedLevel","_modalOptions","_modalComponents","_screenSwitcher","_controlsToUpdate","ShowListScreen","ShowSpecialScreen","ShowDashboardScreen","ShowConsultScreen","ShowPreviousScreen","IsPathRunnerRefreshed","_isQueryBuilderScreen","IsQueryBuilderScreen","IsCardScreen","IsProcessCardScreen","IsStepsScreen","deserializeProperties","EntityProperties","propertyTypes","screenBGrColorProperties","screenHeaderBGrColorProperties","screenBGrColorEntityProperties","screenHeaderBGrColorEntityProperties","ScreenBackgroundColor","ScreenHeaderBackgroundColor","CopyTextToClipboard","clipboard","writeText","textArea","isScreen","SetModalOptions","SearchRecord","TableTypeFlowFolder","GetEntityIcon","GetEntityNameTranslation","predicate","SetActionSubjectRecord","DeleteRecordConfirmation","DeleteRecordSuccessNotification","FirstSubForm","ThreeSubFormsWithoutFirst","WithLinkList","NoLinkList","_actionBar","_bottomBar","IsBottomBarControls","CloseModalComponents","SubForm","ShowExpandButton","languagesReceived","languagesUpdatedPromise","SetCurrentGridRowData","GetCurrentGridRow","SetGridRowListData","gridRowList","GetCurrentGridRowList","excludingControlsTypes","mergedDataModel","setValueCallback","baseControl","GetControlDataByControlId","GetControlDataByField","controlTags","GetTagControlData","queryBuilderValue","GetQueryBuilderControlData","controlsData","ScreenTags","GetFieldByFieldName","controlTypeName","GetControlByFieldNameOnScreenEntity","GetDependsOnControls","DependsOnId","RemoveNonEmptyDependsOn","dependsOnControls","actionBarControls","bottomBarControls","subFormControls","SCREEN_OPENED","GetTarget","SetScreenStyle","isParentControlExist","pageContainer","pageHeader","openInPopUpByCtrl","SetStyleProperty","setColorForContainer","DarkenHexColor","jBoxContainer","amount","SetRecordIdAndRender","SetSource","extraClass","currentGridRowList","recordsIds","distincLinkedRecords","extraClassValue","SCREEN_CLOSED","CHANGE_SCREEN","IsEntitySysUsersOrCd","skipClosedEvent","GetTableTypeNameTranslation","TableTypeNameTranslation","screenState","GoToScreenByType","BackToPreviousScreen","excludeControlTypes","onlyScreenSubject","linkListField","IsTypeAvailable","exampleTypeId","ExampleTypeId","isTypeAvailableModel","variableName","screenVariable","isPreselect","dependsOnFields","controlsByDependsOn","controlsToUpdate","controlToUpdate","getWidthValue","isWidthValid","SoftColorScheme","SoftColorsProvider","GetColor","scheme","colorPalette","GetColorPallet","As","rgbaColor","SoftColor","_rgba","RGBA","TabGridStore","GetGridData","linkEditorTabGridFacade","getScreen","getControlByFieldName","linkEditorFacade","TabGrid","GetGridOptions","SaveTableViewId","ShowTableViewList","ShowAddAndLinkButton","ShowLinkButton","LinkLeftEntityId","LinkRightEntityId","ReferenceLookupFieldId","ScopedRecordId","ScopedTableId","LinkListChanges","TargetTableId","createdRecordId","selectedRecordId","onAfterLinking","PrepareRecordsToSelect","GetLoadData","SetLinkEditorGridView","GetTableViewId","GetLinkEditorGridView","TabTableData","TargetTableName","LookupFieldName","TabName","TabTables","TableParams","tableParams","CurrentTabTable","OnTabClick","tableData","tabTable","linkEditorModel","_closeAfterSave","_linkEditorModel","_mainRecordTypeId","_rightLinkedEntityName","_leftLinkedEntityName","_relationTypes","RelationTypes","_selectedRelationTypeId","SetFirstEnabledRelationType","_defaultDisabled","SelectedRelationTypeId","_selectedRelationTypeName","SelectedRelationTypeName","_linkListInstance","_hasRelations","_relationTypeValuesEnabled","FireUpdateVariable","LeftLinkedEntityId","RightLinkedEntityId","SetRelationTypeValue","firstRel","ReferenceControls","SetFocusOnFirstControl","closeAfterSave","linkListInstance","_editorDataModel","GetRelationTypesRequestModel","CurrentClusterMode","GetControlDataModel","existsData","relationTypeSelectedData","propertyFields","controlledFields","field1","field2","controlsWithFields","GetControlModel","propertyField","pField","PropertyFieldId","sortBy","memoControl","listAvailabilityStatus","relationType","RightLinkedEntityName","targetedLinkType","_tabTables","TabSettings","tabSettings","LeftLinkedRecord","RightLinkedRecord","scopedRecord","scopedTable","hasRelations","relationTypeValuesEnabled","LeftLinkedEntityTranslatedName","RightLinkedEntityTranslatedName","HasDefaultValue","DeserializeData","Grids","GetLinkedRecordLabel","GetRelationTypeLabel","ReverseTranslation","Reverse","fieldDataModel","selectedRelationTypeField","unselectedRelationtype","FieldValueKey","PropertyTable","PropertyFieldConfigModel","TranslationValue","LinkedFieldValueModel","LinkEditorTabSettingsModel","LinkedRecordModel","LinkEditorModel","IsPrimaryKey","PlannerLevelEntityModel","SubEntities","ImageFieldModel","TableWithImagesModel","GetImageEntities","ImageDeserialize","GetSignatureEntities","SignatureDeserialize","GetPlanerLevelEntities","GetSubEntities","DashboardBlock","widget","SubFormProperties","PasswordFieldList","RemoveAttachments","GridsData","DropAttachments","Spreadsheets","IsStaticControls","CopyRecordLink","urlForCopying","BaseForm","InitControls","_noSubControls","isFavourite","controlNotExists","controlToWrap","_controlToWrap","GetFormId","GetFormGuid","_showRemoveButton","_configuringLayout","RenderDynamically","_subForm","ConfiguringLayout","showButton","ApplyLayout","ExpandOnControlClicking","AfterDropControl","ShowControlEditor","ProfileSelectorStore","GetCreatorProfiles","creatorProfiles","Profiles","SelectedProfile","HasToBeShownByGlobal","IsSysTable","LoadCreatorProfiles","ResolveCreatorProfiles","_originalMainProfileId","RenderSelector","LifeStatusViewModel","ActionDropdown","_showStatusSelector","ShowStatusSelector","_tableTypeName","_recordSpecs","_actionSubject","activeParams","GetActiveParams","_lifeStatus","ActiveLifeStatus","ModifyLifeStatus","GetViewTemplate","GetEditTemplate","GetLifeStatus","Modified","RequestCheckList","ShowTypeHelp","DoProgressBarProcess","lifeStatuses","showStatusSelector","ShowActionDropdown","SubjectAction","ProcessingCheckList","actionDropdown","FireFollowUp","infiniteLoop","CloseActionCheckList","GetViewActiveParams","GetEditActiveParams","MigratedRequired","migratedRequired","activeRenderMode","activeLifeStatus","enabledDisabledStatuses","subjectAction","FormatDate","flowFolderIcon","ReferenceEntityId","ReferenceRecordId","FollowUpActionSubjectModel","FollowUpRecordRequestModel","ScreenDataStore","UpdateRecordLifestatus","UpdateRecordLifestatusRequestModel","ReleaseLockOnWindowClose","CheckHideButtonCaption","_sourceSearchTerm","_isHamburgerActive","_areWidthsEqual","_hideButtonCaption","_actionBarButtonControls","InitProgressBar","ApplyEvents","SecurityReset","OnCopy","FollowUpFromConsultScreen","FollowUpFromSubject","ModifyLifestatus","ActionSubject","LoadPathRunnerData","parentActionSubject","NewSubjectActionRecord","ShowSubjectActionEditScreen","_statusDescription","HandleOnWindowClose","RemoveOnWindowCloseHandler","RELOAD_SCREEN","GetReferenceConsultScreenTemplate","SearchControl","GetTextSearchTermControl","searchTerm","conditionToggler","allowChildrenTypes","closeScreen","ProhibitionAutoStopTimerForCurrentScreen","currentScreen","newScreen","SelectedScreen","textSearchTerm","DeleteFromRecent","NewlyCreatedRecord","NameControlSetValue","newTypeId","IsFollowUp","ClearPathRunner","OnFollowUpRecordFromEditScreen","OnFollowUpSubjectActionRecordFromEditScreen","followUpRecordId","actionBarWrapper","actionBar_barLeft","actionBar_controls","ToggleHamburger","ToggleLifeStatusBarClass","GridRowDataDeleteCurrentRow","currentRow","lastRecentRecord","GetLastRecentRecordByEntityId","HasSpecialScreen","searchControlId","ShowProfileSelector","stepControl","lockedRecordId","AddField","linkRequired","MainFormUpdateModel","UpdateScreenModel","DeletedFormIds","DeletedControlIds","UpdateScreenStore","UpdateScreen","ControlEditorModel","AttachedFields","CONTROL_DEFAULT_NAME","Labels","NameFocused","DescriptionTranslationsOpened","SelectedDescription","ValidationMsg","InitEditControlData","EditControlModel","EditControl","SetFocusItem","ToggleDescriptionTranslations","ArrTranslate","SelectDescriptionTranslation","NameMaxSize","UpdateDescriptionTranslationList","controlEditorModel","GetControlEditorModel","UpdateControlModel","OnKeyUpUpdateTranslationList","NameValidate","OnKeyUpChangeTranslation","ChangeDescriptionTranslation","K_Control","F_Type","ParentControlId","HasParentControl","SubFormId","GetSubjectEntityName","GetSubjectTableTypeId","InitName","IsScreenOfType","screenTypes","requestedType","GetDescriptionTranslation","BlobFieldModel","BlobFieldsStore","LookupFieldModel","LookupFieldsStore","GetMultiSelect","LabelPositions","_icons","_entityColor","_groupedIcons","_dropzoneShown","_uploadetImages","RenderTemplate","OpenDropzone","HideDropzone","dz","fileToRemove","dropZone","IconsList","_editControl","_editControlModel","_controlName","_selectFieldSubscription","_blobFields","_useFieldName","UseFieldNameForControlName","_controlNameTranslations","_controlDescriptionTranslations","_defaultEntityType","_tableTypeId","_entities","_subEntities","_selectedEntity","_selectedEntityType","_selectedSubEntity","_controlEditorModel","_showEntityList","_showEntityTypesList","_showSubEntityList","_allowSelectField","_isControlNameHasFocus","_showLanguageList","_showDescriptionsLanguageList","_labelPositions","UpperLeft","UpperMiddle","UpperRight","Right","LeftColon","uniqFieldsByEntityType","_subjectSubEntityId","selectedLabelPosition","_selectedLabelPosition","editControl","subEntities","documentFields","subEntity","SetCurrentField","selectedSubEntity","LoadLookupFieldsForEntity","_currentControlName","_currentControlDescription","IsValidName","ValidationMsgForName","PrimaryTableLookupFieldId","PrimaryTableLookupFieldName","SetCurrent","translationsModel","SetCurrentDescription","ShowLanguageList","controlEditor","ShowDescriptionLanguageList","ToggleUseFieldName","LoadBlobControlData","LoadLookupControlData","LoadMultiSelectControlData","LoadGeneralControlData","LookupTableTableName","LookupTableValueFieldName","isControlInMainSubForm","ControlTypeName","IsControlInMainSubForm","EntityNameWithFieldName","isEditScreen","isListScreen","existFieldIds","dropControlSubjectEntity","controlSubjectEntity","SetCurrentSubEntity","selectedField","OpenIconManager","Icons","iconManager","SelectedLabelPosition","SelectedEntityType","SelectedSubEntity","LabelPosName","LabelPos","GraphicalIcon","DefaultDescription","ShowUseFieldNameToggle","blobField","controlName","entityNameTranslation","EntityNameTranslations","entityTranslation","FieldNameTranslations","fieldTranslation","PopulateEntities","FieldSelectorAfterRender","InitLabelPositions","InitEntities","OnEntityChange","OnFieldChange","UseFieldNameAsControlName","OnSelectField","FilterEntities","MarkAcceptableFields","attachedEntity","ResetProperties","usedFields","FindUsedFields","defTrans","InvoiceTable","LifeStatusModel","InvoiceType","InvoicingControlConfigOptions","FinancialControlStore","GetConfigOptions","InvoicingControlEditor","_sourceTables","_selectedSourceTable","_sourceLifeStatuses","_selectedSourceLifeStatus","_destinationTables","_selectedDestinationTable","_destinationTypes","_selectedDestinationType","_configIssue","sourceField","PrimaryFieldId","PrimaryFieldName","destinationTable","destinationField","configOptionsResponse","configOptions","ApplyConfigOptions","Issue","recordLifeStatusId","defaultLifestatus","translatedSourceLifeStatus","SourceLifeStatuses","selectedSourceTable","selectedSourceLifeStatus","DestinationTables","selectedDestinationTable","UpdateDestinationTypes","destinationTypes","DestinationTypes","selectedDestinationTableId","CurrencyControlEditor","filteredEntities","filteredFields","GetSelectedField","InitField","controlFieldModel","BasketControlEditor","_leftBarSubEntities","_selectedLeftBarSubEntity","_rightBarSubEntities","_selectedRightBarSubEntity","_plannerLevelEntities","planerLevelEntity","primaryField","primaryAttachedField","primaryIconModel","primaryLeftField","primaryLeftAttachedField","leftIconModel","EntityFullNameTranslation","EntityFullName","primaryRightField","primaryRightAttachedField","rightIconModel","GetSubEntity","sub","leftBarSubEntityView","rightBarSubEntityView","GanttChartControlEditorStore","GetDesignOptions","_ganttViews","_selectedGanttView","_resourcesViews","_selectedResourcesView","resourcesViewPkey","fieldSort","resourcesAttachedField","CreateAttachedField","GanttViews","ResourcesViews","attachedSubTableViews","selectedGanttView","selectedResourcesView","ProductConfiguratorControlEditorStore","_tables","_selectedTable","_useView","_selectedProductDescription","_useProductDescription","viewField","viewFieldSort","descriptionFieldSort","CheckForDescriptionFields","IsText","GetDescriptionFields","enableAlternativePriceCalculation","level1BaseProperty","level1","level2BaseProperty","level2","lockLevel1","SetLockLevel1","isLevel1Initiated","isLevel2Initiated","isLevel1Set","isLevel2Set","PopulateProductDescription","PopulateProductView","descriptionField","SubjectTableId","ImageFields","ResetSelectOnlyProperty","UpdateField","ResetDimensions","EnableOrDisableShowAnnotations","_uncheckShowAnnotations","propsObj","propsString","spansArray","useAnnotationsCheckbox","showAnnotationsCheckbox","nextElementSibling","KanbanControlEditorStore","_kanbanSubjectEntities","_selectedKanbanSubjectEntity","_kanbanSubjectFields","selectedKanbanSubjectEntity","_selectedKanbanSubjectField","_todoEntities","_selectedTodoEntity","_todoTypes","selectedTodoEntity","_selectedTodoType","_todoFields","_selectedTodoField","selectedTitleField","TitleFieldId","selectedTodoType","TodoTypeId","selectedTodoField","TodoFieldId","ScreenSubjectFields","KanbanSubjectEntities","TodoEntities","screenSubjectFields","kanbanSubjectEntities","todoEntities","defaultKanbanSubject","selectedKanbanSubjectField","ChartControlEditorStore","GetControlOptions","_hasEntities","_views","PkFieldId","UpdateAxisOptions","UpdateSubTableView","PkFieldName","seriesOptions","axisFields","IsDatetime","axisOptions","MapsControlEditor","ProcessCardPageModel","StepPageStore","GetProcessCardPageScreens","_processCardPageScreens","_selectedProcessCardScreen","ButtonCopyControlEditor","CheckProperties","behavior","ControlEditorFactory","GetEditor","AfterDropValidation","IsPositionValid","PortletAfterDropValidation","ScreenTypeToDropControlValidation","GetValidationDelegate","defaultGridStackOptions","float","staticGrid","cellHeight","DEFAULT_LABEL_POSITION","LINK_LIST_REQUIRED_ENTITY","CONRTOL_WITH_BLOBFIELDATTACHED","getSubFormGridOptions","DesignScreen","_formProperties","_designModel","_subFormsWith","InitCalcSubFormSize","_updateModel","_hasChanges","_afterDropValidation","_screenColors","_customStyle","ControlToolbar","_gridStack","setStatic","GetDefaultControlModel","DestroyDragula","toolBarToDesignerDrake","BindSubFormEvents","elModel","targetModel","allowedLinkListSubFormIndex","IsEnableDragRecipeEditor","IsEnableDragTimer","ct","fieldAlreadyDropped","IsEnableDragField","IsEnableDragSearchTerm","IsEnableButtonFavorite","HasOnlyOneInstanceOf","isShowDropContainer","elementContext","instanceType","ShowRemoveSubFormConfirmationDialog","RemoveSubForm","bgColor","AddSubForm","subFormModel","addWidget","recipeEditorControl","isDragOnKanban","OneToMany","OneToMain","fieldObj","controlObj","AddTranslationsToControl","translationDescr","removeWidget","LabelPositionValue","CreateTab","CreateStepPage","CreatePlannerPage","CreateRootLevel","plannerLevel","CreatePlannerLevel","CapitalizeFirstLetter","InitializeTabs","RelatedSubEntitiesModel","relatedSubEntities","gridControl","GenerateGridControl","RelatedEntities","AfterDropFieldIntoGrid","alreadyAddedField","DropControlFromToolBarProcess","newControl","allowedFormIndex","usersEntity","usersEntityIconModel","usersModel","DropFieldFromToolBarProcess","defaultControlModel","MovingControlProcess","AfterDropEntityIntoLinkList","AttachFieldToLinkList","isImage","primaryKeyField","defaultField","entityFields","linkEntityFields","ConvertEntityToGrid","AfterDropTapPageControl","DropExistingControl","DropNewControl","gridStackSaveResult","save","gridStackWidgets","FormGuid","getGeneralProperties","ParentControlGuid","TableFormLinks","updateScreenModel","SetSubFormIds","SetControlIds","AfterSaveRemoveNotInitializedControlClass","resultMessage","updatedSubForm","updatedControlModel","RemoveParentControlClass","NotInitializedControl","leastOneNotInitialized","effect","SubFormsWith","mqb","matchMedia","mqm","consultSubform","onresize","itemNumber","OneToOneSubject","OneToOne","movingControl","stringValue","AlreadyPersonalized","IsPersonal","PersonalizationSelected","MakePersonal","GetPersonalizationInfo","IsMakePersonal","RecordExampleInfoModel","AlreadyExample","ExampleSelected","MakeExample","GetExampleInfo","IsMakeExample","SecurityEditorModel","SecurityPass","SecurityPassConfig","OnAdd","securityEditorUser","SecurityData","ActiveRights","OptionalRights","ActiveOptionalRights","PassOwner","DoNotPass","DoNotPassRights","PassRights","PassOptionalRights","PassInheritance","RefusePass","AddUser","existingUser","SelectOwner","SecurityEditorFormModel","defaultRights","defaultOptionalRights","securityData","optionaRightsValue","deleted","activeRights","optionalRights","SecurityPassViewModel","PassOption","EnablePassOwner","EnablePassInheritance","passAnyRights","doNotPass","passRights","passOptionalRights","passInheritance","refusePass","passOwner","passOption","SecurityEditorStore","GetSecurityInfoForRecord","GetSecurityData","SecurityDataModel","ProfileName","SecurityEditor","Setup","ShowEditor","_formModel","CreateForm","MapToFormModel","GetServerData","Profile","formModel","SearchUsers","securityDataDto","mainProfile","SecurityProfiles","_isFollowUp","ParentRecordTypeId","CtrlS","GetTopScreen","mobileOptions","_makePersonal","_makeExample","_securityEditor","_requiredControls","changingSecurityAllowed","ChangeSecurityAllowance","editingSecurityAllowed","IsChangingSecurityAllowed","isLeftAndControlsEqual","AllowEmptyRequiredControls","SaveGrids","bottomBar","recordSpec","ApplySecurityEditorChanges","isModalMode","isDone","grids","ReleaseLockGrids","refreshScreen","ControlPopupsClose","AfterSave","checkRecordId","_isDataFromExample","isFromExample","FillFromExample","passwordControl","PasswordAction","personalizationInfo","exampleInfo","RecordSettings","lifeStatusInfo","FollowUpRecord","TableSecurityChanges","TypeSecurityChanges","RecordSecurityChanges","RecordSharingChanges","UserSecurityChanges","UserAllowanceChanges","FieldSecurityControlChanges","controlAttachments","linkListData","tagChanges","TagsChanges","spreadsheetRewrite","FollowUpRecordId","MainLinkRecordId","entityRelation","ReadLookups","recordDataModel","linkedRecordName","newRelationModel","_queryName","fontColor","fontFamily","_emptyBar","EmptyScreenModel","searchControl","OpenSearch","emptyScreenModel","SearchTypes","RecordTypes","SearchByMainRelationTypes","DUPLICATES_RECORD_SELECTED","GroupNameToRecordsModel","recent","favorites","SearchFieldModel","SearchGroupItemModel","_searchType","SearchType","SearchGroupModel","GetItem","HasItem","SearchModeGroupModel","FastSearch","TotalSearch","PhoneticSearch","AddItem","FieldSearchGroupModel","FieldSearch","SearchModeModel","AddSearchFields","searchFields","searchFieldGroup","searchField","GetSearchItem","groupWithItem","GetDefaultMode","AlternativeSearchModel","RowValueModel","SearchResultRowModel","RowValues","SearchResultModel","SearchFields","AlternativeSearchList","SearchScreenModel","GroupNameToRecords","SearchTypeModel","UserVarsRecordModel","SearchResultCell","_Id","SearchResultGrid","searchResult","searchRequest","showExpandButton","multiselectMode","showDuplicatesMode","selectedDuplicatesRecords","_showDuplicatesMode","_searchResultMessage","_searchResult","_isSmallTable","_searchRequest","_orderFields","_multiselectMode","_selectedRecords","_selectedDuplicatesRecords","RowClick","IsSelectedDuplicatesRecord","IsDuplicatesSelected","isSelectedDuplicatesRecord","IsDisableDuplicateRecord","FormatDecimalOrInteger","MultiSelectRecord","SelectRecords","ToggleExpand","GetSubGriData","SubGridParentRecordId","RecordType","All","EnableFilter","OrderFields","SortOrderClassName","SearchResultRow","_subGrid","_toggleButtonClassName","columnValue","FILTER_BY_RELATION_CLASSES","TOGGLE_CLASSES","_dropDownFilterState","_sharing","_leftEntityId","_rightEntityId","_leftRecordId","_rightRecordId","_screenData","_searchGroups","_entityIcon","_focusInput","_searchByTypes","_searchRegexp","_conditionValues","_searchGroup","_recent","_favorites","_recentAndFavoritesTabIsActive","RecentAndFavoritesActive","_closeAfterSelectingRecord","_isFirstLoad","_paginationInfo","_searchMode","_searchLoad","_selectedSearchMode","_addButtonVisible","_addButtonDisabled","_isClick","_isAddQueryButton","_adaptiveRecordsCount","_isSimpleLifeStatus","_enableFilter","_isBaseEntity","_searchByMainRelationType","_searchByRelations","_isBackLinkEnabled","_entityType","_searchFieldId","_altEntities","_searchResultGrid","_plannerLevelEntityId","_plannerLevelRecordId","_multiSelectMode","_hasSelectedRecords","_hasBarcodeFields","_enableBulkScan","_querySubjectId","_showSearchByLinkedDocuments","_isParentLinking","_showSearchToolbarIcons","_searchAlternativeEntitiesShow","_filterByMainRelationClass","ByConditions","_filterByMainRelationTooltip","isRootForFormDesigner","_recordTypes","_recordType","_typeToggleClass","_recentRecords","_relatedTablePk","InitDuplicatesMod","SaveChangesDeduplication","InitAlternativeSubjectsMod","_duplicatesVisible","_duplicatesTypes","_duplicatesType","duplicatesTypes","_duplicatesToggleClass","_hasTwoSelectedRecords","AlternativeSubjectsToggle","_alternativeSubjectsType","_alternativeSubjectsTypes","alternativeSubjectsType","_alternativeSubjectsToggleClass","classToggle","SearchRecords","GetFilterByAlternativeEntities","selectedMainEntityId","altEntity","ToggleType","DuplicatesToggle","HandleFilters","_recentRecordsSubscription","_recordTypeSubscription","_duplicatesTypeSubscription","_selectedSearchModeSubscription","_searchGroupSubscription","_enableFilterSubscription","_searchByMainRelationTypeSubscription","_searchTimer","UnHandleFilters","InputChange","GetAlternativeIconTemplateName","GetSearchIconTemplateName","ToggleToolbarIcons","ToggleAlternativeEntities","GatherSettings","LoadSearchScreenModel","showParams","altEntityId","getSearchScreenPromise","GetScreenModel","baseEntity","BaseEntity","TableSecurityRights","AllowDeduplicationMode","controlAltEntities","GetRecordAltEntities","altEntities","altEntitiesData","SetRecordAltEntities","GenerateActions","AddSearchGroups","isBackLinkEnabled","HasBarcodeFields","RestoreSearchSettings","CheckAddQueryButton","shouldOpenScreen","SetOptionClass","IsGroupItem","GetSearchParams","searchGroupValue","lifeStatusId","recentRecords","recordTypeValue","searchModeValue","searchByRelationsValue","filterState","enableFiltering","currentRecordType","Recent","Favorites","RecentRecords","SetRecentRecords","ToggleEnableFilterValue","HasRecent","HasFavorites","SearchClick","StopBulkBarcodeScan","StartBulkBarcodeScan","_isBulkBarcodeScanning","DivideRecordsPerPage","popupHeight_Global","isSearchPagination","searchPaginationBoxHeight","searchToolbarHeight","recalculationMarginPadding","staticSpace","calculatedAltSpace","reservedSpace","SearchByAltEntity","SelectedAltEntityId","RefreshScreenAfterAltEntityChange","isFromBarcode","GetSearchRequestModel","SelectDuplicatesRecord","_nameFieldName","NameField","UpdatePaginationInfo","clickHandler","UnBlockSearchScreen","areQueriesFound","startRecordNumber","endRecordNumber","BlockSearchScreen","searchResultGrid","rowClick","GetRowValue","isUserAllowed","existsRecord","OneSelect","isDuplicatesSelected","existsDuplicatesRecord","SelectRecordFromRecent","userVarsRecordModel","SelectRecordType","InfoSearchValueTooltip","searchGroupName","enablingFiltering","SetSearchParams","AddingRecordAllowed","searchGroups","isSimpleLifeStatus","SortSearchGroups","searchGroupsMapped","Archive","searchGroupsIndexes","ind","nextInd","SearchByMainRelation","FindSearchGroupName","searchGroup","rowValues","Merge","InitLockWithRequestFromDeduplication","SearchField","SearchGroup","FilterByAlternativeEntities","SearchScreenStore","GetRecentAndFavourites","SearchStore","TYPES_FOUND","CANCELLED","ExampleRecordModel","KindModel","CreateDashKind","TableTypeModel","TableTypesModel","ShowTypeSelector","enabledTypes","moreThanOneType","moreThanOneKind","Kinds","withRoot","allowExamples","onlyTypes","_parentTypeId","_withRoot","_selectedExample","_selectedKind","_kinds","_examples","_noExample","_allowExamples","_isSaveDisabled","_isOkButtonEnabled","_onlyTypes","_showKindSelector","_showExampleSelector","selectedKind","examplesByType","ExampleRecords","F_Kind","examplesByKind","typeToMatch","firstEnabledType","enabledKinds","KindName","Examples","SelectedType","SelectedKind","SelectedExample","SetButtonDisable","enabledTypesExist","SelectExample","GROUPS","SEARCH_PARAMS","TABS_PARAMS","PLANNER_TABS_PARAMS","GRID_VIEW","GRID_PRIORITY","PATH_RUNNER_SETTINGS","KANBAN_LAST_SELECTED_TYPE","KANBAN_TODO_SELECTED","KANBAN_VIEW","FINANCIAL_DASHBOARD_GRID_VIEW","BASKET","DB_STATUS","USER_SELECTION","LAST_SYNC_TIME","ALT_ENTITIES","GRID_COLUMN_FILTERS","LOAD_CHART_STATES","SCHEDULER_VIEW","SCHEDULER_SUBJECT","SCHEDULER_DATE","LIFE_STATUS_ADVANCED_MODE","AGENDA_DATE","PLANNER_PAGE","PLANNER_LEVEL","KANBAN_BOARD_ACCORDION_GROUPS","entityWithRecords","GetLastDbChoosen","databaseDesignerDbId","entityParams","activeTabPageData","RemovePreselectTabData","GetByEntityId","groupRecords","entityRecords","recordParams","SetLastDbChoosen","SetLoadChartState","loadChartStates","GetLoadChartState","gridColumnFilters","filteredList","filters","currentFilter","isFilterAlreadyExists","existedFilter","searchMode","portletsSettings","GetSettingsColor","isKanbanTodoSelected","kanbanTodoSelectedValues","gridViewId","gridViews","SetSettingsColor","syncItervalTime","UpdateUserVars","_syncInterval","toISOString","GetSettingsCustomThemeName","GetSettingsCustomThemeColor","GetSettingsCustomColor","GetSettingsLayoutMode","GetSettingsSidebarBorders","SetSettingsSidebarBorders","sidebarBorders","SetSettingsLayoutMode","SetSettingsCustomThemeName","SetSettingsCustomThemeColor","customThemeColor","SetSettingsCustomColor","customColor","RestoreFromJson","jsonString","objValue","rememberMe","allSelections","screeId","userSelectionsData","currentSelection","AddToGroup","RemoveFromGroup","groupValues","entityPair","newGroup","recordIdItem","recordData","GetMaxLimitConst","IsInGroup","entityData","entityRecordUpdated","basketEntityId","gridEntityId","basket","basketRecordId","gridView","ariaExpanded","accordionGroups","accordionGroup","accordionRecord","pageParams","levelParams","schedulerDate","GetSchedulerDate","SetAdvancedLifestatus","GetAdvancedLifestatus","agendaDate","UserVarsStore","MessageDto","PromptDto","AssistantApi","CreateThread","AssistantMessage2","AssistantMessage","GenerateStructure","GeneratedTables","database","_database","cleanNode","applyBindings","OkBtnClick","AIDBStructure","AITableDefinition","AIFieldDefinition","AssistantModes","_welcomeText","_isShowApplyButton","_userInput","_messages","observableArray","_chatHistory","computed","SerializeDbStructure","prompt","ChatHistory","welcomeMessage","_threadId","dbStructure","LinkTables","aiTable","BuildTable","aiField","SendMessage","newMessage","messages","threadId","CreateTables","ShowTablesModal","generatedTables","FormatMessage","BaseModelClass","_lifeStatusName","BaseModel","RegenerateGuid","ClusterSettingsModel","_leftTypeId","_leftTypeGuid","_rightTypeId","_rightTypeGuid","_leftStatusId","_leftStatusGuid","_rightStatusId","_rightStatusGuid","_relationTypeId","_relationTypeGuid","_clusterMode","LeftTypeId","LeftTypeGuid","RightTypeId","RightTypeGuid","LeftStatusId","LeftStatusGuid","RightStatusId","RightStatusGuid","RelationTypeGuid","_relationTypeValueId","_relationTypeValueGuid","RelationTypeValueGuid","ClusterMode","FromJSONArray","clusterSettingsList","clusterSettings","toJSON","newLeftTypeId","newRightTypeId","newLeftTypeGuid","newRightTypeGuid","newLeftStatusId","newRightStatusId","newLeftStatusGuid","newRightStatusGuid","CollectionModel","onlyModified","GetItemBy","SetItemBy","SetItemsToDeleteBy","SetItemsToDelete","DeleteItemsBy","DeleteItemBy","GetItemsBy","GetItemsWhereIn","GetItemByProperties","propertyValuePairs","allPropertiesMatched","pairIndex","propertyValuePair","GetItemsByProperties","OrderBy","curr","ForEach","DatabaseModel","_DataBaseId","_sortPosition","_maxSort","_linkTables","_deletedLinkTables","_deletedSubTables","_isUpdateDatabaseRequired","GetAllFields","fieldsCollection","GetTable","entityTable","subTable","SubTables","lookupTable","lookupTables","DatabaseId","LookupTables","ExampleStatuses","IsUpdateDatabaseRequired","SubTypeId","leftTable","K1TableId","rightTable","K2TableId","K1TableGuid","K2TableGuid","DeletedLinkTables","DeletedSubTables","allFields","matchingFields","Matching","currentEntityMatching","CurrentEntity","MatchSubjectGuid","MatchFieldsGuid","linkedEntityMatching","LinkedEntity","MatchSubjectId","MatchFieldsId","matchingField","_matchingModes","MatchingModes","GetLinkTableByTableGuids","k1Guid","k2Guid","GetSubTable","subTables","_isPrimaryKey","_isSystem","_isIndexed","_isVirtual","_isGlobal","_isOptional","_isUnique","_flags","_calculatedExpression","_formatId","_tableFiels","_linkEditorVisibilitySettings","_defaultValue","_hasDefaultValue","_iconType","_iconId","_iconImage","_translationsMemo","_oldName","_oldLifeStatusName","_propertyFieldId","_propertyFieldGuid","_propertyModeId","_matching","_clusterSettings","_allowCreatingRecords","_filterSubTable","_filterSubTableFieldId","_filterSubTableFieldGuid","_filterSubTableKseq","_referenceGuid","_isEditEnabled","_hyperlinkEntity","_hyperlinkEntityGuid","_hyperlinkPkey","_hyperlinkPkeyGuid","_filterByField","_filterByFieldGuid","SortDescription","SequenceValue","isFieldRestored","isFullDateTime","isLongTime","IsIndexed","IsGlobal","IsOptional","IsOptioanl","IsUnique","CalculatedExpression","FormatId","IconImage","PropertyFieldGuid","PropertyModeId","LinkEditorVisibilitySettings","ClusterSettings","TableFiels","FilterSubTable","FilterSubTableFieldId","FilterSubTableFieldGuid","FilterSubTableKseq","ReferenceGuid","HyperlinkEntity","HyperlinkEntityGuid","HyperlinkPkey","HyperlinkPkeyGuid","FilterByFieldGuid","_sortDescription","IconType","FitlerByFieldGuid","local","fieldList","CreateNewField","fieldConfig","newField","CreateDefaultTranslations","CreateDefaultMemoTranslations","_typeGuid","kinds","kindsList","fieldIndex","ShowModeId","_k_Language","_shortName","_flagBase64","_fileType","_attachment","lang","_exampleId","ExampleId","DisplaySort","lifeStatusesList","lifeStatusModel","_tableGuid","_targetTableId","_targetTableGuid","_lookupFieldId","_lookupFieldGuid","TableGuid","TargetTableGuid","LookupFieldGuid","linkEditorTabSettingsList","linkEditorVisibilityModel","LinkEditorVisibilityModel","_leftKindId","_leftKindGuid","_rightKindId","_rightKindGuid","_fullWidth","_fontStylesId","LeftKindId","LeftKindGuid","RightKindId","RightKindGuid","FontStylesId","newLeftKindId","newRightKindId","newLeftKindGuid","newRightKindGuid","linkEditorVisibilityList","LinkTableModel","_k1TableId","_k2TableId","_k1TableGuid","_linkListRelations","_reversePassSecurity","_oneParent","_linkEditorTabSettings","_memoTranslations","tableList","ReversePassSecurity","OneParent","LinkListRelations","LinkEditorTabSettings","tableFiel","TableTypeGuid","CreateMemoTranslations","_k2TableGuid","RelationTypeFiltersModel","_kseq","filtersCollection","RelationTypeValueModel","_nameTranslations","_reverse","_reverseTranslations","_isNewSort","valuesCollection","ReverseTranslations","IsNewSort","TableBaseModel","_lastLifestatusName","_attachedControlTypes","_dependsOnFieldName","_dependsOnFieldId","_dependsOnFieldGuid","_dynamicFields","_connectionString","_trigger","_sequenceType","_isMergeView","IsRestored","EntityColor","SubjectAreaId","IsLifeStatusModified","ConnectionString","SequenceType","IsMergeView","_databaseId","_subjectAreaId","_onDelete","AttachedControlTypes","GetMaxSortGroup","sortGroup","FieldSortGroupOptions","Item1","Item2","GetCustomFields","GetFieldsBySort","minSort","maxSort","TableFieldModel","_valTableId","_valTableGuid","_valFieldId","_valFieldGuid","_search60","_allowEdit","_dependsOnId","_dependsOnGuid","_filledById","_filledByGuid","_tableTypeGuid","_aliasDefinition","tableFields","tableFieldList","tableField","tableFieldModel","ValTableGuid","ValFieldGuid","Search60","AllowEdit","FilledByGuid","DependsOnFieldId","DependsOnFieldGuid","AliasDefinition","screensJson","_enableDefaultSecurity","_subTypeId","_subTables","_parentId","ParentGuid","UniqueParentGuid","UniqueGuid","EnableDefaultSecurity","LIfecycleLinkDto","LifecycleDto","_parentGuid","_treeLevel","_instancingMaximum","_uniqueGuid","_uniqueParentGuid","_lifestatusDesignObject","_values","_filters","TypeRestrictionModel","_currentKindId","_savedLifestatus","typeList","existsModel","LifestatusDesignObject","RoleLifes","Filters","CurrentKindId","IsLifestatusModified","lifeStatusItem","LifeStatusGuid","GuidStepFrom","GuidStepTo","_typeNameMaxSize","_translation","_roleId","_roleGuid","TypeGuid","RoleGuid","restrictionsCollection","SetLocale","initialDate","toFormat","_format","outputDate","ConvertToDefaultFormat","initialFormat","separator","formatted","Intl","DateTimeFormat","GetISODateFormat","formatEnum","returnFormatWithLocale","extendedModel","FieldTypeFormat","reverseShift","_tzm","timeZoneShift","correctDate","HelpBookStore","GetScreens","GetEntityInfo","GetTypeInfo","GetScreenInfo","GetControlInfo","noDescription","isActive","showFullDescription","previewText","ToggleDescription","ActivateDescription","isStatusFlowActive","BuildLifecicleDesignerFlow","selectedEntityTypes","selectedEntityTypesList","selectedEntityName","selectedEntityTranslatedName","selectedEntityDescription","selectedEntityHasData","selectedEntityHasNoData","HelpDescription","FetchData","HelpStatusFlow","_selectedEntityId","skipBlock","selectedTypeHasData","selectedScreenHasData","selectedEntityScreens","showSelectedScreenData","skipBlockUi","HelpForm","directScreen","selectedScreenSubForms","directTargetedScreen","selectedScreenName","selectedScreenDescription","isBar","GetControlTranslation","ControlComponents","IterateOverNestedControls","dataFetched","SelectControl","MapToControlModel","currentLanguageModel","CanBeRendered","controlComponent","CreateControlComponent","controlTranslation","subFormsNumber","actionBar","mainBlocks","selectedControlSubControls","selectedControlHasData","selectedControlName","selectedControlTypeName","selectedControlDescription","controlComponents","subControlsPresent","controlTranslatedName","typeModel","ActiveHelpScreen","EntityScreen","SubFormControl","SelectedScreenModel","LifecycleDesignerStore","GetLifeCycleHelpData","dataRequest","LifecycleDesignerFlow","_deletedSteps","_deletedLinks","_halo","_freeTransform","_isAdvancedMode","_flowDesignerEl","InitJsPoint","linkPinning","snapLinks","defaultConnector","labelMove","linkMove","Circle","lifecycle","RectWithImage","LinkView","pointerdown","CellView","_dx","_dy","labelNode","removeClassNamePrefix","parentClassName","can","_vertexIdx","removeVertex","startArrowheadMove","_labelIdx","_samples","_V","connection","sample","_linkLength","getTotalLength","addVertex","_commandManager","CommandManager","InitPaperScroller","WINDOW_RESIZE","MovePaperScrollerToStartNode","AddStartCell","paperOrigin","visibleArea","getVisibleArea","contentOptions","allowNewOrigin","paperHeight","setCursor","paperWrapper","ScrollFixer","MOUSEWHEEL","PaperZoomOnScroll","oldScale","Json","InitStepData","InitLinkData","stepJson","OnLifestatusSetTrigger","Packages","DwPackages","NoActionNodeDisable","DateElapsed","DeadlineElapsed","translatableName","NO_ACTION","findViewByModel","linkJson","nextAllowed","NextAllowed","approvalId","ApprovalId","stepsScreenId","testCondition","TestCondition","labelMarkup","YESNO","STEPSSCREENICON","VALID","NOT_VALID","InitAsNextAllowed","GREEN","SetArrowColor","LoadDataType","_canvasTypes","_allowInstantiation","helpButtonPressed","helpButtonPressedTime","screenIsActive","isClosed","HelpEntity","lifestatuses","HelpScreens","HelpControl","HelpType","dataIsRendered","NoDataPlaceholder","activeEntity","activeEntityGroup","canReturn","Designers","designers","SubjectAreaName","isOpen","CleanHelpBook","ExitHelpCursorMode","entityList","acc","entitiesGroup","subjectAreaId","subjectAreaIconType","SubjectAreaIconType","subjectAreaIconId","SubjectAreaIconId","subjectAreaIconImage","SubjectAreaIconImage","subjectAreaIcon","SubjectAreaIcon","subjectAreaName","ShowWithUserMenu","EntityGroupClick","entityGroup","dblf1Key","isSelectedScreen","EnterHelpCursorMode","GetScreenTemplateName","GetFormTemplateName","GetDescriptionTemplateName","GetStatusFlowTemplateName","AppendHistory","helpEntity","GetEntityTypes","StepsCount","ToggleMenu","selectedScreenId","ShowScreenHelp","ShowEntityHelp","_timeSpan","forceExit","ClickStatusFlow","flow","LifecycleObject","isTriggersSet","deadlineElapsed","dateElapsed","dwPackages","dwPackagesNames","businessRoles","BusinessRoles","isSettigsDisplays","isAnythingAttached","LockScreenStore","LockScreenModel","_history","_userManager","_currentUser","_broadcastChannel","postMessage","Relogin","_isOpenedFlag","$preloader","ColumnTypes","NewRecordModel","TranslationValueModel","GetDefaultData","defaultData","InitScreen","System","defaultValueModel","dv","SetControlData","screenDataModel","GetScreenDataModel","fieldValuePair","translationSplit","controlIndex","GetMetadata","retrieveArgs","getDataResult","DeleteRecords","deleteArgs","deleteResult","saveArgs","GetLookupRecordsCount","lookupFieldId","usePagination","GetEntity","GetRelatedTables","lookupId","BREADCRUMBS_HYPERLINK_TOPIC","BREADCRUMBS_NEW_VALUE_TOPIC","BREADCRUMBS_FIELD_RECORD","BREADCRUMBS_UPDATE_RECORD_NAME","getScreenName","BreadcrumbIndex","_recordsMap","_currentHistoryState","_isEnabledInSettings","_isScrolledToRight","_field","OnItemClick","OpenBreadcrumb","CheckScroll","recordsMap","historyState","recordsBaseArray","CleanRecords","LookForPreviousScreen","previousRecord","getRecordsBaseArray","DailyStuff","MAX_SAFE_INTEGER","TreeNodeModel","NestedNodes","IconClass","GetLookupIcon","li_attr","CanExpand","TreeModel","NodesJson","_$container","expandedNode","UpdateTree","NodeModel","GetRootNode","rootNodes","nodeModel","close_all","rootNodeModel","AddRootNode","LoadChildrenFor","AddNewNodes","HasLookups","newNode","treeRoot","get_node","emptyLookupValue","DateColumnEditor","GetColumnData","ToString","DateTimeColumnEditor","BinaryColumnEditor","TimeColumnEditor","TimeSpanColumnEditor","GuidColumnEditor","CurrencyColumnEditor","DocumentColumnEditor","FlagCheckColumnEditor","ImageColumnEditor","IntegerColumnEditor","PKeyColumnEditor","MultiSelectColumnEditor","_currentOwner","_optionsLoaded","_editModeEnabled","_availableOptions","CurrentItems","DisplayedItems","CurrentOptions","_changesMade","CurrentOwner","DisableEditMode","ShowOptions","EditModeEnabled","columnData","FormatLabel","DisplayedOptions","AvailableOptions","searchScreenIfNumber","EnableEditMode","ShowDropdown","UpdateValues","recordsData","displayField","pkField","TableStruct","PkId","UpdateOwnerValue","groupSeparatorRegExp","decimalSeparatorRegExp","Accept","ColorColumnEditor","Component","Convert","ToBase64Image","binaryData","EditableRowModel","dataObject","IsRecordSelected","_dataObject","IsRecordChanged","GetDbValue","GetColumn","GetFieldFormat","GetLookupClassName","GetSize","FieldSize","imageColumnName","GetHexValue","LookupColumnEditor","SelectedOptionId","currentOption","GetCurrentOption","convertedDisplayValue","GetConvertedDisplayValue","ConvertedDisplayValue","currentDisplayValue","OptionSelected","displayedValue","AcceptOption","ClearOption","IconColumnEditor","SortColumnEditor","SystemFields","TextColumnEditor","TypeColumnEditor","YesNoColumnEditor","MemoColumnEditor","showbuttons","NonEditableColumnEditor","NonEditableImageColumnEditor","DecimalColumnEditor","columnInfo","PasswordColumnEditor","ColumnEditorFactory","_systemFieldToEditor","F_DICTIONARY","REPLICATIONID","_columnTypeToEditor","columnEditorFunction","EditableColumnModel","fieldTableId","_nameTranslation","_fieldTableId","_columnEditor","HasTranslations","LookupGridModel","BuildConfig","prevCurrentValue","CurrentPage","AllRecordsCount","AvailableRecordsPerPage","Display","SelectedRecordsPerPage","newSelectedValue","PagesCount","IsPrevPageAvailable","IsNextPageAvailable","IsAnyRecordChanged","IsAnyRecordSelected","AllRecordsSelected","selectAllRecords","dataTable","SelectedRecordsId","ChangedRecords","AddColumn","selectedRowIndex","selectedRowSortValue","upperRowIndex","upperRow","upperRowSortValue","lowerRowIndex","lowerRow","ShowFirstPage","ShowPrevPage","ShowNextPage","ShowLastPage","LookupEditor","_isAllRecordsSelected","_treeModel","_gridModel","_isTreeVisible","_isGridVisible","_isAnyRecordSelected","_newRecordScreen","_cdTablesId","CdTablesEntityId","treeModel","OnReady","ShowSearchForm","LoadRelatedTables","LoadEntity","SelectOrDiselectRecords","_lookupTableModel","newRecordScreen","changedRecords","GetRecordsData","ShowSaveResult","ShowGridForcibly","selectedRecordsId","lookupTableId","DeleteRecordsFromDb","tree","treeNodeModel","lookup","UpdateGrid","GetDataForLookup","primaryKeyFieldName","SearchValue","retrievedRecordsModel","ShowGetDataForLookupResult","activeLanguesId","RenderGrid","defaultLanguageToAdd","RecordsId","ShowDeleteResult","FieldCollectionStore","GetDataRole","GetFieldCollection","selectedCollectionId","SelectedCollectionId","SaveFieldCollection","UpdateViews","Public","Disclosed","Safe","Vault","GDPR","DATA_ROLE_NAMES","PriorityManager","RestrictDowngrade","initialCalculation","highestField","isActiveType","PertableType","targetField","roleType","TypeOfType","deletedOtherFields","applyAvailability","isUnavailableField","deletedFieldsString","SortTypes","FieldTableRow","fieldRow","_fieldRow","_priorityManager","FieldTable","fieldsInitial","_fieldsInitial","_pertableTypes","PerTable","_otherTypes","Other","_fieldTableRows","BuildRowComponents","rowsModel","rowComponent","observableRowComponent","RowChanged","FCRequiredFields","CREATE_DATE","CREATED_BY","CHANGED_BY","LAST_STATUS_DATE","F_OWNER","_isChecked","_selectedDataRole","_previosSelectedDataRole","_fieldTable","_currentCollection","_currentCollectionInitial","_currentEntityInitial","_mutatedEntitiesId","_hasUnsavedChanges","_fieldCollectionStore","SelectedCollectionName","SelectedTypeName","elId","getDataRolePromise","getEntitiesPromise","GetDataRoleText","ChangeTab","fieldTable","typeIndex","ActiveTypes","initialState","mutated","CheckCollectionChanges","ChangeDataRole","confirmCallback","discardCallback","initialFields","initialTypes","pertableTypes","otherTypes","currentType","isCurrentType","allTypes","Available","saveModel","onFail","RevertChanges","Messsage","mutatedEntities","mutatedEntity","MutatedFields","mutatedField","noConfirm","HexColor","DesignedScreenModel","MenuAreaModel","AreaDisplayName","MenuAreasStore","RecentAndFavorites","flowFolder","_recentList","_favoritesList","_targetElem","InitRecentAndFavoritesDropdown","recentListContainer","recentListItems","listNavItem","newTarget","DestroyRecentAndFavoritesDropdown","MenuQueriesStore","GetMenuQueriesMetadata","MenuQueries","_renderQueryTargetId","_menuQueries","InitMenuQueriesDropdown","menuQueriesMetadata","DestroyMenuQueriesDropdown","queryMetadata","queryScreen","queryScreenId","_showSearchButtons","_areas","_menuQueriesTableId","_recentAndFavorites","_recentAndFavoritesTableId","_rootScreen","reloadScreen","areasList","GetAreaByEntityId","GetScreenByEntityId","OpenedTypeFlowFolder","_openedTableTypeFlowFolder","OpenSubMenu","menuAreaModel","_selectedArea","ShowQueriesDropdown","isRecentAndFavoritesDropdownBox","sidebarClosed","menuQueries","ShowRecentAndFavoritesDropdown","recentAndFavorites","ShowHideSearchButtons","addButtons","CanvasDesignerPage","controlsParam","_CanvasDesignerControl","CanvasDesignerControl","FunctionDesignerPage","_FunctionDesignerControl","FunctionDesignerControl","CyberConfigManagerViewModel","Databases","DatabaseViewModel","CurrentDb","databaseModel","CyberConfigValidateForm","_$form","_$errorSummaryBlock","_$errorSummary","_$inputFields","errorElement","errorClass","focusInvalid","DBServerName","errorPlacement","CyberConfigStore","CreateConfig","UpdateConfig","DeleteConfig","AdminPage","CyberConfig","_backupDb","_dbWatcher","_isOk","_validationErrors","_hasValidationErrors","_isCreateMode","validateForm","_validateForm","DatabaseChanged","OriginalName","ChangeCurrentDatabase","errorValue","DeleteClick","ResetClick","GetErrorPage","GetCyberConfigForm","GuestPageStore","UploadImage","RemoveImage","_showRemove","_defaultImage","GetImageUrl","_maxImageSize","hostname","EnvironmentsPageStore","CreateEnvironment","CreateEnvironmentModel","_environmentName","_guestPage","_environmentsPage","TranslationEditorStore","TranslationColumns","GetTranslationTypes","TranslationCell","GetEditValue","CancelEdit","TranslationActionCell","UpdateTranslationModel","TranslationRow","actionCell","codeCell","TranslationHeader","TranslationGrid","_headers","translationColumns","actionHeader","codeHeader","nameHeader","TranslationEditorPage","recordsPerpage","_translationTypes","_selectedTranslationType","_selectedTranslationTypeId","loadTranslationsParams","loadTranslationsPromise","loadTranslationTypesPromise","searchValue","TranslationType","OnSelectTranslationType","convertedTypeId","SetSelectedTranslationType","ClearTranslationType","containerId","GuestHomePage","_imageData","GetIFrame","Detach","IsUserAllowedToEdit","securityWord","NetworkDesignerEvents","RemoteDatabaseAccessChanges","RemoteUserName","NewRemoteDatabaseAccess","NetworkDesignerStore","GetRemoteDatabases","dbs","GetRemoteDatabaseAccess","dbId","access","CreateRemoteDatabaseAccess","accessId","UpdateRemoteDatabaseAccess","RemoveRemoteDatabaseAccess","UpdateRemoteDatabaseAccessDto","CreateRemoteDatabaseAccessDto","RemoteAccessUser","RemoteDatabaseAccess","_uniqueId","_editing","_selectedUser","_remoteUserName","_saveClicked","HasError","UnBlock","ContainsData","sameUser","sameRemoteUser","ClearError","EditClicked","CancelClicked","SaveClicked","userSelected","remoteUserSpecified","DeleteClicked","ShowSearchUserScreen","RemoteDatabaseAccessData","RemoteDatabase","NetworkKey","_accessDataLoaded","_access","ContainsAccess","RemoveAccess","SaveAccessChanges","RemoveNewAccess","UpdateErrors","SaveAccess","HeaderClicked","AddButtonClicked","GetAccess","GetAccessByUniqueId","FillAccess","newAccessData","accessData","HasDuplicate","SetAccessError","CommitCreateAccess","CancelRemoveAccess","CommitRemoveAccess","NetworkDesignerMappings","MapToRemoteDatabases","databasesDto","dbDto","remoteDatabase","MapToRemoteDatabase","databaseDto","MapToRemoteDatabaseAccess","accessDto","NetworkDesigner","_databases","GetDatabaseAccess","RemoveDatabaseAccess","SaveDatabaseAccessChanges","CreateDatabaseAccess","GetDatabases","accessChanges","BoldBISettings","BIStore","GetItems","GetToken","BoldBiDesignerPage","_dashboards","_selectedDashboard","_showEmbedLink","_showFullScreenButton","iFrames","_dashboardContainer","LoadDashboardList","MessageListener","SubscribeSelectedDashboard","_selectedDashboardSubscription","RenderDesigner","UnSubscribeSelectedDashboard","isRenderDesigner","selectedDashboardId","dashboard","$iframe","frameDoc","RootUrl","SiteIdentifier","writeln","ShowEmbedLink","FullScreen","requestFullscreen","webkitrequestFullscreen","webkitRequestFullscreen","mozRequestFullscreen","mozRequestFullScreen","SpaceStatusDto","StatusDto","ServiceStatusDto","ServiceStatus","EnvironmentDto","AdministrationStore","GetSpaceStatus","GetServiceStatus","GetEnvironments","MarkForDeletion","databaseId","UnmarkForDeletion","SpaceStatus","_statuses","_environments","_environmentsWithoutChanges","_searchText","ParseDate","dateString","environmentDto","aValue","bValue","aDate","bDate","localeCompare","AdministrationPage","_spaceStatusTab","_serviceStatusTab","_systemsTab","ShowSpaceStatus","ResetTabs","ShowServiceStatus","ShowSystemsStatus","NavigationTypes","DictionaryComparisonStore","environment","DictionaryComparisonPage","_selectedEnvironment","_selectedDatabase","_comparisonSuccessMessage","_isEnableToCompare","CompareDatabases","comparisonName","environments","host","_pageBodyContainerId","_menuAreas","_openedScreens","CashedScreen","_isDesignersAreaActive","_activeDesignerMenuItem","_screenStates","authenticated","_enableDesignerMenu","_enableLookupEditorMenu","_enableCdToolkitMenu","_enableDatabaseDesignerMenu","_enableFieldCollectionDesignerMenu","_enableFormDesignerMenu","_enableCanvasDesignerMenu","_enableNetworkDesignerMenu","_enableFunctionDesignerMenu","_enableCyberConfigMenu","_enableTranslationEditorMenu","_enableBIDesignerMenu","_enableAdministrationMenu","_pathRunnerRefreshed","_enableDictionaryComparisonMenu","_isRecordRetired","_isProductfruitsInitalized","_enableSystemMenu","GoToConsultScreen","GO_TO_EDIT_SCREEN","GoToEditScreen","applicableTypes","typeIsApplicable","HandleScreenClosedEvent","_currentScreen","ChangeTableTypeFlowFolder","ClosePopupScreens","lastOpenedScreen","ShowFormDesigner","ShowCanvasDesigner","PushState","ShowPortlets","baseScreen","SetNewTitle","RestoreMenuState","MobileVersion","InitProductFruits","Adapter","_popState","IsHomeScreenType","homeScreen","GetHomeScreenType","GoToHomeScreen","homeScreenName","ShowStaticScreen","HandleUrl","pathname","toLocaleLowerCase","stateData","_currentSate","StateIsValid","NavigationType","BackToScreen","GetMyContact","RestoreMenuAreaState","areaScreen","SwitchMenu","menuBlock","GetFieldRecord","ResetScreenStyle","ScrollToAgendaControl","agendaControlInTab","isFound","agendaControl","rowList","isHyperLink","previousScreen","breadcrumbIndex","ResetZIndexValueAndReleaseAllLocks","ShowScreen","GetEditScreenWithTypeTransformation","triggeredFromMenu","screenRecordId","getScreenPromise","resetProperties","ResetStyleProperty","arePortletsShown","ShowLookupEditor","ShowDatabaseDesigner","ShowNetworkDesigner","FieldCollectionDesigner","ShowFieldCollection","CdToolkit","ShowCdToolkit","TranslationEditor","ShowTranslationEditor","ShowCyberConfigManager","BIDesigner","ShowBIDesigner","Administration","ShowAdministration","saveState","FormDesignerPage","pageBodyContainerId","DatabaseDesignerPage","ShowDictionaryComparison","rowsList","HandleGoToRecordScreenError","followUpScreen","editfollowUpScreen","screenDoesNotExistError","openedScreenIndex","hasRoles","Dep","SBIDesignerString","IsLicenseServer","InitMobileLayout","HidejsPlumbConnections","jsPlumb","getConnections","deleteConnection","HideGuestHomePage","_guestHomePage","additionalOptions","newState","stateIndex","PUB_SUB_EVENTS","ThemeBuilderStore","uiSettingsRequestModel","_$themes","_$themesContainer","_$saveProfileBtn","_themeContent","_isColorSelectorsInit","_colorPickersObject","_colorSelectors","_previewTemplate","_colorThemes","_layoutModeDropDown","_sidebarBorders","_defaultThemes","_defaultThemeName","_defaultThemeColor","_selectedCustomThemeSettings","_haveChanges","_userIsAllowedToChange","LockToDefault","_toggleThemeSwitcher","InitColorSelectors","colorSelector","CacheElements","_sidebarPos","_sidebarStyle","_sidebarOption","SetThemeSquares","Custom1","Custom2","Custom3","Custom4","Custom5","ApplyCurrentTheme","setting","Transparent","RgbToHex","InitDropdowns","pickerApplying","isHex","zipped","zippedStyles","BuildCustomThemeArray","bodyHeader","themeSquare","defaultThemeName","colorSetting","layoutSetting","layoutBorders","sidebarPos","sidebarStyle","AddStyles","rule","propertyValueToHex","transparentValue","propertyValueHex","HexToRgb","ThemeSwitcher","themeName","UncheckTheme","ThemeStatus","ShowPreview","modalPreview","transparent","hexModel","typeConfiguration","_logo","_expirationDate","_activeUsersNumber","_licenseUsersNumber","_activePortalUsersNumber","_licensePortalUsersNumber","_activeGDPRUsersNumber","_licenseGDPRUsersNumber","_activeConnectUsersNumber","_licenseConnectUsersNumber","_activeRemoteUsersNumber","_licenseRemoteUsersNumber","_activeLimited1UsersNumber","_licenseLimited1UsersNumber","_activeLimited2UsersNumber","_licenseLimited2UsersNumber","_activeLimited3UsersNumber","_licenseLimited3UsersNumber","_maxRole","_isCloseVisible","_defaultLogo","_maxLicenseImageSize","MapData","ExpirationDate","ActiveUsersNumber","LicenseUsersNumber","ActiveConnectUsersNumber","LicenseConnectUsersNumber","ActiveRemoteUsersNumber","LicenseRemoteUsersNumber","ActiveLimited1UsersNumber","LicenseLimited1UsersNumber","ActiveLimited2UsersNumber","LicenseLimited2UsersNumber","ActiveLimited3UsersNumber","LicenseLimited3UsersNumber","ActivePortalUsersNumber","LicensePortalUsersNumber","ActiveGDPRUsersNumber","LicenseGDPRUsersNumber","UserMaxRole","base64ImageData","MaxLicenseImageSize","changeHandler","PersonalSettingsInstance","ChangeHandler","PersonalSettingsModel","PersonalSettingsUpdateModel","PersonalSettingsStore","GetPersonalSettingsModel","UpdateGlobals","_models","_saveButtonLabel","changesHadler","dataToUpdate","languageControl","NotificationDesignerStore","NOTIFICATION_ACTIONS","GET","Weight","_notificationActions","_isListNotEmpty","_initialEntities","convertDecToViewValue","decimal","maxBinLength","binValue","binValueLength","actionsMapped","ChangeSettingsValue","CheckChangesExistance","binaryValue","decValue","changedElementsCount","ProfilePasswordModel","ProfileCardViewModel","ProfileData","NameTitle","FirstName","PasswordData","RetypeNewPassword","ProfileCardModel","ProfileCardStore","ChangePassword","_toggleCurrentPassword","_toggleNewPassword","_toggleRetypeNewPassword","_userImage","GetDefaultUserImage","profileCardModel","MapProfileData","retypeNewPassword","TogglePassword","SaveButtonClicked","passwordModel","passwordData","ProfileImageClicked","profileData","MiddleName","AvatarData","RemoteDatabaseConnection","connected","_connected","Connected","RemoteDatabaseConnectionMappings","MapToRemoteDatabaseConnections","MapToRemoteDatabaseConnection","RemoteDatabasesStore","GetConnections","connections","GetConnectionUrl","connectionUrl","SetConnected","GetRemoteDatabaseConnectionUrlDto","ConnectionId","SetConnectedDto","DisconnectDto","RemoteDatabases","_connections","_anyConnection","_anyConnected","Connect","ConnectToAnotherDb","ConnectToSeparateEnv","connectionsDto","GetConnectionUrlPromise","_enabledLicenseHolder","_enabledNetwork","_themeBuilder","_licenseHolder","_personalSettings","_notificationDesigner","_profileCard","IsRemote","_remoteDatabases","LicenseHolder","PersonalSettings","ThemeBuilder","ProfileCard","NotificationDesigner","LogoTitle","rest","CompanyInfo","_false","_deduplicationSubjects","_appliedFastFilters","_minimalMatchRate","_matchRecordFieldId","_defaultRangeFromValue","_selectedRangeFilterValue","_recordsPerpage","_isDeduplicationEnabled","_isMatchAllEnabled","_matchStatus","StartCheckStatusTimer","MinimalMatchRate","totalRecords","deduplicateConfirmText","MinimumRate","RefreshMatchStatus","_checkStatusTimer","ionRangeSlider","onFinish","UserMenuStore","WikiJS","_src","LoadFinished","__","targetNode","observer","onbeforeunload","GUEST_USER_NAME","IsDeduplicationAllowed","_showMySettings","_authManager","_showLoginPopup","_userName","_showWiki","CheckDeduplicationAllowance","isInRoleUs","HasAnyType","userImage","UserImage","IsStoppedExitApp","isStoppedExitApp","Logout","GetShowLoginPopup","MySettings","profilePage","AboutPage","Downloads","HelpPage","helpBook","ShowReportIssueModal","contactId","contactScreenMetadata","ContactScreenMetadata","TranslatedEntityName","LockSession","Wiki","_formDesignerControl","SetScreenId","FormDesignerControl","CELL_SIZE","ENTITY_COLORS","MAIN_ENTITY","RELATED_ENTITY","AGGREGATE_FUNCTIONS","SUM","AVG","COMPARISON_OPERATOR_LABELS","NotEquals","IsNull","IsNotNull","Like","GreaterThen","LessThen","GreaterOrEqual","LessOrEqual","NotIn","NotStartWith","EndsWith","NotEndWith","NotLike","JoinTypes","UseMainCondition","LinkDirectionCondition","ConditionOperators","ComparisonOperators","ConditionValueTypes","NO_ACCESS","AFTER_RENDER","ENTITY_SELECTED","ENTITY_UNSELECTED","LOOKUP_ENTITY_SELECTED","LOOKUP_ENTITY_UNSELECTED","REFERENCE_LOOKUP_ENTITY_SELECTED","REFERENCE_LOOKUP_ENTITY_UNSELECTED","REFERENCE_ENTITY_SELECTED","REFERENCE_ENTITY_UNSELECTED","IS_ITERATOR_CHANGED","CREATE_SUB_QUERY","REMOVE_SUB_QUERY","DRAG","DRAG_STOP","MOUSE_OVER","JOIN_TYPE_CHANGED","COLUMN_SELECTED","ConcreteEntityModel","GetLinkTable","EditQueryModel","EntitiesRelationships","RelationTypeModel","RelationTypeTitle","GetRelationTypes","Average","_fieldIcon","GetIconModel","FieldTypeIcon","FieldTypeIconImage","FieldTypeIconType","FieldFormatIcon","FieldFormatIconImage","FieldFormatIconType","RelatedEntitiesModel","TableSecurityUnitModel","autoserialize","NewQueryDto","NewQueryStore","UpdateQueryStore","PRIORITY_LIST","minPriority","FieldInfo","IsTotal","IsCount","IsSubTotal","IsAverage","EntityGroup","_displayPriorityList","EntitiesGroups","_basicMode","AddEntity","UpdateSortPositionValues","StartOrder","StopOrder","CheckTotal","CheckCount","CheckSubTotal","CheckAverage","CheckWrapped","CheckGroup","UpdateFieldList","formatField","TableViewConfig","ExpressionModel","_expressionModel","DoubleScroll","wrapper1","wrapper2","divScroll","UpdateFields","joins","IsSubQuery","GetAllQueryEntitiesFromJoin","DELETE_LIFESTATUS","FieldListMenu","_queryEntityModel","_isEnableSubQuery","_isInSubQuery","IsAllSelected","SelectedColumnsCount","_enableLeave","statusName","GetTemplateHtml","RemoveColumn","queryColumnModel","DraggableHelper","_draggAppendTarget","Drag","AppendTo","$parentNode","$jboxContent","styling","CreateSubQuery","RemoveSubQuery","IsInSubQuery","IsEnableSubQuery","FieldListItem","EntityListMenu","isIterator","referenceField","_referenceField","SelectedEntitiesCount","SetIterator","AddItems","ReferenceTitle","ReferenceFieldId","ReferenceField","SelectEntityItemById","itemToSelect","SelectReferenceItemById","referenceFieldId","SelectLookupItemById","SelectReferenceLookupItemById","referenceLookupFieldId","SelectedItemsCount","IsEnableUncheck","Lifestatus","MouseLeave","EntityListItem","isEnableUncheck","referenceLookupField","_lookupField","_referenceLookupField","_isEnableUncheck","ItemSelectedTriggerName","ReferenceFieldName","ItemUnSelectedTriggerName","IsReferenceLookup","IsReference","ElementZIndexManager","ToTop","JoinTypeImages","RightJoin","InnerJoin","OuterJoin","JoinOptionsMenu","joinType","useMain","enableUseMain","linkDirection","enableLinkDirection","_enableUseMain","_enableLinkDirection","_jointTypeOptions","_useMainOptions","MainTrue","MainFalse","_linkDirectionOptions","RightToLeft","_joinTypeValue","_useMainValue","_linkDirectionValue","JoinTypeValue","UseMainValue","LinkDirectionValue","EnableUseMain","EnableLinkDirection","ChangeJoinType","joinValue","ChangeUseMain","ChangeLinkDirection","_jsPlumb","JsPlumb","_joinType","_entitiesRelationships","_isSubject","_gridSubjectEntityId","_isEnableSelectSubEntity","IsEnableSelectSubEntity","_linkEntity","_selectedEntitiesCount","_isEnableDrag","_objectIndexes","ObjectIndexes","_referenceEntityListMenus","InitFieldListMenu","EnabledColumnTypes","IsLookupJoin","IsReferenceJoin","_joinTypeImage","_joinOptionsMenu","InitReferenceMenu","InitEntityListMenu","objIndex","currentIndex","metadata","referenceLookup","selectedQueryColumnModel","_fieldListMenu","relationship","makerFields","referenceMenu","RemovedDeletedReferenceMenu","entityListItem","RemovedDeletedReferencesMenus","enabledColumnTypes","_entityListMenu","tableRelatedToLookup","AddDeleteEntityToMenu","SetSelectedEntities","selectedEntities","ReferenceLookupField","lookupEntities","referenceEntities","referenceLookupEntities","IsEnableDrag","ReferenceEntityListMenus","containment","drag","repaintEverything","DragStop","GetLeftPosition","GetTopPosition","UseMainImages","QueryLinkEntity","_parent","_backBackgroundColor","BackBackgroundColor","_useMain","_linkDirection","_enabledColumnTypes","_useMainImage","QueryEntityJoin","_parentEntity","ParentEntity","_overlayWrapper","OverlayWrapper","_overlayBody","_overlayTitle","_entity","_subEntityJoins","_lookupEntityJoins","_referenceLookupEntityJoins","_referenceEntityJoins","_minWidth","_minHeight","_joinSource","JoinSource","SubQueryEntityJoin","CanvasWidth","CanvasHeight","AddJoin","RemoveJoin","AddLookupJoin","RemoveLookupJoin","AddReferenceLookupJoin","RemoveReferenceLookupJoin","AddReferenceJoin","RemoveReferenceJoin","DestroyConnections","CalculateMinBoxSize","_jsPlumbConnection","getOverlay","_overlayId","BuildConnection","joinModel","fix","connect","stub","gap","cornerRadius","alwaysRespectStubs","endpoint","anchors","paintStyle","linkEntity","BlockOverlayBodyAndTitle","UnBlockOverlayBodyAndTitle","queryEntityModel","entityJoinModel","queryLikEntityModel","CalculatePosition","entityJoinParams","subEntityJoinModel","subEntityJoinParams","subEntityJoin","entityJoin","canvasPosition","maxTopJoin","DecreaseObjectIndex","StartResize","StopResize","MinWidth","GetAllWrappers","maxLeftWrapper","maxTopWrapper","AllJoins","join_","GetAllJoinWrappers","_entityJoins","gridSubjectId","gridSubjectJoin","InitGridSubject","IsGridSubject","Join","firstJoin","ChangeOrderDirection","QuerySorting","_isMoving","sortItem","GetSortItemTemplateName","AddSortColumn","RemoveSortColumn","StartSort","StopSort","QueryResultGrid","_recordPerPage","QueryBootstrap","InitDropdownEvents","$dropdownMenu","DisplayField","FieldTypesToAggregate","_displayFields","_selectedDisplayFieldsId","_isCrossRow","_functions","_function","AggregateFunction","IsCustom","Functions","CrossValueConfig","CrossTableConfig","_crossColumn","_crossValue","_crossWrapped","_clusteredConfig","IsCrossWrapped","IsCrossColumn","CrossColumn","CrossValue","queryEntities","PrimaryKeyField","_queryEntity","_fieldMetadata","_showInMenu","_genericButtons","_primaryKeyFields","_genericButtonToFieldValue","UpdateGenericButtonList","ShowInMenu","GetQueryScreens","primaryKeyFields","GenericButtons","genericButtonConfig","UpdateGenericButtonConfig","genericButton","OptionAfterRender","TemplateScreen","_queryTypeName","_showInPortlet","IsEnabledShowInPortletCheckBox","ShowInPotlet","isEmbedded","saveToQueries","canvasQuery","_defaultQueryName","_expression","getInstance","_hasPendingChanges","_isEmbedded","_queryResultGrid","_saveToQueries","_queryBootstrap","TemplateScreenTab","CrossTableTabId","FilterTabId","TableViewConfigTabId","QueryResultTabId","QueryScreenTabId","TemplateScreenTabId","ShowQueryName","SingleColumn","_isNew","_screenFields","RemoveAllConnections","InitQueryName","SaveQuery","UpdateQuery","CreateQuery","SaveAndCloseQuery","gridSubjectEntity","updateQueryRequestModel","newQueryRequestModel","exp","_queryType","isFullScreen","GetEntitiesMetadata","EntityIds","InitQueryExpression","translationEditor","SingleColumnType","sortColumn","columnId","InitByQueryExpression","BuilderTab","ShowConnections","FilteringPage","RefreshEntityList","CrossTablePage","ColumnOrderPage","RefreshQueryData","setVisible","Scroll","QueryScreenPage","TemplateScreenPage","showRecordsLimitInput","_showRecordsLimitInput","_isForGrid","ConditionGroup","_top","GetAllConditionItems","conditionGroup","screenVariableConditions","DeserializeQueryExpressionModel","jsonQuery","isDesignTime","_isDesigntime","ConditionItems","ConditionOperator","And","Or","conditionOperator","operator","conditionItem","ConditionItem","HasMetadata","IsEnableShowParam","RaiseChangeEvent","AddRule","SelectFirstField","AddConditionGroup","queryConditionGroupModel","DeleteConditionGroup","DeleteConditionRule","SetConditionOperator","_featureTypes","LowValue","HighValue","_firstLoad","dropDownData","DocumentStatusLookup","ConditionItemField","PasteVariableDropdownTemplate","_fieldValueEditors","_operator","_comparisonOperators","_originalScreenFields","QueryEntities","ShowParam","SelectedFieldId","SelectedValueField","SelectedValueFieldId","IsEnableAddMultipleValues","IsEnableQueryBuilder","IsEnableResetButton","ShowValueEditorButton","ShowValueFieldListButton","UpdateOperators","operators","Operators","UpdateFunctions","functions","UpdateEditor","UpdateScreenFields","compatibleFields","UpdateValueFieldList","RemoveDeletedField","ValueColumn","useMultipleValues","InitPasteVariableDropdown","ShowPasteVariableDropdown","AddEditor","RemoveEditor","ConvertDateTimeValue","SPIMFeatureType","utcValue","GetSimpleTemplate","GetSPIMTemplate","PasteVariable","FormatControlField","PasteFunction","PasteQuery","ShowValueFieldList","ShowValueEditor","CONFIG","TYPES_COMPATIBILITY","_planningDate","_showParameters","_spimParameters","_spimConditions","SpimCondition","GetShowParams","GetAllConditions","autoStart","spimParams","SortSpimConditions","resizePopupOptions","conditionItems","AddSpimCondition","newGroupModel","paramModel","RemoveSpimCondition","GenericButtonModel","QueryScreenModel","CardScreenModel","RelationTypeValue","GetParentEntityFromJoin","GetAllJoins","GetAllJoinsFromJoin","queryJoin","sessionId","stopFn","recording","addCustomEvent","startRecording","stopRecording","packFn","collectFonts","recordCanvas","eventsString","timestamp","SessionStore","GetEvents","GetSessions","userTypes","UserStore","GetCurrentUser","UserRoles","UserTypes","UserDataRoles","signInPromise","RequestUser","LoadUserVars","SaveUserModel","UserVars","getUserResult","userRole","IsCurrentUserMaxRole","GetCurrentUserRoles","rolesList","LifeStatusEnum","ReadyToProcess","SubExample"],"sourceRoot":""}