{"version":3,"file":"app.364054233e10cd81d861.js","mappings":"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B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,GAAIf,IAAK,IAC3B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,GAAIf,IAAK,IAC3B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,GAAIf,IAAK,IAC3B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,IAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAAGf,IAAK,GAC1B,CAACkkc,KAAM,KAAMnjc,IAAK,EAA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AAoB,KAMhC,SAAYC,GACR,8BACA,kBACA,gBACA,oBACA,oBACA,sBACA,cACA,gBACA,cACA,sBACA,6BACA,oBACH,CAbD,CAAYA,IAAAA,EAAU,KAetB,SAAYC,GACR,qBACA,iCACA,uBACA,qBACA,yBACA,yBACA,2BACA,mBACA,qBACA,mBACA,4BACA,oCACA,2BACH,CAdD,CAAYA,IAAAA,EAAa,KAgBlB,MAAMC,EAAqB,CAC9B,cAAe,CAAC/mR,OAAQ,UAAWI,YAAa,GAChD,iBAAkB,CAACpiO,EAAG,+bC1UnB,MAAMgpf,EAET,WAAA74e,CAAY5Y,GACRd,OAAOyJ,OAAO5I,KAAMC,EACxB,EAGA,GADC,EAAAg2D,sCAID,GADC,EAAAA,wCAID,IADC,IAAAnW,eAAc,oCAIf,GADC,EAAAmW,6cCjBE,MAAM07b,GAET,GADC,EAAA17b,sCAID,GADC,EAAAA,wCAID,GADC,EAAAA,4XCPE,MAAM27b,GAET,GADC,EAAA37b,sCAID,GADC,EAAAA,wCAID,GADC,EAAAA,uYCFE,MAAM47b,EAET,WAAAh5e,CAAY5Y,GACRd,OAAOyJ,OAAO5I,KAAMC,EACxB,EAGA,GADC,EAAAg2D,wCAID,GADC,EAAAA,sCAID,GADC,EAAAA,+CAID,GADC,EAAAA,+CAID,GADC,EAAAA,mDAID,GADC,EAAAA,gDAID,GADC,EAAAA,2CAID,GADC,EAAAA,6CAID,GADC,EAAAA,+CAID,IADC,IAAAnW,eAAc6xc,uCAIf,GADC,EAAA17b,kDAID,GADC,EAAAA,yCAID,GADC,EAAAA,6CAID,GADC,EAAAA,wCAID,GADC,EAAAA,yCAID,GADC,EAAAA,kDAID,GADC,EAAAA,mDAID,GADC,EAAAA,gDAID,GADC,EAAAA,0CAID,GADC,EAAAA,kDAID,GADC,EAAAA,4CAID,GADC,EAAAA,gDAID,IADC,IAAAnW,eAAc8xc,mCAIf,GADC,EAAA37b,wCAID,GADC,EAAAA,wCAID,GADC,EAAAA,mDAID,GADC,EAAAA,oDAID,IADC,IAAAnW,eAAcg5K,EAAA,uCAIf,IADC,IAAAh5K,eAAcyxM,EAAA,k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,aAAe,GACpBtrG,KAAKi1N,cAAgB,EACtB,EAGA,GADC,EAAAh/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,IAAAnW,eAAck2d,yCAIf,GADC,EAAA//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,MAAMkgd,GAET,GADC,EAAAlgd,sCAID,GADC,EAAAA,2CAID,GADC,EAAAA,6CAID,GADC,EAAAA,iDAID,GADC,EAAAA,iDAID,GADC,EAAAA,mDAID,GADC,EAAAA,iDAID,GADC,EAAAA,6XCnBE,MAAMmgd,GAET,GADC,EAAAngd,sCAID,GADC,EAAAA,wCAID,GADC,EAAAA,kDAID,GADC,EAAAA,0CAID,GADC,EAAAA,4CAID,GADC,EAAAA,gDAID,GADC,EAAAA,kDAID,GADC,EAAAA,yCAIE,MAAMogd,GAET,GADC,EAAApgd,+CAID,GADC,EAAAA,4CAID,GADC,EAAAA,2CAID,GADC,EAAAA,8CAID,GADC,EAAAA,4DAID,GADC,EAAAA,uDAID,GADC,EAAAA,y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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/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\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}","// 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\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 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} ","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\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}","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\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}","// 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\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}","// 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\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}","// 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 { 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.AddEvent('UPDATE_AGENDA');\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('UpdateAgenda', (id: number, operation: string) => {\r\n this.Trigger('UPDATE_AGENDA', { id: id, operation: operation })\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\t@enumerable static get REMOVE_THE_QUERY() { return manager.GetLocalizedString( 1522 ) }\t\t\t\t\t//Remove the query\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//#region TemplateDesigner\r\n\t@enumerable static get ARE_YOU_SURE_YOU_WANT_TO_REMOVE_THE_EXISTING_QUERY() { return manager.GetLocalizedString( 1523 ) }\t\t\t\t//Are you sure you want to remove the existing query?\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,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAcQ0lEQVR42u2dCbRdVXnHecnLHBIIECRIl5Co5JLc+Zx77xu4FwINXbBASqONWFERV4sEwRawIuQ+EYNgLYOIoEtEEFkMSUUwYbKMSltAKKEEEKWwkMEyiDLJe6HfJ+fK4Zl39tn77H2Gff53rb1Ohnd/bw/f9509/vdWW+GDDz74qH722afTR2mSL/WBBx542eBFdf7J4xN44IGXGV5flCjUT2mKL/WrAsEDD7zYeRxAJql+mTMw1ZemRMyMNl65XH53rVZbVa/XLq9WKxvpzy9WKpVRer6JZHeqVqv/bJs9G+L1KwUA78vTKE33pWkRM6OFR40/TI5+LRnCGDn/m72kw7DAyw6P7ODzNtizQV6vByEXALwvcwZm+NL0iJmJzCsWi/Op0a8Ybxg6DA68zPJOzKo9G+ZN8/UgJodmebONMynN8qWZSmMIjTx647coPf22cdR9SYexgZdVHr0UTsqaPRvm9XoQfwoAMl/mDMz2pVkRMxOZR428Lzn/K28ZR/3PUjRjA88GHgWBk7Niz4Z5M309CA4A/bKZmeNLsyNmZnZUHhkA+X7lZTgDeCGCwGrd9pcxXq8H0QsA4SYQvTHDTF+G5nrPKJnpceaq8mjMP4uc/1E4A3gSqavL/nTbs2GevwcxI/QEom8CYta4iJR44cj5vxrWOOhn76f0LXoLnMJGEJBGHKe+htJpvrSG/13wPfCS5Z1LaXOYIMCMnDm/vwcxK/QEom+2cMa4sUganH8BNeZrIuenn7uGUtGyxgRvy3NBHxXt8/DZyek5q79eAJgp4/xTfMsPszRMQGgrHDXmFwXOz2+DY+Fc+eJRm38g/DCidkaO6m+OlP96O4Sm+gLAzDQVjhrwF0Fv/qClHziX3TzJOYRTc1J/s2Wcf7Jvy2FvzTA1hWu1GgVBt//+FStWTIYz5JMnO4FI9rIG9ffOrr8/AETZbmikcI2GuzJowo/e/kegMfPLU1k9IJs5DfX3NmSyb59wX9oKR414QlBjuq67Kxozv7wIS4en577+fAGgP43Oz8lxnFOCGrPdbvfDGfLLi7hv4Ixc158vAPSltXDeOvCEjQhnyDcv6qYh3l+S1/pTVwaJsXDeJhDpAADnygdPx47BarX6tdw5f5RPnIXzdn5JBQA4V354urYfU0/zXDh/CgsnGwDgXPniBTk/bwen5yNhzx5QEDgvD84fRRMw9sLJBAA4V/54gjd/t1Qq7UzPh8PuGKzVqudZXH+RNAETKVzYAABnyCdPdBqQv8tnSWic/1DYTUP0s+dY6vzKmoCJFS5MAIAz5JcXJgDwh5x6JwoEmyT2DXzdMudX1gRM+tRXYACAM+SbFzYA8MdxnHdREHhQYunwXPpanwXOH0kTMNHChQgAcIYc82QCAH9vaGhgITn8prCrBxQwvjFREMhI/UXSBJydgiOf3aAJHDhDvnlhA4Cf12i4i+j/HpTQGPzm+CCQkfrTogmYaOEmCgC96A1nyDcvTADYEq/RcHYjx94osVfg/F4QyEj92aEJuKUA4O++wRnyzYuiCVgul3fg4+QSQeCCUmnJZGgCxli48QFg/OQNnCHfPIHDjoSYQ9ie0n3hg0D1u53O0DbQBIypcP4AsKXZWzhDvnmC7b1rQg4jOAjcG16tuHbx8HBrW2gCxlC4XgCYaOkGzpBvXpCzjlMEDuQ5jrNdtVr9uYRU+cULF+7an9L6s0cTkLtxQeu2cIZ88wR7+0+T4TWbzXmVSuUeCZmxC+lrk1JYf/ZoAnI3LmjTBpwh37wgZ/UCgBRv6dKl21IQuDvsjkHqNVwUNghAE1CBx40YtGkDzpBvXtCb2psDkM4fBwHi/ZeExqAwCEATUJHnDwCyikBwrtxrAo6o5q/VauxC379bQm/g4omCADQBI/B6AUBFEgzOlXtNwG6U/A0NDexCb/e7JMRGLhkvUQ9NwIg8aAKCF8QTdNO7UfM3ONh6d6VSuVNCY/D7vSAATUANPGgCghfEE4zRuzry57ou2+HPJDQGLz3wwAOmQBZMAw+agOAF8QRj9K6u/A0MDGxNjn2HxLbhK5cvXzYPzh+RB01A8IJ4ggm6rs78cRCgLv7t4XcM1tcuW9bZDpqAEXjQBAQviCfSBNSdv0KhMJuCwG0SOwbX7bVXe2pK6g+agHAuu3je1fATHgYykT8OAsS+VUJj8ArRDVYxOT80AeFcdvHobfxywIz8WabyVywWZ9HvuEVix+CVYYMANAElAgCcId88cvJHAwLAbSbzx0GAfsfNEhqDV1GakoDzQxMQzmUnjxzwmgD7GPPfHm0if8PDgzvS2/1WiR2DaycKAtAElAwA0AQEj+zgBIHDXWY6f53O8LvIFm8Ou2OQgta68UEAmoCSAQCagODxh2zg/SGc7mjT+Wu3h+dTT+BGic1C/9YLAtAElAwA0AQEz/8JWpZ7215qZw4MNOebzF+73Z5OeblOIgj8sFIpT4cmoEQAgCYgeFsIAPuFXJd/3HHqJ9PPV+j/ZprIHwcBYm8IGwQoT+uHhwd2gCZgiAAATUDwAuzkagklH6VkilerVTd4vRNoAk4UAKAJCF7Qx7v266msOX8v0XDguiVL9pihqf6gCQjnyh+PnKhBNvH7rDm/b8fgjxctWjRNQ/1BExDOlU8e2ct+ZCMvZs35fWk9zyPEUn/QBIRz2chrtZp1so3/zqDz99IGURCAJiA0AcEL4HU6w/OoS30c2cjzGXP+3mah6yYKAtAEhCYgeCF5fHKPAsGRLOZBTjWaBef3BYHrjdYfNAHhXHniedJeHQoGR/AWYnqu9laZemmE7Y1fOr60xpOl6yqkIN6zYYKAyfqDJiCcC7yEePR2b1F6NWwAgCYgNAHBs4xHAeBDYQIANAGhCQiepTxRAIAmIDQBwbOYFyIAQBMQmoDg2coTrR5AExCagOBZzBMtHUITEJqA4Nl9ivFNw3oX0ASEsYGXVp5o0xA0AaEJCJ7FPNGOQWgCQhMQPIt5ou3CEfIHTUAYG3hp54nOCijmD5qAMDbwssATHRRSzB80AWFs4GWBJzolqJg/aALC2MDLAk90RFgxf9AEhLGBlwWeSB9AMX/QBISxgZcFnkgcxGj+oAkI4wUvWZ6MIIj2/EETEMYLXrI8lQAATUBoAoJnCU82AEATEJqA4FnEgyageIwETUDwrOVBE3AraAKCl18eNAGhCQhejnnQBIQmIHg55kETEJqA4OWYB01AaAKCl2MeNAGhCQhejnnQBIQmIHg55kETEJqA4OWYB01AcQVBExA8aALK5w+agDA28KAJCE1AGBt40ASUmC2EJiB44MXEgyZgyAAATUDwbORBE1AcAKAJCJ61PGgCCnjQBATPZh40AQU8aAKCZzMPmoAC3vDwwA4wNvBs5UETEDzwoAkITUDwwMsjD5qA4IGXYx40AcEDL8c8aAKCB16OedAEBA+8HPNyrQnYbg8vcF13/3q9/hnHcbr1eu3L3j0AXYU0wpuGeN+AL60BL9+8arW6mp6fo+cRZGftQqEwO03BJHeagO12e7rXGHfQ8w3RXuiwSXSqCjzwOFUqlTfI7m6hF8+RAwPN+dAEjM/5edPD31MDPA3jBS8NPAoET1EvYlWnMzQXmoAGnb9UKu1MBbsFxgteGnn0Uvp3CgY7JTEstl4TkAqxhAr2JIwNvDTzKAA8US6XC3H3jK3WBHQc531UsGdhbOBlgcfDUwoEC+OcE7NWE5BnW6kyH4KxgZcx3gOUZsa1GmatJiBl/nwYG3gZ5X09rqVwKzUB6c1Pea9thrGBl1HeGA0HinFsGrJSE5Ayvg7GBl7GeZfHsWPQOk1A13UXUA9gFMYGXpZ5vGGoXC7vAE1AycI5jnMMjA08G3j0IvsUNAElC+c49atgbODZwKvVqpdDE1CycJTpB2Fs4FnC2whNQMnCUbfpJRgbeJbwXoQmoPyYZgzGBp4NPJ7Mhiag5jENjA28LPGgCah5TANjAy9LPNNHhK3TBISxgWcTz/QRYes0AWFs4NnEgyag5jENjA28LPGgCah5TANjAy9LPGgCah7TwNjAyxIPmoCaxzRpMI5KpfJbev4PPW+vVqs30J83ULqR/n4n/f2XlF5N2cGUpyndTekG+v7VlNZSWlev165lhVv69/vp516E8+vnQRNQ85gmgcbks9230fML9FxGz+1FjdnpDG3TaDiLHad+sPe9aym9FJPx/o5+1zpy7M9Qasro2BeLxfn0/X3peyexCCtxRg22h4puf+aCCTQBNY9pYmzMZyidGEbtNUxjttvtfr5Ygphn9kRONRvbTZTXD/K9CbqMjY+zEvNoCgSbdLdHXiaIoQmoeUwTQ2O+Tgb/xSBdNw2NOYkcazn9jqu29JaVKS9LUtPTNfym6ePgwsMbXe2RlwliaAJqHtMYbszHWI7M9NLNuPJ+QaW8PKSgvH7MdP78n06nPbNWq55NedoctT3yMkEMTUDNYxqDuu4bG43GjnE6v1feB2TLy2rJLJkep/P7eY2Gu5Ly9nKU9rB1gjiuvfjWagIm0Zj0Nv01pQUJOP+gQnnvJeffLinn7yXXdfZWXTlQ3aGWxdUD0+1hnSZgQo25b9zOzx96k18kWd5HeGIuaefv8bxJzddV2sPEppc0Lh1CE1DzmEZ3Y/KSWRLOXyqVtqHf/YpEeXl5b3FanN8XxD6t0h4mNr2kcd8ANAE1j2kMXOfUitv5PWNeJWNsLDCZNuf3lWW9bHuY2PSSxk1D0ATUPKbR2Zi8rJWE83s9nfslnP8OXopLo/Pzx3XdXUVDAR071LK4YxCagJrHNDobkxzr2yqV32i4e9B3TyfGrTwj76X/pL+vpeeX6HnQ0qVLt52IxxNoMsZG/z8Q1Vm9i1aPonQu9Xq+T8+LKZ1B+f1ws9mcF9U4iHO2aaWcLG4Xhiag5jGN5sZcJZs/cpbBkLPfrG34U3KMf6Lx/s7vHObUvhfW2Oj7N0ccoy/lcwqCvL5GP3dOs9nYJsKptL+Q2dSUoQniSDxoAmoe0+hsTDL6gxXy9yOFvI3R71rvOPUVQ0MDu/TW0EMa24oIxrGCnVsin4+0Ws0lETY1XW1SKQeagNAE1N2Y+8rmj0/8RckfBYLnJfL34qJFi6YpOv8Q5fUPCvW3ac89B3dSMQ76fR8yqZQDTUBoAmptTHLGv1TI3wkx5u8HKsbBQYOc8VH1/NX+VcU4XNedw0HHlFIONAHld0dCE1Ciex0mfytWrJhMjvm9OPJHzvRxFeOg/P1DlPzx/gTRbsOJ2peYd5pSyoEmoFIAgCZgQDpWtfLpdx0iestGzV+5XH6vYrfwPg31t0qlfR2nfpYppRxoAspvj4YmYHD6bsTKn8JvWwoEj+vOH6sO9db+ZfJHv2c3HfXHSkcq7eu6zuGmlHKgCSi/PRqagMHpVzrGSIVCYSrv1COn/YVGGa//UKk/PiKsaYfkyzzckW3fVqs5ZEopB5qA8tujoQkoSI1Go6Orm3TggQdMoS7wYZSnn0fNH08AqtRf0IYchfrbXbZ9W63GLqaUcqAJKL89GpqAAt64O9y1bdpoNNyDyBl/qpo3egP/i+KwZL3GfRL7qxgv9x5M7FCDJqD89mhoAop5Y+Sse5vascVOxFuFZfNHPYnVimPC+3TVH+X7CBXjpQDwv9AEhCZgZjQBydAfHhwcnGtqaZPnCFjdlhzjDYn8/aOKcVBZntC4D+E4lfJ6MuPQBIQmYKY0ATewo5pct+Wjx6w+FCZ/juMcpWIcxH9Op3S34pv6LmgCQhMwU5qA3rj7enrONeH8/kMzvOdelD8aAhypOCZ8QVf9UQ/gFJXy8goGNAGhCTgro0c+H6b/c0zO3pZKpffQ73lWkL+jVOqPnO//dNUfBYCTFXs690ATEJqAWdIEHN8TGCXj/xrvbTc4e3uQIH9Hq9QfT8Dpqj8+yqz4pn4AmoDQBDQypomzMcmZfkNOcEzvth3djUnsGwPyd6JK/RHzPl31R989XPFN/SQ0AaEJaGRMk0Rj8sQdvw2Hhwd31tmYfHdggFT5WYr1t15X/XH+VMrLh4mgCQhNQCNjmiQbk4IAX/B5zuDgQEFHYw4Pt7Yl7m8myN9alfojpz1bV3mbTbcsaxx8ihCagNAENDamScNSEAUCFtq4iP78/ujlrf1wgvzdp8KjAPAxXcGObzlW2IdQgyYgNAGNjWlSthTEun+X0L/tol7e2pcm0unj04ayvEbD2c3LV9TyblDch/ARaAJCE9DYmCaNS0HeRZ0Hq5SXvvuJgFn4quJe/J9ELa/rup9WMQ5ePYEmIDQBjY1p0roUxNt8yfgbCs761wEB4BgV4+BgFKW8rFtI4/+dFLvpP4MmIDQBjY1pNDbm5okUfSIYxwUK5f2bgKBynaJx9NF3b1etP8epfz7CdWej0ASEJqCxMY2uxmRDbbfb/fS2O5T+fLcO4+DLPmXLS9/5ZEAe/6B6aQff1sP7GBQmOG9iXQPFfQ2HmlTKgSagUgCAJuBEAWDc723VatVvkxE/p2ocrBMoW17vJqEg7lGqxuFdCvKYRP39uFqtbK0a3On3bTCplANNQPnt0dAEDBEA/PlbtqyzHb0992dxS29P+1gYFh/3VTw4c62AvWnhwl37VSP5wMDA1nyoh1jPBIz573Uc5xNRJqxct76EOKMmlXKgCSi/PRqagIIAIMpfoVCYTT8/yOIY9DyV7xOk52Wc6M/nUTqau9sq5fX0+18KsSPvMA2RfFK5XC5RXa2kdCwxV1H6YKPhLNZzKq12fpqUcoJ4VO410ASUcn77NAE5ACR9q653dVeYTTm/2nvvzo5x5y8sr9VqcmB5PU1KOYKexAg0AUPXn52agF4ASMz5/Utm4cr7x9t6Uuf83tj8hrQp5QiWmrvQBAxVf/ZqAvJ4NUnn5wlDSWMbq9Wq+6XN+R3HOS6NSjmCpdduXHMIptsDmoDqe91Hk3L+YrE4n3ogTykY2wvkcHukxfld1zmAz0WkUSlHsNTcjWsC0XR7QBNQ/Zbe0SScn7UFyPlviyBb9lS5XC4k7fyNhruc6vB3aVXKESw1d+NaPTDdHtAEVN/uOhq38/OKAl+5pcHYXpjoavOYnP/vqByvpFkpR7DU3I1rtcl0e0ATUP1I72jMY35eJ9+o0djGiPeVnlpRHM4/ONha4Dj1C7KglCNYfenGtdoUwwQsNAFVG5NPrvFlmiaNjXUFef8ApddNGBuV4Ze8Bbd3j58pYxsYaM5nNeOsKOUIVl+60AQMrL9caQKO8aEbeq7kLrouYyOnXEjML1N6PqZ9DXyw6XOtVnOxKWNzXefDb61GpF8pR/CS6UITEJqAWxTh8O4GOJF+9q94hx8fGApRWX0sCsLXgLHT+w8XJbA9dTMLg74lDVY7lP78vl4ZdDgXH1HW0R6Uv9O8HXkjnkPKphH+vsc5TYZHZbgZmoDQBAyb+I33DF8fxrf+0vNO+vvtfPEnOzp3wT31ntTuTffOKrBS773eMeGbyuXyeyOso5+ZxYs6oQmoeY4or5qANvD4/r5isThL0TjY8NaiPaAJmHdNwKzzLlM1jmazOYOCyJ1oD2gCbhXnmAbGpp33WVXjoGHEDhOpKqE9oAloZEwDY9O+evBGvV7bW9U4WBp9/I3EaA9oAhob08D5jfCe9S47UTKOarU67J8IRXtAEzDKmGYMzho/j5z4Lt7so2ocxPhbFlpFe9QnlJ0ztKnJLk1AqrTfwlkT430n4l2Hq9Ee7zyzEcOmJrs0AYP2y8NZY+EdHiW4UxC4EO0R7Xq3XGsCUgC4FM6aKO81+ruj2r7Lly+bR4zr0R5/TJeYPrJtnSYgBYBPwVmT5dEw7HFe4lNt32Jx6RxPUTnv7XG46SPb1mkCNhqNHXlpCs4KXpZ5fKkLPbc3rddgnSag1wu4AsYGXpZ5ZMM/iEOsxTpNQP44jlP2LwfC2MDL2EWxfEHKEtPOH0Y/Q9H5k9ME9C0HfgPGBl5GeWfG4fxWagK+PQyobE2F2QRjAy9rpyz5oFQczm+lJqA/M82mW+ZtqjA28DLi/L8ulUrvicv5rdQE/HMZqnrDE7OAsYGXZh7fwrx7nM5vpSbglirLdd0FrGIDYwMvpW/+6/myl7id30pNwIDM9PHGCpneAIwXPMNLfU9QOiyuCb9caAKGvFL745R+4m22gPGCFxvPs7kbKX20UChMTdL5rdQElMkMy3hTg+xJUfiTVNjj6bk6ilqsbvVZ8LLP82zqeO59su7BlnQUk3J+KzUB03oFNnjgpZFnnSYgjAM88HKsCQgeeODlWBMQPPDAy7EmIHjggZdjTUDwwAMvx5qA4IEHXo41AXXzqBLaQevAMDbwssyzThPQwBipm+T97eCBZ5JnnSaggTFSN8n728EDzyTPSk1AzWOkbpL3t4MHnkmelZqAmsdI3STvbwcPPJM8azUBNY6Rukne3w4eeCZ51moCahwjdZO8vx088EzyrNYE1DRG6iZ5fzt44EETMNkx0kiS97eDBx40AROsLBZ3MDBGgvGClwpenjQBlXis8GJgjATjBS8VvNxpAsry/AFA4xgJxgteKni51gQMw+sFAM1jJBgveKngQRNQwPMEHpMZI4EHHjQBEx8jjSQ2RgIPPGgCJj5G6iY2RgIPPMM8aAKKx0jdxMZI4IFnmAdNQPEYqZvUGAk88EzzoAkoHiN1kxgjgQdeHDxoAorHSN24x0jggRcXD5qA4jFSN84xEnjgxcmDJiA0AcHLMQ+agNAEBC/HPGgCiisImoDgQRNQPn/QBISxgQdNQGgCwtjAgyagxGwhNAHBAy8mHjQBQwYAaAKCZyMPmoDiAABNQPCs5UETUMCDJiB4NvOgCSgeI62BJiB4tvKgCSgeI50U1E1yXXcOjA28LPIGBwfnCgLA743mLyOagEcGdZOq1eowjA28LPIqlUpdEAAeM5q/jGgC7hNUSRQAzoaxgZdRQdATBQFgg8n8ZUITcMmSPWZQpHwlqJtUKpV2hrGBlyVeoVCYym94wcvtZGPOH+WTQKT8kSBS3thut/thbOBlhUfOvVo0AUhDXyf3zs8fqohDRJVFFXpls9mcAWMDL+08steV1KsdDbJn+v8HTTl/pjQBvc8kcvCHREGAK63RcA/pdIa2gbGBlzYevaDmkZ2eSWmzyJYpHW4gf9nTBPRFzQ+E6DL10uOOU7+0Xq+d4d0r0FVII7wJiW8m8qU14IGnwDudXk7XCOay/C+y+/faqz3VgPNnTxNwXBC4LITzvynaXhkmgQdeEjxy/jfoOWDA+bOpCej/8KYfGgpshLGBZzHvswacP5ImoF8XYI6GI8KReLzkR5X0CIwNPAt5XzXgb5E0Af26ALM1HBHWwisWi/OpJ3AHjA08S7r9o2TPxxvwt0iagDN9ugCzNBwR1spbtqyzNVX4qZRee6vyaxEbc3yDggdeLLyHKQC0DfqbkiZgTxdghg/QF2EMYozXajUXU/T8TtgZ1okb850punGAB17wPn9KqxYv3n16DP4mpQk4zTdumB7xiHBsPJ4gpCDwEarUC+l5D6XnvBlVqQaNYhjggTdBF/9Vej5JL6qbKX2F/twhc+5Llb/5lgqm+tKUiJkBDzzw0s7zbRKY4kv9ETMDHnjgZYHnrQ2+I0U8LwAeeOBlgedFj0m+1BcxM+CBB17Kef8PaL++50cYB+gAAAAASUVORK5CYII=\",\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 RecordId?: number;\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, transactionId: string): 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 transactionId: transactionId,\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, transactionId: string): 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 transactionId: transactionId,\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, transactionId: string): 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 transactionId: transactionId,\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, transactionId: string, 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 transactionId: transactionId,\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, transactionId: string): 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 transactionId: transactionId,\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, transactionId: string) {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/AgendaApi/AcceptAppointment',\r\n type: 'POST',\r\n transactionId: transactionId,\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 { record } from 'rrweb';\r\nimport * 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\nimport { HttpTransportType, HubConnection, HubConnectionBuilder } from '@microsoft/signalr';\r\nimport { CookieManager } from '../../Common/CookieManager';\r\nimport { SignalRNotificationManager } from '../../Components/SignalR/SignalRNotificationManager';\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 private _signalRHub: HubConnection;\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 || this._renderMode() === RenderModes.Edit) {\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({ groupByResource: 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 SignalRNotificationManager.Instance.On('UPDATE_AGENDA', this, (evtArgs)=>{\r\n this.LoadData({ recordId: evtArgs.data.id, operation: evtArgs.data.operation });\r\n });\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, usersSchedule, userSpecialDays) {\r\n this._agendaItemsPerDay = agendaItemsPerDay;\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, usersSchedule, userSpecialDays) {\r\n this._agendaItemsPerDay = agendaItemsPerDay;\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 = false, recordId, operation } : { groupByResource?: boolean, recordId?: number, operation?: string } = {}): P.Promise<any> {\r\n if(recordId != null){\r\n this.RemoveDuplicatesNonBusiness();\r\n } \r\n\r\n if(!recordId){\r\n this._loadInProgress(true);\r\n }\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 RecordId: recordId,\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\r\n if(!recordId){\r\n this._allEvents = data.AgendaItems;\r\n }else{\r\n const existsEvent = _.find(this._allEvents, (event: any) => event.RecordId === recordId);\r\n let newEvent = data.AgendaItems[0];\r\n if(existsEvent){\r\n this._allEvents.splice(this._allEvents.indexOf(existsEvent), 1);\r\n }\r\n \r\n if(newEvent){\r\n this._allEvents.push(newEvent);\r\n }else{\r\n return;\r\n }\r\n }\r\n \r\n if(!recordId){\r\n \r\n this._tablesTypes = data.TableTypes;\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\r\n if (isAgendaDayOrListOrTime) {\r\n const { AgendaItemsPerDay } = data;\r\n this.SetAgendaDayData(AgendaItemsPerDay, usersSchedule, userSpecialDays);\r\n if (this._isDataLoaded || !isMobileWidth()) {\r\n this.ShowToDoBlock();\r\n }\r\n } else if (isAgendaWeakOrWorkWeek){\r\n const { AgendaItemsPerDay } = data;\r\n this.SetAgendaWeakOrWorkWeekData(AgendaItemsPerDay, usersSchedule, userSpecialDays);\r\n } \r\n\r\n if(this._viewRenderMode !== FULL_CALENDAR_VIEW.AGENDA_DAY){\r\n this._plannings = data.PlanningItems;\r\n }\r\n\r\n this.MapOwnersList(); \r\n this._groupByResource(groupByResource);\r\n this.CustomScrollToHour(8);\r\n }\r\n \r\n this.PrepareData({ recordId: recordId, operation: operation });\r\n\r\n this._isDataLoaded = true;\r\n deferredResult.resolve(null);\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 private FindType(name: string){\r\n return _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === name);\r\n }\r\n\r\n private PrepareData({ recordId, operation } : { recordId: number, operation: string }) {\r\n const todoEvents: Array<AgendaItemModel> = [];\r\n const appointmentEvents: Array<AgendaItemModel> = [];\r\n const appointmentType =\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) === appointmentType.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 => {\r\n screen.TransactionId = this.Screen.TransactionId;\r\n screen.ShowInModal();\r\n })\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, this.Screen.TransactionId)\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, this.Screen.TransactionId)\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({ groupByResource: 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, this.Screen.TransactionId, 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( { groupByResource: 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, this.Screen.TransactionId)\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({ groupByResource: 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 }, this.Screen.TransactionId)\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({ groupByResource: 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, this.Screen.TransactionId)\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({ groupByResource: 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({ groupByResource: 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({ groupByResource: 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 screen.TransactionId = this.Screen.TransactionId;\r\n\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({ groupByResource: 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 screen.TransactionId = this.Screen.TransactionId;\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({ groupByResource: this._groupByResource() });\r\n });\r\n\r\n screen.On('RECORD_REMOVED', this, () => {\r\n this.Trigger('AGENDA_CHANGED');\r\n this.LoadData({ groupByResource: 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 => {\r\n screen.TransactionId = this.Screen.TransactionId;\r\n screen.ShowInModal();\r\n })\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 AfterRender(el: Array<HTMLElement>): void {\r\n super.AfterRender(el);\r\n ko.utils.domNodeDisposal.addDisposeCallback(this._el, ()=> {\r\n SignalRNotificationManager.Instance.Off('UPDATE_AGENDA', this);\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 && this._gridId) {\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 class=\\\"globe-logo\\\" height=\\\"35\\\" src=\\\"../../../../img/Custom/App/official-main-logo-header.jpg\\\"> <!-- /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\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}","// 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 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\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 class=\\\"app-logo\\\" src=\\\"img/Custom/App/official-main-logo.jpg\\\"> </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=\\\"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\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}","// 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 src=\\\"https://spheeres.com\\\" 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\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}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"about-page\\\"> <div class=\\\"logo-block\\\"> <img height=\\\"115\\\" src=\\\"../../../../../img/Custom/App/official-main-logo.jpg\\\" title=\\\"Spheeres\\\"> </div> <!--<div class=\\\"edition-block\\\">\\r\\n 2017 summer edition\\r\\n </div>--> <div class=\\\"dev-block\\\"> <!--<div class=\\\"version-info\\\">Version <span>5.12.1233.15</span></div>--> <div class=\\\"company-info\\\">© CyberThing Holding BV, The Netherlands</div> <div class=\\\"app-info\\\"><a href=\\\"http://spheeres.com\\\" target=\\\"_blank\\\">spheeres.com</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\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}","// 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 href=\\\"/Soft/DesktopClient.msi\\\"> <!-- ko text: _labels.DOWNLOAD_CLIENT --><!-- /ko --> </a> </li> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"attr: { title: _labels.DOWNLOAD_MAIL_PLUGIN_32 }\\\" href=\\\"/Soft/Outlook Add-In(32-bit).msi\\\"> <!-- 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=\\\"/Soft/Outlook Add-In(64-bit).msi\\\"> <!-- 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,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD//gAEKgD/4gIcSUNDX1BST0ZJTEUAAQEAAAIMbGNtcwIQAABtbnRyUkdCIFhZWiAH3AABABkAAwApADlhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApkZXNjAAAA/AAAAF5jcHJ0AAABXAAAAAt3dHB0AAABaAAAABRia3B0AAABfAAAABRyWFlaAAABkAAAABRnWFlaAAABpAAAABRiWFlaAAABuAAAABRyVFJDAAABzAAAAEBnVFJDAAABzAAAAEBiVFJDAAABzAAAAEBkZXNjAAAAAAAAAANjMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAEZCAABYWVogAAAAAAAA9tYAAQAAAADTLVhZWiAAAAAAAAADFgAAAzMAAAKkWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPY3VydgAAAAAAAAAaAAAAywHJA2MFkghrC/YQPxVRGzQh8SmQMhg7kkYFUXdd7WtwegWJsZp8rGm/fdPD6TD////bAEMAAgEBAgEBAgICAgICAgIDBQMDAwMDBgQEAwUHBgcHBwYHBwgJCwkICAoIBwcKDQoKCwwMDAwHCQ4PDQwOCwwMDP/bAEMBAgICAwMDBgMDBgwIBwgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAHgAWAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AP0wooor6w8cKKKsaVpV1rupRWdjby3V1McJFGMsf8AO5PA70basCvSxI08yxxq0kjnCoo3M30Fez+A/2WI1SO48RXDSMcH7HbPtQezv1P0XGPU16n4e8I6X4Tt/K02wtbNSMHyowrP/ALx6t9STXn1cxhF2jqdMMNJ6vQ+aNK+DvirWU3Q6HfKD3nC2/wCkhU1ja5olx4c1Wayu/JW5tztkWOVZAjd1JUkZHcdq+wa+bfi58Er/AOH1zNfW/mX2jyOW8770lvk9JP8A4voe+CRmcLjnUnyzsuw6tDljdHC0UUV6RyhRRRQAUUUUACo0rqkas8khCqqjliegH1r6g+EnwutfhroCJsjk1K4UG7uAMlm67Af7o6Ad+vU14H8H7BdS+KWgxMMqLoS/igLj9Vr6orycyqu6pr1OzCxVuYKKKK8k7ApssSzRsjqro4KsrDIYHsadRQB83/Hv4YRfD7xFFcWKbNL1LcY4x0t5B95B/snII/EdAK4Ovoj9p6wW7+F7SsPms7uKVT6Ekp/JzXzvX0OBqOdK73Wh5uIioz0CiiiusxCiiigDqPgnN5HxY0Nv+m7L+cbj+tfUlfK3wisrq9+JejG1t5bhre6jll2Lny4wwDOfQDPWvqmvFzL+IvQ7sL8IUUUV5p1BRRRQBwP7S03lfCe7X/npPAv/AJEB/pXzjX0V+01ZXV98NcWtvNcLHdJLP5a7vLjVXJc+wwMntXzrXuZb/C+Z5+K+MKKKK9A5wooooA9C/Zj1MWPxQ8lul7ZyRD/eBV/5Ka+iq+RfB3iqTwP4ostWhiE72LlvLLbfMUqVZc4OMgnnBxX1tZ3cd/aRTxNujmQSIw7gjINeJmUGqil3O7Cy92xJRRRXnHUFFFFAHOfF7U/7I+GOuTdzZvEp9C42D9WFfKy8CvdP2pvGp0/QrfQY0Vm1P99M+7mNI3UqMf7TDrnjaeuePC69zLYNU+Z9WcGKleVgooor0DmCiiigAIyK+lv2fPFK+JvhlYoWzcaaPsco9Nn3PzQr+Oa+aa9F/Zg1O4tfiQ9rHIwt7q1czJ/CxXBU/UZIz/tGuPHU+elftqb4eVpn0PRRRXz56IUUVz/xW1S50X4cazdWcjQ3ENqxSRfvJ2yPcDJqoxu7CbsrngXx38Ur4q+J188bb7exAs4yO+zO7/x8v+GK5CgDaKK+npwUIqK6HlSld3CiiirJCiiigAr1r9lfwner4hudakt2XT2tHt4ZmxiRzIucDrxsIzjHavJ4IZLy4SGCOSeaQ7UjjUu7n0AHJP0r6q+Fnhp/CHw90nT5V2zQwBpV/uyOS7j8GYiuDMK3LT5V1OjDwvK50FFFFeEegFZnjXSX1/wdq1jGu6S8s5YUBPVmQgdfc1p0U07O6DfQ+O9U0m60HUJrO8hktrq3IWSJ/vIcA/yIP41Xr0j9pzwlcaX46bVlhlNnqEUZeYKSiSqNm0nsdoUjPXn0rzfOa+mo1PaQUjyqkeWTQUUUVqQXNC8Pah4ovPs+m2VxfTD7whTcE/3j0Ue5IFeneDv2Vry92za7erZxnk29qQ8n4uflX8A31r2vTtMt9Is1t7S3htbeP7scSBFX6AcVPXh1cxnLSGh3xw0VuY3hD4f6P4EtjHpdjDbsww8uN0sn+85yx+mcCtmiiuGUm3dnSklogoooqQCiiigBssSzxskiq6OCrKwyGB6givO/Gv7NOh+JC02n7tFum5/crugJ94+AP+Ala9GorSnVnB3g7EyipbnzD4v+BniTwdud7M6harz59nmQAe643D34wPWivp6iu6OZTS95XOd4WPRhRRRXmnUFFFFABRRRQAUUUUAFFFFABRRRQB//2Q==\";\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\tREMOVE_QUERY: 'REMOVE_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\tSubjectEntityId: 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> <!-- ko if: $data.ShowRemoveQueryButton($parent) --> <a data-bind=\\\"click: $data.RemoveQuery.bind($data), preventBubble: ['click'], attr: { title: _labels.REMOVE_THE_QUERY }\\\" class=\\\"remove-query-btn\\\"><i class=\\\"fa fa-close\\\"></i></a> <!-- /ko --> </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 { CONFIRMATIONS, LABELS } from 'Core/Components/Translation/Locales';\r\nimport {\r\n\tConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n\tTypes as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\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.REMOVE_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\tpublic ShowRemoveQueryButton(queryExpression) {\r\n\t\tconst isTemplateViewMode = queryExpression && queryExpression._viewMode && queryExpression._viewMode === ViewModes.Template;\r\n\t\treturn this._isSubject && isTemplateViewMode;\r\n\t}\r\n\r\n\tpublic RemoveQuery(){\r\n\t\tlet confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: CONFIRMATIONS.ARE_YOU_SURE_YOU_WANT_TO_REMOVE_THE_EXISTING_QUERY,\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, () => this.Trigger(EVENTS.REMOVE_QUERY));\r\n\r\n\t\tconfirmationDialog.Show();\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.AddEvent(EVENTS.REMOVE_QUERY);\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\tqueryEntity.On(EVENTS.REMOVE_QUERY, this, () => this.Trigger(EVENTS.REMOVE_QUERY));\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\\\"> <label class=\\\"custom-toggle_container mode-check large-mode\\\"> <span class=\\\"custom-toggle_wrapper transition\\\"> <input type=\\\"checkbox\\\" class=\\\"toggle-checkbox\\\" data-bind=\\\"checked: IsCrossTable\\\"> <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: _labels.CROSS_TABLE --><!-- /ko --></span> </label> <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\tSubjectEntityId: this._expressionModel.Entity.Metadata.Id,\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\tprivate RemoveQuery() {\r\n\t\tthis._expressionModel = new QueryExpressionModel();\r\n\t\tthis._expression(null);\r\n\t\tthis._queryResultGrid(null);\r\n\t\tthis._subjectEntityId(null);\r\n\t\tthis._hasData(false);\r\n\t\tthis.TableViewConfig(new TableViewConfig());\r\n\t\tthis.CrossTableConfig(new CrossTableConfig());\r\n\t\tthis.ConditionBuilder(null);\r\n\t\tthis.QuerySorting(new QuerySorting());\r\n\t\tthis.QueryScreen(null);\r\n\t\tthis.TemplateScreenTab(null);\r\n\r\n\t\tif (this._jsPlumb()) {\r\n\t\t\t_.each(this._jsPlumb().getConnections(), (connection) => {\r\n\t\t\t\tthis._jsPlumb().deleteConnection(connection);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tBlockUI.Block({Target: this._el});\r\n\t\tNewQueryStore.New('')\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._queryBootstrap(new QueryBootstrap(data.Entities));\r\n\t\t\t\tthis._queryBootstrap().On(BOOTSTRAP_EVENTS.ENTITY_SELECTED,\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\t\tthis.InitQueryByEntityId(eventArgs.data.EntityId);\r\n\t\t\t\t\t\tthis._queryBootstrap(null);\r\n\t\t\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._expression().On(EVENTS.REMOVE_QUERY, this, () => this.RemoveQuery());\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","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","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","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","Title","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","operation","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","REMOVE_THE_QUERY","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","ARE_YOU_SURE_YOU_WANT_TO_REMOVE_THE_EXISTING_QUERY","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","Config","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","groupByResource","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","_agendaItemsPerDay","agendaPerDay","Item","SharedWith","currentSpecialDay","currentDay","SpecialDayStart","SpecialDayEnd","daySchedule","schedule","Rendering","SetAgendaWeakOrWorkWeekData","GetShortDateFormat","GetMonthAndYearFormat","RemoveDuplicatesNonBusiness","UsersId","SubjectId","StartDate","EndDate","GetScheduleRequestModel","ShiftTimeZone","GetSpecialDaysRequestModel","GetTableTypesModel","existsEvent","newEvent","AgendaItems","_tablesTypes","isAgendaDayOrListOrTime","isAgendaWeakOrWorkWeek","_firstFreezeTimeDate","FirstFreezeTimeDate","UserSpecialDays","UserSchedule","UsersSchedule","AgendaItemsPerDay","ShowToDoBlock","_plannings","PlanningItems","MapOwnersList","CustomScrollToHour","PrepareData","owners","freeDay","Owner","minColumnWidth","SetCellMinWidthOfDays","minColumnW","numberOfDays","elW","FindType","todoEvents","appointmentEvents","appointmentType","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","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","_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","REMOVE_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","ShowRemoveQueryButton","isTemplateViewMode","RemoveQuery","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":""}